From 76cd6b662bed3b9dc127fa1a095a815df990814a Mon Sep 17 00:00:00 2001 From: grant24 Date: Wed, 3 Mar 2021 13:51:39 -0500 Subject: [PATCH 001/613] [Keymap] Add grant24 Planck Rev 6 keymap (#12070) Co-authored-by: Ryan --- keyboards/planck/keymaps/grant24/config.h | 52 +++ keyboards/planck/keymaps/grant24/keymap.c | 374 +++++++++++++++++++++ keyboards/planck/keymaps/grant24/readme.md | 108 ++++++ keyboards/planck/keymaps/grant24/rules.mk | 1 + 4 files changed, 535 insertions(+) create mode 100644 keyboards/planck/keymaps/grant24/config.h create mode 100644 keyboards/planck/keymaps/grant24/keymap.c create mode 100644 keyboards/planck/keymaps/grant24/readme.md create mode 100644 keyboards/planck/keymaps/grant24/rules.mk diff --git a/keyboards/planck/keymaps/grant24/config.h b/keyboards/planck/keymaps/grant24/config.h new file mode 100644 index 0000000000..8b5d93ef85 --- /dev/null +++ b/keyboards/planck/keymaps/grant24/config.h @@ -0,0 +1,52 @@ + /* Copyright Greg Anto + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + + +#pragma once + +#ifdef AUDIO_ENABLE + #define STARTUP_SONG SONG(PLANCK_SOUND) + // #define STARTUP_SONG SONG(NO_SOUND) + + #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \ + SONG(COLEMAK_SOUND), \ + SONG(DVORAK_SOUND) \ + } +#endif + +/* + * MIDI options + */ + +/* enable basic MIDI features: + - MIDI notes can be sent when in Music mode is on +*/ + +#define MIDI_BASIC + +/* enable advanced MIDI features: + - MIDI notes can be added to the keymap + - Octave shift and transpose + - Virtual sustain, portamento, and modulation wheel + - etc. +*/ +//#define MIDI_ADVANCED + +/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ +//#define MIDI_TONE_KEYCODE_OCTAVES 2 + +// Most tactile encoders have detents every 4 stages +#define ENCODER_RESOLUTION 4 diff --git a/keyboards/planck/keymaps/grant24/keymap.c b/keyboards/planck/keymaps/grant24/keymap.c new file mode 100644 index 0000000000..ba8b3fcc1d --- /dev/null +++ b/keyboards/planck/keymaps/grant24/keymap.c @@ -0,0 +1,374 @@ +/* An 8-layer, 4x12, grid keymap for the Planck Rev 6. + * + * + * Copyright 2015-2017 Greg Anto + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +#include "muse.h" + + +enum planck_layers { + _QWERTY, + _COLEMAK, + _DVORAK, + _LOWER, + _RAISE, + _PLOVER, + _ADJUST, + _FN +}; + +enum planck_keycodes { + QWERTY = SAFE_RANGE, + COLEMAK, + DVORAK, + PLOVER, + BACKLIT, + EXT_PLV +}; + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) +#define FN MO(_FN) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Qwerty + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Del | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Esc | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | Fn | GUI | Alt |Lower | Spce | Bksp |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_QWERTY] = LAYOUT_planck_grid( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MT(MOD_RSFT, KC_ENT), + KC_LCTL, OSL(FN), KC_LGUI, KC_LALT, LT(LOWER, KC_1), KC_SPC, KC_BSPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT +), + +/* Colemak + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Del | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Esc | A | R | S | T | D | H | N | E | I | O | " | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | Fn | Gui | Alt |Lower | Bksp | Spce |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_COLEMAK] = LAYOUT_planck_grid( + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_DEL, + KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, RSFT_T(KC_ENT), + KC_LCTL, OSL(FN), KC_LGUI, KC_LALT, LOWER, KC_BSPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT +), + +/* Dvorak + * ,-----------------------------------------------------------------------------------. + * | Tab | " | , | . | P | Y | F | G | C | R | L | Del | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Esc | A | O | E | U | I | D | H | T | N | S | / | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | Fn | Gui | Alt |Lower | Bksp | Spce |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_DVORAK] = LAYOUT_planck_grid( + KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DEL, + KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, + KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, MT(MOD_RSFT, KC_ENT), + KC_LCTL, OSL(FN), KC_LGUI, KC_LALT, LOWER, KC_BSPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT +), + +/* Raise + * ,-----------------------------------------------------------------------------------. + * | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | |M Lft |M Dwn | M Up |M Rght| M UP | * | 4 | 5 | 6 | + | = | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | M5 | M4 | M3 | M2 | M1 | M DN | / | 1 | 2 | 3 | - | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | 0 | , | . | | + * `-----------------------------------------------------------------------------------' + */ +[_RAISE] = LAYOUT_planck_grid( + KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, + KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_MS_WH_UP, KC_ASTR, KC_4, KC_5, KC_6, KC_PLUS, KC_EQL, + KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, KC_BTN1, KC_MS_WH_DOWN, KC_SLSH, KC_1, KC_2, KC_3, KC_MINS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_0, KC_COMM, KC_DOT, KC_NO +), + +/* Lower + * ,-----------------------------------------------------------------------------------. + * | | ! | @ | # | $ | % | ^ | & | * | ( | ) | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ` | ~ | \ | [ | ] | - | _ | { | } | | | + | = | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | CTLA | CTLY | CTLZ | CTLX | CTLC | CTLV | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | |DelWrd| | | Home | PgDn | PgUp | End | + * `-----------------------------------------------------------------------------------' + */ +[_LOWER] = LAYOUT_planck_grid( + KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TRNS, + KC_GRAVE, KC_TILD, KC_BSLS, KC_LBRC, KC_RBRC, KC_MINS, KC_UNDS, KC_LCBR, KC_RCBR, KC_PIPE, KC_PLUS, KC_EQL, + KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, LCTL(KC_A), LCTL(KC_Y), LCTL(KC_Z), LCTL(KC_X), LCTL(KC_C), LCTL(KC_V), KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, LCTL(KC_BSPC), KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_PGUP, KC_END +), + +/* Fn + * ,-----------------------------------------------------------------------------------. + * |DelWrd| F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | F11 | F12 | F13 | F14 | F15 | F16 | F17 | F18 | F19 | F20 | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Caps | F21 | F22 | F23 | F24 | Vol- | Mute | Vol+ | Prev | Play | Next | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_FN] = LAYOUT_planck_grid( + LCTL(KC_BSPC), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX, + XXXXXXX, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, XXXXXXX, + KC_CAPS, KC_F21, KC_F22, KC_F23, KC_F24, KC_VOLD, KC_MUTE, KC_VOLU, KC_MRWD, KC_MPLY, KC_MFFD, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX +), + +/* Plover layer (http://opensteno.org) + * ,-----------------------------------------------------------------------------------. + * | # | # | # | # | # | # | # | # | # | # | # | # | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | S | T | P | H | * | * | F | P | L | T | D | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | S | K | W | R | * | * | R | B | G | S | Z | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Exit | | | A | O | | E | U | | | | + * `-----------------------------------------------------------------------------------' + */ +[_PLOVER] = LAYOUT_planck_grid( + KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 , + XXXXXXX, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, + XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + EXT_PLV, XXXXXXX, XXXXXXX, KC_C, KC_V, XXXXXXX, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX +), + +/* Adjust (Lower + Raise) + * v------------------------RGB CONTROL--------------------v + * ,-----------------------------------------------------------------------------------. + * | | Reset| | RGB |RGBMOD| HUE+ | HUE- | SAT+ | SAT- |BRGTH+|BRGTH-| | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | |Aud on|Audoff| | |Qwerty|Colemk|Dvorak|Plover| | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | |Mus on|Musoff| | | CAPS | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_ADJUST] = LAYOUT_planck_grid( + _______, RESET, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, + _______, _______, _______, AU_ON, AU_OFF, _______, _______, QWERTY, COLEMAK, DVORAK, PLOVER, _______, + _______, _______, _______, MU_ON, MU_OFF, _______, _______, KC_CAPS, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +) + +}; + +#ifdef AUDIO_ENABLE + float plover_song[][2] = SONG(PLOVER_SOUND); + float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND); +#endif + +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 QWERTY: + if (record->event.pressed) { + print("mode just switched to qwerty and this is a huge string\n"); + set_single_persistent_default_layer(_QWERTY); + } + return false; + break; + case COLEMAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_COLEMAK); + } + return false; + break; + case DVORAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_DVORAK); + } + return false; + break; + case BACKLIT: + if (record->event.pressed) { + register_code(KC_RSFT); + #ifdef BACKLIGHT_ENABLE + backlight_step(); + #endif + #ifdef KEYBOARD_planck_rev5 + writePinLow(E6); + #endif + } else { + unregister_code(KC_RSFT); + #ifdef KEYBOARD_planck_rev5 + writePinHigh(E6); + #endif + } + return false; + break; + case PLOVER: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + stop_all_notes(); + PLAY_SONG(plover_song); + #endif + layer_off(_RAISE); + layer_off(_LOWER); + layer_off(_ADJUST); + layer_on(_PLOVER); + if (!eeconfig_is_enabled()) { + eeconfig_init(); + } + keymap_config.raw = eeconfig_read_keymap(); + keymap_config.nkro = 1; + eeconfig_update_keymap(keymap_config.raw); + } + return false; + break; + case EXT_PLV: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_SONG(plover_gb_song); + #endif + layer_off(_PLOVER); + } + return false; + break; + } + return true; +} + +bool muse_mode = false; +uint8_t last_muse_note = 0; +uint16_t muse_counter = 0; +uint8_t muse_offset = 70; +uint16_t muse_tempo = 50; + +void encoder_update(bool clockwise) { + if (muse_mode) { + if (IS_LAYER_ON(_RAISE)) { + if (clockwise) { + muse_offset++; + } else { + muse_offset--; + } + } else { + if (clockwise) { + muse_tempo+=1; + } else { + muse_tempo-=1; + } + } + } else { + if (clockwise) { + #ifdef MOUSEKEY_ENABLE + tap_code(KC_MS_WH_DOWN); + #else + tap_code(KC_PGDN); + #endif + } else { + #ifdef MOUSEKEY_ENABLE + tap_code(KC_MS_WH_UP); + #else + tap_code(KC_PGUP); + #endif + } + } +} + +void dip_switch_update_user(uint8_t index, bool active) { + switch (index) { + case 0: { +#ifdef AUDIO_ENABLE + static bool play_sound = false; +#endif + if (active) { +#ifdef AUDIO_ENABLE + if (play_sound) { PLAY_SONG(plover_song); } +#endif + layer_on(_ADJUST); + } else { +#ifdef AUDIO_ENABLE + if (play_sound) { PLAY_SONG(plover_gb_song); } +#endif + layer_off(_ADJUST); + } +#ifdef AUDIO_ENABLE + play_sound = true; +#endif + break; + } + case 1: + if (active) { + muse_mode = true; + } else { + muse_mode = false; + } + } +} + +void matrix_scan_user(void) { +#ifdef AUDIO_ENABLE + if (muse_mode) { + if (muse_counter == 0) { + uint8_t muse_note = muse_offset + SCALE[muse_clock_pulse()]; + if (muse_note != last_muse_note) { + stop_note(compute_freq_for_midi_note(last_muse_note)); + play_note(compute_freq_for_midi_note(muse_note), 0xF); + last_muse_note = muse_note; + } + } + muse_counter = (muse_counter + 1) % muse_tempo; + } else { + if (muse_counter) { + stop_all_notes(); + muse_counter = 0; + } + } +#endif +} + +bool music_mask_user(uint16_t keycode) { + switch (keycode) { + case RAISE: + case LOWER: + return false; + default: + return true; + } +} diff --git a/keyboards/planck/keymaps/grant24/readme.md b/keyboards/planck/keymaps/grant24/readme.md new file mode 100644 index 0000000000..d0c25bbccf --- /dev/null +++ b/keyboards/planck/keymaps/grant24/readme.md @@ -0,0 +1,108 @@ +# grant24's Planck Rev 6 Layout + + +## A layout centered around typing on Colemak, and gaming on Qwerty. Dvorak and Plover are also there just because. + +#### Lower for symbols, easy coding symbols access on home row, standard num row symbols on top, right-hand use of common Ctrl shortcut keys. +#### Raise for numbers, includes num row and num pad, as well as mouse keys. +#### Adjust layer is a stripped down version of the default mapping. +#### Code layer for Fn keys and media/volume control. + + + +/* Qwerty + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Del | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Esc | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | Fn | GUI | Alt |Lower | Spce | Bksp |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ + + /* Colemak + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Del | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Esc | A | R | S | T | D | H | N | E | I | O | " | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | Fn | Gui | Alt |Lower | Bksp | Spce |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ + + /* Dvorak + * ,-----------------------------------------------------------------------------------. + * | Tab | " | , | . | P | Y | F | G | C | R | L | Del | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Esc | A | O | E | U | I | D | H | T | N | S | / | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | Fn | Gui | Alt |Lower | Bksp | Spce |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ + + /* Raise + * ,-----------------------------------------------------------------------------------. + * | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | |M Lft |M Dwn | M Up |M Rght| M UP | * | 4 | 5 | 6 | + | = | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | M5 | M4 | M3 | M2 | M1 | M DN | / | 1 | 2 | 3 | - | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | 0 | , | . | | + * `-----------------------------------------------------------------------------------' + */ + + /* Lower + * ,-----------------------------------------------------------------------------------. + * | | ! | @ | # | $ | % | ^ | & | * | ( | ) | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ` | ~ | \ | [ | ] | - | _ | { | } | | | + | = | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | CTLA | CTLY | CTLZ | CTLX | CTLC | CTLV | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | |DelWrd| | | Home | PgDn | PgUp | End | + * `-----------------------------------------------------------------------------------' + */ + + /* Fn + * ,-----------------------------------------------------------------------------------. + * |DelWrd| F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | F11 | F12 | F13 | F14 | F15 | F16 | F17 | F18 | F19 | F20 | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Caps | F21 | F22 | F23 | F24 | Vol- | Mute | Vol+ | Prev | Play | Next | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ + + /* Plover layer (http://opensteno.org) + * ,-----------------------------------------------------------------------------------. + * | # | # | # | # | # | # | # | # | # | # | # | # | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | S | T | P | H | * | * | F | P | L | T | D | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | S | K | W | R | * | * | R | B | G | S | Z | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Exit | | | A | O | | E | U | | | | + * `-----------------------------------------------------------------------------------' + */ + + /* Adjust (Lower + Raise) + * v------------------------RGB CONTROL--------------------v + * ,-----------------------------------------------------------------------------------. + * | | Reset| | RGB |RGBMOD| HUE+ | HUE- | SAT+ | SAT- |BRGTH+|BRGTH-| | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | |Aud on|Audoff| | |Qwerty|Colemk|Dvorak|Plover| | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | |Mus on|Musoff| | | CAPS | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ diff --git a/keyboards/planck/keymaps/grant24/rules.mk b/keyboards/planck/keymaps/grant24/rules.mk new file mode 100644 index 0000000000..dcf16bef39 --- /dev/null +++ b/keyboards/planck/keymaps/grant24/rules.mk @@ -0,0 +1 @@ +SRC += muse.c From e420b3981c849c8d8a6674d40b6162548de3a3de Mon Sep 17 00:00:00 2001 From: Angel Rojas <66912190+rojasa1990@users.noreply.github.com> Date: Wed, 3 Mar 2021 15:28:10 -0500 Subject: [PATCH 002/613] [Keyboard] Added VIA folder under the keymaps folder (#12021) Co-authored-by: Ryan --- .../genone/eclipse_65/keymaps/via/keymap.c | 53 +++++++++++++++++++ .../genone/eclipse_65/keymaps/via/rules.mk | 2 + 2 files changed, 55 insertions(+) create mode 100644 keyboards/genone/eclipse_65/keymaps/via/keymap.c create mode 100644 keyboards/genone/eclipse_65/keymaps/via/rules.mk diff --git a/keyboards/genone/eclipse_65/keymaps/via/keymap.c b/keyboards/genone/eclipse_65/keymaps/via/keymap.c new file mode 100644 index 0000000000..c977568beb --- /dev/null +++ b/keyboards/genone/eclipse_65/keymaps/via/keymap.c @@ -0,0 +1,53 @@ +/* Copyright 2020 GEN ONE LLC + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + // Default layer + [0] = LAYOUT_65_ansi( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + // Fn1 Layer + [1] = LAYOUT_65_ansi( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, + KC_CAPS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + // Fn2 Layer + [2] = LAYOUT_65_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + // Fn3 Layer + [3] = LAYOUT_65_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +}; diff --git a/keyboards/genone/eclipse_65/keymaps/via/rules.mk b/keyboards/genone/eclipse_65/keymaps/via/rules.mk new file mode 100644 index 0000000000..36b7ba9cbc --- /dev/null +++ b/keyboards/genone/eclipse_65/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes From ba3c346195ef96d8c464ba14d6cc05837b7560e1 Mon Sep 17 00:00:00 2001 From: Skyler Lewis Date: Wed, 3 Mar 2021 13:37:06 -0700 Subject: [PATCH 003/613] Update dichotomy/alairock layout (#12013) --- keyboards/dichotomy/keymaps/alairock/keymap.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/keyboards/dichotomy/keymaps/alairock/keymap.c b/keyboards/dichotomy/keymaps/alairock/keymap.c index a1d196fb06..a7f9189a48 100644 --- a/keyboards/dichotomy/keymaps/alairock/keymap.c +++ b/keyboards/dichotomy/keymaps/alairock/keymap.c @@ -58,9 +58,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [_ADJUST] = LAYOUT( /* Shifted number/function layout, for per-key control. Only active when shift is held, and number is toggled or held */ - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, _______, KC_UP, _______, _______, _______, - KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, - KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, _______, _______, _______, _______, _______, _______, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, KC_PGUP, KC_UP, KC_PGDN, _______, _______, + KC_LGUI, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, + KC_LSFT, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), From 018b8e1d62f8c067bd556492b7e8cf8407eb6036 Mon Sep 17 00:00:00 2001 From: labahuy <68632528+labahuy@users.noreply.github.com> Date: Thu, 4 Mar 2021 03:38:16 +0700 Subject: [PATCH 004/613] [Keyboard] Add Keyboard Rartlite (#11866) --- keyboards/rart/rartlite/config.h | 53 +++++++ keyboards/rart/rartlite/info.json | 133 ++++++++++++++++++ .../rart/rartlite/keymaps/default/keymap.c | 37 +++++ keyboards/rart/rartlite/keymaps/via/keymap.c | 51 +++++++ keyboards/rart/rartlite/keymaps/via/rules.mk | 1 + keyboards/rart/rartlite/rartlite.c | 26 ++++ keyboards/rart/rartlite/rartlite.h | 50 +++++++ keyboards/rart/rartlite/readme.md | 22 +++ keyboards/rart/rartlite/rules.mk | 22 +++ 9 files changed, 395 insertions(+) create mode 100644 keyboards/rart/rartlite/config.h create mode 100644 keyboards/rart/rartlite/info.json create mode 100644 keyboards/rart/rartlite/keymaps/default/keymap.c create mode 100644 keyboards/rart/rartlite/keymaps/via/keymap.c create mode 100644 keyboards/rart/rartlite/keymaps/via/rules.mk create mode 100644 keyboards/rart/rartlite/rartlite.c create mode 100644 keyboards/rart/rartlite/rartlite.h create mode 100644 keyboards/rart/rartlite/readme.md create mode 100644 keyboards/rart/rartlite/rules.mk diff --git a/keyboards/rart/rartlite/config.h b/keyboards/rart/rartlite/config.h new file mode 100644 index 0000000000..a11592d392 --- /dev/null +++ b/keyboards/rart/rartlite/config.h @@ -0,0 +1,53 @@ +/* +Copyright 2021 Alabahuy + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x414C +#define PRODUCT_ID 0x4040 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Alabahuy +#define PRODUCT RARTLITE + +/* key matrix size */ +#define MATRIX_ROWS 8 +#define MATRIX_COLS 7 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { F4, D2, B2, B4, B6, B5, D0, D1 } +#define MATRIX_COL_PINS { D4, C6, D7, E6, B3, F7, D3 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +#define LED_CAPS_LOCK_PIN F5 +#define LED_NUM_LOCK_PIN F6 + +#define LED_PIN_ON_STATE 0 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE + +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE diff --git a/keyboards/rart/rartlite/info.json b/keyboards/rart/rartlite/info.json new file mode 100644 index 0000000000..0659957ded --- /dev/null +++ b/keyboards/rart/rartlite/info.json @@ -0,0 +1,133 @@ +{ + "keyboard_name": "RART4X4", + "url": "", + "maintainer": "Alabahuy", + "width": 15.25, + "height": 4.25, + "layouts": { + "LAYOUT_right_numpad": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12.25, "y": 0}, + {"x": 13.25, "y": 0}, + {"x": 14.25, "y": 0}, + + {"x": 0, "y": 1, "w":1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1, "w":1.5}, + {"x": 12.25, "y": 1}, + {"x": 13.25, "y": 1}, + {"x": 14.25, "y": 1}, + + {"x": 0, "y": 2, "w":1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 11, "y": 2.25}, + {"x": 12.25, "y": 2}, + {"x": 13.25, "y": 2}, + {"x": 14.25, "y": 2}, + + {"x": 0, "y": 3, "w":1.25}, + {"x": 1.25, "y": 3}, + {"x": 2.25, "y": 3, "w":2.75}, + {"x": 5, "y": 3, "w":1.25}, + {"x": 6.25, "y": 3, "w":2.25}, + {"x": 8.5, "y": 3, "w":1.25}, + {"x": 10, "y": 3.25}, + {"x": 11, "y": 3.25}, + {"x": 12, "y": 3.25}, + {"x": 13.25, "y": 3}, + {"x": 14.25, "y": 3} + ] + }, + + "LAYOUT_left_numpad": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3.25, "y": 0}, + {"x": 4.25, "y": 0}, + {"x": 5.25, "y": 0}, + {"x": 6.25, "y": 0}, + {"x": 7.25, "y": 0}, + {"x": 8.25, "y": 0}, + {"x": 9.25, "y": 0}, + {"x": 10.25, "y": 0}, + {"x": 11.25, "y": 0}, + {"x": 12.25, "y": 0}, + {"x": 13.25, "y": 0}, + {"x": 14.25, "y": 0}, + + {"x": 0, "y": 1}, + {"x": 1, "y": 1}, + {"x": 2, "y": 1}, + {"x": 3.25, "y": 1, "w":1.5}, + {"x": 4.75, "y": 1}, + {"x": 5.75, "y": 1}, + {"x": 6.75, "y": 1}, + {"x": 7.75, "y": 1}, + {"x": 8.75, "y": 1}, + {"x": 9.75, "y": 1}, + {"x": 10.75, "y": 1}, + {"x": 11.75, "y": 1}, + {"x": 12.75, "y": 1}, + {"x": 13.75, "y": 1, "w":1.5}, + + {"x": 0, "y": 2}, + {"x": 1, "y": 2}, + {"x": 2, "y": 2}, + {"x": 3.25, "y": 2.25}, + {"x": 4.5, "y": 2}, + {"x": 5.5, "y": 2}, + {"x": 6.5, "y": 2}, + {"x": 7.5, "y": 2}, + {"x": 8.5, "y": 2}, + {"x": 9.5, "y": 2}, + {"x": 10.5, "y": 2}, + {"x": 11.5, "y": 2}, + {"x": 12.5, "y": 2}, + {"x": 13.5, "y": 2, "w":1.75}, + + {"x": 0, "y": 3}, + {"x": 1, "y": 3}, + {"x": 2.25, "y": 3.25}, + {"x": 3.25, "y": 3.25}, + {"x": 4.25, "y": 3.25}, + {"x": 5.5, "y": 3, "w":1.25}, + {"x": 6.75, "y": 3, "w":2.25}, + {"x": 9, "y": 3, "w":1.25}, + {"x": 10.25, "y": 3, "w":2.75}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3, "w":1.25} + ] + } + + } +} diff --git a/keyboards/rart/rartlite/keymaps/default/keymap.c b/keyboards/rart/rartlite/keymaps/default/keymap.c new file mode 100644 index 0000000000..730aad9908 --- /dev/null +++ b/keyboards/rart/rartlite/keymaps/default/keymap.c @@ -0,0 +1,37 @@ +/* +Copyright 2021 Alabahuy + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_right_numpad( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_P7, KC_P8, KC_P9, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, KC_P4, KC_P5, KC_P6, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_P1, KC_P2, KC_P3, + KC_RCTL, KC_LALT, KC_SPC, KC_SPC, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT + ), + + [1] = LAYOUT_right_numpad( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_INS, RESET, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, KC_PGDN, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_END, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +}; + diff --git a/keyboards/rart/rartlite/keymaps/via/keymap.c b/keyboards/rart/rartlite/keymaps/via/keymap.c new file mode 100644 index 0000000000..9cb23f8a59 --- /dev/null +++ b/keyboards/rart/rartlite/keymaps/via/keymap.c @@ -0,0 +1,51 @@ +/* +Copyright 2021 Alabahuy + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_right_numpad( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_P7, KC_P8, KC_P9, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, KC_P4, KC_P5, KC_P6, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_P1, KC_P2, KC_P3, + KC_RCTL, KC_LALT, KC_SPC, KC_SPC, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT + ), + + [1] = LAYOUT_right_numpad( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_INS, RESET, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, KC_PGDN, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_END, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [2] = LAYOUT_right_numpad( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [3] = LAYOUT_right_numpad( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) + +}; + diff --git a/keyboards/rart/rartlite/keymaps/via/rules.mk b/keyboards/rart/rartlite/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/rart/rartlite/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/rart/rartlite/rartlite.c b/keyboards/rart/rartlite/rartlite.c new file mode 100644 index 0000000000..1f431f928f --- /dev/null +++ b/keyboards/rart/rartlite/rartlite.c @@ -0,0 +1,26 @@ +/* Copyright 2021 Alabahuy + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "rartlite.h" + +void keyboard_pre_init_kb(void) { + setPinOutput(B1); + + keyboard_pre_init_user(); +} + +layer_state_t layer_state_set_kb(layer_state_t state) { + writePin(B1, layer_state_cmp(state, 1)); + return layer_state_set_user(state); +} diff --git a/keyboards/rart/rartlite/rartlite.h b/keyboards/rart/rartlite/rartlite.h new file mode 100644 index 0000000000..a602de2240 --- /dev/null +++ b/keyboards/rart/rartlite/rartlite.h @@ -0,0 +1,50 @@ +/* +Copyright 2021 Alabahuy +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#include "quantum.h" + +#define LAYOUT_right_numpad( \ + K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K34, K05, K15, K06, K16, \ + K20, K30, K21, K31, K22, K32, K23, K33, K24, K54, K25, K35, K26, K36, \ + K40, K50, K41, K51, K42, K52, K43, K53, K44, K74, K45, K55, K46, K56, \ + K60, K70, K61, K62, K63, K73, K64, K65, K75, K66, K76 \ +) \ +{ \ + { K00, K01, K02, K03, K04, K05, K06 }, \ + { K10, K11, K12, K13, K14, K15, K16 }, \ + { K20, K21, K22, K23, K24, K25, K26 }, \ + { K30, K31, K32, K33, K34, K35, K36 }, \ + { K40, K41, K42, K43, K44, K45, K46 }, \ + { K50, K51, K52, K53, K54, K55, K56 }, \ + { K60, K61, K62, K63, K64, K65, K66 }, \ + { K70, KC_NO, KC_NO, K73, K74, K75, K76 }, \ +} + +#define LAYOUT_left_numpad( \ + K16, K06, K15, K05, K34, K14, K04, K13, K03, K12, K02, K11, K01, K10, K00, \ + K36, K26, K35, K25, K54, K24, K33, K23, K32, K22, K31, K21, K30, K20, \ + K56, K46, K55, K45, K74, K44, K53, K43, K52, K42, K51, K41, K50, K40, \ + K76, K66, K75, K65, K64, K73, K63, K62, K61, K70, K60 \ +) \ +{ \ + { K00, K01, K02, K03, K04, K05, K06 }, \ + { K10, K11, K12, K13, K14, K15, K16 }, \ + { K20, K21, K22, K23, K24, K25, K26 }, \ + { K30, K31, K32, K33, K34, K35, K36 }, \ + { K40, K41, K42, K43, K44, K45, K46 }, \ + { K50, K51, K52, K53, K54, K55, K56 }, \ + { K60, K61, K62, K63, K64, K65, K66 }, \ + { K70, KC_NO, KC_NO, K73, K74, K75, K76 }, \ +} diff --git a/keyboards/rart/rartlite/readme.md b/keyboards/rart/rartlite/readme.md new file mode 100644 index 0000000000..b9f107fb0e --- /dev/null +++ b/keyboards/rart/rartlite/readme.md @@ -0,0 +1,22 @@ +# [RARTLITE](https://github.com/alabahuy/RART/tree/master/RARTLITE) + +![Top](https://user-images.githubusercontent.com/30220306/107148534-4212e200-6986-11eb-824d-dd7fbe10d333.png) +40% Layout mechanical keyboard with support left and right numpad. based on IMKG (Indonesia Mechanical Keyboard Group) + +* Keyboard Maintainer: [Alabahuy](https://github.com/alabahuy) +* Hardware Supported: RARTLITE PCB, Promicro, Mini USB +* Hardware Availability: Private GB + +Make example for this keyboard (after setting up your build environment): + + make rart/rartlite:default + +Flashing example for this keyboard: + + make rart/rartlite:default:flash + +## Bootloader + +To Enter the bootloader you can double click reset button on board when you flash the firmware + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/rart/rartlite/rules.mk b/keyboards/rart/rartlite/rules.mk new file mode 100644 index 0000000000..e6a4d762d3 --- /dev/null +++ b/keyboards/rart/rartlite/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output From fb3777f085fb0ba0510e4217df58f00f6ebd5a01 Mon Sep 17 00:00:00 2001 From: Evelien-Lillian Dekkers Date: Wed, 3 Mar 2021 22:14:55 +0100 Subject: [PATCH 005/613] [Keyboard] Add Conone 65 (#11827) Co-authored-by: Ryan --- keyboards/kindakeyboards/conone65/config.h | 155 +++++ keyboards/kindakeyboards/conone65/conone65.c | 17 + keyboards/kindakeyboards/conone65/conone65.h | 133 +++++ keyboards/kindakeyboards/conone65/info.json | 529 ++++++++++++++++++ .../conone65/keymaps/default/keymap.c | 39 ++ .../conone65/keymaps/default/readme.md | 1 + keyboards/kindakeyboards/conone65/readme.md | 17 + keyboards/kindakeyboards/conone65/rules.mk | 24 + 8 files changed, 915 insertions(+) create mode 100644 keyboards/kindakeyboards/conone65/config.h create mode 100644 keyboards/kindakeyboards/conone65/conone65.c create mode 100644 keyboards/kindakeyboards/conone65/conone65.h create mode 100644 keyboards/kindakeyboards/conone65/info.json create mode 100644 keyboards/kindakeyboards/conone65/keymaps/default/keymap.c create mode 100644 keyboards/kindakeyboards/conone65/keymaps/default/readme.md create mode 100644 keyboards/kindakeyboards/conone65/readme.md create mode 100644 keyboards/kindakeyboards/conone65/rules.mk diff --git a/keyboards/kindakeyboards/conone65/config.h b/keyboards/kindakeyboards/conone65/config.h new file mode 100644 index 0000000000..c29599cadd --- /dev/null +++ b/keyboards/kindakeyboards/conone65/config.h @@ -0,0 +1,155 @@ +/* +Copyright 2021 Kindakeyboards + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x9133 +#define PRODUCT_ID 0x6AAB +#define DEVICE_VER 0x0001 +#define MANUFACTURER Kindakeyboards +#define PRODUCT Conone 65 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 16 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ +#define MATRIX_ROW_PINS {D5,D3,E6,D1,D2} +#define MATRIX_COL_PINS {B7,F7,D4,D6,D7,B4,B5,B6,C6,C7,F6,F5,F4,F1,F0,D0} +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 + +//#define LED_NUM_LOCK_PIN B0 +//#define LED_CAPS_LOCK_PIN B1 +//#define LED_SCROLL_LOCK_PIN B2 +//#define LED_COMPOSE_PIN B3 +//#define LED_KANA_PIN B4 + +//#define BACKLIGHT_PIN B7 +//#define BACKLIGHT_LEVELS 3 +//#define BACKLIGHT_BREATHING + +//#define RGB_DI_PIN E2 +//#ifdef RGB_DI_PIN +//# define RGBLED_NUM 16 +//# define RGBLIGHT_HUE_STEP 8 +//# define RGBLIGHT_SAT_STEP 8 +//# define RGBLIGHT_VAL_STEP 8 +//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +//# define RGBLIGHT_ANIMATIONS +/*== or choose animations ==*/ +//# define RGBLIGHT_EFFECT_BREATHING +//# define RGBLIGHT_EFFECT_RAINBOW_MOOD +//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +//# define RGBLIGHT_EFFECT_SNAKE +//# define RGBLIGHT_EFFECT_KNIGHT +//# define RGBLIGHT_EFFECT_CHRISTMAS +//# define RGBLIGHT_EFFECT_STATIC_GRADIENT +//# define RGBLIGHT_EFFECT_RGB_TEST +//# define RGBLIGHT_EFFECT_ALTERNATING +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +//#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 + +#define QMK_ESC_OUTPUT B7 // usually COL +#define QMK_ESC_INPUT D5 // usually ROW diff --git a/keyboards/kindakeyboards/conone65/conone65.c b/keyboards/kindakeyboards/conone65/conone65.c new file mode 100644 index 0000000000..950786542b --- /dev/null +++ b/keyboards/kindakeyboards/conone65/conone65.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Kindakeyboards + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "conone65.h" diff --git a/keyboards/kindakeyboards/conone65/conone65.h b/keyboards/kindakeyboards/conone65/conone65.h new file mode 100644 index 0000000000..d4bbe924c0 --- /dev/null +++ b/keyboards/kindakeyboards/conone65/conone65.h @@ -0,0 +1,133 @@ +/* Copyright 2021 Kindakeyboards + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define ___ KC_NO +#define LAYOUT_all( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0f, k0d, k0e, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \ + k40, k41, k42, k44, k46, k48, k49, k4a, k4b, k4c, k4d, k4e \ +) \ +{ \ + {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f}, \ + {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, ___}, \ + {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, ___}, \ + {k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, ___}, \ + {k40, k41, k42, ___, k44, ___, k46, ___, k48, k49, k4a, k4b, k4c, k4d, k4e, ___} \ +} + +#define LAYOUT_65_ansi( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, k2e, \ + k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \ + k40, k41, k42, k46, k49, k4a, k4b, k4c, k4d, k4e \ +) \ +{ \ + {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, ___}, \ + {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, ___}, \ + {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, ___, k2d, k2e, ___}, \ + {k30, ___, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, ___}, \ + {k40, k41, k42, ___, ___, ___, k46, ___, ___, k49, k4a, k4b, k4c, k4d, k4e, ___} \ +} + +#define LAYOUT_65_ansi_split_bs( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0f, k0d, k0e, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, k2e, \ + k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \ + k40, k41, k42, k46, k49, k4a, k4b, k4c, k4d, k4e \ +) \ +{ \ + {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f}, \ + {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, ___}, \ + {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, ___, k2d, k2e, ___}, \ + {k30, ___, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, ___}, \ + {k40, k41, k42, ___, ___, ___, k46, ___, ___, k49, k4a, k4b, k4c, k4d, k4e, ___} \ +} + +#define LAYOUT_65_ansi_split_bs_space( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0f, k0d, k0e, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, k2e, \ + k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \ + k40, k41, k42, k44, k46, k48, k49, k4a, k4b, k4c, k4d, k4e \ +) \ +{ \ + {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f}, \ + {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, ___}, \ + {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, ___, k2d, k2e, ___}, \ + {k30, ___, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, ___}, \ + {k40, k41, k42, ___, k44, ___, k46, ___, k48, k49, k4a, k4b, k4c, k4d, k4e, ___} \ +} + +#define LAYOUT_65_iso( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1e, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \ + k40, k41, k42, k46, k49, k4a, k4b, k4c, k4d, k4e \ +) \ +{ \ + {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, ___}, \ + {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, ___, k1e, ___}, \ + {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, ___}, \ + {k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, ___}, \ + {k40, k41, k42, ___, ___, ___, k46, ___, ___, k49, k4a, k4b, k4c, k4d, k4e, ___} \ +} + +#define LAYOUT_65_iso_split_bs( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0f, k0d, k0e, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1e, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \ + k40, k41, k42, k46, k49, k4a, k4b, k4c, k4d, k4e \ +) \ +{ \ + {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f}, \ + {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, ___, k1e, ___}, \ + {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, ___}, \ + {k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, ___}, \ + {k40, k41, k42, ___, ___, ___, k46, ___, ___, k49, k4a, k4b, k4c, k4d, k4e, ___} \ +} + +#define LAYOUT_65_iso_split_bs_space( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0f, k0d, k0e, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1e, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \ + k40, k41, k42, k44, k46, k48, k49, k4a, k4b, k4c, k4d, k4e \ +) \ +{ \ + {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f}, \ + {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, ___, k1e, ___}, \ + {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, ___}, \ + {k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, ___}, \ + {k40, k41, k42, ___, k44, ___, k46, ___, k48, k49, k4a, k4b, k4c, k4d, k4e, ___} \ +} diff --git a/keyboards/kindakeyboards/conone65/info.json b/keyboards/kindakeyboards/conone65/info.json new file mode 100644 index 0000000000..65716ed0ae --- /dev/null +++ b/keyboards/kindakeyboards/conone65/info.json @@ -0,0 +1,529 @@ +{ + "keyboard_name": "Conone 65", + "url": "https://kindakeyboards.be/conone65", + "maintainer": "evyd13", + "width": 16, + "height": 5, + "layouts": { + "LAYOUT_all": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15, "y":0}, + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.5, "y":1, "w":1.5}, + {"x":15, "y":1}, + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2}, + {"x":13.75, "y":2, "w":1.25}, + {"x":15, "y":2}, + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":15, "y":3}, + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":2.25}, + {"x":6, "y":4, "w":1.25}, + {"x":7.25, "y":4, "w":2.75}, + {"x":10, "y":4}, + {"x":11, "y":4}, + {"x":12, "y":4}, + {"x":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4} + ] + }, + "LAYOUT_65_ansi": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + {"x":15, "y":0}, + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.5, "y":1, "w":1.5}, + {"x":15, "y":1}, + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + {"x":15, "y":2}, + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":15, "y":3}, + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4}, + {"x":11, "y":4}, + {"x":12, "y":4}, + {"x":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4} + ] + }, + "LAYOUT_65_ansi_split_bs": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15, "y":0}, + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.5, "y":1, "w":1.5}, + {"x":15, "y":1}, + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + {"x":15, "y":2}, + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":15, "y":3}, + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4}, + {"x":11, "y":4}, + {"x":12, "y":4}, + {"x":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4} + ] + }, + "LAYOUT_65_ansi_split_bs_space": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15, "y":0}, + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.5, "y":1, "w":1.5}, + {"x":15, "y":1}, + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + {"x":15, "y":2}, + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":15, "y":3}, + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":2.25}, + {"x":6, "y":4, "w":1.25}, + {"x":7.25, "y":4, "w":2.75}, + {"x":10, "y":4}, + {"x":11, "y":4}, + {"x":12, "y":4}, + {"x":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4} + ] + }, + "LAYOUT_65_iso": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + {"x":15, "y":0}, + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":15, "y":1}, + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2}, + {"x":13.75, "y":1, "w":1.25, "h":2}, + {"x":15, "y":2}, + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":15, "y":3}, + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4}, + {"x":11, "y":4}, + {"x":12, "y":4}, + {"x":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4} + ] + }, + "LAYOUT_65_iso_split_bs": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15, "y":0}, + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":15, "y":1}, + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2}, + {"x":13.75, "y":1, "w":1.25, "h":2}, + {"x":15, "y":2}, + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":15, "y":3}, + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4}, + {"x":11, "y":4}, + {"x":12, "y":4}, + {"x":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4} + ] + }, + "LAYOUT_65_iso_split_bs_space": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15, "y":0}, + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":15, "y":1}, + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2}, + {"x":13.75, "y":1, "w":1.25, "h":2}, + {"x":15, "y":2}, + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":15, "y":3}, + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":2.25}, + {"x":6, "y":4, "w":1.25}, + {"x":7.25, "y":4, "w":2.75}, + {"x":10, "y":4}, + {"x":11, "y":4}, + {"x":12, "y":4}, + {"x":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4} + ] + } + } +} diff --git a/keyboards/kindakeyboards/conone65/keymaps/default/keymap.c b/keyboards/kindakeyboards/conone65/keymaps/default/keymap.c new file mode 100644 index 0000000000..a3cf319161 --- /dev/null +++ b/keyboards/kindakeyboards/conone65/keymaps/default/keymap.c @@ -0,0 +1,39 @@ +/* Copyright 2021 Kindakeyboards + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_all( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC, KC_GRV, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, KC_PGUP, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [_FN] = LAYOUT_all( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/kindakeyboards/conone65/keymaps/default/readme.md b/keyboards/kindakeyboards/conone65/keymaps/default/readme.md new file mode 100644 index 0000000000..2f16196347 --- /dev/null +++ b/keyboards/kindakeyboards/conone65/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for Conone 65 diff --git a/keyboards/kindakeyboards/conone65/readme.md b/keyboards/kindakeyboards/conone65/readme.md new file mode 100644 index 0000000000..f3429142dc --- /dev/null +++ b/keyboards/kindakeyboards/conone65/readme.md @@ -0,0 +1,17 @@ +# Conone 65 + +The Conone 65 is a custom keyboard designed and machined in Belgium. + +* Keyboard Maintainer: [Evyd13](https://github.com/evyd13) +* Hardware Supported: Conone 65 PCB +* Hardware Availability: [Group buy](https://forms.gle/nEFTxzBxy4KDm3nG8) + +Make example for this keyboard (after setting up your build environment): + + make kindakeyboards/conone65:default + +Flashing example for this keyboard: + + make kindakeyboards/conone65:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/kindakeyboards/conone65/rules.mk b/keyboards/kindakeyboards/conone65/rules.mk new file mode 100644 index 0000000000..7210ffcf0f --- /dev/null +++ b/keyboards/kindakeyboards/conone65/rules.mk @@ -0,0 +1,24 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output + +LAYOUTS = 65_ansi 65_ansi_split_bs 65_iso 65_iso_split_bs \ No newline at end of file From 4c3090ace922c06d00df12f7fc5d0f2d0f194fae Mon Sep 17 00:00:00 2001 From: individ-divided <75159519+individ-divided@users.noreply.github.com> Date: Wed, 3 Mar 2021 22:31:41 +0100 Subject: [PATCH 006/613] Documentation changes SPLIT_USB_DETECT and hid_listen udev rules (#11665) Co-authored-by: David Grundberg --- docs/faq_debug.md | 13 +++++++++++++ docs/feature_split_keyboard.md | 15 ++++++++++++--- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/docs/faq_debug.md b/docs/faq_debug.md index 872b1688ed..13a649bfa2 100644 --- a/docs/faq_debug.md +++ b/docs/faq_debug.md @@ -109,6 +109,19 @@ If you can't get this 'Listening:' message try building with `CONSOLE_ENABLE=yes You may need privileges to access the device an OS like Linux. Try `sudo hid_listen`. +On many Linux distros you can avoid having to run hid_listen as root +by creating a file called `/etc/udev/rules.d/70-hid-listen.rules` with +the following content: + +``` +SUBSYSTEM=="hidraw", ATTRS{idVendor}=="abcd", ATTRS{idProduct}=="def1", TAG+="uaccess", RUN{builtin}+="uaccess" +``` + +Replace abcd and def1 with your keyboard's vendor and product id, +letters must be lowercase. The `RUN{builtin}+="uaccess"` part is only +needed for older distros. + + ## Can't Get Message on Console Check: - *hid_listen* finds your device. See above. diff --git a/docs/feature_split_keyboard.md b/docs/feature_split_keyboard.md index dc081ff3ae..3613775d72 100644 --- a/docs/feature_split_keyboard.md +++ b/docs/feature_split_keyboard.md @@ -243,7 +243,12 @@ This sets how many LEDs are directly connected to each controller. The first nu ```c #define SPLIT_USB_DETECT ``` -This option changes the startup behavior to detect an active USB connection when delegating master/slave. If this operation times out, then the half is assume to be a slave. This is the default behavior for ARM, and required for AVR Teensy boards (due to hardware limitations). + +Enabling this option changes the startup behavior to listen for an active USB communication to delegate which part is master and which is slave. With this option enabled and theres's USB communication, then that half assumes it is the master, otherwise it assumes it is the slave. + +Without this option, the master is the half that can detect voltage on the physical USB connection (VBUS detection). + +Enabled by default on ChibiOS/ARM. ?> This setting will stop the ability to demo using battery packs. @@ -259,9 +264,13 @@ This sets the poll frequency when detecting master/slave when using `SPLIT_USB_D ## Hardware Considerations and Mods -While most any Pro Micro can be used, micro controllers like the AVR Teensys and most (if not all) ARM boards require the Split USB Detect. +Master/slave delegation is made either by detecting voltage on VBUS connection or waiting for USB communication (`SPLIT_USB_DETECT`). Pro Micro boards can use VBUS detection out of the box and be used with or without `SPLIT_USB_DETECT`. -However, with the Teensy 2.0 and Teensy++ 2.0, there is a simple hardware mod that you can perform to add VBUS detection, so you don't need the Split USB detection option. +Many ARM boards, but not all, do not support VBUS detection. Because it is common that ARM boards lack VBUS detection, `SPLIT_USB_DETECT` is automatically defined on ARM targets (technically when ChibiOS is targetted). + +### Teensy boards + +Teensy boards lack VBUS detection out of the box and must have `SPLIT_USB_DETECT` defined. With the Teensy 2.0 and Teensy++ 2.0, there is a simple hardware mod that you can perform to add VBUS detection, so you don't need the `SPLIT_USB_DETECT` option. You'll only need a few things: From 2dcd67ce1a40075c895a28ce6f6e7a5f634ee376 Mon Sep 17 00:00:00 2001 From: Signynt <67801159+Signynt@users.noreply.github.com> Date: Wed, 3 Mar 2021 22:32:22 +0100 Subject: [PATCH 007/613] [Keymap] sigma-squared (#11694) --- keyboards/bm40hsrgb/keymaps/signynt/config.h | 80 ++++++ keyboards/bm40hsrgb/keymaps/signynt/keymap.c | 241 ++++++++++++++++++ keyboards/bm40hsrgb/keymaps/signynt/readme.md | 117 +++++++++ keyboards/bm40hsrgb/keymaps/signynt/rules.mk | 7 + .../bm40hsrgb/keymaps/signynt_2_loud/config.h | 80 ++++++ .../bm40hsrgb/keymaps/signynt_2_loud/keymap.c | 214 ++++++++++++++++ .../keymaps/signynt_2_loud/readme.md | 117 +++++++++ .../bm40hsrgb/keymaps/signynt_2_loud/rules.mk | 7 + .../keymaps/signynt_2_quiet/config.h | 80 ++++++ .../keymaps/signynt_2_quiet/keymap.c | 178 +++++++++++++ .../keymaps/signynt_2_quiet/readme.md | 117 +++++++++ .../keymaps/signynt_2_quiet/rules.mk | 7 + 12 files changed, 1245 insertions(+) create mode 100644 keyboards/bm40hsrgb/keymaps/signynt/config.h create mode 100644 keyboards/bm40hsrgb/keymaps/signynt/keymap.c create mode 100644 keyboards/bm40hsrgb/keymaps/signynt/readme.md create mode 100644 keyboards/bm40hsrgb/keymaps/signynt/rules.mk create mode 100644 keyboards/bm40hsrgb/keymaps/signynt_2_loud/config.h create mode 100644 keyboards/bm40hsrgb/keymaps/signynt_2_loud/keymap.c create mode 100644 keyboards/bm40hsrgb/keymaps/signynt_2_loud/readme.md create mode 100644 keyboards/bm40hsrgb/keymaps/signynt_2_loud/rules.mk create mode 100644 keyboards/bm40hsrgb/keymaps/signynt_2_quiet/config.h create mode 100644 keyboards/bm40hsrgb/keymaps/signynt_2_quiet/keymap.c create mode 100644 keyboards/bm40hsrgb/keymaps/signynt_2_quiet/readme.md create mode 100644 keyboards/bm40hsrgb/keymaps/signynt_2_quiet/rules.mk diff --git a/keyboards/bm40hsrgb/keymaps/signynt/config.h b/keyboards/bm40hsrgb/keymaps/signynt/config.h new file mode 100644 index 0000000000..9fcddca2cb --- /dev/null +++ b/keyboards/bm40hsrgb/keymaps/signynt/config.h @@ -0,0 +1,80 @@ +// qmk flash -kb bm40hsrgb -km signynt + +/* Copyright 2021 Vincenzo Mitchell Barroso + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define RGBLIGHT_LAYERS +#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF +#define RGBLIGHT_ANIMATIONS + +//#define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS +#define RGBLIGHT_LIMIT_VAL 10 + +//bootmagic +#define BOOTMAGIC_KEY_SALT KC_V +#define BOOTMAGIC_KEY_EEPROM_CLEAR KC_Q + +#ifdef RGB_MATRIX_ENABLE + +#define TAPPING_TERM 200 + +//-------------------------------------------------------------------------------------------------------- + +//disable broken animations +#define DISABLE_RGB_MATRIX_ALPHAS_MODS +#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define DISABLE_RGB_MATRIX_BREATHING +#define DISABLE_RGB_MATRIX_BAND_SAT +#define DISABLE_RGB_MATRIX_BAND_VAL +#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define DISABLE_RGB_MATRIX_CYCLE_ALL +#define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN +#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +//#define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +//#define DISABLE_RGB_MATRIX_DUAL_BEACON +#define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define DISABLE_RGB_MATRIX_CYCLE_SPIRAL +//#define DISABLE_RGB_MATRIX_RAINBOW_BEACON +//#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS +//#define DISABLE_RGB_MATRIX_RAINDROPS +#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // DO NOT ENABLE +//#define DISABLE_RGB_MATRIX_TYPING_HEATMAP +//#define DISABLE_RGB_MATRIX_DIGITAL_RAIN +//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE +//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +//#define DISABLE_RGB_MATRIX_SPLASH +//#define DISABLE_RGB_MATRIX_MULTISPLASH +//#define DISABLE_RGB_MATRIX_SOLID_SPLASH +//#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH + +#undef RGB_MATRIX_STARTUP_MODE + +#define RGBLIGHT_HUE_STEP 20 + +#endif diff --git a/keyboards/bm40hsrgb/keymaps/signynt/keymap.c b/keyboards/bm40hsrgb/keymaps/signynt/keymap.c new file mode 100644 index 0000000000..b04f7ffb7c --- /dev/null +++ b/keyboards/bm40hsrgb/keymaps/signynt/keymap.c @@ -0,0 +1,241 @@ +// qmk flash -kb bm40hsrgb -km signynt + +/* Copyright 2021 Vincenzo Mitchell Barroso + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// non-KC_ keycodes +#define KC_RST RESET +#define KC_TOG RGB_TOG +#define KC_MOD RGB_MOD +#define KC_HUI RGB_HUI +#define KC_SAI RGB_SAI +#define KC_VAI RGB_VAI + +//define layers +enum layers {BASE, MEDR, NAVR, NSSL, NSL, FUNL, GAME, SECGAME}; + +enum custom_keycodes { + CMD_TAB = SAFE_RANGE, +}; + +//cmd tab + +bool is_cmd_tab_active = false; +uint16_t cmd_tab_timer = 0; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case CMD_TAB: + if (record->event.pressed) { + if (!is_cmd_tab_active) { + is_cmd_tab_active = true; + register_code(KC_LCTL); + } + cmd_tab_timer = timer_read(); + register_code(KC_TAB); + } else { + unregister_code(KC_TAB); + } + break; + } + return true; +} + +void matrix_scan_user(void) { + if (is_cmd_tab_active) { + if (timer_elapsed(cmd_tab_timer) > 500) { + unregister_code(KC_LCTL); + is_cmd_tab_active = false; + } + } +} + +//layer led colors + +void rgb_matrix_indicators_user(void) { + +//game indicators + +if(IS_LAYER_ON(GAME)) { + rgb_matrix_set_color(11, 0, 40, 50); +} + +if(IS_LAYER_ON(SECGAME)) { + rgb_matrix_set_color(11, 50, 0, 0); +} + +//layer indicators + +if(IS_LAYER_ON(NAVR)) { + rgb_matrix_set_color(40, 0, 40, 50); + + rgb_matrix_set_color(19, 0, 40, 50); + rgb_matrix_set_color(20, 0, 40, 50); + rgb_matrix_set_color(21, 0, 40, 50); + rgb_matrix_set_color(22, 0, 40, 50); +} + +if(IS_LAYER_ON(MEDR)) { + rgb_matrix_set_color(39, 50, 10, 20); + + rgb_matrix_set_color(19, 50, 10, 20); + + rgb_matrix_set_color(22, 50, 10, 20); + + rgb_matrix_set_color(42, 50, 10, 20); +} + +if(IS_LAYER_ON(FUNL)) { + rgb_matrix_set_color(43, 50, 0, 0); + + rgb_matrix_set_color(1, 50, 0, 0); + rgb_matrix_set_color(2, 50, 0, 0); + rgb_matrix_set_color(3, 50, 0, 0); + rgb_matrix_set_color(4, 50, 0, 0); + + rgb_matrix_set_color(13, 50, 0, 0); + rgb_matrix_set_color(14, 50, 0, 0); + rgb_matrix_set_color(15, 50, 0, 0); + rgb_matrix_set_color(16, 50, 0, 0); + + rgb_matrix_set_color(25, 50, 0, 0); + rgb_matrix_set_color(26, 50, 0, 0); + rgb_matrix_set_color(27, 50, 0, 0); + rgb_matrix_set_color(28, 50, 0, 0); +} + +if(IS_LAYER_ON(NSL)) { + rgb_matrix_set_color(42, 10, 0, 50); + + rgb_matrix_set_color(2, 10, 0, 50); + rgb_matrix_set_color(3, 10, 0, 50); + rgb_matrix_set_color(4, 10, 0, 50); + + rgb_matrix_set_color(14, 10, 0, 50); + rgb_matrix_set_color(15, 10, 0, 50); + rgb_matrix_set_color(16, 10, 0, 50); + + rgb_matrix_set_color(26, 10, 0, 50); + rgb_matrix_set_color(27, 10, 0, 50); + rgb_matrix_set_color(28, 10, 0, 50); + + rgb_matrix_set_color(38, 10, 0, 50); + rgb_matrix_set_color(39, 10, 0, 50); + rgb_matrix_set_color(40, 10, 0, 50); +} + +if(IS_LAYER_ON(NSSL)) { + rgb_matrix_set_color(41, 0, 50, 1.9); + + rgb_matrix_set_color(1, 0, 50, 1.9); + rgb_matrix_set_color(2, 0, 50, 1.9); + rgb_matrix_set_color(3, 0, 50, 1.9); + rgb_matrix_set_color(4, 0, 50, 1.9); + rgb_matrix_set_color(5, 0, 50, 1.9); + + rgb_matrix_set_color(13, 0, 50, 1.9); + rgb_matrix_set_color(14, 0, 50, 1.9); + rgb_matrix_set_color(15, 0, 50, 1.9); + rgb_matrix_set_color(16, 0, 50, 1.9); + rgb_matrix_set_color(17, 0, 50, 1.9); + + rgb_matrix_set_color(25, 0, 50, 1.9); + rgb_matrix_set_color(26, 0, 50, 1.9); + rgb_matrix_set_color(27, 0, 50, 1.9); + rgb_matrix_set_color(28, 0, 50, 1.9); + rgb_matrix_set_color(29, 0, 50, 1.9); + +} + +//capslock leds + +if (host_keyboard_leds() & (1<. + */ + +#pragma once + +#define RGBLIGHT_LAYERS +#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF +#define RGBLIGHT_ANIMATIONS + +//#define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS +#define RGBLIGHT_LIMIT_VAL 10 + +//bootmagic +#define BOOTMAGIC_KEY_SALT KC_V +#define BOOTMAGIC_KEY_EEPROM_CLEAR KC_Q + +#ifdef RGB_MATRIX_ENABLE + +#define TAPPING_TERM 200 + +//-------------------------------------------------------------------------------------------------------- + +//disable broken animations +#define DISABLE_RGB_MATRIX_ALPHAS_MODS +#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define DISABLE_RGB_MATRIX_BREATHING +#define DISABLE_RGB_MATRIX_BAND_SAT +#define DISABLE_RGB_MATRIX_BAND_VAL +#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define DISABLE_RGB_MATRIX_CYCLE_ALL +#define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN +#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +//#define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +//#define DISABLE_RGB_MATRIX_DUAL_BEACON +#define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define DISABLE_RGB_MATRIX_CYCLE_SPIRAL +//#define DISABLE_RGB_MATRIX_RAINBOW_BEACON +//#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS +//#define DISABLE_RGB_MATRIX_RAINDROPS +#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // DO NOT ENABLE +//#define DISABLE_RGB_MATRIX_TYPING_HEATMAP +//#define DISABLE_RGB_MATRIX_DIGITAL_RAIN +//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE +//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +//#define DISABLE_RGB_MATRIX_SPLASH +//#define DISABLE_RGB_MATRIX_MULTISPLASH +//#define DISABLE_RGB_MATRIX_SOLID_SPLASH +//#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH + +#undef RGB_MATRIX_STARTUP_MODE + +#define RGBLIGHT_HUE_STEP 20 + +#endif diff --git a/keyboards/bm40hsrgb/keymaps/signynt_2_loud/keymap.c b/keyboards/bm40hsrgb/keymaps/signynt_2_loud/keymap.c new file mode 100644 index 0000000000..12539fe41c --- /dev/null +++ b/keyboards/bm40hsrgb/keymaps/signynt_2_loud/keymap.c @@ -0,0 +1,214 @@ +// qmk flash -kb bm40hsrgb -km signynt_2_loud + +/* Copyright 2021 Vincenzo Mitchell Barroso + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// non-KC_ keycodes +#define KC_RST RESET +#define KC_TOG RGB_TOG +#define KC_MOD RGB_MOD +#define KC_HUI RGB_HUI +#define KC_SAI RGB_SAI +#define KC_VAI RGB_VAI + +//define layers +enum layers {BASE, MEDR, NAVR, NSSL, NSL, FUNL, GAME, SECGAME}; + +enum custom_keycodes { + CMD_TAB = SAFE_RANGE, +}; + +//cmd tab + +bool is_cmd_tab_active = false; +uint16_t cmd_tab_timer = 0; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case CMD_TAB: + if (record->event.pressed) { + if (!is_cmd_tab_active) { + is_cmd_tab_active = true; + register_code(KC_LCTL); + } + cmd_tab_timer = timer_read(); + register_code(KC_TAB); + } else { + unregister_code(KC_TAB); + } + break; + } + return true; +} + +void matrix_scan_user(void) { + if (is_cmd_tab_active) { + if (timer_elapsed(cmd_tab_timer) > 500) { + unregister_code(KC_LCTL); + is_cmd_tab_active = false; + } + } +} + +//layer led colors + +void rgb_matrix_indicators_user(void) { + + for (uint8_t i = 0; i < DRIVER_LED_TOTAL; ++i) { + if (HAS_ANY_FLAGS(g_led_config.flags[i], LED_FLAG_MODIFIER)) { + rgb_matrix_set_color(i, 0, 0, 0); + } + if (HAS_ANY_FLAGS(g_led_config.flags[i], LED_FLAG_KEYLIGHT)) { + rgb_matrix_set_color(i, 0, 0, 0); + } + } + + //capslock + if (host_keyboard_led_state().caps_lock) { + for (uint8_t i = 0; i < DRIVER_LED_TOTAL; ++i) { + if (HAS_ANY_FLAGS(g_led_config.flags[i], LED_FLAG_UNDERGLOW)) { + rgb_matrix_set_color(i, 255, 255, 255); + } + } + } + + //nav layer + if (IS_LAYER_ON(NAVR)) { + for (uint8_t i = 0; i < DRIVER_LED_TOTAL; ++i) { + if (HAS_ANY_FLAGS(g_led_config.flags[i], LED_FLAG_UNDERGLOW)) { + rgb_matrix_set_color(i, 0, 204, 255); + } + } + } + + //funl layer + if (IS_LAYER_ON(FUNL)) { + for (uint8_t i = 0; i < DRIVER_LED_TOTAL; ++i) { + if (HAS_ANY_FLAGS(g_led_config.flags[i], LED_FLAG_UNDERGLOW)) { + rgb_matrix_set_color(i, 255, 0, 0); + } + } + } + + //nsl layer + if (IS_LAYER_ON(NSL)) { + for (uint8_t i = 0; i < DRIVER_LED_TOTAL; ++i) { + if (HAS_ANY_FLAGS(g_led_config.flags[i], LED_FLAG_UNDERGLOW)) { + rgb_matrix_set_color(i, 51, 0, 255); + } + } + } + + //nssl layer + if (IS_LAYER_ON(NSSL)) { + for (uint8_t i = 0; i < DRIVER_LED_TOTAL; ++i) { + if (HAS_ANY_FLAGS(g_led_config.flags[i], LED_FLAG_UNDERGLOW)) { + rgb_matrix_set_color(i, 0, 255, 0); + } + } + } + + //game layer + if (IS_LAYER_ON(GAME)) { + for (uint8_t i = 0; i < DRIVER_LED_TOTAL; ++i) { + if (HAS_ANY_FLAGS(g_led_config.flags[i], LED_FLAG_UNDERGLOW)) { + rgb_matrix_set_color(i, 0, 204, 255); + } + } + } + + //secgame layer + if (IS_LAYER_ON(SECGAME)) { + for (uint8_t i = 0; i < DRIVER_LED_TOTAL; ++i) { + if (HAS_ANY_FLAGS(g_led_config.flags[i], LED_FLAG_UNDERGLOW)) { + rgb_matrix_set_color(i, 255, 0, 0); + } + } + } + +} + +//tap dance declarations +enum { + TD_MEDIA, TD_SCREEN, +}; + +//tap dance definitions +qk_tap_dance_action_t tap_dance_actions[] = { + [TD_MEDIA] = ACTION_TAP_DANCE_DOUBLE( KC_MPLY , KC_MNXT ), + [TD_SCREEN] = ACTION_TAP_DANCE_DOUBLE( (G(S(KC_S))) , S(C(KC_4)) ), +}; + +#define KC_TD(TD_VARIABLE) TD(TD_VARIABLE) + +//-------------------------------------------------------------------------------------------------------- + +//base + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [BASE] = LAYOUT_planck_mit( + KC_LALT, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LALT, + KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_LSFT, + KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LCTL, + G(KC_TAB), KC_TD(TD_SCREEN), KC_ESC, LT(MEDR, KC_TAB), LT(NAVR, KC_SPC), LT(NSSL, KC_ENT), LT(NSL, KC_BSPC), LT(FUNL, KC_DEL), KC_LGUI, KC_TD(TD_MEDIA), CMD_TAB + ), + +//layers + [NAVR] = LAYOUT_planck_mit( + KC_LALT, KC_RST, KC_NO, KC_NO, KC_NO, KC_NO, C(S(KC_Z)), C(A(KC_LEFT)), C(KC_X), C(KC_C), C(A(KC_RGHT)), KC_LALT, + KC_LSFT, G(S(C(KC_F1))), G(S(C(KC_F3))), G(S(C(KC_F4))), G(S(C(KC_F2))), KC_NO, KC_CLCK, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_LSFT, + KC_LCTL, KC_NO, KC_ALGR, KC_NO, G(S(C(KC_F5))), KC_NO, KC_INS, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_LCTL, + TG(GAME), KC_NO, KC_NO, KC_NO, KC_NO, KC_ENT, KC_BSPC, KC_DEL, KC_NO, C(G(KC_LEFT)), C(G(KC_RIGHT)) + ), + [MEDR] = LAYOUT_planck_mit( + KC_LALT, KC_RST, KC_NO, KC_NO, KC_NO, KC_NO, KC_TOG, KC_MOD, KC_HUI, KC_SAI, KC_VAI, KC_LALT, + KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, KC_LSFT, + KC_LCTL, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_F13, KC_F14, KC_F15, RGB_VAI, KC_LCTL, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MSTP, KC_MPLY, KC_MUTE, KC_NO, KC_NO, KC_NO + ), + [FUNL] = LAYOUT_planck_mit( + KC_LALT, KC_F12, KC_F7, KC_F8, KC_F9, KC_PSCR, KC_F15, KC_NO, KC_NO, KC_NO, KC_RST, KC_LALT, + KC_LSFT, KC_F11, KC_F4, KC_F5, KC_F6, KC_SLCK, KC_F14, KC_NO, KC_NO, KC_NO, KC_NO, KC_LSFT, + KC_LCTL, KC_F10, KC_F1, KC_F2, KC_F3, KC_PAUS, KC_F13, KC_NO, KC_NO, KC_NO, KC_NO, KC_LCTL, + KC_NO, KC_NO, KC_TAB, KC_APP, KC_SPC, KC_UNDS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO + ), + [NSL] = LAYOUT_planck_mit( + KC_LALT, KC_LPRN, KC_7, KC_8, KC_9, KC_RPRN, KC_LBRC, KC_AMPR, KC_ASTR, KC_LCBR, KC_RBRC, KC_BSPC, + KC_LSFT, KC_COLN, KC_4, KC_5, KC_6, KC_EQL, KC_LCBR, KC_DLR, KC_PERC, KC_CIRC, KC_RCBR, KC_LSFT, + KC_LCTL, KC_GRV, KC_1, KC_2, KC_3, KC_PLUS, KC_TILD, KC_EXLM, KC_COMM, KC_DOT, KC_SLSH, KC_LCTL, + A(S(C(KC_N))), S(C(KC_5)), KC_NO, KC_UNDS, KC_0, KC_MINS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO + ), + [NSSL] = LAYOUT_planck_mit( + KC_LALT, KC_LCBR, KC_AMPR, KC_ASTR, KC_LPRN, KC_RCBR, KC_NO, KC_NO, KC_NO, KC_NO, KC_RST, KC_BSPC, + KC_LSFT, KC_SCLN, KC_DLR, KC_PERC, KC_CIRC, KC_PLUS, KC_NO, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_LSFT, + KC_LCTL, KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_PIPE, KC_NO, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, KC_LCTL, + KC_NO, KC_NO, KC_UNDS, KC_GT, KC_RPRN, KC_NO, KC_BTN1, KC_BTN3, KC_BTN2, KC_NO, KC_NO + ), + [GAME] = LAYOUT_planck_mit( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, TG(GAME), + KC_LALT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_LSFT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LCTL, + KC_LCTL, A(KC_TAB), MO(SECGAME), KC_TAB, KC_SPC, LT(SECGAME, KC_ENT), KC_BSPC, KC_DEL, KC_MPRV, KC_MPLY, KC_MNXT + ), + [SECGAME] = LAYOUT_planck_mit( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO, KC_NO, KC_NO, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, + KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO, KC_NO, KC_P6, KC_P7, KC_P8, KC_P9, KC_P0 + ) +}; diff --git a/keyboards/bm40hsrgb/keymaps/signynt_2_loud/readme.md b/keyboards/bm40hsrgb/keymaps/signynt_2_loud/readme.md new file mode 100644 index 0000000000..938803c268 --- /dev/null +++ b/keyboards/bm40hsrgb/keymaps/signynt_2_loud/readme.md @@ -0,0 +1,117 @@ +# Signynt's Keymap: 'Sigma-Squared' + +Sigma Squared is an adaptation & modification of the Layout [Miryoku](https://github.com/manna-harbour/qmk_firmware/blob/miryoku/users/manna-harbour_miryoku/miryoku.org#miryoku-) by *manna-harbour* + +*manna-harbour* lays out the general principles of the layout as follows: + +- Use layers instead of reaching. +- Use both hands instead of contortions. +- Use the home positions as much as possible. +- Make full use of the thumbs. +- Avoid unnecessary complication. + + + +Sigma Squared modifies on **Miryoku** in the following ways: + +- Added the Mods to the outer most columns to be easily accessed while typing with the pinkies +- Extended the **NUMBER** layer to include symbols on the right side to allow calcualtion to be typed more easily without haveing to move between layers +- Added a **GAME** layer to be used for gaming that emulates a more standard keyboard that most games expect + - moves *left shift* and *left ctrl* down + - *esc* moved to top left + - gives access to a **SECOND GAME** layer that contains an Fn row as well as number and arrow keys right under your left fingers +- Added Shortcuts to the bottom row to reduce the amount of keycombos needed to use commonly needed features + - Mission Control, Screenshot, Cycling Apps & Windows +- Added LED indicators to display what layer is currently active (only active while RGB is turned on) + + + +### Flashing + +- to directly flash to board: + + `qmk flash -kb bm40hsrgb -km signynt` + +- to only compile: + + `qmk compile -kb bm40hsrgb -km signynt` + + + +# Layout + +## BASE + +Tap the layer keys to use the black legends, hold them to activate the corresponding layer. + +The Shortcut keys can be modified to suit your needs, or change them in your OS to match the keys. + +If you are using MacOS I recommend swapping your *Ctrl* and *Cmd* keys in system preferences + +The Music Control key can be pressed once to pause and be pressed twice in rapid succession to skip to the next song. + +The Screenshot Key takes a screenshot to the clipboard if pressed once, if double tapped it will take a screenshot to be saved to the desktop. + +![img](https://i.imgur.com/vhb1L2f.png) + +## NAVIGATION + +Provides access to all essential navigation keys, comfortably under your home row. Modifiers remain identical to **BASE** layer to be used for navigating lines and words. + +*Game Layer* key takes you to the **GAME** layer. *(duh)* + +Bottom right keys are used to swap between Virtual Desktops. You might need to modify these to fit your OS. + +![img](https://i.imgur.com/daKxxFz.png) + + + +## MEDIA + +Provides access to all basic media keys, emulating the arrow keys on the home row. + +Also gives access to RGB controls. + +![img](https://i.imgur.com/1jWOvvH.png) + +## NUMBER + +Numbers are arranged in a numpad layout beneath home row, with 0 being positioned under the thumb resting position. Layer includes all most commonly needed symbols to reduce amount of layer switching needed to type longer calculations. + +Top right key changed to *Back Space* so corrections can be made without leaving layer. + +![img](https://i.imgur.com/LGJT3so.png) + +## SYMBOL + +Symbols are positioned over respective numbers from the **NUMBER** layer. + +Mouse keys are positioned similarly under the home row corresponding to the arrow keys. + +Also includes *Back Space* key for corrections. + +![img](https://i.imgur.com/ihOcdPj.png) + +## Fn + +Fn keys are arranged in the same layout as the numbers, with *F10* to *F12* added to the left + +![img](https://i.imgur.com/bPpI8KN.png) + +## GAME + +Somewhat emulates a regular layout needed for gaming. Top right key LED will indicate that you are on the **GAME** layer, and can be pressed to exit it. Holding one of the *Second Game* keys will give you access to **SECOND GAME** + +![img](https://i.imgur.com/r9KIWLX.png) + +## SECOND GAME + +Top right key will turn red to indicate you are in the layer + +![img](https://i.imgur.com/BLKHfVB.png) + + + +# Contact + +If you have any issues or questions you can reach me through Reddit at u/Signynt or on the QMK Discord diff --git a/keyboards/bm40hsrgb/keymaps/signynt_2_loud/rules.mk b/keyboards/bm40hsrgb/keymaps/signynt_2_loud/rules.mk new file mode 100644 index 0000000000..29b992b605 --- /dev/null +++ b/keyboards/bm40hsrgb/keymaps/signynt_2_loud/rules.mk @@ -0,0 +1,7 @@ +#rules + +MOUSEKEY_ENABLE = yes # Mouse keys +BOOTMAGIC_ENABLE = full +EXTRAKEY_ENABLE = yes # Audio control and System control +TAP_DANCE_ENABLE = yes +#RGB_MATRIX_ENABLE = no diff --git a/keyboards/bm40hsrgb/keymaps/signynt_2_quiet/config.h b/keyboards/bm40hsrgb/keymaps/signynt_2_quiet/config.h new file mode 100644 index 0000000000..4dd37189a9 --- /dev/null +++ b/keyboards/bm40hsrgb/keymaps/signynt_2_quiet/config.h @@ -0,0 +1,80 @@ +// qmk flash -kb bm40hsrgb -km signynt_2_quiet + +/* Copyright 2021 Vincenzo Mitchell Barroso + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define RGBLIGHT_LAYERS +#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF +#define RGBLIGHT_ANIMATIONS + +//#define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS +#define RGBLIGHT_LIMIT_VAL 10 + +//bootmagic +#define BOOTMAGIC_KEY_SALT KC_V +#define BOOTMAGIC_KEY_EEPROM_CLEAR KC_Q + +#ifdef RGB_MATRIX_ENABLE + +#define TAPPING_TERM 200 + +//-------------------------------------------------------------------------------------------------------- + +//disable broken animations +#define DISABLE_RGB_MATRIX_ALPHAS_MODS +#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define DISABLE_RGB_MATRIX_BREATHING +#define DISABLE_RGB_MATRIX_BAND_SAT +#define DISABLE_RGB_MATRIX_BAND_VAL +#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define DISABLE_RGB_MATRIX_CYCLE_ALL +#define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN +#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +//#define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +//#define DISABLE_RGB_MATRIX_DUAL_BEACON +#define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define DISABLE_RGB_MATRIX_CYCLE_SPIRAL +//#define DISABLE_RGB_MATRIX_RAINBOW_BEACON +//#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS +//#define DISABLE_RGB_MATRIX_RAINDROPS +#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // DO NOT ENABLE +//#define DISABLE_RGB_MATRIX_TYPING_HEATMAP +//#define DISABLE_RGB_MATRIX_DIGITAL_RAIN +//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE +//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +//#define DISABLE_RGB_MATRIX_SPLASH +//#define DISABLE_RGB_MATRIX_MULTISPLASH +//#define DISABLE_RGB_MATRIX_SOLID_SPLASH +//#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH + +#undef RGB_MATRIX_STARTUP_MODE + +#define RGBLIGHT_HUE_STEP 20 + +#endif diff --git a/keyboards/bm40hsrgb/keymaps/signynt_2_quiet/keymap.c b/keyboards/bm40hsrgb/keymaps/signynt_2_quiet/keymap.c new file mode 100644 index 0000000000..999e6b18af --- /dev/null +++ b/keyboards/bm40hsrgb/keymaps/signynt_2_quiet/keymap.c @@ -0,0 +1,178 @@ +// qmk flash -kb bm40hsrgb -km signynt_2_quiet + +/* Copyright 2021 Vincenzo Mitchell Barroso + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// non-KC_ keycodes +#define KC_RST RESET +#define KC_TOG RGB_TOG +#define KC_MOD RGB_MOD +#define KC_HUI RGB_HUI +#define KC_SAI RGB_SAI +#define KC_VAI RGB_VAI + +//define layers +enum layers {BASE, MEDR, NAVR, NSSL, NSL, FUNL, GAME, SECGAME}; + +enum custom_keycodes { + CMD_TAB = SAFE_RANGE, +}; + +//cmd tab + +bool is_cmd_tab_active = false; +uint16_t cmd_tab_timer = 0; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case CMD_TAB: + if (record->event.pressed) { + if (!is_cmd_tab_active) { + is_cmd_tab_active = true; + register_code(KC_LCTL); + } + cmd_tab_timer = timer_read(); + register_code(KC_TAB); + } else { + unregister_code(KC_TAB); + } + break; + } + return true; +} + +void matrix_scan_user(void) { + if (is_cmd_tab_active) { + if (timer_elapsed(cmd_tab_timer) > 500) { + unregister_code(KC_LCTL); + is_cmd_tab_active = false; + } + } +} + +//layer led colors + +void rgb_matrix_indicators_user(void) { + + for (uint8_t i = 0; i < DRIVER_LED_TOTAL; ++i) { + if (HAS_ANY_FLAGS(g_led_config.flags[i], LED_FLAG_MODIFIER)) { + rgb_matrix_set_color(i, 0, 0, 0); + } + if (HAS_ANY_FLAGS(g_led_config.flags[i], LED_FLAG_KEYLIGHT)) { + rgb_matrix_set_color(i, 0, 0, 0); + } + } + + //capslock + if (host_keyboard_led_state().caps_lock) { + for (uint8_t i = 0; i < DRIVER_LED_TOTAL; ++i) { + if (HAS_ANY_FLAGS(g_led_config.flags[i], LED_FLAG_UNDERGLOW)) { + rgb_matrix_set_color(i, 255, 255, 255); + } + } + } + + //game layer + if (IS_LAYER_ON(GAME)) { + for (uint8_t i = 0; i < DRIVER_LED_TOTAL; ++i) { + if (HAS_ANY_FLAGS(g_led_config.flags[i], LED_FLAG_UNDERGLOW)) { + rgb_matrix_set_color(i, 0, 204, 255); + } + } + } + + //secgame layer + if (IS_LAYER_ON(SECGAME)) { + for (uint8_t i = 0; i < DRIVER_LED_TOTAL; ++i) { + if (HAS_ANY_FLAGS(g_led_config.flags[i], LED_FLAG_UNDERGLOW)) { + rgb_matrix_set_color(i, 255, 0, 0); + } + } + } + +} + +//tap dance declarations +enum { + TD_MEDIA, TD_SCREEN, +}; + +//tap dance definitions +qk_tap_dance_action_t tap_dance_actions[] = { + [TD_MEDIA] = ACTION_TAP_DANCE_DOUBLE( KC_MPLY , KC_MNXT ), + [TD_SCREEN] = ACTION_TAP_DANCE_DOUBLE( (G(S(KC_S))) , S(C(KC_4)) ), +}; + +#define KC_TD(TD_VARIABLE) TD(TD_VARIABLE) + +//-------------------------------------------------------------------------------------------------------- + +//base + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [BASE] = LAYOUT_planck_mit( + KC_LALT, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LALT, + KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_LSFT, + KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LCTL, + G(KC_TAB), KC_TD(TD_SCREEN), KC_ESC, LT(MEDR, KC_TAB), LT(NAVR, KC_SPC), LT(NSSL, KC_ENT), LT(NSL, KC_BSPC), LT(FUNL, KC_DEL), KC_LGUI, KC_TD(TD_MEDIA), CMD_TAB + ), + +//layers + [NAVR] = LAYOUT_planck_mit( + KC_LALT, KC_RST, KC_NO, KC_NO, KC_NO, KC_NO, C(S(KC_Z)), C(A(KC_LEFT)), C(KC_X), C(KC_C), C(A(KC_RGHT)), KC_LALT, + KC_LSFT, G(S(C(KC_F1))), G(S(C(KC_F3))), G(S(C(KC_F4))), G(S(C(KC_F2))), KC_NO, KC_CLCK, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_LSFT, + KC_LCTL, KC_NO, KC_ALGR, KC_NO, G(S(C(KC_F5))), KC_NO, KC_INS, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_LCTL, + TG(GAME), KC_NO, KC_NO, KC_NO, KC_NO, KC_ENT, KC_BSPC, KC_DEL, KC_NO, C(G(KC_LEFT)), C(G(KC_RIGHT)) + ), + [MEDR] = LAYOUT_planck_mit( + KC_LALT, KC_RST, KC_NO, KC_NO, KC_NO, KC_NO, KC_TOG, KC_MOD, KC_HUI, KC_SAI, KC_VAI, KC_LALT, + KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, KC_LSFT, + KC_LCTL, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_F13, KC_F14, KC_F15, RGB_VAI, KC_LCTL, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MSTP, KC_MPLY, KC_MUTE, KC_NO, KC_NO, KC_NO + ), + [FUNL] = LAYOUT_planck_mit( + KC_LALT, KC_F12, KC_F7, KC_F8, KC_F9, KC_PSCR, KC_F15, KC_NO, KC_NO, KC_NO, KC_RST, KC_LALT, + KC_LSFT, KC_F11, KC_F4, KC_F5, KC_F6, KC_SLCK, KC_F14, KC_NO, KC_NO, KC_NO, KC_NO, KC_LSFT, + KC_LCTL, KC_F10, KC_F1, KC_F2, KC_F3, KC_PAUS, KC_F13, KC_NO, KC_NO, KC_NO, KC_NO, KC_LCTL, + KC_NO, KC_NO, KC_TAB, KC_APP, KC_SPC, KC_UNDS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO + ), + [NSL] = LAYOUT_planck_mit( + KC_LALT, KC_LPRN, KC_7, KC_8, KC_9, KC_RPRN, KC_LBRC, KC_AMPR, KC_ASTR, KC_LCBR, KC_RBRC, KC_BSPC, + KC_LSFT, KC_COLN, KC_4, KC_5, KC_6, KC_EQL, KC_LCBR, KC_DLR, KC_PERC, KC_CIRC, KC_RCBR, KC_LSFT, + KC_LCTL, KC_GRV, KC_1, KC_2, KC_3, KC_PLUS, KC_TILD, KC_EXLM, KC_COMM, KC_DOT, KC_SLSH, KC_LCTL, + A(S(C(KC_N))), S(C(KC_5)), KC_NO, KC_UNDS, KC_0, KC_MINS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO + ), + [NSSL] = LAYOUT_planck_mit( + KC_LALT, KC_LCBR, KC_AMPR, KC_ASTR, KC_LPRN, KC_RCBR, KC_NO, KC_NO, KC_NO, KC_NO, KC_RST, KC_BSPC, + KC_LSFT, KC_SCLN, KC_DLR, KC_PERC, KC_CIRC, KC_PLUS, KC_NO, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_LSFT, + KC_LCTL, KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_PIPE, KC_NO, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, KC_LCTL, + KC_NO, KC_NO, KC_UNDS, KC_GT, KC_RPRN, KC_NO, KC_BTN1, KC_BTN3, KC_BTN2, KC_NO, KC_NO + ), + [GAME] = LAYOUT_planck_mit( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, TG(GAME), + KC_LALT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_LSFT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LCTL, + KC_LCTL, A(KC_TAB), MO(SECGAME), KC_TAB, KC_SPC, LT(SECGAME, KC_ENT), KC_BSPC, KC_DEL, KC_MPRV, KC_MPLY, KC_MNXT + ), + [SECGAME] = LAYOUT_planck_mit( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO, KC_NO, KC_NO, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, + KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO, KC_NO, KC_P6, KC_P7, KC_P8, KC_P9, KC_P0 + ) +}; diff --git a/keyboards/bm40hsrgb/keymaps/signynt_2_quiet/readme.md b/keyboards/bm40hsrgb/keymaps/signynt_2_quiet/readme.md new file mode 100644 index 0000000000..938803c268 --- /dev/null +++ b/keyboards/bm40hsrgb/keymaps/signynt_2_quiet/readme.md @@ -0,0 +1,117 @@ +# Signynt's Keymap: 'Sigma-Squared' + +Sigma Squared is an adaptation & modification of the Layout [Miryoku](https://github.com/manna-harbour/qmk_firmware/blob/miryoku/users/manna-harbour_miryoku/miryoku.org#miryoku-) by *manna-harbour* + +*manna-harbour* lays out the general principles of the layout as follows: + +- Use layers instead of reaching. +- Use both hands instead of contortions. +- Use the home positions as much as possible. +- Make full use of the thumbs. +- Avoid unnecessary complication. + + + +Sigma Squared modifies on **Miryoku** in the following ways: + +- Added the Mods to the outer most columns to be easily accessed while typing with the pinkies +- Extended the **NUMBER** layer to include symbols on the right side to allow calcualtion to be typed more easily without haveing to move between layers +- Added a **GAME** layer to be used for gaming that emulates a more standard keyboard that most games expect + - moves *left shift* and *left ctrl* down + - *esc* moved to top left + - gives access to a **SECOND GAME** layer that contains an Fn row as well as number and arrow keys right under your left fingers +- Added Shortcuts to the bottom row to reduce the amount of keycombos needed to use commonly needed features + - Mission Control, Screenshot, Cycling Apps & Windows +- Added LED indicators to display what layer is currently active (only active while RGB is turned on) + + + +### Flashing + +- to directly flash to board: + + `qmk flash -kb bm40hsrgb -km signynt` + +- to only compile: + + `qmk compile -kb bm40hsrgb -km signynt` + + + +# Layout + +## BASE + +Tap the layer keys to use the black legends, hold them to activate the corresponding layer. + +The Shortcut keys can be modified to suit your needs, or change them in your OS to match the keys. + +If you are using MacOS I recommend swapping your *Ctrl* and *Cmd* keys in system preferences + +The Music Control key can be pressed once to pause and be pressed twice in rapid succession to skip to the next song. + +The Screenshot Key takes a screenshot to the clipboard if pressed once, if double tapped it will take a screenshot to be saved to the desktop. + +![img](https://i.imgur.com/vhb1L2f.png) + +## NAVIGATION + +Provides access to all essential navigation keys, comfortably under your home row. Modifiers remain identical to **BASE** layer to be used for navigating lines and words. + +*Game Layer* key takes you to the **GAME** layer. *(duh)* + +Bottom right keys are used to swap between Virtual Desktops. You might need to modify these to fit your OS. + +![img](https://i.imgur.com/daKxxFz.png) + + + +## MEDIA + +Provides access to all basic media keys, emulating the arrow keys on the home row. + +Also gives access to RGB controls. + +![img](https://i.imgur.com/1jWOvvH.png) + +## NUMBER + +Numbers are arranged in a numpad layout beneath home row, with 0 being positioned under the thumb resting position. Layer includes all most commonly needed symbols to reduce amount of layer switching needed to type longer calculations. + +Top right key changed to *Back Space* so corrections can be made without leaving layer. + +![img](https://i.imgur.com/LGJT3so.png) + +## SYMBOL + +Symbols are positioned over respective numbers from the **NUMBER** layer. + +Mouse keys are positioned similarly under the home row corresponding to the arrow keys. + +Also includes *Back Space* key for corrections. + +![img](https://i.imgur.com/ihOcdPj.png) + +## Fn + +Fn keys are arranged in the same layout as the numbers, with *F10* to *F12* added to the left + +![img](https://i.imgur.com/bPpI8KN.png) + +## GAME + +Somewhat emulates a regular layout needed for gaming. Top right key LED will indicate that you are on the **GAME** layer, and can be pressed to exit it. Holding one of the *Second Game* keys will give you access to **SECOND GAME** + +![img](https://i.imgur.com/r9KIWLX.png) + +## SECOND GAME + +Top right key will turn red to indicate you are in the layer + +![img](https://i.imgur.com/BLKHfVB.png) + + + +# Contact + +If you have any issues or questions you can reach me through Reddit at u/Signynt or on the QMK Discord diff --git a/keyboards/bm40hsrgb/keymaps/signynt_2_quiet/rules.mk b/keyboards/bm40hsrgb/keymaps/signynt_2_quiet/rules.mk new file mode 100644 index 0000000000..29b992b605 --- /dev/null +++ b/keyboards/bm40hsrgb/keymaps/signynt_2_quiet/rules.mk @@ -0,0 +1,7 @@ +#rules + +MOUSEKEY_ENABLE = yes # Mouse keys +BOOTMAGIC_ENABLE = full +EXTRAKEY_ENABLE = yes # Audio control and System control +TAP_DANCE_ENABLE = yes +#RGB_MATRIX_ENABLE = no From ad4cfffe3d1e6ad0dd5c8e5ed12c5fef6eb93955 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 3 Mar 2021 13:44:55 -0800 Subject: [PATCH 008/613] Format code according to conventions (#12102) Co-authored-by: QMK Bot --- .../genone/eclipse_65/keymaps/via/keymap.c | 106 +++++++++--------- 1 file changed, 53 insertions(+), 53 deletions(-) diff --git a/keyboards/genone/eclipse_65/keymaps/via/keymap.c b/keyboards/genone/eclipse_65/keymaps/via/keymap.c index c977568beb..94361dd14f 100644 --- a/keyboards/genone/eclipse_65/keymaps/via/keymap.c +++ b/keyboards/genone/eclipse_65/keymaps/via/keymap.c @@ -1,53 +1,53 @@ -/* Copyright 2020 GEN ONE LLC - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include QMK_KEYBOARD_H - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - // Default layer - [0] = LAYOUT_65_ansi( - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), - - // Fn1 Layer - [1] = LAYOUT_65_ansi( - KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, - KC_CAPS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), - - // Fn2 Layer - [2] = LAYOUT_65_ansi( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), - - // Fn3 Layer - [3] = LAYOUT_65_ansi( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), - -}; +/* Copyright 2020 GEN ONE LLC + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + // Default layer + [0] = LAYOUT_65_ansi( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + // Fn1 Layer + [1] = LAYOUT_65_ansi( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, + KC_CAPS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + // Fn2 Layer + [2] = LAYOUT_65_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + // Fn3 Layer + [3] = LAYOUT_65_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +}; From 8f30f4170c85009b6be991c9820f2c79068ccdc6 Mon Sep 17 00:00:00 2001 From: James Young <18669334+noroadsleft@users.noreply.github.com> Date: Wed, 3 Mar 2021 14:33:14 -0800 Subject: [PATCH 009/613] cannonkeys/atlas_alps: rename via keymaps rules.mk.txt to rules.mk (#12103) File doesn't work without the correct filename. --- .../cannonkeys/atlas_alps/keymaps/via/{rules.mk.txt => rules.mk} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename keyboards/cannonkeys/atlas_alps/keymaps/via/{rules.mk.txt => rules.mk} (100%) diff --git a/keyboards/cannonkeys/atlas_alps/keymaps/via/rules.mk.txt b/keyboards/cannonkeys/atlas_alps/keymaps/via/rules.mk similarity index 100% rename from keyboards/cannonkeys/atlas_alps/keymaps/via/rules.mk.txt rename to keyboards/cannonkeys/atlas_alps/keymaps/via/rules.mk From 0fd95e5db52c5cd51d452c479977a7b9af5ef7a7 Mon Sep 17 00:00:00 2001 From: Drashna Jaelre Date: Wed, 3 Mar 2021 17:02:00 -0800 Subject: [PATCH 010/613] Remove ifdefs for Swap Hands keycodes (#12095) --- quantum/quantum_keycodes.h | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h index e0f5dbc61e..116fc4b71d 100644 --- a/quantum/quantum_keycodes.h +++ b/quantum/quantum_keycodes.h @@ -79,12 +79,10 @@ enum quantum_keycodes { QK_STENO_GEMINI = 0x5A31, QK_STENO_MAX = 0x5A3F, #endif -#ifdef SWAP_HANDS_ENABLE QK_SWAP_HANDS = 0x5B00, QK_SWAP_HANDS_MAX = 0x5BFF, -#endif - QK_MOD_TAP = 0x6000, - QK_MOD_TAP_MAX = 0x7FFF, + QK_MOD_TAP = 0x6000, + QK_MOD_TAP_MAX = 0x7FFF, #ifdef UNICODE_ENABLE QK_UNICODE = 0x8000, QK_UNICODE_MAX = 0xFFFF, @@ -868,16 +866,14 @@ enum quantum_keycodes { #define UC_M_BS UNICODE_MODE_BSD #define UC_M_WC UNICODE_MODE_WINC -#ifdef SWAP_HANDS_ENABLE -# define SH_T(kc) (QK_SWAP_HANDS | (kc)) -# define SH_TG (QK_SWAP_HANDS | OP_SH_TOGGLE) -# define SH_TT (QK_SWAP_HANDS | OP_SH_TAP_TOGGLE) -# define SH_OS (QK_SWAP_HANDS | OP_SH_ONESHOT) -# define SH_MON (QK_SWAP_HANDS | OP_SH_ON_OFF) -# define SH_MOFF (QK_SWAP_HANDS | OP_SH_OFF_ON) -# define SH_ON (QK_SWAP_HANDS | OP_SH_ON) -# define SH_OFF (QK_SWAP_HANDS | OP_SH_OFF) -#endif +#define SH_T(kc) (QK_SWAP_HANDS | (kc)) +#define SH_TG (QK_SWAP_HANDS | OP_SH_TOGGLE) +#define SH_TT (QK_SWAP_HANDS | OP_SH_TAP_TOGGLE) +#define SH_OS (QK_SWAP_HANDS | OP_SH_ONESHOT) +#define SH_MON (QK_SWAP_HANDS | OP_SH_ON_OFF) +#define SH_MOFF (QK_SWAP_HANDS | OP_SH_OFF_ON) +#define SH_ON (QK_SWAP_HANDS | OP_SH_ON) +#define SH_OFF (QK_SWAP_HANDS | OP_SH_OFF) // Dynamic Macros aliases #define DM_REC1 DYN_REC_START1 From 7aa74c227b03e882915b184d07a5e31c9d720710 Mon Sep 17 00:00:00 2001 From: studiokestra <74369928+studiokestra@users.noreply.github.com> Date: Wed, 3 Mar 2021 18:02:27 -0700 Subject: [PATCH 011/613] [Keyboard] Add Studio Kestra Nue PCB (#12094) --- keyboards/studiokestra/nue/config.h | 50 ++++++++++++ keyboards/studiokestra/nue/info.json | 80 +++++++++++++++++++ .../studiokestra/nue/keymaps/default/keymap.c | 41 ++++++++++ .../nue/keymaps/default/readme.md | 1 + .../studiokestra/nue/keymaps/via/keymap.c | 53 ++++++++++++ .../studiokestra/nue/keymaps/via/readme.md | 1 + .../studiokestra/nue/keymaps/via/rules.mk | 1 + keyboards/studiokestra/nue/nue.c | 17 ++++ keyboards/studiokestra/nue/nue.h | 41 ++++++++++ keyboards/studiokestra/nue/readme.md | 23 ++++++ keyboards/studiokestra/nue/rules.mk | 22 +++++ 11 files changed, 330 insertions(+) create mode 100644 keyboards/studiokestra/nue/config.h create mode 100644 keyboards/studiokestra/nue/info.json create mode 100644 keyboards/studiokestra/nue/keymaps/default/keymap.c create mode 100644 keyboards/studiokestra/nue/keymaps/default/readme.md create mode 100644 keyboards/studiokestra/nue/keymaps/via/keymap.c create mode 100644 keyboards/studiokestra/nue/keymaps/via/readme.md create mode 100644 keyboards/studiokestra/nue/keymaps/via/rules.mk create mode 100644 keyboards/studiokestra/nue/nue.c create mode 100644 keyboards/studiokestra/nue/nue.h create mode 100644 keyboards/studiokestra/nue/readme.md create mode 100644 keyboards/studiokestra/nue/rules.mk diff --git a/keyboards/studiokestra/nue/config.h b/keyboards/studiokestra/nue/config.h new file mode 100644 index 0000000000..72514d85c9 --- /dev/null +++ b/keyboards/studiokestra/nue/config.h @@ -0,0 +1,50 @@ +/* +Copyright 2021 Studio Kestra + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7C10 +#define PRODUCT_ID 0x0701 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Studio Kestra +#define PRODUCT Nue + +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +#define MATRIX_COL_PINS { F0, F6, F7, D2, D3, D5, D4, D6, D7, B4, B5, B6, C6, C7 } +#define MATRIX_ROW_PINS { B0, B7, F1, F5, F4} +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/studiokestra/nue/info.json b/keyboards/studiokestra/nue/info.json new file mode 100644 index 0000000000..e12b15d746 --- /dev/null +++ b/keyboards/studiokestra/nue/info.json @@ -0,0 +1,80 @@ +{ + "keyboard_name": "Nue", + "url": "https://studiokestra.ca/nue", + "maintainer": "Studio Kestra", + "width": 15, + "height": 5, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.5, "y":1, "w":1.5}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":12.5, "y":4, "w":1.25}, + {"x":13.75, "y":4, "w":1.25}] + } + } +} diff --git a/keyboards/studiokestra/nue/keymaps/default/keymap.c b/keyboards/studiokestra/nue/keymaps/default/keymap.c new file mode 100644 index 0000000000..b61ab47d45 --- /dev/null +++ b/keyboards/studiokestra/nue/keymaps/default/keymap.c @@ -0,0 +1,41 @@ + /* Copyright 2021 Studio Kestra + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + + [_BASE] = LAYOUT_all( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL), + + [_FN] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +}; \ No newline at end of file diff --git a/keyboards/studiokestra/nue/keymaps/default/readme.md b/keyboards/studiokestra/nue/keymaps/default/readme.md new file mode 100644 index 0000000000..3255b4b4aa --- /dev/null +++ b/keyboards/studiokestra/nue/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for Nue diff --git a/keyboards/studiokestra/nue/keymaps/via/keymap.c b/keyboards/studiokestra/nue/keymaps/via/keymap.c new file mode 100644 index 0000000000..56e64b7c2d --- /dev/null +++ b/keyboards/studiokestra/nue/keymaps/via/keymap.c @@ -0,0 +1,53 @@ + /* Copyright 2021 Studio Kestra + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _FN1, + _FN2, + _FN3 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_BASE] = LAYOUT_all( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSLS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL), + [_FN1] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [_FN2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [_FN3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +}; diff --git a/keyboards/studiokestra/nue/keymaps/via/readme.md b/keyboards/studiokestra/nue/keymaps/via/readme.md new file mode 100644 index 0000000000..d97e0a680d --- /dev/null +++ b/keyboards/studiokestra/nue/keymaps/via/readme.md @@ -0,0 +1 @@ +# Studio Kestra's Nue keymap for VIA diff --git a/keyboards/studiokestra/nue/keymaps/via/rules.mk b/keyboards/studiokestra/nue/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/studiokestra/nue/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/studiokestra/nue/nue.c b/keyboards/studiokestra/nue/nue.c new file mode 100644 index 0000000000..869aaaa483 --- /dev/null +++ b/keyboards/studiokestra/nue/nue.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Studio Kestra + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "nue.h" diff --git a/keyboards/studiokestra/nue/nue.h b/keyboards/studiokestra/nue/nue.h new file mode 100644 index 0000000000..6f051b67e9 --- /dev/null +++ b/keyboards/studiokestra/nue/nue.h @@ -0,0 +1,41 @@ +/* Copyright 2021 Studio Kestra + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT_all(\ + k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k113, \ + k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k212, \ + k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k213, \ + k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, \ + k400, k401, k402, k406, k409, k410, k411, k412 \ +) { \ + { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013 }, \ + { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113 }, \ + { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213 }, \ + { k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313 }, \ + { k400, k401, k402, KC_NO, KC_NO,KC_NO,k406, KC_NO,KC_NO, k409, k410, k411, k412, KC_NO} \ +} diff --git a/keyboards/studiokestra/nue/readme.md b/keyboards/studiokestra/nue/readme.md new file mode 100644 index 0000000000..42e72902e4 --- /dev/null +++ b/keyboards/studiokestra/nue/readme.md @@ -0,0 +1,23 @@ +# Nue + +60% PCB with gasket mounting tabs designed for the Nue keyboard. + +* Keyboard Maintainer: [Studio Kestra](https://github.com/studiokestra/) +* Hardware Supported: [studiokestra.ca/nue](https://studiokestra.ca/nue/) +* Hardware Availability: Group-Buy (Q1 2021) + +## Bootload Sequence + +There are 3 ways to put the board in bootloader mode: + +- Hold the top-left key (typically `Esc`) while plugging in the USB cable, OR +- While the PCB is plugged into the PC, press the physical `RESET` button on the back of the board, OR +- With the default layout, toggle Layer 1 and press the `R` key. + +## Compiling Firmware + +Make example for this keyboard (after setting up your build environment): + + make studiokestra/nue:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/studiokestra/nue/rules.mk b/keyboards/studiokestra/nue/rules.mk new file mode 100644 index 0000000000..59fb880c7a --- /dev/null +++ b/keyboards/studiokestra/nue/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output From 6461087c865bc4af30ac8521af9db785afb662a0 Mon Sep 17 00:00:00 2001 From: Ryan Date: Thu, 4 Mar 2021 15:09:22 +1100 Subject: [PATCH 012/613] `qmk generate-rules-mk`: add `--escape` switch for makefile logic (#12101) --- build_keyboard.mk | 2 +- lib/python/qmk/cli/generate/rules_mk.py | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/build_keyboard.mk b/build_keyboard.mk index b2a152bb98..366d1f5d2f 100644 --- a/build_keyboard.mk +++ b/build_keyboard.mk @@ -97,7 +97,7 @@ MAIN_KEYMAP_PATH_4 := $(KEYBOARD_PATH_4)/keymaps/$(KEYMAP) MAIN_KEYMAP_PATH_5 := $(KEYBOARD_PATH_5)/keymaps/$(KEYMAP) # Pull in rules from info.json -INFO_RULES_MK = $(shell bin/qmk generate-rules-mk --quiet --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/rules.mk) +INFO_RULES_MK = $(shell bin/qmk generate-rules-mk --quiet --escape --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/rules.mk) include $(INFO_RULES_MK) # Check for keymap.json first, so we can regenerate keymap.c diff --git a/lib/python/qmk/cli/generate/rules_mk.py b/lib/python/qmk/cli/generate/rules_mk.py index c21ab50906..15917987b9 100755 --- a/lib/python/qmk/cli/generate/rules_mk.py +++ b/lib/python/qmk/cli/generate/rules_mk.py @@ -36,6 +36,7 @@ def process_mapping_rule(kb_info_json, rules_key, info_dict): @cli.argument('-o', '--output', arg_only=True, type=normpath, help='File to write to') @cli.argument('-q', '--quiet', arg_only=True, action='store_true', help="Quiet mode, only output error messages") +@cli.argument('-e', '--escape', arg_only=True, action='store_true', help="Escape spaces in quiet mode") @cli.argument('-kb', '--keyboard', help='Keyboard to generate config.h for.') @cli.subcommand('Used by the make system to generate info_config.h from info.json', hidden=True) @automagic_keyboard @@ -83,7 +84,10 @@ def generate_rules_mk(cli): cli.args.output.write_text(rules_mk) if cli.args.quiet: - print(cli.args.output) + if cli.args.escape: + print(cli.args.output.as_posix().replace(' ', '\\ ')) + else: + print(cli.args.output) else: cli.log.info('Wrote rules.mk to %s.', cli.args.output) From b1a8fafa62ec058470715a6930317da09d63181d Mon Sep 17 00:00:00 2001 From: s-show Date: Fri, 5 Mar 2021 00:20:01 +0900 Subject: [PATCH 013/613] [Docs] Japanese translation of docs/keycodes.md (#10192) * copy 'keycodes.md'. * Translated 'keycodes.md'. * Fixed typo. * Fixed typo. * Apply suggestions from code review Co-authored-by: shela Co-authored-by: Takeshi ISHII <2170248+mtei@users.noreply.github.com> * update based on comment. * update based on comment. * Update docs/ja/keycodes.md * update based on comment. Co-authored-by: Takeshi ISHII <2170248+mtei@users.noreply.github.com> * update based on comment. Co-authored-by: Takeshi ISHII <2170248+mtei@users.noreply.github.com> * update based on comment. Co-authored-by: Takeshi ISHII <2170248+mtei@users.noreply.github.com> * Update docs/ja/keycodes.md Co-authored-by: Takeshi ISHII <2170248+mtei@users.noreply.github.com> * update based on comment. Co-authored-by: Takeshi ISHII <2170248+mtei@users.noreply.github.com> Co-authored-by: shela Co-authored-by: Takeshi ISHII <2170248+mtei@users.noreply.github.com> --- docs/ja/keycodes.md | 574 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 574 insertions(+) create mode 100644 docs/ja/keycodes.md diff --git a/docs/ja/keycodes.md b/docs/ja/keycodes.md new file mode 100644 index 0000000000..c5c075bb2b --- /dev/null +++ b/docs/ja/keycodes.md @@ -0,0 +1,574 @@ +# ã‚­ãƒ¼ã‚³ãƒ¼ãƒ‰ã®æ¦‚è¦ + + + +[キーマップ](ja/keymap.md) を定義ã™ã‚‹ã¨ãã¯ã€ãれãžã‚Œã®ã‚­ãƒ¼ã«æœ‰åйãªå®šç¾©ãŒå¿…è¦ã§ã™ã€‚ã“ã®ãƒšãƒ¼ã‚¸ã¯ã€QMK ã§ä½¿ãˆã‚‹ã‚­ãƒ¼ã‚³ãƒ¼ãƒ‰ã«ç›¸å½“ã™ã‚‹ã‚·ãƒ³ãƒœãƒ«ã«ã¤ã„ã¦è¨˜è¿°ã—ã¦ã„ã¾ã™ã€‚ + +ã“ã®ãƒšãƒ¼ã‚¸ã¯å‚ç…§ã®ã¿ã§ã™ã€‚ãれãžã‚Œã®ã‚­ãƒ¼ã®ç¨®é¡žæ¯Žã®ãƒªãƒ³ã‚¯å…ˆã®ãƒšãƒ¼ã‚¸ã«ã€ãれãžã‚Œã®ã‚­ãƒ¼ã®æ©Ÿèƒ½ã«ã¤ã„ã¦ã‚‚ã£ã¨è©³ç´°ã«è¨˜è¼‰ã—ã¦ã„ã¾ã™ã€‚ + +## 基本的ãªã‚­ãƒ¼ã‚³ãƒ¼ãƒ‰ :id=basic-keycodes + +[基本的ãªã‚­ãƒ¼ã‚³ãƒ¼ãƒ‰](ja/keycodes_basic.md) も見ã¦ãã ã•ã„。 + +?> 訳注: 以下ã®èª¬æ˜Žã¯ã€OS ã®ã‚­ãƒ¼ãƒœãƒ¼ãƒ‰é…列ã®è¨­å®šãŒã€ŒUSã€ã®å ´åˆã®ã‚‚ã®ã§ã™ã€‚OS ã®ã‚­ãƒ¼ãƒœãƒ¼ãƒ‰é…列ã®è¨­å®šãŒã€ŒJISã€ã®å ´åˆã€ä¸€éƒ¨ã®ã‚­ãƒ¼ã¯ä¸‹ã®è¡¨ã¨ç•°ãªã‚‹æ–‡å­—ãŒå…¥åŠ›ã•れã¾ã™ã€‚例ãˆã°ã€`KC_LBRC` ã¯ã€OS ã®ã‚­ãƒ¼ãƒœãƒ¼ãƒ‰é…列ã®è¨­å®šãŒ US ã§ã‚れã°ã€Œ`[` ã¾ãŸã¯ `{`ã€ãŒå…¥åŠ›ã•れã¾ã™ãŒã€JIS ã®å ´åˆã€Œ`@` ã¾ãŸã¯ `ã€ãŒå…¥åŠ›ã•れã¾ã™ã€‚ +?> ã“れã¯ã€OS ãŒã‚­ãƒ¼ãƒœãƒ¼ãƒ‰ã‹ã‚‰é€ä¿¡ã•れãŸã‚­ãƒ¼ã‚³ãƒ¼ãƒ‰ã‚’解釈ã™ã‚‹éš›ã«ã€ã‚­ãƒ¼ãƒœãƒ¼ãƒ‰é…列ã®è¨­å®šã«ã‚ˆã£ã¦å¯¾å¿œã™ã‚‹æ–‡å­—を変ãˆã‚‹ãŸã‚ã§ã™ã€‚ã‚‚ã—ã€OS ã®ã‚­ãƒ¼ãƒœãƒ¼ãƒ‰é…列ã®è¨­å®šã‚’ JIS ã«ã™ã‚‹å ´åˆã€`#include "keymap_jp.h"` ã‚’ `keymap.c` ã«è¿½åŠ ã™ã‚‹ã¨`JP_AT` ã®ã‚ˆã†ãª JIS キーボードã®ã‚­ãƒ¼ã‚­ãƒ£ãƒƒãƒ—ã«å¯¾å¿œã—ãŸã‚­ãƒ¼ã‚’指定ã§ãã¾ã™ã€‚ + +|キー |エイリアス |説明 |Windows |macOS |Linux1| +|-----------------------|------------------------------|-----------------------------------------|-------------|-------------|-----------------| +|`KC_NO` |`XXXXXXX` |ã“ã®ã‚­ãƒ¼ã‚’無視ã—ã¾ã™ (何もã—ã¾ã›ã‚“) 。 |*N/A* |*N/A* |*N/A* | +|`KC_TRANSPARENT` |`KC_TRNS`, `_______` | 次ã«ä½Žã„レイヤーã®éžé€éŽã‚­ãƒ¼ã‚’使ㆠ|*N/A* |*N/A* |*N/A* | +|`KC_A` | |`a` 㨠`A` |✔ |✔ |✔ | +|`KC_B` | |`b` 㨠`B` |✔ |✔ |✔ | +|`KC_C` | |`c` 㨠`C` |✔ |✔ |✔ | +|`KC_D` | |`d` 㨠`D` |✔ |✔ |✔ | +|`KC_E` | |`e` 㨠`E` |✔ |✔ |✔ | +|`KC_F` | |`f` 㨠`F` |✔ |✔ |✔ | +|`KC_G` | |`g` 㨠`G` |✔ |✔ |✔ | +|`KC_H` | |`h` 㨠`H` |✔ |✔ |✔ | +|`KC_I` | |`i` 㨠`I` |✔ |✔ |✔ | +|`KC_J` | |`j` 㨠`J` |✔ |✔ |✔ | +|`KC_K` | |`k` 㨠`K` |✔ |✔ |✔ | +|`KC_L` | |`l` 㨠`L` |✔ |✔ |✔ | +|`KC_M` | |`m` 㨠`M` |✔ |✔ |✔ | +|`KC_N` | |`n` 㨠`N` |✔ |✔ |✔ | +|`KC_O` | |`o` 㨠`O` |✔ |✔ |✔ | +|`KC_P` | |`p` 㨠`P` |✔ |✔ |✔ | +|`KC_Q` | |`q` 㨠`Q` |✔ |✔ |✔ | +|`KC_R` | |`r` 㨠`R` |✔ |✔ |✔ | +|`KC_S` | |`s` 㨠`S` |✔ |✔ |✔ | +|`KC_T` | |`t` 㨠`T` |✔ |✔ |✔ | +|`KC_U` | |`u` 㨠`U` |✔ |✔ |✔ | +|`KC_V` | |`v` 㨠`V` |✔ |✔ |✔ | +|`KC_W` | |`w` 㨠`W` |✔ |✔ |✔ | +|`KC_X` | |`x` 㨠`X` |✔ |✔ |✔ | +|`KC_Y` | |`y` 㨠`Y` |✔ |✔ |✔ | +|`KC_Z` | |`z` 㨠`Z` |✔ |✔ |✔ | +|`KC_1` | |`1` 㨠`!` |✔ |✔ |✔ | +|`KC_2` | |`2` 㨠`@` |✔ |✔ |✔ | +|`KC_3` | |`3` 㨠`#` |✔ |✔ |✔ | +|`KC_4` | |`4` 㨠`$` |✔ |✔ |✔ | +|`KC_5` | |`5` 㨠`%` |✔ |✔ |✔ | +|`KC_6` | |`6` 㨠`^` |✔ |✔ |✔ | +|`KC_7` | |`7` 㨠`&` |✔ |✔ |✔ | +|`KC_8` | |`8` 㨠`*` |✔ |✔ |✔ | +|`KC_9` | |`9` 㨠`(` |✔ |✔ |✔ | +|`KC_0` | |`0` 㨠`)` |✔ |✔ |✔ | +|`KC_ENTER` |`KC_ENT` |Return (Enter) |✔ |✔ |✔ | +|`KC_ESCAPE` |`KC_ESC` |Escape |✔ |✔ |✔ | +|`KC_BSPACE` |`KC_BSPC` |Delete (Backspace) |✔ |✔ |✔ | +|`KC_TAB` | |Tab |✔ |✔ |✔ | +|`KC_SPACE` |`KC_SPC` |Spacebar |✔ |✔ |✔ | +|`KC_MINUS` |`KC_MINS` |`-` 㨠`_` |✔ |✔ |✔ | +|`KC_EQUAL` |`KC_EQL` |`=` 㨠`+` |✔ |✔ |✔ | +|`KC_LBRACKET` |`KC_LBRC` |`[` 㨠`{` |✔ |✔ |✔ | +|`KC_RBRACKET` |`KC_RBRC` |`]` 㨠`}` |✔ |✔ |✔ | +|`KC_BSLASH` |`KC_BSLS` |`\` 㨠`\|` |✔ |✔ |✔ | +|`KC_NONUS_HASH` |`KC_NUHS` |Non-US `#` 㨠`~` |✔ |✔ |✔ | +|`KC_SCOLON` |`KC_SCLN` |`;` 㨠`:` |✔ |✔ |✔ | +|`KC_QUOTE` |`KC_QUOT` |`'` 㨠`"` |✔ |✔ |✔ | +|`KC_GRAVE` |`KC_GRV`, `KC_ZKHK` |` 㨠`~`, JIS 全角/åŠè§’ |✔ |✔ |✔ | +|`KC_COMMA` |`KC_COMM` |`,` 㨠`<` |✔ |✔ |✔ | +|`KC_DOT` | |`.` 㨠`>` |✔ |✔ |✔ | +|`KC_SLASH` |`KC_SLSH` |`/` 㨠`?` |✔ |✔ |✔ | +|`KC_CAPSLOCK` |`KC_CLCK`, `KC_CAPS` |Caps Lock |✔ |✔ |✔ | +|`KC_F1` | |F1 |✔ |✔ |✔ | +|`KC_F2` | |F2 |✔ |✔ |✔ | +|`KC_F3` | |F3 |✔ |✔ |✔ | +|`KC_F4` | |F4 |✔ |✔ |✔ | +|`KC_F5` | |F5 |✔ |✔ |✔ | +|`KC_F6` | |F6 |✔ |✔ |✔ | +|`KC_F7` | |F7 |✔ |✔ |✔ | +|`KC_F8` | |F8 |✔ |✔ |✔ | +|`KC_F9` | |F9 |✔ |✔ |✔ | +|`KC_F10` | |F10 |✔ |✔ |✔ | +|`KC_F11` | |F11 |✔ |✔ |✔ | +|`KC_F12` | |F12 |✔ |✔ |✔ | +|`KC_PSCREEN` |`KC_PSCR` |Print Screen |✔ |✔2|✔ | +|`KC_SCROLLLOCK` |`KC_SLCK`, `KC_BRMD` |Scroll Lock, ç”»é¢ã®æ˜Žã‚‹ã•ダウン (macOS) |✔ |✔2|✔ | +|`KC_PAUSE` |`KC_PAUS`, `KC_BRK`, `KC_BRMU`|Pause, ç”»é¢ã®æ˜Žã‚‹ã•アップ (macOS) |✔ |✔2|✔ | +|`KC_INSERT` |`KC_INS` |Insert |✔ | |✔ | +|`KC_HOME` | |Home |✔ |✔ |✔ | +|`KC_PGUP` | |Page Up |✔ |✔ |✔ | +|`KC_DELETE` |`KC_DEL` |Forward Delete |✔ |✔ |✔ | +|`KC_END` | |End |✔ |✔ |✔ | +|`KC_PGDOWN` |`KC_PGDN` |Page Down |✔ |✔ |✔ | +|`KC_RIGHT` |`KC_RGHT` |å³çŸ¢å° |✔ |✔ |✔ | +|`KC_LEFT` | |å·¦çŸ¢å° |✔ |✔ |✔ | +|`KC_DOWN` | |ä¸‹çŸ¢å° |✔ |✔ |✔ | +|`KC_UP` | |ä¸ŠçŸ¢å° |✔ |✔ |✔ | +|`KC_NUMLOCK` |`KC_NLCK` |テンキー Num Lock 㨠Clear |✔ |✔ |✔ | +|`KC_KP_SLASH` |`KC_PSLS` |テンキー `/` |✔ |✔ |✔ | +|`KC_KP_ASTERISK` |`KC_PAST` |テンキー `*` |✔ |✔ |✔ | +|`KC_KP_MINUS` |`KC_PMNS` |テンキー `-` |✔ |✔ |✔ | +|`KC_KP_PLUS` |`KC_PPLS` |テンキー `+` |✔ |✔ |✔ | +|`KC_KP_ENTER` |`KC_PENT` |テンキー Enter |✔ |✔ |✔ | +|`KC_KP_1` |`KC_P1` |テンキー `1` 㨠End |✔ |✔ |✔ | +|`KC_KP_2` |`KC_P2` |テンキー `2` ã¨ä¸‹çŸ¢å° |✔ |✔ |✔ | +|`KC_KP_3` |`KC_P3` |テンキー `3` 㨠Page Down |✔ |✔ |✔ | +|`KC_KP_4` |`KC_P4` |テンキー `4` ã¨å·¦çŸ¢å° |✔ |✔ |✔ | +|`KC_KP_5` |`KC_P5` |テンキー `5` |✔ |✔ |✔ | +|`KC_KP_6` |`KC_P6` |テンキー `6` ã¨å³çŸ¢å° |✔ |✔ |✔ | +|`KC_KP_7` |`KC_P7` |テンキー `7` 㨠Home |✔ |✔ |✔ | +|`KC_KP_8` |`KC_P8` |テンキー `8` ã¨ä¸ŠçŸ¢å° |✔ |✔ |✔ | +|`KC_KP_9` |`KC_P9` |テンキー `9` 㨠Page Up |✔ |✔ |✔ | +|`KC_KP_0` |`KC_P0` |テンキー `0` 㨠Insert |✔ |✔ |✔ | +|`KC_KP_DOT` |`KC_PDOT` |テンキー `.` 㨠Delete |✔ |✔ |✔ | +|`KC_NONUS_BSLASH` |`KC_NUBS` |Non-US `\` 㨠`\|` |✔ |✔ |✔ | +|`KC_APPLICATION` |`KC_APP` |アプリケーションキー (Windows コンテキストメニューキー) |✔ | |✔ | +|`KC_POWER` | |ã‚·ã‚¹ãƒ†ãƒ é›»æº | |✔3|✔ | +|`KC_KP_EQUAL` |`KC_PEQL` |テンキー `=` |✔ |✔ |✔ | +|`KC_F13` | |F13 |✔ |✔ |✔ | +|`KC_F14` | |F14 |✔ |✔ |✔ | +|`KC_F15` | |F15 |✔ |✔ |✔ | +|`KC_F16` | |F16 |✔ |✔ |✔ | +|`KC_F17` | |F17 |✔ |✔ |✔ | +|`KC_F18` | |F18 |✔ |✔ |✔ | +|`KC_F19` | |F19 |✔ |✔ |✔ | +|`KC_F20` | |F20 |✔ | |✔ | +|`KC_F21` | |F21 |✔ | |✔ | +|`KC_F22` | |F22 |✔ | |✔ | +|`KC_F23` | |F23 |✔ | |✔ | +|`KC_F24` | |F24 |✔ | |✔ | +|`KC_EXECUTE` |`KC_EXEC` |Execute | | |✔ | +|`KC_HELP` | |Help | | |✔ | +|`KC_MENU` | |Menu | | |✔ | +|`KC_SELECT` |`KC_SLCT` |Select | | |✔ | +|`KC_STOP` | |Stop | | |✔ | +|`KC_AGAIN` |`KC_AGIN` |Again | | |✔ | +|`KC_UNDO` | |アンドゥ | | |✔ | +|`KC_CUT` | |カット | | |✔ | +|`KC_COPY` | |コピー | | |✔ | +|`KC_PASTE` |`KC_PSTE` |ペースト | | |✔ | +|`KC_FIND` | |検索 | | |✔ | +|`KC__MUTE` | |ミュート | |✔ |✔ | +|`KC__VOLUP` | |音é‡ã‚¢ãƒƒãƒ— | |✔ |✔ | +|`KC__VOLDOWN` | |音é‡ãƒ€ã‚¦ãƒ³ | |✔ |✔ | +|`KC_LOCKING_CAPS` |`KC_LCAP` |Caps Lock ã®ãƒ­ãƒƒã‚¯ |✔ |✔ | | +|`KC_LOCKING_NUM` |`KC_LNUM` |Num Lock ã®ãƒ­ãƒƒã‚¯ |✔ |✔ | | +|`KC_LOCKING_SCROLL` |`KC_LSCR` |Scroll Lock ã®ãƒ­ãƒƒã‚¯ |✔ |✔ | | +|`KC_KP_COMMA` |`KC_PCMM` |テンキー `,` | | |✔ | +|`KC_KP_EQUAL_AS400` | |AS/400 キーボードã®ãƒ†ãƒ³ã‚­ãƒ¼ `=` | | | | +|`KC_INT1` |`KC_RO` |JIS `\` 㨠`_` |✔ | |✔ | +|`KC_INT2` |`KC_KANA` |JIS カタカナ/ã²ã‚‰ãŒãª |✔ | |✔ | +|`KC_INT3` |`KC_JYEN` |JIS `Â¥` 㨠`\|` |✔ | |✔ | +|`KC_INT4` |`KC_HENK` |JIS å¤‰æ› |✔ | |✔ | +|`KC_INT5` |`KC_MHEN` |JIS ç„¡å¤‰æ› |✔ | |✔ | +|`KC_INT6` | |JIS テンキー `,` | | |✔ | +|`KC_INT7` | |International 7 | | | | +|`KC_INT8` | |International 8 | | | | +|`KC_INT9` | |International 9 | | | | +|`KC_LANG1` |`KC_HAEN` |ãƒãƒ³ã‚°ãƒ«/英語 | | |✔ | +|`KC_LANG2` |`KC_HANJ` |韓文漢字 | | |✔ | +|`KC_LANG3` | |JIS カタカナ | | |✔ | +|`KC_LANG4` | |JIS ã²ã‚‰ãŒãª | | |✔ | +|`KC_LANG5` | |JIS 全角/åŠè§’ | | |✔ | +|`KC_LANG6` | |Language 6 | | | | +|`KC_LANG7` | |Language 7 | | | | +|`KC_LANG8` | |Language 8 | | | | +|`KC_LANG9` | |Language 9 | | | | +|`KC_ALT_ERASE` |`KC_ERAS` |Alternate Erase | | | | +|`KC_SYSREQ` | |SysReq/Attention | | | | +|`KC_CANCEL` | |Cancel | | | | +|`KC_CLEAR` |`KC_CLR` |Clear | | |✔ | +|`KC_PRIOR` | |Prior | | | | +|`KC_RETURN` | |Return | | | | +|`KC_SEPARATOR` | |Separator | | | | +|`KC_OUT` | |Out | | | | +|`KC_OPER` | |Oper | | | | +|`KC_CLEAR_AGAIN` | |Clear/Again | | | | +|`KC_CRSEL` | |CrSel/Props | | | | +|`KC_EXSEL` | |ExSel | | | | +|`KC_LCTRL` |`KC_LCTL` |å·¦ Control |✔ |✔ |✔ | +|`KC_LSHIFT` |`KC_LSFT` |å·¦ Shift |✔ |✔ |✔ | +|`KC_LALT` |`KC_LOPT` |å·¦ Alt (Option) |✔ |✔ |✔ | +|`KC_LGUI` |`KC_LCMD`, `KC_LWIN` |å·¦ GUI (Windows/Command/Meta key) |✔ |✔ |✔ | +|`KC_RCTRL` |`KC_RCTL` |å³ Control |✔ |✔ |✔ | +|`KC_RSHIFT` |`KC_RSFT` |å³ Shift |✔ |✔ |✔ | +|`KC_RALT` |`KC_ROPT`, `KC_ALGR` |å³ Alt (Option/AltGr) |✔ |✔ |✔ | +|`KC_RGUI` |`KC_RCMD`, `KC_RWIN` |å³ GUI (Windows/Command/Meta key) |✔ |✔ |✔ | +|`KC_SYSTEM_POWER` |`KC_PWR` |システム電æºã‚ªãƒ• |✔ |✔3|✔ | +|`KC_SYSTEM_SLEEP` |`KC_SLEP` |システムスリープ |✔ |✔3|✔ | +|`KC_SYSTEM_WAKE` |`KC_WAKE` |システムスリープ解除 | |✔3|✔ | +|`KC_AUDIO_MUTE` |`KC_MUTE` |ミュート |✔ |✔ |✔ | +|`KC_AUDIO_VOL_UP` |`KC_VOLU` |音é‡ã‚¢ãƒƒãƒ— |✔ |✔4|✔ | +|`KC_AUDIO_VOL_DOWN` |`KC_VOLD` |音é‡ãƒ€ã‚¦ãƒ³ |✔ |✔4|✔ | +|`KC_MEDIA_NEXT_TRACK` |`KC_MNXT` |æ¬¡ã®æ›²ã¸ |✔ |✔5|✔ | +|`KC_MEDIA_PREV_TRACK` |`KC_MPRV` |å‰ã®æ›²ã¸ |✔ |✔5|✔ | +|`KC_MEDIA_STOP` |`KC_MSTP` |å†ç”Ÿåœæ­¢ |✔ | |✔ | +|`KC_MEDIA_PLAY_PAUSE` |`KC_MPLY` |å†ç”Ÿ/ä¸€æ™‚åœæ­¢ |✔ |✔ |✔ | +|`KC_MEDIA_SELECT` |`KC_MSEL` |Media Player èµ·å‹• |✔ | |✔ | +|`KC_MEDIA_EJECT` |`KC_EJCT` |イジェクト | |✔ |✔ | +|`KC_MAIL` | |メール起動 |✔ | |✔ | +|`KC_CALCULATOR` |`KC_CALC` |é›»å“èµ·å‹• |✔ | |✔ | +|`KC_MY_COMPUTER` |`KC_MYCM` |マイコンピュータを開ã |✔ | |✔ | +|`KC_WWW_SEARCH` |`KC_WSCH` |ブラウザ検索 |✔ | |✔ | +|`KC_WWW_HOME` |`KC_WHOM` |ãƒ–ãƒ©ã‚¦ã‚¶ãƒ›ãƒ¼ãƒ ç”»é¢ |✔ | |✔ | +|`KC_WWW_BACK` |`KC_WBAK` |ブラウザ戻る |✔ | |✔ | +|`KC_WWW_FORWARD` |`KC_WFWD` |ブラウザ進む |✔ | |✔ | +|`KC_WWW_STOP` |`KC_WSTP` |ブラウザ読ã¿è¾¼ã¿ä¸­æ­¢ |✔ | |✔ | +|`KC_WWW_REFRESH` |`KC_WREF` |ブラウザå†èª­ã¿è¾¼ã¿ |✔ | |✔ | +|`KC_WWW_FAVORITES` |`KC_WFAV` |ãƒ–ãƒ©ã‚¦ã‚¶ãŠæ°—ã«å…¥ã‚Š |✔ | |✔ | +|`KC_MEDIA_FAST_FORWARD`|`KC_MFFD` |æ¬¡ã®æ›²ã¸ |✔ |✔5|✔ | +|`KC_MEDIA_REWIND` |`KC_MRWD` |å‰ã®æ›²ã¸ |✔6|✔5|✔ | +|`KC_BRIGHTNESS_UP` |`KC_BRIU` |ç”»é¢ã®æ˜Žã‚‹ã•アップ |✔ |✔ |✔ | +|`KC_BRIGHTNESS_DOWN` |`KC_BRID` |ç”»é¢ã®æ˜Žã‚‹ã•ダウン |✔ |✔ |✔ | + +1. Linux カーãƒãƒ« HID ドライãƒã¯ [ã»ã¼å…¨ã¦ã®ã‚­ãƒ¼ã‚³ãƒ¼ãƒ‰](https://github.com/torvalds/linux/blob/master/drivers/hid/hid-input.c) を識別ã—ã¾ã™ãŒã€ãƒ‡ãƒ•ォルトã®é–¢é€£ä»˜ã‘㯠デスクトップ環境/ウィンドウマãƒãƒ¼ã‚¸ãƒ£ã«ã‚ˆã£ã¦æ±ºã¾ã‚Šã¾ã™ã€‚
+2. F13-F15 ã¨ã—ã¦å–り扱ã‚れã¾ã™ã€‚
+3. ç´„3秒間押ã—ã¦ã„ã‚‹ã¨ã€ãƒ—ロンプトãŒè¡¨ç¤ºã•れã¾ã™ã€‚
+4. Shift 㨠Option を押ã—ã¦ã„ã‚‹ã¨ã€ãƒœãƒªãƒ¥ãƒ¼ãƒ ãƒ¬ãƒ™ãƒ«ã®ç´°ã‹ã„コントロールãŒå¯èƒ½ã«ãªã‚Šã¾ã™ã€‚
+5. iTunes ã§ã¯ã€ã‚¿ãƒƒãƒ—ã™ã‚‹ã¨1曲全体ãŒã‚¹ã‚­ãƒƒãƒ—ã•れã¾ã™ã€‚押ã—ã¦ã„ã‚‹ã¨æ›²ã®ä¸­ã§æ—©é€ã‚Š/å·»ãæˆ»ã—ã«ãªã‚Šã¾ã™ã€‚
+6. Windows Media Player ã¯å·»ã戻ã—キーを識別ã—ã¾ã›ã‚“ãŒã€VLC ã§ã¯æ—©é€ã‚Š/å·»ãæˆ»ã—キーã§å†ç”Ÿé€Ÿåº¦ãŒå¤‰æ›´ã•れã¾ã™ã€‚ + +## Quantum キーコード :id=quantum-keycodes + +[Quantum キーコード](ja/quantum_keycodes.md#qmk-keycodes) も見ã¦ãã ã•ã„。 + +|キー |エイリアス |説明 | +|--------------|-----------|---------------------------------------------------------| +|`RESET` | |ファームウエア書ãè¾¼ã¿ã®ãŸã‚ã«ã‚­ãƒ¼ãƒœãƒ¼ãƒ‰ã‚’ブートローダーモードã«ã—ã¾ã™ | +|`DEBUG` | |デãƒãƒƒã‚°ãƒ¢ãƒ¼ãƒ‰ã‚’切り替ãˆã¾ã™ | +|`EEPROM_RESET`|`EEP_RST` |キーボード㮠EEPROM (䏿®ç™ºãƒ¡ãƒ¢ãƒª) ã‚’å†åˆæœŸåŒ–ã—ã¾ã™ | + +## オーディオキー :id=audio-keys + +[オーディオ](ja/feature_audio.md) も見ã¦ãã ã•ã„。 + +|キー |エイリアス |説明 | +|----------------|------------|---------------------------------------| +|`AU_ON` | |オーディオモードオン | +|`AU_OFF` | |オーディオモードオフ | +|`AU_TOG` | |オーディオモードを切り替ãˆã¾ã™ | +|`CLICKY_TOGGLE` |`CK_TOGG` |オーディオクリックモードを切り替ãˆã¾ã™ | +|`CLICKY_UP` |`CK_UP` |クリック音ã®å‘¨æ³¢æ•°ã‚’増やã—ã¾ã™ | +|`CLICKY_DOWN` |`CK_DOWN` |クリック音ã®å‘¨æ³¢æ•°ã‚’減らã—ã¾ã™ | +|`CLICKY_RESET` |`CK_RST` |周波数をデフォルトã«å†è¨­å®šã—ã¾ã™ | +|`MU_ON` | |音楽モードをオンã«ã—ã¾ã™ | +|`MU_OFF` | |音楽モードをオフã«ã—ã¾ã™ | +|`MU_TOG` | |音楽モードを切り替ãˆã¾ã™ | +|`MU_MOD` | |音楽モードを循環ã—ã¾ã™ | + +## ãƒãƒƒã‚¯ãƒ©ã‚¤ãƒˆ :id=backlighting + +[ãƒãƒƒã‚¯ãƒ©ã‚¤ãƒˆ](ja/feature_backlight.md) も見ã¦ãã ã•ã„。 + +|キー |説明 | +|---------|-------------------------------------| +|`BL_TOGG`|ãƒãƒƒã‚¯ãƒ©ã‚¤ãƒˆã‚’オンã‚ã‚‹ã„ã¯ã‚ªãƒ•ã«ã™ã‚‹ | +|`BL_STEP`|ãƒãƒƒã‚¯ãƒ©ã‚¤ãƒˆãƒ¬ãƒ™ãƒ«ã‚’循環ã™ã‚‹ | +|`BL_ON` |ãƒãƒƒã‚¯ãƒ©ã‚¤ãƒˆã‚’最大è¼åº¦ã«ã‚»ãƒƒãƒˆã™ã‚‹ | +|`BL_OFF` |ãƒãƒƒã‚¯ãƒ©ã‚¤ãƒˆã‚’オフã«ã™ã‚‹ | +|`BL_INC` |ãƒãƒƒã‚¯ãƒ©ã‚¤ãƒˆã®ãƒ¬ãƒ™ãƒ«ã‚’上ã’ã‚‹ | +|`BL_DEC` |ãƒãƒƒã‚¯ãƒ©ã‚¤ãƒˆã®ãƒ¬ãƒ™ãƒ«ã‚’下ã’ã‚‹ | +|`BL_BRTG`|ãƒãƒƒã‚¯ãƒ©ã‚¤ãƒˆã®æ˜Žæ»…動作を切り替ãˆã‚‹ | + +## ブートマジック :id=bootmagic + +[ブートマジック](ja/feature_bootmagic.md) も見ã¦ãã ã•ã„。 + +| キー | エイリアス| 説明 | +|------------------------------------|-----------|-------------------------------------------------------| +| `MAGIC_SWAP_CONTROL_CAPSLOCK` | `CL_SWAP` | Caps Lock ã¨å·¦ Control ã®å…¥ã‚Œæ›¿ãˆ | +| `MAGIC_UNSWAP_CONTROL_CAPSLOCK` | `CL_NORM` | Caps Lock ã¨å·¦ Control ã®å…¥ã‚Œæ›¿ãˆã®è§£é™¤ | +| `MAGIC_CAPSLOCK_TO_CONTROL` | `CL_CTRL` | Caps Lock ã‚’ Control ã¨ã—ã¦æ‰±ã† | +| `MAGIC_UNCAPSLOCK_TO_CONTROL` | `CL_CAPS` | Caps Lock ã‚’ Control ã¨ã—ã¦æ‰±ã†ã“ã¨ã‚’æ­¢ã‚ã‚‹ | +| `MAGIC_SWAP_LCTL_LGUI` | `LCG_SWP` | å·¦ Control 㨠GUI ã®å…¥ã‚Œæ›¿ãˆ | +| `MAGIC_UNSWAP_LCTL_LGUI` | `LCG_NRM` | å·¦ Control 㨠GUI ã®å…¥ã‚Œæ›¿ãˆã‚’解除 | +| `MAGIC_SWAP_RCTL_RGUI` | `RCG_SWP` | å³ Control 㨠GUI ã®å…¥ã‚Œæ›¿ãˆ | +| `MAGIC_UNSWAP_RCTL_RGUI` | `RCG_NRM` | å³ Control 㨠GUI ã®å…¥ã‚Œæ›¿ãˆã‚’解除 | +| `MAGIC_SWAP_CTL_GUI` | `CG_SWAP` | 両å´ã® Control 㨠GUI ã®å…¥ã‚Œæ›¿ãˆ | +| `MAGIC_UNSWAP_CTL_GUI` | `CG_NORM` | 両å´ã® Control 㨠GUI ã®å…¥ã‚Œæ›¿ãˆã‚’解除 | +| `MAGIC_TOGGLE_CTL_GUI` | `CG_TOGG` | 両å´ã® Control 㨠GUI ã®å…¥ã‚Œæ›¿ãˆã®åˆ‡ã‚Šæ›¿ãˆ | +| `MAGIC_SWAP_LALT_LGUI` | `LAG_SWP` | å·¦ Alt 㨠GUI ã®å…¥ã‚Œæ›¿ãˆ | +| `MAGIC_UNSWAP_LALT_LGUI` | `LAG_NRM` | å·¦ Alt 㨠GUI ã®å…¥ã‚Œæ›¿ãˆã‚’解除 | +| `MAGIC_SWAP_RALT_RGUI` | `RAG_SWP` | å³ Alt 㨠GUI ã®å…¥ã‚Œæ›¿ãˆ | +| `MAGIC_UNSWAP_RALT_RGUI` | `RAG_NRM` | å³ Alt 㨠GUI ã®å…¥ã‚Œæ›¿ãˆã‚’解除 | +| `MAGIC_SWAP_ALT_GUI` | `AG_SWAP` | 両å´ã® Alt 㨠GUI ã®å…¥ã‚Œæ›¿ãˆ | +| `MAGIC_UNSWAP_ALT_GUI` | `AG_NORM` | 両å´ã® Alt 㨠GUI ã®å…¥ã‚Œæ›¿ãˆã‚’解除 | +| `MAGIC_TOGGLE_ALT_GUI` | `AG_TOGG` | 両å´ã® Alt 㨠GUI ã®å…¥ã‚Œæ›¿ãˆã®åˆ‡ã‚Šæ›¿ãˆ | +| `MAGIC_NO_GUI` | `GUI_OFF` | GUI キーを無効ã«ã™ã‚‹ | +| `MAGIC_UNNO_GUI` | `GUI_ON` | GUI キーを有効ã«ã™ã‚‹ | +| `MAGIC_SWAP_GRAVE_ESC` | `GE_SWAP` | ` ã¨ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—ã®å…¥ã‚Œæ›¿ãˆ | +| `MAGIC_UNSWAP_GRAVE_ESC` | `GE_NORM` | ` ã¨ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—ã®å…¥ã‚Œæ›¿ãˆã‚’解除 | +| `MAGIC_SWAP_BACKSLASH_BACKSPACE` | `BS_SWAP` | `\` 㨠Backspace を入れ替㈠| +| `MAGIC_UNSWAP_BACKSLASH_BACKSPACE` | `BS_NORM` | `\` 㨠Backspace ã®å…¥ã‚Œæ›¿ãˆã‚’解除ã™ã‚‹ | +| `MAGIC_HOST_NKRO` | `NK_ON` | N キーロールオーãƒãƒ¼ã‚’有効ã«ã™ã‚‹ | +| `MAGIC_UNHOST_NKRO` | `NK_OFF` | N キーロールオーãƒãƒ¼ã‚’無効ã«ã™ã‚‹ | +| `MAGIC_TOGGLE_NKRO` | `NK_TOGG` | N キーロールオーãƒãƒ¼ã®æœ‰åŠ¹ãƒ»ç„¡åŠ¹ã‚’åˆ‡ã‚Šæ›¿ãˆ | +| `MAGIC_EE_HANDS_LEFT` | `EH_LEFT` | 分割キーボードã®ãƒžã‚¹ã‚¿ãƒ¼å´ã‚’左手ã«è¨­å®š(`EE_HANDS` 用) | +| `MAGIC_EE_HANDS_RIGHT` | `EH_RGHT` | 分割キーボードã®ãƒžã‚¹ã‚¿ãƒ¼å´ã‚’峿‰‹ã«è¨­å®š(`EE_HANDS` 用) | + +## Bluetooth :id=bluetooth + +[Bluetooth](ja/feature_bluetooth.md) も見ã¦ãã ã•ã„。 + + +|キー |説明 | +|----------|--------------------------------------| +|`OUT_AUTO`|USB 㨠Bluetooth を自動的ã«åˆ‡ã‚Šæ›¿ãˆã‚‹ | +|`OUT_USB` |USB ã®ã¿ | +|`OUT_BT` |Bluetooth ã®ã¿ | + +## 動的マクロ :id=dynamic-macros + +[動的マクロ](ja/feature_dynamic_macros.md) も見ã¦ãã ã•ã„。 + +|キー |エイリアス |説明 | +|-----------------|---------|-------------------------------------| +|`DYN_REC_START1` |`DM_REC1`|マクロ 1 ã®è¨˜éŒ²ã‚’é–‹å§‹ã—ã¾ã™ | +|`DYN_REC_START2` |`DM_REC2`|マクロ 2 ã®è¨˜éŒ²ã‚’é–‹å§‹ã—ã¾ã™ | +|`DYN_MACRO_PLAY1`|`DM_PLY1`|マクロ 1 ã‚’å†ç”Ÿã—ã¾ã™ | +|`DYN_MACRO_PLAY2`|`DM_PLY2`|マクロ 2 ã‚’å†ç”Ÿã—ã¾ã™ | +|`DYN_REC_STOP` |`DM_RSTP`|ç¾åœ¨è¨˜éŒ²ä¸­ã®ãƒžã‚¯ãƒ­ã®è¨˜éŒ²ã‚’終了ã—ã¾ã™ | + +## グレイブエスケープ :id=grave-escape + +[グレイブエスケープ](ja/feature_grave_esc.md) も見ã¦ãã ã•ã„。 + +|キー |エイリアス |説明 | +|-----------|---------|------------------------------------------------------------------| +|`GRAVE_ESC`|`KC_GESC`|押ã•れãŸå ´åˆã« Escape。Shift ã‚ã‚‹ã„㯠GUI ãŒæŠ¼ã•れãŸã¾ã¾ã®å ´åˆã¯ `| + +## キーロック :id=key-lock + +[キーロック](ja/feature_key_lock.md) も見ã¦ãã ã•ã„。 + +|キー |説明 | +|---------|--------------------------------------------------| +|`KC_LOCK`|キーãŒå†ã³æŠ¼ã•れるã¾ã§æ¬¡ã®ã‚­ãƒ¼ã‚’押ã—ãŸã¾ã¾ã«ã—ã¾ã™ | + +## レイヤー切り替㈠:id=layer-switching + +[レイヤー切り替ãˆ](ja/feature_layers.md#switching-and-toggling-layers) も見ã¦ãã ã•ã„。 + +|キー |説明 | +|----------------|--------------------------------------------------------------------------------------------------------------------------------------| +|`DF(layer)` |指定ã•れãŸãƒ¬ã‚¤ãƒ¤ãƒ¼ã‚’基本 (デフォルト) レイヤーã«è¨­å®šã™ã‚‹ | +|`MO(layer)` |キーを押ã—ãŸã‚‰ä¸€æ™‚的㫠`layer` を切り替ãˆã‚‹ã€‚(切り替ãˆå…ˆã®ãƒ¬ã‚¤ãƒ¤ãƒ¼ã«ã¯ `KC_TRNS` ãŒå¿…è¦ã§ã™) | +|`OSL(layer)` |次ã®ã‚­ãƒ¼ãŒæŠ¼ã•れるã¾ã§ã€ä¸€æ™‚çš„ã«ãƒ¬ã‚¤ãƒ¤ãƒ¼ã‚’アクティブã«ã—ã¾ã™ã€‚詳細㯠[ワンショットキー](ja/one_shot_keys.md) ã®ã¨ãŠã‚Šã€‚ | +|`LM(layer, mod)`|`mod` ãŒã‚¢ã‚¯ãƒ†ã‚£ãƒ–ãªçŠ¶æ…‹ã§ (MO ã®ã‚ˆã†ã«) 一時的ã«ãƒ¬ã‚¤ãƒ¤ãƒ¼ã‚’アクティブã«ã—ã¾ã™ã€‚ã“ã“ã§ã¯ã€`mod` 㯠mods_bit ã®ã“ã¨ã§ã™ã€‚Mod ã«ã¤ã„ã¦ã¯ [ã“ã¡ã‚‰](ja/mod_tap.md) ã§è¦‹ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚実装例: `LM(LAYER_1, MOD_LALT)` | +|`LT(layer, kc)` |押ã—ã¦ã„る㨠`layer` をオンã«ã—ã€ã‚¿ãƒƒãƒ—ã™ã‚‹ã¨ `kc` ã«ãªã‚Šã¾ã™ã€‚ | +|`TG(layer)` |`layer` ã®ã‚ªãƒ³ãƒ»ã‚ªãƒ•を切り替㈠| +|`TO(layer)` |`layer` をオンã«ã—ã¦ã€ãƒ‡ãƒ•ォルトレイヤーを除ãä»–ã®ãƒ¬ã‚¤ãƒ¤ãƒ¼ã‚’オフã«ã—ã¾ã™ã€‚ | +|`TT(layer)` |複数回タップã—ãªã„é™ã‚Š `MO` ã®ã‚ˆã†ã«å‹•作ã—ã€è¤‡æ•°å›žã‚¿ãƒƒãƒ—ã™ã‚‹ã¨ `layer` をオンã«ãƒˆã‚°ãƒ«ã—ã¾ã™ã€‚ | + +## リーダーキー :id=leader-key + +[リーダーキー](ja/feature_leader_key.md) も見ã¦ãã ã•ã„。 + +|キー |説明 | +|---------|-------------------------------| +|`KC_LEAD`|リーダーキーã®ã‚·ãƒ¼ã‚±ãƒ³ã‚¹ã‚’é–‹å§‹ | + +## マウスキー :id=mouse-keys + +[マウスキー](ja/feature_mouse_keys.md) も見ã¦ãã ã•ã„。 + +|キー |エイリアス |説明 | +|----------------|---------|-------------------------| +|`KC_MS_UP` |`KC_MS_U`|マウスカーソルを上ã«ç§»å‹• | +|`KC_MS_DOWN` |`KC_MS_D`|マウスカーソルを下ã«ç§»å‹• | +|`KC_MS_LEFT` |`KC_MS_L`|マウスカーソルを左ã«ç§»å‹• | +|`KC_MS_RIGHT` |`KC_MS_R`|マウスカーソルをå³ã«ç§»å‹• | +|`KC_MS_BTN1` |`KC_BTN1`|ボタン1を押㙠| +|`KC_MS_BTN2` |`KC_BTN2`|ボタン2を押㙠| +|`KC_MS_BTN3` |`KC_BTN3`|ボタン3を押㙠| +|`KC_MS_BTN4` |`KC_BTN4`|ボタン4を押㙠| +|`KC_MS_BTN5` |`KC_BTN5`|ボタン5を押㙠| +|`KC_MS_WH_UP` |`KC_WH_U`|ホイールをå‘ã“ã†å´ã«å›žè»¢ | +|`KC_MS_WH_DOWN` |`KC_WH_D`|ホイールを手å‰å´ã«å›žè»¢ | +|`KC_MS_WH_LEFT` |`KC_WH_L`|ホイールを左ã«å€’ã™ | +|`KC_MS_WH_RIGHT`|`KC_WH_R`|ホイールをå³ã«å€’ã™ | +|`KC_MS_ACCEL0` |`KC_ACL0`|速度を0ã«è¨­å®š | +|`KC_MS_ACCEL1` |`KC_ACL1`|速度を1ã«è¨­å®š | +|`KC_MS_ACCEL2` |`KC_ACL2`|速度を2ã«è¨­å®š | + +## 修飾キー :id=modifiers + +[修飾キー](ja/feature_advanced_keycodes.md#modifier-keys) も見ã¦ãã ã•ã„。 + +| キー | エイリアス | 説明 | +|------------|---------------------------------|---------------------------------------------------------------| +| `LCTL(kc)` | `C(kc)` | å·¦ Control を押ã—ãªãŒã‚‰ `kc` を押ã—ã¾ã™ã€‚ | +| `LSFT(kc)` | `S(kc)` | å·¦ Shift を押ã—ãªãŒã‚‰ `kc` を押ã—ã¾ã™ã€‚ | +| `LALT(kc)` | `A(kc)`, `LOPT(kc)` | å·¦ Alt を押ã—ãªãŒã‚‰ `kc`を押ã—ã¾ã™ã€‚ | +| `LGUI(kc)` | `G(kc)`, `LCMD(kc)`, `LWIN(kc)` | å·¦ GUI を押ã—ãªãŒã‚‰ `kc` を押ã—ã¾ã™ã€‚ | +| `RCTL(kc)` | | å³ Control を押ã—ãªãŒã‚‰ `kc` を押ã—ã¾ã™ã€‚ | +| `RSFT(kc)` | | å³ Shift を押ã—ãªãŒã‚‰ `kc` を押ã—ã¾ã™ã€‚ | +| `RALT(kc)` | `ROPT(kc)`, `ALGR(kc)` | å³ Alt (AltGr) を押ã—ãªãŒã‚‰ `kc` を押ã—ã¾ã™ã€‚ | +| `RGUI(kc)` | `RCMD(kc)`, `LWIN(kc)` | å³ GUI を押ã—ãªãŒã‚‰ `kc` を押ã—ã¾ã™ã€‚ | +| `SGUI(kc)` | `SCMD(kc)`, `SWIN(kc)` | å·¦ Shift 㨠GUI を押ã—ãªãŒã‚‰ `kc` を押ã—ã¾ã™ã€‚ | +| `LCA(kc)` | | å·¦ Control 㨠Alt を押ã—ãªãŒã‚‰ `kc` を押ã—ã¾ã™ã€‚ | +| `LSA(kc)` | | å·¦ Shift 㨠Alt を押ã—ãªãŒã‚‰ `kc` を押ã—ã¾ã™ã€‚ | +| `RSA(kc)` |`SAGR(kc)` | å³ Shift 㨠Alt (AltGr) を押ã—ãªãŒã‚‰ `kc` を押ã—ã¾ã™ã€‚ | +| `RCS(kc)` | | å³ Control 㨠Shift を押ã—ãªãŒã‚‰ `kc` を押ã—ã¾ã™ã€‚ | +| `LCAG(kc)` | | å·¦ Controlã€Altã€GUI を押ã—ãªãŒã‚‰ `kc` を押ã—ã¾ã™ã€‚ | +| `MEH(kc)` | | å·¦ Controlã€Shiftã€Alt を押ã—ãªãŒã‚‰ `kc` を押ã—ã¾ã™ã€‚ | +| `HYPR(kc)` | | å·¦ Controlã€Shiftã€Altã€GUI を押ã—ãªãŒã‚‰ `kc` を押ã—ã¾ã™ã€‚ | +| `KC_MEH` | | å·¦ Controlã€Shiftã€Alt | +| `KC_HYPR` | | å·¦ Controlã€Shiftã€Altã€GUI | + + +## モッドタップキー :id=mod-tap-keys + +[モッドタップキー](ja/mod_tap.md) も見ã¦ãã ã•ã„。 + +|キー |エイリアス | 説明 | +|--------------|-------------------------------------------------------------------|------------------------------------------------------------------------| +| `MT(mod, kc)`| |押ã—ãŸã¾ã¾ã®å ´åˆã¯ `mod` ã€ã‚¿ãƒƒãƒ—ã—ãŸå ´åˆã¯ `kc` | +| `LCTL_T(kc)` | `CTL_T(kc)` | 押ã—ãŸã¾ã¾ã®å ´åˆã¯å·¦ Controlã€ã‚¿ãƒƒãƒ—ã—ãŸå ´åˆã¯ `kc` | +| `LSFT_T(kc)` | `SFT_T(kc)` | 押ã—ãŸã¾ã¾ã®å ´åˆã¯å·¦ Shiftã€ã‚¿ãƒƒãƒ—ã—ãŸå ´åˆã¯ `kc` | +| `LALT_T(kc)` | `LOPT_T(kc)`, `ALT_T(kc)`, `OPT_T(kc)` | 押ã—ãŸã¾ã¾ã®å ´åˆã¯å·¦ Altã€ã‚¿ãƒƒãƒ—ã—ãŸå ´åˆã¯ `kc` | +| `LGUI_T(kc)` | `LCMD_T(kc)`, `LWIN_T(kc)`, `GUI_T(kc)`, `CMD_T(kc)`, `WIN_T(kc)` | 押ã—ãŸã¾ã¾ã®å ´åˆã¯å·¦ GUIã€ã‚¿ãƒƒãƒ—ã—ãŸå ´åˆã¯ `kc` | +| `RCTL_T(kc)` | | 押ã—ãŸã¾ã¾ã®å ´åˆã¯å³ Controlã€ã‚¿ãƒƒãƒ—ã—ãŸå ´åˆã¯ `kc` | +| `RSFT_T(kc)` | | 押ã—ãŸã¾ã¾ã®å ´åˆã¯å³ Shiftã€ã‚¿ãƒƒãƒ—ã—ãŸå ´åˆã¯ `kc` | +| `RALT_T(kc)` | `ROPT_T(kc)`, `ALGR_T(kc)` | 押ã—ãŸã¾ã¾ã®å ´åˆã¯å³ Alt (AltGr) ã€ã‚¿ãƒƒãƒ—ã—ãŸå ´åˆã¯ `kc` | +| `RGUI_T(kc)` | `RCMD_T(kc)`, `RWIN_T(kc)` | 押ã—ãŸã¾ã¾ã®å ´åˆã¯å³ GUIã€ã‚¿ãƒƒãƒ—ã—ãŸå ´åˆã¯ `kc` | +| `SGUI_T(kc)` | `SCMD_T(kc)`, `SWIN_T(kc)` | 押ã—ãŸã¾ã¾ã®å ´åˆã¯å·¦ Shift 㨠GUIã€ã‚¿ãƒƒãƒ—ã—ãŸå ´åˆã¯ `kc` | +| `LCA_T(kc)` | | 押ã—ãŸã¾ã¾ã®å ´åˆã¯å·¦ Control 㨠Altã€ã‚¿ãƒƒãƒ—ã—ãŸå ´åˆã¯ `kc` | +| `LSA_T(kc)` | | 押ã—ãŸã¾ã¾ã®å ´åˆã¯å·¦ Shift 㨠Altã€ã‚¿ãƒƒãƒ—ã—ãŸå ´åˆã¯ `kc` | +| `RSA_T(kc)` |`SAGR_T(kc)` | 押ã—ãŸã¾ã¾ã®å ´åˆã¯å³ Shift 㨠Alt (AltGr) ã€ã‚¿ãƒƒãƒ—ã—ãŸå ´åˆã¯ `kc` | +| `RCS_T(kc)` | | 押ã—ãŸã¾ã¾ã®å ´åˆã¯å³ Control 㨠Shiftã€ã‚¿ãƒƒãƒ—ã—ãŸå ´åˆã¯ `kc` | +| `LCAG_T(kc)` | | 押ã—ãŸã¾ã¾ã®å ´åˆã¯å·¦ Controlã€Altã€GUIã€ã‚¿ãƒƒãƒ—ã—ãŸå ´åˆã¯ `kc` | +| `RCAG_T(kc)` | | 押ã—ãŸã¾ã¾ã®å ´åˆã¯å³ Controlã€Altã€GUIã€ã‚¿ãƒƒãƒ—ã—ãŸå ´åˆã¯ `kc` | +| `C_S_T(kc)` | | 押ã—ãŸã¾ã¾ã®å ´åˆã¯å·¦ Control 㨠Shiftã€ã‚¿ãƒƒãƒ—ã—ãŸå ´åˆã¯ `kc` | +| `MEH_T(kc)` | | 押ã—ãŸã¾ã¾ã®å ´åˆã¯å·¦ Controlã€Shiftã€Altã€ã‚¿ãƒƒãƒ—ã—ãŸå ´åˆã¯ `kc` | +| `HYPR_T(kc)` | `ALL_T(kc)` | 押ã—ãŸã¾ã¾ã®å ´åˆã¯å·¦ Controlã€Shiftã€Altã€GUIã€ã‚¿ãƒƒãƒ—ã—ãŸå ´åˆã¯ `kc` - より詳ã—ãã¯[ã“ã“](https://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/)を見ã¦ãã ã•ã„ | + +## RGB ライト :id=rgb-lighting + +[RGB ライト](ja/feature_rgblight.md) も見ã¦ãã ã•ã„。 + +|キー |エイリアス|説明 | +|-------------------|----------|---------------------------------------------------------------------| +|`RGB_TOG` | |RGB ライトã®ã‚ªãƒ³ãƒ»ã‚ªãƒ•を切り替㈠| +|`RGB_MODE_FORWARD` |`RGB_MOD` |RGB モードを順é€ã‚Šã§å¤‰æ›´ã—ã€Shift を押ã—ã¦ã„ã‚‹ã¨é€†é †ã§å¤‰æ›´ã—ã¾ã™ã€‚ | +|`RGB_MODE_REVERSE` |`RGB_RMOD`|RGB モードを逆順ã§å¤‰æ›´ã—ã€Shift を押ã—ã¦ã„ã‚‹ã¨é †é€ã‚Šã§å¤‰æ›´ã—ã¾ã™ã€‚ | +|`RGB_HUI` | |色相 (HUE) を増加ã•ã›ã€Shift を押ã—ã¦ã„ã‚‹ã¨æ¸›å°‘ã•ã›ã¾ã™ã€‚ | +|`RGB_HUD` | |色相 (HUE) を減少ã•ã›ã€Shift を押ã—ã¦ã„ã‚‹ã¨å¢—加ã•ã›ã¾ã™ã€‚ | +|`RGB_SAI` | |彩度 (SAT) を増加ã•ã›ã€Shift を押ã—ã¦ã„ã‚‹ã¨æ¸›å°‘ã•ã›ã¾ã™ã€‚ | +|`RGB_SAD` | |彩度 (SAT) を減少ã•ã›ã€Shift を押ã—ã¦ã„ã‚‹ã¨å¢—加ã•ã›ã¾ã™ã€‚ | +|`RGB_VAI` | |明度 (VAL/brightness) を増加ã•ã›ã€Shift を押ã—ã¦ã„ã‚‹ã¨æ¸›å°‘ã•ã›ã¾ã™ã€‚ | +|`RGB_VAD` | |明度 (VAL/brightness) を減少ã•ã›ã€Shift を押ã—ã¦ã„ã‚‹ã¨å¢—加ã•ã›ã¾ã™ã€‚ | +|`RGB_MODE_PLAIN` |`RGB_M_P `|陿­¢(å‹•ãç„¡ã—) モードã«å›ºå®šã—ã¾ã™ | +|`RGB_MODE_BREATHE` |`RGB_M_B` |明滅アニメーションモード | +|`RGB_MODE_RAINBOW` |`RGB_M_R` |レインボーアニメーションモード | +|`RGB_MODE_SWIRL` |`RGB_M_SW`|渦巻アニメーションモード | +|`RGB_MODE_SNAKE` |`RGB_M_SN`|スãƒãƒ¼ã‚¯ã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³ãƒ¢ãƒ¼ãƒ‰ | +|`RGB_MODE_KNIGHT` |`RGB_M_K` |「ナイトライダーã€ã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³ãƒ¢ãƒ¼ãƒ‰ | +|`RGB_MODE_XMAS` |`RGB_M_X` |クリスマスアニメーションモード | +|`RGB_MODE_GRADIENT`|`RGB_M_G` |固定階調アニメーションモード | +|`RGB_MODE_RGBTEST` |`RGB_M_T` |赤ã€ç·‘ã€é’ã®ãƒ†ã‚¹ãƒˆã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³ãƒ¢ãƒ¼ãƒ‰ | + +## RGB マトリックスライト :id=rgb-matrix-lighting + +[RGB マトリックスライト](ja/feature_rgb_matrix.md) も見ã¦ãã ã•ã„。 + +|キー |エイリアス|説明 | +|-------------------|----------|--------------------------------------------------------------------------------------------------------| +|`RGB_TOG` | |RGB ライトã®ã‚ªãƒ³ãƒ»ã‚ªãƒ•を切り替㈠| +|`RGB_MODE_FORWARD` |`RGB_MOD` |RGB モードを順é€ã‚Šã§å¤‰æ›´ã—ã€Shift を押ã—ã¦ã„ã‚‹ã¨é€†é †ã§å¤‰æ›´ã—ã¾ã™ã€‚ | +|`RGB_MODE_REVERSE` |`RGB_RMOD`|RGB モードを逆順ã§å¤‰æ›´ã—ã€Shift を押ã—ã¦ã„ã‚‹ã¨é †é€ã‚Šã§å¤‰æ›´ã—ã¾ã™ã€‚ | +|`RGB_HUI` | |色相 (HUE) を増加ã•ã›ã€Shift を押ã—ã¦ã„ã‚‹ã¨æ¸›å°‘ã•ã›ã¾ã™ã€‚ | +|`RGB_HUD` | |色相 (HUE) を減少ã•ã›ã€Shift を押ã—ã¦ã„ã‚‹ã¨å¢—加ã•ã›ã¾ã™ã€‚ | +|`RGB_SAI` | |彩度 (SAT) を増加ã•ã›ã€Shift を押ã—ã¦ã„ã‚‹ã¨æ¸›å°‘ã•ã›ã¾ã™ã€‚ | +|`RGB_SAD` | |彩度 (SAT) を減少ã•ã›ã€Shift を押ã—ã¦ã„ã‚‹ã¨å¢—加ã•ã›ã¾ã™ã€‚ | +|`RGB_VAI` | |明度 (VAL/brightness) を増加ã•ã›ã€Shift を押ã—ã¦ã„ã‚‹ã¨æ¸›å°‘ã•ã›ã¾ã™ã€‚ | +|`RGB_VAD` | |明度 (VAL/brightness) を減少ã•ã›ã€Shift を押ã—ã¦ã„ã‚‹ã¨å¢—加ã•ã›ã¾ã™ã€‚ | +|`RGB_SPI` | |エフェクトã®ã‚¹ãƒ”ード (EEPROM ã¯ã¾ã ã‚µãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“) を増加ã•ã›ã€Shift を押ã—ã¦ã„ã‚‹ã¨æ¸›å°‘ã•ã›ã¾ã™ã€‚ | +|`RGB_SPD` | |エフェクトã®ã‚¹ãƒ”ード (EEPROM ã¯ã¾ã ã‚µãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“) を減少ã•ã›ã€Shift を押ã—ã¦ã„ã‚‹ã¨å¢—加ã•ã›ã¾ã™ã€‚ | + +## 感熱å¼ãƒ—リンタ :id=thermal-printer + +[感熱å¼ãƒ—リンタ](ja/feature_thermal_printer.md) も見ã¦ãã ã•ã„。 + +|キー |説明 | +|-----------|---------------------------------| +|`PRINT_ON` |ユーザãŒå…¥åŠ›ã—ãŸå…¨ã¦ã®å°åˆ·ã‚’é–‹å§‹ | +|`PRINT_OFF`|ユーザãŒå…¥åŠ›ã—ãŸå…¨ã¦ã®å°åˆ·ã‚’åœæ­¢ | + +## US ANSI シフト済シンボル :id=us-ansi-shifted-symbols + +[US ANSI シフト済シンボル](ja/keycodes_us_ansi_shifted.md) も見ã¦ãã ã•ã„。 + +|キー |エイリアス |説明| +|------------------------|-------------------|-----------| +|`KC_TILDE` |`KC_TILD` |`~` | +|`KC_EXCLAIM` |`KC_EXLM` |`!` | +|`KC_AT` | |`@` | +|`KC_HASH` | |`#` | +|`KC_DOLLAR` |`KC_DLR` |`$` | +|`KC_PERCENT` |`KC_PERC` |`%` | +|`KC_CIRCUMFLEX` |`KC_CIRC` |`^` | +|`KC_AMPERSAND` |`KC_AMPR` |`&` | +|`KC_ASTERISK` |`KC_ASTR` |`*` | +|`KC_LEFT_PAREN` |`KC_LPRN` |`(` | +|`KC_RIGHT_PAREN` |`KC_RPRN` |`)` | +|`KC_UNDERSCORE` |`KC_UNDS` |`_` | +|`KC_PLUS` | |`+` | +|`KC_LEFT_CURLY_BRACE` |`KC_LCBR` |`{` | +|`KC_RIGHT_CURLY_BRACE` |`KC_RCBR` |`}` | +|`KC_PIPE` | |`\|` | +|`KC_COLON` |`KC_COLN` |`:` | +|`KC_DOUBLE_QUOTE` |`KC_DQUO`, `KC_DQT`|`"` | +|`KC_LEFT_ANGLE_BRACKET` |`KC_LABK`, `KC_LT` |`<` | +|`KC_RIGHT_ANGLE_BRACKET`|`KC_RABK`, `KC_GT` |`>` | +|`KC_QUESTION` |`KC_QUES` |`?` | + +## ワンショットキー :id=one-shot-keys + +[ワンショットキー](ja/one_shot_keys.md) も見ã¦ãã ã•ã„。 + +|キー |説明 | +|------------|--------------------------------| +|`OSM(mod)` | 次ã®ã‚­ãƒ¼ãŒæŠ¼ã•れるã¾ã§ã€`mod` を押ã—ãŸã¾ã¾ã«ã—ã¾ã™ | +|`OSL(layer)`| 次ã®ã‚­ãƒ¼ãŒæŠ¼ã•れるã¾ã§ã€ä¸€æ™‚çš„ã«ãƒ¬ã‚¤ãƒ¤ãƒ¼ã‚’アクティブã«ã—ã¾ã™ | + +## Space Cadet :id=space-cadet + +[Space Cadet](ja/feature_space_cadet.md) も見ã¦ãã ã•ã„。 + +|キー |説明 | +|-----------|-------------------------------------------| +|`KC_LCPO` |押ã—ãŸã¾ã¾ã®å ´åˆã¯å·¦ Controlã€ã‚¿ãƒƒãƒ—ã—ãŸå ´åˆã¯ `(` | +|`KC_RCPC` |押ã—ãŸã¾ã¾ã®å ´åˆã¯å³ Controlã€ã‚¿ãƒƒãƒ—ã—ãŸå ´åˆã¯ `)` | +|`KC_LSPO` |押ã—ãŸã¾ã¾ã®å ´åˆã¯å·¦ Shiftã€ã‚¿ãƒƒãƒ—ã—ãŸå ´åˆã¯ `(`〠| +|`KC_RSPC` |押ã—ãŸã¾ã¾ã®å ´åˆã¯å³ Shiftã€ã‚¿ãƒƒãƒ—ã—ãŸå ´åˆã¯ `)`〠| +|`KC_LAPO` |押ã—ãŸã¾ã¾ã®å ´åˆã¯å·¦ Altã€ã‚¿ãƒƒãƒ—ã—ãŸå ´åˆã¯ `(`〠| +|`KC_RAPC` |押ã—ãŸã¾ã¾ã®å ´åˆã¯å³ Altã€ã‚¿ãƒƒãƒ—ã—ãŸå ´åˆã¯ `)`〠| +|`KC_SFTENT`|押ã—ãŸã¾ã¾ã®å ´åˆã¯å³ Shiftã€ã‚¿ãƒƒãƒ—ã—ãŸå ´åˆã¯ Enter | + +## スワップãƒãƒ³ãƒ‰ :id=swap-hands + +[スワップãƒãƒ³ãƒ‰](ja/feature_swap_hands.md) も見ã¦ãã ã•ã„。 + +|キー |説明 | +|-------------|----------------------------------------------------------------------------------| +| `SH_T(key)` | タップ㧠`key` ã‚’é€ä¿¡ã™ã‚‹ã€‚押ã—ã¦ã„る時ã«ä¸€æ™‚çš„ã«å…¥ã‚Œæ›¿ãˆã€‚ | +| `SH_ON` | 入れ替ãˆã‚’オンã«ã—ã¦ã€ãã®ã¾ã¾ã«ã™ã‚‹ã€‚ | +| `SH_OFF` | 入れ替ãˆã‚’オフã«ã—ã¦ã€ãã®ã¾ã¾ã«ã™ã‚‹ã€‚既知ã®çŠ¶æ…‹ã«æˆ»ã‚‹ã®ã«é©ã—ã¦ã„ã¾ã™ã€‚ | +| `SH_MON` | 押ã™ã¨ã‚¹ãƒ¯ãƒƒãƒ—ãƒãƒ³ãƒ‰ã—ã€æ”¾ã™ã¨é€šå¸¸ã«æˆ»ã‚‹ (一時的)。 | +| `SH_MOFF` | 一時的ã«å…¥ã‚Œæ›¿ãˆã‚’オフã™ã‚‹ã€‚ | +| `SH_TG` | キーを押ã™ãŸã³ã«ã‚ªãƒ³ã¨ã‚ªãƒ•を切り替ãˆã‚‹ã€‚ | +| `SH_TT` | タップã§åˆ‡ã‚Šæ›¿ãˆã‚‹ã€‚押ã—ã¦ã„る時ã«ä¸€æ™‚çš„ã«åˆ‡ã‚Šæ›¿ãˆã‚‹ã€‚ | +| `SH_OS` | ワンショットスワップãƒãƒ³ãƒ‰: 押ã—ã¦ã„る時ã‚ã‚‹ã„ã¯æ¬¡ã®ã‚­ãƒ¼ã‚’押ã™ã¾ã§åˆ‡ã‚Šæ›¿ãˆã‚‹ã€‚ | + +## ユニコードサãƒãƒ¼ãƒˆ :id=unicode-support + +[ユニコードサãƒãƒ¼ãƒˆ](ja/feature_unicode.md) も見ã¦ãã ã•ã„。 + +|キー |エイリアス |説明 | +|----------------------|-----------|----------------------------------------------------------------------| +|`UC(c)` | |コードãƒã‚¤ãƒ³ãƒˆ `c` ã®ãƒ¦ãƒ‹ã‚³ãƒ¼ãƒ‰ã‚’é€ä¿¡ | +|`X(i)` | |`unicode_map` ã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ `i` ã®ãƒ¦ãƒ‹ã‚³ãƒ¼ãƒ‰ã‚’é€ä¿¡ | +|`XP(i, j)` | |Shift/CapsãŒæœ‰åйãªã‚‰ã€ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ `i` ã¾ãŸã¯ `j` ã®ãƒ¦ãƒ‹ã‚³ãƒ¼ãƒ‰ã‚’é€ä¿¡ | +|`UNICODE_MODE_FORWARD`|`UC_MOD` |ユニコード入力方å¼ã‚’é †é€ã‚Šã§é¸æŠž | +|`UNICODE_MODE_REVERSE`|`UC_RMOD` |ユニコード入力方å¼ã‚’逆順ã§é¸æŠž | +|`UNICODE_MODE_OSX` |`UC_M_OS` |ユニコード入力方å¼ã‚’ macOS æ–¹å¼ã«åˆ‡ã‚Šæ›¿ãˆ | +|`UNICODE_MODE_LNX` |`UC_M_LN` |ユニコード入力方å¼ã‚’ Linux æ–¹å¼ã«åˆ‡ã‚Šæ›¿ãˆ | +|`UNICODE_MODE_WIN` |`UC_M_WI` |ユニコード入力方å¼ã‚’ Windows æ–¹å¼ã«åˆ‡ã‚Šæ›¿ãˆ | +|`UNICODE_MODE_BSD` |`UC_M_BS` |ユニコード入力方å¼ã‚’ BSD æ–¹å¼ã«åˆ‡ã‚Šæ›¿ãˆ (実装ã•れã¦ã„ã¾ã›ã‚“) | +|`UNICODE_MODE_WINC` |`UC_M_WC` |ユニコード入力方å¼ã‚’ WinCompose を使ㆠWindows æ–¹å¼ã«åˆ‡ã‚Šæ›¿ãˆ | From 4d416455980dc7bccdebb4f2bf571d5182ec6796 Mon Sep 17 00:00:00 2001 From: drhigsby <71532157+drhigsby@users.noreply.github.com> Date: Thu, 4 Mar 2021 10:15:16 -0800 Subject: [PATCH 014/613] Dubba175 (#12077) * dubba175 initial * Following checklist * Update readme.md * Update keyboards/dubba175/keymaps/default/keymap.c Co-authored-by: Drashna Jaelre * Update keyboards/dubba175/keymaps/default/keymap.c Co-authored-by: ridingqwerty * Update keyboards/dubba175/keymaps/default/keymap.c Co-authored-by: ridingqwerty * Update keyboards/dubba175/rules.mk Co-authored-by: ridingqwerty * Update config.h * Update keyboards/dubba175/readme.md Co-authored-by: Ryan * Update keyboards/dubba175/rules.mk Co-authored-by: Ryan * Update keyboards/dubba175/rules.mk Co-authored-by: Ryan Co-authored-by: Drashna Jaelre Co-authored-by: ridingqwerty Co-authored-by: Ryan --- keyboards/dubba175/config.h | 56 ++++++++++++ keyboards/dubba175/dubba175.c | 16 ++++ keyboards/dubba175/dubba175.h | 30 +++++++ keyboards/dubba175/info.json | 12 +++ keyboards/dubba175/keymaps/default/config.h | 19 ++++ keyboards/dubba175/keymaps/default/keymap.c | 92 ++++++++++++++++++++ keyboards/dubba175/keymaps/default/readme.md | 1 + keyboards/dubba175/keymaps/default/rules.mk | 1 + keyboards/dubba175/readme.md | 15 ++++ keyboards/dubba175/rules.mk | 23 +++++ 10 files changed, 265 insertions(+) create mode 100644 keyboards/dubba175/config.h create mode 100644 keyboards/dubba175/dubba175.c create mode 100644 keyboards/dubba175/dubba175.h create mode 100644 keyboards/dubba175/info.json create mode 100644 keyboards/dubba175/keymaps/default/config.h create mode 100644 keyboards/dubba175/keymaps/default/keymap.c create mode 100644 keyboards/dubba175/keymaps/default/readme.md create mode 100644 keyboards/dubba175/keymaps/default/rules.mk create mode 100644 keyboards/dubba175/readme.md create mode 100644 keyboards/dubba175/rules.mk diff --git a/keyboards/dubba175/config.h b/keyboards/dubba175/config.h new file mode 100644 index 0000000000..2eab0e2693 --- /dev/null +++ b/keyboards/dubba175/config.h @@ -0,0 +1,56 @@ +/* Copyright 2020 drhigsby + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define MANUFACTURER DrHigsby +#define PRODUCT Dubba175 +#define VENDOR_ID 0x0420 +#define PRODUCT_ID 0x0420 +#define DEVICE_VER 0x0420 + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 10 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ + +/* key matrix pins */ +#define MATRIX_ROW_PINS { B1, B3, B2, B5 } +#define MATRIX_COL_PINS { D3, D2, D1, D0, D4, C6, D7, E6, B4, B6 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE \ No newline at end of file diff --git a/keyboards/dubba175/dubba175.c b/keyboards/dubba175/dubba175.c new file mode 100644 index 0000000000..066e772fa2 --- /dev/null +++ b/keyboards/dubba175/dubba175.c @@ -0,0 +1,16 @@ +/* Copyright 2020 drhigsby + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "dubba175.h" \ No newline at end of file diff --git a/keyboards/dubba175/dubba175.h b/keyboards/dubba175/dubba175.h new file mode 100644 index 0000000000..0413b158d2 --- /dev/null +++ b/keyboards/dubba175/dubba175.h @@ -0,0 +1,30 @@ +/* Copyright 2020 drhigsby + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#define LAYOUT( \ + k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, \ + k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, \ + k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, \ + k302, k303, k304, k305, k306, k307 \ +) { \ + { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009 }, \ + { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109 }, \ + { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209 }, \ + { KC_NO, KC_NO, k302, k303, k304, k305, k306, k307, KC_NO, KC_NO } \ +} diff --git a/keyboards/dubba175/info.json b/keyboards/dubba175/info.json new file mode 100644 index 0000000000..5f8c3f1f44 --- /dev/null +++ b/keyboards/dubba175/info.json @@ -0,0 +1,12 @@ +{ + "keyboard_name": "dubba175", + "url": "http://www.keyboard-layout-editor.com/#/gists/3185de74dfb973bf6d42e785994cfd4e", + "maintainer": "drhigsby", + "width": 10, + "height": 4, + "layouts": { + "LAYOUT": { + "layout": [{"label":"", "x":0, "y":0}, {"label":"", "x":1, "y":0}, {"label":"", "x":2, "y":0}, {"label":"", "x":3, "y":0}, {"label":"", "x":4, "y":0}, {"label":"", "x":5, "y":0}, {"label":"", "x":6, "y":0}, {"label":"", "x":7, "y":0}, {"label":"", "x":8, "y":0}, {"label":"", "x":9, "y":0}, {"label":"", "x":0, "y":1}, {"label":"", "x":1, "y":1}, {"label":"", "x":2, "y":1}, {"label":"", "x":3, "y":1}, {"label":"", "x":4, "y":1}, {"label":"", "x":5, "y":1}, {"label":"", "x":6, "y":1}, {"label":"", "x":7, "y":1}, {"label":"", "x":8, "y":1}, {"label":"", "x":9, "y":1}, {"label":"", "x":0, "y":2}, {"label":"", "x":1, "y":2}, {"label":"", "x":2, "y":2}, {"label":"", "x":3, "y":2}, {"label":"", "x":4, "y":2}, {"label":"", "x":5, "y":2}, {"label":"", "x":6, "y":2}, {"label":"<", "x":7, "y":2}, {"label":">", "x":8, "y":2}, {"label":"", "x":9, "y":2}, {"label":"", "x":1.25, "y":3}, {"label":"", "x":2.25, "y":3}, {"label":"", "x":3.25, "y":3, "w":1.75}, {"x":5, "y":3, "w":1.75}, {"label":"", "x":6.75, "y":3}, {"label":"", "x":7.75, "y":3}] + } + } +} \ No newline at end of file diff --git a/keyboards/dubba175/keymaps/default/config.h b/keyboards/dubba175/keymaps/default/config.h new file mode 100644 index 0000000000..7a4761b1ae --- /dev/null +++ b/keyboards/dubba175/keymaps/default/config.h @@ -0,0 +1,19 @@ +/* Copyright 2020 drhigsby + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#define COMBO_COUNT 8 +#define COMBO_TERM 40 diff --git a/keyboards/dubba175/keymaps/default/keymap.c b/keyboards/dubba175/keymaps/default/keymap.c new file mode 100644 index 0000000000..e502e94981 --- /dev/null +++ b/keyboards/dubba175/keymaps/default/keymap.c @@ -0,0 +1,92 @@ +/* Copyright 2020 drhigsby + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layers{ + _BASE, + _NUM, + _NAV, + _FN +}; + +enum combo_events { + combo_ESC, + combo_BACK, + combo_TAB, + combo_DELETE, + combo_ENTER, + combo_QUOT, + combo_LPRN, + combo_RPRN, +}; + +const uint16_t PROGMEM esc_combo[] = {KC_Q, KC_W, COMBO_END}; +const uint16_t PROGMEM bspc_combo[] = {KC_O, KC_P, COMBO_END}; +const uint16_t PROGMEM tab_combo[] = {KC_A, KC_S, COMBO_END}; +const uint16_t PROGMEM del_combo[] = {KC_Q, KC_P, COMBO_END}; +const uint16_t PROGMEM enter_combo[] = {KC_L, KC_SCLN, COMBO_END}; +const uint16_t PROGMEM quot_combo[] = {KC_P, KC_SCLN, COMBO_END}; +const uint16_t PROGMEM lprn_combo[] = {KC_X, KC_C, COMBO_END}; +const uint16_t PROGMEM rprn_combo[] = {KC_COMM, KC_DOT, COMBO_END}; + + +combo_t key_combos[COMBO_COUNT] = { + [combo_ESC] = COMBO(esc_combo, KC_ESC), + [combo_BACK] = COMBO(bspc_combo, KC_BSPC), + [combo_TAB] = COMBO(tab_combo, KC_TAB), + [combo_DELETE] = COMBO(del_combo, KC_DEL), + [combo_ENTER] = COMBO(enter_combo, KC_ENT), + [combo_QUOT] = COMBO(quot_combo, KC_QUOT), + [combo_LPRN] = COMBO(lprn_combo, KC_LPRN), + [combo_RPRN] = COMBO(rprn_combo, KC_RPRN), +}; + +#define NUM MO(_NUM) +#define NAV MO(_NAV) +#define FN MO(_FN) +#define xxx KC_TRNS + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT( + 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, + LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), + KC_LCTL, KC_LALT, NUM, KC_SPC, NAV, FN + ), + + + [_NUM] = LAYOUT( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_MINS, KC_EQL, + KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_HOME, KC_END, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, + KC_PGUP, KC_PGDN, xxx, xxx, KC_PGUP, KC_PGDN + ), + + [_NAV] = LAYOUT( + xxx, KC_UP, xxx, xxx, xxx, xxx, xxx, xxx, KC_UP, xxx, + KC_LEFT, KC_DOWN, KC_RGHT, xxx, xxx, xxx, xxx, KC_LEFT, KC_DOWN, KC_RGHT, + xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, + xxx, xxx, xxx, xxx, xxx, xxx + ), + + [_FN] = LAYOUT( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, + xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, KC_F11, KC_F12, + xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, + xxx, xxx, xxx, xxx, xxx, xxx + ) + +}; diff --git a/keyboards/dubba175/keymaps/default/readme.md b/keyboards/dubba175/keymaps/default/readme.md new file mode 100644 index 0000000000..8e5c2c528b --- /dev/null +++ b/keyboards/dubba175/keymaps/default/readme.md @@ -0,0 +1 @@ +# Default Dubba175 Keymap diff --git a/keyboards/dubba175/keymaps/default/rules.mk b/keyboards/dubba175/keymaps/default/rules.mk new file mode 100644 index 0000000000..ab1e438182 --- /dev/null +++ b/keyboards/dubba175/keymaps/default/rules.mk @@ -0,0 +1 @@ +COMBO_ENABLE = yes diff --git a/keyboards/dubba175/readme.md b/keyboards/dubba175/readme.md new file mode 100644 index 0000000000..f8f1459236 --- /dev/null +++ b/keyboards/dubba175/readme.md @@ -0,0 +1,15 @@ +# Dubba175 + +![Dubba175](https://i.imgur.com/nzDZuS3h.jpg) + +Dubba175 is a 10u wide ortholinear keyboard featuring 2x 1.75u spacebars as the bottom row layout option. + +* Keyboard Maintainer: [H. Bond](https://github.com/drhigsby) +* Hardware Supported: Dubba175 (https://github.com/drhigsby/dubba175) +* Hardware Availability: P3DStore.com offers a stacked acrlyic case / make your own + +Make example for this keyboard (after setting up your build environment): + + make dubba175:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/dubba175/rules.mk b/keyboards/dubba175/rules.mk new file mode 100644 index 0000000000..f9c2a3c5ea --- /dev/null +++ b/keyboards/dubba175/rules.mk @@ -0,0 +1,23 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +LTO_ENABLE = no # Use link time optimization From 7639b5aa3e1a70d35d03fb25bb7804458ec36f3b Mon Sep 17 00:00:00 2001 From: Jos Boersema <56587694+josjoha@users.noreply.github.com> Date: Thu, 4 Mar 2021 20:07:55 +0100 Subject: [PATCH 015/613] [Keymap] josjoha keymap for TheVan Keyboards' Minivan (#8066) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Keymap Minivan: configurable dual layout, many symbols, speed/text-size measuring * Made center led color follow last activated layer color. Some led code clean up * Reordered the _RAR layer, also putting GUI on the _ACC layer. * Some issue with _FUN (see keymap.c FIXME), removed _FUN nested 'go to layer' key on _FUN. * markdown formatting * Update readme about _FUN top row issue (see keymap.c at XXX) * Sentence order final bit was wrong by topic. White space fiddles. * Minor comment editing * minor comment adjustments * leds are not modifiers, moved * _FUN persistance on base layer only (XXX) * The up/left to go to _LTR layer, now always goes to BASE (_LTR or _DDL). Led indicators refldect this. No _DRA hold on base layer but _ACC. No one shot to _FUN layer (seemed to make things confusing), but a TO(). * Some chatter about how to configure this map to your needs. * language fixing * Tried to make sense explaining how to access the descramble. * language fix * Seems there was a stale CSET_LTR/.*DDL, should be BASE_LTR/.*DDL, fixed. * language, blabla * Corrected stale _LTR into BASE * Some documentation finetuning and trying to make it simple to understand * language fixing * language fixing * Doing the utmost to explain it in a way I understand it too. * language fixing, going ultra-verbose * language fixing and formatting * language fixing * language fixing, formatting * attempt to simplify explanations as much as possible * added License to keymap.c (GPL), noted that _ACC and _DRA need work to function in 'descramble' mode * fixes regarding layer order, adding two layers, started on descramble layers for _ACC and _DRA Unicode * Noted some coming changes about F-layer and more descramble. * changed globals to type 'bool' * Changed F-layer by removing pre-modifier F keys, moved BASE direction switches, added new incomplete descramble layers * _FUN layer changes (comment fix) * Led color fixes. Changed order of layers in the source (no user consequence). * Added copyright authors (hope that is correct in GPL style/requirements). * Switched on BASE layers the keys to activate _MOV with leftside _NSY: more harmoneous, and _MOV can also be held by right hand. * Follow Quantum indentation style more (mostly). * On _NSY & _DDN, Tab follows _LTR. '-' moved to LShift, '.' moved, ',' created, shift(tab) removed. * Added Linux Unicode input mode Accented characters on layers _DDA, _DDD * added to Todo * Added ijIJ to _ACC and _DDA layers (2nd last letter of Dutch alphabet). * add todo point about navigation, fix -> "8th key" * added 「ã€ã€Šã€‹ to _DRA and _DDA * Added 〇, Æ’Æ‘. Altered Nav clusters with paging on outside, added thumb Page up/down to _MOV, brought _REV in line with recent _NSY changes (tab,-,enter,dot,comma). Harmonized tab on _Mov with other layer tabs (also a move command, moving cells). * Added super- and sub-script for numbers on _DRA, _DDD. * Added quotation marks „ “ †to layers _DRA and _DDD. * Added °〇•· to _DRA, _DDA * § as an enumeration grouped with • (bullet), · as possibly math (middot or multiply) grouped with ±. * Changed numbers to be on home-rows both hands, because thumb layer key does not interfere alternating between hands for longer numbers (previous reason for one-handed numbers). The unshifted symbols went left 2nd row, because then the shifted versions can be accessed with shift if the layout is replicated on a Pok3r (which is non-programmable right hand 2nd row.) The logic has been harmonized with layers _DDN, _DRA & _DDD, _FUN, which have number(-like) keys. It seems better this way. The symbols are layed out more spaciously, each finger now does two symbols (2nd row, 4th row). The numbers are more like they normally are, which feels more natural, and should even the load between both hands and help with alternating between hands when typing numbers. Reason to change was looking into pressing ;, q, j, with ring-, middle-, index-finger (moved one to the right from default Dvorak), because the stagger makes it easier to reach that way, less loss of home row contact, bending fingers more straight up and down. Downside became that left index type 5 numbers, and that the normal finger matching (0 is pinky, etc) was lost. With the new layout these potential problems are also resolved. * Made descramble _DDN, _DDL representation show both raw and resulting layouts. layouts. * Added arrows, fleur and heart on _DRA and _DDD. * Changed _FUN layer switching to incorporate the 'descramble' system seemlessly. The 4 layer with a descramble twin will switch to either depending on the descramble mode. * Descramble mode with normal Unicode layers mostly done, except costum LT() to share the key with Delete/Alt on _DDL. * Changed descramble mode keys to be just one on a cycle. Added full set of Alt/Control/Shift multimodifiers to `_FUN` layer. * Changed descramble mode keys to be just one on a cycle. Added full set of Alt/Control/Shift multimodifiers to `_FUN` layer. * format fix * Descramble cycle key moved from row 1 to row 4 far right, to avoid accidental press, * The 'descramble' mode with normal Unicode encoding finished. Fixed mistaken non-transparent key on _DRA and _DDD, removed tab from _RAR. * stale layer comment fix _LTR/_DDL * New layer-tap timed keys proved unreliable, longer tap term fixed it. * The _FUN layer is a one-shot layer for the F-keys, but that can be toggled by the FUN< key on the _FUN layer (top row, 3rd). Some additions to the readme. * Comment improvements (layout tables) * minor * Made #defines to allow a user to easily switch to a WASD arrow layout. * Added keys to switch leds on/off, to _RAR layer. Fixed wrong comment on 'APP' key in _RAR. * comments fix regarding MLed, SLeds * Added BASE to same key as _FUN on base layer, except layers with numbers/symbols. Removed capital Æ’, and moved ± to that key. Added … on old spot of ±. Some readme language editing, adding something about other keyboards, etc. * small language fix * Config.h: Removed unused #defines. Readme: minor edits. * minor language edits. * Minor comment edit. * Minor language fix. * Minor language style edit. * Removed unnecessary section 'personal remarks' * Changed the top row in _DRA and _DDD. Super-/sub-script parenthesis to that location on _NSY, added currency symbols, reduced emoticons. * minor formatting * Added LGUI and RGUI on the _DRA/_DDD layer(s). * Put RGUI on the base layer, on the _FUN layer switch key. This probably causes side-effects on systems without where RGUI is not merely a modifier. * Changed _FUN toggle on BASE to Rshift, because RGUI on some systems has a consequence when tapped by itself. * Changed LGUI and RGUI around because LGUI is mostly used and on BASE layer. Some edits to last part of readme.md. * Minor language fixed (L/R-GUI, use-case). * some more blabla on use case of the map generally * Changed name KC__[LR]GUI to KC__[XY]GUI for clarity wrt switching them. * Removed left-arrow on Alt on _ACC and _DRA, for faster use with pointer device. * Added the same system as is on RShift, to LShift, pointed it to _MOV layer. * Changed left shift layer toggle to _DRA, because it has uncluttered shift, alt, control, for using those with a pointer device (mouse, stylus). * Changed base layer left-shift tap from _DRA to _MOV, because _MOV toggled can be convenient generally, and it is a less dangerous layer to accidentally press, and it makes more sense to activate the navigation layer when editing in 3D software. * The Power keys on _RAR now require Shift to be activated (accident prevention). * fiddled with title * more title fiddles * Added RGUI on _FUN for future proofing the layout, harmonizing layers. * Added ',' on _REV (number fraction division). Minor fix to documentation format. * title fiddle * Added LGUI, RGUI to _RAR, to harmonize with other layers and for potential future uses. * Changed unnecessary transparent keycode on _AcC and _DDA to be 'nop', minor comment fixes. * Added on _DRA and _DDD: ─â”┄┅. Fixed a bug in led layer colors (forgotten 'else', causing wrong color for _DDD). * Some changes to conform to QMK readme.md standards (more necessary). * Changed _REV into a numbers pad layer called _PAD, put on Lshift in BASE. _REV layer (not used anyway) replaced with a layer that is basically a layer where symbols that exist on _NSY (mostly) and on _LTR (few) are existing in the same locations, but in the number pad variant of that symbol. The goal is to make it easy to find, it is not meant for single hand access quickly. The use is to deal with special shortcuts like Blender has, which differentiate normal and numpad numbers/symbols. For quick access it was put on the left shift in BASE layer. * Added navigation arrangements to _PAD. Changed location of shift on _RAR. The numbers on numpad are easy to find, but when these keys are in their navigation variant with numlock on it becomes almost impossible. There was room on the map to add an arrow row, and a row for the remaining navigation keys, hence they where added. They are in a left handed order, because there already is a right handed order on _MOV. It still proved possible to accidentally trigger Power, due to erroneous hitting 'shift' in BASE and then messing around by accident. With shift on (BASE) space in _RAR, accidents should be reduced further, since it is a combination never used. * Added Tab on _ACC and _PAD To facilitate Control-Tab (a blender shortcut). On _ACC the Tab is in its correct place. On _PAD it messy because not on its correct place. Leaving it there for now: easier to access Tab+Control with left hand only on the modifiers in _PAD, and other hand on a pointer device. Tab has a potential use to jump input cells, which may be used in combination with a numpad. * _MOV layer: switched default layout to trangle navigation layout. This only required to set the already existing #defines. I found the flat layout not intuitive, the triangle layout has no left/rigth hand problem. The higher buttons for the mouse where not correctly ordered, so they where re-ordered. * Triangle navigation by default. Added pictures of layout to readme.md * Layer names on images. * Changed image for layer _DRAW slightly. The shifted symbol to the lower right. * Image for _PAD corrected for no-action and Tab. * Added a paragraph about why this layout is good to use. * removed 'modifiers' paragraph * Some text improvements in paragraph on what is good about this layout. Fiddle on the title as well. * Added Del on _DRAW layer. Some minor text fiddles here and there. * Removed word "descramble" in image layer _RAR. * Improved key 'sticky' and altered image size (test). * Rescaled image for layer FUN * Unicode in its own file. Bug fix: _DDA 'ï' printed a capital. Upon a suggestion from QMK Discord #programming, the macros and unicode is put in a separate file, because keymap.c got large. An erroneous numerical value for ï was fixed. Author e-mail is updated to a new e-mail adres. * Added an image to illustrate 'descramble' mode. * Changed explicit e-mail to link, to reduce spam bot trolling. * Added a Qwerty+Dvorak compile time version. It seemed the overall design (accented, Unicode, stuff) could be useful for Qwerty typers (of which there are so many). This was done by #if(n)def out/in a fair amount of code here and there, and creating 4 replacement layers in a new file qwerty_dvorak.c, also with its own readme in qwerty_dvorak.md. The 'descramble' switch system is re-used here to switch from Qwerty to Dvorak. The new code is put in qwerty_dvorak.c, which starts with an extensive comment about why and how it works. Fix: Docs, a stale "_MOV" was replaced with "_PAD" in the readme.md for _DDL. * Changed image hosting. Downtime, problems registering: resorting to my own domain. * minor text order changes * Some text improvements. * Added a compile option to easily change what layer is active on startup. This layer can be plain Dvorak or 'descrambled' Dvorak, if QWERTY_DVORAK is not set. It can be Qwerty or Dvorak if it is set. Just some simple #define statements. * Added graphics for Qwerty+Dvorak, and improved documentation. Added the whole set of layers also to qwerty_dvorak.md, because it seemed it would get even more confusing to have a user cross reference it between the two files. * Some simple text improvements * Numbers/symbols layer keys on BASE to DRAW when both pressed. The two keys besides the space bars go to DRAW layer when pressed simultaneously. (This is inspired on the Planck's 'adjust' layer, pressing both 'lower' and 'raise' together.) All layers can now (relatively) comfortably be reached. This change was necessary because it was cumbersome to reach the DRAW layer with the right pinky and then type with the right hand. _RAR is now not super easy, but it is a 'rare' layer anyway. * Added compile + flash section in readme. * Corrected documentation: 'mouse on ... hand' * Removed up/down arrow ⮙⮛ on _DRA and _DDD, because the hex file was too large. Due to pulling the master repository, changing nothing in this keymap, the code compiled as 2 bytes too large, where before it had been 2 bytes left free. Some compile options have been created, to make it easy to cut out up/down arrow on the 'descramble' _DDD layer, and/or the normal _DRA layer, and/or dashes ┄┅ on the 'descramble' _DDD layer. The 'normal' layer cut out of arrows yields little benefit, but it keeps all layers exactly the same between 'descramble' and normal mode. For Qwerty compilation, you will want to not cut out anything, requiring to edit the user compile options in keymap.c (top). * Resolved size issue with QMK #defines, re-instated ⮙⮛, removed RGUI on _FUN. Various #defines tested to reduce space, NO_ACTION_MACRO NO_ACTION_FUNCTION worked. Therefore the cutting out of the up/down arrows was no longer needed. The #defines to easily remove them have been left in place. RGUI made _FUN confusing with the multi-modifiers, thus taken out. Multi- modifiers now logically cascade without skipping a key. * Improved image files with led colors and some tweaks. * Updated graphics file for Dvorak in QWERTY_DVORAK compile option. The led colors where not correct because the graphics for standard Dvorak was being re-used. * Fixed for re-instating arrow up/down for space. * Activation marker on _FUN layer in documentation altered. It looked like it was a symbol. * Made startup layer explicit in code. Startup layer follows 'descramble' on/off user #define setting. * Marker for BASE activation for _PAD, _MOV: fixed. There was a stale marker in the documentation layouts for _MOV: removed. The same marker for _PAD was improved. * Code optimizations suggested on pull request #8066 https://github.com/qmk/qmk_firmware/pull/8066 Some things moved to config.h, rules.mk Changed layer_on/_off to layer_move(..) Removed a global variable, changed literal type on a function. Code is now a lot smaller, hence removed readme.md entry on that. Removed "not shown" on 'descramble' leds in qwerty readme (mistake). * Compile option to change Æ’ into €. Since it's a west european keymap, maybe someone likes the euro currency on it. (It was not on it because I don't like ...) * default to Æ’ on keymap * Removed print sheet for layout *.odt file. Changing this to text/markdown seems to reduce the use of this file to a point that it may be better to delete it. There is also the graphics now, which might be better to print. * Updated the seller/maintainer of the board to: The Key Dot Company LLC. https://thekey.company/blogs/blog-updates/thekey-company-acquires-minivan * Changed external links to website to plain text. The markdown link is caught by the github cammo system. * Last free spot on the map made easy to configure. One spot was still free (Unicode _DRA/_DDD layer). This puts a #define on top of unicode_macros.c, to make it easy for a user to put in their own symbol. Put placeholder 🛠 in there. That symbol is not represented in the documentation (maybe it should, it is a nice symbol). * Removed space saving #defines. These became obsolete clutter, now that there is enough space thanks to LINK_TIME_OPTIMIZATION_ENABLE. * Added tokens to simplify compiling for 45/46 keys. An attempt to make it easy to switch on a #define between various hardware configurations (44, 45, 46 keys) failed. This: #define J1 , KC_A // seems to have failed to be recognized as a key definition. error: error: macro "LAYOUT_command" requires 45 arguments, but only 44 given Left in are some code tokens (J1-J4) and #defines that need at least bulk replacement in keymap.c and optionally qwerty_dvorak.c, to compile for such hardware configurations. It would be nice if this could be done better. * User can easily compile for 45, 46 hardware keys. Added some #ifdefs around optional keys in the keymap, to allow compiling for 45 and 46 keys. Left the earlier made code with the J1_J2 etc. tokens, which could still be used to port the map to a board with even more keys. This fixes earlier mentioned problem. * Arrow cluster for 'arrow' hardware configuration. This is a user configurations option in the keymap.c, to have an arrow cluster around the additional key for 'arrow' hardware. The arrow cluster is however not on the base layer (no room). The additional key is used to switch to the _MOV layer. There it becomes a down arrow in the arrow cluster. To make this work with the default _MOV layer, the right hand keys on the 2nd row where moved one spot to the left, for the 'triangle' arrow configuration (mouse right). This is a trivial change. There was a bunch of language improvements to the documentation, including graphics. The symbol 🛠 is now listed. The program seems to be reliable, as far as used and tested. * Correction of mark-down formatting. _MOV layer 'arrow' cluster documentation rendered incorrectly (attempt to add newline). * Markdown formatting mistake correction. Adding a newline at 'Layers (text)' chapter. * Moving the graphics about 'arrow' to topic. The graphic explaining what 'arrow' with arrow cluster means, should be where that is mentioned under compile options. * Editor token J3_J4 moved to avoid arrow cluster. If one wants to insert a key by bulk replacing J3_J4, and has activated the 'arrow' layout arrow cluster, this new key would be inside the arrow cluster, hence it was moved to the left. * Æstethics of image 'arrow' layout, arrow cluster. Shading corrected/nicer. * Corrected image link in readme.md Illustration 'arrow' layout, arrow cluster. * Fix: Toggle to BASE layer leaked. South-paw key. When toggling to a non-BASE layer, either on the _FUN layer or using the 'arrow' cluster for 'arrow' layout, on the BASE layer to toggle to _MOV, the layer changed on the down-stroke, causing a character to leak. These layer switch macros now alter layer on the up stroke. There seems to have been an accidental code deletion: #define MORE_key1. This defines what the additional hardware key for 'South Paw' ('Command') should be. * User compile option comments easier to read. The phrases "uncomment" and "comment out" are confusing. Replaced by _activate_ and _remove_. * Put user compile options back to default Minivan. Accidentally left the compile options for number of Minivan keys in the wrong state while git pushing. * Rewording a comment in the user compile options. Clearer language. * Leds indicate Caps/Num-lock. Leds green/blue switch depending on numlock for numbers-pad layer _PAD. BASE layer led brightens when capslock is on. * _PAD had the wrong period, fixed. _PAD layer had the KC_DOT instead of KC_KP_DOT. * Options for navigation keys arrow hardware key. Compile options added to have a complete navigation cluster around the additional hardware key for 'arrow' layout, both for triangle left handed arrows and flat right handed arrows. * Added _FUN layer in text Qwerty. _FUN text layer was by mistake missing/deleted in the qwerty-dvorak readme. * Added graphical visualization of all layers. * Graphics: _RAR 'Capslock', _NSY '~' corrected. Text representation of layers was correct, graphics corrected. * Compile Option arrows in a vi(1) editor layout. Vi(1) is a much loved editor, with its own peculiar arrow layout on HJKL (as it appears in Qwerty). It seems possible some Qwerty vi users might find it fun this way for regular arrows as well. The 'arrow' hardware layout, compiled with arrow cluster, follows the vi(1) arrow arrangement. * More layer overview graphics files for the readmes. Added a '40% x 400%' to the 3D layer overview image (top). Added overview of all layers in a readable way (Dvorak² only). Added a guide to show where what is similar on layers. This should help with learning. Added a graphic showing what key activates what layer. Added graphics that show what layer subsets are active in certain modes (Dvorak² and Qwerty/Dvorak). Fixed mistake: _Tab_ missing in layer `_PAD` graphics file. * 'Tab' inserted in overview graphics for _PAD layer. * Corrected mistake in similar layer keys. LGUI on _ACC * Added overview graphics for Qwerty/Dvorak. Overview of layers, similar keys on similar layers, activation. * Compile option to change ⮘ â®™ ⮚ â®› into ☠☒ ☑ 🗹 Layer _DRA, _DDD. Checkboxes seem handy for lists. Set default on in keymap.c. Pointers seem rarely useful. Right arrow sometimes as a bullet point marker. All affected graphics updated. * First overview image correction. Last layer is not 'symbols' due to its numbers. Some art improvement. * Minor tekst correction (author Minivan config). * Short features overview and git lib fix. * noteâ´ as example * Improvements all over the place. The keymap is now modular dual layout. There is a common system, and there can then be two letter/numbers layer pairs be compiled with it, which are separately defined and documented in ./bases… files. Speed measuring and text size counting added. There is an additional Unicode layer, for a total of three. The “descramble Dvorak†layer is now just a function, as was originally intended. * Wrong link to Dvorak manual, stray ‛r’ character. * Splitting the layouts so they are not pairs of 4. The layers had been configurable only as a set of a BASE and letter layer with another BASE and letter layer: Dvorak + Dvorak² and Qwerty+Dvorak. Now Dvorak, Dvorak² and Qwerty can be individually configured, to be on either the Default or Alternate spots in the dual layout (Dvorak² only supports Alternate, due to its “_HALF_ descramble†mode). * Added Colemak layout. Some tidying up of documentation wrt DEF/ALT base layer identifiers. Fixed missing ‛:’ on the graphics for Qwerty. * stale letter * fix modified submodules * removed redundant code testing twice for non-zero * Speed measuring precision fix. The calculation of “int speed;†caused great loss of precision. * Added overview of layers by key. Makes it easier to see the associations of meanings per key. * Dvorak descramble by key overview Forgot to add. * Minor readme format fiddle. * Graphics: blank keys are grey, fix one mistake. * Compilation as a single layout. Layer definitions _ALT_BASE and _ALT_NSY (enum) are simply #redefined as preprocessor numbers equal to _DEF_BASE and _DEF_NSY (see user_config.h, lowest reference to MINIFAN_SINGLE_LAYOUT). * Single layout compile option See user_config.h lowest reference to MINIFAN_SINGLE_LAYOUT for the why of the how. * RShift toggles to _RAR when held ≥ 500 ms. “Qwerty with arrows on BASEâ€, will need a key to _RAR layer. It mirrors the behavior of LShift. It is generally useful. Removed useless user options regarding LShift layer toggle. It will have to be _PAD. * Layer switch graphic update per last push. Forgot to update the default base layer switching graphic. * Preconfigured optional ‛Command’ hold key to _RAR layer. This is a third way to reach the _RAR layer, useful if the furthest right key on row 1 is changed to an uncluttered BASE layer arrow. This further prepares the way for a Qwerty layout with arrows on BASE. * Changed ‛Command’ hardware key to TG(_RAR) MO(_RAR) doesn't work, because it doesn't follow a change in base layers, which happens on _RAR. * Corrected wrong all-layers-by-key upload readme.md * More graphics = more fun: keycap view in readme. Preparing to integrate a number pad base layer. Shortened hold time for right/left Shift layer toggles to 200 ms. * Too light grey for “1470†on three layout graphics. * Added a numbers pad Base layout option. This numbers pad layer is in the format of a numbers pad keyboard/cluster. It has a second layer, which is normal for all Base layers. In this case, the second layer provides sub-/super-script versions of the numbers, in the same layout. * Keycap view numpad improvements. * Graphics: forgot to cut off southpaw/arrow on two keycap views. * Preprocessor identifier for “MIT†Planck spacebar. Trans-minivan preprocessor statements augmented with an identifier which might work for a Planck keyboard with two unit spacebar. At this point, the “trans minivan†code only could make porting to other keyboards less of a chore. It remains untested. Only visual inspection of the preprocessing regarding the amount of keys in the layout has been done. * Tweak of common layout graphic impression. This would also allow indication of a number pad. * Improved dual numpad layer & graphics. All numbers/symbols seem to get affected by NumLock, hence they all needed to show that in the graphic documentation. Tab was removed in favor of Numpad ‛=’, and comma replaced by numpad-comma. * Committing partial job on numpad Base layers. Hardware problem here, don't want to loose the data. * Three issues: header file, numpad Base, Tab key. This should complete previous unexpected commit. â‘  Documentation and precedent for a base layer with its own header file, base_NAME.h. This allows someone writing a new Base layer pair, to (un)set user configuration options in user_config.h. â‘¡ Numbers pad Base layer added, different variants. The common numbers pad also has a new optional layout (square), and can be removed by user configuration option (because one might already compile with the Base layer numbers pad).. â‘¢ It turns out there was an easy solution to the Tab key anomaly. Uncluttered Tab is now located both on BON and ACC layers, on intuitive locations opposing Control, which is also in the right spot. Basic modifiers for Tab works well now. * Graphics for Base numpad single square: correction. Showed wrong insertion key for 'command' / 'south paw' hardware key. … * ‛South paw’ default GUI. Graphics. TOC user config. Made ‛south paw’ be GUI by default. Improved graphics appearance. Ordered options in user_config.h, added table of contents. * User config cleanup & added a compact alternate. The normal user configuration, which is heavily documented and therefore a bit unwieldy, can now optionally be done in another file, without any documentation. * Base graphics fix, _ACC/_NSY hold switch option * Added a Qwerty with arrows on base. Added a graphic in readme for Dvorak descramble (for documentation predictability). * Put `~ on the _BON layer. â‘  There was no uncluttered `~ available. On Qwerty Base Arrow the `~ key got even more sidelined. â‘¡ Improved Qwerty Base Arrow manual. * Option to harmonize Qwerty with Qwerty Base Arrow Key ‛/?’ is different on Qwerty Base Arrow, which will lead to typing arrows for people who have both kinds of Qwerty running. This option adds this key in the same spot as where it is on Qwerty Base Arrow, but only if Qwerty Base Arrow is being compiled. * See previous commit (Qwerty harmonization) * Efficiency fix. +Workman layout. Workman layout added. Serious efficiency mistakes discovered and fixed: â‘  There was no check on Delete on Base layer, to see if another key had been pressed. Fixed. â‘¡ The Shifts on Base did not provide a Shift for the _BON layer accented characters. Fixed. Fixing was painless, proving the code is stable and maintainable. * Changed Tab/CTL on _ACC/_DRA, μ, T.O.C. readme.md μ was forgotten (French), added on _ACC. This caused Tab to get displaced and stacked with Control, which ends up being better anyway. This also meant _ACC needed Left-Control, and therefore _DRA needed to switch Tab and Control, because it needs to complement _ACC with Right-Control (to be able to type all modifiers with Tab). âž¡ Overview graphics are not yet updated. _DRA and _ACC are now out of sync in the graphics documentation. To be fixed soon. Chapter on language support added in readme. Table of Contents added to readme. * Updated all graphics (_BON/_DRA Tab/Control/μ). Some fiddles with readme. * Led on/off at startup, RAlt on Base option. It is hard to believe, but the todo que seems empty! * Minor changes in readme. * Minor documentation improvement (RAlt/_RAR). * Minor changes readme. Removed “not tested yet …â€, because that becomes wrong once it is tested. * Added a blank keycaps graphic. * Lower saturation letters Dvorak-descramble keycap. ;-] * One key change in personal keycap graphic. ;-] * Forgot _NSY layer in keycap qwerty basearrow * Moved speed/count startup setting in user_config.h Moved to chapter startup settings. (These last commits are more like some loose ends with the last ongoing topics. It isn't active development, nothing new gets started. If QMK requests more changes, even if it is a typo, just let me know.) * Travis Cl: “The LINK_TIME_OPTIMIZATION_ENABLE flag… … has been renamed to LTO_ENABLE.. Stop.†Changed it. * Adds a link to external resources in readme. A place to put gimp .xcf files if someone wants to modify/port the keymap. Perhaps links to varieties of Minifan on github. Maybe a video about the keymap, and such. Stuff that doesn't belong/fit on github, and is easy to update without pull requests. * RGBLIGHT_ENABLE rules.mk fixed, leds off for nop rules.mk RGBLIGHT_ENABLE can now be set to “no†without issue. Compile option to have leds off in Default Base layer. * Transparency bug fixed. Default layer was not set. This remained a hidden mistake, until Qwerty Base Arrow had a different layer hold key in one place. * Graphics doc correction, L/Rshift toggle config Qwerty Base Arrow fix: Keycap view showed unneeded and empty ‛South Paw’ key. All layers by key shows 45 Minivan version, title said “44â€. Added user configuration options to alter what is on the short and long toggle on Left and Right Shift. * Improved “why this layout†in readme. Wanted to add that numbers & symbols layer can be reached by both thumbs. It seems quite a drawback if that is not possible, to constantly need to hold down the same thumb, especially for programming ? It seemed worthwhile to mention. * Reduced size of readme, dvorak-descramble, todo. Stuff got a bit out of hand. * one letter typo * renumbered readme, _fun_stay initialization Renumbered readme chapters to start from 1 not 0. Other minor edits. Sticky on/off for _FUN layer seemed to be unpredictable on startup. * Letter Ñ (capital) fix. I seem to remember messing with this recently, must have damaged this letter :-(. Capital was missing. * Bare bones base numpad all layer by key. I seemed to have forgotten to hide the common layers for this version. Which doesn't matter a whole lot but this is a bit better and as it was meant. --- .../minivan/keymaps/josjoha/base_colemak.c | 201 ++ .../minivan/keymaps/josjoha/base_colemak.md | 95 + .../minivan/keymaps/josjoha/base_dvorak.c | 200 ++ .../minivan/keymaps/josjoha/base_dvorak.md | 92 + .../keymaps/josjoha/base_dvorak_descramble.c | 242 ++ .../keymaps/josjoha/base_dvorak_descramble.md | 135 + .../minivan/keymaps/josjoha/base_numpad.c | 409 +++ .../minivan/keymaps/josjoha/base_numpad.h | 94 + .../minivan/keymaps/josjoha/base_numpad.md | 364 +++ .../minivan/keymaps/josjoha/base_qwerty.c | 209 ++ .../minivan/keymaps/josjoha/base_qwerty.md | 100 + .../keymaps/josjoha/base_qwerty_basearrow.c | 243 ++ .../keymaps/josjoha/base_qwerty_basearrow.h | 63 + .../keymaps/josjoha/base_qwerty_basearrow.md | 132 + .../minivan/keymaps/josjoha/base_workman.c | 203 ++ .../minivan/keymaps/josjoha/base_workman.md | 95 + .../minivan/keymaps/josjoha/config.h | 48 + .../minivan/keymaps/josjoha/keymap.c | 1754 +++++++++++++ .../keymaps/josjoha/minifan_config_compact.h | 102 + .../minivan/keymaps/josjoha/readme.md | 1198 +++++++++ .../minivan/keymaps/josjoha/rules.mk | 19 + .../minivan/keymaps/josjoha/todo.md | 34 + .../minivan/keymaps/josjoha/unicode_macros.c | 2272 +++++++++++++++++ .../minivan/keymaps/josjoha/unicode_macros.h | 44 + .../minivan/keymaps/josjoha/unicode_weurope.h | 288 +++ .../minivan/keymaps/josjoha/user_config.h | 721 ++++++ 26 files changed, 9357 insertions(+) create mode 100644 keyboards/thevankeyboards/minivan/keymaps/josjoha/base_colemak.c create mode 100644 keyboards/thevankeyboards/minivan/keymaps/josjoha/base_colemak.md create mode 100644 keyboards/thevankeyboards/minivan/keymaps/josjoha/base_dvorak.c create mode 100644 keyboards/thevankeyboards/minivan/keymaps/josjoha/base_dvorak.md create mode 100644 keyboards/thevankeyboards/minivan/keymaps/josjoha/base_dvorak_descramble.c create mode 100644 keyboards/thevankeyboards/minivan/keymaps/josjoha/base_dvorak_descramble.md create mode 100644 keyboards/thevankeyboards/minivan/keymaps/josjoha/base_numpad.c create mode 100644 keyboards/thevankeyboards/minivan/keymaps/josjoha/base_numpad.h create mode 100644 keyboards/thevankeyboards/minivan/keymaps/josjoha/base_numpad.md create mode 100644 keyboards/thevankeyboards/minivan/keymaps/josjoha/base_qwerty.c create mode 100644 keyboards/thevankeyboards/minivan/keymaps/josjoha/base_qwerty.md create mode 100644 keyboards/thevankeyboards/minivan/keymaps/josjoha/base_qwerty_basearrow.c create mode 100644 keyboards/thevankeyboards/minivan/keymaps/josjoha/base_qwerty_basearrow.h create mode 100644 keyboards/thevankeyboards/minivan/keymaps/josjoha/base_qwerty_basearrow.md create mode 100644 keyboards/thevankeyboards/minivan/keymaps/josjoha/base_workman.c create mode 100644 keyboards/thevankeyboards/minivan/keymaps/josjoha/base_workman.md create mode 100644 keyboards/thevankeyboards/minivan/keymaps/josjoha/config.h create mode 100644 keyboards/thevankeyboards/minivan/keymaps/josjoha/keymap.c create mode 100644 keyboards/thevankeyboards/minivan/keymaps/josjoha/minifan_config_compact.h create mode 100644 keyboards/thevankeyboards/minivan/keymaps/josjoha/readme.md create mode 100644 keyboards/thevankeyboards/minivan/keymaps/josjoha/rules.mk create mode 100644 keyboards/thevankeyboards/minivan/keymaps/josjoha/todo.md create mode 100644 keyboards/thevankeyboards/minivan/keymaps/josjoha/unicode_macros.c create mode 100644 keyboards/thevankeyboards/minivan/keymaps/josjoha/unicode_macros.h create mode 100644 keyboards/thevankeyboards/minivan/keymaps/josjoha/unicode_weurope.h create mode 100644 keyboards/thevankeyboards/minivan/keymaps/josjoha/user_config.h diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_colemak.c b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_colemak.c new file mode 100644 index 0000000000..d4fe348268 --- /dev/null +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_colemak.c @@ -0,0 +1,201 @@ +/* + * License (GPL): + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + + * Author: © 2020 by Jos Boersema + * + */ + +// --------------------------------------v--------------------------------------- +// Configuration: +// --------------------------------------v--------------------------------------- + +// --------------------------------------^--------------------------------------- +// Below here no more comfortable configuration options..... +// --------------------------------------^--------------------------------------- + + + /* Redefine a layer in this file + * + * _Activate_ one or more of the below BASESFILE_LAYER_..., to redefine the layer + * in this file. The version in ./keymap.c will be ignored. Keep in mind to use + * transparent keys (_______) for “hold†layer switch keys on the BASE map, for + * your new layer. + */ +// #define BASESFILE_LAYER_ACC +// #define BASESFILE_LAYER_DRA +// #define BASESFILE_LAYER_BON +// #define BASESFILE_LAYER_PAD +// #define BASESFILE_LAYER_MOV +// #define BASESFILE_LAYER_RAR +// #define BASESFILE_LAYER_FUN + + /* ⬇ */ + + /* Layer _..._BASE: Qwerty, normal BASE layer and 'default' layer + * + * - Dual use keys create a delay in the key (tap/hold keys), therefore + * space is not dual use (most ued key), neither is hyphen. + */ + +// Process user configuration wrt ‛Default’ or ‛Alternative’ spot for this layout. +# if defined(BASE_COLEMAK__DEF_BASE) + [ _DEF_BASE ] = LAYOUT_redefined ( +# elif defined(BASE_COLEMAK__ALT_BASE) + [ _ALT_BASE ] = LAYOUT_redefined ( +# endif + +/* + Layer _..._BASE (Letters). This is Colemak, except backspace/tab + | Right hand + index>middl>ring> pinky>pinky2> // Keys by finger + -o- <|> ... //-o- BASE access + Esc qQ wW fF pP gG | jJ lL uU yY ;: Bksp + Tab+LCtl aA rR sS tT dD | hH nN eE iI oO '" + LSht+_PAD zZ xX cC vV bB | kK mM ,< .> /? RSht+_FUN + +_MOVâµ | +_RARâ¶ + --------------------------------------------------------------------------------------- + Left+LAlt Del;_ACC _..._NSY(_DRA) Enter+_MOV| Space _..._NSY(_DRA) LGUI Right;_RAR + hold holdâ‚â‚,₂٭₎ hold | holdâ‚â‚,₂٭₎ hold // switch type + holdâ‚₂₎ ^-┃-----------------------+--------^ ┃ // â‚₎ both = _DRA + â”—â”â”â”_BONâ”â”â”╋┅───────────┄┄┄«or»┄┄┄─+─────────┅┛ // ₂₎ both = _BON + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> // Keys by number + ^³ ^â´ // Optional more keys + (RGUI) (_MOV) + + â‚) Dual hold for _DRA, single hold for _..._NSY. Marked by: ^--…--^ + â‚‚) Hold key “<2†with eitherÙ­ key “<3†or “3>†for _BON, single hold “<2†for _ACC. Marked: â”—â”â”…â”â”â”› + ₃) 'South paw' hardware configuration. Configurable, default shown. + â‚„) 'Arrow' hardware configuration Configurable, default shown. + ₃ â‚„) There are two more optional hardware keys, to make it easier to compile for + a 12x12x12x11 or 12x12x12x12 layouts. + â‚…) Left Shift when pressed with another key. Medium long: to toggle _PAD. Long: toggle _MOV. + ₆) Right shift when pressed with another key. medium long: to toggle _FUN. Long: toggle _RAR. +*/ +// +// , inde>, midd> , ring> , pink> , pink2> , +// -*!- , , , , , <|,> , , , , , , + KC_ESC , KC_Q , KC_W , KC_F , KC_P , KC_G , KC_J , KC_L , KC_U , KC_Y , KC_SCLN , KC_BSPC , + LCTL_T ( KC_TAB ) , KC_A , KC_R , KC_S , KC_T , KC_D , KC_H , KC_N , KC_E , KC_I , KC_O , KC_QUOT , + CHOLTAP_LSHFT , KC_Z , KC_X , KC_C , KC_V , KC_B , KC_K , KC_M , KC_COMM , KC_DOT , KC_SLSH , CHOLTAP_RSHFT , +// ----------------------------------------------------------------------------------------------------------------- + LALT_T ( KC_LEFT ) + +# ifdef TRANSMINIVAN_LEFTSIDE + , MO ( _PAD ) +# endif + +# ifdef MORE_KEY__COMMAND + , MORE_key1_BASE +# endif + +# ifdef SWITCH_HOLD_ACC_NSY + , DUO_HOLD , CHOLTAP_ACCE +# else + , CHOLTAP_ACCE , DUO_HOLD +# endif + , LT__MOV__KC_ENT + +# ifdef TRANSMINIVAN_MIDLEFT + , TRANS_MIDLEFT +# endif + + , KC_SPC , DUO_HOLD , KC__YGUI + +# ifdef TRANSMINIVAN_RIGHTSIDE + , MO ( _FUN ) +# endif + +# ifdef MORE_KEY__ARROW + , MORE_key2 +# endif + + , CHOLTAP_LAYR +// , , , <|,> , , , +// <1 ± ± , <2 , <3 , <4 |, 4> , 3> , 2> , ± ± 1> + + ), + + /* ⬆⬇ */ + + /* Layer _..._NSY: Numbers and symbols, to work with the Colemak base layer above (unchanged from Qwerty). + * Off hand Number input (-.Bksp ent (shft)tab). + */ + // KC_TILD does not work there, because of a limitation with shifted keys (nov 2019). + +// Process user configuration wrt ‛Default’ or ‛Alternative’ spot for this layout. +# if defined(BASE_COLEMAK__DEF_BASE) + [ _DEF_NSY ] = LAYOUT_redefined ( +# elif defined(BASE_COLEMAK__ALT_BASE) + [ _ALT_NSY ] = LAYOUT_redefined ( +# endif + +/* + Layer _..._NSY (Numbers and SYmbols). This fits the above Colemak layer _..._BASE + + index>middl>ring>pin>pink2> + -*- <|> //(toggle) Access on _FUN + BASE ! @ # $ % | ^ & * ( ) Del + Tab+LCtl 1! 2@ 3# 4$ 5% | 6^ 7& 8* 9( 0) `~+RCtl + -+LSht [{ ]} -_ \| =+ | + | _ { } `~+RSht // limitation prevents ~ + ^^ ^ // Only differences with normal version _..._NSY + --------------------------------------------------------------------------- + Left+LAlt ___ ___ Ent | . ___ LGUI Right+RAlt + -*- <|> -*- //(hold) Access on _..._BASE + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> + ^ ^ + (RGUI) (_MOV) +*/ +// +// +// , index> , middl> , ring> , pinky> , pink2> , +// , -*- , , , , <|,> , , , , , , + CTO_BASE , KC_EXLM , KC_AT , KC_HASH , KC_DLR , KC_PERC , KC_CIRC , KC_AMPR , KC_ASTR , KC_LPRN , KC_RPRN , KC_DEL , + LCTL_T ( KC_TAB ) , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , RCTL_T ( KC_GRV ) , + LSFT_T ( KC_MINS ) , KC_LBRC , KC_RBRC , KC_MINS , KC_BSLS , KC_EQL , KC_PLUS , KC_PIPE , KC_UNDS , KC_LCBR , KC_RCBR , RSFT_T ( KC_TILD ) , +// --------------------------------------------------------------------------------------------------------------------------------------------- + LALT_T ( KC_LEFT ) + +# ifdef TRANSMINIVAN_LEFTSIDE + , XXXXXXX +# endif + +# ifdef MORE_KEY__COMMAND + , MORE_key1 +# endif + + , _______ , _______ , KC_ENT + +# ifdef TRANSMINIVAN_MIDLEFT + , TRANS_MIDLEFT +# endif + + , KC_DOT , DUO_HOLD , KC__YGUI + +# ifdef TRANSMINIVAN_RIGHTSIDE + , XXXXXXX +# endif + +# ifdef MORE_KEY__ARROW + , MORE_key2 +# endif + + , RALT_T ( KC_RGHT ) +// , , -*- , <|,> , -*- , , +// <1 ± ± , <2 , <3 , <4 |, 4> , 3> , 2> , ± ± 1> + + ), + + /* ⬆⬇ */ diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_colemak.md b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_colemak.md new file mode 100644 index 0000000000..1cafd7ddf1 --- /dev/null +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_colemak.md @@ -0,0 +1,95 @@ +# Minifan layout + +Compiled for: Colemak +===================== + +This file details the compile version `#define BASE_COLEMAK__DEF_BASE, BASE_COLEMAK__ALT_BASE`. +This is a Colemak layout. + +Control follows Unix logic here (left/center), not Colemak Backspace. + +Colemak keymaps +--------------- + +──────────Colemak────────────── + +![Minivan layout Image BASEdef](http://socialism.nl/misc/minivan/minivan_base_layer_colemak_ve.jpg) +Layer: `..._BASE` + +![Minivan layout Image BASEdef](http://socialism.nl/misc/minivan/minivan_nsy_layer_qwerty_vb.jpg) +Layer: `..._NSY` + +──────────in common──────────── + +(…) + +For more about the other layers, see âž¡ ![readme.md](./readme.md) ⬅ + +![Minivan illustration Overview layers by key, Colemak](http://socialism.nl/misc/minivan/minivan-all-layers-clear-visualization-by-key_colemak_2000_vh.jpg) + +Layers (text) +============= + + ───────────────Colemak──────────────── + Layer _..._BASE (Letters). This is Colemak, except backspace/tab + | Right hand + index>middl>ring> pinky>pinky2> // Keys by finger + -o- <|> ... //-o- BASE access + Esc qQ wW fF pP gG | jJ lL uU yY ;: Bksp + Tab+LCtl aA rR sS tT dD | hH nN eE iI oO '" + LSht+_PAD zZ xX cC vV bB | kK mM ,< .> /? RSht+_FUN + +_MOVâµ | +_RARâ¶ + --------------------------------------------------------------------------------------- + Left+LAlt Del;_ACC _..._NSY(_DRA) Enter+_MOV| Space _..._NSY(_DRA) RGUI Right;_RAR + hold holdâ‚â‚,₂٭₎ hold | holdâ‚â‚,₂٭₎ hold // switch type + holdâ‚₂₎ ^-┃-----------------------+--------^ ┃ // â‚₎ both = _DRA + â”—â”â”â”_BONâ”â”â”╋┅───────────┄┄┄«or»┄┄┄─+─────────┅┛ // ₂₎ both = _BON + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> // Keys by number + ^³ ^â´ // Optional more keys + (LGUI) (_MOV) + + â‚) Dual hold for _DRA, single hold for _..._NSY. Marked by: ^--…--^ + â‚‚) Hold key “<2†with eitherÙ­ key “<3†or “3>†for _BON, single hold “<2†for _ACC. Marked: â”—â”â”…â”â”â”› + ₃) 'South paw' hardware configuration. Configurable, default shown. + â‚„) 'Arrow' hardware configuration Configurable, default shown. + ₃ â‚„) There are two more optional hardware keys, to make it easier to compile for + a 12x12x12x11 or 12x12x12x12 layouts. + â‚…) Left Shift when pressed with another key. Medium long: to toggle _PAD. Long: toggle _MOV. + ₆) Right shift when pressed with another key. medium long: to toggle _FUN. Long: toggle _RAR. + +Remarks: The left modifiers have a slight delay in combination with an outside pointer device (mouse, stylus). +It seems this will be difficult to fix, because it is spread over two devices. To avoid the +±0.2 second delay, activate a layer where the modifiers are direct (`_PAD`), using the layer toggle on left shift. + +The two keys with ';' (Del;`_ACC`, Right;`_RAR`) do not auto-repeat on double tap, like QMK normal layer-tap keys. +There is an uncluttered _Delete_ on `_PAD`, an uncluttered _Right_ arrow on the `_MOV` layer. + +Holding both `_DEF_NSY` keys left and right of the "split space bar" (enter, space) results in layer `_DRA`. + +Holding either one of the just above mentioned `_DEF_NSY` layer keys (<3 and 3>), with the `_ACC` layer key +(on <2) results in layer `_BON`. + + +- - - + + + Layer _..._NSY (Numbers and SYmbols). (Same as Qwerty numbers layer.) + + index>middl>ring>pin>pink2> + -*- <|> //(toggle) Access on _FUN + BASE ! @ # $ % | ^ & * ( ) Del + Tab+LCtl 1! 2@ 3# 4$ 5% | 6^ 7& 8* 9( 0) `~+RCtl + -+LSht [{ ]} -_ \| =+ | + | _ { } `~+RSht // limitation prevents ~ + ^^ ^ // Only differences with Dvorak version _DEF_NSY + --------------------------------------------------------------------------- + Left+LAlt ___ ___ Ent | . ___ RGUI Right+RAlt + -*- <|> -*- u //(hold) Access on _DEF_BASE + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> + ^ ^ + (LGUI) (_MOV) + + + +- - - + + diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_dvorak.c b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_dvorak.c new file mode 100644 index 0000000000..be9685632c --- /dev/null +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_dvorak.c @@ -0,0 +1,200 @@ +/* + * License (GPL): + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + + * Author: © 2020 by Jos Boersema + * + */ + +// --------------------------------------v--------------------------------------- +// Configuration: +// --------------------------------------v--------------------------------------- + + +// --------------------------------------^--------------------------------------- +// Below here no more comfortable configuration options..... +// --------------------------------------^--------------------------------------- + + /* Redefine a layer in this file + * + * _Activate_ one or more of the below BASESFILE_LAYER_..., to redefine the layer + * in this file. The version in ./keymap.c will be ignored. Keep in mind to use + * transparent keys (_______) for “hold†layer switch keys on the BASE map, for + * your new layer. + */ +// #define BASESFILE_LAYER_ACC +// #define BASESFILE_LAYER_DRA +// #define BASESFILE_LAYER_BON +// #define BASESFILE_LAYER_PAD +// #define BASESFILE_LAYER_MOV +// #define BASESFILE_LAYER_RAR +// #define BASESFILE_LAYER_FUN + + /* ⬇ */ + + /* Layer _..._BASE: default BASE layer (Dvorak) + * + * - Dual use keys create a delay in the key (tap/hold keys), therefore + * space is not dual use (most used key), neither is hyphen. + */ + +// Process user configuration wrt ‛Default’ or ‛Alternative’ spot for this layout. +# if defined(BASE_DVORAK__DEF_BASE) + [ _DEF_BASE ] = LAYOUT_redefined ( +# elif defined(BASE_DVORAK__ALT_BASE) + [ _ALT_BASE ] = LAYOUT_redefined ( +# endif + +/* + Layer _..._BASE (LeTteRs, standard Dvorak) + | Right hand + index>middl>ring> pinky>pinky2> // Keys by finger + -o- <|> ... //-o- BASE access + Esc '" ,< .> pP yY | fF gG cC rR lL Bksp + Tab+LCtl aA oO eE uU iI | dD hH tT nN sS -_ + LSht+_PAD ;: qQ jJ kK xX | bB mM wW vV zZ RSht+_FUN + +_MOVâµ | +_RARâ¶ + --------------------------------------------------------------------------------------- + Left+LAlt Del;_ACC _..._NSY(_DRA) Enter+_MOV| Space _..._NSY(_DRA) LGUI Right;_RAR + hold holdâ‚â‚,₂٭₎ hold | holdâ‚â‚,₂٭₎ hold // switch type + holdâ‚₂₎ ^-┃-----------------------+--------^ ┃ // â‚₎ both = _DRA + â”—â”â”â”_BONâ”â”â”╋┅───────────┄┄┄«or»┄┄┄─+─────────┅┛ // ₂₎ both = _BON + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> // Keys by number + ^³ ^â´ // Optional more keys + … … + + â‚) Dual hold for _DRA, single hold for _..._NSY. Marked by: ^--…--^ + â‚‚) Hold key “<2†with eitherÙ­ key “<3†or “3>†for _BON, single hold “<2†for _ACC. Marked: â”—â”â”…â”â”â”› + ³) 'South paw' hardware configuration + â´) 'Arrow' hardware configuration + ³ â´) There are two more optional hardware keys, to make it easier to compile for + a 12x12x12x11 or 12x12x12x12 layouts. + âµ) Left Shift when pressed with another key. Medium long: to toggle _PAD. Long: toggle _MOV. + â¶) Right shift when pressed with another key. medium long: to toggle _FUN. Long: toggle _RAR. +*/ +// +// , inde>, midd>, ring>, pink>, pink2> , +// -*!- , , , , , <|,> , , , , , , + KC_ESC , KC_QUOT , KC_COMM , KC_DOT , KC_P , KC_Y , KC_F , KC_G , KC_C , KC_R , KC_L , KC_BSPC , + LCTL_T ( KC_TAB ) , KC_A , KC_O , KC_E , KC_U , KC_I , KC_D , KC_H , KC_T , KC_N , KC_S , KC_MINS , + CHOLTAP_LSHFT , KC_SCLN , KC_Q , KC_J , KC_K , KC_X , KC_B , KC_M , KC_W , KC_V , KC_Z , CHOLTAP_RSHFT , +// ----------------------------------------------------------------------------------------------------------------- + LALT_T ( KC_LEFT ) + +# ifdef TRANSMINIVAN_LEFTSIDE + , MO ( _PAD ) +# endif + +# ifdef MORE_KEY__COMMAND + , MORE_key1_BASE +# endif + +# ifdef SWITCH_HOLD_ACC_NSY + , DUO_HOLD , CHOLTAP_ACCE +# else + , CHOLTAP_ACCE , DUO_HOLD +# endif + + , LT__MOV__KC_ENT + +# ifdef TRANSMINIVAN_MIDLEFT + , TRANS_MIDLEFT +# endif + + , KC_SPC , DUO_HOLD , KC__YGUI + +# ifdef TRANSMINIVAN_RIGHTSIDE + , MO ( _FUN ) +# endif + +# ifdef MORE_KEY__ARROW + , MORE_key2 +# endif + + , CHOLTAP_LAYR +// , , , <|,> , , , +// <1 ± ± , <2 , <3 , <4 |, 4> , 3> , 2> , ± ± 1> + + ), + + /* ⬆⬇ */ + + /* Layer _..._NSY: Numbers and symbols. + * Off hand Number input (-.Bksp ent (shft)tab). + */ + // KC_TILD does not work there, because of a limitation with shifted keys (nov 2019). + +// Process user configuration wrt ‛Default’ or ‛Alternative’ spot for this layout. +# if defined(BASE_DVORAK__DEF_BASE) + [ _DEF_NSY ] = LAYOUT_redefined ( +# elif defined(BASE_DVORAK__ALT_BASE) + [ _ALT_NSY ] = LAYOUT_redefined ( +# endif + +/* + Layer _..._NSY (Numbers and SYmbols) + + index>middl>ring>pin>pink2> + -*- <|> //(toggle) Access on _FUN + BASE ! @ # $ % | ^ & * ( ) Del + Tab+LCtl 1! 2@ 3# 4$ 5% | 6^ 7& 8* 9( 0) `~+RCtl + -+LSht [{ ]} /? \| =+ | + | ? { } `~+RSht // limitation prevents ~ + --------------------------------------------------------------------------- + Left+LAlt ___ ___ Ent | . ___ LGUI Right+RAlt + -*- <|> -*- //(hold) Access on _..._BASE + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> + … … +*/ +// +// +// , index> , middl> , ring> , pinky> , pink2> , +// , -*- , , , , <|,> , , , , , , + CTO_BASE , KC_EXLM , KC_AT , KC_HASH , KC_DLR , KC_PERC , KC_CIRC , KC_AMPR , KC_ASTR , KC_LPRN , KC_RPRN , KC_DEL , + LCTL_T ( KC_TAB ) , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , RCTL_T ( KC_GRV ) , + LSFT_T ( KC_MINS ) , KC_LBRC , KC_RBRC , KC_SLSH , KC_BSLS , KC_EQL , KC_PLUS , KC_PIPE , KC_QUES , KC_LCBR , KC_RCBR , RSFT_T ( KC_TILD ) , +// --------------------------------------------------------------------------------------------------------------------------------------------- + LALT_T ( KC_LEFT ) + +# ifdef TRANSMINIVAN_LEFTSIDE + , TRANS_LEFT +# endif + +# ifdef MORE_KEY__COMMAND + , MORE_key1 +# endif + + , _______ , _______ , KC_ENT + +# ifdef TRANSMINIVAN_MIDLEFT + , TRANS_MIDLEFT +# endif + , KC_DOT , DUO_HOLD , KC__YGUI + +# ifdef TRANSMINIVAN_RIGHTSIDE + , TRANS_RIGHT +# endif + +# ifdef MORE_KEY__ARROW + , MORE_key2 +# endif + + , RALT_T ( KC_RIGHT ) +// , , -*- , <|,> , -*- , , +// <1 ± ± , <2 , <3 , <4 |, 4> , 3> , 2> , ± ± 1> + + ), + + + /* ⬆⬇ */ diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_dvorak.md b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_dvorak.md new file mode 100644 index 0000000000..0dabcc7ade --- /dev/null +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_dvorak.md @@ -0,0 +1,92 @@ +# Minifan layout + +Compiled for: Dvorak +==================== + +This file details the compile version `#define BASE_DVORAK__DEF_BASE, +BASE_DVORAK__ALT_BASE`. This is a Dvorak layout. + +Dvorak keymaps +-------------- + +──────────Dvorak─────────────── + +![Minivan layout Image BASEdef-alt](http://socialism.nl/misc/minivan/minivan_base_layer_dvorak_ve.jpg) +Layer: `..._BASE` + +![Minivan layout Image NSYdef-alt](http://socialism.nl/misc/minivan/minivan_nsy_layer_dvorak_vb.jpg) +Layer: `..._NSY` + +──────────in common──────────── + +(…) + +For more about the other layers, see âž¡ ![readme.md](./readme.md) ⬅ + +![Minivan illustration Overview layers by key, Dvorak](http://socialism.nl/misc/minivan/minivan-all-layers-clear-visualization-by-key_dvorak_2000_vh.jpg) + +Layers (text) +============= + + Layer _..._BASE (LeTteRs, standard Dvorak) + | Right hand + index>middl>ring> pinky>pinky2> // Keys by finger + -o- <|> ... //-o- BASE access + Esc '" ,< .> pP yY | fF gG cC rR lL Bksp + Tab+LCtl aA oO eE uU iI | dD hH tT nN sS -_ + LSht+_PAD ;: qQ jJ kK xX | bB mM wW vV zZ RSht+_FUN + +_MOVâµ | +_RARâ¶ + --------------------------------------------------------------------------------------- + Left+LAlt Del;_ACC _DEF_NSY(_DRA) Enter+_MOV| Space _DEF_NSY(_DRA) RGUI Right;_RAR + hold holdâ‚â‚,₂٭₎ hold | holdâ‚â‚,₂٭₎ hold // switch type + holdâ‚₂₎ ^-┃-----------------------+--------^ ┃ // â‚₎ both = _DRA + â”—â”â”â”_BONâ”â”â”╋┅───────────┄┄┄«or»┄┄┄─+─────────┅┛ // ₂₎ both = _BON + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> // Keys by number + ^³ ^â´ // Optional more keys + (LGUI) (_MOV) + + â‚) Dual hold for _DRA, single hold for _DEF_NSY. Marked by: ^--…--^ + â‚‚) Hold key “<2†with eitherÙ­ key “<3†or “3>†for _BON, single hold “<2†for _ACC. Marked: â”—â”â”…â”â”â”› + ₃) 'South paw' hardware configuration. Configurable, default shown. + â‚„) 'Arrow' hardware configuration Configurable, default shown. + ₃ â‚„) There are two more optional hardware keys, to make it easier to compile for + a 12x12x12x11 or 12x12x12x12 layouts. + â‚…) Left Shift when pressed with another key. Medium long: to toggle _PAD. Long: toggle _MOV. + ₆) Right shift when pressed with another key. medium long: to toggle _FUN. Long: toggle _RAR. + +Remarks: The left modifiers have a slight delay in combination with an outside pointer device (mouse, stylus). +It seems this will be difficult to fix, because it is spread over two devices. To avoid the +±0.2 second delay, activate a layer where the modifiers are direct (`_PAD`), using the layer toggle on left shift. + +The two keys with ';' (Del;`_ACC`, Right;`_RAR`) do not auto-repeat on double tap, like QMK normal layer-tap keys. +There is an uncluttered _Delete_ on `_PAD`, an uncluttered _Right_ arrow on the `_MOV` layer. + +Holding both `_DEF_NSY` keys left and right of the "split space bar" (enter, space) results in layer `_DRA`. + +Holding either one of the just above mentioned `_DEF_NSY` layer keys (<3 and 3>), with the `_ACC` layer key +(on <2) results in layer `_BON`. + +- - - + + Layer _..._NSY (Numbers and SYmbols) + + index>middl>ring>pin>pink2> + -*- <|> //(toggle) Access on _FUN + BASE ! @ # $ % | ^ & * ( ) Del + Tab+LCtl 1! 2@ 3# 4$ 5% | 6^ 7& 8* 9( 0) `~+RCtl + -+LSht [{ ]} /? \| =+ | + | ? { } `~+RSht // limitation prevents ~ + --------------------------------------------------------------------------- + Left+LAlt ___ ___ Ent | . ___ RGUI Right+RAlt + -*- <|> -*- //(hold) Access on _DEF_BASE + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> + ^ ^ + (LGUI) (_MOV) + +- - - + +Key associations +---------------- +Key placement associations between layers for Dvorak. + +![Minivan layout Image associations](http://socialism.nl/misc/minivan/minivan-relationships_dvorak_1500_vd.jpg) + diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_dvorak_descramble.c b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_dvorak_descramble.c new file mode 100644 index 0000000000..78ad63ca64 --- /dev/null +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_dvorak_descramble.c @@ -0,0 +1,242 @@ +/* + * License (GPL): + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + + * Author: © 2020 by Jos Boersema + * + */ + +// --------------------------------------v--------------------------------------- +// Configuration: +// --------------------------------------v--------------------------------------- + + +// --------------------------------------^--------------------------------------- +// Below here no more comfortable configuration options..... +// --------------------------------------^--------------------------------------- + + /* Redefine a layer in this file + * + * _Activate_ one or more of the below BASESFILE_LAYER_..., to redefine the layer + * in this file. The version in ./keymap.c will be ignored. Keep in mind to use + * transparent keys (_______) for “hold†layer switch keys on the BASE map, for + * your new layer. + * + */ +// #define BASESFILE_LAYER_ACC +// #define BASESFILE_LAYER_DRA +// #define BASESFILE_LAYER_BON +// #define BASESFILE_LAYER_PAD +// #define BASESFILE_LAYER_MOV +// #define BASESFILE_LAYER_RAR +// #define BASESFILE_LAYER_FUN + + /* ⬆⬇ */ + + /* Layers _ALT_BASE, _ALT_NSY: Descramble basic layers if the computer itself is + * applying Dvorak remapping. + * + * When a computer is already set to Dvorak, connecting a + * keyboard which is natively Dvorak results in garbage. + * The computer side normal keycodes to Dvorak remapping goes + * on top of the wrong input, resulting in the following being + * effective: + * + * _DEF_BASE layer: | + * Esc - w v l f u i j p n Bspc + * Tab a r . g c e d y b o [ + * Sht s ' h t q x m , k ; Sht + * Enter Space + * _DEF_NSY layer: | + * _DEF_BASE ! @ # $ % ^ & * ( ) Bspc + * [ 1 2 3 4 5 \ ] z / = ` + * Sht 0 9 8 7 6 | } Z ? + ` + * Enter Space + * + * _ACC layer: | + * + * + * _DRA, _BON: same as _ACC: garbage. + * + * To solve this results in the strange layout given below. + * The result is close to a Qwerty layout. It will not be ideal + * for Qwerty typers because the symbols are not arranged that + * well. + */ + + + /* Layer _ALT_BASE: Descrambled _DEF_BASE layer for a computer already set to Dvorak (see above). + * It is a copy of _DEF_BASE, with moved around stuff, and points to _ALT_NSY instead + * of _DEF_NSY, because that too has some descrambled symbols. The rest is the same. + * + */ + +// This layout is only foreseen on ‛Alternate’. + [ _ALT_BASE ] = LAYOUT_redefined ( + +/* + Layer _ALT_BASE (Dvorak descramble mode for letters, end result shown) + | Right hand + index>middl>ring> pinky>pinky2> // Keys by finger + -o- <|> ... //-o- BASE access + Esc '" ,< .> pP yY | fF gG cC rR lL Bksp + Tab+LCtl aA oO eE uU iI | dD hH tT nN sS -_ + LSht+_PAD ;: qQ jJ kK xX | bB mM wW vV zZ RSht+_FUN + +_MOVâµ | +_RARâ¶ + --------------------------------------------------------------------------------------- + Left+LAlt Del;_ACC _ALT_NSY(_DRA) Enter+_MOV| Space _ALT_NSY(_DRA) LGUI Right;_RAR + hold holdâ‚â‚,₂٭₎ hold | holdâ‚â‚,₂٭₎ hold // switch type + holdâ‚₂₎ ^-┃-----------------------+--------^ ┃ // â‚₎ both = _DRA + â”—â”â”â”â”â”â”â”â”â”â”╋┅───────────┄┄┄«or»┄┄┄─+─────────┅┛ // ₂₎ both = _BON + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> // Keys by number + ^³ ^â´ // Optional more keys + (RGUI) (_MOV) + + â‚) Dual hold for _DRA, single hold for _DEF_NSY. Marked by: ^--…--^ + â‚‚) Hold key “<2†with eitherÙ­ key “<3†or “3>†for _BON, single hold “<2†for _ACC. Marked: â”—â”â”…â”â”â”› + ₃) 'South paw' hardware configuration. Configurable, default shown. + â‚„) 'Arrow' hardware configuration Configurable, default shown. + ₃ â‚„) There are two more optional hardware keys, to make it easier to compile for + a 12x12x12x11 or 12x12x12x12 layouts. + â‚…) Left Shift when pressed with another key. Medium long: to toggle _PAD. Long: toggle _MOV. + ₆) Right shift when pressed with another key. medium long: to toggle _FUN. Long: toggle _RAR. + + + _ALT_BASE input results in the same as _DEF_BASE with computer side Dvorak remapping. Only shown what changes: + + '" ,< .> pP yY | fF gG cC rR lL // row 4, result + oO eE uU iI | dD hH tT nN sS -_ // row 3, result + ;: qQ jJ kK xX | bB wW vV zZ // row 2, result + --------------------------------------------------------------------------------------- + _ALT_NSY _ALT_NSY // row 1, result + + (Keys for 'aA', '\|' and 'mM' are the same in Dvorak and Qwerty.) + + */ +// +// +// , inde>, middle> , ring> , pink> , pink2> , +// -*- , , , , , <|,> , , , , , -!- , + KC_ESC , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_BSPC , + LCTL_T ( KC_TAB ) , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN , KC_QUOT , + CHOLTAP_LSHFT , KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM , KC_DOT , KC_SLSH , CHOLTAP_RSHFT , +// ----------------------------------------------------------------------------------------------------------------- + LALT_T ( KC_LEFT ) + +# ifdef TRANSMINIVAN_LEFTSIDE + , MO ( _PAD ) +# endif + +# ifdef MORE_KEY__COMMAND + , MORE_key1_BASE +# endif + +# ifdef SWITCH_HOLD_ACC_NSY + , DUO_HOLD , CHOLTAP_ACCE +# else + , CHOLTAP_ACCE , DUO_HOLD +# endif + + , LT__MOV__KC_ENT + +# ifdef TRANSMINIVAN_MIDLEFT + , TRANS_MIDLEFT +# endif + + , KC_SPC , DUO_HOLD , KC__YGUI + +# ifdef TRANSMINIVAN_RIGHTSIDE + , MO ( _FUN ) +# endif + +# ifdef MORE_KEY__ARROW + , MORE_key2 +# endif + + , CHOLTAP_LAYR +// , , , <|,> , , , +// <1 ± ± , <2 , <3 , <4 |, 4> , 3> , 2> , ± ± 1> + + ), + + /* ⬆⬇ */ + + + /* Layer _ALT_NSY: Descrambled _DEF_NSY layer for a computer already set to Dvorak (see just above). + * + */ + // KC_TILD does not work there, because of a limitation with shifted keys (nov 2019). + + [ _ALT_NSY ] = LAYOUT_redefined ( + +/* + Layer _ALT_NSY (Dvorak descramble mode for numbers/symbols) + + index>middl>ring>pin>pink2> + -*- <|> //(toggle) Access on _FUN + BASE ! @ # $ % | ^ & * ( ) Del + Tab+LCtl 1! 2@ 3# 4$ 5% | 6^ 7& 8* 9( 0) `~+RCtl + -+LSht -_ =+ [{ \| ]} | } | { _ + `~+RSht // row 2, raw + --------------------------------------------------------------------------- + Left+LAlt ___ ___ Ent | . ___ LGUI Right+RAlt + -*- <|> -*- //(hold) Access on _DEF_BASE + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> + ^ ^ + (RGUI) (_MOV) + + _ALT_NSY input results in the same as _DEF_NSY with computer side Dvorak remapping. Only shown what changes: + + [{ ]} /? =+ | + ? { } // row 2, result + */ +// +// , index> , middl> , ring> , pinky> , pink2> , +// , -*- , , , , <|,> , , , , -*- , , + CTO_BASE , KC_EXLM , KC_AT , KC_HASH , KC_DLR , KC_PERC , KC_CIRC , KC_AMPR , KC_ASTR , KC_LPRN , KC_RPRN , KC_DEL , + LCTL_T ( KC_TAB ) , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , RCTL_T ( KC_GRV ) , + LSFT_T ( KC_MINS ) , KC_MINS , KC_EQL , KC_LBRC , KC_BSLS , KC_RBRC , KC_RCBR , KC_PIPE , KC_LCBR , KC_UNDS , KC_PLUS , RSFT_T ( KC_TILD ) , +// -------------------------------------------------------------------------------------------------------------------------------------------- + LALT_T ( KC_LEFT ) + +# ifdef TRANSMINIVAN_LEFTSIDE + , XXXXXXX +# endif + +# ifdef MORE_KEY__COMMAND + , MORE_key1 +# endif + + , _______ , _______ , KC_ENT + +# ifdef TRANSMINIVAN_MIDLEFT + , TRANS_MIDLEFT +# endif + + , KC_DOT , DUO_HOLD , KC__YGUI + +# ifdef TRANSMINIVAN_RIGHTSIDE + , XXXXXXX +# endif + +# ifdef MORE_KEY__ARROW + , MORE_key2 +# endif + + , RALT_T ( KC_RIGHT ) +// , , -*- , <|,> , -*- , , +// <1 ± ± , <2 , <3 , <4 |, 4> , 3> , 2> , ± ± 1> + + ), + + /* ⬆⬇ */ diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_dvorak_descramble.md b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_dvorak_descramble.md new file mode 100644 index 0000000000..74b69f7ed6 --- /dev/null +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_dvorak_descramble.md @@ -0,0 +1,135 @@ +# Minifan layout + +Compiled for: Dvorak² +===================== + +This file details the compile version `#define BASE_DVORAK_DESCRAMBLE__ALT_BASE` +which has a special version of Dvorak so that you can type Dvorak on a computer +*already* set to do Dvorak layout re-mapping. + +This can be useful on for example a laptop, for which the build-in +keyboard should to be in Dvorak. + +Dvorak² keymaps +--------------- + +──────────Dvorak─────────────── + +![Minivan layout Image BASEdef-alt](http://socialism.nl/misc/minivan/minivan_base_layer_dvorak_ve.jpg) +Layer: `..._BASE` + +![Minivan layout Image NSYdef-alt](http://socialism.nl/misc/minivan/minivan_nsy_layer_dvorak_vb.jpg) +Layer: `..._NSY` + +──────────in common──────────── + +(…) + +For more about the other layers, see âž¡ ![readme.md](./readme.md) ⬅ + +![Minivan illustration Overview layers by key, Dvorak](http://socialism.nl/misc/minivan/minivan-all-layers-clear-visualization-by-key_dvorak_2000_vh.jpg) + +Layers (text) +============= + + Layer _ALT_BASE (Dvorak descramble mode for letters) + | Right hand + index>middl>ring> pinky>pinky2> // Keys by finger + -o- <|> ... // -o- BASE access + Esc '" ,< .> pP yY | fF gG cC rR lL Bksp + Tab+LCtl aA oO eE uU iI | dD hH tT nN sS -_ + LSht+_PAD ;: qQ jJ kK xX | bB mM wW vV zZ RSht+_FUN + +_MOVâµ | +_RARâ¶ + --------------------------------------------------------------------------------------- + Left+LAlt Del;_ACC _ALT_NSY(_DRA) Enter+_MOV| Space _ALT_NSY(_DRA) RGUI Right;_RAR + hold holdâ‚â‚,₂٭₎ hold | holdâ‚â‚,₂٭₎ hold // switch type + holdâ‚₂₎ ^-┃-----------------------+--------^ ┃ // â‚₎ both = _DRA + â”—â”â”â”â”â”â”â”â”â”â”╋┅───────────┄┄┄«or»┄┄┄─+─────────┅┛ // ₂₎ both = _BON + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> // Keys by number + ^³ ^â´ // Optional more keys + (LGUI) (_MOV) + + â‚) Dual hold for _DRA, single hold for _DEF_NSY. Marked by: ^--…--^ + â‚‚) Hold key “<2†with eitherÙ­ key “<3†or “3>†for _BON, single hold “<2†for _ACC. Marked: â”—â”â”…â”â”â”› + ₃) 'South paw' hardware configuration. Configurable, default shown. + â‚„) 'Arrow' hardware configuration Configurable, default shown. + ₃ â‚„) There are two more optional hardware keys, to make it easier to compile for + a 12x12x12x11 or 12x12x12x12 layouts. + â‚…) Left Shift when pressed with another key. Medium long: to toggle _PAD. Long: toggle _MOV. + ₆) Right shift when pressed with another key. medium long: to toggle _FUN. Long: toggle _RAR. + + + This layer input results in the same as normal Dvorak if computer side Dvorak remapping is occuring. + Only shown what changes: + + '" ,< .> pP yY | fF gG cC rR lL // row 4, result + oO eE uU iI | dD hH tT nN sS -_ // row 3, result + ;: qQ jJ kK xX | bB wW vV zZ // row 2, result + ------------------------------------------------------------------------------- + _ALT_NSY _ALT_NSY // row 1, result + + (Keys for 'aA', '\|' and 'mM' are the same in Dvorak and Qwerty.) + +- - - + + Layer _ALT_NSY (Dvorak descramble mode for numbers-symbols) + + index>middl>ring>pin>pink2> + -*- <|> //(toggle) Access on _FUN + BASE ! @ # $ % | ^ & * ( ) Del + Tab+LCtl 1! 2@ 3# 4$ 5% | 6^ 7& 8* 9( 0) `~+RCtl + -+LSht -_ =+ [{ \| ]} | } | { _ + `~+RSht // row 2, raw + --------------------------------------------------------------------------- + Left+LAlt ___ ___ Ent | . ___ RGUI Right+RAlt + -*- <|> -*- //(hold) Access on _DEF_BASE + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> + ^ ^ + (LGUI) (_MOV) + + This layer input results in the same as regular Dvorak _..._NSY layer, if computer side Dvorak remapping + is occuring. Only shown what changes: + + [{ ]} /? =+ | + ? { } // row 2, result + +- - - + +Special feature: 'Descramble' mode +================================== + +![Minivan descramble Dvorak](http://socialism.nl/misc/minivan/minivan_descramble.jpg) + + This is an option to take care of typing normally on a computer already + set to Dvorak ('descramble' mode.) + + Activation: go to `_RAR` layer, than touch what is space bar on the BASE layer + (the key just right from the middle on the first row). This cycles through the modes. + + ⮚ When the left led is white: normal mode. + ⮚ Right led white: full descramble mode (Linux descrambled Unicode input). + ⮚ Middle led white: half descramble mode, with normal Unicode input system. + + With the middle led set to white, you can take advantage of a Unicode + input mode that works on your system, if it is the same when the + computer is set to Dvorak or not (see `_RAR` layer for Unicode input + encoding selection). This more or less means there is one more Unicode + encoding option than already standard in QMK: 'descrambled' version for + Linux (Shift-Control-U HEX) encoding, for use on a computer *already* set to + Dvorak. + + To test it, (in Debian/Linux) go to a terminal in X and type (normal user) + + > setxkbmap -layout us -variant dvorak + + Undo: + + > setxkbmap -layout us + + Unicode on Windos operating system may require to install something special. + + +Key associations +---------------- +Key placement associations between layers for Dvorak. + +![Minivan layout Image associations](http://socialism.nl/misc/minivan/minivan-relationships_dvorak-descramble_1500_vd.jpg) + diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_numpad.c b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_numpad.c new file mode 100644 index 0000000000..b4dd5f3ee3 --- /dev/null +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_numpad.c @@ -0,0 +1,409 @@ +/* + * License (GPL): + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + + * Author: © 2020 by Jos Boersema + * + */ + +// --------------------------------------v--------------------------------------- +// Configuration: +// --------------------------------------v--------------------------------------- + +// See the user configuration file: ./base_numpad.h + +// --------------------------------------^--------------------------------------- +// Below here no more comfortable configuration options..... +// --------------------------------------^--------------------------------------- + +// This is moved into ./user_config.h, because global #defines are affected. +//((#include "./base_numpad.h" // Pull in the user configuration)) + + /* ⬇ */ + + /* Layer _..._BASE: default BASE layer (Dvorak) + * + * This thing is different from the usual different letters arrangement. + * It is a numbers pad, one for the left hand, and one for the right + * hand. Both are as identical as possible. The use case is the same as + * a number pad keyboard: single handed numbers input. + * + * The number 5 is under the middle finger home row, as expected for blind + * number pad typing. + * + * The left/upper key, where normally BASE is located, is now OTHER_BASE. + * That switches the board to the ‛Default’ layout, which is effectively the + * same way as a return to BASE in the sense of BASE being the letters/layer + * switch layer. “Other Base†reached from the normal letters/layer-switching + * BASE layout will then turn the keyboard into these number pads layers. + * + * A modified Numbers&Symbols layer _NSY is still supplied with this Numbers + * Pad layout (as with other Base layers). + * + * The standard numbers pad layer _PAD also still exists. That one has the + * numbers arranged differently. + * + */ + +// When putting this layer on ‛Default’, it produced undesired side effects: +// • _RAR and _MOV hold keys on the ‛Alternate’ letters layer, failed to switch back. +// • Parts of the Numbers Pad keys got activated through transparent layer switch keys on letters layer. +// Since there is no use for Numpad on ‛Default’ Base anyway, this is simply not supported, which seems to solve the problem. + + +# ifndef NUMPAD_BASE_SINGLE + + [ _ALT_BASE ] = LAYOUT_redefined ( + +/* + Layer _..._BASE (Number pad, square layout) + + index>middl>ring>pin>pink2> + <|> + !AlterGo Bspc 7 8 9 - | Bspc 7 8 9 - Bspc //!AlterGo: to _DEF_BASE + = * 4 5 6 + | * 4 5 6 + = + _NSY¹ / 1 2 3 , | / 1 2 3 , _NSY¹ + ------------------------------------------------------------------------ + xxx 0 . Ent | NumL 0 . Ent + <|> + <1 ± <2 <3 <4 | 4> 3> ± 2> 1> + … | …² + + Layer _..._BASE (Number pad, with NumLock off) + + index>middl>ring >pin>pink2> + <|> + !AlterGo Bspc Home Up PgUp - | Bspc Home Up PgUp - Bspc //!AlterGo: to _DEF_BASE + = * Left 5 Right + | * Left 5 Right + = // modified 5 + _NSY¹ / End Down PgDn , | / End Down PgDn , _NSY¹ + ------------------------------------------------------------------------- + xxx Ins Del Ent | NumL Ins Del Ent + <|> + <1 ± <2 <3 <4 | 4> 3> ± 2> 1> + … | …² + + â‚) Toggle to the accompanying Super-Sub-Script (_NSY) layer. + â‚‚) Note anomaly: additional hardware key ‛arrow’ shifted one to the left. + +*/ +// +// , inde> , midd> , ring> , pink> , pink2> , +// -*!- , , , , , <|,> , , , , , , + OTHER_BASE_GO , KC_BSPC , KC_KP_7 , KC_KP_8 , KC_KP_9 , KC_KP_MINUS , KC_BSPC , KC_KP_7 , KC_KP_8 , KC_KP_9 , KC_KP_MINUS , KC_BSPC , + KC_KP_EQUAL , KC_KP_ASTERISK , KC_KP_4 , KC_KP_5 , KC_KP_6 , KC_KP_PLUS , KC_KP_ASTERISK , KC_KP_4 , KC_KP_5 , KC_KP_6 , KC_KP_PLUS , KC_KP_EQUAL , + CTO_NUMS , KC_KP_SLASH , KC_KP_1 , KC_KP_2 , KC_KP_3 , KC_KP_COMMA , KC_KP_SLASH , KC_KP_1 , KC_KP_2 , KC_KP_3 , KC_KP_COMMA , CTO_NUMS , +// ------------------------------------------------------------------------------------------------------------------------------------------------------- + XXXXXXX + +# ifdef TRANSMINIVAN_LEFTSIDE + , TRANS_LEFT +# endif + +# ifdef MORE_KEY__COMMAND + , MORE_key1 // Note anomaly, not MORE_key1_BASE: numpad is treated as a common layer here, because that is ± how it functions. +# endif + + , KC_KP_0 , KC_KP_DOT , KC_KP_ENTER + +# ifdef TRANSMINIVAN_MIDLEFT + , TRANS_MIDLEFT +# endif + + , KC_NUMLOCK , KC_KP_0 +// ---⬇ +// Note anomaly: the additional 'arrow' hardware key is shifted one to the +// left, compared to other Base layouts, and so is TRANS_RIGHT This is to +// maintain 'window/command' key on the same key between layers. + +# ifdef TRANSMINIVAN_RIGHTSIDE + , TRANS_RIGHT +# endif + +# ifdef MORE_KEY__ARROW + + //, MORE_key2 + , KC__YGUI + +// Note anomaly: not the usual configurable key (MORE_key2), but GUI. This +// is because position has shifted already, and this GUI allows all the usual +// keys on a 100% keyboard to be reached with all modifiers, including GUIs, +// if 'command' hardware key is included. Unfortunately this causes a gap +// in the numpad layout, but pressing GUI by itself in error will unlikely +// produce serious mistakes. Maintaining similar keys between layers seems +// more important. Since Numpad already is a navigation cluster, it seems +// more important to allow all keys to be reachable with all modifiers, +// including GUIs, than to have a quick switch over to the _MOV layer here. +// Obviously it is fair enough to do this differently, but if someone needs a +// Numpad + either GUI key combination, that could be a real problem without +// GUIs here, whereas adding a _MOV switch is a matter of convenience. It +// seems important to be able to type anything a regular 100% keyboard can, +// or as near to it as possible. +// +// These anomalies are the same for all the Numpad layers here. + +# endif +// ---⬆ + , KC_KP_DOT + + , KC_KP_ENTER +// , , , <|,> , , , +// <1 ± ± , <2 , <3 , <4 |, 4> , 3> ± ± , 2> , 1> + + ), + + /* ⬆⬇ */ + + /* Layer _ALT_NSY: super-/sub-script numbers numpad, square layout + */ + + [ _ALT_NSY ] = LAYOUT_redefined ( + +/* + Layer _..._BASE (super-/sub-script numbers, Numlock on/off) + + index>middl>ring>pin>pink2> + <|> + BASE Bspc â·â‚‡ â¸â‚ˆ â¹â‚‰ - | Bspc â·â‚‡ â¸â‚ˆ â¹â‚‰ - Bspc + = * â´â‚„ âµâ‚… â¶â‚† + | * â´â‚„ âµâ‚… â¶â‚† + = + LSht / ¹₠²₂ ³₃ , | / ¹₠²₂ ³₃ , RSht + -*- <|> -*- //(toggle) Access on Base + ------------------------------------------------------------------------ + xxx â°â‚€ .DEL Ent | xxx â°â‚€ .DEL Ent + <|> + <1 ± <2 <3 <4 | 4> 3> ± 2> 1> + … | …¹ + + â‚) Note anomaly: additional hardware key ‛arrow’ shifted one to the left. + +*/ +//High/low numbers guide: +//¹₠²₂ ³₃ â´â‚„ âµâ‚… | â¶â‚† â·â‚‡ â¸â‚ˆ â¹â‚‰ â°â‚€ +//XP_DRA_BA XP_DRA_BB XP_DRA_BC XP_DRA_BD XP_DRA_BE XP_DRA_BF XP_DRA_BG XP_DRA_BH XP_DRA_BI XP_DRA_BJ +// +// , inde> , midd> , ring> , pink> , pink2> , +// -*!- , , , , , <|,> , , , , , , + CTO_BASE , KC_BSPC , XP_DRA_BG , XP_DRA_BH , XP_DRA_BI , KC_KP_MINUS , KC_BSPC , XP_DRA_BG , XP_DRA_BH , XP_DRA_BI , KC_KP_MINUS , KC_BSPC , + KC_KP_EQUAL , KC_KP_ASTERISK , XP_DRA_BD , XP_DRA_BE , XP_DRA_BF , KC_KP_PLUS , KC_KP_ASTERISK , XP_DRA_BD , XP_DRA_BE , XP_DRA_BF , KC_KP_PLUS , KC_KP_EQUAL , + KC_LSFT , KC_KP_SLASH , XP_DRA_BA , XP_DRA_BB , XP_DRA_BC , KC_KP_COMMA , KC_KP_SLASH , XP_DRA_BA , XP_DRA_BB , XP_DRA_BC , KC_KP_COMMA , KC_RSFT , +// ----------------------------------------------------------------------------------------------------------------------------------------------------------------- + XXXXXXX + +# ifdef TRANSMINIVAN_LEFTSIDE + , TRANS_LEFT +# endif + +# ifdef MORE_KEY__COMMAND + , MORE_key1 +# endif + + , XP_DRA_BJ , KC_KP_DOT , KC_KP_ENTER + +# ifdef TRANSMINIVAN_MIDLEFT + , TRANS_MIDLEFT +# endif + + , XXXXXXX , XP_DRA_BJ + +// See comment on the first layout in this file (double handed Base layer), about the next few keys: +// ---⬇ + +# ifdef TRANSMINIVAN_RIGHTSIDE + , TRANS_RIGHT +# endif + +# ifdef MORE_KEY__ARROW + //, MORE_key2 + , KC__YGUI +# endif +// ---⬆ + , KC_KP_DOT + + , KC_KP_ENTER +// , , , <|,> , , , +// <1 ± ± , <2 , <3 , <4 |, 4> , 3> ± ± , 2> , 1> + + ), + + /* ⬆⬇ */ + +# else // NUMPAD_BASE_SINGLE is defined ==================================================================== + + [ _ALT_BASE ] = LAYOUT_redefined ( + +/* + + * Layer Numbers Pad on Base: + * « See also documentation in keymap.c at _PAD layer, of which this is almost entirely a copy » + * One difference is the key to go to the _ALT_NSY layer (denoted “NUMS:†just below). + * The other difference is the key to switch to default Base and also immediately goes there + * (denoted “!AlterGo†here). + + Layer _ALT_BASE (Number pad, with NumLock on) + + index>middl>ring>pin>pink2> + <|> + !AlterGo NUMS: xxx xxx xxx xxx | = 7 8 9 - Bspc // NUMS: to ¹/â‚ + LCtl xxx xxx xxx xxx xxx | * 4 5 6 + RCtl + LSht xxx xxx xxx xxx xxx | / 1 2 3 , RSht + ------------------------------------------------------------------------ + LAlt Del Tab Ent | NumL 0 . RAlt + <|> + <1 ± <2 <3 <4 | 4> 3> ± 2> 1> + … | …¹ + + Layer _ALT_BASE (Number pad, with NumLock off) + + index>middl>ring >pin>pink2> + <|> + !AlterGo NUMS: xxx xxx xxx xxx | = Home Up PgUp - Bspc // NUMS: to ¹/â‚ + LCtl xxx xxx xxx xxx xxx | * Left 5 Right + RCtl // modified 5 + LSht xxx xxx xxx xxx xxx | / End Down PgDn , RSht + ------------------------------------------------------------------------- + LAlt Del Tab Ent | NumL Ins Del RAlt + <|> + <1 ± <2 <3 <4 | 4> 3> ± 2> 1> + … | …¹ + + â‚) Note anomaly: additional hardware key ‛arrow’ shifted one to the left. + +*/ + +//High/low numbers guide: +//¹₠²₂ ³₃ â´â‚„ âµâ‚… | â¶â‚† â·â‚‡ â¸â‚ˆ â¹â‚‰ â°â‚€ +//XP_DRA_BA XP_DRA_BB XP_DRA_BC XP_DRA_BD XP_DRA_BE XP_DRA_BF XP_DRA_BG XP_DRA_BH XP_DRA_BI XP_DRA_BJ +// +// , index> , middl> , ring> , pinky> , pink2> , +// , , , , , -*- <|,> , , , , , , + OTHER_BASE_GO , CTO_NUMS , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_KP_EQUAL , KC_KP_7 , KC_KP_8 , KC_KP_9 , KC_KP_MINUS , KC_BSPC , + KC_LCTL , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_KP_ASTERISK , KC_KP_4 , KC_KP_5 , KC_KP_6 , KC_KP_PLUS , KC_RCTL , + KC_LSFT , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_KP_SLASH , KC_KP_1 , KC_KP_2 , KC_KP_3 , KC_KP_COMMA , KC_RSFT , +// ------------------------------------------------------------------------------------------------------------------------------------ + KC_LALT + +# ifdef TRANSMINIVAN_LEFTSIDE + , TRANS_LEFT +# endif + +# ifdef MORE_KEY__COMMAND + , MORE_key1 +# endif + + , KC_DEL , KC_TAB , KC_KP_ENTER + +# ifdef TRANSMINIVAN_MIDLEFT + , TRANS_MIDLEFT +# endif + + , KC_NUMLOCK , KC_KP_0 + +// See comment on the first layout in this file (double handed Base layer), about the next few keys: +// ---⬇ + +# ifdef TRANSMINIVAN_RIGHTSIDE + , TRANS_RIGHT +# endif + +# ifdef MORE_KEY__ARROW + //, MORE_key2 + , KC__YGUI +# endif +// ---⬆ + , KC_KP_DOT + + , KC_RALT +// , , , <|,> , , , +// <1 ± ± , <2 , <3 , <4 |, 4> , 3> ± ± , 2> , 1> + + ), + + /* ⬆⬇ */ + + [ _ALT_NSY ] = LAYOUT_redefined ( + +/* + + * Layer Numbers Pad on Base: + * This layer is the same as the above, except the numbers are in super-/sub-script. + * + + Layer _ALT_NSY (Number pad, with NumLock on/off) + + index>middl>ring>pin>pink2> + <|> + BASE xxx xxx xxx xxx xxx | = â·â‚‡ â¸â‚ˆ â¹â‚‰ - Bspc + LCtl xxx xxx xxx xxx xxx | * â´â‚„ âµâ‚… â¶â‚† + RCtl + LSht xxx xxx xxx xxx xxx | / ¹₠²₂ ³₃ , RSht + ------------------------------------------------------------------------ + LAlt Del Tab Ent | xxx â°â‚€ .DEL RAlt + <|> + <1 ± <2 <3 <4 | 4> 3> ± 2> 1> + … | …¹ + + â‚) Note anomaly: additional hardware key ‛arrow’ shifted one to the left. + +*/ + +//High/low numbers guide: +//¹₠²₂ ³₃ â´â‚„ âµâ‚… | â¶â‚† â·â‚‡ â¸â‚ˆ â¹â‚‰ â°â‚€ +//XP_DRA_BA XP_DRA_BB XP_DRA_BC XP_DRA_BD XP_DRA_BE XP_DRA_BF XP_DRA_BG XP_DRA_BH XP_DRA_BI XP_DRA_BJ +// +// , index> , middl> , ring> , pinky> , pink2> , +// , , , , , -*- <|,> , , , , , , + CTO_BASE , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_KP_EQUAL , XP_DRA_BG , XP_DRA_BH , XP_DRA_BI , KC_KP_MINUS , KC_BSPC , + KC_LCTL , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_KP_ASTERISK , XP_DRA_BD , XP_DRA_BE , XP_DRA_BF , KC_KP_PLUS , KC_RCTL , + KC_LSFT , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_KP_SLASH , XP_DRA_BA , XP_DRA_BB , XP_DRA_BC , KC_KP_COMMA , KC_RSFT , +// ----------------------------------------------------------------------------------------------------------------------------------- + KC_LALT + +# ifdef TRANSMINIVAN_LEFTSIDE + , TRANS_LEFT +# endif + +# ifdef MORE_KEY__COMMAND + , MORE_key1 +# endif + + , KC_DEL , KC_TAB , KC_KP_ENTER + +# ifdef TRANSMINIVAN_MIDLEFT + , TRANS_MIDLEFT +# endif + + , XXXXXXX , XP_DRA_BJ + +// See comment on the first layout in this file (double handed Base layer), about the next few keys: +// ---⬇ + +# ifdef TRANSMINIVAN_RIGHTSIDE + , TRANS_RIGHT +# endif + +# ifdef MORE_KEY__ARROW + //, MORE_key2 + , KC__YGUI +# endif +// ---⬆ + , KC_KP_DOT + + , KC_RALT +// , , , <|,> , , , +// <1 ± ± , <2 , <3 , <4 |, 4> , 3> ± ± , 2> , 1> + + ), + +# endif // NUMPAD_BASE_SINGLE + + /* ⬆⬇ */ + diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_numpad.h b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_numpad.h new file mode 100644 index 0000000000..86baf95a59 --- /dev/null +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_numpad.h @@ -0,0 +1,94 @@ +/* + * License (GPL): + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + + * Author: © 2020 by Jos Boersema + * + */ + +// --------------------------------------v--------------------------------------- +// Configuration: +// --------------------------------------v--------------------------------------- + + /* âž¡ Number pad Configuration ⬅ + * + * This concerns this Base layer in the shape of a numerical key pad, not the numerical + * key pad layer which is part of the common layer system, which is defined and configured + * elsewhere (see ./user_config.h). + * + * _Activate_ the below to have a single keypad definition on this layer, for the right + * hand. Modifiers are also defined. + * _Remove_ the below to have two keypad definitions on this Base layer, one for each hand. + * + * In both cases, you can reach the accompanying number pad layer with the super-/sub-script + * numbers. For either option, there is a matching * super-/sub-script layer, which is + * automatically compiled with it. + */ + #define NUMPAD_BASE_SINGLE // _Activate_ to resemble a one handed numerical keyboard, for right hand. + // _Remove_ to have two numerical key pads, side by side, one for each hand. + // + /* Tip: When in doubt it might be best to choose the single handed layer, because it + * resembles a regular keyboard more, and has modifier combinations. + */ + + + /* âž¡ Removing the numbers pad _PAD layer ⬅ + * + * You may have no use for this common layer, if you have a numerical + * keypad on the Alternate Base already. + * + * While _PAD layer gives quick uncluttered access to Control, Shift and Alt + * to modify your pointer device input, the _MOV layer does the same. You + * end up with the same functionality, with or without _PAD, in this matter. + * + * This does precisely the same as REMOVE_PAD in ./user_config.h, but this + * setting here overrides any setting in ./user_config.h + */ +//#define REMOVES_PAD // _Activate_ to strip out the _PAD layer, _remove_ to have the _PAD layer. + +// --------------------------------------^--------------------------------------- +// Below here no more comfortable configuration options..... +// --------------------------------------^--------------------------------------- + + /* Redefine a layer in this file + * + * _Activate_ one or more of the below BASESFILE_LAYER_..., to redefine the layer + * in this file. The version in ./keymap.c will be ignored. Keep in mind to use + * transparent keys (_______) for “hold†layer switch keys on the BASE map, for + * your new layer. + */ +// #define BASESFILE_LAYER_ACC +// #define BASESFILE_LAYER_DRA +// #define BASESFILE_LAYER_BON +// #define BASESFILE_LAYER_PAD +// #define BASESFILE_LAYER_MOV +// #define BASESFILE_LAYER_RAR +// #define BASESFILE_LAYER_FUN + + +// The below sets some things up based on the above #defines. + +// Stripping out _PAD layer, sets the #define used global configuration file ./user_config.h +# ifdef REMOVES_PAD // this file +# ifndef REMOVE_PAD // user_config.h +# define REMOVE_PAD // removes _PAD layer +# endif +# endif +// Inserting the _PAD layer, even if stripped in ./user_config.h +# ifndef REMOVES_PAD // this file +# ifdef REMOVE_PAD // user_config.h +# undef REMOVE_PAD // activtaes _PAD layer +# endif +# endif diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_numpad.md b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_numpad.md new file mode 100644 index 0000000000..0ebe9a29d9 --- /dev/null +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_numpad.md @@ -0,0 +1,364 @@ +# Minifan layout + +Compile options +--------------- + +In ![./base_numpad.h](./base_numpad.h) this base layout is configured. + +• Single numpad. + +This number pad choice only has a number pad for the right hand. The +usual modifiers are in their expected places. + +The single numbers pad variation is also a compile option for the _common +layer_ `_PAD`, albeit without a super/subscript auxilery layer. + +• Dual numpad. + +This numbers pad choice has a number pad for each hand. There are two +number pads together on the keyboard at once. + +Numpad keymaps +============== + +Single numpad +------------- + +──────────Numpad─────────────── + +![Minivan layout Image BASEdef](http://socialism.nl/misc/minivan/minivan_base_layer_numpad_single_vd.jpg) +Layer: `..._BASE` + +![Minivan layout Image BASEdef](http://socialism.nl/misc/minivan/minivan_nsy_layer_numpad_single_vd.jpg) +Layer: `..._NSY` + +──────────in common──────────── + +The otherwise ‛common’ layers are not directly available in this special layout. +You can still reach them as normal through your other Base layer. + +For more about the other layers, see âž¡ ![readme.md](./readme.md) ⬅ + +![Minivan illustration Overview layers by key, Numpad single](http://socialism.nl/misc/minivan/minivan-all-layers-clear-visualization-by-key_numpad_single_2000_vi.jpg) + + +Layers (text) + + Layer _ALT_BASE (Number pad, with NumLock on) + + index>middl>ring>pin>pink2> + <|> + !AlterGo NUMS: xxx xxx xxx xxx | = 7 8 9 - Bspc // NUMS: to ¹/â‚ + LCtl xxx xxx xxx xxx xxx | * 4 5 6 + RCtl + LSht xxx xxx xxx xxx xxx | / 1 2 3 , RSht + ------------------------------------------------------------------------ + LAlt Del Tab Ent | NumL 0 . RAlt + <|> + <1 ± <2 <3 <4 | 4> 3> ± 2> 1> + LGUI | RGUI¹ + + Layer _ALT_BASE (Number pad, with NumLock off) + + index>middl>ring >pin>pink2> + <|> + !AlterGo NUMS: xxx xxx xxx xxx | = Home Up PgUp - Bspc // NUMS: to ¹/â‚ + LCtl xxx xxx xxx xxx xxx | * Left 5 Right + RCtl // modified 5 + LSht xxx xxx xxx xxx xxx | / End Down PgDn , RSht + ------------------------------------------------------------------------- + LAlt Del Tab Ent | NumL Ins Del RAlt + <|> + <1 ± <2 <3 <4 | 4> 3> ± 2> 1> + ^ | ^ + LGUI | RGUI¹ + + + â‚) Note anomaly: additional hardware key ‛arrow’ shifted one to the left. + +- - - + + Layer _ALT_NSY (Number pad, with NumLock on/off) + + index>middl>ring>pin>pink2> + <|> + BASE xxx xxx xxx xxx xxx | = â·â‚‡ â¸â‚ˆ â¹â‚‰ - Bspc + LCtl xxx xxx xxx xxx xxx | * â´â‚„ âµâ‚… â¶â‚† + RCtl + LSht xxx xxx xxx xxx xxx | / ¹₠²₂ ³₃ , RSht + ------------------------------------------------------------------------ + LAlt Del Tab Ent | xxx â°â‚€ .DEL RAlt + <|> + <1 ± <2 <3 <4 | 4> 3> ± 2> 1> + ^ | ^ + LGUI | RGUI¹ + + â‚) Note anomaly: additional hardware key ‛arrow’ shifted one to the left. + +Dual numpad +----------- + +![Minivan layout all](http://socialism.nl/misc/minivan/minivan_keycapview_numpad_double_vg.jpg) + +──────────Numpad─────────────── + +![Minivan layout Image BASEdef](http://socialism.nl/misc/minivan/minivan_base_layer_numpad_double_vg.jpg) +Layer: `..._BASE` + +![Minivan layout Image BASEdef](http://socialism.nl/misc/minivan/minivan_nsy_layer_numpad_double_vd.jpg) +Layer: `..._NSY` + +──────────in common──────────── + +The otherwise ‛common’ layers are not directly available in this special layout. +You can still reach them as normal through your other Base layer. + +For more about the other layers, see âž¡ ![readme.md](./readme.md) ⬅ + +![Minivan illustration Overview layers by key, Numpad double](http://socialism.nl/misc/minivan/minivan-all-layers-clear-visualization-by-key_numpad_double_2000_vi.jpg) + + +Layers (text) + + ───────────────Numpad──────────────── + + Layer _..._BASE (Number pad, square layout) + + index>middl>ring>pin>pink2> + <|> + !AlterGo Bspc 7 8 9 - | Bspc 7 8 9 - Bspc //!AlterGo: to _DEF_BASE + = * 4 5 6 + | * 4 5 6 + = + _NSY¹ / 1 2 3 , | / 1 2 3 , _NSY¹ + ------------------------------------------------------------------------ + xxx 0 . Ent | NumL 0 . Ent + <|> + <1 ± <2 <3 <4 | 4> 3> ± 2> 1> + ^ | ^ + LGUI | RGUI² + + Layer _..._BASE (Number pad, with NumLock off) + + index>middl>ring >pin>pink2> + <|> + !AlterGo Bspc Home Up PgUp - | Bspc Home Up PgUp - Bspc //!AlterGo: to _DEF_BASE + = * Left 5 Right + | * Left 5 Right + = // modified 5 + _NSY¹ / End Down PgDn , | / End Down PgDn , _NSY¹ + ------------------------------------------------------------------------- + xxx Ins Del Ent | NumL Ins Del Ent + <|> + <1 ± <2 <3 <4 | 4> 3> ± 2> 1> + ^ | ^ + LGUI | RGUI² + + â‚) Toggle to the accompanying Super-Sub-Script (_NSY) layer. + â‚‚) Note anomaly: additional hardware key ‛arrow’ shifted one to the left. + +- - - + + Layer _..._BASE (super-/sub-script numbers, Numlock on/off) + + index>middl>ring>pin>pink2> + <|> + BASE Bspc â·â‚‡ â¸â‚ˆ â¹â‚‰ - | Bspc â·â‚‡ â¸â‚ˆ â¹â‚‰ - Bspc + = * â´â‚„ âµâ‚… â¶â‚† + | * â´â‚„ âµâ‚… â¶â‚† + = + LSht / ¹₠²₂ ³₃ , | / ¹₠²₂ ³₃ , RSht + -*- <|> -*- //(toggle) Access on Base + ------------------------------------------------------------------------ + xxx â°â‚€ .DEL Ent | xxx â°â‚€ .DEL Ent + <|> + <1 ± <2 <3 <4 | 4> 3> ± 2> 1> + ^ | ^ + LGUI | RGUI¹ + + â‚) Note anomaly: additional hardware key ‛arrow’ shifted one to the left. + + +Special Base layer Numpad +========================= + +This is a layout resembling a “numbers padâ€. A “numbers pad†+is a separate square on a 100% sized keyboard, or separate keypad. + +Unlike more usual base layers choices, which typically contain a letters +layout and access to all the common layers, this ‛Base’ layer is +quite different. Once you have switched to it, you lack keys to access +all ‛common’ layers. + +You can only switch back to your ‛regular’ base layer, or switch to a +second form of the numbers pad. This second layer is called “auxilery†+layer here, but technically it is the same thing as the numbers/symbols +`_NSY` layer, which accompanies a letters layer like Qwerty or Dvorak. + +Use the top left key from the numbers pad layer, to switch back to the +other ‛Base’ layer. This is also unique to this special ‛Base’ layer, +but similar to the way the “common layers†switch back to Base. + +The other Base layer (once you are in this Number Pad layer) for most +people will be a letters layer with Qwerty, Dvorak or some other layout +on it, in which the keyboard will start up. To reach the numbers pad +Base layer, use the key ‛Other Base’ on the `_RAR` layer. + + +Led colors +---------- + +The led colors for this ‛Base’ layer are different from the usual. They show +the state of the Numbers Lock, on or off. Colors are green/light-blue/blue to +indicate Numbers Lock is off, which means the navigation cluster is active. +Colors are blue/light-blue/green to indicate the Numbers Lock is on, +meaning you can type numbers. + +This follows the same scheme as the `_PAD` layer, which in turn follows +the logic of the `_NSY` (numbers/symbols) layer being blue, and the `_MOV` +(movement/navigation) layer being green, in such a way that the left most +led is the indicator thereof, following reading direction left to right. The +brightness of the leds is diminished, to indicate the difference with `_PAD` +layer (whether or not that layer is compiled). + + +Auxilery numpad layer +--------------------- + +With the numbers pad layer comes a second layer, as is normal for +all Base layer choices. This second layer is the same as the normal +numbers pad, except the numbers are in super- â½Â¹Â²Â³â¾ or sub-script +â‚â‚₂₃₎. + +The numbers on the second layer become subscript when Shift is pressed, +otherwise they are in super-script. These super-/sub-script forms of the +numbers Unicode (see the `_RAR` layer). + +This second form of numbers pad is reached from keys on the numbers pad +Base layer. You can switch back to the regular numbers pad, with the +upper/left key. Another key stroke from there on the upper/left key, +will bring you back to what is likely your regular typing layer. + + +Auxilery numpad layer led colors +-------------------------------- + +For the second layer that comes with it, with super-/sub-script numbers, +the led colors are what they “normally†are (for other compile +choices) for this layer (the ‛Alternate‛ Base accompanying layer, +usually numbers/symbols): blue/blue/light-blue. There is no indication +of Numbers Lock on this layer, although a few keys are altered by Numbers +Lock (Dot/Delete ‛.’, and Enter). + + +‛Arrow’ additional hardware key +=============================== + +Unlike with other layers: the optional ‛arrow’ hardware key on the +right hand is not inserted between the last and second last keys on the +right, and neither is it set to the configurable default value (toggle +`_MOV` layer). Instead, this key is inserted one key over to the left, +and it is set to GUI. + +The reason is that this GUI will line up with the GUI on the ‛Base’ +layer. If combined with the ‛command’ hardware key on the right, set +to the other GUI, you can reach all Numbers Pad keys with all modifiers, +including both GUIs. + +Another reason is that a typical use of the additional hardware +key on the right (called ‛Arrow’) will by default lead to a navigation +layer, however the Numbers Pad already has its own navigation. To add +a toggle to `_MOV` would be a matter of convenience, whereas not being +able to reach all Numbers Pad keys with either GUI could represent a +serious problem. + +Downsides to this design are the loss of default ‛Arrow’ hardware key +use on this layer, and a sort of gap of one key in the Numbers Pad layout. +The downsides seem to be matters of style and convenience, whereas not +being able to type whatever you can on a 100% keyboard could be a serious +problem for someone (keyboard shortcuts mainly). + +There is no default solution to type everything with all modifiers +including the GUIs, without adding the additional hardware key(s). +Obviously it is possible to just stick a GUI on a free spot, but that +makes things chaotic. Single pad Numbers Pad could be re-arranged to +make room for GUI, which would loose more of its similarity to other +keyboards. + + +Numbers pads everywhere ? +========================= + +Perhaps the amount of options for a numberical keypad are a bit overkill. +It had to do with how it developed. + +For some overview of your options: + + â‘  Common layer numerical keypad. Just another layer, like `_RAR`, `_BON`, etc. + + 1. You can have a numerical keypad in the _common layers._ + 2. You can also remove this layer entirely. + + 3. This “common layers†numbers pad is activated through the Base layer, on Left Shift tap. + 4. Returns to ‛Default Base’ with upper/left key. + + 5. Variation of form: right hand square form, resembling a key pad on + other keyboards. + 6. Variation of form: the numbers in a straight line, resembling the + `_NSY` layer and other layers. + + â‘¡ A numerical keypad on the other ‛Base’ layer, in the dual layout system. + + 1. You can have a numerical keypad on the ‛Alternate Base’ position. + 2. You can also put something different on ‛Alternate Base’, such as a + Colemak layout. + + 3. This layer is activated through the `_RAR` layer, by choosing ‛Other + Base’. + 4. Returns to ‛Default Base’ with upper/left key, effectively the same as with + the common numerical keypad layer, and all other common layers. + + 5. Variation of form: right hand square form, resembling a key pad on + other keyboards. + 6. Variation of form: dual handed square form, so you have a key pad for + each hand. + + 7. For all variation of form, there is an accompanying layer which is + the same, except the numbers are in Unicode super (unshifted) and + sub-script (shifted). + +Some examples: + +â‘  As close to a 100% ‛regular’ keyboard as possible. + + If you have no use for ‛Alternate Base’ with anything else, you could put + the single handed numerical keypad there, and remove the common `_PAD` layer + to have less mental clutter. + + This makes accessing `_MOV` on Left Shift easier, you have modifiers with + the numerical keypad, and you have super/sub-script as well (although its use + is probably rather rare). + +â‘¡ The predictable numbers typing option. + + If you want ‛Alternate Base’ to have something else (or nothing + at all), keep the `_PAD` layer, and choose straight line numbers, + so that you don't have to learn a second way to type numbers, if you + ever have a need to type keypad numbers (which could be quite rare). + + In this version, you are not envisioning the use of keypad navigation, + but rather use regular `_MOV` layer navigation. (This was the original + programming on the keyboard, before more options developed; it follows + the overall logic that the same or similar keys are in the same or + similar positions.) + +â‘¢ The everything option. + + You could keep both `_PAD` with straight lined up numbers if you like typing + all numbers the same way, and also compile numpad single square on ‛Alternate + Base’ to have good access to a regular numerical keypad, should you ever need + it, and/or to have an easier to access navigation cluster there (easier than + navigation on the straight line numpad variation that is, where navigation + is difficult). + +â‘£ The numerical keyboard specialist. + + You could compile it for both hands, if you type so much on a numerical + keypad, that it is useful to be fast on it with either hand. + + It will be harder to type on the double numerical keyboard with modifiers + (Shift, Control, Alt), but if you compile with the common numbers pad layer, + you can reach such combinations there. To keep things similar, you can compile + this common numbers pad layer with numbers in square form, rather than a straight + line. diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_qwerty.c b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_qwerty.c new file mode 100644 index 0000000000..472233073f --- /dev/null +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_qwerty.c @@ -0,0 +1,209 @@ +/* + * License (GPL): + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + + * Author: © 2020 by Jos Boersema + * + */ + +// --------------------------------------v--------------------------------------- +// Configuration: +// --------------------------------------v--------------------------------------- + +// --------------------------------------^--------------------------------------- +// Below here no more comfortable configuration options..... +// --------------------------------------^--------------------------------------- + + + /* Redefine a layer in this file + * + * _Activate_ one or more of the below BASESFILE_LAYER_..., to redefine the layer + * in this file. The version in ./keymap.c will be ignored. Keep in mind to use + * transparent keys (_______) for “hold†layer switch keys on the BASE map, for + * your new layer. + */ +// #define BASESFILE_LAYER_ACC +// #define BASESFILE_LAYER_DRA +// #define BASESFILE_LAYER_BON +// #define BASESFILE_LAYER_PAD +// #define BASESFILE_LAYER_MOV +// #define BASESFILE_LAYER_RAR +// #define BASESFILE_LAYER_FUN + + /* ⬇ */ + + /* Layer _..._BASE: Qwerty, normal BASE layer and 'default' layer + * + * - Dual use keys create a delay in the key (tap/hold keys), therefore + * space is not dual use (most ued key), neither is hyphen. + */ + +// Process user configuration wrt ‛Default’ or ‛Alternative’ spot for this layout. +# if defined(BASE_QWERTY__DEF_BASE) + [ _DEF_BASE ] = LAYOUT_redefined ( +# elif defined(BASE_QWERTY__ALT_BASE) + [ _ALT_BASE ] = LAYOUT_redefined ( +# endif + +/* + Layer _..._BASE (Letters). This is Qwerty + | Right hand + index>middl>ring> pinky>pinky2> // Keys by finger + -o- <|> ... //-o- BASE access + Esc qQ wW eE rR tT | yY uU iI oO pP Bksp + Tab+LCtl aA sS dD fF gG | hH jJ kK lL ;: '" + LSht+_PAD zZ xX cC vV bB | nN mM ,< .> /? RSht+_FUN + +_MOVâµ | +_RARâ¶ + --------------------------------------------------------------------------------------- + Left+LAlt Del;_ACC _..._NSY(_DRA) Enter+_MOV| Space _..._NSY(_DRA) LGUI Right;_RAR + hold holdâ‚â‚,₂٭₎ hold | holdâ‚â‚,₂٭₎ hold // switch type + holdâ‚₂₎ ^-┃-----------------------+--------^ ┃ // â‚₎ both = _DRA + â”—â”â”â”_BONâ”â”â”╋┅───────────┄┄┄«or»┄┄┄─+─────────┅┛ // ₂₎ both = _BON + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> // Keys by number + ^³ ^â´ // Optional more keys + (RGUI) (_MOV) + + â‚) Dual hold for _DRA, single hold for _..._NSY. Marked by: ^--…--^ + â‚‚) Hold key “<2†with eitherÙ­ key “<3†or “3>†for _BON, single hold “<2†for _ACC. Marked: â”—â”â”…â”â”â”› + ₃) 'South paw' hardware configuration. Configurable, default shown. + â‚„) 'Arrow' hardware configuration Configurable, default shown. + ₃ â‚„) There are two more optional hardware keys, to make it easier to compile for + a 12x12x12x11 or 12x12x12x12 layouts. + â‚…) Left Shift when pressed with another key. Medium long: to toggle _PAD. Long: toggle _MOV. + ₆) Right shift when pressed with another key. medium long: to toggle _FUN. Long: toggle _RAR. +*/ +// +// , inde>, midd> , ring> , pink> , pink2> , +// -*!- , , , , , <|,> , , , , , , + KC_ESC , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_BSPC , + LCTL_T ( KC_TAB ) , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN , KC_QUOT , + CHOLTAP_LSHFT , KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM , KC_DOT , KC_SLSH , CHOLTAP_RSHFT , +// ----------------------------------------------------------------------------------------------------------------- + LALT_T ( KC_LEFT ) + +# ifdef TRANSMINIVAN_LEFTSIDE + , MO ( _PAD ) +# endif + +# ifdef MORE_KEY__COMMAND + , MORE_key1_BASE +# endif + +# ifdef SWITCH_HOLD_ACC_NSY + , DUO_HOLD , CHOLTAP_ACCE +# else + , CHOLTAP_ACCE , DUO_HOLD +# endif + + , LT__MOV__KC_ENT + +# ifdef TRANSMINIVAN_MIDLEFT + , TRANS_MIDLEFT +# endif + + , KC_SPC , DUO_HOLD , KC__YGUI + +# ifdef TRANSMINIVAN_RIGHTSIDE + , MO ( _FUN ) +# endif + +# ifdef MORE_KEY__ARROW + , MORE_key2 +# endif + + , CHOLTAP_LAYR +// , , , <|,> , , , +// <1 ± ± , <2 , <3 , <4 |, 4> , 3> , 2> , ± ± 1> + + ), + + /* ⬆⬇ */ + + /* Layer _..._NSY: Numbers and symbols, to work with the Qwerty base layer above. + * Off hand Number input (-.Bksp ent (shft)tab). + */ + // KC_TILD does not work there, because of a limitation with shifted keys (nov 2019). + +// Process user configuration wrt ‛Default’ or ‛Alternative’ spot for this layout. +# if defined(BASE_QWERTY__DEF_BASE) + [ _DEF_NSY ] = LAYOUT_redefined ( +# elif defined(BASE_QWERTY__ALT_BASE) + [ _ALT_NSY ] = LAYOUT_redefined ( +# endif + +/* + Layer _..._NSY (Numbers and SYmbols). This fits the above Qwerty layer _..._BASE + + index>middl>ring>pin>pink2> + -*- <|> //(toggle) Access on _FUN + BASE ! @ # $ % | ^ & * ( ) Del + Tab+LCtl 1! 2@ 3# 4$ 5% | 6^ 7& 8* 9( 0) `~+RCtl + -+LSht [{ ]} -_ \| =+ | + | _ { } `~+RSht // limitation prevents ~ + ^^ ^ // Only differences with normal version _..._NSY + --------------------------------------------------------------------------- + Left+LAlt ___ ___ Ent | . ___ LGUI Right+RAlt + -*- <|> -*- //(hold) Access on _..._BASE + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> + ^ ^ + (RGUI) (_MOV) +*/ +// +// +// , index> , middl> , ring> , pinky> , pink2> , +// , -*- , , , , <|,> , , , , , , + CTO_BASE , KC_EXLM , KC_AT , KC_HASH , KC_DLR , KC_PERC , KC_CIRC , KC_AMPR , KC_ASTR , KC_LPRN , KC_RPRN , KC_DEL , + LCTL_T ( KC_TAB ) , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 +// Harmonizes with ‛Qwerty Base Arrow’, so that if both are compiled, the user isn't +// messing up this key on this Qwerty layout, which has to be different in the other Qwerty. +# ifdef QWERTY_BASEARROW_HARMONIZE + , KC_SLSH , // Same as in ‛Qwerty Base Arrow’ +# else + , RCTL_T ( KC_GRV ) , // Default +# endif + LSFT_T ( KC_MINS ) , KC_LBRC , KC_RBRC , KC_MINS , KC_BSLS , KC_EQL , KC_PLUS , KC_PIPE , KC_UNDS , KC_LCBR , KC_RCBR , RSFT_T ( KC_TILD ) , +// --------------------------------------------------------------------------------------------------------------------------------------------- + LALT_T ( KC_LEFT ) + +# ifdef TRANSMINIVAN_LEFTSIDE + , XXXXXXX +# endif + +# ifdef MORE_KEY__COMMAND + , MORE_key1 +# endif + + , _______ , _______ , KC_ENT + +# ifdef TRANSMINIVAN_MIDLEFT + , TRANS_MIDLEFT +# endif + + , KC_DOT , DUO_HOLD , KC__YGUI + +# ifdef TRANSMINIVAN_RIGHTSIDE + , XXXXXXX +# endif + +# ifdef MORE_KEY__ARROW + , MORE_key2 +# endif + + , RALT_T ( KC_RGHT ) +// , , -*- , <|,> , -*- , , +// <1 ± ± , <2 , <3 , <4 |, 4> , 3> , 2> , ± ± 1> + + ), + + /* ⬆⬇ */ diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_qwerty.md b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_qwerty.md new file mode 100644 index 0000000000..b140981ec3 --- /dev/null +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_qwerty.md @@ -0,0 +1,100 @@ +# Minifan layout + +Compiled for: Qwerty +==================== + +This file details the compile version `#define BASE_QWERTY__DEF_BASE, BASE_QWERTY__ALT_BASE`. +This is a Qwerty layout. + +Qwerty keymaps +-------------- + +──────────Qwerty─────────────── + +![Minivan layout Image BASEdef](http://socialism.nl/misc/minivan/minivan_base_layer_qwerty_ve.jpg) +Layer: `..._BASE` + +![Minivan layout Image BASEdef](http://socialism.nl/misc/minivan/minivan_nsy_layer_qwerty_vb.jpg) +Layer: `..._NSY` + +──────────in common──────────── + +(…) + +For more about the other layers, see âž¡ ![readme.md](./readme.md) ⬅ + +![Minivan illustration Overview layers by key, Qwerty](http://socialism.nl/misc/minivan/minivan-all-layers-clear-visualization-by-key_qwerty_2000_vh.jpg) + +Layers (text) +============= + + ───────────────Qwerty───────────────── + + Layer _..._BASE (Letters). This is standard Qwerty + | Right hand + index>middl>ring> pinky>pinky2> // Keys by finger + -o- <|> ... //-o- BASE access + Esc qQ wW eE rR tT | yY uU iI oO pP Bksp + Tab+LCtl aA sS dD fF gG | hH jJ kK lL ;: '" + LSht+_PAD zZ xX cC vV bB | nN mM ,< .> /? RSht+_FUN + +_MOVâµ | +_RARâ¶ + --------------------------------------------------------------------------------------- + Left+LAlt Del;_ACC _DEF_NSY(_DRA) Enter+_MOV| Space _DEF_NSY(_DRA) RGUI Right;_RAR + hold holdâ‚â‚,₂٭₎ hold | holdâ‚â‚,₂٭₎ hold // switch type + holdâ‚₂₎ ^-┃-----------------------+--------^ ┃ // â‚₎ both = _DRA + â”—â”â”â”_BONâ”â”â”╋┅───────────┄┄┄«or»┄┄┄─+─────────┅┛ // ₂₎ both = _BON + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> // Keys by number + ^³ ^â´ // Optional more keys + (LGUI) (_MOV) + + â‚) Dual hold for _DRA, single hold for _DEF_NSY. Marked by: ^--…--^ + â‚‚) Hold key “<2†with eitherÙ­ key “<3†or “3>†for _BON, single hold “<2†for _ACC. Marked: â”—â”â”…â”â”â”› + ₃) 'South paw' hardware configuration. Configurable, default shown. + â‚„) 'Arrow' hardware configuration Configurable, default shown. + ₃ â‚„) There are two more optional hardware keys, to make it easier to compile for + a 12x12x12x11 or 12x12x12x12 layouts. + â‚…) Left Shift when pressed with another key. Medium long: to toggle _PAD. Long: toggle _MOV. + ₆) Right shift when pressed with another key. medium long: to toggle _FUN. Long: toggle _RAR. + +Remarks: The left modifiers have a slight delay in combination with an outside pointer device (mouse, stylus). +It seems this will be difficult to fix, because it is spread over two devices. To avoid the +±0.2 second delay, activate a layer where the modifiers are direct (`_PAD`), using the layer toggle on left shift. + +The two keys with ';' (Del;`_ACC`, Right;`_RAR`) do not auto-repeat on double tap, like QMK normal layer-tap keys. +There is an uncluttered _Delete_ on `_PAD`, an uncluttered _Right_ arrow on the `_MOV` layer. + +Holding both `_DEF_NSY` keys left and right of the "split space bar" (enter, space) results in layer `_DRA`. + +Holding either one of the just above mentioned `_DEF_NSY` layer keys (<3 and 3>), with the `_ACC` layer key +(on <2) results in layer `_BON`. + + +- - - + + + Layer _..._NSY (Numbers and SYmbols). This fits the above Qwerty layer _DEF_BASE + + index>middl>ring>pin>pink2> + -*- <|> //(toggle) Access on _FUN + BASE ! @ # $ % | ^ & * ( ) Del + Tab+LCtl 1! 2@ 3# 4$ 5% | 6^ 7& 8* 9( 0) `~+RCtl + -+LSht [{ ]} -_ \| =+ | + | _ { } `~+RSht // limitation prevents ~ + ^^ ^ // Only differences with Dvorak version _DEF_NSY + --------------------------------------------------------------------------- + Left+LAlt ___ ___ Ent | . ___ RGUI Right+RAlt + -*- <|> -*- u //(hold) Access on _DEF_BASE + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> + ^ ^ + (LGUI) (_MOV) + + + +- - - + +Key associations +---------------- +Key placement associations between layers for Qwerty. + +![Minivan layout Image associations](http://socialism.nl/misc/minivan/minivan-relationships_qwerty_1500_vd.jpg) + + diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_qwerty_basearrow.c b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_qwerty_basearrow.c new file mode 100644 index 0000000000..10ef88b4d3 --- /dev/null +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_qwerty_basearrow.c @@ -0,0 +1,243 @@ +/* + * License (GPL): + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + + * Author: © 2020 by Jos Boersema + * + */ + +// --------------------------------------v--------------------------------------- +// Configuration: +// --------------------------------------v--------------------------------------- + +// --------------------------------------^--------------------------------------- +// Below here no more comfortable configuration options..... +// --------------------------------------^--------------------------------------- + + + /* Redefine a layer in this file + * + * _Activate_ one or more of the below BASESFILE_LAYER_..., to redefine the layer + * in this file. The version in ./keymap.c will be ignored. Keep in mind to use + * transparent keys (_______) for “hold†layer switch keys on the BASE map, for + * your new layer. + */ +// #define BASESFILE_LAYER_ACC +// #define BASESFILE_LAYER_DRA +// #define BASESFILE_LAYER_BON +// #define BASESFILE_LAYER_PAD +// #define BASESFILE_LAYER_MOV +// #define BASESFILE_LAYER_RAR +// #define BASESFILE_LAYER_FUN + + /* ⬇ */ + + /* Layer _..._BASE: Qwerty with arrows on Base, normal BASE layer and 'default' layer + * + * - This version of Qwerty puts arrows on Base, and assumes the 'arrow' hardware key. + * When not compiled with 'arrow' hardware key, Base will not contain ‛down arrow’. + * + * This does not mean that this is the recommended version of Qwerty in general for + * the 'arrow' hardware key with Qwerty. Regular Qwerty works with the additional + * hardware key 'arrow'. The regular Qwerty compile option just works differently + * than this version with arrows on Base. Regular qwerty has the additional hardware + * key on the right be a toggle to _MOV layer, where you then have arrows in the same + * area. Notice further that in all cases, you have a hold key to the _MOV layer under + * what is colloqually known as the ‛left space bar’, which leads to convenient arrow + * keys in the home row. + * + * Putting directional arrow keys on the Base layer will cost you several keys on + * the Base layer: hold _RAR, GUI, and ‛/?’. + * • The ‛/?’ key is displaced to the _NSY layer. + * • The GUI key is lost. You could decide to also use the ‛south paw’/‛command’ + * hardware key, which is a GUI by default. + * • Hold key to _RAR layer is lost. You can only reach _RAR layer, using the right + * shift toggle, which is on a short timer. + * + * My recommendation would be: see if you can make things work with regular Qwerty + * if you are a 10 fingers typist, first. Moving your hand to this arrow cluster + * seems to be a high cost to pay. You will also loose the default location for ‛/?’. + * + * For special need situations regarding this right hand row1/2 arrow cluster, a + * tap to _MOV layer on the ‛arrow’ hardware key, should be a reasonable cost to + * pay, if a situation is already important enough to decide to move your hand there. + * For short uses of arrow keys, holding to the _MOV layer is the most efficient. + * + * If you are not a 10 finger typist though, holding a key to _MOV layer seems to be + * inconvenient, and thus arrows on Base could be better for you. + * + * Hence my conclusion: only compile ‛Qwerty with arrows on Base’ if the regular + * Qwerty isn't working for you. + * + */ + +// Process user configuration wrt ‛Default’ or ‛Alternative’ spot for this layout. +# if defined(BASE_QWERTY_BASEARROW__DEF_BASE) + [ _DEF_BASE ] = LAYOUT_redefined ( +# elif defined(BASE_QWERTY_BASEARROW__ALT_BASE) + [ _ALT_BASE ] = LAYOUT_redefined ( +# endif + +/* + Layer _..._BASE (Letters). This is Qwerty with arrows on Base + | Right hand + index>middl>ring> pinky>pinky2> // Keys by finger + -o- <|> ... //-o- BASE access + Esc qQ wW eE rR tT | yY uU iI oO pP Bksp + Tab+LCtl aA sS dD fF gG | hH jJ kK lL ;: '" + LSht+_PAD zZ xX cC vV bB | nN mM ,< .> Up RSht+_FUN + +_MOVâµ | +_RARâ¶ + --------------------------------------------------------------------------------------- + Left+LAlt Del;_ACC _..._NSY(_DRA) Enter+_MOV| Space _..._NSY(_DRA) Left Right + hold holdâ‚â‚,₂٭₎ hold | holdâ‚â‚,₂٭₎ // switch type + holdâ‚₂₎ ^-┃-----------------------+--------^ ┃ // â‚₎ both = _DRA + â”—â”â”â”_BONâ”â”â”╋┅───────────┄┄┄«or»┄┄┄─+─────────┅┛ // ₂₎ both = _BON + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> // Keys by number + ^³ ^â´ // Optional more keys + (RGUI) (Down) + + â‚) Dual hold for _DRA, single hold for _..._NSY. Marked by: ^--…--^ + â‚‚) Hold key “<2†with eitherÙ­ key “<3†or “3>†for _BON, single hold “<2†for _ACC. Marked: â”—â”â”…â”â”â”› + ₃) 'South paw' hardware configuration. Configurable, default shown. + â‚„) 'Arrow' hardware configuration. Set to Down Arrow. + ₃ â‚„) There are two more optional hardware keys, to make it easier to compile for + a 12x12x12x11 or 12x12x12x12 layouts. + â‚…) Left Shift when pressed with another key. Medium long: to toggle _PAD. Long: toggle _MOV. + ₆) Right shift when pressed with another key. medium long: to toggle _FUN. Long: toggle _RAR. +*/ +// +// , inde>, midd> , ring> , pink> , pink2> , +// -*!- , , , , , <|,> , , , , , , + KC_ESC , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_BSPC , + LCTL_T ( KC_TAB ) , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN , KC_QUOT , + CHOLTAP_LSHFT , KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM , KC_DOT , KC_UP , CHOLTAP_RSHFT , + // KC_SLSH +// ----------------------------------------------------------------------------------------------------------------- + LALT_T ( KC_LEFT ) + +# ifdef TRANSMINIVAN_LEFTSIDE + , MO ( _PAD ) +# endif + +# ifdef MORE_KEY__COMMAND + , MORE_key1_BASE +# endif + +# ifdef SWITCH_HOLD_ACC_NSY + , DUO_HOLD , CHOLTAP_ACCE +# else + , CHOLTAP_ACCE , DUO_HOLD +# endif + + , LT__MOV__KC_ENT + +# ifdef TRANSMINIVAN_MIDLEFT + , TRANS_MIDLEFT +# endif + + , KC_SPC , DUO_HOLD + +# ifdef TRANSMINIVAN_RIGHTSIDE + , MO ( _FUN ) +# endif + + , KC_LEFT + // , KC__YGUI + +# ifdef MORE_KEY__ARROW + , KC_DOWN + // , MORE_key2 +# endif + + , KC_RIGHT + // , CHOLTAP_LAYR +// , , , <|,> , , , +// <1 ± ± , <2 , <3 , <4 |, 4> , 3> , 2> , ± ± 1> + + ), + + /* ⬆⬇ */ + + /* Layer _..._NSY: Numbers and symbols, to work with the Qwerty base layer above. + * Off hand Number input (-.Bksp ent (shft)tab). + */ + // KC_TILD does not work there, because of a limitation with shifted keys (nov 2019). + +// Process user configuration wrt ‛Default’ or ‛Alternative’ spot for this layout. +# if defined(BASE_QWERTY_BASEARROW__DEF_BASE) + [ _DEF_NSY ] = LAYOUT_redefined ( +# elif defined(BASE_QWERTY_BASEARROW__ALT_BASE) + [ _ALT_NSY ] = LAYOUT_redefined ( +# endif + +/* + Layer _..._NSY (Numbers and SYmbols). This fits the above Qwerty layer _..._BASE + + index>middl>ring>pin>pink2> + -*- <|> //(toggle) Access on _FUN + BASE ! @ # $ % | ^ & * ( ) Del + Tab+LCtl 1! 2@ 3# 4$ 5% | 6^ 7& 8* 9( 0) /? + -+LSht [{ ]} -_ \| =+ | + | _ { } `~+RSht + ^^ ^ // Only differences with normal version _..._NSY + --------------------------------------------------------------------------- + Left+LAlt ___ ___ Ent | . ___ LGUI Right+RAlt + -*- <|> -*- //(hold) Access on _..._BASE + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> + ^ ^ + (RGUI) (_MOV) +*/ +// +// +// , index> , middl> , ring> , pinky> , pink2> , +// , -*- , , , , <|,> , , , , , , + CTO_BASE , KC_EXLM , KC_AT , KC_HASH , KC_DLR , KC_PERC , KC_CIRC , KC_AMPR , KC_ASTR , KC_LPRN , KC_RPRN , KC_DEL , + LCTL_T ( KC_TAB ) , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_SLSH , // Sacrificing RCTL, because these are major symbols, which seem to warrant being uncluttered. + // RCTL_T ( KC_GRV ) , + LSFT_T ( KC_MINS ) , KC_LBRC , KC_RBRC , KC_MINS , KC_BSLS , KC_EQL , KC_PLUS , KC_PIPE , KC_UNDS , KC_LCBR , KC_RCBR , RSFT_T ( KC_GRV ) , // ` and ~ are often on a diminutive key on mini keyboards, therefore not sacrificing this Shift key. + // RSFT_T ( KC_TILD ) , +// --------------------------------------------------------------------------------------------------------------------------------------------- + LALT_T ( KC_LEFT ) + +# ifdef TRANSMINIVAN_LEFTSIDE + , XXXXXXX +# endif + +# ifdef MORE_KEY__COMMAND + , MORE_key1 +# endif + + , _______ , _______ , KC_ENT + +# ifdef TRANSMINIVAN_MIDLEFT + , TRANS_MIDLEFT +# endif + + , KC_DOT , DUO_HOLD , KC__YGUI + +# ifdef TRANSMINIVAN_RIGHTSIDE + , XXXXXXX +# endif + +# ifdef MORE_KEY__ARROW + , MORE_key2 +# endif + + , RALT_T ( KC_RGHT ) +// , , -*- , <|,> , -*- , , +// <1 ± ± , <2 , <3 , <4 |, 4> , 3> , 2> , ± ± 1> + + ), + + /* ⬆⬇ */ diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_qwerty_basearrow.h b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_qwerty_basearrow.h new file mode 100644 index 0000000000..bb5ab5ae2f --- /dev/null +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_qwerty_basearrow.h @@ -0,0 +1,63 @@ +/* + * License (GPL): + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + + * Author: © 2021 by Jos Boersema + * + */ + +// --------------------------------------v--------------------------------------- +// Configuration: +// --------------------------------------v--------------------------------------- + + /* • Harmonize regular Qwerty + * + * If compiling this ‛Qwerty Base Arrow’ base pair with regular Qwerty on + * the other base pair (dual layout), the key ‛/?’ is on a different key + * in these two layouts. This is bound to cause typing errors. With this + * option you can cause the regular Qwerty to also have a ‛/?’ in the same + * spot as ‛Qwerty Base Arrow’ has it, sacrificing Right Control/‛`~’ there. + * + * Regular Qwerty will still also have a ‛/?’ key in the normal Qwerty location. + * + * The key ‛`~’ can be reached through other means: just below on numbers & + * symbols _NSY layer, or on the bonus Unicode layer _BON (on the far left, home row). + * This is so by default, it remains unchanged. + */ + #define QWERTY_BASEARROW_HARMONIZE // _Activate_ to harmonize the ‛/?’ key in the regular Qwerty layout. + // _Remove_ leave regular Qwerty layout unchanged from default. + +// --------------------------------------^--------------------------------------- +// Below here no more comfortable configuration options..... +// --------------------------------------^--------------------------------------- + + + /* Redefine a layer in this file + * + * _Activate_ one or more of the below BASESFILE_LAYER_..., to redefine the layer + * in this file. The version in ./keymap.c will be ignored. Keep in mind to use + * transparent keys (_______) for “hold†layer switch keys on the BASE map, for + * your new layer. + */ +// #define BASESFILE_LAYER_ACC +// #define BASESFILE_LAYER_DRA +// #define BASESFILE_LAYER_BON +// #define BASESFILE_LAYER_PAD +// #define BASESFILE_LAYER_MOV +// #define BASESFILE_LAYER_RAR +// #define BASESFILE_LAYER_FUN + + /* ⬇ */ + diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_qwerty_basearrow.md b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_qwerty_basearrow.md new file mode 100644 index 0000000000..f90ba309cc --- /dev/null +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_qwerty_basearrow.md @@ -0,0 +1,132 @@ +# Minifan layout + +Compiled for: Qwerty with arrows on Base +======================================== + +This version of Qwerty puts arrows on Base, and assumes the 'arrow' hardware key. + +You have to manually set *#define `MORE_KEY__ARROW`* in `./user_config.h`, +If not compiled with ‛Arrow’ hardware key, Base will not contain ‛Down arrow’. +You do not have to worry about what to set the additional hardware key to, on +the Base layer. This will be set to Down Arrow, to complete that arrow cluster. + +The option `QWERTY_BASEARROW_HARMONIZE` in `./base_qwerty_basearrow.h` is set +by default, causing the key ‛/?’ in the _regular_ Qwerty layout to _also_ be +located in the same spot as in this ‛Qwerty with Arrows on Base’ layout. See +the header file `./base_qwerty_basearrow.h` for more details. + + +Is arrows on Base efficient ? +============================= + +This variation of Qwerty is not necessarily the recommended version of +Qwerty for a board with the additional ‛Arrow’ hardware key. +The regular Qwerty compile option can provide good arrow access. + +Putting directional arrow keys on the Base layer will cost you several +keys on the Base layer: hold to layer `_RAR` (power, media, etc. layer), +GUI, and ‛/?’. + +• The ‛/?’ key is displaced to the `_NSY` (numbers & symbols) layer, and is not + in the default spot for a Qwerty layout. + +• The GUI key is lost. You could decide to also use the ‛south paw’/‛command’ + hardware key, which is a GUI by default. + +• Hold key to `_RAR` layer is lost. You can only reach `_RAR` layer using the + right shift toggle, which is on a short timer. + + +Have it both ways +================= + +You could compile regular Qwerty on one of the Base pairs (‛Default’ or +‛Alternate’), and Qwerty _with Arrows on Base_ on the other. That way +you can switch to see what works for you. You could leave it like +that, and choose what you want depending on what you are doing. + + +Qwerty keymaps +-------------- + +──────────Qwerty─────────────── + +![Minivan layout Image BASEdef](http://socialism.nl/misc/minivan/minivan_base_layer_qwerty_basearrow_va.jpg) +Layer: `..._BASE` + +![Minivan layout Image BASEdef](http://socialism.nl/misc/minivan/minivan_nsy_layer_qwerty_basearrow_va.jpg) +Layer: `..._NSY` + +──────────in common──────────── + +(…) + +For more about the other layers, see âž¡ ![readme.md](./readme.md) ⬅ + +![Minivan illustration Overview layers by key, Qwerty arrows on Base](http://socialism.nl/misc/minivan/minivan-all-layers-clear-visualization-by-key_qwerty_basearrow_2000_vi.jpg) + +Layers (text) +============= + + ───────────────Qwerty───────────────── + + Layer _..._BASE (Letters). This is Qwerty with arrows on Base + | Right hand + index>middl>ring> pinky>pinky2> // Keys by finger + -o- <|> ... //-o- BASE access + Esc qQ wW eE rR tT | yY uU iI oO pP Bksp + Tab+LCtl aA sS dD fF gG | hH jJ kK lL ;: '" + LSht+_PAD zZ xX cC vV bB | nN mM ,< .> Up RSht+_FUN + +_MOVâµ | +_RARâ¶ + --------------------------------------------------------------------------------------- + Left+LAlt Del;_ACC _..._NSY(_DRA) Enter+_MOV| Space _..._NSY(_DRA) Left Right + hold holdâ‚â‚,₂٭₎ hold | holdâ‚â‚,₂٭₎ // switch type + holdâ‚₂₎ ^-┃-----------------------+--------^ ┃ // â‚₎ both = _DRA + â”—â”â”â”_BONâ”â”â”╋┅───────────┄┄┄«or»┄┄┄─+─────────┅┛ // ₂₎ both = _BON + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> // Keys by number + ^³ ^â´ // Optional more keys + (RGUI) (Down) + + â‚) Dual hold for _DRA, single hold for _..._NSY. Marked by: ^--…--^ + â‚‚) Hold key “<2†with eitherÙ­ key “<3†or “3>†for _BON, single hold “<2†for _ACC. Marked: â”—â”â”…â”â”â”› + ₃) 'South paw' hardware configuration. Configurable, default shown. + â‚„) 'Arrow' hardware configuration. Set to Down Arrow. + ₃ â‚„) There are two more optional hardware keys, to make it easier to compile for + a 12x12x12x11 or 12x12x12x12 layouts. + â‚…) Left Shift when pressed with another key. Medium long: to toggle _PAD. Long: toggle _MOV. + ₆) Right shift when pressed with another key. medium long: to toggle _FUN. Long: toggle _RAR. + +Remarks: The left modifiers have a slight delay in combination with an outside pointer device (mouse, stylus). +It seems this will be difficult to fix, because it is spread over two devices. To avoid the +±0.2 second delay, activate a layer where the modifiers are direct (`_PAD`), using the layer toggle on left shift. + +The key with ';' (Del;`_ACC`) does not auto-repeat on double tap, like QMK normal layer-tap keys. +There is an uncluttered _Delete_ on `_PAD`. + +Holding both `_DEF_NSY` keys left and right of the "split space bar" (enter, space) results in layer `_DRA`. + +Holding either one of the just above mentioned `_DEF_NSY` layer keys (<3 and 3>), with the `_ACC` layer key +(on <2) results in layer `_BON`. + + +- - - + + + Layer _..._NSY (Numbers and SYmbols). This fits the above Qwerty layer _..._BASE + + index>middl>ring>pin>pink2> + -*- <|> //(toggle) Access on _FUN + BASE ! @ # $ % | ^ & * ( ) Del + Tab+LCtl 1! 2@ 3# 4$ 5% | 6^ 7& 8* 9( 0) /? + -+LSht [{ ]} -_ \| =+ | + | _ { } `~+RSht + ^^ ^ // Only differences with normal version _..._NSY + --------------------------------------------------------------------------- + Left+LAlt ___ ___ Ent | . ___ LGUI Right+RAlt + -*- <|> -*- //(hold) Access on _..._BASE + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> + ^ ^ + (RGUI) (_MOV) + + + +- - - diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_workman.c b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_workman.c new file mode 100644 index 0000000000..bc157d69e8 --- /dev/null +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_workman.c @@ -0,0 +1,203 @@ +/* + * License (GPL): + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + + * Author: © 2021 by Jos Boersema + * + */ + +// --------------------------------------v--------------------------------------- +// Configuration: +// --------------------------------------v--------------------------------------- + +// --------------------------------------^--------------------------------------- +// Below here no more comfortable configuration options..... +// --------------------------------------^--------------------------------------- + + + /* Redefine a layer in this file + * + * _Activate_ one or more of the below BASESFILE_LAYER_..., to redefine the layer + * in this file. The version in ./keymap.c will be ignored. Keep in mind to use + * transparent keys (_______) for “hold†layer switch keys on the BASE map, for + * your new layer. + */ +// #define BASESFILE_LAYER_ACC +// #define BASESFILE_LAYER_DRA +// #define BASESFILE_LAYER_BON +// #define BASESFILE_LAYER_PAD +// #define BASESFILE_LAYER_MOV +// #define BASESFILE_LAYER_RAR +// #define BASESFILE_LAYER_FUN + + /* ⬇ */ + + /* Layer _..._BASE: Workman, normal BASE layer and 'default' layer + * + * - Dual use keys create a delay in the key (tap/hold keys), therefore + * space is not dual use (most ued key), neither is hyphen. + */ + +// Process user configuration wrt ‛Default’ or ‛Alternative’ spot for this layout. +# if defined(BASE_WORKMAN__DEF_BASE) + [ _DEF_BASE ] = LAYOUT_redefined ( +# elif defined(BASE_WORKMAN__ALT_BASE) + [ _ALT_BASE ] = LAYOUT_redefined ( +# endif + +/* + Layer _..._BASE (Letters). This is Workman + | Right hand + index>middl>ring> pinky>pinky2> // Keys by finger + -o- <|> ... //-o- BASE access + Esc qQ dD· rR· wW· bB· | jJ· fF· uU· pP· :;· Bksp + Tab+LCtl aA sS hH· tT· gG | yY· nN· eE· oO· iI· '" + LSht+_PAD zZ xX mM· cC· vV· | kK· lL· ,< .> /? RSht+_FUN + +_MOVâµ | +_RARâ¶ + --------------------------------------------------------------------------------------- + Left+LAlt Del;_ACC _..._NSY(_DRA) Enter+_MOV| Space _..._NSY(_DRA) LGUI Right;_RAR + hold holdâ‚â‚,₂٭₎ hold | holdâ‚â‚,₂٭₎ hold // switch type + holdâ‚₂₎ ^-┃-----------------------+--------^ ┃ // â‚₎ both = _DRA + â”—â”â”â”_BONâ”â”â”╋┅───────────┄┄┄«or»┄┄┄─+─────────┅┛ // ₂₎ both = _BON + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> // Keys by number + ^³ ^â´ // Optional more keys + (RGUI) (_MOV) + + â‚) Dual hold for _DRA, single hold for _..._NSY. Marked by: ^--…--^ + â‚‚) Hold key “<2†with eitherÙ­ key “<3†or “3>†for _BON, single hold “<2†for _ACC. Marked: â”—â”â”…â”â”â”› + ₃) 'South paw' hardware configuration. Configurable, default shown. + â‚„) 'Arrow' hardware configuration Configurable, default shown. + ₃ â‚„) There are two more optional hardware keys, to make it easier to compile for + a 12x12x12x11 or 12x12x12x12 layouts. + â‚…) Left Shift when pressed with another key. Medium long: to toggle _PAD. Long: toggle _MOV. + ₆) Right shift when pressed with another key. medium long: to toggle _FUN. Long: toggle _RAR. + ₇) Letters marked by ‛·’ are different from Qwerty. +*/ +// +// , inde>, midd> , ring> , pink> , pink2> , +// -*!- , , , , , <|,> , , , , , , + KC_ESC , KC_Q , KC_D , KC_R , KC_W , KC_B , KC_J , KC_F , KC_U , KC_P , KC_SCLN , KC_BSPC , + LCTL_T ( KC_TAB ) , KC_A , KC_S , KC_H , KC_T , KC_G , KC_Y , KC_N , KC_E , KC_O , KC_I , KC_QUOT , + CHOLTAP_LSHFT , KC_Z , KC_X , KC_M , KC_C , KC_V , KC_K , KC_L , KC_COMM , KC_DOT , KC_SLSH , CHOLTAP_RSHFT , +// ----------------------------------------------------------------------------------------------------------------- + LALT_T ( KC_LEFT ) + +# ifdef TRANSMINIVAN_LEFTSIDE + , MO ( _PAD ) +# endif + +# ifdef MORE_KEY__COMMAND + , MORE_key1_BASE +# endif + +# ifdef SWITCH_HOLD_ACC_NSY + , DUO_HOLD , CHOLTAP_ACCE +# else + , CHOLTAP_ACCE , DUO_HOLD +# endif + + , LT__MOV__KC_ENT + +# ifdef TRANSMINIVAN_MIDLEFT + , TRANS_MIDLEFT +# endif + + , KC_SPC , DUO_HOLD , KC__YGUI + +# ifdef TRANSMINIVAN_RIGHTSIDE + , MO ( _FUN ) +# endif + +# ifdef MORE_KEY__ARROW + , MORE_key2 +# endif + + , CHOLTAP_LAYR +// , , , <|,> , , , +// <1 ± ± , <2 , <3 , <4 |, 4> , 3> , 2> , ± ± 1> + + ), + + /* ⬆⬇ */ + + /* Layer _..._NSY: Numbers and symbols, to work with the Workman base layer above. (Same as Qwerty.) + * Off hand Number input (-.Bksp ent (shft)tab). + */ + // KC_TILD does not work there, because of a limitation with shifted keys (nov 2019). + +// Process user configuration wrt ‛Default’ or ‛Alternative’ spot for this layout. +# if defined(BASE_WORKMAN__DEF_BASE) + [ _DEF_NSY ] = LAYOUT_redefined ( +# elif defined(BASE_WORKMAN__ALT_BASE) + [ _ALT_NSY ] = LAYOUT_redefined ( +# endif + +/* + Layer _..._NSY (Numbers and SYmbols). This fits the above Workman layer _..._BASE + + index>middl>ring>pin>pink2> + -*- <|> //(toggle) Access on _FUN + BASE ! @ # $ % | ^ & * ( ) Del + Tab+LCtl 1! 2@ 3# 4$ 5% | 6^ 7& 8* 9( 0) `~+RCtl + -+LSht [{ ]} -_ \| =+ | + | _ { } `~+RSht // limitation prevents ~ + ^^ ^ // Only differences with normal version _..._NSY + --------------------------------------------------------------------------- + Left+LAlt ___ ___ Ent | . ___ LGUI Right+RAlt + -*- <|> -*- //(hold) Access on _..._BASE + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> + ^ ^ + (RGUI) (_MOV) +*/ +// +// +// , index> , middl> , ring> , pinky> , pink2> , +// , -*- , , , , <|,> , , , , , , + CTO_BASE , KC_EXLM , KC_AT , KC_HASH , KC_DLR , KC_PERC , KC_CIRC , KC_AMPR , KC_ASTR , KC_LPRN , KC_RPRN , KC_DEL , + LCTL_T ( KC_TAB ) , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , RCTL_T ( KC_GRV ) , + LSFT_T ( KC_MINS ) , KC_LBRC , KC_RBRC , KC_MINS , KC_BSLS , KC_EQL , KC_PLUS , KC_PIPE , KC_UNDS , KC_LCBR , KC_RCBR , RSFT_T ( KC_TILD ) , +// --------------------------------------------------------------------------------------------------------------------------------------------- + LALT_T ( KC_LEFT ) + +# ifdef TRANSMINIVAN_LEFTSIDE + , XXXXXXX +# endif + +# ifdef MORE_KEY__COMMAND + , MORE_key1 +# endif + + , _______ , _______ , KC_ENT + +# ifdef TRANSMINIVAN_MIDLEFT + , TRANS_MIDLEFT +# endif + + , KC_DOT , DUO_HOLD , KC__YGUI + +# ifdef TRANSMINIVAN_RIGHTSIDE + , XXXXXXX +# endif + +# ifdef MORE_KEY__ARROW + , MORE_key2 +# endif + + , RALT_T ( KC_RGHT ) +// , , -*- , <|,> , -*- , , +// <1 ± ± , <2 , <3 , <4 |, 4> , 3> , 2> , ± ± 1> + + ), + + /* ⬆⬇ */ diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_workman.md b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_workman.md new file mode 100644 index 0000000000..66e7a21bb8 --- /dev/null +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_workman.md @@ -0,0 +1,95 @@ +# Minifan layout + +Compiled for: Workman +===================== + +This file details the compile version `#define BASE_WORKMAN__DEF_BASE, BASE_WORKMAN__ALT_BASE`. +This is a Workman layout. + +The number & symbols layer (`_NSY`) is the same as for Qwerty. + +Workman keymaps +--------------- + +─────────Workman─────────────── + +![Minivan layout Image BASEdef](http://socialism.nl/misc/minivan/minivan_base_layer_workman_va.jpg) +Layer: `..._BASE` + +![Minivan layout Image BASEdef](http://socialism.nl/misc/minivan/minivan_nsy_layer_qwerty_vb.jpg) +Layer: `..._NSY` + +──────────in common──────────── + +(…) + +For more about the other layers, see âž¡ ![readme.md](./readme.md) ⬅ + +![Minivan illustration Overview layers by key, Workman](http://socialism.nl/misc/minivan/minivan-all-layers-clear-visualization-by-key_workman_2000_vh.jpg) + +Layers (text) +============= + + ───────────────Workman───────────────── + + Layer _..._BASE (Letters). This is Workman + | Right hand + index>middl>ring> pinky>pinky2> // Keys by finger + -o- <|> ... //-o- BASE access + Esc qQ dD rR wW bB | jJ fF uU pP :; Bksp + Tab+LCtl aA sS hH tT gG | yY nN eE oO iI '" + LSht+_PAD zZ xX mM cC vV | kK lL ,< .> /? RSht+_FUN + +_MOVâµ | +_RARâ¶ + --------------------------------------------------------------------------------------- + Left+LAlt Del;_ACC _..._NSY(_DRA) Enter+_MOV| Space _..._NSY(_DRA) LGUI Right;_RAR + hold holdâ‚â‚,₂٭₎ hold | holdâ‚â‚,₂٭₎ hold // switch type + holdâ‚₂₎ ^-┃-----------------------+--------^ ┃ // â‚₎ both = _DRA + â”—â”â”â”_BONâ”â”â”╋┅───────────┄┄┄«or»┄┄┄─+─────────┅┛ // ₂₎ both = _BON + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> // Keys by number + ^³ ^â´ // Optional more keys + (RGUI) (_MOV) + + â‚) Dual hold for _DRA, single hold for _..._NSY. Marked by: ^--…--^ + â‚‚) Hold key “<2†with eitherÙ­ key “<3†or “3>†for _BON, single hold “<2†for _ACC. Marked: â”—â”â”…â”â”â”› + ₃) 'South paw' hardware configuration. Configurable, default shown. + â‚„) 'Arrow' hardware configuration Configurable, default shown. + ₃ â‚„) There are two more optional hardware keys, to make it easier to compile for + a 12x12x12x11 or 12x12x12x12 layouts. + â‚…) Left Shift when pressed with another key. Medium long: to toggle _PAD. Long: toggle _MOV. + ₆) Right shift when pressed with another key. medium long: to toggle _FUN. Long: toggle _RAR. + +Remarks: The left modifiers have a slight delay in combination with an outside pointer device (mouse, stylus). +It seems this will be difficult to fix, because it is spread over two devices. To avoid the +±0.2 second delay, activate a layer where the modifiers are direct (`_PAD`), using the layer toggle on left shift. + +The two keys with ';' (Del;`_ACC`, Right;`_RAR`) do not auto-repeat on double tap, like QMK normal layer-tap keys. +There is an uncluttered _Delete_ on `_PAD`, an uncluttered _Right_ arrow on the `_MOV` layer. + +Holding both `_DEF_NSY` keys left and right of the "split space bar" (enter, space) results in layer `_DRA`. + +Holding either one of the just above mentioned `_DEF_NSY` layer keys (<3 and 3>), with the `_ACC` layer key +(on <2) results in layer `_BON`. + + +- - - + + + Layer _..._NSY (Numbers and SYmbols). This fits the above Workman layer _DEF_BASE + + index>middl>ring>pin>pink2> + -*- <|> //(toggle) Access on _FUN + BASE ! @ # $ % | ^ & * ( ) Del + Tab+LCtl 1! 2@ 3# 4$ 5% | 6^ 7& 8* 9( 0) `~+RCtl + -+LSht [{ ]} -_ \| =+ | + | _ { } `~+RSht // limitation prevents ~ + ^^ ^ // Only differences with Dvorak version _DEF_NSY + --------------------------------------------------------------------------- + Left+LAlt ___ ___ Ent | . ___ RGUI Right+RAlt + -*- <|> -*- u //(hold) Access on _DEF_BASE + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> + ^ ^ + (LGUI) (_MOV) + + + +- - - + diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/config.h b/keyboards/thevankeyboards/minivan/keymaps/josjoha/config.h new file mode 100644 index 0000000000..eff0c2fa69 --- /dev/null +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/config.h @@ -0,0 +1,48 @@ +/* + * License (GPL): + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + + * © 2019,2020 by Jos Boersema + */ + + +#pragma once + +// place overrides here + +// Some defines meant to decrease the firmware size. The firmware is otherwise over the maximum (atmega32u4) +# ifndef LINK_TIME_OPTIMIZATION_ENABLE + //Disable old style macro handling: MACRO() & action_get_macro +# define NO_ACTION_MACRO // This saves 320 bytes + //disable calling of action_function() from the fn_actions array (deprecated) +# define NO_ACTION_FUNCTION // This saves 96 bytes +# endif + +#define PERMISSIVE_HOLD +#define RGBLIGHT_EFFECT_BREATHING +#define RGBLIGHT_SLEEP // QMK docs: "If defined, the RGB lighting will be switched off when the host goes to sleep" + +// Layer switch TT(layer) tapping amount to make it toggle +#define TAPPING_TERM_HOLTAP 225 // 175 ms proved unreliable, 225 ms seems ok (personal preference) + + +// Attempts to reduce firmware size: + //#define LINK_TIME_OPTIMIZATION_ENABLE // Did not decrease firmware size when tested on 26 Jan 2020 + //#define NO_DEBUG //disable debugging (already defined) + //#define NO_PRINT JJdisable printing/debugging using hid_listen (already defined) + //#define NO_ACTION_LAYER //disable layers (obviously need layers) + //#define NO_ACTION_TAPPING // This saves 2516 bytes (9%) (keymap uses tapping) + //#define NO_ACTION_ONESHOT // This did not reduse firmware size on 26 Jan 2020 + diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/keymap.c b/keyboards/thevankeyboards/minivan/keymaps/josjoha/keymap.c new file mode 100644 index 0000000000..035cdfdb3b --- /dev/null +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/keymap.c @@ -0,0 +1,1754 @@ +/* + * License (GPL): + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + + * Authors: This QMK keymap file is a combination of the default + * keymap, led code original copied/edited from ../jetpacktuxedo, some + * copy/paste from QMK documentation code examples (etc). + * Remainder: © 2019, 2020, 2021 by Jos Boersema + */ + +// --------------------------------------v--------------------------------------- +// Configuration: +// --------------------------------------v--------------------------------------- +#include "./user_config.h" // Edit this file to set user preference compile options. +// --------------------------------------^--------------------------------------- + + + + /* Configurable keymap for Minivan layouts 44, 45, 46 keys. + * May work for 12×12×12×[11-12] keys as well. + * Configuration in ./user_config.h + */ + + /* Overview of the code + * + * The base layers are in separate files; + * process_record_user(), unicode macros are defined in unicode_macros.c; + * accented characters are defined in unicode_weurope.h + * + * Unicode macros facilitate recomputing for re-computing the Dvorak with changed letters + * ('descramble'), and exist because space ran out for * XP(…). + * + * The led color code might be a bit hairy, due to speed/count middle led overlapping layer color. + * + * Preprocessor indentation: # always in column one, #includes and #defines + * are most to the left unless nested, except in the user configuration + * block where room is left for a ‛//’. Logical stuff (#if etc) is + * indented from column two, and then in each nesting goes 4 more spaces + * to the right, so in between the normal code indentations. There should + * be a newline above and below logical statements. This makes preprocessor + * statements stand out, while giving more information in each statement. + * C indentation: trying to follow QMK standard. + * + */ + + +#include QMK_KEYBOARD_H + +// Bit masks for the Base layers, to set them as Default, in order to make transparency look back to the right one. +#define _DEF_BASE_MASK 0x1 // Some functions take a bit-mask, where layer 0 (zero) is called 0x1 instead. +#define _ALT_BASE_MASK 0x2 // Some functions take a bit-mask, where layer 0 (zero) is called 0x1 instead. + +// Below #defines the internal order of the layers. +// Notice this order in layer_state_set_user as well, regarding the led indicators. +enum { + _DEF_BASE, // Default BASE layer (layer at startup). Typically the letters. + +# ifndef MINIFAN_SINGLE_LAYOUT + + _ALT_BASE, // Alternative BASE layer. + +# endif + + _DEF_NSY, // numbers and symbols + +# ifndef MINIFAN_SINGLE_LAYOUT + + _ALT_NSY, // Alternate version of _DEF_NSY + +# endif + + _MOV, // movement arrows and mouse + _RAR, // keys RARely used, Unicode config, Power keys, Media keys, alternate mode switch, speed/size count, … + +# ifndef REMOVE_PAD + + _PAD, // Numbers pad. These are different versions of the same numbers, that is ‛1’ (_NSY) ≠ ‛1’ (_PAD). + +# endif + +# ifndef REMOVE_ACC // Removes this layer entirely, if set. + + _ACC, // Accented letters + +# endif + +# ifndef REMOVE_DRA // Removes this layer entirely, if set. + + _DRA, // Unusual symbols and whatever else + +# endif + +# ifndef REMOVE_BON // Removes this layer entirely, if set. + + _BON, // Bonus layer with more Unicode symbols + +# endif + + _FUN, // function keys, layer switcher, given highest order precedence just in case +} ; +// The default and alternate base layers needs to have a low order +// number, so that the other layers can be accessed on top of it. +// Default Layer is set, according to active Base pair. + +// What BASE layer is active. +enum { + _NORMAL_, // BASE layer is _DEF_BASE + _FULL_, // BASE layer is _ALT_BASE +# ifdef DVORAK_DESCRAMBLE_HALF // not used with other keymaps + _HALF_, // BASE layer is _ALT_BASE For DVORAK_DESCRAMBLE_HALF keymap: does *not* re-compute letters in Unicode + // This is for different Unicode encodings than “Control+U+HEX†(Linux). It will go through what is set on _RAR +# endif +}; +// The mechanism is about what layer to return to, once needing to go back to the letters layer (BASE). + +# ifndef STARTUP_ALTERNATE // Startup with in default BASE, normal mode. +short alternate = _NORMAL_; +# else // Startup with alternate BASE active +short alternate = _FULL_; // +# endif + +//* Shift detection +bool shift_ison = 0; // keep track of the state of shift (Capslock is ignored). There may be more elegant code for this in + // QMK (a function seems to do it?), but this is simple and keeps the issue isolated to this file. +# define TRUE 1 +# define FALSE 0 +bool _fun_stay = FALSE; // for making _FUN layer not return to BASE after pressing an F-key +bool leds_on; // toggle leds on/off + +# ifdef LEDS_OFF_BASE_DEF +bool led_middle_on = TRUE; // Set to off later, if startup setting is off. +# endif + +bool isolate_trigger = FALSE; // detects if _FUN layer move was pressed, and no other key (no normal use of Shift). +bool capslock; // keeps track of capslock state +bool numlock; // keeps track of numlock state +layer_state_t state_recall; // We are calling the function set_led_colors_ from this file as well. +// speed measuring +bool speed_measure = SPEED_INIT_VALUE; // feature activated or not on startup +uint32_t speed_counttime; // counts the time +short speed_countdown = SPEED_COUNTDOWN; // countdown to next computation/effects +int speed; // we store typing result (keys/second) to make reporting less stressful on user, as it doesn't run away after typing + // the value is recorded 10 times higher, to allow another digit of precision, needed to calculate Words-Per-Minute +long int speed_batches = 0; // This counts how many batches of SPEED_COUNTDOWN have been added to wordcount_speed_add +long int speed_add = 0; // This just adds the speed computed for every batch of SPEED_COUNTDOWN, also times 10 for precision +// character and word counting, attempting to count the final text being written +bool sizecount_measure = COUNT_INIT_VALUE; // feature activated or not on startup +long int sizecount_blanks = 0; // This counts spaces/enters as a means of counting words, with manual substraction key +long int sizecount_chars = 0; // This counts characters, substraction for delete/backspace +bool sizecount_word; // remember if the last character was whitespace, so a second does not count a word +bool sizecount_menu = FALSE; // menu mode for configuring sizecount led color & alert system for maximum size. +long int sizecount_max = 0; // the maximum system for count, alert user about relative size/limit +bool sizecount_max_type; // is size counting by word or by character +#define SIZECOUNT_WORD 0 // The type of text size counting: words +#define SIZECOUNT_CHAR 1 // " : characters + +/* This file contains mostly the Unicode and special macros. + It contains the function: process_record_user(...) + It has been isolated because the source file got long. + */ +#include "./unicode_macros.c" + + +// Pre-existing function, run when the keyboard starts up. +void keyboard_post_init_user (void) { + +# ifdef RGBLIGHT_ENABLE + +// Set side leds on/off startup +# ifdef STARTUP_SIDE_LEDS_OFF + leds_on = FALSE; +# else + leds_on = TRUE; +# endif + + // Set up RGB effects on _only_ the first LED + rgblight_set_effect_range (1, 1); // Takes a range: 1st arg is start, 2nd how many + rgblight_sethsv_noeeprom (HSV_WHITE); // Startup color of keyboard. + // Set LED effects to breathing mode + rgblight_mode_noeeprom (RGBLIGHT_EFFECT_BREATHING + 2); + + // Init the first and last LEDs to a static color. + setrgb (0, 0, 0, (LED_TYPE *)&led[0]); // Led[0] is led 0 + setrgb (0, 0, 0, (LED_TYPE *)&led[2]); // 2nd led + +// The logic seems to be to establish the effect first, and then toggle it on/off. +# ifdef STARTUP_MID_LED_OFF + rgblight_disable (); // +# ifdef LEDS_OFF_BASE_DEF // This messes with led effect on/off, so we need to track the state of this setting now. + led_middle_on = FALSE; +# endif +# endif + + isolate_rgblight_set (); + +# endif //RGBLIGHT_ENABLE + +// Set startup layer +# ifdef STARTUP_ALTERNATE + layer_move (_ALT_BASE); +# else + layer_move (_DEF_BASE); +# endif + + _fun_stay = TRUE; // startup with F-keys not returning to Base after stroke (_FUN) + +} + + +// Writes a number as if typed on keyboard. Typically to show a speed/text size measurement. +// If last argument is TRUE it prints a dot ‛.’ before the last digit +int write_number (long int input, short divide10) { + long int step10; + short digit; + short start = FALSE; + short printed = 0; + char output[2]; + + output[1] = '\0'; + if (0 > input) { // number is negative + send_string ("-"); // minus + printed++; + input *= -1; // turn positive + } + for (step10 = 1000000000; 0 != step10; step10 /= 10) { // assuming 32 bit, ± 10â¹ + digit = input / step10; + input = input % step10; + if (!start) { // remove leading zeros + if ((0 != digit) || (1 == step10)) start = TRUE; // If all zeros, always print last zero. + } + if (divide10 && (1 == step10)) { // print with a dot before the last digit + send_string ("."); + printed++; + } + if (start) { // print + output[0] = '0' + digit; + send_string (output); + printed++; + } + } + return printed; +} + + +// This function prevents the middle led from being altered by layer +// switching (showing the layer color, that is), when another +// functionality takes precedent over the middle led. +void middle_led_control (short hsv_h, short hsv_s, short hsv_v ) { +# ifdef RGBLIGHT_ENABLE + + if (FALSE == speed_measure) { // only touch middle led if no speed measuring going on + if ( ! ((TRUE == sizecount_measure) && (0 != sizecount_max)) ) { // only touch middle led if no text size + // counting set to a maximum is going on. + + rgblight_sethsv_noeeprom (hsv_h, hsv_s, hsv_v); // set it + } + } + +# endif +} + + +// Set middle led color for speed system. Needed in various places. +void speed_led (int speed) { +# ifdef RGBLIGHT_ENABLE + + speed /= 10; // argument is in 10 times its value + if ( ! ((TRUE == sizecount_measure) && (0 != sizecount_max)) ) { // only touch middle led if no text size + // counting set to a maximum is going on. + rgblight_sethsv_noeeprom (SPEED_HUE_STEP * speed + SPEED_HUE_START, 255, 128); // full saturation, but half lit + rgblight_set (); // only center led is altered, no need to go through isolate_rgblight_set() + } + +# endif +} + + +// do this in one place to handle left/right leds being off here +void isolate_rgblight_set () { +# ifdef RGBLIGHT_ENABLE + + if (!leds_on) { // left/right leds are off + // overwrite previously colors + uint8_t led0r = 0; uint8_t led0g = 0; uint8_t led0b = 0; + uint8_t led2r = 0; uint8_t led2g = 0; uint8_t led2b = 0; + led0r = 0; + led0g = 0; + led0b = 0; + led2r = 0; + led2g = 0; + led2b = 0; + setrgb(led0r, led0g, led0b, (LED_TYPE *)&led[0]); // Led 0 + setrgb(led2r, led2g, led2b, (LED_TYPE *)&led[2]); // Led 2 + } + rgblight_set (); + +# endif +} + + +// _FUN layer leds. +void indicate_fun_stay (void) { +# ifdef RGBLIGHT_ENABLE + + uint8_t led0r = 0; uint8_t led0g = 0; uint8_t led0b = 0; + uint8_t led2r = 0; uint8_t led2g = 0; uint8_t led2b = 0; + // See also below under _FUN layer led + if (_fun_stay == TRUE) { // normal mode, 0 (100% normal) + led0r = 255; // red + led2r = 255; // Yellow + led2g = 50; + }else{ + led0r = 255; // Yellow + led0g = 50; // + led2r = 255; // red + } + setrgb(led0r, led0g, led0b, (LED_TYPE *)&led[0]); // Led 0 + setrgb(led2r, led2g, led2b, (LED_TYPE *)&led[2]); // Led 2 + isolate_rgblight_set (); + +# endif //RGBLIGHT_ENABLE +} + + +// _RAR layer leds +// It is a function because this is called when the Base layer OTHER_BASE key is pressed +void indicate_base (void) { +# ifdef RGBLIGHT_ENABLE + + uint8_t led0r = 0; uint8_t led0g = 0; uint8_t led0b = 0; + uint8_t led2r = 0; uint8_t led2g = 0; uint8_t led2b = 0; + // See also below under _FUN layer led + if (_NORMAL_ == alternate) { // normal mode, 0 (100% normal) + led0r = 255; // shine white left led + led0g = 255; + led0b = 255; + rgblight_sethsv_noeeprom (HSV_PURPLE); // This overrides the speed setting. + led2r = 100; // purple + led2b = 100; + } +# ifdef DVORAK_DESCRAMBLE_HALF // not used with other keymaps + else if (_HALF_ == alternate) { // alternate mode, 1 (normal unicode) + led0r = 100; // purple + led0b = 100; + rgblight_sethsv_noeeprom (HSV_WHITE); // shine white middle led (still breathes) + led2r = 100; // purple + led2b = 100; + } +# endif + else if (_FULL_ == alternate) { // alternate mode, 1 (recomputed unicode for DVORAK_DESCRAMBLE) + led0r = 100; // purple + led0b = 100; + rgblight_sethsv_noeeprom (HSV_PURPLE); + led2r = 255;// shine white right led + led2g = 255; + led2b = 255; + } + setrgb(led0r, led0g, led0b, (LED_TYPE *)&led[0]); // Led 0 + setrgb(led2r, led2g, led2b, (LED_TYPE *)&led[2]); // Led 2 + isolate_rgblight_set (); + +# endif //RGBLIGHT_ENABLE +} + + +// Sets led colors for all layers. Including Capslock/Numlock changes. See a computer side activated function for that too: +// led_update_user (…) +void set_led_colors_ (layer_state_t state) { +# ifdef RGBLIGHT_ENABLE + + uint8_t led0r = 0; uint8_t led0g = 0; uint8_t led0b = 0; + uint8_t led2r = 0; uint8_t led2g = 0; uint8_t led2b = 0; + short color_ddl = 28 ; + +# ifdef LEDS_OFF_BASE_DEF + // Special case of switching centre led effect on/off + if (!layer_state_cmp (state, _DEF_BASE)) { // letters + //if (rgblight_is_enabled()) + if (led_middle_on) { // Follows user setting based on _RAR key. + rgblight_enable_noeeprom (); // Would be easier if middle_led_control (…) could set brightness to dark, but seems to not work. + } + } +# endif + + // The order should be the reverse of the #defines of layer number of the layers on top + // because higher layer number is higher priority if activated + /* _DEF_BASE 0 _ALT_BASE 1 _DEF_NSY 2 _ALT_NSY 3 _MOV 4 _RAR 5 _PAD 6 _ACC 7 _DRA 8 _BON 9 _FUN 10 */ + if (layer_state_cmp (state, _FUN)) { // F-keys, and layer toggles + middle_led_control (HSV_RED); // purple + indicate_fun_stay (); // Indicates state of _fun_stay, but only when it is being toggled. + return ; // indicate_fun_stay function already does it all. + } + +# ifndef REMOVE_BON // Removes this layer entirely, if set. + else if (layer_state_cmp (state, _BON)) { // Bonus layer with encircled numbers and more symbols + // side leds dark + middle_led_control (HSV_YELLOW); + } +# endif // REMOVE_BON + +# ifndef REMOVE_DRA // This cuts out the whole _DRA layer + else if (layer_state_cmp (state, _DRA)) { // Unicode drawings and unusual things + led0r = 255; // gold red + led0g = 128; // + led2r = 255; // + led2g = 128; // + middle_led_control( HSV_GOLDENROD ); + } +# endif // REMOVE_DRA + +# ifndef REMOVE_ACC // This cuts out the whole _ACC layer. + else if (layer_state_cmp (state, _ACC)) { // Accented letters (Unicode input layer) + led0g = 150; // With some blue, because it is also a symbol + led0b = 100; + led2g = 150; + led2b = 100; + middle_led_control (HSV_TURQUOISE); // cyan + } +# endif // REMOVE_ACC + +# ifndef REMOVE_PAD + else if (layer_state_cmp (state, _PAD)) { // numbers pad layer + if (numlock) { + led0b = 255; // Blue for the numbers part + led2g = 255; // Green for the navigation part + }else{ + led0g = 255; // reversed + led2b = 255; // + } + middle_led_control (60, 20, 100); // yellow (low saturation) + } +# endif // REMOVE_PAD + + //--- + else if (layer_state_cmp (state, _RAR)) { // layer with special keys + indicate_base (); // this function already does it all + return; // + } + //--- + else if (layer_state_cmp (state, _MOV)) { // movement layer + led0g = 255;// movement is green, "go forward" + led2g = 255; + middle_led_control(HSV_GREEN); + } + //--- (pair) + else if (layer_state_cmp (state, _ALT_NSY)) { // alternate, numbers/symbols + led0b = 255; // first led follows the corresponding default layer: _DEF_NSY + led2r = color_ddl; // Same as DDL, to which it belongs. + led2g = color_ddl; // + led2b = color_ddl; // + middle_led_control (HSV_BLUE); + } + else if (layer_state_cmp (state, _DEF_NSY)) { // symbols and numbers + led0b = 255; // blue for symbols, like ink (writing) + led2b = 255; + middle_led_control (HSV_BLUE); + } + //--- (pair) + // Alternate BASE layer (alternate) + else if (layer_state_cmp (state, _ALT_BASE)) { + +# if !defined(BASE_NUMPAD__ALT_BASE) // Normal led colors for ‛regular’ base layers like Dvorak, Qwerty. + + if (capslock) { + led2r = 255; // Brighter version to indicate capslock + led2g = 255; // + led2b = 255; // + } else { + led2r = color_ddl; // A bit of a white not too bright color on right + led2g = color_ddl; // + led2b = color_ddl; // + } + +# else // BASE_NUMPAD__ALT_BASE: numpad on Alternate Base, which should show the state of NumLock + + // This is a copy of the _PAD led colors, but less bright + if (numlock) { + led0b = 80; // Blue for the numbers part + led2g = 80; // Green for the navigation part + }else{ + led0g = 80; // reversed + led2b = 80; // + } + middle_led_control (60, 20, 100); // yellow (low saturation) + +# endif + + middle_led_control (HSV_TEAL); // seems to be the same as CYAN/AZURE, conflicts with _ACC + } + // Default layer (generally), normal BASE layer + else if (layer_state_cmp (state, _DEF_BASE)) { // letters + +# ifdef LEDS_OFF_BASE_DEF + led0r = 0; // All leds off when in Default Base + led0g = 0; // + led0b = 0; // + rgblight_disable_noeeprom (); +# else + if (capslock) { + led0r = 255; // Brighter version to indicate capslock + led0g = 255; // + led0b = 255; // + } else { + led0r = 28; // A bit of a weak white color on left + led0g = 28; // + led0b = 28; // + } + + middle_led_control (HSV_TEAL); +# endif // LEDS_OFF_BASE_DEF + } + //--- + + setrgb (led0r, led0g, led0b, (LED_TYPE *)&led[0]); // Led 0 + setrgb (led2r, led2g, led2b, (LED_TYPE *)&led[2]); // Led 2 + + isolate_rgblight_set (); + +# endif //RGBLIGHT_ENABLE +} + +// Pre-existing QMK function, called when NumLock/CapsLock key is pressed, including on another keyboard. +// This function sets two booleans that keep track of the current capslock/numlock state, for use in layer led colors. +bool led_update_user (led_t led_state) { + + if (led_state.num_lock) { // This doesn't look at the keyboard leds or any other actual leds. It seems to look at whether + // or not the computer has numlock in the on/off state. + numlock = TRUE; + }else{ + numlock = FALSE; + } + if (led_state.caps_lock) { + capslock = TRUE; + }else{ + capslock = FALSE; + } + //layer_state_set_user + set_led_colors_ (state_recall); // Update leds + return true ; +} + + +// pre-existing function, called when layer changes +layer_state_t layer_state_set_user (layer_state_t state) { + + set_led_colors_ (state); // Update leds + state_recall = state; // Recall this, for calling set_led_colors_(…) on Num/Capslock changes in led_update_user(…) + return state; +} + +// -------------------------------- layers -------------------------------- + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + +/******************** What base layers to use: **************/ + +// * Dvorak * +# if defined(BASE_DVORAK__DEF_BASE) || defined(BASE_DVORAK__ALT_BASE) +# include "./base_dvorak.c" // Regular Dvorak. +# endif + +// * Dvorak descramble * +# if defined(BASE_DVORAK_DESCRAMBLE__ALT_BASE) // only for ‛Alternate’ base +# include "./base_dvorak_descramble.c" // Dvorak for when computer is already remapping to Dvorak. +# endif + +// * Qwerty * +# if defined(BASE_QWERTY__DEF_BASE) || defined(BASE_QWERTY__ALT_BASE) +# include "./base_qwerty.c" // Regular Qwerty. +# endif + +// * Qwerty arrows on Base * +# if defined(BASE_QWERTY_BASEARROW__DEF_BASE) || defined(BASE_QWERTY_BASEARROW__ALT_BASE) +# include "./base_qwerty_basearrow.c" // Qwerty + arrows +# endif + +// * Colemak * +# if defined(BASE_COLEMAK__DEF_BASE) || defined(BASE_COLEMAK__ALT_BASE) +# include "./base_colemak.c" // Regular Colemak. +# endif + +// * Workman * +# if defined(BASE_WORKMAN__DEF_BASE) || defined(BASE_WORKMAN__ALT_BASE) +# include "./base_workman.c" // Regular Workman. +# endif + +// * Numpad * +# if defined(BASE_NUMPAD__ALT_BASE) +# include "./base_numpad.c" // Numbers pad +# endif + +// // ⬇ insert your ./base_YOUR_KEYMAP.c #include here: + + +// * YOUR KEYMAP * +// # if defined(BASE_YOUR_KEYMAP__DEF_BASE) || defined(BASE_YOUR_KEYMAP__ALT_BASE) +// # include "./base_YOUR_KEYMAP.c" // Your Keymap. +// # endif + +// If your keymap also has a ./base_YOUR_KEYMAP.h configuration/header file, #include it in ./user_config.h +// Look for similar inclusions of base header files, similar to the #includes here. +// You should be able to just copy what you did here, and only change “.c†into “.hâ€. + +// // ⬆ + + + // See the ./bases_*.c file for definition of _DEF_BASE, _DEF_NSY, _ALT_BASE, _ALT_NSY layers, selected in ./user_config.h + + /* ⬆⬇ (next layer) */ + + +# ifndef BASESFILE_LAYER_MOV // Use a definition of this layer in the ./bases_* file, where this #define can be defined. + + /* Layer _MOV: Movement layer: mouse and hands on navigation + * Also delete/backspace, to navigate and delete together. + */ + + [ _MOV ] = LAYOUT_redefined ( + +/* + Layer _MOV (MOVement, mouse movement on right hand) + + triangle layout (mouse right hand): + + index>middl>ring> pinky>pink2> + <|>-*- //(toggle) on _FUN + BASE PgDn Up PgUp Home Btn3 | xxx WhDn MsUp WhU WhLft Bksp + LCtl Left Down Right End Btn1 | Btn1 MsLft MsDn MsRht WhRht RCtl + LSht*- xxx Acc2 Acc1 Acc0 Btn2 | Btn2 Btn3 Btn4 Btn5 xxx RSht //(toggle) on BASE + ---------------------------------------------------------------------------- + LAlt Del Ent ___ | PgUp PgDn LGUI RAlt + -*-<|> //(hold) on BASE + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> + … … + + triangle layout, 'arrow' additional hardware key, with arrow cluster (difference marked _): + + index>middl>ring> pinky>pink2> + <|>-*- //(toggle) on _FUN + BASE PgDn Up PgUp Home Btn3 | xxx WhDn MsUp WhU WhLft Bksp + LCtl Left Down Right End Btn1 | Btn1 MsLft MsDn MsRht WhRht RCtl + LSht*- xxx Acc2 Acc1 Acc0 Btn2 | Btn2 Btn3 Btn4 Btn5 _Up_ RSht //(toggle) on BASE + ---------------------------------------------------------------------------- + LAlt Del Ent ___ | PgUp PgDn _Left__Down__Right_ + -*-<|> //(hold) on BASE + <1 ± <2 <3 <4 | 4> 3> 2> _±_ 1> + … + + triangle layout, 'arrow' additional hardware key, with arrow cluster and navigation keys: + + index>middl>ring> pinky>pink2> + <|>-*- //(toggle) on _FUN + BASE PgDn Up PgUp Home _Btn4_ | xxx WhDn MsUp WhU WhLft Bksp + LCtl Left Down Right End Btn1 | Btn1 MsLft MsDn MsRht WhRht RCtl + LSht*- xxx Acc2 Acc1 Acc0 _Btn5_ | Btn2 Btn3 _Home__PgUp_ _Up_ _PgDn_ //(toggle) on BASE + ---------------------------------------------------------------------------- + LAlt Del Ent ___ | PgUp _End_ _Left__Down__Right_ + -*-<|> //(hold) on BASE + <1 ± <2 <3 <4 | 4> 3> 2> _±_ 1> + … + + + flat layout (mouse movement on left hand): + + index>middl>ring> pinky>pink2> + <|>-*- //(toggle) on _FUN + BASE WLft WDn WUp WRht xxx | Btn3 PgUp Home End PgDn Bksp + LCtl MLft MDn MUp MRht Btn1 | Btn1 Left Up Down Right RCtl + LSht*- Btn5 Btn4 Btn3 Butn2 xxx | Btn2 Acc0 Acc1 Acc2 xxx RSht //(toggle) on BASE + ---------------------------------------------------------------------------- + LAlt Del Ent ___ | PgUp PgDn LGUI RAlt + -*-<|> //(hold) on BASE + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> + … + + flat layout, 'arrow' additional hardware key, with arrow cluster (difference marked _) + + index>middl>ring> pinky>pink2> + <|>-*- //(toggle) on _FUN + BASE WLft WDn WUp WRht xxx | Btn3 PgUp Home End PgDn Bksp + LCtl MLft MDn MUp MRht Btn1 | Btn1 Left Up Down Right RCtl + LSht*- Btn5 Btn4 Btn3 Butn2 xxx | Btn2 Acc0 Acc1 Acc2 xxx RSht //(toggle) on BASE + ---------------------------------------------------------------------------- + LAlt Del Ent ___ | PgUp _Left_ _Up_ _Down__Right_ + -*-<|> //(hold) on BASE + <1 ± <2 <3 <4 | 4> 3> 2> _±_ 1> + … + + flat layout, 'arrow' additional hardware key, with arrow cluster and additional navigation keys: + + index>middl>ring> pinky>pink2> + <|>-*- //(toggle) on _FUN + BASE WLft WDn WUp WRht xxx |_Acc2_ PgUp Home End PgDn Bksp + LCtl MLft MDn MUp MRht Btn1 | Btn1 Left Up Down Right RCtl + LSht*- Btn5 Btn4 Btn3 Butn2 xxx |_Acc1_ Acc0 _PgUp__Home__End_ _PgDn_ //(toggle) on BASE + ---------------------------------------------------------------------------- + LAlt Del Ent ___ | PgUp _Left_ _Up_ _Down__Right_ + -*-<|> //(hold) on BASE + <1 ± <2 <3 <4 | 4> 3> 2> _±_ 1> + … + + flat layout, 'arrow' additional hardware key, with arrow cluster, additional navigation keys, vi(1) layout: + + index>middl>ring> pinky>pink2> + <|>-*- //(toggle) on _FUN + BASE WLft WDn WUp WRht xxx |_Acc2_ PgUp Home End PgDn Bksp + LCtl MLft MDn MUp MRht Btn1 | Left Down Up Right Btn1 RCtl + LSht*- Btn5 Btn4 Btn3 Butn2 xxx |_Acc1_ Acc0 _PgUp__Home__End_ _PgDn_ //(toggle) on BASE + ---------------------------------------------------------------------------- + LAlt Del Ent ___ | PgUp _Left_ _Down__Up_ _Right_ + -*-<|> //(hold) on BASE + <1 ± <2 <3 <4 | 4> 3> 2> _±_ 1> + … + */ + + /* Inner default navigation/mouse layout. 11 means row 1, column 1, etc. + * Configured for arrows on the right, mouse on the left (BTN* on the left side, that is). + */ + +# ifndef ARROWS_TRIANGLE +# define NAVI_11 KC_BTN3 // NAVI for 'navigation cluster', 11 for row 1, column 1, etc. +# define NAVI_12 KC_PGUP +# define NAVI_13 KC_HOME +# define NAVI_14 KC_END +# define NAVI_15 KC_PGDN +# define NAVI_21 KC_BTN1 +# define NAVI_22 KC_LEFT +# define NAVI_23 KC_UP +# define NAVI_24 KC_DOWN +# define NAVI_25 KC_RIGHT +# define NAVI_31 KC_BTN2 +# define NAVI_32 KC_ACL0 +# define NAVI_33 KC_ACL1 +# define NAVI_34 KC_ACL2 +# define NAVI_35 XXXXXXX + //----------------------------------------------------------------------------------- + // Configured for left handed mouse, with xxx,BTN* on the right most column. +# define MOUS_11 KC_WH_L // MOUS for mouse, etc. +# define MOUS_12 KC_WH_D +# define MOUS_13 KC_WH_U +# define MOUS_14 KC_WH_R +# define MOUS_15 XXXXXXX +# define MOUS_21 KC_MS_L +# define MOUS_22 KC_MS_D +# define MOUS_23 KC_MS_U +# define MOUS_24 KC_MS_R +# define MOUS_25 KC_BTN1 +# define MOUS_31 KC_BTN5 +# define MOUS_32 KC_BTN4 +# define MOUS_33 KC_BTN3 +# define MOUS_34 KC_BTN2 +# define MOUS_35 XXXXXXX +# endif + +// Alternative navigation/mouse layout: arrows in triangle, and left hand on the left 'wasd' location. +// If you want these arrows on the right hand, you may want to edit this, to put right most column left, etc. + +# ifdef ARROWS_TRIANGLE +# define NAVI_11 KC_PGDN +# define NAVI_12 KC_UP +# define NAVI_13 KC_PGUP +# define NAVI_14 KC_HOME +# define NAVI_15 KC_BTN3 +# define NAVI_21 KC_LEFT +# define NAVI_22 KC_DOWN +# define NAVI_23 KC_RIGHT +# define NAVI_24 KC_END +# define NAVI_25 KC_BTN1 +# define NAVI_31 XXXXXXX +# define NAVI_32 KC_ACL2 +# define NAVI_33 KC_ACL1 +# define NAVI_34 KC_ACL0 +# define NAVI_35 KC_BTN2 + //------------------------------------------------------------------------------------ + // If switching hands to put mouse left, same as for navigation side: switch outer columns by editing here. +# define MOUS_11 XXXXXXX +# define MOUS_12 KC_WH_D +# define MOUS_13 KC_MS_U +# define MOUS_14 KC_WH_U +# define MOUS_15 KC_WH_L +# define MOUS_21 KC_BTN1 +# define MOUS_22 KC_MS_L +# define MOUS_23 KC_MS_D +# define MOUS_24 KC_MS_R +# define MOUS_25 KC_WH_R +# define MOUS_31 KC_BTN2 +# define MOUS_32 KC_BTN3 +# define MOUS_33 KC_BTN4 +# define MOUS_34 KC_BTN5 +# define MOUS_35 XXXXXXX +# endif + +// Default left/right layout, meaning arrows right and mouse left. +# ifndef ARROWS_LEFT +# define LEFT_AA MOUS_11 +# define LEFT_AB MOUS_12 +# define LEFT_AC MOUS_13 +# define LEFT_AD MOUS_14 +# define LEFT_AE MOUS_15 +# define LEFT_BA MOUS_21 +# define LEFT_BB MOUS_22 +# define LEFT_BC MOUS_23 +# define LEFT_BD MOUS_24 +# define LEFT_BE MOUS_25 +# define LEFT_CA MOUS_31 +# define LEFT_CB MOUS_32 +# define LEFT_CC MOUS_33 +# define LEFT_CD MOUS_34 +# define LEFT_CE MOUS_35 +# define RGHT_AA NAVI_11 +# define RGHT_AB NAVI_12 +# define RGHT_AC NAVI_13 +# define RGHT_AD NAVI_14 +# define RGHT_AE NAVI_15 +# define RGHT_BA NAVI_21 +# define RGHT_BB NAVI_22 +# define RGHT_BC NAVI_23 +# define RGHT_BD NAVI_24 +# define RGHT_BE NAVI_25 +# define RGHT_CA NAVI_31 +# define RGHT_CB NAVI_32 +# define RGHT_CC NAVI_33 +# define RGHT_CD NAVI_34 +# define RGHT_CE NAVI_35 +# endif + +# ifdef ARROWS_LEFT +# define LEFT_AA NAVI_11 +# define LEFT_AB NAVI_12 +# define LEFT_AC NAVI_13 +# define LEFT_AD NAVI_14 +# define LEFT_AE NAVI_15 +# define LEFT_BA NAVI_21 +# define LEFT_BB NAVI_22 +# define LEFT_BC NAVI_23 +# define LEFT_BD NAVI_24 +# define LEFT_BE NAVI_25 +# define LEFT_CA NAVI_31 +# define LEFT_CB NAVI_32 +# define LEFT_CC NAVI_33 +# define LEFT_CD NAVI_34 +# define LEFT_CE NAVI_35 +# define RGHT_AA MOUS_11 +# define RGHT_AB MOUS_12 +# define RGHT_AC MOUS_13 +# define RGHT_AD MOUS_14 +# define RGHT_AE MOUS_15 +# define RGHT_BA MOUS_21 +# define RGHT_BB MOUS_22 +# define RGHT_BC MOUS_23 +# define RGHT_BD MOUS_24 +# define RGHT_BE MOUS_25 +# define RGHT_CA MOUS_31 +# define RGHT_CB MOUS_32 +# define RGHT_CC MOUS_33 +# define RGHT_CD MOUS_34 +# define RGHT_CE MOUS_35 +# endif + +/* Definition of the additional arrow cluster with optional navigation keys, for the 'arrow' hardware layout. + * + * By default what becomes the up-arrow (row 2, 2nd key from right) is a no-action key on this layer, + * which can be displaced without worry. + * Keys that are displaced for the larger arrow cluster with navigation keys, get moved to the second definition + * of KC_BTN2 and KC_BTN3, which is on the non-mouse hand. + * + * Only the version where the triangle arrows are defined for the left hand, or the version where the flat line + * arrows are defined for the right hand, are supported. + * + * There are several configurations, worked down in order to keep this mess under control. + * + * v----------------------not-defined-------------v----------------v + * !MOREKEY2_ARROW_CLUSTER !MOREKEY2_ADD_NAVIGATION !ARROWS_TRIANGLE !ARROWS_LEFT + * defined MOREKEY2_ARROW_CLUSTER ...................... yes yes yes + * defined MOREKEY2_ADD_NAVIGATION yes ....................... yes only for flat arrows + * defined ARROWS_TRIANGLE yes yes ............... no + * defined ARROWS_LEFT yes only for triangle yes ........... + * MOREKEY2_ARROW_CLUSTER MOREKEY2_ADD_NAVIGATION ARROWS_TRIANGLE ARROWS_LEFT + * ^--------------------------defined-------------^----------------^ + * + * Definition order: + * 0 no arrow cluster (and therefore no additional navigation keys either) + * 1 triangle arrows with arrow cluster + * 2 '' '' + additional navigation and repositioning displaced keys + * 3 flat arrows with arrow cluster + * 4 '' '' + additional navigation and repositioning displaced keys + */ + + /* 0 (Nothing special, just the default keys)*/ + +// Default layout without arrow cluster. (With a little imagination you can visualize the keyboard.) +# if !defined(MOREKEY2_ARROW_CLUSTER) +// Default +# define _MOV_KEY_ROW2_KEY1 KC_RSFT +# define _MOV_KEY_ROW2_KEY2 RGHT_CE // Key counting from the right to the left. +# define _MOV_KEY_ROW2_KEY3 RGHT_CD +# define _MOV_KEY_ROW2_KEY4 RGHT_CC +// ------------------------------------------ +# define _MOV_KEY_ROW1_KEY1 KC_RALT // '' +# define _MOV_KEY_ROW1_KEY2 MORE_key2 // '' +# define _MOV_KEY_ROW1_KEY3 KC__YGUI // '' (etc) +# define _MOV_KEY_ROW1_KEY4 KC_PGDN +// <|,> , , , , +// |, 4> , 3> , 2> , ± , 1> // ± is the additional hardware key +# endif + + /* 1 (triangle arrows with arrow cluster) */ + +// Patch in the arrows for arrow triangle layout +# if defined(MOREKEY2_ARROW_CLUSTER) && defined(ARROWS_TRIANGLE) +// Arrow cluster +# define _MOV_KEY_ROW2_KEY2 KC_UP +// ------------------------------------------ +# define _MOV_KEY_ROW1_KEY1 KC_RIGHT +# define _MOV_KEY_ROW1_KEY2 KC_DOWN +# define _MOV_KEY_ROW1_KEY3 KC_LEFT +// <|,> , , , , +// |, 4> , 3> , 2> , ± , 1> +# endif + +// The default layout around the arrows +# if defined(MOREKEY2_ARROW_CLUSTER) && !defined(MOREKEY2_ADD_NAVIGATION) && defined(ARROWS_TRIANGLE) +// Default keys +# define _MOV_KEY_ROW2_KEY1 KC_RSFT +# define _MOV_KEY_ROW2_KEY3 RGHT_CD +# define _MOV_KEY_ROW2_KEY4 RGHT_CC +// ------------------------------------------ +# define _MOV_KEY_ROW1_KEY4 KC_PGDN +// <|,> , , , , +// |, 4> , 3> , 2> , ± , 1> +# endif + + /* 2 ( '' '' + additional navigation and repositioning displaced keys) */ + +// Patch in the navigation keys for the arrow in triangle layout. +# if defined(MOREKEY2_ADD_NAVIGATION) && defined(ARROWS_TRIANGLE) // Navigation additional keys (arrows implied). +# define _MOV_KEY_ROW2_KEY1 KC_PGDN +# define _MOV_KEY_ROW2_KEY3 KC_PGUP +# define _MOV_KEY_ROW2_KEY4 KC_HOME +// ------------------------------------------ +# define _MOV_KEY_ROW1_KEY4 KC_END +// <|,> , , , , +// |, 4> , 3> , 2> , ± , 1> +# endif + +// We have now overwritten the positions of RGHT_CC and RGHT_CD, which could be useful keys. +// You don't want to mess with BTN1 on the other hand, because it needs to select together with mouse moving in many applications. +# if defined(MOREKEY2_ADD_NAVIGATION) && defined(ARROWS_TRIANGLE) && defined(ARROWS_LEFT) // ARROWS_LEFT because the wider map is edited +// +// ... spelling this out to keep brain for exploding: +// Overwritten (copied from above): +// #define RGHT_CC MOUS_33 +// #define MOUS_33 KC_BTN4 +// #define RGHT_CD MOUS_34 +// #define MOUS_34 KC_BTN5 +// 'BTN4' and 'BTN5' are overwritten. +// Where are KC_BTN2 and KC_BTN3 on the non-mouse hand: +// #define NAVI_15 KC_BTN3 +// #define LEFT_AE NAVI_15 +// #define NAVI_35 KC_BTN2 +// #define LEFT_CE NAVI_35 +// 'LEFT_AE' and 'LEFT_CE' provide room. +// +# undef LEFT_AE +# define LEFT_AE KC_BTN4 +# undef LEFT_CE +# define LEFT_CE KC_BTN5 +# endif + + /* 3 (flat arrows with arrow cluster) */ + +# if defined(MOREKEY2_ARROW_CLUSTER) && !defined(ARROWS_TRIANGLE) +// arrow cluster +# define _MOV_KEY_ROW1_KEY1 KC_RIGHT +# define _MOV_KEY_ROW1_KEY2 KC_DOWN +# define _MOV_KEY_ROW1_KEY3 KC_UP +# define _MOV_KEY_ROW1_KEY4 KC_LEFT +// <|,> , , , , +// |, 4> , 3> , 2> , ± , 1> +# endif + +// The default layout around the arrows +# if defined(MOREKEY2_ARROW_CLUSTER) && !defined(MOREKEY2_ADD_NAVIGATION) && !defined(ARROWS_TRIANGLE) +// Default +# define _MOV_KEY_ROW2_KEY1 KC_RSFT +# define _MOV_KEY_ROW2_KEY2 RGHT_CE // Key counting from the right to the left. +# define _MOV_KEY_ROW2_KEY3 RGHT_CD +# define _MOV_KEY_ROW2_KEY4 RGHT_CC +// <|,> , , , , +// |, 4> , 3> , 2> , ± , 1> +# endif + + + /* 4 ( '' '' + additional navigation and repositioning displaced keys) */ + +// The definitions for the additional navigation keys (HOME, etc) +# if defined(MOREKEY2_ADD_NAVIGATION) && !defined(ARROWS_TRIANGLE) +// Additional navigation keys: flat +# define _MOV_KEY_ROW2_KEY1 KC_PGDN +# define _MOV_KEY_ROW2_KEY2 KC_END +# define _MOV_KEY_ROW2_KEY3 KC_HOME +# define _MOV_KEY_ROW2_KEY4 KC_PGUP +// <|,> , , , , +// |, 4> , 3> , 2> , ± , 1> +# endif + +// Replace the overwritten key positions: +# if defined(MOREKEY2_ADD_NAVIGATION) && !defined(ARROWS_TRIANGLE) && !defined(ARROWS_LEFT) // !ARROWS_LEFT because the wider map is edited +// +// Overwritten (copied from above): +// #define RGHT_CC NAVI_33 +// #define NAVI_33 KC_ACL1 +// #define RGHT_CD NAVI_34 +// #define NAVI_34 KC_ACL2 +// 'KC_ACL1' and 'KC_ACL2' are overwritten. +// Where are BTN2 and BTN3 on the non-mouse hand: +// #define NAVI_11 KC_BTN3 +// #define RGHT_AA NAVI_11 +// #define NAVI_31 KC_BTN2 +// #define RGHT_CA NAVI_31 +// 'RGHT_AA' and 'RGHT_CA' provide room. +// It seems best to count the acceleration keys from right to left/up on the keyboard. +// +# undef RGHT_AA +# define RGHT_AA KC_ACL2 +# undef RGHT_CA +# define RGHT_CA KC_ACL1 +# endif + +// Changes the home row on the right hand to become HJKL (as in Qwerty) vi(1) arrow keys, +// and causes the arrow block to move one key to the left. The key lost on the left is +// put back on the other end (pinky). +// Row 3 +# if defined(VI_SWITCHERYDOO) && !defined(ARROWS_TRIANGLE) // For all hardware variants +// |, indx2> , index> , middl> , ring> , pinky> , pink2> , +// <|,> , , , , , , +# undef RGHT_BA +# define RGHT_BA KC_LEFT +# undef RGHT_BB +# define RGHT_BB KC_DOWN +# undef RGHT_BC +# define RGHT_BC KC_UP +# undef RGHT_BD +# define RGHT_BD KC_RIGHT +# undef RGHT_BE +# define RGHT_BE KC_BTN1 +# endif +// Row 1 +# if defined(VI_SWITCHERYDOO) && !defined(ARROWS_TRIANGLE) && defined(MOREKEY2_ARROW_CLUSTER) // Only for 'arrow' hardware +// arrow cluster +# undef _MOV_KEY_ROW1_KEY1 +# define _MOV_KEY_ROW1_KEY1 KC_RIGHT +# undef _MOV_KEY_ROW1_KEY2 +# define _MOV_KEY_ROW1_KEY2 KC_UP +# undef _MOV_KEY_ROW1_KEY3 +# define _MOV_KEY_ROW1_KEY3 KC_DOWN +# undef _MOV_KEY_ROW1_KEY4 +# define _MOV_KEY_ROW1_KEY4 KC_LEFT +// <|,> , , , , +// |, 4> , 3> , 2> , ± , 1> +# endif + +// (If you want to alter something in detail just for your keyboard, it is probably smart to just write in the keycodes (like KC_PGUP) in the final definitions here below.) +// +// , index> , middl> , ring> , pinky> , pink2> , +// , , , -*- , , <|,> , , , , , , + CTO_BASE , LEFT_AA , LEFT_AB , LEFT_AC , LEFT_AD , LEFT_AE , RGHT_AA , RGHT_AB , RGHT_AC , RGHT_AD , RGHT_AE , KC_BSPC , + KC_LCTL , LEFT_BA , LEFT_BB , LEFT_BC , LEFT_BD , LEFT_BE , RGHT_BA , RGHT_BB , RGHT_BC , RGHT_BD , RGHT_BE , KC_RCTL , + KC_LSFT , LEFT_CA , LEFT_CB , LEFT_CC , LEFT_CD , LEFT_CE , RGHT_CA , RGHT_CB , _MOV_KEY_ROW2_KEY4 , _MOV_KEY_ROW2_KEY3 , _MOV_KEY_ROW2_KEY2 , _MOV_KEY_ROW2_KEY1 , +// -------------------------------------------------------------------------------------------------------------------------------------------------------------------- + KC_LALT +# ifdef TRANSMINIVAN_LEFTSIDE + , TRANS_LEFT +# endif + +# ifdef MORE_KEY__COMMAND + , MORE_key1 +# endif + + , KC_DEL , KC_ENT , _______ + +# ifdef TRANSMINIVAN_MIDLEFT + , TRANS_MIDLEFT +# endif + + , KC_PGUP + +# ifdef TRANSMINIVAN_RIGHTSIDE + , TRANS_RIGHT +# endif + + , _MOV_KEY_ROW1_KEY4 , _MOV_KEY_ROW1_KEY3 + +# ifdef MORE_KEY__ARROW + , _MOV_KEY_ROW1_KEY2 +# endif + , _MOV_KEY_ROW1_KEY1 +// , , , -*- <|,> , , , +// <1 ±± , <2 , <3 , <4 |, 4> , 3> , 2> , ± ± 1> + + ), + +# endif // BASESFILE_LAYER_MOV + + /* ⬆⬇ */ + +# ifndef BASESFILE_LAYER_RAR // Use a definition of this layer in the ./bases_* file, where this #define can be defined. + + /* Layer _RAR: Various special keys. + * - The key which switches between Default and Alternate base layer. + * - Power keys + * The power keys have to be pressed with Shift, as a safety guard. + * Without shift they write their name, as if someone typed it. + * - Media keys + * - Brightness for screen keys (depends on computer system if it works) + * - Leds of keyboard on/off + * - Unicode input mode + * ☑ precedes the Unicode input modes, as memory aid and tester + * Note that ☑ has no letters in its Unicode, but press with Shift for 🗹 + * which does. This matters when testing ‛descramble’ Dvorak mode. + * - Capslock is on its normal position + * - Insert + * - APP (whatever it is) fakes being next to right GUI (though other layer). + * - The traditional obsolete button like ScrLk/PrtSc are also included, in + * case some program needs them. + * - Speed measuring + * - Text size measuring + * - Some unused spots remaining. + */ + + [ _RAR ] = LAYOUT_redefined ( + +/* + _RAR (RARe keys. Power keys, Unicode mode, Alternate BASE, Media, Brightness, Speed, leds, …) + + index>middl>ring> pinky> pink2> + <|> -*- //(toggle) on _FUN + BASE Cnt/Mx Cnull CWmin CRprt Speed | SRprt Play Next Prev Stop RSht(•) + CapsL Power• Wake• Sleep• Pause• ScrLk | PrtSc xxx Vol+ Vol- Mute Insert // • requires Shift + ☑ uLNX uBSD uOSX uWIN uWNC | xxx xxx Bri+ Bri- xxx APP // Ü(nicode) tester + ---------------------------------------------------------------------------- + SLed MLeds RGUI xxx | !Alter xxx LGUI ___ // Middle-led, Side-leds, ! 'alternate' + <|> -*- // (Hold) on BASE + <1 ± <2 ± <3 <4 | 4> 3> 2> ± 1> + … … + */ +// +// , index> , middl> , ring> , pinky> , pink2> , +// , , , , -*- , <|,> , , , , , , + CTO_BASE , COUNT_TOG , COUNT_NULL , COUNT_WORDMIN , COUNT_REPORT , SPEED_TOG , SPEED_REPORT , KC_MPLY , KC_MNXT , KC_MPRV , KC_MSTP , KC_RSFT , + KC_CAPS , C_KC_PWR , C_KC_WAKE , C_KC_SLEP , C_KC_PAUS , KC_SLCK , KC_PSCR , XXXXXXX , KC_VOLU , KC_VOLD , KC_MUTE , KC_INS , + XP_DRA_CG , UNICODE_MODE_LNX , UNICODE_MODE_BSD , UNICODE_MODE_OSX , UNICODE_MODE_WIN , UNICODE_MODE_WINC , XXXXXXX , XXXXXXX , KC_BRIGHTNESS_UP , KC_BRIGHTNESS_DOWN , XXXXXXX , KC_APP , +// ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + LEDS_ON +# ifdef TRANSMINIVAN_LEFTSIDE + , TRANS_LEFT +# endif + +# ifdef MORE_KEY__COMMAND + , MORE_key1 +# endif + +# ifdef LEDS_OFF_BASE_DEF // This messes with led effect on/off, so we need to track the state of this setting now. + , RGBTOG_ +# else // Here we don't mess with led effect on/off, so we can use QMK key blindly. + , RGB_TOG +# endif + , KC__XGUI , XXXXXXX + +# ifdef TRANSMINIVAN_MIDLEFT + , TRANS_MIDLEFT +# endif + + , OTHER_BASE , XXXXXXX + +# ifdef TRANSMINIVAN_RIGHTSIDE + , TRANS_RIGHT +# endif + + , KC__YGUI + +# ifdef MORE_KEY__ARROW + , MORE_key2 +# endif + , _______ +// , , , <|,> , , , +// <1 ± ± , <2 , <3 , <4 |, 4> , 3> , 2> , ± ± 1> + + ), + +# endif // BASESFILE_LAYER_RAR + + /* ⬆⬇ */ + +# ifndef REMOVE_PAD // This removes all references to _PAD in the code, therefore is not functionally the same as BASESFILE_LAYER_PAD + +# ifndef BASESFILE_LAYER_PAD // Use a definition of this layer in the ./bases_* file, where this #define can be defined. + +# ifndef NUMPAD_COMMON_SQUARE // Use default _PAD layer, where numbers are aligned as they are on _NSY. + // Conversely, if this is defined, this layer will resembel a numeric keypad. + // See also base_numpad.c + + /* Layer _PAD: Numbers pad, for numbers pad version of numbers (computer programs can see the difference). + * Number pad navigation will be more or less useless, but there is a repetition of the Numpad + * keys 4,2,8,6 row 4 for arrows, and 3,1,7,9 row 2 for navigation, to make it a little easier to find. + */ + + [ _PAD ] = LAYOUT_redefined ( + +/* + Layer _PAD Numbers Pad (special symbol versions; regular '1' is not the same as this numpad '1', etc) + + index>middl>ring> pinky>pink2> + -*- <|> //(toggle) on _FUN + BASE xxx xxx .DEL 4LEFT 2DOWN | 8UP 6RGHT * xxx xxx Bksp + LCtl 1END 2DOWN 3PGDN 4LEFT 5 | 6RGHT 7HOME 8UP 9PGUP 0INS - + LSht xxx xxx / xxx = | + 3PGDN 1END 7HOME 9PGUP RSht + -*---------------------------------------------------------------------------- //-*- toggle on BASE + LAlt Del Tab ENT | NUML xxx LGUI RAlt + <|> + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> + … … + + */ + +// +// , index> , middl> , ring> , pinky> , pink2> , +// , , , , , -*- <|,> , , , , , , + CTO_BASE , XXXXXXX , XXXXXXX , KC_KP_DOT , KC_KP_4 , KC_KP_2 , KC_KP_8 , KC_KP_6 , KC_KP_ASTERISK , XXXXXXX , XXXXXXX , KC_BSPC , + KC_LCTL , KC_KP_1 , KC_KP_2 , KC_KP_3 , KC_KP_4 , KC_KP_5 , KC_KP_6 , KC_KP_7 , KC_KP_8 , KC_KP_9 , KC_KP_0 , KC_KP_MINUS , + KC_LSFT , XXXXXXX , XXXXXXX , KC_KP_SLASH , XXXXXXX , KC_KP_EQUAL , KC_KP_PLUS , KC_KP_3 , KC_KP_1 , KC_KP_7 , KC_KP_9 , KC_RSFT , +// ---------------------------------------------------------------------------------------------------------------------------------------------- + KC_LALT + +# ifdef TRANSMINIVAN_LEFTSIDE + , _______ // On Base layers this key typically defaults to MO ( _PAD ) +# endif + +# ifdef MORE_KEY__COMMAND + , MORE_key1 +# endif + + , KC_DEL , KC_TAB , KC_KP_ENTER + +# ifdef TRANSMINIVAN_MIDLEFT + , TRANS_MIDLEFT +# endif + + , KC_NUMLOCK , XXXXXXX , KC__YGUI + +# ifdef TRANSMINIVAN_RIGHTSIDE + , TRANS_RIGHT +# endif + +# ifdef MORE_KEY__ARROW + , MORE_key2 +# endif + + , KC_RALT +// , , , <|,> , , , +// <1 ± ± , <2 , <3 , <4 |, 4> , 3> , 2> , ± ± 1> + + ), + +# else // NUMPAD_COMMON_SQUARE + + [ _PAD ] = LAYOUT_redefined ( + +/* + + * Layer _PAD: Option for a different _PAD layer in the common layers system. + * This variety resembles the square layout of a numerical keyboard. + * It is different from one of the Numpad Base layer compile options, in that + * it only has a number pad for the right hand. It is also different in featuring + * modifiers, and the overall layout is sligthly different (Enter, = symbol). + * + * ‛Tab’ on key 3 left hand is the same as the other _PAD layer option (with the + * numbers in a line, equal to the _NSY layer), to retain the same ability to + * type Control-Tab. It seems better to have RAlt in its usual place, Enter in + * its usual place, than to strictly follow a standard numeric keyboard layout + * (which puts Enter somewhere on the right, row 1). It seems easy enough to + * type Enter on this key as well, even with the right hand. Numlock is also + * in its usual place. Note that ‛Del’ on the left, row 1, is not a numbers pad + * Delete/Dot key, but standard Delete, also in the usual place. + * + * This is probably the better one of the square layout numpads, unless you have a use + * for the two hands version. This is also available on ‛Base’ Numpad. + * + + Layer _PAD (Number pad, with NumLock on) + + index>middl>ring>pin>pink2> + <|> + BASE xxx xxx xxx xxx xxx | = 7 8 9 - Bspc + LCtl xxx xxx xxx xxx xxx | * 4 5 6 + RCtl + LSht xxx xxx xxx xxx xxx | / 1 2 3 , RSht + ------------------------------------------------------------------------ + LAlt Del Tab Ent | NumL 0 . RAlt + <|> + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> + … | … + + Layer _PAD (Number pad, with NumLock off) + + index>middl>ring >pin>pink2> + <|> + BASE xxx xxx xxx xxx xxx | = Home Up PgUp - Bspc + LCtl xxx xxx xxx xxx xxx | * Left 5 Right + RCtl + LSht xxx xxx xxx xxx xxx | / End Down PgDn , RSht + ------------------------------------------------------------------------- + LAlt Del Tab Ent | NumL Ins Del RAlt + <|> + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> + … | … + +*/ + +// +// , index> , middl> , ring> , pinky> , pink2> , +// , , , , , -*- <|,> , , , , , , + CTO_BASE , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_KP_EQUAL , KC_KP_7 , KC_KP_8 , KC_KP_9 , KC_KP_MINUS , KC_BSPC , + KC_LCTL , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_KP_ASTERISK , KC_KP_4 , KC_KP_5 , KC_KP_6 , KC_KP_PLUS , KC_RCTL , + KC_LSFT , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_KP_SLASH , KC_KP_1 , KC_KP_2 , KC_KP_3 , KC_KP_COMMA , KC_RSFT , +// ----------------------------------------------------------------------------------------------------------------------------------- + KC_LALT + +# ifdef TRANSMINIVAN_LEFTSIDE + , TRANS_LEFT +# endif + +# ifdef MORE_KEY__COMMAND + , MORE_key1 +# endif + + , KC_DEL , KC_TAB , KC_KP_ENTER + +# ifdef TRANSMINIVAN_MIDLEFT + , TRANS_MIDLEFT +# endif + + , KC_NUMLOCK , KC_KP_0 + +// See comment in ./base_numpad.c on the first layout (double handed Base layer), about the next few keys: +// This layer follows that layout Base Numpad. +// ---⬇ + +# ifdef TRANSMINIVAN_RIGHTSIDE + , TRANS_RIGHT +# endif + +# ifdef MORE_KEY__ARROW + //, MORE_key2 + , KC__YGUI +# endif +// ---⬆ + , KC_KP_DOT + + , KC_RALT +// , , , <|,> , , , +// <1 ± ± , <2 , <3 , <4 |, 4> , 3> ± ± , 2> , 1> + + ), + + +# endif // NUMPAD_COMMON_SQUARE + +# endif // BASESFILE_LAYER_PAD + +# endif // REMOVE_PAD + + /* ⬆⬇ */ + +# ifndef REMOVE_ACC // This cuts out the whole _ACC layer. + +# ifndef BASESFILE_LAYER_ACC // Use a definition of this layer in the ./bases_* file, where this #define can be defined. + + /* Layer _ACC: Accented and other unusual characters. It seems this would + * cover Dutch, German, French, Scandinavia, Italy and Spain. + * It should helps with remembering what keys are where, if one + * knows the logic behind it (however flawed it might be). + * This layer has the uncluttered Tab key (whoohoo!). + * + * The logic is ... Versions of the vowels with accents are + * widened vertically on the board, from their + * normal position. + * Grave is a line going up, thus on upper row. é + * Acute is a line going down, thus on lower row. è + * Diaereses is dots going horizontal, thus middle. ë + * Diareses is umlaut which is most frequent if + * including German, thus home row. ë + * There is no room for Caret on the left, thus it is + * on the right, following same-finger logic (O + * is ring finger, etc). + * Caret is on the lower row to make room for versions + * of 'n' and 'c' near their normal position. + * There is no room for ÿŸ on the normal y, because + * íà is on it, which is more important, and to + * keep the logic of that block, therefore it is + * as close to it as can be. + * øØ and åÅ follow the same-finger logic (a is left + * hand pinky, etc), and are on remaining spots. + * œŒ and æÆ are also no remaining spots, both close + * to êÊ for the e in there, the œŒ being further + * to the left to follow the same finger logic on + * that right hand side: a on the right, o on the left. + * ¡ and ¿ had no more room on this layer, therefore, + * and because they are unusual, they are on the + * _DRA(wings) layer. They are located under the keys + * that also have ! and ?, respectively. + * + */ + + [ _ACC ] = LAYOUT_redefined ( + +/* + Layer _ACC (ACCented characters, see _RAR layer for input modes) + + index>middl>ring> pinky>pink2> + -*- <|> //(toggle) on _FUN + BASE áà óÓ éÉ úÚ íà | ýà ijIJ çÇ øØ åÅ Bksp + RCTL(Tab) äÄ öÖ ëË üÜ ïà | ÿŸ œŒ æÆ ñÑ ß μ + LSht àÀ òÒ èÈ ùÙ ìÌ | îÎ ûÛ êÊ ôÔ â RSht + ---------------------------------------------------------------------------- + LAlt ___ ___ Ent | Spc ___ ___ RAlt + -*- <|> //(hold) on BASE + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> + … … + */ +// +// , index> , middl> , ring> , pinky> , pink2> , +// , , , , , <|,>-*- , , , , , , + CTO_BASE , XP_ACC_AA , XP_ACC_AB , XP_ACC_AC , XP_ACC_AD , XP_ACC_AE , XP_ACC_AF , XP_ACC_AG , XP_ACC_AH , XP_ACC_AI , XP_ACC_AJ , KC_BSPC , + LCTL ( KC_TAB ) , XP_ACC_BA , XP_ACC_BB , XP_ACC_BC , XP_ACC_BD , XP_ACC_BE , XP_ACC_BF , XP_ACC_BG , XP_ACC_BH , XP_ACC_BI , XP_ACC_BJ , XP_ACC_BK , + KC_LSFT , XP_ACC_CA , XP_ACC_CB , XP_ACC_CC , XP_ACC_CD , XP_ACC_CE , XP_ACC_CF , XP_ACC_CG , XP_ACC_CH , XP_ACC_CI , XP_ACC_CJ , KC_RSFT , +// ---------------------------------------------------------------------------------------------------------------------------------------------- + KC_LALT +# ifdef TRANSMINIVAN_LEFTSIDE + , TRANS_LEFT +# endif + +# ifdef MORE_KEY__COMMAND + , MORE_key1 +# endif + + , _______ , _______ , KC_ENT + +# ifdef TRANSMINIVAN_MIDLEFT + , TRANS_MIDLEFT +# endif + + , KC_SPC , _______ , _______ + +# ifdef TRANSMINIVAN_RIGHTSIDE + , TRANS_RIGHT +# endif + +# ifdef MORE_KEY__ARROW + , MORE_key2 +# endif + + , KC_RALT +// , -*- , , <|,> , , , +// <1 ± ± , <2 , <3 , <4 |, 4> , 3> , 2> , ± ± 1> + + ), + +# endif // BASESFILE_LAYER_ACC + +# endif // REMOVE_ACC + + /* ⬆⬇ */ + +# ifndef REMOVE_DRA // This cuts out the whole _DRA layer + +# ifndef BASESFILE_LAYER_DRA // Use a definition of this layer in the ./bases_* file, where this #define can be defined. + + /* Layer _DRA: Drawings, like various Unicode symbols. + * + */ + + [ _DRA ] = LAYOUT_redefined ( + +/* + Layer _DRA (DRAwings, whatever else (rendering width varies in different applications)) + + index>middl>ring> pinky>pink2> + -*- <|> //(toggle) on _FUN + BASE “„ â€â‰¤ £≥ ∅ ¢ ±ƒ | â¦â™¥ 🙂🙠ðŸ‘👎 â½â‚ â¾â‚Ž Bksp + Tab ¹₠²₂ ³₃ â´â‚„ âµâ‚… | â¶â‚† â·â‚‡ â¸â‚ˆ â¹â‚‰ â°â‚€ RCTL + LSht 「┠ã€â”€ °〇 •§ …· | ⮘⮙ ⮚⮛ ¿¡ 《┄ 》┅ RSht + ------------------------------------------------------------------------- + LAlt ___ ___ Ent | Spc ___ ___ RAlt + -*- <|> -*- //(hold) on BASE + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> + … … + */ +// +// , index> , middl> , ring> , pinky> , pink2> , +// , , , , , <|,> , -*- , , , , , + CTO_BASE , XP_DRA_AA , XP_DRA_AB , XP_DRA_AC , XP_DRA_AD , XP_DRA_AE , XP_DRA_AF , XP_DRA_AG , XP_DRA_AH , XP_DRA_AI , XP_DRA_AJ , KC_BSPC , + KC_TAB , XP_DRA_BA , XP_DRA_BB , XP_DRA_BC , XP_DRA_BD , XP_DRA_BE , XP_DRA_BF , XP_DRA_BG , XP_DRA_BH , XP_DRA_BI , XP_DRA_BJ , KC_RCTL , + KC_LSFT , XP_DRA_CA , XP_DRA_CB , XP_DRA_CC , XP_DRA_CD , XP_DRA_CE , XP_DRA_CF , XP_DRA_CG , XP_DRA_CH , XP_DRA_CI , XP_DRA_CJ , KC_RSFT , +// -------------------------------------------------------------------------------------------------------------------------------------------- + KC_LALT + +# ifdef TRANSMINIVAN_LEFTSIDE + , TRANS_LEFT +# endif + +# ifdef MORE_KEY__COMMAND + , MORE_key1 +# endif + + , _______ , _______ , KC_ENT + +# ifdef TRANSMINIVAN_MIDLEFT + , TRANS_MIDLEFT +# endif + + , KC_SPC , _______ , _______ + +# ifdef TRANSMINIVAN_RIGHTSIDE + , TRANS_RIGHT +# endif + +# ifdef MORE_KEY__ARROW + , MORE_key2 +# endif + + , KC_RALT +// , , , <|,> , , , +// <1 ± ± , <2 , <3 , <4 |, 4> , 3> , 2> , ± ± 1> + + ), + +# endif // BASESFILE_LAYER_RAR + +# endif // REMOVE_DRA + + /* ⬆⬇ */ + +# ifndef REMOVE_BON // Removes this layer entirely, if set. + +# ifndef BASESFILE_LAYER_BON // Use a definition of this layer in the ./bases_* file, where this #define can be defined. + +/* + * Bonus layer: Enumeration numbers, some general purpose / mathematical symbols + * â» is an exponential minus sign (the center-dot · can be used in exponents too) + * × is multiplication + * ‰ is promille, ‱ is pro-tenthousandth + * + */ + + [ _BON ] = LAYOUT_redefined ( + +/* + Layer _BON (Bonus layer, a variety of more stuffs.) + + index>middl>ring> pinky>pink2> + -*- <|> + BASE ‛ 🛠 ’ ⬆ ¤ 🄯 ∑ © ‰ ‱ | ★ Ù­ 😊 ⨠× ⃰ √ ⻠⺠Bksp + `~ â‘  ⬅ â‘¡ ⬇ â‘¢ âž¡ â‘£ ┠⑤ ┓ | â‘¥ ┃ ⑦ ┇ â‘§ â•‹ ⑨ ⓪ ∞ — ≈ // — is a dash (larger), not hyphen + LSht ‹ › ÷ ☞ â”— ≠ â”› | ✗ ┣ ✓ ┫ âš  « » RSht + ------------------------------------------------------------------------- + Left ___ ___ Ent | Spc ___ ___ Right + -*- -*- <|> -*- // Activation on BASE + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> + … … + */ +// +// , index> , middl> , ring> , pinky> , pink2> , +// , , , , , <|,> , , , , , , + CTO_BASE , XP_BON_AA , XP_BON_AB , XP_BON_AC , XP_BON_AD , XP_BON_AE , XP_BON_AF , XP_BON_AG , XP_BON_AH , XP_BON_AI , XP_BON_AJ , KC_BSPC , + KC_GRV , XP_BON_BA , XP_BON_BB , XP_BON_BC , XP_BON_BD , XP_BON_BE , XP_BON_BF , XP_BON_BG , XP_BON_BH , XP_BON_BI , XP_BON_BJ , XP_BON_BK , + KC_LSFT , XP_BON_CA , XP_BON_CB , XP_BON_CC , XP_BON_CD , XP_BON_CE , XP_BON_CF , XP_BON_CG , XP_BON_CH , XP_BON_CI , XP_BON_CJ , KC_RSFT , +// ------------------------------------------------------------------------------------------------------------------------------------------------- + KC_LEFT + +# ifdef TRANSMINIVAN_LEFTSIDE + , TRANS_LEFT +# endif + +# ifdef MORE_KEY__COMMAND + , MORE_key1 +# endif + + , _______ , _______ , KC_ENT + +# ifdef TRANSMINIVAN_MIDLEFT + , TRANS_MIDLEFT +# endif + + , KC_SPC , _______ , _______ + +# ifdef TRANSMINIVAN_RIGHTSIDE + , TRANS_RIGHT +# endif + +# ifdef MORE_KEY__ARROW + , MORE_key2 +# endif + , KC_RIGHT +// , , , <|,> , , , +// <1 ± ± , <2 , <3 , <4 |, 4> , 3> , 2> , ± ± 1> + + ), + +# endif // BASESFILE_LAYER_BON + +# endif // REMOVE_BON + + /* ⬆⬇ */ + +# ifndef BASESFILE_LAYER_FUN // Use a definition of this layer in the ./bases_* file, where this #define can be defined. + + /* Layer _FUN: Function keys until F20. Some combo modifiers control/alt/shift + * Toward any layer by toggle. Layer can be set to return to BASE after one F-key press (FUN<, row 1) + */ + + [ _FUN ] = LAYOUT_redefined ( + +/* + Layer _FUN (F-keys, Layer access, Set BASE key direction) + + index>middl>ring> pinky>pink2> + toggl toggl set toggl toggl toggl | toggl toggl // Type of layer switch + <|> + BASE: NUMS: _PAD _ACC _DRA _BON | _MOV _RAR xxx xxx xxx Bksp //':' are dynamic ... + LCtl F1 F2 F3 F4 F5 | F6 F7 F8 F9 F10 RCtl + LSht F11 F12 F13 F14 F15 | F16 F17 F18 F19 F20 RSht + ----------------------------------------------------------------------*-- //-*- toggle on BASE + LAlt LCtl& LCtl& LSht& | FUN< +LCtl&LSht LGUI RAlt //... < toggle 'stay' + LSht LAlt LAlt | &LAlt + +xxx +xxx +xxx | +xxx + <|> + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> + … … + */ +// +// , index> , middl> , ring> , pinky> , pink2> , +// , , -*- , , , <|,> , , , , , , + CTO_BASE , CTO_NUMS , TO ( _PAD ) , CTO_ACCE , CTO_DRAW , TO ( _BON ), TO ( _MOV ) , TO ( _RAR ) , XXXXXXX , XXXXXXX , XXXXXXX , KC_BSPC , + KC_LCTL , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_RCTL , + KC_LSFT , KC_F11 , KC_F12 , KC_F13 , KC_F14 , KC_F15 , KC_F16 , KC_F17 , KC_F18 , KC_F19 , KC_F20 , KC_RSFT , +// ------------------------------------------------------------------------------------------------------------------------------------------ + KC_LALT +# ifdef TRANSMINIVAN_LEFTSIDE + , TRANS_LEFT +# endif + +# ifdef MORE_KEY__COMMAND + , MORE_key1 +# endif + + , MT ( MOD_LCTL | MOD_LSFT, XXXXXXX ) , MT ( MOD_LCTL | MOD_LALT , XXXXXXX ) , MT ( MOD_LSFT | MOD_LALT , XXXXXXX ) + +# ifdef TRANSMINIVAN_MIDLEFT + , TRANS_MIDLEFT +# endif + + , _FUN_STAY , MT ( MOD_LCTL | MOD_LSFT | MOD_LALT , XXXXXXX ) , KC__YGUI + +# ifdef TRANSMINIVAN_RIGHTSIDE + , _______ // On Base layers this key typically defaults to MO ( _FUN ) +# endif + +# ifdef MORE_KEY__ARROW + , MORE_key2 +# endif + , KC_RALT +// , , , <|,> , , , +// <1 ± ± , <2 , <3 , <4 |, 4> , 3> , 2> , ± ± 1> + + ), + +# endif // BASESFILE_LAYER_FUN + + /* ⬆ */ + + +/* + * New layer template. Includes left/right movement arrows, deletion, modifiers. + * If you want a new layer, in the logic of this layout you would add a toggle on the + * _FUN layer top row on the first free key to it, and optionally alter the hold + * layer switch keys on the base layers. (Check if a new layer will fit on the chip.) + * + [ _??? ] = LAYOUT_redefined ( + +// index>middl>ring> pinky>pink2> +// <|> +// BASE xxx xxx xxx xxx xxx | xxx xxx xxx xxx xxx Bksp +// LCtl xxx xxx xxx xxx xxx | xxx xxx xxx xxx xxx RCtl +// LSht xxx xxx xxx xxx xxx | xxx xxx xxx xxx xxx RSht +// ------------------------------------------------------------------------- +// LAlt+Left Del ___ Ent | Spc ___ ___ RAlt+Right +// <|> +// <1 ± <2 <3 <4 | 4> 3> 2> ± 1> +// … … +// +// +// , index> , middl> , ring> , pinky> , pink2> , +// , , , , , <|,> , , , , , , + CTO_BASE , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_BSPC , + KC_LCTL , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_RCTL , + KC_LSFT , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_RSFT , +// ------------------------------------------------------------------------------------------------------------------------ + LALT_T ( KC_LEFT ) + +# ifdef TRANSMINIVAN_LEFTSIDE + , TRANS_LEFT +# endif + +# ifdef MORE_KEY__COMMAND + , MORE_key1 +# endif + + , KC_DEL , XXXXXXX , KC_ENT + +# ifdef TRANSMINIVAN_MIDLEFT + , TRANS_MIDLEFT +# endif + + , KC_SPC , XXXXXXX , XXXXXXX + +# ifdef TRANSMINIVAN_RIGHTSIDE + , TRANS_RIGHT +# endif + +# ifdef MORE_KEY__ARROW + , MORE_key2 +# endif + + , RALT_T ( KC_RIGHT ) +// , , , <|,> , , , +// <1 ± ± , <2 , <3 , <4 |, 4> , 3> , 2> , ± ± 1> + + ), +*/ + +}; + diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/minifan_config_compact.h b/keyboards/thevankeyboards/minivan/keymaps/josjoha/minifan_config_compact.h new file mode 100644 index 0000000000..a48095f513 --- /dev/null +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/minifan_config_compact.h @@ -0,0 +1,102 @@ +/* + * License (GPL): + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + + * © 2020,2021 by Jos Boersema + */ + +/* + * If MINIFAN_CONFIG_COMPACT in ./user_config.h ⬇ + */ + +//#define BASE_QWERTY__DEF_BASE +//#define BASE_QWERTY__ALT_BASE +//#define BASE_QWERTY_BASEARROW__DEF_BASE +//#define BASE_QWERTY_BASEARROW__ALT_BASE + #define BASE_DVORAK__DEF_BASE +//#define BASE_DVORAK__ALT_BASE +//#define BASE_DVORAK_DESCRAMBLE__ALT_BASE +//#define BASE_COLEMAK__DEF_BASE +//#define BASE_COLEMAK__ALT_BASE +//#define BASE_WORKMAN__DEF_BASE +//#define BASE_WORKMAN__ALT_BASE + #define BASE_NUMPAD__ALT_BASE + +//#define MINIFAN_SINGLE_LAYOUT + +//#define STARTUP_ALTERNATE +//#define STARTUP_SIDE_LEDS_OFF +//#define STARTUP_MID_LED_OFF +//#define STARTUP_SPEED +//#define STARTUP_COUNT + +//#define MORE_KEY__COMMAND +//#define MORE_KEY__ARROW + +//#define TRANSMINIVAN_LAYOUT ....... +//#define TRANSMINIVAN_LEFTSIDE + #define TRANS_LEFT XXXXXXX +//#define TRANSMINIVAN_MIDLEFT + #define TRANS_MIDLEFT XXXXXXX +//#define TRANSMINIVAN_RIGHTSIDE + #define TRANS_RIGHT XXXXXXX + +//#define MORE_key1_BASE TG ( _RAR ) +//#define MORE_key1_BASE KC_DEL + #define MORE_key1_BASE KC__XGUI +//#define MORE_key1 KC_DEL + #define MORE_key1 KC__XGUI + #define MOREKEY2_ARROW_CLUSTER +//#define MOREKEY2_ADD_NAVIGATION + #define MORE_key2 _MOV_UP +//#define MORE_key2 KC_DEL + + #define ARROWS_TRIANGLE +//#define VI_SWITCHERYDOO + +//#define NUMPAD_COMMON_SQUARE + + #define SPEED_COUNTDOWN 25 + #define SPEED_HUE_STEP 8 + #define SPEED_HUE_START 160 + #define WORDS_PER_MINUTE + +//#define BASE_RIGHT_ALT + #define SWITCH_GUIS +//#define UNICODE_CURRENCY 0x20ac +//#define POINT_ON_CHECKBOXES +//#define SWITCH_BASE_ROW1_23 +//#define SWITCH_HOLD_ACC_NSY + #define SWITCH_LSHIFT_PAD_MOV + #define SWITCH_RSHIFT_FUN_RAR + +//#define REMOVE_PAD +//#define REMOVE_ACC +//#define _ACC_KEY_ALT_LAYER _BON +//#define _ACC_KEY_ALT_LAYER _DRA +//#define REMOVE_DRA +//#define _DRA_KEY_ALT_LAYER _ACC +//#define _DRA_KEY_ALT_LAYER _BON +//#define REMOVE_BON +//#define _BON_KEY_ALT_LAYER _ACC +//#define _BON_KEY_ALT_LAYER _DRA +//#define ALL_DRA_BON_EVISCERATIONS + #define BOX_DRAWINGS + #define SUB_SCRIPT_NUMS + #define FULL_DRA_2NDROW + #define FULL_DRA_4THROW + #define FULL_BON_4THROW + + #define LEDS_OFF_BASE_DEF diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/readme.md b/keyboards/thevankeyboards/minivan/keymaps/josjoha/readme.md new file mode 100644 index 0000000000..534f8b30ca --- /dev/null +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/readme.md @@ -0,0 +1,1198 @@ +# Minivan +A 40% keyboard made first by TheVan Keyboards +_https://thevankeyboards.com_ now taken over by TKC +_https://thekey.company_ + +![Minivan layout all](http://socialism.nl/misc/minivan/minivan-all-layers-visualization_vc.jpg) + +Table of Contents +================= + + 1 Overview + 1.1 Hardware compatibility + 1.2 Software compatibility + 2 'make' example + 3 Base layouts + 3.1 Normal layouts + 3.1.1 Qwerty + 3.1.2 Qwerty with arrows on Base + 3.1.3 Dvorak + 3.1.4 Dvorak² + 3.1.5 Colemak + 3.1.6 Workman + 3.2 Special layouts + 3.2.1 Numbers pad + 4 The common system + 4.1 Main features + 4.2 Layer access + 4.3 Layout in graphics + 4.4 Layout in text + 4.5 Movement layer options + 4.6 Numbers pad layer options + 5 Led colors for layers + 6 Compile options + 7 Language support + 7.1 Input methods + 7.2 Unicode symbols + 8 Speed measuring + 8.1 Speed Led color compilation assist + 9 Text size measuring + 9.1 Text size Usage + 10 Making your own base layer(s) + 11 Eviscerations + 12 Key associations + 13 Trouble shooting + • Compiling + • Unicode + • Leds + • Weird layer jumping + • Difficult/impossible key combinations ? + 14 Why you want this layout + 15 BUGS + 16 Resources + 17 Author(s) + +1 Overview +========== +_A layout for the demanding keyboard user (10 fingers / blind)._ +Designed for intuitive key placement, more symbols than standard English +keyboard, speed and text size measuring. +*400%* _the capability in_ *40%* _the size_ (by key function count). + +For some ‛common layers’ (numbers pad, movement), different versions +can be chosen than shown just below in this by layer view: + +![Minivan illustration Overview layers](http://socialism.nl/misc/minivan/minivan-all-layers-clear-visualization_1500_vf.jpg) + +By key view: + +![Minivan illustration Overview layers by key](http://socialism.nl/misc/minivan/minivan-all-layers-clear-visualization-by-key_2000_vh.jpg) + +1.1 Hardware compatibility +========================== +This keymap functions on _Minivan_ hardware variants with 44, 45 and +46 keys. + +It may be fairly easily ported to 12x12x12x[11|12|13] keyboards. + +1.2 Software compatibility +========================== +This keymap relies on Unicode, in an attempt to avoid the +“dead key†system for accented characters on many non-English keyboards. +You need to have Unicode input working on your computer. + +On a Linux computer operating system, this keymap is designed to work +with this keyboard/language setting: + + > setxkbmap -layout us + > echo $LANG + `en_US.UTF-8` + +If that works for you, you can type the most important characters in +the western European group of languages, native from the keyboard. + +This keymap might not function as expected if you want to use a +different keyboard language setting in your operating system. + +See also chapter 6 _Language support_. + +2 'make' example +================ + … Download the repository, resolve software dependencies etc.. + … To change compile options: edit user_config.h (or `minifan_config_compact.h`) + > cd […]/qmk_firmware + > make thevankeyboards/minivan:josjoha + > su + # dfu-programmer atmega32u4 erase + # dfu-programmer atmega32u4 flash thevankeyboards_minivan_josjoha.hex + # dfu-programmer atmega32u4 start + +This “Mini*fan*†layout is explained in several readme files, with +links to the others files in this readme. The common system is explained +in this readme.md file. The options for the letters and number/symbol +layer pairs (two pairs in the dual layout) are explained in their +separate readme file, see immediately below. Compile options are detailed +in `./user_config.h`. + +3 Base layouts +============== +Layouts are presented here in a sort of simplified keycaps view. If a +base layer pair has its own user configuration options, they are located +in `./base_NAME.h`. + +3.1 Normal layouts +------------------ +These are layouts for commonly used configurations, such as Qwerty or Dvorak. + +3.1.1 Qwerty +------------ + +![Minivan layout impression](http://socialism.nl/misc/minivan/minivan_keycapview_qwerty_vc.jpg) + +For the readme about the Qwerty version, see âž¡ ![base_qwerty.md](./base_qwerty.md) ⬅ + +3.1.2 Qwerty with arrows on Base +-------------------------------- + +![Minivan layout impression](http://socialism.nl/misc/minivan/minivan_keycapview_qwerty_basearrow_vd.jpg) + +For the readme about this Qwerty variation, see âž¡ ![base_qwerty_basearrow.md](./base_qwerty_basearrow.md) ⬅ + +3.1.3 Dvorak +------------- + +![Minivan layout impression](http://socialism.nl/misc/minivan/minivan_keycapview_dvorak_vc.jpg) + +For the readme about the Dvorak version, see âž¡ ![base_dvorak.md](./base_dvorak.md) ⬅ + +3.1.4 Dvorak² +------------- + +![Minivan layout impression](http://socialism.nl/misc/minivan/minivan_keycapview_dvorak_descramble_vb.jpg) + +Regular Dvorak for a computer already set to Dvorak. + +For the readme about the Dvorak² version, see âž¡ ![base_dvorak_descramble.md](./base_dvorak_descramble.md) ⬅ + +3.1.5 Colemak +------------- + +![Minivan layout impression](http://socialism.nl/misc/minivan/minivan_keycapview_colemak_vc.jpg) + +For the readme about the Colemak version, see âž¡ ![base_colemak.md](./base_colemak.md) ⬅ + +3.1.6 Workman +------------- + +![Minivan layout impression](http://socialism.nl/misc/minivan/minivan_keycapview_workman_va.jpg) + +For the readme about the Workman version, see âž¡ ![base_workman.md](./base_workman.md) ⬅ + +3.2 Special layouts +=================== +These are unusual layouts. Most people will probably only want one of these on the ‛Alternate’ layout, +with a normal layout on ‛Default’. How this works is explained below. + +3.2.1 Numbers pad +----------------- + +![Minivan layout impression](http://socialism.nl/misc/minivan/minivan_keycapview_numpad_single_va.jpg) + +For the readme about the Numpad version, see âž¡ ![base_numpad.md](./base_numpad.md) ⬅ + + +4 The common system +=================== + +![Minivan layout impression](http://socialism.nl/misc/minivan/minivan_keycapview_common_vc.jpg) + +4.1 Main features +----------------- + • Dual layout. Several layouts to choose from (example: Qwerty + and Dvorak dual layout). Easy to add more layouts. + • Expanded character set with western European accented characters + (ëøßœç…); sub- super-script numbers (¹₂…) quite a few additional + symbols such as 《 ± • ☑ ⦠√ ┣ ≠ 》… + • Typing speed measuring. Led changes color with your speed. You can + ask for a report on your current and average typing speeds. + • Text size measuring. If you want to type some amount of words or + characters, the middle led will go from green to red as you go, + and prevent you going over the limit. + +4.2 Layer access +---------------- +This graphic shows how layers are reached from the ‛Default base’ layer. + +![Minivan layout Image associations](http://socialism.nl/misc/minivan/minivan-default-base-layer-activation_1500_vf.jpg) + +You can switch between the default base layer (typically letters), and +another base layer, the alternate base layer (also typically letters), +on the `_RAR` layer with key ‛Other Base’. Each base layer comes +with its own second layer, typically numbers-symbols. The other +layers are used common between the default and alternate base layers. + +The Base layers and their numbers layer are detailed in files beginning +with `./base_…` (links below). + + Layer overview: Defined in: + + • Default Letters / Base ┓ + • Default Numbers-symbols ┃ + ┣ ./base_….c/md files + • Alternate Letters / Base ┃ + • Alternate numbers-symbols layout â”› + + • Numbers pad ┓ + • Accented characters ┃ + • Additional Unicode characters ┃ + • More Additional Unicode characters ┣ ./keymap.c(etc)/readme.md + • Movement arrows/mouse ┃ “The common system†+ • Function keys / layer toggles ┃ + • Power, media, Speed, Text size, etc. â”› + +There are some additional layer switching keys due to key transparency +artefacts, allowing for example to go back to ‛Base’ from a toggled `_MOV` +layer with what is the ‛Enter’ key on Base. + +4.3 Layout in graphics +---------------------- + +![Minivan layout Image BASEdef](http://socialism.nl/misc/minivan/minivan_base_layer_hide_def_base_ve.jpg) +Layer: `DEF_BASE` + +![Minivan layout Image NSYdef](http://socialism.nl/misc/minivan/minivan_nsy_layer_hide_def_base_vb.jpg) +Layer: `DEF_NSY` + +![Minivan layout Image BASEalt](http://socialism.nl/misc/minivan/minivan_base_layer_hide_alt_base_ve.jpg) +Layer: `ALT_BASE` + +![Minivan layout Image NSYalt](http://socialism.nl/misc/minivan/minivan_nsy_layer_hide_alt_base_vb.jpg) +Layer: `ALT_NSY` + +![Minivan layout Image PAD](http://socialism.nl/misc/minivan/minivan_pad_layer_vc.jpg) +Layer: `_PAD` + +^ See below for a different configuration of the numbers pad keys. See above for a Base layout for a numbers pad. + +![Minivan layout Image ACC](http://socialism.nl/misc/minivan/minivan_acc_layer_vd.jpg) +Layer: `_ACC` + +![Minivan layout Image DRA](http://socialism.nl/misc/minivan/minivan_dra_layer_vd.jpg) +Layer: `_DRA` + +![Minivan layout Image BON](http://socialism.nl/misc/minivan/minivan_bon_layer_vc.jpg) +Layer: `_BON` + +![Minivan layout Image FUN](http://socialism.nl/misc/minivan/minivan_fun_layer_vb.jpg) +Layer: `_FUN` + +![Minivan layout Image MOV](http://socialism.nl/misc/minivan/minivan_mov_layer_triangle_hw-basic-and-allkeys_vb.jpg) +Layer: `_MOV` + +^ There is an alternative flat arrow configuration for this layer (see below), +and options to compile with the 'arrow' hardware layout. + +![Minivan layout Image RAR](http://socialism.nl/misc/minivan/minivan_rar_layer_vc.jpg) +Layer: `_RAR` + +4.4 Layout in text +------------------ + Layer _DEF_BASE (Letters layer, see ./base* files for what comes on ‛__’) + | Right hand + index>middl>ring> pinky>pinky2> // Keys by finger + -o- <|> ... //-o- Base access + Esc __ __ __ __ __ | __ __ __ __ __ Bksp + Tab+LCtl __ __ __ __ __ | __ __ __ __ __ __ + LSht+_PAD __ __ __ __ __ | __ __ __ __ __ RSht+_FUN + +_MOVâµ | +_RARâ¶ + --------------------------------------------------------------------------------------- + Left+LAlt Del;_ACC _..._NSY(_DRA) Enter+_MOV| Space _..._NSY(_DRA) RGUI Right;_RAR + hold holdâ‚â‚,₂٭₎ hold | holdâ‚â‚,₂٭₎ hold // switch type + holdâ‚₂₎ ^-┃-----------------------+--------^ ┃ // â‚₎ both = _DRA + â”—â”â”â”_BONâ”â”â”╋┅───────────┄┄┄«or»┄┄┄─+─────────┅┛ // ₂₎ both = _BON + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> // Keys by number + ^³ ^â´ // Optional more keys + (LGUI) (_MOV) + + â‚) Dual hold for _DRA, single hold for _..._NSY. Marked by: ^--…--^ + â‚‚) Hold key “<2†with eitherÙ­ key “<3†or “3>†for _BON, single hold “<2†for _ACC. Marked: â”—â”â”…â”â”â”› + ³) 'South paw' hardware configuration. Configurable, default shown. + â´) 'Arrow' hardware configuration Configurable, default shown. + ³ â´) There are two more optional hardware keys, to make it easier to compile for + a 12x12x12x11 or 12x12x12x12 layouts. + âµ) Left Shift when pressed with another key. Medium long: to toggle _PAD. Long: toggle _MOV. + â¶) Right shift when pressed with another key. medium long: to toggle _FUN. Long: toggle _RAR. + +Remarks: The left modifiers have a slight delay in combination with an outside pointer device (mouse, stylus). +It seems this will be difficult to fix, because it is spread over two devices. To avoid the +±0.2 second delay, activate a layer where the modifiers are direct (`_PAD`, `_MOV`), using the layer toggle on +left shift. + +The two keys with ';' (Del;`_ACC`, Right;`_RAR`) do not auto-repeat on double tap, like QMK normal layer-tap keys. + +There is an uncluttered _Delete_ on `_PAD`, an uncluttered _Right_ arrow on the `_MOV` layer. + +There is an uncluttered _Tab_ on both the `_DRA` and `_ACC` layers. They can be modified with _Control_ there. + +Holding both `_..._NSY` keys left and right of the "split space bar" (enter, space) results in layer `_DRA`. + +Holding either one of the just above mentioned `_..._NSY` layer keys (<3 and 3>), with the `_ACC` layer key +(on <2) results in layer `_BON`. + +- - - + + Layer _..._NSY (Numbers and SYmbols, ./base* files for what comes on ‛__’) + + index>middl>ring>pin>pink2> + -*- <|> //(toggle) Access on _FUN + BASE __ __ __ __ __ | __ __ __ __ __ Bspc + Tab+LCtl __ __ __ __ __ | __ __ __ __ __ __+RCtl + -+LSht __ __ __ __ __ | __ __ __ __ __ __+RSht + --------------------------------------------------------------------------- + Left+LAlt ___ ___ Ent | . ___ RGUI Right+RAlt + -*- <|> -*- //(hold) Access on _DEF_BASE + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> + ^ ^ + (LGUI) (_MOV) + +- - - + + Layer _FUN (F-keys, Layer access) + + index>middl>ring> pinky>pink2> + toggl toggl set toggl toggl toggl | toggl toggl // Type of layer switch + <|> + BASE: NUMS: _PAD _ACC _DRA _BON | _MOV _RAR xxx xxx xxx Bspc //':' are dynamic ... + LCtl F1 F2 F3 F4 F5 | F6 F7 F8 F9 F10 RCtl + LSht F11 F12 F13 F14 F15 | F16 F17 F18 F19 F20 RSht + ---------------------------------------------------------------------*-- //-*- toggle on Base + LAlt LCtl& LCtl& LSht& | FUN< +LCtl&LSht RGUI RAlt //... < toggle 'stay' + LSht LAlt LAlt | &LAlt + +xxx +xxx +xxx | +xxx + <|> + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> + ^ ^ + (LGUI) (_MOV) + +Remarks. FUN< toggles an immediate return to the Base layer after pressing an F-key, +or staying on the `_FUN` layer. Right led yellow indicates F-layer stays active. + +- - - + +This is the _triangle_ configuration for arrows, arrow are on left hand (WASD): + + Layer _MOV (MOVement, mouse movement on right hand) + + index>middl>ring> pinky>pink2> + <|>-*- + Base PgDn Up PgUp Home Btn3 | xxx WhDn MsUp WhU WhLft Bksp + LCtl Left Down Right End Btn1 | Btn1 MsLft MsDn MsRht WhRht RCtl + LSht xxx Acc2 Acc1 Acc0 Btn2 | Btn2 Btn3 Btn4 Btn5 xxx RSht + ------------------------------------------------------------------------- + LAlt Del Ent ___ | PgUp PgDn RGUI RAlt + -*-<|> + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> + ^ ^ + (LGUI) (DOWN) + + +Remarks. For the Minivan _arrow_ hardware layout with arrow cluster, you get this on ‛Base’: + + (…) + LSht+_PAD ;: qQ jJ kK xX | bB mM wW vV zZ RSht+_FUN + ------------------------------------------------------------------------------- + Left+LAlt Del;_ACC _..._NSY(_DRA) Enter+_MOV| Space _..._NSY(_DRA) RGUI _MOV Right;_RAR + ^^^^ // new key (toggle) + +… and this on `_MOV` for the _triangle_ configuration: + + (…) + LSht*- xxx Acc2 Acc1 Acc0 Btn2 | Btn2 Btn3 Btn4 Btn5 _Up_ RSht + --------------------------------------------------------------------------- + LAlt Del Ent ___ | PgUp PgDn _Left__Down__Right_ + -*-<|> + <1 ± <2 <3 <4 | 4> 3> 2> _±_ 1> + ^ + (LGUI) + +… or this on `_MOV` for the _triangle_ arrow configuration with additional _navigation_ keys: + + BASE PgDn Up PgUp Home _Btn4_ | xxx WhDn MsUp WhU WhLft Bksp + LCtl Left Down Right End Btn1 | Btn1 MsLft MsDn MsRht WhRht RCtl + LSht*- xxx Acc2 Acc1 Acc0 _Btn5_ | Btn2 Btn3 _Home__PgUp_ _Up_ _PgDn_ + --------------------------------------------------------------------------- + LAlt Del Ent ___ | PgUp _End_ _Left__Down__Right_ + -*-<|> + <1 ± <2 <3 <4 | 4> 3> 2> _±_ 1> + ^ + (LGUI) + + +This is the _flat_ configuration for arrows, arrow are on right hand: + + index>middl>ring> pinky>pink2> + <|>-*- + BASE WLft WDn WUp WRht xxx | Btn3 PgUp Home End PgDn Bksp + LCtl MLft MDn MUp MRht Btn1 | Btn1 Left Up Down Right RCtl + LSht*- Btn5 Btn4 Btn3 Butn2 xxx | Btn2 Acc0 Acc1 Acc2 xxx RSht + ------------------------------------------------------------------------- + LAlt Del Ent ___ | PgUp PgDn RGUI RAlt + -*-<|> + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> + ^ ^ + (LGUI) (DOWN) + +For the Minivan _arrow_ hardware layout with _flat_ arrow cluster, you get this on `_MOV`: + + (…) + BASE WLft WDn WUp WRht xxx | Btn3 PgUp Home End PgDn Bksp + LCtl MLft MDn MUp MRht Btn1 | Btn1 Left Up Down Right RCtl + LSht*- Btn5 Btn4 Btn3 Butn2 xxx | Btn2 Acc0 Acc1 Acc2 xxx RSht + --------------------------------------------------------------------------- + LAlt Del Ent ___ | PgUp _Left_ _UP_ _Down__Right_ + -*-<|> + <1 ± <2 <3 <4 | 4> 3> 2> _±_ 1> + ^ + (LGUI) + +… or this on `_MOV` for the _flat_ arrow configuration with additional _navigation_ keys: + + BASE WLft WDn WUp WRht xxx |_Acc2_ PgUp Home End PgDn Bksp + LCtl MLft MDn MUp MRht Btn1 | Btn1 Left Up Down Right RCtl + LSht*- Btn5 Btn4 Btn3 Butn2 xxx |_Acc1_ Acc0 _PgUp__Home__End_ _PgDn_ + --------------------------------------------------------------------------- + LAlt Del Ent ___ | PgUp _Left_ _UP_ _Down__Right_ + -*-<|> + <1 ± <2 <3 <4 | 4> 3> 2> _±_ 1> + ^ + (LGUI) + +… or this on `_MOV` for the _flat_ arrow configuration, […], and vi(1) layout: + + index>middl>ring> pinky>pink2> + <|>-*- + BASE WLft WDn WUp WRht xxx |_Acc2_ PgUp Home End PgDn Bksp + LCtl MLft MDn MUp MRht Btn1 | Left Down Up Right Btn1 RCtl // vi as in Qwerty + LSht*- Btn5 Btn4 Btn3 Butn2 xxx |_Acc1_ Acc0 _PgUp__Home__End_ _PgDn_ + --------------------------------------------------------------------------- + LAlt Del Ent ___ | PgUp _Left_ _Down__Up_ _Right_ // vi as in Qwerty + -*-<|> + <1 ± <2 <3 <4 | 4> 3> 2> _±_ 1> + ^ + (LGUI) + +For the 'arrow' hardware layout (additional key on the right), keys on the first +row are sacrificed and lost. The right most key on the second row is also lost. +The two keys on places 3 and 4 when counting from the right on the second row, +are being moved to the spots for Btn2 and Btn3 on the hand that also has the +arrows (those keys are otherwise twice defined for left and right hand). + +- - - + + _RAR (RARe keys. Power keys, Unicode mode, Alternate Base, Media, Brightness, Speed, Size, leds, …) + + index>middl>ring> pinky> pink2> + <|> -*- //(toggle) on _FUN + BASE Cnt/Mx Cnull CWmin CRprt Speed | SRprt Play Next Prev Stop RSht(•) + CapsL Power• Wake• Sleep• Pause• ScrLk | PrtSc xxx Vol+ Vol- Mute Insert // • requires Shift + ☑ uLNX uBSD uOSX uWIN uWNC | xxx xxx Bri+ Bri- xxx APP // Ü(nicode) tester + ---------------------------------------------------------------------------- + SLed MLeds LGUI xxx | !Alter xxx RGUI ___ // Mid-led, Side-leds, !Alternate + <|> -*- // (Hold) on Base + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> + ^ ^ + (LGUI) (_MOV) + +Remarks. !Alter switches between normal and alternate Base layer. + +☑ is a Unicode tester key. uLNX for Linux Unicode input encoding, uBSD +for BSD Unix, uWIN for Windos, uWNC for another Windos encoding. The +change is retained between on/off power cycles. + +MLed switches on/off the middle led, SLeds switches on/off the side leds. + +The keys marked with • require Shift to be activated, as a means of +preventing accidents. Shift here is on (Base) 'Backspace' (upper/right key) +which also reduces accidents (combinations which are never pressed +normally). If you press these keys without 'shift' they print their own +name between angled brackets. Example: pressing the 2nd key on the 3rd +row prints `“â€`. + +Bri+, Bri-: screen brightness (if your system supports it.) + +Speed: toggles speed measuring on/off. SRprt: writes your speed. +See topic about Speed measuring. + +Cnt/Mx, Cnull CWmin, CRprt: text size measuring. See topic. + +- - - + + + Layer _PAD Numbers Pad (special symbol versions; regular '1' is not the same as this numpad '1', etc) + + index>middl>ring> pinky>pink2> + -*- <|> //(toggle) on _FUN + BASE xxx xxx .DEL 4LEFT 2DOWN | 8UP 6RGHT * xxx xxx Bspc + LCtl 1END 2DOWN 3PGDN 4LEFT 5 | 6RGHT 7HOME 8UP 9PGUP 0INS - + LSht xxx xxx / xxx = | + 3PGDN 1END 7HOME 9PGUP RSht + -*------------------------------------------------------------------------- //-*- toggle on Base + LAlt Del Tab ENT | NUML xxx RGUI RAlt + <|> + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> + ^ ^ + (LGUI) (_MOV) + +Remarks: The keys between `.DEL` and `*`, `+` and `RSht` constitute sort of +navigation clusters, to make it easier to find the number pad versions thereof. + +This is the variety for `_PAD` layer, which resembles a numerical keypad: + + Layer _PAD (Number pad, square layout) + + index>middl>ring>pin>pink2> + <|> + BASE xxx xxx xxx xxx xxx | = 7HOME 8UP 9PGUP - Bspc + LCtl xxx xxx xxx xxx xxx | * 4LEFT 5 6RGHT + RCtl + LSht xxx xxx xxx xxx xxx | / 1END 2DOWN 3PGDN , RSht + ------------------------------------------------------------------------ + LAlt Del Tab ENT | NUML 0INS .DEL RAlt + <|> + <1 ± <2 <3 <4 | 4> 3> ± 2> 1> + ^ ^ + (LGUI) (RGUI)¹ + + â‚) Note anomaly, see Base Numpad for details `./base_numpad.md`. + Different placement and different meaning, compared to the usual common layers. + +- - - + + + Layer _ACC (ACCented characters, see _RAR layer for input modes) + + index>middl>ring> pinky>pink2> + -*- <|> //(toggle) on _FUN + BASE áà óÓ éÉ úÚ íà | ýà ijIJ çÇ øØ åÅ Bksp + LCTL(Tab) äÄ öÖ ëË üÜ ïà | ÿŸ œŒ æÆ ñÑ ß μ + LSht àÀ òÒ èÈ ùÙ ìÌ | îÎ ûÛ êÊ ôÔ â RSht + ---------------------------------------------------------------------------- + LAlt ___ ___ Ent | Spc ___ ___ RAlt + -*- <|> //(hold) on Base + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> + … … + +- - - + + + Layer _DRA (DRAwings, whatever else (rendering width might vary in different applications)) + + index>middl>ring> pinky>pink2> + -*- <|> //(toggle) on _FUN + BASE “„ â€â‰¤ £≥ ∅ ¢ ±ƒ | â¦â™¥ 🙂🙠ðŸ‘👎 â½â‚ â¾â‚Ž Bspc + Tab ¹₠²₂ ³₃ â´â‚„ âµâ‚… | â¶â‚† â·â‚‡ â¸â‚ˆ â¹â‚‰ â°â‚€ RCTL + LSht 「┠ã€â”€ °〇 •§ …· | â˜â˜’ ☑🗹 ¿¡ 《┄ 》┅ RSht // ☠☒ ☑ 🗹 or ⮘ â®™ ⮚ â®› + ------------------------------------------------------------------------- + LAlt ___ ___ Ent | Spc ___ ___ RAlt + -*- <|> -*- //(hold) on Base + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> + ^ ^ + (LGUI) (_MOV) + +Remarks. ☠☒ ☑ 🗹 or ⮘ â®™ ⮚ â®› +- - - + + Layer _BON (Bonus layer, a variety of more stuffs.) + + index>middl>ring> pinky>pink2> + -*- <|> //(toggle) on _FUN + BASE ‛ 🛠 ’ ⬆ ¤ 🄯 ∑ © ‰ ‱ | ★ Ù­ 😊 ⨠× ⃰ √ ⻠⺠Bksp + `~ â‘  ⬅ â‘¡ ⬇ â‘¢ âž¡ â‘£ ┠⑤ ┓ | â‘¥ ┃ ⑦ ┇ â‘§ â•‹ ⑨ ⓪ ∞ — ≈ // — is a dash (larger) + LSht ‹ › ÷ ☞ â”— ≠ â”› | ✗ ┣ ✓ ┫ âš  « » RSht + ------------------------------------------------------------------------- + Left ___ ___ Ent | Spc ___ ___ Right + -*- -*- <|> -*- // Activation on Base + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> + ^ ^ + (LGUI) (_MOV) + +- - - + +4.5 Movement layer options +-------------------------- +The movement layer (`_MOV`) has several configuration options. You +can either have _triangle_ configuration arrows on the _left_ hand +(with navigation keys around it), or a _flat_ arrow configuration on +the _right_ hand (with navigation above it). + +You can configure for the _arrow_ hardware layout (one additional hardware +key on the right). The additional key on the Base layer can toggle to the +movement layer, and than becomes part of the arrow cluster. For both +versions (_triangle_ arrows left hand or _flat_ arrows right hand) you +can compile this second arrow cluster to be completed with navigation keys +(Home, End, PageUp, PageDown). + +![Minivan layout Image MOV 3 defaultf](http://socialism.nl/misc/minivan/minivan_mov_layer_flat_hw-basic_vb.jpg) + +![Minivan layout Image MOV 3b default](http://socialism.nl/misc/minivan/minivan_mov_layer_triangle_hw-basic_vb.jpg) + +^ `#define ARROWS_TRIANGLE` + +![Minivan illustration BASE towards 3](http://socialism.nl/misc/minivan/minivan_layer_illustration_base_mov_hw-arrow_vb.jpg) + +^ Illustration of accessing the arrows/navigation with a key on the Base layer + +![Minivan layout Image MOV 3b + arrow](http://socialism.nl/misc/minivan/minivan_mov_layer_hardw-arrow_triangle_vb.jpg) + +^ `#define ARROWS_TRIANGLE`, `MORE_KEY__ARROW`, `MOREKEY2_ARROW_CLUSTER`, `MORE_key2 _MOV_UP` + +![Minivan layout Image MOV 3b + navig](http://socialism.nl/misc/minivan/minivan_mov_layer_hardw-arrow_triangle_addnav_vb.jpg) + +^ `#define ARROWS_TRIANGLE`, `MORE_KEY__ARROW`, `MOREKEY2_ARROW_CLUSTER`, `MOREKEY2_ADD_NAVIGATION`, `MORE_key2 _MOV_UP` (note change on previously BTN2/3) + +![Minivan layout Image MOV 3 + arrows](http://socialism.nl/misc/minivan/minivan_mov_layer_hardw-arrow_flat_vb.jpg) + +^ `#define MORE_KEY__ARROW`, `MOREKEY2_ARROW_CLUSTER`, `MORE_key2 _MOV_UP` + +![Minivan layout Image MOV 3 + naviga](http://socialism.nl/misc/minivan/minivan_mov_layer_hardw-arrow_flat_addnav_vb.jpg) + +^ `#define MORE_KEY__ARROW`, `MOREKEY2_ARROW_CLUSTER`, `MOREKEY2_ADD_NAVIGATION`, `MORE_key2 _MOV_UP` (note change on previously BTN2/3) + +![Minivan layout Image MOV 3 vi arrow](http://socialism.nl/misc/minivan/minivan_mov_layer_vi_vb.jpg) + +^ `#define` \[`MORE_KEY__ARROW`, `MOREKEY2_ARROW_CLUSTER`\] `VI_SWITCHERYDOO`, `#undef ARROWS_TRIANGLE` + +4.6 Numbers pad layer options +----------------------------- +This concerns the numbers pad layer, the one that is part of the common layers. + +![Minivan layout Image PAD](http://socialism.nl/misc/minivan/minivan_pad_layer_vc.jpg) + +![Minivan layout Image PAD squared](http://socialism.nl/misc/minivan/minivan_pad_layer_squared_vb.jpg) + +^ `#define NUMPAD_COMMON_SQUARE` + +5 Led colors for layers +======================= + • letters Led: low-white/teal/offâ½Â¹â¾ _DEF_BASE "Default base" + • letters (alternate) Led: off/teal/low-white _ALT_BASE "Alternate base" + • numbers Led: blue/blue/blue _DEF_NSY "Default Numbers SYmbols" + • numbers (alternate) Led: blue/blue/low-white _ALT_NSY "Alternate Numbers SYmbols" + • number pad symbol versions Led: green/low-white/blue â½Â²â¾ _PAD "numbers PAD" + • accented characters é, ø, ß … Led: cyan/cyan/cyan _ACC "ACCented" + • Unicode symbols, ¹, ±, ° … Led: yellow/yellow/yellow _DRA "DRAwings" + • Unicode symbols, â‘ , ‰, ÷ … Led: off/yellow/off _BON "Bonus" + • function keys, Led: red/red/orange â½Â³â¾ _FUN "FUNction keys" + • and a movement layer Led: green/green/green _MOV "MOVement" + • keys like Power, Play, Led: white/purple/purple â½â´â¾ _RAR "RARe keys" + + Leds: + • â½Â¹â¾ The low-white led is bright-white when capslock is on. Optionally the middle led (cyan) can + show the color of the last layer that was active. + • â½Â²â¾ The colors are reversed blue/low-white/green when numlock is on. + Left led color memory aid: same as either numbers or movement layer for numlock on/off. + • â½Â³â¾ The colors are reversed to orange/red/red when set to de-activate after one F-key press. + • â½â´â¾ The colors are reversed purple/purple/white, indicating which of the two base layers + is active (see below). + • Middle led: Breathing effect. When not breathing, keyboard is not working normally with the computer. + - When speed measurement is active, the middle led color indicates the speed, unless + text size counting set to a maximum is active. + - When text size counting is active and set to a maximum amount, the middle led color + indicates progress to the limit from green to red, flipping white/red on the limit. + - When on Base layer it shows a teal color, or (compile option) the layer most recently active. + - When the left/right leds are off, when on Base, it shows a teal color (not last active), even + if so compiled. + • Leds can be switched on/off on the _RAR layer (SLeds, MLed). + + +6 Compile options +================= + Layout + + • Several layouts to choose from: Qwerty, Dvorak, Colemak, Workman, Numpad. + + • You can use the keyboard with two different letters/number-symbols layouts. + + Hardware + + • Hardware key configurations: _default_ (44), _arrow_ (45), _south paw_ (45), _arrow_ + _south paw_ (46). + +![Minivan illustration 0](http://socialism.nl/misc/minivan/minivan_illustration_arrow_southpaw.jpg) + (On the `_RAR` layer, the additional _south paw_ key is more to the right.) + + • What the additional hardware keys for _arrow,_ _south paw_ should be. + + Navigation cluster + + • An arrow cluster for _arrow_ hardware configuration, on the `_MOV` layer. + + • All navigation keys around _arrow_ hardware configuration arrow cluster on `_MOV` layer. + + • Navigation cluster in a triangle (WASD) (left hand), or flat layout with optional vi(1) layout. + + Numpad (in common layers) + + • Numpad with numbers in a row. + + • Numpad with layers in a block form. + + Special functions + + • Set speed measuring on/off at keyboard startup. + + • Set text size measuring on/off at keyboard startup. + + Changing symbols + + • Switching the GUIs left/right, and some other specific key changes. + + • Reduce firmware size/bloat: remove or eviscerate Unicode layer(s). + + For the complete list, see `./user_config.h`. + +7 Language support +================== + +7.1 Input methods +================= +There seem to generally be two ways in QMK for typing a language other than English. +One is to use a language specific remapping on the computer operating side, and +to use the QMK supplied symbols in the keymaps. This may include the use of a “dead keyâ€. +Presumably you can also still use the Unicode symbols. + +âš  *There are currently no such Base pair layouts available. If this is the method you want, +you may want to look elsewhere.* + +The other way is to type the additional symbols in Unicode. _The computer +operating must understand these special sequences._ Several Unicode +input modes are available, which can be changed while the keyboard is +running. There is no need for a “dead keyâ€. The language setting +in the computer operating system can be set to English. This layout is +designed for this method, to avoid the dead key problem. + +7.2 Unicode symbols +=================== +For the remainder of this chapter the Unicode input method is assumed. + +You may be able to type your language, with the help of some of the Unicode +layers and one of these layouts: Qwerty, Dvorak, Coleman, Workman. The following +languages might work for you this way. + + • Dutch (éëèïijí) + • English (—“â€â€›â€™) + • French (çœæéèàòùîûêôâëïüÿ) + • German (äöüß) + • Norwegian, Danish (œæøå, éêèëóêò, üáà …) + • Spanish (¿¡ñ) + • Swedish (äåö …) + +The following quotation marks are available, which seems it would cover these languages: + + 'test' "test" “test†„test†‛test’ ,test’¹ «test» ‹test› 《test》 「test〠— test + + ¹) Left side is a basic comma. + +See the `_ACC` _accented characters_ layer for all characters with diacretic markings. +If you miss a symbol, you could replace one you don't use and add it yourself (by +reprogramming the source code). + +8 Speed measuring +================= + ‛Speed’ starts speed measuring. + ‛SRprt’ stands for ‛Speed Report’: + • Tap to get your speed report. + • Hold for a while for led color compilation (see below). + ☞ Text size counting (see below) middle led colors take precedence, + when a maximum is set, over layer colors or speed measurement. + +With the key ‛Speed’ on the `_RAR` layer, the speed of your latest +completed batch of 25 keypresses is computed, as well as the average of +all your batches of 25 keys. The speed is displayed as the color of the +middle led, which otherwise shows the layer color. A bright white middle +led indicates ‛Speed’ has just been activated. + +With the key ‛SRprt’ (short for ‛Speed Report’), the keyboard +will write your typing speed either in keystrokes per second (k/s) +or words-per-minute (wpm), depending on your compilation configuration. + +“Keystrokes per second†uses the following format: ``. A is the amount of key presses per second (k/s) of your +last batch, B.B is your average over the last C batches of keys. +When using “Words per minuteâ€, A is in word-per-minute, B is also +in words-per-minute: ``, no decimal precision. +Example: <150wpm;108wpm20x25keys> + +Batches with 0 k/s are not counted to the average. You can take a +longer break without it affecting your average. + +8.1 Speed Led color compilation assist +-------------------------------------- +If you hold the ‛Speed Report’ key for one second, it will increment the +speed, and led color accordingly. This can be helpful when configuring +your speed measuring compile settings. This works best with speed +measuring set off. + +9 Text size measuring +===================== + ‛Cnt/Mx’ stands for ‛Count/Maximum’: + • Tap to start counting, tap again to suspend. + • Hold > 0.5 seconds for maximum menu. + ‛Cnull’ stands for ‛Count null’: + • Tap to set the counts to zero. + ‛CWmin’ stands for ‛Count Word minus’: + • Tap to detract one word from the word count. + • Hold > 0.5 seconds to detract 10 words. + ‛CRprt’ stands for ‛Count Report’: + • Tap to get a counting report. + ☞ ‛Count’ and ‛Speed’ (see above) reports get added to the + character count, but not to the word count. + ☞ Auto-repeating keys do not get counted as characters. + +You can count your text by character and word, by activating the key +‛Count’ on the `_RAR` layer. Pressing ‛Count’ again will suspend +counting, pressing it yet again resumes where the count left off earlier. +The middle led turns cyan when no maximum is set (see below), +or to green when it is set. + +You can set a maximum to type, with the ‛Cnt/Mx’ key. In your +editor (or wherever typing these characters is harmless) you will get +the following menu by pressing the ‛Cnt/MX’ key for at least half +a second: ``. In here: *N* stands for your numerical input, *c* +for a maximum count in *characters* or *w* for a maximum in *words.* + +Start typing a number, finish with either *c* or *w* to make the maximum +be counted in either characters or words. If you want to leave the +menu before giving *c* or *w*, enter a *dot* ‛.’ or ‛Escape’, +which will leave the maximum value at 0 (zero). A maximum value of zero +implies there is no maximum. + +Setting a maximum of 1000 characters looks like so: + + Hold ‛Cnt/MX’ results in: `` + Then type “1000†results in: `1000` + Then type “c†results in: `1000->1000c` + At this point the keyboard is out of this special input menu. + + The keyboard indicates what it accepted as your input, by + repeating the number, just before your last input is being printed. + +With a maximum established, the middle led color goes from green to red, +as you type. When the maximum is reached, the keyboard will output a +Backspace character for every key you subsequently press, making it +impossible to go any further, until text size counting has been disabled, +or the count is reduced. The middle led changes color between red and +white while at the maximum set size, for every new input character. + +To get your word count report, press ‛CReport’ short for: ‛Count +Report’. It comes in the form: ``, where A is your character +count, and B is your word count. Example: `<5420c;547w>`. + +When a maximum is established, the report will only be given in +either characters or words, and the maximum is given with it, like so: +`<66w>[200w]`. 66 words have been written, a maximum of 200 words has +been set. + +If you have a maximum established and use it across different articles, +you no longer have the total count. You can activate speed measuring, +which in its report includes the total characters pressed. + +9.1 Text size Usage +------------------- +It is assumed that you will take the report in the document you are +editing, and then delete it. If you do character counting, the value of +the report itself is added to the character count. Therefore you should +delete that without using an auto-repeating on the deletion key. That +way the characters are subtracted again. + +If you count in words, the report is not added to the word count. You +can delete it however you want. + +This works the same for a ‛*Speed* Report’ you might like to take. +You can take it in the document, and then delete it in the same, +without affecting the text size counting in characters or words. +When deleting keys with Backspace or Delete, the character count goes down +accordingly, the word count does not. + +Words are counted by counting Space and Enter key presses. Immediately +repeating blanks do not add to the word count. You can only manually +subtract from the word count, using the key ‛CWmin’ short for ‛Count +Word minus’. This means that if you delete sections in your document, +you need to manually subtract the same words. + +Example: after typing something and then typing `` twice to start a +new paragraph, counts for one word. When deleting three words with their +three blank areas, then tapping ‛Count Word minus’ three times, +should result in an accurate word count. To add words to the count, +type mock ones and then delete them: “x x x x†adds *three* words, +“y y y †also adds three words (three separate blank spaces). + +Layer changes, shift and unusual/complex keys do not get counted. +Navigation, arrow and mouse keys do not get counted. Auto-repeating +of keys does not affect the *character* count, therefore should be avoided +if you want to count in characters. + +10 Making your own base layer(s) +================================ +You can insert your own `_DEF_BASE`, `_DEF_NSY` and/or `_ALT_BASE`, `_ALT_NSY` +Base plus number/symbols layer pairs, integrate it nicely with the rest +of the code, and re-define a special characters layer to go with it if +you want (etc). The idea is to make it easy to change the alphanumerical +keys, while leaving the modifiers, layer switch keys etc. the same. +`YOUR_KEYMAP` stands for a name you choose. + +First we will look at a simple keymap, without its own configuration +options or header file. + + â‘  Make a file named: `./base_YOUR_KEYMAP.c`), with at least + those two layers: _..._BASE and _..._NSY. It is probably best to + copy one of the existing `./base_....c` files, and edit that. + + â‘¡ Add a #define to `./user_config.h`: + #define BASE_YOUR_KEYMAP__DEF_BASE + #define BASE_YOUR_KEYMAP__ALT_BASE + Under the topic ‛Base layers’ there is a comment to help you. + + â‘¢ Edit ./keymap.c to have your new file #included, using your just defined + preprocessor element. Close to the other #includes is a comment there to + help you. Look just under the line with this, in ./keymap.c: + + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + (…) + // // ⬇ insert your ./base_YOUR_KEYMAP.c #include here: + + // # if defined(BASE_YOUR_KEYMAP__DEF_BASE) || defined(BASE_YOUR_KEYMAP__ALT_BASE) + // # include "./base_YOUR_KEYMAP.c" // Your Keymap. + // # endif + +Now you have integrated your base layers alternative. To compile it: + + â‘£ _Activate_ your #define BASES_YOUR_KEYMAP__DEF_BASE or + BASES_YOUR_KEYMAP__ALT_BASE in `./user_config.h`, + _Remove_ any other base layers from being defined on the + same spot _DEF_BASE or _ALT_BASE to prevent a conflict. + + ⑤ Check Pre-processing with: + > gcc -E keymap.c | less + + â‘¥ Compile and flash to your keyboard. + +You can redefine any layer in your new `./base_YOUR_KEYMAP.c` +You can do that by setting one or more of the `BASESFILE_LAYER_...` defines in +your own `./base_YOUR_KEYMAP.c` file. See near the top of an existing +`./base_....c` file for clues. +`_ACC` in particular is a layer meant to augment a keymap with special +characters for a given language/layout in the base layer(s). Perhaps you +want to redefine it, for example. + +Example: Having done the above points â‘  âž¡ â‘£ for a `./base_YOUR_KEYMAP.c` file. +Let's say you re-arranged keys on `_ACC` to suit ... French. + + ⑦ In your `./base_YOUR_KEYMAP.c`: + #define `BASESFILE_LAYER_ACC` + The `_ACC` in ./keymap.c will now be ignored. + +You can re-define `_ACC` in your own file. + + â‘§ Copy an existing `_ACC` layer into `./base_YOUR_KEYMAP.c` + Edit it so that French characters like ‛Ç’ ‛«»’, ‛œ’, ‛æ’, + ‛ô’, ‛é’ etc. are in positions that work best. You can look in + `unicode_weurope.h` to find some Unicode points already defined. + + ⑨ Compile and flash to your keyboard. + +Now we will look at a more complicated keymap, where you are also altering +preprocessor constants defined in `./user_config.h`. (Warning, perhaps this +is overkill … ;-) + +Example: the `./base_numpad.c` has an option to entirely eviscerate the +`_PAD` layer, for convenience. (Why is this even useful ? Good question ! +One reason could be that it can set up a default, so that anyone who chooses +this `./base_numpad.c` Base layer, automatically is eviscerating the `_PAD` +_common_ layer, without having to do anything else. On the downside, it +could be confusing that one option is configured in two places.) + +Having done the above points ⑦ âž¡ â‘§ as well, let's say for some reason you +need to reverse Left GUI and Right GUI. + + ⑨ Copy your User Configuration Block at the top of your `./base_YOUR_KEYMAP.c` + and the GPL License, and place that in a new _header_ file: + `./base_YOUR_KEYMAP.h` + + â‘  ⓪ Write the necessary code to set and unset the constant + `SWITCH_GUIS` in your `./base_YOUR_KEYMAP.h` file You are encouraged + to write code which overrides any setting in `./user_config.h, for + those constants which you choose to affect, for simplicity sake. + (This is not a C programming manual, so it won't get into this.) + + â‘  â‘  Look in `./user_config.h`, and #include your header file there, in + a similar way as was done for your C code file. It should be just + below the user configuration block, and has a template for you. + + â‘  â‘¡ Compile, flash and test. + + â‘  â‘¢ It would be nice to put a remark on the general preprocessor constants + which you might be affecting, that your keymap could be affecting them. + You would edit the ./user_config.h comments with a short one line notice, + such as: + + * + * âš  Note: ./base_YOUR_KEYMAP.h can overrides this setting, if compiled with that ‛Base’ layer. + */ + +Putting your `*.h` header file in `./user_config.h` isn't strictly +necessary, unless you alter “general preprocessor constants†+defined in `./user_config` (not local constants for your keymap only). + +Perhaps a separate header file is overkill. On the other hand, whatever +preprocessor logic is necessary after user configuration has been given, +can be handled in one place, if #included as suggested. It allows you +to override the settings in `./user_config.h` from your header file +(because it is #included immediately below those). If a user is playing with +keymaps Base compile choices, it could be convenient to play with +`./base_YOUR_KEYMAP.h` settings, have everything that could be relevant +close at hand, then forgetting about those settings once compiling +with another Base layer, and be able to return to it with previous +configuration already done. + +You can also just #include your header file at the top of your +`./base_YOUR_KEYMAP.h` file, if it does not touch anything else but your +local keymap. + +11 Eviscerations +================ +Cutting down the keymap reduces the firmware size, and helps reducing +mental clutter from having masses of symbols you might never want to use. + +You can compile as a single layout. Define only a ‛Default’ base pair, +and set `MINIFAN_SINGLE_LAYOUT` (`./user_config.h`). The leds for the +base layers letters and numbers&symbols, will show up as they would for +the ‛Alternate’ layer in a dual layout compilation. + +You can remove the layers `_ACC`, `_DRA` and/or `_BON` (see +`./user_config.h` around `REMOVE_ACC`). + +You can remove a set of symbols from one or more of Unicode layers, +such as not having box drawing characters on `_BON`, or no sub-script +numbers on `_DRA`. + +12 Key associations +=================== +The keymap was designed to have the same or similar keys on the same key +or close to it, on different layers. Sometimes the association goes by +what finger is used, and/or on what row. For example the symbol ‛(’ +on the numbers-symbols layer (`_NSY`), becomes the symbol ‛â½â€™ on +another layer. + +![Minivan layout Image associations](http://socialism.nl/misc/minivan/minivan-relationships_common_1500_vd.jpg) + +13 Trouble shooting +=================== + • Compiling + + If the firmware is too large, you can try using a different version + of the compiler, or you may have to reduce size by removing certain + options. + + • Unicode + + Unicode is chaos: try going to `_RAR` layer, and hit the Unicode + operating system buttons. + + • Leds + + Leds not working after flashing firmware: try going to `_RAR` layer, + and hit the key MLeds and SLeds, which switch Leds on/off. + + • Weird layer jumping + + You weirdly end up on the `_PAD`, `_FUN` or some other layer while + typing ? If you jump to layers which are on Shift key toggles, this + is a typing mistake. + + • Difficult/impossible key combinations ? + + An example of a difficult key combination is: the modifier Control, + Shift, or Alt, with media key “volume up†(or down, etc). It may + work to press and hold “Control†(which should communicate “Control + depressedâ€), then activate `_RAR` layer with the hold key (which + communicates nothing to the computer attached to the keyboard), + press and let go “volume up†(which should communicate just that), let + go of the `_RAR` layer (which again communicates nothing), let go of + the Control key (which should communicate “Control releasedâ€).. + +14 Why you want this layout +=========================== +☞ This layout seems easy to learn and predictable. + +☞ The normally most used layer after letters is “numbers & symbols†+ (123…, !@#…, []/…, called `_NSY`). This layer you can access by either + your left or right thumb, to spread fatigue. + +☞ Right hand pinky is no longer overused, as it is on regular keyboards. + +☞ 0-9 enumerations / numbers, they are on the same fingers as a standard + keyboard. + +☞ The symbols normally reached by shifting a number, are also still on + the same fingers. + +☞ Because one often uses an F-key only once, the layer can switch back + to Base after an F-key is used. + +☞ Modifier combination keys on `_FUN` layer for use with F-keys. + +☞ The movement layer has a bunch of layout options, and allows for mouse + use. + +☞ The layer with Power buttons protects you from accidental keystrokes + on the critical keys. + +☞ If you need working with Control/Shift/Alt and a pointing device in + right hand, you can quickly get uncluttered such keys by tapping left shift. + +☞ The accented layer makes it possible to set the keyboard in a mode + on the computer side without dead-keys. + +☞ The second Unicode layer adds a fair amount of fun stuff to spice up + your writing. Write Hâ‚‚O, 2â·Â·â°=128, ±8 °C, §2.1, 2 ³/₈", a noteâ´, £ 6.²ⵠ+ etc. + +☞ The third Unicode layer adds a proper dash — and French style + quotations «»‹› and other stuff. â‘  «Ça va bien», â‘¡ 5 × 3 ≠ 14, + â‘¢ .083% ÷ 2 ≈ 4‱ âž¡ 4.â‚₅‱ + + â”â”â”â”â”â”â”┓ + ┃ test ┃ + â”…â”â•‹â”â”â”â”â”â”â”› + ┇ â‘£ + +☞ Speed and text size measuring, including to set a maximum on your text input. + These are features not part off regular keyboards. + +☞ Easy to create your own dual layout for letters / numbers. + +☞ If you do want to reprogram the code, it has a lot of comments to make + it easier to follow. + + +15 BUGS +======= + No real bugs known currently. Just some minor issues … + + The tilde ~ on the numbers-symbols layer should logically be reached on the second + row without the need for _shift,_ however there seems to be a QMK limitation + with this. No work around has been attempted as of yet. (It seems to be a minor issue; + using shift for once seems OK.) + + `LCTL_T` `( KC_TAB )` is not seen as a blank by word counting, use as Control is not + ignored in character counting. (This minor issue is ignored for now. Tab is not + normally used in text writing.) + + The eviscerations may not have been worked out yet into the ultimate scrubbing of + everything that may have become redundent, because it does complicate the code with + a lot of #defines. Perhaps it should be done eventually, if there is an actual need. + + +16 Resources +============ +This links to an external file, with some development resources like +Gimp .xcf files, pre-compiled hex files, … + +[Resources](http://socialism.nl/misc/minivan/ "Additional resources") + +17 Author(s) +============ + This keymap.c was edited from the Minivan default, original LED + support was copied/edited from ../jetpacktuxedo/ keymap. Thanks to + QMK support for their help, especially Drashna. + + _Personal note:_ This keymap came about because of a sudden need + for a replacement keyboard. It took over a year to make (≈ 1.5 h/day). + The goal became to make a good keymap for everyone without the time to + make one, in the best keyboard format: “40%â€. + +![Keycaps blanks](http://socialism.nl/misc/minivan/keycaps_blanks_va.jpg) + + Written on the Minivan: Jos Boersema. [contact](https://market.socialism.nl/author/ "get e-mail address there") + + Contributions to this key map: + - … + diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/rules.mk b/keyboards/thevankeyboards/minivan/keymaps/josjoha/rules.mk new file mode 100644 index 0000000000..e6998240e0 --- /dev/null +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/rules.mk @@ -0,0 +1,19 @@ +# Build Options +# change to "no" to disable the options, or define them in the Makefile in +# the appropriate keymap folder that will get included automatically +# + +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = no # Console for debug(+400) +COMMAND_ENABLE = no # Commands for debug and configuration +NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output on port C6 +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE = yes # Enable Leds. If you set to “noâ€, that saves ≈ 13% of the firmware size. +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +UNICODEMAP_ENABLE = yes # +LTO_ENABLE = yes # To reduce firmware size diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/todo.md b/keyboards/thevankeyboards/minivan/keymaps/josjoha/todo.md new file mode 100644 index 0000000000..6ab2f795b6 --- /dev/null +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/todo.md @@ -0,0 +1,34 @@ +Todo: +===== + + + § Further development + + The following seem interesting for further development. However following the “scratch your + own itch†rule, perhaps it should be someone else's interest. + + ☠It seems fun to have a user friendly front end to compile the available variations of this keymap. + Such a front end could edit minifan_config_compact.h + + ☠Language specific keyboards, such as Qwertz and Azerty, etc. + Two option exist: + • Using an include like #include keymap_german.h (etc). + • If a language specific #include and computer language setting is not used, but merely some basics + such as a matching basic alphabet ABC…XYZ on Base, with some additional Unicode symbols for that + language on _ACC and or other Unicode layers, it might be simple to make, and avoid the dead key + problem. To go another step and recreate a key like ‛<>’ (as it seems to exist in Qwertz), would + seem to require macros in unicode_macros.c. + + § Other: + + ☠Testing all user configurations + ☠Porting to Planck keyboard. + ☠Review/fix C indendation. QMK indentation is not my preferred style, and + therefore it is not entirely consistent. + ?☠A lock mode, so that others cannot type on it if you walk off ? + ?☠Fun and games: game layer. + + ?☒ User defining macros (record/play user input), another special Base layer ? Is there + room for this, or how to create it if not. + âž¡ It seems a bit odd to have a keyboard with internal registers. Probably better handled at the + application level, so that the keyboard remains a basic input device. diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/unicode_macros.c b/keyboards/thevankeyboards/minivan/keymaps/josjoha/unicode_macros.c new file mode 100644 index 0000000000..f213792484 --- /dev/null +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/unicode_macros.c @@ -0,0 +1,2272 @@ +/* + * License (GPL): + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + + * Author: © 2019, 2020 by Jos Boersema + * + */ + +/* This file contains mostly the Unicode and special macros. + It contains the function: process_record_user(...) + */ + +#include "./unicode_macros.h" +#include "./unicode_weurope.h" + +// Definition of Æ’ (Dutch currency symbol). +// Best changed in user_config.h, if you like a Euro symbol instead. +// +# ifndef UNICODE_CURRENCY // Prior optional definition in user_config.h +# define UNICODE_CURRENCY 0x0192 // Hex number. The unicode hex number for position Æ’ in the default keymap. +# endif + +// +// 🛠 +#define CS_USER_DEFINED 0x1F6E0 // Hammer & wrench (place holder). + +#define DIV10POINT TRUE // suggest to function write_number, to divide by 10 and print as a fraction: N.N + +// Converts integer value to Unicode. Also handles 'descramble' Unicode mode for DVORAK_DESCRAMBLE_HALF. +// Unicode is a hexadecimal string (character) representation of the value, with a pre- and post-fix. +void unicode_hex2output (long unsigned int unshifted, long unsigned int shifted) { + + long unsigned int input; // which argument to work on + char output[10] ; // will hold the ascii for output + int index; // count backwards 'to left' in the string + long unsigned int bitmove; // move computation to next digit. + long unsigned int work; // temporary value for computation + + + // What to work on + if(shift_ison) input = shifted; // Trying to get everything possible here in this function, to reduce firmware size. + else input = unshifted; + + //if (input < 0) input *= -1; // positive value + + // Take the hex value 4 bits at a time, starting with the least significant, convert to ascii, store + index = 9; + output[index] = '\0'; // terminator + bitmove = 0x1; + while ((work = (input / bitmove)) && (index >= 0)) { + index --; + work &= 0xF; + if (work < 0xA){ // numbers + output[index] = work + 0x30; // pad to ASCII + }else{ // alphas +# ifdef DVORAK_DESCRAMBLE_HALF // Do the letter descramble if needed. + if(_FULL_ == alternate){ // 0-9=0-9, a=a, b=n, c=i, d=h, e=d, f=y + if (0xA == work) output[index] = 'a'; + if (0xB == work) output[index] = 'n'; + if (0xC == work) output[index] = 'i'; + if (0xD == work) output[index] = 'h'; + if (0xE == work) output[index] = 'd'; + if (0xF == work) output[index] = 'y'; + }else{ + output[index] = work - 9 + 0x40; // normal mode + } +# else // The above is not relevant for anything else. + output[index] = work - 9 + 0x40; // normal mode +# endif + } + bitmove *= 0x10; // next digit + } + + // Put character(s) out in correct mode +# ifdef DVORAK_DESCRAMBLE_HALF // Do the letter descramble if needed. + if (_FULL_ == alternate) { // This is the special 'descramble' output mode for a computer already set to Dvorak + + SEND_STRING ( SS_DOWN(X_LCTRL) SS_DOWN(X_LSHIFT) "f" SS_UP(X_LSHIFT) SS_UP(X_LCTRL) ) ; // lead-in for Unicode on Linux, 'descramble' mode + send_string (output + index); // pointer to argument with formatted string + SEND_STRING ( " " ) ; // Ends the Unicode numerical input mode, replacing input with desired character (Linux) + + }else{ + // normal QMK Unicode output mode + send_unicode_hex_string (output + index); // pointer argument + } + +# else + send_unicode_hex_string (output + index); // pointer argument +# endif + +} + + +// Wrapper for unicode keys that do have the same on shift. +void unicode_hex2output_single (long unsigned int either) { + unicode_hex2output (either, either) ; +} + + +// Required by QMK Unicode +const uint32_t PROGMEM unicode_map[] = { + +}; + +// Macro name definitions. The Unicode layers _ACC, _DRA and _BON are defined here, +// because the Unicode map system does not have enough space (at time of this programming, year 2020). +enum custom_keycodes { + + // Macro, allowing the upper left button to switch to either _DEF_BASE base layer, or the _ALT_BASE base layer. + // Alternate is set on/half/off in the _RAR layer. The word "base" is used to avoid "default," because the default + // layer system call DF() is not being used. + CTO_BASE = SAFE_RANGE, // 'C' for costum, "TO" for to, "BASE" for chosen base layer + + OTHER_BASE, // cycles modes: use _DEF_BASE, _ALT_BASE. For “dvorak²†layout (descramble) compile option, there is a third mode. + +# if defined(BASE_NUMPAD__ALT_BASE) + OTHER_BASE_GO, // Like OTHER_BASE, but also immediately switches to the other BASE layer. +# endif + + CTO_NUMS, // activates number-symbols layer, taking into account the dual layout mode + CTO_ACCE, // accented '' + CTO_DRAW, // drawings '' + +# ifndef CHOLTAP_ACCE_NOP + CHOLTAP_ACCE, // Go to accented layer, or others in combination with other keys. +# endif + +// Keys can be pressed together for a separate layer (like 'adjust layer' on the Planck). + DUO_HOLD, + + CHOLTAP_RSHFT, // Go to _FUN layer, or shift modifier. + CHOLTAP_LSHFT, // Go to layer, or shift modifier. + CHOLTAP_LAYR, // Go to _RAR layer, or right arrow + +// Special macro to make F-keys one-shot or not. + _FUN_STAY, + +// Layer toggle to be guaranteed on up-key, therefore macro definition here. + _MOV_UP, + +// These macros protect the critical keys like 'Power' from accidental press, by needing Shift to be pressed. + C_KC_PWR, // Powers computer off. + C_KC_WAKE, + C_KC_SLEP, // sleep computer + C_KC_PAUS, // pauze computer + +// Toggles side leds on/off. + LEDS_ON, + RGBTOG_, + +// Typing speed measuring + SPEED_TOG, + SPEED_REPORT, + +// Word/character counting + COUNT_TOG, // starts word counting + COUNT_REPORT, // writes to the computer as if typing, gives count report + COUNT_WORDMIN, // reduces the word count + COUNT_NULL, // resets count to zero + LT__MOV__KC_ENT, // move to layer _MOV, or + +// The _ACC layer, additional Unicode. +# ifndef REMOVE_ACC // This cuts out the whole _ACC layer. + XP_ACC_AA , + XP_ACC_AB , + XP_ACC_AC , + XP_ACC_AD , + XP_ACC_AE , + XP_ACC_AF , + XP_ACC_AG , + XP_ACC_AH , + XP_ACC_AI , + XP_ACC_AJ , + XP_ACC_BA , + XP_ACC_BB , + XP_ACC_BC , + XP_ACC_BD , + XP_ACC_BE , + XP_ACC_BF , + XP_ACC_BG , + XP_ACC_BH , + XP_ACC_BI , + XP_ACC_BJ , + XP_ACC_BK , + XP_ACC_CA , + XP_ACC_CB , + XP_ACC_CC , + XP_ACC_CD , + XP_ACC_CE , + XP_ACC_CF , + XP_ACC_CG , + XP_ACC_CH , + XP_ACC_CI , + XP_ACC_CJ , +# endif // REMOVE_ACC + +# ifndef REMOVE_DRA // This cuts out the whole _DRA layer +// The _DRA layer, additional Unicode. + XP_DRA_AA , + XP_DRA_AB , + XP_DRA_AC , + XP_DRA_AD , + XP_DRA_AE , + XP_DRA_AF , + XP_DRA_AG , + XP_DRA_AH , + XP_DRA_AI , + XP_DRA_AJ , + XP_DRA_BA , + XP_DRA_BB , + XP_DRA_BC , + XP_DRA_BD , + XP_DRA_BE , + XP_DRA_BF , + XP_DRA_BG , + XP_DRA_BH , + XP_DRA_BI , + XP_DRA_BJ ,// XP_DRA_BK , // no 'BK' key definition on this layer + XP_DRA_CA , + XP_DRA_CB , + XP_DRA_CC , + XP_DRA_CD , + XP_DRA_CE , + XP_DRA_CF , +# endif // REMOVE_DRA + XP_DRA_CG , // Needed for ☑ on Unicode tester key in _RAR +# ifndef REMOVE_DRA // This cuts out the whole _DRA layer + XP_DRA_CH , + XP_DRA_CI , + XP_DRA_CJ , +# endif // REMOVE_DRA + +// The _BON layer, additional Unicode. +# ifndef REMOVE_BON // Removes this layer entirely, if set. + XP_BON_AA , + XP_BON_AB , + XP_BON_AC , + XP_BON_AD , + XP_BON_AE , + XP_BON_AF , + XP_BON_AG , + XP_BON_AH , + XP_BON_AI , + XP_BON_AJ , + XP_BON_BA , + XP_BON_BB , + XP_BON_BC , + XP_BON_BD , + XP_BON_BE , + XP_BON_BF , + XP_BON_BG , + XP_BON_BH , + XP_BON_BI , + XP_BON_BJ , + XP_BON_BK , + XP_BON_CA , + XP_BON_CB , + XP_BON_CC , + XP_BON_CD , + XP_BON_CE , + XP_BON_CF , + XP_BON_CG , + XP_BON_CH , + XP_BON_CI , + XP_BON_CJ , +# endif // REMOVE_BON +}; + +// Pre-existing function, called for every key up and down. +// This function is sortof the hub of the whole thing. +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + + // User input for the word count menu + if (sizecount_menu) { + if (record->event.pressed) { // key down + + switch (keycode) { + case KC_0: // read in how many is maximum + sizecount_max = (sizecount_max * 10); + break; + + case KC_1: + sizecount_max = (sizecount_max * 10) + 1; + break; + + case KC_2: + sizecount_max = (sizecount_max * 10) + 2; + break; + + case KC_3: + sizecount_max = (sizecount_max * 10) + 3; + break; + + case KC_4: + sizecount_max = (sizecount_max * 10) + 4; + break; + + case KC_5: + sizecount_max = (sizecount_max * 10) + 5; + break; + + case KC_6: + sizecount_max = (sizecount_max * 10) + 6; + break; + + case KC_7: + sizecount_max = (sizecount_max * 10) + 7; + break; + + case KC_8: + sizecount_max = (sizecount_max * 10) + 8; + break; + + case KC_9: + sizecount_max = (sizecount_max * 10) + 9; + break; + + case KC_C: // count characters + sizecount_max_type = SIZECOUNT_CHAR; + sizecount_menu = FALSE; + break; + + case KC_W: // count words + sizecount_max_type = SIZECOUNT_WORD; + sizecount_menu = FALSE; + break; + + // Anything else ends menu input. + case KC_DOT: + case KC_ESC: + sizecount_menu = FALSE; // break out + break; + + } + if (!sizecount_menu) { // end + send_string ("->"); + write_number (sizecount_max, FALSE); // just indicate something + } + } + } + + // Go back to base-layer after pressing an F-key, on key-up to avoid BASE key activation + if ((_fun_stay == FALSE) && // + (((keycode >= KC_F1) && (keycode <= KC_F12)) + || + ((keycode >= KC_F13) && (keycode <= KC_F24)))) { // assumes keycodes 1-12 and 13-24 are consequtive, which seems likely, although using 1-24 failed (probably not consequtive) + // Go back to base layer + if (!(record->event.pressed)) { // key up + if (alternate) { // + layer_move (_ALT_BASE); + }else{ + layer_move (_DEF_BASE); + } + } + } + + // Detect if Shift was pressed in isolation, by seeing if another key was pressed during the time + // the right shift key was held down. + // This system is also used by CHOLTAP_ACCE + // This helps make sure a tapped use of these keys is correctly differentiated from their use as a + // modifier/layer-hold key. The Shift and CHOLTAP_ACCE should not normally interfere with each other. + if (isolate_trigger) { // speed: hoping this statement to execute a little quicker overall, than the next + if ((keycode != CHOLTAP_RSHFT) // not right shift up + && + (keycode != CHOLTAP_LSHFT) // not left shift up + && + (keycode != CHOLTAP_ACCE) // _ACC layer (and others) + && + (keycode != CHOLTAP_LAYR)) { // _RAR layer, or RAlt/Alt-Gr + isolate_trigger = FALSE; // another key was pressed + } + } + + // This block contains the complex macros, which should not count in speed counting or word/character counting, + // because they aren't typed characters. + switch (keycode) { + + // Typing speed measuring + case SPEED_TOG: // Toggle speed measuring on/off + if (record->event.pressed) { // key down + if (speed_measure) { + speed_measure = FALSE; + +# ifdef RGBLIGHT_ENABLE + rgblight_sethsv_noeeprom (HSV_PURPLE); // indicates stop (_RAR color) +# endif + + }else{ + // initialization of measurements + speed_measure = TRUE; // activates + speed = 0; // start at 0 k/s + speed_countdown = SPEED_COUNTDOWN; // reset, speed is measured in batches of keypresses + speed_counttime = timer_read32 ();// get current time + speed_add = 0;// speed average accumulator, it keeps adding the *speed* of each batch to this total + speed_batches = 0; // divider for speed_add to get the average + +# ifdef RGBLIGHT_ENABLE + // set middle led + rgblight_sethsv_noeeprom (HSV_WHITE); // indicates start +# endif + + } + +# ifdef RGBLIGHT_ENABLE + isolate_rgblight_set (); +# endif + + } + break; + + case SPEED_REPORT: // Report the current typing speed by writing it, as if typing + if (record->event.pressed) { // down + short added = 5; // This counts how many characters the report itself is adding into the current text, + // to later delete it from the character count for text-size counting. + + if (speed_measure) { + +# ifdef WORDS_PER_MINUTE + + // The speed is recorded as an accumulation of keystrokes-per-second, times 10 for added precision. + // This will be converted into words-per-minute by dividing by 5 characters for a word including + // blank space and punctuation, and multiplied by 60 for seconds per minute. â¶â°/â‚… = 12. Multiplied + // by 12 is the simple conversion. + send_string ("<"); // +1 character written // analogue to '' + added += write_number ((long int)((speed*12)/10), FALSE); // writes the speed + send_string ("wpm"); // +3 character written + if (0 != speed_batches) { + long int average_times_ten ; + average_times_ten =(long int) ((speed_add * 12) / speed_batches); // *12 converts k/s to wpm + + send_string (";"); // +â‘  '' + added += write_number (average_times_ten / 10, FALSE); // writes the average speed, cannot use decimal because precision is not there + send_string ("wpm"); // +â‘¢ + added += write_number ((long int) speed_batches, FALSE); // amount of batches + send_string ("x"); // +â‘  + added += 9 + write_number ((long int) SPEED_COUNTDOWN, FALSE); // amount of batches + send_string ("keys"); // +â‘£ = ⑨ + + speed_led ( (int) (average_times_ten / 12));// on report, show the average + // we need to convert back to k/s now + } + +# else // keystrokes per second, k/s + + send_string ("<"); // +1 character written // analogue to '' + added += write_number ((long int)(speed/10), FALSE); // writes the speed + send_string ("k/s"); // +3 character written + if (0 != speed_batches) { + long int average_times_ten ; + average_times_ten =(long int) (speed_add / speed_batches); + + send_string (";"); // +â‘  '' + added += write_number (average_times_ten, DIV10POINT); // writes the average speed + send_string ("k/s"); // +â‘¢ + added += write_number ((long int) speed_batches, FALSE); // amount of batches + send_string ("x"); // +â‘  + added += 9 + write_number ((long int) SPEED_COUNTDOWN, FALSE); // amount of batches + send_string ("keys"); // +â‘£ = ⑨ + + speed_led ( (int) average_times_ten );// on report, show the average. speed_led divides by 10 + } + +# endif + + send_string (">"); // +1 = 5 + if (sizecount_measure) sizecount_chars += added; // the user is expected to hit + }else{ + send_string (""); // indicates off + if (sizecount_measure) sizecount_chars += 5; // user: , to take it down again + } + + key_timer = timer_read (); + + }else{ // key up + // This use of the key is for callibrating your colors; it is difficult otherwise to see. + // This is not part of normal usage, therefore it is kept bare bones to reduce firmware size + if (timer_elapsed (key_timer) > 999) { // held for one second + speed += 10; + write_number ((long int)(speed/10), FALSE); // writes the speed + speed_led (speed); // update led + } + } + break; + + case COUNT_TOG: // Toggle start/stop text size measuring + if (record->event.pressed) { // key down + + key_timer = timer_read (); + + }else{ // up + if (timer_elapsed (key_timer) < 500) { // held for less than half a second (tapped) + if (sizecount_measure) { + + sizecount_measure = FALSE; + +# ifdef RGBLIGHT_ENABLE + rgblight_sethsv_noeeprom (HSV_PURPLE); // indicates stop (color of _RAR) + isolate_rgblight_set (); +# endif + + }else{ + + sizecount_measure = TRUE; // start counting + sizecount_word = FALSE; // detect double blanks. leading blanks are not a word + +# ifdef RGBLIGHT_ENABLE + if (0 == sizecount_max) { + rgblight_sethsv_noeeprom (HSV_BLUE); // indicates start/activated, but only without maximum set + isolate_rgblight_set (); // .. if maximum set, led goes green to red. + }else{ + rgblight_sethsv_noeeprom (HSV_GREEN); // indicates start/activated, but only without maximum set + isolate_rgblight_set (); // .. if maximum set, led goes green to red. + } +# endif + + } + }else{ // held longer + sizecount_menu = TRUE; + send_string (""); // Menu: N amount, c|w character|word counting. Input is a number then ‛c’ or ‛w’ + sizecount_max = 0; + } + } + break; + + case COUNT_NULL: // Sets the count to zero, which allows on/off to have a suspend/resume + if (record->event.pressed) { // key up + sizecount_blanks = 0; // + sizecount_chars = 0; + +# ifdef RGBLIGHT_ENABLE + rgblight_sethsv_noeeprom (HSV_CYAN); // indicates reset + isolate_rgblight_set (); +# endif + + } + break; + + case COUNT_REPORT: // Report the current typing speed + if (record->event.pressed) { + // We assume the user is writing a report in its active document, and then likely deleting it. + short added = 0; // This counts how much characters the report adds into the user document. + + if (sizecount_measure) { + send_string ("<"); // + 1 and â‘  characters (1 is one logical stream, â‘  another) + if (0 == sizecount_max) { // no size counting maximum, print both characters and words + + added += write_number (sizecount_chars, FALSE); // returns how many characters where printed + send_string ("c;"); // + 2 + added += write_number (sizecount_blanks, FALSE) + 5; // adds here + send_string ("w>"); // + 2 = 5 + + }else{ // Only show the one for which the maximum is set, don't throw off that mental focus + if (SIZECOUNT_WORD == sizecount_max_type ) { + + added += write_number (sizecount_blanks, FALSE) + 3; + send_string ("w>"); // + â‘¡ = â‘¢ + + }else{ // characters + + added += write_number (sizecount_chars, FALSE) + 3; // returns how many characters where printed + send_string ("c>"); // + â‘¡ = â‘¢ + + } + // add current maximum setting + send_string ("["); // + 1 + added += write_number (sizecount_max, FALSE) + 3; + if (SIZECOUNT_WORD == sizecount_max_type) send_string ("w]"); // + 2 + else send_string ("c]"); // + 2 + } + sizecount_chars += added; // Account for the written characters in the report itself. + + }else{ // no size counting, also here: keep the report terse + send_string (""); // indicates off (no need to add to count, since counting is off) + } + } + break; + + // This allows the user to manually remove word counts, when he has deleted a word. + // This is not needed for character count, because counts as minus. + case COUNT_WORDMIN: // Take down one word in the word-count. + if (record->event.pressed) { // down + key_timer = timer_read (); + }else{ // up + if (timer_elapsed (key_timer) < 500) { // held for less than half a second (tapped) + sizecount_blanks--; + }else{ + sizecount_blanks -= 10; + } + } + break; + + // Shift detection system. + // Disused because it turned out 'one shot' like Unicode input. Shift detection copied from. + // https://github.com/kyleterry/qmk_firmware/blob/master/quantum/quantum.c + //uint8_t shifted = get_mods() & (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)); + + // Crude but self contained in this source file shift detection. + // ... right shift + case KC_RSFT: + // + ... left shift + case KC_LSFT: + if (record->event.pressed) { // key down + shift_ison = 1; // shift depressed + }else{ // key up + shift_ison = 0; // shift released + } + // There are macros on Shift who also alter this variable. + break; + + case OTHER_BASE: // Switching through the default/alternate BASE modes, and Descramble for that Dvorak compile + if (record->event.pressed) { + ; + }else{ // key up + + // Cycles through the modes +# ifdef DVORAK_DESCRAMBLE_HALF // version Dvorak+Dvorak-descramble has 3 modes + if (_NORMAL_ == alternate) { + alternate = _FULL_;// alternate layers + default_layer_set (_ALT_BASE_MASK); // This is needed only for a rare case, + // where _DEF_BASE and _ALT_BASE their layer switching keys don't line up, + // such as with Qwerty Base Arrow + } else if (_HALF_ == alternate) { + alternate = _NORMAL_;// normal layers + default_layer_set (_DEF_BASE_MASK); + }else{ // _FULL_ == alternate + alternate = _HALF_;// alternate layers, without 'descramble' recomputing Unicode + //default_layer_set (_ALT_BASE_MASK); + // it cycles, and this comes always after it was set _FULL_ + } +# else // Only switching the BASE layers between alternate and default + + if (_NORMAL_ == alternate) { + alternate = _FULL_;// alternate base layers + default_layer_set (_ALT_BASE_MASK); + }else{ + alternate = _NORMAL_;// default base layers + default_layer_set (_DEF_BASE_MASK); + } +# endif + + indicate_base (); // activate led change + } + break; + +# if defined(BASE_NUMPAD__ALT_BASE) + + case OTHER_BASE_GO: // Switching through the default/alternate BASE modes, and Descramble for that Dvorak compile + if (record->event.pressed) { + ; + }else{ // key up + + // Cycles through the modes +# ifdef DVORAK_DESCRAMBLE_HALF // version Dvorak+Dvorak-descramble has 3 modes + if (_NORMAL_ == alternate) { + alternate = _FULL_;// alternate layers + default_layer_set (_ALT_BASE_MASK); + } else if (_HALF_ == alternate) { + alternate = _NORMAL_;// normal layers + default_layer_set (_DEF_BASE_MASK); + }else{ // _FULL_ == alternate + alternate = _HALF_;// alternate layers, without 'descramble' recomputing Unicode + //default_layer_set (_ALT_BASE_MASK); + // it cycles, and this comes always after it was set _FULL_ + } +# else // Only switching the BASE layers between alternate and default + + if (_NORMAL_ == alternate) { + alternate = _FULL_;// alternate base layers + default_layer_set (_ALT_BASE_MASK); + }else{ + alternate = _NORMAL_;// default base layers + default_layer_set (_DEF_BASE_MASK); + } +# endif + // make the switch to the other Base layer + if (alternate) { // + layer_move (_ALT_BASE); + }else{ + layer_move (_DEF_BASE); + } + } + break; +# endif + + // Switching to layers: + + case CTO_BASE: + // User pressed upper/left button, while not on BASE layer: ‛escape’ from a layer to BASE layer. + // On BASE itself, that key is . + if (record->event.pressed) { // key down + ; + } + else { // key up + if (alternate) { // go to the alternate version (bit of a hack maybe, but all alternate + // ... modes are non-zero) + layer_move (_ALT_BASE); + }else{ + layer_move (_DEF_BASE); + } + } + break; + + case CTO_NUMS: // activates number-symbols layer + if (record->event.pressed) { // key down + ; + } + else { // key up, so that upon key down the target layer isn't already activated, triggering that key on up + if (alternate) { // go to the alternate version + layer_move (_ALT_NSY); + }else{ + layer_move (_DEF_NSY); + } + } + break; + + case CTO_ACCE: // Unicode layer + if (record->event.pressed) { // key down + ; + } + else { // key up + +# ifndef REMOVE_ACC // This cuts out the whole _ACC layer. + layer_move (_ACC); // activates normal accented layer +# else +# ifdef _ACC_KEY_ALT_LAYER + layer_move (_ACC_KEY_ALT_LAYER); // Alternative layer user configuration +# endif +# endif + + } + break; + + case CTO_DRAW: // Unicode layer + if (record->event.pressed) { // key down + ; + } + else { // key up + +# ifndef REMOVE_DRA // This cuts out the whole _DRA layer. + layer_move (_DRA); // activates normal accented layer +# else +# ifdef _DRA_KEY_ALT_LAYER + layer_move (_DRA_KEY_ALT_LAYER); // Alternative layer user configuration +# endif +# endif + } + break; + + // The below are a simulated LT(layer,kc), layer-tap. + // Double-tap-hold repeater functionality: not done. + // They switch what layer to use depending on 'alternate' variable + // Basically it starts the right layer on key down, goes back to base layer on key up, + // and throws in a keypress as well if tapped. + // It also integrates with DUO_HOLD, to reach the _BON layer. + +# ifndef CHOLTAP_ACCE_NOP // When this key has been eviscerated, this macro becomes useless + case CHOLTAP_ACCE: // Works with DUO_HOLD macro to activate one of several layers. + if (record->event.pressed) { // key down + key_timer = timer_read (); + isolate_trigger = TRUE; // keep track of whether another key gets pressed. + + duo_press_acc_bon ++; // This signals to the two DUO_HOLD keys, whether a move to _BON is desired. + + if (duo_press_nsy_dra) { // One or more of the DUO_HOLD layer keys was already pressed; move to _BON + +# ifndef REMOVE_BON // Removes this layer entirely, if set. + layer_move (_BON); // Bonus Unicode layer +# else +# ifdef _BON_KEY_ALT_LAYER + layer_move (_BON_KEY_ALT_LAYER); // Alternative layer user configuration +# endif +# endif + + }else{ // pressed in isolation + +# ifndef REMOVE_ACC // This cuts out the whole _ACC layer. + layer_move (_ACC); // Accented layer +# else +# ifdef _ACC_KEY_ALT_LAYER + layer_move (_ACC_KEY_ALT_LAYER); // Alternative layer user configuration +# endif +# endif + + } + }else{ // key up + + duo_press_acc_bon --; + + if (1 == duo_press_nsy_dra) { // One DUO_HOLD layer keys is still pressed; move to numbers/symbols + + if (_FULL_ == alternate) { + layer_move (_ALT_NSY); + }else{ + layer_move (_DEF_NSY); + } + }else if (2 == duo_press_nsy_dra) { // Two of the DUO_HOLD layer keys are still pressed: move to _DRA + +# ifndef REMOVE_DRA // This cuts out the whole _DRA layer. + layer_move (_DRA); // activates normal accented layer +# else +# ifdef _DRA_KEY_ALT_LAYER + layer_move (_DRA_KEY_ALT_LAYER); // Alternative layer user configuration +# endif +# endif + + }else{ + if (alternate) { // No _DEF_NSY layer keys remain pressed; Go back to base layer + layer_move (_ALT_BASE); + }else{ + layer_move (_DEF_BASE); + } + } + + // Pressed in isolation + if (isolate_trigger) + { + if (timer_elapsed (key_timer) <= TAPPING_TERM_HOLTAP) { // tapped + SEND_STRING (SS_TAP (X_DEL)); + } + } + } + break; +# endif // CHOLTAP_ACCE_NOP + + case CHOLTAP_LAYR: //to _RAR on hold, otherwise a keycode + if (record->event.pressed) { // key down + key_timer = timer_read (); + isolate_trigger = TRUE; // keep track of whether another key gets pressed. + +# ifdef BASE_RIGHT_ALT + SEND_STRING (SS_DOWN (X_RALT)); +# else + layer_move (_RAR); // activates descrambled drawings layer +# endif + + }else{ // key up + // Go back to base layer + if (speed_measure) speed_led (speed); // The _RAR layer overwrites the middle led, + //.. for use with alternate _HALF_ led colors (middle); thus needs to be set back to speed + // led color upon leaving. + +# ifdef BASE_RIGHT_ALT + SEND_STRING (SS_UP (X_RALT)); +# else + if (alternate) { + layer_move (_ALT_BASE); + }else{ + layer_move (_DEF_BASE); + } +# endif + + // Pressed in isolation + if (isolate_trigger) + { + if (timer_elapsed (key_timer) <= TAPPING_TERM_HOLTAP) { // tapped + SEND_STRING (SS_TAP (X_RIGHT)); + } + } + } + break; + +# ifndef DUO_HOLD_BASIC + // This is the normal 'big' version, dealing with switching between _DEF_NSY/_ALT_NSY, _ACC, _DRA and _BON, in + // .. conjunction with the CHOLTAP_ACCE macro. + case DUO_HOLD: // The macro around the split space-bar. Both keys come to this macro. + if (record->event.pressed) { // key down + + duo_press_nsy_dra ++; // simple way to keep track of how many are pressed + + if (duo_press_acc_bon){ // Preceded by holding the _ACC/_BON layer switch key: move to _BON + +# ifndef REMOVE_BON // Removes this layer entirely, if set. + layer_move (_BON); // Bonus Unicode layer +# else +# ifdef _BON_KEY_ALT_LAYER + layer_move (_BON_KEY_ALT_LAYER); // Alternative layer user configuration +# endif +# endif + + }else if (1 == duo_press_nsy_dra) { // This is the first press of either of the DUO_HOLD keys on BASE + + if (_NORMAL_ == alternate) { + layer_move (_DEF_NSY); + }else{ + layer_move (_ALT_NSY); + } + } + else if (2 == duo_press_nsy_dra) { // both are pressed + +# ifndef REMOVE_DRA // This cuts out the whole _DRA layer. + layer_move (_DRA); // activates normal accented layer +# else +# ifdef _DRA_KEY_ALT_LAYER + layer_move (_DRA_KEY_ALT_LAYER); // Alternative layer user configuration +# endif +# endif + } + + }else{ // key up + + duo_press_nsy_dra --; + + if (1 == duo_press_nsy_dra) { + if (duo_press_acc_bon){ // Still holding the _ACC/_BON layer switch key, and one DUO_HOLD keys + +# ifndef REMOVE_BON // Removes this layer entirely, if set. + layer_move (_BON); // Bonus Unicode layer +# else +# ifdef _BON_KEY_ALT_LAYER + layer_move (_BON_KEY_ALT_LAYER); // Alternative layer user configuration +# endif +# endif + + }else{ + if (_NORMAL_ == alternate) { + layer_move (_DEF_NSY); + }else{ + layer_move (_ALT_NSY); + } + } + } + else { // Has to be zero. + if (duo_press_acc_bon){ // Still holding the _ACC/_BON layer switch key, but zero DUO_HOLD layer keys + +# ifndef REMOVE_ACC // This cuts out the whole _ACC layer. + layer_move (_ACC); // Accented layer +# else +# ifdef _ACC_KEY_ALT_LAYER + layer_move (_ACC_KEY_ALT_LAYER); // Alternative layer user configuration +# endif +# endif + + }else{ + if (alternate) { // Back to letters + layer_move (_ALT_BASE); + }else{ + layer_move (_DEF_BASE); + } + } + } + } + break; +# else + // This is the eviscerated version, compiled when all Unicode layers _ACC, _DRA, _BON are cut, and layer key + // .. combinations have not been assigned other uses. + case DUO_HOLD: // The macro for the keys around the split space-bar. Both keys come to this macro. + if (record->event.pressed) { // key down + + duo_press_nsy_dra ++; // simple way to keep track of how many are pressed + + if (0 != duo_press_nsy_dra) { // One or more of the DUO_HOLD keys is pressed + if (_NORMAL_ == alternate) { + layer_move (_DEF_NSY); + }else{ + layer_move (_ALT_NSY); + } + } + }else{ // key up + + duo_press_nsy_dra --; + + if (0 == duo_press_nsy_dra) { // None of the DUO_HOLD keys remains pressed + if (alternate) { // Back to letters + layer_move (_ALT_BASE); + }else{ + layer_move (_DEF_BASE); + } + } + } + break; +# endif // DUO_HOLD_BASIC + + // When held the key is shift. When tapped it is computed if the tap is short enough, + // and if no other key was pressed, in which case: right-shift-up is a toggle to the _FUN layer. + // The timing is meant to be able to undo an erroneous shift press just by holding longer, + // and the test if another key was pressed is to prevent an erroneous detection when typing + // very fast. + // The reason for this on shift is to isolate GUI, where _FUN was previously more easily + // located. No alternative tapping function with GUI because some systems do not treat GUI + // purely as a modifier it seems. Since it is a toggle anyway, _FUN can fit away from the thumb-hold row. + case CHOLTAP_RSHFT: // When tapped it toggles the _FUN layer, when held it is Shift + + if (record->event.pressed) { // key down + + SEND_STRING (SS_DOWN (X_RSFT)); + shift_ison = 1; // shift depressed + + key_timer = timer_read (); + isolate_trigger = TRUE; // keep track of whether another key gets pressed until key-up + + }else{ // key up + + SEND_STRING (SS_UP (X_RSFT)); + shift_ison = 0; // shift released + + if (isolate_trigger) { // no other key was hit since key down + + + // Held medium long: _PAD, long: _MOV. + // The reason to have a switch to _MOV on the left hand, is to be able to reach arrows on a toggle, + // all by the left hand, when the right hand is on the mouse. + if ((timer_elapsed (key_timer) <= 200)) { // tapped medium-long (milliseconds) + +# ifndef SWITCH_RSHIFT_FUN_RAR // user config to reverse what this key its timing toggles to + + layer_move (_FUN); // activates function layer as a toggle + + } else { // held for longer + + layer_move (_RAR); + +# else + + layer_move (_RAR); // activates function layer as a toggle + + } else { // held for longer + + layer_move (_FUN); + +# endif + + + } + } + } + break; + + // The left-shift version of the above keycode. User can configure something (_PAD is default) + case CHOLTAP_LSHFT: // When tapped it toggles the _MOV layer, when held it is Shift + // _RAR was the first idea, but some of its keys are too dangerous regarding accidents. + if (record->event.pressed) { // key down + + SEND_STRING (SS_DOWN (X_LSFT)); + shift_ison = 1; // shift depressed + +# ifndef REMOVE_PAD // The _PAD layer exists, we will use a timer … + + key_timer = timer_read (); + +# endif + + + // This variable is re-used, for speed and because using both shifts is useless, + // .. thus very rare, and also not a usage problem if it occured. + isolate_trigger = TRUE; // keep track of whether another key gets pressed. + + }else{ // key up + + SEND_STRING (SS_UP (X_LSFT)); + shift_ison = 0; // shift released + + if (isolate_trigger) { // no other key was hit since key down + +# ifndef REMOVE_PAD // The _PAD layer exists, differentiate meaning by timer. + + // Held medium long: _PAD, long: _MOV. + // The reason to have a switch to _MOV on the left hand, is to be able to reach arrows on a toggle, + // all by the left hand, when the right hand is on the mouse. + if ((timer_elapsed (key_timer) <= 200)) { // tapped medium-long (milliseconds) + +# ifndef SWITCH_LSHIFT_PAD_MOV // user config to reverse what this key its timing toggles to + + layer_move (_PAD); + + } else { // held for longer + + layer_move (_MOV); + +# else + + layer_move (_MOV); + + } else { // held for longer + + layer_move (_PAD); + +# endif + + } + +# else // _PAD layer was eviscerated + + layer_move (_MOV); + +# endif + + } + } + break; + + case _FUN_STAY: // toggles if the f-keys return _FUN layer to BASE after one press + if (record->event.pressed) { // key down + + if (_fun_stay == FALSE) { + _fun_stay = TRUE; + }else{ + _fun_stay = FALSE; + } + indicate_fun_stay (); // leds + } + break; + +# ifdef MOREKEY2_ARROW_CLUSTER + + case _MOV_UP: // To be sure it activates on up key, and not already has triggered the _MOV layer during up-key. + if (record->event.pressed) { // key down + ; + }else{ // key up + layer_move (_MOV); + } + break; +# endif + + // These keys are so disruptive on an erroneous key press, that they are behind a shift lock. + // When used unshifted, they print a memory aid string: their name. + case C_KC_PWR: + if (record->event.pressed) { // key down + if (shift_ison) { + SEND_STRING (SS_TAP (X_PWR)); + }else{ + SEND_STRING (""); // Memory aid + } + } + break; + + case C_KC_WAKE: + if (record->event.pressed) { // key down + if (shift_ison) { + SEND_STRING (SS_TAP (X_WAKE)); + }else{ + SEND_STRING (""); // Memory aid + } + } + break; + + case C_KC_SLEP: + if (record->event.pressed) { // key down + if (shift_ison) { + SEND_STRING (SS_TAP (X_SLEP)); + }else{ + SEND_STRING (""); // Memory aid + } + } + break; + + case C_KC_PAUS: + if (record->event.pressed) { // key down + if (shift_ison) { + SEND_STRING (SS_TAP (X_PAUS)); + }else{ + SEND_STRING (""); // Memory aid + } + } + break; + + case LEDS_ON: // Toggles left/right leds on or off + if (record->event.pressed) { // key down + if (leds_on == FALSE) { + leds_on = TRUE; + }else{ + leds_on = FALSE; + } + } + break; + +# ifdef LEDS_OFF_BASE_DEF // This messes with led effect on/off, so we need to track the state of this setting now. + case RGBTOG_: // Toggles middle led on or off + if (record->event.pressed) { // key down + if (led_middle_on == FALSE) { + led_middle_on = TRUE; + rgblight_enable_noeeprom (); + }else{ + led_middle_on = FALSE; + rgblight_disable_noeeprom (); + } + } + break; +# endif + + // Some keycodes treated specially for the two counting systems (speed, text size) + // Deletions: + case KC_BSPC: // non-counting speed + case KC_DEL: // non-counting speed + if (record->event.pressed) { // key down + if (sizecount_measure) sizecount_chars--; // minus count for text size (removed a character) + } + break; + + // White space for counting words + case LT__MOV__KC_ENT: // We want to count the for word-counts, sadly this looses the key repetition of LT(…) + if (record->event.pressed) { // key down + + key_timer = timer_read (); + layer_move (_MOV); + + }else{ // key up + if (alternate) { // Back to letters + layer_move (_ALT_BASE); + }else{ + layer_move (_DEF_BASE); + } + if (timer_elapsed (key_timer) <= TAPPING_TERM_HOLTAP) { // tapped + send_string ("\n"); + if (sizecount_measure) { + sizecount_chars++; + + if (sizecount_word) sizecount_blanks++; // count a word + sizecount_word = FALSE; // don't count immediately next blank as a word + } + } + } + break; + + // Word counting + case KC_SPC: + if (record->event.pressed) { // key down + if (sizecount_measure) { + sizecount_chars++; + + if (sizecount_word) sizecount_blanks++; // count a word + sizecount_word = FALSE; // don't count immediately next blank as a word + } + } + break; + + // These are excluded from counting for text size/speed, they prevent the “default“ in the case statement to execute. + + case KC_LEFT: + case KC_UP: + case KC_DOWN: + case KC_RIGHT: + case KC_PGUP: + case KC_PGDN: + case KC_HOME: + case KC_END: + case LALT_T ( KC_LEFT ): + if (speed_measure) speed_countdown++; // Navigation could be integral to someone typing and correcting mistakes, + // but those keys don't add any text. + // Mouse movement is discounted in both speed and text size + case KC_WH_L: + case KC_WH_D: + case KC_WH_U: + case KC_WH_R: + case KC_MS_L: + case KC_MS_D: + case KC_MS_U: + case KC_MS_R: + case KC_BTN1: + case KC_BTN5: + case KC_BTN4: + case KC_BTN3: + case KC_BTN2: + break; + + + default: // If something else, it is a speed- and text measurement counting key + if (record->event.pressed) { // key down + if (speed_measure) speed_countdown--; + if (sizecount_measure) sizecount_chars++; + } + } + + // If speed measuring is on, count keypresses + // The idea is to more/less follow common standard with typing speed counting: shift is not counted, + // layer-switching or its equivalent is neither. Arrows are not counted. + if (speed_measure) { + if (record->event.pressed) { // key down + + if (0 >= speed_countdown) { + + // key presses per second, but times ten for added precision of one digit + // This calculation quickly looses precision if not calculated with high enough numbers, but low enough to fit. + speed = (int) ( (SPEED_COUNTDOWN * 1000 ) / ((timer_read32 () - speed_counttime)/10) ); // counts time in ms + speed_led (speed); // updates led + + // record for average + if (0 < (speed/10)) { // ignore 0 k/s batches, we assume the typer took a break + speed_batches++; + speed_add += speed; + } + + // reset for next batch + speed_countdown = SPEED_COUNTDOWN; // reset + speed_counttime = timer_read32 (); + } + } + } + + // For word-counting, ignore double blanks + if (sizecount_measure) { + if (record->event.pressed) { + bool within = TRUE; // When text size is maximized, this indicates we are not yet at that maximum. + +# ifdef RGBLIGHT_ENABLE + unsigned short size_fraction = 0; // Used to compute led color as a fraction of a set maximum which is already typed. +# endif + + // ignoring blanks wordcount + if ((keycode != KC_SPC) + && + (keycode != KC_TAB) // This is ok, but a tab on BASE layer combo with Control, is not caught by this XXX (problem ignored, I never write Tab in a text worth counting) + && + (keycode != LT__MOV__KC_ENT) + && + (keycode != LT__MOV__KC_ENT)) { + + sizecount_word = TRUE; // current key is not a blank, so we set this trigger for next key press + } + + // computing maximum count effects: leds + if (0 != sizecount_max) { + + if (SIZECOUNT_WORD == sizecount_max_type) { + if (sizecount_blanks > sizecount_max) within = FALSE; + }else{ // count chars + if (sizecount_chars > sizecount_max) within = FALSE; + } + + // led colors + if (within) { // green to red middle led + +# ifdef RGBLIGHT_ENABLE + if (SIZECOUNT_WORD == sizecount_max_type) { + size_fraction = (90 * sizecount_blanks) / sizecount_max; + }else{ + size_fraction = (90 * sizecount_chars) / sizecount_max; + } + + rgblight_sethsv_noeeprom (90 - size_fraction , 255, 255); // green to red, full saturation, full lit +# endif + + }else{ // when at or over the limit: blink led red/white + if ((KC_BSPC != keycode) + && (KC_DEL != keycode) // User already deleting, doubling is confusing + && (CHOLTAP_LAYR != keycode)) { // This brings up the _RAR layer, to access the Count settings. + + SEND_STRING (SS_TAP(X_BSPC)); // refuses to type further, the user is stopped from typing to make it obvious + + } + +# ifdef RGBLIGHT_ENABLE + if (sizecount_chars & 0x1) { // flip by every keypress + rgblight_sethsv_noeeprom (HSV_RED); + }else{ + rgblight_sethsv_noeeprom (HSV_WHITE); + } +# endif + + } + +# ifdef RGBLIGHT_ENABLE + rgblight_set (); // only center led is altered, no need to go through isolate_rgblight_set() +# endif + + } + } + } + + // Simple macros, printing a character. + switch (keycode) { + + /* _ACC layer definitions. */ + + // ------------------------- row 4 + +# ifndef REMOVE_ACC // This cuts out the whole _ACC layer. + case XP_ACC_AA: // because a + if (record->event.pressed) { // key down + unicode_hex2output (CAL_ACU, CAU_ACU);// á à + } + break; + + case XP_ACC_AB: // because o (Dvorak) + if (record->event.pressed) { // key down + unicode_hex2output (COL_ACU, COU_ACU);// ó Ó + } + break; + + case XP_ACC_AC: // because e (Dvorak) + if (record->event.pressed) { // key down + unicode_hex2output (CEL_ACU, CEU_ACU);// é É + } + break; + + case XP_ACC_AD: // because u (Dvorak) + if (record->event.pressed) { // key down + unicode_hex2output (CUL_ACU, CUU_ACU);// ú Ú + } + break; + + case XP_ACC_AE: // because i (Dvorak) + if (record->event.pressed) { // key down + unicode_hex2output (CIL_ACU, CIU_ACU);// í à + } + break; + + case XP_ACC_AF: // Because near Y + if (record->event.pressed) { // key down + unicode_hex2output (CYL_ACU, CYU_ACU);// ý à + } + break; + + case XP_ACC_AG: // because near Y + if (record->event.pressed) { // key down + unicode_hex2output (CIJL_BI, CIJU_BI);// ij IJ + } + break; + + case XP_ACC_AH: // because c (Dvorak) + if (record->event.pressed) { // key down + unicode_hex2output (CCL_CDL, CCU_CDL);// ç Ç + } + break; + + case XP_ACC_AI: // because ring-finger left is o (Dvorak) + if (record->event.pressed) { // key down + unicode_hex2output (COL_STK, COU_STK);// ø Ø + } + break; + + case XP_ACC_AJ: // because pinky finger left is a + if (record->event.pressed) { // key down + unicode_hex2output (CAL_RNG, CAU_RNG);// Ã¥ Ã… + } + break; + + // ------------------------- row 3 + case XP_ACC_BA: // because a + if (record->event.pressed) { // key down + unicode_hex2output (CAL_DIA, CAU_DIA);// ä Ä + } + break; + + case XP_ACC_BB: // because o (Dvorak) + if (record->event.pressed) { // key down + unicode_hex2output (COL_DIA, COU_DIA);// ö Ö + } + break; + + case XP_ACC_BC: // because e (Dvorak) + if (record->event.pressed) { // key down + unicode_hex2output (CEL_DIA, CEU_DIA);// ë Ë + } + break; + + case XP_ACC_BD: // because u (Dvorak) + if (record->event.pressed) { // key down + unicode_hex2output (CUL_DIA, CUU_DIA);// ü Ü + } + break; + + case XP_ACC_BE: // because i + if (record->event.pressed) { // key down + unicode_hex2output (CIL_DIA, CIU_DIA);// ï à + } + break; + + case XP_ACC_BF: // because near y + if (record->event.pressed) { // key down + unicode_hex2output (CYL_DIA, CYU_DIA);// ÿ Ÿ + } + break; + + case XP_ACC_BG: // because vague logic about other hand having ae near on similar fingers + if (record->event.pressed) { // key down + unicode_hex2output (COEL_BI, COEU_BI);// Å“ Å’ + } + break; + + case XP_ACC_BH: // because near Å“, toward the side of a (pinky) + if (record->event.pressed) { // key down + unicode_hex2output (CAEL_BI, CAEU_BI);// æ Æ + } + break; + + case XP_ACC_BI: // because n + if (record->event.pressed) { // key down + unicode_hex2output (CNL_TLD, CNU_TLD);// ñ Ñ + } + break; + + case XP_ACC_BJ: // because s + if (record->event.pressed) { // key down + unicode_hex2output_single (CSL_SHP);// ß ß + } + break; + + case XP_ACC_BK: // because roughly the location on French keyboard + if (record->event.pressed) { // key down + unicode_hex2output_single (C_MU_L);// μ + } + break; + + // ------------------------- row 2 + case XP_ACC_CA: // because a + if (record->event.pressed) { // key down + unicode_hex2output (CAL_GRA, CAU_GRA);//à À + } + break; + + case XP_ACC_CB: // because o (Dvorak) + if (record->event.pressed) { // key down + unicode_hex2output (COL_GRA, COU_GRA);// ò Ã’ + } + break; + + case XP_ACC_CC: // because e (Dvorak) + if (record->event.pressed) { // key down + unicode_hex2output (CEL_GRA, CEU_GRA);// è È + } + break; + + case XP_ACC_CD: // because u (Dvorak) + if (record->event.pressed) { // key down + unicode_hex2output (CUL_GRA, CUU_GRA);// ù Ù + } + break; + + case XP_ACC_CE: // because i (Dvorak) + if (record->event.pressed) { // key down + unicode_hex2output (CIL_GRA, CIU_GRA);// ì ÃŒ + } + break; + + case XP_ACC_CF: // because other hand same finger i + if (record->event.pressed) { // key down + unicode_hex2output (CIL_CAR, CIU_CAR);// î ÃŽ + } + break; + + case XP_ACC_CG: // because other hand same finger u + if (record->event.pressed) { // key down + unicode_hex2output (CUL_CAR, CUU_CAR);// û Û + } + break; + + case XP_ACC_CH: // because other hand same finger e + if (record->event.pressed) { // key down + unicode_hex2output (CEL_CAR, CEU_CAR);// ê Ê + } + break; + + case XP_ACC_CI: // because other hand same finger o + if (record->event.pressed) { // key down + unicode_hex2output (COL_CAR, COU_CAR);// ô Ô + } + break; + + case XP_ACC_CJ: // because other hand same finger a + if (record->event.pressed) { // key down + unicode_hex2output (CAL_CAR, CAU_CAR);// â  + } + break; + +# endif // REMOVE_ACC // This cuts out the whole _ACC layer. + + + /* _DRA layer definitions. */ + + +# ifndef REMOVE_DRA // This cuts out the whole _DRA layer + // ------------------------- row 4 + case XP_DRA_AA: // because '", the opening „“ at the ‛open’ of the keyboard (left/up) + if (record->event.pressed) { // key down + +# ifdef FULL_DRA_4THROW + unicode_hex2output (CS_DQUHR, CS_DQUL);// “ „ +# else + unicode_hex2output_single (CS_DQUHR);// “ +# endif + + } + break; + + case XP_DRA_AB: // because to the right of opening “, ≤ on < + if (record->event.pressed) { // key down + +# ifdef FULL_DRA_4THROW + unicode_hex2output (CS_DQUH, CS_ELTHAN);// †≤ +# else + unicode_hex2output_single (CS_DQUH);// †+# endif + + } + break; + + case XP_DRA_AC: // because this is where the £ is on an English keyboard, on 'any' money symbols ¤; ≥ on > + if (record->event.pressed) { // key down + +# ifdef FULL_DRA_4THROW + unicode_hex2output (CS_POUND, CS_EGTHAN);// £ ≥ +# else + unicode_hex2output_single (CS_POUND);// £ +# endif + + } + break; + + case XP_DRA_AD: // because ∅ looks like ¢, and ¢ (cent) is on $ (money) ? + if (record->event.pressed) { // key down + +# ifdef FULL_DRA_4THROW + unicode_hex2output (CS_NONE, CS_CENT);// ∅ ¢ +# endif + + } + break; + + case XP_DRA_AE: // because percentages %‰‱ and money Æ’ are numerical ? + if (record->event.pressed) { // key down + +# ifdef FULL_DRA_4THROW + unicode_hex2output (CS_PLMI, CS_LGULDEN);// ± Æ’ +# else + unicode_hex2output_single (CS_PLMI);// ± +# endif + + } + break; + + case XP_DRA_AF: // Because left of 🙂, on top of ★ + if (record->event.pressed) { // key down + +# ifdef FULL_DRA_4THROW + unicode_hex2output (CS_FLEUR, CS_HEART);// ⦠♥ +# else + unicode_hex2output_single (CS_HEART);// ♥ +# endif + + } + break; + + case XP_DRA_AG: // because 😊 ⨠+ if (record->event.pressed) { // key down + +# ifdef FULL_DRA_4THROW + unicode_hex2output (CS_SMIL, CS_SAD_);// 🙂 🙠+# endif + + } + break; + + case XP_DRA_AH: // because «no reason», next to 😊 (emoticons) + if (record->event.pressed) { // key down + +# ifdef FULL_DRA_4THROW + unicode_hex2output (CS_THUP, CS_THDN);// 👠👎 +# endif + + } + break; + + case XP_DRA_AI: // because ( + if (record->event.pressed) { // key down + +# ifdef FULL_DRA_4THROW + unicode_hex2output (CS_OPSUP, CS_OPSUB);// â½ â‚ +# endif + + } + break; + + case XP_DRA_AJ: // because ) + if (record->event.pressed) { // key down + +# ifdef FULL_DRA_4THROW + unicode_hex2output (CS_CPSUP, CS_CPSUB);// ⾠₎ +# endif + + } + break; + + // ------------------------- row 3 + case XP_DRA_BA: // because 1 + if (record->event.pressed) { // key down + +# ifdef SUB_SCRIPT_NUMS + unicode_hex2output (CN_1SUP, CN_1SUB);// ¹ â‚ +# else + unicode_hex2output_single (CN_1SUP);// ¹ +# endif + + } + break; + + case XP_DRA_BB: // because 2 + if (record->event.pressed) { // key down + +# ifdef SUB_SCRIPT_NUMS + unicode_hex2output (CN_2SUP, CN_2SUB);// ² â‚‚ +# else + unicode_hex2output_single (CN_2SUP);// ² +# endif + + } + break; + + case XP_DRA_BC: // because 3 + if (record->event.pressed) { // key down + +# ifdef SUB_SCRIPT_NUMS + unicode_hex2output (CN_3SUP, CN_3SUB);// ³ ₃ +# else + unicode_hex2output_single (CN_3SUP);// ³ +# endif + + } + break; + + case XP_DRA_BD: // because 4 + if (record->event.pressed) { // key down + +# ifdef SUB_SCRIPT_NUMS + unicode_hex2output (CN_4SUP, CN_4SUB);// â´ â‚„ +# else + unicode_hex2output_single (CN_4SUP);// â´ +# endif + + } + break; + + case XP_DRA_BE: // because 5 + if (record->event.pressed) { // key down + +# ifdef SUB_SCRIPT_NUMS + unicode_hex2output (CN_5SUP, CN_5SUB);// âµ â‚… +# else + unicode_hex2output_single (CN_5SUP);// âµ +# endif + + } + break; + + case XP_DRA_BF: // because 6 + if (record->event.pressed) { // key down + +# ifdef SUB_SCRIPT_NUMS + unicode_hex2output (CN_6SUP, CN_6SUB);// ⶠ₆ +# else + unicode_hex2output_single (CN_6SUP);// â¶ +# endif + + } + break; + + case XP_DRA_BG: // because 7 + if (record->event.pressed) { // key down + +# ifdef SUB_SCRIPT_NUMS + unicode_hex2output (CN_7SUP, CN_7SUB);// ⷠ₇ +# else + unicode_hex2output_single (CN_7SUP);// â· +# endif + + } + break; + + case XP_DRA_BH: // because 8 + if (record->event.pressed) { // key down + +# ifdef SUB_SCRIPT_NUMS + unicode_hex2output (CN_8SUP, CN_8SUB);// ⸠₈ +# else + unicode_hex2output_single (CN_8SUP);// ⸠+# endif + + } + break; + + case XP_DRA_BI: // because 9 + if (record->event.pressed) { // key down + +# ifdef SUB_SCRIPT_NUMS + unicode_hex2output (CN_9SUP, CN_9SUB);// ⹠₉ +# else + unicode_hex2output_single (CN_9SUP);// â¹ +# endif + + } + break; + + case XP_DRA_BJ: // because 0 + if (record->event.pressed) { // key down + +# ifdef SUB_SCRIPT_NUMS + unicode_hex2output (CN_0SUP, CN_0SUB);// â° â‚€ +# else + unicode_hex2output_single (CN_0SUP);// â° +# endif + + } + break; + + // ------------------------- row 2 + case XP_DRA_CA: // because [ + if (record->event.pressed) { // key down + +# ifdef FULL_DRA_2NDROW + unicode_hex2output (CS_OCBRA, CB_HHORI);// 「 â” +# else + unicode_hex2output_single (CB_HHORI);// â” +# endif + + } + break; + + case XP_DRA_CB: // because ] + if (record->event.pressed) { // key down + +# ifdef FULL_DRA_2NDROW + unicode_hex2output (CS_CCBRA, CB_LHORI);// 〠─ +# else + unicode_hex2output_single (CB_LHORI);// ─ +# endif + + } + break; + + case XP_DRA_CC: // because «no reason» + if (record->event.pressed) { // key down + +# ifdef FULL_DRA_2NDROW + unicode_hex2output (CS_DEGREE, CS_CIRCLE);// ° 〇 +# else + unicode_hex2output_single (CS_DEGREE);// ° +# endif + + } + break; + + case XP_DRA_CD: // because «no reason» + if (record->event.pressed) { // key down + +# ifdef FULL_DRA_2NDROW + unicode_hex2output (CS_BULLET, CS_PARA);// • § +# else + unicode_hex2output_single (CS_BULLET);// • +# endif + + } + break; + + case XP_DRA_CE: // because «no reason» + if (record->event.pressed) { // key down + +# ifdef FULL_DRA_2NDROW + unicode_hex2output (CS_ELLIPS, CS_MIDDOT);// … · +# else + unicode_hex2output_single (CS_ELLIPS);// … +# endif + + } + break; + + case XP_DRA_CF: // because «no reason» (+ resembles ‛☒’ ?), ✗ + if (record->event.pressed) { // key down + unicode_hex2output (CS_CHECK_B, CS_CHECK_N);// ☠☒ + } + break; +# endif + + // This one must be included for _RAR layer + case XP_DRA_CG: // because next to ✗ ☠☒ + if (record->event.pressed) { // key down + +# ifdef FULL_DRA_2NDROW + unicode_hex2output (CS_CHECK_Y, CS_CHECK_H);// ☑ 🗹 +# else + unicode_hex2output_single (CS_CHECK_Y);// ☑ +# endif + + } + break; + +# ifndef REMOVE_DRA // This cuts out the whole _DRA layer + case XP_DRA_CH: // because ? + if (record->event.pressed) { // key down + unicode_hex2output (CQU_INV, CEX_INV);// ¿ ¡ + } + break; + + case XP_DRA_CI: // because {, ┄ «no reason» (opposite side from â”) + if (record->event.pressed) { // key down + +# ifdef FULL_DRA_2NDROW + unicode_hex2output (CS_ODABRA, CB_LHORID);// 《 ┄ +# else + unicode_hex2output_single (CB_LHORID);// ┄ +# endif + + } + break; + + case XP_DRA_CJ: // because }, â”… «no reason» (opposite side from ─) + if (record->event.pressed) { // key down + +# ifdef FULL_DRA_2NDROW + unicode_hex2output (CS_CDABRA, CB_HHORID);// 》 â”… +# else + unicode_hex2output_single (CB_HHORID);// â”… +# endif + } + break; +# endif // REMOVE_DRA + + + /* _BON layer definitions. Due to running out of X(…), XP(…) space.*/ + + // ------------------------- row 4 +# ifndef REMOVE_BON // Removes this layer entirely, if set. + case XP_BON_AA: // because of ' " + if (record->event.pressed) { // key down + +# ifdef FULL_BON_4THROW + unicode_hex2output (CS_HQUOSB, CS_USER_DEFINED);// ‛ 🛠 +# else + unicode_hex2output_single (CS_HQUOSB);// ‛ +# endif + + } + break; + + case XP_BON_AB: // because of <, because "WASD" on _MOV + // 0x2019, single quotation mark: ’ + // 0x2B06 arrow up: ⬆ + if (record->event.pressed) { // key down + unicode_hex2output (CS_HQUOSE, CS_ARR_UP);// ’ ⬆ + } + break; + + case XP_BON_AC: // because of > + // 0x00A4 any currency symbol: ¤ + // 0x1F12F Copyleft: 🄯 (means free to copy, see also © for not free to copy.) + if (record->event.pressed) { // key down + +# ifdef FULL_BON_4THROW + unicode_hex2output (CS_CURREN, CS_COPYL);// ¤ 🄯 +# else + unicode_hex2output_single (CS_CURREN);// ¤ +# endif + + } + break; + + case XP_BON_AD: // because $ and ¢ can be about money, and money is often added together + // because … no reason, left over space. + // 0x2211, summation: ∑ + // 0xA9, copyright: © + if (record->event.pressed) { // key down + +# ifdef FULL_BON_4THROW + unicode_hex2output (CS_CUMMU, CS_COPY);// ∑ © +# else + unicode_hex2output_single (CS_CUMMU);// ∑ +# endif + + } + break; + + case XP_BON_AE: // because % for percent + // 0x2030,// promille: ‰ + // 0x2031,// pro ten thousandth: ‱ + if (record->event.pressed) { // key down + +# ifdef FULL_BON_4THROW + unicode_hex2output (CS_PROM, CS_PROTT);// ‰ ‱ +# else + unicode_hex2output_single (CS_PROM);// ‰ +# endif + + } + break; + + case XP_BON_AF: // Because ♥ is a star, ⦠and stars can be used as bullet points + // 0x2605, star: ★ + // 0x066D, star small: Ù­ + if (record->event.pressed) { // key down + +# ifdef FULL_BON_4THROW + unicode_hex2output (CS_STARB, CS_STARL);// ★ Ù­ +# else + unicode_hex2output_single (CS_STARB);// ★ +# endif + + } + break; + + case XP_BON_AG: // because of 🙂 🙠+ // 0x1f60A,// ^^ 😊 + // 0x2368,// "Squiggly" face ⨠+ +# ifdef FULL_BON_4THROW + if (record->event.pressed) { // key down + unicode_hex2output (CS_SMILP, CS_SQUIG);// 😊 ⨠+ } +# endif + + break; + + case XP_BON_AH: // because * also for multiply, because asterisk * + // 0x00D7,// multiply: × + // 0x20F0 high asterisk: ⃰(this thing seems to behave a bit weird in vim(1) or terminal) + if (record->event.pressed) { // key down + +# ifdef FULL_BON_4THROW + unicode_hex2output (CS_MULT, CS_ASTL);// × ⃰ +# else + unicode_hex2output_single (CS_MULT);// × +# endif + + } + break; + + case XP_BON_AI: // because ø sort of seems to divide something, and √ also does that, and close to â»âº (exponential) + // 0x221A,// square root: √ + if (record->event.pressed) { // key down + +# ifdef FULL_BON_4THROW + unicode_hex2output_single (CS_SQRT);// √ +# endif + + } + break; + + case XP_BON_AJ: // because Ã¥ points in the circle where this exponential minus goes, and it is right/"up" on the board + // because â»âº belong together + // 0x207B,// exponential minus sign: â» + // 0x207A,// exponential plus: ⺠+ +# ifdef FULL_BON_4THROW + if (record->event.pressed) { // key down + unicode_hex2output (CS_EXPMIN, CS_EXPPLS);// ⻠⺠+ } +# endif + + break; + + // ------------------------- row 3 + case XP_BON_BA: // because 1, because "WASD" on _MOV (depending on setup) + // 0x2460, "1" : â‘  + // 0x2B05, arrow left: ⬅ + if (record->event.pressed) { // key down + unicode_hex2output (CN_1CIRC, CS_ARR_LE);// â‘  ⬅ + } + break; + + case XP_BON_BB: // because 2, because "WASD" on _MOV (depending) + // 0x2461, "2" : â‘¡ + // 0x2B07, arrow down: ⬇ + if (record->event.pressed) { // key down + unicode_hex2output (CN_2CIRC, CS_ARR_DN);// â‘¡ ⬇ + } + break; + + case XP_BON_BC: // because 3, because "WASD" on _MOV (depending) + // 0x2462, "3" : â‘¢ + // 0x27A1, arrow right: âž¡ + if (record->event.pressed) { // key down + unicode_hex2output (CN_3CIRC, CS_ARR_RI);// â‘¢ âž¡ + } + break; + + case XP_BON_BD: // because 4, because â” forms a box with the other box drawings to the right/down + // 0x2463, "4" : â‘£ + // 0x250F, box drawing heavy: â” + if (record->event.pressed) { // key down + +# ifdef BOX_DRAWINGS + unicode_hex2output (CN_4CIRC, CB_C_RIDN);// â‘£ â” +# else + unicode_hex2output_single (CN_4CIRC);// â‘£ +# endif + + } + break; + + case XP_BON_BE: // because 5, because ┓ forms a box + // 0x2513,box drawing heavy: ┓ + if (record->event.pressed) { // key down + +# ifdef BOX_DRAWINGS + unicode_hex2output (CN_5CIRC, CB_C_LEDN);// ⑤ ┓ +# else + unicode_hex2output_single (CN_5CIRC);// ⑤ +# endif + + } + break; + + case XP_BON_BF: // because 6, because ┃ continues box block + // 0x2465, "6" : â‘¥ + // 0x2503, box drawing heavy: ┃ + if (record->event.pressed) { // key down + +# ifdef BOX_DRAWINGS + unicode_hex2output (CN_6CIRC, CB_VE);// â‘¥ ┃ +# else + unicode_hex2output_single (CN_6CIRC);// â‘¥ +# endif + + } + break; + + case XP_BON_BG: // because 7, because ┇ continues box block + // 0x2466, "7" : ⑦ + // 0x2507, dotted line verticle (heavy): ┇ + if (record->event.pressed) { // key down + +# ifdef BOX_DRAWINGS + unicode_hex2output (CN_7CIRC, CB_VE_DOT);// ⑦ ┇ +# else + unicode_hex2output_single (CN_7CIRC);// ⑦ +# endif + + } + break; + + case XP_BON_BH: // because 8, â•‹ because 8 also has a crossing line in it + // 0x254B, crossing lines: â•‹ + // 0x2467, "8" : ⑨ + if (record->event.pressed) { // key down + +# ifdef BOX_DRAWINGS + unicode_hex2output (CN_8CIRC, CB_VE_BI);// â‘§ â•‹ +# else + unicode_hex2output_single (CN_8CIRC);// â‘§ +# endif + + } + break; + + case XP_BON_BI: // because 9 + // 0x2468, "9" : ⑨ + // 0x2513,box drawing heavy: ┓ + if (record->event.pressed) { // key down + + unicode_hex2output_single (CN_9CIRC);// ⑨ + + } + break; + + case XP_BON_BJ: // because 0, because a "0" can also be a symbol for infinity, round & round + // 0x24EA, "0" : ⓪ + // 0x221E,// infinity:∞ + if (record->event.pressed) { // key down + unicode_hex2output (CN_0CIRC, CS_INFIN);// ⓪ ∞ + } + break; + + case XP_BON_BK: // because -, because ~ + // 0x2014,// dash: — (might not render differently than a hyphen - in some applications. Dash is longer). + // 0x2248,// about equal to: ≈ + if (record->event.pressed) { // key down + unicode_hex2output (CS_DASH, CS_ABOUT);// — ≈ + } + break; + + // ------------------------- row 2 + case XP_BON_CA: // because 1 above, because 「[ + // 0x2039, opening single corner quotation: ‹ + if (record->event.pressed) { // key down + unicode_hex2output_single (CS_GUILSLE);// ‹ + } + break; + + case XP_BON_CB: // because 2 above, because ã€] + // 0x203A, closing sinle corner quotation: › + if (record->event.pressed) { // key down + unicode_hex2output_single (CS_GUILSRI);// › + } + break; + + case XP_BON_CC: // because 3 above, because / (division) + // 0x00F7,// division: ÷ + if (record->event.pressed) { // key down + unicode_hex2output_single (CS_DIVI);// ÷ + } + break; + + case XP_BON_CD: // because 4 above, â”— because forms box + // 0x261E, hand bullet point: ☞ + // 0x2517, box drawing heavy: â”— + if (record->event.pressed) { // key down +# ifdef BOX_DRAWINGS + unicode_hex2output (CS_FINGER, CB_C_RIUP);// ☞ â”— +# else + unicode_hex2output_single (CS_FINGER);// ☞ +# endif + + } + break; + + case XP_BON_CE: // because 5 above, because =, â”› because forms box + // 0x2260,// inequal: ≠ + // 0x251B, box drawing heavy: â”› + if (record->event.pressed) { // key down + +# ifdef BOX_DRAWINGS + unicode_hex2output (CS_UNEQL, CB_C_LEUP);// ≠ â”› +# else + unicode_hex2output_single (CS_UNEQL);// ≠ +# endif + + } + break; + + case XP_BON_CF: // because ☒ , ┣ box drawings block, some place + // 0x2717, cross mark: ✗ (complements ✓) + // 0x2523, box drawing: ┣ + if (record->event.pressed) { // key down + +# ifdef BOX_DRAWINGS + unicode_hex2output (CS_BOTCH, CB_VE_RI);// ✗ ┣ +# else + unicode_hex2output_single (CS_BOTCH);// ✗ +# endif + + } + break; + + case XP_BON_CG: // because 7 above, because ☑ 🗹 , ┫ complements with key to its left + // 0x2713, checkmark: ✓ + // 0x252B, box drawing: ┫ + + if (record->event.pressed) { // key down +# ifdef BOX_DRAWINGS + unicode_hex2output (CS_CHECK, CB_VE_LE);// ✓ ┫ +# else + unicode_hex2output_single (CS_CHECK);// ✓ +# endif + + } + break; + + case XP_BON_CH: // because 8 above, because ¡ (inverted exclamation mark) + // 0x26A0,// alert: âš  + if (record->event.pressed) { // key down + unicode_hex2output_single (CS_ALERT);// âš  + } + break; + + case XP_BON_CI: // because 9 above, because 《 + // 0xAB, French quotation opening: « + if (record->event.pressed) { // key down + unicode_hex2output_single (CS_GUILLE);// « + } + break; + + case XP_BON_CJ: // because 0 above, because 》 + // 0xBB, French quotation closing: » + if (record->event.pressed) { // key down + unicode_hex2output_single (CS_GUILRI);// » + } + break; + +# endif // REMOVE_BON + } + + return true; +}; diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/unicode_macros.h b/keyboards/thevankeyboards/minivan/keymaps/josjoha/unicode_macros.h new file mode 100644 index 0000000000..5969525ca9 --- /dev/null +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/unicode_macros.h @@ -0,0 +1,44 @@ +/* + * License (GPL): + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + + * Remainder: © 2019 by J.B. + * + */ + +#pragma once + +/* This file contains function declarations for functions used in + * unicode_macros.c + */ + +#define PRESCRAMBLED_U "f" // This is the letter 'u' for Unicode input, as effective on GNU/Debian/Linux 10 set to Dvorak +static uint16_t key_timer; // Used in _DDL to differentiate layer switching in half or full descramble mode. + // In 'full' mode it goes to _DDD and _DDA Unicode layers, in 'half' mode to _DRA and _ACC. + +short duo_press_nsy_dra = 0; // This remembers how many of the duo-press keys are being pressed: _NSY / _DRA layers +short duo_press_acc_bon = 0; // This remembers how many of the duo-press keys are being pressed: _ACC / _BON layers + +void deactivate_all_but (int layer); +void activate_this_layer (int layer); +void indicate_base (void); +void leds_show_off (void); +void speed_report (int speed); +void speed_led (int speed); +void indicate_fun_stay (void); +int write_number (long int input, short divide10); +void isolate_rgblight_set (void); + + diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/unicode_weurope.h b/keyboards/thevankeyboards/minivan/keymaps/josjoha/unicode_weurope.h new file mode 100644 index 0000000000..56a50b80c5 --- /dev/null +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/unicode_weurope.h @@ -0,0 +1,288 @@ +/* + * License (GPL): + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + + * Author: © 2019, 2020 by Jos Boersema + * + */ + +/* An amount of Unicode #defines + * - western european accented characters + * - various punctuation symbols, different number formats, math symbols, other symbols. + */ + + // a lower case variants +#define CAL_ACU 0xe1 // 'C' for Costum 'A' for a, 'L' for lower, "ACU" for acute: á +#define CAL_CAR 0xe2 // '' '' '' "CAR" for caret: â +#define CAL_DIA 0xe4 // '' '' '' "DIA" for diaereses: ä +#define CAL_GRA 0xe0 // '' '' '' "GRA" for grave: à + // A upper case variants +#define CAU_ACU 0xc1 // '' '' 'U' for upper, "ACU" for acute: à +#define CAU_CAR 0xc2 // '' '' '' "CAR" for caret:  +#define CAU_DIA 0xc4 // '' '' '' "DIA" for diaereses: Ä +#define CAU_GRA 0xc0 // '' '' '' "GRA" for grave: À + + // A with ring (Scandinavia) +#define CAL_RNG 0xe5 // '' 'A' for a, 'L' for lower, "RNG" for Ring: Ã¥ +#define CAU_RNG 0xc5 // '' '' 'U' for upper, '' : Ã… + + // AE (French) +#define CAEL_BI 0xe6 // '' "AE" for ae, 'L' for lower '' : æ +#define CAEU_BI 0xc6 // '' '' 'U' for upper, '' : Æ + + // OE (French) +#define COEL_BI 0x153 // '' "AO" for ao, 'L' for lower, "BI" for two-character: Å“ +#define COEU_BI 0x152 // '' '' 'U' for upper, '' ; Å’ + + // Mu (French) +#define C_MU_L 0x03BC // '' "MU" for Mu (Greek letter), 'L' for lower: + + // C with cedilla +#define CCL_CDL 0xe7 // '' 'C' for c, 'L' for lower, "CDL" for cedilla: ç +#define CCU_CDL 0xc7 // '' '' 'U' for upper, '' : Ç + + // e lower case variants +#define CEL_ACU 0xe9 // 'C' for Costum 'E' for e, 'L' for lower, "ACU" for acute: é +#define CEL_CAR 0xea // '' '' '' "CAR" for caret: ê +#define CEL_DIA 0xeb // '' '' '' "DIA" for diaereses: ë +#define CEL_GRA 0xe8 // '' '' '' "GRA" for grave: è + // E upper case variants +#define CEU_ACU 0xc9 // '' '' 'U' for uuper, "ACU" for acute: É +#define CEU_CAR 0xca // '' '' '' "CAR" for caret: Ê +#define CEU_DIA 0xcb // '' '' '' "DIA" for diaereses: Ë +#define CEU_GRA 0xc8 // '' '' '' "GRA" for grave: È + + // i lower case variants +#define CIL_ACU 0xed // '' 'I' for i, 'L' for lower, "ACU" for acute: í +#define CIL_CAR 0xee // '' '' '' "CAR" for caret: î +#define CIL_DIA 0xef // '' '' '' "DIA" for diaereses: ï +#define CIL_GRA 0xec // '' '' '' "GRA" for grave: ì + // I upper case variants +#define CIU_ACU 0xcd // '' '' 'U' for upper, "ACU" for acute: à +#define CIU_CAR 0xce // '' '' '' "CAR" for caret: ÃŽ +#define CIU_DIA 0xcf // '' '' '' "DIA" for diaereses: à +#define CIU_GRA 0xcc // '' '' '' "GRA" for grave: ÃŒ + + // N with tilde +#define CNL_TLD 0xf1 // '' 'N' for n, 'L' for lower, "TLD" for tilde: ñ +#define CNU_TLD 0xd1 // '' '' 'U' for upper, '' : Ñ + + //Spanish additional symbols: +#define CEX_INV 0xa1 // '' "EX" for exclamation mark, "INV" for inverted: ¡ +#define CQU_INV 0xbf // '' "QU" for question mark, '' : ¿ + + // o lower case variants +#define COL_ACU 0xf3 // 'C' for Costum 'O' for a, 'L' for lower, "ACU" for acute: ó +#define COL_CAR 0xf4 // '' '' '' "CAR" for caret: ô +#define COL_DIA 0xf6 // '' '' '' "DIA" for diaereses: ö +#define COL_GRA 0xf2 // '' '' '' "GRA" for grave: ò + // O upper case variants +#define COU_ACU 0xd3 // '' '' 'U' for upper, "ACU" for acute: Ó +#define COU_CAR 0xd4 // '' '' '' "CAR" for caret: Ô +#define COU_DIA 0xd6 // '' '' '' "DIA" for diaereses: Ö +#define COU_GRA 0xd2 // '' '' '' "GRA" for grave: Ã’ + + // O with stroke (Scandinavia) +#define COL_STK 0xf8 // '' 'O' for o, 'L' for lower, "STK" for Stroke: ø +#define COU_STK 0xd8 // '' '' 'U' for upper, '' : Ø + + // u lower case variants +#define CUL_ACU 0xfa // 'C' for Costum 'U' for u, 'L' for lower, "ACU" for acute: ú +#define CUL_CAR 0xfb // '' '' '' "CAR" for caret: û +#define CUL_DIA 0xfc // '' '' '' "DIA" for diaereses: ü +#define CUL_GRA 0xf9 // '' '' '' "GRA" for grave: ù + // U upper case variants +#define CUU_ACU 0xda // '' 'U' for u, 'U' for upper, "ACU" for acute: Ú +#define CUU_CAR 0xdb // '' '' '' "CAR" for caret: Û +#define CUU_DIA 0xdc // '' '' '' "DIA" for diaereses: Ü +#define CUU_GRA 0xd9 // '' '' '' "GRA" for grave: Ù + + // Y with acute +#define CYL_ACU 0xfd // '' 'Y' for y, 'L' for lower, "ACU" for Acute: ý +#define CYU_ACU 0xdd // '' '' 'U' for upper, '' : à + // Y with diaereses +#define CYL_DIA 0xff // '' 'Y' for y, 'L' for lower, "DIA" for Diareses: ÿ +#define CYU_DIA 0x178 // '' '' 'U' for upper, '' : Ÿ + + // Dutch IJ +#define CIJL_BI 0x133 // '' 'IJ' for ij, 'L' for lower, BI for two-character: ij +#define CIJU_BI 0x132 // '' '' , 'U' for upper '' : IJ + + //German: + // sharp s +#define CSL_SHP 0xdf // '' 'S' for s, 'L' for lower, "SHP" for sharp: ß + + // Some Unicode symbols that might be handy + // Happy symbols: +#define CS_SMIL 0x1f642 // "C" for costum, "S" for symbol , "SMIL" for 🙂 +#define CS_SMILP 0x1F60A // '' , '' , "SMIL" for smile, "P" for plus: 😊 +#define CS_THUP 0x1f44d // '' , '' , "THUP" for 👠+ + //Sad symbols +#define CS_SAD_ 0x1f641 // '' , '' , "SAD_" for 🙠+#define CS_SQUIG 0x2368 // '' , '' , "SQUIG" for squigly face: ⨠+#define CS_THDN 0x1f44e // '' , '' , "THDN" for 👎 + +// Punctuation +#define CS_ASTL 0x20F0 // '' , '' , "AST" for asterisk, "L" for little: ⃰ +#define CS_DASH 0x2014 // '' , '' , "DASH" for dash (a longer hyphen, if rendered correctly): — +#define CS_DQUH 0x201D // '' , '' , "D" for double, "QU" for quote, "H" for high: †+#define CS_DQUHR 0x201C // '' , '' , '' , ,, , '' , "R" for reverse: “ +#define CS_DQUL 0x201E // '' , '' , , "L" for low: „ +#define CS_GUILLE 0xAB // '' , '' , "GUIL" for guillemet (French quotation), "LE" for left-pointing: « +#define CS_GUILRI 0xBB // '' , '' , '' , "RI" for right-pointing: » +#define CS_GUILSLE 0x2039 // '' , '' , '' , "S" for simple, "LE" for left-pointing: ‹ +#define CS_GUILSRI 0x203A // '' , '' , '' , '' , "RI" for right-pointing: › +#define CS_HQUOSB 0x201B // '' , '' , "H" for high, "QUO" for quote, "S" for single, "B" for begin: ‛ +#define CS_HQUOSE 0x2019 // '' , '' , '' '' '' , "E" for end: ’ + + // Unusual parenthesis types +#define CS_OCBRA 0x300c // '' , '' , "O" for opening, "C" for corner, "BRA" for bracket:「 +#define CS_CCBRA 0x300d // '' , '' , "C" for closing, '' '' : 〠+#define CS_ODABRA 0x300a // '' '' , "O" for opening, "D" for double, "A" for angled, "BRA" for bracket:《 +#define CS_CDABRA 0x300b // '' , '' , "C" for closing, '' '' '' : 》 + + // currency +#define CS_LGULDEN UNICODE_CURRENCY // '' , "L" for lower, "GULDEN" for gulden (guilder): Æ’ + // ^ special case for easy user configuration +#define CS_CURREN 0xA4 // '' , '' , "CURREN" for currency, 'any currency' symbol: ¤ +#define CS_POUND 0xA3 // '' , '' , "POUND" for pound: £ +#define CS_CENT 0xA2 // '' , '' , "CENT" for cent: ¢ + + // legal +#define CS_COPY 0xA9 // '' , '' , "COPY" for copyright: +#define CS_COPYL 0x1F12F // '' , '' , "COPY" for Copyright, "L" for left: + + // circle, dots, bullet points +#define CS_BULLET 0x2022 // '' , '' , "BULLET" for bullet: • +#define CS_CIRCLE 0x3007 // '' , '' , "CIRCLE" for circle: 〇 +#define CS_DEGREE 0xB0 // '' , '' , "DEGREE" for degree: ° +#define CS_ELLIPS 0x2026 // '' , '' , "ELLIPS" for bullet: … +#define CS_FINGER 0x261E // '' , '' , "FINGER" for finger: ☞ +#define CS_MIDDOT 0x00B7 // '' , '' , "MIDDOT" for mid dot: · +#define CS_PARA 0x00A7 // '' , '' , "PARA" for paragraaf: § + + // super and sub script numbers +#define CN_0SUB 0x2080 // '' , N for number, "SUB" for sub-script or "SUP" for super-script:â‚€ +#define CN_0SUP 0x2070 // '' , '' , '' :â° +#define CN_1SUB 0x2081 // '' , '' , '' :â‚ +#define CN_1SUP 0xB9 // '' , '' , '' :¹ +#define CN_2SUB 0x2082 // '' , '' , '' :â‚‚ +#define CN_2SUP 0xB2 // '' , '' , '' :² +#define CN_3SUB 0x2083 // '' , '' , '' :₃ +#define CN_3SUP 0xB3 // '' , '' , '' :³ +#define CN_4SUB 0x2084 // '' , '' , '' :â‚„ +#define CN_4SUP 0x2074 // '' , '' , '' :â´ +#define CN_5SUB 0x2085 // '' , '' , '' :â‚… +#define CN_5SUP 0x2075 // '' , '' , '' :âµ +#define CN_6SUB 0x2086 // '' , '' , '' :₆ +#define CN_6SUP 0x2076 // '' , '' , '' :â¶ +#define CN_7SUB 0x2087 // '' , '' , '' :₇ +#define CN_7SUP 0x2077 // '' , '' , '' :â· +#define CN_8SUB 0x2088 // '' , '' , '' :₈ +#define CN_8SUP 0x2078 // '' , '' , '' :⸠+#define CN_9SUB 0x2089 // '' , '' , '' :₉ +#define CN_9SUP 0x2079 // '' , '' , '' :â¹ + +// Exponent symbols +#define CS_CPSUB 0x208E // '' , '' , "C" for closing, "P" for paranthesis, "SUB" for subscript: ₎ +#define CS_OPSUB 0x208D // '' , '' , "O" for opening, '' , '' : â‚ +#define CS_CPSUP 0x207E // '' , '' , "C" for closing, '' , "SUP" for superscript: â¾ +#define CS_OPSUP 0x207D // '' , '' , "O" for opening: '' , '' : â½ +#define CS_EXPMIN 0x207B // '' , '' , "EXP" for exponent, "MIN" for minus : â» +#define CS_EXPPLS 0x207A // '' , '' , '' , "PLS" for plus : ⺠+// Math +#define CS_ABOUT 0x2248 // '' , '' , "ABOUT" for about equal: ≈ +#define CS_CUMMU 0x2211 // '' , '' , "CUMMU" for cummulative: ∑ +#define CS_DIVI 0xF7 // '' , '' , "DIVI" for division: ÷ +#define CS_EGTHAN 0x2265 // '' , '' , "E" for equal, "G" for or-greater, "THAN" for than: ≥ +#define CS_ELTHAN 0x2264 // '' , '' , "E" for equal, "L" for or-less, "THAN" for than: ≤ +#define CS_INFIN 0x221E // '' , '' , "INFIN" for infinity: ∞ +#define CS_MULT 0xD7 // '' , '' , "MULTI" for multiplication: × +#define CS_NONE 0x2205 // '' , '' , "NONE" for empty-set / no-solution: ∅ +#define CS_PLMI 0xB1 // '' , '' , "PLMI" for plus-minus; ± +#define CS_PROM 0x2030 // '' , '' , "PROM" for promille: ‰ +#define CS_PROTT 0x2031 // '' , '' , "PRO" for pro-, "TT" for ten-thousandth: ‱ +#define CS_SQRT 0x221A // '' , '' , "SQRT" for square root: √ +#define CS_UNEQL 0x2260 // '' , '' , "UNEQL" for unequal: ≠ + +# ifdef POINT_ON_CHECKBOXES + // pointers +# define CS_CHECK_H 0x2B9B // '' , '' , "H" for Down, '' : â®› +# define CS_CHECK_B 0x2B98 // '' , '' , "L" for Left, "ARROW" for arrow: ⮘ +# define CS_CHECK_Y 0x2B9A // '' , '' , "R" for Right, '' : ⮚ +# define CS_CHECK_N 0x2B99 // '' , '' , "U" for UP, '' : â®™ +# else + // checkboxes +# define CS_CHECK_H 0x1F5F9 // '' , '' , "CHECK" for check mark, "H" for heavy: 🗹 +# define CS_CHECK_B 0x2610 // '' , '' , '' , "B" for blank: ☠+# define CS_CHECK_Y 0x2611 // '' , '' , '' , "Y" for yes: ☑ +# define CS_CHECK_N 0x2612 // '' , '' , '' , "N" for no: ☒ +# endif + +// More arrows +#define CS_ARR_DN 0x2B07 // '' , '' , "ARR" for arrow, "DN" for down: ⬇ +#define CS_ARR_LE 0x2B05 // '' , '' , "ARR" for arrow, "LE" for left: ⬅ +#define CS_ARR_RI 0x27A1 // '' , '' , "ARR" for arrow, "RI" for right: âž¡ +#define CS_ARR_UP 0x2B06 // '' , '' , "ARR" for arrow, "UP" for up: ⬆ + +// More checkmarks +#define CS_BOTCH 0x2717 // '' , '' , "BOTCH" for botched: ✗ +#define CS_CHECK 0x2713 // '' , '' , "CHECK" for check mark: ✓ + +// circled numbers +#define CN_0CIRC 0x24EA // '' , "N" for number, "0" for , "CIRC" for circled: ⓪ +#define CN_1CIRC 0x2460 // '' , '' , "1" for 1, "CIRC" for circled: â‘  +#define CN_2CIRC 0x2461 // '' , '' , "2" for 2, "CIRC" for circled: â‘¡ +#define CN_3CIRC 0x2462 // '' , '' , "3" for 3, "CIRC" for circled: â‘¢ +#define CN_4CIRC 0x2463 // '' , '' , "4" for 4, "CIRC" for circled: â‘£ +#define CN_5CIRC 0x2464 // '' , '' , "5" for 5, "CIRC" for circled: ⑤ +#define CN_6CIRC 0x2465 // '' , '' , "6" for 6, "CIRC" for circled: â‘¥ +#define CN_7CIRC 0x2466 // '' , '' , "7" for 7, "CIRC" for circled: ⑦ +#define CN_8CIRC 0x2467 // '' , '' , "8" for 8, "CIRC" for circled: â‘§ +#define CN_9CIRC 0x2468 // '' , '' , "9" for 9, "CIRC" for circled: ⑨ +#define CN_10CIRC 0x2469 // '' , '' , "10" for 10, "CIRC" for circled: â‘© +#define CN_11CIRC 0x246A // '' , '' , "11" for 11, "CIRC" for circled: ⑪ +#define CN_12CIRC 0x246B // '' , '' , "12" for 12, "CIRC" for circled: â‘« +#define CN_13CIRC 0x246C // '' , '' , "13" for 13, "CIRC" for circled: ⑬ +#define CN_14CIRC 0x246D // '' , '' , "14" for 14, "CIRC" for circled: â‘­ +#define CN_15CIRC 0x246E // '' , '' , "15" for 15, "CIRC" for circled: â‘® +#define CN_16CIRC 0x246F // '' , '' , "16" for 16, "CIRC" for circled: ⑯ +#define CN_17CIRC 0x2470 // '' , '' , "17" for 17, "CIRC" for circled: â‘° +#define CN_18CIRC 0x2471 // '' , '' , "18" for 18, "CIRC" for circled: ⑱ +#define CN_19CIRC 0x2472 // '' , '' , "19" for 19, "CIRC" for circled: ⑲ + +// Box drawings +#define CB_C_LEDN 0x2513 // '' , "B" for box drawing, "C" for corner, "LE" for left, "DN" for down: ┓ +#define CB_C_LEUP 0x251B // '' , '' , "C" for corner, "LE" for left, "UP" for up: â”› +#define CB_C_RIDN 0x250F // '' , '' , "C" for corner, "RI" for right, "DN" for down: â” +#define CB_C_RIUP 0x2517 // '' , '' , "C" for corner, "RI" for right, "UP" for up: â”— +#define CB_VE 0x2503 // '' , '' , "VE" for verticle: ┃ +#define CB_VE_BI 0x254B // '' , '' , "VE" for verticle, "BI" for bi (two): â•‹ +#define CB_VE_DOT 0x2507 // '' , '' , "VE" for verticle, "DOT" for dotted: ┇ +#define CB_VE_LE 0x252B // '' , '' , "VE" for verticle, "LE" for left: ┫ +#define CB_VE_RI 0x2523 // '' , '' , "VE" for verticle, "RI" for right: ┣ +// Horizontal lines, can be used with box drawings +#define CB_HHORI 0x2501 // '' , '' , "H" for heavy, '' : â” +#define CB_HHORID 0x2505 // '' , '' , "H" for heavy, '' , "D" for dashes: â”… +#define CB_LHORI 0x2500 // '' , '' , "L" for light, "HORI" for horizontal: ─ +#define CB_LHORID 0x2504 // '' , '' , "L" for light, '' , "D" for dashes: ┄ + +// Signs, unusual +#define CS_ALERT 0x26A0 // '' , "S" for symbol, "ALERT" for alert/warning: âš  +#define CS_STARB 0x2605 // '' , '' , "STAR" for star, "B" for big: ★ +#define CS_STARL 0x66D // '' , '' , "STAR" for star, "L" for little: Ù­ +#define CS_FLEUR 0x2766 // '' , '' , "FLEUR" for fleur (flower): ⦠+#define CS_HEART 0x2665 // '' , '' , "HEART" for heart: ♥ diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/user_config.h b/keyboards/thevankeyboards/minivan/keymaps/josjoha/user_config.h new file mode 100644 index 0000000000..aad9ec2339 --- /dev/null +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/user_config.h @@ -0,0 +1,721 @@ +/* + * License (GPL): + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + + * © 2019,2020 by Jos Boersema + * + */ + + +// ------------------------------------- ⬇ -------------------------------------- +// Configuration: +// ------------------------------------- ⬇ -------------------------------------- + + // (For the non-coders: “_Remove_†means to place ‛//’ in front of a line. The rest of the line becomes a comment. + // Placing ‛//’ in front of a line, means whatever follows it will be ignored during compilation. + // “_Activate_†means to *delete* the two ‛//’ in front. Now the rest of the line *will* be compiled + // /* ... */ is another a way to turn “...†into being a comment which is ignored during compilation. + // (The documentation here is geared toward people who have no understanding about programming.) + + /* + -------------------------------------------------------------------------------------- + ---- + -- + - + Table of Contents: + + -0- âž¡ Compact configuration file ⬅ + + -1- âž¡ Letters / Numbers & Symbols layouts ⬅ + • Qwerty + • Qwerty with Base arrows + • Dvorak + • Dvorak descramble mode + • Colemak + • Workman + • Numpad + + -2- âž¡ Eviscerations ( â‘  / â‘¡ ) ⬅ + • Single layout + + -3- âž¡ Startup settings ⬅ + • Alternate Base + • Leds on/off at startup. + • Speed measuring + • Text size counting ⬅ + + -4- âž¡ How many hardware keys 1st row ⬅ + + -5- âš  ≠ Minivan ⬅ + + -6- âž¡ Defining the meaning of the additional hardware keys ⬅ + • Defining the additional key for 'South paw' (also called 'Command') + • Defining 'Arrow' hardware layout additional keys + + -7- âž¡ Arrows/Navigation cluster ⬅ + • Navigation cluster configuration + • VI editor arrows + + -8- âž¡ Number pad Configuration⬅ + + -9- âž¡ Speed measuring ⬅ + + -10- âž¡ Some alternative keys ⬅ + • Right Alt or hold(_RAR) on Base + • GUI left/right + • Alternate currency symbol + • Check boxes or Pointers + • Switch _ACC/_BON and *left* side _NSY/_DRA hold keys + • Switch _PAD and _MOV on Left Shift toggle + • Switch _FUN and _RAR on Right Shift toggle + + -11- âž¡ Eviscerations ( â‘¡ / â‘¡ ) ⬅ + • Removing the numbers pad _PAD layer + • Removing one or more of the Unicode layers _ACC, _DRA or_BON + • Removing groups of characters + + -12- âž¡ Leds ⬅ + - + -- + ---- + -------------------------------------------------------------------------------------- + */ + + /* -0- âž¡ Compact configuration file ⬅ + * + * If you _activate_ this, this whole heavily documented configuration block below + * gets skipped, and instead a bare bones configuration file with all these same options + * gets read. There is no functional difference. + * + * (You can use the compact configuration if you like that better. It can make communicating + * a configuration easier. The fully documented configuration is left in a state of default + * when uploaded to QMK, so that it gives the most commonly used layout: Qwerty with Numpad, + * basic 44 Minivan keys. The compact version its state is whatever it is.) + */ + #define MINIFAN_CONFIG_COMPACT // _Activate_ this, to load the configuration in ./minifan_config_compact.h (note: mini‛f’an). +#ifndef MINIFAN_CONFIG_COMPACT // (don't alter this) + + + /* -1- âž¡ Letters / Numbers & Symbols layouts ⬅ + * + * Here you can configure what letters layer (BASE layer), and number&symbols layer you + * want. This is a dual layout system, so you can choose a second pair as well. You can + * switch between them with a key on the _RAR layer. All the other layers are the same, + * regardless of your choice in letter/number&symbol layers. + * + * The letters layer is the BASE layer, from which you also reach all other layers. + * The letters it has is the alphabet in its simplest form: abcdefghijklmnopqrstuvwxyz. + * The numbers & symbols layer has what you find on any regular keyboard: 123… !@#… []/… + * The numbers & symbols layer is made to fit the Letters layer, due to small differences + * between layouts like Qwerty and Dvorak (in this case the symbols ‛-’, ‛/’, ‛?’, and ‛_’). + * + * Example: A Qwerty letters layer, with a fitting numbers & symbols layer, as ‛Default’. + * A Dvorak letters layer, with a fitting numbers & symbols layer, as ‛Alternate’. + * + * You will be asked to configure one layout as ‛Default’ and another as ‛Alternate’. + * + * A bases layout may have locally re-defined one or more of the common layers. If you + * choose two bases layouts who re-define the same common layer locally, you will need + * to choose either one by commenting out the other. + */ + // + // • Qwerty + // (a regular Qwerty layout) + // _Activate_ one of these two, _remove_ the other. + #define BASE_QWERTY__DEF_BASE // _Activate_ if you want Qwerty on the ‛Default’ spot +//#define BASE_QWERTY__ALT_BASE // _Activate_ if you want Qwerty on the ‛Alternate’ spot + // Note: you still need to set if you have the additional ‛arrow’ hardware key. You + // can ignore what it should be defined as, because it will be a plain arrow on Base. + // + // • Qwerty with Base arrows + // (provides direct access to arrows) + // _Activate_ one of these two, _remove_ the other. +//#define BASE_QWERTY_BASEARROW__DEF_BASE // _Activate_ if you want Qwerty with Base arrows on the ‛Default’ spot +//#define BASE_QWERTY_BASEARROW__ALT_BASE // _Activate_ if you want Qwerty with Base arrows on the ‛Alternate’ spot + // + // • Dvorak + // (a regular Dvorak layout) + // _Activate_ one of these two, _remove_ the other. +//#define BASE_DVORAK__DEF_BASE // _Activate_ if you want Dvorak on the ‛Default’ spot +//#define BASE_DVORAK__ALT_BASE // _Activate_ if you want Dvorak on the ‛Alternate’ spot + // + // • Dvorak descramble mode + // (Dvorak for a computer already remapping to Dvorak) + // This layout is only available on ‛Alternate’, because of the special _HALF_ descramble mode. +//#define BASE_DVORAK_DESCRAMBLE__ALT_BASE // _Activate_ if you want Dvorak on the ‛Alternate’ spot + // + // • Colemak + // (a regular Colemak layout) + // _Activate_ one of these two, _remove_ the other. +//#define BASE_COLEMAK__DEF_BASE // _Activate_ if you want Colemak on the ‛Default’ spot +//#define BASE_COLEMAK__ALT_BASE // _Activate_ if you want Colemak on the ‛Alternate’ spot + // + // • Workman + // (a regular Workman layout) + // _Activate_ one of these two, _remove_ the other. +//#define BASE_WORKMAN__DEF_BASE // _Activate_ if you want Workman on the ‛Default’ spot +//#define BASE_WORKMAN__ALT_BASE // _Activate_ if you want Workman on the ‛Alternate’ spot + // + // • Numpad + // (a numerical keypad, one for left hand and one for right hand) + // _Activate_ to get Numpad on Alternate. There is no option for Numpad on ‛Default’ base. + #define BASE_NUMPAD__ALT_BASE // _Activate_ if you want Numpad on the ‛Alternate’ spot + // âž¡ âž¡ âž¡ This Base layer has configuration options at the top of its file. See ./base_numpad.c + // + /* -2- âž¡ Eviscerations ( â‘  / â‘¡ ) ⬅ + */ + /* • Single layout + * + * Removes the ‛Alternate’ base layers, and removes the switch key on _RAR. + * âš  You have to not define a ‛Alternate’ base layer pair. Define only a ‛Default’ pair. + */ +//#define MINIFAN_SINGLE_LAYOUT // _Activate_ to only have the ‛Default’ base layers, _remove_ to also have ‛Alternate’. + + + /* -3- âž¡ Startup settings ⬅ + */ + /* • Alternate Base + * + * You can define which of the two BASE layers is on when powering up the keyboard. + */ +//#define STARTUP_ALTERNATE // Example: For BASES_QWERTY_DVORAK defined: _remove_ is startup in Qwerty, _active_ is + // startup in Dvorak + /* • Leds on/off at startup. + */ +//#define STARTUP_SIDE_LEDS_OFF // _Activate_ to have side leds be off at keyboard startup (when you plug it in / computer powers on). +//#define STARTUP_MID_LED_OFF // _Activate_ to have middle led be off at keyboard startup. + // + /* • Speed measuring + */ +//#define STARTUP_SPEED // _Activate_ for default speed measuring on, _remove_ to set off at startup. + // + /* • Text size counting ⬅ + */ +//#define STARTUP_COUNT // _Activate_ for default character/word counting on, _remove_ to set off at startup. + + + + /* -4- âž¡ How many hardware keys 1st row ⬅ + * + * Define how many keys your keyboard has. + */ + // Default (12x12x12x8 keys) + //'Command' (12x12x12x9 keys) + key on the left + //'Arrow' (12x12x12x9 keys) + key on the right + //'South paw' + 'Arrow' (12x12x12x10 keys) +//#define MORE_KEY__COMMAND // Additional key 1st row on the left. This hardware layout is called 'Command' or 'South paw'. +//#define MORE_KEY__ARROW // Additional key 1st row (counting from row with space-bar) on the right, called 'Arrow' layout. + // + // See below for how to define your additional key(s). + + + /* -5- âš  ≠ Minivan ⬅ + * + * This section is for when you want to flash this keymap unto a board with more + * keys than the Minivan has. + * + * Trans-Minivan keymap: 12x12x12x11, 12x12x12x12, 12x12x12x13 keys + * Example board: Planck (12x12x12x12) + * + * It is assumed that you enabled MORE_KEY__ARROW and + * MORE_KEY__COMMAND, to get to 12x12x12x10 keys. With this you + * can get to one, two or three more keys on row 1, without manually + * editing all layers. You could first edit the definition on layers that you have + * a specific meaning for these keys, and let the rest be patched with the definitions + * here. + * + * It can help to inspect the preprocessing with > gcc -E keymap.c | less + * + * Planck keyboard + * + * The identifier TRANSMINIVAN_MIDLEFT could help compile the layout on a Planck keyboard, + * if it has a two unit large spacebar. You compile without TRANSMINIVAN_LEFTSIDE in that case. + * All keys on the left, row 1 (closest to the user) shift one unit to the left, with TRANS_MIDLEFT + * inserted on what would be the left key of the two unit spacebar (assuming that is a key). + * + * Other keyboards formats + * + * It is always possible to just padd the rows somewhere, if you have even more keys. On the other + * hand, to try to cut this layout down to fewer keys than it has at minimum (12x12x12x8), is likely + * going to reduce its functionality, and will require some puzzling to keep a well organized BASE + * layer, and have “hold key†layer switching work correctly. + * + * FIXME: not been compiled or tested for any boards. + */ +//#define TRANSMINIVAN_LAYOUT ....... // Set this to something with the needed amount of keycodes. + // Your values are inserted here: [ _LTR ] = LAYOUT_redefined ( + // ^^^^^^^^^^^^^^^^ (throughout all layers) +//#define TRANSMINIVAN_LEFTSIDE // _Activate_ to get yet one more key on the left side row 1 + #define TRANS_LEFT XXXXXXX // Define what the TRANSMINIVAN_LEFTSIDE key should be, where it is not otherwise defined. + // (Ignored if TRANSMINIVAN_LEFTSIDE is _removed_). + // +//#define TRANSMINIVAN_MIDLEFT // _Activate_ to get yet one more key on the first key from center, row 1. + #define TRANS_MIDLEFT XXXXXXX // Define what the TRANSMINIVAN_RIGHTSIDE key should be on all layers at once. + // (Ignored if TRANSMINIVAN_MIDLEFT is _removed_). + // +//#define TRANSMINIVAN_RIGHTSIDE // _Activate_ to get yet one more key on the right side row 1 + #define TRANS_RIGHT XXXXXXX // Define what the TRANSMINIVAN_RIGHTSIDE key should be, where it is not otherwise defined. + // (Ignored if TRANSMINIVAN_RIGHTSIDE is _removed_). + + + /* -6- âž¡ Defining the meaning of the additional hardware keys ⬅ + * + * Some possibilities you might like: + * + * â‘  Number-pad and F-keys layers are only on a toggle. If you want them accessible on a hold key, you can use + * these additional hardware keys. Make sure to use a transparent key on that location on those layers. + * + * â‘¡ You can use the right side additional key for quick access to an arrow/navigation cluster (see below). + * + * â‘¢ Other uses, such as a delete key and/or a special interface key your system needs. + */ + /* • Defining the additional key for 'South paw' (also called 'Command') + * + * Left side additional key. This is ignored if MORE_KEY__COMMAND is not defined. + */ + // Configure here what this key is on the BASE layers (excluding Base Numpad compile option). +//#define MORE_key1_BASE TG ( _RAR ) // _Activate_ this to get a toggle to layer _RAR. MO(_RAR) does not follow a BASE switch by ‛Other Base’. +//#define MORE_key1_BASE KC_DEL // Could be useful if you like to toggle to certain layers and stay there for a while. + #define MORE_key1_BASE KC__XGUI // (Default) (Using KC__XGUI makes sure it is the *other* GUI, relative to KC__YGUI.) + // + // Configure here what this key is on all other layers +//#define MORE_key1 KC_DEL // Configure here what this key is on all other layers (and Base Numpad). + #define MORE_key1 KC__XGUI // (Default) + // + // + /* • Defining 'Arrow' hardware layout additional keys + * + * You can create an arrow-cluster with your additional MORE_key2 hardware key on the _MOV layer. + * Either way: this new key can toggle to _MOV layer, with the key that on the _MOV layer becomes the down-arrow, + * in the middle of an arrow cluster. To do that, uncomment MOREKEY2_ARROW_CLUSTER. + * The keys that are by default defined on those keys on _MOV layer, will now be overwritten (they are not typically + * that much used there). + * + * Arrow cluster for 'arrow' layout: _activate_ MOREKEY2_ARROW_CLUSTER and _activate_ #define MORE_key2 _MOV_UP + * No arrow cluster for 'arrow' layout: _remove_ MOREKEY2_ARROW_CLUSTER, and set MORE_key2 to whatever you want. + */ + #define MOREKEY2_ARROW_CLUSTER // Arrow cluster on _MOV layer. This is ignored if MORE_KEY__ARROW is not defined. + // This will cost you 'Right Alt' and 'GUI' on the _MOV layer. +//#define MOREKEY2_ADD_NAVIGATION // Additional navigation keys around arrow cluster MOREKEY2_ARROW_CLUSTER. Ignored if MOREKEY2_ARROW_CLUSTER is not defined. + // Note: this will cause mouse buttons 'BTN4' and 'BTN5' on the _MOV layer to be moved. + /* + * Define the key you want on the additional key. Leave it to _MOV_UP if you want an arrow cluster, easily + * accessed with this key. + * + * If you want to be able to type all arrow cluster keys with both GUI keys, than you cannot have this additional + * arrow cluster around the ‛arrow’ additional hardware key, because it eats away the GUI just to the left of + * that additional hardware key. + * + * For typing both GUIs with the navigation cluster, you also need the left side additional hardware key. In this + * case, you can still set the optional hardware key on the right to _MOV_UP, but that is marginally useful + * as you already have that on Left Shift. + * + * When aiming to type all normally available keys on a 100% keyboard with all modifiers including GUIs, you + * could use the right hand side optional hardware key (‛arrow’), because it causes the right side GUI to be + * available there. (This kind of stuff affects rare or even never used keyboard shortcuts.) + */ + #define MORE_key2 _MOV_UP // Right side additional key. This is ignored if MORE_KEY__ARROW is not defined. +//#define MORE_key2 KC_DEL // More or less a random suggestion. Harmonizes well with “.DEL†on Numbers Pad. + // It is convenient to have an uncluttered Delete key on the Base layer. +//#define MORE_key2 <...your choice...> // Right side additional key. + // + + + /* -7- âž¡ Arrows/Navigation cluster ⬅ + */ + /* • Navigation cluster configuration + * + * _Activate_ below line to use a "WASD" type layout (on the spot where WASD is in Qwerty). + * _Remove_ if you prefer a flat type layout, with arrows in a row, on the right hand. + */ + #define ARROWS_TRIANGLE // Implies mouse is also similarly in a triangle. + /* + * • VI editor arrows + * + * Vi is a famous editor, with its own peculiar text cursor movement arrangement (arrows). + * This option modifies the flat arrows layout on the right hand, to be like the “HJKL†+ * arrows in the editor vi(1). “HJKL†meaning: the 7th to 10th key on the 3rd row. + * The arrows on the additional MOREKEY2_ARROW_CLUSTER also get harmonized to be like vi. + */ +//#define VI_SWITCHERYDOO // You have to _remove_ ARROWS_TRIANGLE, or this gets ignored. + + + /* -8- âž¡ Number pad Configuration⬅ + * + * This concerns the Numbers Pad layer, which is part of the common layers (not the Bse + * layer, which also has a Numbers Pad option). + * + * There are two compile versions for the number pad layer ‛_PAD’, in the common layers. + * + * _Activate_ the below to have the numbers pad _PAD layer resemble the squared layout of + * a numerical keyboard, allowing to type all numbers with the right hand. + * _Remove_ the below to have the numbers in this layer follow the layout of the _NSY layer, + * with the numbers on a line from left to right on the home row, across both hands. + */ +//#define NUMPAD_COMMON_SQUARE // _Activate_ to resemble a one handed numerical keyboard. + + + /* -9- âž¡ Speed measuring ⬅ + */ + /* + * Led color configuration. You can see the speed you have configured below directly on the keyboard, + * after you compiled and flashed it. + * Set speed measuring to . + * Hold the 'Report' key for one second, then release. The keyboard prints a number, which is the + * amount of characters per second for which that color is then being shown. Hold it again for + * a second, and it increments. Toggle speed measuring on/off to restart. + * You can play with the below settings until you like the result. + * + * The default values (8, 160 respectively) are starting at blue, avoiding confusion with default + * cyan for BASE layer, going to purple and further avoiding confusion with text size counting. + * Very fast typers could reach red, and then it goes further to yellow, etc. + */ + #define SPEED_COUNTDOWN 25 // After how many keypresses to update the effect(s). + #define SPEED_HUE_STEP 8 // For each key/sec faster, the hue value of HSV goes this step further. + #define SPEED_HUE_START 160 // The starting hue for 0 k/s (0 = 255 = red). + /* + * Speed report in words-per-minute (wpm) rather than keystrokes-per-second (k/s). wpm = k/s * â¶â°/â‚… = k/s * 12 + */ + #define WORDS_PER_MINUTE // _Activate_ to get speed report in words-per-minute, _remove_ to get it in keystrokes-per-second (k/s). + + + /* -10- âž¡ Some alternative keys ⬅ + */ + /* + * • Right Alt or hold(_RAR) on Base + * + * _Activate_ below line to get Right-Alt or Alt-Gr (same thing) on Base. + * A short tap results in RAlt briefly pressed, plus Right-Arrow. + * When pressed with another key, however short, results only in RAlt, and no Right-Arrow. + * Held a little longer than tapping it, results in only RAlt being pressed, no Right-Arrow. + * + * _Remove_ to have a layer hold key to the _RAR layer there, instead of RAlt, together with tapped Right-Arrow. + */ +//#define BASE_RIGHT_ALT // _Activate_ to get Right-Alt instead of _RAR on Base layer. + /* + * • GUI left/right + * + * _Activate_ below line to have LGUI (also called OS or Win key, etc) where RGUI is, + * and RGUI where LGUI is. + */ +//#define SWITCH_GUIS // _Activate_ this if you want LGUI on the BASE layer rather than RGUI, despite that spot being on the right. + /* + * • Alternate currency symbol + * + * _Activate_ the below to get a Euro symbol, where Æ’ (Dutch Guilder) is on the default map (_DRA layer). + */ + #define UNICODE_CURRENCY 0x20ac // Hex number, euro symbol €. The unicode hex number for position Æ’ in the default keymap. + /* + * • Check boxes or Pointers + * + * You can have these symbols (checkboxes): ☠☒ ☑ 🗹 + * or these (pointers): ⮘ â®™ ⮚ â®› + */ +//#define POINT_ON_CHECKBOXES // _Activate_ to get arrows, _remove_ to get checkboxes on _DRA layer. + /* + * • Switch _ACC/_BON and *left* side _NSY/_DRA hold keys + * + * If you type a lot of _ACC layer (accented keys), and not much _DRA layer, you might like to + * switch the _ACC hold key, and the left side _NSY key, if you find it awkward to reach to the + * left with your thumb. These two keys are next to each other. Only the Base layer is affected. + */ +//#define SWITCH_HOLD_ACC_NSY // _Activate_ to switch the *left* _NSY and _ACC layer hold keys, on Base layer. + /* + * • Switch _PAD and _MOV on Left Shift toggle + * + * Recommended if you use _MOV more than _PAD + */ +//#define SWITCH_LSHIFT_PAD_MOV // _Activate_ to make _MOV layer be on the fast tap, and _PAD on a short hold toggle + /* + * • Switch _FUN and _RAR on Right Shift toggle + * + * Recommended if you use _RAR more than _FUN + */ +//#define SWITCH_RSHIFT_FUN_RAR // _Activate_ to make _RAR layer be on the fast tap, and _FUN on a short hold toggle + + + /* -11- âž¡ Eviscerations ( â‘¡ / â‘¡ ) ⬅ + */ + /* • Removing the numbers pad _PAD layer + * + * You may have no use for this common layer, if you have a numerical keypad on the Alternate Base already. + * + * âš  Note: ./base_numpad.h can overrides this setting, if compiled with that ‛Base layers’. + */ +//#define REMOVE_PAD // _Activate_ to strip out the _PAD layer, _remove_ to have the _PAD layer. + // + /* • Removing one or more of the Unicode layers _ACC, _DRA or_BON + */ + /* Removes the _ACC layer, optionally redirect its key. This can save some 750 bytes. + */ +//#define REMOVE_ACC // _Activate_ to strip out the _ACC layer, _remove_ to have the _ACC layer. + /* Unless REMOVE_ACC is _active_, the next defines which redirect the _ACC key(s) are ignored. */ +//#define _ACC_KEY_ALT_LAYER _BON // _Activate_ to make the key(s) that normally goes to _ACC, go to _BON instead. +//#define _ACC_KEY_ALT_LAYER _DRA // _Activate_ to make the key(s) that normally goes to _ACC, go to _DRA instead. + /* + * + * Removes the _DRA layer, optionally redirect its key. Also saves some 750 bytes. + */ +//#define REMOVE_DRA // _Activate_ to strip out the _DRA layer, _remove_ to have the _DRA layer. + /* Unless REMOVE_DRA is _active_, the next defines which redirect the _DRA key(s) are ignored. */ +//#define _DRA_KEY_ALT_LAYER _ACC // _Activate_ to make the key(s) that normally goes to _ACC, go to _ACC instead. +//#define _DRA_KEY_ALT_LAYER _BON // _Activate_ to make the key(s) that normally goes to _ACC, go to _BON instead. + /* + * + * Removes the _BON layer, optionally redirect its key. Also saves some 750 bytes. + */ +//#define REMOVE_BON // _Activate_ to strip out the _BON layer, _remove_ to have the _BON layer. + /* Unless REMOVE_BON is _active_, the next defines which redirect the _BON key(s) are ignored. */ +//#define _BON_KEY_ALT_LAYER _ACC // _Activate_ to make the key(s) that normally goes to _BON, go to _ACC instead. +//#define _BON_KEY_ALT_LAYER _DRA // _Activate_ to make the key(s) that normally goes to _BON, go to _DRA instead. + /* + * + * • Removing groups of characters + */ + /* + * The below cut out an amount of symbols on a given layer, to simplify and/or reduce firmware size a little. + */ +//#define ALL_DRA_BON_EVISCERATIONS // _Activate_ this to _remove_ the below all at once. (Seems to save only ±114 bytes) + // + #define BOX_DRAWINGS // _Activate_ to get box drawings on _BON. Horizontal lines (â”─┄┅) on _DRA are not affected. + // Affected on rows 2 and 3: ┣┫â”┗┃┇┛┓ + // Full, 3rd row, boxdr.: Ctrl â‘  ⬅ â‘¡ ⬇ â‘¢ âž¡ â‘£ ┠⑤ ┓ â‘¥ ┃ ⑦ ┇ â‘§ â•‹ ⑨ ⓪ ∞ — + // Full, 2nd row, boxdr.: LSht ‹ › ÷ ☞ â”— ≠ â”› ✗ ┣ ✓ ┫ âš  « » RSht + // + // 3rd row, no boxdrawing: Ctrl â‘  ⬅ â‘¡ ⬇ â‘¢ âž¡ â‘£ ⑤ â‘¥ ⑦ â‘§ ⑨ ⓪ ∞ — + // 2nd row, no boxdrawing: LSht ‹ › ÷ ☞ ≠ ✗ ✓ âš  « » RSht + // + #define SUB_SCRIPT_NUMS // _Activate_ to get subscript numbers (â‚₂₃…₀) on _DRA. + // Affected on row 3: â‚₂₃₄₅₆₇₈₉₀ + // Thinned out 3rd row: xxx ¹ ² ³ ⴠⵠⶠⷠ⸠⹠Ⱐxxx + // Full 3rd row: xxx ¹₠²₂ ³₃ â´â‚„ âµâ‚… â¶â‚† â·â‚‡ â¸â‚ˆ â¹â‚‰ â°â‚€ xxx + // + #define FULL_DRA_2NDROW // _Activate_ to have symbols on all unshifted + shifted positions on _DRA, 2nd row. + // Affected: 「 〠〇 § · 🗹 《 》 + // Full 2nd row: LSht 「┠ã€â”€ °〇 •§ …· ☠☒ ☑ 🗹 ¿¡ 《┄ 》┅ Rsht + // Thinned out 2nd row: LSht ┠─ ° • … ☠☑ ☑ ¿¡ ┄ â”… RSht + // + #define FULL_DRA_4THROW // _Activate_ to have symbols on all unshifted + shifted positions on _DRA, 4th row. + // Affected 4th row: „ ≤ ≥ ∅ ¢ Æ’ ⦠🙂 🙠👠👎 ⽠₠⾠₎ + // Full 4th row: BASE “„ â€â‰¤ £≥ ∅ ¢ ±ƒ ⦠♥ 🙂🙠ðŸ‘👎 â½â‚ â¾â‚Ž Bkspc + // Thinned out 4th row: BASE “ †£ ± ♥ Bkspc + // + #define FULL_BON_4THROW // _Activate_ to have symbols on all unshifted + shifted positions on _BON, 4th row. + // Affected 4th row: 🛠 ¤ ∑ ‱ Ù­ 😊 ⨠⃰ ⻠⺠🄯 © + // Full 4th row: BASE ‛🛠 ’⬆ ¤ 🄯 ∑ © ‰‱ ★٭ 😊⨠× ⃰ √ â»âº Bkspc + // Thinned out 4th row: BASE ‛ ’⬆ ‰ ★ × Bkspc + // + + + /* -12- âž¡ Leds ⬅ + * + * Leds off for the Default Base Layer. + * Implies: no indication on Default Base for: Caps-lock, typing speed, typing amount done of a limit. + * Speed / typing amount will be visible by going to another layer. + */ +//#define LEDS_OFF_BASE_DEF // _Activate_ to make leds dark when in ‛Default Base’ layer. + +// ------------------------------------- ⬆ -------------------------------------- +// Below here no more comfortable configuration options..... +// There may be configuration options in the layout ./bases_....h file you chose. +// ------------------------------------- ⬆ -------------------------------------- + +#else // (ignore this) +# include "./minifan_config_compact.h" +#endif // MINIFAN_CONFIG_COMPACT + + +// ------------------------------------- ⬇ -------------------------------------- +// Base layer headers +// ------------------------------------- ⬇ -------------------------------------- + +// * Numpad * +# if defined(BASE_NUMPAD__ALT_BASE) +# include "./base_numpad.h" // Numbers pad header +# endif +// * Qwerty Base Arrow * +# if defined(BASE_QWERTY_BASEARROW__DEF_BASE) || defined(BASE_QWERTY_BASEARROW__ALT_BASE) +# include "./base_qwerty_basearrow.h" // Your Keymap header/configuration file. +# endif + +// // ⬇ insert your ./base_YOUR_KEYMAP.h #include here: + +// * YOUR KEYMAP * +// # if defined(BASE_YOUR_KEYMAP__DEF_BASE) || defined(BASE_YOUR_KEYMAP__ALT_BASE) +// # include "./base_YOUR_KEYMAP.h" // Your Keymap header/configuration file. +// # endif + +// // ⬆ + +// ------------------------------------- ⬆ -------------------------------------- +// Base layer headers are best #included here, so the preprocessor statements +// following the user configuration block can pick up on anything that was set. +// +// Example: base_numpad.h _activate_ ‛REMOVE_PAD’. Based upon that, the preprocessor +// constant ‛_PAD’ is changed into ‛_FUN’ in the below statements. +// ------------------------------------- ⬆ -------------------------------------- + + + +// The below sets some things up based on the above #defines. + +// This is sort of a hack. It re-defines _ALT_BASE and _ALT_NSY to point to the same +// layer as _DEF_BASE and _DEF_NSY, because there are quite a few references to the +// former and putting #if then around each one complicated the code even more. If needed, +// it can be changed later. This option already reduces firmware size, so we should be +// well below the maximum. +# ifdef MINIFAN_SINGLE_LAYOUT +# define _ALT_BASE _DEF_BASE +# define _ALT_NSY _DEF_NSY +# endif + +// This triggers the compilation of special _HALF_ descramble mode, where you access +// the Unicode layers without passing them through the descramble system (middle led +// lit on _RAR_ when cycling through the base layers with ‛Other Base’ key). +# ifdef BASE_DVORAK_DESCRAMBLE__ALT_BASE +# define DVORAK_DESCRAMBLE_HALF +# endif + +// Prevent likely erroneous configuration. If no 'Arrow' hardware layout, then not patching in an arrow cluster. +# if !defined(MORE_KEY__ARROW) && defined(MOREKEY2_ARROW_CLUSTER) +# undef MOREKEY2_ARROW_CLUSTER +# endif + +# if !defined(MORE_KEY__ARROW) && defined(MOREKEY2_ADD_NAVIGATION) +# undef MOREKEY2_ADD_NAVIGATION +# endif +# if !defined(MOREKEY2_ARROW_CLUSTER) && defined(MOREKEY2_ADD_NAVIGATION) +# undef MOREKEY2_ADD_NAVIGATION // Only navigation keys, when the are arrows defined. +# endif + +// When choosing 'triangle' arrows, then they go left. Not 'triangle' arrows, than right. +# ifdef ARROWS_TRIANGLE + /* _Activate_ below line to put the arrows on the left, comment out to have arrows right. */ +# define ARROWS_LEFT // Implies mouse is right +# endif + + +// Set up user GUI choice: +# ifndef SWITCH_GUIS +# define KC__XGUI KC_LGUI // Name logic is alphabetic order left to right …X (…) …Y in layout definitions.. +# define KC__YGUI KC_RGUI // .. meaning KC__XGUI is left on the keymap, KC__YGUI is right. +# endif + +# ifdef SWITCH_GUIS +# define KC__XGUI KC_RGUI +# define KC__YGUI KC_LGUI +# endif + + +// Define the layout macro for the amount of hardware keys. +// These for Minivan are defined up in the code tree. +# if !defined(MORE_KEY__COMMAND) && !defined(MORE_KEY__ARROW) +# define LAYOUT_redefined LAYOUT // Default (8 keys on 1st row) +# endif + +# if !defined(MORE_KEY__COMMAND) && defined(MORE_KEY__ARROW) +# define LAYOUT_redefined LAYOUT_arrow // Additional key 1st row on the right. 'Arrow' +# endif + +# if defined(MORE_KEY__COMMAND) && !defined(MORE_KEY__ARROW) +# define LAYOUT_redefined LAYOUT_command // Additional key 1st row on the left. 'Command' +# endif + +# if defined(MORE_KEY__COMMAND) && defined(MORE_KEY__ARROW) +# define LAYOUT_redefined LAYOUT_arrow_command // Additional keys 1st row both left and right. 'Arrow' + 'Command' +# endif + +# ifdef TRANSMINIVAN_LAYOUT +# undef LAYOUT_redefined +# define LAYOUT_redefined TRANSMINIVAN_LAYOUT +# endif + + +// Process user config setting for speed measuring +# ifdef STARTUP_SPEED +# define SPEED_INIT_VALUE TRUE +# else +# define SPEED_INIT_VALUE FALSE +# endif +// Process user config setting for text size measuring +# ifdef STARTUP_COUNT +# define COUNT_INIT_VALUE TRUE +# else +# define COUNT_INIT_VALUE FALSE +# endif + + +// Get all key reductions at once +# ifdef ALL_DRA_BON_EVISCERATIONS +# ifdef BOX_DRAWINGS +# undef BOX_DRAWINGS +# endif + +# ifdef SUB_SCRIPT_NUMS +# undef SUB_SCRIPT_NUMS +# endif + +# ifdef FULL_DRA_2NDROW +# undef FULL_DRA_2NDROW +# endif + +# ifdef FULL_DRA_4THROW +# undef FULL_DRA_4THROW +# endif + +# ifdef FULL_BON_4THROW +# undef FULL_BON_4THROW +# endif +# endif + +// This resolves compiling “TO (_BON)†on the _FUN layer. +# ifdef REMOVE_BON +# undef _BON +# ifdef _BON_KEY_ALT_LAYER +# define _BON _BON_KEY_ALT_LAYER // To what user wants +# else +# define _BON _FUN // void behavior +# endif +# endif + +// This resolves compiling “TO (_PAD)†on the _FUN layer. +# ifdef REMOVE_PAD +# undef _PAD +# define _PAD _FUN // void behavior +# endif + +// If the _ACC layer hold key has no function anymore because the layers _ACC and _BON to which it +// switches have been removed, and no alternative use been set, that key reverts to being KC_DEL, +// and the whole macro CHOLTAP_ACCE it normally activates gets cut. +# if defined(REMOVE_ACC) \ + && !defined(_ACC_KEY_ALT_LAYER) \ + && defined(REMOVE_BON) \ + && !defined(_BON_KEY_ALT_LAYER) +# define CHOLTAP_ACCE KC_DEL // replaces in the keymap +# define CHOLTAP_ACCE_NOP // cuts CHOLTAP_ACCE out of macros +# endif + +// Here all Unicode layers _ACC, _DRA and _BON have been removed, and none of their key(s) has +// been re-assigned to a useful purpose. That makes that whole system redundant, so it is simplified. +# if defined(REMOVE_ACC) \ + && !defined(_ACC_KEY_ALT_LAYER) \ + && defined(REMOVE_DRA) \ + && !defined(_DRA_KEY_ALT_LAYER) \ + && defined(REMOVE_BON) \ + && !defined(_BON_KEY_ALT_LAYER) +# define CHOLTAP_ACCE KC_DEL // replaces in the keymap +# define CHOLTAP_ACCE_NOP // cuts CHOLTAP_ACCE out of macros +# define DUO_HOLD_BASIC // cuts out the long DUO_HOLD macro, replaces it with a simple 'descramble'-aware hold(_NSY/_DDN) +# endif From e25f05224f1c06aeed13b2e99e8e755af65ac689 Mon Sep 17 00:00:00 2001 From: Nick Blyumberg Date: Thu, 4 Mar 2021 17:59:20 -0500 Subject: [PATCH 016/613] Fixed the ortho60 and ortho48 matrix layout after testing (#12106) --- keyboards/cannonkeys/ortho48/ortho48.h | 4 ++-- keyboards/cannonkeys/ortho60/ortho60.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/keyboards/cannonkeys/ortho48/ortho48.h b/keyboards/cannonkeys/ortho48/ortho48.h index 1e51c37af7..b0197c3cf7 100644 --- a/keyboards/cannonkeys/ortho48/ortho48.h +++ b/keyboards/cannonkeys/ortho48/ortho48.h @@ -6,13 +6,13 @@ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \ - k30, k31, k32, k33, k34, k35 , k37, k38, k39, k3a, k3b \ + k30, k31, k32, k33, k34, k36 , k37, k38, k39, k3a, k3b \ ) \ { \ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \ - { k30, k31, k32, k33, k34, k35, KC_NO, k37, k38, k39, k3a, k3b } \ + { k30, k31, k32, k33, k34, KC_NO, k36, k37, k38, k39, k3a, k3b } \ } #define LAYOUT_ortho_4x12( \ diff --git a/keyboards/cannonkeys/ortho60/ortho60.h b/keyboards/cannonkeys/ortho60/ortho60.h index 0f3ae127aa..2dcc00ddb9 100644 --- a/keyboards/cannonkeys/ortho60/ortho60.h +++ b/keyboards/cannonkeys/ortho60/ortho60.h @@ -7,14 +7,14 @@ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, \ - k40, k41, k42, k43, k44, k45 , k47, k48, k49, k4a, k4b \ + k40, k41, k42, k43, k44, k46 , k47, k48, k49, k4a, k4b \ ) \ { \ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b }, \ - { k40, k41, k42, k43, k44, k45, KC_NO, k47, k48, k49, k4a, k4b }, \ + { k40, k41, k42, k43, k44, KC_NO, k46, k47, k48, k49, k4a, k4b }, \ } #define LAYOUT_ortho_5x12( \ From 2cb0b41ce7e9e9bc743451d7412a3114ec1d01b2 Mon Sep 17 00:00:00 2001 From: Quentin Date: Fri, 5 Mar 2021 00:03:58 +0100 Subject: [PATCH 017/613] update correct layout name (#12096) --- keyboards/bastardkb/tbk/info.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/bastardkb/tbk/info.json b/keyboards/bastardkb/tbk/info.json index fe521b5b89..a598b03999 100644 --- a/keyboards/bastardkb/tbk/info.json +++ b/keyboards/bastardkb/tbk/info.json @@ -5,7 +5,7 @@ "width": 17, "height": 8, "layouts": { - "LAYOUT": { + "LAYOUT_split_4x6_5": { "layout": [ {"label":"L00", "x":0, "y":0}, {"label":"L01", "x":1, "y":0}, From d7aa245c3343542381ae0e9eb1b77eadca74da57 Mon Sep 17 00:00:00 2001 From: imchipwood Date: Thu, 4 Mar 2021 20:25:19 -0800 Subject: [PATCH 018/613] dumbpad refactor - adding support for various PCB revisions (#9259) * Placeholder commit - Refactored to support different PCB revisions Individual revision folders still need: - info.json - readme.md all v0x folders support up to two LEDs for layer indication all v1x folders support up to two LEDs for layer indication plus one extra LED for numlock indication v0x - supports single-encoder v0.x PCB revisions v0x_right - supports reversible, single-encoder v0.x PCB revisions v0x_dualencoder - supports dual-encoder v0.x PCB revisions v1x - supports single-encoder v1.x PCB revisiions v1x_right - supports reversible, single-encoder v1.x PCB revisions * Added info.json and readme.md files for all dumbpad revisions * More refactoring, adding shared config.h and rules.mk Removed config.h from default keymap folders - defining TAPPING_TOGGLE in config.h * Minor formatting fix * MATRIX_COL_PINS for v1x_right was not reversed - changed to match v0x_right * adding support for v1x dual encoder PCB * adding alt-f2 tapdance routine for personal keymaps * adding dumbpad build using teensy 2.0 instead of Pro Micro * matched v1x dumbpad encoder and led pins to latest PCB revisions * updated readme, removed v1x_teensy until someone requests it * changed device name to match tmk udev rules, removed unnecessary ifdef * removed user keymaps and folders * missed hotdox keymap - removing * fixing info.json keyboard_names for all versions * Changed biton32 to get_highest_layer in keyboards/dumbpad/v0x/v0x.c * keyboards/dumbpad/v0x/v0x.c - remove matrix_scan_kb, process_record_kb * /dumbpad/v0x/keymaps/default/keymap.c - remove empty functions * /dumbpad/v0x/keymaps/default/keymap.c - changed biton32 to get_highest_layer * keyboards/dumbpad/v0x_dualencoder/keymaps/default/keymap.c - remove empty functions * keyboards/dumbpad/v0x_right/readme.md - smaller board layout image * keyboards/dumbpad/v1x_dualencoder/readme.md - smaller board image * keyboards/dumbpad/v1x/readme.md - smaller board image * keyboards/dumbpad/v1x_right/readme.md - smaller board image * Update keyboards/dumbpad/rules.mk * Apply suggestions from code review Batch applying suggestions from review * fixed removal of led_set_kb * Implementing requested changes from old pull request 9259 * removing unused rules * removed rules.mk from dumbpad base folder * adding templates for each layout * testing default keymap json * Testing applying default keymap for dumbpad * Layout correction: v1.x are 17 position pcb's * Update keyboards/dumbpad/v0x/rules.mk * Update keyboards/dumbpad/v0x/rules.mk * Update keyboards/dumbpad/v0x_dualencoder/keymaps/default/keymap.c * Update keyboards/dumbpad/v0x_dualencoder/rules.mk * Update keyboards/dumbpad/v0x_dualencoder/rules.mk * Update keyboards/dumbpad/v1x_dualencoder/rules.mk * Update keyboards/dumbpad/v1x_dualencoder/templates/keymap.c * Update keyboards/dumbpad/v1x_right/rules.mk * Update keyboards/dumbpad/v1x_right/rules.mk * Update keyboards/dumbpad/rules.mk * Update keyboards/dumbpad/v0x_dualencoder/templates/keymap.c * Update keyboards/dumbpad/v0x_right/rules.mk * Update keyboards/dumbpad/v1x/rules.mk * Update keyboards/dumbpad/v1x/rules.mk * Update keyboards/dumbpad/v1x_dualencoder/keymaps/default/keymap.c * Update keyboards/dumbpad/v1x_dualencoder/rules.mk * Update keyboards/dumbpad/v0x_right/rules.mk * Removing binary files --- keyboards/dumbpad/config.h | 207 +----------------- keyboards/dumbpad/dumbpad.c | 83 ------- keyboards/dumbpad/info.json | 30 --- keyboards/dumbpad/keymaps/default/config.h | 2 - keyboards/dumbpad/keymaps/default/keymap.c | 121 ---------- keyboards/dumbpad/keymaps/imchipwood/config.h | 2 - keyboards/dumbpad/keymaps/imchipwood/keymap.c | 163 -------------- keyboards/dumbpad/readme.md | 30 +-- keyboards/dumbpad/rules.mk | 36 +-- keyboards/dumbpad/v0x/config.h | 41 ++++ keyboards/dumbpad/v0x/info.json | 18 ++ .../dumbpad/v0x/keymaps/default/keymap.c | 106 +++++++++ keyboards/dumbpad/v0x/readme.md | 15 ++ keyboards/dumbpad/v0x/rules.mk | 25 +++ keyboards/dumbpad/v0x/templates/keymap.c | 25 +++ keyboards/dumbpad/v0x/v0x.c | 59 +++++ keyboards/dumbpad/{dumbpad.h => v0x/v0x.h} | 19 +- keyboards/dumbpad/v0x_dualencoder/config.h | 40 ++++ keyboards/dumbpad/v0x_dualencoder/info.json | 18 ++ .../v0x_dualencoder/keymaps/default/keymap.c | 134 ++++++++++++ keyboards/dumbpad/v0x_dualencoder/readme.md | 15 ++ keyboards/dumbpad/v0x_dualencoder/rules.mk | 25 +++ .../v0x_dualencoder/templates/keymap.c | 43 ++++ .../dumbpad/v0x_dualencoder/v0x_dualencoder.c | 59 +++++ .../dumbpad/v0x_dualencoder/v0x_dualencoder.h | 30 +++ keyboards/dumbpad/v0x_right/config.h | 39 ++++ keyboards/dumbpad/v0x_right/info.json | 18 ++ .../v0x_right/keymaps/default/keymap.c | 106 +++++++++ keyboards/dumbpad/v0x_right/readme.md | 15 ++ keyboards/dumbpad/v0x_right/rules.mk | 25 +++ .../dumbpad/v0x_right/templates/keymap.c | 25 +++ keyboards/dumbpad/v0x_right/v0x_right.c | 59 +++++ keyboards/dumbpad/v0x_right/v0x_right.h | 30 +++ keyboards/dumbpad/v1x/config.h | 42 ++++ keyboards/dumbpad/v1x/info.json | 18 ++ .../dumbpad/v1x/keymaps/default/keymap.c | 106 +++++++++ keyboards/dumbpad/v1x/readme.md | 15 ++ keyboards/dumbpad/v1x/rules.mk | 25 +++ keyboards/dumbpad/v1x/templates/keymap.c | 25 +++ keyboards/dumbpad/v1x/v1x.c | 69 ++++++ keyboards/dumbpad/v1x/v1x.h | 30 +++ keyboards/dumbpad/v1x_dualencoder/config.h | 42 ++++ keyboards/dumbpad/v1x_dualencoder/info.json | 18 ++ .../v1x_dualencoder/keymaps/default/keymap.c | 134 ++++++++++++ keyboards/dumbpad/v1x_dualencoder/readme.md | 87 ++++++++ keyboards/dumbpad/v1x_dualencoder/rules.mk | 25 +++ .../v1x_dualencoder/templates/keymap.c | 43 ++++ .../dumbpad/v1x_dualencoder/v1x_dualencoder.c | 69 ++++++ .../dumbpad/v1x_dualencoder/v1x_dualencoder.h | 30 +++ keyboards/dumbpad/v1x_right/config.h | 42 ++++ keyboards/dumbpad/v1x_right/info.json | 18 ++ .../v1x_right/keymaps/default/keymap.c | 106 +++++++++ keyboards/dumbpad/v1x_right/readme.md | 15 ++ keyboards/dumbpad/v1x_right/rules.mk | 25 +++ .../dumbpad/v1x_right/templates/keymap.c | 25 +++ keyboards/dumbpad/v1x_right/v1x_right.c | 69 ++++++ keyboards/dumbpad/v1x_right/v1x_right.h | 30 +++ 57 files changed, 2106 insertions(+), 665 deletions(-) delete mode 100644 keyboards/dumbpad/dumbpad.c delete mode 100644 keyboards/dumbpad/info.json delete mode 100644 keyboards/dumbpad/keymaps/default/config.h delete mode 100644 keyboards/dumbpad/keymaps/default/keymap.c delete mode 100644 keyboards/dumbpad/keymaps/imchipwood/config.h delete mode 100644 keyboards/dumbpad/keymaps/imchipwood/keymap.c create mode 100644 keyboards/dumbpad/v0x/config.h create mode 100644 keyboards/dumbpad/v0x/info.json create mode 100644 keyboards/dumbpad/v0x/keymaps/default/keymap.c create mode 100644 keyboards/dumbpad/v0x/readme.md create mode 100644 keyboards/dumbpad/v0x/rules.mk create mode 100644 keyboards/dumbpad/v0x/templates/keymap.c create mode 100644 keyboards/dumbpad/v0x/v0x.c rename keyboards/dumbpad/{dumbpad.h => v0x/v0x.h} (66%) create mode 100644 keyboards/dumbpad/v0x_dualencoder/config.h create mode 100644 keyboards/dumbpad/v0x_dualencoder/info.json create mode 100644 keyboards/dumbpad/v0x_dualencoder/keymaps/default/keymap.c create mode 100644 keyboards/dumbpad/v0x_dualencoder/readme.md create mode 100644 keyboards/dumbpad/v0x_dualencoder/rules.mk create mode 100644 keyboards/dumbpad/v0x_dualencoder/templates/keymap.c create mode 100644 keyboards/dumbpad/v0x_dualencoder/v0x_dualencoder.c create mode 100644 keyboards/dumbpad/v0x_dualencoder/v0x_dualencoder.h create mode 100644 keyboards/dumbpad/v0x_right/config.h create mode 100644 keyboards/dumbpad/v0x_right/info.json create mode 100644 keyboards/dumbpad/v0x_right/keymaps/default/keymap.c create mode 100644 keyboards/dumbpad/v0x_right/readme.md create mode 100644 keyboards/dumbpad/v0x_right/rules.mk create mode 100644 keyboards/dumbpad/v0x_right/templates/keymap.c create mode 100644 keyboards/dumbpad/v0x_right/v0x_right.c create mode 100644 keyboards/dumbpad/v0x_right/v0x_right.h create mode 100644 keyboards/dumbpad/v1x/config.h create mode 100644 keyboards/dumbpad/v1x/info.json create mode 100644 keyboards/dumbpad/v1x/keymaps/default/keymap.c create mode 100644 keyboards/dumbpad/v1x/readme.md create mode 100644 keyboards/dumbpad/v1x/rules.mk create mode 100644 keyboards/dumbpad/v1x/templates/keymap.c create mode 100644 keyboards/dumbpad/v1x/v1x.c create mode 100644 keyboards/dumbpad/v1x/v1x.h create mode 100644 keyboards/dumbpad/v1x_dualencoder/config.h create mode 100644 keyboards/dumbpad/v1x_dualencoder/info.json create mode 100644 keyboards/dumbpad/v1x_dualencoder/keymaps/default/keymap.c create mode 100644 keyboards/dumbpad/v1x_dualencoder/readme.md create mode 100644 keyboards/dumbpad/v1x_dualencoder/rules.mk create mode 100644 keyboards/dumbpad/v1x_dualencoder/templates/keymap.c create mode 100644 keyboards/dumbpad/v1x_dualencoder/v1x_dualencoder.c create mode 100644 keyboards/dumbpad/v1x_dualencoder/v1x_dualencoder.h create mode 100644 keyboards/dumbpad/v1x_right/config.h create mode 100644 keyboards/dumbpad/v1x_right/info.json create mode 100644 keyboards/dumbpad/v1x_right/keymaps/default/keymap.c create mode 100644 keyboards/dumbpad/v1x_right/readme.md create mode 100644 keyboards/dumbpad/v1x_right/rules.mk create mode 100644 keyboards/dumbpad/v1x_right/templates/keymap.c create mode 100644 keyboards/dumbpad/v1x_right/v1x_right.c create mode 100644 keyboards/dumbpad/v1x_right/v1x_right.h diff --git a/keyboards/dumbpad/config.h b/keyboards/dumbpad/config.h index d1fa9aa4b3..5a1a1c92b8 100644 --- a/keyboards/dumbpad/config.h +++ b/keyboards/dumbpad/config.h @@ -1,5 +1,5 @@ /* -Copyright 2019 imchipwood +Copyright 2020 imchipwood This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -14,218 +14,21 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ - #pragma once #include "config_common.h" /* USB Device descriptor parameter */ -#define VENDOR_ID 0xDEAF +#define VENDOR_ID 0xFEED #define PRODUCT_ID 0x0913 -#define DEVICE_VER 0x0001 #define MANUFACTURER imchipwood #define PRODUCT dumbpad - -/* - * Keyboard Matrix Assignments - * - * Change this to how you wired your keyboard - * COLS: AVR pins used for columns, left to right - * ROWS: AVR pins used for rows, top to bottom - * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) - * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) - * -*/ -#define MATRIX_ROWS 4 -#define MATRIX_COLS 5 -#define MATRIX_ROW_PINS { F4, F5, F6, F7 } -#define MATRIX_COL_PINS { C6, D7, E6, B4, B5 } -#define UNUSED_PINS - -/* COL2ROW, ROW2COL*/ +/* Column/Row IO definitions */ #define DIODE_DIRECTION COL2ROW -/* Rotary encoder */ -#define ENCODERS_PAD_A { D0 } -#define ENCODERS_PAD_B { D4 } - -/* LED layer indicators */ -#define LAYER_INDICATOR_LED_0 B3 -#define LAYER_INDICATOR_LED_1 B1 - -/* Bootmagic - hold down rotary encoder pushbutton while plugging in to enter bootloader */ -#define BOOTMAGIC_LITE_ROW 3 -#define BOOTMAGIC_LITE_COLUMN 0 - - /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ #define DEBOUNCE 5 -/* define if matrix has ghost (lacks anti-ghosting diodes) */ -//#define MATRIX_HAS_GHOST - -/* number of backlight levels */ - -/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ -//#define LOCKING_SUPPORT_ENABLE -/* Locking resynchronize hack */ -//#define LOCKING_RESYNC_ENABLE - -/* - * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. - */ -//#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 - -// #define BACKLIGHT_PIN B7 -// #define BACKLIGHT_BREATHING -// #define BACKLIGHT_LEVELS 3 - -// #define RGB_DI_PIN E2 -// #ifdef RGB_DI_PIN -// #define RGBLED_NUM 16 -// #define RGBLIGHT_HUE_STEP 8 -// #define RGBLIGHT_SAT_STEP 8 -// #define RGBLIGHT_VAL_STEP 8 -// #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ -// #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ -// /*== all animations enable ==*/ -// #define RGBLIGHT_ANIMATIONS -// /*== or choose animations ==*/ -// #define RGBLIGHT_EFFECT_BREATHING -// #define RGBLIGHT_EFFECT_RAINBOW_MOOD -// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL -// #define RGBLIGHT_EFFECT_SNAKE -// #define RGBLIGHT_EFFECT_KNIGHT -// #define RGBLIGHT_EFFECT_CHRISTMAS -// #define RGBLIGHT_EFFECT_STATIC_GRADIENT -// #define RGBLIGHT_EFFECT_RGB_TEST -// #define RGBLIGHT_EFFECT_ALTERNATING -// /*== customize breathing effect ==*/ -// /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ -// #define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 -// /*==== use exp() and sin() ====*/ -// #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 -// #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 -// #endif - -/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. - * This is userful for the Windows task manager shortcut (ctrl+shift+esc). - */ -// #define GRAVE_ESC_CTRL_OVERRIDE - -/* - * Force NKRO - * - * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved - * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the - * makefile for this to work.) - * - * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) - * until the next keyboard reset. - * - * NKRO may prevent your keystrokes from being detected in the BIOS, but it is - * fully operational during normal computer usage. - * - * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) - * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by - * bootmagic, NKRO mode will always be enabled until it is toggled again during a - * power-up. - * - */ -//#define FORCE_NKRO - -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - -/* - * Feature disable options - * These options are also useful to firmware size reduction. - */ - -/* disable debug print */ -//#define NO_DEBUG - -/* disable print */ -//#define NO_PRINT - -/* disable action features */ -//#define NO_ACTION_LAYER -//#define NO_ACTION_TAPPING -//#define NO_ACTION_ONESHOT -//#define NO_ACTION_MACRO -//#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - -/* Bootmagic Lite key configuration */ -// #define BOOTMAGIC_LITE_ROW 0 -// #define BOOTMAGIC_LITE_COLUMN 0 +/* Reduce tapdance required taps from 5 to 2 */ +#define TAPPING_TOGGLE 2 diff --git a/keyboards/dumbpad/dumbpad.c b/keyboards/dumbpad/dumbpad.c deleted file mode 100644 index d9b649c715..0000000000 --- a/keyboards/dumbpad/dumbpad.c +++ /dev/null @@ -1,83 +0,0 @@ -/* Copyright 2019 Chip - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include "dumbpad.h" - -void keyboard_pre_init_kb(void) { - // Set the layer LED IO as outputs - setPinOutput(LAYER_INDICATOR_LED_0); - setPinOutput(LAYER_INDICATOR_LED_1); - - keyboard_pre_init_user(); -} - -void shutdown_user() { - // Shutdown the layer LEDs - writePinLow(LAYER_INDICATOR_LED_0); - writePinLow(LAYER_INDICATOR_LED_1); -} - -layer_state_t layer_state_set_kb(layer_state_t state) { - // Layer LEDs act as binary indication of current layer - uint8_t layer = biton32(state); - writePin(LAYER_INDICATOR_LED_0, layer & 0b1); - writePin(LAYER_INDICATOR_LED_1, (layer >> 1) & 0b1); - return layer_state_set_user(state); -} - -// Optional override functions below. -// You can leave any or all of these undefined. -// These are only required if you want to perform custom actions. - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - for (int i = 0; i < 2; i++) { - writePin(LAYER_INDICATOR_LED_0, true); - writePin(LAYER_INDICATOR_LED_1, false); - wait_ms(100); - writePin(LAYER_INDICATOR_LED_0, true); - writePin(LAYER_INDICATOR_LED_1, true); - wait_ms(100); - writePin(LAYER_INDICATOR_LED_0, false); - writePin(LAYER_INDICATOR_LED_1, true); - wait_ms(100); - writePin(LAYER_INDICATOR_LED_0, false); - writePin(LAYER_INDICATOR_LED_1, false); - wait_ms(100); - } - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/dumbpad/info.json b/keyboards/dumbpad/info.json deleted file mode 100644 index 8b6a8116e3..0000000000 --- a/keyboards/dumbpad/info.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "keyboard_name": "dumbpad", - "url": "", - "maintainer": "qmk", - "width": 5, - "height": 4, - "layouts": { - "LAYOUT": { - "layout": [ - {"label":"7", "x":1, "y":0}, - {"label":"8", "x":2, "y":0}, - {"label":"9", "x":3, "y":0}, - {"label":"BSPC", "x":4, "y":0}, - {"label":"4", "x":1, "y":1}, - {"label":"5", "x":2, "y":1}, - {"label":"6", "x":3, "y":1}, - {"label":"ESC", "x":4, "y":1}, - {"label":"1", "x":1, "y":2}, - {"label":"2", "x":2, "y":2}, - {"label":"3", "x":3, "y":2}, - {"label":"TAB", "x":4, "y":2}, - {"label":"LMOUSE", "x":0, "y":3}, - {"label":"TT(2)", "x":1, "y":3}, - {"label":"0", "x":2, "y":3}, - {"label":".", "x":3, "y":3}, - {"label":"ENT", "x":4, "y":3} - ] - } - } -} \ No newline at end of file diff --git a/keyboards/dumbpad/keymaps/default/config.h b/keyboards/dumbpad/keymaps/default/config.h deleted file mode 100644 index 8380885593..0000000000 --- a/keyboards/dumbpad/keymaps/default/config.h +++ /dev/null @@ -1,2 +0,0 @@ -#pragma once -#define TAPPING_TOGGLE 2 diff --git a/keyboards/dumbpad/keymaps/default/keymap.c b/keyboards/dumbpad/keymaps/default/keymap.c deleted file mode 100644 index c0d4a7c077..0000000000 --- a/keyboards/dumbpad/keymaps/default/keymap.c +++ /dev/null @@ -1,121 +0,0 @@ -/* Copyright 2019 imchipwood - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include QMK_KEYBOARD_H - -#define _BASE 0 -#define _SUB 1 - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* - BASE LAYER - /-----------------------------------------------------` - | | 7 | 8 | 9 | Bkspc | - | |---------|---------|---------|---------| - | | 4 | 5 | 6 | Esc | - | |---------|---------|---------|---------| - | | 1 | 2 | 3 | Tab | - |-------------|---------|---------|---------|---------| - | Left mouse | TT(SUB) | 0 | . | Enter | - \-----------------------------------------------------' - */ - [_BASE] = LAYOUT( - KC_7, KC_8, KC_9, KC_BSPC, - KC_4, KC_5, KC_6, KC_ESC, - KC_1, KC_2, KC_3, KC_TAB, - KC_BTN1, TT(_SUB), KC_0, KC_DOT, KC_ENTER - ), - /* - SUB LAYER - /-----------------------------------------------------` - | | | | | Reset | - | |---------|---------|---------|---------| - | | | | | + | - | |---------|---------|---------|---------| - | | | | | - | - |-------------|---------|---------|---------|---------| - | LOCK | | | | = | - \-----------------------------------------------------' - */ - [_SUB] = LAYOUT( - _______, _______, _______, RESET, - _______, _______, _______, KC_KP_PLUS, - _______, _______, _______, KC_KP_MINUS, - KC_LOCK, _______, _______, _______, KC_EQL - ), -}; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - // If console is enabled, it will print the matrix position and status of each key pressed -/* -#ifdef CONSOLE_ENABLE - uprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed); -#endif -*/ - return true; -} - -void keyboard_post_init_user(void) { - // Customise these values to desired behaviour - //debug_enable = true; - //debug_matrix = true; - //debug_keyboard = true; - //debug_mouse = true; -} - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} - -void encoder_update_user(uint8_t index, bool clockwise) { - /* Custom encoder control - handles CW/CCW turning of encoder - * Default behavior: - * main layer: - * CW: move mouse right - * CCW: move mouse left - * other layers: - * CW: = (equals/plus - increase slider in Adobe products) - * CCW: - (minus/underscore - decrease slider in adobe products) - */ - if (index == 0) { - switch (biton32(layer_state)) { - case _BASE: - // main layer - move mouse right (CW) and left (CCW) - if (clockwise) { - tap_code(KC_MS_R); - } else { - tap_code(KC_MS_L); - } - break; - - default: - // other layers - =/+ (quals/plus) (CW) and -/_ (minus/underscore) (CCW) - if (clockwise) { - tap_code(KC_EQL); - } else { - tap_code(KC_MINS); - } - break; - } - } -} diff --git a/keyboards/dumbpad/keymaps/imchipwood/config.h b/keyboards/dumbpad/keymaps/imchipwood/config.h deleted file mode 100644 index 8380885593..0000000000 --- a/keyboards/dumbpad/keymaps/imchipwood/config.h +++ /dev/null @@ -1,2 +0,0 @@ -#pragma once -#define TAPPING_TOGGLE 2 diff --git a/keyboards/dumbpad/keymaps/imchipwood/keymap.c b/keyboards/dumbpad/keymaps/imchipwood/keymap.c deleted file mode 100644 index 73a8e824ca..0000000000 --- a/keyboards/dumbpad/keymaps/imchipwood/keymap.c +++ /dev/null @@ -1,163 +0,0 @@ -/* Copyright 2019 imchipwood - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include QMK_KEYBOARD_H - -#define _BASE 0 -#define _SUB 1 -#define _DBG 2 - - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* - BASE LAYER - /-----------------------------------------------------` - | | 7 | 8 | 9 | Bkspc | - | |---------|---------|---------|---------| - | | 4 | 5 | 6 | + | - | |---------|---------|---------|---------| - | | 1 | 2 | 3 | * | - |-------------|---------|---------|---------|---------| - | Play/Pause | TT(SUB) | 0 | . | Enter | - \-----------------------------------------------------' - */ - [_BASE] = LAYOUT( - KC_P7, KC_P8, KC_P9, KC_BSPC, - KC_P4, KC_P5, KC_P6, KC_KP_PLUS, - KC_P1, KC_P2, KC_P3, KC_KP_ASTERISK, - KC_MPLY, TT(_SUB), KC_P0, KC_PDOT, KC_KP_ENTER - ), - /* - SUB LAYER - /-----------------------------------------------------` - | | | | | Numlock | - | |---------|---------|---------|---------| - | | | | | - | - | |---------|---------|---------|---------| - | | | | | / | - |-------------|---------|---------|---------|---------| - | MO(_DBG) | | | | = | - \-----------------------------------------------------' - */ - [_SUB] = LAYOUT( - _______, _______, _______, KC_NLCK, - _______, _______, _______, KC_KP_MINUS, - _______, _______, _______, KC_KP_SLASH, - MO(_DBG), _______, _______, _______, KC_KP_EQUAL - ), - /* - DEBUG LAYER - /-----------------------------------------------------` - | | | | | Reset | - | |---------|---------|---------|---------| - | | | | | | - | |---------|---------|---------|---------| - | | | | | | - |-------------|---------|---------|---------|---------| - | | | | | | - \-----------------------------------------------------' - */ - [_DBG] = LAYOUT( - _______, _______, _______, RESET, - _______, _______, _______, _______, - _______, _______, _______, _______, - _______, _______, _______, _______, _______ - ), -}; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - // If console is enabled, it will print the matrix position and status of each key pressed -/* -#ifdef CONSOLE_ENABLE - uprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed); -#endif -*/ - return true; -} - -void keyboard_post_init_user(void) { - // Customise these values to desired behaviour - //debug_enable = true; - //debug_matrix = true; - //debug_keyboard = true; - //debug_mouse = true; -} - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} - - -void encoder_update_user(uint8_t index, bool clockwise) { - /* Custom encoder control - handles CW/CCW turning of encoder - * Cusotom behavior: - * main layer: - * CW: volume up - * CCW: volume down - * sub layer: - * CW: next media track - * CCW: prev media track - * debug layer: - * CW: brightness up - * CCW: brightness down - */ - if (index == 0) { - switch (biton32(layer_state)) { - case _BASE: - // main layer - volume up (CW) and down (CCW) - if (clockwise) { - tap_code(KC_VOLU); - } else { - tap_code(KC_VOLD); - } - break; - - case _SUB: - // sub layer - next track (CW) and previous track (CCW) - if (clockwise) { - tap_code(KC_MNXT); - } else { - tap_code(KC_MPRV); - } - break; - - case _DBG: - // debug layer - brightness up (CW) and brightness down (CCW) - if (clockwise) { - tap_code(KC_BRIU); - } else { - tap_code(KC_BRID); - } - break; - - default: - // any other layer (shouldn't exist..) - volume up (CW) and down (CCW) - if (clockwise) { - tap_code(KC_VOLU); - } else { - tap_code(KC_VOLD); - } - break; - } - } -} diff --git a/keyboards/dumbpad/readme.md b/keyboards/dumbpad/readme.md index 8f3789bcb3..ad72ed58d8 100644 --- a/keyboards/dumbpad/readme.md +++ b/keyboards/dumbpad/readme.md @@ -1,19 +1,23 @@ # dumbpad -![dumbpad](https://i.imgur.com/sS3fq1Z.jpg) +![dumbpad](https://i.imgur.com/1T7ciLZl.jpg) -A 4x4 macro/numpad with rotary encoder. +dumbpad is a num/macro pad available in two major form factors - single- and dual-rotary encoder. -Keyboard Maintainer: [imchipwood](https://github.com/imchipwood) +* Single-encoder PCBs are reversible - components can be soldered to either side to allow +the encoder to be on either the left or right side. +* Dual-encoder PCBs come in two versions - one with the encoders in the bottom corners, the otherin the top corners -PCB repository: https://github.com/imchipwood/dumbpad +Support for dumbpad all PCB revisions can be found in this directory. -Make example for this keyboard (after setting up your build environment): - - make dumbpad:default - -Program with: - - make dumbpad:default:avrdude - -See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). +* Maintainer: [imchipwood](https://github.com/imchipwood) +* PCB repository: [dumbpad on github](https://github.com/imchipwood/dumbpad) + * PCB revisions: + * v0.x - these revisions have two LEDs for layer indication + * ['v0x'](v0x/): Default setup for single rotary encoder v0.x PCBs + * ['v0x_right'](v0x_right/): Same as v0x but with rotary encoder on right side (components on bottom of PCB) + * ['v0x_dualencoder'](v0x_dualencoder/): Dual-encoder PCBs + * v1.x - these revisions have three LEDs - two for layer indication, one for numlock indication + * ['v1x'](v1x/): Default setup for v1.x PCBs with a single rotary encoder on the left side + * ['v1x_right'](v1x_right/): Same as v1x but with rotary encoder on right side (components on bottom of PCB) + * ['v1x_dualencoder'](v1x_dualencoder/): v1x PCB with two rotary encoders diff --git a/keyboards/dumbpad/rules.mk b/keyboards/dumbpad/rules.mk index 2ccf3e8228..87ec1ab01b 100644 --- a/keyboards/dumbpad/rules.mk +++ b/keyboards/dumbpad/rules.mk @@ -1,35 +1 @@ -# MCU name -MCU = atmega32u4 - -# Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = caterina - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = yes # Console for debug -COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 - -ENCODER_ENABLE = yes -MOUSEKEY_ENABLE = yes -KEY_LOCK_ENABLE = yes +DEFAULT_FOLDER = dumbpad/v0x diff --git a/keyboards/dumbpad/v0x/config.h b/keyboards/dumbpad/v0x/config.h new file mode 100644 index 0000000000..6d503c9abe --- /dev/null +++ b/keyboards/dumbpad/v0x/config.h @@ -0,0 +1,41 @@ +/* +Copyright 2020 imchipwood + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define DEVICE_VER 0x0007 + +/* Column/Row IO definitions */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 5 +#define MATRIX_ROW_PINS { F4, F5, F6, F7 } +#define MATRIX_COL_PINS { C6, D7, E6, B4, B5 } +#define UNUSED_PINS + +/* Single rotary encoder */ +#define ENCODERS_PAD_A { D0 } +#define ENCODERS_PAD_B { D4 } + +/* Onboard LEDs */ +#define LED_00 B3 +#define LED_01 B1 + +/* Bootmagic - hold down rotary encoder pushbutton while plugging in to enter bootloader */ +#define BOOTMAGIC_LITE_ROW 3 +#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/dumbpad/v0x/info.json b/keyboards/dumbpad/v0x/info.json new file mode 100644 index 0000000000..7ac64ee689 --- /dev/null +++ b/keyboards/dumbpad/v0x/info.json @@ -0,0 +1,18 @@ +{ + "keyboard_name": "dumbpad/v0x", + "keyboard_folder": "dumbpad/v0x", + "url": "https://www.github.com/imchipwood/dumbpad", + "maintainer": "imchipwood", + "width": 5, + "height": 4, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, + {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, + {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, + {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3} + ] + } + } +} diff --git a/keyboards/dumbpad/v0x/keymaps/default/keymap.c b/keyboards/dumbpad/v0x/keymaps/default/keymap.c new file mode 100644 index 0000000000..7ded9f74ed --- /dev/null +++ b/keyboards/dumbpad/v0x/keymaps/default/keymap.c @@ -0,0 +1,106 @@ +/* Copyright 2020 imchipwood + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + BASE LAYER + /-----------------------------------------------------` + | | 7 | 8 | 9 | Bkspc | + | |---------|---------|---------|---------| + | | 4 | 5 | 6 | Esc | + | |---------|---------|---------|---------| + | | 1 | 2 | 3 | Tab | + |-------------|---------|---------|---------|---------| + | Left mouse | TT(1) | 0 | . | Enter | + \-----------------------------------------------------' + */ + [0] = LAYOUT( + KC_7, KC_8, KC_9, KC_BSPC, + KC_4, KC_5, KC_6, KC_ESC, + KC_1, KC_2, KC_3, KC_TAB, + KC_BTN1, TT(1), KC_0, LSFT_T(KC_DOT), KC_ENTER + ), + /* + SUB LAYER + /-----------------------------------------------------` + | | | | | Reset | + | |---------|---------|---------|---------| + | | | | | + | + | |---------|---------|---------|---------| + | | | | | - | + |-------------|---------|---------|---------|---------| + | LOCK | | | | = | + \-----------------------------------------------------' + */ + [1] = LAYOUT( + _______, _______, _______, RESET, + _______, _______, _______, KC_KP_PLUS, + _______, _______, _______, KC_KP_MINUS, + KC_LOCK, _______, _______, _______, KC_EQL + ), +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + // If console is enabled, it will print the matrix position and status of each key pressed +/* +#ifdef CONSOLE_ENABLE + uprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed); +#endif +*/ + return true; +} + +void keyboard_post_init_user(void) { + // Customise these values to desired behaviour + //debug_enable = true; + //debug_matrix = true; + //debug_keyboard = true; + //debug_mouse = true; +} + +void encoder_update_user(uint8_t index, bool clockwise) { + /* Custom encoder control - handles CW/CCW turning of encoder + * Default behavior: + * main layer: + * CW: move mouse right + * CCW: move mouse left + * other layers: + * CW: = (equals/plus - increase slider in Adobe products) + * CCW: - (minus/underscore - decrease slider in adobe products) + */ + if (index == 0) { + switch (get_highest_layer(layer_state)) { + case 0: + // main layer - move mouse right (CW) and left (CCW) + if (clockwise) { + tap_code(KC_MS_R); + } else { + tap_code(KC_MS_L); + } + break; + + default: + // other layers - =/+ (quals/plus) (CW) and -/_ (minus/underscore) (CCW) + if (clockwise) { + tap_code(KC_EQL); + } else { + tap_code(KC_MINS); + } + break; + } + } +} diff --git a/keyboards/dumbpad/v0x/readme.md b/keyboards/dumbpad/v0x/readme.md new file mode 100644 index 0000000000..ff302de3f9 --- /dev/null +++ b/keyboards/dumbpad/v0x/readme.md @@ -0,0 +1,15 @@ +# dumbpad v0.x + +![dumbpad](https://i.imgur.com/c3YBNp0l.jpg) + +A 4x4 numpad/macropad with a rotary encoder to the left of the bottom row of keys. + +* Keyboard Maintainer: [imchipwood](https://github.com/imchipwood) +* Hardware repository: [dumbpad on github](https://github.com/imchipwood/dumbpad) +* PCB Revisions Supported: v0.2, v0.6, v0.7 + +Make example for this keyboard (after setting up your build environment): + + make dumbpad/v0x:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/dumbpad/v0x/rules.mk b/keyboards/dumbpad/v0x/rules.mk new file mode 100644 index 0000000000..309e3d48c0 --- /dev/null +++ b/keyboards/dumbpad/v0x/rules.mk @@ -0,0 +1,25 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output + +ENCODER_ENABLE = yes +KEY_LOCK_ENABLE = yes diff --git a/keyboards/dumbpad/v0x/templates/keymap.c b/keyboards/dumbpad/v0x/templates/keymap.c new file mode 100644 index 0000000000..11ed745188 --- /dev/null +++ b/keyboards/dumbpad/v0x/templates/keymap.c @@ -0,0 +1,25 @@ +#include QMK_KEYBOARD_H +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {__KEYMAP_GOES_HERE__}; + + +void encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + switch (get_highest_layer(layer_state)) { + case 0: + if (clockwise) { + tap_code(KC_MS_R); + } else { + tap_code(KC_MS_L); + } + break; + + default: + if (clockwise) { + tap_code(KC_EQL); + } else { + tap_code(KC_MINS); + } + break; + } + } +} diff --git a/keyboards/dumbpad/v0x/v0x.c b/keyboards/dumbpad/v0x/v0x.c new file mode 100644 index 0000000000..b981c3769f --- /dev/null +++ b/keyboards/dumbpad/v0x/v0x.c @@ -0,0 +1,59 @@ +/* Copyright 2020 imchipwood + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "v0x.h" + +void keyboard_pre_init_kb(void) { + // Set LED IO as outputs + setPinOutput(LED_00); + setPinOutput(LED_01); + keyboard_pre_init_user(); +} + +void shutdown_user() { + // Shutdown LEDs + writePinLow(LED_00); + writePinLow(LED_01); +} + +layer_state_t layer_state_set_kb(layer_state_t state) { + // Layer LEDs act as binary indication of current layer + uint8_t layer = get_highest_layer(state); + writePin(LED_00, layer & 0b1); + writePin(LED_01, (layer >> 1) & 0b1); + return layer_state_set_user(state); +} + +// Optional override functions below. +// You can leave any or all of these undefined. +// These are only required if you want to perform custom actions. + +void matrix_init_kb(void) { + // put your keyboard start-up code here + // runs once when the firmware starts up + uint8_t led_delay_ms = 80; + for (int i = 0; i < 2; i++) { + writePinHigh(LED_00); + writePinHigh(LED_01); + wait_ms(led_delay_ms); + writePinLow(LED_00); + writePinLow(LED_01); + if (i < 1) { + wait_ms(led_delay_ms); + } + } + + matrix_init_user(); +} diff --git a/keyboards/dumbpad/dumbpad.h b/keyboards/dumbpad/v0x/v0x.h similarity index 66% rename from keyboards/dumbpad/dumbpad.h rename to keyboards/dumbpad/v0x/v0x.h index b7c7694e30..578250f917 100644 --- a/keyboards/dumbpad/dumbpad.h +++ b/keyboards/dumbpad/v0x/v0x.h @@ -1,4 +1,4 @@ -/* Copyright 2019 Chip +/* Copyright 2020 imchipwood * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -14,22 +14,13 @@ * along with this program. If not, see . */ #pragma once - #include "quantum.h" -/* This a shortcut to help you visually see your layout. - * - * The first section contains all of the arguments representing the physical - * layout of the board and position of the keys. - * - * The second converts the arguments into a two-dimensional array which - * represents the switch matrix. - */ #define LAYOUT( \ - k01, k02, k03, k04, \ - k11, k12, k13, k14, \ - k21, k22, k23, k24, \ - k30, k31, k32, k33, k34 \ + k01, k02, k03, k04, \ + k11, k12, k13, k14, \ + k21, k22, k23, k24, \ + k30, k31, k32, k33, k34 \ ) \ { \ { KC_NO, k01, k02, k03, k04 }, \ diff --git a/keyboards/dumbpad/v0x_dualencoder/config.h b/keyboards/dumbpad/v0x_dualencoder/config.h new file mode 100644 index 0000000000..586e55056c --- /dev/null +++ b/keyboards/dumbpad/v0x_dualencoder/config.h @@ -0,0 +1,40 @@ +/* +Copyright 2020 imchipwood + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define DEVICE_VER 0x0006 + +/* Column/Row IO definitions - dualencoder version is true 4x4 */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 4 +#define MATRIX_ROW_PINS { F4, F5, F6, F7 } +#define MATRIX_COL_PINS { D7, E6, B4, B5 } + +/* Dual rotary encoders */ +#define ENCODERS_PAD_A { C6, D0 } +#define ENCODERS_PAD_B { D4, D1 } + +/* Onboard LEDs */ +#define LED_00 B3 +#define LED_01 B1 + +/* Bootmagic - hold down rotary encoder pushbutton while plugging in to enter bootloader */ +#define BOOTMAGIC_LITE_ROW 3 +#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/dumbpad/v0x_dualencoder/info.json b/keyboards/dumbpad/v0x_dualencoder/info.json new file mode 100644 index 0000000000..09a7d14b95 --- /dev/null +++ b/keyboards/dumbpad/v0x_dualencoder/info.json @@ -0,0 +1,18 @@ +{ + "keyboard_name": "dumbpad/v0x_dualencoder", + "keyboard_folder": "dumbpad/v0x_dualencoder", + "url": "https://www.github.com/imchipwood/dumbpad", + "maintainer": "imchipwood", + "width": 4, + "height": 4, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, + {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, + {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, + {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3} + ] + } + } +} diff --git a/keyboards/dumbpad/v0x_dualencoder/keymaps/default/keymap.c b/keyboards/dumbpad/v0x_dualencoder/keymaps/default/keymap.c new file mode 100644 index 0000000000..59f36a1a91 --- /dev/null +++ b/keyboards/dumbpad/v0x_dualencoder/keymaps/default/keymap.c @@ -0,0 +1,134 @@ +/* Copyright 2020 imchipwood + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + BASE LAYER + /---------------------------------------` + | 7 | 8 | 9 | Bkspc | + |---------|---------|---------|---------| + | 4 | 5 | 6 | Esc | + |---------|---------|---------|---------| + | 1 | 2 | 3 | Tab | + |---------|---------|---------|---------| + | TT(1) | 0 | . | Enter | + \---------------------------------------' + */ + [0] = LAYOUT( + KC_7, KC_8, KC_9, KC_BSPC, + KC_4, KC_5, KC_6, KC_ESC, + KC_1, KC_2, KC_3, KC_TAB, + TT(1), KC_0, KC_DOT, KC_ENTER + ), + /* + SUB LAYER + /---------------------------------------` + | | | | Reset | + |---------|---------|---------|---------| + | | | | + | + |---------|---------|---------|---------| + | | | | - | + |---------|---------|---------|---------| + | | | | = | + \---------------------------------------' + */ + [1] = LAYOUT( + _______, _______, _______, RESET, + _______, _______, _______, KC_KP_PLUS, + _______, _______, _______, KC_KP_MINUS, + _______, _______, _______, KC_EQL + ), +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + // If console is enabled, it will print the matrix position and status of each key pressed +/* +#ifdef CONSOLE_ENABLE + uprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed); +#endif +*/ + return true; +} + +void keyboard_post_init_user(void) { + // Customise these values to desired behaviour + // debug_enable = true; + // debug_matrix = true; + // debug_keyboard = true; + // debug_mouse = true; +} + +void encoder_update_user(uint8_t index, bool clockwise) { + /* Custom encoder control - handles CW/CCW turning of encoder + * Default behavior: + * left encoder: + * main layer: + * CW: move mouse right + * CCW: move mouse left + * other layers: + * CW: = (equals/plus - increase slider in Adobe products) + * CCW: - (minus/underscore - decrease slider in adobe products) + * right encoder: + * main layer: + * CW: colume up + * CCW: volume down + * other layers: + * CW: right arrow + * CCW: left arrow + */ + if (index == 0) { + switch (get_highest_layer(layer_state)) { + case 0: + // main layer - move mouse right (CW) and left (CCW) + if (clockwise) { + tap_code(KC_MS_R); + } else { + tap_code(KC_MS_L); + } + break; + + default: + // other layers - =/+ (quals/plus) (CW) and -/_ (minus/underscore) (CCW) + if (clockwise) { + tap_code(KC_EQL); + } else { + tap_code(KC_MINS); + } + break; + } + } else if (index == 1) { + switch (get_highest_layer(layer_state)) { + case 0: + // main layer - volume up (CW) and down (CCW) + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + break; + + default: + // other layers - right (CW) and left (CCW) + if (clockwise) { + tap_code(KC_RIGHT); + } else { + tap_code(KC_LEFT); + } + break; + } + } +} diff --git a/keyboards/dumbpad/v0x_dualencoder/readme.md b/keyboards/dumbpad/v0x_dualencoder/readme.md new file mode 100644 index 0000000000..a4aedb5824 --- /dev/null +++ b/keyboards/dumbpad/v0x_dualencoder/readme.md @@ -0,0 +1,15 @@ +# dumbpad v0.x dual-encoder + +![dumbpad](https://i.imgur.com/OkSRXWTl.jpg) + +A 4x4 numpad/macropad with two rotary encoders + +* Keyboard Maintainer: [imchipwood](https://github.com/imchipwood) +* Hardware repository: [dumbpad on github](https://github.com/imchipwood/dumbpad) +* PCB Revisions Supported: v0.6_dualencoder, v0.6_dualencoder_top + +Make example for this keyboard (after setting up your build environment): + + make dumbpad/v0x_dualencoder:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/dumbpad/v0x_dualencoder/rules.mk b/keyboards/dumbpad/v0x_dualencoder/rules.mk new file mode 100644 index 0000000000..309e3d48c0 --- /dev/null +++ b/keyboards/dumbpad/v0x_dualencoder/rules.mk @@ -0,0 +1,25 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output + +ENCODER_ENABLE = yes +KEY_LOCK_ENABLE = yes diff --git a/keyboards/dumbpad/v0x_dualencoder/templates/keymap.c b/keyboards/dumbpad/v0x_dualencoder/templates/keymap.c new file mode 100644 index 0000000000..0c2be0aad4 --- /dev/null +++ b/keyboards/dumbpad/v0x_dualencoder/templates/keymap.c @@ -0,0 +1,43 @@ +#include QMK_KEYBOARD_H +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {__KEYMAP_GOES_HERE__}; + + +void encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + switch (get_highest_layer(layer_state)) { + case 0: + if (clockwise) { + tap_code(KC_MS_R); + } else { + tap_code(KC_MS_L); + } + break; + + default: + if (clockwise) { + tap_code(KC_EQL); + } else { + tap_code(KC_MINS); + } + break; + } + } else if (index == 1) { + switch (get_highest_layer(layer_state)) { + case 0: + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + break; + + default: + if (clockwise) { + tap_code(KC_RIGHT); + } else { + tap_code(KC_LEFT); + } + break; + } + } +} diff --git a/keyboards/dumbpad/v0x_dualencoder/v0x_dualencoder.c b/keyboards/dumbpad/v0x_dualencoder/v0x_dualencoder.c new file mode 100644 index 0000000000..9b2a2cd241 --- /dev/null +++ b/keyboards/dumbpad/v0x_dualencoder/v0x_dualencoder.c @@ -0,0 +1,59 @@ +/* Copyright 2020 imchipwood + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "v0x_dualencoder.h" + +void keyboard_pre_init_kb(void) { + // Set LED IO as outputs + setPinOutput(LED_00); + setPinOutput(LED_01); + keyboard_pre_init_user(); +} + +void shutdown_user() { + // Shutdown LEDs + writePinLow(LED_00); + writePinLow(LED_01); +} + +layer_state_t layer_state_set_kb(layer_state_t state) { + // Layer LEDs act as binary indication of current layer + uint8_t layer = get_highest_layer(state); + writePin(LED_00, layer & 0b1); + writePin(LED_01, (layer >> 1) & 0b1); + return layer_state_set_user(state); +} + +// Optional override functions below. +// You can leave any or all of these undefined. +// These are only required if you want to perform custom actions. + +void matrix_init_kb(void) { + // put your keyboard start-up code here + // runs once when the firmware starts up + uint8_t led_delay_ms = 80; + for (int i = 0; i < 2; i++) { + writePinHigh(LED_00); + writePinHigh(LED_01); + wait_ms(led_delay_ms); + writePinLow(LED_00); + writePinLow(LED_01); + if (i < 1) { + wait_ms(led_delay_ms); + } + } + + matrix_init_user(); +} diff --git a/keyboards/dumbpad/v0x_dualencoder/v0x_dualencoder.h b/keyboards/dumbpad/v0x_dualencoder/v0x_dualencoder.h new file mode 100644 index 0000000000..f38d398857 --- /dev/null +++ b/keyboards/dumbpad/v0x_dualencoder/v0x_dualencoder.h @@ -0,0 +1,30 @@ +/* Copyright 2020 imchipwood + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once +#include "quantum.h" + +#define LAYOUT( \ + k00, k01, k02, k03, \ + k10, k11, k12, k13, \ + k20, k21, k22, k23, \ + k30, k31, k32, k33 \ +) \ +{ \ + { k00, k01, k02, k03 }, \ + { k10, k11, k12, k13 }, \ + { k20, k21, k22, k23 }, \ + { k30, k31, k32, k33 }, \ +} diff --git a/keyboards/dumbpad/v0x_right/config.h b/keyboards/dumbpad/v0x_right/config.h new file mode 100644 index 0000000000..0380203fdf --- /dev/null +++ b/keyboards/dumbpad/v0x_right/config.h @@ -0,0 +1,39 @@ +/* +Copyright 2020 imchipwood + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +/* USB Device descriptor parameter */ +#define DEVICE_VER 0x0007 + +/* Column/Row IO definitions */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 5 +#define MATRIX_ROW_PINS { F4, F5, F6, F7 } +#define MATRIX_COL_PINS { B5, B4, E6, D7, C6 } +#define UNUSED_PINS + +/* Single rotary encoder */ +#define ENCODERS_PAD_A { D4 } +#define ENCODERS_PAD_B { D0 } + +/* Onboard LEDs */ +#define LED_00 B1 +#define LED_01 B3 + +/* Bootmagic - hold down rotary encoder pushbutton while plugging in to enter bootloader */ +#define BOOTMAGIC_LITE_ROW 3 +#define BOOTMAGIC_LITE_COLUMN 4 diff --git a/keyboards/dumbpad/v0x_right/info.json b/keyboards/dumbpad/v0x_right/info.json new file mode 100644 index 0000000000..d8225c6ee5 --- /dev/null +++ b/keyboards/dumbpad/v0x_right/info.json @@ -0,0 +1,18 @@ +{ + "keyboard_name": "dumbpad/v0x_right", + "keyboard_folder": "dumbpad/v0x_right", + "url": "https://www.github.com/imchipwood/dumbpad", + "maintainer": "imchipwood", + "width": 5, + "height": 4, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, + {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, + {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, + {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3} + ] + } + } +} diff --git a/keyboards/dumbpad/v0x_right/keymaps/default/keymap.c b/keyboards/dumbpad/v0x_right/keymaps/default/keymap.c new file mode 100644 index 0000000000..4050ac9420 --- /dev/null +++ b/keyboards/dumbpad/v0x_right/keymaps/default/keymap.c @@ -0,0 +1,106 @@ +/* Copyright 2020 imchipwood + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + BASE LAYER + /-----------------------------------------------------` + | 7 | 8 | 9 | Bkspc | | + |---------|---------|---------|---------| | + | 4 | 5 | 6 | Esc | | + |---------|---------|---------|---------| | + | 1 | 2 | 3 | Tab | | + |---------|---------|---------|---------|-------------| + | TT(1) | 0 | . | Enter | Left mouse | + \-----------------------------------------------------' + */ + [0] = LAYOUT( + KC_7, KC_8, KC_9, KC_BSPC, + KC_4, KC_5, KC_6, KC_ESC, + KC_1, KC_2, KC_3, KC_TAB, + TT(1), KC_0, LSFT_T(KC_DOT), KC_ENTER, KC_BTN1 + ), + /* + SUB LAYER + /-----------------------------------------------------` + | | | | Reset | | + |---------|---------|---------|---------| | + | | | | + | | + |---------|---------|---------|---------| | + | | | | - | | + |---------|---------|---------|---------|-------------| + | | | | = | LOCK | + \-----------------------------------------------------' + */ + [1] = LAYOUT( + _______, _______, _______, RESET, + _______, _______, _______, KC_KP_PLUS, + _______, _______, _______, KC_KP_MINUS, + _______, _______, _______, KC_EQL, KC_LOCK + ), +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + // If console is enabled, it will print the matrix position and status of each key pressed +/* +#ifdef CONSOLE_ENABLE + uprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed); +#endif +*/ + return true; +} + +void keyboard_post_init_user(void) { + // Customise these values to desired behaviour + // debug_enable = true; + // debug_matrix = true; + // debug_keyboard = true; + // debug_mouse = true; +} + +void encoder_update_user(uint8_t index, bool clockwise) { + /* Custom encoder control - handles CW/CCW turning of encoder + * Default behavior: + * main layer: + * CW: move mouse right + * CCW: move mouse left + * other layers: + * CW: = (equals/plus - increase slider in Adobe products) + * CCW: - (minus/underscore - decrease slider in adobe products) + */ + if (index == 0) { + switch (get_highest_layer(layer_state)) { + case 0: + // main layer - move mouse right (CW) and left (CCW) + if (clockwise) { + tap_code(KC_MS_R); + } else { + tap_code(KC_MS_L); + } + break; + + default: + // other layers - =/+ (quals/plus) (CW) and -/_ (minus/underscore) (CCW) + if (clockwise) { + tap_code(KC_EQL); + } else { + tap_code(KC_MINS); + } + break; + } + } +} diff --git a/keyboards/dumbpad/v0x_right/readme.md b/keyboards/dumbpad/v0x_right/readme.md new file mode 100644 index 0000000000..152ed9b108 --- /dev/null +++ b/keyboards/dumbpad/v0x_right/readme.md @@ -0,0 +1,15 @@ +# dumbpad v0.x with encoder on right side + +![dumbpad](https://i.imgur.com/c3YBNp0l.jpg) + +A 4x4 numpad/macropad with a rotary encoder to the right of the bottom row of keys. + +* Keyboard Maintainer: [imchipwood](https://github.com/imchipwood) +* Hardware repository: [dumbpad on github](https://github.com/imchipwood/dumbpad) +* PCB Revisions Supported: v0.6, v0.7 + +Make example for this keyboard (after setting up your build environment): + + make dumbpad/v0x_right:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/dumbpad/v0x_right/rules.mk b/keyboards/dumbpad/v0x_right/rules.mk new file mode 100644 index 0000000000..309e3d48c0 --- /dev/null +++ b/keyboards/dumbpad/v0x_right/rules.mk @@ -0,0 +1,25 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output + +ENCODER_ENABLE = yes +KEY_LOCK_ENABLE = yes diff --git a/keyboards/dumbpad/v0x_right/templates/keymap.c b/keyboards/dumbpad/v0x_right/templates/keymap.c new file mode 100644 index 0000000000..11ed745188 --- /dev/null +++ b/keyboards/dumbpad/v0x_right/templates/keymap.c @@ -0,0 +1,25 @@ +#include QMK_KEYBOARD_H +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {__KEYMAP_GOES_HERE__}; + + +void encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + switch (get_highest_layer(layer_state)) { + case 0: + if (clockwise) { + tap_code(KC_MS_R); + } else { + tap_code(KC_MS_L); + } + break; + + default: + if (clockwise) { + tap_code(KC_EQL); + } else { + tap_code(KC_MINS); + } + break; + } + } +} diff --git a/keyboards/dumbpad/v0x_right/v0x_right.c b/keyboards/dumbpad/v0x_right/v0x_right.c new file mode 100644 index 0000000000..2a987b2eaa --- /dev/null +++ b/keyboards/dumbpad/v0x_right/v0x_right.c @@ -0,0 +1,59 @@ +/* Copyright 2020 imchipwood + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "v0x_right.h" + +void keyboard_pre_init_kb(void) { + // Set LED IO as outputs + setPinOutput(LED_00); + setPinOutput(LED_01); + keyboard_pre_init_user(); +} + +void shutdown_user() { + // Shutdown LEDs + writePinLow(LED_00); + writePinLow(LED_01); +} + +layer_state_t layer_state_set_kb(layer_state_t state) { + // Layer LEDs act as binary indication of current layer + uint8_t layer = get_highest_layer(state); + writePin(LED_00, layer & 0b1); + writePin(LED_01, (layer >> 1) & 0b1); + return layer_state_set_user(state); +} + +// Optional override functions below. +// You can leave any or all of these undefined. +// These are only required if you want to perform custom actions. + +void matrix_init_kb(void) { + // put your keyboard start-up code here + // runs once when the firmware starts up + uint8_t led_delay_ms = 80; + for (int i = 0; i < 2; i++) { + writePinHigh(LED_00); + writePinHigh(LED_01); + wait_ms(led_delay_ms); + writePinLow(LED_00); + writePinLow(LED_01); + if (i < 1) { + wait_ms(led_delay_ms); + } + } + + matrix_init_user(); +} diff --git a/keyboards/dumbpad/v0x_right/v0x_right.h b/keyboards/dumbpad/v0x_right/v0x_right.h new file mode 100644 index 0000000000..169f391e82 --- /dev/null +++ b/keyboards/dumbpad/v0x_right/v0x_right.h @@ -0,0 +1,30 @@ +/* Copyright 2020 imchipwood + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once +#include "quantum.h" + +#define LAYOUT( \ + k00, k01, k02, k03, \ + k10, k11, k12, k13, \ + k20, k21, k22, k23, \ + k30, k31, k32, k33, k34 \ +) \ +{ \ + { k00, k01, k02, k03, KC_NO }, \ + { k10, k11, k12, k13, KC_NO }, \ + { k20, k21, k22, k23, KC_NO }, \ + { k30, k31, k32, k33, k34 }, \ +} diff --git a/keyboards/dumbpad/v1x/config.h b/keyboards/dumbpad/v1x/config.h new file mode 100644 index 0000000000..0d967a6a01 --- /dev/null +++ b/keyboards/dumbpad/v1x/config.h @@ -0,0 +1,42 @@ +/* +Copyright 2020 imchipwood + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define DEVICE_VER 0x0010 + +/* Column/Row IO definitions */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 5 +#define MATRIX_ROW_PINS { F4, F5, F6, F7 } +#define MATRIX_COL_PINS { C6, D7, E6, B4, B5 } +#define UNUSED_PINS + +/* Single rotary encoder */ +#define ENCODERS_PAD_A { B2 } +#define ENCODERS_PAD_B { D4 } + +/* Onboard LEDs */ +#define LED_00 B6 +#define LED_01 B1 +#define LED_02 B3 + +/* Bootmagic - hold down rotary encoder pushbutton while plugging in to enter bootloader */ +#define BOOTMAGIC_LITE_ROW 3 +#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/dumbpad/v1x/info.json b/keyboards/dumbpad/v1x/info.json new file mode 100644 index 0000000000..3b5739d832 --- /dev/null +++ b/keyboards/dumbpad/v1x/info.json @@ -0,0 +1,18 @@ +{ + "keyboard_name": "dumbpad/v1x", + "keyboard_folder": "dumbpad/v1x", + "url": "https://www.github.com/imchipwood/dumbpad", + "maintainer": "imchipwood", + "width": 5, + "height": 4, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, + {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, + {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, + {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3} + ] + } + } +} diff --git a/keyboards/dumbpad/v1x/keymaps/default/keymap.c b/keyboards/dumbpad/v1x/keymaps/default/keymap.c new file mode 100644 index 0000000000..7ded9f74ed --- /dev/null +++ b/keyboards/dumbpad/v1x/keymaps/default/keymap.c @@ -0,0 +1,106 @@ +/* Copyright 2020 imchipwood + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + BASE LAYER + /-----------------------------------------------------` + | | 7 | 8 | 9 | Bkspc | + | |---------|---------|---------|---------| + | | 4 | 5 | 6 | Esc | + | |---------|---------|---------|---------| + | | 1 | 2 | 3 | Tab | + |-------------|---------|---------|---------|---------| + | Left mouse | TT(1) | 0 | . | Enter | + \-----------------------------------------------------' + */ + [0] = LAYOUT( + KC_7, KC_8, KC_9, KC_BSPC, + KC_4, KC_5, KC_6, KC_ESC, + KC_1, KC_2, KC_3, KC_TAB, + KC_BTN1, TT(1), KC_0, LSFT_T(KC_DOT), KC_ENTER + ), + /* + SUB LAYER + /-----------------------------------------------------` + | | | | | Reset | + | |---------|---------|---------|---------| + | | | | | + | + | |---------|---------|---------|---------| + | | | | | - | + |-------------|---------|---------|---------|---------| + | LOCK | | | | = | + \-----------------------------------------------------' + */ + [1] = LAYOUT( + _______, _______, _______, RESET, + _______, _______, _______, KC_KP_PLUS, + _______, _______, _______, KC_KP_MINUS, + KC_LOCK, _______, _______, _______, KC_EQL + ), +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + // If console is enabled, it will print the matrix position and status of each key pressed +/* +#ifdef CONSOLE_ENABLE + uprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed); +#endif +*/ + return true; +} + +void keyboard_post_init_user(void) { + // Customise these values to desired behaviour + //debug_enable = true; + //debug_matrix = true; + //debug_keyboard = true; + //debug_mouse = true; +} + +void encoder_update_user(uint8_t index, bool clockwise) { + /* Custom encoder control - handles CW/CCW turning of encoder + * Default behavior: + * main layer: + * CW: move mouse right + * CCW: move mouse left + * other layers: + * CW: = (equals/plus - increase slider in Adobe products) + * CCW: - (minus/underscore - decrease slider in adobe products) + */ + if (index == 0) { + switch (get_highest_layer(layer_state)) { + case 0: + // main layer - move mouse right (CW) and left (CCW) + if (clockwise) { + tap_code(KC_MS_R); + } else { + tap_code(KC_MS_L); + } + break; + + default: + // other layers - =/+ (quals/plus) (CW) and -/_ (minus/underscore) (CCW) + if (clockwise) { + tap_code(KC_EQL); + } else { + tap_code(KC_MINS); + } + break; + } + } +} diff --git a/keyboards/dumbpad/v1x/readme.md b/keyboards/dumbpad/v1x/readme.md new file mode 100644 index 0000000000..260a6816a5 --- /dev/null +++ b/keyboards/dumbpad/v1x/readme.md @@ -0,0 +1,15 @@ +# dumbpad v1.x + +![dumbpad](https://i.imgur.com/ND03FiFl.png) + +A 4x4 numpad/macropad with a rotary encoder to the left of the bottom row of keys. + +* Keyboard Maintainer: [imchipwood](https://github.com/imchipwood) +* Hardware repository: [dumbpad on github](https://github.com/imchipwood/dumbpad) +* PCB Revisions Supported: v1.0 + +Make example for this keyboard (after setting up your build environment): + + make dumbpad/v1x:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/dumbpad/v1x/rules.mk b/keyboards/dumbpad/v1x/rules.mk new file mode 100644 index 0000000000..309e3d48c0 --- /dev/null +++ b/keyboards/dumbpad/v1x/rules.mk @@ -0,0 +1,25 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output + +ENCODER_ENABLE = yes +KEY_LOCK_ENABLE = yes diff --git a/keyboards/dumbpad/v1x/templates/keymap.c b/keyboards/dumbpad/v1x/templates/keymap.c new file mode 100644 index 0000000000..11ed745188 --- /dev/null +++ b/keyboards/dumbpad/v1x/templates/keymap.c @@ -0,0 +1,25 @@ +#include QMK_KEYBOARD_H +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {__KEYMAP_GOES_HERE__}; + + +void encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + switch (get_highest_layer(layer_state)) { + case 0: + if (clockwise) { + tap_code(KC_MS_R); + } else { + tap_code(KC_MS_L); + } + break; + + default: + if (clockwise) { + tap_code(KC_EQL); + } else { + tap_code(KC_MINS); + } + break; + } + } +} diff --git a/keyboards/dumbpad/v1x/v1x.c b/keyboards/dumbpad/v1x/v1x.c new file mode 100644 index 0000000000..0adef0f610 --- /dev/null +++ b/keyboards/dumbpad/v1x/v1x.c @@ -0,0 +1,69 @@ +/* Copyright 2020 imchipwood + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "v1x.h" + +void keyboard_pre_init_kb(void) { + // Set LED IO as outputs + setPinOutput(LED_00); + setPinOutput(LED_01); + setPinOutput(LED_02); + keyboard_pre_init_user(); +} + +void shutdown_user() { + // Shutdown LEDs + writePinLow(LED_00); + writePinLow(LED_01); + writePinLow(LED_02); +} + +layer_state_t layer_state_set_kb(layer_state_t state) { + // Layer LEDs act as binary indication of current layer + uint8_t layer = get_highest_layer(state); + writePin(LED_00, layer & 0b1); + writePin(LED_01, (layer >> 1) & 0b1); + return layer_state_set_user(state); +} + +// Optional override functions below. +// You can leave any or all of these undefined. +// These are only required if you want to perform custom actions. + +void matrix_init_kb(void) { + // put your keyboard start-up code here + // runs once when the firmware starts up + uint8_t led_delay_ms = 80; + for (int i = 0; i < 2; i++) { + writePinHigh(LED_00); + writePinHigh(LED_01); + writePinHigh(LED_02); + wait_ms(led_delay_ms); + writePinLow(LED_00); + writePinLow(LED_01); + writePinLow(LED_02); + if (i < 1) { + wait_ms(led_delay_ms); + } + } + + matrix_init_user(); +} + +void led_set_kb(uint8_t usb_led) { + // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here + writePin(LED_02, !IS_LED_ON(usb_led, USB_LED_NUM_LOCK)); + led_set_user(usb_led); +} diff --git a/keyboards/dumbpad/v1x/v1x.h b/keyboards/dumbpad/v1x/v1x.h new file mode 100644 index 0000000000..578250f917 --- /dev/null +++ b/keyboards/dumbpad/v1x/v1x.h @@ -0,0 +1,30 @@ +/* Copyright 2020 imchipwood + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once +#include "quantum.h" + +#define LAYOUT( \ + k01, k02, k03, k04, \ + k11, k12, k13, k14, \ + k21, k22, k23, k24, \ + k30, k31, k32, k33, k34 \ +) \ +{ \ + { KC_NO, k01, k02, k03, k04 }, \ + { KC_NO, k11, k12, k13, k14 }, \ + { KC_NO, k21, k22, k23, k24 }, \ + { k30, k31, k32, k33, k34 }, \ +} diff --git a/keyboards/dumbpad/v1x_dualencoder/config.h b/keyboards/dumbpad/v1x_dualencoder/config.h new file mode 100644 index 0000000000..13f4785d8a --- /dev/null +++ b/keyboards/dumbpad/v1x_dualencoder/config.h @@ -0,0 +1,42 @@ +/* +Copyright 2020 imchipwood + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define DEVICE_VER 0x0010 + +/* Column/Row IO definitions */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 5 +#define MATRIX_ROW_PINS { F4, F5, F6, F7 } +#define MATRIX_COL_PINS { C6, D7, E6, B4, B5 } +#define UNUSED_PINS + +/* Dual rotary encoders */ +#define ENCODERS_PAD_A { B2, D0 } +#define ENCODERS_PAD_B { D4, D1 } + +/* Onboard LEDs */ +#define LED_00 B6 +#define LED_01 B1 +#define LED_02 B3 + +/* Bootmagic - hold down rotary encoder pushbutton while plugging in to enter bootloader */ +#define BOOTMAGIC_LITE_ROW 3 +#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/dumbpad/v1x_dualencoder/info.json b/keyboards/dumbpad/v1x_dualencoder/info.json new file mode 100644 index 0000000000..60e584193c --- /dev/null +++ b/keyboards/dumbpad/v1x_dualencoder/info.json @@ -0,0 +1,18 @@ +{ + "keyboard_name": "dumbpad/v1x_dualencoder", + "keyboard_folder": "dumbpad/v1x_dualencoder", + "url": "https://www.github.com/imchipwood/dumbpad", + "maintainer": "imchipwood", + "width": 5, + "height": 4, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, + {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, + {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, + {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3} + ] + } + } +} diff --git a/keyboards/dumbpad/v1x_dualencoder/keymaps/default/keymap.c b/keyboards/dumbpad/v1x_dualencoder/keymaps/default/keymap.c new file mode 100644 index 0000000000..548b594dd3 --- /dev/null +++ b/keyboards/dumbpad/v1x_dualencoder/keymaps/default/keymap.c @@ -0,0 +1,134 @@ +/* Copyright 2020 imchipwood + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + BASE LAYER + /-----------------------------------------------------` + | | 7 | 8 | 9 | Bkspc | + | |---------|---------|---------|---------| + | | 4 | 5 | 6 | Esc | + | |---------|---------|---------|---------| + | | 1 | 2 | 3 | Tab | + |-------------|---------|---------|---------|---------| + | Left mouse | TT(1) | 0 | . | Enter | + \-----------------------------------------------------' + */ + [0] = LAYOUT( + KC_7, KC_8, KC_9, KC_BSPC, + KC_4, KC_5, KC_6, KC_ESC, + KC_1, KC_2, KC_3, KC_TAB, + KC_BTN1, TT(1), KC_0, LSFT_T(KC_DOT), KC_ENTER + ), + /* + SUB LAYER + /-----------------------------------------------------` + | | | | | Reset | + | |---------|---------|---------|---------| + | | | | | + | + | |---------|---------|---------|---------| + | | | | | - | + |-------------|---------|---------|---------|---------| + | LOCK | | | | = | + \-----------------------------------------------------' + */ + [1] = LAYOUT( + _______, _______, _______, RESET, + _______, _______, _______, KC_KP_PLUS, + _______, _______, _______, KC_KP_MINUS, + KC_LOCK, _______, _______, _______, KC_EQL + ), +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + // If console is enabled, it will print the matrix position and status of each key pressed +/* +#ifdef CONSOLE_ENABLE + uprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed); +#endif +*/ + return true; +} + +void keyboard_post_init_user(void) { + // Customise these values to desired behaviour + // debug_enable = true; + // debug_matrix = true; + // debug_keyboard = true; + // debug_mouse = true; +} + +void encoder_update_user(uint8_t index, bool clockwise) { + /* Custom encoder control - handles CW/CCW turning of encoder + * Default behavior: + * left encoder: + * main layer: + * CW: move mouse right + * CCW: move mouse left + * other layers: + * CW: = (equals/plus - increase slider in Adobe products) + * CCW: - (minus/underscore - decrease slider in adobe products) + * right encoder: + * main layer: + * CW: colume up + * CCW: volume down + * other layers: + * CW: right arrow + * CCW: left arrow + */ + if (index == 0) { + switch (get_highest_layer(layer_state)) { + case 0: + // main layer - move mouse right (CW) and left (CCW) + if (clockwise) { + tap_code(KC_MS_R); + } else { + tap_code(KC_MS_L); + } + break; + + default: + // other layers - =/+ (quals/plus) (CW) and -/_ (minus/underscore) (CCW) + if (clockwise) { + tap_code(KC_EQL); + } else { + tap_code(KC_MINS); + } + break; + } + } else if (index == 1) { + switch (get_highest_layer(layer_state)) { + case 0: + // main layer - volume up (CW) and down (CCW) + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + break; + + default: + // other layers - right (CW) and left (CCW) + if (clockwise) { + tap_code(KC_RIGHT); + } else { + tap_code(KC_LEFT); + } + break; + } + } +} diff --git a/keyboards/dumbpad/v1x_dualencoder/readme.md b/keyboards/dumbpad/v1x_dualencoder/readme.md new file mode 100644 index 0000000000..b568351bfd --- /dev/null +++ b/keyboards/dumbpad/v1x_dualencoder/readme.md @@ -0,0 +1,87 @@ +# dumbpad v1.x dual-encoder + +![dumbpad](https://i.imgur.com/s69rdfA.png) + +## Single- vs Dual-Encoder Support + +The combined Cherry MX/encoder sockets allow single- and dual-encoder configurations. + +The only rule when using two encoders is that there cannot be two encoders on the left side at once, or two on the right side. +This table shows where the encoders are in the switch grid ("X" for encoder, "s" for switch): + +| C0 | C1 | C2 | C3 | C4 | +|:---:|:---:|:---:|:---:|:---:| +| |__X__| s | s |__X__| +| | s | s | s | s | +| | s | s | s | s | +|__X__|__X__| s | s |__X__| + +- The three encoders in columns C0 and C1 are connected to each other +- The two encoders in column C4 are connected to each other + +So, if doing dual encoders, one must be in column C4 and the other in either C0 or C1. Three or more encoders will not work. + +The following sections describe the configurations that the default keymaps in QMK are designed for. + +### Single-Encoder (Default Configuration) + +In the default configuration, the encoder is in column 0, the bottom left corner below the Pro Micro. All other sockets are filled with switches. + +| C0 | C1 | C2 | C3 | C4 | +|:---:|:---:|:---:|:---:|:---:| +| | s | s | s | s | +| | s | s | s | s | +| | s | s | s | s | +|__X__| s | s | s | s | + +![single encoder](https://i.imgur.com/8ZPz1gFl.jpg) + +### Dual-Encoder Bottom + +One dual-encoder configuration has encoders in the bottom two corners of the 4x4 grid, and switches in the rest of the grid. The socket in column 0 is left empty. + +| C0 | C1 | C2 | C3 | C4 | +|:---:|:---:|:---:|:---:|:---:| +| | s | s | s | s | +| | s | s | s | s | +| | s | s | s | s | +| |__X__| s | s |__X__| + +![dual-encoder bottom](https://i.imgur.com/QCqKDMSl.jpg) + +### Dual-Encoder Top + +Another dual-encoder configuration has encoders in the top two corners of the 4x4 grid, and switches in the rest of the grid. The socket in column 0 is left empty. + +| C0 | C1 | C2 | C3 | C4 | +|:---:|:---:|:---:|:---:|:---:| +| |__X__| s | s |__X__| +| | s | s | s | s | +| | s | s | s | s | +| | s | s | s | s | + +![dual-encoder top](https://i.imgur.com/Rq6ox2Ol.jpg) + +### No-Encoder + +You may also choose not to use any rotary encoders if you like! + +### Bill Of Materials + +- Cherry-style mechanical switches +- EC11 rotary encoder with pushbutton (7-pin) - one or two depending on your desired configuration +- 1n4148 diodes (thru hole) - one per switch and rotary encoder (if using clickable encoder(s)) +- 1x Arduino Pro Micro or pin-compatible ATmega32u4-based MCU +- (optional) 3x 3mm LEDs +- (optional) 3x 330 ohm resistors (for limiting current in LEDs) +- (optional) 6mm SPST switch for resetting MCU + +* Keyboard Maintainer: [imchipwood](https://github.com/imchipwood) +* Hardware repository: [dumbpad on github](https://github.com/imchipwood/dumbpad) +* PCB Revisions Supported: v1.0_dual + +Make example for this keyboard (after setting up your build environment): + + make dumbpad/v1x_dualencoder:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/dumbpad/v1x_dualencoder/rules.mk b/keyboards/dumbpad/v1x_dualencoder/rules.mk new file mode 100644 index 0000000000..309e3d48c0 --- /dev/null +++ b/keyboards/dumbpad/v1x_dualencoder/rules.mk @@ -0,0 +1,25 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output + +ENCODER_ENABLE = yes +KEY_LOCK_ENABLE = yes diff --git a/keyboards/dumbpad/v1x_dualencoder/templates/keymap.c b/keyboards/dumbpad/v1x_dualencoder/templates/keymap.c new file mode 100644 index 0000000000..0c2be0aad4 --- /dev/null +++ b/keyboards/dumbpad/v1x_dualencoder/templates/keymap.c @@ -0,0 +1,43 @@ +#include QMK_KEYBOARD_H +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {__KEYMAP_GOES_HERE__}; + + +void encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + switch (get_highest_layer(layer_state)) { + case 0: + if (clockwise) { + tap_code(KC_MS_R); + } else { + tap_code(KC_MS_L); + } + break; + + default: + if (clockwise) { + tap_code(KC_EQL); + } else { + tap_code(KC_MINS); + } + break; + } + } else if (index == 1) { + switch (get_highest_layer(layer_state)) { + case 0: + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + break; + + default: + if (clockwise) { + tap_code(KC_RIGHT); + } else { + tap_code(KC_LEFT); + } + break; + } + } +} diff --git a/keyboards/dumbpad/v1x_dualencoder/v1x_dualencoder.c b/keyboards/dumbpad/v1x_dualencoder/v1x_dualencoder.c new file mode 100644 index 0000000000..4ea402d805 --- /dev/null +++ b/keyboards/dumbpad/v1x_dualencoder/v1x_dualencoder.c @@ -0,0 +1,69 @@ +/* Copyright 2020 imchipwood + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "v1x_dualencoder.h" + +void keyboard_pre_init_kb(void) { + // Set LED IO as outputs + setPinOutput(LED_00); + setPinOutput(LED_01); + setPinOutput(LED_02); + keyboard_pre_init_user(); +} + +void shutdown_user() { + // Shutdown LEDs + writePinLow(LED_00); + writePinLow(LED_01); + writePinLow(LED_02); +} + +layer_state_t layer_state_set_kb(layer_state_t state) { + // Layer LEDs act as binary indication of current layer + uint8_t layer = get_highest_layer(state); + writePin(LED_00, layer & 0b1); + writePin(LED_01, (layer >> 1) & 0b1); + return layer_state_set_user(state); +} + +// Optional override functions below. +// You can leave any or all of these undefined. +// These are only required if you want to perform custom actions. + +void matrix_init_kb(void) { + // put your keyboard start-up code here + // runs once when the firmware starts up + uint8_t led_delay_ms = 80; + for (int i = 0; i < 2; i++) { + writePinHigh(LED_00); + writePinHigh(LED_01); + writePinHigh(LED_02); + wait_ms(led_delay_ms); + writePinLow(LED_00); + writePinLow(LED_01); + writePinLow(LED_02); + if (i < 1) { + wait_ms(led_delay_ms); + } + } + + matrix_init_user(); +} + +void led_set_kb(uint8_t usb_led) { + // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here + writePin(LED_02, !IS_LED_ON(usb_led, USB_LED_NUM_LOCK)); + led_set_user(usb_led); +} diff --git a/keyboards/dumbpad/v1x_dualencoder/v1x_dualencoder.h b/keyboards/dumbpad/v1x_dualencoder/v1x_dualencoder.h new file mode 100644 index 0000000000..b8bb84fe5f --- /dev/null +++ b/keyboards/dumbpad/v1x_dualencoder/v1x_dualencoder.h @@ -0,0 +1,30 @@ +/* Copyright 2020 imchipwood + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once +#include "quantum.h" + +#define LAYOUT( \ + k01, k02, k03, k04, \ + k11, k12, k13, k14, \ + k21, k22, k23, k24, \ + k30, k31, k32, k33, k34 \ +) \ +{ \ + { KC_NO, k01, k02, k03, k04 }, \ + { KC_NO, k11, k12, k13, k14 }, \ + { KC_NO, k21, k22, k23, k24 }, \ + { k30, k31, k32, k33, k34 }, \ +} diff --git a/keyboards/dumbpad/v1x_right/config.h b/keyboards/dumbpad/v1x_right/config.h new file mode 100644 index 0000000000..23c2685dde --- /dev/null +++ b/keyboards/dumbpad/v1x_right/config.h @@ -0,0 +1,42 @@ +/* +Copyright 2020 imchipwood + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define DEVICE_VER 0x0010 + +/* Column/Row IO definitions */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 5 +#define MATRIX_ROW_PINS { F4, F5, F6, F7 } +#define MATRIX_COL_PINS { B5, B4, E6, D7, C6 } +#define UNUSED_PINS + +/* Single rotary encoder */ +#define ENCODERS_PAD_A { D4 } +#define ENCODERS_PAD_B { B2 } + +/* Onboard LEDs - reversed */ +#define LED_00 B3 +#define LED_01 B1 +#define LED_02 B6 + +/* Bootmagic - hold down rotary encoder pushbutton while plugging in to enter bootloader */ +#define BOOTMAGIC_LITE_ROW 3 +#define BOOTMAGIC_LITE_COLUMN 4 diff --git a/keyboards/dumbpad/v1x_right/info.json b/keyboards/dumbpad/v1x_right/info.json new file mode 100644 index 0000000000..e812f0bb8d --- /dev/null +++ b/keyboards/dumbpad/v1x_right/info.json @@ -0,0 +1,18 @@ +{ + "keyboard_name": "dumbpad/v1x_right", + "keyboard_folder": "dumbpad/v1x_right", + "url": "https://www.github.com/imchipwood/dumbpad", + "maintainer": "imchipwood", + "width": 5, + "height": 4, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, + {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, + {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, + {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3} + ] + } + } +} diff --git a/keyboards/dumbpad/v1x_right/keymaps/default/keymap.c b/keyboards/dumbpad/v1x_right/keymaps/default/keymap.c new file mode 100644 index 0000000000..4050ac9420 --- /dev/null +++ b/keyboards/dumbpad/v1x_right/keymaps/default/keymap.c @@ -0,0 +1,106 @@ +/* Copyright 2020 imchipwood + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + BASE LAYER + /-----------------------------------------------------` + | 7 | 8 | 9 | Bkspc | | + |---------|---------|---------|---------| | + | 4 | 5 | 6 | Esc | | + |---------|---------|---------|---------| | + | 1 | 2 | 3 | Tab | | + |---------|---------|---------|---------|-------------| + | TT(1) | 0 | . | Enter | Left mouse | + \-----------------------------------------------------' + */ + [0] = LAYOUT( + KC_7, KC_8, KC_9, KC_BSPC, + KC_4, KC_5, KC_6, KC_ESC, + KC_1, KC_2, KC_3, KC_TAB, + TT(1), KC_0, LSFT_T(KC_DOT), KC_ENTER, KC_BTN1 + ), + /* + SUB LAYER + /-----------------------------------------------------` + | | | | Reset | | + |---------|---------|---------|---------| | + | | | | + | | + |---------|---------|---------|---------| | + | | | | - | | + |---------|---------|---------|---------|-------------| + | | | | = | LOCK | + \-----------------------------------------------------' + */ + [1] = LAYOUT( + _______, _______, _______, RESET, + _______, _______, _______, KC_KP_PLUS, + _______, _______, _______, KC_KP_MINUS, + _______, _______, _______, KC_EQL, KC_LOCK + ), +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + // If console is enabled, it will print the matrix position and status of each key pressed +/* +#ifdef CONSOLE_ENABLE + uprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed); +#endif +*/ + return true; +} + +void keyboard_post_init_user(void) { + // Customise these values to desired behaviour + // debug_enable = true; + // debug_matrix = true; + // debug_keyboard = true; + // debug_mouse = true; +} + +void encoder_update_user(uint8_t index, bool clockwise) { + /* Custom encoder control - handles CW/CCW turning of encoder + * Default behavior: + * main layer: + * CW: move mouse right + * CCW: move mouse left + * other layers: + * CW: = (equals/plus - increase slider in Adobe products) + * CCW: - (minus/underscore - decrease slider in adobe products) + */ + if (index == 0) { + switch (get_highest_layer(layer_state)) { + case 0: + // main layer - move mouse right (CW) and left (CCW) + if (clockwise) { + tap_code(KC_MS_R); + } else { + tap_code(KC_MS_L); + } + break; + + default: + // other layers - =/+ (quals/plus) (CW) and -/_ (minus/underscore) (CCW) + if (clockwise) { + tap_code(KC_EQL); + } else { + tap_code(KC_MINS); + } + break; + } + } +} diff --git a/keyboards/dumbpad/v1x_right/readme.md b/keyboards/dumbpad/v1x_right/readme.md new file mode 100644 index 0000000000..5e983bf40f --- /dev/null +++ b/keyboards/dumbpad/v1x_right/readme.md @@ -0,0 +1,15 @@ +# dumbpad v1.x with encoder on right side + +![dumbpad](https://i.imgur.com/ND03FiFl.png) + +A 4x4 numpad/macropad with a rotary encoder to the right of the bottom row of keys. + +* Keyboard Maintainer: [imchipwood](https://github.com/imchipwood) +* Hardware repository: [dumbpad on github](https://github.com/imchipwood/dumbpad) +* PCB Revisions Supported: v1.0 + +Make example for this keyboard (after setting up your build environment): + + make dumbpad/v1x_right:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/dumbpad/v1x_right/rules.mk b/keyboards/dumbpad/v1x_right/rules.mk new file mode 100644 index 0000000000..309e3d48c0 --- /dev/null +++ b/keyboards/dumbpad/v1x_right/rules.mk @@ -0,0 +1,25 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output + +ENCODER_ENABLE = yes +KEY_LOCK_ENABLE = yes diff --git a/keyboards/dumbpad/v1x_right/templates/keymap.c b/keyboards/dumbpad/v1x_right/templates/keymap.c new file mode 100644 index 0000000000..11ed745188 --- /dev/null +++ b/keyboards/dumbpad/v1x_right/templates/keymap.c @@ -0,0 +1,25 @@ +#include QMK_KEYBOARD_H +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {__KEYMAP_GOES_HERE__}; + + +void encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + switch (get_highest_layer(layer_state)) { + case 0: + if (clockwise) { + tap_code(KC_MS_R); + } else { + tap_code(KC_MS_L); + } + break; + + default: + if (clockwise) { + tap_code(KC_EQL); + } else { + tap_code(KC_MINS); + } + break; + } + } +} diff --git a/keyboards/dumbpad/v1x_right/v1x_right.c b/keyboards/dumbpad/v1x_right/v1x_right.c new file mode 100644 index 0000000000..c2adbaebed --- /dev/null +++ b/keyboards/dumbpad/v1x_right/v1x_right.c @@ -0,0 +1,69 @@ +/* Copyright 2020 imchipwood + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "v1x_right.h" + +void keyboard_pre_init_kb(void) { + // Set LED IO as outputs + setPinOutput(LED_00); + setPinOutput(LED_01); + setPinOutput(LED_02); + keyboard_pre_init_user(); +} + +void shutdown_user() { + // Shutdown LEDs + writePinLow(LED_00); + writePinLow(LED_01); + writePinLow(LED_02); +} + +layer_state_t layer_state_set_kb(layer_state_t state) { + // Layer LEDs act as binary indication of current layer + uint8_t layer = get_highest_layer(state); + writePin(LED_00, layer & 0b1); + writePin(LED_01, (layer >> 1) & 0b1); + return layer_state_set_user(state); +} + +// Optional override functions below. +// You can leave any or all of these undefined. +// These are only required if you want to perform custom actions. + +void matrix_init_kb(void) { + // put your keyboard start-up code here + // runs once when the firmware starts up + uint8_t led_delay_ms = 80; + for (int i = 0; i < 2; i++) { + writePinHigh(LED_00); + writePinHigh(LED_01); + writePinHigh(LED_02); + wait_ms(led_delay_ms); + writePinLow(LED_00); + writePinLow(LED_01); + writePinLow(LED_02); + if (i < 1) { + wait_ms(led_delay_ms); + } + } + + matrix_init_user(); +} + +void led_set_kb(uint8_t usb_led) { + // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here + writePin(LED_02, !IS_LED_ON(usb_led, USB_LED_NUM_LOCK)); + led_set_user(usb_led); +} diff --git a/keyboards/dumbpad/v1x_right/v1x_right.h b/keyboards/dumbpad/v1x_right/v1x_right.h new file mode 100644 index 0000000000..169f391e82 --- /dev/null +++ b/keyboards/dumbpad/v1x_right/v1x_right.h @@ -0,0 +1,30 @@ +/* Copyright 2020 imchipwood + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once +#include "quantum.h" + +#define LAYOUT( \ + k00, k01, k02, k03, \ + k10, k11, k12, k13, \ + k20, k21, k22, k23, \ + k30, k31, k32, k33, k34 \ +) \ +{ \ + { k00, k01, k02, k03, KC_NO }, \ + { k10, k11, k12, k13, KC_NO }, \ + { k20, k21, k22, k23, KC_NO }, \ + { k30, k31, k32, k33, k34 }, \ +} From 54f7708eaadb838320443a66bb6b25b3969473b7 Mon Sep 17 00:00:00 2001 From: yiancar Date: Fri, 5 Mar 2021 05:15:41 +0000 Subject: [PATCH 019/613] [Keyboard] NK65 rev 1.4 (#11991) NK65 Pinout change for rev 1.4. * Update Pinout for new PCB rev * Create readme.md * Update keyboards/nk65/v1_4/rules.mk --- keyboards/nk65/readme.md | 4 +++- keyboards/nk65/v1_4/config.h | 22 ++++++++++++++++++++ keyboards/nk65/v1_4/readme.md | 39 +++++++++++++++++++++++++++++++++++ keyboards/nk65/v1_4/rules.mk | 1 + 4 files changed, 65 insertions(+), 1 deletion(-) create mode 100755 keyboards/nk65/v1_4/config.h create mode 100755 keyboards/nk65/v1_4/readme.md create mode 100755 keyboards/nk65/v1_4/rules.mk diff --git a/keyboards/nk65/readme.md b/keyboards/nk65/readme.md index 5e7453a27d..3bd04210d1 100755 --- a/keyboards/nk65/readme.md +++ b/keyboards/nk65/readme.md @@ -11,13 +11,15 @@ Hardware Availability: https://novelkeys.xyz/ Due to the RGB implementation, the NK65 is currently not compatible with community layouts. +NOTE: For PCBs with revision v1.4 or later please use nk65/v1_4 in the make command. + ## Instructions ### Build Make example for this keyboard (after setting up your build environment): - make nk65:default_via + make nk65:via See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/nk65/v1_4/config.h b/keyboards/nk65/v1_4/config.h new file mode 100755 index 0000000000..88629e5c99 --- /dev/null +++ b/keyboards/nk65/v1_4/config.h @@ -0,0 +1,22 @@ +/* +Copyright 2021 Yiancar + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#undef MATRIX_COL_PINS +#define MATRIX_COL_PINS { A13, A10, A9, A14, A15, B8, B9, B1, B0, A7, A0, A1, A2, A3, A5 } +// To enable debugger set A13 A14 -> A5 A7 diff --git a/keyboards/nk65/v1_4/readme.md b/keyboards/nk65/v1_4/readme.md new file mode 100755 index 0000000000..399919a8be --- /dev/null +++ b/keyboards/nk65/v1_4/readme.md @@ -0,0 +1,39 @@ +NK65 V1.4 +========= + +![NK65](https://i.imgur.com/EXNbVpL.jpg) + +NOTE: Please use this directory only if you have revision 1.4 PCB or later. + +This is a standard fixed layout 65% PCB. It supports VIA and full per-key RGB. + +Keyboard Maintainer: [Yiancar](http://yiancar-designs.com/) and on [GitHub](https://github.com/yiancar) +Hardware Supported: A 65% keyboard with STM32F303CC +Hardware Availability: https://novelkeys.xyz/ + +Due to the RGB implementation, the NK65 is currently not compatible with community layouts. + +## Instructions + +### Build + +Make example for this keyboard (after setting up your build environment): + + make nk65/v1_4:via + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +### Reset + +- Unplug +- Hold Escape +- Plug In +- Unplug +- Release Escape + +### Flash + +- Unplug +- Hold Escape +- Plug In +- Flash using QMK Toolbox or dfu-util (`make nk65/v1_4::dfu-util`) diff --git a/keyboards/nk65/v1_4/rules.mk b/keyboards/nk65/v1_4/rules.mk new file mode 100755 index 0000000000..8b13789179 --- /dev/null +++ b/keyboards/nk65/v1_4/rules.mk @@ -0,0 +1 @@ + From aadea5ab97d4da9af1d75f39a15f5ce498034105 Mon Sep 17 00:00:00 2001 From: datafx <2432997+datafx@users.noreply.github.com> Date: Fri, 5 Mar 2021 13:04:14 -0500 Subject: [PATCH 020/613] [Keyboard] Monstargear XO87 Solderable support (#11716) * Support for XO87 solderable version * cleanup * Remove abandoned code * replaced KEYMAP with LAYOUT and moved LAYOUT macro to solderable.h. deleted unneeded files. * Update keyboards/monstargear/xo87/solderable/keymaps/via/keymap.c * update info.json with missing keys * Apply suggestions from code review * Apply suggestions from code review correct layout macro --- .../monstargear/xo87/solderable/config.h | 57 ++++++++++ .../monstargear/xo87/solderable/info.json | 12 +++ .../xo87/solderable/keymaps/default/keymap.c | 36 +++++++ .../xo87/solderable/keymaps/default/readme.md | 1 + .../xo87/solderable/keymaps/via/config.h | 18 ++++ .../xo87/solderable/keymaps/via/keymap.c | 53 +++++++++ .../xo87/solderable/keymaps/via/readme.md | 1 + .../xo87/solderable/keymaps/via/rules.mk | 1 + .../monstargear/xo87/solderable/readme.md | 23 ++++ .../monstargear/xo87/solderable/rules.mk | 23 ++++ .../monstargear/xo87/solderable/solderable.c | 76 +++++++++++++ .../monstargear/xo87/solderable/solderable.h | 102 ++++++++++++++++++ 12 files changed, 403 insertions(+) create mode 100644 keyboards/monstargear/xo87/solderable/config.h create mode 100644 keyboards/monstargear/xo87/solderable/info.json create mode 100644 keyboards/monstargear/xo87/solderable/keymaps/default/keymap.c create mode 100644 keyboards/monstargear/xo87/solderable/keymaps/default/readme.md create mode 100644 keyboards/monstargear/xo87/solderable/keymaps/via/config.h create mode 100644 keyboards/monstargear/xo87/solderable/keymaps/via/keymap.c create mode 100644 keyboards/monstargear/xo87/solderable/keymaps/via/readme.md create mode 100644 keyboards/monstargear/xo87/solderable/keymaps/via/rules.mk create mode 100644 keyboards/monstargear/xo87/solderable/readme.md create mode 100644 keyboards/monstargear/xo87/solderable/rules.mk create mode 100644 keyboards/monstargear/xo87/solderable/solderable.c create mode 100644 keyboards/monstargear/xo87/solderable/solderable.h diff --git a/keyboards/monstargear/xo87/solderable/config.h b/keyboards/monstargear/xo87/solderable/config.h new file mode 100644 index 0000000000..d5d4540514 --- /dev/null +++ b/keyboards/monstargear/xo87/solderable/config.h @@ -0,0 +1,57 @@ +/* Copyright 2021 datafx + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +#define brightnessMax 8 + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4D47 // MG for Monstargear +#define PRODUCT_ID 0x5344 // SD for Soldered +#define DEVICE_VER 0x0001 +#define MANUFACTURER Monstargear +#define PRODUCT XO87 Soldered + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 16 + +#define BACKLIGHT_PIN F0 + +#define MATRIX_ROW_PINS { E6,E7,E3,B0,B1,A2} +#define MATRIX_COL_PINS { C5,C3,C1,E1,D6,D2,B7,B3,F6,F7,F3,A5,A1,E2,C7,A6 } + +#define KEYLED_ROWS 6 +#define KEYLED_COLS 16 +#define KEYLED_ROW_PINS { E5,B4,B5,F0,C6,D5 } +#define KEYLED_COL_PINS { C4,C2,C0,E0,D4,E4,B6,B2,F4,A0,F2,A4,F1,A7,D3,A3 } +#define LED_DRIVER_LED_COUNT 93 + +#define UNUSED_PINS +#define DIODE_DIRECTION ROW2COL +#define RGB_DI_PIN D7 +#define DRIVER_LED_TOTAL 21 +#define DRIVER_COUNT 2 +#define RGBLED_NUM 21 +#define RGBLIGHT_ANIMATIONS + +#define DEBOUNCE 5 +#define LOCKING_SUPPORT_ENABLE +#define LOCKING_RESYNC_ENABLE + +#define BACKLIGHT_LEVELS 3 diff --git a/keyboards/monstargear/xo87/solderable/info.json b/keyboards/monstargear/xo87/solderable/info.json new file mode 100644 index 0000000000..b007baafc2 --- /dev/null +++ b/keyboards/monstargear/xo87/solderable/info.json @@ -0,0 +1,12 @@ +{ + "keyboard_name": "XO87 Solderable", + "url": "https://www.monstargears.com/", + "maintainer": "qmk", + "width": 18.25, + "height": 6.5, + "layouts": { + "LAYOUT_all": { + "layout": [{"label":"0,0", "x":0, "y":0}, {"label":"0,1", "x":2, "y":0}, {"label":"0,2", "x":3, "y":0}, {"label":"0,3", "x":4, "y":0}, {"label":"0,4", "x":5, "y":0}, {"label":"0,5", "x":6.5, "y":0}, {"label":"0,6", "x":7.5, "y":0}, {"label":"0,7", "x":8.5, "y":0}, {"label":"0,8", "x":9.5, "y":0}, {"label":"0,9", "x":11, "y":0}, {"label":"0,10", "x":12, "y":0}, {"label":"0,11", "x":13, "y":0}, {"label":"0,12", "x":14, "y":0}, {"label":"0,13", "x":15.25, "y":0}, {"label":"0,14", "x":16.25, "y":0}, {"label":"0,15", "x":17.25, "y":0}, {"label":"1,0", "x":0, "y":1.5}, {"label":"1,1", "x":1, "y":1.5}, {"label":"1,2", "x":2, "y":1.5}, {"label":"1,3", "x":3, "y":1.5}, {"label":"1,4", "x":4, "y":1.5}, {"label":"1,5", "x":5, "y":1.5}, {"label":"1,6", "x":6, "y":1.5}, {"label":"1,7", "x":7, "y":1.5}, {"label":"1,8", "x":8, "y":1.5}, {"label":"1,9", "x":9, "y":1.5}, {"label":"1,10", "x":10, "y":1.5}, {"label":"1,11", "x":11, "y":1.5}, {"label":"1,12", "x":12, "y":1.5}, {"label":"3,13", "x":13, "y":1.5, "w":2}, {"label":"1,13", "x":15.25, "y":1.5}, {"label":"1,14", "x":16.25, "y":1.5}, {"label":"1,15", "x":17.25, "y":1.5}, {"label":"2,0", "x":0, "y":2.5, "w":1.5}, {"label":"2,0", "x":1.5, "y":2.5}, {"label":"2,0", "x":2.5, "y":2.5}, {"label":"2,0", "x":3.5, "y":2.5}, {"label":"2,0", "x":4.5, "y":2.5}, {"label":"2,0", "x":5.5, "y":2.5}, {"label":"2,0", "x":6.5, "y":2.5}, {"label":"2,0", "x":7.5, "y":2.5}, {"label":"2,0", "x":8.5, "y":2.5}, {"label":"2,0", "x":9.5, "y":2.5}, {"label":"2,0", "x":10.5, "y":2.5}, {"label":"2,0", "x":11.5, "y":2.5}, {"label":"2,0", "x":12.5, "y":2.5}, {"label":"4,13", "x":13.5, "y":2.5, "w":1.5}, {"label":"2,0", "x":15.25, "y":2.5}, {"label":"2,0", "x":16.25, "y":2.5}, {"label":"2,0", "x":17.25, "y":2.5}, {"label":"3,0", "x":0, "y":3.5, "w":1.75}, {"label":"3,1", "x":1.75, "y":3.5}, {"label":"3,2", "x":2.75, "y":3.5}, {"label":"3,3", "x":3.75, "y":3.5}, {"label":"3,4", "x":4.75, "y":3.5}, {"label":"3,5", "x":5.75, "y":3.5}, {"label":"3,6", "x":6.75, "y":3.5}, {"label":"3,7", "x":7.75, "y":3.5}, {"label":"3,8", "x":8.75, "y":3.5}, {"label":"3,9", "x":9.75, "y":3.5}, {"label":"3,10", "x":10.75, "y":3.5}, {"label":"3,11", "x":11.75, "y":3.5}, {"label":"3,12", "x":12.75, "y":3.5, "w":2.25}, {"label":"4,0", "x":0, "y":4.5, "w":1.25}, {"label":"4,1", "x":1.25, "y":4.5}, {"label":"4,2", "x":2.25, "y":4.5}, {"label":"4,3", "x":3.25, "y":4.5}, {"label":"4,4", "x":4.25, "y":4.5}, {"label":"4,5", "x":5.25, "y":4.5}, {"label":"4,6", "x":6.25, "y":4.5}, {"label":"4,7", "x":7.25, "y":4.5}, {"label":"4,8", "x":8.25, "y":4.5}, {"label":"4,9", "x":9.25, "y":4.5}, {"label":"4,10", "x":10.25, "y":4.5}, {"label":"4,11", "x":11.25, "y":4.5}, {"label":"4,12", "x":12.25, "y":4.5, "w":2.75}, {"label":"4,14", "x":16.25, "y":4.5}, {"label":"5,0", "x":0, "y":5.5, "w":1.25}, {"label":"5,1", "x":1.25, "y":5.5, "w":1.25}, {"label":"5,2", "x":2.5, "y":5.5, "w":1.25}, {"label":"5,4", "x":3.75, "y":5.5, "w":2.75}, {"label":"5,6", "x":6.5, "y":5.5, "w":1.25}, {"label":"5,8", "x":7.75, "y":5.5, "w":2.25}, {"label":"5,10", "x":10, "y":5.5, "w":1.25}, {"label":"5,11", "x":11.25, "y":5.5, "w":1.25}, {"label":"5,12", "x":12.5, "y":5.5, "w":1.25}, {"label":"4,15", "x":13.75, "y":5.5, "w":1.25}, {"label":"5,13", "x":15.25, "y":5.5}, {"label":"5,14", "x":16.25, "y":5.5}, {"label":"5,15", "x":17.25, "y":5.5}] + } + } +} diff --git a/keyboards/monstargear/xo87/solderable/keymaps/default/keymap.c b/keyboards/monstargear/xo87/solderable/keymaps/default/keymap.c new file mode 100644 index 0000000000..2627bed8fb --- /dev/null +++ b/keyboards/monstargear/xo87/solderable/keymaps/default/keymap.c @@ -0,0 +1,36 @@ +/* Copyright 2021 datafx + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_BSPC, + KC_LSFT, _______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_BSLS, KC_UP, KC_RCTL, + KC_LCTL, KC_LGUI, KC_LALT, _______, KC_SPC, _______, KC_RALT, KC_RGUI, MO(1), KC_LEFT, KC_DOWN, KC_RGHT), + + [1] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_INC, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_TOGG, BL_DEC, BL_STEP), +}; diff --git a/keyboards/monstargear/xo87/solderable/keymaps/default/readme.md b/keyboards/monstargear/xo87/solderable/keymaps/default/readme.md new file mode 100644 index 0000000000..ed048bfee6 --- /dev/null +++ b/keyboards/monstargear/xo87/solderable/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for the XO87 Solderable PCB diff --git a/keyboards/monstargear/xo87/solderable/keymaps/via/config.h b/keyboards/monstargear/xo87/solderable/keymaps/via/config.h new file mode 100644 index 0000000000..54dda96c49 --- /dev/null +++ b/keyboards/monstargear/xo87/solderable/keymaps/via/config.h @@ -0,0 +1,18 @@ +/* Copyright 2021 datafx + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once +#define VIA_QMK_RGBLIGHT_ENABLE diff --git a/keyboards/monstargear/xo87/solderable/keymaps/via/keymap.c b/keyboards/monstargear/xo87/solderable/keymaps/via/keymap.c new file mode 100644 index 0000000000..2ca6015a2f --- /dev/null +++ b/keyboards/monstargear/xo87/solderable/keymaps/via/keymap.c @@ -0,0 +1,53 @@ +/* Copyright 2021 datafx + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_BSPC, + KC_LSFT, _______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_BSLS, KC_UP, KC_RCTL, + KC_LCTL, KC_LGUI, KC_LALT, _______, KC_SPC, _______, KC_RALT, KC_RGUI, MO(1), KC_LEFT, KC_DOWN, KC_RGHT), + + [1] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_INC, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_TOGG, BL_DEC, BL_STEP), + + [2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + + [3] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + +}; diff --git a/keyboards/monstargear/xo87/solderable/keymaps/via/readme.md b/keyboards/monstargear/xo87/solderable/keymaps/via/readme.md new file mode 100644 index 0000000000..e7edaf3f76 --- /dev/null +++ b/keyboards/monstargear/xo87/solderable/keymaps/via/readme.md @@ -0,0 +1 @@ +# The default VIA keymap for the XO87 Solderable PCB diff --git a/keyboards/monstargear/xo87/solderable/keymaps/via/rules.mk b/keyboards/monstargear/xo87/solderable/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/monstargear/xo87/solderable/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/monstargear/xo87/solderable/readme.md b/keyboards/monstargear/xo87/solderable/readme.md new file mode 100644 index 0000000000..c3f95d6a5b --- /dev/null +++ b/keyboards/monstargear/xo87/solderable/readme.md @@ -0,0 +1,23 @@ +# XO87 Solderable PCB + +![XO87](https://cdn.imweb.me/thumbnail/20201120/c90a5bdb75264.png) + +A TKL custom keyboard made by Monstar Gear. + +* Keyboard Maintainer: The QMK Community +* Hardware Supported: XO87 Solderable version +* Hardware Availability: [Monstargear](https://monstargears.com) + +Make example for this keyboard (after setting up your build environment): + + make monstargear/xo87/solderable:default + +Flashing example for this keyboard: + + make monstargear/xo87/solderable:default:flash + +The LED matrix is not yet working with this board. A temporary workaround to allow the caps/scroll/num lock LEDs to work has been added to allow this firmware to be functional without the led matrix. + +Please be aware that Monstar Gear has not yet switched to this firmware and any PCB that is running the pre-installed firmware will need to use ISP to flash their board for the first time. + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/monstargear/xo87/solderable/rules.mk b/keyboards/monstargear/xo87/solderable/rules.mk new file mode 100644 index 0000000000..9ed17fc750 --- /dev/null +++ b/keyboards/monstargear/xo87/solderable/rules.mk @@ -0,0 +1,23 @@ +# MCU name +MCU = at90usb646 + +# Bootloader selection +BOOTLOADER = lufa-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +BACKLIGHT_DRIVER = custom diff --git a/keyboards/monstargear/xo87/solderable/solderable.c b/keyboards/monstargear/xo87/solderable/solderable.c new file mode 100644 index 0000000000..f1fc65ea01 --- /dev/null +++ b/keyboards/monstargear/xo87/solderable/solderable.c @@ -0,0 +1,76 @@ +/* Copyright 2021 datafx + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "solderable.h" +#include "quantum.h" + +#define noLed {255,255} + +#define ledSollSP (80+3) +#define ledNumSP (80+7) +#define ledCapSP (80+8) + +void backlight_init_ports(void) { + setPinOutput(Lseg0); + setPinOutput(Lseg1); + setPinOutput(Lseg2); + setPinOutput(Lseg3); + setPinOutput(Lseg4); + setPinOutput(Lseg5); + setPinOutput(Lcom0); + setPinOutput(Lcom1); + setPinOutput(Lcom2); + setPinOutput(Lcom3); + setPinOutput(Lcom4); + setPinOutput(Lcom5); + setPinOutput(Lcom6); + setPinOutput(Lcom7); + setPinOutput(Lcom8); + setPinOutput(Lcom9); + setPinOutput(Lcom10); + setPinOutput(Lcom11); + setPinOutput(Lcom12); + setPinOutput(Lcom13); + setPinOutput(Lcom14); + setPinOutput(Lcom15); +} + +void backlight_set(uint8_t level) { +} + +void backlight_task(void) { + // This is a temporary workaround to get the status LEDs working until we can figure out the LED matrix + led_t host_leds = host_keyboard_led_state(); + if (host_leds.scroll_lock) { + writePinHigh(Lcom3); + writePinHigh(Lseg5); + } else { + writePinLow(Lcom3); + } + if (host_leds.num_lock) { + writePinHigh(Lcom7); + writePinHigh(Lseg5); + } else { + writePinLow(Lcom7); + } + if (host_leds.caps_lock) { + writePinHigh(Lcom8); + writePinHigh(Lseg5); + } else { + writePinLow(Lcom8); + } +} + diff --git a/keyboards/monstargear/xo87/solderable/solderable.h b/keyboards/monstargear/xo87/solderable/solderable.h new file mode 100644 index 0000000000..ed992b4634 --- /dev/null +++ b/keyboards/monstargear/xo87/solderable/solderable.h @@ -0,0 +1,102 @@ +/* Copyright 2021 datafx + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#define LAYOUT_all( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, \ + K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, K414, K415, \ + K500, K501, K502, K505, K506, K509, K510, K511, K512, K513, K514, K515 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, KC_NO, KC_NO }, \ + { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, K414, K415 }, \ + { K500, K501, K502, KC_NO, KC_NO, K505, K506, KC_NO, KC_NO, K509, K510, K511, K512, K513, K514, K515 } \ +} + +#define u8 uint8_t +#define u16 uint16_t + +#pragma once + +#include "quantum.h" + +#define KEYLED_ROWS 6 +#define KEYLED_COLS 16 + +#define XaxisMax 18 +#define YaxisMax 6 + +#define RhythmLedColumMax 18 + +typedef struct{ + u8 onf; + u8 hightLevel; + u8 ColumHeight[RhythmLedColumMax]; +} + +RhythmLed_; + +typedef struct{ + u8 r,g,b; +} + +rgb_; +#define colorAGSize 10 +#define colorBGSize RGBLED_NUM-10 + +typedef struct{ + rgb_ colorAG[colorAGSize]; + rgb_ colorBG[RGBLED_NUM-10]; +} + +backLedRgbG_; + +#define Lseg0 E5 +#define Lseg1 B4 +#define Lseg2 B5 +#define Lseg3 F0 +#define Lseg4 C6 +#define Lseg5 D5 + +#define Lcom0 C4 +#define Lcom1 C2 +#define Lcom2 C0 +#define Lcom3 E0 +#define Lcom4 D4 +#define Lcom5 E4 +#define Lcom6 B6 +#define Lcom7 B2 +#define Lcom8 F4 +#define Lcom9 A0 +#define Lcom10 F2 +#define Lcom11 A4 +#define Lcom12 F1 +#define Lcom13 A7 +#define Lcom14 D3 +#define Lcom15 A3 + +extern void keyLedDriver(void); +extern void KeyLedCom(void); +u8 getKeyLedIndexForXY(u8 x,u8 y); + +extern void ledCapsSet(bool onf); +extern void ledNumSet(bool onf); +extern void ledSollSet(bool onf); +void reflashLedState(void); From 73b8f85816c3209f6213e358a0d3737c7a73d45f Mon Sep 17 00:00:00 2001 From: Dimitris Papavasiliou Date: Fri, 5 Mar 2021 20:25:20 +0200 Subject: [PATCH 021/613] [Keyboard] Lagrange handwired keyboard (#11374) * [Keyboard] Add the Lagrange keyboard * Covert the master side to use the SPI driver. --- keyboards/handwired/lagrange/config.h | 48 +++++ keyboards/handwired/lagrange/info.json | 21 ++ .../lagrange/keymaps/default/keymap.c | 50 +++++ .../lagrange/keymaps/dpapavas/config.h | 23 ++ .../lagrange/keymaps/dpapavas/keymap.c | 202 ++++++++++++++++++ .../lagrange/keymaps/dpapavas/rules.mk | 4 + keyboards/handwired/lagrange/lagrange.c | 59 +++++ keyboards/handwired/lagrange/lagrange.h | 53 +++++ keyboards/handwired/lagrange/readme.md | 21 ++ keyboards/handwired/lagrange/rules.mk | 27 +++ keyboards/handwired/lagrange/transport.c | 175 +++++++++++++++ 11 files changed, 683 insertions(+) create mode 100644 keyboards/handwired/lagrange/config.h create mode 100644 keyboards/handwired/lagrange/info.json create mode 100644 keyboards/handwired/lagrange/keymaps/default/keymap.c create mode 100644 keyboards/handwired/lagrange/keymaps/dpapavas/config.h create mode 100644 keyboards/handwired/lagrange/keymaps/dpapavas/keymap.c create mode 100644 keyboards/handwired/lagrange/keymaps/dpapavas/rules.mk create mode 100644 keyboards/handwired/lagrange/lagrange.c create mode 100644 keyboards/handwired/lagrange/lagrange.h create mode 100644 keyboards/handwired/lagrange/readme.md create mode 100644 keyboards/handwired/lagrange/rules.mk create mode 100644 keyboards/handwired/lagrange/transport.c diff --git a/keyboards/handwired/lagrange/config.h b/keyboards/handwired/lagrange/config.h new file mode 100644 index 0000000000..309603ad39 --- /dev/null +++ b/keyboards/handwired/lagrange/config.h @@ -0,0 +1,48 @@ +/* Copyright 2020 Dimitris Papavasiliou + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x2718 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Dimitris Papavasiliou +#define PRODUCT Lagrange + +#define EE_HANDS +#define SPLIT_USB_DETECT + +/* key matrix size */ +#define MATRIX_ROWS 14 +#define MATRIX_COLS 6 + +/* pin-out */ +#define MATRIX_ROW_PINS { E6, F1, F0, F4, F5, F6, F7 } +#define MATRIX_COL_PINS { B4, B5, D7, B6, C6, D6 } +#define MATRIX_ROW_PINS_RIGHT { B5, B4, D7, B6, C6, D6, D4 } +#define MATRIX_COL_PINS_RIGHT { C7, F7, F6, F5, F4, F1 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION ROW2COL + +#define DEBOUNCE 5 + +#define LED_CAPS_LOCK_PIN D1 +#define LED_SCROLL_LOCK_PIN D2 diff --git a/keyboards/handwired/lagrange/info.json b/keyboards/handwired/lagrange/info.json new file mode 100644 index 0000000000..29ee0a5e6d --- /dev/null +++ b/keyboards/handwired/lagrange/info.json @@ -0,0 +1,21 @@ +{ + "keyboard_name": "Lagrange", + "url": "https://github.com/dpapavas/lagrange-keyboard", + "maintainer": "dpapavas", + "width": 19, + "height": 8.5, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0.75, "w":1.5}, {"x":1.5, "y":0.75}, {"x":2.5, "y":0.375}, {"x":3.5, "y":0}, {"x":4.5, "y":0.5}, {"x":5.5, "y":0.5}, {"x":12.5, "y":0.5}, {"x":13.5, "y":0.5}, {"x":14.5, "y":0}, {"x":15.5, "y":0.375}, {"x":16.5, "y":0.75}, {"x":17.5, "y":0.75, "w":1.5}, + {"x":0, "y":1.75, "w":1.5}, {"x":1.5, "y":1.75}, {"x":2.5, "y":1.375}, {"x":3.5, "y":1}, {"x":4.5, "y":1.5}, {"x":5.5, "y":1.5}, {"x":12.5, "y":1.5}, {"x":13.5, "y":1.5}, {"x":14.5, "y":1}, {"x":15.5, "y":1.375}, {"x":16.5, "y":1.75}, {"x":17.5, "y":1.75, "w":1.5}, + {"x":0, "y":2.75, "w":1.5}, {"x":1.5, "y":2.75}, {"x":2.5, "y":2.375}, {"x":3.5, "y":2}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5}, {"x":14.5, "y":2}, {"x":15.5, "y":2.375}, {"x":16.5, "y":2.75}, {"x":17.5, "y":2.75, "w":1.5}, + {"x":0, "y":3.75, "w":1.5}, {"x":1.5, "y":3.75}, {"x":2.5, "y":3.375}, {"x":3.5, "y":3}, {"x":4.5, "y":3.5}, {"x":5.5, "y":3.5}, {"x":12.5, "y":3.5}, {"x":13.5, "y":3.5}, {"x":14.5, "y":3}, {"x":15.5, "y":3.375}, {"x":16.5, "y":3.75}, {"x":17.5, "y":3.75, "w":1.5}, + {"x":0, "y":4.75, "w":1.5}, {"x":2.5, "y":4.375}, {"x":3.5, "y":4}, {"x":14.5, "y":4}, {"x":15.5, "y":4.5}, {"x":17.5, "y":4.75, "w":1.5}, + {"x":5, "y":5, "h":1.25}, {"x":6, "y":5, "h":1.5}, {"x":7, "y":5, "h":1.5}, {"x":8, "y":5.5}, {"x":10, "y":5.5}, {"x":11, "y":5, "h":1.5}, {"x":12, "y":5, "h":1.5}, {"x":13, "y":5, "h":1.25}, + {"x":5, "y":7}, {"x":6, "y":6.5}, {"x":7, "y":7}, {"x":11, "y":7}, {"x":12, "y":6.5}, {"x":13, "y":7}, + {"x":6, "y":7.5}, {"x":12, "y":7.5} + ] + } + } +} diff --git a/keyboards/handwired/lagrange/keymaps/default/keymap.c b/keyboards/handwired/lagrange/keymaps/default/keymap.c new file mode 100644 index 0000000000..5f86239a0b --- /dev/null +++ b/keyboards/handwired/lagrange/keymaps/default/keymap.c @@ -0,0 +1,50 @@ +/* Copyright 2020 Dimitris Papavasiliou + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +#define EQL_ALT MT(MOD_RALT, KC_EQL) +#define MINS_ALT MT(MOD_LALT, KC_MINS) +#define HOME_GUI MT(MOD_LGUI, KC_HOME) +#define RGHT_GUI MT(MOD_RGUI, KC_RGHT) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + /* Left hand */ /* Right hand */ + + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, TT(1), + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + + KC_LCPO, KC_INS, KC_LBRC, MINS_ALT, KC_BSPC, KC_DEL, KC_PSCR, KC_PAUSE, KC_ENT, KC_SPC, EQL_ALT, KC_RBRC, KC_DEL, KC_RCPC, + HOME_GUI, KC_PGUP, KC_END, KC_LEFT, KC_UP, RGHT_GUI, + KC_PGDN, KC_DOWN + ), + + [1] = LAYOUT( + /* Left hand */ /* Right hand */ + + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F11, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F12, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS + ), +}; diff --git a/keyboards/handwired/lagrange/keymaps/dpapavas/config.h b/keyboards/handwired/lagrange/keymaps/dpapavas/config.h new file mode 100644 index 0000000000..049ba598a9 --- /dev/null +++ b/keyboards/handwired/lagrange/keymaps/dpapavas/config.h @@ -0,0 +1,23 @@ +/* Copyright 2020 Dimitris Papavasiliou + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#undef TAPPING_TERM +#define TAPPING_TERM 175 +#define TAPPING_TERM_PER_KEY +#define PERMISSIVE_HOLD_PER_KEY +#define IGNORE_MOD_TAP_INTERRUPT diff --git a/keyboards/handwired/lagrange/keymaps/dpapavas/keymap.c b/keyboards/handwired/lagrange/keymaps/dpapavas/keymap.c new file mode 100644 index 0000000000..bbcb83913f --- /dev/null +++ b/keyboards/handwired/lagrange/keymaps/dpapavas/keymap.c @@ -0,0 +1,202 @@ +/* Copyright 2020 Dimitris Papavasiliou + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +#define CAPS_SFT MT(MOD_LSFT, KC_CAPS) +#define QUOT_SFT MT(MOD_RSFT, KC_QUOT) +#define PSCR_SFT MT(MOD_LSFT, KC_PSCR) +#define PAUSE_SFT MT(MOD_RSFT, KC_PAUSE) +#define F_SFT MT(MOD_LSFT, KC_F) +#define J_SFT MT(MOD_RSFT, KC_J) +#define PGUP_GUI MT(MOD_LGUI, KC_PGUP) +#define END_GUI MT(MOD_LGUI, KC_END) +#define UP_GUI MT(MOD_RGUI, KC_UP) +#define LEFT_GUI MT(MOD_RGUI, KC_LEFT) +#define EQL_CTL MT(MOD_RCTL, KC_EQL) +#define MINS_CTL MT(MOD_LCTL, KC_MINS) +#define BSPC_ALT LALT_T(KC_BSPC) +#define ENT_ALT LALT_T(KC_ENT) +#define SPC_ALT RALT_T(KC_SPC) +#define DEL_ALT RALT_T(KC_DEL) + +enum tapdance_keycodes { + TD_LEFT, + TD_RGHT, + TD_C_X +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + /* Left hand */ /* Right hand */ + + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_ESC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + CAPS_SFT, KC_A, KC_S, KC_D, F_SFT, KC_G, KC_H, J_SFT, KC_K, KC_L, KC_SCLN, QUOT_SFT, + PSCR_SFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, PAUSE_SFT, + + TD(TD_LEFT), KC_INS, KC_LBRC, MINS_CTL, BSPC_ALT, DEL_ALT, TD(TD_C_X), TD(TD_C_X), ENT_ALT, SPC_ALT, EQL_CTL, KC_RBRC, KC_DEL, TD(TD_RGHT), + KC_HOME, PGUP_GUI, END_GUI, LEFT_GUI, UP_GUI, KC_RGHT, + KC_PGDN, KC_DOWN + ), + + [1] = LAYOUT( + /* Left hand */ /* Right hand */ + + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F11, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F12, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS + ), +}; + +/* The following helper macros define tap dances that support + * separated press, release, tap and double-tap functions. */ + +#define STEPS(DANCE) [DANCE] = ACTION_TAP_DANCE_FN_ADVANCED( \ + NULL, \ + dance_ ## DANCE ## _finished, \ + dance_ ## DANCE ## _reset) + +#define CHOREOGRAPH(DANCE, PRESS, RELEASE, TAP, DOUBLETAP) \ + static bool dance_ ## DANCE ## _pressed; \ + \ + void dance_ ## DANCE ## _finished(qk_tap_dance_state_t *state, void *user_data) { \ + if (state->count == 1) { \ + if (state->pressed) { \ + dance_ ## DANCE ## _pressed = true; \ + PRESS; \ + } else { \ + TAP; \ + } \ + } else if (state->count == 2) { \ + if (!state->pressed) { \ + DOUBLETAP; \ + } \ + } \ + } \ + \ + void dance_ ## DANCE ## _reset(qk_tap_dance_state_t *state, void *user_data) { \ + if (state->count == 1) { \ + if (dance_ ## DANCE ## _pressed) { \ + RELEASE; \ + dance_ ## DANCE ## _pressed = false; \ + } \ + } \ + } + +/* Define dance for left palm key. */ + +CHOREOGRAPH(TD_LEFT, + layer_invert(1), /* Temporarily toggle layer when held. */ + layer_invert(1), + + /* Press and release both shifts on tap, to change + * keyboard layout (i.e. language). */ + + SEND_STRING(SS_DOWN(X_LSFT) SS_DOWN(X_RSFT) + SS_UP(X_LSFT) SS_UP(X_RSFT)), + + layer_invert(1)); /* Toggle layer (permanently) on + * double-tap. */ + +/* Define dance for right palm key. */ + +CHOREOGRAPH(TD_RGHT, + layer_invert(1), /* Same as above */ + layer_invert(1), + /* Send a complex macro: C-x C-s Mod-t up. (Save in + * Emacs, switch to terminal and recall previous command, + * hopefully a compile command.) */ + SEND_STRING(SS_DOWN(X_LCTRL) SS_TAP(X_X) SS_TAP(X_S) SS_UP(X_LCTRL) + SS_DOWN(X_LGUI) SS_TAP(X_T) SS_UP(X_LGUI) SS_TAP(X_UP)), + layer_invert(1)); + +/* This facilitates C-x chords in Emacs. Used as a modifier along + * with, say, the s-key, it saves, by sending C-x C-s. When tapped it + * just sends C-x. */ + +CHOREOGRAPH(TD_C_X, + SEND_STRING(SS_DOWN(X_LCTRL) SS_TAP(X_X)), + SEND_STRING(SS_UP(X_LCTRL)), + SEND_STRING(SS_DOWN(X_LCTRL) SS_TAP(X_X) SS_UP(X_LCTRL)),); + +qk_tap_dance_action_t tap_dance_actions[] = { + STEPS(TD_LEFT), STEPS(TD_RGHT), STEPS(TD_C_X) +}; + +/* Set a longer tapping term for palm keys to allow comfortable + * permanent layer toggle. Also set an essentially infinite tapping + * term for certain mod-tap keys one tends to keep pressed (such as + * space, backspace, etc.). This prevents sending the modifier + * keycode by accident (allowing re-tap to get repeated key-press) + * and, in combination with permissive hold, they can still be used + * fine as modifiers. */ + +uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case TD(TD_LEFT): + case TD(TD_RGHT): + return 250; + case BSPC_ALT: + case UP_GUI: + case LEFT_GUI: + return 5000; + default: + return TAPPING_TERM; + } +} + +bool get_permissive_hold(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case TD(TD_LEFT): + case TD(TD_RGHT): + case BSPC_ALT: + case UP_GUI: + case LEFT_GUI: + return true; + default: + return false; + } +} + +/* Use the first LED to indicate the active layer. */ + +layer_state_t layer_state_set_user(layer_state_t state) { + writePin(D0, (get_highest_layer(state) > 0)); + + return state; +} + +/* Cycle through the LEDs after initialization. */ + +void keyboard_post_init_user(void) { + const pin_t pins[] = {D0, D1, D2}; + uint8_t i, j; + + for (i = 0 ; i < sizeof(pins) / sizeof(pins[0]) + 2 ; i += 1) { + for (j = 0 ; j < sizeof(pins) / sizeof(pins[0]) ; j += 1) { + setPinOutput(pins[j]); + writePin(pins[j], (j == i || j == i - 1)); + } + + wait_ms(100); + } +} diff --git a/keyboards/handwired/lagrange/keymaps/dpapavas/rules.mk b/keyboards/handwired/lagrange/keymaps/dpapavas/rules.mk new file mode 100644 index 0000000000..42f42f627a --- /dev/null +++ b/keyboards/handwired/lagrange/keymaps/dpapavas/rules.mk @@ -0,0 +1,4 @@ +# Enable additional features. + +DEBOUNCE_TYPE = sym_defer_pk +TAP_DANCE_ENABLE = yes diff --git a/keyboards/handwired/lagrange/lagrange.c b/keyboards/handwired/lagrange/lagrange.c new file mode 100644 index 0000000000..0c76512c57 --- /dev/null +++ b/keyboards/handwired/lagrange/lagrange.c @@ -0,0 +1,59 @@ +/* Copyright 2020 Dimitris Papavasiliou + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include + +#include "lagrange.h" + +#ifndef SPLIT_USB_TIMEOUT_POLL +# define SPLIT_USB_TIMEOUT_POLL 10 +#endif + +/* Instead of timing out, the slave waits indefinitely for the other + * side to signal that it has become master. This avoids both sides + * assuming the slave role when the USB port is powered but not + * otherwise active (e.g. when the host is turned off, or suspended). + * The SPI SS line is used for signaling. On power-up it is + * configured as input with pull-up enabled. When one side assumes + * the master role, it reconfigures the line for SPI, and pulls it low + * to select the slave, which doubles as the signal. */ + +bool is_keyboard_master(void) { + static int8_t is_master = -1; + + if (is_master < 0) { + while (readPin(SPI_SS_PIN)) { + if (USB_Device_IsAddressSet()) { + is_master = 1; + return is_master; + } + wait_ms(SPLIT_USB_TIMEOUT_POLL); + } + + is_master = 0; + + USB_Disable(); + USB_DeviceState = DEVICE_STATE_Unattached; + } + + return is_master; +} + +void keyboard_pre_init_kb(void) { + setPinInputHigh(SPI_SS_PIN); + + keyboard_pre_init_user(); +} diff --git a/keyboards/handwired/lagrange/lagrange.h b/keyboards/handwired/lagrange/lagrange.h new file mode 100644 index 0000000000..6f808ba8e4 --- /dev/null +++ b/keyboards/handwired/lagrange/lagrange.h @@ -0,0 +1,53 @@ +/* Copyright 2020 Dimitris Papavasiliou + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#if !defined(SPI_SS_PIN) +# define SPI_SS_PIN B0 +#endif + +#define SPI_SCK_PIN B1 +#define SPI_MOSI_PIN B2 +#define SPI_MISO_PIN B3 + +#define LAYOUT( \ + l00, l01, l02, l03, l04, l05, r05, r04, r03, r02, r01, r00, \ + l10, l11, l12, l13, l14, l15, r15, r14, r13, r12, r11, r10, \ + l20, l21, l22, l23, l24, l25, r25, r24, r23, r22, r21, r20, \ + l30, l31, l32, l33, l34, l35, r35, r34, r33, r32, r31, r30, \ + l40, l42, l43, l44, l45, l46, l47, r47, r46, r45, r44, r43, r42, r40, \ + l50, l51, l52, r52, r51, r50, \ + l70, r70) \ + { \ + {l00, l01, l02, l03, l04, l05}, \ + {l10, l11, l12, l13, l14, l15}, \ + {l20, l21, l22, l23, l24, l25}, \ + {l30, l31, l32, l33, l34, l35}, \ + {l40, KC_NO, l42, l43, l44, l45}, \ + {KC_NO, KC_NO, KC_NO, l50, l51, l46}, \ + {KC_NO, KC_NO, KC_NO, l70, l52, l47}, \ + \ + {r00, r01, r02, r03, r04, r05}, \ + {r10, r11, r12, r13, r14, r15}, \ + {r20, r21, r22, r23, r24, r25}, \ + {r30, r31, r32, r33, r34, r35}, \ + {r40, KC_NO, r42, r43, r44, r45}, \ + {KC_NO, KC_NO, KC_NO, r50, r51, r46}, \ + {KC_NO, KC_NO, KC_NO, r70, r52, r47} \ + } diff --git a/keyboards/handwired/lagrange/readme.md b/keyboards/handwired/lagrange/readme.md new file mode 100644 index 0000000000..5d7f5bb08e --- /dev/null +++ b/keyboards/handwired/lagrange/readme.md @@ -0,0 +1,21 @@ +# Lagrange + +An ergonomic, split, concave keyboard, with convex thumb pads. See the [project page](https://github.com/dpapavas/lagrange-keyboard) for more info. + +![Lagrange](https://github.com/dpapavas/lagrange-keyboard/blob/master/doc/lagrange_keyboard.png?raw=true) + +* Keyboard Maintainer: [Dimitris Papavasiliou](https://github.com/dpapavas) +* Hardware Supported: Lagrange PCB Rev A +* Hardware Availability: See the build guide on the [project page](https://github.com/dpapavas/lagrange-keyboard). + +Make example for this keyboard (after setting up your build environment): + + make handwired/lagrange:default + +Flashing example for this keyboard: + + make handwired/lagrange:default:flash + +To program the keyboard you'll need to reset it. This can be accomplished, either through the reset button, accessible via a hole in the bottom cover, or, if you've assigned the `RESET` keycode to a key, by pressing that key. + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/handwired/lagrange/rules.mk b/keyboards/handwired/lagrange/rules.mk new file mode 100644 index 0000000000..ea7413b97b --- /dev/null +++ b/keyboards/handwired/lagrange/rules.mk @@ -0,0 +1,27 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +UNICODE_ENABLE = yes +SPLIT_KEYBOARD = yes +SPLIT_TRANSPORT = custom + +SRC += transport.c spi_master.c diff --git a/keyboards/handwired/lagrange/transport.c b/keyboards/handwired/lagrange/transport.c new file mode 100644 index 0000000000..2a567f24b9 --- /dev/null +++ b/keyboards/handwired/lagrange/transport.c @@ -0,0 +1,175 @@ +/* Copyright 2020 Dimitris Papavasiliou + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include + +#include "quantum.h" +#include "split_util.h" +#include "timer.h" + +#include "lagrange.h" + +struct led_context { + led_t led_state; + layer_state_t layer_state; +}; + +uint8_t transceive(uint8_t b) { + for (SPDR = b ; !(SPSR & _BV(SPIF)) ; ); + return SPDR; +} + +/* The SPI bus, doens't have any form of protocol built in, so when + * the other side isn't present, any old noise on the line will appear + * as matrix data. To avoid interpreting data as keystrokes, we do a + * simple n-way (8-way here) handshake before each scan, where each + * side sends a prearranged sequence of bytes. */ + +void shake_hands(bool master) { + const uint8_t m = master ? 0xf8 : 0; + const uint8_t a = 0xa8 ^ m, b = 0x50 ^ m; + + uint8_t i; + + i = SPSR; + i = SPDR; + + do { + /* Cylcling the SS pin on each attempt is necessary, as it + * resets the AVR's SPI core and guarantees proper + * alignment. */ + + if (master) { + writePinLow(SPI_SS_PIN); + } + + for (i = 0 ; i < 8 ; i += 1) { + if (transceive(a + i) != b + i) { + break; + } + } + + if (master) { + writePinHigh(SPI_SS_PIN); + } + } while (i < 8); +} + +bool transport_master(matrix_row_t matrix[]) { + const struct led_context context = { + host_keyboard_led_state(), + layer_state + }; + + uint8_t i; + + /* Shake hands and then receive the matrix from the other side, + * while transmitting LED and layer states. */ + + shake_hands(true); + + spi_start(SPI_SS_PIN, 0, 0, 4); + + for (i = 0 ; i < sizeof(matrix_row_t[MATRIX_ROWS / 2]) ; i += 1) { + spi_status_t x; + + x = spi_write(i < sizeof(struct led_context) ? + ((uint8_t *)&context)[i] : 0); + + if (x == SPI_STATUS_TIMEOUT) { + return false; + } + + ((uint8_t *)matrix)[i] = (uint8_t)x; + } + + spi_stop(); + + return true; +} + +void transport_slave(matrix_row_t matrix[]) { + static struct led_context context; + struct led_context new_context; + + uint8_t i; + + /* Do the reverse of master above. Note that timing is critical, + * so interrupts must be turned off. */ + + cli(); + shake_hands(false); + + for (i = 0 ; i < sizeof(matrix_row_t[MATRIX_ROWS / 2]) ; i += 1) { + uint8_t b; + + b = transceive(((uint8_t *)matrix)[i]); + + if (i < sizeof(struct led_context)) { + ((uint8_t *)&new_context)[i] = b; + } + } + + sei(); + + /* Update the layer and LED state if necessary. */ + + if (!isLeftHand) { + if (context.led_state.raw != new_context.led_state.raw) { + context.led_state.raw = new_context.led_state.raw; + led_update_kb(context.led_state); + } + + if (context.layer_state != new_context.layer_state) { + context.layer_state = new_context.layer_state; + layer_state_set_kb(context.layer_state); + } + } +} + +void transport_master_init(void) { + /* We need to set the SS pin as output as the handshake logic + * above depends on it and the SPI master driver won't do it + * before we call spi_start(). */ + + writePinHigh(SPI_SS_PIN); + setPinOutput(SPI_SS_PIN); + + spi_init(); + + shake_hands(true); +} + +void transport_slave_init(void) { + /* The datasheet isn't very clear on whether the internal pull-up + * is selectable when the SS pin is used by the SPI slave, but + * experimentations shows that it is, at least on the ATMega32u4. + * We enable the pull-up to guard against the case where both + * halves end up as slaves. In that case the SS pin would + * otherwise be floating and free to fluctuate due to picked up + * noise, etc. When reading low it would make both halves think + * they're asserted making the MISO pin an output on both ends and + * leading to potential shorts. */ + + setPinInputHigh(SPI_SS_PIN); + setPinInput(SPI_SCK_PIN); + setPinInput(SPI_MOSI_PIN); + setPinOutput(SPI_MISO_PIN); + + SPCR = _BV(SPE); + + shake_hands(false); +} From 52d8cbf092574974d50adfb8fd3b3b9f88074b18 Mon Sep 17 00:00:00 2001 From: Sendy YK Date: Sat, 6 Mar 2021 01:30:06 +0700 Subject: [PATCH 022/613] [Keymap] Add 60_ansi_arrow_split_bs_7u_spc layout & keymap (#11329) * Add 60_ansi_arrow_split_bs_7u_spc layout & keymap * Update readme.md * Minor updates * Update dz60.h * Update keymap.c * Update readme.md * Update keymap.c * Update readme.md * Update readme.md * Update keymap.c * Update layouts/default/60_ansi_arrow_split_bs_7u_spc/layout.json * Update keymap.c * Update readme.md --- keyboards/dz60/dz60.h | 27 +++ keyboards/dz60/info.json | 197 ++++++++++++------ keyboards/dz60/rules.mk | 2 +- .../60_ansi_arrow/mrsendyyk/keymap.c | 88 -------- .../60_ansi_arrow/mrsendyyk/readme.md | 70 ------- .../mrsendyyk/keymap.c | 141 +++++++++++++ .../mrsendyyk/readme.md | 78 +++++++ .../mrsendyyk/rules.mk | 0 .../default_60_ansi_arrow/keymap.c | 29 +-- layouts/default/60_ansi_arrow/info.json | 126 +++++------ layouts/default/60_ansi_arrow/readme.md | 24 ++- .../keymap.c | 47 +++++ .../60_ansi_arrow_split_bs_7u_spc/info.json | 80 +++++++ .../60_ansi_arrow_split_bs_7u_spc/layout.json | 5 + .../60_ansi_arrow_split_bs_7u_spc/readme.md | 30 +++ 15 files changed, 638 insertions(+), 306 deletions(-) delete mode 100644 layouts/community/60_ansi_arrow/mrsendyyk/keymap.c delete mode 100644 layouts/community/60_ansi_arrow/mrsendyyk/readme.md create mode 100644 layouts/community/60_ansi_arrow_split_bs_7u_spc/mrsendyyk/keymap.c create mode 100644 layouts/community/60_ansi_arrow_split_bs_7u_spc/mrsendyyk/readme.md rename layouts/community/{60_ansi_arrow => 60_ansi_arrow_split_bs_7u_spc}/mrsendyyk/rules.mk (100%) create mode 100644 layouts/default/60_ansi_arrow_split_bs_7u_spc/default_60_ansi_arrow_split_bs_7u_spc/keymap.c create mode 100644 layouts/default/60_ansi_arrow_split_bs_7u_spc/info.json create mode 100644 layouts/default/60_ansi_arrow_split_bs_7u_spc/layout.json create mode 100644 layouts/default/60_ansi_arrow_split_bs_7u_spc/readme.md diff --git a/keyboards/dz60/dz60.h b/keyboards/dz60/dz60.h index 8638dc8792..8ed4a27279 100644 --- a/keyboards/dz60/dz60.h +++ b/keyboards/dz60/dz60.h @@ -32,6 +32,33 @@ { k40, k41, KC_NO, k43, k44, KC_NO, k46, KC_NO, k48, KC_NO, k4a, k4b, k4c, k4d, k4e } \ } +/* LAYOUT_60_ansi_arrow_split_bs_7u_spc + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┠+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │0e │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ + * │10 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │1e │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ + * │20 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2d │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┬───┤ + * │30 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3c │3d │3e │ + * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴──┬───┼───┼───┤ + * │40 │41 │43 │46 │4b │4c │4d │4e │ + * └─────┴───┴─────┴───────────────────────────┴───┴───┴───┴───┘ +*/ +#define LAYOUT_60_ansi_arrow_split_bs_7u_spc( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \ + k10, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, \ + k20, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \ + k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3c, k3d, k3e, \ + k40, k41, k43, k46, k4b, k4c, k4d, k4e \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \ + { k10, KC_NO, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e }, \ + { k20, KC_NO, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, KC_NO }, \ + { k30, KC_NO, k32, k33, k34, k35, k36, k37, k38, k39, k3a, KC_NO, k3c, k3d, k3e }, \ + { k40, k41, KC_NO, k43, KC_NO, KC_NO, k46, KC_NO, KC_NO, KC_NO, KC_NO, k4b, k4c, k4d, k4e } \ +} + /* * LAYOUT_60_ansi_arrow * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┠diff --git a/keyboards/dz60/info.json b/keyboards/dz60/info.json index 1c13ec8a8e..dd86fc3fe1 100644 --- a/keyboards/dz60/info.json +++ b/keyboards/dz60/info.json @@ -80,75 +80,146 @@ {"x": 14, "y": 4} ] }, + "LAYOUT_60_ansi_arrow_split_bs_7u_spc": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + {"x": 13.5, "y": 1, "w": 1.5}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2, "w": 2.25}, + + {"x": 0, "y": 3, "w": 2.25}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3, "w": 1.75}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.5}, + {"x": 1.5, "y": 4}, + {"x": 2.5, "y": 4, "w": 1.5}, + {"x": 4, "y": 4, "w": 7}, + {"x": 11, "y": 4}, + {"x": 12, "y": 4}, + {"x": 13, "y": 4}, + {"x": 14, "y": 4} + ] + }, "LAYOUT_60_ansi_arrow": { "layout": [ - {"x":0, "y":0}, - {"x":1, "y":0}, - {"x":2, "y":0}, - {"x":3, "y":0}, - {"x":4, "y":0}, - {"x":5, "y":0}, - {"x":6, "y":0}, - {"x":7, "y":0}, - {"x":8, "y":0}, - {"x":9, "y":0}, - {"x":10, "y":0}, - {"x":11, "y":0}, - {"x":12, "y":0}, - {"x":13, "y":0, "w":2}, + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0, "w": 2}, - {"x":0, "y":1, "w":1.5}, - {"x":1.5, "y":1}, - {"x":2.5, "y":1}, - {"x":3.5, "y":1}, - {"x":4.5, "y":1}, - {"x":5.5, "y":1}, - {"x":6.5, "y":1}, - {"x":7.5, "y":1}, - {"x":8.5, "y":1}, - {"x":9.5, "y":1}, - {"x":10.5, "y":1}, - {"x":11.5, "y":1}, - {"x":12.5, "y":1}, - {"x":13.5, "y":1, "w":1.5}, + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + {"x": 13.5, "y": 1, "w": 1.5}, - {"x":0, "y":2, "w":1.75}, - {"x":1.75, "y":2}, - {"x":2.75, "y":2}, - {"x":3.75, "y":2}, - {"x":4.75, "y":2}, - {"x":5.75, "y":2}, - {"x":6.75, "y":2}, - {"x":7.75, "y":2}, - {"x":8.75, "y":2}, - {"x":9.75, "y":2}, - {"x":10.75, "y":2}, - {"x":11.75, "y":2}, - {"x":12.75, "y":2, "w":2.25}, + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2, "w": 2.25}, - {"x":0, "y":3, "w":2.25}, - {"x":2.25, "y":3}, - {"x":3.25, "y":3}, - {"x":4.25, "y":3}, - {"x":5.25, "y":3}, - {"x":6.25, "y":3}, - {"x":7.25, "y":3}, - {"x":8.25, "y":3}, - {"x":9.25, "y":3}, - {"x":10.25, "y":3}, - {"x":11.25, "y":3, "w":1.75}, - {"x":13, "y":3}, - {"x":14, "y":3}, + {"x": 0, "y": 3, "w": 2.25}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3, "w": 1.75}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, - {"x":0, "y":4, "w":1.25}, - {"x":1.25, "y":4, "w":1.25}, - {"x":2.5, "y":4, "w":1.25}, - {"x":3.75, "y":4, "w":6.25}, - {"x":10, "y":4}, - {"x":11, "y":4}, - {"x":12, "y":4}, - {"x":13, "y":4}, - {"x":14, "y":4} + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 6.25}, + {"x": 10, "y": 4}, + {"x": 11, "y": 4}, + {"x": 12, "y": 4}, + {"x": 13, "y": 4}, + {"x": 14, "y": 4} ] }, "LAYOUT_true_hhkb": { diff --git a/keyboards/dz60/rules.mk b/keyboards/dz60/rules.mk index 26b48a6263..a626f1f5d2 100644 --- a/keyboards/dz60/rules.mk +++ b/keyboards/dz60/rules.mk @@ -21,4 +21,4 @@ RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output -LAYOUTS = 60_ansi 60_ansi_arrow 60_ansi_split_bs_rshift 60_hhkb 60_iso 60_abnt2 60_tsangan_hhkb +LAYOUTS = 60_ansi 60_ansi_arrow_split_bs_7u_spc 60_ansi_arrow 60_ansi_split_bs_rshift 60_hhkb 60_iso 60_abnt2 60_tsangan_hhkb diff --git a/layouts/community/60_ansi_arrow/mrsendyyk/keymap.c b/layouts/community/60_ansi_arrow/mrsendyyk/keymap.c deleted file mode 100644 index 09b3c28588..0000000000 --- a/layouts/community/60_ansi_arrow/mrsendyyk/keymap.c +++ /dev/null @@ -1,88 +0,0 @@ -/* - * 60 ANSI Arrow Keymap with RGB Lighting/LED/Underglow as Caps Lock, Num Lock, Scroll Lock, and Layer Indicator - * - * Copyright (C) 2020 Sendy YK - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include QMK_KEYBOARD_H - -enum layer_names { - _BASE, // Default Layer - _FN // Fn Layer -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - // Default Layer - [_BASE] = LAYOUT_60_ansi_arrow( - KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_SLSH, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN), KC_LEFT, KC_DOWN, KC_RGHT - ), - // Fn Layer - [_FN] = LAYOUT_60_ansi_arrow( - KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, - KC_BRIU, _______, _______, KC_END, RESET, _______, _______, _______, KC_INS, _______, KC_PSCR, _______, _______, KC_EJCT, - KC_BRID, _______, KC_SLCK, _______, _______, _______, KC_HOME, _______, _______, _______, _______, _______, KC_MUTE, - KC_VOLU, _______, _______, KC_CALC, _______, _______, KC_NLCK, KC_MAIL, _______, _______, KC_PAUS, KC_PGUP, _______, - KC_VOLD, KC_MRWD, KC_MFFD, KC_MPLY, KC_MSTP, _______, KC_MPRV, KC_PGDN, KC_MNXT - ) -}; - -void keyboard_post_init_user(void) { - rgblight_enable_noeeprom(); - rgblight_setrgb(100, 255, 100); -} - -// RGB Lighting/LED/Underglow as Caps Lock, Num Lock, Scroll Lock, and Layer Indicator -void update_led(void) { - // Num Lock Indicator - if (host_keyboard_led_state().num_lock) { - rgblight_setrgb(225, 8, 0); - } - // Scroll Lock Indicator - if (host_keyboard_led_state().scroll_lock) { - rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_GRADIENT + 2); - } -} - -void led_set_user(uint8_t usb_led) { - // Caps Lock Indicator - if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) { - writePinLow(B2); - rgblight_setrgb(255, 110, 0); - } - // Layer Indicator - else { - switch (get_highest_layer(layer_state)) { - // Fn Layer Indicator - case _FN: - rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_GRADIENT + 1); - break; - // Default Layer Indicator - case _BASE: - rgblight_setrgb(100, 255, 100); - break; - } - update_led(); - } -} - -layer_state_t layer_state_set_user(layer_state_t state) { - update_led(); - return state; -} diff --git a/layouts/community/60_ansi_arrow/mrsendyyk/readme.md b/layouts/community/60_ansi_arrow/mrsendyyk/readme.md deleted file mode 100644 index a2dedd4cc9..0000000000 --- a/layouts/community/60_ansi_arrow/mrsendyyk/readme.md +++ /dev/null @@ -1,70 +0,0 @@ -# 60 ANSI Arrow Keymap by [Sendy YK](https://mr.sendyyk.com) - -With RGB Lighting/LED/Underglow as Caps Lock, Num Lock, Scroll Lock, and Layer Indicator. - -## Default Layer - -![_BASE](https://raw.githubusercontent.com/mrsendyyk/qmk_firmware/development/images/60_ansi_arrow_keymap_base.png) - -## Fn Layer - -![_FN](https://raw.githubusercontent.com/mrsendyyk/qmk_firmware/development/images/60_ansi_arrow_keymap_fn.png) - -## RGB Lighting/LED/Underglow as Caps Lock, Num Lock, Scroll Lock, and Layer Indicator - -### Caps Lock Indicator - -```c - // Caps Lock Indicator - if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) { - writePinLow(B2); - rgblight_setrgb(255, 110, 0); - } -``` - -### Num Lock Indicator - -```c - // Num Lock Indicator - if (host_keyboard_led_state().num_lock) { - rgblight_setrgb(225, 8, 0); - } -``` - -### Scroll Lock Indicator -```c - // Scroll Lock Indicator - if (host_keyboard_led_state().scroll_lock) { - rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_GRADIENT + 2); - } -``` - -### Layer Indicator - -```c - // Layer Indicator - else { - switch (get_highest_layer(layer_state)) { - // Fn Layer Indicator - case _FN: - rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_GRADIENT + 1); - break; - // Default Layer Indicator - case _BASE: - rgblight_setrgb(100, 255, 100); - break; - } - update_led(); - } -``` - -## Build The Firmware - -Make example for keyboard (after setting up your build environment): - - make :mrsendyyk - -More information: -* [Setting Up Your QMK Environment](https://docs.qmk.fm/#/getting_started_build_tools) -* [More Detailed make Instructions](https://docs.qmk.fm/#/getting_started_make_guide) -* [The Complete Newbs Guide To QMK](https://docs.qmk.fm/#/newbs) diff --git a/layouts/community/60_ansi_arrow_split_bs_7u_spc/mrsendyyk/keymap.c b/layouts/community/60_ansi_arrow_split_bs_7u_spc/mrsendyyk/keymap.c new file mode 100644 index 0000000000..8b285c9fbb --- /dev/null +++ b/layouts/community/60_ansi_arrow_split_bs_7u_spc/mrsendyyk/keymap.c @@ -0,0 +1,141 @@ +/* + * 60 ANSI Arrow Split Backspace & 7U Space Keymap + * with RGB Lighting/LED/Underglow as Caps Lock, Num Lock, Scroll Lock, and Layer Indicator. + * + * Copyright (C) 2020 Sendy YK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum layer_names { + _BASE, // Base Layer + _FN, // Fn Layer + _RESET // Reset Layer +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * [_BASE] Base Layer + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┠+ * │Esc│1 │2 │3 │4 │5 │6 │7 │8 │9 │0 │- │+ │\ │Del│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ + * │Tab │Q │W │E │R │T │Y │U │I │O │P │[ │] │Bspc │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ + * │Caps │A │S │D │F │G │H │J │K │L │; │' │Return │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┬───┤ + * │Shift │Z │X │C │V │B │N │M │, │. │Shift │↑ │/ │ + * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴──┬───┼───┼───┤ + * │Ctrl │OS │Alt │Space │Fn │↠│↓ │→ │ + * └─────┴───┴─────┴───────────────────────────┴───┴───┴───┴───┘ + */ + [_BASE] = LAYOUT_60_ansi_arrow_split_bs_7u_spc( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_SLSH, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(_FN), KC_LEFT, KC_DOWN, KC_RGHT + ), + /* + * [_FN] Fn Layer + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┠+ * │` │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│ │Ejc│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ + * │ │ │ │End│RGB│ │ │ │Ins│ │PSc│ │ │Mute │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ + * │ │ │SLc│ │ │ │Hm │ │ │ │ │ │Pause │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┬───┤ + * │Vol + │ │ │Cal│ │BLT│NLc│Ml │ │ │ │PgU│MSt│ + * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴──┬───┼───┼───┤ + * │Vol -│Rwd│FFd │Play │ │Prv│PgD│Nxt│ + * └─────┴───┴─────┴───────────────────────────┴───┴───┴───┴───┘ + */ + [_FN] = LAYOUT_60_ansi_arrow_split_bs_7u_spc( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_EJCT, + _______, _______, _______, KC_END, RGB_TOG, _______, _______, _______, KC_INS, _______, KC_PSCR, _______, _______, KC_MUTE, + _______, _______, KC_SLCK, _______, _______, _______, KC_HOME, _______, _______, _______, _______, _______, KC_PAUS, + KC_VOLU, _______, _______, KC_CALC, _______, BL_TOGG, KC_NLCK, KC_MAIL, _______, _______, MO(_RESET), KC_PGUP, KC_MSTP, + KC_VOLD, KC_MRWD, KC_MFFD, KC_MPLY, _______, KC_MPRV, KC_PGDN, KC_MNXT + ), + /* + * [_RESET] Reset Layer + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┠+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ + * │ │ │ │ │Rst│ │ │ │ │ │ │ │ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┬───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴──┬───┼───┼───┤ + * │ │ │ │ │ │ │ │ │ + * └─────┴───┴─────┴───────────────────────────┴───┴───┴───┴───┘ + */ + [_RESET] = LAYOUT_60_ansi_arrow_split_bs_7u_spc( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; + +void keyboard_post_init_user(void) { + rgblight_enable_noeeprom(); + rgblight_setrgb(100, 255, 100); +} + +// RGB Lighting/LED/Underglow as Caps Lock, Num Lock, Scroll Lock, and Layer Indicator +void update_led(void) { + // Num Lock Indicator + if (host_keyboard_led_state().num_lock) { + rgblight_setrgb(225, 8, 0); + } + // Scroll Lock Indicator + if (host_keyboard_led_state().scroll_lock) { + rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_GRADIENT + 2); + } +} + +void led_set_user(uint8_t usb_led) { + // Caps Lock Indicator + if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) { + writePinLow(B2); + rgblight_setrgb(255, 110, 0); + } + // Layer Indicator + else { + switch (get_highest_layer(layer_state)) { + // Fn Layer Indicator + case _FN: + rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_GRADIENT + 1); + break; + // Reset Layer Indicator + case _RESET: + rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_GRADIENT + 3); + break; + // Base Layer Indicator + case _BASE: + rgblight_setrgb(100, 255, 100); + break; + } + update_led(); + } +} + +layer_state_t layer_state_set_user(layer_state_t state) { + update_led(); + return state; +} diff --git a/layouts/community/60_ansi_arrow_split_bs_7u_spc/mrsendyyk/readme.md b/layouts/community/60_ansi_arrow_split_bs_7u_spc/mrsendyyk/readme.md new file mode 100644 index 0000000000..d812ac343c --- /dev/null +++ b/layouts/community/60_ansi_arrow_split_bs_7u_spc/mrsendyyk/readme.md @@ -0,0 +1,78 @@ +# 60 ANSI Arrow Split Backspace & 7U Space Keymap + +With RGB Lighting/LED/Underglow as Caps Lock, Num Lock, Scroll Lock, and Layer Indicator by [Sendy YK](https://mr.sendyyk.com). + +## Base Layer + +```c + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┠+ * │Esc│1 │2 │3 │4 │5 │6 │7 │8 │9 │0 │- │+ │\ │Del│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ + * │Tab │Q │W │E │R │T │Y │U │I │O │P │[ │] │Bspc │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ + * │Caps │A │S │D │F │G │H │J │K │L │; │' │Return │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┬───┤ + * │Shift │Z │X │C │V │B │N │M │, │. │Shift │↑ │/ │ + * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴──┬───┼───┼───┤ + * │Ctrl │OS │Alt │Space │Fn │↠│↓ │→ │ + * └─────┴───┴─────┴───────────────────────────┴───┴───┴───┴───┘ + */ +``` + +## Fn Layer + +```c + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┠+ * │` │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│ │Ejc│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ + * │ │ │ │End│RGB│ │ │ │Ins│ │PSc│ │ │Mute │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ + * │ │ │SLc│ │ │ │Hm │ │ │ │ │ │Pause │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┬───┤ + * │Vol + │ │ │Cal│ │BLT│NLc│Ml │ │ │ │PgU│MSt│ + * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴──┬───┼───┼───┤ + * │Vol -│Rwd│FFd │Play │ │Prv│PgD│Nxt│ + * └─────┴───┴─────┴───────────────────────────┴───┴───┴───┴───┘ + */ +``` + +## Reset Layer + +```c + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┠+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ + * │ │ │ │ │Rst│ │ │ │ │ │ │ │ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┬───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴──┬───┼───┼───┤ + * │ │ │ │ │ │ │ │ │ + * └─────┴───┴─────┴───────────────────────────┴───┴───┴───┴───┘ + */ +``` + +## RGB Lighting/LED/Underglow as Caps Lock, Num Lock, Scroll Lock, and Layer Indicator + +### Caps Lock & Layer Indicator + +Set in `led_set_user` function. + +### Num Lock & Scroll Lock Indicator + +Set in `update_led` function. + +## Build The Firmware + +Make example for keyboard (after setting up your build environment): + + make :mrsendyyk FORCE_LAYOUT=60_ansi_arrow_split_bs_7u_spc + +More information: +* [Setting Up Your QMK Environment](https://docs.qmk.fm/#/getting_started_build_tools) +* [More Detailed make Instructions](https://docs.qmk.fm/#/getting_started_make_guide) +* [The Complete Newbs Guide To QMK](https://docs.qmk.fm/#/newbs) diff --git a/layouts/community/60_ansi_arrow/mrsendyyk/rules.mk b/layouts/community/60_ansi_arrow_split_bs_7u_spc/mrsendyyk/rules.mk similarity index 100% rename from layouts/community/60_ansi_arrow/mrsendyyk/rules.mk rename to layouts/community/60_ansi_arrow_split_bs_7u_spc/mrsendyyk/rules.mk diff --git a/layouts/default/60_ansi_arrow/default_60_ansi_arrow/keymap.c b/layouts/default/60_ansi_arrow/default_60_ansi_arrow/keymap.c index 565e9990a2..c2bd4fa1b0 100644 --- a/layouts/default/60_ansi_arrow/default_60_ansi_arrow/keymap.c +++ b/layouts/default/60_ansi_arrow/default_60_ansi_arrow/keymap.c @@ -1,5 +1,5 @@ /* - * 60_ansi_arrow Keymap + * Default 60 ANSI Arrow Keymap. * * Copyright (C) 2020 Sendy YK * @@ -20,25 +20,28 @@ #include QMK_KEYBOARD_H enum layer_names { - _BASE, // Default Layer - _FN // Fn Layer + _BASE }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - // Default Layer + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┠+ * │Esc│1 │2 │3 │4 │5 │6 │7 │8 │9 │0 │- │+ │Bspc │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ + * │Tab │Q │W │E │R │T │Y │U │I │O │P │[ │] │\ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ + * │Caps │A │S │D │F │G │H │J │K │L │; │' │Enter │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┬───┤ + * │Shift │Z │X │C │V │B │N │M │, │. │Shift │↑ │/ │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬───┼───┼───┤ + * │Ctrl│GUI │Alt │Space │Alt│GUI│↠│↓ │→ │ + * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘ + */ [_BASE] = LAYOUT_60_ansi_arrow( KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_SLSH, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN), KC_LEFT, KC_DOWN, KC_RGHT + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT ), - // Fn Layer - [_FN] = LAYOUT_60_ansi_arrow( - KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, - KC_BRIU, _______, _______, KC_END, RESET, _______, _______, _______, KC_INS, _______, KC_PSCR, _______, _______, KC_EJCT, - KC_BRID, _______, KC_SLCK, _______, _______, _______, KC_HOME, _______, _______, _______, _______, _______, KC_MUTE, - KC_VOLU, _______, _______, KC_CALC, _______, _______, KC_NLCK, KC_MAIL, _______, _______, KC_PAUS, KC_PGUP, _______, - KC_VOLD, KC_MRWD, KC_MFFD, KC_MPLY, KC_MSTP, _______, KC_MPRV, KC_PGDN, KC_MNXT - ) }; diff --git a/layouts/default/60_ansi_arrow/info.json b/layouts/default/60_ansi_arrow/info.json index 639433ea7a..a8667e62ce 100644 --- a/layouts/default/60_ansi_arrow/info.json +++ b/layouts/default/60_ansi_arrow/info.json @@ -7,73 +7,73 @@ "layouts": { "LAYOUT_60_ansi_arrow": { "layout": [ - {"x":0, "y":0}, - {"x":1, "y":0}, - {"x":2, "y":0}, - {"x":3, "y":0}, - {"x":4, "y":0}, - {"x":5, "y":0}, - {"x":6, "y":0}, - {"x":7, "y":0}, - {"x":8, "y":0}, - {"x":9, "y":0}, - {"x":10, "y":0}, - {"x":11, "y":0}, - {"x":12, "y":0}, - {"x":13, "y":0, "w":2}, + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0, "w": 2}, - {"x":0, "y":1, "w":1.5}, - {"x":1.5, "y":1}, - {"x":2.5, "y":1}, - {"x":3.5, "y":1}, - {"x":4.5, "y":1}, - {"x":5.5, "y":1}, - {"x":6.5, "y":1}, - {"x":7.5, "y":1}, - {"x":8.5, "y":1}, - {"x":9.5, "y":1}, - {"x":10.5, "y":1}, - {"x":11.5, "y":1}, - {"x":12.5, "y":1}, - {"x":13.5, "y":1, "w":1.5}, + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + {"x": 13.5, "y": 1, "w": 1.5}, - {"x":0, "y":2, "w":1.75}, - {"x":1.75, "y":2}, - {"x":2.75, "y":2}, - {"x":3.75, "y":2}, - {"x":4.75, "y":2}, - {"x":5.75, "y":2}, - {"x":6.75, "y":2}, - {"x":7.75, "y":2}, - {"x":8.75, "y":2}, - {"x":9.75, "y":2}, - {"x":10.75, "y":2}, - {"x":11.75, "y":2}, - {"x":12.75, "y":2, "w":2.25}, + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2, "w": 2.25}, - {"x":0, "y":3, "w":2.25}, - {"x":2.25, "y":3}, - {"x":3.25, "y":3}, - {"x":4.25, "y":3}, - {"x":5.25, "y":3}, - {"x":6.25, "y":3}, - {"x":7.25, "y":3}, - {"x":8.25, "y":3}, - {"x":9.25, "y":3}, - {"x":10.25, "y":3}, - {"x":11.25, "y":3, "w":1.75}, - {"x":13, "y":3}, - {"x":14, "y":3}, + {"x": 0, "y": 3, "w": 2.25}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3, "w": 1.75}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, - {"x":0, "y":4, "w":1.25}, - {"x":1.25, "y":4, "w":1.25}, - {"x":2.5, "y":4, "w":1.25}, - {"x":3.75, "y":4, "w":6.25}, - {"x":10, "y":4}, - {"x":11, "y":4}, - {"x":12, "y":4}, - {"x":13, "y":4}, - {"x":14, "y":4} + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 6.25}, + {"x": 10, "y": 4}, + {"x": 11, "y": 4}, + {"x": 12, "y": 4}, + {"x": 13, "y": 4}, + {"x": 14, "y": 4} ] } } diff --git a/layouts/default/60_ansi_arrow/readme.md b/layouts/default/60_ansi_arrow/readme.md index e379caa34a..e655a31f29 100644 --- a/layouts/default/60_ansi_arrow/readme.md +++ b/layouts/default/60_ansi_arrow/readme.md @@ -1,14 +1,22 @@ # 60_ansi_arrow Keymap -by [Sendy YK](https://mr.sendyyk.com). +Default 60 ANSI Arrow Keymap by [Sendy YK](https://mr.sendyyk.com). -## Default Layer - -![_BASE](https://raw.githubusercontent.com/mrsendyyk/qmk_firmware/development/images/60_ansi_arrow_keymap_base.png) - -## Fn Layer - -![_FN](https://raw.githubusercontent.com/mrsendyyk/qmk_firmware/development/images/60_ansi_arrow_keymap_fn.png) +```c + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┠+ * │Esc│1 │2 │3 │4 │5 │6 │7 │8 │9 │0 │- │+ │Bspc │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ + * │Tab │Q │W │E │R │T │Y │U │I │O │P │[ │] │\ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ + * │Caps │A │S │D │F │G │H │J │K │L │; │' │Enter │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┬───┤ + * │Shift │Z │X │C │V │B │N │M │, │. │Shift │↑ │/ │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬───┼───┼───┤ + * │Ctrl│GUI │Alt │Space │Alt│GUI│↠│↓ │→ │ + * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘ + */ +``` ## Build The Firmware diff --git a/layouts/default/60_ansi_arrow_split_bs_7u_spc/default_60_ansi_arrow_split_bs_7u_spc/keymap.c b/layouts/default/60_ansi_arrow_split_bs_7u_spc/default_60_ansi_arrow_split_bs_7u_spc/keymap.c new file mode 100644 index 0000000000..8f240beaba --- /dev/null +++ b/layouts/default/60_ansi_arrow_split_bs_7u_spc/default_60_ansi_arrow_split_bs_7u_spc/keymap.c @@ -0,0 +1,47 @@ +/* + * Default 60 ANSI Arrow Split Backspace & 7U Space Keymap. + * + * Copyright (C) 2020 Sendy YK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum layer_names { + _BASE +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┠+ * │Esc│1 │2 │3 │4 │5 │6 │7 │8 │9 │0 │- │+ │\ │Del│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ + * │Tab │Q │W │E │R │T │Y │U │I │O │P │[ │] │Bspc │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ + * │Caps │A │S │D │F │G │H │J │K │L │; │' │Enter │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┬───┤ + * │Shift │Z │X │C │V │B │N │M │, │. │Shift │↑ │/ │ + * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴──┬───┼───┼───┤ + * │Ctrl │GUI│Alt │Space │Alt│↠│↓ │→ │ + * └─────┴───┴─────┴───────────────────────────┴───┴───┴───┴───┘ + */ + [_BASE] = LAYOUT_60_ansi_arrow_split_bs_7u_spc( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_SLSH, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; diff --git a/layouts/default/60_ansi_arrow_split_bs_7u_spc/info.json b/layouts/default/60_ansi_arrow_split_bs_7u_spc/info.json new file mode 100644 index 0000000000..78301af948 --- /dev/null +++ b/layouts/default/60_ansi_arrow_split_bs_7u_spc/info.json @@ -0,0 +1,80 @@ +{ + "keyboard_name": "60% ANSI Arrow Split Backspace & 7U Space Layout", + "url": "https://mr.sendyyk.com", + "maintainer": "Sendy YK ", + "width": 15, + "height": 5, + "layouts": { + "LAYOUT_60_ansi_arrow": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + {"x": 13.5, "y": 1, "w": 1.5}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2, "w": 2.25}, + + {"x": 0, "y": 3, "w": 2.25}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3, "w": 1.75}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.5}, + {"x": 1.5, "y": 4}, + {"x": 2.5, "y": 4, "w": 1.5}, + {"x": 4, "y": 4, "w": 7}, + {"x": 11, "y": 4}, + {"x": 12, "y": 4}, + {"x": 13, "y": 4}, + {"x": 14, "y": 4} + ] + } + } +} diff --git a/layouts/default/60_ansi_arrow_split_bs_7u_spc/layout.json b/layouts/default/60_ansi_arrow_split_bs_7u_spc/layout.json new file mode 100644 index 0000000000..db9c8d167b --- /dev/null +++ b/layouts/default/60_ansi_arrow_split_bs_7u_spc/layout.json @@ -0,0 +1,5 @@ +[{a:7},"","","","","","","","","","","","","","",""], +[{w:1.5},"","","","","","","","","","","","","",{w:1.5},""], +[{w:1.75},"","","","","","","","","","","","",{w:2.25},""], +[{w:2.25},"","","","","","","","","","",{w:1.75},"","",""], +[{w:1.5},"","",{w:1.5},"",{w:7},"","","","",""] diff --git a/layouts/default/60_ansi_arrow_split_bs_7u_spc/readme.md b/layouts/default/60_ansi_arrow_split_bs_7u_spc/readme.md new file mode 100644 index 0000000000..30292abb90 --- /dev/null +++ b/layouts/default/60_ansi_arrow_split_bs_7u_spc/readme.md @@ -0,0 +1,30 @@ +# 60_ansi_arrow_split_bs_7u_spc Keymap + +Default 60 ANSI Arrow Split Backspace & 7U Space Keymap by [Sendy YK](https://mr.sendyyk.com). + +```c + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┠+ * │Esc│1 │2 │3 │4 │5 │6 │7 │8 │9 │0 │- │+ │\ │Del│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ + * │Tab │Q │W │E │R │T │Y │U │I │O │P │[ │] │Bspc │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ + * │Caps │A │S │D │F │G │H │J │K │L │; │' │Enter │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┬───┤ + * │Shift │Z │X │C │V │B │N │M │, │. │Shift │↑ │/ │ + * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴──┬───┼───┼───┤ + * │Ctrl │GUI│Alt │Space │Alt│↠│↓ │→ │ + * └─────┴───┴─────┴───────────────────────────┴───┴───┴───┴───┘ + */ +``` + +## Build The Firmware + +Make example for keyboard (after setting up your build environment): + + make :default_60_ansi_arrow_split_bs_7u_spc + +More information: +* [Setting Up Your QMK Environment](https://docs.qmk.fm/#/getting_started_build_tools) +* [More Detailed make Instructions](https://docs.qmk.fm/#/getting_started_make_guide) +* [The Complete Newbs Guide To QMK](https://docs.qmk.fm/#/newbs) From 07fce7ba13ee2d166fe2f18ef8d9ef622eace446 Mon Sep 17 00:00:00 2001 From: bluepylons Date: Fri, 5 Mar 2021 13:43:09 -0500 Subject: [PATCH 023/613] [Keyboard] add Boston keyboard (#11273) * Added boston keyboard * Added Boston keyboard * Changed some keycodes, added layers, added encoder layer change, added RGB layer indicator * Cleaned up whitespace * Update config.h Cleaned up whitespace * Cleaned up whitespace * Added keyboard_post_init_kb code for RGBLEDs so that they start on a defined color * Modified layout so that split backspace right is at a more intuitive location for configurator * Cleaned up whitespace, changed some labels * Modified keymap to accommodate revised layout in boston.h * Removed "on port C6" from Line 20 (committed suggestion) * Removed "Encoder Enable" from Line 8 (committed suggestion) * Removed empty #define DESCRIPTION as suggested * Implemented lock LED changes as suggested by drashna * Implemented lock LED changes as suggested by Drashna, changed WS2812 driver byte order * Updated HSV color codes to reflect WS2812 byte order change * Implemented suggestion from noroadsleft * Implemented suggestion from noroadsleft * Updated readm.md per suggestions from noroadsleft * Update keyboards/boston/readme.md per noroadsleft's suggestion * Removed empty layers from default keymap * Stripped empty layers and much code from default keymap ; moved to RGB Light Layers keycap --- keyboards/boston/boston.c | 24 + keyboards/boston/boston.h | 40 + keyboards/boston/chconf.h | 700 ++++++++++++++++++ keyboards/boston/config.h | 92 +++ keyboards/boston/halconf.h | 524 +++++++++++++ keyboards/boston/info.json | 147 ++++ keyboards/boston/keymaps/default/keymap.c | 52 ++ .../boston/keymaps/rgb-light-layers/keymap.c | 223 ++++++ keyboards/boston/mcuconf.h | 176 +++++ keyboards/boston/readme.md | 23 + keyboards/boston/rules.mk | 26 + 11 files changed, 2027 insertions(+) create mode 100644 keyboards/boston/boston.c create mode 100644 keyboards/boston/boston.h create mode 100644 keyboards/boston/chconf.h create mode 100644 keyboards/boston/config.h create mode 100644 keyboards/boston/halconf.h create mode 100644 keyboards/boston/info.json create mode 100644 keyboards/boston/keymaps/default/keymap.c create mode 100644 keyboards/boston/keymaps/rgb-light-layers/keymap.c create mode 100644 keyboards/boston/mcuconf.h create mode 100644 keyboards/boston/readme.md create mode 100644 keyboards/boston/rules.mk diff --git a/keyboards/boston/boston.c b/keyboards/boston/boston.c new file mode 100644 index 0000000000..2bcac21cba --- /dev/null +++ b/keyboards/boston/boston.c @@ -0,0 +1,24 @@ +/* Copyright 2020 Pylon + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "boston.h" + +void keyboard_post_init_kb(void) { + /* this is to set an LED color at startup so it's not some random color*/ + rgblight_enable_noeeprom(); + rgblight_sethsv_noeeprom(0, 0, 128); + keyboard_post_init_user(); +} diff --git a/keyboards/boston/boston.h b/keyboards/boston/boston.h new file mode 100644 index 0000000000..db245c5c29 --- /dev/null +++ b/keyboards/boston/boston.h @@ -0,0 +1,40 @@ +/* Copyright 2020 Pylon + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define ___ KC_NO + +#define LAYOUT_all( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, K0H, K0I, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, K1H, K1I, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K5E, K2E, K2F, K2G, K2H, K2I, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K3G, K3H, K3I, \ + K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, K4F, K4G, K4H, K4I, \ + K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5A, K5B, K5C, K5D, K5F, K5G, K5H, K5I, \ + K60, K61, K62, K64, K65, K67, K69, K6A, K6B, K6C, K6D, K6E, K6F, K6G, K6H \ + ) \ + { \ + {K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, K0H, K0I}, \ + {K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, K1H, K1I}, \ + {K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, K2H, K2I}, \ + {K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K3G, K3H, K3I}, \ + {K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, K4F, K4G, K4H, K4I}, \ + {K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5A, K5B, K5C, K5D, K5E, K5F, K5G, K5H, K5I}, \ + {K60, K61, K62, ___, K64, K65, ___, K67, ___, K69, K6A, K6B, K6C, K6D, K6E, K6F, K6G, K6H, ___ } \ + } diff --git a/keyboards/boston/chconf.h b/keyboards/boston/chconf.h new file mode 100644 index 0000000000..7ac8a7de5d --- /dev/null +++ b/keyboards/boston/chconf.h @@ -0,0 +1,700 @@ +/* + ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +/** + * @file rt/templates/chconf.h + * @brief Configuration file template. + * @details A copy of this file must be placed in each project directory, it + * contains the application specific kernel settings. + * + * @addtogroup config + * @details Kernel related settings and hooks. + * @{ + */ + +#ifndef CHCONF_H +# define CHCONF_H + +# define _CHIBIOS_RT_CONF_ +# define _CHIBIOS_RT_CONF_VER_6_0_ + +/*===========================================================================*/ +/** + * @name System timers settings + * @{ + */ +/*===========================================================================*/ + +/** + * @brief System time counter resolution. + * @note Allowed values are 16 or 32 bits. + */ +# if !defined(CH_CFG_ST_RESOLUTION) +# define CH_CFG_ST_RESOLUTION 32 +# endif + +/** + * @brief System tick frequency. + * @details Frequency of the system timer that drives the system ticks. This + * setting also defines the system tick time unit. + */ +# if !defined(CH_CFG_ST_FREQUENCY) +# define CH_CFG_ST_FREQUENCY 10000 +# endif + +/** + * @brief Time intervals data size. + * @note Allowed values are 16, 32 or 64 bits. + */ +# if !defined(CH_CFG_INTERVALS_SIZE) +# define CH_CFG_INTERVALS_SIZE 32 +# endif + +/** + * @brief Time types data size. + * @note Allowed values are 16 or 32 bits. + */ +# if !defined(CH_CFG_TIME_TYPES_SIZE) +# define CH_CFG_TIME_TYPES_SIZE 32 +# endif + +/** + * @brief Time delta constant for the tick-less mode. + * @note If this value is zero then the system uses the classic + * periodic tick. This value represents the minimum number + * of ticks that is safe to specify in a timeout directive. + * The value one is not valid, timeouts are rounded up to + * this value. + */ +# if !defined(CH_CFG_ST_TIMEDELTA) +# define CH_CFG_ST_TIMEDELTA 2 +# endif + +/** @} */ + +/*===========================================================================*/ +/** + * @name Kernel parameters and options + * @{ + */ +/*===========================================================================*/ + +/** + * @brief Round robin interval. + * @details This constant is the number of system ticks allowed for the + * threads before preemption occurs. Setting this value to zero + * disables the preemption for threads with equal priority and the + * round robin becomes cooperative. Note that higher priority + * threads can still preempt, the kernel is always preemptive. + * @note Disabling the round robin preemption makes the kernel more compact + * and generally faster. + * @note The round robin preemption is not supported in tickless mode and + * must be set to zero in that case. + */ +# if !defined(CH_CFG_TIME_QUANTUM) +# define CH_CFG_TIME_QUANTUM 0 +# endif + +/** + * @brief Managed RAM size. + * @details Size of the RAM area to be managed by the OS. If set to zero + * then the whole available RAM is used. The core memory is made + * available to the heap allocator and/or can be used directly through + * the simplified core memory allocator. + * + * @note In order to let the OS manage the whole RAM the linker script must + * provide the @p __heap_base__ and @p __heap_end__ symbols. + * @note Requires @p CH_CFG_USE_MEMCORE. + */ +# if !defined(CH_CFG_MEMCORE_SIZE) +# define CH_CFG_MEMCORE_SIZE 0 +# endif + +/** + * @brief Idle thread automatic spawn suppression. + * @details When this option is activated the function @p chSysInit() + * does not spawn the idle thread. The application @p main() + * function becomes the idle thread and must implement an + * infinite loop. + */ +# if !defined(CH_CFG_NO_IDLE_THREAD) +# define CH_CFG_NO_IDLE_THREAD FALSE +# endif + +/** @} */ + +/*===========================================================================*/ +/** + * @name Performance options + * @{ + */ +/*===========================================================================*/ + +/** + * @brief OS optimization. + * @details If enabled then time efficient rather than space efficient code + * is used when two possible implementations exist. + * + * @note This is not related to the compiler optimization options. + * @note The default is @p TRUE. + */ +# if !defined(CH_CFG_OPTIMIZE_SPEED) +# define CH_CFG_OPTIMIZE_SPEED FALSE +# endif + +/** @} */ + +/*===========================================================================*/ +/** + * @name Subsystem options + * @{ + */ +/*===========================================================================*/ + +/** + * @brief Time Measurement APIs. + * @details If enabled then the time measurement APIs are included in + * the kernel. + * + * @note The default is @p TRUE. + */ +# if !defined(CH_CFG_USE_TM) +# define CH_CFG_USE_TM FALSE +# endif + +/** + * @brief Threads registry APIs. + * @details If enabled then the registry APIs are included in the kernel. + * + * @note The default is @p TRUE. + */ +# if !defined(CH_CFG_USE_REGISTRY) +# define CH_CFG_USE_REGISTRY TRUE +# endif + +/** + * @brief Threads synchronization APIs. + * @details If enabled then the @p chThdWait() function is included in + * the kernel. + * + * @note The default is @p TRUE. + */ +# if !defined(CH_CFG_USE_WAITEXIT) +# define CH_CFG_USE_WAITEXIT TRUE +# endif + +/** + * @brief Semaphores APIs. + * @details If enabled then the Semaphores APIs are included in the kernel. + * + * @note The default is @p TRUE. + */ +# if !defined(CH_CFG_USE_SEMAPHORES) +# define CH_CFG_USE_SEMAPHORES TRUE +# endif + +/** + * @brief Semaphores queuing mode. + * @details If enabled then the threads are enqueued on semaphores by + * priority rather than in FIFO order. + * + * @note The default is @p FALSE. Enable this if you have special + * requirements. + * @note Requires @p CH_CFG_USE_SEMAPHORES. + */ +# if !defined(CH_CFG_USE_SEMAPHORES_PRIORITY) +# define CH_CFG_USE_SEMAPHORES_PRIORITY FALSE +# endif + +/** + * @brief Mutexes APIs. + * @details If enabled then the mutexes APIs are included in the kernel. + * + * @note The default is @p TRUE. + */ +# if !defined(CH_CFG_USE_MUTEXES) +# define CH_CFG_USE_MUTEXES TRUE +# endif + +/** + * @brief Enables recursive behavior on mutexes. + * @note Recursive mutexes are heavier and have an increased + * memory footprint. + * + * @note The default is @p FALSE. + * @note Requires @p CH_CFG_USE_MUTEXES. + */ +# if !defined(CH_CFG_USE_MUTEXES_RECURSIVE) +# define CH_CFG_USE_MUTEXES_RECURSIVE FALSE +# endif + +/** + * @brief Conditional Variables APIs. + * @details If enabled then the conditional variables APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_MUTEXES. + */ +# if !defined(CH_CFG_USE_CONDVARS) +# define CH_CFG_USE_CONDVARS TRUE +# endif + +/** + * @brief Conditional Variables APIs with timeout. + * @details If enabled then the conditional variables APIs with timeout + * specification are included in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_CONDVARS. + */ +# if !defined(CH_CFG_USE_CONDVARS_TIMEOUT) +# define CH_CFG_USE_CONDVARS_TIMEOUT FALSE +# endif + +/** + * @brief Events Flags APIs. + * @details If enabled then the event flags APIs are included in the kernel. + * + * @note The default is @p TRUE. + */ +# if !defined(CH_CFG_USE_EVENTS) +# define CH_CFG_USE_EVENTS TRUE +# endif + +/** + * @brief Events Flags APIs with timeout. + * @details If enabled then the events APIs with timeout specification + * are included in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_EVENTS. + */ +# if !defined(CH_CFG_USE_EVENTS_TIMEOUT) +# define CH_CFG_USE_EVENTS_TIMEOUT TRUE +# endif + +/** + * @brief Synchronous Messages APIs. + * @details If enabled then the synchronous messages APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + */ +# if !defined(CH_CFG_USE_MESSAGES) +# define CH_CFG_USE_MESSAGES TRUE +# endif + +/** + * @brief Synchronous Messages queuing mode. + * @details If enabled then messages are served by priority rather than in + * FIFO order. + * + * @note The default is @p FALSE. Enable this if you have special + * requirements. + * @note Requires @p CH_CFG_USE_MESSAGES. + */ +# if !defined(CH_CFG_USE_MESSAGES_PRIORITY) +# define CH_CFG_USE_MESSAGES_PRIORITY FALSE +# endif + +/** + * @brief Mailboxes APIs. + * @details If enabled then the asynchronous messages (mailboxes) APIs are + * included in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_SEMAPHORES. + */ +# if !defined(CH_CFG_USE_MAILBOXES) +# define CH_CFG_USE_MAILBOXES TRUE +# endif + +/** + * @brief Core Memory Manager APIs. + * @details If enabled then the core memory manager APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + */ +# if !defined(CH_CFG_USE_MEMCORE) +# define CH_CFG_USE_MEMCORE TRUE +# endif + +/** + * @brief Heap Allocator APIs. + * @details If enabled then the memory heap allocator APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_MEMCORE and either @p CH_CFG_USE_MUTEXES or + * @p CH_CFG_USE_SEMAPHORES. + * @note Mutexes are recommended. + */ +# if !defined(CH_CFG_USE_HEAP) +# define CH_CFG_USE_HEAP FALSE +# endif + +/** + * @brief Memory Pools Allocator APIs. + * @details If enabled then the memory pools allocator APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + */ +# if !defined(CH_CFG_USE_MEMPOOLS) +# define CH_CFG_USE_MEMPOOLS FALSE +# endif + +/** + * @brief Objects FIFOs APIs. + * @details If enabled then the objects FIFOs APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + */ +# if !defined(CH_CFG_USE_OBJ_FIFOS) +# define CH_CFG_USE_OBJ_FIFOS FALSE +# endif + +/** + * @brief Pipes APIs. + * @details If enabled then the pipes APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + */ +# if !defined(CH_CFG_USE_PIPES) +# define CH_CFG_USE_PIPES FALSE +# endif + +/** + * @brief Dynamic Threads APIs. + * @details If enabled then the dynamic threads creation APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_WAITEXIT. + * @note Requires @p CH_CFG_USE_HEAP and/or @p CH_CFG_USE_MEMPOOLS. + */ +# if !defined(CH_CFG_USE_DYNAMIC) +# define CH_CFG_USE_DYNAMIC FALSE +# endif + +/** @} */ + +/*===========================================================================*/ +/** + * @name Objects factory options + * @{ + */ +/*===========================================================================*/ + +/** + * @brief Objects Factory APIs. + * @details If enabled then the objects factory APIs are included in the + * kernel. + * + * @note The default is @p FALSE. + */ +# if !defined(CH_CFG_USE_FACTORY) +# define CH_CFG_USE_FACTORY FALSE +# endif + +/** + * @brief Maximum length for object names. + * @details If the specified length is zero then the name is stored by + * pointer but this could have unintended side effects. + */ +# if !defined(CH_CFG_FACTORY_MAX_NAMES_LENGTH) +# define CH_CFG_FACTORY_MAX_NAMES_LENGTH 8 +# endif + +/** + * @brief Enables the registry of generic objects. + */ +# if !defined(CH_CFG_FACTORY_OBJECTS_REGISTRY) +# define CH_CFG_FACTORY_OBJECTS_REGISTRY FALSE +# endif + +/** + * @brief Enables factory for generic buffers. + */ +# if !defined(CH_CFG_FACTORY_GENERIC_BUFFERS) +# define CH_CFG_FACTORY_GENERIC_BUFFERS FALSE +# endif + +/** + * @brief Enables factory for semaphores. + */ +# if !defined(CH_CFG_FACTORY_SEMAPHORES) +# define CH_CFG_FACTORY_SEMAPHORES FALSE +# endif + +/** + * @brief Enables factory for mailboxes. + */ +# if !defined(CH_CFG_FACTORY_MAILBOXES) +# define CH_CFG_FACTORY_MAILBOXES FALSE +# endif + +/** + * @brief Enables factory for objects FIFOs. + */ +# if !defined(CH_CFG_FACTORY_OBJ_FIFOS) +# define CH_CFG_FACTORY_OBJ_FIFOS FALSE +# endif + +/** + * @brief Enables factory for Pipes. + */ +# if !defined(CH_CFG_FACTORY_PIPES) || defined(__DOXYGEN__) +# define CH_CFG_FACTORY_PIPES FALSE +# endif + +/** @} */ + +/*===========================================================================*/ +/** + * @name Debug options + * @{ + */ +/*===========================================================================*/ + +/** + * @brief Debug option, kernel statistics. + * + * @note The default is @p FALSE. + */ +# if !defined(CH_DBG_STATISTICS) +# define CH_DBG_STATISTICS FALSE +# endif + +/** + * @brief Debug option, system state check. + * @details If enabled the correct call protocol for system APIs is checked + * at runtime. + * + * @note The default is @p FALSE. + */ +# if !defined(CH_DBG_SYSTEM_STATE_CHECK) +# define CH_DBG_SYSTEM_STATE_CHECK FALSE +# endif + +/** + * @brief Debug option, parameters checks. + * @details If enabled then the checks on the API functions input + * parameters are activated. + * + * @note The default is @p FALSE. + */ +# if !defined(CH_DBG_ENABLE_CHECKS) +# define CH_DBG_ENABLE_CHECKS FALSE +# endif + +/** + * @brief Debug option, consistency checks. + * @details If enabled then all the assertions in the kernel code are + * activated. This includes consistency checks inside the kernel, + * runtime anomalies and port-defined checks. + * + * @note The default is @p FALSE. + */ +# if !defined(CH_DBG_ENABLE_ASSERTS) +# define CH_DBG_ENABLE_ASSERTS FALSE +# endif + +/** + * @brief Debug option, trace buffer. + * @details If enabled then the trace buffer is activated. + * + * @note The default is @p CH_DBG_TRACE_MASK_DISABLED. + */ +# if !defined(CH_DBG_TRACE_MASK) +# define CH_DBG_TRACE_MASK CH_DBG_TRACE_MASK_DISABLED +# endif + +/** + * @brief Trace buffer entries. + * @note The trace buffer is only allocated if @p CH_DBG_TRACE_MASK is + * different from @p CH_DBG_TRACE_MASK_DISABLED. + */ +# if !defined(CH_DBG_TRACE_BUFFER_SIZE) +# define CH_DBG_TRACE_BUFFER_SIZE 128 +# endif + +/** + * @brief Debug option, stack checks. + * @details If enabled then a runtime stack check is performed. + * + * @note The default is @p FALSE. + * @note The stack check is performed in a architecture/port dependent way. + * It may not be implemented or some ports. + * @note The default failure mode is to halt the system with the global + * @p panic_msg variable set to @p NULL. + */ +# if !defined(CH_DBG_ENABLE_STACK_CHECK) +# define CH_DBG_ENABLE_STACK_CHECK FALSE +# endif + +/** + * @brief Debug option, stacks initialization. + * @details If enabled then the threads working area is filled with a byte + * value when a thread is created. This can be useful for the + * runtime measurement of the used stack. + * + * @note The default is @p FALSE. + */ +# if !defined(CH_DBG_FILL_THREADS) +# define CH_DBG_FILL_THREADS FALSE +# endif + +/** + * @brief Debug option, threads profiling. + * @details If enabled then a field is added to the @p thread_t structure that + * counts the system ticks occurred while executing the thread. + * + * @note The default is @p FALSE. + * @note This debug option is not currently compatible with the + * tickless mode. + */ +# if !defined(CH_DBG_THREADS_PROFILING) +# define CH_DBG_THREADS_PROFILING FALSE +# endif + +/** @} */ + +/*===========================================================================*/ +/** + * @name Kernel hooks + * @{ + */ +/*===========================================================================*/ + +/** + * @brief System structure extension. + * @details User fields added to the end of the @p ch_system_t structure. + */ +# define CH_CFG_SYSTEM_EXTRA_FIELDS /* Add threads custom fields here.*/ + +/** + * @brief System initialization hook. + * @details User initialization code added to the @p chSysInit() function + * just before interrupts are enabled globally. + */ +# define CH_CFG_SYSTEM_INIT_HOOK() \ + { /* Add threads initialization code here.*/ } + +/** + * @brief Threads descriptor structure extension. + * @details User fields added to the end of the @p thread_t structure. + */ +# define CH_CFG_THREAD_EXTRA_FIELDS /* Add threads custom fields here.*/ + +/** + * @brief Threads initialization hook. + * @details User initialization code added to the @p _thread_init() function. + * + * @note It is invoked from within @p _thread_init() and implicitly from all + * the threads creation APIs. + */ +# define CH_CFG_THREAD_INIT_HOOK(tp) \ + { /* Add threads initialization code here.*/ } + +/** + * @brief Threads finalization hook. + * @details User finalization code added to the @p chThdExit() API. + */ +# define CH_CFG_THREAD_EXIT_HOOK(tp) \ + { /* Add threads finalization code here.*/ } + +/** + * @brief Context switch hook. + * @details This hook is invoked just before switching between threads. + */ +# define CH_CFG_CONTEXT_SWITCH_HOOK(ntp, otp) \ + { /* Context switch code here.*/ } + +/** + * @brief ISR enter hook. + */ +# define CH_CFG_IRQ_PROLOGUE_HOOK() \ + { /* IRQ prologue code here.*/ } + +/** + * @brief ISR exit hook. + */ +# define CH_CFG_IRQ_EPILOGUE_HOOK() \ + { /* IRQ epilogue code here.*/ } + +/** + * @brief Idle thread enter hook. + * @note This hook is invoked within a critical zone, no OS functions + * should be invoked from here. + * @note This macro can be used to activate a power saving mode. + */ +# define CH_CFG_IDLE_ENTER_HOOK() \ + { /* Idle-enter code here.*/ } + +/** + * @brief Idle thread leave hook. + * @note This hook is invoked within a critical zone, no OS functions + * should be invoked from here. + * @note This macro can be used to deactivate a power saving mode. + */ +# define CH_CFG_IDLE_LEAVE_HOOK() \ + { /* Idle-leave code here.*/ } + +/** + * @brief Idle Loop hook. + * @details This hook is continuously invoked by the idle thread loop. + */ +# define CH_CFG_IDLE_LOOP_HOOK() \ + { /* Idle loop code here.*/ } + +/** + * @brief System tick event hook. + * @details This hook is invoked in the system tick handler immediately + * after processing the virtual timers queue. + */ +# define CH_CFG_SYSTEM_TICK_HOOK() \ + { /* System tick event code here.*/ } + +/** + * @brief System halt hook. + * @details This hook is invoked in case to a system halting error before + * the system is halted. + */ +# define CH_CFG_SYSTEM_HALT_HOOK(reason) \ + { /* System halt code here.*/ } + +/** + * @brief Trace hook. + * @details This hook is invoked each time a new record is written in the + * trace buffer. + */ +# define CH_CFG_TRACE_HOOK(tep) \ + { /* Trace code here.*/ } + +/** @} */ + +/*===========================================================================*/ +/* Port-specific settings (override port settings defaulted in chcore.h). */ +/*===========================================================================*/ + +#endif /* CHCONF_H */ + +/** @} */ diff --git a/keyboards/boston/config.h b/keyboards/boston/config.h new file mode 100644 index 0000000000..7fa5d0ef5d --- /dev/null +++ b/keyboards/boston/config.h @@ -0,0 +1,92 @@ +/* Copyright 2020 Pylon + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xAC11 +#define PRODUCT_ID 0x4175 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Pylon +#define PRODUCT Boston +/* key matrix size */ +#define MATRIX_ROWS 7 +#define MATRIX_COLS 19 + +#define MATRIX_COL_PINS \ + { B10, B11, B12, B13, B14, B15, A8, A9, A10, A15, B3, B4, B7, B8, B9, C14, C15, F0, A3 } +#define MATRIX_ROW_PINS \ + { B5, B6, A7, B0, B1, B2, A4 } +#define DIODE_DIRECTION COL2ROW + +#define BACKLIGHT_PIN A6 +#define BACKLIGHT_PWM_DRIVER PWMD3 +#define BACKLIGHT_PWM_CHANNEL 1 +#define BACKLIGHT_PAL_MODE 1 +#define BACKLIGHT_LEVELS 6 +#define BACKLIGHT_BREATHING +#define BREATHING_PERIOD 6 + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* Define RGBLED */ +#define RGB_DI_PIN A5 +#define RGBLED_NUM 1 +#define RGBLIGHT_ANIMATIONS +#define RGBLIGHT_LAYERS + +//The 3D-printed version of Boston uses APA106 LEDs, which are reversed +#define WS2812_BYTE_ORDER WS2812_BYTE_ORDER_RGB + +/* Define encoder */ +#define ENCODERS_PAD_A \ + { C13 } +#define ENCODERS_PAD_B \ + { F1 } +#define ENCODER_RESOLUTION 2 +#define TAP_CODE_DELAY 15 + +/* Lock LEDs */ +#define LED_NUM_LOCK_PIN A0 +#define LED_CAPS_LOCK_PIN A1 +#define LED_SCROLL_LOCK_PIN A2 + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION diff --git a/keyboards/boston/halconf.h b/keyboards/boston/halconf.h new file mode 100644 index 0000000000..4d46d4e290 --- /dev/null +++ b/keyboards/boston/halconf.h @@ -0,0 +1,524 @@ +/* + ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +/** + * @file templates/halconf.h + * @brief HAL configuration header. + * @details HAL configuration file, this file allows to enable or disable the + * various device drivers from your application. You may also use + * this file in order to override the device drivers default settings. + * + * @addtogroup HAL_CONF + * @{ + */ + +#ifndef HALCONF_H +# define HALCONF_H + +# define _CHIBIOS_HAL_CONF_ +# define _CHIBIOS_HAL_CONF_VER_7_0_ + +# include "mcuconf.h" + +/** + * @brief Enables the PAL subsystem. + */ +# if !defined(HAL_USE_PAL) || defined(__DOXYGEN__) +# define HAL_USE_PAL TRUE +# endif + +/** + * @brief Enables the ADC subsystem. + */ +# if !defined(HAL_USE_ADC) || defined(__DOXYGEN__) +# define HAL_USE_ADC FALSE +# endif + +/** + * @brief Enables the CAN subsystem. + */ +# if !defined(HAL_USE_CAN) || defined(__DOXYGEN__) +# define HAL_USE_CAN FALSE +# endif + +/** + * @brief Enables the cryptographic subsystem. + */ +# if !defined(HAL_USE_CRY) || defined(__DOXYGEN__) +# define HAL_USE_CRY FALSE +# endif + +/** + * @brief Enables the DAC subsystem. + */ +# if !defined(HAL_USE_DAC) || defined(__DOXYGEN__) +# define HAL_USE_DAC FALSE +# endif + +/** + * @brief Enables the GPT subsystem. + */ +# if !defined(HAL_USE_GPT) || defined(__DOXYGEN__) +# define HAL_USE_GPT FALSE +# endif + +/** + * @brief Enables the I2C subsystem. + */ +# if !defined(HAL_USE_I2C) || defined(__DOXYGEN__) +# define HAL_USE_I2C TRUE +# endif + +/** + * @brief Enables the I2S subsystem. + */ +# if !defined(HAL_USE_I2S) || defined(__DOXYGEN__) +# define HAL_USE_I2S FALSE +# endif + +/** + * @brief Enables the ICU subsystem. + */ +# if !defined(HAL_USE_ICU) || defined(__DOXYGEN__) +# define HAL_USE_ICU FALSE +# endif + +/** + * @brief Enables the MAC subsystem. + */ +# if !defined(HAL_USE_MAC) || defined(__DOXYGEN__) +# define HAL_USE_MAC FALSE +# endif + +/** + * @brief Enables the MMC_SPI subsystem. + */ +# if !defined(HAL_USE_MMC_SPI) || defined(__DOXYGEN__) +# define HAL_USE_MMC_SPI FALSE +# endif + +/** + * @brief Enables the PWM subsystem. + */ +# if !defined(HAL_USE_PWM) || defined(__DOXYGEN__) +# define HAL_USE_PWM TRUE +# endif + +/** + * @brief Enables the RTC subsystem. + */ +# if !defined(HAL_USE_RTC) || defined(__DOXYGEN__) +# define HAL_USE_RTC FALSE +# endif + +/** + * @brief Enables the SDC subsystem. + */ +# if !defined(HAL_USE_SDC) || defined(__DOXYGEN__) +# define HAL_USE_SDC FALSE +# endif + +/** + * @brief Enables the SERIAL subsystem. + */ +# if !defined(HAL_USE_SERIAL) || defined(__DOXYGEN__) +# define HAL_USE_SERIAL FALSE +# endif + +/** + * @brief Enables the SERIAL over USB subsystem. + */ +# if !defined(HAL_USE_SERIAL_USB) || defined(__DOXYGEN__) +# define HAL_USE_SERIAL_USB FALSE +# endif + +/** + * @brief Enables the SIO subsystem. + */ +# if !defined(HAL_USE_SIO) || defined(__DOXYGEN__) +# define HAL_USE_SIO FALSE +# endif + +/** + * @brief Enables the SPI subsystem. + */ +# if !defined(HAL_USE_SPI) || defined(__DOXYGEN__) +# define HAL_USE_SPI TRUE +# endif + +/** + * @brief Enables the TRNG subsystem. + */ +# if !defined(HAL_USE_TRNG) || defined(__DOXYGEN__) +# define HAL_USE_TRNG FALSE +# endif + +/** + * @brief Enables the UART subsystem. + */ +# if !defined(HAL_USE_UART) || defined(__DOXYGEN__) +# define HAL_USE_UART FALSE +# endif + +/** + * @brief Enables the USB subsystem. + */ +# if !defined(HAL_USE_USB) || defined(__DOXYGEN__) +# define HAL_USE_USB TRUE +# endif + +/** + * @brief Enables the WDG subsystem. + */ +# if !defined(HAL_USE_WDG) || defined(__DOXYGEN__) +# define HAL_USE_WDG FALSE +# endif + +/** + * @brief Enables the WSPI subsystem. + */ +# if !defined(HAL_USE_WSPI) || defined(__DOXYGEN__) +# define HAL_USE_WSPI FALSE +# endif + +/*===========================================================================*/ +/* PAL driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables synchronous APIs. + * @note Disabling this option saves both code and data space. + */ +# if !defined(PAL_USE_CALLBACKS) || defined(__DOXYGEN__) +# define PAL_USE_CALLBACKS FALSE +# endif + +/** + * @brief Enables synchronous APIs. + * @note Disabling this option saves both code and data space. + */ +# if !defined(PAL_USE_WAIT) || defined(__DOXYGEN__) +# define PAL_USE_WAIT FALSE +# endif + +/*===========================================================================*/ +/* ADC driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables synchronous APIs. + * @note Disabling this option saves both code and data space. + */ +# if !defined(ADC_USE_WAIT) || defined(__DOXYGEN__) +# define ADC_USE_WAIT TRUE +# endif + +/** + * @brief Enables the @p adcAcquireBus() and @p adcReleaseBus() APIs. + * @note Disabling this option saves both code and data space. + */ +# if !defined(ADC_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) +# define ADC_USE_MUTUAL_EXCLUSION TRUE +# endif + +/*===========================================================================*/ +/* CAN driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Sleep mode related APIs inclusion switch. + */ +# if !defined(CAN_USE_SLEEP_MODE) || defined(__DOXYGEN__) +# define CAN_USE_SLEEP_MODE TRUE +# endif + +/** + * @brief Enforces the driver to use direct callbacks rather than OSAL events. + */ +# if !defined(CAN_ENFORCE_USE_CALLBACKS) || defined(__DOXYGEN__) +# define CAN_ENFORCE_USE_CALLBACKS FALSE +# endif + +/*===========================================================================*/ +/* CRY driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables the SW fall-back of the cryptographic driver. + * @details When enabled, this option, activates a fall-back software + * implementation for algorithms not supported by the underlying + * hardware. + * @note Fall-back implementations may not be present for all algorithms. + */ +# if !defined(HAL_CRY_USE_FALLBACK) || defined(__DOXYGEN__) +# define HAL_CRY_USE_FALLBACK FALSE +# endif + +/** + * @brief Makes the driver forcibly use the fall-back implementations. + */ +# if !defined(HAL_CRY_ENFORCE_FALLBACK) || defined(__DOXYGEN__) +# define HAL_CRY_ENFORCE_FALLBACK FALSE +# endif + +/*===========================================================================*/ +/* DAC driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables synchronous APIs. + * @note Disabling this option saves both code and data space. + */ +# if !defined(DAC_USE_WAIT) || defined(__DOXYGEN__) +# define DAC_USE_WAIT TRUE +# endif + +/** + * @brief Enables the @p dacAcquireBus() and @p dacReleaseBus() APIs. + * @note Disabling this option saves both code and data space. + */ +# if !defined(DAC_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) +# define DAC_USE_MUTUAL_EXCLUSION TRUE +# endif + +/*===========================================================================*/ +/* I2C driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables the mutual exclusion APIs on the I2C bus. + */ +# if !defined(I2C_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) +# define I2C_USE_MUTUAL_EXCLUSION TRUE +# endif + +/*===========================================================================*/ +/* MAC driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables the zero-copy API. + */ +# if !defined(MAC_USE_ZERO_COPY) || defined(__DOXYGEN__) +# define MAC_USE_ZERO_COPY FALSE +# endif + +/** + * @brief Enables an event sources for incoming packets. + */ +# if !defined(MAC_USE_EVENTS) || defined(__DOXYGEN__) +# define MAC_USE_EVENTS TRUE +# endif + +/*===========================================================================*/ +/* MMC_SPI driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Delays insertions. + * @details If enabled this options inserts delays into the MMC waiting + * routines releasing some extra CPU time for the threads with + * lower priority, this may slow down the driver a bit however. + * This option is recommended also if the SPI driver does not + * use a DMA channel and heavily loads the CPU. + */ +# if !defined(MMC_NICE_WAITING) || defined(__DOXYGEN__) +# define MMC_NICE_WAITING TRUE +# endif + +/*===========================================================================*/ +/* SDC driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Number of initialization attempts before rejecting the card. + * @note Attempts are performed at 10mS intervals. + */ +# if !defined(SDC_INIT_RETRY) || defined(__DOXYGEN__) +# define SDC_INIT_RETRY 100 +# endif + +/** + * @brief Include support for MMC cards. + * @note MMC support is not yet implemented so this option must be kept + * at @p FALSE. + */ +# if !defined(SDC_MMC_SUPPORT) || defined(__DOXYGEN__) +# define SDC_MMC_SUPPORT FALSE +# endif + +/** + * @brief Delays insertions. + * @details If enabled this options inserts delays into the MMC waiting + * routines releasing some extra CPU time for the threads with + * lower priority, this may slow down the driver a bit however. + */ +# if !defined(SDC_NICE_WAITING) || defined(__DOXYGEN__) +# define SDC_NICE_WAITING TRUE +# endif + +/** + * @brief OCR initialization constant for V20 cards. + */ +# if !defined(SDC_INIT_OCR_V20) || defined(__DOXYGEN__) +# define SDC_INIT_OCR_V20 0x50FF8000U +# endif + +/** + * @brief OCR initialization constant for non-V20 cards. + */ +# if !defined(SDC_INIT_OCR) || defined(__DOXYGEN__) +# define SDC_INIT_OCR 0x80100000U +# endif + +/*===========================================================================*/ +/* SERIAL driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Default bit rate. + * @details Configuration parameter, this is the baud rate selected for the + * default configuration. + */ +# if !defined(SERIAL_DEFAULT_BITRATE) || defined(__DOXYGEN__) +# define SERIAL_DEFAULT_BITRATE 38400 +# endif + +/** + * @brief Serial buffers size. + * @details Configuration parameter, you can change the depth of the queue + * buffers depending on the requirements of your application. + * @note The default is 16 bytes for both the transmission and receive + * buffers. + */ +# if !defined(SERIAL_BUFFERS_SIZE) || defined(__DOXYGEN__) +# define SERIAL_BUFFERS_SIZE 16 +# endif + +/*===========================================================================*/ +/* SERIAL_USB driver related setting. */ +/*===========================================================================*/ + +/** + * @brief Serial over USB buffers size. + * @details Configuration parameter, the buffer size must be a multiple of + * the USB data endpoint maximum packet size. + * @note The default is 256 bytes for both the transmission and receive + * buffers. + */ +# if !defined(SERIAL_USB_BUFFERS_SIZE) || defined(__DOXYGEN__) +# define SERIAL_USB_BUFFERS_SIZE 1 +# endif + +/** + * @brief Serial over USB number of buffers. + * @note The default is 2 buffers. + */ +# if !defined(SERIAL_USB_BUFFERS_NUMBER) || defined(__DOXYGEN__) +# define SERIAL_USB_BUFFERS_NUMBER 2 +# endif + +/*===========================================================================*/ +/* SPI driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables synchronous APIs. + * @note Disabling this option saves both code and data space. + */ +# if !defined(SPI_USE_WAIT) || defined(__DOXYGEN__) +# define SPI_USE_WAIT TRUE +# endif + +/** + * @brief Enables circular transfers APIs. + * @note Disabling this option saves both code and data space. + */ +# if !defined(SPI_USE_CIRCULAR) || defined(__DOXYGEN__) +# define SPI_USE_CIRCULAR FALSE +# endif + +/** + * @brief Enables the @p spiAcquireBus() and @p spiReleaseBus() APIs. + * @note Disabling this option saves both code and data space. + */ +# if !defined(SPI_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) +# define SPI_USE_MUTUAL_EXCLUSION TRUE +# endif + +/** + * @brief Handling method for SPI CS line. + * @note Disabling this option saves both code and data space. + */ +# if !defined(SPI_SELECT_MODE) || defined(__DOXYGEN__) +# define SPI_SELECT_MODE SPI_SELECT_MODE_PAD +# endif + +/*===========================================================================*/ +/* UART driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables synchronous APIs. + * @note Disabling this option saves both code and data space. + */ +# if !defined(UART_USE_WAIT) || defined(__DOXYGEN__) +# define UART_USE_WAIT FALSE +# endif + +/** + * @brief Enables the @p uartAcquireBus() and @p uartReleaseBus() APIs. + * @note Disabling this option saves both code and data space. + */ +# if !defined(UART_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) +# define UART_USE_MUTUAL_EXCLUSION FALSE +# endif + +/*===========================================================================*/ +/* USB driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables synchronous APIs. + * @note Disabling this option saves both code and data space. + */ +# if !defined(USB_USE_WAIT) || defined(__DOXYGEN__) +# define USB_USE_WAIT TRUE +# endif + +/*===========================================================================*/ +/* WSPI driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables synchronous APIs. + * @note Disabling this option saves both code and data space. + */ +# if !defined(WSPI_USE_WAIT) || defined(__DOXYGEN__) +# define WSPI_USE_WAIT TRUE +# endif + +/** + * @brief Enables the @p wspiAcquireBus() and @p wspiReleaseBus() APIs. + * @note Disabling this option saves both code and data space. + */ +# if !defined(WSPI_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) +# define WSPI_USE_MUTUAL_EXCLUSION TRUE +# endif + +#endif /* HALCONF_H */ + +/** @} */ diff --git a/keyboards/boston/info.json b/keyboards/boston/info.json new file mode 100644 index 0000000000..be4b6bc607 --- /dev/null +++ b/keyboards/boston/info.json @@ -0,0 +1,147 @@ +{ + "keyboard_name": "boston", + "url": "https://github.com/bluepylons/Boston", + "maintainer": "Pylon", + "width": 20.5, + "height": 7.75, + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"P1", "x":1.5, "y":0}, + {"label":"P2", "x":2.5, "y":0}, + {"label":"P3", "x":3.5, "y":0}, + {"label":"P4", "x":4.5, "y":0}, + {"label":"P5", "x":5.75, "y":0}, + {"label":"P6", "x":6.75, "y":0}, + {"label":"P7", "x":7.75, "y":0}, + {"label":"P8", "x":8.75, "y":0}, + {"label":"P9", "x":10, "y":0}, + {"label":"P10", "x":11, "y":0}, + {"label":"P11", "x":12, "y":0}, + {"label":"P12", "x":13, "y":0}, + {"label":"P13", "x":14.25, "y":0}, + {"label":"P14", "x":15.25, "y":0}, + {"label":"P15", "x":16.25, "y":0}, + {"label":"Insert", "x":17.5, "y":0}, + {"label":"Home", "x":18.5, "y":0}, + {"label":"PgUp", "x":19.5, "y":0}, + {"label":"Esc", "x":0, "y":1}, + {"label":"F1", "x":1.5, "y":1}, + {"label":"F2", "x":2.5, "y":1}, + {"label":"F3", "x":3.5, "y":1}, + {"label":"F4", "x":4.5, "y":1}, + {"label":"F5", "x":5.75, "y":1}, + {"label":"F6", "x":6.75, "y":1}, + {"label":"F7", "x":7.75, "y":1}, + {"label":"F8", "x":8.75, "y":1}, + {"label":"F9", "x":10, "y":1}, + {"label":"F10", "x":11, "y":1}, + {"label":"F11", "x":12, "y":1}, + {"label":"F12", "x":13, "y":1}, + {"label":"Print Screen", "x":14.25, "y":1}, + {"label":"Scroll Lock", "x":15.25, "y":1}, + {"label":"Pause", "x":16.25, "y":1}, + {"label":"Delete", "x":17.5, "y":1}, + {"label":"End", "x":18.5, "y":1}, + {"label":"PgDn", "x":19.5, "y":1}, + + {"label":"~", "x":0, "y":2.5}, + {"label":"!", "x":1, "y":2.5}, + {"label":"@", "x":2, "y":2.5}, + {"label":"#", "x":3, "y":2.5}, + {"label":"$", "x":4, "y":2.5}, + {"label":"%", "x":5, "y":2.5}, + {"label":"^", "x":6, "y":2.5}, + {"label":"&", "x":7, "y":2.5}, + {"label":"*", "x":8, "y":2.5}, + {"label":"(", "x":9, "y":2.5}, + {"label":")", "x":10, "y":2.5}, + {"label":"_", "x":11, "y":2.5}, + {"label":"+", "x":12, "y":2.5}, + {"label":"Backspace", "x":13, "y":2.5}, + {"label":"Backspace", "x":14, "y":2.5}, + {"label":"P16", "x":15.25, "y":2.5}, + {"label":"Num Lock", "x":16.5, "y":2.5}, + {"label":"/", "x":17.5, "y":2.5}, + {"label":"*", "x":18.5, "y":2.5}, + {"label":"-", "x":19.5, "y":2.5}, + + {"label":"Tab", "x":0, "y":3.5, "w":1.5}, + {"label":"Q", "x":1.5, "y":3.5}, + {"label":"W", "x":2.5, "y":3.5}, + {"label":"E", "x":3.5, "y":3.5}, + {"label":"R", "x":4.5, "y":3.5}, + {"label":"T", "x":5.5, "y":3.5}, + {"label":"Y", "x":6.5, "y":3.5}, + {"label":"U", "x":7.5, "y":3.5}, + {"label":"I", "x":8.5, "y":3.5}, + {"label":"O", "x":9.5, "y":3.5}, + {"label":"P", "x":10.5, "y":3.5}, + {"label":"{", "x":11.5, "y":3.5}, + {"label":"}", "x":12.5, "y":3.5}, + {"label":"|", "x":13.5, "y":3.5, "w":1.5}, + {"label":"P17", "x":15.25, "y":3.5}, + {"label":"7", "x":16.5, "y":3.5}, + {"label":"8", "x":17.5, "y":3.5}, + {"label":"9", "x":18.5, "y":3.5}, + {"label":"-", "x":19.5, "y":3.5}, + + {"label":"Caps Lock", "x":0, "y":4.5, "w":1.75}, + {"label":"A", "x":1.75, "y":4.5}, + {"label":"S", "x":2.75, "y":4.5}, + {"label":"D", "x":3.75, "y":4.5}, + {"label":"F", "x":4.75, "y":4.5}, + {"label":"G", "x":5.75, "y":4.5}, + {"label":"H", "x":6.75, "y":4.5}, + {"label":"J", "x":7.75, "y":4.5}, + {"label":"K", "x":8.75, "y":4.5}, + {"label":"L", "x":9.75, "y":4.5}, + {"label":"'", "x":10.75, "y":4.5}, + {"label":"'", "x":11.75, "y":4.5}, + {"label":"~", "x":12.75, "y":4.5}, + {"label":"Enter", "x":13.75, "y":4.5, "w":1.25}, + {"label":"P18", "x":15.25, "y":4.5}, + {"label":"4", "x":16.5, "y":4.5}, + {"label":"5", "x":17.5, "y":4.5}, + {"label":"6", "x":18.5, "y":4.5}, + {"label":"+", "x":19.5, "y":4.5}, + + {"label":"Left Shift", "x":0, "y":5.5, "w":1.25}, + {"label":"Left Shift", "x":1.25, "y":5.5}, + {"label":"Z", "x":2.25, "y":5.5}, + {"label":"X", "x":3.25, "y":5.5}, + {"label":"C", "x":4.25, "y":5.5}, + {"label":"V", "x":5.25, "y":5.5}, + {"label":"B", "x":6.25, "y":5.5}, + {"label":"N", "x":7.25, "y":5.5}, + {"label":"M", "x":8.25, "y":5.5}, + {"label":"<", "x":9.25, "y":5.5}, + {"label":">", "x":10.25, "y":5.5}, + {"label":"?", "x":11.25, "y":5.5}, + {"label":"Right Shift", "x":12.25, "y":5.5, "w":1.75}, + {"label":"Up", "x":14.25, "y":5.75}, + {"label":"1", "x":16.5, "y":5.5}, + {"label":"2", "x":17.5, "y":5.5}, + {"label":"3", "x":18.5, "y":5.5}, + {"label":"Enter", "x":19.5, "y":5.5, "h":2}, + + + {"label":"Ctrl", "x":0, "y":6.5, "w":1.25}, + {"label":"OS", "x":1.25, "y":6.5, "w":1.25}, + {"label":"Alt", "x":2.5, "y":6.5, "w":1.25}, + {"label":"Space", "x":3.75, "y":6.5, "w":2.25}, + {"label":"Space", "x":6, "y":6.5, "w":1.25}, + {"label":"Space", "x":7.25, "y":6.5, "w":2.75}, + {"label":"Alt", "x":10, "y":6.5}, + {"label":"Menu", "x":11, "y":6.5}, + {"label":"Ctrl", "x":12, "y":6.5}, + {"label":"Left", "x":13.25, "y":6.75}, + {"label":"Down", "x":14.25, "y":6.75}, + {"label":"Right", "x":15.25, "y":6.75}, + {"label":"0", "x":16.5, "y":6.5}, + {"label":"0", "x":17.5, "y":6.5}, + {"label":".", "x":18.5, "y":6.5} + ] + } + } +} diff --git a/keyboards/boston/keymaps/default/keymap.c b/keyboards/boston/keymaps/default/keymap.c new file mode 100644 index 0000000000..6a3cc1e60a --- /dev/null +++ b/keyboards/boston/keymaps/default/keymap.c @@ -0,0 +1,52 @@ +/* Copyright 2020 Pylon + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + + /* Due to how the matrix is setup - the right split backspace key is, for firmware purposes the key to the right of up arrow, which on the actual keyboard is a blocker*/ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_MUTE, KC_F13 , KC_F14 , KC_F15 , KC_F16 , KC_F17 , KC_F18 , KC_F19 , KC_F20 , KC_F21 , KC_F22 , KC_F23 , KC_F24 , KC_MPRV, KC_MPLY, KC_MNXT , KC_INS , KC_HOME, KC_PGUP, + KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_PSCR, KC_SLCK, KC_PAUSE, KC_DEL , KC_END , KC_PGDN, + KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_BSPC, KC_CALC, KC_NLCK , KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, RGB_TOG, KC_P7 , KC_P8 , KC_P9 , KC_PEQL, + KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_ENT , KC_MSEL, KC_P4 , KC_P5 , KC_P6 , KC_PPLS, + KC_LSFT, KC_BSLS, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_P1 , KC_P2 , KC_P3 , KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_SPC , KC_SPC , KC_RALT, KC_APP , KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0 , KC_P0 , KC_PDOT + ), + + [1] = LAYOUT_all( + + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______ , _______, _______, _______, + _______,_______,_______ , _______ ,_______ ,_______ , _______ ,_______ ,_______ , _______, _______, _______, _______ , _______, _______ + ), + +}; + +void encoder_update_user(uint8_t index, bool clockwise) { + if (clockwise) { + tap_code(KC_VOLU); + } + else { + tap_code(KC_VOLD); + } + } diff --git a/keyboards/boston/keymaps/rgb-light-layers/keymap.c b/keyboards/boston/keymaps/rgb-light-layers/keymap.c new file mode 100644 index 0000000000..44e3df70f5 --- /dev/null +++ b/keyboards/boston/keymaps/rgb-light-layers/keymap.c @@ -0,0 +1,223 @@ +/* Copyright 2020 Pylon + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + + /* Due to how the matrix is setup - the right split backspace key is, for firmware purposes the key to the right of up arrow, which on the actual keyboard is a blocker*/ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_MUTE, KC_F13 , KC_F14 , KC_F15 , KC_F16 , KC_F17 , KC_F18 , KC_F19 , KC_F20 , KC_F21 , KC_F22 , KC_F23 , KC_F24 , KC_MPRV, KC_MPLY, KC_MNXT , KC_INS , KC_HOME, KC_PGUP, + KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_PSCR, KC_SLCK, KC_PAUSE, KC_DEL , KC_END , KC_PGDN, + KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_BSPC, KC_CALC, KC_NLCK , KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, RGB_TOG, KC_P7 , KC_P8 , KC_P9 , KC_PEQL, + KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_ENT , KC_MSEL, KC_P4 , KC_P5 , KC_P6 , KC_PPLS, + KC_LSFT, KC_BSLS, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_P1 , KC_P2 , KC_P3 , KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_SPC , KC_SPC , KC_RALT, KC_APP , KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0 , KC_P0 , KC_PDOT + ), + + [1] = LAYOUT_all( + + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______ , _______, _______, _______, + _______,_______,_______ , _______ ,_______ ,_______ , _______ ,_______ ,_______ , _______, _______, _______, _______ , _______, _______ + ), + + [2] = LAYOUT_all( + + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______ , _______, _______, _______, + _______,_______,_______ , _______ ,_______ ,_______ , _______ ,_______ ,_______ , _______, _______, _______, _______ , _______, _______ + ), + + [3] = LAYOUT_all( + + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______ , _______, _______, _______, + _______,_______,_______ , _______ ,_______ ,_______ , _______ ,_______ ,_______ , _______, _______, _______, _______ , _______, _______ + ), + + [4] = LAYOUT_all( + + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______ , _______, _______, _______, + _______,_______,_______ , _______ ,_______ ,_______ , _______ ,_______ ,_______ , _______, _______, _______, _______ , _______, _______ + ), + + [5] = LAYOUT_all( + + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______ , _______, _______, _______, + _______,_______,_______ , _______ ,_______ ,_______ , _______ ,_______ ,_______ , _______, _______, _______, _______ , _______, _______ + ), + + [6] = LAYOUT_all( + + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______ , _______, _______, _______, + _______,_______,_______ , _______ ,_______ ,_______ , _______ ,_______ ,_______ , _______, _______, _______, _______ , _______, _______ + ), + + [7] = LAYOUT_all( + + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______, _______ , _______, _______, _______, + _______,_______,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______, _______ , _______, _______, _______, + _______,_______,_______ , _______ ,_______ ,_______ , _______ ,_______ ,_______ , _______, _______, _______, _______ , _______, _______ + ), +}; + +uint8_t go_to_layer = 0; /* Used for the layer changing code for the encoder below */ + +void encoder_update_user(uint8_t index, bool clockwise) { + if (matrix_is_on(6, 10)) { /* Use the knob to change layers when holding down Menu key. Unfortunately using layers to initiate this behavior is not possible. */ + if (clockwise) { + + layer_off(go_to_layer); + + if(go_to_layer<7) { + go_to_layer++; + } + else { + go_to_layer=0; + } + + layer_on(go_to_layer); + + } + + else { + + layer_off(go_to_layer); + + /* update go_to_layer*/ + if(go_to_layer>0) { + go_to_layer--; + } + else { + go_to_layer=7; + } + + layer_on(go_to_layer); + + } + } + + else { /* normal operation as volume knob */ + if (clockwise) { + tap_code(KC_VOLU); + } + else { + tap_code(KC_VOLD); + } + } +} + +/*Default layer is white.*/ +/*Remember to also change the color in keyboard_post_init_kb in boston.c to make the startup color match the layer 0 color */ +const rgblight_segment_t PROGMEM layer_0[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 4, 0, 0, 128} /*White*/ +); + +const rgblight_segment_t PROGMEM layer_1[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 4, 0, 255, 128} /*Red*/ +); + +const rgblight_segment_t PROGMEM layer_2[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 4, 21, 255, 128} /*Orange*/ +); + +const rgblight_segment_t PROGMEM layer_3[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 4, 43, 255, 128} /*Yellow*/ +); + +const rgblight_segment_t PROGMEM layer_4[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 4, 75, 255, 128} /*Green*/ +); + +const rgblight_segment_t PROGMEM layer_5[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 4, 135, 255, 128} /*Teal*/ +); + +const rgblight_segment_t PROGMEM layer_6[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 4, 160, 255, 128} /*Blue*/ +); + +const rgblight_segment_t PROGMEM layer_7[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 4, 190, 255, 128} /*Magenta*/ +); + +const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST( + layer_0, + layer_1, + layer_2, + layer_3, + layer_4, + layer_5, + layer_6, + layer_7 +); + +void keyboard_post_init_user(void) { + // Enable the LED layers + rgblight_layers = my_rgb_layers; +} + +layer_state_t layer_state_set_user(layer_state_t state) { + // Both layers will light up if both kb layers are active + rgblight_set_layer_state(0, layer_state_cmp(state, 0)); + rgblight_set_layer_state(1, layer_state_cmp(state, 1)); + rgblight_set_layer_state(2, layer_state_cmp(state, 2)); + rgblight_set_layer_state(3, layer_state_cmp(state, 3)); + rgblight_set_layer_state(4, layer_state_cmp(state, 4)); + rgblight_set_layer_state(5, layer_state_cmp(state, 5)); + rgblight_set_layer_state(6, layer_state_cmp(state, 6)); + rgblight_set_layer_state(7, layer_state_cmp(state, 7)); + return state; +} + +bool led_update_user(led_t led_state) { + rgblight_set_layer_state(0, true); + return true; +} + diff --git a/keyboards/boston/mcuconf.h b/keyboards/boston/mcuconf.h new file mode 100644 index 0000000000..d578d47ed1 --- /dev/null +++ b/keyboards/boston/mcuconf.h @@ -0,0 +1,176 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +#ifndef _MCUCONF_H_ +#define _MCUCONF_H_ + +/* + * STM32F0xx drivers configuration. + * The following settings override the default settings present in + * the various device driver implementation headers. + * Note that the settings for each driver only have effect if the whole + * driver is enabled in halconf.h. + * + * IRQ priorities: + * 3...0 Lowest...Highest. + * + * DMA priorities: + * 0...3 Lowest...Highest. + */ + +#define STM32F0xx_MCUCONF +// #define STM32F070xB + +/* + * HAL driver system settings. + */ +#define STM32_NO_INIT FALSE +#define STM32_PVD_ENABLE FALSE +#define STM32_PLS STM32_PLS_LEV0 +#define STM32_HSI_ENABLED TRUE +#define STM32_HSI14_ENABLED TRUE +#define STM32_HSI48_ENABLED FALSE +#define STM32_LSI_ENABLED TRUE +#define STM32_HSE_ENABLED FALSE +#define STM32_LSE_ENABLED FALSE +#define STM32_SW STM32_SW_PLL +#define STM32_PLLSRC STM32_PLLSRC_HSI_DIV2 +#define STM32_PREDIV_VALUE 1 +#define STM32_PLLMUL_VALUE 12 +#define STM32_HPRE STM32_HPRE_DIV1 +#define STM32_PPRE STM32_PPRE_DIV1 +#define STM32_ADCSW STM32_ADCSW_HSI14 +#define STM32_ADCPRE STM32_ADCPRE_DIV4 +#define STM32_MCOSEL STM32_MCOSEL_NOCLOCK +#define STM32_ADCPRE STM32_ADCPRE_DIV4 +#define STM32_ADCSW STM32_ADCSW_HSI14 +#define STM32_USBSW STM32_USBSW_HSI48 +#define STM32_CECSW STM32_CECSW_HSI +#define STM32_I2C1SW STM32_I2C1SW_HSI +#define STM32_USART1SW STM32_USART1SW_PCLK +#define STM32_RTCSEL STM32_RTCSEL_LSI + +/* + * ADC driver system settings. + */ +#define STM32_ADC_USE_ADC1 FALSE +#define STM32_ADC_ADC1_DMA_PRIORITY 2 +#define STM32_ADC_IRQ_PRIORITY 2 +#define STM32_ADC_ADC1_DMA_IRQ_PRIORITY 2 + +/* + * EXT driver system settings. + */ +#define STM32_EXT_EXTI0_1_IRQ_PRIORITY 3 +#define STM32_EXT_EXTI2_3_IRQ_PRIORITY 3 +#define STM32_EXT_EXTI4_15_IRQ_PRIORITY 3 +#define STM32_EXT_EXTI16_IRQ_PRIORITY 3 +#define STM32_EXT_EXTI17_IRQ_PRIORITY 3 + +/* + * GPT driver system settings. + */ +#define STM32_GPT_USE_TIM1 FALSE +#define STM32_GPT_USE_TIM2 FALSE +#define STM32_GPT_USE_TIM3 FALSE +#define STM32_GPT_USE_TIM14 FALSE +#define STM32_GPT_TIM1_IRQ_PRIORITY 2 +#define STM32_GPT_TIM2_IRQ_PRIORITY 2 +#define STM32_GPT_TIM3_IRQ_PRIORITY 2 +#define STM32_GPT_TIM14_IRQ_PRIORITY 2 + +/* + * I2C driver system settings. + */ +#define STM32_I2C_USE_I2C1 TRUE +#define STM32_I2C_USE_I2C2 FALSE +#define STM32_I2C_BUSY_TIMEOUT 50 +#define STM32_I2C_I2C1_IRQ_PRIORITY 3 +#define STM32_I2C_I2C2_IRQ_PRIORITY 3 +#define STM32_I2C_USE_DMA TRUE +#define STM32_I2C_I2C1_DMA_PRIORITY 1 +#define STM32_I2C_I2C2_DMA_PRIORITY 1 +#define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 7) +#define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 6) +#define STM32_I2C_DMA_ERROR_HOOK(i2cp) osalSysHalt("DMA failure") + +/* + * ICU driver system settings. + */ +#define STM32_ICU_USE_TIM1 FALSE +#define STM32_ICU_USE_TIM2 FALSE +#define STM32_ICU_USE_TIM3 FALSE +#define STM32_ICU_TIM1_IRQ_PRIORITY 3 +#define STM32_ICU_TIM2_IRQ_PRIORITY 3 +#define STM32_ICU_TIM3_IRQ_PRIORITY 3 + +/* + * PWM driver system settings. + */ +#define STM32_PWM_USE_ADVANCED FALSE +#define STM32_PWM_USE_TIM1 FALSE +#define STM32_PWM_USE_TIM2 FALSE +#define STM32_PWM_USE_TIM3 TRUE +#define STM32_PWM_TIM1_IRQ_PRIORITY 3 +#define STM32_PWM_TIM2_IRQ_PRIORITY 3 +#define STM32_PWM_TIM3_IRQ_PRIORITY 3 + +/* + * SERIAL driver system settings. + */ +#define STM32_SERIAL_USE_USART1 FALSE +#define STM32_SERIAL_USE_USART2 FALSE +#define STM32_SERIAL_USART1_PRIORITY 3 +#define STM32_SERIAL_USART2_PRIORITY 3 + +/* + * SPI driver system settings. + */ +#define STM32_SPI_USE_SPI1 FALSE +#define STM32_SPI_USE_SPI2 TRUE +#define STM32_SPI_SPI1_DMA_PRIORITY 1 +#define STM32_SPI_SPI2_DMA_PRIORITY 1 +#define STM32_SPI_SPI1_IRQ_PRIORITY 2 +#define STM32_SPI_SPI2_IRQ_PRIORITY 2 +#define STM32_SPI_SPI2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 4) +#define STM32_SPI_SPI2_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 5) +#define STM32_SPI_DMA_ERROR_HOOK(spip) osalSysHalt("DMA failure") + +/* + * ST driver system settings. + */ +#define STM32_ST_IRQ_PRIORITY 2 +#define STM32_ST_USE_TIMER 2 + +/* + * UART driver system settings. + */ +#define STM32_UART_USE_USART1 FALSE +#define STM32_UART_USE_USART2 FALSE +#define STM32_UART_USART1_IRQ_PRIORITY 3 +#define STM32_UART_USART2_IRQ_PRIORITY 3 +#define STM32_UART_USART1_DMA_PRIORITY 0 +#define STM32_UART_USART2_DMA_PRIORITY 0 +#define STM32_UART_DMA_ERROR_HOOK(uartp) osalSysHalt("DMA failure") + +/* + * USB driver system settings. + */ +#define STM32_USB_USE_USB1 TRUE +#define STM32_USB_LOW_POWER_ON_SUSPEND FALSE +#define STM32_USB_USB1_LP_IRQ_PRIORITY 3 + +#endif /* _MCUCONF_H_ */ diff --git a/keyboards/boston/readme.md b/keyboards/boston/readme.md new file mode 100644 index 0000000000..41c6253fdb --- /dev/null +++ b/keyboards/boston/readme.md @@ -0,0 +1,23 @@ +# Boston + +![3D-printed/FR4 version](https://github.com/bluepylons/Boston/raw/master/graphics/3D-printed-prototype.JPG) + +A compact 120% keyboard. + +This keyboard is currently in IC - [Geekhack IC thread is here](https://geekhack.org/index.php?topic=106501.0). Group buy details will be posted once it is ready. + +* Keyboard Maintainer: [Bluepylons](https://github.com/bluepylons) +* Hardware Supported: Boston PCB (STM32F072) +* Hardware Availability: PCB and 3D-printing files are available on [Github](https://github.com/bluepylons/Boston). + +Make example for this keyboard (after setting up your build environment): + + make boston:default + +Flashing example for this keyboard: + + make boston:default:flash + +To reset the board, use a pin to press the reset button on the underside of the keyboard, above the numlock key. + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/boston/rules.mk b/keyboards/boston/rules.mk new file mode 100644 index 0000000000..47dc205767 --- /dev/null +++ b/keyboards/boston/rules.mk @@ -0,0 +1,26 @@ +# MCU name +MCU = STM32F072 + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +ENCODER_ENABLE = yes + +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE + +# RGB setting +WS2812_DRIVER = bitbang \ No newline at end of file From 09dfc082073ed4166415523eeefeffc59176fb9e Mon Sep 17 00:00:00 2001 From: Takeshi ISHII <2170248+mtei@users.noreply.github.com> Date: Sat, 6 Mar 2021 05:26:26 +0900 Subject: [PATCH 024/613] add OLED_DRIVER_ENABLE into show_options.mk (#12121) --- show_options.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/show_options.mk b/show_options.mk index 958fbf891c..cd04f6a0d7 100644 --- a/show_options.mk +++ b/show_options.mk @@ -49,6 +49,7 @@ OTHER_OPTION_NAMES = \ STENO_ENABLE \ TAP_DANCE_ENABLE \ VIRTSER_ENABLE \ + OLED_DRIVER_ENABLE \ OLED_ENABLE \ LED_BACK_ENABLE \ LED_UNDERGLOW_ENABLE \ From b16bfac1077f1f88b4d0c0e062e085f0e380885b Mon Sep 17 00:00:00 2001 From: Conor Burns Date: Fri, 5 Mar 2021 23:22:42 +0100 Subject: [PATCH 025/613] added 0xCB/1337 keyboard (#12089) Co-authored-by: Drashna Jaelre Co-authored-by: Joel Challis --- keyboards/0xcb/1337/1337.c | 34 ++++ keyboards/0xcb/1337/1337.h | 38 ++++ keyboards/0xcb/1337/config.h | 70 +++++++ keyboards/0xcb/1337/info.json | 22 +++ keyboards/0xcb/1337/keymaps/default/keymap.c | 189 +++++++++++++++++++ keyboards/0xcb/1337/keymaps/via/keymap.c | 189 +++++++++++++++++++ keyboards/0xcb/1337/keymaps/via/rules.mk | 1 + keyboards/0xcb/1337/readme.md | 25 +++ keyboards/0xcb/1337/rules.mk | 27 +++ 9 files changed, 595 insertions(+) create mode 100644 keyboards/0xcb/1337/1337.c create mode 100644 keyboards/0xcb/1337/1337.h create mode 100644 keyboards/0xcb/1337/config.h create mode 100644 keyboards/0xcb/1337/info.json create mode 100644 keyboards/0xcb/1337/keymaps/default/keymap.c create mode 100644 keyboards/0xcb/1337/keymaps/via/keymap.c create mode 100644 keyboards/0xcb/1337/keymaps/via/rules.mk create mode 100644 keyboards/0xcb/1337/readme.md create mode 100644 keyboards/0xcb/1337/rules.mk diff --git a/keyboards/0xcb/1337/1337.c b/keyboards/0xcb/1337/1337.c new file mode 100644 index 0000000000..142c24639a --- /dev/null +++ b/keyboards/0xcb/1337/1337.c @@ -0,0 +1,34 @@ +/* +Copyright 2021 0xCB - Conor Burns + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "1337.h" + +void eeconfig_init_kb(void) { +#ifdef BACKLIGHT_ENABLE + backlight_enable(); + backlight_level(5); +#endif +#ifdef RGBLIGHT_ENABLE + rgblight_enable(); + rgblight_sethsv(0, 255, 255); +#ifdef RGBLIGHT_ANIMATIONS + rgblight_mode(RGBLIGHT_MODE_RAINBOW_SWIRL + 2); +#endif +#endif + + eeconfig_update_kb(0); + eeconfig_init_user(); +} diff --git a/keyboards/0xcb/1337/1337.h b/keyboards/0xcb/1337/1337.h new file mode 100644 index 0000000000..7de5365d8b --- /dev/null +++ b/keyboards/0xcb/1337/1337.h @@ -0,0 +1,38 @@ +/* +Copyright 2021 0xCB - Conor Burns + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#include "quantum.h" + +/* This a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ + #define LAYOUT( \ + KA1, KA2, KA3, \ + KB1, KB2, KB3, \ + KC1, KC2, KC3 \ + ) \ + { \ + { KA1, KA2, KA3 }, \ + { KB1, KB2, KB3 }, \ + { KC1, KC2, KC3 } \ + } diff --git a/keyboards/0xcb/1337/config.h b/keyboards/0xcb/1337/config.h new file mode 100644 index 0000000000..25b1eadd91 --- /dev/null +++ b/keyboards/0xcb/1337/config.h @@ -0,0 +1,70 @@ +/* +Copyright 2021 0xCB - Conor Burns + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xCB00 +#define PRODUCT_ID 0x1337 +#define DEVICE_VER 0x0001 +#define MANUFACTURER 0xCB +#define PRODUCT 1337 + +/* key matrix size */ +#define MATRIX_ROWS 3 +#define MATRIX_COLS 3 + +/* Keyboard Matrix Assignments */ +#define DIRECT_PINS { \ + { D2, D4, F4 }, \ + { D7, B1, B3 }, \ + { E6, B4, B2 } \ +} +#define TAP_CODE_DELAY 10 +#define ENCODER_RESOLUTION 4 +#define ENCODERS_PAD_A { F5 } +#define ENCODERS_PAD_B { F6 } + +#define BACKLIGHT_PIN B5 +// #define BACKLIGHT_BREATHING +#define BACKLIGHT_LEVELS 7 + +#define RGB_DI_PIN D3 +#ifdef RGB_DI_PIN + #define RGBLED_NUM 5 + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 + #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ + #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ + /*== all animations enable ==*/ + #define RGBLIGHT_ANIMATIONS +#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE +/* Oled Size */ +#define OLED_DISPLAY_128X64 + +/* QMK DFU */ +#define QMK_LED B0 diff --git a/keyboards/0xcb/1337/info.json b/keyboards/0xcb/1337/info.json new file mode 100644 index 0000000000..67cb9d0d63 --- /dev/null +++ b/keyboards/0xcb/1337/info.json @@ -0,0 +1,22 @@ +{ + "keyboard_name": "0xCB 1337", + "url": "https://0xCB.dev", + "maintainer": "Conor-Burns", + "width": 3, + "height": 3, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2} + ] + } + } +} diff --git a/keyboards/0xcb/1337/keymaps/default/keymap.c b/keyboards/0xcb/1337/keymaps/default/keymap.c new file mode 100644 index 0000000000..c711bdae90 --- /dev/null +++ b/keyboards/0xcb/1337/keymaps/default/keymap.c @@ -0,0 +1,189 @@ +/* +Copyright 2021 0xCB - Conor Burns + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +enum layer_names { + _HOME, + _MISC, + _RGB, + _BLED +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[_HOME] = LAYOUT( + KC_MPRV, KC_MNXT, KC_MPLY, + KC_PGUP, KC_PGDN, TO(3), + KC_HOME, KC_END, TO(1) +), +[_MISC] = LAYOUT( + _______, _______, _______, + _______, _______, TO(0), + _______, _______, TO(2) +), +[_RGB] = LAYOUT( + RGB_HUI, RGB_HUD, RGB_MOD, + RGB_SAI, RGB_SAD, TO(1), + RGB_SPI, RGB_SPD, TO(3) +), +[_BLED] = LAYOUT( + BL_STEP, BL_BRTG, BL_TOGG, + BL_ON, BL_OFF, TO(2), + BL_INC, BL_DEC, TO(0) +) +}; + + +/* rotary encoder (SW3) - add more else if blocks for more granular layer control */ +#ifdef ENCODER_ENABLE +void encoder_update_user(uint8_t index, bool clockwise) { + if (IS_LAYER_ON(_RGB)) { + if (clockwise) { + rgblight_increase_val(); + } else { + rgblight_decrease_val(); + } + } else if (IS_LAYER_ON(_BLED)) { + if (clockwise) { + backlight_increase(); + } else { + backlight_decrease(); + } + } else { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } +} +#endif + +/* oled stuff :) */ +#ifdef OLED_DRIVER_ENABLE +uint16_t startup_timer; + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + startup_timer = timer_read(); + return rotation; +} + +static void render_logo(void) { + static const char PROGMEM logo[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x80, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x02, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x05, + 0xf8, 0x05, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0xe0, 0xe0, 0x70, 0x78, + 0x38, 0x3f, 0x1c, 0x0e, 0x0e, 0x0e, 0xfe, 0x0e, 0x0e, 0x1e, 0x1c, 0x3f, 0x38, 0x78, 0x70, 0xe0, + 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x05, 0xf8, 0x05, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xa0, + 0x13, 0xa2, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xfc, + 0xfe, 0xfe, 0xc0, 0xc0, 0xc0, 0xc0, 0xff, 0x00, 0x00, 0x00, 0x3e, 0x3e, 0x3c, 0x3c, 0x00, 0x00, + 0x01, 0xff, 0xff, 0xff, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0xa2, 0x13, 0xa0, 0x40, 0x00, + 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x80, 0xc0, 0x40, 0x40, 0xc0, 0x80, 0x00, 0x00, 0xc0, 0x40, 0x40, 0xc0, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0xc0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x40, 0x40, 0xc0, 0x80, 0x00, 0x00, 0x80, 0xc0, 0x40, + 0x40, 0xc0, 0x80, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xf9, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x7f, 0xff, 0xff, 0xc0, 0x80, 0x80, 0x0f, + 0x1f, 0x1f, 0x01, 0x01, 0x01, 0x01, 0xff, 0x00, 0x00, 0x00, 0x1e, 0x1e, 0x0e, 0x0e, 0x80, 0xc0, + 0xc0, 0xff, 0xff, 0x7f, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf9, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1f, 0x31, 0x40, 0x4e, 0x40, 0x31, 0x1f, 0x00, 0x00, 0x61, 0x16, 0x08, 0x16, 0x61, + 0x00, 0x00, 0x1f, 0x31, 0x60, 0x40, 0x40, 0x60, 0x20, 0x00, 0x00, 0x7f, 0x44, 0x44, 0x64, 0x3b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x7f, + 0x40, 0x40, 0x00, 0x00, 0x00, 0x20, 0x64, 0x44, 0x44, 0x6e, 0x3b, 0x00, 0x00, 0x20, 0x64, 0x44, + 0x44, 0x6e, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x03, 0x01, 0x00, 0x00, 0x00, 0x08, 0x14, + 0x23, 0x14, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x07, 0x07, + 0x0f, 0xfe, 0x1e, 0x1c, 0x1c, 0x1c, 0xff, 0x1c, 0x1c, 0x1c, 0x1e, 0xfe, 0x0f, 0x07, 0x03, 0x03, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0a, 0x11, 0x0a, 0x04, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x28, 0x44, 0x28, 0x10, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x1f, 0x00, 0x00, 0x10, 0x28, 0x47, 0x28, 0x10, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x28, 0x44, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + + oled_write_raw_P(logo, sizeof(logo)); +} +/* Shows the name of the current layer and locks for the host (CAPS etc.) */ +static void render_info(void) { + oled_write_P(PSTR("Layer: "), false); + + switch (get_highest_layer(layer_state)) { + case _HOME: + oled_write_ln_P(PSTR("HOME"), false); + break; + case _MISC: + oled_write_ln_P(PSTR("MISC"), false); + break; + case _RGB: + oled_write_ln_P(PSTR("RGB"), false); + break; + case _BLED: + oled_write_ln_P(PSTR("Backlight"), false); + break; + default: + oled_write_ln_P(PSTR("Undefined"), false); + } + led_t led_state = host_keyboard_led_state(); + oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); + oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); + oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); +} + +void oled_task_user(void) { + static bool finished_timer = false; + if ((timer_elapsed(startup_timer) < 3000) && !finished_timer) { + render_logo(); + } else { + finished_timer = true; + render_info(); + } +} +#endif diff --git a/keyboards/0xcb/1337/keymaps/via/keymap.c b/keyboards/0xcb/1337/keymaps/via/keymap.c new file mode 100644 index 0000000000..c711bdae90 --- /dev/null +++ b/keyboards/0xcb/1337/keymaps/via/keymap.c @@ -0,0 +1,189 @@ +/* +Copyright 2021 0xCB - Conor Burns + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +enum layer_names { + _HOME, + _MISC, + _RGB, + _BLED +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[_HOME] = LAYOUT( + KC_MPRV, KC_MNXT, KC_MPLY, + KC_PGUP, KC_PGDN, TO(3), + KC_HOME, KC_END, TO(1) +), +[_MISC] = LAYOUT( + _______, _______, _______, + _______, _______, TO(0), + _______, _______, TO(2) +), +[_RGB] = LAYOUT( + RGB_HUI, RGB_HUD, RGB_MOD, + RGB_SAI, RGB_SAD, TO(1), + RGB_SPI, RGB_SPD, TO(3) +), +[_BLED] = LAYOUT( + BL_STEP, BL_BRTG, BL_TOGG, + BL_ON, BL_OFF, TO(2), + BL_INC, BL_DEC, TO(0) +) +}; + + +/* rotary encoder (SW3) - add more else if blocks for more granular layer control */ +#ifdef ENCODER_ENABLE +void encoder_update_user(uint8_t index, bool clockwise) { + if (IS_LAYER_ON(_RGB)) { + if (clockwise) { + rgblight_increase_val(); + } else { + rgblight_decrease_val(); + } + } else if (IS_LAYER_ON(_BLED)) { + if (clockwise) { + backlight_increase(); + } else { + backlight_decrease(); + } + } else { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } +} +#endif + +/* oled stuff :) */ +#ifdef OLED_DRIVER_ENABLE +uint16_t startup_timer; + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + startup_timer = timer_read(); + return rotation; +} + +static void render_logo(void) { + static const char PROGMEM logo[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x80, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x02, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x05, + 0xf8, 0x05, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0xe0, 0xe0, 0x70, 0x78, + 0x38, 0x3f, 0x1c, 0x0e, 0x0e, 0x0e, 0xfe, 0x0e, 0x0e, 0x1e, 0x1c, 0x3f, 0x38, 0x78, 0x70, 0xe0, + 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x05, 0xf8, 0x05, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xa0, + 0x13, 0xa2, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xfc, + 0xfe, 0xfe, 0xc0, 0xc0, 0xc0, 0xc0, 0xff, 0x00, 0x00, 0x00, 0x3e, 0x3e, 0x3c, 0x3c, 0x00, 0x00, + 0x01, 0xff, 0xff, 0xff, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0xa2, 0x13, 0xa0, 0x40, 0x00, + 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x80, 0xc0, 0x40, 0x40, 0xc0, 0x80, 0x00, 0x00, 0xc0, 0x40, 0x40, 0xc0, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0xc0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x40, 0x40, 0xc0, 0x80, 0x00, 0x00, 0x80, 0xc0, 0x40, + 0x40, 0xc0, 0x80, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xf9, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x7f, 0xff, 0xff, 0xc0, 0x80, 0x80, 0x0f, + 0x1f, 0x1f, 0x01, 0x01, 0x01, 0x01, 0xff, 0x00, 0x00, 0x00, 0x1e, 0x1e, 0x0e, 0x0e, 0x80, 0xc0, + 0xc0, 0xff, 0xff, 0x7f, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf9, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1f, 0x31, 0x40, 0x4e, 0x40, 0x31, 0x1f, 0x00, 0x00, 0x61, 0x16, 0x08, 0x16, 0x61, + 0x00, 0x00, 0x1f, 0x31, 0x60, 0x40, 0x40, 0x60, 0x20, 0x00, 0x00, 0x7f, 0x44, 0x44, 0x64, 0x3b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x7f, + 0x40, 0x40, 0x00, 0x00, 0x00, 0x20, 0x64, 0x44, 0x44, 0x6e, 0x3b, 0x00, 0x00, 0x20, 0x64, 0x44, + 0x44, 0x6e, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x03, 0x01, 0x00, 0x00, 0x00, 0x08, 0x14, + 0x23, 0x14, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x07, 0x07, + 0x0f, 0xfe, 0x1e, 0x1c, 0x1c, 0x1c, 0xff, 0x1c, 0x1c, 0x1c, 0x1e, 0xfe, 0x0f, 0x07, 0x03, 0x03, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0a, 0x11, 0x0a, 0x04, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x28, 0x44, 0x28, 0x10, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x1f, 0x00, 0x00, 0x10, 0x28, 0x47, 0x28, 0x10, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x28, 0x44, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + + oled_write_raw_P(logo, sizeof(logo)); +} +/* Shows the name of the current layer and locks for the host (CAPS etc.) */ +static void render_info(void) { + oled_write_P(PSTR("Layer: "), false); + + switch (get_highest_layer(layer_state)) { + case _HOME: + oled_write_ln_P(PSTR("HOME"), false); + break; + case _MISC: + oled_write_ln_P(PSTR("MISC"), false); + break; + case _RGB: + oled_write_ln_P(PSTR("RGB"), false); + break; + case _BLED: + oled_write_ln_P(PSTR("Backlight"), false); + break; + default: + oled_write_ln_P(PSTR("Undefined"), false); + } + led_t led_state = host_keyboard_led_state(); + oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); + oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); + oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); +} + +void oled_task_user(void) { + static bool finished_timer = false; + if ((timer_elapsed(startup_timer) < 3000) && !finished_timer) { + render_logo(); + } else { + finished_timer = true; + render_info(); + } +} +#endif diff --git a/keyboards/0xcb/1337/keymaps/via/rules.mk b/keyboards/0xcb/1337/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/0xcb/1337/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/0xcb/1337/readme.md b/keyboards/0xcb/1337/readme.md new file mode 100644 index 0000000000..da54eb78fc --- /dev/null +++ b/keyboards/0xcb/1337/readme.md @@ -0,0 +1,25 @@ +# 0xCB 1337 + +Macro keypad + +* Keyboard Maintainer: [Conor Burns](https://github.com/conor-burns) +* Hardware Supported: https://github.com/conor-burns/0xcb-1337 +* Hardware Availability: Soon on tindie or order your own parts - the hardware in the repo is Open Source :D +* PCB renders :) + +![](https://github.com/Conor-Burns/0xcb-1337/blob/main/PCB/top.png) + +![](https://github.com/Conor-Burns/0xcb-1337/blob/main/PCB/bottom.png) + + +To go to bootloader press row 0 col 0 key (top left) while plugging in the board. + +Make example for this keyboard (after setting up your build environment): + + make 0xcb/1337:default + +Flashing example for this keyboard: + + make 0xcb/1337:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/0xcb/1337/rules.mk b/keyboards/0xcb/1337/rules.mk new file mode 100644 index 0000000000..5469b415c2 --- /dev/null +++ b/keyboards/0xcb/1337/rules.mk @@ -0,0 +1,27 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = qmk-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output + +ENCODER_ENABLE = yes +LTO_ENABLE = yes +OLED_DRIVER_ENABLE = yes From 23d6ca99427de0fa8dabb0c4d70a7d1ebc4c9fdf Mon Sep 17 00:00:00 2001 From: Ryan Date: Sat, 6 Mar 2021 17:44:48 +1100 Subject: [PATCH 026/613] Remove a few more ifdefs from quantum_keycodes (#12129) --- quantum/quantum_keycodes.h | 35 ++++++++++++++--------------------- 1 file changed, 14 insertions(+), 21 deletions(-) diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h index 116fc4b71d..22a16e9a2d 100644 --- a/quantum/quantum_keycodes.h +++ b/quantum/quantum_keycodes.h @@ -73,29 +73,22 @@ enum quantum_keycodes { QK_LAYER_TAP_TOGGLE_MAX = 0x58FF, QK_LAYER_MOD = 0x5900, QK_LAYER_MOD_MAX = 0x59FF, -#ifdef STENO_ENABLE - QK_STENO = 0x5A00, - QK_STENO_BOLT = 0x5A30, - QK_STENO_GEMINI = 0x5A31, - QK_STENO_MAX = 0x5A3F, -#endif - QK_SWAP_HANDS = 0x5B00, - QK_SWAP_HANDS_MAX = 0x5BFF, - QK_MOD_TAP = 0x6000, - QK_MOD_TAP_MAX = 0x7FFF, -#ifdef UNICODE_ENABLE - QK_UNICODE = 0x8000, - QK_UNICODE_MAX = 0xFFFF, -#endif -#ifdef UNICODEMAP_ENABLE - QK_UNICODEMAP = 0x8000, - QK_UNICODEMAP_MAX = 0xBFFF, - QK_UNICODEMAP_PAIR = 0xC000, - QK_UNICODEMAP_PAIR_MAX = 0xFFFF, -#endif + QK_STENO = 0x5A00, + QK_STENO_BOLT = 0x5A30, + QK_STENO_GEMINI = 0x5A31, + QK_STENO_MAX = 0x5A3F, + QK_SWAP_HANDS = 0x5B00, + QK_SWAP_HANDS_MAX = 0x5BFF, + QK_MOD_TAP = 0x6000, + QK_MOD_TAP_MAX = 0x7FFF, + QK_UNICODE = 0x8000, + QK_UNICODE_MAX = 0xFFFF, + QK_UNICODEMAP = 0x8000, + QK_UNICODEMAP_MAX = 0xBFFF, + QK_UNICODEMAP_PAIR = 0xC000, + QK_UNICODEMAP_PAIR_MAX = 0xFFFF, // Loose keycodes - to be used directly - RESET = 0x5C00, DEBUG, MAGIC_SWAP_CONTROL_CAPSLOCK, From 9c94de070a651c477ed8d65228af4255a35ea6aa Mon Sep 17 00:00:00 2001 From: Ryan Date: Sat, 6 Mar 2021 19:50:01 +1100 Subject: [PATCH 027/613] Remove ifdefs for UC and X/XP too (#12131) --- quantum/quantum_keycodes.h | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h index 22a16e9a2d..1863a79434 100644 --- a/quantum/quantum_keycodes.h +++ b/quantum/quantum_keycodes.h @@ -838,15 +838,11 @@ enum quantum_keycodes { #define KC_HYPR HYPR(KC_NO) #define KC_MEH MEH(KC_NO) -#ifdef UNICODE_ENABLE -// Allows Unicode input up to 0x7FFF -# define UC(c) (QK_UNICODE | (c)) -#endif -#ifdef UNICODEMAP_ENABLE -// Allows Unicode input up to 0x10FFFF, requires unicode_map -# define X(i) (QK_UNICODEMAP | (i)) -# define XP(i, j) (QK_UNICODEMAP_PAIR | ((i)&0x7F) | (((j)&0x7F) << 7)) // 127 max i and j -#endif +// UNICODE_ENABLE - Allows Unicode input up to 0x7FFF +#define UC(c) (QK_UNICODE | (c)) +// UNICODEMAP_ENABLE - Allows Unicode input up to 0x10FFFF, requires unicode_map +#define X(i) (QK_UNICODEMAP | (i)) +#define XP(i, j) (QK_UNICODEMAP_PAIR | ((i)&0x7F) | (((j)&0x7F) << 7)) // 127 max i and j #define UC_MOD UNICODE_MODE_FORWARD #define UC_RMOD UNICODE_MODE_REVERSE From 86e28b4db84223152d959288f17e5bcfc5960e75 Mon Sep 17 00:00:00 2001 From: Aleblazer <60912320+Aleblazer@users.noreply.github.com> Date: Sat, 6 Mar 2021 12:56:48 -0600 Subject: [PATCH 028/613] Adding Zodiark Split keyboard (#11837) * Adding Files for Zodiark * zodiark.h and keymap.c layout corrections * Apply suggestions from code review Applied all suggestions from zvecr. Co-authored-by: Joel Challis * Applied all suggestions from fauxpark Co-authored-by: Ryan * Defined matrix driver * Update keymap with GPL2 * Added GPL2+ to All keymap.c, cleaned up config.h, and removed the rgbmatrixwip keymap * Apply suggestions from code review Removed the two lines from the config.h and changed to the smaller resolution picture on the Readme. Co-authored-by: Drashna Jaelre Co-authored-by: Ryan * Added VIA keymap * Corrected VIA Keymap oled.c Co-authored-by: Joel Challis Co-authored-by: Ryan Co-authored-by: Drashna Jaelre --- keyboards/aleblazer/zodiark/config.h | 75 ++++ keyboards/aleblazer/zodiark/info.json | 12 + .../zodiark/keymaps/default/config.h | 22 ++ .../zodiark/keymaps/default/keymap.c | 327 +++++++++++++++++ .../zodiark/keymaps/default/rules.mk | 1 + .../zodiark/keymaps/slimoled/config.h | 22 ++ .../zodiark/keymaps/slimoled/keymap.c | 330 ++++++++++++++++++ .../zodiark/keymaps/slimoled/rules.mk | 1 + .../aleblazer/zodiark/keymaps/via/config.h | 22 ++ .../aleblazer/zodiark/keymaps/via/encoder.c | 35 ++ .../aleblazer/zodiark/keymaps/via/keymap.c | 52 +++ .../aleblazer/zodiark/keymaps/via/oled.c | 78 +++++ .../aleblazer/zodiark/keymaps/via/rules.mk | 2 + keyboards/aleblazer/zodiark/readme.md | 23 ++ keyboards/aleblazer/zodiark/rules.mk | 27 ++ keyboards/aleblazer/zodiark/zodiark.c | 54 +++ keyboards/aleblazer/zodiark/zodiark.h | 38 ++ 17 files changed, 1121 insertions(+) create mode 100644 keyboards/aleblazer/zodiark/config.h create mode 100644 keyboards/aleblazer/zodiark/info.json create mode 100644 keyboards/aleblazer/zodiark/keymaps/default/config.h create mode 100644 keyboards/aleblazer/zodiark/keymaps/default/keymap.c create mode 100644 keyboards/aleblazer/zodiark/keymaps/default/rules.mk create mode 100644 keyboards/aleblazer/zodiark/keymaps/slimoled/config.h create mode 100644 keyboards/aleblazer/zodiark/keymaps/slimoled/keymap.c create mode 100644 keyboards/aleblazer/zodiark/keymaps/slimoled/rules.mk create mode 100644 keyboards/aleblazer/zodiark/keymaps/via/config.h create mode 100644 keyboards/aleblazer/zodiark/keymaps/via/encoder.c create mode 100644 keyboards/aleblazer/zodiark/keymaps/via/keymap.c create mode 100644 keyboards/aleblazer/zodiark/keymaps/via/oled.c create mode 100644 keyboards/aleblazer/zodiark/keymaps/via/rules.mk create mode 100644 keyboards/aleblazer/zodiark/readme.md create mode 100644 keyboards/aleblazer/zodiark/rules.mk create mode 100644 keyboards/aleblazer/zodiark/zodiark.c create mode 100644 keyboards/aleblazer/zodiark/zodiark.h diff --git a/keyboards/aleblazer/zodiark/config.h b/keyboards/aleblazer/zodiark/config.h new file mode 100644 index 0000000000..84795f024b --- /dev/null +++ b/keyboards/aleblazer/zodiark/config.h @@ -0,0 +1,75 @@ +/* +Copyright 2021 Spencer Deven + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xF901 +#define PRODUCT_ID 0xF902 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Aleblazer +#define PRODUCT Zodiark + +#define NO_ACTION_MACRO + +#define SOFT_SERIAL_PIN D3 +#define SERIAL_USE_MULTI_TRANSACTION +#define SELECT_SOFT_SERIAL_SPEED 1 + +/* key matrix size */ +#define MATRIX_ROWS 10 +#define MATRIX_COLS 7 +#define DIODE_DIRECTION COL2ROW + +#define ENCODERS_PAD_A { D2 } +#define ENCODERS_PAD_B { D4 } +#define ENCODERS_PAD_A_RIGHT { D4 } +#define ENCODERS_PAD_B_RIGHT { D2 } +#define ENCODER_RESOLUTION 3 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { C6, D7, E6, B4, F4 } +#define MATRIX_COL_PINS { F5, F6, F7, B1, B3, B2, B6 } + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +#define RGB_DI_PIN B5 + +#ifdef RGBLIGHT_ENABLE +#define RGBLED_NUM 68 +#define RGBLIGHT_SPLIT +#define RGBLED_SPLIT { 34, 34 } +#define RGBLIGHT_LIMIT_VAL 170 +#define RGBLIGHT_ANIMATIONS +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 +#endif + +#ifdef RGB_MATRIX_ENABLE +#define DRIVER_LED_TOTAL 68 +#define RGB_MATRIX_SPLIT { 34, 34 } +#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash. +#define RGB_MATRIX_KEYPRESSES +#define RGB_MATRIX_FRAMEBUFFER_EFFECTS +#define RGB_MATRIX_HUE_STEP 8 +#define RGB_MATRIX_SAT_STEP 8 +#define RGB_MATRIX_VAL_STEP 8 +#define RGB_MATRIX_SPD_STEP 10 +#endif diff --git a/keyboards/aleblazer/zodiark/info.json b/keyboards/aleblazer/zodiark/info.json new file mode 100644 index 0000000000..e0acaaa466 --- /dev/null +++ b/keyboards/aleblazer/zodiark/info.json @@ -0,0 +1,12 @@ +{ + "keyboard_name": "zodiark", + "url": "https://github.com/Aleblazer/qmk_firmware/tree/master/keyboards/zodiark", + "maintainer": "Aleblazer", + "width": 19, + "height": 8.48, + "layouts": { + "LAYOUT": { + "layout": [{"label":"L03", "x":3, "y":0}, {"label":"R03", "x":15, "y":0}, {"label":"L02", "x":2, "y":0.125}, {"label":"L04", "x":4, "y":0.125}, {"label":"R02", "x":14, "y":0.125}, {"label":"R04", "x":16, "y":0.125}, {"label":"L05", "x":5, "y":0.25}, {"label":"R01", "x":13, "y":0.25}, {"label":"L00", "x":0, "y":0.53}, {"label":"L01", "x":1, "y":0.53}, {"label":"R05", "x":17, "y":0.53}, {"label":"R06", "x":18, "y":0.53}, {"label":"L13", "x":3, "y":1}, {"label":"R13", "x":15, "y":1}, {"label":"L12", "x":2, "y":1.125}, {"label":"L14", "x":4, "y":1.125}, {"label":"R12", "x":14, "y":1.125}, {"label":"R14", "x":16, "y":1.125}, {"label":"L15", "x":5, "y":1.25}, {"label":"R11", "x":13, "y":1.25}, {"label":"L10", "x":0, "y":1.53}, {"label":"L11", "x":1, "y":1.53}, {"label":"R15", "x":17, "y":1.53}, {"label":"R16", "x":18, "y":1.53}, {"label":"L06", "x":6, "y":1.7000000000000002}, {"label":"R00", "x":12, "y":1.7000000000000002}, {"label":"L23", "x":3, "y":2.0}, {"label":"R23", "x":15, "y":2.0}, {"label":"L22", "x":2, "y":2.125}, {"label":"L24", "x":4, "y":2.125}, {"label":"R22", "x":14, "y":2.125}, {"label":"R24", "x":16, "y":2.125}, {"label":"L25", "x":5, "y":2.25}, {"label":"R21", "x":13, "y":2.25}, {"label":"L20", "x":0, "y":2.5300000000000002}, {"label":"L21", "x":1, "y":2.5300000000000002}, {"label":"R25", "x":17, "y":2.5300000000000002}, {"label":"R26", "x":18, "y":2.5300000000000002}, {"label":"L16", "x":6, "y":2.7}, {"label":"R10", "x":12, "y":2.7}, {"label":"L33", "x":3, "y":3.0000000000000004}, {"label":"R33", "x":15, "y":3.0000000000000004}, {"label":"L32", "x":2, "y":3.1250000000000004}, {"label":"L34", "x":4, "y":3.1250000000000004}, {"label":"R32", "x":14, "y":3.1250000000000004}, {"label":"R34", "x":16, "y":3.1250000000000004}, {"label":"L35", "x":5, "y":3.2500000000000004}, {"label":"R31", "x":13, "y":3.2500000000000004}, {"label":"L30", "x":0, "y":3.5300000000000002}, {"label":"L31", "x":1, "y":3.5300000000000002}, {"label":"R35", "x":17, "y":3.5300000000000002}, {"label":"R36", "x":18, "y":3.5300000000000002}, {"label":"L43", "x":3, "y":4.0}, {"label":"R43", "x":15, "y":4.0}, {"label":"L42", "x":2, "y":4.125}, {"label":"R44", "x":16, "y":4.125}, {"label":"L44", "x":4, "y":4.13}, {"label":"R42", "x":14, "y":4.13}, {"label":"L40", "x":0, "y":4.53}, {"label":"L41", "x":1, "y":4.53}, {"label":"R45", "x":17, "y":4.53}, {"label":"R46", "x":18, "y":4.53}, {"label":"L26", "x":-0.33, "y":5.13}, {"label":"L36", "x":0.6699999999999999, "y":5.13}, {"label":"L45", "x":-0.83, "y":6.13, "w":1.5}, {"label":"L46", "x":0.67, "y":6.13}, {"label":"R30", "x":-2.1, "y":6.48}, {"label":"R20", "x":-1.1, "y":6.48}, {"label":"R40", "x":-2.1, "y":7.48}, {"label":"R41", "x":-1.1, "y":7.48, "w":1.5}] + } + } +} diff --git a/keyboards/aleblazer/zodiark/keymaps/default/config.h b/keyboards/aleblazer/zodiark/keymaps/default/config.h new file mode 100644 index 0000000000..0c89f634bc --- /dev/null +++ b/keyboards/aleblazer/zodiark/keymaps/default/config.h @@ -0,0 +1,22 @@ +/* +Copyright 2021 Spencer Deven + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#ifdef OLED_DRIVER_ENABLE + #define OLED_DISPLAY_128X64 + #define OLED_TIMEOUT 400000 +#endif diff --git a/keyboards/aleblazer/zodiark/keymaps/default/keymap.c b/keyboards/aleblazer/zodiark/keymaps/default/keymap.c new file mode 100644 index 0000000000..0692aee124 --- /dev/null +++ b/keyboards/aleblazer/zodiark/keymaps/default/keymap.c @@ -0,0 +1,327 @@ +/* +Copyright 2021 Spencer Deven +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +enum sofle_layers { + /* _M_XYZ = Mac Os, _W_XYZ = Win/Linux */ + _QWERTY, + _COLEMAK, + _LOWER, + _RAISE, + _ADJUST, +}; + +enum custom_keycodes { + KC_QWERTY = SAFE_RANGE, + KC_COLEMAK, + KC_LOWER, + KC_RAISE, + KC_ADJUST, + KC_PRVWD, + KC_NXTWD, + KC_LSTRT, + KC_LEND, + KC_DLINE +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_QWERTY] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_ADJUST, KC_A, KC_S, KC_D, KC_F, KC_G, KC_MINS, KC_EQL, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_GRV, KC_MUTE, RGB_TOG, KC_DEL,KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , + KC_LCTL, KC_LALT, KC_LGUI, LALT(KC_TAB), KC_LOWER, KC_SPC, KC_ENT, KC_ENT, KC_SPC, KC_RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + + [_LOWER] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_PSLS, KC_P7, KC_P8, KC_P9, KC_NLCK, _______, _______, _______, _______, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_F12, + KC_CAPS, KC_P4, KC_P5, KC_P6, KC_NLCK, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, KC_NLCK, + _______, KC_P1, KC_P2, KC_P3, _______, _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, + _______, KC_P0, KC_PDOT, KC_PENT, _______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT, KC_PENT, _______ + ), + + [_RAISE] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_PSLS, KC_P7, KC_P8, KC_P9, KC_NLCK, _______, _______, _______, _______, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_F12, + KC_CAPS, KC_P4, KC_P5, KC_P6, KC_NLCK, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, KC_NLCK, + _______, KC_P1, KC_P2, KC_P3, _______, _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, + _______, KC_P0, KC_PDOT, KC_PENT, _______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT, KC_PENT, _______ + ), + + [_ADJUST] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + _______, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST, _______, _______, _______, KC_F12, + _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD, RGB_SPI, RGB_HUI, RGB_SAI, RGB_VAI, + _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_RMOD, RGB_SPD, RGB_HUD, RGB_SAD, RGB_VAD + ) + +}; +#ifdef OLED_DRIVER_ENABLE + +static void render_logo(void) { + static const char PROGMEM qmk_logo[] = { + 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, + 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, + 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0 + }; + + oled_write_P(qmk_logo, false); +} + +static void print_status_narrow(void) { + // Print current mode + oled_write_P(PSTR("\n\n"), false); + oled_write_ln_P(PSTR("MODE"), false); + oled_write_ln_P(PSTR(""), false); + if (keymap_config.swap_lctl_lgui) { + oled_write_ln_P(PSTR("MAC"), false); + } else { + oled_write_ln_P(PSTR("WIN"), false); + } + + switch (get_highest_layer(default_layer_state)) { + case _QWERTY: + oled_write_ln_P(PSTR("Qwrt"), false); + break; + case _COLEMAK: + oled_write_ln_P(PSTR("Clmk"), false); + break; + default: + oled_write_P(PSTR("Undef"), false); + } + oled_write_P(PSTR("\n\n"), false); + // Print current layer + oled_write_ln_P(PSTR("LAYER"), false); + switch (get_highest_layer(layer_state)) { + case _COLEMAK: + case _QWERTY: + oled_write_P(PSTR("Base\n"), false); + break; + case _RAISE: + oled_write_P(PSTR("Raise"), false); + break; + case _LOWER: + oled_write_P(PSTR("Lower"), false); + break; + case _ADJUST: + oled_write_P(PSTR("Adj\n"), false); + break; + default: + oled_write_ln_P(PSTR("Undef"), false); + } + oled_write_P(PSTR("\n\n"), false); + led_t led_usb_state = host_keyboard_led_state(); + oled_write_ln_P(PSTR("CPSLK"), led_usb_state.caps_lock); +} + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + if (is_keyboard_master()) { + return OLED_ROTATION_90; + } + return rotation; +} + +void oled_task_user(void) { + if (is_keyboard_master()) { + print_status_narrow(); + } else { + render_logo(); + } +} + +#endif + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case KC_QWERTY: + if (record->event.pressed) { + set_single_persistent_default_layer(_QWERTY); + } + return false; + case KC_COLEMAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_COLEMAK); + } + return false; + case KC_LOWER: + if (record->event.pressed) { + layer_on(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + case KC_RAISE: + if (record->event.pressed) { + layer_on(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + case KC_ADJUST: + if (record->event.pressed) { + layer_on(_ADJUST); + } else { + layer_off(_ADJUST); + } + return false; + case KC_PRVWD: + if (record->event.pressed) { + if (keymap_config.swap_lctl_lgui) { + register_mods(mod_config(MOD_LALT)); + register_code(KC_LEFT); + } else { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_LEFT); + } + } else { + if (keymap_config.swap_lctl_lgui) { + unregister_mods(mod_config(MOD_LALT)); + unregister_code(KC_LEFT); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_LEFT); + } + } + break; + case KC_NXTWD: + if (record->event.pressed) { + if (keymap_config.swap_lctl_lgui) { + register_mods(mod_config(MOD_LALT)); + register_code(KC_RIGHT); + } else { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_RIGHT); + } + } else { + if (keymap_config.swap_lctl_lgui) { + unregister_mods(mod_config(MOD_LALT)); + unregister_code(KC_RIGHT); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_RIGHT); + } + } + break; + case KC_LSTRT: + if (record->event.pressed) { + if (keymap_config.swap_lctl_lgui) { + //CMD-arrow on Mac, but we have CTL and GUI swapped + register_mods(mod_config(MOD_LCTL)); + register_code(KC_LEFT); + } else { + register_code(KC_HOME); + } + } else { + if (keymap_config.swap_lctl_lgui) { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_LEFT); + } else { + unregister_code(KC_HOME); + } + } + break; + case KC_LEND: + if (record->event.pressed) { + if (keymap_config.swap_lctl_lgui) { + //CMD-arrow on Mac, but we have CTL and GUI swapped + register_mods(mod_config(MOD_LCTL)); + register_code(KC_RIGHT); + } else { + register_code(KC_END); + } + } else { + if (keymap_config.swap_lctl_lgui) { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_RIGHT); + } else { + unregister_code(KC_END); + } + } + break; + case KC_DLINE: + if (record->event.pressed) { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_BSPC); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_BSPC); + } + break; + case KC_COPY: + if (record->event.pressed) { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_C); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_C); + } + return false; + case KC_PASTE: + if (record->event.pressed) { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_V); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_V); + } + return false; + case KC_CUT: + if (record->event.pressed) { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_X); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_X); + } + return false; + break; + case KC_UNDO: + if (record->event.pressed) { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_Z); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_Z); + } + return false; + } + return true; +} + +#ifdef ENCODER_ENABLE + +void encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } else if (index == 1) { + if (clockwise) { + rgblight_step(); + } else { + rgblight_step_reverse(); + } + } +} + +#endif diff --git a/keyboards/aleblazer/zodiark/keymaps/default/rules.mk b/keyboards/aleblazer/zodiark/keymaps/default/rules.mk new file mode 100644 index 0000000000..1e3cebb145 --- /dev/null +++ b/keyboards/aleblazer/zodiark/keymaps/default/rules.mk @@ -0,0 +1 @@ +RGBLIGHT_ENABLE = yes diff --git a/keyboards/aleblazer/zodiark/keymaps/slimoled/config.h b/keyboards/aleblazer/zodiark/keymaps/slimoled/config.h new file mode 100644 index 0000000000..36d9637e72 --- /dev/null +++ b/keyboards/aleblazer/zodiark/keymaps/slimoled/config.h @@ -0,0 +1,22 @@ +/* +Copyright 2021 Spencer Deven + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#ifdef OLED_DRIVER_ENABLE + #define OLED_DISPLAY_128X32 + #define OLED_TIMEOUT 400000 +#endif diff --git a/keyboards/aleblazer/zodiark/keymaps/slimoled/keymap.c b/keyboards/aleblazer/zodiark/keymaps/slimoled/keymap.c new file mode 100644 index 0000000000..4e98b5cf0d --- /dev/null +++ b/keyboards/aleblazer/zodiark/keymaps/slimoled/keymap.c @@ -0,0 +1,330 @@ +/* +Copyright 2021 Spencer Deven + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +enum sofle_layers { + /* _M_XYZ = Mac Os, _W_XYZ = Win/Linux */ + _QWERTY, + _COLEMAK, + _LOWER, + _RAISE, + _ADJUST, +}; + +enum custom_keycodes { + KC_QWERTY = SAFE_RANGE, + KC_COLEMAK, + KC_LOWER, + KC_RAISE, + KC_ADJUST, + KC_PRVWD, + KC_NXTWD, + KC_LSTRT, + KC_LEND, + KC_DLINE +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_QWERTY] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_ADJUST, KC_A, KC_S, KC_D, KC_F, KC_G, KC_MINS, KC_EQL, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_GRV, KC_MUTE, RGB_TOG, KC_DEL,KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , + KC_LCTL, KC_LALT, KC_LGUI, LALT(KC_TAB), KC_LOWER, KC_SPC, KC_ENT, KC_ENT, KC_SPC, KC_RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + + [_LOWER] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_PSLS, KC_P7, KC_P8, KC_P9, KC_NLCK, _______, _______, _______, _______, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_F12, + KC_CAPS, KC_P4, KC_P5, KC_P6, KC_NLCK, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, KC_NLCK, + _______, KC_P1, KC_P2, KC_P3, _______, _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, + _______, KC_P0, KC_PDOT, KC_PENT, _______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT, KC_PENT, _______ + ), + + [_RAISE] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_PSLS, KC_P7, KC_P8, KC_P9, KC_NLCK, _______, _______, _______, _______, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_F12, + KC_CAPS, KC_P4, KC_P5, KC_P6, KC_NLCK, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, KC_NLCK, + _______, KC_P1, KC_P2, KC_P3, _______, _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, + _______, KC_P0, KC_PDOT, KC_PENT, _______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT, KC_PENT, _______ + ), + + [_ADJUST] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + _______, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST, _______, _______, _______, KC_F12, + _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD, RGB_SPI, RGB_HUI, RGB_SAI, RGB_VAI, + _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_RMOD, RGB_SPD, RGB_HUD, RGB_SAD, RGB_VAD + ) + +}; +#ifdef OLED_DRIVER_ENABLE + +static void render_logo(void) { + static const char PROGMEM qmk_logo[] = { + 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, + 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, + 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0 + }; + + oled_write_P(qmk_logo, false); +} + +static void print_status_narrow(void) { + // Print current mode + oled_write_P(PSTR("\n\n"), false); + oled_write_ln_P(PSTR("MODE"), false); + oled_write_ln_P(PSTR(""), false); + if (keymap_config.swap_lctl_lgui) { + oled_write_ln_P(PSTR("MAC"), false); + } else { + oled_write_ln_P(PSTR("WIN"), false); + } + + switch (get_highest_layer(default_layer_state)) { + case _QWERTY: + oled_write_ln_P(PSTR("Qwrt"), false); + break; + case _COLEMAK: + oled_write_ln_P(PSTR("Clmk"), false); + break; + default: + oled_write_P(PSTR("Undef"), false); + } + oled_write_P(PSTR("\n\n"), false); + // Print current layer + oled_write_ln_P(PSTR("LAYER"), false); + switch (get_highest_layer(layer_state)) { + case _COLEMAK: + case _QWERTY: + oled_write_P(PSTR("Base\n"), false); + break; + case _RAISE: + oled_write_P(PSTR("Raise"), false); + break; + case _LOWER: + oled_write_P(PSTR("Lower"), false); + break; + case _ADJUST: + oled_write_P(PSTR("Adj\n"), false); + break; + default: + oled_write_ln_P(PSTR("Undef"), false); + } + oled_write_P(PSTR("\n\n"), false); + led_t led_usb_state = host_keyboard_led_state(); + oled_write_ln_P(PSTR("CPSLK"), led_usb_state.caps_lock); +} + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + if (is_keyboard_master()) { + return OLED_ROTATION_90; + } + return rotation; +} + +void oled_task_user(void) { + if (is_keyboard_master()) { + print_status_narrow(); + } else { + render_logo(); + } +} + +#endif + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case KC_QWERTY: + if (record->event.pressed) { + set_single_persistent_default_layer(_QWERTY); + } + return false; + case KC_COLEMAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_COLEMAK); + } + return false; + case KC_LOWER: + if (record->event.pressed) { + layer_on(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + case KC_RAISE: + if (record->event.pressed) { + layer_on(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + case KC_ADJUST: + if (record->event.pressed) { + layer_on(_ADJUST); + } else { + layer_off(_ADJUST); + } + return false; + case KC_PRVWD: + if (record->event.pressed) { + if (keymap_config.swap_lctl_lgui) { + register_mods(mod_config(MOD_LALT)); + register_code(KC_LEFT); + } else { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_LEFT); + } + } else { + if (keymap_config.swap_lctl_lgui) { + unregister_mods(mod_config(MOD_LALT)); + unregister_code(KC_LEFT); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_LEFT); + } + } + break; + case KC_NXTWD: + if (record->event.pressed) { + if (keymap_config.swap_lctl_lgui) { + register_mods(mod_config(MOD_LALT)); + register_code(KC_RIGHT); + } else { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_RIGHT); + } + } else { + if (keymap_config.swap_lctl_lgui) { + unregister_mods(mod_config(MOD_LALT)); + unregister_code(KC_RIGHT); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_RIGHT); + } + } + break; + case KC_LSTRT: + if (record->event.pressed) { + if (keymap_config.swap_lctl_lgui) { + //CMD-arrow on Mac, but we have CTL and GUI swapped + register_mods(mod_config(MOD_LCTL)); + register_code(KC_LEFT); + } else { + register_code(KC_HOME); + } + } else { + if (keymap_config.swap_lctl_lgui) { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_LEFT); + } else { + unregister_code(KC_HOME); + } + } + break; + case KC_LEND: + if (record->event.pressed) { + if (keymap_config.swap_lctl_lgui) { + //CMD-arrow on Mac, but we have CTL and GUI swapped + register_mods(mod_config(MOD_LCTL)); + register_code(KC_RIGHT); + } else { + register_code(KC_END); + } + } else { + if (keymap_config.swap_lctl_lgui) { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_RIGHT); + } else { + unregister_code(KC_END); + } + } + break; + case KC_DLINE: + if (record->event.pressed) { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_BSPC); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_BSPC); + } + break; + case KC_COPY: + if (record->event.pressed) { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_C); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_C); + } + return false; + case KC_PASTE: + if (record->event.pressed) { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_V); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_V); + } + return false; + case KC_CUT: + if (record->event.pressed) { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_X); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_X); + } + return false; + break; + case KC_UNDO: + if (record->event.pressed) { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_Z); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_Z); + } + return false; + } + return true; +} + +#ifdef ENCODER_ENABLE + +void encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } else if (index == 1) { + if (clockwise) { + rgblight_step(); + } else { + rgblight_step_reverse(); + } + } +} + +#endif diff --git a/keyboards/aleblazer/zodiark/keymaps/slimoled/rules.mk b/keyboards/aleblazer/zodiark/keymaps/slimoled/rules.mk new file mode 100644 index 0000000000..1e3cebb145 --- /dev/null +++ b/keyboards/aleblazer/zodiark/keymaps/slimoled/rules.mk @@ -0,0 +1 @@ +RGBLIGHT_ENABLE = yes diff --git a/keyboards/aleblazer/zodiark/keymaps/via/config.h b/keyboards/aleblazer/zodiark/keymaps/via/config.h new file mode 100644 index 0000000000..0c89f634bc --- /dev/null +++ b/keyboards/aleblazer/zodiark/keymaps/via/config.h @@ -0,0 +1,22 @@ +/* +Copyright 2021 Spencer Deven + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#ifdef OLED_DRIVER_ENABLE + #define OLED_DISPLAY_128X64 + #define OLED_TIMEOUT 400000 +#endif diff --git a/keyboards/aleblazer/zodiark/keymaps/via/encoder.c b/keyboards/aleblazer/zodiark/keymaps/via/encoder.c new file mode 100644 index 0000000000..06d7a25777 --- /dev/null +++ b/keyboards/aleblazer/zodiark/keymaps/via/encoder.c @@ -0,0 +1,35 @@ +/* +Copyright 2021 Spencer Deven +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +//Setting up what encoder rotation does. If your encoder can be pressed as a button, that function can be set in Via. + +#ifdef ENCODER_ENABLE + +void encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } else if (index == 1) { + if (clockwise) { + tap_code(KC_PGDOWN); + } else { + tap_code(KC_PGUP); + } + } +} + +#endif diff --git a/keyboards/aleblazer/zodiark/keymaps/via/keymap.c b/keyboards/aleblazer/zodiark/keymaps/via/keymap.c new file mode 100644 index 0000000000..1159afb434 --- /dev/null +++ b/keyboards/aleblazer/zodiark/keymaps/via/keymap.c @@ -0,0 +1,52 @@ +/* +Copyright 2021 Spencer Deven +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H +#include "oled.c" +#include "encoder.c" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + MO(3), KC_A, KC_S, KC_D, KC_F, KC_G, KC_MINS, KC_EQL, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_GRV, KC_MUTE, RGB_TOG, KC_DEL,KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , + KC_LCTL, KC_LALT, KC_LGUI, KC_APP, MO(1), KC_SPC, KC_ENT, KC_ENT, KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + + [1] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_PSLS, KC_P7, KC_P8, KC_P9, KC_NLCK, _______, _______, _______, _______, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_F12, + KC_CAPS, KC_P4, KC_P5, KC_P6, KC_NLCK, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, KC_NLCK, + _______, KC_P1, KC_P2, KC_P3, _______, _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, + _______, KC_P0, KC_PDOT, KC_PENT, _______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT, KC_PENT, _______ + ), + + [2] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_PSLS, KC_P7, KC_P8, KC_P9, KC_NLCK, _______, _______, _______, _______, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_F12, + KC_CAPS, KC_P4, KC_P5, KC_P6, KC_NLCK, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, KC_NLCK, + _______, KC_P1, KC_P2, KC_P3, _______, _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, + _______, KC_P0, KC_PDOT, KC_PENT, _______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT, KC_PENT, _______ + ), + + [3] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + _______, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST, _______, _______, _______, KC_F12, + _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD, RGB_SPI, RGB_HUI, RGB_SAI, RGB_VAI, + _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_RMOD, RGB_SPD, RGB_HUD, RGB_SAD, RGB_VAD + ) + +}; diff --git a/keyboards/aleblazer/zodiark/keymaps/via/oled.c b/keyboards/aleblazer/zodiark/keymaps/via/oled.c new file mode 100644 index 0000000000..037fe2ff71 --- /dev/null +++ b/keyboards/aleblazer/zodiark/keymaps/via/oled.c @@ -0,0 +1,78 @@ +/* +Copyright 2021 Spencer Deven +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#ifdef OLED_DRIVER_ENABLE + +static void render_logo(void) { + static const char PROGMEM qmk_logo[] = { + 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, + 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, + 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0 + }; + + oled_write_P(qmk_logo, false); +} + +static void print_status_narrow(void) { + // Print current mode + oled_write_P(PSTR("\n\n"), false); + + switch (get_highest_layer(layer_state)) { + case 0: + oled_write_ln_P(PSTR("Qwrt"), false); + break; + default: + oled_write_P(PSTR("Mod\n"), false); + break; + } + oled_write_P(PSTR("\n\n"), false); + // Print current layer + oled_write_ln_P(PSTR("LAYER"), false); + switch (get_highest_layer(layer_state)) { + case 0: + oled_write_P(PSTR("Base\n"), false); + break; + case 1: + oled_write_P(PSTR("Raise"), false); + break; + case 2: + oled_write_P(PSTR("Lower"), false); + break; + case 3: + oled_write_P(PSTR("Adjust"), false); + break; + default: + oled_write_ln_P(PSTR("Undef"), false); + } + oled_write_P(PSTR("\n\n"), false); + led_t led_usb_state = host_keyboard_led_state(); + oled_write_ln_P(PSTR("CPSLK"), led_usb_state.caps_lock); +} + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + if (is_keyboard_master()) { + return OLED_ROTATION_90; + } + return rotation; +} + +void oled_task_user(void) { + if (is_keyboard_master()) { + print_status_narrow(); + } else { + render_logo(); + } +} + +#endif diff --git a/keyboards/aleblazer/zodiark/keymaps/via/rules.mk b/keyboards/aleblazer/zodiark/keymaps/via/rules.mk new file mode 100644 index 0000000000..76d3c49ffd --- /dev/null +++ b/keyboards/aleblazer/zodiark/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +RGBLIGHT_ENABLE = yes +VIA_ENABLE = yes diff --git a/keyboards/aleblazer/zodiark/readme.md b/keyboards/aleblazer/zodiark/readme.md new file mode 100644 index 0000000000..fe28bedd48 --- /dev/null +++ b/keyboards/aleblazer/zodiark/readme.md @@ -0,0 +1,23 @@ +# Zodiark Keyboard + +![Zodiark Split](https://i.imgur.com/49O8aowl.jpg) + +A split keyboard with 5x7 including a thumbcluster, encoders on each side, per key RGB, and 2x I2C headers per side, supporiting 1.3"/.96" 128x64 OLEDs (the 1.3" is an SSH1106 OLED, refer to QMK documentation for limitations), .91" 128x32 OLEDs. + +* Keyboard Maintainer: [Aleblazer](https://github.com/Aleblazer/), [Discord Link](https://discord.gg/BCSbXwskVt) +* Hardware Supported: Pro Micro and derivatives +* Hardware Availability: Pending Group Buy - [Discord Link](https://discord.gg/BCSbXwskVt) + +Make example for this keyboard (after setting up your build environment): + + make zodiark:default + +Flashing example for this keyboard: + + make zodiark:default:flash + +Remove TRRS cable from halves, plug into one side, press reset button when asked. Repeat process on the other side. + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +Credit to Sofle and Josef Adamcik for OLED and layer code. diff --git a/keyboards/aleblazer/zodiark/rules.mk b/keyboards/aleblazer/zodiark/rules.mk new file mode 100644 index 0000000000..89e4850d83 --- /dev/null +++ b/keyboards/aleblazer/zodiark/rules.mk @@ -0,0 +1,27 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +OLED_DRIVER_ENABLE = yes # Enable Support for SSD1306 or SH1106 OLED Displays; Communicating over I2C +ENCODER_ENABLE = yes +SPLIT_KEYBOARD = yes +LTO_ENABLE = yes +RGB_MATRIX_DRIVER = WS2812 diff --git a/keyboards/aleblazer/zodiark/zodiark.c b/keyboards/aleblazer/zodiark/zodiark.c new file mode 100644 index 0000000000..d3893ada03 --- /dev/null +++ b/keyboards/aleblazer/zodiark/zodiark.c @@ -0,0 +1,54 @@ +/* +Copyright 2021 Spencer Deven + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "zodiark.h" + +#ifdef RGB_MATRIX_ENABLE +led_config_t g_led_config = { { +// Key Matrix to LED Index + // Left Hand + { 5, 4, 3, 2, 1, 0, 12 }, + { 6, 7, 8, 9, 10, 11, 13 }, + { 19, 18, 17, 16, 15, 14, 26 }, + { 20, 21, 22, 23, 24, 25, NO_LED }, + { 33, 32, 31, 30, 29, 28, 27}, + // Right Hand + { 39, 38, 37, 36, 35, 34, 46 }, + { 40, 41, 42, 43, 44, 45, 47 }, + { 53, 52, 51, 50, 49, 48, 60 }, + { 54, 55, 56, 57, 58, 59, NO_LED }, + { 67, 66, 65, 64, 63, 62, 61 }, + + +}, { + // LED Index to Physical Position + // Left Hand + { 93, 0 }, { 74, 0 }, { 56, 0 }, { 37, 0 }, { 19, 0 }, { 0, 0 }, { 0, 16 }, + { 19, 16 }, { 37, 16 }, { 56, 16 }, { 74, 16 }, { 93, 16 }, { 112, 24 }, { 112, 40 }, + { 93, 32 }, { 74, 32 }, { 56, 32 }, { 37, 32 }, { 19, 32 }, { 0, 32 }, { 0, 48 }, + { 19, 48 }, { 37, 48 }, { 56, 48 }, { 74, 48 }, { 93, 48 }, { 112, 52 }, + { 112, 64 }, { 93, 64 }, { 74, 64 }, { 56, 64 }, { 37, 64 }, { 19, 64 }, { 0, 64 }, + // Right Hand + { 132, 0 }, { 150, 0 }, { 169, 0 }, { 187, 0 }, { 206, 0 }, { 224, 0 }, { 224, 16 }, + { 206, 16 }, { 187, 16 }, { 169, 16 }, { 150, 16 }, { 132, 16 }, { 113, 24 }, { 113, 40 }, + { 132, 32 }, { 150, 32 }, { 169, 32 }, { 187, 32 }, { 206, 32 }, { 224, 32 }, { 224, 48 }, + { 206, 48 }, { 187, 48 }, { 169, 48 }, { 150, 48 }, { 132, 48 }, { 113, 52 }, + { 113, 64 }, { 132, 64 }, { 150, 64 }, { 169, 64 }, { 187, 64 }, { 206, 64 }, { 224, 64 }, +}, { + // LED Index to Flag + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 +} }; +#endif diff --git a/keyboards/aleblazer/zodiark/zodiark.h b/keyboards/aleblazer/zodiark/zodiark.h new file mode 100644 index 0000000000..5c25cea547 --- /dev/null +++ b/keyboards/aleblazer/zodiark/zodiark.h @@ -0,0 +1,38 @@ +/* +Copyright 2021 Spencer Deven + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once +#include "quantum.h" + +#define LAYOUT( \ + L00, L01, L02, L03, L04, L05, R01, R02, R03, R04, R05, R06, \ + L10, L11, L12, L13, L14, L15, L06, R00, R11, R12, R13, R14, R15, R16, \ + L20, L21, L22, L23, L24, L25, L16, R10, R21, R22, R23, R24, R25, R26, \ + L30, L31, L32, L33, L34, L35, L26, L36, R30, R20, R31, R32, R33, R34, R35, R36, \ + L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45, R46 \ + ) \ + { \ + { L00, L01, L02, L03, L04, L05, L06 }, \ + { L10, L11, L12, L13, L14, L15, L16 }, \ + { L20, L21, L22, L23, L24, L25, L26 }, \ + { L30, L31, L32, L33, L34, L35, L36 }, \ + { L40, L41, L42, L43, L44, L45, L46 }, \ + { R06, R05, R04, R03, R02, R01, R00 }, \ + { R16, R15, R14, R13, R12, R11, R10 }, \ + { R26, R25, R24, R23, R22, R21, R20 }, \ + { R36, R35, R34, R33, R32, R31, R30 }, \ + { R46, R45, R44, R43, R42, R41, R40 } \ +} From 788b1854b42a916919c3e8efc77b366ba03d2d8c Mon Sep 17 00:00:00 2001 From: icesoup Date: Sun, 7 Mar 2021 02:03:48 +0500 Subject: [PATCH 029/613] [Keyboard] add Soup10 support (#11921) Co-authored-by: Joel Challis Co-authored-by: Ryan --- keyboards/soup10/config.h | 153 +++++++++++++++++++++ keyboards/soup10/info.json | 23 ++++ keyboards/soup10/keymaps/default/keymap.c | 36 +++++ keyboards/soup10/keymaps/default/readme.md | 1 + keyboards/soup10/keymaps/via/keymap.c | 44 ++++++ keyboards/soup10/keymaps/via/rules.mk | 1 + keyboards/soup10/readme.md | 19 +++ keyboards/soup10/rules.mk | 23 ++++ keyboards/soup10/soup10.c | 17 +++ keyboards/soup10/soup10.h | 39 ++++++ 10 files changed, 356 insertions(+) create mode 100644 keyboards/soup10/config.h create mode 100644 keyboards/soup10/info.json create mode 100644 keyboards/soup10/keymaps/default/keymap.c create mode 100644 keyboards/soup10/keymaps/default/readme.md create mode 100644 keyboards/soup10/keymaps/via/keymap.c create mode 100644 keyboards/soup10/keymaps/via/rules.mk create mode 100644 keyboards/soup10/readme.md create mode 100644 keyboards/soup10/rules.mk create mode 100644 keyboards/soup10/soup10.c create mode 100644 keyboards/soup10/soup10.h diff --git a/keyboards/soup10/config.h b/keyboards/soup10/config.h new file mode 100644 index 0000000000..83fb2dd895 --- /dev/null +++ b/keyboards/soup10/config.h @@ -0,0 +1,153 @@ +/* +Copyright 2021 icesoup + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x5375 +#define PRODUCT_ID 0x0001 +#define DEVICE_VER 0x0001 +#define MANUFACTURER icesoup +#define PRODUCT soup10 + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 3 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ +// 0 1 2 3 +#define MATRIX_ROW_PINS { D1, D0, D4, C6 } +#define MATRIX_COL_PINS { D7, E6, B4 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 + +//#define LED_NUM_LOCK_PIN B0 +//#define LED_CAPS_LOCK_PIN B1 +//#define LED_SCROLL_LOCK_PIN B2 +//#define LED_COMPOSE_PIN B3 +//#define LED_KANA_PIN B4 + +//#define BACKLIGHT_PIN B7 +//#define BACKLIGHT_LEVELS 3 +//#define BACKLIGHT_BREATHING + +//#define RGB_DI_PIN E2 +//#ifdef RGB_DI_PIN +//# define RGBLED_NUM 16 +//# define RGBLIGHT_HUE_STEP 8 +//# define RGBLIGHT_SAT_STEP 8 +//# define RGBLIGHT_VAL_STEP 8 +//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +//# define RGBLIGHT_ANIMATIONS +/*== or choose animations ==*/ +//# define RGBLIGHT_EFFECT_BREATHING +//# define RGBLIGHT_EFFECT_RAINBOW_MOOD +//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +//# define RGBLIGHT_EFFECT_SNAKE +//# define RGBLIGHT_EFFECT_KNIGHT +//# define RGBLIGHT_EFFECT_CHRISTMAS +//# define RGBLIGHT_EFFECT_STATIC_GRADIENT +//# define RGBLIGHT_EFFECT_RGB_TEST +//# define RGBLIGHT_EFFECT_ALTERNATING +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +//#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 1 diff --git a/keyboards/soup10/info.json b/keyboards/soup10/info.json new file mode 100644 index 0000000000..d2688fe511 --- /dev/null +++ b/keyboards/soup10/info.json @@ -0,0 +1,23 @@ +{ + "keyboard_name": "Soup10", + "url": "https://github.com/Sadeeed/soup10", + "maintainer": "Sadeeed", + "width": 3, + "height": 4, + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"K01 (D1,E6)", "x":1, "y":0}, + {"label":"K10 (D0,D7)", "x":0, "y":1}, + {"label":"K11 (D0,E6)", "x":1, "y":1}, + {"label":"K12 (D0,B4)", "x":2, "y":1}, + {"label":"K20 (D4,D7)", "x":0, "y":2}, + {"label":"K21 (D4,E6)", "x":1, "y":2}, + {"label":"K22 (D4,B4)", "x":2, "y":2}, + {"label":"K30 (C6,D7)", "x":0, "y":3}, + {"label":"K31 (C6,E6)", "x":1, "y":3}, + {"label":"K32 (C6,B4)", "x":2, "y":3} + ] + } + } +} diff --git a/keyboards/soup10/keymaps/default/keymap.c b/keyboards/soup10/keymaps/default/keymap.c new file mode 100644 index 0000000000..5379a15095 --- /dev/null +++ b/keyboards/soup10/keymaps/default/keymap.c @@ -0,0 +1,36 @@ +/* Copyright 2021 icesoup + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _FN +}; +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [_BASE] = LAYOUT( + KC_F13, + KC_F14, KC_F15, KC_F16, + KC_F17, KC_F18, KC_F19, + KC_F20, KC_F21, MO(_FN)), + + [_FN] = LAYOUT( + RESET, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS) +}; diff --git a/keyboards/soup10/keymaps/default/readme.md b/keyboards/soup10/keymaps/default/readme.md new file mode 100644 index 0000000000..5daae6fdb9 --- /dev/null +++ b/keyboards/soup10/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for soup10 diff --git a/keyboards/soup10/keymaps/via/keymap.c b/keyboards/soup10/keymaps/via/keymap.c new file mode 100644 index 0000000000..30809c0ed2 --- /dev/null +++ b/keyboards/soup10/keymaps/via/keymap.c @@ -0,0 +1,44 @@ +/* Copyright 2021 icesoup + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [0] = LAYOUT( + KC_A, + KC_B, KC_C, KC_D, + KC_E, KC_F, KC_G, + KC_H, KC_I, KC_J), + + [1] = LAYOUT( + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS), + + [2] = LAYOUT( + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS), + + [3] = LAYOUT( + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS) + +}; diff --git a/keyboards/soup10/keymaps/via/rules.mk b/keyboards/soup10/keymaps/via/rules.mk new file mode 100644 index 0000000000..036bd6d1c3 --- /dev/null +++ b/keyboards/soup10/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/soup10/readme.md b/keyboards/soup10/readme.md new file mode 100644 index 0000000000..e9de91cd15 --- /dev/null +++ b/keyboards/soup10/readme.md @@ -0,0 +1,19 @@ +# soup10 + +![soup10](https://i.imgur.com/YIMB3kKl.jpg) + +A 4x3 10 key macropad by Sadeed aka icesoup + +* Keyboard Maintainer: [icesoup](https://github.com/Sadeeed) +* Hardware Supported: Pro Micro +* Hardware Availability: [Repository](https://github.com/Sadeeed/Soup10) + +Make example for this keyboard (after setting up your build environment): + + make soup10:default + +Flashing example for this keyboard: + + make soup10:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/soup10/rules.mk b/keyboards/soup10/rules.mk new file mode 100644 index 0000000000..df0fd4dcba --- /dev/null +++ b/keyboards/soup10/rules.mk @@ -0,0 +1,23 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +LTO_ENABLE = yes diff --git a/keyboards/soup10/soup10.c b/keyboards/soup10/soup10.c new file mode 100644 index 0000000000..c08681392a --- /dev/null +++ b/keyboards/soup10/soup10.c @@ -0,0 +1,17 @@ +/* Copyright 2021 icesoup + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "soup10.h" diff --git a/keyboards/soup10/soup10.h b/keyboards/soup10/soup10.h new file mode 100644 index 0000000000..b4a2c14568 --- /dev/null +++ b/keyboards/soup10/soup10.h @@ -0,0 +1,39 @@ +/* Copyright 2021 icesoup + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT( \ + K01, \ + K10, K11, K12, \ + K20, K21, K22, \ + K30, K31, K32 \ +) { \ + { KC_NO, K01, KC_NO }, \ + { K10, K11, K12 }, \ + { K20, K21, K22 }, \ + { K30, K31, K32 } \ +} From 9b85b1b638f95ec92398fdb8847561ac90e8745d Mon Sep 17 00:00:00 2001 From: peepeetee <43021794+peepeetee@users.noreply.github.com> Date: Sat, 6 Mar 2021 17:13:20 -0600 Subject: [PATCH 030/613] [Keyboard] bm68rgb (#12128) * add support for Bbm68rgb * pull request changes filled * pull request changes filled(this time for real) * added new line to files that did not have new lines at end of file * updated modifier keys for rgb effects * Update keyboards/bm68rgb/readme.md * Apply suggestions from code review * Apply suggestions from code review * add nkro suppport * Update keyboards/bm68rgb/rules.mk * modified keymap to better correspond to physical layout * updated comment style --- keyboards/bm68rgb/bm68rgb.c | 59 ++++++++ keyboards/bm68rgb/bm68rgb.h | 41 ++++++ keyboards/bm68rgb/config.h | 144 ++++++++++++++++++++ keyboards/bm68rgb/info.json | 81 +++++++++++ keyboards/bm68rgb/keymaps/default/keymap.c | 52 +++++++ keyboards/bm68rgb/keymaps/default/readme.md | 1 + keyboards/bm68rgb/readme.md | 24 ++++ keyboards/bm68rgb/rules.mk | 27 ++++ 8 files changed, 429 insertions(+) create mode 100644 keyboards/bm68rgb/bm68rgb.c create mode 100644 keyboards/bm68rgb/bm68rgb.h create mode 100644 keyboards/bm68rgb/config.h create mode 100644 keyboards/bm68rgb/info.json create mode 100644 keyboards/bm68rgb/keymaps/default/keymap.c create mode 100644 keyboards/bm68rgb/keymaps/default/readme.md create mode 100644 keyboards/bm68rgb/readme.md create mode 100644 keyboards/bm68rgb/rules.mk diff --git a/keyboards/bm68rgb/bm68rgb.c b/keyboards/bm68rgb/bm68rgb.c new file mode 100644 index 0000000000..4e49a96ca4 --- /dev/null +++ b/keyboards/bm68rgb/bm68rgb.c @@ -0,0 +1,59 @@ +/* Copyright 2021 peepeetee + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "bm68rgb.h" + +#ifdef RGB_MATRIX_ENABLE +led_config_t g_led_config = { { + // Key Matrix to LED Index + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 }, + { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 }, + { 30, NO_LED, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43 }, + { NO_LED, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57 }, + { 58, 59, 60, NO_LED, NO_LED, NO_LED, 61, NO_LED, NO_LED, 62, 63, 64, 65, 66, 67 } +}, { + // LED Index to Physical Position + //I have no idea how to calculate this based on a templete, nor do have a good enough ruler to measure this. + // Esc, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, =, Backspace, Delete + { 0, 0 }, { 15, 0 }, { 30, 0 }, { 45, 0 }, { 60, 0 }, { 75, 0 }, { 90, 0 }, { 105, 0 }, { 120, 0 }, { 135, 0 }, { 150, 0 }, { 165, 0 }, { 180, 0 }, { 202, 0 }, { 225, 0 }, + // Tab, Q, W, E, R, T, Y, U, I, O, P, [, ], backslash , Home + { 4, 16 }, { 22, 16 }, { 37, 16 }, { 52, 16 }, { 67, 16 }, { 82, 16 }, { 97, 16 }, { 112, 16 }, { 127, 16 }, { 142, 16 }, { 157, 16 }, { 172, 16 }, { 187, 16 }, { 206, 16 }, { 225, 16 }, + // Capslock, A, S, D, F, G, H, J, K, L, ;, ', Enter, Page up + { 6, 32 }, { 26, 32 }, { 41, 32 }, { 56, 32 }, { 71, 32 }, { 86, 32 }, { 101, 32 }, { 116, 32 }, { 131, 32 }, { 146, 32 }, { 161, 32 }, { 176, 32 }, { 201, 32 }, { 225, 32 }, + // LShift, Z, X, C, V, B, N, M, ,, ., /, Shift, Up, Page Down + { 9, 48 }, { 34, 48 }, { 49, 48 }, { 64, 48 }, { 79, 48 }, { 94, 48 }, { 109, 48 }, { 124, 48 }, { 139, 48 }, { 154, 48 }, { 169, 48 }, { 189, 48 }, { 210, 48 }, { 225, 48 }, + // Ctrl, GUI, Alt, Space, RAlt, FN, Ctrl, Left, Down, Right + { 2, 64 }, { 21, 64 }, { 39, 64 }, { 94, 64 }, { 148, 64 }, { 163, 64 }, { 178, 64 }, { 193, 64 }, { 208, 64 }, { 225, 64 }, + // UNDERGLOW + { 185, 45 }, { 160, 45 }, { 125, 45 }, { 95, 45 }, { 60, 45 }, { 25, 45 } +}, { + // LED Index to Flag + //need to recheck what should be a modifier + + // Esc, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, =, Backspace, Delete + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, + // Tab, Q, W, E, R, T, Y, U, I, O, P, [, ], backslash , Home + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + // Capslock, A, S, D, F, G, H, J, K, L, ;, ', Enter, Page up + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, + // LShift, Z, X, C, V, B, N, M, ,, ., /, Shift, Up, Page Down + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, + // Ctrl, GUI, Alt, Space, RAlt, FN, Ctrl, Left, Down, Right + 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, + // UNDERGLOW + 2, 2, 2, 2, 2, 2 +} }; +#endif diff --git a/keyboards/bm68rgb/bm68rgb.h b/keyboards/bm68rgb/bm68rgb.h new file mode 100644 index 0000000000..3e18b914cc --- /dev/null +++ b/keyboards/bm68rgb/bm68rgb.h @@ -0,0 +1,41 @@ +/* Copyright 2021 peepeetee + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT_65_ansi( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E,\ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E,\ + k20, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E,\ + k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E,\ + k40, k41, k42, k46, k49, k4A, k4B, k4C, k4D, k4E\ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E }, \ + { k20, KC_NO, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E }, \ + { KC_NO, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E }, \ + { k40, k41, k42, KC_NO, KC_NO, KC_NO, k46, KC_NO, KC_NO, k49, k4A, k4B, k4C, k4D, k4E }, \ +} diff --git a/keyboards/bm68rgb/config.h b/keyboards/bm68rgb/config.h new file mode 100644 index 0000000000..250b9d734b --- /dev/null +++ b/keyboards/bm68rgb/config.h @@ -0,0 +1,144 @@ +/* +Copyright 2021 peepeetee + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4B50 //KP +#define PRODUCT_ID 0xEF6F +#define DEVICE_VER 0x0001 +#define MANUFACTURER KPRepublic +#define PRODUCT bm68rgb + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ +#define MATRIX_ROW_PINS { B0, \ + B1, \ + B2, \ + B3, \ + E6 } +#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, D4, D6, D7, B4, B5, B6, C6, C7, F7, F6 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +// The pin connected to the data pin of the LEDs +#define RGB_DI_PIN E2 +// The number of LEDs connected +#define DRIVER_LED_TOTAL 74 +#ifdef RGB_DI_PIN +#define RGBLED_NUM 74 +//# define RGBLIGHT_HUE_STEP 8 +//# define RGBLIGHT_SAT_STEP 8 +//# define RGBLIGHT_VAL_STEP 8 +//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +//# define RGBLIGHT_ANIMATIONS +/*== or choose animations ==*/ +//# define RGBLIGHT_EFFECT_BREATHING +//# define RGBLIGHT_EFFECT_RAINBOW_MOOD +//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +//# define RGBLIGHT_EFFECT_SNAKE +//# define RGBLIGHT_EFFECT_KNIGHT +//# define RGBLIGHT_EFFECT_CHRISTMAS +//# define RGBLIGHT_EFFECT_STATIC_GRADIENT +//# define RGBLIGHT_EFFECT_RGB_TEST +//# define RGBLIGHT_EFFECT_ALTERNATING +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/bm68rgb/info.json b/keyboards/bm68rgb/info.json new file mode 100644 index 0000000000..a0b48ba90c --- /dev/null +++ b/keyboards/bm68rgb/info.json @@ -0,0 +1,81 @@ +{ + "keyboard_name": "bm68rgb", + "url": "", + "maintainer": "peepeetee", + "width": 15, + "height": 5, + "layouts": { + "LAYOUT_65_ansi": { + "layout": [ + {"label":"K00 (B0,D0)", "x":0, "y":0}, + {"label":"K01 (B0,D1)", "x":1, "y":0}, + {"label":"K02 (B0,D2)", "x":2, "y":0}, + {"label":"K03 (B0,D3)", "x":3, "y":0}, + {"label":"K04 (B0,D5)", "x":4, "y":0}, + {"label":"K05 (B0,D4)", "x":5, "y":0}, + {"label":"K06 (B0,D6)", "x":6, "y":0}, + {"label":"K07 (B0,D7)", "x":7, "y":0}, + {"label":"K08 (B0,B4)", "x":8, "y":0}, + {"label":"K09 (B0,B5)", "x":9, "y":0}, + {"label":"K0A (B0,B6)", "x":10, "y":0}, + {"label":"K0B (B0,C6)", "x":11, "y":0}, + {"label":"K0C (B0,C7)", "x":12, "y":0}, + {"label":"K0D (B0,F7)", "x":13, "y":0, "w":2}, + {"label":"K0E (B0,F6)", "x":15, "y":0}, + {"label":"K10 (B1,D0)", "x":0, "y":1, "w":1.5}, + {"label":"K11 (B1,D1)", "x":1.5, "y":1}, + {"label":"K12 (B1,D2)", "x":2.5, "y":1}, + {"label":"K13 (B1,D3)", "x":3.5, "y":1}, + {"label":"K14 (B1,D5)", "x":4.5, "y":1}, + {"label":"K15 (B1,D4)", "x":5.5, "y":1}, + {"label":"K16 (B1,D6)", "x":6.5, "y":1}, + {"label":"K17 (B1,D7)", "x":7.5, "y":1}, + {"label":"K18 (B1,B4)", "x":8.5, "y":1}, + {"label":"K19 (B1,B5)", "x":9.5, "y":1}, + {"label":"K1A (B1,B6)", "x":10.5, "y":1}, + {"label":"K1B (B1,C6)", "x":11.5, "y":1}, + {"label":"K1C (B1,C7)", "x":12.5, "y":1}, + {"label":"K1D (B1,F7)", "x":13.5, "y":1, "w":1.5}, + {"label":"K1E (B1,F6)", "x":15, "y":1}, + {"label":"K20 (B2,D0)", "x":0, "y":2, "w":1.75}, + {"label":"K22 (B2,D2)", "x":1.75, "y":2}, + {"label":"K23 (B2,D3)", "x":2.75, "y":2}, + {"label":"K24 (B2,D5)", "x":3.75, "y":2}, + {"label":"K25 (B2,D4)", "x":4.75, "y":2}, + {"label":"K26 (B2,D6)", "x":5.75, "y":2}, + {"label":"K27 (B2,D7)", "x":6.75, "y":2}, + {"label":"K28 (B2,B4)", "x":7.75, "y":2}, + {"label":"K29 (B2,B5)", "x":8.75, "y":2}, + {"label":"K2A (B2,B6)", "x":9.75, "y":2}, + {"label":"K2B (B2,C6)", "x":10.75, "y":2}, + {"label":"K2C (B2,C7)", "x":11.75, "y":2}, + {"label":"K2D (B2,F7)", "x":12.75, "y":2, "w":2.25}, + {"label":"K2E (B2,F6)", "x":15, "y":2}, + {"label":"K31 (B3,D1)", "x":0, "y":3, "w":2.25}, + {"label":"K32 (B3,D2)", "x":2.25, "y":3}, + {"label":"K33 (B3,D3)", "x":3.25, "y":3}, + {"label":"K34 (B3,D5)", "x":4.25, "y":3}, + {"label":"K35 (B3,D4)", "x":5.25, "y":3}, + {"label":"K36 (B3,D6)", "x":6.25, "y":3}, + {"label":"K37 (B3,D7)", "x":7.25, "y":3}, + {"label":"K38 (B3,B4)", "x":8.25, "y":3}, + {"label":"K39 (B3,B5)", "x":9.25, "y":3}, + {"label":"K3A (B3,B6)", "x":10.25, "y":3}, + {"label":"K3B (B3,C6)", "x":11.25, "y":3}, + {"label":"K3C (B3,C7)", "x":12.25, "y":3, "w":1.75}, + {"label":"K3D (B3,F7)", "x":14, "y":3}, + {"label":"K3E (B3,F6)", "x":15, "y":3}, + {"label":"K40 (E6,D0)", "x":0, "y":4, "w":1.25}, + {"label":"K41 (E6,D1)", "x":1.25, "y":4, "w":1.25}, + {"label":"K42 (E6,D2)", "x":2.5, "y":4, "w":1.25}, + {"label":"K46 (E6,D6)", "x":3.75, "y":4, "w":6.25}, + {"label":"K49 (E6,B5)", "x":10, "y":4}, + {"label":"K4A (E6,B6)", "x":11, "y":4}, + {"label":"K4B (E6,C6)", "x":12, "y":4}, + {"label":"K4C (E6,C7)", "x":13, "y":4}, + {"label":"K4D (E6,F7)", "x":14, "y":4}, + {"label":"K4E (E6,F6)", "x":15, "y":4} + ] + } + } +} diff --git a/keyboards/bm68rgb/keymaps/default/keymap.c b/keyboards/bm68rgb/keymaps/default/keymap.c new file mode 100644 index 0000000000..4bd7d5974e --- /dev/null +++ b/keyboards/bm68rgb/keymaps/default/keymap.c @@ -0,0 +1,52 @@ +/* Copyright 2021 peepeetee + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// // Defines names for use in layer keycodes and the keymap +// enum layer_names { +// _BASE, +// _FN +// }; + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_ansi( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1),KC_RCTRL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_65_ansi( + KC_GRAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +}; + +/* +Templete + [ ] = LAYOUT_65_ansi( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +*/ diff --git a/keyboards/bm68rgb/keymaps/default/readme.md b/keyboards/bm68rgb/keymaps/default/readme.md new file mode 100644 index 0000000000..0408ee9e98 --- /dev/null +++ b/keyboards/bm68rgb/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for bm68rgb diff --git a/keyboards/bm68rgb/readme.md b/keyboards/bm68rgb/readme.md new file mode 100644 index 0000000000..4087fd8664 --- /dev/null +++ b/keyboards/bm68rgb/readme.md @@ -0,0 +1,24 @@ +# bm68rgb + +![bm68rgb](https://i.imgur.com/uuYP8OIl.jpeg) + +A 65% hotswap in switch RGB keyboard from KPRepublic. + +* Keyboard Maintainer: [peepeetee](https://github.com/peepeetee) +* Hardware Supported: BM68 RGB +* Hardware Availability: [KP Republic](https://kprepublic.com/products/bm68rgb-bm68-rgb-65-hot-swappable-custom-mechanical-keyboard-pcb-programmed-qmk-via-firmware-full-rgb-switch-underglow-type-c) + +Make example for this keyboard (after setting up your build environment): + + make bm68rgb:default + +Flashing example for this keyboard: + + make bm68rgb:default:flash + +To reset the board into bootloader mode, do one of the following: + +* Short the two-pad footprint to the left of the spacebar switch while the board is plugged in +* Hold the Esc key while connecting the USB cable (also erases persistent settings) + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/bm68rgb/rules.mk b/keyboards/bm68rgb/rules.mk new file mode 100644 index 0000000000..15d81ded88 --- /dev/null +++ b/keyboards/bm68rgb/rules.mk @@ -0,0 +1,27 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = WS2812 +#LTO_ENABLE = yes + +LAYOUTS = 65_ansi From 1cbf1c681a9ad36e488fef1e8ce139992651baaf Mon Sep 17 00:00:00 2001 From: Zach White Date: Sat, 6 Mar 2021 15:56:45 -0800 Subject: [PATCH 031/613] Enforce minimum versions for jsonschema and MILC (#12141) --- requirements.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/requirements.txt b/requirements.txt index 27a6baed99..f74cb73cb7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,6 +4,6 @@ argcomplete colorama dotty-dict hjson -jsonschema -milc +jsonschema>=3 +milc>=1.1.0 pygments From 08e512a273f9123dbe3477fba447da4d9ea53d53 Mon Sep 17 00:00:00 2001 From: Zach White Date: Sat, 6 Mar 2021 19:18:45 -0800 Subject: [PATCH 032/613] upload api data to spaces --- .github/workflows/api.yml | 21 ++++++++------------- .github/workflows/develop_api.yml | 21 ++++++++------------- 2 files changed, 16 insertions(+), 26 deletions(-) diff --git a/.github/workflows/api.yml b/.github/workflows/api.yml index dfb1b58895..8f1d917dc7 100644 --- a/.github/workflows/api.yml +++ b/.github/workflows/api.yml @@ -25,18 +25,13 @@ jobs: - name: Generate API Data run: qmk generate-api - - name: Install rsync - run: | - apt-get update && apt-get install -y rsync - - name: Upload API Data - uses: JamesIves/github-pages-deploy-action@3.7.1 + uses: jakejarvis/s3-sync-action@master with: - ACCESS_TOKEN: ${{ secrets.API_TOKEN_GITHUB }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - BRANCH: main - FOLDER: api_data/v1 - CLEAN: true - GIT_CONFIG_EMAIL: hello@qmk.fm - REPOSITORY_NAME: qmk/qmk_keyboards - TARGET_FOLDER: v1 + args: --acl public-read --follow-symlinks --delete + env: + AWS_S3_BUCKET: ${{ secrets.API_SPACE_MASTER }} + AWS_ACCESS_KEY_ID: ${{ secrets.SPACES_ACCESS_KEY }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.SPACES_SECRET_KEY }} + AWS_S3_ENDPOINT: https://nyc3.digitaloceanspaces.com + SOURCE_DIR: 'api-data' diff --git a/.github/workflows/develop_api.yml b/.github/workflows/develop_api.yml index 53a5b452f8..67dc4a472a 100644 --- a/.github/workflows/develop_api.yml +++ b/.github/workflows/develop_api.yml @@ -25,18 +25,13 @@ jobs: - name: Generate API Data run: qmk generate-api - - name: Install rsync - run: | - apt-get update && apt-get install -y rsync - - name: Upload API Data - uses: JamesIves/github-pages-deploy-action@3.7.1 + uses: jakejarvis/s3-sync-action@master with: - ACCESS_TOKEN: ${{ secrets.API_TOKEN_GITHUB }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - BRANCH: main - FOLDER: api_data/v1 - CLEAN: true - GIT_CONFIG_EMAIL: hello@qmk.fm - REPOSITORY_NAME: qmk/qmk_keyboards_devel - TARGET_FOLDER: v1 + args: --acl public-read --follow-symlinks --delete + env: + AWS_S3_BUCKET: ${{ secrets.API_SPACE_DEVELOP }} + AWS_ACCESS_KEY_ID: ${{ secrets.SPACES_ACCESS_KEY }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.SPACES_SECRET_KEY }} + AWS_S3_ENDPOINT: https://nyc3.digitaloceanspaces.com + SOURCE_DIR: 'api-data' From 01b8ef39f5b7bee6ffe8188c46aa3836a8270022 Mon Sep 17 00:00:00 2001 From: Pierre Chevalier Date: Fri, 5 Mar 2021 13:35:41 +0000 Subject: [PATCH 033/613] Remove stale references to "handwired/ferris" The code was moved to the "ferris" directory. Fixes the following commands: ``` qmk compile ~/qmk_firmware/keyboards/ferris/keymaps/default/keymap.json qmk compile ~/qmk_firmware/keyboards/ferris/keymaps/pierrec83/keymap.json ``` Addresses this issue: https://github.com/pierrechevalier83/ferris/issues/5 --- keyboards/ferris/keymaps/default/keymap.json | 2 +- keyboards/ferris/keymaps/default/readme.md | 2 +- keyboards/ferris/keymaps/pierrec83/keymap.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/keyboards/ferris/keymaps/default/keymap.json b/keyboards/ferris/keymaps/default/keymap.json index 7f7d614e20..5fe1b9e00a 100644 --- a/keyboards/ferris/keymaps/default/keymap.json +++ b/keyboards/ferris/keymaps/default/keymap.json @@ -1,7 +1,7 @@ { "version": 1, "notes": "My awesome keymap", "documentation": "\"This file is a QMK Configurator export. You can import this at . It can also be used directly with QMK's source code.\n\nTo setup your QMK environment check out the tutorial: \n\nYou can convert this file to a keymap.c using this command: `qmk json2c {keymap}`\n\nYou can compile this keymap using this command: `qmk compile {keymap}`\"\n", - "keyboard": "handwired/ferris", + "keyboard": "ferris/0_1", "keymap": "default", "layout": "LAYOUT", "layers": [ diff --git a/keyboards/ferris/keymaps/default/readme.md b/keyboards/ferris/keymaps/default/readme.md index 252f886f52..aa7ba6d13b 100644 --- a/keyboards/ferris/keymaps/default/readme.md +++ b/keyboards/ferris/keymaps/default/readme.md @@ -111,7 +111,7 @@ To edit it, you may: If you decide to use the latter workflow, here are the steps to follow: * From the qmk configurator, hit the "import QMK keymap json file" button (it has a drawing with an up arrow on it). -* Browse to the location of your keymap (for example, `/keyboards/handwired/ferris/keymaps/default/keymap.json`) +* Browse to the location of your keymap (for example, `/keyboards/ferris/keymaps/default/keymap.json`) * Perform any modification to the keymap in the web UI * Export the keymap to your downloads folder, by hitting the "Export QMK keymap json file" button (it has a drawing with a down arrow on it) * Override your original keymap with the output of formatting the exported keymap by running a command such as this one from the root of your qmk repo: diff --git a/keyboards/ferris/keymaps/pierrec83/keymap.json b/keyboards/ferris/keymaps/pierrec83/keymap.json index 2372e7e372..1f2c166b9c 100644 --- a/keyboards/ferris/keymaps/pierrec83/keymap.json +++ b/keyboards/ferris/keymaps/pierrec83/keymap.json @@ -1,7 +1,7 @@ { "version": 1, "notes": "My awesome keymap", "documentation": "\"This file is a QMK Configurator export. You can import this at . It can also be used directly with QMK's source code.\n\nTo setup your QMK environment check out the tutorial: \n\nYou can convert this file to a keymap.c using this command: `qmk json2c {keymap}`\n\nYou can compile this keymap using this command: `qmk compile {keymap}`\"\n", - "keyboard": "handwired/ferris", + "keyboard": "ferris/0_1", "keymap": "pierrec83", "layout": "LAYOUT", "layers": [ From 0763269ec51e65d90f41c5042cad63f091e40937 Mon Sep 17 00:00:00 2001 From: Zach White Date: Sat, 6 Mar 2021 21:26:07 -0800 Subject: [PATCH 034/613] fix CI job: api-data->api_data --- .github/workflows/api.yml | 2 +- .github/workflows/develop_api.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/api.yml b/.github/workflows/api.yml index 8f1d917dc7..c8d988d0f0 100644 --- a/.github/workflows/api.yml +++ b/.github/workflows/api.yml @@ -34,4 +34,4 @@ jobs: AWS_ACCESS_KEY_ID: ${{ secrets.SPACES_ACCESS_KEY }} AWS_SECRET_ACCESS_KEY: ${{ secrets.SPACES_SECRET_KEY }} AWS_S3_ENDPOINT: https://nyc3.digitaloceanspaces.com - SOURCE_DIR: 'api-data' + SOURCE_DIR: 'api_data' diff --git a/.github/workflows/develop_api.yml b/.github/workflows/develop_api.yml index 67dc4a472a..4e64cbcf8c 100644 --- a/.github/workflows/develop_api.yml +++ b/.github/workflows/develop_api.yml @@ -34,4 +34,4 @@ jobs: AWS_ACCESS_KEY_ID: ${{ secrets.SPACES_ACCESS_KEY }} AWS_SECRET_ACCESS_KEY: ${{ secrets.SPACES_SECRET_KEY }} AWS_S3_ENDPOINT: https://nyc3.digitaloceanspaces.com - SOURCE_DIR: 'api-data' + SOURCE_DIR: 'api_data' From 85560685345d5147529dfd0d6a5806d28d044094 Mon Sep 17 00:00:00 2001 From: Ryan Date: Sun, 7 Mar 2021 17:39:35 +1100 Subject: [PATCH 035/613] Require `BOOTLOADER = qmk-dfu` for `:bootloader` target (#12136) --- tmk_core/avr.mk | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tmk_core/avr.mk b/tmk_core/avr.mk index 06c308e553..f9c56e06de 100644 --- a/tmk_core/avr.mk +++ b/tmk_core/avr.mk @@ -283,6 +283,9 @@ extcoff: $(BUILD_DIR)/$(TARGET).elf $(COFFCONVERT) -O coff-ext-avr $< $(BUILD_DIR)/$(TARGET).cof bootloader: +ifneq ($(strip $(BOOTLOADER)), qmk-dfu) + $(error Please set BOOTLOADER = qmk-dfu first!) +endif make -C lib/lufa/Bootloaders/DFU/ clean bin/qmk generate-dfu-header --quiet --keyboard $(KEYBOARD) --output lib/lufa/Bootloaders/DFU/Keyboard.h $(eval MAX_SIZE=$(shell n=`$(CC) -E -mmcu=$(MCU) $(CFLAGS) $(OPT_DEFS) tmk_core/common/avr/bootloader_size.c 2> /dev/null | sed -ne 's/\r//;/^#/n;/^AVR_SIZE:/,$${s/^AVR_SIZE: //;p;}'` && echo $$(($$n)) || echo 0)) From 86e6be342cf6c8db7794da86ddb5a8afddb3b71b Mon Sep 17 00:00:00 2001 From: Zach White Date: Sun, 7 Mar 2021 08:14:25 -0800 Subject: [PATCH 036/613] minor change to trigger api update --- keyboards/readme.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/keyboards/readme.md b/keyboards/readme.md index 30f856847d..6b7b92e0cf 100644 --- a/keyboards/readme.md +++ b/keyboards/readme.md @@ -1,5 +1,6 @@ # Included Keyboards -QMK runs on a diverse range of keyboards. Some of these keyboards are officially supported and see constant community contributions, while others are part of the repository for historical reasons. + +QMK runs on a diverse range of keyboards. Some of these keyboards are well maintained and see constant community contributions, while others are part of the repository for historical reasons. ## Official QMK Keyboards From 75fd6bd2690583ae62c43f0b9a930cd9f6d8dbb3 Mon Sep 17 00:00:00 2001 From: maz0r Date: Sun, 7 Mar 2021 20:20:02 +0000 Subject: [PATCH 037/613] [Keyboard] Capsunlocked CU80 - added variant's for RGB matrix support (#12019) Co-authored-by: Ryan --- .../capsunlocked/cu80/v2_ansi_rgb/config.h | 55 ++++++++++ .../capsunlocked/cu80/v2_ansi_rgb/info.json | 100 +++++++++++++++++ .../cu80/v2_ansi_rgb/keymaps/default/keymap.c | 38 +++++++ .../v2_ansi_rgb/keymaps/default/readme.md | 3 + .../cu80/v2_ansi_rgb/keymaps/via/keymap.c | 55 ++++++++++ .../cu80/v2_ansi_rgb/keymaps/via/rules.mk | 1 + .../capsunlocked/cu80/v2_ansi_rgb/readme.md | 18 ++++ .../capsunlocked/cu80/v2_ansi_rgb/rules.mk | 28 +++++ .../cu80/v2_ansi_rgb/v2_ansi_rgb.c | 67 ++++++++++++ .../cu80/v2_ansi_rgb/v2_ansi_rgb.h | 46 ++++++++ .../capsunlocked/cu80/v2_iso_rgb/config.h | 52 +++++++++ .../capsunlocked/cu80/v2_iso_rgb/info.json | 101 ++++++++++++++++++ .../cu80/v2_iso_rgb/keymaps/default/keymap.c | 38 +++++++ .../cu80/v2_iso_rgb/keymaps/default/readme.md | 3 + .../cu80/v2_iso_rgb/keymaps/via/keymap.c | 55 ++++++++++ .../cu80/v2_iso_rgb/keymaps/via/rules.mk | 1 + .../capsunlocked/cu80/v2_iso_rgb/readme.md | 18 ++++ .../capsunlocked/cu80/v2_iso_rgb/rules.mk | 28 +++++ .../capsunlocked/cu80/v2_iso_rgb/v2_iso_rgb.c | 64 +++++++++++ .../capsunlocked/cu80/v2_iso_rgb/v2_iso_rgb.h | 46 ++++++++ 20 files changed, 817 insertions(+) create mode 100644 keyboards/capsunlocked/cu80/v2_ansi_rgb/config.h create mode 100644 keyboards/capsunlocked/cu80/v2_ansi_rgb/info.json create mode 100644 keyboards/capsunlocked/cu80/v2_ansi_rgb/keymaps/default/keymap.c create mode 100644 keyboards/capsunlocked/cu80/v2_ansi_rgb/keymaps/default/readme.md create mode 100644 keyboards/capsunlocked/cu80/v2_ansi_rgb/keymaps/via/keymap.c create mode 100644 keyboards/capsunlocked/cu80/v2_ansi_rgb/keymaps/via/rules.mk create mode 100644 keyboards/capsunlocked/cu80/v2_ansi_rgb/readme.md create mode 100644 keyboards/capsunlocked/cu80/v2_ansi_rgb/rules.mk create mode 100644 keyboards/capsunlocked/cu80/v2_ansi_rgb/v2_ansi_rgb.c create mode 100644 keyboards/capsunlocked/cu80/v2_ansi_rgb/v2_ansi_rgb.h create mode 100644 keyboards/capsunlocked/cu80/v2_iso_rgb/config.h create mode 100644 keyboards/capsunlocked/cu80/v2_iso_rgb/info.json create mode 100644 keyboards/capsunlocked/cu80/v2_iso_rgb/keymaps/default/keymap.c create mode 100644 keyboards/capsunlocked/cu80/v2_iso_rgb/keymaps/default/readme.md create mode 100644 keyboards/capsunlocked/cu80/v2_iso_rgb/keymaps/via/keymap.c create mode 100644 keyboards/capsunlocked/cu80/v2_iso_rgb/keymaps/via/rules.mk create mode 100644 keyboards/capsunlocked/cu80/v2_iso_rgb/readme.md create mode 100644 keyboards/capsunlocked/cu80/v2_iso_rgb/rules.mk create mode 100644 keyboards/capsunlocked/cu80/v2_iso_rgb/v2_iso_rgb.c create mode 100644 keyboards/capsunlocked/cu80/v2_iso_rgb/v2_iso_rgb.h diff --git a/keyboards/capsunlocked/cu80/v2_ansi_rgb/config.h b/keyboards/capsunlocked/cu80/v2_ansi_rgb/config.h new file mode 100644 index 0000000000..fe07286963 --- /dev/null +++ b/keyboards/capsunlocked/cu80/v2_ansi_rgb/config.h @@ -0,0 +1,55 @@ +/* +Copyright 2021 CapsUnlocked + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4355 +#define PRODUCT_ID 0x0082 +#define DEVICE_VER 0x0001 +#define MANUFACTURER CapsUnlocked +#define PRODUCT CU80 v2 ANSI RGB + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 17 + +#define MATRIX_ROW_PINS { D3, D2, B7, F1, C7, D5 } +#define MATRIX_COL_PINS { B0, B1, B2, B3, F4, F5, F6, F7, B6, B5, D7, B4, D6, F0, D1, C6, D4 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + + +/* Define RGB */ +#define RGB_DI_PIN E6 +#define RGB_MATRIX_KEYPRESSES +#define DRIVER_LED_TOTAL 87 +#define RGBLED_NUM 87 +#define RGBLIGHT_LIMIT_VAL 50 + + diff --git a/keyboards/capsunlocked/cu80/v2_ansi_rgb/info.json b/keyboards/capsunlocked/cu80/v2_ansi_rgb/info.json new file mode 100644 index 0000000000..809b7d5cfa --- /dev/null +++ b/keyboards/capsunlocked/cu80/v2_ansi_rgb/info.json @@ -0,0 +1,100 @@ +{ + "keyboard_name": "CapsUnlocked CU80 v2 ANSI RGB", + "maintainer": "rys", + "url": "https://caps-unlocked.com/cu80-round-2/", + "width": 18.25, + "height": 6.5, + "layouts": { + "LAYOUT_tkl_ansi": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":2, "y":0}, + {"label":"F2", "x":3, "y":0}, + {"label":"F3", "x":4, "y":0}, + {"label":"F4", "x":5, "y":0}, + {"label":"F5", "x":6.5, "y":0}, + {"label":"F6", "x":7.5, "y":0}, + {"label":"F7", "x":8.5, "y":0}, + {"label":"F8", "x":9.5, "y":0}, + {"label":"F9", "x":11, "y":0}, + {"label":"F10", "x":12, "y":0}, + {"label":"F11", "x":13, "y":0}, + {"label":"F12", "x":14, "y":0}, + {"label":"PrtSc", "x":15.25, "y":0}, + {"label":"Scroll Lock", "x":16.25, "y":0}, + {"label":"Pause", "x":17.25, "y":0}, + {"label":"\u00ac", "x":0, "y":1.5}, + {"label":"!", "x":1, "y":1.5}, + {"label":"@", "x":2, "y":1.5}, + {"label":"£", "x":3, "y":1.5}, + {"label":"$", "x":4, "y":1.5}, + {"label":"%", "x":5, "y":1.5}, + {"label":"^", "x":6, "y":1.5}, + {"label":"&", "x":7, "y":1.5}, + {"label":"*", "x":8, "y":1.5}, + {"label":"(", "x":9, "y":1.5}, + {"label":")", "x":10, "y":1.5}, + {"label":"_", "x":11, "y":1.5}, + {"label":"+", "x":12, "y":1.5}, + {"label":"Backspace", "x":13, "y":1.5, "w":2}, + {"label":"Insert", "x":15.25, "y":1.5}, + {"label":"Home", "x":16.25, "y":1.5}, + {"label":"PgUp", "x":17.25, "y":1.5}, + {"label":"Tab", "x":0, "y":2.5, "w":1.5}, + {"label":"Q", "x":1.5, "y":2.5}, + {"label":"W", "x":2.5, "y":2.5}, + {"label":"E", "x":3.5, "y":2.5}, + {"label":"R", "x":4.5, "y":2.5}, + {"label":"T", "x":5.5, "y":2.5}, + {"label":"Y", "x":6.5, "y":2.5}, + {"label":"U", "x":7.5, "y":2.5}, + {"label":"I", "x":8.5, "y":2.5}, + {"label":"O", "x":9.5, "y":2.5}, + {"label":"P", "x":10.5, "y":2.5}, + {"label":"{", "x":11.5, "y":2.5}, + {"label":"}", "x":12.5, "y":2.5}, + {"label":"|", "x":13.5, "y":2.5, "w":1.5}, + {"label":"Delete", "x":15.25, "y":2.5}, + {"label":"End", "x":16.25, "y":2.5}, + {"label":"PgDn", "x":17.25, "y":2.5}, + {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, + {"label":"A", "x":1.75, "y":3.5}, + {"label":"S", "x":2.75, "y":3.5}, + {"label":"D", "x":3.75, "y":3.5}, + {"label":"F", "x":4.75, "y":3.5}, + {"label":"G", "x":5.75, "y":3.5}, + {"label":"H", "x":6.75, "y":3.5}, + {"label":"J", "x":7.75, "y":3.5}, + {"label":"K", "x":8.75, "y":3.5}, + {"label":"L", "x":9.75, "y":3.5}, + {"label":":", "x":10.75, "y":3.5}, + {"label":"\"", "x":11.75, "y":3.5}, + {"label":"Enter", "x":12.75, "y":3.5, "w":2.25}, + {"label":"Shift", "x":0, "y":4.5, "w":2.25}, + {"label":"Z", "x":2.25, "y":4.5}, + {"label":"X", "x":3.25, "y":4.5}, + {"label":"C", "x":4.25, "y":4.5}, + {"label":"V", "x":5.25, "y":4.5}, + {"label":"B", "x":6.25, "y":4.5}, + {"label":"N", "x":7.25, "y":4.5}, + {"label":"M", "x":8.25, "y":4.5}, + {"label":"<", "x":9.25, "y":4.5}, + {"label":">", "x":10.25, "y":4.5}, + {"label":"?", "x":11.25, "y":4.5}, + {"label":"Shift", "x":12.25, "y":4.5, "w":2.75}, + {"label":"Up", "x":16.25, "y":4.5}, + {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, + {"label":"Alt", "x":1.25, "y":5.5, "w":1.25}, + {"label":"Win", "x":2.5, "y":5.5, "w":1.25}, + {"label":"Space", "x":3.75, "y":5.5, "w":6.25}, + {"label":"Win", "x":10, "y":5.5, "w":1.25}, + {"label":"AltGr", "x":11.25, "y":5.5, "w":1.25}, + {"label":"Ctrl", "x":12.5, "y":5.5, "w":1.25}, + {"label":"Fn", "x":13.75, "y":5.5, "w":1.25}, + {"label":"Left", "x":15.25, "y":5.5}, + {"label":"Down", "x":16.25, "y":5.5}, + {"label":"Right", "x":17.25, "y":5.5} + ] + } + } +} diff --git a/keyboards/capsunlocked/cu80/v2_ansi_rgb/keymaps/default/keymap.c b/keyboards/capsunlocked/cu80/v2_ansi_rgb/keymaps/default/keymap.c new file mode 100644 index 0000000000..b27fe2c9be --- /dev/null +++ b/keyboards/capsunlocked/cu80/v2_ansi_rgb/keymaps/default/keymap.c @@ -0,0 +1,38 @@ +/* +Copyright 2021 CapsUnlocked + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_tkl_ansi( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_tkl_ansi( + RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_M_P, RGB_M_B, RGB_M_R, + + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI, RGB_SAI, RGB_VAI, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, RGB_RMOD,RGB_TOG, RGB_MOD + ), +}; diff --git a/keyboards/capsunlocked/cu80/v2_ansi_rgb/keymaps/default/readme.md b/keyboards/capsunlocked/cu80/v2_ansi_rgb/keymaps/default/readme.md new file mode 100644 index 0000000000..717c2c283a --- /dev/null +++ b/keyboards/capsunlocked/cu80/v2_ansi_rgb/keymaps/default/readme.md @@ -0,0 +1,3 @@ +# The default ANSI keymap for the CU80 + +This CU80 is keymap is for the fixed ANSI variant with fully populated bottom row. diff --git a/keyboards/capsunlocked/cu80/v2_ansi_rgb/keymaps/via/keymap.c b/keyboards/capsunlocked/cu80/v2_ansi_rgb/keymaps/via/keymap.c new file mode 100644 index 0000000000..9d53b04cd2 --- /dev/null +++ b/keyboards/capsunlocked/cu80/v2_ansi_rgb/keymaps/via/keymap.c @@ -0,0 +1,55 @@ +/* Copyright 2021 CapsUnlocked + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_tkl_ansi( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_tkl_ansi( + RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_M_P, RGB_M_B, RGB_M_R, + + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI, RGB_SAI, RGB_VAI, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, RGB_RMOD,RGB_TOG, RGB_MOD + ), + [2] = LAYOUT_tkl_ansi( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT_tkl_ansi( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/capsunlocked/cu80/v2_ansi_rgb/keymaps/via/rules.mk b/keyboards/capsunlocked/cu80/v2_ansi_rgb/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/capsunlocked/cu80/v2_ansi_rgb/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/capsunlocked/cu80/v2_ansi_rgb/readme.md b/keyboards/capsunlocked/cu80/v2_ansi_rgb/readme.md new file mode 100644 index 0000000000..302248f117 --- /dev/null +++ b/keyboards/capsunlocked/cu80/v2_ansi_rgb/readme.md @@ -0,0 +1,18 @@ +# CU80 v2 ANSI RGB + +The CU80 v2 ANSI is the PCB for round 2 of the CU80 TKL keyboard, with matrix RGB lighting, fixed ANSI layout and VIA support. + +This firmware adds RGB matrix support. + +To place the keyboard into bootloader mode in order to flash it, hold the ESC key while plugging the board in. + +* Keyboard maintainer: [rys](https://github.com/rys) +* Hardware supported: CU80 v2 ANSI +* Hardware availability: [CapsUnlocked](https://caps-unlocked.com/cu80-round-2/) + +Make and flash example for this keyboard (after setting up your build environment): + + make capsunlocked/cu80/v2_ansi_rgb:default:flash + make capsunlocked/cu80/v2_ansi_rgb:via:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/capsunlocked/cu80/v2_ansi_rgb/rules.mk b/keyboards/capsunlocked/cu80/v2_ansi_rgb/rules.mk new file mode 100644 index 0000000000..0473b7d414 --- /dev/null +++ b/keyboards/capsunlocked/cu80/v2_ansi_rgb/rules.mk @@ -0,0 +1,28 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +RGB_MATRIX_ENABLE = yes # Enable RGB matrix +RGB_MATRIX_DRIVER = WS2812 # Set Driver to WS2812 +NO_USB_STARTUP_CHECK = yes # resolve possible sleep issue + + +LAYOUTS = tkl_ansi diff --git a/keyboards/capsunlocked/cu80/v2_ansi_rgb/v2_ansi_rgb.c b/keyboards/capsunlocked/cu80/v2_ansi_rgb/v2_ansi_rgb.c new file mode 100644 index 0000000000..7065d960f1 --- /dev/null +++ b/keyboards/capsunlocked/cu80/v2_ansi_rgb/v2_ansi_rgb.c @@ -0,0 +1,67 @@ +/* +Copyright 2021 CapsUnlocked + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "v2_ansi_rgb.h" +#include "rgb_matrix_types.h" + + +void matrix_init_kb(void) { + setPinOutput(E6); + matrix_init_user(); +} + +/* Set LED 62 (Caps Lock) and LED 14 (Scroll Lock) when key active */ +void rgb_matrix_indicators_kb(void) { + if (host_keyboard_led_state().caps_lock) { + rgb_matrix_set_color(62, 255, 255, 255); + } + if (host_keyboard_led_state().scroll_lock) { + rgb_matrix_set_color(14, 255, 255, 255); + } +} + +/* Leds on the CU80 go ltr > rtl > ltr > rlt > Ltr > rtl */ +led_config_t g_led_config = { + { + { 0,NO_LED, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }, + { 32,31 ,30 ,29 ,28 ,27 ,26 ,25 ,24 ,23 ,22 ,21 ,20 ,19 ,18 ,17 ,16 }, + { 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49 }, + { 62, 61, 60, 59,58,57,56,55,54,53,52,51,50 }, + { 63, NO_LED, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, NO_LED, NO_LED, 75 }, + { 86 ,85 ,84 ,NO_LED, NO_LED ,83, NO_LED,NO_LED, NO_LED ,82 ,81 ,80 ,79 ,78 ,NO_LED,77 ,76 } + + }, + /*board layout accounting for led directions */ + { + {0,0}, {28,0}, {42,0}, {56,0}, {71,0}, {85,0}, {99,0}, {113,0}, {127,0}, {141,0}, {155,0}, {169,0}, {184,0}, {198,0}, {212,0}, {226,0}, + {226,13}, {212,13}, {198,13}, {184,13}, {169,13}, {155,13}, {141,13}, {127,13}, {113,13}, {99,13}, {85,13}, {71,13}, {56,13}, {42,13}, {28,13}, {14,13}, {0,13}, + {0,26}, {14,26}, {28,26}, {42,26}, {56,26}, {71,26}, {85,26}, {99,26}, {113,26}, {127,26}, {141,26}, {155,26}, {169,26}, {184,26}, {198,26}, {212,26}, {226,26}, + {169,38}, {155,38}, {141,38}, {127,38}, {113,38}, {99,38}, {85,38}, {71,38}, {56,38}, {42,38}, {28,38}, {14,38}, {0,38}, + {0,51}, {28,51}, {42,51}, {56,51}, {71,51}, {85,51}, {99,51}, {113,51}, {127,51}, {141,51}, {155,51}, {169,51}, {212,51}, + {226,64}, {212,64}, {184,64}, {169,64}, {155,64}, {141,64}, {127,64}, {71,64}, {28,64}, {14,64}, {0,64} + + }, + /* marks scroll and caps as function modifiers for led effects */ + { + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 + } +}; diff --git a/keyboards/capsunlocked/cu80/v2_ansi_rgb/v2_ansi_rgb.h b/keyboards/capsunlocked/cu80/v2_ansi_rgb/v2_ansi_rgb.h new file mode 100644 index 0000000000..61aecfa008 --- /dev/null +++ b/keyboards/capsunlocked/cu80/v2_ansi_rgb/v2_ansi_rgb.h @@ -0,0 +1,46 @@ +/* +Copyright 2021 CapsUnlocked + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +/* This a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ + +#define LAYOUT_tkl_ansi( \ + K000, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016, \ + \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, \ + K400, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K415, \ + K500, K501, K502, K505, K509, K510, K511, K512, K513, K515, K516 \ +) { \ + { K000, KC_NO, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, KC_NO, KC_NO, KC_NO, KC_NO }, \ + { K400, KC_NO, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, KC_NO, KC_NO, K415, KC_NO }, \ + { K500, K501, K502, KC_NO, KC_NO, K505, KC_NO, KC_NO, KC_NO, K509, K510, K511, K512, K513, KC_NO, K515, K516 }, \ +} diff --git a/keyboards/capsunlocked/cu80/v2_iso_rgb/config.h b/keyboards/capsunlocked/cu80/v2_iso_rgb/config.h new file mode 100644 index 0000000000..eb607ce88d --- /dev/null +++ b/keyboards/capsunlocked/cu80/v2_iso_rgb/config.h @@ -0,0 +1,52 @@ +/* +Copyright 2021 CapsUnlocked + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4355 +#define PRODUCT_ID 0x0083 +#define DEVICE_VER 0x0001 +#define MANUFACTURER CapsUnlocked +#define PRODUCT CU80 v2 ISO RGB + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 17 + +#define MATRIX_ROW_PINS { D3, D2, B7, F1, C7, D5 } +#define MATRIX_COL_PINS { B0, B1, B2, B3, F4, F5, F6, F7, B6, B5, D7, B4, D6, F0, D1, C6, D4 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* Define RGB */ +#define RGB_DI_PIN E6 +#define DRIVER_LED_TOTAL 88 +#define RGBLED_NUM 88 +#define RGB_MATRIX_KEYPRESSES +#define RGBLIGHT_LIMIT_VAL 50 diff --git a/keyboards/capsunlocked/cu80/v2_iso_rgb/info.json b/keyboards/capsunlocked/cu80/v2_iso_rgb/info.json new file mode 100644 index 0000000000..75de023929 --- /dev/null +++ b/keyboards/capsunlocked/cu80/v2_iso_rgb/info.json @@ -0,0 +1,101 @@ +{ + "keyboard_name": "CapsUnlocked CU80 v2 ISO RGB", + "maintainer": "rys", + "url": "https://caps-unlocked.com/cu80-round-2/", + "width": 18.25, + "height": 6.5, + "layouts": { + "LAYOUT_tkl_iso": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":2, "y":0}, + {"label":"F2", "x":3, "y":0}, + {"label":"F3", "x":4, "y":0}, + {"label":"F4", "x":5, "y":0}, + {"label":"F5", "x":6.5, "y":0}, + {"label":"F6", "x":7.5, "y":0}, + {"label":"F7", "x":8.5, "y":0}, + {"label":"F8", "x":9.5, "y":0}, + {"label":"F9", "x":11, "y":0}, + {"label":"F10", "x":12, "y":0}, + {"label":"F11", "x":13, "y":0}, + {"label":"F12", "x":14, "y":0}, + {"label":"PrtSc", "x":15.25, "y":0}, + {"label":"Scroll Lock", "x":16.25, "y":0}, + {"label":"Pause", "x":17.25, "y":0}, + {"label":"\u00ac", "x":0, "y":1.5}, + {"label":"!", "x":1, "y":1.5}, + {"label":"\"", "x":2, "y":1.5}, + {"label":"£", "x":3, "y":1.5}, + {"label":"$", "x":4, "y":1.5}, + {"label":"%", "x":5, "y":1.5}, + {"label":"^", "x":6, "y":1.5}, + {"label":"&", "x":7, "y":1.5}, + {"label":"*", "x":8, "y":1.5}, + {"label":"(", "x":9, "y":1.5}, + {"label":")", "x":10, "y":1.5}, + {"label":"_", "x":11, "y":1.5}, + {"label":"+", "x":12, "y":1.5}, + {"label":"Backspace", "x":13, "y":1.5, "w":2}, + {"label":"Insert", "x":15.25, "y":1.5}, + {"label":"Home", "x":16.25, "y":1.5}, + {"label":"PgUp", "x":17.25, "y":1.5}, + {"label":"Tab", "x":0, "y":2.5, "w":1.5}, + {"label":"Q", "x":1.5, "y":2.5}, + {"label":"W", "x":2.5, "y":2.5}, + {"label":"E", "x":3.5, "y":2.5}, + {"label":"R", "x":4.5, "y":2.5}, + {"label":"T", "x":5.5, "y":2.5}, + {"label":"Y", "x":6.5, "y":2.5}, + {"label":"U", "x":7.5, "y":2.5}, + {"label":"I", "x":8.5, "y":2.5}, + {"label":"O", "x":9.5, "y":2.5}, + {"label":"P", "x":10.5, "y":2.5}, + {"label":"{", "x":11.5, "y":2.5}, + {"label":"}", "x":12.5, "y":2.5}, + {"label":"Delete", "x":15.25, "y":2.5}, + {"label":"End", "x":16.25, "y":2.5}, + {"label":"PgDn", "x":17.25, "y":2.5}, + {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, + {"label":"A", "x":1.75, "y":3.5}, + {"label":"S", "x":2.75, "y":3.5}, + {"label":"D", "x":3.75, "y":3.5}, + {"label":"F", "x":4.75, "y":3.5}, + {"label":"G", "x":5.75, "y":3.5}, + {"label":"H", "x":6.75, "y":3.5}, + {"label":"J", "x":7.75, "y":3.5}, + {"label":"K", "x":8.75, "y":3.5}, + {"label":"L", "x":9.75, "y":3.5}, + {"label":":", "x":10.75, "y":3.5}, + {"label":"@", "x":11.75, "y":3.5}, + {"label":"~", "x":12.75, "y":3.5}, + {"label":"Enter", "x":13.75, "y":2.5, "w":1.25, "h":2}, + {"label":"Shift", "x":0, "y":4.5, "w":1.25}, + {"label":"|", "x":1.25, "y":4.5}, + {"label":"Z", "x":2.25, "y":4.5}, + {"label":"X", "x":3.25, "y":4.5}, + {"label":"C", "x":4.25, "y":4.5}, + {"label":"V", "x":5.25, "y":4.5}, + {"label":"B", "x":6.25, "y":4.5}, + {"label":"N", "x":7.25, "y":4.5}, + {"label":"M", "x":8.25, "y":4.5}, + {"label":"<", "x":9.25, "y":4.5}, + {"label":">", "x":10.25, "y":4.5}, + {"label":"?", "x":11.25, "y":4.5}, + {"label":"Shift", "x":12.25, "y":4.5, "w":2.75}, + {"label":"Up", "x":16.25, "y":4.5}, + {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, + {"label":"Alt", "x":1.25, "y":5.5, "w":1.25}, + {"label":"Win", "x":2.5, "y":5.5, "w":1.25}, + {"label":"Space", "x":3.75, "y":5.5, "w":6.25}, + {"label":"Win", "x":10, "y":5.5, "w":1.25}, + {"label":"AltGr", "x":11.25, "y":5.5, "w":1.25}, + {"label":"Ctrl", "x":12.5, "y":5.5, "w":1.25}, + {"label":"Fn", "x":13.75, "y":5.5, "w":1.25}, + {"label":"Left", "x":15.25, "y":5.5}, + {"label":"Down", "x":16.25, "y":5.5}, + {"label":"Right", "x":17.25, "y":5.5} + ] + } + } +} diff --git a/keyboards/capsunlocked/cu80/v2_iso_rgb/keymaps/default/keymap.c b/keyboards/capsunlocked/cu80/v2_iso_rgb/keymaps/default/keymap.c new file mode 100644 index 0000000000..1b1caa8776 --- /dev/null +++ b/keyboards/capsunlocked/cu80/v2_iso_rgb/keymaps/default/keymap.c @@ -0,0 +1,38 @@ +/* +Copyright 2021 CapsUnlocked + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_tkl_iso( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_tkl_iso( + RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_M_P, RGB_M_B, RGB_M_R, + + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI, RGB_SAI, RGB_VAI, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, RGB_RMOD,RGB_TOG, RGB_MOD + ), +}; diff --git a/keyboards/capsunlocked/cu80/v2_iso_rgb/keymaps/default/readme.md b/keyboards/capsunlocked/cu80/v2_iso_rgb/keymaps/default/readme.md new file mode 100644 index 0000000000..bf55002afe --- /dev/null +++ b/keyboards/capsunlocked/cu80/v2_iso_rgb/keymaps/default/readme.md @@ -0,0 +1,3 @@ +# The default ISO keymap for the CU80 + +This CU80 is keymap is for the fixed ISO variant with fully populated bottom row. diff --git a/keyboards/capsunlocked/cu80/v2_iso_rgb/keymaps/via/keymap.c b/keyboards/capsunlocked/cu80/v2_iso_rgb/keymaps/via/keymap.c new file mode 100644 index 0000000000..f63ab5a53c --- /dev/null +++ b/keyboards/capsunlocked/cu80/v2_iso_rgb/keymaps/via/keymap.c @@ -0,0 +1,55 @@ +/* Copyright 2021 CapsUnlocked + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_tkl_iso( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_tkl_iso( + RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_M_P, RGB_M_B, RGB_M_R, + + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI, RGB_SAI, RGB_VAI, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, RGB_RMOD,RGB_TOG, RGB_MOD + ), + [2] = LAYOUT_tkl_iso( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT_tkl_iso( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/capsunlocked/cu80/v2_iso_rgb/keymaps/via/rules.mk b/keyboards/capsunlocked/cu80/v2_iso_rgb/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/capsunlocked/cu80/v2_iso_rgb/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/capsunlocked/cu80/v2_iso_rgb/readme.md b/keyboards/capsunlocked/cu80/v2_iso_rgb/readme.md new file mode 100644 index 0000000000..004612942f --- /dev/null +++ b/keyboards/capsunlocked/cu80/v2_iso_rgb/readme.md @@ -0,0 +1,18 @@ +# CU80 v2 ISO RGB + +The CU80 v2 ISO is the PCB for round 2 of the CU80 TKL keyboard, with fixed layout ISO and VIA support. + +This firmware adds RGB matrix support. + +To place the keyboard into bootloader mode in order to flash it, hold the ESC key while plugging the board in, or use the reset button on the back of the PCB. + +* Keyboard maintainer: [rys](https://github.com/rys) +* Hardware supported: [CU80 v2 ISO](https://imgur.com/yMZMt6j) +* Hardware availability: [CapsUnlocked](https://caps-unlocked.com/cu80-round-2/) + +Make and flash example for this keyboard (after setting up your build environment): + + make capsunlocked/cu80/v2_iso_rgb:default:flash + make capsunlocked/cu80/v2_iso_rgb:via:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/capsunlocked/cu80/v2_iso_rgb/rules.mk b/keyboards/capsunlocked/cu80/v2_iso_rgb/rules.mk new file mode 100644 index 0000000000..454c08c617 --- /dev/null +++ b/keyboards/capsunlocked/cu80/v2_iso_rgb/rules.mk @@ -0,0 +1,28 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +RGB_MATRIX_ENABLE = yes # Enable RGB matrix +RGB_MATRIX_DRIVER = WS2812 # Set Driver to WS2812 +NO_USB_STARTUP_CHECK = yes # resolve possible sleep issue + + +LAYOUTS = tkl_iso diff --git a/keyboards/capsunlocked/cu80/v2_iso_rgb/v2_iso_rgb.c b/keyboards/capsunlocked/cu80/v2_iso_rgb/v2_iso_rgb.c new file mode 100644 index 0000000000..641fce69ef --- /dev/null +++ b/keyboards/capsunlocked/cu80/v2_iso_rgb/v2_iso_rgb.c @@ -0,0 +1,64 @@ +/* +Copyright 2021 CapsUnlocked + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "v2_iso_rgb.h" +#include "rgb_matrix_types.h" + +void matrix_init_kb(void) { + setPinOutput(E6); + matrix_init_user(); +} + +/* Set LED 62 (Caps Lock) and LED 14 (Scroll Lock) when key active */ +void rgb_matrix_indicators_kb(void) { + if (host_keyboard_led_state().caps_lock) { + rgb_matrix_set_color(62, 255, 255, 255); + } + if (host_keyboard_led_state().scroll_lock) { + rgb_matrix_set_color(14, 255, 255, 255); + } +} + +/* Leds on the CU80 go ltr > rtl > ltr > rlt > Ltr > rtl */ +led_config_t g_led_config = { + { + { 0, NO_LED, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, }, + { 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16,}, + { 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,}, + { 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50,}, + { 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, NO_LED, NO_LED, 76,}, + { 87, 86, 85, NO_LED, NO_LED, 84, NO_LED, NO_LED, NO_LED, 83, 82, 81, 80, 79, NO_LED, 78, 77} + }, + /*board layout accounting for led directions */ + { + {0,0}, {28,0}, {42,0}, {56,0}, {71,0}, {85,0}, {99,0}, {113,0}, {127,0}, {141,0}, {155,0}, {169,0}, {184,0}, {198,0}, {212,0}, {226,0}, + {226,26}, {212,26}, {198,26}, {184,26}, {169,26}, {155,26}, {141,26}, {127,26}, {113,26}, {99,26}, {85,26}, {71,26}, {56,26}, {42,26}, {28,26}, {14,26}, {0,26}, + {0,26}, {14,26}, {28,26}, {42,26}, {56,26}, {71,26}, {85,26}, {99,26}, {113,26}, {127,26}, {141,26}, {155,26}, {169,26}, {184,26}, {198,26}, {212,26}, {226,26}, + {169,38}, {155,38}, {141,38}, {127,38}, {113,38}, {99,38}, {85,38}, {71,38}, {56,38}, {42,38}, {28,38}, {14,38}, {0,38}, + {0,51}, {14,51}, {28,51}, {42,51}, {56,51}, {71,51}, {85,51}, {99,51}, {113,51}, {127,51}, {141,51}, {155,51}, {169,51}, {212,51}, + {226,64}, {212,64}, {184,64}, {169,64}, {155,64}, {141,64}, {127,64}, {71,64}, {28,64}, {14,64}, {0,64} + }, + /* marks scroll and caps as function modifiers for led effects */ + { + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 + } +}; diff --git a/keyboards/capsunlocked/cu80/v2_iso_rgb/v2_iso_rgb.h b/keyboards/capsunlocked/cu80/v2_iso_rgb/v2_iso_rgb.h new file mode 100644 index 0000000000..affdc9da9f --- /dev/null +++ b/keyboards/capsunlocked/cu80/v2_iso_rgb/v2_iso_rgb.h @@ -0,0 +1,46 @@ +/* +Copyright 2021 CapsUnlocked + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +/* This a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ + +#define LAYOUT_tkl_iso( \ + K000, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016, \ + \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, K215, K216, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K213, \ + K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K415, \ + K500, K501, K502, K505, K509, K510, K511, K512, K513, K515, K516 \ +) { \ + { K000, KC_NO, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, KC_NO, KC_NO, KC_NO, KC_NO }, \ + { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, KC_NO, KC_NO, K415, KC_NO }, \ + { K500, K501, K502, KC_NO, KC_NO, K505, KC_NO, KC_NO, KC_NO, K509, K510, K511, K512, K513, KC_NO, K515, K516 }, \ +} From 2aa38f5bd339b206b01963110d4c068bbe0f64bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armando=20Magalh=C3=A3es?= Date: Mon, 8 Mar 2021 00:33:40 +0100 Subject: [PATCH 038/613] [Keymap] add crkbd/keymaps/armand1m (#12098) --- keyboards/crkbd/keymaps/armand1m/config.h | 48 ++++++++ keyboards/crkbd/keymaps/armand1m/keymap.c | 125 +++++++++++++++++++++ keyboards/crkbd/keymaps/armand1m/readme.md | 35 ++++++ keyboards/crkbd/keymaps/armand1m/rules.mk | 1 + 4 files changed, 209 insertions(+) create mode 100644 keyboards/crkbd/keymaps/armand1m/config.h create mode 100644 keyboards/crkbd/keymaps/armand1m/keymap.c create mode 100644 keyboards/crkbd/keymaps/armand1m/readme.md create mode 100644 keyboards/crkbd/keymaps/armand1m/rules.mk diff --git a/keyboards/crkbd/keymaps/armand1m/config.h b/keyboards/crkbd/keymaps/armand1m/config.h new file mode 100644 index 0000000000..df109a347b --- /dev/null +++ b/keyboards/crkbd/keymaps/armand1m/config.h @@ -0,0 +1,48 @@ +/* +This is the c configuration file for the keymap + +Copyright 2012 Jun Wako +Copyright 2015 Jack Humbert + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +//#define USE_MATRIX_I2C + +/* Select hand configuration */ + +#define MASTER_LEFT +// #define MASTER_RIGHT +// #define EE_HANDS + +#define USE_SERIAL_PD2 + +// #define TAPPING_FORCE_HOLD +// #define PERMISSIVE_HOLD +#define TAPPING_TERM 300 +#define IGNORE_MOD_TAP_INTERRUPT + +#ifdef RGBLIGHT_ENABLE + #undef RGBLED_NUM + #define RGBLIGHT_ANIMATIONS + #define RGBLED_NUM 27 + #define RGBLIGHT_LIMIT_VAL 120 + #define RGBLIGHT_HUE_STEP 10 + #define RGBLIGHT_SAT_STEP 17 + #define RGBLIGHT_VAL_STEP 17 +#endif + +#define OLED_FONT_H "keyboards/crkbd/lib/glcdfont.c" diff --git a/keyboards/crkbd/keymaps/armand1m/keymap.c b/keyboards/crkbd/keymaps/armand1m/keymap.c new file mode 100644 index 0000000000..da68cc2def --- /dev/null +++ b/keyboards/crkbd/keymaps/armand1m/keymap.c @@ -0,0 +1,125 @@ +/* +Copyright 2019 @foostan +Copyright 2020 Drashna Jaelre <@drashna> +Copyright 2021 Armando Magalhaes <@armand1m> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_split_3x6_3( + //,-----------------------------------------------------. ,-----------------------------------------------------. + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + LT(1, KC_ESC), LT(2, KC_A), KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_LSFT, MT(MOD_LCTL, KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, MT(MOD_RCTL, KC_SLSH), KC_RSFT, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + KC_LALT, LGUI(KC_SPACE), LGUI_T(KC_SPC), MT(MOD_RSFT, KC_ENT), LT(2, KC_BSPC), KC_RALT + //`--------------------------' '--------------------------´ + ), + + [1] = LAYOUT_split_3x6_3( + //,-----------------------------------------------------. ,-----------------------------------------------------. + _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT, XXXXXXX, _______, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + _______, _______, _______, _______, _______, _______ + //`--------------------------' '--------------------------´ + ), + + [2] = LAYOUT_split_3x6_3( + //,-----------------------------------------------------. ,-----------------------------------------------------. + _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_GRV, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, KC_TILD, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + _______, _______, _______, _______, _______, _______ + //`--------------------------' '--------------------------´ + ) +}; + +#ifdef OLED_DRIVER_ENABLE +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + if (!is_master) { + return OLED_ROTATION_180; // flips the display 180 degrees if offhand + } + return rotation; +} + +void render_bootmagic_status(bool status) { + /* Show Ctrl-Gui Swap options */ + static const char PROGMEM logo[][2][3] = { + {{0x97, 0x98, 0}, {0xb7, 0xb8, 0}}, + {{0x95, 0x96, 0}, {0xb5, 0xb6, 0}}, + }; + if (status) { + oled_write_ln_P(logo[0][0], false); + oled_write_ln_P(logo[0][1], false); + } else { + oled_write_ln_P(logo[1][0], false); + oled_write_ln_P(logo[1][1], false); + } +} + +void oled_render_amsterdam_flag(void) { + // 'Flag_of_Amsterdam', 128x32px + static const char PROGMEM amsterdam_flag[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xf8, 0xf0, 0xe0, 0xc0, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xf8, 0xf0, 0xe0, 0xc0, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf0, 0xf8, 0xf8, 0xf0, 0xe0, 0xc0, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xf8, 0xf0, 0xe0, 0xc0, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xf8, 0xf0, 0xe0, 0xc0, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xf8, 0xf8, 0xf0, 0xe0, + 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x0f, 0x1f, 0x3f, 0x7f, 0xff, 0xff, 0xff, 0xff, + 0xfe, 0xfc, 0xfc, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x3f, 0x1f, 0x0f, 0x07, 0x03, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f, 0x7f, 0xff, 0xff, 0xff, + 0xff, 0xfe, 0xfc, 0xfc, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x3f, 0x1f, 0x0f, 0x07, 0x03, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f, 0x7f, 0xff, 0xff, + 0xff, 0xff, 0xfe, 0xfc, 0xfc, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x3f, 0x1f, 0x0f, 0x07, 0x03, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x7f, + 0x3f, 0x3f, 0x3f, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfc, 0xf8, 0xf0, 0xe0, 0xc0, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xe0, 0xf0, 0xf8, 0xfc, 0xfe, 0xff, 0xff, 0xff, + 0xff, 0x7f, 0x3f, 0x3f, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfc, 0xf8, 0xf0, 0xe0, 0xc0, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc, 0xfe, 0xff, 0xff, + 0xff, 0xff, 0x7f, 0x3f, 0x1f, 0x3f, 0x7f, 0xff, 0xff, 0xff, 0xfe, 0xfc, 0xfc, 0xf8, 0xf0, 0xe0, + 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0f, 0x0f, 0x1f, 0x0f, 0x07, 0x03, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x1f, 0x0f, 0x07, 0x03, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x0f, 0x07, 0x03, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x1f, 0x0f, 0x07, 0x03, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x1f, 0x0f, 0x07, 0x03, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x0f, 0x07, 0x03, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + oled_write_raw_P(amsterdam_flag, sizeof(amsterdam_flag)); +} + +void oled_task_user(void) { + oled_render_amsterdam_flag(); +} +#endif // OLED_DRIVER_ENABLE diff --git a/keyboards/crkbd/keymaps/armand1m/readme.md b/keyboards/crkbd/keymaps/armand1m/readme.md new file mode 100644 index 0000000000..11479263bf --- /dev/null +++ b/keyboards/crkbd/keymaps/armand1m/readme.md @@ -0,0 +1,35 @@ +# armand1m crkbd layout + +This is the personal layout for [@armand1m](https://github.com/armand1m) + +This layout is heavily inspired in my personal Moonlander layout, optimized for my own personal usage. + +As of the date of this writing, my environment runs OS X Big Sur with yabai and skhd to provide an window tiling management experience similar to what i3wm offers to Linux, which means that I often use the `alt` keys. + +I am a huge fan of ModTaps, so this layout will contain some of those to allow for a better experience in such a small keyboard like the crkbd. + +## Usage + +In case you have `qmk` installed: + +```sh +qmk compile -kb crkbd -km armand1m +``` + +The compiled .hex file should be available in `qmk_firmware/.build` + +You can also trigger a build and flash automatically by running the following command: + +```sh +qmk flash -kb crkbd -km armand1m +``` + +If you built your crkbd with an Elite-C microcontroller, you probably want to use a DFU bootloader: + +```sh +qmk flash -kb crkbd -km armand1m -bl dfu +``` + +## Credits + + - Armando Magalhaes [(github)](https://go.d1m.dev/github) diff --git a/keyboards/crkbd/keymaps/armand1m/rules.mk b/keyboards/crkbd/keymaps/armand1m/rules.mk new file mode 100644 index 0000000000..9444b88d51 --- /dev/null +++ b/keyboards/crkbd/keymaps/armand1m/rules.mk @@ -0,0 +1 @@ +OLED_DRIVER_ENABLE = yes From 6d8d20774ff57ea19743d2c9afc209a68c51e361 Mon Sep 17 00:00:00 2001 From: Zach White Date: Sun, 7 Mar 2021 20:29:23 -0800 Subject: [PATCH 039/613] improve detection of community layout support --- lib/python/qmk/info.py | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/lib/python/qmk/info.py b/lib/python/qmk/info.py index 051459698f..96e4399c36 100644 --- a/lib/python/qmk/info.py +++ b/lib/python/qmk/info.py @@ -74,19 +74,10 @@ def info_json(keyboard): _log_error(info_data, 'No LAYOUTs defined! Need at least one layout defined in the keyboard.h or info.json.') # Make sure we supply layout macros for the community layouts we claim to support - # FIXME(skullydazed): This should be populated into info.json and read from there instead - if 'LAYOUTS' in rules and info_data.get('layouts'): - # Match these up against the supplied layouts - supported_layouts = rules['LAYOUTS'].strip().split() - for layout_name in sorted(info_data['layouts']): - layout_name = layout_name[7:] - - if layout_name in supported_layouts: - supported_layouts.remove(layout_name) - - if supported_layouts: - for supported_layout in supported_layouts: - _log_error(info_data, 'Claims to support community layout %s but no LAYOUT_%s() macro found' % (supported_layout, supported_layout)) + for layout in info_data.get('community_layouts', []): + layout_name = 'LAYOUT_' + layout + if layout_name not in info_data.get('layouts', {}) and layout_name not in info_data.get('layout_aliases', {}): + _log_error(info_data, 'Claims to support community layout %s but no %s() macro found' % (layout, layout_name)) return info_data From 4f5e0dd3254de14ea86c7a4644e97a3a1077b40e Mon Sep 17 00:00:00 2001 From: Danny Date: Tue, 9 Mar 2021 13:36:38 -0500 Subject: [PATCH 040/613] Add BFO-9000 info.json (#12179) --- keyboards/keebio/bfo9000/info.json | 127 +++++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 keyboards/keebio/bfo9000/info.json diff --git a/keyboards/keebio/bfo9000/info.json b/keyboards/keebio/bfo9000/info.json new file mode 100644 index 0000000000..1fda64e4cc --- /dev/null +++ b/keyboards/keebio/bfo9000/info.json @@ -0,0 +1,127 @@ +{ + "keyboard_name": "Keebio BFO-9000", + "url": "https://keeb.io", + "maintainer": "Keebio", + "width": 19, + "height": 6, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15, "y":0}, + {"x":16, "y":0}, + {"x":17, "y":0}, + {"x":18, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + {"x":4, "y":1}, + {"x":5, "y":1}, + {"x":6, "y":1}, + {"x":7, "y":1}, + {"x":8, "y":1}, + {"x":10, "y":1}, + {"x":11, "y":1}, + {"x":12, "y":1}, + {"x":13, "y":1}, + {"x":14, "y":1}, + {"x":15, "y":1}, + {"x":16, "y":1}, + {"x":17, "y":1}, + {"x":18, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + {"x":3, "y":2}, + {"x":4, "y":2}, + {"x":5, "y":2}, + {"x":6, "y":2}, + {"x":7, "y":2}, + {"x":8, "y":2}, + {"x":10, "y":2}, + {"x":11, "y":2}, + {"x":12, "y":2}, + {"x":13, "y":2}, + {"x":14, "y":2}, + {"x":15, "y":2}, + {"x":16, "y":2}, + {"x":17, "y":2}, + {"x":18, "y":2}, + + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":3}, + {"x":4, "y":3}, + {"x":5, "y":3}, + {"x":6, "y":3}, + {"x":7, "y":3}, + {"x":8, "y":3}, + {"x":10, "y":3}, + {"x":11, "y":3}, + {"x":12, "y":3}, + {"x":13, "y":3}, + {"x":14, "y":3}, + {"x":15, "y":3}, + {"x":16, "y":3}, + {"x":17, "y":3}, + {"x":18, "y":3}, + + {"x":0, "y":4}, + {"x":1, "y":4}, + {"x":2, "y":4}, + {"x":3, "y":4}, + {"x":4, "y":4}, + {"x":5, "y":4}, + {"x":6, "y":4}, + {"x":7, "y":4}, + {"x":8, "y":4}, + {"x":10, "y":4}, + {"x":11, "y":4}, + {"x":12, "y":4}, + {"x":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4}, + {"x":16, "y":4}, + {"x":17, "y":4}, + {"x":18, "y":4}, + + {"x":0, "y":5}, + {"x":1, "y":5}, + {"x":2, "y":5}, + {"x":3, "y":5}, + {"x":4, "y":5}, + {"x":5, "y":5}, + {"x":6, "y":5}, + {"x":7, "y":5}, + {"x":8, "y":5}, + {"x":10, "y":5}, + {"x":11, "y":5}, + {"x":12, "y":5}, + {"x":13, "y":5}, + {"x":14, "y":5}, + {"x":15, "y":5}, + {"x":16, "y":5}, + {"x":17, "y":5}, + {"x":18, "y":5} + ] + } + } + } + \ No newline at end of file From aed8bace97646af7e90e3a46f48aa3a83784df17 Mon Sep 17 00:00:00 2001 From: Ryan Date: Wed, 10 Mar 2021 08:36:39 +1100 Subject: [PATCH 041/613] Fix typo in `get_git_version()` (#12182) --- lib/python/qmk/commands.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/python/qmk/commands.py b/lib/python/qmk/commands.py index 3c6f0d001d..6a57c1ff5d 100644 --- a/lib/python/qmk/commands.py +++ b/lib/python/qmk/commands.py @@ -77,7 +77,7 @@ def get_git_version(repo_dir='.', check_dir='.'): return git_describe.stdout.strip() else: - cli.args.warn(f'"{" ".join(git_describe_cmd)}" returned error code {git_describe.returncode}') + cli.log.warn(f'"{" ".join(git_describe_cmd)}" returned error code {git_describe.returncode}') print(git_describe.stderr) return strftime(time_fmt) From 9089244db77d724f23ddfc01be370f9c029c8e6c Mon Sep 17 00:00:00 2001 From: somepin <79652090+somepin@users.noreply.github.com> Date: Wed, 10 Mar 2021 00:17:35 -0500 Subject: [PATCH 042/613] Add VIA support to doodboard/duckboard_r2 (#12028) * Update R1 keymap and config * Add duckboard R2 * Add VIA support for duckboard R2 * Set bootmagic lite row and column * Update config.h * Update keyboards/doodboard/duckboard/config.h Co-authored-by: Drashna Jaelre * Update config.h Co-authored-by: Drashna Jaelre --- keyboards/doodboard/duckboard/config.h | 4 +- keyboards/doodboard/duckboard/duckboard.c | 2 +- keyboards/doodboard/duckboard/duckboard.h | 3 +- keyboards/doodboard/duckboard/info.json | 40 +++--- .../duckboard/keymaps/default/keymap.c | 40 +++--- keyboards/doodboard/duckboard/readme.md | 10 +- keyboards/doodboard/duckboard_r2/config.h | 60 ++++++++ .../doodboard/duckboard_r2/duckboard_r2.c | 17 +++ .../doodboard/duckboard_r2/duckboard_r2.h | 33 +++++ keyboards/doodboard/duckboard_r2/info.json | 39 ++++++ .../duckboard_r2/keymaps/default/keymap.c | 120 ++++++++++++++++ .../duckboard_r2/keymaps/via/keymap.c | 130 ++++++++++++++++++ .../duckboard_r2/keymaps/via/rules.mk | 2 + keyboards/doodboard/duckboard_r2/readme.md | 17 +++ keyboards/doodboard/duckboard_r2/rules.mk | 25 ++++ 15 files changed, 493 insertions(+), 49 deletions(-) create mode 100644 keyboards/doodboard/duckboard_r2/config.h create mode 100644 keyboards/doodboard/duckboard_r2/duckboard_r2.c create mode 100644 keyboards/doodboard/duckboard_r2/duckboard_r2.h create mode 100644 keyboards/doodboard/duckboard_r2/info.json create mode 100644 keyboards/doodboard/duckboard_r2/keymaps/default/keymap.c create mode 100644 keyboards/doodboard/duckboard_r2/keymaps/via/keymap.c create mode 100644 keyboards/doodboard/duckboard_r2/keymaps/via/rules.mk create mode 100644 keyboards/doodboard/duckboard_r2/readme.md create mode 100644 keyboards/doodboard/duckboard_r2/rules.mk diff --git a/keyboards/doodboard/duckboard/config.h b/keyboards/doodboard/duckboard/config.h index ea8a8ae5dd..80c9411165 100644 --- a/keyboards/doodboard/duckboard/config.h +++ b/keyboards/doodboard/duckboard/config.h @@ -1,4 +1,4 @@ -/* Copyright 2020 doodboard +/* Copyright 2020-2021 doodboard * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -19,7 +19,7 @@ #include "config_common.h" /* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED +#define VENDOR_ID 0x4442 #define PRODUCT_ID 0xFF44 #define DEVICE_VER 0x0001 #define MANUFACTURER doodboard diff --git a/keyboards/doodboard/duckboard/duckboard.c b/keyboards/doodboard/duckboard/duckboard.c index af0cb24beb..853e105ceb 100644 --- a/keyboards/doodboard/duckboard/duckboard.c +++ b/keyboards/doodboard/duckboard/duckboard.c @@ -1,4 +1,4 @@ -/* Copyright 2020 doodboard +/* Copyright 2020-2021 doodboard * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/keyboards/doodboard/duckboard/duckboard.h b/keyboards/doodboard/duckboard/duckboard.h index 0e753d445e..c98c9a703a 100644 --- a/keyboards/doodboard/duckboard/duckboard.h +++ b/keyboards/doodboard/duckboard/duckboard.h @@ -1,4 +1,4 @@ -/* Copyright 2020 doodboard +/* Copyright 2020-2021 doodboard * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -14,7 +14,6 @@ * along with this program. If not, see . */ - #pragma once #include "quantum.h" diff --git a/keyboards/doodboard/duckboard/info.json b/keyboards/doodboard/duckboard/info.json index d5193e61eb..074f5c88ad 100644 --- a/keyboards/doodboard/duckboard/info.json +++ b/keyboards/doodboard/duckboard/info.json @@ -1,35 +1,35 @@ { "keyboard_name": "duckboard", - "url": "", + "url": "https://doodboard.xyz/", "maintainer": "doodboard", "width": 5, "height": 5, "layouts": { "LAYOUT": { "layout": [ - {"x": 1, "y": 0}, - {"x": 2, "y": 0}, - {"x": 3, "y": 0}, - {"x": 4, "y": 0}, + { "x": 1, "y": 0 }, + { "x": 2, "y": 0 }, + { "x": 3, "y": 0 }, + { "x": 4, "y": 0 }, - {"x": 1, "y": 1}, - {"x": 2, "y": 1}, - {"x": 3, "y": 1}, + { "x": 1, "y": 1 }, + { "x": 2, "y": 1 }, + { "x": 3, "y": 1 }, - {"x": 1, "y": 2}, - {"x": 2, "y": 2}, - {"x": 3, "y": 2}, - {"x": 4, "y": 1, "h": 2}, + { "x": 1, "y": 2 }, + { "x": 2, "y": 2 }, + { "x": 3, "y": 2 }, + { "x": 4, "y": 1, "h": 2 }, - {"x": 1, "y": 3}, - {"x": 2, "y": 3}, - {"x": 3, "y": 3}, + { "x": 1, "y": 3 }, + { "x": 2, "y": 3 }, + { "x": 3, "y": 3 }, - {"x": 0, "y": 4}, - {"x": 1, "y": 4}, - {"x": 2, "y": 4}, - {"x": 3, "y": 4}, - {"x": 4, "y": 3, "h": 2} + { "x": 0, "y": 4 }, + { "x": 1, "y": 4 }, + { "x": 2, "y": 4 }, + { "x": 3, "y": 4 }, + { "x": 4, "y": 3, "h": 2 } ] } } diff --git a/keyboards/doodboard/duckboard/keymaps/default/keymap.c b/keyboards/doodboard/duckboard/keymaps/default/keymap.c index 6684e98633..0dd9c40678 100644 --- a/keyboards/doodboard/duckboard/keymaps/default/keymap.c +++ b/keyboards/doodboard/duckboard/keymaps/default/keymap.c @@ -1,4 +1,4 @@ -/* Copyright 2020 doodboard +/* Copyright 2020-2021 doodboard * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -18,22 +18,24 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT( TG(1), KC_PSLS, KC_PAST, KC_PMNS, - KC_P7, KC_P8, KC_P9, - KC_P4, KC_P5, KC_P6, KC_PPLS, - KC_P1, KC_P2, KC_P3, - KC_BSPC, KC_MUTE, KC_P0, KC_PDOT, KC_PENT), - [1] = LAYOUT( - TG(1), KC_TRNS, KC_TRNS, KC_TRNS, - KC_HOME, KC_UP, KC_PGUP, - KC_LEFT, KC_TRNS, KC_RGHT, KC_TRNS, - KC_END, KC_DOWN, KC_PGDN, - TG(2), KC_TRNS, KC_INS, KC_DEL, KC_TRNS), - [2] = LAYOUT( - KC_TRNS, RGB_TOG, RGB_MOD, KC_TRNS, - RGB_HUI, RGB_SAI, RGB_VAI, - RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, - TG(2), RESET, KC_TRNS, KC_TRNS, KC_TRNS), + KC_7, KC_8, KC_9, + KC_4, KC_5, KC_6, KC_PPLS, + KC_1, KC_2, KC_3, + KC_BSPC, KC_0, KC_0, KC_DOT, KC_ENT), + + [1] = LAYOUT( + TG(1), KC_TRNS, KC_TRNS, KC_TRNS, + KC_HOME, KC_UP, KC_PGUP, + KC_LEFT, KC_TRNS, KC_RGHT, KC_TRNS, + KC_END, KC_DOWN, KC_PGDN, + TG(2), KC_TRNS, KC_INS, KC_DEL, KC_TRNS), + + [2] = LAYOUT( + KC_TRNS, RGB_TOG, RGB_MOD, KC_TRNS, + RGB_HUI, RGB_SAI, RGB_VAI, + RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + TG(2), RESET, KC_TRNS, KC_TRNS, KC_TRNS), }; void encoder_update_user(uint8_t index, bool clockwise) { @@ -111,8 +113,8 @@ void oled_task_user(void) { void keyboard_post_init_user(void) { //Customise these values to debug - //debug_enable=true; - //debug_matrix=true; + debug_enable=true; + debug_matrix=true; //debug_keyboard=true; //debug_mouse=true; } diff --git a/keyboards/doodboard/duckboard/readme.md b/keyboards/doodboard/duckboard/readme.md index d2b799ab61..866a7d4b9e 100644 --- a/keyboards/doodboard/duckboard/readme.md +++ b/keyboards/doodboard/duckboard/readme.md @@ -1,10 +1,10 @@ -# duckboard +# duckboard R1 -An 18-key numpad with rotary encoder and OLED support. +An 18-key numpad with rotary encoder and OLED support. -* Keyboard Maintainer: [doodboard](https://github.com/doodboard) -* Hardware Supported: duckboard PCB -* Hardware Availability: Private Group Buy +- Keyboard Maintainer: [doodboard](https://doodboard.xyz/) +- Hardware Supported: duckboard PCB +- Hardware Availability: Private Group Buy Make example for this keyboard (after setting up your build environment): diff --git a/keyboards/doodboard/duckboard_r2/config.h b/keyboards/doodboard/duckboard_r2/config.h new file mode 100644 index 0000000000..10ed3c4cab --- /dev/null +++ b/keyboards/doodboard/duckboard_r2/config.h @@ -0,0 +1,60 @@ +/* Copyright 2020-2021 doodboard + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4442 +#define PRODUCT_ID 0x6462 +#define DEVICE_VER 0x0001 +#define MANUFACTURER doodboard +#define PRODUCT duckboard + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 5 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { C6, D7, E6, B4, B5 } +#define MATRIX_COL_PINS { F7, B1, B3, B2, B6 } +#define UNUSED_PINS + +#define ENCODERS_PAD_A { F6 } +#define ENCODERS_PAD_B { F5 } +#define ENCODER_RESOLUTION 2 + +/* media key slowdown for windows */ +#define TAP_CODE_DELAY 20 + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* number of backlight levels */ + +/* ws2812 RGB LED */ +#define RGB_DI_PIN D3 + +#ifdef RGBLIGHT_ENABLE +#define RGBLED_NUM 8 // Number of LEDs +#endif + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 1 diff --git a/keyboards/doodboard/duckboard_r2/duckboard_r2.c b/keyboards/doodboard/duckboard_r2/duckboard_r2.c new file mode 100644 index 0000000000..095544b9e3 --- /dev/null +++ b/keyboards/doodboard/duckboard_r2/duckboard_r2.c @@ -0,0 +1,17 @@ +/* Copyright 2020-2021 doodboard + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "duckboard_r2.h" diff --git a/keyboards/doodboard/duckboard_r2/duckboard_r2.h b/keyboards/doodboard/duckboard_r2/duckboard_r2.h new file mode 100644 index 0000000000..1f3c462da8 --- /dev/null +++ b/keyboards/doodboard/duckboard_r2/duckboard_r2.h @@ -0,0 +1,33 @@ +/* Copyright 2020-2021 doodboard + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT( \ + K01, K02, K03, K04, \ + K11, K12, K13, K14, \ + K21, K22, K23, K24, \ + K30, K31, K32, K33, K34, \ + K40, K41, K42, K43, K44 \ +) { \ + { KC_NO, K01, K02, K03, K04 }, \ + { KC_NO, K11, K12, K13, K14 }, \ + { KC_NO, K21, K22, K23, K24 }, \ + { K30, K31, K32, K33, K34 }, \ + { K40, K41, K42, K43, K44 } \ +} diff --git a/keyboards/doodboard/duckboard_r2/info.json b/keyboards/doodboard/duckboard_r2/info.json new file mode 100644 index 0000000000..69a1b1cd1a --- /dev/null +++ b/keyboards/doodboard/duckboard_r2/info.json @@ -0,0 +1,39 @@ +{ + "keyboard_name": "duckboard", + "url": "https://doodboard.xyz/", + "maintainer": "doodboard", + "width": 5, + "height": 5, + "layouts": { + "LAYOUT": { + "layout": [ + { "x": 1, "y": 0 }, + { "x": 2, "y": 0 }, + { "x": 3, "y": 0 }, + { "x": 4, "y": 0 }, + + { "x": 1, "y": 1 }, + { "x": 2, "y": 1 }, + { "x": 3, "y": 1 }, + { "x": 4, "y": 1 }, + + { "x": 1, "y": 2 }, + { "x": 2, "y": 2 }, + { "x": 3, "y": 2 }, + { "x": 4, "y": 2 }, + + { "x": 0, "y": 3 }, + { "x": 1, "y": 3 }, + { "x": 2, "y": 3 }, + { "x": 3, "y": 3 }, + { "x": 4, "y": 3 }, + + { "x": 0, "y": 4 }, + { "x": 1, "y": 4 }, + { "x": 2, "y": 4 }, + { "x": 3, "y": 4 }, + { "x": 4, "y": 4 } + ] + } + } +} diff --git a/keyboards/doodboard/duckboard_r2/keymaps/default/keymap.c b/keyboards/doodboard/duckboard_r2/keymaps/default/keymap.c new file mode 100644 index 0000000000..e782acba01 --- /dev/null +++ b/keyboards/doodboard/duckboard_r2/keymaps/default/keymap.c @@ -0,0 +1,120 @@ +/* Copyright 2020-2021 doodboard + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + TG(1), KC_PSLS, KC_PAST, KC_PMNS, + KC_7, KC_8, KC_9, KC_PPLS, + KC_4, KC_5, KC_6, KC_PPLS, + KC_MUTE, KC_1, KC_2, KC_3, KC_ENT, + KC_BSPC, KC_0, KC_0, KC_DOT, KC_ENT), + + [1] = LAYOUT( + TG(1), KC_TRNS, KC_TRNS, KC_TRNS, + KC_HOME, KC_UP, KC_PGUP, KC_TRNS, + KC_LEFT, KC_TRNS, KC_RGHT, KC_TRNS, + KC_TRNS, KC_END, KC_DOWN, KC_PGDN, KC_TRNS, + TG(2), KC_TRNS, KC_INS, KC_DEL, KC_TRNS), + + [2] = LAYOUT( + KC_TRNS, RGB_TOG, RGB_MOD, KC_TRNS, + RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, + RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS, + RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + TG(2), RESET, KC_TRNS, KC_TRNS, KC_TRNS), +}; + +void encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { /* First encoder */ + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } +} +} + + +#ifdef OLED_DRIVER_ENABLE +oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_270; } + + +// WPM-responsive animation stuff here +#define IDLE_FRAMES 2 +#define IDLE_SPEED 40 // below this wpm value your animation will idle + +#define ANIM_FRAME_DURATION 200 // how long each frame lasts in ms +// #define SLEEP_TIMER 60000 // should sleep after this period of 0 wpm, needs fixing +#define ANIM_SIZE 636 // number of bytes in array, minimize for adequate firmware size, max is 1024 + +uint32_t anim_timer = 0; +uint32_t anim_sleep = 0; +uint8_t current_idle_frame = 0; + +// Credit to u/Pop-X- for the initial code. You can find his commit here https://github.com/qmk/qmk_firmware/pull/9264/files#diff-303f6e3a7a5ee54be0a9a13630842956R196-R333. +static void render_anim(void) { + static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = { + { + 0, 0,192,192,192,192,192,192,192,248,248, 30, 30,254,254,248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3,255,255,255,255,255,255,255,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127,127,255,255,255,255,255,159,159,135,135,129,129,129, 97, 97, 25, 25, 7, 7, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 97, 97,127, 1, 1, 97, 97,127, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { + 0, 0,128,128,128,128,128,128,128,240,240, 60, 60,252,252,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 7, 7, 7, 7, 7,255,255,254,254,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255, 63, 63, 15, 15, 3, 3, 3,195,195, 51, 51, 15, 15, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 99, 99,127, 3, 3, 99, 99,127, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0 + } + }; + + //assumes 1 frame prep stage + void animation_phase(void) { + current_idle_frame = (current_idle_frame + 1) % IDLE_FRAMES; + oled_write_raw_P(idle[abs((IDLE_FRAMES-1)-current_idle_frame)], ANIM_SIZE); + } + + if(timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { + anim_timer = timer_read32(); + animation_phase(); + } + } + +void oled_task_user(void) { + render_anim(); + oled_set_cursor(0,6); + oled_write_P(PSTR("DUCK\nBOARD\n"), false); + oled_write_P(PSTR("-----\n"), false); + // Host Keyboard Layer Status + oled_write_P(PSTR("MODE\n"), false); + oled_write_P(PSTR("\n"), false); + + switch (get_highest_layer(layer_state)) { + case 0: + oled_write_P(PSTR("BASE\n"), false); + break; + case 1: + oled_write_P(PSTR("FUNC\n"), false); + break; + case 2: + oled_write_P(PSTR("RGB\n"), false); + break; + } +} +#endif + +void keyboard_post_init_user(void) { + //Customise these values to debug + debug_enable=true; + debug_matrix=true; + //debug_keyboard=true; + //debug_mouse=true; +} diff --git a/keyboards/doodboard/duckboard_r2/keymaps/via/keymap.c b/keyboards/doodboard/duckboard_r2/keymaps/via/keymap.c new file mode 100644 index 0000000000..00ae8fa0d9 --- /dev/null +++ b/keyboards/doodboard/duckboard_r2/keymaps/via/keymap.c @@ -0,0 +1,130 @@ +/* Copyright 2020-2021 doodboard + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + TG(1), KC_PSLS, KC_PAST, KC_PMNS, + KC_7, KC_8, KC_9, KC_PPLS, + KC_4, KC_5, KC_6, KC_PPLS, + KC_MUTE, KC_1, KC_2, KC_3, KC_ENT, + KC_BSPC, KC_0, KC_0, KC_DOT, KC_ENT), + + [1] = LAYOUT( + TG(1), KC_TRNS, KC_TRNS, KC_TRNS, + KC_HOME, KC_UP, KC_PGUP, KC_TRNS, + KC_LEFT, KC_TRNS, KC_RGHT, KC_TRNS, + KC_TRNS, KC_END, KC_DOWN, KC_PGDN, KC_TRNS, + TG(2), KC_TRNS, KC_INS, KC_DEL, KC_TRNS), + + [2] = LAYOUT( + KC_TRNS, RGB_TOG, RGB_MOD, KC_TRNS, + RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, + RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS, + RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + TG(2), RESET, KC_TRNS, KC_TRNS, KC_TRNS), + + [3] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +}; + +void encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { /* First encoder */ + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } +} +} + + +#ifdef OLED_DRIVER_ENABLE +oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_270; } + + +// WPM-responsive animation stuff here +#define IDLE_FRAMES 2 +#define IDLE_SPEED 40 // below this wpm value your animation will idle + +#define ANIM_FRAME_DURATION 200 // how long each frame lasts in ms +// #define SLEEP_TIMER 60000 // should sleep after this period of 0 wpm, needs fixing +#define ANIM_SIZE 636 // number of bytes in array, minimize for adequate firmware size, max is 1024 + +uint32_t anim_timer = 0; +uint32_t anim_sleep = 0; +uint8_t current_idle_frame = 0; + +// Credit to u/Pop-X- for the initial code. You can find his commit here https://github.com/qmk/qmk_firmware/pull/9264/files#diff-303f6e3a7a5ee54be0a9a13630842956R196-R333. +static void render_anim(void) { + static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = { + { + 0, 0,192,192,192,192,192,192,192,248,248, 30, 30,254,254,248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3,255,255,255,255,255,255,255,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127,127,255,255,255,255,255,159,159,135,135,129,129,129, 97, 97, 25, 25, 7, 7, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 97, 97,127, 1, 1, 97, 97,127, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { + 0, 0,128,128,128,128,128,128,128,240,240, 60, 60,252,252,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 7, 7, 7, 7, 7,255,255,254,254,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255, 63, 63, 15, 15, 3, 3, 3,195,195, 51, 51, 15, 15, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 99, 99,127, 3, 3, 99, 99,127, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0 + } + }; + + //assumes 1 frame prep stage + void animation_phase(void) { + current_idle_frame = (current_idle_frame + 1) % IDLE_FRAMES; + oled_write_raw_P(idle[abs((IDLE_FRAMES-1)-current_idle_frame)], ANIM_SIZE); + } + + if(timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { + anim_timer = timer_read32(); + animation_phase(); + } + } + +void oled_task_user(void) { + render_anim(); + oled_set_cursor(0,6); + oled_write_P(PSTR("DUCK\nBOARD\n"), false); + oled_write_P(PSTR("-----\n"), false); + // Host Keyboard Layer Status + oled_write_P(PSTR("MODE\n"), false); + oled_write_P(PSTR("\n"), false); + + switch (get_highest_layer(layer_state)) { + case 0: + oled_write_P(PSTR("BASE\n"), false); + break; + case 1: + oled_write_P(PSTR("FUNC\n"), false); + break; + case 2: + oled_write_P(PSTR("RGB\n"), false); + break; + case 3: + oled_write_P(PSTR("FN2\n"), false); + break; + } +} +#endif + +void keyboard_post_init_user(void) { + //Customise these values to debug + debug_enable=true; + debug_matrix=true; + //debug_keyboard=true; + //debug_mouse=true; +} diff --git a/keyboards/doodboard/duckboard_r2/keymaps/via/rules.mk b/keyboards/doodboard/duckboard_r2/keymaps/via/rules.mk new file mode 100644 index 0000000000..36b7ba9cbc --- /dev/null +++ b/keyboards/doodboard/duckboard_r2/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/doodboard/duckboard_r2/readme.md b/keyboards/doodboard/duckboard_r2/readme.md new file mode 100644 index 0000000000..8f9c77b6eb --- /dev/null +++ b/keyboards/doodboard/duckboard_r2/readme.md @@ -0,0 +1,17 @@ +# duckboard R2 + +A 21-key numpad with rotary encoder and OLED support. + +- Keyboard Maintainer: [doodboard](https://doodboard.xyz/) +- Hardware Supported: duckboard PCB +- Hardware Availability: Private Group Buy + +Make example for this keyboard (after setting up your build environment): + + make doodboard/duckboard_r2:default + +Flashing example for this keyboard: + + make doodboard/duckboard_r2:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/doodboard/duckboard_r2/rules.mk b/keyboards/doodboard/duckboard_r2/rules.mk new file mode 100644 index 0000000000..09a60d8a79 --- /dev/null +++ b/keyboards/doodboard/duckboard_r2/rules.mk @@ -0,0 +1,25 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output + +ENCODER_ENABLE = yes +OLED_DRIVER_ENABLE = yes From 790f94533c936409e6be56e8b638969b42350180 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Wed, 10 Mar 2021 22:48:18 +0000 Subject: [PATCH 043/613] Refactor to use led config - Part 6 (#12115) * Convert to config * Convert to config * Convert to config * Convert to config * Convert to config * Convert to config * Convert to config * Convert to config * revert changes --- keyboards/ares/ares.c | 16 ------- keyboards/ares/config.h | 2 + keyboards/bfake/bfake.c | 16 ------- keyboards/bfake/config.h | 2 + keyboards/chili/chili.c | 26 ------------ keyboards/chili/config.h | 5 +++ keyboards/coarse/cordillera/config.h | 4 ++ keyboards/coarse/cordillera/cordillera.c | 20 --------- keyboards/crazy_keyboard_68/config.h | 3 ++ .../crazy_keyboard_68/crazy_keyboard_68.c | 19 --------- keyboards/daisy/config.h | 3 ++ keyboards/daisy/daisy.c | 18 -------- keyboards/do60/config.h | 3 ++ keyboards/do60/do60.c | 17 -------- keyboards/donutcables/budget96/budget96.c | 18 -------- keyboards/donutcables/budget96/config.h | 3 ++ keyboards/eve/meteor/config.h | 2 + keyboards/eve/meteor/meteor.c | 16 ------- keyboards/evyd13/eon75/config.h | 5 +++ keyboards/evyd13/eon75/eon75.c | 29 ------------- keyboards/evyd13/eon95/config.h | 5 +++ keyboards/evyd13/eon95/eon95.c | 29 ------------- keyboards/evyd13/gh80_1800/config.h | 5 +++ keyboards/evyd13/gh80_1800/gh80_1800.c | 28 ------------- keyboards/evyd13/minitomic/config.h | 3 ++ keyboards/evyd13/minitomic/minitomic.c | 34 --------------- keyboards/evyd13/mx5160/config.h | 5 +++ keyboards/evyd13/mx5160/mx5160.c | 42 ------------------- keyboards/evyd13/nt660/config.h | 2 + keyboards/evyd13/nt660/nt660.c | 16 ------- keyboards/evyd13/quackfire/config.h | 4 ++ keyboards/evyd13/quackfire/quackfire.c | 28 ------------- keyboards/evyd13/wasdat/config.h | 5 +++ keyboards/evyd13/wasdat/wasdat.c | 31 -------------- keyboards/evyd13/wasdat_code/config.h | 5 +++ keyboards/evyd13/wasdat_code/wasdat_code.c | 31 -------------- keyboards/evyd13/wonderland/config.h | 5 +++ keyboards/evyd13/wonderland/wonderland.c | 33 --------------- keyboards/exclusive/e65/config.h | 3 ++ keyboards/exclusive/e65/e65.c | 21 ---------- keyboards/exclusive/e6v2/le_bmc/config.h | 2 + keyboards/exclusive/e6v2/le_bmc/le_bmc.c | 16 ------- keyboards/exclusive/e6v2/oe_bmc/config.h | 2 + keyboards/exclusive/e6v2/oe_bmc/oe_bmc.c | 16 ------- keyboards/exent/config.h | 4 ++ keyboards/exent/exent.c | 20 --------- keyboards/facew/config.h | 3 ++ keyboards/facew/facew.c | 18 -------- keyboards/foxlab/key65/hotswap/config.h | 3 ++ keyboards/foxlab/key65/hotswap/hotswap.c | 17 -------- keyboards/foxlab/key65/universal/config.h | 3 ++ keyboards/foxlab/key65/universal/universal.c | 17 -------- keyboards/freyr/config.h | 4 ++ keyboards/freyr/freyr.c | 19 --------- keyboards/ft/mars80/config.h | 3 ++ keyboards/ft/mars80/mars80.c | 18 -------- keyboards/gray_studio/hb85/config.h | 4 ++ keyboards/gray_studio/hb85/hb85.c | 20 --------- keyboards/handwired/tritium_numpad/config.h | 3 ++ .../handwired/tritium_numpad/tritium_numpad.c | 28 ------------- keyboards/hid_liber/config.h | 4 ++ keyboards/hid_liber/hid_liber.c | 21 ---------- keyboards/j80/config.h | 4 ++ keyboards/j80/j80.c | 20 --------- keyboards/jc65/v32a/config.h | 2 + keyboards/jc65/v32a/v32a.c | 16 ------- keyboards/kb_elmo/aek2_usb/aek2_usb.c | 20 --------- keyboards/kb_elmo/aek2_usb/config.h | 4 ++ keyboards/kbdfans/kbdpad/mk1/config.h | 2 + keyboards/kbdfans/kbdpad/mk1/mk1.c | 16 ------- keyboards/kinesis/kint2pp/config.h | 7 +++- keyboards/kinesis/kint2pp/kint2pp.c | 25 ----------- keyboards/kinesis/nguyenvietyen/config.h | 6 +++ .../kinesis/nguyenvietyen/nguyenvietyen.c | 30 ------------- keyboards/kira80/config.h | 3 ++ keyboards/kira80/kira80.c | 18 -------- keyboards/kona_classic/kona_classic.c | 29 ------------- keyboards/mechlovin/adelais/adelais.c | 27 ------------ keyboards/mechlovin/adelais/config.h | 4 ++ keyboards/mechlovin/delphine/config.h | 4 +- keyboards/mechlovin/delphine/delphine.c | 18 -------- keyboards/mechlovin/hannah65/config.h | 2 + keyboards/mechlovin/hannah65/hannah65.c | 18 -------- keyboards/mechlovin/infinity87/config.h | 2 + keyboards/mechlovin/infinity87/infinity87.c | 21 ---------- keyboards/mechlovin/infinity88/config.h | 2 + keyboards/mechlovin/infinity88/infinity88.c | 22 ---------- keyboards/mechlovin/pisces/config.h | 2 + keyboards/mechlovin/pisces/pisces.c | 25 ----------- keyboards/mehkee96/config.h | 4 ++ keyboards/mehkee96/mehkee96.c | 18 -------- keyboards/nightly_boards/alter/rev1/config.h | 4 ++ keyboards/nightly_boards/alter/rev1/rev1.c | 20 --------- keyboards/panc60/config.h | 2 + keyboards/panc60/panc60.c | 16 ------- keyboards/pandora/config.h | 3 ++ keyboards/pandora/pandora.c | 18 -------- keyboards/pearl/config.h | 4 ++ keyboards/pearl/pearl.c | 20 --------- keyboards/percent/canoe/canoe.c | 16 ------- keyboards/percent/canoe/config.h | 2 + keyboards/percent/skog/config.h | 3 ++ keyboards/percent/skog/skog.c | 18 -------- keyboards/percent/skog_lite/config.h | 3 ++ keyboards/percent/skog_lite/skog_lite.c | 18 -------- keyboards/phantom/config.h | 3 ++ keyboards/phantom/phantom.c | 20 --------- keyboards/rart/rartlice/config.h | 5 +++ keyboards/rart/rartlice/rartlice.c | 20 --------- keyboards/redscarf_iiplus/verd/config.h | 4 ++ keyboards/redscarf_iiplus/verd/verd.c | 27 ------------ keyboards/reversestudio/decadepad/config.h | 3 ++ keyboards/reversestudio/decadepad/decadepad.c | 15 ------- keyboards/singa/config.h | 2 + keyboards/singa/singa.c | 16 ------- keyboards/stella/config.h | 4 ++ keyboards/stella/stella.c | 19 --------- keyboards/tgr/910/910.c | 20 --------- keyboards/tgr/910/config.h | 4 ++ keyboards/tgr/910ce/910ce.c | 16 ------- keyboards/tgr/910ce/config.h | 2 + keyboards/tgr/alice/alice.c | 20 --------- keyboards/tgr/alice/config.h | 4 ++ keyboards/tgr/jane/config.h | 3 ++ keyboards/tgr/jane/jane.c | 18 -------- keyboards/tgr/tris/config.h | 2 + keyboards/tgr/tris/tris.c | 16 ------- keyboards/unikorn/config.h | 2 + keyboards/unikorn/unikorn.c | 16 ------- keyboards/vn66/config.h | 3 ++ keyboards/vn66/vn66.c | 17 -------- keyboards/winkeyless/bface/bface.c | 20 --------- keyboards/winkeyless/bface/config.h | 4 ++ keyboards/winkeyless/bmini/bmini.c | 20 --------- keyboards/winkeyless/bmini/config.h | 4 ++ keyboards/winkeyless/bminiex/bminiex.c | 20 --------- keyboards/winkeyless/bminiex/config.h | 4 ++ keyboards/xbows/knight/config.h | 4 ++ keyboards/xbows/knight/knight.c | 22 ---------- keyboards/xd68/config.h | 3 ++ keyboards/xd68/xd68.c | 21 ---------- keyboards/xd87/config.h | 3 ++ keyboards/xd87/xd87.c | 35 ---------------- keyboards/ymd75/config.h | 2 + keyboards/ymd75/rev1/rev1.c | 16 ------- keyboards/ymd75/rev2/rev2.c | 16 ------- keyboards/ymd75/rev3/rev3.c | 14 ------- keyboards/ymd96/config.h | 4 ++ keyboards/ymd96/ymd96.c | 18 -------- keyboards/ymdk/bface/bface.c | 16 ------- keyboards/ymdk/bface/config.h | 2 + keyboards/ymdk_np21/config.h | 2 + keyboards/ymdk_np21/ymdk_np21.c | 16 ------- 153 files changed, 249 insertions(+), 1623 deletions(-) diff --git a/keyboards/ares/ares.c b/keyboards/ares/ares.c index 95d4b878f1..80d4455179 100644 --- a/keyboards/ares/ares.c +++ b/keyboards/ares/ares.c @@ -16,19 +16,3 @@ along with this program. If not, see . */ #include "ares.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(D1); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(D1, led_state.caps_lock); - } - return true; -} diff --git a/keyboards/ares/config.h b/keyboards/ares/config.h index ffbe456050..35e885d693 100644 --- a/keyboards/ares/config.h +++ b/keyboards/ares/config.h @@ -37,6 +37,8 @@ along with this program. If not, see . #define DIODE_DIRECTION COL2ROW #define DEBOUNCE 5 +#define LED_CAPS_LOCK_PIN D1 + #define BACKLIGHT_PIN D4 #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/bfake/bfake.c b/keyboards/bfake/bfake.c index 6d0c927462..5eedcc1946 100644 --- a/keyboards/bfake/bfake.c +++ b/keyboards/bfake/bfake.c @@ -16,19 +16,3 @@ along with this program. If not, see . */ #include "bfake.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(D1); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(D1, led_state.caps_lock); - } - return true; -} diff --git a/keyboards/bfake/config.h b/keyboards/bfake/config.h index 6c4710a9ec..54e01ad3db 100644 --- a/keyboards/bfake/config.h +++ b/keyboards/bfake/config.h @@ -37,6 +37,8 @@ along with this program. If not, see . #define DIODE_DIRECTION COL2ROW #define DEBOUNCE 5 +#define LED_CAPS_LOCK_PIN D1 + #define BACKLIGHT_PIN D4 #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/chili/chili.c b/keyboards/chili/chili.c index 40d3528b08..f629a6d60a 100644 --- a/keyboards/chili/chili.c +++ b/keyboards/chili/chili.c @@ -14,29 +14,3 @@ * along with this program. If not, see . */ #include "chili.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - led_init_ports(); - matrix_init_user(); -} - -void led_init_ports(void) { - setPinOutput(B1); - writePinHigh(B1); - setPinOutput(B2); - writePinHigh(B2); - setPinOutput(B3); - writePinHigh(B3); -} - -bool led_update_kb(led_t led_state) { - bool res = led_update_user(led_state); - if(res) { - writePin(B1, !led_state.num_lock); - writePin(B2, !led_state.caps_lock); - writePin(B3, !led_state.scroll_lock); - } - return res; -} diff --git a/keyboards/chili/config.h b/keyboards/chili/config.h index 4b6a632cd4..08c2475875 100644 --- a/keyboards/chili/config.h +++ b/keyboards/chili/config.h @@ -42,6 +42,11 @@ along with this program. If not, see . /* COL2ROW or ROW2COL */ #define DIODE_DIRECTION COL2ROW +#define LED_NUM_LOCK_PIN B1 +#define LED_CAPS_LOCK_PIN B2 +#define LED_SCROLL_LOCK_PIN B3 +#define LED_PIN_ON_STATE 0 + #define BACKLIGHT_PIN B7 #define BACKLIGHT_BREATHING #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/coarse/cordillera/config.h b/keyboards/coarse/cordillera/config.h index ac636d5d5e..33b0d7944a 100644 --- a/keyboards/coarse/cordillera/config.h +++ b/keyboards/coarse/cordillera/config.h @@ -32,6 +32,10 @@ along with this program. If not, see . #define MATRIX_COL_PINS { B15, B14, B13, B12, B11, B10, B2, B1, B8, B7, B6, B5, B4, B3, A15, A14 } #define DIODE_DIRECTION COL2ROW +#define LED_NUM_LOCK_PIN B0 +#define LED_CAPS_LOCK_PIN A1 +#define LED_SCROLL_LOCK_PIN A0 + #define BACKLIGHT_PIN A8 #define BACKLIGHT_PWM_DRIVER PWMD1 #define BACKLIGHT_PWM_CHANNEL 1 diff --git a/keyboards/coarse/cordillera/cordillera.c b/keyboards/coarse/cordillera/cordillera.c index 5bf07740b5..437547ff28 100644 --- a/keyboards/coarse/cordillera/cordillera.c +++ b/keyboards/coarse/cordillera/cordillera.c @@ -16,23 +16,3 @@ along with this program. If not, see . */ #include "cordillera.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(B0); - setPinOutput(A1); - setPinOutput(A0); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(B0, led_state.num_lock); - writePin(A1, led_state.caps_lock); - writePin(A0, led_state.scroll_lock); - } - return true; -} diff --git a/keyboards/crazy_keyboard_68/config.h b/keyboards/crazy_keyboard_68/config.h index 2558e75791..e1304e18ed 100644 --- a/keyboards/crazy_keyboard_68/config.h +++ b/keyboards/crazy_keyboard_68/config.h @@ -52,6 +52,9 @@ along with this program. If not, see . */ //#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 +#define LED_CAPS_LOCK_PIN B2 +#define LED_PIN_ON_STATE 0 + //#define BACKLIGHT_PIN B7 //#define BACKLIGHT_LEVELS 3 //#define BACKLIGHT_BREATHING diff --git a/keyboards/crazy_keyboard_68/crazy_keyboard_68.c b/keyboards/crazy_keyboard_68/crazy_keyboard_68.c index f4f8515b7c..cbea93fb85 100644 --- a/keyboards/crazy_keyboard_68/crazy_keyboard_68.c +++ b/keyboards/crazy_keyboard_68/crazy_keyboard_68.c @@ -15,22 +15,3 @@ */ #include "crazy_keyboard_68.h" - -void matrix_init_kb(void) { - led_init_ports(); - - matrix_init_user(); -} - -void led_init_ports(void) { - // Caps lock pin - setPinOutput(B0); - writePinHigh(B0); -} - -bool led_update_kb(led_t led_state) { - if(led_update_user(led_state)) { - writePin(B0, !led_state.caps_lock); - } - return true; -} diff --git a/keyboards/daisy/config.h b/keyboards/daisy/config.h index a41e158f1c..ea56f948ee 100644 --- a/keyboards/daisy/config.h +++ b/keyboards/daisy/config.h @@ -52,6 +52,9 @@ along with this program. If not, see . */ //#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 +#define LED_CAPS_LOCK_PIN C6 +#define LED_PIN_ON_STATE 0 + #define BACKLIGHT_PIN D0 // #define BACKLIGHT_BREATHING #define BACKLIGHT_LEVELS 6 diff --git a/keyboards/daisy/daisy.c b/keyboards/daisy/daisy.c index 4e365ed462..98b7ac84b3 100644 --- a/keyboards/daisy/daisy.c +++ b/keyboards/daisy/daisy.c @@ -15,21 +15,3 @@ */ #include "daisy.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(C6); - writePinHigh(C6); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(C6, !led_state.caps_lock); - } - - return true; -} diff --git a/keyboards/do60/config.h b/keyboards/do60/config.h index ef6c55c3e1..f3ee1ed045 100644 --- a/keyboards/do60/config.h +++ b/keyboards/do60/config.h @@ -45,6 +45,9 @@ along with this program. If not, see . #define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B6, D4, B1, B7, F4, B4, D7, D6, B3, B0 } #define UNUSED_PINS +#define LED_CAPS_LOCK_PIN B2 +#define LED_PIN_ON_STATE 0 + /* Backlight Setup */ #define BACKLIGHT_PIN B5 #define BACKLIGHT_LEVELS 6 diff --git a/keyboards/do60/do60.c b/keyboards/do60/do60.c index 3dba9b5359..b19fc59828 100644 --- a/keyboards/do60/do60.c +++ b/keyboards/do60/do60.c @@ -2,26 +2,9 @@ extern inline void setdefaultrgb(void); - void matrix_init_kb(void) { // Keyboard start-up code goes here // Runs once when the firmware starts up matrix_init_user(); - led_init_ports(); setdefaultrgb(); }; - -void led_init_ports(void) { - // Set caps lock LED pin as output - setPinOutput(B2); - // Default to off - writePinHigh(B2); -} - -bool led_update_kb(led_t led_state) { - if(led_update_user(led_state)) { - writePin(B2, !led_state.caps_lock); - } - - return true; -} diff --git a/keyboards/donutcables/budget96/budget96.c b/keyboards/donutcables/budget96/budget96.c index 5f3436dc61..8c7b894bc4 100644 --- a/keyboards/donutcables/budget96/budget96.c +++ b/keyboards/donutcables/budget96/budget96.c @@ -15,21 +15,3 @@ */ #include "budget96.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(D0); - setPinOutput(D1); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(D0, led_state.num_lock); - writePin(D1, led_state.caps_lock); - } - return true; -} diff --git a/keyboards/donutcables/budget96/config.h b/keyboards/donutcables/budget96/config.h index e04cc8b78d..39b661dda7 100644 --- a/keyboards/donutcables/budget96/config.h +++ b/keyboards/donutcables/budget96/config.h @@ -37,6 +37,9 @@ along with this program. If not, see . #define DIODE_DIRECTION COL2ROW #define DEBOUNCE 5 +#define LED_NUM_LOCK_PIN D0 +#define LED_CAPS_LOCK_PIN D1 + #define BACKLIGHT_PIN D4 #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/eve/meteor/config.h b/keyboards/eve/meteor/config.h index 1e8c6ca052..a6b2c9b69d 100644 --- a/keyboards/eve/meteor/config.h +++ b/keyboards/eve/meteor/config.h @@ -36,5 +36,7 @@ along with this program. If not, see . #define DIODE_DIRECTION COL2ROW #define DEBOUNCE 5 +#define LED_CAPS_LOCK_PIN D1 + #define BACKLIGHT_PIN D4 #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/eve/meteor/meteor.c b/keyboards/eve/meteor/meteor.c index 1d080b389c..6bdb117f3a 100644 --- a/keyboards/eve/meteor/meteor.c +++ b/keyboards/eve/meteor/meteor.c @@ -15,19 +15,3 @@ */ #include "meteor.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(D1); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(D1, led_state.caps_lock); - } - return true; -} diff --git a/keyboards/evyd13/eon75/config.h b/keyboards/evyd13/eon75/config.h index 707665140d..d7d84de2a3 100644 --- a/keyboards/evyd13/eon75/config.h +++ b/keyboards/evyd13/eon75/config.h @@ -51,6 +51,11 @@ */ // #define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 +#define LED_NUM_LOCK_PIN B7 +#define LED_CAPS_LOCK_PIN D5 +#define LED_SCROLL_LOCK_PIN B0 +#define LED_PIN_ON_STATE 0 + // #define BACKLIGHT_PIN B7 // #define BACKLIGHT_BREATHING // #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/evyd13/eon75/eon75.c b/keyboards/evyd13/eon75/eon75.c index 67e9fe66a2..38620a6362 100644 --- a/keyboards/evyd13/eon75/eon75.c +++ b/keyboards/evyd13/eon75/eon75.c @@ -14,32 +14,3 @@ * along with this program. If not, see . */ #include "eon75.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - matrix_init_user(); - led_init_ports(); -}; - -void led_init_ports(void) { - // * Set our LED pins as output and high - setPinOutput(D5); - writePinHigh(D5); - - setPinOutput(B7); - writePinHigh(B7); - - setPinOutput(B0); - writePinHigh(B0); -} - -bool led_update_kb(led_t led_state) { - if(led_update_user(led_state)) { - writePin(D5, !led_state.caps_lock); - writePin(B7, !led_state.num_lock); - writePin(B0, !led_state.scroll_lock); - } - - return true; -} diff --git a/keyboards/evyd13/eon95/config.h b/keyboards/evyd13/eon95/config.h index eb44d8957e..2d9ede3ee2 100644 --- a/keyboards/evyd13/eon95/config.h +++ b/keyboards/evyd13/eon95/config.h @@ -51,6 +51,11 @@ */ // #define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 +#define LED_NUM_LOCK_PIN B7 +#define LED_CAPS_LOCK_PIN D5 +#define LED_SCROLL_LOCK_PIN B0 +#define LED_PIN_ON_STATE 0 + // #define BACKLIGHT_PIN B7 // #define BACKLIGHT_BREATHING // #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/evyd13/eon95/eon95.c b/keyboards/evyd13/eon95/eon95.c index 5eec86cc11..603d84a139 100644 --- a/keyboards/evyd13/eon95/eon95.c +++ b/keyboards/evyd13/eon95/eon95.c @@ -14,32 +14,3 @@ * along with this program. If not, see . */ #include "eon95.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - matrix_init_user(); - led_init_ports(); -} - -void led_init_ports(void) { - // * Set our LED pins as output and high - setPinOutput(D5); - writePinHigh(D5); - - setPinOutput(B7); - writePinHigh(B7); - - setPinOutput(B0); - writePinHigh(B0); -} - -bool led_update_kb(led_t led_state) { - if(led_update_user(led_state)) { - writePin(D5, !led_state.caps_lock); - writePin(B7, !led_state.num_lock); - writePin(B0, !led_state.scroll_lock); - } - - return true; -} diff --git a/keyboards/evyd13/gh80_1800/config.h b/keyboards/evyd13/gh80_1800/config.h index c230aa9af8..26ad8a8b13 100644 --- a/keyboards/evyd13/gh80_1800/config.h +++ b/keyboards/evyd13/gh80_1800/config.h @@ -51,6 +51,11 @@ */ // #define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 +#define LED_NUM_LOCK_PIN D6 +#define LED_CAPS_LOCK_PIN D7 +#define LED_SCROLL_LOCK_PIN D4 +#define LED_PIN_ON_STATE 0 + // #define BACKLIGHT_PIN B7 // #define BACKLIGHT_BREATHING // #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/evyd13/gh80_1800/gh80_1800.c b/keyboards/evyd13/gh80_1800/gh80_1800.c index 770c6f78bf..1691b3949e 100644 --- a/keyboards/evyd13/gh80_1800/gh80_1800.c +++ b/keyboards/evyd13/gh80_1800/gh80_1800.c @@ -14,31 +14,3 @@ * along with this program. If not, see . */ #include "gh80_1800.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); - led_init_ports(); -} - -void led_init_ports(void) { - setPinOutput(D6); - setPinOutput(D7); - setPinOutput(D4); - - writePinHigh(D6); - writePinHigh(D7); - writePinHigh(D4); -} - -bool led_update_kb(led_t led_state) { - if(led_update_user(led_state)) { - writePin(D6, !led_state.num_lock); - writePin(D7, !led_state.caps_lock); - writePin(D4, !led_state.scroll_lock); - } - - return true; -} diff --git a/keyboards/evyd13/minitomic/config.h b/keyboards/evyd13/minitomic/config.h index c041e86a2a..f26b4d1d95 100644 --- a/keyboards/evyd13/minitomic/config.h +++ b/keyboards/evyd13/minitomic/config.h @@ -51,6 +51,9 @@ */ // #define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 +#define LED_CAPS_LOCK_PIN C7 +#define LED_PIN_ON_STATE 0 + // #define BACKLIGHT_PIN B7 // #define BACKLIGHT_BREATHING // #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/evyd13/minitomic/minitomic.c b/keyboards/evyd13/minitomic/minitomic.c index 8d5f11a50d..15f2829648 100644 --- a/keyboards/evyd13/minitomic/minitomic.c +++ b/keyboards/evyd13/minitomic/minitomic.c @@ -14,37 +14,3 @@ * along with this program. If not, see . */ #include "minitomic.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); - led_init_ports(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -void led_init_ports(void) { - //Set led pin as output, then high (off) - writePinHigh(C7); -} - -bool led_update_kb(led_t led_state) { - bool res = led_update_user(led_state); - if(res) { - // writePin sets the pin high for 1 and low for 0. - // In this example the pins are inverted, setting - // it low/0 turns it on, and high/1 turns the LED off. - // This behavior depends on whether the LED is between the pin - // and VCC or the pin and GND. - writePin(C7, !led_state.caps_lock); - } - return res; -} - diff --git a/keyboards/evyd13/mx5160/config.h b/keyboards/evyd13/mx5160/config.h index 926095a5d2..c65f81b879 100644 --- a/keyboards/evyd13/mx5160/config.h +++ b/keyboards/evyd13/mx5160/config.h @@ -55,6 +55,11 @@ */ // #define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 +#define LED_NUM_LOCK_PIN B2 +#define LED_CAPS_LOCK_PIN B1 +#define LED_SCROLL_LOCK_PIN B3 +#define LED_PIN_ON_STATE 0 + // #define BACKLIGHT_PIN B7 // #define BACKLIGHT_BREATHING // #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/evyd13/mx5160/mx5160.c b/keyboards/evyd13/mx5160/mx5160.c index c9e412da24..298c44fd49 100644 --- a/keyboards/evyd13/mx5160/mx5160.c +++ b/keyboards/evyd13/mx5160/mx5160.c @@ -14,45 +14,3 @@ * along with this program. If not, see . */ #include "mx5160.h" - - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); - led_init_ports(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -void led_init_ports(void) { - //Set led pin as output, then high (off) - - //Caps lock - setPinOutput(B1); - writePinHigh(B1); - - //Num lock - setPinOutput(B2); - writePinHigh(B2); - - //Scroll lock - setPinOutput(B3); - writePinHigh(B3); -} - -bool led_update_kb(led_t led_state) { - bool res = led_update_user(led_state); - if (res) { - writePin(B2, !led_state.num_lock); - writePin(B1, !led_state.caps_lock); - writePin(B3, !led_state.scroll_lock); - } - return res; -} diff --git a/keyboards/evyd13/nt660/config.h b/keyboards/evyd13/nt660/config.h index 0d9bbd3300..8638847142 100644 --- a/keyboards/evyd13/nt660/config.h +++ b/keyboards/evyd13/nt660/config.h @@ -53,6 +53,8 @@ along with this program. If not, see . */ // #define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 +#define LED_CAPS_LOCK_PIN D0 + // #define BACKLIGHT_PIN B7 // #define BACKLIGHT_BREATHING // #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/evyd13/nt660/nt660.c b/keyboards/evyd13/nt660/nt660.c index 2a8ebfb46c..f89fa579c3 100644 --- a/keyboards/evyd13/nt660/nt660.c +++ b/keyboards/evyd13/nt660/nt660.c @@ -14,19 +14,3 @@ * along with this program. If not, see . */ #include "nt660.h" -void matrix_init_kb(void) { - matrix_init_user(); - led_init_ports(); -} - -void led_init_ports(void) { - setPinOutput(D0); -} - -bool led_update_kb(led_t led_state) { - if(led_update_user(led_state)) { - writePin(D0, !led_state.caps_lock); - } - - return true; -} diff --git a/keyboards/evyd13/quackfire/config.h b/keyboards/evyd13/quackfire/config.h index 22083e8118..151219a016 100644 --- a/keyboards/evyd13/quackfire/config.h +++ b/keyboards/evyd13/quackfire/config.h @@ -52,6 +52,10 @@ along with this program. If not, see . */ //#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 +#define LED_CAPS_LOCK_PIN F7 +#define LED_SCROLL_LOCK_PIN F6 +#define LED_PIN_ON_STATE 0 + // #define BACKLIGHT_PIN B7 // #define BACKLIGHT_BREATHING // #define BACKLIGHT_LEVELS 5 diff --git a/keyboards/evyd13/quackfire/quackfire.c b/keyboards/evyd13/quackfire/quackfire.c index ab233bd6d4..634d4187c6 100644 --- a/keyboards/evyd13/quackfire/quackfire.c +++ b/keyboards/evyd13/quackfire/quackfire.c @@ -14,31 +14,3 @@ * along with this program. If not, see . */ #include "quackfire.h" - -// Optional override functions below. -// You can leave any or all of these undefined. -// These are only required if you want to perform custom actions. - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); - led_init_ports(); -} - -void led_init_ports(void) { - setPinOutput(F6); - setPinOutput(F7); - writePinHigh(F6); - writePinHigh(F7); -} - -bool led_update_kb(led_t led_state) { - if(led_update_user(led_state)) { - writePin(F7, !led_state.caps_lock); - writePin(F6, !led_state.scroll_lock); - } - - return true; -} diff --git a/keyboards/evyd13/wasdat/config.h b/keyboards/evyd13/wasdat/config.h index c064d18a58..75b75a0d2a 100644 --- a/keyboards/evyd13/wasdat/config.h +++ b/keyboards/evyd13/wasdat/config.h @@ -57,6 +57,11 @@ along with this program. If not, see . */ //#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 +#define LED_NUM_LOCK_PIN B2 +#define LED_CAPS_LOCK_PIN B0 +#define LED_SCROLL_LOCK_PIN B1 +#define LED_PIN_ON_STATE 0 + // #define BACKLIGHT_PIN B7 // #define BACKLIGHT_BREATHING // #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/evyd13/wasdat/wasdat.c b/keyboards/evyd13/wasdat/wasdat.c index 2d0e999c4e..6aaa1b8427 100644 --- a/keyboards/evyd13/wasdat/wasdat.c +++ b/keyboards/evyd13/wasdat/wasdat.c @@ -14,34 +14,3 @@ * along with this program. If not, see . */ #include "wasdat.h" - -// Optional override functions below. -// You can leave any or all of these undefined. -// These are only required if you want to perform custom actions. - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); - led_init_ports(); -} - -void led_init_ports(void) { - setPinOutput(B0); - writePinHigh(B0); - setPinOutput(B1); - writePinHigh(B1); - setPinOutput(B2); - writePinHigh(B2); -} - -bool led_update_kb(led_t led_state) { - if(led_update_user(led_state)) { - writePin(B0, !led_state.caps_lock); - writePin(B1, !led_state.scroll_lock); - writePin(B2, !led_state.num_lock); - } - - return true; -} diff --git a/keyboards/evyd13/wasdat_code/config.h b/keyboards/evyd13/wasdat_code/config.h index 804839ee9a..4ac77f217d 100644 --- a/keyboards/evyd13/wasdat_code/config.h +++ b/keyboards/evyd13/wasdat_code/config.h @@ -57,6 +57,11 @@ along with this program. If not, see . */ //#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 +#define LED_NUM_LOCK_PIN B3 +#define LED_CAPS_LOCK_PIN B1 +#define LED_SCROLL_LOCK_PIN B2 +#define LED_PIN_ON_STATE 0 + #define BACKLIGHT_PIN B7 #define BACKLIGHT_BREATHING #define BACKLIGHT_LEVELS 5 diff --git a/keyboards/evyd13/wasdat_code/wasdat_code.c b/keyboards/evyd13/wasdat_code/wasdat_code.c index 33551c2d0c..c1cdadea9e 100644 --- a/keyboards/evyd13/wasdat_code/wasdat_code.c +++ b/keyboards/evyd13/wasdat_code/wasdat_code.c @@ -14,34 +14,3 @@ * along with this program. If not, see . */ #include "wasdat_code.h" - -// Optional override functions below. -// You can leave any or all of these undefined. -// These are only required if you want to perform custom actions. - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); - led_init_ports(); -} - -void led_init_ports(void) { - setPinOutput(B1); - setPinOutput(B2); - setPinOutput(B3); - writePinHigh(B1); - writePinHigh(B2); - writePinHigh(B3); -} - -bool led_update_kb(led_t led_state) { - if(led_update_user(led_state)) { - writePin(B1, !led_state.caps_lock); - writePin(B2, !led_state.scroll_lock); - writePin(B3, !led_state.num_lock); - } - - return true; -} diff --git a/keyboards/evyd13/wonderland/config.h b/keyboards/evyd13/wonderland/config.h index 908c8a7855..c5c7a8b6c6 100644 --- a/keyboards/evyd13/wonderland/config.h +++ b/keyboards/evyd13/wonderland/config.h @@ -43,6 +43,11 @@ along with this program. If not, see . /* Set 0 if debouncing isn't needed */ #define DEBOUNCE 5 +#define LED_NUM_LOCK_PIN B1 +#define LED_CAPS_LOCK_PIN B2 +#define LED_SCROLL_LOCK_PIN B3 +#define LED_PIN_ON_STATE 0 + /* Backlight configuration */ #define RGB_DI_PIN B7 diff --git a/keyboards/evyd13/wonderland/wonderland.c b/keyboards/evyd13/wonderland/wonderland.c index 4415443816..f2a53a17a4 100644 --- a/keyboards/evyd13/wonderland/wonderland.c +++ b/keyboards/evyd13/wonderland/wonderland.c @@ -1,34 +1 @@ #include "wonderland.h" - -__attribute__ ((weak)) -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - matrix_init_user(); - led_init_ports(); -}; - -__attribute__ ((weak)) -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - matrix_scan_user(); -}; - -__attribute__ ((weak)) -void led_init_ports(void) { - // * Set our LED pins as output - setPinOutput(B1); - setPinOutput(B2); - setPinOutput(B3); -} - -bool led_update_kb(led_t led_state) { - bool runDefault = led_update_user(led_state); - if (runDefault) { - writePin(B1, !led_state.num_lock); - writePin(B2, !led_state.caps_lock); - writePin(B3, !led_state.scroll_lock); - } - return runDefault; -} diff --git a/keyboards/exclusive/e65/config.h b/keyboards/exclusive/e65/config.h index bc0f1a1ed7..1d43011b80 100644 --- a/keyboards/exclusive/e65/config.h +++ b/keyboards/exclusive/e65/config.h @@ -39,6 +39,9 @@ /* COL2ROW or ROW2COL */ #define DIODE_DIRECTION COL2ROW +#define LED_CAPS_LOCK_PIN B6 +#define LED_PIN_ON_STATE 0 + /* number of backlight levels */ #define BACKLIGHT_PIN B7 #ifdef BACKLIGHT_PIN diff --git a/keyboards/exclusive/e65/e65.c b/keyboards/exclusive/e65/e65.c index e01a0614c5..feb0e65438 100644 --- a/keyboards/exclusive/e65/e65.c +++ b/keyboards/exclusive/e65/e65.c @@ -15,24 +15,3 @@ */ #include "e65.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); - led_init_ports(); -} - -void led_init_ports(void) { - setPinOutput(B6); - writePinHigh(B6); -} - -bool led_update_kb(led_t led_state) { - if(led_update_user(led_state)) { - writePin(B6, !led_state.caps_lock); - } - - return true; -} diff --git a/keyboards/exclusive/e6v2/le_bmc/config.h b/keyboards/exclusive/e6v2/le_bmc/config.h index e9e8c9e533..8115f4ae12 100644 --- a/keyboards/exclusive/e6v2/le_bmc/config.h +++ b/keyboards/exclusive/e6v2/le_bmc/config.h @@ -44,6 +44,8 @@ along with this program. If not, see . #define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, C2, C3, C4, C5, D7 } #define DIODE_DIRECTION COL2ROW +#define LED_CAPS_LOCK_PIN D1 + #define BACKLIGHT_PIN D4 #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/exclusive/e6v2/le_bmc/le_bmc.c b/keyboards/exclusive/e6v2/le_bmc/le_bmc.c index df79cc5dcf..e36cfd645d 100644 --- a/keyboards/exclusive/e6v2/le_bmc/le_bmc.c +++ b/keyboards/exclusive/e6v2/le_bmc/le_bmc.c @@ -15,19 +15,3 @@ */ #include "le_bmc.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(D1); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(D1, led_state.caps_lock); - } - return true; -} diff --git a/keyboards/exclusive/e6v2/oe_bmc/config.h b/keyboards/exclusive/e6v2/oe_bmc/config.h index f4abd2112d..3f2a50cdef 100644 --- a/keyboards/exclusive/e6v2/oe_bmc/config.h +++ b/keyboards/exclusive/e6v2/oe_bmc/config.h @@ -44,6 +44,8 @@ along with this program. If not, see . #define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, C2, C3, C4, C5, D7 } #define DIODE_DIRECTION COL2ROW +#define LED_CAPS_LOCK_PIN D1 + #define BACKLIGHT_PIN D4 #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/exclusive/e6v2/oe_bmc/oe_bmc.c b/keyboards/exclusive/e6v2/oe_bmc/oe_bmc.c index ea74d87cb1..10dd1a26ed 100644 --- a/keyboards/exclusive/e6v2/oe_bmc/oe_bmc.c +++ b/keyboards/exclusive/e6v2/oe_bmc/oe_bmc.c @@ -15,19 +15,3 @@ */ #include "oe_bmc.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(D1); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(D1, led_state.caps_lock); - } - return true; -} diff --git a/keyboards/exent/config.h b/keyboards/exent/config.h index 6b37bdd1c8..16a49e78fe 100644 --- a/keyboards/exent/config.h +++ b/keyboards/exent/config.h @@ -38,6 +38,10 @@ along with this program. If not, see . #define DIODE_DIRECTION COL2ROW #define DEBOUNCE 5 +#define LED_NUM_LOCK_PIN D0 +#define LED_CAPS_LOCK_PIN D1 +#define LED_SCROLL_LOCK_PIN D6 + #define BACKLIGHT_PIN D4 #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/exent/exent.c b/keyboards/exent/exent.c index a935e9e67f..82066f7e85 100644 --- a/keyboards/exent/exent.c +++ b/keyboards/exent/exent.c @@ -15,23 +15,3 @@ */ #include "exent.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(D0); - setPinOutput(D1); - setPinOutput(D6); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(D0, led_state.num_lock); - writePin(D1, led_state.caps_lock); - writePin(D6, led_state.scroll_lock); - } - return true; -} diff --git a/keyboards/facew/config.h b/keyboards/facew/config.h index 5966429cac..14583dc831 100644 --- a/keyboards/facew/config.h +++ b/keyboards/facew/config.h @@ -37,6 +37,9 @@ along with this program. If not, see . #define DIODE_DIRECTION COL2ROW #define DEBOUNCE 5 +#define LED_NUM_LOCK_PIN D0 +#define LED_CAPS_LOCK_PIN D1 + #define BACKLIGHT_PIN D4 #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/facew/facew.c b/keyboards/facew/facew.c index 2f091ae6bd..373dbc6cd6 100644 --- a/keyboards/facew/facew.c +++ b/keyboards/facew/facew.c @@ -16,21 +16,3 @@ along with this program. If not, see . */ #include "facew.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(D0); - setPinOutput(D1); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(D0, led_state.num_lock); - writePin(D1, led_state.caps_lock); - } - return true; -} diff --git a/keyboards/foxlab/key65/hotswap/config.h b/keyboards/foxlab/key65/hotswap/config.h index a5ada6bd01..43f883fce9 100644 --- a/keyboards/foxlab/key65/hotswap/config.h +++ b/keyboards/foxlab/key65/hotswap/config.h @@ -45,6 +45,9 @@ /* COL2ROW, ROW2COL*/ #define DIODE_DIRECTION COL2ROW +#define LED_SCROLL_LOCK_PIN E6 +#define LED_PIN_ON_STATE 0 + #define BACKLIGHT_PIN B7 // #define BACKLIGHT_BREATHING #define BACKLIGHT_LEVELS 5 diff --git a/keyboards/foxlab/key65/hotswap/hotswap.c b/keyboards/foxlab/key65/hotswap/hotswap.c index 6b3950d361..31fb011ad5 100644 --- a/keyboards/foxlab/key65/hotswap/hotswap.c +++ b/keyboards/foxlab/key65/hotswap/hotswap.c @@ -15,20 +15,3 @@ */ #include "hotswap.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(E6); - writePinHigh(E6); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(E6, !led_state.caps_lock); - } - return true; -} diff --git a/keyboards/foxlab/key65/universal/config.h b/keyboards/foxlab/key65/universal/config.h index a3c01cd75b..315af66762 100644 --- a/keyboards/foxlab/key65/universal/config.h +++ b/keyboards/foxlab/key65/universal/config.h @@ -45,6 +45,9 @@ /* COL2ROW, ROW2COL*/ #define DIODE_DIRECTION COL2ROW +#define LED_SCROLL_LOCK_PIN E6 +#define LED_PIN_ON_STATE 0 + #define BACKLIGHT_PIN B7 // #define BACKLIGHT_BREATHING #define BACKLIGHT_LEVELS 5 diff --git a/keyboards/foxlab/key65/universal/universal.c b/keyboards/foxlab/key65/universal/universal.c index 361f3ad7f2..5fa9e8f171 100644 --- a/keyboards/foxlab/key65/universal/universal.c +++ b/keyboards/foxlab/key65/universal/universal.c @@ -15,20 +15,3 @@ */ #include "universal.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(E6); - writePinHigh(E6); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(E6, !led_state.caps_lock); - } - return true; -} diff --git a/keyboards/freyr/config.h b/keyboards/freyr/config.h index a4e34ea477..d912b3cc1a 100644 --- a/keyboards/freyr/config.h +++ b/keyboards/freyr/config.h @@ -47,6 +47,10 @@ along with this program. If not, see . /* COL2ROW, ROW2COL */ #define DIODE_DIRECTION COL2ROW +#define LED_CAPS_LOCK_PIN B3 +#define LED_SCROLL_LOCK_PIN B7 +#define LED_PIN_ON_STATE 0 + #define BACKLIGHT_PIN B6 #define BACKLIGHT_LEVELS 3 #define BACKLIGHT_BREATHING diff --git a/keyboards/freyr/freyr.c b/keyboards/freyr/freyr.c index 336b327110..a856521e7f 100644 --- a/keyboards/freyr/freyr.c +++ b/keyboards/freyr/freyr.c @@ -15,22 +15,3 @@ */ #include "freyr.h" - -void matrix_init_kb(void) { - matrix_init_user(); - led_init_ports(); -} - -void led_init_ports(void) { - setPinOutput(B3); - setPinOutput(B7); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(B3, !led_state.caps_lock); - writePin(B7, !led_state.scroll_lock); - } - - return true; -} diff --git a/keyboards/ft/mars80/config.h b/keyboards/ft/mars80/config.h index 3aabc926d8..e56d4439b3 100644 --- a/keyboards/ft/mars80/config.h +++ b/keyboards/ft/mars80/config.h @@ -37,6 +37,9 @@ along with this program. If not, see . #define DIODE_DIRECTION COL2ROW #define DEBOUNCE 5 +#define LED_CAPS_LOCK_PIN D1 +#define LED_SCROLL_LOCK_PIN D6 + #define BACKLIGHT_PIN D4 #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/ft/mars80/mars80.c b/keyboards/ft/mars80/mars80.c index 2c628a6a23..5c95d04e35 100644 --- a/keyboards/ft/mars80/mars80.c +++ b/keyboards/ft/mars80/mars80.c @@ -15,21 +15,3 @@ */ #include "mars80.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(D1); - setPinOutput(D6); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(D1, led_state.caps_lock); - writePin(D6, led_state.scroll_lock); - } - return true; -} diff --git a/keyboards/gray_studio/hb85/config.h b/keyboards/gray_studio/hb85/config.h index 9309012a41..0e1f0aff42 100644 --- a/keyboards/gray_studio/hb85/config.h +++ b/keyboards/gray_studio/hb85/config.h @@ -34,5 +34,9 @@ along with this program. If not, see . #define RGBLED_NUM 5 #define RGBLIGHT_ANIMATIONS +#define LED_NUM_LOCK_PIN D0 +#define LED_CAPS_LOCK_PIN D1 +#define LED_SCROLL_LOCK_PIN D6 + #define BACKLIGHT_PIN D4 #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/gray_studio/hb85/hb85.c b/keyboards/gray_studio/hb85/hb85.c index 4b3ff64f1e..964234d6b4 100644 --- a/keyboards/gray_studio/hb85/hb85.c +++ b/keyboards/gray_studio/hb85/hb85.c @@ -17,23 +17,3 @@ along with this program. If not, see . */ #include "hb85.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(D0); - setPinOutput(D1); - setPinOutput(D6); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(D0, led_state.num_lock); - writePin(D1, led_state.caps_lock); - writePin(D6, led_state.scroll_lock); - } - return true; -} diff --git a/keyboards/handwired/tritium_numpad/config.h b/keyboards/handwired/tritium_numpad/config.h index a53c27d43b..1424c6b491 100644 --- a/keyboards/handwired/tritium_numpad/config.h +++ b/keyboards/handwired/tritium_numpad/config.h @@ -36,6 +36,9 @@ along with this program. If not, see . #define MATRIX_COL_PINS { F4, F6, B1, B2 } #define UNUSED_PINS +#define LED_NUM_LOCK_PIN D5 +#define LED_PIN_ON_STATE 0 + #define BACKLIGHT_PIN B6 /* COL2ROW or ROW2COL */ diff --git a/keyboards/handwired/tritium_numpad/tritium_numpad.c b/keyboards/handwired/tritium_numpad/tritium_numpad.c index 7193a934d6..c9f86eda7e 100644 --- a/keyboards/handwired/tritium_numpad/tritium_numpad.c +++ b/keyboards/handwired/tritium_numpad/tritium_numpad.c @@ -1,29 +1 @@ #include "tritium_numpad.h" -#include "led.h" - -void keyboard_pre_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - keyboard_pre_init_user(); - led_init_ports(); -}; - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - matrix_scan_user(); -}; - -void led_init_ports(void) { - // * Set our LED pins as output - // Numlock LED - setPinOutput(D5); -} - -void led_set_kb(uint8_t usb_led) { - if (IS_LED_ON(usb_led, USB_LED_NUM_LOCK)) { - writePinLow(D5); - } else { - writePinHigh(D5); - } -} diff --git a/keyboards/hid_liber/config.h b/keyboards/hid_liber/config.h index f35799b1ac..e0f92dee84 100755 --- a/keyboards/hid_liber/config.h +++ b/keyboards/hid_liber/config.h @@ -34,6 +34,10 @@ // HID Liberation Device uses custom matrix code to accomodate a 74HC238 3 to 8 decoder on pins B1, B2 and B3. //#define DIODE_DIRECTION +#define LED_CAPS_LOCK_PIN B5 +#define LED_SCROLL_LOCK_PIN B6 +#define LED_PIN_ON_STATE 0 + // #define BACKLIGHT_PIN B7 // #define BACKLIGHT_BREATHING // #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/hid_liber/hid_liber.c b/keyboards/hid_liber/hid_liber.c index 2d2130743f..2e4ddb3293 100755 --- a/keyboards/hid_liber/hid_liber.c +++ b/keyboards/hid_liber/hid_liber.c @@ -16,24 +16,3 @@ * along with this program. If not, see . */ #include "hid_liber.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - led_init_ports(); - matrix_init_user(); -} - -void led_init_ports(void) { - setPinOutput(B5); - setPinOutput(B6); -} - -bool led_update_kb(led_t led_state) { - bool res = led_update_user(led_state); - if(res) { - writePin(B5, !led_state.caps_lock); - writePin(B6, !led_state.scroll_lock); - } - return res; -} diff --git a/keyboards/j80/config.h b/keyboards/j80/config.h index c4276431cf..fb17a7fd1e 100644 --- a/keyboards/j80/config.h +++ b/keyboards/j80/config.h @@ -35,6 +35,10 @@ along with this program. If not, see . #define DIODE_DIRECTION COL2ROW #define DEBOUNCE 5 +#define LED_NUM_LOCK_PIN D0 +#define LED_CAPS_LOCK_PIN D1 +#define LED_SCROLL_LOCK_PIN D6 + #define BACKLIGHT_LEVELS 3 #define BACKLIGHT_PIN D4 diff --git a/keyboards/j80/j80.c b/keyboards/j80/j80.c index bed30cdecc..fd49e913e0 100644 --- a/keyboards/j80/j80.c +++ b/keyboards/j80/j80.c @@ -15,23 +15,3 @@ */ #include "j80.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(D0); - setPinOutput(D1); - setPinOutput(D6); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(D0, led_state.num_lock); - writePin(D1, led_state.caps_lock); - writePin(D6, led_state.scroll_lock); - } - return true; -} diff --git a/keyboards/jc65/v32a/config.h b/keyboards/jc65/v32a/config.h index 6cf71ab3af..d6907c96c3 100644 --- a/keyboards/jc65/v32a/config.h +++ b/keyboards/jc65/v32a/config.h @@ -32,6 +32,8 @@ along with this program. If not, see . #define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, C7, C6, C5, C4, C3, C2, D7 } #define DIODE_DIRECTION COL2ROW +#define LED_CAPS_LOCK_PIN D1 + #define BACKLIGHT_PIN D4 #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/jc65/v32a/v32a.c b/keyboards/jc65/v32a/v32a.c index f195e8f61e..aa7233ba2a 100644 --- a/keyboards/jc65/v32a/v32a.c +++ b/keyboards/jc65/v32a/v32a.c @@ -16,19 +16,3 @@ along with this program. If not, see . */ #include "v32a.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(D1); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(D1, led_state.caps_lock); - } - return true; -} diff --git a/keyboards/kb_elmo/aek2_usb/aek2_usb.c b/keyboards/kb_elmo/aek2_usb/aek2_usb.c index b83faf5dad..6ce5d21df7 100644 --- a/keyboards/kb_elmo/aek2_usb/aek2_usb.c +++ b/keyboards/kb_elmo/aek2_usb/aek2_usb.c @@ -15,23 +15,3 @@ */ #include "aek2_usb.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(B0); - setPinOutput(B1); - setPinOutput(B2); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(B0, led_state.scroll_lock); - writePin(B1, led_state.caps_lock); - writePin(B2, led_state.num_lock); - } - return true; -} \ No newline at end of file diff --git a/keyboards/kb_elmo/aek2_usb/config.h b/keyboards/kb_elmo/aek2_usb/config.h index e0fc83f17a..cf8c9d66f9 100644 --- a/keyboards/kb_elmo/aek2_usb/config.h +++ b/keyboards/kb_elmo/aek2_usb/config.h @@ -40,6 +40,10 @@ along with this program. If not, see . /* COL2ROW, ROW2COL*/ #define DIODE_DIRECTION COL2ROW +#define LED_NUM_LOCK_PIN B2 +#define LED_CAPS_LOCK_PIN B1 +#define LED_SCROLL_LOCK_PIN B0 + /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ #define DEBOUNCE 5 diff --git a/keyboards/kbdfans/kbdpad/mk1/config.h b/keyboards/kbdfans/kbdpad/mk1/config.h index 1646a1af1f..80a1abef57 100644 --- a/keyboards/kbdfans/kbdpad/mk1/config.h +++ b/keyboards/kbdfans/kbdpad/mk1/config.h @@ -33,6 +33,8 @@ along with this program. If not, see . #define DIODE_DIRECTION COL2ROW +#define LED_NUM_LOCK_PIN D0 + #define BACKLIGHT_PIN D4 #define BACKLIGHT_BREATHING diff --git a/keyboards/kbdfans/kbdpad/mk1/mk1.c b/keyboards/kbdfans/kbdpad/mk1/mk1.c index 540ba35892..5635b0a589 100644 --- a/keyboards/kbdfans/kbdpad/mk1/mk1.c +++ b/keyboards/kbdfans/kbdpad/mk1/mk1.c @@ -15,19 +15,3 @@ */ #include "mk1.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(D0); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(D0, led_state.num_lock); - } - return true; -} diff --git a/keyboards/kinesis/kint2pp/config.h b/keyboards/kinesis/kint2pp/config.h index 2acaf9be6e..902c9b24a0 100644 --- a/keyboards/kinesis/kint2pp/config.h +++ b/keyboards/kinesis/kint2pp/config.h @@ -25,7 +25,12 @@ /* COL2ROW or ROW2COL */ #define DIODE_DIRECTION COL2ROW - + +#define LED_NUM_LOCK_PIN C5 +#define LED_CAPS_LOCK_PIN C1 +#define LED_SCROLL_LOCK_PIN C4 +#define LED_COMPOSE_PIN C3 +#define LED_PIN_ON_STATE 0 /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ #define DEBOUNCE 5 diff --git a/keyboards/kinesis/kint2pp/kint2pp.c b/keyboards/kinesis/kint2pp/kint2pp.c index 7e2b4348c5..856e29c31e 100644 --- a/keyboards/kinesis/kint2pp/kint2pp.c +++ b/keyboards/kinesis/kint2pp/kint2pp.c @@ -1,26 +1 @@ #include "kint2pp.h" - -void matrix_init_kb(void) { - led_init_ports(); - - - matrix_init_user(); -} -void led_init_ports() { - // * Set our LED pins as output - setPinOutput(C3); // Keypad LED - setPinOutput(C4); // ScrLock LED - setPinOutput(C5); // NumLock LED - setPinOutput(C1); // CapsLock LED -} - -bool led_update_kb(led_t led_state) { - bool res = led_update_user(led_state); - if(res) { - writePin(C3, !led_state.compose); - writePin(C4, !led_state.scroll_lock); - writePin(C5, !led_state.num_lock); - writePin(C1, !led_state.caps_lock); - } - return res; -} diff --git a/keyboards/kinesis/nguyenvietyen/config.h b/keyboards/kinesis/nguyenvietyen/config.h index f221acd7e7..52f4c8054b 100644 --- a/keyboards/kinesis/nguyenvietyen/config.h +++ b/keyboards/kinesis/nguyenvietyen/config.h @@ -25,3 +25,9 @@ /* COL2ROW or ROW2COL */ #define DIODE_DIRECTION COL2ROW + +#define LED_NUM_LOCK_PIN D4 +#define LED_CAPS_LOCK_PIN E6 +#define LED_SCROLL_LOCK_PIN C6 +#define LED_COMPOSE_PIN D7 +#define LED_PIN_ON_STATE 0 diff --git a/keyboards/kinesis/nguyenvietyen/nguyenvietyen.c b/keyboards/kinesis/nguyenvietyen/nguyenvietyen.c index 1919412e93..3f01479389 100644 --- a/keyboards/kinesis/nguyenvietyen/nguyenvietyen.c +++ b/keyboards/kinesis/nguyenvietyen/nguyenvietyen.c @@ -1,31 +1 @@ #include "nguyenvietyen.h" - -void matrix_init_kb(void) { - led_init_ports(); - matrix_init_user(); -} - -void led_init_ports() { - // * Set our LED pins as output - setPinOutput(D7); // Keypad LED - setPinOutput(C6); // ScrLock LED - setPinOutput(D4); // NumLock LED - setPinOutput(E6); // CapsLock LED - - // turn all LEDs off by default - writePinHigh(D7); - writePinHigh(C6); - writePinHigh(D4); - writePinHigh(E6); -} - -bool led_update_kb(led_t led_state) { - bool res = led_update_user(led_state); - if (res) { - writePin(D7, !led_state.compose); - writePin(C6, !led_state.scroll_lock); - writePin(D4, !led_state.num_lock); - writePin(E6, !led_state.caps_lock); - } - return res; -} diff --git a/keyboards/kira80/config.h b/keyboards/kira80/config.h index 725b68d6e6..d61d23ab61 100644 --- a/keyboards/kira80/config.h +++ b/keyboards/kira80/config.h @@ -38,6 +38,9 @@ along with this program. If not, see . #define DIODE_DIRECTION COL2ROW #define DEBOUNCE 5 +#define LED_CAPS_LOCK_PIN D1 +#define LED_SCROLL_LOCK_PIN D6 + #define BACKLIGHT_PIN D4 #define BACKLIGHT_BREATHING #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/kira80/kira80.c b/keyboards/kira80/kira80.c index a76f4001ef..b3ebcae29a 100644 --- a/keyboards/kira80/kira80.c +++ b/keyboards/kira80/kira80.c @@ -15,21 +15,3 @@ */ #include "kira80.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(D1); - setPinOutput(D6); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(D1, led_state.caps_lock); - writePin(D6, led_state.scroll_lock); - } - return true; -} \ No newline at end of file diff --git a/keyboards/kona_classic/kona_classic.c b/keyboards/kona_classic/kona_classic.c index 71cee7baaf..af4ea06e6d 100644 --- a/keyboards/kona_classic/kona_classic.c +++ b/keyboards/kona_classic/kona_classic.c @@ -14,32 +14,3 @@ * along with this program. If not, see . */ #include "kona_classic.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - led_init_ports(); - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_init_ports(void) { -// DDRB |= (1<<6) | (1<<7); // OUT -} - -void led_set_kb(uint8_t usb_led) { -// led_set_user(usb_led); -} diff --git a/keyboards/mechlovin/adelais/adelais.c b/keyboards/mechlovin/adelais/adelais.c index da5f68f62b..b9df471d33 100644 --- a/keyboards/mechlovin/adelais/adelais.c +++ b/keyboards/mechlovin/adelais/adelais.c @@ -15,30 +15,3 @@ */ #include "adelais.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); - led_init_ports(); -} - -void led_init_ports(void) { - setPinOutput(B2); - writePinLow(B2); - setPinOutput(C15); - writePinLow(C15); - setPinOutput(B9); - writePinLow(B9); -} - -bool led_update_kb(led_t led_state) { - if(led_update_user(led_state)) { - writePin(B2, led_state.caps_lock); - writePin(B9, led_state.scroll_lock); - writePin(C15, led_state.num_lock); - } - - return true; -} diff --git a/keyboards/mechlovin/adelais/config.h b/keyboards/mechlovin/adelais/config.h index 875eba5148..3ec5c49132 100644 --- a/keyboards/mechlovin/adelais/config.h +++ b/keyboards/mechlovin/adelais/config.h @@ -30,3 +30,7 @@ along with this program. If not, see . /* COL2ROW, ROW2COL*/ #define DIODE_DIRECTION COL2ROW + +#define LED_NUM_LOCK_PIN C15 +#define LED_CAPS_LOCK_PIN B2 +#define LED_SCROLL_LOCK_PIN B9 diff --git a/keyboards/mechlovin/delphine/config.h b/keyboards/mechlovin/delphine/config.h index b3a084f67e..a642f37f9b 100644 --- a/keyboards/mechlovin/delphine/config.h +++ b/keyboards/mechlovin/delphine/config.h @@ -41,4 +41,6 @@ along with this program. If not, see . #define MATRIX_ROW_PINS { F0, F1, F4, F5, F6, D3 } #define MATRIX_COL_PINS { F7, D7, D6, D2 } -#define DIODE_DIRECTION COL2ROW \ No newline at end of file +#define DIODE_DIRECTION COL2ROW + +#define LED_NUM_LOCK_PIN B5 diff --git a/keyboards/mechlovin/delphine/delphine.c b/keyboards/mechlovin/delphine/delphine.c index 52292b3c92..8e33b6603c 100644 --- a/keyboards/mechlovin/delphine/delphine.c +++ b/keyboards/mechlovin/delphine/delphine.c @@ -15,21 +15,3 @@ */ #include "delphine.h" - -void matrix_init_kb(void) { - matrix_init_user(); - led_init_ports(); -} - -void led_init_ports(void) { - setPinOutput(B5); - writePinLow(B5); -} - -bool led_update_kb(led_t led_state) { - if(led_update_user(led_state)) { - writePin(B5, led_state.num_lock); - } - - return true; -} diff --git a/keyboards/mechlovin/hannah65/config.h b/keyboards/mechlovin/hannah65/config.h index 6801c30a3d..8c94fe4b35 100644 --- a/keyboards/mechlovin/hannah65/config.h +++ b/keyboards/mechlovin/hannah65/config.h @@ -41,6 +41,8 @@ along with this program. If not, see . #define DIODE_DIRECTION COL2ROW +#define LED_CAPS_LOCK_PIN B9 + #define BACKLIGHT_PIN B8 #define BACKLIGHT_BREATHING #define BACKLIGHT_PWM_DRIVER PWMD3 diff --git a/keyboards/mechlovin/hannah65/hannah65.c b/keyboards/mechlovin/hannah65/hannah65.c index 4f937d8a2a..92e0917ebe 100644 --- a/keyboards/mechlovin/hannah65/hannah65.c +++ b/keyboards/mechlovin/hannah65/hannah65.c @@ -15,21 +15,3 @@ */ #include "hannah65.h" - -void matrix_init_kb(void) { - matrix_init_user(); - led_init_ports(); -} - -void led_init_ports(void) { - setPinOutput(B9); - writePinLow(B9); -} - -bool led_update_kb(led_t led_state) { - if(led_update_user(led_state)) { - writePin(B9, led_state.caps_lock); - } - - return true; -} diff --git a/keyboards/mechlovin/infinity87/config.h b/keyboards/mechlovin/infinity87/config.h index 703a06f8de..ccb9f67566 100644 --- a/keyboards/mechlovin/infinity87/config.h +++ b/keyboards/mechlovin/infinity87/config.h @@ -45,6 +45,8 @@ along with this program. If not, see . #define DIODE_DIRECTION COL2ROW +#define LED_NUM_LOCK_PIN A3 +#define LED_CAPS_LOCK_PIN A4 #define BACKLIGHT_PIN B0 #define BACKLIGHT_BREATHING diff --git a/keyboards/mechlovin/infinity87/infinity87.c b/keyboards/mechlovin/infinity87/infinity87.c index 2de528bc36..434e796091 100644 --- a/keyboards/mechlovin/infinity87/infinity87.c +++ b/keyboards/mechlovin/infinity87/infinity87.c @@ -15,24 +15,3 @@ */ #include "infinity87.h" - -void matrix_init_kb(void) { - matrix_init_user(); - led_init_ports(); -} - -void led_init_ports(void) { - setPinOutput(A3); - writePinLow(A3); - setPinOutput(A4); - writePinLow(A4); -} - -bool led_update_kb(led_t led_state) { - if(led_update_user(led_state)) { - writePin(A4, led_state.caps_lock); - writePin(A3, led_state.num_lock); - } - - return true; -} diff --git a/keyboards/mechlovin/infinity88/config.h b/keyboards/mechlovin/infinity88/config.h index df1ea4957b..a387b76386 100644 --- a/keyboards/mechlovin/infinity88/config.h +++ b/keyboards/mechlovin/infinity88/config.h @@ -45,6 +45,8 @@ along with this program. If not, see . #define DIODE_DIRECTION COL2ROW +#define LED_NUM_LOCK_PIN A3 +#define LED_CAPS_LOCK_PIN A4 #define BACKLIGHT_PIN B0 #define BACKLIGHT_BREATHING diff --git a/keyboards/mechlovin/infinity88/infinity88.c b/keyboards/mechlovin/infinity88/infinity88.c index d342ce9eea..4d352358a7 100644 --- a/keyboards/mechlovin/infinity88/infinity88.c +++ b/keyboards/mechlovin/infinity88/infinity88.c @@ -15,25 +15,3 @@ */ #include "infinity88.h" - -void matrix_init_kb(void) { - matrix_init_user(); - led_init_ports(); -} - -void led_init_ports(void) { - setPinOutput(A3); - writePinLow(A3); - setPinOutput(A4); - writePinLow(A4); -} - -bool led_update_kb(led_t led_state) { - if(led_update_user(led_state)) { - writePin(A4, led_state.caps_lock); - writePin(A3, led_state.num_lock); - } - - return true; -} - diff --git a/keyboards/mechlovin/pisces/config.h b/keyboards/mechlovin/pisces/config.h index 14f6404a7f..1debf021c8 100644 --- a/keyboards/mechlovin/pisces/config.h +++ b/keyboards/mechlovin/pisces/config.h @@ -45,6 +45,8 @@ along with this program. If not, see . #define DIODE_DIRECTION COL2ROW +#define LED_CAPS_LOCK_PIN B2 + #define BACKLIGHT_PIN B7 // #define BACKLIGHT_BREATHING #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/mechlovin/pisces/pisces.c b/keyboards/mechlovin/pisces/pisces.c index 2a0a97f6d4..b43bf2aaa4 100644 --- a/keyboards/mechlovin/pisces/pisces.c +++ b/keyboards/mechlovin/pisces/pisces.c @@ -15,28 +15,3 @@ */ #include "pisces.h" - -// Optional override functions below. -// You can leave any or all of these undefined. -// These are only required if you want to perform custom actions. - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); - led_init_ports(); -} - -void led_init_ports(void) { - setPinOutput(B2); - writePinLow(B2); -} - -bool led_update_kb(led_t led_state) { - if(led_update_user(led_state)) { - writePin(B2, led_state.caps_lock); - } - - return true; -} diff --git a/keyboards/mehkee96/config.h b/keyboards/mehkee96/config.h index dc8c593ada..44ded13a57 100644 --- a/keyboards/mehkee96/config.h +++ b/keyboards/mehkee96/config.h @@ -16,6 +16,10 @@ #define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, C7, C6, C5, C4, C3, C2, D7 } #define DIODE_DIRECTION COL2ROW +#define LED_NUM_LOCK_PIN D0 +#define LED_CAPS_LOCK_PIN D1 +#define LED_PIN_ON_STATE 0 + #define BACKLIGHT_PIN D4 #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/mehkee96/mehkee96.c b/keyboards/mehkee96/mehkee96.c index ae83a1bb50..d9e2bac7a5 100644 --- a/keyboards/mehkee96/mehkee96.c +++ b/keyboards/mehkee96/mehkee96.c @@ -16,21 +16,3 @@ along with this program. If not, see . */ #include "mehkee96.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(D0); - setPinOutput(D1); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(D0, led_state.num_lock); - writePin(D1, led_state.caps_lock); - } - return true; -} diff --git a/keyboards/nightly_boards/alter/rev1/config.h b/keyboards/nightly_boards/alter/rev1/config.h index 30fe4b5212..4f9bade717 100644 --- a/keyboards/nightly_boards/alter/rev1/config.h +++ b/keyboards/nightly_boards/alter/rev1/config.h @@ -44,6 +44,10 @@ along with this program. If not, see . /* COL2ROW, ROW2COL*/ #define DIODE_DIRECTION COL2ROW +#define LED_NUM_LOCK_PIN D7 +#define LED_CAPS_LOCK_PIN D6 +#define LED_SCROLL_LOCK_PIN B4 + // #define BACKLIGHT_PIN F1 // #define BACKLIGHT_BREATHING // #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/nightly_boards/alter/rev1/rev1.c b/keyboards/nightly_boards/alter/rev1/rev1.c index df3dd6aed8..b250d32d12 100644 --- a/keyboards/nightly_boards/alter/rev1/rev1.c +++ b/keyboards/nightly_boards/alter/rev1/rev1.c @@ -15,23 +15,3 @@ */ #include "rev1.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(D7); - setPinOutput(D6); - setPinOutput(B4); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(D7, led_state.num_lock); - writePin(D6, led_state.caps_lock); - writePin(B4, led_state.scroll_lock); - } - return true; -} diff --git a/keyboards/panc60/config.h b/keyboards/panc60/config.h index 002ff7cf96..495f5a2d4d 100644 --- a/keyboards/panc60/config.h +++ b/keyboards/panc60/config.h @@ -37,6 +37,8 @@ along with this program. If not, see . #define DIODE_DIRECTION COL2ROW #define DEBOUNCE 5 +#define LED_CAPS_LOCK_PIN D1 + #define BACKLIGHT_PIN D4 #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/panc60/panc60.c b/keyboards/panc60/panc60.c index d7ff52963c..16f298eb8d 100644 --- a/keyboards/panc60/panc60.c +++ b/keyboards/panc60/panc60.c @@ -15,19 +15,3 @@ */ #include "panc60.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(D1); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(D1, led_state.caps_lock); - } - return true; -} diff --git a/keyboards/pandora/config.h b/keyboards/pandora/config.h index 873f6dd150..3a44129c49 100644 --- a/keyboards/pandora/config.h +++ b/keyboards/pandora/config.h @@ -47,6 +47,9 @@ along with this program. If not, see . /* COL2ROW, ROW2COL*/ #define DIODE_DIRECTION COL2ROW +#define LED_CAPS_LOCK_PIN E6 +#define LED_PIN_ON_STATE 0 + /* Encoder Function */ #define ENCODERS_PAD_A { F6 } #define ENCODERS_PAD_B { F5 } diff --git a/keyboards/pandora/pandora.c b/keyboards/pandora/pandora.c index 6c5d8a166f..3d166646b8 100644 --- a/keyboards/pandora/pandora.c +++ b/keyboards/pandora/pandora.c @@ -15,21 +15,3 @@ */ #include "pandora.h" - -void matrix_init_kb(void) { - matrix_init_user(); - led_init_ports(); -}; - -void led_init_ports(void) { - setPinOutput(E6); - writePinHigh(E6); -} - -bool led_update_kb(led_t led_state) { - bool res = led_update_user(led_state); - if(res) { - writePin(E6, !led_state.caps_lock); - } - return res; -} diff --git a/keyboards/pearl/config.h b/keyboards/pearl/config.h index a42b0a5fa5..09e0c8e1e4 100644 --- a/keyboards/pearl/config.h +++ b/keyboards/pearl/config.h @@ -25,6 +25,10 @@ along with this program. If not, see . #define MANUFACTURER Pearl Boards #define PRODUCT Pearl +#define LED_NUM_LOCK_PIN D0 +#define LED_CAPS_LOCK_PIN D1 +#define LED_SCROLL_LOCK_PIN D6 + #define RGBLIGHT_ANIMATIONS #define RGBLED_NUM 12 diff --git a/keyboards/pearl/pearl.c b/keyboards/pearl/pearl.c index b08ee6f888..18ed9835d8 100644 --- a/keyboards/pearl/pearl.c +++ b/keyboards/pearl/pearl.c @@ -16,23 +16,3 @@ along with this program. If not, see . */ #include "pearl.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(D0); - setPinOutput(D1); - setPinOutput(D6); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(D0, led_state.num_lock); - writePin(D1, led_state.caps_lock); - writePin(D6, led_state.scroll_lock); - } - return true; -} diff --git a/keyboards/percent/canoe/canoe.c b/keyboards/percent/canoe/canoe.c index dd31640e6d..572ff50b01 100644 --- a/keyboards/percent/canoe/canoe.c +++ b/keyboards/percent/canoe/canoe.c @@ -16,19 +16,3 @@ along with this program. If not, see . */ #include "canoe.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(D1); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(D1, led_state.caps_lock); - } - return true; -} diff --git a/keyboards/percent/canoe/config.h b/keyboards/percent/canoe/config.h index b8a306b7e1..c349c1106c 100644 --- a/keyboards/percent/canoe/config.h +++ b/keyboards/percent/canoe/config.h @@ -38,6 +38,8 @@ along with this program. If not, see . #define DIODE_DIRECTION COL2ROW #define DEBOUNCE 5 +#define LED_CAPS_LOCK_PIN D1 + #define BACKLIGHT_PIN D4 #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/percent/skog/config.h b/keyboards/percent/skog/config.h index 047bac02e8..524fdc5ccf 100644 --- a/keyboards/percent/skog/config.h +++ b/keyboards/percent/skog/config.h @@ -32,6 +32,9 @@ along with this program. If not, see . #define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, C7, C6, C5, C4, C3, C2 } #define DIODE_DIRECTION COL2ROW +#define LED_CAPS_LOCK_PIN D1 +#define LED_SCROLL_LOCK_PIN D6 + #define RGBLED_NUM 2 #define RGBLIGHT_ANIMATIONS diff --git a/keyboards/percent/skog/skog.c b/keyboards/percent/skog/skog.c index 152fc56845..c44f0373fb 100644 --- a/keyboards/percent/skog/skog.c +++ b/keyboards/percent/skog/skog.c @@ -18,21 +18,3 @@ ps2avrGB support code by Kenneth A. (bminiex/.[ch]) */ #include "skog.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(D1); - setPinOutput(D6); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(D1, led_state.caps_lock); - writePin(D6, led_state.scroll_lock); - } - return true; -} diff --git a/keyboards/percent/skog_lite/config.h b/keyboards/percent/skog_lite/config.h index e28dcfcd2f..15de9bbb89 100644 --- a/keyboards/percent/skog_lite/config.h +++ b/keyboards/percent/skog_lite/config.h @@ -38,6 +38,9 @@ along with this program. If not, see . #define DIODE_DIRECTION COL2ROW #define DEBOUNCE 5 +#define LED_CAPS_LOCK_PIN D1 +#define LED_SCROLL_LOCK_PIN D6 + #define BACKLIGHT_PIN D4 #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/percent/skog_lite/skog_lite.c b/keyboards/percent/skog_lite/skog_lite.c index 95d3982113..c69843e617 100644 --- a/keyboards/percent/skog_lite/skog_lite.c +++ b/keyboards/percent/skog_lite/skog_lite.c @@ -15,21 +15,3 @@ */ #include "skog_lite.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(D1); - setPinOutput(D6); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(D1, led_state.caps_lock); - writePin(D6, led_state.scroll_lock); - } - return true; -} diff --git a/keyboards/phantom/config.h b/keyboards/phantom/config.h index a5d135a4bf..a948987d18 100644 --- a/keyboards/phantom/config.h +++ b/keyboards/phantom/config.h @@ -47,6 +47,9 @@ along with this program. If not, see . /* COL2ROW, ROW2COL */ #define DIODE_DIRECTION ROW2COL +#define LED_CAPS_LOCK_PIN B6 +#define LED_SCROLL_LOCK_PIN B7 + // #define BACKLIGHT_PIN B7 // #define BACKLIGHT_LEVELS 3 // #define BACKLIGHT_BREATHING diff --git a/keyboards/phantom/phantom.c b/keyboards/phantom/phantom.c index 1017de0093..5c478f82aa 100644 --- a/keyboards/phantom/phantom.c +++ b/keyboards/phantom/phantom.c @@ -15,23 +15,3 @@ */ #include "phantom.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(B6); - setPinOutput(B7); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(B6, led_state.caps_lock); - writePin(B7, led_state.scroll_lock); - } - - return true; -} diff --git a/keyboards/rart/rartlice/config.h b/keyboards/rart/rartlice/config.h index 26f9324bd8..fc6fbaa117 100644 --- a/keyboards/rart/rartlice/config.h +++ b/keyboards/rart/rartlice/config.h @@ -43,6 +43,11 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE +#define LED_NUM_LOCK_PIN A8 +#define LED_CAPS_LOCK_PIN B14 +#define LED_SCROLL_LOCK_PIN A9 +#define LED_PIN_ON_STATE 0 + #define RGBLIGHT_ANIMATIONS #define RGB_DI_PIN B15 #define RGBLED_NUM 11 diff --git a/keyboards/rart/rartlice/rartlice.c b/keyboards/rart/rartlice/rartlice.c index be805da33e..a970e96867 100644 --- a/keyboards/rart/rartlice/rartlice.c +++ b/keyboards/rart/rartlice/rartlice.c @@ -14,23 +14,3 @@ */ #include "rartlice.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(A8); - setPinOutput(B14); - setPinOutput(A9); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(A8, !led_state.num_lock); - writePin(B14, !led_state.caps_lock); - writePin(A9, !led_state.scroll_lock); - } - return true; -} diff --git a/keyboards/redscarf_iiplus/verd/config.h b/keyboards/redscarf_iiplus/verd/config.h index 06d606f557..abc3ae3780 100644 --- a/keyboards/redscarf_iiplus/verd/config.h +++ b/keyboards/redscarf_iiplus/verd/config.h @@ -52,6 +52,10 @@ along with this program. If not, see . */ //#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 +#define LED_NUM_LOCK_PIN E6 +#define LED_CAPS_LOCK_PIN C6 +#define LED_PIN_ON_STATE 0 + #define BACKLIGHT_PIN B7 // #define BACKLIGHT_BREATHING #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/redscarf_iiplus/verd/verd.c b/keyboards/redscarf_iiplus/verd/verd.c index c16a5a9740..fa5ef6bd2b 100644 --- a/keyboards/redscarf_iiplus/verd/verd.c +++ b/keyboards/redscarf_iiplus/verd/verd.c @@ -13,30 +13,3 @@ * along with this program. If not, see . */ #include "verd.h" - -// Optional override functions below. -// You can leave any or all of these undefined. -// These are only required if you want to perform custom actions. - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); - led_init_ports(); -} - -void led_init_ports(void) { - setPinOutput(C7); - writePinHigh(C7); - setPinOutput(E6); - writePinHigh(E6); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(C7, !led_state.caps_lock); - writePin(E6, !led_state.num_lock); - } - return true; -} diff --git a/keyboards/reversestudio/decadepad/config.h b/keyboards/reversestudio/decadepad/config.h index 78fd40c405..383a539d78 100644 --- a/keyboards/reversestudio/decadepad/config.h +++ b/keyboards/reversestudio/decadepad/config.h @@ -42,6 +42,9 @@ along with this program. If not, see . /* define if matrix has ghost */ //#define MATRIX_HAS_GHOST +#define LED_NUM_LOCK_PIN D4 +#define LED_PIN_ON_STATE 0 + /* number of backlight levels */ /* Set 0 if debouncing isn't needed */ #define DEBOUNCE 5 diff --git a/keyboards/reversestudio/decadepad/decadepad.c b/keyboards/reversestudio/decadepad/decadepad.c index 32a66e295c..699a4476bb 100644 --- a/keyboards/reversestudio/decadepad/decadepad.c +++ b/keyboards/reversestudio/decadepad/decadepad.c @@ -1,16 +1 @@ #include "decadepad.h" -void matrix_init_kb(void) { - led_init_ports(); - matrix_init_user(); -}; - -void led_init_ports(void) { - setPinOutput(D4); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)){ - writePin(D4, !led_state.num_lock); - } - return true; -} \ No newline at end of file diff --git a/keyboards/singa/config.h b/keyboards/singa/config.h index 408f88b2a4..1d3ed105e1 100644 --- a/keyboards/singa/config.h +++ b/keyboards/singa/config.h @@ -37,6 +37,8 @@ along with this program. If not, see . #define DIODE_DIRECTION COL2ROW #define DEBOUNCE 5 +#define LED_CAPS_LOCK_PIN D1 + #define BACKLIGHT_PIN D4 #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/singa/singa.c b/keyboards/singa/singa.c index 360b214a31..8605d6f471 100644 --- a/keyboards/singa/singa.c +++ b/keyboards/singa/singa.c @@ -15,19 +15,3 @@ */ #include "singa.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(D1); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(D1, led_state.caps_lock); - } - return true; -} diff --git a/keyboards/stella/config.h b/keyboards/stella/config.h index 04ba08239c..512b7571d5 100644 --- a/keyboards/stella/config.h +++ b/keyboards/stella/config.h @@ -47,6 +47,10 @@ along with this program. If not, see . /* COL2ROW, ROW2COL */ #define DIODE_DIRECTION COL2ROW +#define LED_CAPS_LOCK_PIN B3 +#define LED_SCROLL_LOCK_PIN B7 +#define LED_PIN_ON_STATE 0 + #define BACKLIGHT_PIN B6 #define BACKLIGHT_LEVELS 3 #define BACKLIGHT_BREATHING diff --git a/keyboards/stella/stella.c b/keyboards/stella/stella.c index 363c327d6b..5eb55b3668 100644 --- a/keyboards/stella/stella.c +++ b/keyboards/stella/stella.c @@ -15,22 +15,3 @@ */ #include "stella.h" - -void matrix_init_kb(void) { - matrix_init_user(); - led_init_ports(); -}; - -void led_init_ports(void) { - setPinOutput(B3); - setPinOutput(B7); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(B3, !led_state.caps_lock); - writePin(B7, !led_state.scroll_lock); - } - - return true; -} diff --git a/keyboards/tgr/910/910.c b/keyboards/tgr/910/910.c index 63b4a13f7d..8e0c785385 100644 --- a/keyboards/tgr/910/910.c +++ b/keyboards/tgr/910/910.c @@ -15,23 +15,3 @@ */ #include "910.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(D0); - setPinOutput(D1); - setPinOutput(D6); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(D0, led_state.num_lock); - writePin(D1, led_state.caps_lock); - writePin(D6, led_state.scroll_lock); - } - return true; -} diff --git a/keyboards/tgr/910/config.h b/keyboards/tgr/910/config.h index 8cd46a413a..7ba412be35 100644 --- a/keyboards/tgr/910/config.h +++ b/keyboards/tgr/910/config.h @@ -38,6 +38,10 @@ along with this program. If not, see . #define DIODE_DIRECTION COL2ROW #define DEBOUNCE 5 +#define LED_NUM_LOCK_PIN D0 +#define LED_CAPS_LOCK_PIN D1 +#define LED_SCROLL_LOCK_PIN D6 + #define BACKLIGHT_PIN D4 #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/tgr/910ce/910ce.c b/keyboards/tgr/910ce/910ce.c index 4b39131794..7538158c89 100644 --- a/keyboards/tgr/910ce/910ce.c +++ b/keyboards/tgr/910ce/910ce.c @@ -15,19 +15,3 @@ */ #include "910ce.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(D1); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(D1, led_state.caps_lock); - } - return true; -} \ No newline at end of file diff --git a/keyboards/tgr/910ce/config.h b/keyboards/tgr/910ce/config.h index 6d3fe7a494..fd21a2de76 100644 --- a/keyboards/tgr/910ce/config.h +++ b/keyboards/tgr/910ce/config.h @@ -38,6 +38,8 @@ along with this program. If not, see . #define DIODE_DIRECTION COL2ROW #define DEBOUNCE 5 +#define LED_CAPS_LOCK_PIN D1 + #define BACKLIGHT_PIN D4 #define BACKLIGHT_LEVELS 3 #define RGBLIGHT_ANIMATIONS diff --git a/keyboards/tgr/alice/alice.c b/keyboards/tgr/alice/alice.c index a4a5c787c6..39aed2cf56 100644 --- a/keyboards/tgr/alice/alice.c +++ b/keyboards/tgr/alice/alice.c @@ -16,23 +16,3 @@ along with this program. If not, see . */ #include "alice.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(D0); - setPinOutput(D1); - setPinOutput(D6); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(D0, led_state.num_lock); - writePin(D1, led_state.caps_lock); - writePin(D6, led_state.scroll_lock); - } - return true; -} diff --git a/keyboards/tgr/alice/config.h b/keyboards/tgr/alice/config.h index 20f4c5970e..26ed2e7973 100644 --- a/keyboards/tgr/alice/config.h +++ b/keyboards/tgr/alice/config.h @@ -31,6 +31,10 @@ along with this program. If not, see . #define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, C7, C6, C5, C4, C3, C2, D7 } #define DIODE_DIRECTION COL2ROW +#define LED_NUM_LOCK_PIN D0 +#define LED_CAPS_LOCK_PIN D1 +#define LED_SCROLL_LOCK_PIN D6 + #define BACKLIGHT_PIN D4 #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/tgr/jane/config.h b/keyboards/tgr/jane/config.h index ed8b39c38a..0132a716d3 100644 --- a/keyboards/tgr/jane/config.h +++ b/keyboards/tgr/jane/config.h @@ -36,5 +36,8 @@ along with this program. If not, see . #define DIODE_DIRECTION COL2ROW #define DEBOUNCE 5 +#define LED_CAPS_LOCK_PIN D1 +#define LED_SCROLL_LOCK_PIN D6 + #define BACKLIGHT_PIN D4 #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/tgr/jane/jane.c b/keyboards/tgr/jane/jane.c index fabdc0e90c..d4cdebaa25 100644 --- a/keyboards/tgr/jane/jane.c +++ b/keyboards/tgr/jane/jane.c @@ -15,21 +15,3 @@ */ #include "jane.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(D1); - setPinOutput(D6); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(D1, led_state.caps_lock); - writePin(D6, led_state.scroll_lock); - } - return true; -} diff --git a/keyboards/tgr/tris/config.h b/keyboards/tgr/tris/config.h index 4ae3b967cc..16e862a222 100644 --- a/keyboards/tgr/tris/config.h +++ b/keyboards/tgr/tris/config.h @@ -34,6 +34,8 @@ along with this program. If not, see . #define DIODE_DIRECTION COL2ROW #define DEBOUNCE 5 +#define LED_NUM_LOCK_PIN D0 + #define BACKLIGHT_PIN D4 #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/tgr/tris/tris.c b/keyboards/tgr/tris/tris.c index f354d7a393..c2147b29c6 100644 --- a/keyboards/tgr/tris/tris.c +++ b/keyboards/tgr/tris/tris.c @@ -15,19 +15,3 @@ */ #include "tris.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(D0); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(D0, led_state.num_lock); - } - return true; -} diff --git a/keyboards/unikorn/config.h b/keyboards/unikorn/config.h index c68a857d5e..1029a777bb 100644 --- a/keyboards/unikorn/config.h +++ b/keyboards/unikorn/config.h @@ -36,6 +36,8 @@ along with this program. If not, see . #define DIODE_DIRECTION COL2ROW #define DEBOUNCE 5 +#define LED_CAPS_LOCK_PIN D1 + #define BACKLIGHT_PIN D4 #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/unikorn/unikorn.c b/keyboards/unikorn/unikorn.c index c2c85eb984..d803ebf9da 100644 --- a/keyboards/unikorn/unikorn.c +++ b/keyboards/unikorn/unikorn.c @@ -15,19 +15,3 @@ */ #include "unikorn.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(D1); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(D1, led_state.caps_lock); - } - return true; -} diff --git a/keyboards/vn66/config.h b/keyboards/vn66/config.h index e30c1b19d3..d809541841 100644 --- a/keyboards/vn66/config.h +++ b/keyboards/vn66/config.h @@ -47,6 +47,9 @@ along with this program. If not, see . /* COL2ROW, ROW2COL */ #define DIODE_DIRECTION COL2ROW +#define LED_CAPS_LOCK_PIN E6 +#define LED_PIN_ON_STATE 0 + #define BACKLIGHT_PIN B6 #define BACKLIGHT_LEVELS 4 #define BACKLIGHT_BREATHING diff --git a/keyboards/vn66/vn66.c b/keyboards/vn66/vn66.c index 77fe23aefe..5631359040 100644 --- a/keyboards/vn66/vn66.c +++ b/keyboards/vn66/vn66.c @@ -15,20 +15,3 @@ */ #include "vn66.h" - -void matrix_init_kb(void) { - led_init_ports(); - matrix_init_user(); -} - -void led_init_ports(void) { - setPinOutput(E6); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(E6, !led_state.caps_lock); - } - - return true; -} diff --git a/keyboards/winkeyless/bface/bface.c b/keyboards/winkeyless/bface/bface.c index 7d27096bad..c1fcbe53b2 100644 --- a/keyboards/winkeyless/bface/bface.c +++ b/keyboards/winkeyless/bface/bface.c @@ -15,23 +15,3 @@ */ #include "bface.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(D0); - setPinOutput(D1); - setPinOutput(D6); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(D0, led_state.num_lock); - writePin(D1, led_state.caps_lock); - writePin(D6, led_state.scroll_lock); - } - return true; -} diff --git a/keyboards/winkeyless/bface/config.h b/keyboards/winkeyless/bface/config.h index 27ee761e9b..83fcfa0276 100644 --- a/keyboards/winkeyless/bface/config.h +++ b/keyboards/winkeyless/bface/config.h @@ -35,6 +35,10 @@ along with this program. If not, see . #define DIODE_DIRECTION COL2ROW +#define LED_NUM_LOCK_PIN D0 +#define LED_CAPS_LOCK_PIN D1 +#define LED_SCROLL_LOCK_PIN D6 + #define RGBLED_NUM 16 #define RGBLIGHT_ANIMATIONS diff --git a/keyboards/winkeyless/bmini/bmini.c b/keyboards/winkeyless/bmini/bmini.c index 6529d44033..f44fd36a8c 100644 --- a/keyboards/winkeyless/bmini/bmini.c +++ b/keyboards/winkeyless/bmini/bmini.c @@ -16,23 +16,3 @@ along with this program. If not, see . */ #include "bmini.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(D0); - setPinOutput(D1); - setPinOutput(D6); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(D0, led_state.num_lock); - writePin(D1, led_state.caps_lock); - writePin(D6, led_state.scroll_lock); - } - return true; -} diff --git a/keyboards/winkeyless/bmini/config.h b/keyboards/winkeyless/bmini/config.h index 6e91241af8..1f7759faf9 100644 --- a/keyboards/winkeyless/bmini/config.h +++ b/keyboards/winkeyless/bmini/config.h @@ -34,6 +34,10 @@ along with this program. If not, see . #define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, C7, C6, C5, C4, C3, C2, D7 } #define DIODE_DIRECTION COL2ROW +#define LED_NUM_LOCK_PIN D0 +#define LED_CAPS_LOCK_PIN D1 +#define LED_SCROLL_LOCK_PIN D6 + #define RGBLIGHT_ANIMATIONS #define BACKLIGHT_PIN D4 diff --git a/keyboards/winkeyless/bminiex/bminiex.c b/keyboards/winkeyless/bminiex/bminiex.c index 676f88ebf5..db127e030d 100644 --- a/keyboards/winkeyless/bminiex/bminiex.c +++ b/keyboards/winkeyless/bminiex/bminiex.c @@ -16,23 +16,3 @@ along with this program. If not, see . */ #include "bminiex.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(D0); - setPinOutput(D1); - setPinOutput(D6); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(D0, led_state.num_lock); - writePin(D1, led_state.caps_lock); - writePin(D6, led_state.scroll_lock); - } - return true; -} diff --git a/keyboards/winkeyless/bminiex/config.h b/keyboards/winkeyless/bminiex/config.h index 7c9c11c111..412d10a2aa 100644 --- a/keyboards/winkeyless/bminiex/config.h +++ b/keyboards/winkeyless/bminiex/config.h @@ -34,6 +34,10 @@ along with this program. If not, see . #define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, C7, C6, C5, C4, C3, C2, D7 } #define DIODE_DIRECTION COL2ROW +#define LED_NUM_LOCK_PIN D0 +#define LED_CAPS_LOCK_PIN D1 +#define LED_SCROLL_LOCK_PIN D6 + #define RGBLIGHT_ANIMATIONS #define BACKLIGHT_PIN D4 diff --git a/keyboards/xbows/knight/config.h b/keyboards/xbows/knight/config.h index a6d0d80664..fbe1504398 100644 --- a/keyboards/xbows/knight/config.h +++ b/keyboards/xbows/knight/config.h @@ -20,6 +20,10 @@ /* define if matrix has ghost */ //#define MATRIX_HAS_GHOST +#define LED_NUM_LOCK_PIN D1 +#define LED_CAPS_LOCK_PIN C7 +#define LED_PIN_ON_STATE 0 + /* number of backlight levels */ // #define BACKLIGHT_LEVELS 3 #define BACKLIGHT_PIN B7 diff --git a/keyboards/xbows/knight/knight.c b/keyboards/xbows/knight/knight.c index dcc5035d51..cb79d9d584 100644 --- a/keyboards/xbows/knight/knight.c +++ b/keyboards/xbows/knight/knight.c @@ -1,23 +1 @@ #include "knight.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); - led_init_ports(); -} - -void led_init_ports(void) { - setPinOutput(D1); - writePinHigh(D1); - setPinOutput(C7); - writePinHigh(C7); -} -bool led_update_kb(led_t led_state) { - if(led_update_user(led_state)) { - writePin(C7, !led_state.caps_lock); - writePin(D1, !led_state.num_lock); - } - return true; -} diff --git a/keyboards/xd68/config.h b/keyboards/xd68/config.h index 5c450c68ae..4fbb66b815 100644 --- a/keyboards/xd68/config.h +++ b/keyboards/xd68/config.h @@ -47,6 +47,9 @@ along with this program. If not, see . /* COL2ROW, ROW2COL*/ #define DIODE_DIRECTION COL2ROW +#define LED_CAPS_LOCK_PIN B2 +#define LED_PIN_ON_STATE 0 + #define BACKLIGHT_PIN F5 #define BACKLIGHT_LEVELS 6 #define BACKLIGHT_BREATHING diff --git a/keyboards/xd68/xd68.c b/keyboards/xd68/xd68.c index 2a5a52bdae..45e8a2b958 100755 --- a/keyboards/xd68/xd68.c +++ b/keyboards/xd68/xd68.c @@ -1,22 +1 @@ #include "xd68.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - matrix_init_user(); - led_init_ports(); -} - -void led_init_ports(void) { - // * Set our LED pins as output - setPinOutput(B2); - writePinHigh(B2); -} - -bool led_update_kb(led_t led_state) { - if(led_update_user(led_state)) { - writePin(B2, !led_state.caps_lock); - } - return true; -} - diff --git a/keyboards/xd87/config.h b/keyboards/xd87/config.h index 7ed104c23f..aa07e3225c 100644 --- a/keyboards/xd87/config.h +++ b/keyboards/xd87/config.h @@ -49,6 +49,9 @@ along with this program. If not, see . /* COL2ROW, ROW2COL*/ #define DIODE_DIRECTION COL2ROW +#define LED_CAPS_LOCK_PIN E2 +#define LED_PIN_ON_STATE 0 + #define BACKLIGHT_PIN D0 // #define BACKLIGHT_BREATHING #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/xd87/xd87.c b/keyboards/xd87/xd87.c index a41b4f2dba..1d21357e66 100644 --- a/keyboards/xd87/xd87.c +++ b/keyboards/xd87/xd87.c @@ -14,38 +14,3 @@ * along with this program. If not, see . */ #include "xd87.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - led_init_ports(); - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -bool led_update_kb(led_t led_state) { - bool res = led_update_user(led_state); - - if (res) { - writePin(E2, !led_state.caps_lock); - } - - return res; -} - -void led_init_ports(void) { - setPinOutput(E2); -} diff --git a/keyboards/ymd75/config.h b/keyboards/ymd75/config.h index 79dcdc6c43..a828c4d64b 100644 --- a/keyboards/ymd75/config.h +++ b/keyboards/ymd75/config.h @@ -29,6 +29,8 @@ along with this program. If not, see . #define BACKLIGHT_LEVELS 12 +#define LED_CAPS_LOCK_PIN D1 + #define RGB_DI_PIN E2 #define RGBLED_NUM 16 #define RGBLIGHT_ANIMATIONS diff --git a/keyboards/ymd75/rev1/rev1.c b/keyboards/ymd75/rev1/rev1.c index 0870a6cc02..c1ad021b15 100644 --- a/keyboards/ymd75/rev1/rev1.c +++ b/keyboards/ymd75/rev1/rev1.c @@ -16,19 +16,3 @@ along with this program. If not, see . */ #include "ymd75.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(D1); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(D1, led_state.caps_lock); - } - return true; -} diff --git a/keyboards/ymd75/rev2/rev2.c b/keyboards/ymd75/rev2/rev2.c index 0870a6cc02..c1ad021b15 100644 --- a/keyboards/ymd75/rev2/rev2.c +++ b/keyboards/ymd75/rev2/rev2.c @@ -16,19 +16,3 @@ along with this program. If not, see . */ #include "ymd75.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(D1); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(D1, led_state.caps_lock); - } - return true; -} diff --git a/keyboards/ymd75/rev3/rev3.c b/keyboards/ymd75/rev3/rev3.c index 96e1a47549..c1ad021b15 100644 --- a/keyboards/ymd75/rev3/rev3.c +++ b/keyboards/ymd75/rev3/rev3.c @@ -16,17 +16,3 @@ along with this program. If not, see . */ #include "ymd75.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { setPinOutput(D1); } - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(D1, led_state.caps_lock); - } - return true; -} diff --git a/keyboards/ymd96/config.h b/keyboards/ymd96/config.h index 6f50c7324d..55c5beaf3e 100644 --- a/keyboards/ymd96/config.h +++ b/keyboards/ymd96/config.h @@ -35,6 +35,10 @@ along with this program. If not, see . /* COL2ROW or ROW2COL */ #define DIODE_DIRECTION COL2ROW +#define LED_NUM_LOCK_PIN D0 +#define LED_CAPS_LOCK_PIN D1 +#define LED_PIN_ON_STATE 0 + #define BACKLIGHT_PIN D4 #define BACKLIGHT_LEVELS 12 #define BACKLIGHT_BREATHING diff --git a/keyboards/ymd96/ymd96.c b/keyboards/ymd96/ymd96.c index 5841decdab..0c212f4abb 100644 --- a/keyboards/ymd96/ymd96.c +++ b/keyboards/ymd96/ymd96.c @@ -17,21 +17,3 @@ along with this program. If not, see . */ #include "ymd96.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(D0); - setPinOutput(D1); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(D0, led_state.num_lock); - writePin(D1, led_state.caps_lock); - } - return true; -} diff --git a/keyboards/ymdk/bface/bface.c b/keyboards/ymdk/bface/bface.c index b35b333763..fabc10498a 100644 --- a/keyboards/ymdk/bface/bface.c +++ b/keyboards/ymdk/bface/bface.c @@ -15,19 +15,3 @@ * along with this program. If not, see . */ #include "quantum.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(D1); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(D1, led_state.caps_lock); - } - return true; -} diff --git a/keyboards/ymdk/bface/config.h b/keyboards/ymdk/bface/config.h index 3d9605b75a..6be1c86623 100644 --- a/keyboards/ymdk/bface/config.h +++ b/keyboards/ymdk/bface/config.h @@ -34,6 +34,8 @@ along with this program. If not, see . #define DIODE_DIRECTION COL2ROW +#define LED_CAPS_LOCK_PIN D1 + #define BACKLIGHT_PIN D4 #define BACKLIGHT_LEVELS 6 diff --git a/keyboards/ymdk_np21/config.h b/keyboards/ymdk_np21/config.h index 1ea6fb0ce3..83423792b0 100644 --- a/keyboards/ymdk_np21/config.h +++ b/keyboards/ymdk_np21/config.h @@ -46,6 +46,8 @@ along with this program. If not, see . /* COL2ROW, ROW2COL */ #define DIODE_DIRECTION COL2ROW +#define LED_NUM_LOCK_PIN D0 + #define BACKLIGHT_PIN D4 #define BACKLIGHT_LEVELS 12 #define BACKLIGHT_BREATHING diff --git a/keyboards/ymdk_np21/ymdk_np21.c b/keyboards/ymdk_np21/ymdk_np21.c index 63812c9360..3ca0e8baa0 100644 --- a/keyboards/ymdk_np21/ymdk_np21.c +++ b/keyboards/ymdk_np21/ymdk_np21.c @@ -17,19 +17,3 @@ along with this program. If not, see . */ #include "ymdk_np21.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(D0); -} - -bool led_update_kb(led_t led_state) { - if (led_update_user(led_state)) { - writePin(D0, led_state.num_lock); - } - return true; -} From 0ad7833ca408938fb8083e4ce990348773b5fa4e Mon Sep 17 00:00:00 2001 From: Alexander Kagno Date: Thu, 11 Mar 2021 11:01:53 -0700 Subject: [PATCH 044/613] [Keymap] arkag Userspace updated (#12183) Co-authored-by: Alex --- keyboards/mechmini/v2/keymaps/arkag/keymap.c | 39 ++-- keyboards/mechmini/v2/keymaps/arkag/rules.mk | 2 +- users/arkag/arkag.c | 234 ++++++------------- users/arkag/arkag.h | 55 +---- 4 files changed, 93 insertions(+), 237 deletions(-) diff --git a/keyboards/mechmini/v2/keymaps/arkag/keymap.c b/keyboards/mechmini/v2/keymaps/arkag/keymap.c index 4f4cbda3f3..ee1afff055 100644 --- a/keyboards/mechmini/v2/keymaps/arkag/keymap.c +++ b/keyboards/mechmini/v2/keymaps/arkag/keymap.c @@ -10,33 +10,34 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_QWERTY] = LAYOUT_2u_space_ortho( KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, - KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, QUOTE, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, - M_PMOD, LRALT, M_SMOD, LOWER, RAISE, KC_SPC, MEDIA, FUNCT, XXXXXXX, GAME , KC_LEAD), + M_PMOD, M_SMOD, KC_LALT, MEDIA, SYMBOL, KC_SPC, ARROW, FUNCT, XXXXXXX, KC_RALT, KC_LEAD), - [_RAISE] = LAYOUT_2u_space_ortho( - GRAVE, _______, _______, _______, _______, _______, _______, KC_7, KC_8, KC_9, _______, _______, - _______, OBRACK, CBRACK, KC_EQL, HYPHEN, _______, _______, KC_4, KC_5, KC_6, _______, KC_NLCK, - _______, _______, _______, CEDILLA, _______, KC_COMM, KC_PDOT, KC_1, KC_2, KC_3, KC_BSLS, KC_PENT, - _______, _______, _______, KEEB, _______, _______, KC_0, KC_PSLS, KC_PMNS, KC_PPLS, KC_PAST), - [_LOWER] = LAYOUT_2u_space_ortho( + [_SYMBOL] = LAYOUT_2u_space_ortho( + KC_GRV, KC_LPRN, KC_RPRN, KC_PLUS, KC_UNDS, KC_CIRC, KC_AMPR, KC_7, KC_8, KC_9, _______, _______, + KC_LCBR, KC_LBRC, KC_RBRC, KC_EQL, KC_MINS, KC_ASTR, KC_PIPE, KC_4, KC_5, KC_6, _______, KC_NLCK, + KC_RCBR, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_PDOT, KC_1, KC_2, KC_3, KC_BSLS, KC_PENT, + M_DASH, KC_TILD, _______, KEEB, _______, _______, KC_0, KC_PSLS, KC_PMNS, KC_PPLS, KC_PAST), + + [_MEDIA] = LAYOUT_2u_space_ortho( + _______, _______, _______, KC_VOLU, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, KC_MPRV, KC_VOLD, KC_MNXT, _______, _______, _______, _______, _______, _______, _______, + KC_MPLY, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + KC_MUTE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + + [_ARROW] = LAYOUT_2u_space_ortho( _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, LRALT, _______, _______, _______, _______, _______, _______, _______, _______, _______), - - [_MEDIA] = LAYOUT_2u_space_ortho( - _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, _______, _______, KC_MUTE, - _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, KC_MPLY, _______, _______, _______, _______, _______), + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), [_FUNCT] = LAYOUT_2u_space_ortho( KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, M_SFT, M_SPC, M_OS ), + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, M_OS ), [_KEEB] = LAYOUT_2u_space_ortho( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -44,10 +45,4 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { RGB_M_P, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), - [_GAMING] = LAYOUT_2u_space_ortho( - KC_ESC, KC_F13, KC_1, KC_2, KC_3, KC_4, KC_5, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - KC_TAB, KC_F14, KC_Q, KC_W, KC_E, KC_R, KC_T, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - KC_LSFT, KC_F15, KC_A, KC_S, KC_D, KC_F, KC_G, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - KC_LCTL, KC_F16, KC_Z, KC_X, KC_C, KC_SPC, XXXXXXX, XXXXXXX, XXXXXXX, GAME, XXXXXXX), - }; diff --git a/keyboards/mechmini/v2/keymaps/arkag/rules.mk b/keyboards/mechmini/v2/keymaps/arkag/rules.mk index 64f65f7062..d46e72f751 100644 --- a/keyboards/mechmini/v2/keymaps/arkag/rules.mk +++ b/keyboards/mechmini/v2/keymaps/arkag/rules.mk @@ -9,7 +9,7 @@ NKRO_ENABLE = yes BACKLIGHT_ENABLE = no AUDIO_ENABLE = no RGBLIGHT_ENABLE = yes -TAP_DANCE_ENABLE = yes +TAP_DANCE_ENABLE = no UNICODE_ENABLE = yes LEADER_ENABLE = yes diff --git a/users/arkag/arkag.c b/users/arkag/arkag.c index 9e8c7af247..97f84d8f02 100644 --- a/users/arkag/arkag.c +++ b/users/arkag/arkag.c @@ -68,14 +68,14 @@ void reset_color(void) { Color mod_color(Color current_color, bool should_add, uint8_t change_amount) { save_color(underglow); - int addlim = 359 - change_amount; + int addlim = HUE_MAX - change_amount; int sublim = change_amount; int leftovers; if (should_add) { if (current_color.h <= addlim) { current_color.h += change_amount; } else { - leftovers = (359 + change_amount) % 359; + leftovers = (HUE_MAX + change_amount) % HUE_MAX; current_color.h = 0 + leftovers; } } else { @@ -83,7 +83,7 @@ Color mod_color(Color current_color, bool should_add, uint8_t change_amount) { current_color.h -= change_amount; } else { leftovers = change_amount - current_color.h; - current_color.h = 359 - leftovers; + current_color.h = HUE_MAX - leftovers; } } return current_color; @@ -99,7 +99,6 @@ void check_state (void) { if (slept) {rgblight_mode_noeeprom(1);} activated = true; deactivated = false; - slept = false; } fade_interval = velocikey_match_speed(1, 25); if (timer_elapsed(active_timer) < INACTIVE_DELAY) {return;} @@ -111,21 +110,9 @@ void check_state (void) { if (!deactivated) { deactivated = true; activated = false; - slept = false; } velocikey_decelerate(); fade_interval = velocikey_match_speed(1, 25); - if (timer_elapsed(active_timer) < SLEEP_DELAY) {return;} - state = sleeping; - return; - - case sleeping: - if (!slept) { - rgblight_mode_noeeprom(5); - slept = true; - activated = false; - deactivated = false; - } return; case boot: @@ -140,7 +127,7 @@ void fade_rgb (void) { if (timer_elapsed(fade_timer) < fade_interval) {return;} switch (fade_state) { case add_fade: - if (underglow.h == 359) { + if (underglow.h == HUE_MAX) { fade_state = sub_fade; return; } @@ -200,17 +187,17 @@ void set_os (uint8_t os, bool update) { switch (os) { case OS_MAC: set_unicode_input_mode(UC_OSX); - underglow = (Color){ 300, 255, 255 }; + underglow = (Color){ 213, 255, 255 }; mod_primary_mask = MOD_GUI_MASK; break; case OS_WIN: set_unicode_input_mode(UC_WINC); - underglow = (Color){ 180, 255, 255 }; + underglow = (Color){ 128, 255, 255 }; mod_primary_mask = MOD_CTL_MASK; break; case OS_NIX: set_unicode_input_mode(UC_LNX); - underglow = (Color){ 60, 255, 255 }; + underglow = (Color){ 43, 255, 255 }; mod_primary_mask = MOD_CTL_MASK; break; default: @@ -258,6 +245,18 @@ void sec_mod(bool press) { } } +void multi_tap(uint8_t num_of_chars, uint16_t keycode, bool use_shift) { + if (use_shift) { + register_code(KC_LSFT); + } + for (int i = 0; i < num_of_chars; i++) { + tap_code(keycode); + } + if (use_shift) { + unregister_code(KC_LSFT); + } +} + void surround_type(uint8_t num_of_chars, uint16_t keycode, bool use_shift) { if (use_shift) { register_code(KC_LSFT); @@ -283,102 +282,6 @@ void long_keystroke(size_t num_of_keys, uint16_t keys[]) { } } -void dance_grv (qk_tap_dance_state_t *state, void *user_data) { - if (state->count == 1) { - tap_code(KC_GRV); - if (aesthetic) { - tap_code(KC_SPACE); - } - } else if (state->count == 2) { - surround_type(2, KC_GRAVE, false); - } else { - surround_type(6, KC_GRAVE, false); - } -} - -void dance_quot (qk_tap_dance_state_t *state, void *user_data) { - if (state->count == 1) { - tap_code(KC_QUOT); - if (aesthetic) { - tap_code(KC_SPACE); - } - } else if (state->count == 2) { - surround_type(2, KC_QUOTE, false); - } else if (state->count == 3) { - surround_type(2, KC_QUOTE, true); - } -} - -void dance_hyph (qk_tap_dance_state_t *state, void *user_data) { - if (state->count == 1) { - tap_code(KC_MINS); - if (aesthetic) { - tap_code(KC_SPACE); - } - } else if (state->count == 2) { - register_code(KC_LSFT); - tap_code(KC_MINS); - if (aesthetic) { - tap_code(KC_SPACE); - } - unregister_code(KC_LSFT); - } else if (state->count == 3) { - send_unicode_hex_string("2014"); - } -} - -void dance_obrck (qk_tap_dance_state_t *state, void *user_data) { - if (state->count == 1) { - tap_code(KC_LBRC); - if (aesthetic) { - tap_code(KC_SPACE); - } - } else if (state->count == 2) { - register_code(KC_LSFT); - tap_code(KC_9); - if (aesthetic) { - tap_code(KC_SPACE); - } - unregister_code(KC_LSFT); - } -} - -void dance_cbrck (qk_tap_dance_state_t *state, void *user_data) { - if (state->count == 1) { - tap_code(KC_RBRC); - if (aesthetic) { - tap_code(KC_SPACE); - } - } else if (state->count == 2) { - register_code(KC_LSFT); - tap_code(KC_0); - if (aesthetic) { - tap_code(KC_SPACE); - } - unregister_code(KC_LSFT); - } -} - -void dance_game (qk_tap_dance_state_t *state, void *user_data) { - if (state->count == 1) { - - } else if (state->count == 2) { - - } else if (state->count == 3) { - uint8_t layer = biton32(layer_state); - if (layer == _QWERTY) { - layer_off(_QWERTY); - layer_on(_GAMING); - // swirling rgb - rgblight_mode_noeeprom(12); - } else { - layer_off(_GAMING); - layer_on(_QWERTY); - rgblight_mode_noeeprom(1); - } - } -} - void matrix_init_user(void) { current_os = eeprom_read_byte(EECONFIG_USERSPACE); set_os(current_os, false); @@ -402,12 +305,6 @@ void matrix_scan_user(void) { return; } } - SEQ_TWO_KEYS(KC_LSFT, M_PMOD) { - if (current_os == OS_WIN) { - long_keystroke(3, (uint16_t[]){KC_LCTL, KC_LSFT, KC_ESC}); - } else { - } - } SEQ_TWO_KEYS(KC_S, KC_S) { if (current_os == OS_MAC) { long_keystroke(3, (uint16_t[]){KC_LGUI, KC_LSFT, KC_4}); @@ -423,6 +320,18 @@ void matrix_scan_user(void) { } else { } } + SEQ_THREE_KEYS(KC_C, KC_A, KC_E) { + if (current_os == OS_WIN) { + long_keystroke(3, (uint16_t[]){KC_LCTL, KC_LALT, KC_END}); + } else { + } + } + SEQ_THREE_KEYS(KC_C, KC_S, KC_E) { + if (current_os == OS_WIN) { + long_keystroke(3, (uint16_t[]){KC_LCTL, KC_LSFT, KC_ESC}); + } else { + } + } SEQ_FOUR_KEYS(KC_C, KC_A, KC_L, KC_C) { if (current_os == OS_WIN) { SEND_STRING(SS_TAP(X_CALCULATOR)); @@ -460,6 +369,12 @@ void matrix_scan_user(void) { SEQ_TWO_KEYS(KC_E, KC_E) { send_unicode_hex_string("00E9"); } + SEQ_TWO_KEYS(KC_T, KC_I) { + surround_type(4, KC_MINS, true); + } + SEQ_TWO_KEYS(KC_T, KC_B) { + surround_type(4, KC_8, true); + } // end format functions // start fancy functions @@ -468,11 +383,16 @@ void matrix_scan_user(void) { pri_mod(true); tap_code(KC_V); pri_mod(false); - tap_code(KC_RGHT); - tap_code(KC_RGHT); - tap_code(KC_RGHT); + multi_tap(3, KC_RGHT, false); tap_code(KC_ENTER); } + SEQ_THREE_KEYS(KC_T, KC_C, KC_ENT) { + multi_tap(3, KC_GRAVE, false); + pri_mod(true); + tap_code(KC_V); + pri_mod(false); + multi_tap(2, KC_ENTER, false); + } // end fancy functions // start typing functions @@ -483,26 +403,34 @@ void matrix_scan_user(void) { SEQ_TWO_KEYS(KC_D, KC_D) { SEND_STRING(".\\Administrator"); } + SEQ_THREE_KEYS(KC_D, KC_D, KC_D) { + SEND_STRING(".\\Administrator"); + tap_code(KC_TAB); + pri_mod(true); + tap_code(KC_V); + pri_mod(false); + tap_code(KC_ENTER); + } SEQ_THREE_KEYS(KC_L, KC_O, KC_D) { // ಠ__ಠ send_unicode_hex_string("0CA0 005F 005F 0CA0"); } - SEQ_FOUR_KEYS(KC_R, KC_E, KC_P, KC_O) { + SEQ_THREE_KEYS(KC_M, KC_A, KC_P) { SEND_STRING("https://github.com/qmk/qmk_firmware/tree/master/users/arkag"); } - SEQ_FOUR_KEYS(KC_F, KC_L, KC_I, KC_P) { + SEQ_TWO_KEYS(KC_F, KC_F) { // (╯‵Д′)╯彡┻â”â”» send_unicode_hex_string("0028 256F 2035 0414 2032 0029 256F 5F61 253B 2501 253B"); } - SEQ_FIVE_KEYS(KC_U, KC_F, KC_L, KC_I, KC_P) { + SEQ_THREE_KEYS(KC_F, KC_F, KC_F) { // ┬─┬ノ( º _ º ノ) send_unicode_hex_string("252C 2500 252C 30CE 0028 0020 00BA 0020 005F 0020 00BA 0020 30CE 0029"); } - SEQ_FIVE_KEYS(KC_L, KC_E, KC_N, KC_N, KC_Y) { + SEQ_THREE_KEYS(KC_L, KC_E, KC_N) { // ( ͡° ͜ʖ ͡°) send_unicode_hex_string("0028 0020 0361 00B0 0020 035C 0296 0020 0361 00B0 0029"); } - SEQ_FIVE_KEYS(KC_S, KC_H, KC_R, KC_U, KC_G) { + SEQ_THREE_KEYS(KC_S, KC_S, KC_S) { // ¯\_(ツ)_/¯ send_unicode_hex_string("00AF 005C 005F 0028 30C4 0029 005F 002F 00AF"); } @@ -541,7 +469,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case KC_A ... KC_Z: if (record->event.pressed) { - int shift = rand() % 2; + static int shift_int = 1; + int shift = shift_int % 2; + shift_int++; state = active; velocikey_accelerate(); if (shift == 1){ @@ -578,36 +508,13 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { if (record->event.pressed){ set_os((current_os+1) % _OS_COUNT, true); } - return false; - case M_SPC: - if(record->event.pressed){ - if (aesthetic) { - aesthetic = false; - rgblight_mode_noeeprom(1); - } else { - aesthetic = true; - shifty = false; - // snake mode - rgblight_mode_noeeprom(20); - } - return false; - } - - case M_SFT: - if(record->event.pressed){ - if (shifty) { - shifty = false; - rgblight_mode_noeeprom(1); - } else { - shifty = true; - aesthetic = false; - // knight mode - rgblight_mode_noeeprom(23); - } - return false; + case M_DASH: + if (record->event.pressed){ + send_unicode_hex_string("2014"); } + return false; default: if (record->event.pressed) { @@ -617,14 +524,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return true; } } - -//Tap Dance Definitions -qk_tap_dance_action_t tap_dance_actions[] = { - [TD_GRV_3GRV] = ACTION_TAP_DANCE_FN (dance_grv), - [TD_SING_DOUB] = ACTION_TAP_DANCE_FN (dance_quot), - [TD_HYPH_UNDR] = ACTION_TAP_DANCE_FN (dance_hyph), - [TD_BRCK_PARN_O] = ACTION_TAP_DANCE_FN (dance_obrck), - [TD_BRCK_PARN_C] = ACTION_TAP_DANCE_FN (dance_cbrck), - [TD_LALT_RALT] = ACTION_TAP_DANCE_DOUBLE (KC_LALT, KC_RALT), - [TD_GAME] = ACTION_TAP_DANCE_FN (dance_game), -}; diff --git a/users/arkag/arkag.h b/users/arkag/arkag.h index fdc4a5fee6..b78234ca93 100644 --- a/users/arkag/arkag.h +++ b/users/arkag/arkag.h @@ -5,20 +5,9 @@ #define EECONFIG_USERSPACE (uint8_t *)20 -#define LRALT TD(TD_LALT_RALT) -#define QUOTE TD(TD_SING_DOUB) -#define GRAVE TD(TD_GRV_3GRV) -#define OBRACK TD(TD_BRCK_PARN_O) -#define CBRACK TD(TD_BRCK_PARN_C) -#define THREE TD(TD_3_GRV_ACT) -#define STRIKE TD(TD_STRK_SHOT) -#define HYPHEN TD(TD_HYPH_UNDR) -#define CEDILLA TD(TD_C_CED) -#define GAME TD(TD_GAME) - -#define RAISE MO(1) -#define LOWER MO(2) -#define MEDIA MO(3) +#define SYMBOL MO(1) +#define MEDIA MO(2) +#define ARROW MO(3) #define FUNCT MO(4) #define KEEB MO(5) @@ -34,14 +23,15 @@ #define INACTIVE_DELAY 250 #define SLEEP_DELAY 180000 +#define HUE_MAX 254 + enum { _QWERTY = 0, - _RAISE, - _LOWER, + _SYMBOL, _MEDIA, + _ARROW, _FUNCT, _KEEB, - _GAMING, }; typedef enum { @@ -71,7 +61,6 @@ typedef enum { typedef enum { active = 0, inactive, - sleeping, boot, } activityState; @@ -79,22 +68,7 @@ enum custom_keycodes { M_PMOD = SAFE_RANGE, M_SMOD, M_OS, - M_SFT, - M_SPC, -}; - -enum tapdances { - TD_3_GRV_ACT = 0, - TD_C_CED, - TD_GRV_3GRV, - TD_SLSH_HTTP, - TD_SING_DOUB, - TD_HYPH_UNDR, - TD_SPECIAL, - TD_BRCK_PARN_O, - TD_BRCK_PARN_C, - TD_LALT_RALT, - TD_GAME, + M_DASH, }; void velocikey_accelerate(void); @@ -123,17 +97,8 @@ void pri_mod(bool press); void sec_mod(bool press); +void multi_tap(uint8_t num_of_chars, uint16_t keycode, bool use_shift); + void surround_type(uint8_t num_of_chars, uint16_t keycode, bool use_shift); void long_keystroke(size_t num_of_keys, uint16_t keys[]); - -void dance_grv (qk_tap_dance_state_t *state, void *user_data); -void dance_quot (qk_tap_dance_state_t *state, void *user_data); -void dance_strk (qk_tap_dance_state_t *state, void *user_data); -void dance_3 (qk_tap_dance_state_t *state, void *user_data); -void dance_c (qk_tap_dance_state_t *state, void *user_data); -void dance_game (qk_tap_dance_state_t *state, void *user_data); - -int cur_dance (qk_tap_dance_state_t *state); -void spc_finished (qk_tap_dance_state_t *state, void *user_data); -void spc_reset (qk_tap_dance_state_t *state, void *user_data); From ea2a7c5ea4c4509ea7008a835eb9b98b0b1c05d6 Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Fri, 12 Mar 2021 17:33:48 +1100 Subject: [PATCH 045/613] ChibiOS conf upgrade for boston (#12170) boston - 8bded9dabff58de6febd927d4ad976bb743696a3 --- keyboards/boston/chconf.h | 715 ++----------------------------------- keyboards/boston/halconf.h | 535 ++------------------------- keyboards/boston/mcuconf.h | 180 +--------- 3 files changed, 61 insertions(+), 1369 deletions(-) diff --git a/keyboards/boston/chconf.h b/keyboards/boston/chconf.h index 7ac8a7de5d..5430009c1a 100644 --- a/keyboards/boston/chconf.h +++ b/keyboards/boston/chconf.h @@ -1,700 +1,27 @@ +/* Copyright 2020 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + /* - ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -/** - * @file rt/templates/chconf.h - * @brief Configuration file template. - * @details A copy of this file must be placed in each project directory, it - * contains the application specific kernel settings. - * - * @addtogroup config - * @details Kernel related settings and hooks. - * @{ - */ - -#ifndef CHCONF_H -# define CHCONF_H - -# define _CHIBIOS_RT_CONF_ -# define _CHIBIOS_RT_CONF_VER_6_0_ - -/*===========================================================================*/ -/** - * @name System timers settings - * @{ - */ -/*===========================================================================*/ - -/** - * @brief System time counter resolution. - * @note Allowed values are 16 or 32 bits. - */ -# if !defined(CH_CFG_ST_RESOLUTION) -# define CH_CFG_ST_RESOLUTION 32 -# endif - -/** - * @brief System tick frequency. - * @details Frequency of the system timer that drives the system ticks. This - * setting also defines the system tick time unit. - */ -# if !defined(CH_CFG_ST_FREQUENCY) -# define CH_CFG_ST_FREQUENCY 10000 -# endif - -/** - * @brief Time intervals data size. - * @note Allowed values are 16, 32 or 64 bits. - */ -# if !defined(CH_CFG_INTERVALS_SIZE) -# define CH_CFG_INTERVALS_SIZE 32 -# endif - -/** - * @brief Time types data size. - * @note Allowed values are 16 or 32 bits. - */ -# if !defined(CH_CFG_TIME_TYPES_SIZE) -# define CH_CFG_TIME_TYPES_SIZE 32 -# endif - -/** - * @brief Time delta constant for the tick-less mode. - * @note If this value is zero then the system uses the classic - * periodic tick. This value represents the minimum number - * of ticks that is safe to specify in a timeout directive. - * The value one is not valid, timeouts are rounded up to - * this value. - */ -# if !defined(CH_CFG_ST_TIMEDELTA) -# define CH_CFG_ST_TIMEDELTA 2 -# endif - -/** @} */ - -/*===========================================================================*/ -/** - * @name Kernel parameters and options - * @{ - */ -/*===========================================================================*/ - -/** - * @brief Round robin interval. - * @details This constant is the number of system ticks allowed for the - * threads before preemption occurs. Setting this value to zero - * disables the preemption for threads with equal priority and the - * round robin becomes cooperative. Note that higher priority - * threads can still preempt, the kernel is always preemptive. - * @note Disabling the round robin preemption makes the kernel more compact - * and generally faster. - * @note The round robin preemption is not supported in tickless mode and - * must be set to zero in that case. - */ -# if !defined(CH_CFG_TIME_QUANTUM) -# define CH_CFG_TIME_QUANTUM 0 -# endif - -/** - * @brief Managed RAM size. - * @details Size of the RAM area to be managed by the OS. If set to zero - * then the whole available RAM is used. The core memory is made - * available to the heap allocator and/or can be used directly through - * the simplified core memory allocator. - * - * @note In order to let the OS manage the whole RAM the linker script must - * provide the @p __heap_base__ and @p __heap_end__ symbols. - * @note Requires @p CH_CFG_USE_MEMCORE. - */ -# if !defined(CH_CFG_MEMCORE_SIZE) -# define CH_CFG_MEMCORE_SIZE 0 -# endif - -/** - * @brief Idle thread automatic spawn suppression. - * @details When this option is activated the function @p chSysInit() - * does not spawn the idle thread. The application @p main() - * function becomes the idle thread and must implement an - * infinite loop. - */ -# if !defined(CH_CFG_NO_IDLE_THREAD) -# define CH_CFG_NO_IDLE_THREAD FALSE -# endif - -/** @} */ - -/*===========================================================================*/ -/** - * @name Performance options - * @{ - */ -/*===========================================================================*/ - -/** - * @brief OS optimization. - * @details If enabled then time efficient rather than space efficient code - * is used when two possible implementations exist. - * - * @note This is not related to the compiler optimization options. - * @note The default is @p TRUE. - */ -# if !defined(CH_CFG_OPTIMIZE_SPEED) -# define CH_CFG_OPTIMIZE_SPEED FALSE -# endif - -/** @} */ - -/*===========================================================================*/ -/** - * @name Subsystem options - * @{ - */ -/*===========================================================================*/ - -/** - * @brief Time Measurement APIs. - * @details If enabled then the time measurement APIs are included in - * the kernel. - * - * @note The default is @p TRUE. - */ -# if !defined(CH_CFG_USE_TM) -# define CH_CFG_USE_TM FALSE -# endif - -/** - * @brief Threads registry APIs. - * @details If enabled then the registry APIs are included in the kernel. - * - * @note The default is @p TRUE. - */ -# if !defined(CH_CFG_USE_REGISTRY) -# define CH_CFG_USE_REGISTRY TRUE -# endif - -/** - * @brief Threads synchronization APIs. - * @details If enabled then the @p chThdWait() function is included in - * the kernel. - * - * @note The default is @p TRUE. - */ -# if !defined(CH_CFG_USE_WAITEXIT) -# define CH_CFG_USE_WAITEXIT TRUE -# endif - -/** - * @brief Semaphores APIs. - * @details If enabled then the Semaphores APIs are included in the kernel. - * - * @note The default is @p TRUE. - */ -# if !defined(CH_CFG_USE_SEMAPHORES) -# define CH_CFG_USE_SEMAPHORES TRUE -# endif - -/** - * @brief Semaphores queuing mode. - * @details If enabled then the threads are enqueued on semaphores by - * priority rather than in FIFO order. - * - * @note The default is @p FALSE. Enable this if you have special - * requirements. - * @note Requires @p CH_CFG_USE_SEMAPHORES. - */ -# if !defined(CH_CFG_USE_SEMAPHORES_PRIORITY) -# define CH_CFG_USE_SEMAPHORES_PRIORITY FALSE -# endif - -/** - * @brief Mutexes APIs. - * @details If enabled then the mutexes APIs are included in the kernel. - * - * @note The default is @p TRUE. - */ -# if !defined(CH_CFG_USE_MUTEXES) -# define CH_CFG_USE_MUTEXES TRUE -# endif - -/** - * @brief Enables recursive behavior on mutexes. - * @note Recursive mutexes are heavier and have an increased - * memory footprint. - * - * @note The default is @p FALSE. - * @note Requires @p CH_CFG_USE_MUTEXES. - */ -# if !defined(CH_CFG_USE_MUTEXES_RECURSIVE) -# define CH_CFG_USE_MUTEXES_RECURSIVE FALSE -# endif - -/** - * @brief Conditional Variables APIs. - * @details If enabled then the conditional variables APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - * @note Requires @p CH_CFG_USE_MUTEXES. - */ -# if !defined(CH_CFG_USE_CONDVARS) -# define CH_CFG_USE_CONDVARS TRUE -# endif - -/** - * @brief Conditional Variables APIs with timeout. - * @details If enabled then the conditional variables APIs with timeout - * specification are included in the kernel. - * - * @note The default is @p TRUE. - * @note Requires @p CH_CFG_USE_CONDVARS. - */ -# if !defined(CH_CFG_USE_CONDVARS_TIMEOUT) -# define CH_CFG_USE_CONDVARS_TIMEOUT FALSE -# endif - -/** - * @brief Events Flags APIs. - * @details If enabled then the event flags APIs are included in the kernel. - * - * @note The default is @p TRUE. - */ -# if !defined(CH_CFG_USE_EVENTS) -# define CH_CFG_USE_EVENTS TRUE -# endif - -/** - * @brief Events Flags APIs with timeout. - * @details If enabled then the events APIs with timeout specification - * are included in the kernel. - * - * @note The default is @p TRUE. - * @note Requires @p CH_CFG_USE_EVENTS. - */ -# if !defined(CH_CFG_USE_EVENTS_TIMEOUT) -# define CH_CFG_USE_EVENTS_TIMEOUT TRUE -# endif - -/** - * @brief Synchronous Messages APIs. - * @details If enabled then the synchronous messages APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - */ -# if !defined(CH_CFG_USE_MESSAGES) -# define CH_CFG_USE_MESSAGES TRUE -# endif - -/** - * @brief Synchronous Messages queuing mode. - * @details If enabled then messages are served by priority rather than in - * FIFO order. - * - * @note The default is @p FALSE. Enable this if you have special - * requirements. - * @note Requires @p CH_CFG_USE_MESSAGES. - */ -# if !defined(CH_CFG_USE_MESSAGES_PRIORITY) -# define CH_CFG_USE_MESSAGES_PRIORITY FALSE -# endif - -/** - * @brief Mailboxes APIs. - * @details If enabled then the asynchronous messages (mailboxes) APIs are - * included in the kernel. - * - * @note The default is @p TRUE. - * @note Requires @p CH_CFG_USE_SEMAPHORES. - */ -# if !defined(CH_CFG_USE_MAILBOXES) -# define CH_CFG_USE_MAILBOXES TRUE -# endif - -/** - * @brief Core Memory Manager APIs. - * @details If enabled then the core memory manager APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - */ -# if !defined(CH_CFG_USE_MEMCORE) -# define CH_CFG_USE_MEMCORE TRUE -# endif - -/** - * @brief Heap Allocator APIs. - * @details If enabled then the memory heap allocator APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - * @note Requires @p CH_CFG_USE_MEMCORE and either @p CH_CFG_USE_MUTEXES or - * @p CH_CFG_USE_SEMAPHORES. - * @note Mutexes are recommended. - */ -# if !defined(CH_CFG_USE_HEAP) -# define CH_CFG_USE_HEAP FALSE -# endif - -/** - * @brief Memory Pools Allocator APIs. - * @details If enabled then the memory pools allocator APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - */ -# if !defined(CH_CFG_USE_MEMPOOLS) -# define CH_CFG_USE_MEMPOOLS FALSE -# endif - -/** - * @brief Objects FIFOs APIs. - * @details If enabled then the objects FIFOs APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - */ -# if !defined(CH_CFG_USE_OBJ_FIFOS) -# define CH_CFG_USE_OBJ_FIFOS FALSE -# endif - -/** - * @brief Pipes APIs. - * @details If enabled then the pipes APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - */ -# if !defined(CH_CFG_USE_PIPES) -# define CH_CFG_USE_PIPES FALSE -# endif - -/** - * @brief Dynamic Threads APIs. - * @details If enabled then the dynamic threads creation APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - * @note Requires @p CH_CFG_USE_WAITEXIT. - * @note Requires @p CH_CFG_USE_HEAP and/or @p CH_CFG_USE_MEMPOOLS. - */ -# if !defined(CH_CFG_USE_DYNAMIC) -# define CH_CFG_USE_DYNAMIC FALSE -# endif - -/** @} */ - -/*===========================================================================*/ -/** - * @name Objects factory options - * @{ - */ -/*===========================================================================*/ - -/** - * @brief Objects Factory APIs. - * @details If enabled then the objects factory APIs are included in the - * kernel. - * - * @note The default is @p FALSE. - */ -# if !defined(CH_CFG_USE_FACTORY) -# define CH_CFG_USE_FACTORY FALSE -# endif - -/** - * @brief Maximum length for object names. - * @details If the specified length is zero then the name is stored by - * pointer but this could have unintended side effects. - */ -# if !defined(CH_CFG_FACTORY_MAX_NAMES_LENGTH) -# define CH_CFG_FACTORY_MAX_NAMES_LENGTH 8 -# endif - -/** - * @brief Enables the registry of generic objects. - */ -# if !defined(CH_CFG_FACTORY_OBJECTS_REGISTRY) -# define CH_CFG_FACTORY_OBJECTS_REGISTRY FALSE -# endif - -/** - * @brief Enables factory for generic buffers. - */ -# if !defined(CH_CFG_FACTORY_GENERIC_BUFFERS) -# define CH_CFG_FACTORY_GENERIC_BUFFERS FALSE -# endif - -/** - * @brief Enables factory for semaphores. - */ -# if !defined(CH_CFG_FACTORY_SEMAPHORES) -# define CH_CFG_FACTORY_SEMAPHORES FALSE -# endif - -/** - * @brief Enables factory for mailboxes. - */ -# if !defined(CH_CFG_FACTORY_MAILBOXES) -# define CH_CFG_FACTORY_MAILBOXES FALSE -# endif - -/** - * @brief Enables factory for objects FIFOs. - */ -# if !defined(CH_CFG_FACTORY_OBJ_FIFOS) -# define CH_CFG_FACTORY_OBJ_FIFOS FALSE -# endif - -/** - * @brief Enables factory for Pipes. - */ -# if !defined(CH_CFG_FACTORY_PIPES) || defined(__DOXYGEN__) -# define CH_CFG_FACTORY_PIPES FALSE -# endif - -/** @} */ - -/*===========================================================================*/ -/** - * @name Debug options - * @{ - */ -/*===========================================================================*/ - -/** - * @brief Debug option, kernel statistics. - * - * @note The default is @p FALSE. - */ -# if !defined(CH_DBG_STATISTICS) -# define CH_DBG_STATISTICS FALSE -# endif - -/** - * @brief Debug option, system state check. - * @details If enabled the correct call protocol for system APIs is checked - * at runtime. - * - * @note The default is @p FALSE. - */ -# if !defined(CH_DBG_SYSTEM_STATE_CHECK) -# define CH_DBG_SYSTEM_STATE_CHECK FALSE -# endif - -/** - * @brief Debug option, parameters checks. - * @details If enabled then the checks on the API functions input - * parameters are activated. - * - * @note The default is @p FALSE. - */ -# if !defined(CH_DBG_ENABLE_CHECKS) -# define CH_DBG_ENABLE_CHECKS FALSE -# endif - -/** - * @brief Debug option, consistency checks. - * @details If enabled then all the assertions in the kernel code are - * activated. This includes consistency checks inside the kernel, - * runtime anomalies and port-defined checks. - * - * @note The default is @p FALSE. - */ -# if !defined(CH_DBG_ENABLE_ASSERTS) -# define CH_DBG_ENABLE_ASSERTS FALSE -# endif - -/** - * @brief Debug option, trace buffer. - * @details If enabled then the trace buffer is activated. - * - * @note The default is @p CH_DBG_TRACE_MASK_DISABLED. - */ -# if !defined(CH_DBG_TRACE_MASK) -# define CH_DBG_TRACE_MASK CH_DBG_TRACE_MASK_DISABLED -# endif - -/** - * @brief Trace buffer entries. - * @note The trace buffer is only allocated if @p CH_DBG_TRACE_MASK is - * different from @p CH_DBG_TRACE_MASK_DISABLED. - */ -# if !defined(CH_DBG_TRACE_BUFFER_SIZE) -# define CH_DBG_TRACE_BUFFER_SIZE 128 -# endif - -/** - * @brief Debug option, stack checks. - * @details If enabled then a runtime stack check is performed. - * - * @note The default is @p FALSE. - * @note The stack check is performed in a architecture/port dependent way. - * It may not be implemented or some ports. - * @note The default failure mode is to halt the system with the global - * @p panic_msg variable set to @p NULL. - */ -# if !defined(CH_DBG_ENABLE_STACK_CHECK) -# define CH_DBG_ENABLE_STACK_CHECK FALSE -# endif - -/** - * @brief Debug option, stacks initialization. - * @details If enabled then the threads working area is filled with a byte - * value when a thread is created. This can be useful for the - * runtime measurement of the used stack. - * - * @note The default is @p FALSE. - */ -# if !defined(CH_DBG_FILL_THREADS) -# define CH_DBG_FILL_THREADS FALSE -# endif - -/** - * @brief Debug option, threads profiling. - * @details If enabled then a field is added to the @p thread_t structure that - * counts the system ticks occurred while executing the thread. - * - * @note The default is @p FALSE. - * @note This debug option is not currently compatible with the - * tickless mode. - */ -# if !defined(CH_DBG_THREADS_PROFILING) -# define CH_DBG_THREADS_PROFILING FALSE -# endif - -/** @} */ - -/*===========================================================================*/ -/** - * @name Kernel hooks - * @{ - */ -/*===========================================================================*/ - -/** - * @brief System structure extension. - * @details User fields added to the end of the @p ch_system_t structure. - */ -# define CH_CFG_SYSTEM_EXTRA_FIELDS /* Add threads custom fields here.*/ - -/** - * @brief System initialization hook. - * @details User initialization code added to the @p chSysInit() function - * just before interrupts are enabled globally. - */ -# define CH_CFG_SYSTEM_INIT_HOOK() \ - { /* Add threads initialization code here.*/ } - -/** - * @brief Threads descriptor structure extension. - * @details User fields added to the end of the @p thread_t structure. - */ -# define CH_CFG_THREAD_EXTRA_FIELDS /* Add threads custom fields here.*/ - -/** - * @brief Threads initialization hook. - * @details User initialization code added to the @p _thread_init() function. - * - * @note It is invoked from within @p _thread_init() and implicitly from all - * the threads creation APIs. - */ -# define CH_CFG_THREAD_INIT_HOOK(tp) \ - { /* Add threads initialization code here.*/ } - -/** - * @brief Threads finalization hook. - * @details User finalization code added to the @p chThdExit() API. - */ -# define CH_CFG_THREAD_EXIT_HOOK(tp) \ - { /* Add threads finalization code here.*/ } - -/** - * @brief Context switch hook. - * @details This hook is invoked just before switching between threads. - */ -# define CH_CFG_CONTEXT_SWITCH_HOOK(ntp, otp) \ - { /* Context switch code here.*/ } - -/** - * @brief ISR enter hook. - */ -# define CH_CFG_IRQ_PROLOGUE_HOOK() \ - { /* IRQ prologue code here.*/ } - -/** - * @brief ISR exit hook. - */ -# define CH_CFG_IRQ_EPILOGUE_HOOK() \ - { /* IRQ epilogue code here.*/ } - -/** - * @brief Idle thread enter hook. - * @note This hook is invoked within a critical zone, no OS functions - * should be invoked from here. - * @note This macro can be used to activate a power saving mode. - */ -# define CH_CFG_IDLE_ENTER_HOOK() \ - { /* Idle-enter code here.*/ } - -/** - * @brief Idle thread leave hook. - * @note This hook is invoked within a critical zone, no OS functions - * should be invoked from here. - * @note This macro can be used to deactivate a power saving mode. - */ -# define CH_CFG_IDLE_LEAVE_HOOK() \ - { /* Idle-leave code here.*/ } - -/** - * @brief Idle Loop hook. - * @details This hook is continuously invoked by the idle thread loop. - */ -# define CH_CFG_IDLE_LOOP_HOOK() \ - { /* Idle loop code here.*/ } - -/** - * @brief System tick event hook. - * @details This hook is invoked in the system tick handler immediately - * after processing the virtual timers queue. - */ -# define CH_CFG_SYSTEM_TICK_HOOK() \ - { /* System tick event code here.*/ } - -/** - * @brief System halt hook. - * @details This hook is invoked in case to a system halting error before - * the system is halted. - */ -# define CH_CFG_SYSTEM_HALT_HOOK(reason) \ - { /* System halt code here.*/ } - -/** - * @brief Trace hook. - * @details This hook is invoked each time a new record is written in the - * trace buffer. + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/boston/chconf.h -r platforms/chibios/common/configs/chconf.h` */ -# define CH_CFG_TRACE_HOOK(tep) \ - { /* Trace code here.*/ } -/** @} */ +#pragma once -/*===========================================================================*/ -/* Port-specific settings (override port settings defaulted in chcore.h). */ -/*===========================================================================*/ +#define CH_CFG_ST_FREQUENCY 10000 -#endif /* CHCONF_H */ +#include_next -/** @} */ diff --git a/keyboards/boston/halconf.h b/keyboards/boston/halconf.h index 4d46d4e290..410d968cd4 100644 --- a/keyboards/boston/halconf.h +++ b/keyboards/boston/halconf.h @@ -1,524 +1,31 @@ -/* - ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -/** - * @file templates/halconf.h - * @brief HAL configuration header. - * @details HAL configuration file, this file allows to enable or disable the - * various device drivers from your application. You may also use - * this file in order to override the device drivers default settings. +/* Copyright 2020 QMK * - * @addtogroup HAL_CONF - * @{ + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . */ -#ifndef HALCONF_H -# define HALCONF_H - -# define _CHIBIOS_HAL_CONF_ -# define _CHIBIOS_HAL_CONF_VER_7_0_ - -# include "mcuconf.h" - -/** - * @brief Enables the PAL subsystem. +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/boston/halconf.h -r platforms/chibios/common/configs/halconf.h` */ -# if !defined(HAL_USE_PAL) || defined(__DOXYGEN__) -# define HAL_USE_PAL TRUE -# endif -/** - * @brief Enables the ADC subsystem. - */ -# if !defined(HAL_USE_ADC) || defined(__DOXYGEN__) -# define HAL_USE_ADC FALSE -# endif +#pragma once -/** - * @brief Enables the CAN subsystem. - */ -# if !defined(HAL_USE_CAN) || defined(__DOXYGEN__) -# define HAL_USE_CAN FALSE -# endif +#define HAL_USE_I2C TRUE -/** - * @brief Enables the cryptographic subsystem. - */ -# if !defined(HAL_USE_CRY) || defined(__DOXYGEN__) -# define HAL_USE_CRY FALSE -# endif +#define HAL_USE_PWM TRUE -/** - * @brief Enables the DAC subsystem. - */ -# if !defined(HAL_USE_DAC) || defined(__DOXYGEN__) -# define HAL_USE_DAC FALSE -# endif +#define HAL_USE_SPI TRUE -/** - * @brief Enables the GPT subsystem. - */ -# if !defined(HAL_USE_GPT) || defined(__DOXYGEN__) -# define HAL_USE_GPT FALSE -# endif +#include_next -/** - * @brief Enables the I2C subsystem. - */ -# if !defined(HAL_USE_I2C) || defined(__DOXYGEN__) -# define HAL_USE_I2C TRUE -# endif - -/** - * @brief Enables the I2S subsystem. - */ -# if !defined(HAL_USE_I2S) || defined(__DOXYGEN__) -# define HAL_USE_I2S FALSE -# endif - -/** - * @brief Enables the ICU subsystem. - */ -# if !defined(HAL_USE_ICU) || defined(__DOXYGEN__) -# define HAL_USE_ICU FALSE -# endif - -/** - * @brief Enables the MAC subsystem. - */ -# if !defined(HAL_USE_MAC) || defined(__DOXYGEN__) -# define HAL_USE_MAC FALSE -# endif - -/** - * @brief Enables the MMC_SPI subsystem. - */ -# if !defined(HAL_USE_MMC_SPI) || defined(__DOXYGEN__) -# define HAL_USE_MMC_SPI FALSE -# endif - -/** - * @brief Enables the PWM subsystem. - */ -# if !defined(HAL_USE_PWM) || defined(__DOXYGEN__) -# define HAL_USE_PWM TRUE -# endif - -/** - * @brief Enables the RTC subsystem. - */ -# if !defined(HAL_USE_RTC) || defined(__DOXYGEN__) -# define HAL_USE_RTC FALSE -# endif - -/** - * @brief Enables the SDC subsystem. - */ -# if !defined(HAL_USE_SDC) || defined(__DOXYGEN__) -# define HAL_USE_SDC FALSE -# endif - -/** - * @brief Enables the SERIAL subsystem. - */ -# if !defined(HAL_USE_SERIAL) || defined(__DOXYGEN__) -# define HAL_USE_SERIAL FALSE -# endif - -/** - * @brief Enables the SERIAL over USB subsystem. - */ -# if !defined(HAL_USE_SERIAL_USB) || defined(__DOXYGEN__) -# define HAL_USE_SERIAL_USB FALSE -# endif - -/** - * @brief Enables the SIO subsystem. - */ -# if !defined(HAL_USE_SIO) || defined(__DOXYGEN__) -# define HAL_USE_SIO FALSE -# endif - -/** - * @brief Enables the SPI subsystem. - */ -# if !defined(HAL_USE_SPI) || defined(__DOXYGEN__) -# define HAL_USE_SPI TRUE -# endif - -/** - * @brief Enables the TRNG subsystem. - */ -# if !defined(HAL_USE_TRNG) || defined(__DOXYGEN__) -# define HAL_USE_TRNG FALSE -# endif - -/** - * @brief Enables the UART subsystem. - */ -# if !defined(HAL_USE_UART) || defined(__DOXYGEN__) -# define HAL_USE_UART FALSE -# endif - -/** - * @brief Enables the USB subsystem. - */ -# if !defined(HAL_USE_USB) || defined(__DOXYGEN__) -# define HAL_USE_USB TRUE -# endif - -/** - * @brief Enables the WDG subsystem. - */ -# if !defined(HAL_USE_WDG) || defined(__DOXYGEN__) -# define HAL_USE_WDG FALSE -# endif - -/** - * @brief Enables the WSPI subsystem. - */ -# if !defined(HAL_USE_WSPI) || defined(__DOXYGEN__) -# define HAL_USE_WSPI FALSE -# endif - -/*===========================================================================*/ -/* PAL driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Enables synchronous APIs. - * @note Disabling this option saves both code and data space. - */ -# if !defined(PAL_USE_CALLBACKS) || defined(__DOXYGEN__) -# define PAL_USE_CALLBACKS FALSE -# endif - -/** - * @brief Enables synchronous APIs. - * @note Disabling this option saves both code and data space. - */ -# if !defined(PAL_USE_WAIT) || defined(__DOXYGEN__) -# define PAL_USE_WAIT FALSE -# endif - -/*===========================================================================*/ -/* ADC driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Enables synchronous APIs. - * @note Disabling this option saves both code and data space. - */ -# if !defined(ADC_USE_WAIT) || defined(__DOXYGEN__) -# define ADC_USE_WAIT TRUE -# endif - -/** - * @brief Enables the @p adcAcquireBus() and @p adcReleaseBus() APIs. - * @note Disabling this option saves both code and data space. - */ -# if !defined(ADC_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) -# define ADC_USE_MUTUAL_EXCLUSION TRUE -# endif - -/*===========================================================================*/ -/* CAN driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Sleep mode related APIs inclusion switch. - */ -# if !defined(CAN_USE_SLEEP_MODE) || defined(__DOXYGEN__) -# define CAN_USE_SLEEP_MODE TRUE -# endif - -/** - * @brief Enforces the driver to use direct callbacks rather than OSAL events. - */ -# if !defined(CAN_ENFORCE_USE_CALLBACKS) || defined(__DOXYGEN__) -# define CAN_ENFORCE_USE_CALLBACKS FALSE -# endif - -/*===========================================================================*/ -/* CRY driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Enables the SW fall-back of the cryptographic driver. - * @details When enabled, this option, activates a fall-back software - * implementation for algorithms not supported by the underlying - * hardware. - * @note Fall-back implementations may not be present for all algorithms. - */ -# if !defined(HAL_CRY_USE_FALLBACK) || defined(__DOXYGEN__) -# define HAL_CRY_USE_FALLBACK FALSE -# endif - -/** - * @brief Makes the driver forcibly use the fall-back implementations. - */ -# if !defined(HAL_CRY_ENFORCE_FALLBACK) || defined(__DOXYGEN__) -# define HAL_CRY_ENFORCE_FALLBACK FALSE -# endif - -/*===========================================================================*/ -/* DAC driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Enables synchronous APIs. - * @note Disabling this option saves both code and data space. - */ -# if !defined(DAC_USE_WAIT) || defined(__DOXYGEN__) -# define DAC_USE_WAIT TRUE -# endif - -/** - * @brief Enables the @p dacAcquireBus() and @p dacReleaseBus() APIs. - * @note Disabling this option saves both code and data space. - */ -# if !defined(DAC_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) -# define DAC_USE_MUTUAL_EXCLUSION TRUE -# endif - -/*===========================================================================*/ -/* I2C driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Enables the mutual exclusion APIs on the I2C bus. - */ -# if !defined(I2C_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) -# define I2C_USE_MUTUAL_EXCLUSION TRUE -# endif - -/*===========================================================================*/ -/* MAC driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Enables the zero-copy API. - */ -# if !defined(MAC_USE_ZERO_COPY) || defined(__DOXYGEN__) -# define MAC_USE_ZERO_COPY FALSE -# endif - -/** - * @brief Enables an event sources for incoming packets. - */ -# if !defined(MAC_USE_EVENTS) || defined(__DOXYGEN__) -# define MAC_USE_EVENTS TRUE -# endif - -/*===========================================================================*/ -/* MMC_SPI driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Delays insertions. - * @details If enabled this options inserts delays into the MMC waiting - * routines releasing some extra CPU time for the threads with - * lower priority, this may slow down the driver a bit however. - * This option is recommended also if the SPI driver does not - * use a DMA channel and heavily loads the CPU. - */ -# if !defined(MMC_NICE_WAITING) || defined(__DOXYGEN__) -# define MMC_NICE_WAITING TRUE -# endif - -/*===========================================================================*/ -/* SDC driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Number of initialization attempts before rejecting the card. - * @note Attempts are performed at 10mS intervals. - */ -# if !defined(SDC_INIT_RETRY) || defined(__DOXYGEN__) -# define SDC_INIT_RETRY 100 -# endif - -/** - * @brief Include support for MMC cards. - * @note MMC support is not yet implemented so this option must be kept - * at @p FALSE. - */ -# if !defined(SDC_MMC_SUPPORT) || defined(__DOXYGEN__) -# define SDC_MMC_SUPPORT FALSE -# endif - -/** - * @brief Delays insertions. - * @details If enabled this options inserts delays into the MMC waiting - * routines releasing some extra CPU time for the threads with - * lower priority, this may slow down the driver a bit however. - */ -# if !defined(SDC_NICE_WAITING) || defined(__DOXYGEN__) -# define SDC_NICE_WAITING TRUE -# endif - -/** - * @brief OCR initialization constant for V20 cards. - */ -# if !defined(SDC_INIT_OCR_V20) || defined(__DOXYGEN__) -# define SDC_INIT_OCR_V20 0x50FF8000U -# endif - -/** - * @brief OCR initialization constant for non-V20 cards. - */ -# if !defined(SDC_INIT_OCR) || defined(__DOXYGEN__) -# define SDC_INIT_OCR 0x80100000U -# endif - -/*===========================================================================*/ -/* SERIAL driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Default bit rate. - * @details Configuration parameter, this is the baud rate selected for the - * default configuration. - */ -# if !defined(SERIAL_DEFAULT_BITRATE) || defined(__DOXYGEN__) -# define SERIAL_DEFAULT_BITRATE 38400 -# endif - -/** - * @brief Serial buffers size. - * @details Configuration parameter, you can change the depth of the queue - * buffers depending on the requirements of your application. - * @note The default is 16 bytes for both the transmission and receive - * buffers. - */ -# if !defined(SERIAL_BUFFERS_SIZE) || defined(__DOXYGEN__) -# define SERIAL_BUFFERS_SIZE 16 -# endif - -/*===========================================================================*/ -/* SERIAL_USB driver related setting. */ -/*===========================================================================*/ - -/** - * @brief Serial over USB buffers size. - * @details Configuration parameter, the buffer size must be a multiple of - * the USB data endpoint maximum packet size. - * @note The default is 256 bytes for both the transmission and receive - * buffers. - */ -# if !defined(SERIAL_USB_BUFFERS_SIZE) || defined(__DOXYGEN__) -# define SERIAL_USB_BUFFERS_SIZE 1 -# endif - -/** - * @brief Serial over USB number of buffers. - * @note The default is 2 buffers. - */ -# if !defined(SERIAL_USB_BUFFERS_NUMBER) || defined(__DOXYGEN__) -# define SERIAL_USB_BUFFERS_NUMBER 2 -# endif - -/*===========================================================================*/ -/* SPI driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Enables synchronous APIs. - * @note Disabling this option saves both code and data space. - */ -# if !defined(SPI_USE_WAIT) || defined(__DOXYGEN__) -# define SPI_USE_WAIT TRUE -# endif - -/** - * @brief Enables circular transfers APIs. - * @note Disabling this option saves both code and data space. - */ -# if !defined(SPI_USE_CIRCULAR) || defined(__DOXYGEN__) -# define SPI_USE_CIRCULAR FALSE -# endif - -/** - * @brief Enables the @p spiAcquireBus() and @p spiReleaseBus() APIs. - * @note Disabling this option saves both code and data space. - */ -# if !defined(SPI_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) -# define SPI_USE_MUTUAL_EXCLUSION TRUE -# endif - -/** - * @brief Handling method for SPI CS line. - * @note Disabling this option saves both code and data space. - */ -# if !defined(SPI_SELECT_MODE) || defined(__DOXYGEN__) -# define SPI_SELECT_MODE SPI_SELECT_MODE_PAD -# endif - -/*===========================================================================*/ -/* UART driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Enables synchronous APIs. - * @note Disabling this option saves both code and data space. - */ -# if !defined(UART_USE_WAIT) || defined(__DOXYGEN__) -# define UART_USE_WAIT FALSE -# endif - -/** - * @brief Enables the @p uartAcquireBus() and @p uartReleaseBus() APIs. - * @note Disabling this option saves both code and data space. - */ -# if !defined(UART_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) -# define UART_USE_MUTUAL_EXCLUSION FALSE -# endif - -/*===========================================================================*/ -/* USB driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Enables synchronous APIs. - * @note Disabling this option saves both code and data space. - */ -# if !defined(USB_USE_WAIT) || defined(__DOXYGEN__) -# define USB_USE_WAIT TRUE -# endif - -/*===========================================================================*/ -/* WSPI driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Enables synchronous APIs. - * @note Disabling this option saves both code and data space. - */ -# if !defined(WSPI_USE_WAIT) || defined(__DOXYGEN__) -# define WSPI_USE_WAIT TRUE -# endif - -/** - * @brief Enables the @p wspiAcquireBus() and @p wspiReleaseBus() APIs. - * @note Disabling this option saves both code and data space. - */ -# if !defined(WSPI_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) -# define WSPI_USE_MUTUAL_EXCLUSION TRUE -# endif - -#endif /* HALCONF_H */ - -/** @} */ diff --git a/keyboards/boston/mcuconf.h b/keyboards/boston/mcuconf.h index d578d47ed1..1685bd41d0 100644 --- a/keyboards/boston/mcuconf.h +++ b/keyboards/boston/mcuconf.h @@ -1,176 +1,34 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -#ifndef _MCUCONF_H_ -#define _MCUCONF_H_ - -/* - * STM32F0xx drivers configuration. - * The following settings override the default settings present in - * the various device driver implementation headers. - * Note that the settings for each driver only have effect if the whole - * driver is enabled in halconf.h. +/* Copyright 2020 QMK * - * IRQ priorities: - * 3...0 Lowest...Highest. + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. * - * DMA priorities: - * 0...3 Lowest...Highest. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . */ -#define STM32F0xx_MCUCONF -// #define STM32F070xB - /* - * HAL driver system settings. + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/boston/mcuconf.h -r platforms/chibios/GENERIC_STM32_F072XB/configs/mcuconf.h` */ -#define STM32_NO_INIT FALSE -#define STM32_PVD_ENABLE FALSE -#define STM32_PLS STM32_PLS_LEV0 -#define STM32_HSI_ENABLED TRUE -#define STM32_HSI14_ENABLED TRUE -#define STM32_HSI48_ENABLED FALSE -#define STM32_LSI_ENABLED TRUE -#define STM32_HSE_ENABLED FALSE -#define STM32_LSE_ENABLED FALSE -#define STM32_SW STM32_SW_PLL -#define STM32_PLLSRC STM32_PLLSRC_HSI_DIV2 -#define STM32_PREDIV_VALUE 1 -#define STM32_PLLMUL_VALUE 12 -#define STM32_HPRE STM32_HPRE_DIV1 -#define STM32_PPRE STM32_PPRE_DIV1 -#define STM32_ADCSW STM32_ADCSW_HSI14 -#define STM32_ADCPRE STM32_ADCPRE_DIV4 -#define STM32_MCOSEL STM32_MCOSEL_NOCLOCK -#define STM32_ADCPRE STM32_ADCPRE_DIV4 -#define STM32_ADCSW STM32_ADCSW_HSI14 -#define STM32_USBSW STM32_USBSW_HSI48 -#define STM32_CECSW STM32_CECSW_HSI -#define STM32_I2C1SW STM32_I2C1SW_HSI -#define STM32_USART1SW STM32_USART1SW_PCLK -#define STM32_RTCSEL STM32_RTCSEL_LSI -/* - * ADC driver system settings. - */ -#define STM32_ADC_USE_ADC1 FALSE -#define STM32_ADC_ADC1_DMA_PRIORITY 2 -#define STM32_ADC_IRQ_PRIORITY 2 -#define STM32_ADC_ADC1_DMA_IRQ_PRIORITY 2 +#pragma once -/* - * EXT driver system settings. - */ -#define STM32_EXT_EXTI0_1_IRQ_PRIORITY 3 -#define STM32_EXT_EXTI2_3_IRQ_PRIORITY 3 -#define STM32_EXT_EXTI4_15_IRQ_PRIORITY 3 -#define STM32_EXT_EXTI16_IRQ_PRIORITY 3 -#define STM32_EXT_EXTI17_IRQ_PRIORITY 3 +#include_next -/* - * GPT driver system settings. - */ -#define STM32_GPT_USE_TIM1 FALSE -#define STM32_GPT_USE_TIM2 FALSE -#define STM32_GPT_USE_TIM3 FALSE -#define STM32_GPT_USE_TIM14 FALSE -#define STM32_GPT_TIM1_IRQ_PRIORITY 2 -#define STM32_GPT_TIM2_IRQ_PRIORITY 2 -#define STM32_GPT_TIM3_IRQ_PRIORITY 2 -#define STM32_GPT_TIM14_IRQ_PRIORITY 2 - -/* - * I2C driver system settings. - */ +#undef STM32_I2C_USE_I2C1 #define STM32_I2C_USE_I2C1 TRUE -#define STM32_I2C_USE_I2C2 FALSE -#define STM32_I2C_BUSY_TIMEOUT 50 -#define STM32_I2C_I2C1_IRQ_PRIORITY 3 -#define STM32_I2C_I2C2_IRQ_PRIORITY 3 -#define STM32_I2C_USE_DMA TRUE -#define STM32_I2C_I2C1_DMA_PRIORITY 1 -#define STM32_I2C_I2C2_DMA_PRIORITY 1 -#define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 7) -#define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 6) -#define STM32_I2C_DMA_ERROR_HOOK(i2cp) osalSysHalt("DMA failure") -/* - * ICU driver system settings. - */ -#define STM32_ICU_USE_TIM1 FALSE -#define STM32_ICU_USE_TIM2 FALSE -#define STM32_ICU_USE_TIM3 FALSE -#define STM32_ICU_TIM1_IRQ_PRIORITY 3 -#define STM32_ICU_TIM2_IRQ_PRIORITY 3 -#define STM32_ICU_TIM3_IRQ_PRIORITY 3 - -/* - * PWM driver system settings. - */ -#define STM32_PWM_USE_ADVANCED FALSE -#define STM32_PWM_USE_TIM1 FALSE -#define STM32_PWM_USE_TIM2 FALSE +#undef STM32_PWM_USE_TIM3 #define STM32_PWM_USE_TIM3 TRUE -#define STM32_PWM_TIM1_IRQ_PRIORITY 3 -#define STM32_PWM_TIM2_IRQ_PRIORITY 3 -#define STM32_PWM_TIM3_IRQ_PRIORITY 3 -/* - * SERIAL driver system settings. - */ -#define STM32_SERIAL_USE_USART1 FALSE -#define STM32_SERIAL_USE_USART2 FALSE -#define STM32_SERIAL_USART1_PRIORITY 3 -#define STM32_SERIAL_USART2_PRIORITY 3 - -/* - * SPI driver system settings. - */ -#define STM32_SPI_USE_SPI1 FALSE +#undef STM32_SPI_USE_SPI2 #define STM32_SPI_USE_SPI2 TRUE -#define STM32_SPI_SPI1_DMA_PRIORITY 1 -#define STM32_SPI_SPI2_DMA_PRIORITY 1 -#define STM32_SPI_SPI1_IRQ_PRIORITY 2 -#define STM32_SPI_SPI2_IRQ_PRIORITY 2 -#define STM32_SPI_SPI2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 4) -#define STM32_SPI_SPI2_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 5) -#define STM32_SPI_DMA_ERROR_HOOK(spip) osalSysHalt("DMA failure") -/* - * ST driver system settings. - */ -#define STM32_ST_IRQ_PRIORITY 2 -#define STM32_ST_USE_TIMER 2 - -/* - * UART driver system settings. - */ -#define STM32_UART_USE_USART1 FALSE -#define STM32_UART_USE_USART2 FALSE -#define STM32_UART_USART1_IRQ_PRIORITY 3 -#define STM32_UART_USART2_IRQ_PRIORITY 3 -#define STM32_UART_USART1_DMA_PRIORITY 0 -#define STM32_UART_USART2_DMA_PRIORITY 0 -#define STM32_UART_DMA_ERROR_HOOK(uartp) osalSysHalt("DMA failure") - -/* - * USB driver system settings. - */ -#define STM32_USB_USE_USB1 TRUE -#define STM32_USB_LOW_POWER_ON_SUSPEND FALSE -#define STM32_USB_USB1_LP_IRQ_PRIORITY 3 - -#endif /* _MCUCONF_H_ */ From 88dce243750d9e80948cd7262566182018d7bbdf Mon Sep 17 00:00:00 2001 From: Ryan Date: Fri, 12 Mar 2021 18:03:44 +1100 Subject: [PATCH 046/613] Remove hex_to_keycode and move tap_random_base64 to send_string.c (#12079) --- .../community/ergodox/coderkun_neo2/keymap.c | 28 --------- .../process_keycode/process_unicode_common.c | 6 +- quantum/quantum.c | 62 ------------------- quantum/quantum.h | 8 --- quantum/send_string.c | 56 ++++++++++++++++- quantum/send_string.h | 9 ++- 6 files changed, 66 insertions(+), 103 deletions(-) diff --git a/layouts/community/ergodox/coderkun_neo2/keymap.c b/layouts/community/ergodox/coderkun_neo2/keymap.c index a6fe61079d..638442676a 100644 --- a/layouts/community/ergodox/coderkun_neo2/keymap.c +++ b/layouts/community/ergodox/coderkun_neo2/keymap.c @@ -269,31 +269,3 @@ void unicode_input_start (void) { unregister_code(KC_LSFT); unregister_code(KC_LCTL); }; - -// Override method to use NEO_A instead of KC_A -uint16_t hex_to_keycode(uint8_t hex) -{ - if(hex == 0x0) { - return KC_0; - } - else if(hex >= 0xA) { - switch(hex) { - case 0xA: - return NEO_A; - case 0xB: - return NEO_B; - case 0xC: - return NEO_C; - case 0xD: - return NEO_D; - case 0xE: - return NEO_E; - case 0xF: - return NEO_F; - default: - return KC_NO; - } - } - - return KC_1 + (hex - 0x1); -} diff --git a/quantum/process_keycode/process_unicode_common.c b/quantum/process_keycode/process_unicode_common.c index bac9fbcc0f..46fcaaa86b 100644 --- a/quantum/process_keycode/process_unicode_common.c +++ b/quantum/process_keycode/process_unicode_common.c @@ -158,7 +158,7 @@ __attribute__((weak)) void unicode_input_cancel(void) { void register_hex(uint16_t hex) { for (int i = 3; i >= 0; i--) { uint8_t digit = ((hex >> (i * 4)) & 0xF); - tap_code16(hex_to_keycode(digit)); + send_nibble(digit); } } @@ -171,10 +171,10 @@ void register_hex32(uint32_t hex) { uint8_t digit = ((hex >> (i * 4)) & 0xF); if (digit == 0) { if (!onzerostart) { - tap_code16(hex_to_keycode(digit)); + send_nibble(digit); } } else { - tap_code16(hex_to_keycode(digit)); + send_nibble(digit); onzerostart = false; } } diff --git a/quantum/quantum.c b/quantum/quantum.c index 80c4e8f00c..b40b40544a 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -340,34 +340,6 @@ layer_state_t update_tri_layer_state(layer_state_t state, uint8_t layer1, uint8_ void update_tri_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3) { layer_state_set(update_tri_layer_state(layer_state, layer1, layer2, layer3)); } -void tap_random_base64(void) { -#if defined(__AVR_ATmega32U4__) - uint8_t key = (TCNT0 + TCNT1 + TCNT3 + TCNT4) % 64; -#else - uint8_t key = rand() % 64; -#endif - switch (key) { - case 0 ... 25: - send_char(key + 'A'); - break; - case 26 ... 51: - send_char(key - 26 + 'a'); - break; - case 52: - send_char('0'); - break; - case 53 ... 61: - send_char(key - 53 + '1'); - break; - case 62: - send_char('+'); - break; - case 63: - send_char('/'); - break; - } -} - void matrix_init_quantum() { #ifdef BOOTMAGIC_LITE bootmagic_lite(); @@ -469,40 +441,6 @@ void matrix_scan_quantum() { # include "hd44780.h" #endif -// Functions for spitting out values -// - -void send_dword(uint32_t number) { - uint16_t word = (number >> 16); - send_word(word); - send_word(number & 0xFFFFUL); -} - -void send_word(uint16_t number) { - uint8_t byte = number >> 8; - send_byte(byte); - send_byte(number & 0xFF); -} - -void send_byte(uint8_t number) { - uint8_t nibble = number >> 4; - send_nibble(nibble); - send_nibble(number & 0xF); -} - -void send_nibble(uint8_t number) { tap_code16(hex_to_keycode(number)); } - -__attribute__((weak)) uint16_t hex_to_keycode(uint8_t hex) { - hex = hex & 0xF; - if (hex == 0x0) { - return KC_0; - } else if (hex < 0xA) { - return KC_1 + (hex - 0x1); - } else { - return KC_A + (hex - 0xA); - } -} - void api_send_unicode(uint32_t unicode) { #ifdef API_ENABLE uint8_t chunk[4]; diff --git a/quantum/quantum.h b/quantum/quantum.h index b1600dd724..e24a4c43a3 100644 --- a/quantum/quantum.h +++ b/quantum/quantum.h @@ -238,8 +238,6 @@ layer_state_t update_tri_layer_state(layer_state_t state, uint8_t layer1, uint8_ void set_single_persistent_default_layer(uint8_t default_layer); -void tap_random_base64(void); - #define IS_LAYER_ON(layer) layer_state_is(layer) #define IS_LAYER_OFF(layer) !layer_state_is(layer) @@ -276,12 +274,6 @@ void register_code16(uint16_t code); void unregister_code16(uint16_t code); void tap_code16(uint16_t code); -void send_dword(uint32_t number); -void send_word(uint16_t number); -void send_byte(uint8_t number); -void send_nibble(uint8_t number); -uint16_t hex_to_keycode(uint8_t hex); - void led_set_user(uint8_t usb_led); void led_set_kb(uint8_t usb_led); bool led_update_user(led_t led_state); diff --git a/quantum/send_string.c b/quantum/send_string.c index 0e8902ca3f..7d096b4273 100644 --- a/quantum/send_string.c +++ b/quantum/send_string.c @@ -249,4 +249,58 @@ void send_char(char ascii_code) { if (is_dead) { tap_code(KC_SPACE); } -} \ No newline at end of file +} + +void send_dword(uint32_t number) { + send_word(number >> 16); + send_word(number & 0xFFFFUL); +} + +void send_word(uint16_t number) { + send_byte(number >> 8); + send_byte(number & 0xFF); +} + +void send_byte(uint8_t number) { + send_nibble(number >> 4); + send_nibble(number & 0xF); +} + +void send_nibble(uint8_t number) { + switch (number & 0xF) { + case 0 ... 9: + send_char(number + '0'); + break; + case 10 ... 15: + send_char(number - 10 + 'a'); + break; + } +} + +void tap_random_base64(void) { +#if defined(__AVR_ATmega32U4__) + uint8_t key = (TCNT0 + TCNT1 + TCNT3 + TCNT4) % 64; +#else + uint8_t key = rand() % 64; +#endif + switch (key) { + case 0 ... 25: + send_char(key + 'A'); + break; + case 26 ... 51: + send_char(key - 26 + 'a'); + break; + case 52: + send_char('0'); + break; + case 53 ... 61: + send_char(key - 53 + '1'); + break; + case 62: + send_char('+'); + break; + case 63: + send_char('/'); + break; + } +} diff --git a/quantum/send_string.h b/quantum/send_string.h index 570522eb0e..b90e6f6890 100644 --- a/quantum/send_string.h +++ b/quantum/send_string.h @@ -23,10 +23,10 @@ #define SEND_STRING_DELAY(string, interval) send_string_with_delay_P(PSTR(string), interval) // Look-Up Tables (LUTs) to convert ASCII character to keycode sequence. -extern const uint8_t ascii_to_keycode_lut[128]; extern const uint8_t ascii_to_shift_lut[16]; extern const uint8_t ascii_to_altgr_lut[16]; extern const uint8_t ascii_to_dead_lut[16]; +extern const uint8_t ascii_to_keycode_lut[128]; // clang-format off #define KCLUT_ENTRY(a, b, c, d, e, f, g, h) \ @@ -45,3 +45,10 @@ void send_string_with_delay(const char *str, uint8_t interval); void send_string_P(const char *str); void send_string_with_delay_P(const char *str, uint8_t interval); void send_char(char ascii_code); + +void send_dword(uint32_t number); +void send_word(uint16_t number); +void send_byte(uint8_t number); +void send_nibble(uint8_t number); + +void tap_random_base64(void); From 63f9e7ee86c3b92fb81374a9e7063a8e72c38de9 Mon Sep 17 00:00:00 2001 From: Albert Y <76888457+filterpaper@users.noreply.github.com> Date: Fri, 12 Mar 2021 15:43:31 +0800 Subject: [PATCH 047/613] Enable default features on VIA keymap for Lily58 (#12185) Co-authored-by: filterpaper --- keyboards/lily58/keymaps/via/rules.mk | 2 ++ 1 file changed, 2 insertions(+) diff --git a/keyboards/lily58/keymaps/via/rules.mk b/keyboards/lily58/keymaps/via/rules.mk index 1df2dc4b7c..03f8d38f4b 100644 --- a/keyboards/lily58/keymaps/via/rules.mk +++ b/keyboards/lily58/keymaps/via/rules.mk @@ -1,2 +1,4 @@ VIA_ENABLE = yes OLED_DRIVER_ENABLE = yes +MOUSEKEY_ENABLE = yes +EXTRAKEY_ENABLE = yes From b8ad5f4249e0b01772905515664c8961d3db0787 Mon Sep 17 00:00:00 2001 From: Albert Y <76888457+filterpaper@users.noreply.github.com> Date: Sat, 13 Mar 2021 05:47:45 +0800 Subject: [PATCH 048/613] Document LED physical location index for Planck and Preonic (#12147) Co-authored-by: filterpaper --- keyboards/planck/rev6/rev6.c | 5 +++++ keyboards/preonic/rev3/rev3.c | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/keyboards/planck/rev6/rev6.c b/keyboards/planck/rev6/rev6.c index 25c7351c7f..3074f8c20f 100644 --- a/keyboards/planck/rev6/rev6.c +++ b/keyboards/planck/rev6/rev6.c @@ -34,6 +34,11 @@ led_config_t g_led_config = { { LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL } }; + +// LED physical location index +// 6 5 4 3 +// 0 +// 7 8 1 2 #endif void matrix_init_kb(void) { diff --git a/keyboards/preonic/rev3/rev3.c b/keyboards/preonic/rev3/rev3.c index a8bfd8bdb5..161c1c9636 100644 --- a/keyboards/preonic/rev3/rev3.c +++ b/keyboards/preonic/rev3/rev3.c @@ -36,6 +36,11 @@ led_config_t g_led_config = { { LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL } }; + +// LED physical location index +// 6 5 4 3 +// 0 +// 7 8 1 2 #endif void matrix_init_kb(void) { From 5d7ad69cd89b6e3be01459fb7009b8eaf568121b Mon Sep 17 00:00:00 2001 From: Xelus22 <17491233+Xelus22@users.noreply.github.com> Date: Fri, 12 Mar 2021 21:50:15 +0000 Subject: [PATCH 049/613] [Bugs] Fix VIA Compiles (#12186) --- keyboards/basekeys/slice/rev1_rgb/rules.mk | 2 ++ keyboards/boardsource/microdox/keymaps/via/rules.mk | 1 + keyboards/evyd13/ta65/keymaps/via/rules.mk | 1 + keyboards/geminate60/keymaps/via/keymap.c | 2 +- 4 files changed, 5 insertions(+), 1 deletion(-) diff --git a/keyboards/basekeys/slice/rev1_rgb/rules.mk b/keyboards/basekeys/slice/rev1_rgb/rules.mk index 116492c6ef..8bf833d3e2 100644 --- a/keyboards/basekeys/slice/rev1_rgb/rules.mk +++ b/keyboards/basekeys/slice/rev1_rgb/rules.mk @@ -29,3 +29,5 @@ NKRO_ENABLE = no # USB Nkey Rollover RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow OLED_DRIVER_ENABLE = yes # Disable OLED driver. UNICODE_ENABLE = no # Unicode + +LTO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/boardsource/microdox/keymaps/via/rules.mk b/keyboards/boardsource/microdox/keymaps/via/rules.mk index 667a6b254f..fc32a8b111 100644 --- a/keyboards/boardsource/microdox/keymaps/via/rules.mk +++ b/keyboards/boardsource/microdox/keymaps/via/rules.mk @@ -2,3 +2,4 @@ OLED_DRIVER_ENABLE = yes VIA_ENABLE = yes EXTRAKEY_ENABLE = yes RGBLIGHT_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/evyd13/ta65/keymaps/via/rules.mk b/keyboards/evyd13/ta65/keymaps/via/rules.mk index 1e5b99807c..43061db1dd 100644 --- a/keyboards/evyd13/ta65/keymaps/via/rules.mk +++ b/keyboards/evyd13/ta65/keymaps/via/rules.mk @@ -1 +1,2 @@ VIA_ENABLE = yes +LTO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/geminate60/keymaps/via/keymap.c b/keyboards/geminate60/keymaps/via/keymap.c index 31af37d0c9..2093cbe0a2 100644 --- a/keyboards/geminate60/keymaps/via/keymap.c +++ b/keyboards/geminate60/keymaps/via/keymap.c @@ -37,7 +37,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,), + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), [_FN2] = LAYOUT(KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, From 225bff226fd4d32daa4b93e51ba4348efc854e47 Mon Sep 17 00:00:00 2001 From: Dan Thomas Date: Fri, 12 Mar 2021 21:57:50 +0000 Subject: [PATCH 050/613] fix info.json layout name for boardsource/5x12 (#12145) --- keyboards/boardsource/5x12/info.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/boardsource/5x12/info.json b/keyboards/boardsource/5x12/info.json index a4cfc398a2..a609f2a051 100644 --- a/keyboards/boardsource/5x12/info.json +++ b/keyboards/boardsource/5x12/info.json @@ -5,7 +5,7 @@ "width": 12, "height": 5, "layouts": { - "LAYOUT": { + "LAYOUT_ortho_5x12": { "layout": [ { "label": "K01", "x": 0, "y": 0 }, { "label": "K02", "x": 1, "y": 0 }, From b96c18c9529cbc46e3947a5b5fed3d3e134bf698 Mon Sep 17 00:00:00 2001 From: yiancar Date: Fri, 12 Mar 2021 22:37:41 +0000 Subject: [PATCH 051/613] Hand 88 (#11963) Co-authored-by: Drashna Jaelre Co-authored-by: Ryan --- keyboards/hand88/config.h | 80 ++++++++++++++++++++++ keyboards/hand88/hand88.c | 21 ++++++ keyboards/hand88/hand88.h | 36 ++++++++++ keyboards/hand88/info.json | 12 ++++ keyboards/hand88/keymaps/default/keymap.c | 27 ++++++++ keyboards/hand88/keymaps/default/readme.md | 3 + keyboards/hand88/keymaps/via/keymap.c | 54 +++++++++++++++ keyboards/hand88/keymaps/via/readme.md | 3 + keyboards/hand88/keymaps/via/rules.mk | 1 + keyboards/hand88/readme.md | 32 +++++++++ keyboards/hand88/rules.mk | 25 +++++++ 11 files changed, 294 insertions(+) create mode 100755 keyboards/hand88/config.h create mode 100755 keyboards/hand88/hand88.c create mode 100644 keyboards/hand88/hand88.h create mode 100755 keyboards/hand88/info.json create mode 100644 keyboards/hand88/keymaps/default/keymap.c create mode 100755 keyboards/hand88/keymaps/default/readme.md create mode 100644 keyboards/hand88/keymaps/via/keymap.c create mode 100755 keyboards/hand88/keymaps/via/readme.md create mode 100755 keyboards/hand88/keymaps/via/rules.mk create mode 100755 keyboards/hand88/readme.md create mode 100755 keyboards/hand88/rules.mk diff --git a/keyboards/hand88/config.h b/keyboards/hand88/config.h new file mode 100755 index 0000000000..7e013224dd --- /dev/null +++ b/keyboards/hand88/config.h @@ -0,0 +1,80 @@ +/* +Copyright 2021 Yiancar-Designs + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published byß +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x8968 +#define PRODUCT_ID 0x3838 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Yiancar-Designs +#define PRODUCT Hand 88 + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 17 + +#define MATRIX_ROW_PINS { A2, A14, A15, B3, B4, B5 } +#define MATRIX_COL_PINS { A1, B9, A3, A4, A5, A6, A7, B0, B1, B2, B10, B11, B12, B13, B14, B15, A8 } + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* Ensure we jump to bootloader if the RESET keycode was pressed */ +#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE + +/* Indicator LEDs */ +#define LED_CAPS_LOCK_PIN B6 +#define LED_PIN_ON_STATE 0 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is userful for the Windows task manager shortcut (ctrl+shift+esc). + */ +// #define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* Bootmagic Lite key configuration */ +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/hand88/hand88.c b/keyboards/hand88/hand88.c new file mode 100755 index 0000000000..ad182b4809 --- /dev/null +++ b/keyboards/hand88/hand88.c @@ -0,0 +1,21 @@ +/* Copyright 2021 Yiancar-Designs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #include "hand88.h" + +void led_init_ports(void) { + // Set our LED pins as open drain outputs + palSetLineMode(LED_CAPS_LOCK_PIN, PAL_MODE_OUTPUT_OPENDRAIN); +} diff --git a/keyboards/hand88/hand88.h b/keyboards/hand88/hand88.h new file mode 100644 index 0000000000..efe24866f1 --- /dev/null +++ b/keyboards/hand88/hand88.h @@ -0,0 +1,36 @@ +/* Copyright 2021 Yiancar-Designs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#define XXX KC_NO + +#include "quantum.h" + +#define LAYOUT_all( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, KOG, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K2D, K1E, K1F, K1G, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K3C, K2E, K2F, K2G, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \ + K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4F, \ + K50, K51, K52, K56, K5B, K5C, K5D, K5E, K5F, K5G \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, KOG }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, XXX, XXX, XXX }, \ + { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, XXX, K4F, XXX }, \ + { K50, K51, K52, XXX, XXX, XXX, K56, XXX, XXX, XXX, XXX, K5B, K5C, K5D, K5E, K5F, K5G } \ +} diff --git a/keyboards/hand88/info.json b/keyboards/hand88/info.json new file mode 100755 index 0000000000..ca20b87e58 --- /dev/null +++ b/keyboards/hand88/info.json @@ -0,0 +1,12 @@ +{ + "keyboard_name": "Hand 88", + "url": "https://yiancar-designs.com", + "maintainer": "Yiancar-Designs", + "width": 18.25, + "height": 6.25, + "layouts": { + "LAYOUT_all": { + "layout": [{"x":0, "y":0}, {"x":1.25, "y":0}, {"x":2.25, "y":0}, {"x":3.25, "y":0}, {"x":4.25, "y":0}, {"x":5.5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.75, "y":0}, {"x":10.75, "y":0}, {"x":11.75, "y":0}, {"x":12.75, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.25}, {"x":1, "y":1.25}, {"x":2, "y":1.25}, {"x":3, "y":1.25}, {"x":4, "y":1.25}, {"x":5, "y":1.25}, {"x":6, "y":1.25}, {"x":7, "y":1.25}, {"x":8, "y":1.25}, {"x":9, "y":1.25}, {"x":10, "y":1.25}, {"x":11, "y":1.25}, {"x":12, "y":1.25}, {"x":13, "y":1.25}, {"x":14, "y":1.25}, {"x":15.25, "y":1.25}, {"x":16.25, "y":1.25}, {"x":17.25, "y":1.25}, {"x":0, "y":2.25, "w":1.5}, {"x":1.5, "y":2.25}, {"x":2.5, "y":2.25}, {"x":3.5, "y":2.25}, {"x":4.5, "y":2.25}, {"x":5.5, "y":2.25}, {"x":6.5, "y":2.25}, {"x":7.5, "y":2.25}, {"x":8.5, "y":2.25}, {"x":9.5, "y":2.25}, {"x":10.5, "y":2.25}, {"x":11.5, "y":2.25}, {"x":12.5, "y":2.25}, {"x":13.5, "y":2.25, "w":1.5}, {"x":15.25, "y":2.25}, {"x":16.25, "y":2.25}, {"x":17.25, "y":2.25}, {"x":0, "y":3.25, "w":1.75}, {"x":1.75, "y":3.25}, {"x":2.75, "y":3.25}, {"x":3.75, "y":3.25}, {"x":4.75, "y":3.25}, {"x":5.75, "y":3.25}, {"x":6.75, "y":3.25}, {"x":7.75, "y":3.25}, {"x":8.75, "y":3.25}, {"x":9.75, "y":3.25}, {"x":10.75, "y":3.25}, {"x":11.75, "y":3.25}, {"x":12.75, "y":3.25, "w":2.25}, {"x":0, "y":4.25, "w":1.25}, {"x":1.25, "y":4.25}, {"x":2.25, "y":4.25}, {"x":3.25, "y":4.25}, {"x":4.25, "y":4.25}, {"x":5.25, "y":4.25}, {"x":6.25, "y":4.25}, {"x":7.25, "y":4.25}, {"x":8.25, "y":4.25}, {"x":9.25, "y":4.25}, {"x":10.25, "y":4.25}, {"x":11.25, "y":4.25}, {"x":12.25, "y":4.25, "w":1.75}, {"x":14, "y":4.25}, {"x":16.25, "y":4.25}, {"x":0, "y":5.25, "w":1.5}, {"x":1.5, "y":5.25}, {"x":2.5, "y":5.25, "w":1.5}, {"x":4, "y":5.25, "w":7}, {"x":11, "y":5.25, "w":1.5}, {"x":12.5, "y":5.25}, {"x":13.5, "y":5.25, "w":1.5}, {"x":15.25, "y":5.25}, {"x":16.25, "y":5.25}, {"x":17.25, "y":5.25}] + } + } +} diff --git a/keyboards/hand88/keymaps/default/keymap.c b/keyboards/hand88/keymaps/default/keymap.c new file mode 100644 index 0000000000..95068e13f9 --- /dev/null +++ b/keyboards/hand88/keymaps/default/keymap.c @@ -0,0 +1,27 @@ +/* Copyright 2021 Yiancar-Designs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT_all( /* Base */ + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SLCK, KC_PAUS, + + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT) +}; diff --git a/keyboards/hand88/keymaps/default/readme.md b/keyboards/hand88/keymaps/default/readme.md new file mode 100755 index 0000000000..9b30674419 --- /dev/null +++ b/keyboards/hand88/keymaps/default/readme.md @@ -0,0 +1,3 @@ +# The default keymap for Hand 88. VIA support disabled. + +![Layer 0](https://i.imgur.com/IhbvSZ1.png) diff --git a/keyboards/hand88/keymaps/via/keymap.c b/keyboards/hand88/keymaps/via/keymap.c new file mode 100644 index 0000000000..16c139fd64 --- /dev/null +++ b/keyboards/hand88/keymaps/via/keymap.c @@ -0,0 +1,54 @@ +/* Copyright 2021 Yiancar-Designs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT_all( /* Base */ + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SLCK, KC_PAUS, + + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + +[1] = LAYOUT_all( /* Empty for dynamic keymaps */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +[2] = LAYOUT_all( /* Empty for dynamic keymaps */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +[3] = LAYOUT_all( /* Empty for dynamic keymaps */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; diff --git a/keyboards/hand88/keymaps/via/readme.md b/keyboards/hand88/keymaps/via/readme.md new file mode 100755 index 0000000000..32bb1fcc26 --- /dev/null +++ b/keyboards/hand88/keymaps/via/readme.md @@ -0,0 +1,3 @@ +# The default keymap for Hand 88. VIA support enabled. + +![Layer 0](https://i.imgur.com/IhbvSZ1.png) diff --git a/keyboards/hand88/keymaps/via/rules.mk b/keyboards/hand88/keymaps/via/rules.mk new file mode 100755 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/hand88/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/hand88/readme.md b/keyboards/hand88/readme.md new file mode 100755 index 0000000000..d3cca8e21a --- /dev/null +++ b/keyboards/hand88/readme.md @@ -0,0 +1,32 @@ +# Hand 88 + +This is a standard TKL layout PCB. It supports VIA. + +* Keyboard Maintainer: [Yiancar](http://yiancar-designs.com/) and on [GitHub](https://github.com/yiancar) +* Hardware Supported: A TKL keyboard with STM32F072CB +* Hardware Availability: https://www.hand.engineering + +## Instructions + +### Build + +Make example for this keyboard (after setting up your build environment): + + make hand88:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +### Reset + +- Unplug +- Hold Escape +- Plug In +- Unplug +- Release Escape + +### Flash + +- Unplug +- Hold Escape +- Plug In +- Flash using QMK Toolbox or CLI (`make hand88::flash`) diff --git a/keyboards/hand88/rules.mk b/keyboards/hand88/rules.mk new file mode 100755 index 0000000000..3067704c50 --- /dev/null +++ b/keyboards/hand88/rules.mk @@ -0,0 +1,25 @@ +# MCU name +MCU = STM32F072 + +# Do not put the microcontroller into power saving mode +# when we get USB suspend event. We want it to keep updating +# backlight effects. +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in From aa73411c14487465d7af9d9f1ca7cb5d157e9343 Mon Sep 17 00:00:00 2001 From: peepeetee <43021794+peepeetee@users.noreply.github.com> Date: Fri, 12 Mar 2021 18:37:39 -0600 Subject: [PATCH 052/613] Update RGB matrix effects documentation (#12181) Co-authored-by: Ryan --- docs/feature_rgb_matrix.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/feature_rgb_matrix.md b/docs/feature_rgb_matrix.md index fd866bd571..6917de5ab4 100644 --- a/docs/feature_rgb_matrix.md +++ b/docs/feature_rgb_matrix.md @@ -281,8 +281,10 @@ You can disable a single effect by defining `DISABLE_[EFFECT_NAME]` in your `con |Define |Description | |-------------------------------------------------------|-----------------------------------------------| +|`#define DISABLE_RGB_MATRIX_SOLID_COLOR` |Disables `RGB_MATRIX_SOLID_COLOR` | |`#define DISABLE_RGB_MATRIX_ALPHAS_MODS` |Disables `RGB_MATRIX_ALPHAS_MODS` | |`#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN` |Disables `RGB_MATRIX_GRADIENT_UP_DOWN` | +|`#define DISABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT` |Disables `MATRIX_GRADIENT_LEFT_RIGHT` | |`#define DISABLE_RGB_MATRIX_BREATHING` |Disables `RGB_MATRIX_BREATHING` | |`#define DISABLE_RGB_MATRIX_BAND_SAT` |Disables `RGB_MATRIX_BAND_SAT` | |`#define DISABLE_RGB_MATRIX_BAND_VAL` |Disables `RGB_MATRIX_BAND_VAL` | @@ -293,20 +295,20 @@ You can disable a single effect by defining `DISABLE_[EFFECT_NAME]` in your `con |`#define DISABLE_RGB_MATRIX_CYCLE_ALL` |Disables `RGB_MATRIX_CYCLE_ALL` | |`#define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT` |Disables `RGB_MATRIX_CYCLE_LEFT_RIGHT` | |`#define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN` |Disables `RGB_MATRIX_CYCLE_UP_DOWN` | +|`#define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON` |Disables `RGB_MATRIX_RAINBOW_MOVING_CHEVRON` | |`#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN` |Disables `RGB_MATRIX_CYCLE_OUT_IN` | |`#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL` |Disables `RGB_MATRIX_CYCLE_OUT_IN_DUAL` | -|`#define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON` |Disables `RGB_MATRIX_RAINBOW_MOVING_CHEVRON` | -|`#define DISABLE_RGB_MATRIX_DUAL_BEACON` |Disables `RGB_MATRIX_DUAL_BEACON` | |`#define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL` |Disables `RGB_MATRIX_CYCLE_PINWHEEL` | |`#define DISABLE_RGB_MATRIX_CYCLE_SPIRAL` |Disables `RGB_MATRIX_CYCLE_SPIRAL` | +|`#define DISABLE_RGB_MATRIX_DUAL_BEACON` |Disables `RGB_MATRIX_DUAL_BEACON` | |`#define DISABLE_RGB_MATRIX_RAINBOW_BEACON` |Disables `RGB_MATRIX_RAINBOW_BEACON` | |`#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS` |Disables `RGB_MATRIX_RAINBOW_PINWHEELS` | |`#define DISABLE_RGB_MATRIX_RAINDROPS` |Disables `RGB_MATRIX_RAINDROPS` | |`#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS` |Disables `RGB_MATRIX_JELLYBEAN_RAINDROPS` | |`#define DISABLE_RGB_MATRIX_TYPING_HEATMAP` |Disables `RGB_MATRIX_TYPING_HEATMAP` | |`#define DISABLE_RGB_MATRIX_DIGITAL_RAIN` |Disables `RGB_MATRIX_DIGITAL_RAIN` | -|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE` |Disables `RGB_MATRIX_SOLID_REACTIVE` | |`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE` |Disables `RGB_MATRIX_SOLID_REACTIVE_SIMPLE` | +|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE` |Disables `RGB_MATRIX_SOLID_REACTIVE` | |`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE` |Disables `RGB_MATRIX_SOLID_REACTIVE_WIDE` | |`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE` |Disables `RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE` | |`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS` |Disables `RGB_MATRIX_SOLID_REACTIVE_CROSS` | From 7b7689d30796c977b95197091c16e8bb97000101 Mon Sep 17 00:00:00 2001 From: milestogo Date: Sun, 14 Mar 2021 12:23:30 -0700 Subject: [PATCH 053/613] [Keymap] miles2go userspace update, add functions for babblepaste library, add prime_e keybard keymap (#9196) Co-authored-by: Drashna Jaelre --- .../prime_e/keymaps/milestogo/config.h | 41 +++ .../prime_e/keymaps/milestogo/keymap.c | 150 ++++++++ .../prime_e/keymaps/milestogo/readme.md | 2 + .../prime_e/keymaps/milestogo/rules.mk | 1 + users/miles2go/babblePaste.c | 130 ++++++- users/miles2go/babblePaste.h | 50 ++- users/miles2go/babblePaste.md | 69 +++- users/miles2go/babl_chromeos.c | 2 +- users/miles2go/babl_emacs.c | 1 + users/miles2go/babl_kitty.c | 153 ++++++++ users/miles2go/babl_nano.c | 77 ++++ users/miles2go/babl_vi.c | 1 + users/miles2go/config.h | 8 +- users/miles2go/milestogo.c | 29 +- users/miles2go/milestogo.h | 347 +++++++++--------- users/miles2go/readme.md | 2 +- users/miles2go/rules.mk | 2 +- 17 files changed, 843 insertions(+), 222 deletions(-) create mode 100644 keyboards/primekb/prime_e/keymaps/milestogo/config.h create mode 100644 keyboards/primekb/prime_e/keymaps/milestogo/keymap.c create mode 100644 keyboards/primekb/prime_e/keymaps/milestogo/readme.md create mode 100644 keyboards/primekb/prime_e/keymaps/milestogo/rules.mk create mode 100644 users/miles2go/babl_kitty.c create mode 100644 users/miles2go/babl_nano.c diff --git a/keyboards/primekb/prime_e/keymaps/milestogo/config.h b/keyboards/primekb/prime_e/keymaps/milestogo/config.h new file mode 100644 index 0000000000..24a42bb185 --- /dev/null +++ b/keyboards/primekb/prime_e/keymaps/milestogo/config.h @@ -0,0 +1,41 @@ +/* +Copyright 2019 Holten Campbell + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + + +#undef MATRIX_ROWS +#undef MATRIX_COLS +#undef MATRIX_ROW_PINS +#undef MATRIX_COL_PINS + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* Keyboard Matrix Assignments */ +#define MATRIX_ROW_PINS { E6, C7, B5, B4, C6 } +#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, D6, D4, D5, D3, D2, D1, D0, B6, D7} +#define UNUSED_PINS + +// Babble config +#define USE_BABBLEPASTE +#define BABL_MODSWAP +#define BABL_READMUX +#define BABL_KITTY +#define BABL_MAC +#define BABL_LINUX diff --git a/keyboards/primekb/prime_e/keymaps/milestogo/keymap.c b/keyboards/primekb/prime_e/keymaps/milestogo/keymap.c new file mode 100644 index 0000000000..ced250e51f --- /dev/null +++ b/keyboards/primekb/prime_e/keymaps/milestogo/keymap.c @@ -0,0 +1,150 @@ +/* Copyright 2018 Holten Campbell + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H +#include "milestogo.h" + +/* customized matrix needs to be updated in local config.h +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 +#define MATRIX_ROW_PINS { E6, C7, B5, B4, C6 } +#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, D6, D4, D5, D3, D2, D1, D0, B6, D7} +*/ + +#define LAYOUT_wrap_m2primee(...) LAYOUT_m2primee(__VA_ARGS__) +#define LAYOUT_wrap_m2primee_trns(...) LAYOUT_m2primee_trns(__VA_ARGS__) + +// clang-format off +#define LAYOUT_m2primee(\ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K112,\ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, \ + K300, K301, K303, K304, K306, K308, K311, K312, \ + K413, K414 )\ + {\ + {K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, KC_NO, KC_NO},\ + {K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, KC_NO, K112, KC_NO, KC_NO},\ + {K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, KC_NO, KC_NO}, \ + {K300, K301, KC_NO, K303, K304, KC_NO, K306, KC_NO, K308, KC_NO, KC_NO, K311, K312, KC_NO, KC_NO}, \ + {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K413, K414 } \ + } + +#define LAYOUT_m2primee_trns(\ + K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, \ + K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K112, \ + K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211) \ + {\ + {KC_TRNS, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, KC_NO, KC_NO}, \ + {KC_TRNS, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, KC_NO, K112, KC_NO, KC_NO}, \ + {KC_LSFT, K201, K202, K203, K204, K205, KC_TRNS, K207, K208, K209, K210, K211, KC_TRNS, KC_NO, KC_NO}, \ + {KC_LALT, KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, KC_NO, KC_TRNS, KC_NO, KC_NO, KC_TRNS, KC_RSFT, KC_NO, KC_NO}, \ + {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, B_1ME, KC_ENTER } \ + } + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_QWERTY] = LAYOUT_wrap_m2primee(\ +KC_TAB, _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, KC_MINS, KC_EQL, +LT(_MOV,KC_ESC), _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, KC_QUOT, +KC_LSFT, _________________QWERTY_L3_________________, MO(_SYM), _________________QWERTY_R3_________________, KC_RSFT, +B_2ME, KC_LALT, LT(_NUM, KC_DEL), KC_BSPC, KC_SPC, LT(_NUM, KC_ESC), B_2ME, KC_RALT, +B_1ME, KC_ENTER), + + [_NUM] = LAYOUT_wrap_m2primee(\ +KC_TRNS, __________40_______NUM_L1__________________, __________40_______NUM_R1__________________, KC_VOLD, KC_VOLU, +KC_TRNS, __________40_______NUM_L2__________________, __________40_______NUM_R2__________________, KC_ENT, +KC_TRNS, __________40_______NUM_L3__________________, KC_TRNS, __________40_______NUM_R3__________________, KC_TRNS, +KC_TRNS, KC_TRNS, KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, +KC_TRNS, KC_TRNS), + + [_CDH] = LAYOUT_wrap_m2primee_trns(\ +______________COLEMAK_MOD_DH_L1____________, ______________COLEMAK_MOD_DH_R1____________, KC_TRNS, KC_TRNS, +______________COLEMAK_MOD_DH_L2____________, ______________COLEMAK_MOD_DH_R2____________, KC_QUOT, +______________COLEMAK_MOD_DH_L3____________, KC_TRNS, ______________COLEMAK_MOD_DH_R3____________), + + [_SYM] = LAYOUT_wrap_m2primee_trns(\ +___________________SYM_L1__________________, ___________________SYM_R1__________________, KC_TRNS, KC_TRNS, +___________________SYM_L2__________________, ___________________SYM_R2__________________, KC_TRNS, +___________________SYM_L3__________________, KC_TRNS, ___________________SYM_R3__________________), + + [_MOV] = LAYOUT_wrap_m2primee_trns(\ +__________40_______MOV_L1__________________, __________40_______MOV_R1__________________, KC_TRNS, KC_CDH, +__________40_______MOV_L2__________________, __________40_______MOV_R2__________________, KC_TRNS, +__________40_______MOV_L3__________________, KC_TRNS, __________40_______MOV_R3__________________), + + [_DMOV] = LAYOUT_wrap_m2primee_trns(\ +____________40__DELMOV_L1__________________, ____________40__DELMOV_R1__________________ , KC_TRNS, KC_CDH, +____________40__DELMOV_L2__________________, ____________40__DELMOV_R2__________________ , KC_TRNS, +____________40__DELMOV_L3__________________, KC_TRNS, ____________40__DELMOV_R3__________________ ), +}; + +// clang-format on + +void matrix_init_user(void) { + // set CapsLock LED to output and high by default, drop low when on. + setPinOutput(B1); + writePinHigh(B1); + // set NumLock LED to output and low + setPinOutput(B2); + writePinLow(B2); + // set ScrollLock LED to output and low + setPinOutput(B3); + writePinLow(B3); + + backlight_enable(); + backlight_level(2); +} + +bool led_update_kb(led_t led_state) { +#ifndef USE_BABBLEPASTE + // if we aren't using the LEDs to show bablepaste options, use them to show standard keyboard stuff + writePin(B1, led_state.caps_lock); + writePin(B2, led_state.num_lock); + writePin(B3, led_state.scroll_lock); +#endif + return true; +} + +void babble_modeswitch_kb(uint8_t mode) { +#ifdef USE_BABBLEPASTE + switch (mode) { + case (BABL_READMUX_MODE): + writePinHigh(B3); + writePinLow(B2); + backlight_level(1); + break; + case (BABL_LINUX_MODE): + writePinHigh(B2); + writePinLow(B3); + backlight_level(2); + break; + case (BABL_MAC_MODE): // backlight on, indicator leds off + writePinLow(B3); + writePinLow(B2); + backlight_level(4); + break; + } + + // call the user function + babble_modeswitch_user(mode); +#endif +} + +// function for layer indicator LED +layer_state_t layer_state_set_user(layer_state_t state) { + // Turn on top LED if we are in colemak, off for qwerty. + writePin(B1, layer_state_cmp(state, _CDH)); + return state; +} diff --git a/keyboards/primekb/prime_e/keymaps/milestogo/readme.md b/keyboards/primekb/prime_e/keymaps/milestogo/readme.md new file mode 100644 index 0000000000..c74eda3ea3 --- /dev/null +++ b/keyboards/primekb/prime_e/keymaps/milestogo/readme.md @@ -0,0 +1,2 @@ +# Modified keymap for Prime_E +My PrimeE has two added thumb switches, so it uses a slightly different keymap. \ No newline at end of file diff --git a/keyboards/primekb/prime_e/keymaps/milestogo/rules.mk b/keyboards/primekb/prime_e/keymaps/milestogo/rules.mk new file mode 100644 index 0000000000..81d9ace791 --- /dev/null +++ b/keyboards/primekb/prime_e/keymaps/milestogo/rules.mk @@ -0,0 +1 @@ +USER_NAME := miles2go diff --git a/users/miles2go/babblePaste.c b/users/miles2go/babblePaste.c index 2a32024cd2..cd032882bf 100644 --- a/users/miles2go/babblePaste.c +++ b/users/miles2go/babblePaste.c @@ -12,13 +12,14 @@ and https://github.com/qmk/qmk_firmware/blob/master/keyboards/planck/keymaps/jee #ifdef USE_BABBLEPASTE # include "babblePaste.h" -// small function that we might also want to call from a keymap. - // GLOBAL variable to determine mode. Sets startup default if no eeppom uint8_t babble_mode = 0; -// function to tell the user that the mode has changed -__attribute__((weak)) void babble_led_user(void) {} +// functions to tell the user that the mode has changed +__attribute__((weak)) void babble_modeswitch_user(uint8_t mode) {} +__attribute__((weak)) void babble_modeswitch_kb(uint8_t mode) { babble_modeswitch_user( mode); } + + void set_babble_mode(uint8_t id) { babble_mode = id; } @@ -27,6 +28,7 @@ void babble_mode_increment() { if (babble_mode >= BABL_MODEMAX) { babble_mode = 0; } + babble_modeswitch_kb(babble_mode); } void babble_mode_decrement() { @@ -35,21 +37,97 @@ void babble_mode_decrement() { } else { babble_mode = BABL_MODEMAX - 1; } + babble_modeswitch_kb(babble_mode); } /* this function runs the appropriate babblepaste macro, given the global babble_mode and a keycode defined in the babble_keycodes enum. -This could be made faster by splitting into two functions sorted by keycode range +This could be made faster by splitting into functions sorted by keycode range But that makes for a *lot* of ifdefs. */ -bool babblePaste(uint16_t keycode) { - // handle the OS/mode switching first +bool babblePaste(uint16_t keycode, bool is_pressed ) { + // handle keys that have up & down behavior first, then OS/mode switching, then macros + +// This is the key used for cut & paste (Propeller on Mac, Control elsewhere) +# ifdef BABL_MODSWAP + // WARNING, this assumes you have BABL_MAC_MODE defined. + if (keycode == BABL_PRIMARY_OS_MOD ) { + if (babble_mode == BABL_MAC_MODE) { + if (is_pressed) { + register_code(KC_LGUI); + } else { + unregister_code(KC_LGUI); + } + } else { // everybody else + + if (is_pressed) { + register_code(KC_LCTL); + } else { + unregister_code(KC_LCTL); + } + } + } + +// This is the os key not used in cut & paste. (CTRL on mac, GUI elsewhere) + if (keycode == BABL_SECONDARY_OS_MOD ) { + if (babble_mode == BABL_MAC_MODE) { + if (is_pressed) { + register_code(KC_LCTL); + } else { + unregister_code(KC_LCTL); + } + + } else { // everybody else + if (is_pressed) { + register_code(KC_LGUI); + } else { + unregister_code(KC_LGUI); + } + } + } + +// This is the alt key in most OSes. Mostly useful if you want to do hyper on one OS, Meh on another. + if (keycode == BABL_TERTIARY_OS_MOD ) { + if (babble_mode == BABL_MAC_MODE) { + if (is_pressed) { + register_code(KC_LALT); + } else { + unregister_code(KC_LALT); + } + } else { // everybody else + + if (is_pressed) { + register_code(KC_LALT); + } else { + unregister_code(KC_LALT); + } + } + } + +# endif + +// below here we are only running macros - don't serve any key up events. + if (is_pressed == 0 ) { + return true; + } + +// handle increment functions. + +if (keycode == BABL_MODE_INCREMENT) { + babble_mode_increment(); + return true; +} + +if (keycode == BABL_MODE_DECREMENT) { + babble_mode_decrement(); + return true; +} # ifdef BABL_MAC if (keycode == BABL_DO_MAC) { set_babble_mode(BABL_MAC_MODE); - babble_led_user(); + babble_modeswitch_kb(babble_mode); return true; } @@ -61,7 +139,7 @@ bool babblePaste(uint16_t keycode) { # ifdef BABL_VI if (keycode == BABL_DO_VI) { set_babble_mode(BABL_VI_MODE); - babble_led_user(); + babble_modeswitch_kb(babble_mode); return true; } if (babble_mode == BABL_VI_MODE) { @@ -71,7 +149,7 @@ bool babblePaste(uint16_t keycode) { # ifdef BABL_WINDOWS if (keycode == BABL_DO_WINDOWS) { set_babble_mode(BABL_WINDOWS_MODE); - babble_led_user(); + babble_modeswitch_kb(babble_mode); return true; } if (babble_mode == BABL_WINDOWS_MODE) { @@ -81,7 +159,7 @@ bool babblePaste(uint16_t keycode) { # ifdef BABL_LINUX if (keycode == BABL_DO_LINUX) { set_babble_mode(BABL_LINUX_MODE); - babble_led_user(); + babble_modeswitch_kb(babble_mode); return true; } if (babble_mode == BABL_LINUX_MODE) { @@ -91,27 +169,47 @@ bool babblePaste(uint16_t keycode) { # ifdef BABL_EMACS if (keycode == BABL_DO_EMACS) { set_babble_mode(BABL_EMACS_MODE); - babble_led_user(); + babble_modeswitch_kb(babble_mode); return true; } if (babble_mode == BABL_EMACS_MODE) { babblePaste_emacs(keycode); } # endif -# ifdef BABL_CHROME +# ifdef BABL_NANO + if (keycode == BABL_DO_NANO) { + set_babble_mode(BABL_NANO_MODE); + babble_modeswitch_kb(babble_mode); + return true; + } + if (babble_mode == BABL_NANO_MODE) { + babblePaste_nano(keycode); + } +# endif +# ifdef BABL_KITTY + if (keycode == BABL_DO_KITTY) { + set_babble_mode(BABL_KITTY_MODE); + babble_modeswitch_kb(babble_mode); + return true; + } + if (babble_mode == BABL_KITTY_MODE) { + babblePaste_kitty(keycode); + } +# endif +# ifdef BABL_CHROMEOS if (keycode == BABL_DO_CHROMEOS) { set_babble_mode(BABL_CHROMEOS_MODE); - babble_led_user(); + babble_modeswitch_kb(babble_mode); return true; } if (babble_mode == BABL_CHROMEOS_MODE) { - babblePaste_readmux(keycode); + babblePaste_chromeos(keycode); } # endif # ifdef BABL_READMUX if (keycode == BABL_DO_READMUX) { set_babble_mode(BABL_READMUX_MODE); - babble_led_user(); + babble_modeswitch_kb(babble_mode); return true; } if (babble_mode == BABL_READMUX_MODE) { diff --git a/users/miles2go/babblePaste.h b/users/miles2go/babblePaste.h index 606640227c..8fc233e8d4 100644 --- a/users/miles2go/babblePaste.h +++ b/users/miles2go/babblePaste.h @@ -16,7 +16,8 @@ and jeebak & algernon's keymap void set_babble_mode(uint8_t id); void babble_mode_increment(void); void babble_mode_decrement(void); -void babble_led_user(void); +void babble_modeswitch_user(uint8_t mode); +void babble_modeswitch_kb(uint8_t mode); // manually re-order these if you want to set the order or default. enum babble_modes { @@ -32,19 +33,24 @@ enum babble_modes { # ifdef BABL_VI BABL_VI_MODE, # endif -# ifdef BABL_LINUX - BABL_LINUX_MODE, -# endif # ifdef BABL_EMACS BABL_EMACS_MODE, # endif +# ifdef BABL_NANO + BABL_NANO_MODE, +# endif +# ifdef BABL_KITTY + BABL_KITTY_MODE, +# endif # ifdef BABL_CHROMEOS BABL_CHROMEOS_MODE, +# endif +# ifdef BABL_LINUX + BABL_LINUX_MODE, # endif BABL_MODEMAX }; -// void babble_led_user( uint8_t id) /// Hacks to make it easier to create sendstring macros @@ -79,6 +85,13 @@ enum babble_modes { enum babble_keycodes { FIRST = BABBLE_START, + BABL_MODE_INCREMENT, + BABL_MODE_DECREMENT, +# ifdef BABL_MODSWAP + BABL_PRIMARY_OS_MOD, + BABL_SECONDARY_OS_MOD, + BABL_TERTIARY_OS_MOD, +# endif # ifdef BABL_MOVE // Movement macros // left & right @@ -171,6 +184,7 @@ enum babble_keycodes { # endif // BABL_APP_CELLS # ifdef BABL_APP_EDITOR BABL_APP_MULTI_SELECT, /* www.sublimetext.com/docs/2/multiple_selection_with_the_keyboard.html */ + BABL_APP_SET_MARK, // set editor mark # endif // BABL_APP_EDITOR # ifdef BABL_APP_WINDOWSPLITTING // These aren't useful on most oses. @@ -197,6 +211,12 @@ enum babble_keycodes { # ifdef BABL_EMACS BABL_DO_EMACS, # endif +# ifdef BABL_NANO + BABL_DO_NANO, +# endif +# ifdef BABL_KITTY + BABL_DO_KITTY, +# endif # ifdef BABL_VI BABL_DO_VI, # endif @@ -210,7 +230,7 @@ enum babble_keycodes { }; // primary function. -bool babblePaste(uint16_t keycode); +bool babblePaste(uint16_t keycode, bool is_pressed); /****************************************************/ /* All per-os includes and short mode switch macros*/ @@ -230,6 +250,14 @@ bool babblePaste_linux(uint16_t keycode); # define B_EMACS BABL_DO_EMACS bool babblePaste_emacs(uint16_t keycode); # endif +# ifdef BABL_NANO +# define B_NANO BABL_DO_NANO +bool babblePaste_nano(uint16_t keycode); +# endif +# ifdef BABL_KITTY +# define B_KITTY BABL_DO_KITTY +bool babblePaste_kitty(uint16_t keycode); +# endif # ifdef BABL_VI # define B_VI BABL_DO_VI bool babblePaste_vi(uint16_t keycode); @@ -243,12 +271,17 @@ bool babblePaste_readmux(uint16_t keycode); bool babblePaste_chromeos(uint16_t keycode); # endif -# define BABL_INC babble_mode_increment(); -# define BABL_DEC babble_mode_decrement(); /**************************************************** ** All keyboard macros for Babble Actions *****************************************************/ +# define B_INC BABL_MODE_INCREMENT +# define B_DEC BABL_MODE_DECREMENT +# ifdef BABL_MODSWAP +# define B_1ME BABL_PRIMARY_OS_MOD +# define B_2ME BABL_SECONDARY_OS_MOD +# define B_3ME BABL_TERTIARY_OS_MOD +# endif # ifdef BABL_MOVE # define B_L1C BABL_GO_LEFT_1C @@ -334,6 +367,7 @@ bool babblePaste_chromeos(uint16_t keycode); # endif // BABL_APP_CELLS # ifdef BABL_APP_EDITOR # define B_MSEL BABL_APP_MULTI_SELECT +# define B_MARK BABL_APP_SET_MARK /* www.sublimetext.com/docs/2/multiple_selection_with_the_keyboard.html */ # endif // BABL_APP_EDITOR # ifdef BABL_APP_WINDOWSPLITTING diff --git a/users/miles2go/babblePaste.md b/users/miles2go/babblePaste.md index cc1c31bd0d..4f68cc4ae8 100644 --- a/users/miles2go/babblePaste.md +++ b/users/miles2go/babblePaste.md @@ -26,6 +26,7 @@ To switch modes, run the switch_babble_mode() function, or a pre defined BABL_DO #define BABL_MAC #define BABL_LINUX #define BABL_EMACS + #define BABL_NANO #define BABL_CHROMEOS //// These enable subsets of babble macros. Disable options to save space @@ -56,22 +57,22 @@ To switch modes, run the switch_babble_mode() function, or a pre defined BABL_DO Add the following to your keymap in process_record_user, before the main switch statement. ``` - #ifdef USE_BABBLEPASTE - if( keycode > BABBLE_START && keycode < BABBLE_END_RANGE ) { - if (record->event.pressed) { // is there a case where this isn't desired? - babblePaste ( keycode ); - } else{ - return true; - } +#ifdef USE_BABBLEPASTE + if (keycode > BABBLE_START && keycode < BABBLE_END_RANGE) { + if (record->event.pressed) { + babblePaste(keycode, 1); + } else { + babblePaste(keycode, 0); } - #endif + } +#endif ``` #### Add makefile rules Update your rules.mk to include the modes you want. - `SRC += babblePaste.c babl_windows.c babl_mac.c babl_vi.c babl_readmux.c babl_chromeos.c babl_emacs.c babl_linux.c` + `SRC += babblePaste.c babl_windows.c babl_mac.c babl_nano babl_vi.c babl_readmux.c babl_chromeos.c babl_emacs.c babl_linux.c` #### Custom Keycodes @@ -97,9 +98,18 @@ See the full list in babblePaste.h, or the list below B_LNX // switch to linux B_VI // switch to Vi mode B_EMAX // switch mode to emacs + B_NANO // switch mode to emacs B_READ // switch to readline /tmux mode B_CROM // switch to chromeos mode. + + // Swap meaning of modifier key in most ergonomic location based on babble + // mode. Eg Thumb gets CTL on Win/Linux, pinky gets Windows key. Reverse for + // OS X. See first line in babblepaste function. + #define B_1ME BABL_PRIMARY_OS_MOD + #define B_2ME BABL_SECONDARY_OS_MOD + #define B_3ME BABL_TERTIARY_OS_MOD +// Macros #define B_L1C BABL_GO_LEFT_1C #define B_R1C BABL_GO_RIGHT_1C #define B_L1W BABL_GO_LEFT_WORD @@ -137,6 +147,10 @@ See the full list in babblePaste.h, or the list below #define B_PAPP BABL_SWITCH_APP_LAST // previous #define B_CAPP BABL_CLOSE_APP #define B_HELP BABL_HELP + #define B_HELP BABL_HELP + #define B_LOCK BABL_LOCK + #define B_SCAP BABL_SCREENCAPTURE + #define B_KEYB BABL_SWITCH_KEYBOARD_LAYOUT #define B_NTAB BABL_BROWSER_NEW_TAB #define B_CTAB BABL_BROWSER_CLOSE_TAB @@ -151,9 +165,10 @@ See the full list in babblePaste.h, or the list below #define B_BDEV BABL_BROWSER_DEV_TOOLS // hard one to remember #define B_BRLD BABL_BROWSER_RELOAD #define B_BFULL BABL_BROWSER_FULLSCREEN - #define B_ZIN BABL_BROWSER_ZOOM_IN + #define B_ZIN BABL_BROWSER_ZOOM_IN #define B_ZOUT BABL_BROWSER_ZOOM_OUT + #define B_SAVE BABL_APP_SAVE #define B_PASTV BABL_APP_PASTE_VALUES #define B_CALN BABL_APP_CENTER_ALIGN #define B_CFMT BABL_APP_CLEAR_FORMATTING @@ -167,6 +182,7 @@ See the full list in babblePaste.h, or the list below #define B_SELR BABL_SELECT_ROW #define B_MSEL BABL_APP_MULTI_SELECT + #define B_MARK BABL_APP_SET_MARK #define B_VSPLIT BABL_SPLIT_FRAME_VERT #define B_VUNSPT BABL_UNSPLIT_FRAME_VERT #define B_HSPLIT BABL_SPLIT_FRAME_HORIZONTAL @@ -175,27 +191,48 @@ See the full list in babblePaste.h, or the list below #define B_PRVFM BABL_PREV_FRAME ``` +####Add babblepaste functions to your keyboard or userspace +Functions babble_led_user() and babble_led_kb() are called when babble mode is changed. +``` +void babble_modeswitch_kb(uint8_t mode){ + #ifdef USE_BABBLEPASTE + writePinLow(B3); writePinLow(B2); + switch(mode) { + case(BABL_LINUX_MODE): + writePinHigh(B2); + backlight_level(1); + break; + case(BABL_MAC_MODE): + writePinHigh(B3); + backlight_level(4); + break; + } + // call the user function + babble_modeswitch_user(mode); + #endif +``` + + ## Development FAQs **Todos** -eeprom store state of babble_mode? or update docs so that people can change the order of the enum in -babblespace.h? +eeprom store state of babble_mode? or update docs so that people can change the order of the enum in babblespace.h? **You have huge ifdef stanzas instead of functions** This fails gracefully if you don't have all options defined. Patch if you can think how to use fewer defines. -** Why not an array of arrays as a lookup instead of a function?** +**Why not an array of arrays as a lookup instead of a function?** This would allow you to store the lookup table in PROGMEM. True, but that takes more pre-processor skill than I have, and may be less portable to ARM or other flash mappings. -** Have you tested every key on every platform?** +**Have you tested every key on every platform?** No. Be careful, submit a patch. -** Why not update Apps at the same global level as the OS? ** +**Why not change apps App babble modes at the same global level as the OS?** This is only a good thing if it doesn't confuse the user. If you can show state of OS vs App, it's probably a good thing. -** Can the OS tell the keyboard what mode to use? ** +**Can the OS tell the keyboard what mode to use?** The keyboard side is easy to do with virtser_recv & a function that updates babble_mode. It still needs a PC side app to track where the keyboard focus is. One could use a keyboard macro to launch an app & switch modes for that app. diff --git a/users/miles2go/babl_chromeos.c b/users/miles2go/babl_chromeos.c index a0c461f24e..fd644fc5c5 100644 --- a/users/miles2go/babl_chromeos.c +++ b/users/miles2go/babl_chromeos.c @@ -14,7 +14,7 @@ https://support.google.com/docs/answer/181110?co=GENIE.Platform%3DDesktop&hl=en # ifdef BABL_CHROMEOS -bool babblepaste_chromeos(uint16_t keycode) { +bool babblePaste_chromeos(uint16_t keycode) { # ifdef BABL_MOVE BABLM(BABL_GO_LEFT_1C, SS_TAP(X_LEFT)); BABLM(BABL_GO_RIGHT_1C, SS_TAP(X_RIGHT)); diff --git a/users/miles2go/babl_emacs.c b/users/miles2go/babl_emacs.c index 201da0d1a3..87560b6eb8 100644 --- a/users/miles2go/babl_emacs.c +++ b/users/miles2go/babl_emacs.c @@ -69,6 +69,7 @@ bool babblePaste_emacs(uint16_t keycode) { # ifdef BABL_APP BABLM(BABL_APP_SAVE, SS_LCTL("x") SS_LCTL("s")); + BABLM(BABL_APP_SET_MARK, IMCTL(X_SPACE)); /// BABLM( BABL_APP_MULTI_SELECT, SS_LCTRL("x") "rt" ); // arguably BABLM(BABL_SPLIT_FRAME_VERT, SS_LCTRL("x") "3"); BABLM(BABL_UNSPLIT_FRAME_VERT, SS_LCTRL("u") SS_LCTRL("x") "0"); diff --git a/users/miles2go/babl_kitty.c b/users/miles2go/babl_kitty.c new file mode 100644 index 0000000000..44fd87e5ed --- /dev/null +++ b/users/miles2go/babl_kitty.c @@ -0,0 +1,153 @@ +/* Keyboard mappings for Kitty terminal +https://sw.kovidgoyal.net/kitty/index.html# + + A library to output the right key shortcut in any common app. +Given a global variable babble_mode to show the environment and a +key that calls the paste macro, do the right type of paste. +Setting the context is done by another macro, or TBD interaction with the host. + +Huge thanks to https://en.wikipedia.org/wiki/Table_of_keyboard_shortcuts +and +https://github.com/qmk/qmk_firmware/blob/master/keyboards/planck/keymaps/jeebak/keymap.c +*/ + +#include QMK_KEYBOARD_H + +// #define TAB_MEANS TAB +/* #define TAB_MEANS_TAB to keep the meaning of "tab" and "window" used in kitty documentation. . + * Leaving tab undefined will mean that each babble window command applies to a tab, + * and each babble tab command applies to a window inside the kitty OS window. + */ +//#define TAB_MEANS_TAB + +#ifdef USE_BABBLEPASTE +# include "babblePaste.h" + +# ifdef BABL_KITTY + +bool babblePaste_kitty(uint16_t keycode) { +# ifdef BABL_MOVE + BABLM(BABL_GO_LEFT_1C, SS_TAP(X_LEFT)); + BABLM(BABL_GO_RIGHT_1C, SS_TAP(X_RIGHT)); + BABLM(BABL_GO_LEFT_WORD, IMCTL(X_LEFT)); + BABLM(BABL_GO_RIGHT_WORD, IMCTL(X_RIGHT)); + BABLM(BABL_GO_START_LINE, SS_TAP(X_HOME)); + BABLM(BABL_GO_END_LINE, SS_TAP(X_END)); + BABLM(BABL_GO_START_DOC, OMSFT(IMCTL(X_HOME))); + BABLM(BABL_GO_END_DOC, OMSFT(IMCTL(X_END))); + // leaving these for command line editing. + BABLM(BABL_GO_NEXT_LINE, SS_TAP(X_DOWN)); + BABLM(BABL_GO_PREV_LINE, SS_TAP(X_UP)); + // These are for kitty scrolling by one line + // BABLM(BABL_GO_NEXT_LINE, OMSFT(IMCTL(X_DOWN))); + // BABLM(BABL_GO_PREV_LINE, OMSFT(IMCTL(X_UP))); + // passthrough + BABLM(BABL_PGDN, OMSFT(IMCTL(X_PGDOWN))); // kitty pagedown + BABLM(BABL_PGUP, OMSFT(IMCTL(X_PGUP))); // kitty pageup + // passthrough to commanrd line/shell. + BABLM(BABL_DEL_RIGHT_1C, SS_LCTL("d")); + BABLM(BABL_DEL_LEFT_WORD, SS_LCTL("w")); // meta-DEL instead? + BABLM(BABL_DEL_RIGHT_WORD, SS_LALT("d")); + BABLM(BABL_DEL_TO_LINE_END, SS_LCTL("k")); + BABLM(BABL_DEL_TO_LINE_START, SS_LCTL("u")); + BABLM(BABL_GO_PARA_START, IMCTL(X_UP)); + BABLM(BABL_GO_PARA_END, IMCTL(X_DOWN)); + BABLM(BABL_MODE, "Kitty! "); +# endif +# ifdef BABL_OSKEYS + // cut isn't real, undo/redo are passthrough. + BABLM(BABL_UNDO, SS_LCTL("z")); + BABLM(BABL_REDO, SS_LCTL("y")); + BABLM(BABL_CUT, OMSFT(IMCTL(X_X))); + BABLM(BABL_COPY, OMSFT(IMCTL(X_C))); + BABLM(BABL_PASTE, OMSFT(IMCTL(X_V))); + BABLM(BABL_SELECT_ALL, SS_LCTL("a")); + BABLM(BABL_FIND, SS_LCTL("f")); // passthrough. + // BABLM(BABL_CLOSE_APP, IMALT(X_F4)); // gnome. + // BABLM(BABL_HELP, SS_TAP(X_F1)); // script to pop open kitty web page? + // 2 passthrough. + BABLM(BABL_FIND_NEXT, SS_LCTL("g")); // Gnome*/ + BABLM(BABL_FIND_PREV, OMSFT(IMCTL(X_G))); // Gnome*/ + // BABLM(BABL_FIND_NEXT (SS_LALT(X_F3)) ); //KDE */ + /* BABLM( BABL_FIND_REPLACE , (SS_LCTL("r")) ); // KDE */ + // BABLM(BABL_FIND_REPLACE, SS_LCTL("h")); // Gnome*/ + BABLM(BABL_RUNAPP, OMSFT(IMCTL(X_O))); // pass current selection to program. + BABLM(BABL_SWITCH_APP_NEXT, IMGUI(X_TAB)); + // BABLM(BABL_SWITCH_APP_LAST, OMSFT(IMALT(X_TAB))); + BABLM(BABL_WINDOW_NEXT, IMGUI(X_GRAVE)); // next OS window of kitty. + BABLM(BABL_WINDOW_PREV, OMSFT(IMGUI(X_GRAVE))); // NA? +# ifdef TAB_MEANS_TAB + BABLM(BABL_WINDOW_NEW, OMSFT(IMCTL(X_ENTER))); // a window is a window +# else + BABLM(BABL_WINDOW_NEW, OMSFT(IMCTL(X_T))); // a window is a tab +# endif + // KITTY - missing close window. + // BABLM( BABL_HELP, (SS_TAP(X_F1)) ); // NA? + // BABLM(BABL_LOCK, OMCTL(IMALT(X_L))); // NA passthrough + // BABLM(BABL_SCREENCAPTURE, IMSFT(X_PSCREEN)); // NA passthrough +# endif +# ifdef BABL_BROWSER + +# ifdef TAB_MEANS_TAB + // option A - do tab when I say tab. + BABLM(BABL_BROWSER_NEW_TAB, OMSFT(IMCTL(X_T))); + BABLM(BABL_BROWSER_CLOSE_TAB, OMSFT(IMCTL(X_Q))); + BABLM(BABL_BROWSER_NEXT_TAB, OMSFT(IMCTL(X_RIGHT))); + BABLM(BABL_BROWSER_PREV_TAB, OMSFT(IMCTL(X_LEFT))); + // ok, this is a bit of a stretch, overloading meaning of forwards/backwards + BABLM(BABL_BROWSER_FORWARD, OMSFT(IMCTL(X_DOT))); // move current kitty tab forwards + BABLM(BABL_BROWSER_BACK, OMSFT(IMCTL(X_COMMA))); // move current kitty tab back + // requires kitty config of "map ctrl+shift+f7 detach_window" + BABLM(BABL_BROWSER_REOPEN_LAST_TAB, IMCTL(X_F7)); // pop current frame into a window +# else // tab means window/frame. + // option B - do Kitty window (frame) when I say tab + BABLM(BABL_BROWSER_NEW_TAB, OMSFT(IMCTL(X_ENTER))); + BABLM(BABL_BROWSER_NEXT_TAB, OMSFT(IMCTL(X_LBRC))); + BABLM(BABL_BROWSER_PREV_TAB, OMSFT(IMCTL(X_RBRC))); + // ok, this is a bit of a stretch, overloading meaning of forwards/backwards + BABLM(BABL_BROWSER_FORWARD, OMSFT(IMCTL(X_F))); + BABLM(BABL_BROWSER_BACK, OMSFT(IMCTL(X_B))); + // kitty - questionable mental model - reopen current frame as a window + // requires kitty config of "map ctrl+shift+f6 detach_frame" + BABLM(BABL_BROWSER_REOPEN_LAST_TAB, IMCTL(X_F6)); // pop current frame into a window +# endif // tab means tab + + // BABLM(BABL_BROWSER_FIND, SS_LCTL("f")); + BABLM(BABL_BROWSER_BOOKMARK, SS_LCTL(SS_LSFT(SS_LALT("t")))); // bookmark == set tab title. + BABLM(BABL_BROWSER_DEV_TOOLS, OMSFT(IMCTL(X_F2))); // edit kitty config. + BABLM(BABL_BROWSER_RELOAD, OMSFT(IMCTL(X_DEL))); // reset terminal + BABLM(BABL_BROWSER_FULLSCREEN, OMSFT(IMCTL(X_F11))); + BABLM(BABL_BROWSER_ZOOM_IN, OMSFT(IMCTL(X_EQUAL))); + BABLM(BABL_BROWSER_ZOOM_OUT, OMSFT(IMCTL(X_MINUS))); + // Again, breaking model to overload "view source" + BABLM(BABL_BROWSER_VIEWSRC, OMSFT(IMCTL(X_O))); // open URL in browser + +# endif +# ifdef BABL_APP + BABLM(BABL_APP_SAVE, SS_LCTL("s")); // passthrough. +# ifdef TAB_MEANS_TAB // frames are called windows. + BABLM(BABL_SPLIT_FRAME_VERT, OMSFT(IMCTL(X_ENTER))); // add new frame in kitty window + BABLM(BABL_UNSPLIT_FRAME_VERT, OMSFT(IMCTL(X_W))); // close window + // BUG, this breaks the mental model. move the current frame forward/back in rotation + BABLM(BABL_SPLIT_FRAME_HORIZONTAL, OMSFT(IMCTL(X_F))); + BABLM(BABL_UNSPLIT_FRAME_HORIZONTAL, OMSFT(IMCTL(X_B))); + // KITTY - missing ctrl shift ` = move frame to top. + BABLM(BABL_NEXT_FRAME, OMSFT(IMCTL(X_RBRC))); + BABLM(BABL_PREV_FRAME, OMSFT(IMCTL(X_LBRC))); +# else // splits are tabs + BABLM(BABL_SPLIT_FRAME_VERT, OMSFT(IMCTL(X_T))); + BABLM(BABL_UNSPLIT_FRAME_VERT, OMSFT(IMCTL(X_Q))); // close Tab + BABLM(BABL_NEXT_FRAME, OMSFT(IMCTL(X_RIGHT))); + BABLM(BABL_PREV_FRAME, OMSFT(IMCTL(X_LEFT))); + // ok, this is a bit of a stretch, overloading meaning of forwards/backwards + BABLM(BABL_SPLIT_FRAME_HORIZONTAL, OMSFT(IMCTL(X_DOT))); // move current kitty tab forwards + BABLM(BABL_UNSPLIT_FRAME_HORIZONTAL, OMSFT(IMCTL(X_COMMA))); // move current kitty tab back +# endif // tab means tab +# endif + + // Todo, ring bell, flash light, show user this isn't supported + return false; +} + +# endif /* kitty mode */ +#endif diff --git a/users/miles2go/babl_nano.c b/users/miles2go/babl_nano.c new file mode 100644 index 0000000000..ebbe9b2bc5 --- /dev/null +++ b/users/miles2go/babl_nano.c @@ -0,0 +1,77 @@ +/* A library to output the right key shortcut in any common app. +Given a global variable babble_mode to show the environment and a +key that calls the paste macro, do the right type of paste. +Setting the context is done by another macro, or TBD interaction with the host. + +Nano mode is probably most useful for people who don't usually use Nano, but +sometimes find themselves using it. + +https://www.nano-editor.org/dist/latest/cheatsheet.html +*/ + +#include QMK_KEYBOARD_H + +#ifdef USE_BABBLEPASTE +# include "babblePaste.h" + +# ifdef BABL_NANO + +// probably should allow meta to not be ALT +# define DMETA IMALT + +bool babblePaste_nano(uint16_t keycode) { +# ifdef BABL_MOVE + BABLM(BABL_GO_LEFT_1C, SS_LCTRL("b")); + BABLM(BABL_GO_RIGHT_1C, SS_LCTL("f")); + BABLM(BABL_GO_LEFT_WORD, IMCTL(X_LEFT)); + BABLM(BABL_GO_RIGHT_WORD, IMCTL(X_RIGHT)); + BABLM(BABL_GO_START_LINE, SS_LCTRL("a")); + BABLM(BABL_GO_END_LINE, SS_LCTRL("e")); + BABLM(BABL_GO_START_DOC, IMALT(X_BSLS)); + BABLM(BABL_GO_END_DOC, IMALT(X_SLASH)); + BABLM(BABL_GO_NEXT_LINE, SS_LCTRL("n")); + BABLM(BABL_GO_PREV_LINE, SS_LCTRL("p")); + BABLM(BABL_GO_PARA_START, IMCTL(X_UP)); + BABLM(BABL_GO_PARA_END, IMCTL(X_DOWN)); + BABLM(BABL_PGDN, SS_LCTRL("v")); + BABLM(BABL_PGUP, SS_LCTRL("y")); + BABLM(BABL_DEL_RIGHT_1C, SS_LCTRL("d")); + BABLM(BABL_DEL_LEFT_WORD, IMCTL(X_BSPC)); + BABLM(BABL_DEL_RIGHT_WORD, IMCTL(X_DEL)); + // BABLM(BABL_DEL_TO_LINE_END, SS_LCTRL("k")); + // BABLM(BABL_DEL_TO_LINE_START, SS_TAP(X_ESCAPE) "0" SS_LCTRL("k")); + BABLM(BABL_MODE, "Nano "); +# endif +# ifdef BABL_OSKEYS + BABLM(BABL_UNDO, SS_LALT("u")); + BABLM(BABL_REDO, SS_LALT("e")); + BABLM(BABL_CUT, SS_LCTRL("k")); // arguably b/c line based, not selection + BABLM(BABL_COPY, SS_LALT("6")); // arguably + BABLM(BABL_PASTE, SS_LCTRL("u")); + // BABLM(BABL_SELECT_ALL, SS_LCTRL("x") "h"); + BABLM(BABL_FIND, SS_LCTRL("w")); + BABLM(BABL_FIND_NEXT, SS_LALT("w")); + BABLM(BABL_FIND_PREV, SS_LALT("q")); + BABLM(BABL_FIND_REPLACE, SS_LALT("r")); + BABLM(BABL_RUNAPP, SS_LCTL("t")); + BABLM(BABL_WINDOW_NEXT, OMALT(IMSFT(X_DOT))); + BABLM(BABL_WINDOW_PREV, OMALT(IMSFT(X_COMMA))); + BABLM(BABL_WINDOW_NEW, IMCTL(X_R) IMALT(X_F)); // + BABLM(BABL_CLOSE_APP, SS_LCTRL("x")); + BABLM(BABL_HELP, SS_LCTRL("g")); + + // BABLM( BABL_LOCK, () ); // lock buffer? Too many options. + // BABLM( BABL_SCREENCAPTURE, () ); // requires plugin? + +# endif + +# ifdef BABL_APP + BABLM(BABL_APP_SAVE, SS_LCTRL("s")); // save file blurs app & os. Move? + BABLM(BABL_APP_SET_MARK, SS_LALT("a")); +# endif + + // Todo, ring bell, flash light, show user this isn't supported + return false; +} +# endif /* nano mode*/ +#endif diff --git a/users/miles2go/babl_vi.c b/users/miles2go/babl_vi.c index 7eebc0b208..f4b1d39d99 100644 --- a/users/miles2go/babl_vi.c +++ b/users/miles2go/babl_vi.c @@ -59,6 +59,7 @@ bool babblePaste_vi(uint16_t keycode) { # ifdef BABL_APP BABLM(BABL_APP_SAVE, SS_TAP(X_ESCAPE) ":w"); + BABLM(BABL_APP_SET_MARK, SS_TAP(X_ESCAPE) "ma"); // real vi people probably want multiple marks,not just a # ifdef BABL_APP_WINDOWSPLITTING BABLM(BABL_SPLIT_FRAME_VERT, SS_TAP(X_ESCAPE) ":vsplit"); BABLM(BABL_UNSPLIT_FRAME_VERT, SS_TAP(X_ESCAPE) ":hide"); // debatable. diff --git a/users/miles2go/config.h b/users/miles2go/config.h index 3fb52b8a59..a704df4b55 100644 --- a/users/miles2go/config.h +++ b/users/miles2go/config.h @@ -34,6 +34,7 @@ #define USE_BABBLEPASTE // All options +#define BABL_MODSWAP #define BABL_MOVE // Uncomment to add basic cursor movement #define BABL_OSKEYS // This adds Cut, paste, window movement and common OS shortcuts #define BABL_BROWSER // Browser shortcuts, with Chrome/Firefox as the default. @@ -44,10 +45,11 @@ #define BABL_APP_WINDOWSPLITTING // splitting frames & windows //All OSes -#define BABL_WINDOWS + +//#define BABL_WINDOWS #define BABL_READMUX -#define BABL_VI +//#define BABL_VI #define BABL_MAC #define BABL_LINUX -#define BABL_EMACS +//#define BABL_EMACS #define BABL_CHROMEOS diff --git a/users/miles2go/milestogo.c b/users/miles2go/milestogo.c index f1da2f4d7a..1c7f174e4a 100644 --- a/users/miles2go/milestogo.c +++ b/users/miles2go/milestogo.c @@ -9,6 +9,8 @@ __attribute__((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t * bool move_is_on = false; // track if we are in _MOV layer bool sym_is_on = false; // track if we are in _SYM layer + + // Defines actions for global custom keycodes // Then runs the _keymap's record handier if not processed here bool process_record_user(uint16_t keycode, keyrecord_t *record) { @@ -16,24 +18,26 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { #ifdef USE_BABBLEPASTE if (keycode > BABBLE_START && keycode < BABBLE_END_RANGE) { - if (record->event.pressed) { // is there a case where this isn't desired? - babblePaste(keycode); + if (record->event.pressed) { + babblePaste(keycode, 1); } else { - return true; + babblePaste(keycode, 0); } } #endif switch (keycode) { - case _QWERTY: + case KC_QWERTY: if (record->event.pressed) { - set_single_persistent_default_layer(_QWERTY); + layer_off(_CDH); + default_layer_set(_QWERTY); } break; - case _CDH: + case KC_CDH: if (record->event.pressed) { - set_single_persistent_default_layer(_CDH); + layer_on(_CDH); + default_layer_set(_CDH); } break; @@ -71,9 +75,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return process_record_keymap(keycode, record); } -void babble_led_user(void) { +void babble_modeswitch_user(uint8_t mode) { #ifdef USE_BABLPASTE - extern uint8_t babble_mode; + extern uint8_t babble_mode; // still using global. why? # ifdef BABL_WINDOWS if (babble_mode == BABL_WINDOWS_MODE) { @@ -140,3 +144,10 @@ void babble_led_user(void) { # endif #endif // bablepaste } + + +// we always return true here, so that each keyboard can use it's own +// led_update_kb() function +bool led_update_user(led_t led_state ) { + return true; +} \ No newline at end of file diff --git a/users/miles2go/milestogo.h b/users/miles2go/milestogo.h index dfb344212e..3a99f6d2a8 100644 --- a/users/miles2go/milestogo.h +++ b/users/miles2go/milestogo.h @@ -1,4 +1,4 @@ -/* Modified from +/* Modified from Copyright 2017 Christopher Courtney @drashna This program is free software: you can redistribute it and/or modify @@ -15,117 +15,99 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ - #pragma once #include "quantum.h" #include "version.h" #include "eeprom.h" - #ifdef USE_BABBLEPASTE -#include "babblePaste.h" -#endif +# include "babblePaste.h" +#endif #ifdef RGB_MATRIX_ENABLE -#include "rgb_matrix.h" +# include "rgb_matrix.h" #endif #define USERSPACE_ACTIVE /* Define layer names */ -enum userspace_layers { - _QWERTY=0, - _CDH, - _SYM, - _MOV, - _DMOV, - _NUM -}; - +enum userspace_layers { _QWERTY = 0, _CDH, _SYM, _MOV, _DMOV, _NUM }; /* define modifiers here, since MOD_* doesn't seem to work for these */ -#define MODS_SHIFT_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)) -#define MODS_CTRL_MASK (MOD_BIT(KC_LCTL)|MOD_BIT(KC_RCTRL)) -#define MODS_ALT_MASK (MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT)) -#define MODS_GUI_MASK (MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI)) +#define MODS_SHIFT_MASK (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) +#define MODS_CTRL_MASK (MOD_BIT(KC_LCTL) | MOD_BIT(KC_RCTRL)) +#define MODS_ALT_MASK (MOD_BIT(KC_LALT) | MOD_BIT(KC_RALT)) +#define MODS_GUI_MASK (MOD_BIT(KC_LGUI) | MOD_BIT(KC_RGUI)) #if defined(BABBLE_END_RANGE) - #define USER_START BABBLE_END_RANGE +# define USER_START BABBLE_END_RANGE #else - #if defined(KEYMAP_SAFE_RANGE) - #define USER_START KEYMAP_SAFE_RANGE - #else - #define USER_START SAFE_RANGE - #endif +# if defined(KEYMAP_SAFE_RANGE) +# define USER_START KEYMAP_SAFE_RANGE +# else +# define USER_START SAFE_RANGE +# endif #endif enum userspace_custom_keycodes { - EPRM = BABBLE_END_RANGE, // Resets EEPROM do defaults (as in eeconfig_init) - VRSN, // Prints QMK Firmware and board info - KC_QWERTY, // Sets default layer to QWERTY - KC_CDH, // Sets default layer to COLEMAK DH + EPRM = BABBLE_END_RANGE, // Resets EEPROM do defaults (as in eeconfig_init) + VRSN, // Prints QMK Firmware and board info + KC_QWERTY, // Sets default layer to QWERTY + KC_CDH, // Sets default layer to COLEMAK DH KC_MAKE, - VIBRK, // escape : - DHPASTE, // allow pasting via qwerty V,not colemak V - TMUX, // TMUX Ctrl-b - ALTSYM, // Alt when held, toggle MOV when tapped + VIBRK, // escape : + DHPASTE, // allow pasting via qwerty V,not colemak V + TMUX, // TMUX Ctrl-b + ALTSYM, // Alt when held, toggle MOV when tapped GUISYM, SPCMOV, - SAVE, // placeholder for CTRL-S while I get babble working again. - NEW_SAFE_RANGE //Keymap specific codes come AFTER this + SAVE, // placeholder for CTRL-S while I get babble working again. + NEW_SAFE_RANGE // Keymap specific codes come AFTER this }; - + #define QWERTY KC_QWERTY #define COLEMAK KC_CDH #define KC_RESET RESET - - #if (!defined(LAYOUT) && defined(KEYMAP)) -#define LAYOUT KEYMAP +# define LAYOUT KEYMAP #endif -#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__) +#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__) +#define _________________QWERTY_L1_________________ KC_Q, KC_W, KC_E, KC_R, KC_T +#define _________________QWERTY_L2_________________ KC_A, KC_S, KC_D, KC_F, KC_G +#define _________________QWERTY_L3_________________ KC_Z, KC_X, KC_C, KC_V, KC_B -#define _________________QWERTY_L1_________________ KC_Q, KC_W, KC_E, KC_R, KC_T -#define _________________QWERTY_L2_________________ KC_A, KC_S, KC_D, KC_F, KC_G -#define _________________QWERTY_L3_________________ KC_Z, KC_X, KC_C, KC_V, KC_B +#define _________________QWERTY_R1_________________ KC_Y, KC_U, KC_I, KC_O, KC_P +#define _________________QWERTY_R2_________________ KC_H, KC_J, KC_K, KC_L, KC_SCLN +#define _________________QWERTY_R3_________________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLASH -#define _________________QWERTY_R1_________________ KC_Y, KC_U, KC_I, KC_O, KC_P -#define _________________QWERTY_R2_________________ KC_H, KC_J, KC_K, KC_L, KC_SCLN -#define _________________QWERTY_R3_________________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLASH +#define ______________COLEMAK_MOD_DH_L1____________ KC_Q, KC_W, KC_F, KC_P, KC_B +#define ______________COLEMAK_MOD_DH_L2____________ KC_A, KC_R, KC_S, KC_T, KC_G +#define ______________COLEMAK_MOD_DH_L3____________ KC_Z, KC_X, KC_C, KC_D, KC_V +#define ______________COLEMAK_MOD_DH_R1____________ KC_J, KC_L, KC_U, KC_Y, KC_SCLN +#define ______________COLEMAK_MOD_DH_R2____________ KC_M, KC_N, KC_E, KC_I, KC_O +#define ______________COLEMAK_MOD_DH_R3____________ KC_K, KC_H, KC_COMM, KC_DOT, KC_SLASH -#define ______________COLEMAK_MOD_DH_L1____________ KC_Q, KC_W, KC_F, KC_P, KC_B -#define ______________COLEMAK_MOD_DH_L2____________ KC_A, KC_R, KC_S, KC_T, KC_G -#define ______________COLEMAK_MOD_DH_L3____________ KC_Z, KC_X, KC_C, KC_D, KC_V +#define ________________NUMBER_LEFT________________ KC_1, KC_2, KC_3, KC_4, KC_5 +#define ________________NUMBER_RIGHT_______________ KC_6, KC_7, KC_8, KC_9, KC_0 -#define ______________COLEMAK_MOD_DH_R1____________ KC_J, KC_L, KC_U, KC_Y, KC_SCLN -#define ______________COLEMAK_MOD_DH_R2____________ KC_M, KC_N, KC_E, KC_I, KC_O -#define ______________COLEMAK_MOD_DH_R3____________ KC_K, KC_H, KC_COMM, KC_DOT, KC_SLASH +#define ________________FKEYS__LEFT________________ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5 +#define ________________FKEYS__RIGHT_______________ KC_F6, KC_F7, KC_F8, KC_F9, KC_F10 +#define ________________FKEYS__FAR_RIGHT___________ KC_F11, KC_F12, KC_PSCR, KC_HOME, KC_END +#define ________________NAV_NUMBER_LEFT____________ KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, XXXXXXX -#define ________________NUMBER_LEFT________________ KC_1, KC_2, KC_3, KC_4, KC_5 -#define ________________NUMBER_RIGHT_______________ KC_6, KC_7, KC_8, KC_9, KC_0 - -#define ________________FKEYS__LEFT________________ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5 -#define ________________FKEYS__RIGHT_______________ KC_F6, KC_F7, KC_F8, KC_F9, KC_F10 -#define ________________FKEYS__FAR_RIGHT___________ KC_F11, KC_F12, KC_PSCR, KC_HOME, KC_END - -#define ________________NAV_NUMBER_LEFT____________ KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, XXXXXXX - -#define ___________________BLANK___________________ _______, _______, _______, _______, _______ -#define ___________________BLOCK___________________ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX - - - -// BabblePaste -#define ____________BABBLE_SWITCH_L________________ B_MAC , B_READ , B_LINUX, B_VI, _______ -#define ____________BABBLE_SWITCH_R________________ B_CROM, B_LINUX, B_WIN , QWERTY, COLEMAK +#define ___________________BLANK___________________ _______, _______, _______, _______, _______ +#define ___________________BLOCK___________________ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX +// BabblePaste +#define ____________BABBLE_SWITCH_L________________ B_MAC, B_READ, B_LINUX, B_VI, _______ +#define ____________BABBLE_SWITCH_R________________ B_CROM, B_LINUX, B_WIN, QWERTY, COLEMAK /////////MOVE - Full size keyboard version @@ -140,17 +122,16 @@ enum userspace_custom_keycodes { * `--------------------------------------------' `--------------------------------------------' */ /* Movement layer similar to Extend, but fully enriched with babblepaste */ -#define ____________BABBLE_MOV_LNUM________________ B_LOCK, B_PAPP, B_NAPP, B_PASTV, XXXX +#define ____________BABBLE_MOV_LNUM________________ B_LOCK, B_PAPP, B_NAPP, B_PASTV, XXXX -#define ____________BABBLE_MOV_L1__________________ KC_ESC, B_FINDP, B_FIND, B_FINDN, B_NCEL -#define ____________BABBLE_MOV_L2__________________ B_SELA , MO(_DMOV),KC_LSFT,B_UNDO, B_HSPLIT -#define ____________BABBLE_MOV_L3__________________ B_VSPLIT, B_CUT, B_COPY, B_PASTE, B_PASTE - -#define ____________BABBLE_MOV_RNUM________________ XXXX, XXXX, B_KEYB, B_BDEV, B_LOCK -#define ____________BABBLE_MOV_R1__________________ B_PTOP, B_GSOL, B_UP, B_GEOL, B_PEND -#define ____________BABBLE_MOV_R2__________________ B_L1W, B_L1C, B_DOWN, B_R1C, B_R1W -#define ____________BABBLE_MOV_R3__________________ B_PWIN, B_PTAB, B_NTAB, B_NXTB, B_NWIN +#define ____________BABBLE_MOV_L1__________________ KC_ESC, B_FINDP, B_FIND, B_FINDN, B_NCEL +#define ____________BABBLE_MOV_L2__________________ B_SELA, MO(_DMOV), KC_LSFT, B_UNDO, B_HSPLIT +#define ____________BABBLE_MOV_L3__________________ B_VSPLIT, B_CUT, B_COPY, B_PASTE, B_PASTE +#define ____________BABBLE_MOV_RNUM________________ XXXX, XXXX, B_KEYB, B_BDEV, B_LOCK +#define ____________BABBLE_MOV_R1__________________ B_PTOP, B_GSOL, B_UP, B_GEOL, B_PEND +#define ____________BABBLE_MOV_R2__________________ B_L1W, B_L1C, B_DOWN, B_R1C, B_R1W +#define ____________BABBLE_MOV_R3__________________ B_PWIN, B_PTAB, B_NTAB, B_NXTB, B_NWIN // Move in a direction, deleting as we go, or do opposite of Mov layer action */ /* ,--------------------------------------------. ,--------------------------------------------. @@ -160,101 +141,75 @@ enum userspace_custom_keycodes { * |--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------| * 03 |Vsplit- | Cut | Copy | Paste |Paste | | App-- | ZoomOut| NewWin | ZoomIn | App+ | * `--------------------------------------------' `--------------------------------------------' - */ -#define _________BABBLE_DELMOV_L1__________________ KC_ESC, _______, B_RPLACE, B_MSEL, B_PASTV -#define _________BABBLE_DELMOV_L2__________________ XXXXXXX, _______, _______, B_REDO, B_HUNSPT -#define _________BABBLE_DELMOV_L3__________________ B_VUNSPT,B_CUT, B_COPY, B_PASTE, B_PRVFM + */ +#define _________BABBLE_DELMOV_L1__________________ KC_ESC, _______, B_RPLACE, B_MSEL, B_PASTV +#define _________BABBLE_DELMOV_L2__________________ XXXXXXX, _______, _______, B_REDO, B_HUNSPT +#define _________BABBLE_DELMOV_L3__________________ B_VUNSPT, B_CUT, B_COPY, B_PASTE, B_PRVFM -#define _________BABBLE_DELMOV_R1__________________ XXXXXXX, B_DSOL, _______, B_DEOL, XXXXXXX -#define _________BABBLE_DELMOV_R2__________________ B_DLW, KC_BSPC, _______, B_DEL, B_DRW -#define _________BABBLE_DELMOV_R3__________________ B_NAPP, B_ZOUT, B_WINN, B_ZIN, B_PAPP +#define _________BABBLE_DELMOV_R1__________________ XXXXXXX, B_DSOL, _______, B_DEOL, XXXXXXX +#define _________BABBLE_DELMOV_R2__________________ B_DLW, KC_BSPC, _______, B_DEL, B_DRW +#define _________BABBLE_DELMOV_R3__________________ B_NAPP, B_ZOUT, B_WINN, B_ZIN, B_PAPP /* SYM / excel / programming logic +=1 optimization*/ /* ,----------------------------------. ,----------------------------------. - * 01 | | [ | ] | { | | | | } | ( | ) | | + * 01 | | [ | ] | { | } | | { | } | ( | ) | | * |------+------+------+------+------| |------+------+------+------+------| * 02 | ^ | ! | = | 0 | $ | | # | 1 | - | + | ` | * |------+------+------+------+------| |------+------+------+------+------| * 03 | \ | % | @ | | | _ | | * | & | ~ | . | / | * `----------------------------------' `----------------------------------' Memnonics - ^begining end$ . &&/|| on strong finger. #at start of line. - * (multiply) opposite / - Minus is left of plus as normal. + ^begining end$ . &&/|| on strong finger. #at start of line. + * (multiply) opposite / + Minus is left of plus as normal. ` is a shifted '' - ~/ is an outwards roll. / .* is a roll. !=0 is a roll , ++1 --1 roll. - _ is hard to get to. - + ~/ is an outwards roll. / .* is a roll. !=0 is a roll , ++1 --1 roll. + _ is hard to get to. */ -#define ___________________SYM_L1__________________ XXXXXXX, KC_LBRC, KC_RBRC, KC_LCBR, XXXXXXX -#define ___________________SYM_L2__________________ KC_CIRC, KC_EXLM, KC_EQL, KC_0, KC_DLR -#define ___________________SYM_L3__________________ KC_BSLS, KC_PERC, KC_AT, KC_PIPE, KC_UNDS - -#define ___________________SYM_R1__________________ XXXXXXX, KC_RCBR, KC_LPRN, KC_RPRN, XXXXXXX -#define ___________________SYM_R2__________________ KC_HASH, KC_KP_1, KC_MINS, KC_PLUS, KC_GRAVE -#define ___________________SYM_R3__________________ KC_PERC, KC_TILDE,KC_AMPR, KC_DOT, KC_SLASH +#define ___________________SYM_L1__________________ XXXXXXX, KC_LBRC, KC_RBRC, KC_LCBR, KC_RCBR +#define ___________________SYM_L2__________________ KC_CIRC, KC_EXLM, KC_EQL, KC_0, KC_DLR +#define ___________________SYM_L3__________________ KC_BSLS, KC_PERC, KC_AT, KC_PIPE, KC_UNDS +#define ___________________SYM_R1__________________ KC_LCBR, KC_RCBR, KC_LPRN, KC_RPRN, XXXXXXX +#define ___________________SYM_R2__________________ KC_HASH, KC_1, KC_MINS, KC_PLUS, KC_GRAVE +#define ___________________SYM_R3__________________ KC_ASTR, KC_AMPR, KC_TILDE, KC_DOT, KC_SLASH - -/* excel centric symbol layer*/ - /* ,--------------------------------------------. ,--------------------------------------------. - * 01 | DelRow|InsCol | SelCol |PasteVal| | | . | 1 | 2 | 3 | | +// Move and brackets - 40% optimization. +/* ,--------------------------------------------. ,--------------------------------------------. + * 01 | ESC | ( | ) | { | } | | PgDn |LineStrt| Up | EOL | PGUp | * |--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------| - * 02 | - |InsRow | SelRow | Undo | + | | * | 4 | 5 | 6 | - | + * 02 | [ |DelMove | Shift | Undo | ] | | WrdLft | Left | Down | Right | WrdRght| * |--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------| - * 03 | Undo | Cut | Copy | Paste |Paste | | / | 7 | 8 | 9 | Paste | + * 03 | CDH | Cut | Copy | Paste | Paste | | Babl-- | Tab-- | NewTab | Tab++ | Babl++ | * `--------------------------------------------' `--------------------------------------------' - */ -#define _________________EXCEL_L1__________________ B_DROW, B_ICOL, B_SELC, B_PASTV, XXXX -#define _________________EXCEL_L2__________________ KC_MINS, B_ICOL, B_SELC, B_UNDO, KC_PLUS -#define _________________EXCEL_L3__________________ B_UNDO, B_CUT, B_COPY, B_PASTE, B_PASTE - -#define _________________EXCEL_R1__________________ XXXXXXX, KC_1, KC_2, KC_3, XXXXXXX -#define _________________EXCEL_R2__________________ KC_ASTR, KC_4, KC_5, KC_6, KC_MINS -#define _________________EXCEL_R3__________________ KC_SLASH, KC_7, KC_8, KC_8, B_PASTE +#define __________40_______MOV_L1__________________ KC_ESC, KC_LPRN, KC_RPRN, KC_LCBR, KC_RCBR +#define __________40_______MOV_L2__________________ KC_LBRC, MO(_DMOV), KC_LSFT, KC_UNDO, KC_RBRC +#define __________40_______MOV_L3__________________ KC_CDH, B_CUT, B_COPY, B_PASTE, B_PASTE -/* Based on BEKL 15 punctuation -* ,----------------------------------. ,----------------------------------. - * 01 | | < | $ | > | | | | [ | _ | ] | | - * |------+------+------+------+------| |------+------+------+------+------| - * 02 | \ | ( | "" | ) | # | | % | { | = | } | "|" | - * |------+------+------+------+------| |------+------+------+------+------| - * 03 | | : | * | + | | | | & | ^ | ~ | | - * `----------------------------------' `----------------------------------' - Memnonics +#define __________40_______MOV_R1__________________ B_PGDN, B_GSOL, B_UP, B_GEOL, B_PGUP +#define __________40_______MOV_R2__________________ B_L1W, B_L1C, B_DOWN, B_R1C, B_R1W +#define __________40_______MOV_R3__________________ B_DEC, B_PTAB, B_NTAB, B_NXTB, B_INC +// Move in a direction, deleting as we go, or do opposite of Mov layer action +/* ,--------------------------------------------. ,--------------------------------------------. + * 01 | Esc | | B_print| | | | Zoom-- |LineStrt| . | EOL | Zoom++| + * |--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------| + * 02 | | Do_DEL | Shift | Redo | | | WrdLft | Left | . | Right | WrdRght| + * |--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------| + * 03 | Qwerty | Cut | Copy | Paste |Paste | | WIN-- |PrvFrame| Split |nxtFrame| Win++ | + * `--------------------------------------------' `--------------------------------------------' */ -#define ______________BEKL_SYM_L1__________________ XXXXXXX, KC_LBRC, KC_RBRC, KC_LCBR, XXXXXXX -#define ______________BEKL_SYM_L2__________________ KC_CIRC, KC_EXLM, KC_EQL, KC_0, KC_DLR -#define ______________BEKL_SYM_L3__________________ KC_BSLS, KC_PERC, KC_AT, KC_PIPE, KC_UNDS - -#define ______________BEKL_SYM_R1__________________ XXXXXXX, KC_RCBR, KC_LPRN, KC_RPRN, XXXXXXX -#define ______________BEKL_SYM_R2__________________ KC_HASH, KC_KP_1, KC_MINS, KC_PLUS, KC_GRAVE -#define ______________BEKL_SYM_R3__________________ KC_PERC, KC_TILDE,KC_AMPR, KC_DOT, KC_SLASH - -// NUM -/* ,----------------------------------. ,----------------------------------. - * 01 | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | - * |------+------+------+------+------| |------+------+------+------+------| - * 02 | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | - * |------+------+------+------+------| |------+------+------+------+------| - * 03 | F11 | F12 | | | QWERT| | CDH | | | | | - * `----------------------------------' `----------------------------------' - */ - -#define ___________________NUM_L1__________________ ________________NUMBER_LEFT________________ -#define ___________________NUM_L2__________________ ________________FKEYS__LEFT________________ -#define ___________________NUM_L3__________________ KC_F11, KC_F11, XXXXXXX, XXXXXXX, QWERTY - -#define ___________________NUM_R1__________________ ________________NUMBER_RIGHT_______________ -#define ___________________NUM_R2__________________ ________________FKEYS__RIGHT_______________ -#define ___________________NUM_R3__________________ COLEMAK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX - +#define ____________40__DELMOV_L1__________________ KC_ESC, XXXXXXX, B_MODE, XXXXXXX, XXXXXXX +#define ____________40__DELMOV_L2__________________ XXXXXXX, _______, _______, B_REDO, XXXXXXX +#define ____________40__DELMOV_L3__________________ KC_QWERTY, _______, _______, _______, _______ +#define ____________40__DELMOV_R1__________________ B_ZOUT, B_DSOL, _______, B_DEOL, B_ZIN +#define ____________40__DELMOV_R2__________________ B_DLW, KC_BSPC, _______, B_DEL, B_DRW +#define ____________40__DELMOV_R3__________________ B_PWIN, B_PRVFM, B_VSPLIT, B_NXTFM, B_NWIN -/* NUM / excel / programming logic +=1 optimization*/ +/* NUM + symbol / programming logic +=1 optimization*/ /* ,----------------------------------. ,----------------------------------. * 01 | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | * |------+------+------+------+------| |------+------+------+------+------| @@ -263,27 +218,85 @@ enum userspace_custom_keycodes { * 03 | \ | % | @ | | | _ | | * | & | ~ | . | / | * `----------------------------------' `----------------------------------' Memnonics - ^begining end$ . &&/|| on strong finger. #at start of line. * missing? + ^begining end$ . &&/|| on strong finger. #at start of line. Minus is left of plus as normal. ` is a shifted '' - ~/ is an outwards roll. / * is a roll. - _ is hard to get to. - + ~/ and is an outwards roll. / * is a roll. + _ is hard to get to. */ -#define __________40_______NUM_L1__________________ ________________NUMBER_LEFT________________ -#define __________40_______NUM_L2__________________ KC_CIRC, KC_EXLM, KC_EQL, KC_0, KC_DLR -#define __________40_______NUM_L3__________________ KC_BSLS, KC_PERC, KC_AT, KC_PIPE, KC_UNDS - -#define __________40_______NUM_R1__________________ ________________NUMBER_RIGHT_______________ -#define __________40_______NUM_R2__________________ KC_HASH, KC_KP_1, KC_MINS, KC_PLUS, KC_GRAVE -#define __________40_______NUM_R3__________________ KC_PERC, KC_TILDE, KC_AMPR,KC_DOT, KC_SLASH - -#define _________________ADJUST_L1_________________ RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG -#define _________________ADJUST_L2_________________ MU_TOG , CK_TOGG, AU_ON, AU_OFF, AG_NORM -#define _________________ADJUST_L3_________________ RGB_RMOD,RGB_HUD,RGB_SAD, RGB_VAD, KC_RGB_T +#define __________40_______NUM_L1__________________ ________________NUMBER_LEFT________________ +#define __________40_______NUM_L2__________________ KC_CIRC, KC_EXLM, KC_EQL, KC_0, KC_DLR +#define __________40_______NUM_L3__________________ KC_BSLS, KC_PERC, KC_AT, KC_PIPE, KC_UNDS -#define _________________ADJUST_R1_________________ KC_SEC1, KC_SEC2, KC_SEC3, KC_SEC4, KC_SEC5 -#define _________________ADJUST_R2_________________ AG_SWAP, QWERTY, COLEMAK, DVORAK, WORKMAN -#define _________________ADJUST_R3_________________ MG_NKRO, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT +#define __________40_______NUM_R1__________________ ________________NUMBER_RIGHT_______________ +#define __________40_______NUM_R2__________________ KC_HASH, KC_1, KC_MINS, KC_PLUS, KC_GRAVE +#define __________40_______NUM_R3__________________ KC_ASTR, KC_AMPR, KC_TILDE, KC_DOT, KC_SLASH +// NUM +/* ,----------------------------------. ,----------------------------------. + * 01 | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | + * |------+------+------+------+------| |------+------+------+------+------| + * 02 | F1 | F2 | F3 | F4 | F5 | | + | 4 | 5 | 6 | - | + * |------+------+------+------+------| |------+------+------+------+------| + * 03 | F11 | F12 | | CDH| QWERT| | 0 | 1 | 2 | 3 | . | + * `----------------------------------' `----------------------------------' + */ +#define ___________________NUM_L1__________________ ________________NUMBER_LEFT________________ +#define ___________________NUM_L2__________________ ________________FKEYS__LEFT________________ +#define ___________________NUM_L3__________________ KC_F11, KC_F11, XXXXXXX, XXXXXXX, QWERTY + +#define ___________________NUM_R1__________________ ________________NUMBER_RIGHT_______________ +#define ___________________NUM_R2__________________ KC_PLUS, KC_4, KC_5, KC_6, KC_MINS +#define ___________________NUM_R3__________________ KC_0, KC_1, KC_2, KC_3, KC_DOT + +// Standard Sym +/* ,----------------------------------. ,----------------------------------. + * 01 | ! | @ | # | $ | % | | ^ | & | * | ( | ) | + * |------+------+------+------+------| |------+------+------+------+------| + */ +#define __________________SSYM_L1__________________ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC +#define __________________SSYM_R1__________________ KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN + +#define _________________ADJUST_L1_________________ RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG +#define _________________ADJUST_L2_________________ MU_TOG, CK_TOGG, AU_ON, AU_OFF, AG_NORM +#define _________________ADJUST_L3_________________ RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, KC_RGB_T + +#define _________________ADJUST_R1_________________ KC_SEC1, KC_SEC2, KC_SEC3, KC_SEC4, KC_SEC5 +#define _________________ADJUST_R2_________________ AG_SWAP, QWERTY, COLEMAK, DVORAK, WORKMAN +#define _________________ADJUST_R3_________________ MG_NKRO, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT + +/* excel centric symbol layer*/ +/* ,--------------------------------------------. ,--------------------------------------------. +* 01 | DelRow|InsCol | SelCol |PasteVal| | | . | 1 | 2 | 3 | | +* |--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------| +* 02 | - |InsRow | SelRow | Undo | + | | * | 4 | 5 | 6 | - | +* |--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------| +* 03 | Undo | Cut | Copy | Paste |Paste | | / | 7 | 8 | 9 | Paste | +* `--------------------------------------------' `--------------------------------------------' + +*/ +#define _________________EXCEL_L1__________________ B_DROW, B_ICOL, B_SELC, B_PASTV, XXXX +#define _________________EXCEL_L2__________________ KC_MINS, B_ICOL, B_SELC, B_UNDO, KC_PLUS +#define _________________EXCEL_L3__________________ B_UNDO, B_CUT, B_COPY, B_PASTE, B_PASTE + +#define _________________EXCEL_R1__________________ XXXXXXX, KC_1, KC_2, KC_3, XXXXXXX +#define _________________EXCEL_R2__________________ KC_ASTR, KC_4, KC_5, KC_6, KC_MINS +#define _________________EXCEL_R3__________________ KC_SLASH, KC_7, KC_8, KC_8, B_PASTE + +/* Based on BEKL 15 punctuation + * ,----------------------------------. ,----------------------------------. + * 01 | | < | $ | > | | | | [ | _ | ] | | + * |------+------+------+------+------| |------+------+------+------+------| + * 02 | \ | ( | "" | ) | # | | % | { | = | } | "|" | + * |------+------+------+------+------| |------+------+------+------+------| + * 03 | | : | * | + | | | | & | ^ | ~ | | + * `----------------------------------' `----------------------------------' + */ +#define ______________BEKL_SYM_L1__________________ XXXXXXX, KC_LBRC, KC_RBRC, KC_LCBR, XXXXXXX +#define ______________BEKL_SYM_L2__________________ KC_CIRC, KC_EXLM, KC_EQL, KC_0, KC_DLR +#define ______________BEKL_SYM_L3__________________ KC_BSLS, KC_PERC, KC_AT, KC_PIPE, KC_UNDS + +#define ______________BEKL_SYM_R1__________________ XXXXXXX, KC_RCBR, KC_LPRN, KC_RPRN, XXXXXXX +#define ______________BEKL_SYM_R2__________________ KC_HASH, KC_KP_1, KC_MINS, KC_PLUS, KC_GRAVE +#define ______________BEKL_SYM_R3__________________ KC_PERC, KC_TILDE, KC_AMPR, KC_DOT, KC_SLASH diff --git a/users/miles2go/readme.md b/users/miles2go/readme.md index b55f51b15f..57983660be 100644 --- a/users/miles2go/readme.md +++ b/users/miles2go/readme.md @@ -3,7 +3,7 @@ This is my personal userspace file. Most of my code exists here, as it's heavily shared. ## Custom Keycodes -See the babblepaste.txt readme +See the babblepaste.md readme ## Layer Indication diff --git a/users/miles2go/rules.mk b/users/miles2go/rules.mk index 7fb7719527..b7a7dcdba8 100644 --- a/users/miles2go/rules.mk +++ b/users/miles2go/rules.mk @@ -1,4 +1,4 @@ -SRC += milestogo.c babblePaste.c babl_windows.c babl_mac.c babl_vi.c babl_readmux.c babl_chromeos.c babl_emacs.c babl_linux.c +SRC += milestogo.c babblePaste.c babl_windows.c babl_mac.c babl_vi.c babl_readmux.c babl_chromeos.c babl_kitty.c babl_linux.c LTO_ENABLE = yes ifeq ($(strip $(MACROS_ENABLED)), yes) From 45e6bb7add65d4fd733feb2ae1a059782d7f2cfc Mon Sep 17 00:00:00 2001 From: Monksoffunk Date: Mon, 15 Mar 2021 04:55:59 +0900 Subject: [PATCH 054/613] Add Cassette42 (#10562) Co-authored-by: Drashna Jaelre Co-authored-by: Ryan --- keyboards/cassette42/cassette42.c | 16 ++ keyboards/cassette42/cassette42.h | 34 +++ keyboards/cassette42/common/glcdfont.c | 233 ++++++++++++++++++ keyboards/cassette42/common/oled_helper.c | 25 ++ keyboards/cassette42/common/oled_helper.h | 22 ++ keyboards/cassette42/config.h | 52 ++++ keyboards/cassette42/info.json | 12 + keyboards/cassette42/keymaps/default/keymap.c | 174 +++++++++++++ .../cassette42/keymaps/default/readme.md | 1 + keyboards/cassette42/readme.md | 15 ++ keyboards/cassette42/rules.mk | 26 ++ 11 files changed, 610 insertions(+) create mode 100644 keyboards/cassette42/cassette42.c create mode 100644 keyboards/cassette42/cassette42.h create mode 100644 keyboards/cassette42/common/glcdfont.c create mode 100644 keyboards/cassette42/common/oled_helper.c create mode 100644 keyboards/cassette42/common/oled_helper.h create mode 100644 keyboards/cassette42/config.h create mode 100644 keyboards/cassette42/info.json create mode 100644 keyboards/cassette42/keymaps/default/keymap.c create mode 100644 keyboards/cassette42/keymaps/default/readme.md create mode 100644 keyboards/cassette42/readme.md create mode 100644 keyboards/cassette42/rules.mk diff --git a/keyboards/cassette42/cassette42.c b/keyboards/cassette42/cassette42.c new file mode 100644 index 0000000000..f5ca2b8a98 --- /dev/null +++ b/keyboards/cassette42/cassette42.c @@ -0,0 +1,16 @@ +/* Copyright 2019 monksoffunk + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "cassette42.h" diff --git a/keyboards/cassette42/cassette42.h b/keyboards/cassette42/cassette42.h new file mode 100644 index 0000000000..32a686f3de --- /dev/null +++ b/keyboards/cassette42/cassette42.h @@ -0,0 +1,34 @@ +/* Copyright 2019 monksoffunk + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +/* This a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT( \ + k10, k11, \ + k00, k01, k02, k03\ +) \ +{ \ + { k00, k01, k02, k03, k10, k11 }, \ +} diff --git a/keyboards/cassette42/common/glcdfont.c b/keyboards/cassette42/common/glcdfont.c new file mode 100644 index 0000000000..dcffc71958 --- /dev/null +++ b/keyboards/cassette42/common/glcdfont.c @@ -0,0 +1,233 @@ +// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0. +// See gfxfont.h for newer custom bitmap font info. + +#include "progmem.h" + +// Standard ASCII 5x7 font + +static const unsigned char font[] PROGMEM = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00, +0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00, +0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00, +0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00, +0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00, +0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00, +0x00, 0x18, 0x3C, 0x18, 0x00, 0x00, +0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00, +0x00, 0x18, 0x24, 0x18, 0x00, 0x00, +0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00, +0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00, +0x26, 0x29, 0x79, 0x29, 0x26, 0x00, +0x40, 0x7F, 0x05, 0x05, 0x07, 0x00, +0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00, +0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00, +0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00, +0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00, +0x14, 0x22, 0x7F, 0x22, 0x14, 0x00, +0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00, +0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00, +0x00, 0x66, 0x89, 0x95, 0x6A, 0x00, +0x60, 0x60, 0x60, 0x60, 0x60, 0x00, +0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00, +0x08, 0x04, 0x7E, 0x04, 0x08, 0x00, +0x10, 0x20, 0x7E, 0x20, 0x10, 0x00, +0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00, +0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00, +0x1E, 0x10, 0x10, 0x10, 0x10, 0x00, +0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00, +0x30, 0x38, 0x3E, 0x38, 0x30, 0x00, +0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, +0x00, 0x07, 0x00, 0x07, 0x00, 0x00, +0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, +0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00, +0x23, 0x13, 0x08, 0x64, 0x62, 0x00, +0x36, 0x49, 0x56, 0x20, 0x50, 0x00, +0x00, 0x08, 0x07, 0x03, 0x00, 0x00, +0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, +0x00, 0x41, 0x22, 0x1C, 0x00, 0x00, +0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, +0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, +0x00, 0x80, 0x70, 0x30, 0x00, 0x00, +0x08, 0x08, 0x08, 0x08, 0x08, 0x00, +0x00, 0x00, 0x60, 0x60, 0x00, 0x00, +0x20, 0x10, 0x08, 0x04, 0x02, 0x00, +0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, +0x00, 0x42, 0x7F, 0x40, 0x00, 0x00, +0x72, 0x49, 0x49, 0x49, 0x46, 0x00, +0x21, 0x41, 0x49, 0x4D, 0x33, 0x00, +0x18, 0x14, 0x12, 0x7F, 0x10, 0x00, +0x27, 0x45, 0x45, 0x45, 0x39, 0x00, +0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00, +0x41, 0x21, 0x11, 0x09, 0x07, 0x00, +0x36, 0x49, 0x49, 0x49, 0x36, 0x00, +0x46, 0x49, 0x49, 0x29, 0x1E, 0x00, +0x00, 0x00, 0x14, 0x00, 0x00, 0x00, +0x00, 0x40, 0x34, 0x00, 0x00, 0x00, +0x00, 0x08, 0x14, 0x22, 0x41, 0x00, +0x14, 0x14, 0x14, 0x14, 0x14, 0x00, +0x00, 0x41, 0x22, 0x14, 0x08, 0x00, +0x02, 0x01, 0x59, 0x09, 0x06, 0x00, +0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00, +0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00, +0x7F, 0x49, 0x49, 0x49, 0x36, 0x00, +0x3E, 0x41, 0x41, 0x41, 0x22, 0x00, +0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00, +0x7F, 0x49, 0x49, 0x49, 0x41, 0x00, +0x7F, 0x09, 0x09, 0x09, 0x01, 0x00, +0x3E, 0x41, 0x41, 0x51, 0x73, 0x00, +0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, +0x00, 0x41, 0x7F, 0x41, 0x00, 0x00, +0x20, 0x40, 0x41, 0x3F, 0x01, 0x00, +0x7F, 0x08, 0x14, 0x22, 0x41, 0x00, +0x7F, 0x40, 0x40, 0x40, 0x40, 0x00, +0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00, +0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00, +0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00, +0x7F, 0x09, 0x09, 0x09, 0x06, 0x00, +0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00, +0x7F, 0x09, 0x19, 0x29, 0x46, 0x00, +0x26, 0x49, 0x49, 0x49, 0x32, 0x00, +0x03, 0x01, 0x7F, 0x01, 0x03, 0x00, +0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00, +0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00, +0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00, +0x63, 0x14, 0x08, 0x14, 0x63, 0x00, +0x03, 0x04, 0x78, 0x04, 0x03, 0x00, +0x61, 0x59, 0x49, 0x4D, 0x43, 0x00, +0x00, 0x7F, 0x41, 0x41, 0x41, 0x00, +0x02, 0x04, 0x08, 0x10, 0x20, 0x00, +0x00, 0x41, 0x41, 0x41, 0x7F, 0x00, +0x04, 0x02, 0x01, 0x02, 0x04, 0x00, +0x40, 0x40, 0x40, 0x40, 0x40, 0x00, +0x00, 0x03, 0x07, 0x08, 0x00, 0x00, +0x20, 0x54, 0x54, 0x78, 0x40, 0x00, +0x7F, 0x28, 0x44, 0x44, 0x38, 0x00, +0x38, 0x44, 0x44, 0x44, 0x28, 0x00, +0x38, 0x44, 0x44, 0x28, 0x7F, 0x00, +0x38, 0x54, 0x54, 0x54, 0x18, 0x00, +0x00, 0x08, 0x7E, 0x09, 0x02, 0x00, +0x18, 0x24, 0x24, 0x1C, 0x38, 0x00, +0x7F, 0x08, 0x04, 0x04, 0x78, 0x00, +0x00, 0x44, 0x7D, 0x40, 0x00, 0x00, +0x20, 0x40, 0x40, 0x3D, 0x00, 0x00, +0x7F, 0x10, 0x28, 0x44, 0x00, 0x00, +0x00, 0x41, 0x7F, 0x40, 0x00, 0x00, +0x7C, 0x04, 0x78, 0x04, 0x78, 0x00, +0x7C, 0x08, 0x04, 0x04, 0x78, 0x00, +0x38, 0x44, 0x44, 0x44, 0x38, 0x00, +0x7C, 0x18, 0x24, 0x24, 0x18, 0x00, +0x18, 0x24, 0x24, 0x18, 0x7C, 0x00, +0x7C, 0x08, 0x04, 0x04, 0x08, 0x00, +0x48, 0x54, 0x54, 0x54, 0x24, 0x00, +0x04, 0x04, 0x3F, 0x44, 0x24, 0x00, +0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00, +0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00, +0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00, +0x44, 0x28, 0x10, 0x28, 0x44, 0x00, +0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00, +0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, +0x00, 0x08, 0x36, 0x41, 0x00, 0x00, +0x00, 0x00, 0x77, 0x00, 0x00, 0x00, +0x00, 0x41, 0x36, 0x08, 0x00, 0x00, +0x02, 0x01, 0x02, 0x04, 0x02, 0x00, +0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00, +0x00, 0x00, 0x00, 0xFE, 0x01, 0x19, +0x05, 0xC1, 0x21, 0x31, 0xD1, 0x11, +0x11, 0x11, 0x11, 0x11, 0x11, 0xD1, +0x31, 0x21, 0xC1, 0x01, 0x01, 0x01, +0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x3E, 0x3E, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0x3E, 0x3E, 0x3E, +0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, +0x00, 0x00, 0x3E, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0x3E, 0xBE, 0xBE, +0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0x7E, +0x00, 0x00, 0xF8, 0xF8, 0xF8, 0x00, +0xF8, 0xF8, 0xF8, 0x00, 0xF8, 0xF8, +0xF8, 0xF8, 0x00, 0x00, 0x00, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, +0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, +0xE0, 0xE0, 0xE0, 0x00, 0x00, 0x00, +0xC0, 0xF0, 0xFE, 0x7E, 0x1E, 0xFE, +0xFE, 0xFE, 0xFE, 0x00, 0x00, 0xF0, +0xFC, 0xFC, 0xFE, 0x1E, 0x9E, 0xFE, +0xFC, 0xFC, 0xF0, 0x00, 0x00, 0x00, +0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC, +0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00, +0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E, +0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00, +0x00, 0x80, 0xC0, 0xE0, 0x7E, 0x5B, +0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00, +0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE, +0xDE, 0xD7, 0xDC, 0x00, 0xC0, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x3F, 0x40, 0x60, +0x50, 0x48, 0x69, 0x4B, 0x4A, 0x4A, +0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, +0x4B, 0x69, 0x48, 0x50, 0x60, 0x40, +0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x7C, 0x7C, 0x7F, 0x7F, +0x7F, 0x3F, 0x1F, 0x00, 0x7C, 0x7C, +0x7F, 0x7F, 0x7F, 0x3F, 0x1F, 0x07, +0x00, 0x00, 0x00, 0x0F, 0x3F, 0x7F, +0x7F, 0x7F, 0x7F, 0x7C, 0x7D, 0x7D, +0x7D, 0x7D, 0x7D, 0x7D, 0x7D, 0x7C, +0x00, 0x00, 0x7B, 0x7B, 0x7B, 0x78, +0x7B, 0x7B, 0x7B, 0x78, 0x7F, 0x7F, +0x7F, 0x3F, 0x00, 0x00, 0x00, 0x7F, +0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x03, +0x03, 0x03, 0x03, 0x03, 0x03, 0x03, +0x03, 0x03, 0x03, 0x00, 0x00, 0x06, +0x07, 0x07, 0x07, 0x07, 0x00, 0x7F, +0x7F, 0x7F, 0x7F, 0x00, 0x00, 0x00, +0x41, 0x73, 0x78, 0x7E, 0x7F, 0x7F, +0x7F, 0x7B, 0x78, 0x00, 0x00, 0x00, +0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F, +0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00, +0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F, +0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00, +0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20, +0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00, +0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F, +0x0F, 0x7F, 0x0F, 0x00, 0x03, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; diff --git a/keyboards/cassette42/common/oled_helper.c b/keyboards/cassette42/common/oled_helper.c new file mode 100644 index 0000000000..de908f128a --- /dev/null +++ b/keyboards/cassette42/common/oled_helper.c @@ -0,0 +1,25 @@ +#ifdef OLED_DRIVER_ENABLE +# include QMK_KEYBOARD_H +# include +# include + +void render_logo(void) { + static const char PROGMEM logo[] = {0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0}; + oled_write_P(logo, false); +} + +# ifdef RGBLIGHT_ENABLE +extern rgblight_config_t rgblight_config; +static char led_buf[24] = "LED state ready.\n"; +rgblight_config_t rgblight_config_bak; + +void update_led_status(void) { + if (rgblight_config_bak.enable != rgblight_config.enable || rgblight_config_bak.mode != rgblight_config.mode || rgblight_config_bak.hue != rgblight_config.hue || rgblight_config_bak.sat != rgblight_config.sat || rgblight_config_bak.val != rgblight_config.val) { + snprintf(led_buf, sizeof(led_buf) - 1, "%c H%2d S%2d V%2d MODE%2d", rgblight_config.enable ? '*' : '.', (uint8_t)(rgblight_config.hue / RGBLIGHT_HUE_STEP), (uint8_t)(rgblight_config.sat / RGBLIGHT_SAT_STEP), (uint8_t)(rgblight_config.val / RGBLIGHT_VAL_STEP), (uint8_t)rgblight_config.mode); + rgblight_config_bak = rgblight_config; + } +} + +void render_led_status(void) { oled_write(led_buf, false); } +# endif +#endif diff --git a/keyboards/cassette42/common/oled_helper.h b/keyboards/cassette42/common/oled_helper.h new file mode 100644 index 0000000000..6c2680664c --- /dev/null +++ b/keyboards/cassette42/common/oled_helper.h @@ -0,0 +1,22 @@ +#ifdef OLED_DRIVER_ENABLE + +void render_logo(void); + +# define RENDER_LOGO(a) render_logo(a) + +# ifdef RGBLIGHT_ENABLE +void update_led_status(void); +void render_led_status(void); +# define UPDATE_LED_STATUS() update_led_status() +# define RENDER_LED_STATUS(a) render_led_status(a) +# else +# define UPDATE_LED_STATUS() +# define RENDER_LED_STATUS(a) +# endif + +#else +# define RENDER_LOGO(a) +# define UPDATE_LED_STATUS() +# define RENDER_LED_STATUS(a) + +#endif \ No newline at end of file diff --git a/keyboards/cassette42/config.h b/keyboards/cassette42/config.h new file mode 100644 index 0000000000..1729c31fbd --- /dev/null +++ b/keyboards/cassette42/config.h @@ -0,0 +1,52 @@ +/* +Copyright 2019 monksoffunk + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0xCA42 +#define DEVICE_VER 0x0001 +#define MANUFACTURER monksoffunk +#define PRODUCT cassette42 + +/* key matrix size */ +#define MATRIX_ROWS 1 +#define MATRIX_COLS 6 + +#define DIRECT_PINS {{ B4, F6, F5, F4, B5, F7 }} +#define UNUSED_PINS + +#define ENCODERS_PAD_A { B6, B3 } +#define ENCODERS_PAD_B { B2, B1 } +#define ENCODER_RESOLUTION 4 + +#define RGB_DI_PIN D3 +#ifdef RGB_DI_PIN +# define RGBLED_NUM 5 +# define RGBLIGHT_HUE_STEP 8 +# define RGBLIGHT_SAT_STEP 8 +# define RGBLIGHT_VAL_STEP 8 +# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +# define RGBLIGHT_ANIMATIONS +#endif + +#define OLED_FONT_H "keyboards/cassette42/common/glcdfont.c" diff --git a/keyboards/cassette42/info.json b/keyboards/cassette42/info.json new file mode 100644 index 0000000000..f792797ec8 --- /dev/null +++ b/keyboards/cassette42/info.json @@ -0,0 +1,12 @@ +{ + "keyboard_name": "cassette42", + "url": "http://www.sho-k.co.uk/tech/1246.html", + "maintainer": "monksoffunk", + "width": 4, + "height": 2.75, + "layouts": { + "LAYOUT": { + "layout": [{"x":0.5, "y":0.75}, {"x":2.5, "y":0.75}, {"x":0, "y":1.75}, {"x":1, "y":1.75}, {"x":2, "y":1.75}, {"x":3, "y":1.75}] + } + } +} \ No newline at end of file diff --git a/keyboards/cassette42/keymaps/default/keymap.c b/keyboards/cassette42/keymaps/default/keymap.c new file mode 100644 index 0000000000..2f53c1d6ca --- /dev/null +++ b/keyboards/cassette42/keymaps/default/keymap.c @@ -0,0 +1,174 @@ +/* Copyright 2019 monksoffunk + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +#include "common/oled_helper.h" + +// Defines the keycodes used by our macros in process_record_user +enum custom_keycodes { + RGBRST = SAFE_RANGE, + WRTROM, +}; + +enum layer_number { + _AUDIO = 0, + _HUE, + _SAT, + _VAL, + _MODE, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // LAYOUT(LeftEncoder, RightEncoder, LeftSwitch, CenterLeftSwitch, CenterRightSwitch, RightSwitch) + [_AUDIO] = LAYOUT(KC_MUTE, KC_ENT, LT(_HUE, KC_MPRV), LT(_SAT, KC_MPLY), LT(_VAL, KC_MNXT), LT(_MODE, KC_SPC)), + [_HUE] = LAYOUT(RGB_TOG, RGBRST, _______, _______, RGB_HUD, RGB_HUI), + [_SAT] = LAYOUT(_______, _______, _______, _______, RGB_SAD, RGB_SAI), + [_VAL] = LAYOUT(_______, _______, RGB_VAD, RGB_VAI, _______, RGB_VAI), + [_MODE] = LAYOUT(_______, WRTROM, RGB_RMOD, RGB_MOD, RGB_MOD, _______), +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case WRTROM: +#ifdef RGBLIGHT_ENABLE + if (record->event.pressed) { + eeconfig_update_rgblight_current(); + } +#endif + return false; + break; + + case RGBRST: +#ifdef RGBLIGHT_ENABLE + if (record->event.pressed) { + eeconfig_update_rgblight_default(); + rgblight_enable(); + } +#endif + return false; + break; + } + return true; +} + +#ifdef OLED_DRIVER_ENABLE +# include +# include + +// assign the right code to your layers for OLED display +# define L_AUDIO 0 +# define L_HUE (1 << _HUE) +# define L_SAT (1 << _SAT) +# define L_VAL (1 << _VAL) +# define L_MODE (1 << _MODE) + +void render_status(void) { + render_logo(); + // Define layers here, Have not worked out how to have text displayed for each layer. Copy down the number you see and add a case for it below + switch (layer_state) { + case L_AUDIO: + oled_write_P(PSTR("audio control\n"), false); + break; + case L_HUE: + oled_write_P(PSTR("rgb HUE control\n"), false); + break; + case L_SAT: + oled_write_P(PSTR("rgb SAT control\n"), false); + break; + case L_VAL: + oled_write_P(PSTR("rgb VAL control\n"), false); + break; + case L_MODE: + oled_write_P(PSTR("rgb MODE control\n"), false); + break; + default: + break; + } + UPDATE_LED_STATUS(); + RENDER_LED_STATUS(); +} + +void oled_task_user(void) { + if (is_keyboard_master()) { + render_status(); + } else { + render_logo(); + } +} +#endif + +void led_set_user(uint8_t usb_led) {} + +void encoder_update_user(uint8_t index, bool clockwise) { + oled_on(); + if (index == 0) { /* left encoder */ + switch (layer_state) { + case L_AUDIO: + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + break; + + case L_HUE: +#ifdef RGBLIGHT_ENABLE + if (clockwise) { + rgblight_increase_hue_noeeprom(); + } else { + rgblight_decrease_hue_noeeprom(); + } +#endif + break; + + case L_SAT: +#ifdef RGBLIGHT_ENABLE + if (clockwise) { + rgblight_increase_sat_noeeprom(); + } else { + rgblight_decrease_sat_noeeprom(); + } +#endif + break; + + case L_VAL: +#ifdef RGBLIGHT_ENABLE + if (clockwise) { + rgblight_increase_val_noeeprom(); + } else { + rgblight_decrease_val_noeeprom(); + } +#endif + break; + + case L_MODE: +#ifdef RGBLIGHT_ENABLE + if (clockwise) { + rgblight_step_noeeprom(); + } else { + rgblight_step_reverse_noeeprom(); + } +#endif + break; + } + } else if (index == 1) { /* right encoder */ + if (clockwise) { + tap_code(KC_DOWN); + } else { + tap_code(KC_UP); + } + } +} diff --git a/keyboards/cassette42/keymaps/default/readme.md b/keyboards/cassette42/keymaps/default/readme.md new file mode 100644 index 0000000000..cf1a7bc433 --- /dev/null +++ b/keyboards/cassette42/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for cassette42 \ No newline at end of file diff --git a/keyboards/cassette42/readme.md b/keyboards/cassette42/readme.md new file mode 100644 index 0000000000..2ba9a661bb --- /dev/null +++ b/keyboards/cassette42/readme.md @@ -0,0 +1,15 @@ +# Cassette42 + +![cassette42](https://pbs.twimg.com/media/D63q5S0UcAE9Rfj?format=jpg&name=large) + +An audio control pad with 4 switches and 2 rotary encoders. + +* Keyboard Maintainer: [monksoffunk](https://github.com/monksoffunk) [@monksoffunkJP](https://twitter.com/monksoffunkJP) +* Hardware Supported: Cassette 42 PCB +* Hardware Availability: [Yushakobo Shop](https://yushakobo.jp/shop/cassette42/) + +Make example for this keyboard (after setting up your build environment): + + make cassette42:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/cassette42/rules.mk b/keyboards/cassette42/rules.mk new file mode 100644 index 0000000000..4fd8e384b3 --- /dev/null +++ b/keyboards/cassette42/rules.mk @@ -0,0 +1,26 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +ENCODER_ENABLE = yes +OLED_DRIVER_ENABLE = yes + +SRC += ./common/oled_helper.c From 739925c902488e39cced8f8ef03c77ef6cfee751 Mon Sep 17 00:00:00 2001 From: Ryan Date: Mon, 15 Mar 2021 07:17:09 +1100 Subject: [PATCH 055/613] Add info.json for RGBKB Pan (#12218) --- keyboards/rgbkb/pan/info.json | 83 +++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 keyboards/rgbkb/pan/info.json diff --git a/keyboards/rgbkb/pan/info.json b/keyboards/rgbkb/pan/info.json new file mode 100644 index 0000000000..93f8dba6c7 --- /dev/null +++ b/keyboards/rgbkb/pan/info.json @@ -0,0 +1,83 @@ +{ + "keyboard_name": "RGBKB Pan", + "url": "https://www.rgbkb.net/collections/all/products/pan-keyboard-diy-kit", + "maintainer": "Legonut", + "width": 13, + "height": 6.25, + "layouts": { + "LAYOUT_all": { + "layout": [ + {"x": 0, "y": 0}, + + {"x": 12, "y": 0}, + + {"x": 0, "y": 1.25}, + {"x": 1, "y": 1.25}, + {"x": 2, "y": 1.25}, + {"x": 3, "y": 1.25}, + {"x": 4, "y": 1.25}, + {"x": 5, "y": 1.25}, + {"x": 6, "y": 1.25}, + {"x": 7, "y": 1.25}, + {"x": 8, "y": 1.25}, + {"x": 9, "y": 1.25}, + {"x": 10, "y": 1.25}, + {"x": 11, "y": 1.25}, + {"x": 12, "y": 1.25}, + + {"x": 0, "y": 2.25, "w": 1.5}, + {"x": 1.5, "y": 2.25}, + {"x": 2.5, "y": 2.25}, + {"x": 3.5, "y": 2.25}, + {"x": 4.5, "y": 2.25}, + {"x": 5.5, "y": 2.25}, + {"x": 6.5, "y": 2.25}, + {"x": 7.5, "y": 2.25}, + {"x": 8.5, "y": 2.25}, + {"x": 9.5, "y": 2.25}, + {"x": 10.5, "y": 2.25}, + {"x": 11.5, "y": 2.25, "w": 1.5}, + + {"x": 0, "y": 3.25, "w": 1.5}, + {"x": 1.5, "y": 3.25}, + {"x": 2.5, "y": 3.25}, + {"x": 3.5, "y": 3.25}, + {"x": 4.5, "y": 3.25}, + {"x": 5.5, "y": 3.25}, + {"x": 6.5, "y": 3.25}, + {"x": 7.5, "y": 3.25}, + {"x": 8.5, "y": 3.25}, + {"x": 9.5, "y": 3.25}, + {"x": 10.5, "y": 3.25}, + {"x": 11.5, "y": 3.25, "w": 1.5}, + + {"x": 0, "y": 4.25}, + {"x": 1, "y": 4.25}, + {"x": 2, "y": 4.25}, + {"x": 3, "y": 4.25}, + {"x": 4, "y": 4.25}, + {"x": 5, "y": 4.25}, + {"x": 6, "y": 4.25}, + {"x": 7, "y": 4.25}, + {"x": 8, "y": 4.25}, + {"x": 9, "y": 4.25}, + {"x": 10, "y": 4.25}, + {"x": 11, "y": 4.25}, + {"x": 12, "y": 4.25}, + + {"x": 0, "y": 5.25, "w": 1.5}, + {"x": 1.5, "y": 5.25}, + {"x": 2.5, "y": 5.25}, + {"x": 3.5, "y": 5.25}, + {"x": 4.5, "y": 5.25}, + {"x": 5.5, "y": 5.25}, + {"x": 6.5, "y": 5.25}, + {"x": 7.5, "y": 5.25}, + {"x": 8.5, "y": 5.25}, + {"x": 9.5, "y": 5.25}, + {"x": 10.5, "y": 5.25}, + {"x": 11.5, "y": 5.25, "w": 1.5} + ] + } + } +} From b44bffe954dca574bf6ef16b8c8d985e9547d3e1 Mon Sep 17 00:00:00 2001 From: yhaliaw <43424755+yhaliaw@users.noreply.github.com> Date: Mon, 15 Mar 2021 04:19:05 +0800 Subject: [PATCH 056/613] [Keymap] Add yhaliaw keymap for Planck/Rev6.1. (#11318) --- keyboards/planck/keymaps/yhaliaw/config.h | 29 +++ keyboards/planck/keymaps/yhaliaw/keymap.c | 221 ++++++++++++++++++++ keyboards/planck/keymaps/yhaliaw/readme.md | 32 +++ keyboards/planck/keymaps/yhaliaw/rules.mk | 5 + keyboards/preonic/keymaps/yhaliaw/config.h | 12 ++ keyboards/preonic/keymaps/yhaliaw/keymap.c | 231 +++++++++++++++++++++ keyboards/preonic/keymaps/yhaliaw/rules.mk | 4 + 7 files changed, 534 insertions(+) create mode 100644 keyboards/planck/keymaps/yhaliaw/config.h create mode 100644 keyboards/planck/keymaps/yhaliaw/keymap.c create mode 100644 keyboards/planck/keymaps/yhaliaw/readme.md create mode 100644 keyboards/planck/keymaps/yhaliaw/rules.mk create mode 100644 keyboards/preonic/keymaps/yhaliaw/config.h create mode 100644 keyboards/preonic/keymaps/yhaliaw/keymap.c create mode 100644 keyboards/preonic/keymaps/yhaliaw/rules.mk diff --git a/keyboards/planck/keymaps/yhaliaw/config.h b/keyboards/planck/keymaps/yhaliaw/config.h new file mode 100644 index 0000000000..ac241b8a6c --- /dev/null +++ b/keyboards/planck/keymaps/yhaliaw/config.h @@ -0,0 +1,29 @@ +/* Copyright 2020 Andrew Liaw + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#ifdef AUDIO_ENABLE +#define STARTUP_SONG SONG(PLANCK_SOUND) +#endif + +#define RGBLIGHT_LAYERS +#define RGBLIGHT_LED_MAP {8, 2, 3, 7, 6, 5, 4, 0, 1} + +#define MK_COMBINED + +#define LEADER_TIMEOUT 200 +#define LEADER_PER_KEY_TIMING diff --git a/keyboards/planck/keymaps/yhaliaw/keymap.c b/keyboards/planck/keymaps/yhaliaw/keymap.c new file mode 100644 index 0000000000..8b7851cee6 --- /dev/null +++ b/keyboards/planck/keymaps/yhaliaw/keymap.c @@ -0,0 +1,221 @@ +/* Copyright 2020 Andrew Liaw + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum planck_layers { + _BASE, + _LOWER, + _RAISE, + _ADJUST, +}; + +enum planck_keycodes { + L_RESET = SAFE_RANGE, +}; + +#ifdef AUDIO_ENABLE +float planck_sound[][2] = SONG(PLANCK_SOUND); +#endif + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Esc | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / | Shift| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |Leader| Ctrl | Alt | GUI | Lower| Enter| Space| Raise| GUI | Alt | Ctrl | Del | + * `-----------------------------------------------------------------------------------' + */ + [_BASE] = LAYOUT_planck_grid( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LEAD, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_ENT, KC_SPC, RAISE, KC_RGUI, KC_RALT, KC_RCTL, KC_DEL + ), + + /* Lower + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Caps | | | | | | Left | Down | Up | Right| | \ | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | | | | | | | Home | End | Pg Up| Pg Dn| | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ + [_LOWER] = LAYOUT_planck_grid( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, + KC_CAPS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, KC_BSLS, + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME, KC_END, KC_PGUP, KC_PGDN, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + /* Raise + * ,-----------------------------------------------------------------------------------. + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 | _ | + | { | } | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ + [_RAISE] = LAYOUT_planck_grid( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_PIPE, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + + /* Adjust (Lower + Raise) + * ,-----------------------------------------------------------------------------------. + * | | Reset| Debug| Clear| RGB | HUE+ | HUE- | SAT+ | SAT- |BRGTH+|BRGTH-| | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | |Aud on|Audoff| Swap | Norm | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | |Mus on|Musoff| NKRO | 6KRO | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ + [_ADJUST] = LAYOUT_planck_grid( + _______, L_RESET, DEBUG, EEP_RST, RGB_TOG, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, + _______, XXXXXXX, XXXXXXX, AU_ON, AU_OFF, AG_SWAP, AG_NORM, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, + _______, XXXXXXX, XXXXXXX, MU_ON, MU_OFF, NK_ON, NK_OFF, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; + +const rgblight_segment_t PROGMEM base_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, 9, 0, 0, 0}); + +const rgblight_segment_t PROGMEM lower_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, 8, HSV_RED}); + +const rgblight_segment_t PROGMEM raise_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, 8, HSV_GREEN}); + +const rgblight_segment_t PROGMEM adjust_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, 8, HSV_BLUE}); + +const rgblight_segment_t PROGMEM capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS({4, 5, HSV_WHITE}); + +// Later layers take precedence. +const rgblight_segment_t* const PROGMEM rgb_layers[] = RGBLIGHT_LAYERS_LIST( + base_layer, + lower_layer, + raise_layer, + adjust_layer, + capslock_layer +); + +bool audio_disable = false; + +void keyboard_pre_init_user(void) { + // If the audio is off during hardware init, + // it causes problem when the audio is turn on later. + // The workaround is to always set the audio on during hardware init, + // then toggle audio back to the setting. +#ifdef AUDIO_ENABLE + if (!is_audio_on()) { + audio_disable = true; + audio_on(); + } +#endif +} + +void matrix_init_user(void) { + // To fix a audio related problem. See comments in keyboard_pre_init_user(). +#ifdef AUDIO_ENABLE + if (audio_disable) { + audio_off(); + } +#endif +} + +void keyboard_post_init_user(void) { + rgblight_layers = rgb_layers; + rgblight_set_layer_state(0, true); +} + +bool leader_found; +LEADER_EXTERNS(); + +void matrix_scan_user(void) { + LEADER_DICTIONARY() { + leading = false; + leader_found = false; + SEQ_ONE_KEY(L_RESET) { + leader_found = true; + reset_keyboard(); + } + else + SEQ_ONE_KEY(KC_DEL) { + leader_found = true; + layer_clear(); + } + else + SEQ_ONE_KEY(LOWER) { + leader_found = true; + layer_on(_LOWER); + } + else + SEQ_ONE_KEY(RAISE) { + leader_found = true; + layer_on(_RAISE); + } + leader_end(); + } +} + +void leader_end(void) { + // Plays sound on if leader sequence found. + if (leader_found) { +#ifdef AUDIO_ENABLE + PLAY_SONG(planck_sound); +#endif + } +} + +bool led_update_user(led_t led_state) { + // Turn on RBG for capslock. + rgblight_set_layer_state(4, led_state.caps_lock); + return true; +} + +layer_state_t layer_state_set_user(layer_state_t state) { + // Set RBG layer according to active keymap layer. + rgblight_set_layer_state(1, layer_state_cmp(state, 1)); + rgblight_set_layer_state(2, layer_state_cmp(state, 2)); + rgblight_set_layer_state(3, layer_state_cmp(state, 1) && layer_state_cmp(state, 2)); + return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); +} + +bool music_mask_user(uint16_t keycode) { + switch (keycode) { + case RAISE: + case LOWER: + return false; + default: + return true; + } +} diff --git a/keyboards/planck/keymaps/yhaliaw/readme.md b/keyboards/planck/keymaps/yhaliaw/readme.md new file mode 100644 index 0000000000..a10e54bd93 --- /dev/null +++ b/keyboards/planck/keymaps/yhaliaw/readme.md @@ -0,0 +1,32 @@ +# yhaliaw Planck layout + +The layout for Planck by yhaliaw. + +Developed and tested on Planck Rev 6.1. + +## Features + +Leader sequences can be used to turn on layers without holding the key and reset the layers. +Leader sequences are triggered by key the series of key in quick succession. +See Base layer notes in Layout section. + +Successful leader sequences will play the planck sound if sound is enabled. + +The RGB underglow is linked to the layers and capslock. + +## Keycodes + +Most Keycodes are standard [QMK keycodes](https://docs.qmk.fm/#/keycodes). + +### Custom Keycodes + +The `RESET` key to start the bootloader is access by a leader sequence. +This is done to prevent a mispress. +See Adjust layer notes in Layout section. + +The `Clear` key is used to clear the EEPROM of the keyboard. +This can be seen as resetting the state of the keyboard. +Replug the keyboard to load in the resetted states. + +## Layout +![yhaliaw planck layout](https://i.imgur.com/HvYva64.png) \ No newline at end of file diff --git a/keyboards/planck/keymaps/yhaliaw/rules.mk b/keyboards/planck/keymaps/yhaliaw/rules.mk new file mode 100644 index 0000000000..2c8510c3e0 --- /dev/null +++ b/keyboards/planck/keymaps/yhaliaw/rules.mk @@ -0,0 +1,5 @@ +LEADER_ENABLE = yes + +RGBLIGHT_ENABLE = yes +ENCODER_ENABLE = no +DIP_SWITCH_ENABLE = no diff --git a/keyboards/preonic/keymaps/yhaliaw/config.h b/keyboards/preonic/keymaps/yhaliaw/config.h new file mode 100644 index 0000000000..84ec6e1af3 --- /dev/null +++ b/keyboards/preonic/keymaps/yhaliaw/config.h @@ -0,0 +1,12 @@ + +#pragma once + +#ifdef AUDIO_ENABLE +#define STARTUP_SONG SONG(PLANCK_SOUND) +#endif + +#define RGBLIGHT_LAYERS +#define RGBLIGHT_LED_MAP {8, 2, 3, 7, 6, 5, 4, 0, 1} + +#define LEADER_TIMEOUT 200 +#define LEADER_PER_KEY_TIMING diff --git a/keyboards/preonic/keymaps/yhaliaw/keymap.c b/keyboards/preonic/keymaps/yhaliaw/keymap.c new file mode 100644 index 0000000000..2528061898 --- /dev/null +++ b/keyboards/preonic/keymaps/yhaliaw/keymap.c @@ -0,0 +1,231 @@ +/* Copyright 2021 Andrew Liaw + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum preonic_layers { + _BASE, + _LOWER, + _RAISE, + _ADJUST, +}; + +enum preonic_keycodes { + L_RESET = SAFE_RANGE, +}; + +#ifdef AUDIO_ENABLE +float planck_sound[][2] = SONG(PLANCK_SOUND); +#endif + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / | Shift| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |Leader| Ctrl | Alt | GUI | Lower| Enter| Space| Raise| GUI | Alt | Ctrl | Del | + * `-----------------------------------------------------------------------------------' + */ + [_BASE] = LAYOUT_preonic_grid( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LEAD, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_ENT, KC_SPC, RAISE, KC_RGUI, KC_RALT, KC_RCTL, KC_DEL + ), + + /* Lower + * ,-----------------------------------------------------------------------------------. + * | | | | | | | | | | | | | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Caps | | | | | | Left | Down | Up | Right| | \ | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | | | | | | | Home | End | Pg Up| Pg Dn| | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ + [_LOWER] = LAYOUT_preonic_grid( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, + KC_CAPS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, KC_BSLS, + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME, KC_END, KC_PGUP, KC_PGDN, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + /* Raise + * ,-----------------------------------------------------------------------------------. + * | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 | _ | + | { | } | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ + [_RAISE] = LAYOUT_preonic_grid( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_PIPE, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + /* Adjust (Lower + Raise) + * ,-----------------------------------------------------------------------------------. + * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | Reset| Debug| Clear| RGB | HUE+ | HUE- | SAT+ | SAT- |BRGTH+|BRGTH-| | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | |Aud on|Audoff| Swap | Norm | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | |Mus on|Musoff| NKRO | 6KRO | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ + [_ADJUST] = LAYOUT_preonic_grid( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + _______, L_RESET, DEBUG, EEP_RST, RGB_TOG, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, + _______, XXXXXXX, XXXXXXX, AU_ON, AU_OFF, AG_SWAP, AG_NORM, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, + _______, XXXXXXX, XXXXXXX, MU_ON, MU_OFF, NK_ON, NK_OFF, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; + +const rgblight_segment_t PROGMEM base_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, 9, 0, 0, 0}); + +const rgblight_segment_t PROGMEM lower_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, 8, HSV_RED}); + +const rgblight_segment_t PROGMEM raise_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, 8, HSV_GREEN}); + +const rgblight_segment_t PROGMEM adjust_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, 8, HSV_BLUE}); + +const rgblight_segment_t PROGMEM capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS({4, 5, HSV_WHITE}); + +// Later layers take precedence. +const rgblight_segment_t* const PROGMEM rgb_layers[] = RGBLIGHT_LAYERS_LIST( + base_layer, + lower_layer, + raise_layer, + adjust_layer, + capslock_layer +); + +bool audio_disable = false; + +void keyboard_pre_init_user(void) { + // If the audio is off during hardware init, + // it causes problem when the audio is turn on later. + // The workaround is to always set the audio on during hardware init, + // then toggle audio back to the setting. +#ifdef AUDIO_ENABLE + if (!is_audio_on()) { + audio_disable = true; + audio_on(); + } +#endif +} + +void matrix_init_user(void) { + // To fix a audio related problem. See comments in keyboard_pre_init_user(). +#ifdef AUDIO_ENABLE + if (audio_disable) { + audio_off(); + } +#endif +} + +void keyboard_post_init_user(void) { + rgblight_layers = rgb_layers; + rgblight_set_layer_state(0, true); +} + +bool leader_found; +LEADER_EXTERNS(); + +void matrix_scan_user(void) { + LEADER_DICTIONARY() { + leading = false; + leader_found = false; + SEQ_ONE_KEY(L_RESET) { + leader_found = true; + reset_keyboard(); + } + else + SEQ_ONE_KEY(KC_DEL) { + leader_found = true; + layer_clear(); + } + else + SEQ_ONE_KEY(LOWER) { + leader_found = true; + layer_on(_LOWER); + } + else + SEQ_ONE_KEY(RAISE) { + leader_found = true; + layer_on(_RAISE); + } + leader_end(); + } +} + +void leader_end(void) { + // Plays sound on if leader sequence found. + if (leader_found) { +#ifdef AUDIO_ENABLE + PLAY_SONG(planck_sound); +#endif + } +} + +bool led_update_user(led_t led_state) { + // Turn on RBG for capslock. + rgblight_set_layer_state(4, led_state.caps_lock); + return true; +} + +layer_state_t layer_state_set_user(layer_state_t state) { + // Set RBG layer according to active keymap layer. + rgblight_set_layer_state(1, layer_state_cmp(state, 1)); + rgblight_set_layer_state(2, layer_state_cmp(state, 2)); + rgblight_set_layer_state(3, layer_state_cmp(state, 1) && layer_state_cmp(state, 2)); + return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); +} + +bool music_mask_user(uint16_t keycode) { + switch (keycode) { + case RAISE: + case LOWER: + return false; + default: + return true; + } +} diff --git a/keyboards/preonic/keymaps/yhaliaw/rules.mk b/keyboards/preonic/keymaps/yhaliaw/rules.mk new file mode 100644 index 0000000000..8762502b56 --- /dev/null +++ b/keyboards/preonic/keymaps/yhaliaw/rules.mk @@ -0,0 +1,4 @@ +LEADER_ENABLE = yes + +ENCODER_ENABLE = no +DIP_SWITCH_ENABLE = no From 9e1d04fea77c4da64248e7870b915939a768c5c0 Mon Sep 17 00:00:00 2001 From: NightlyBoards <65656486+NightlyBoards@users.noreply.github.com> Date: Mon, 15 Mar 2021 05:51:21 +0800 Subject: [PATCH 057/613] [Keyboard] Added Adellein Keyboard/PCB (#11547) --- keyboards/nightly_boards/adellein/adellein.c | 27 ++++ keyboards/nightly_boards/adellein/adellein.h | 55 ++++++++ keyboards/nightly_boards/adellein/config.h | 78 ++++++++++++ .../nightly_boards/adellein/encoder_action.c | 51 ++++++++ .../nightly_boards/adellein/encoder_action.h | 21 ++++ keyboards/nightly_boards/adellein/info.json | 118 ++++++++++++++++++ .../adellein/keymaps/default/keymap.c | 26 ++++ .../adellein/keymaps/via/keymap.c | 49 ++++++++ .../adellein/keymaps/via/rules.mk | 2 + keyboards/nightly_boards/adellein/readme.md | 20 +++ keyboards/nightly_boards/adellein/rules.mk | 26 ++++ 11 files changed, 473 insertions(+) create mode 100644 keyboards/nightly_boards/adellein/adellein.c create mode 100644 keyboards/nightly_boards/adellein/adellein.h create mode 100644 keyboards/nightly_boards/adellein/config.h create mode 100644 keyboards/nightly_boards/adellein/encoder_action.c create mode 100644 keyboards/nightly_boards/adellein/encoder_action.h create mode 100644 keyboards/nightly_boards/adellein/info.json create mode 100644 keyboards/nightly_boards/adellein/keymaps/default/keymap.c create mode 100644 keyboards/nightly_boards/adellein/keymaps/via/keymap.c create mode 100644 keyboards/nightly_boards/adellein/keymaps/via/rules.mk create mode 100644 keyboards/nightly_boards/adellein/readme.md create mode 100644 keyboards/nightly_boards/adellein/rules.mk diff --git a/keyboards/nightly_boards/adellein/adellein.c b/keyboards/nightly_boards/adellein/adellein.c new file mode 100644 index 0000000000..eb97716627 --- /dev/null +++ b/keyboards/nightly_boards/adellein/adellein.c @@ -0,0 +1,27 @@ +/* Copyright 2020 Neil Brian Ramirez + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "adellein.h" + +void matrix_scan_kb(void) { + encoder_action_unregister(); + matrix_scan_user(); +} + +void encoder_update_kb(uint8_t index, bool clockwise) { + encoder_action_register(index, clockwise); + // encoder_update_user(index, clockwise); +}; \ No newline at end of file diff --git a/keyboards/nightly_boards/adellein/adellein.h b/keyboards/nightly_boards/adellein/adellein.h new file mode 100644 index 0000000000..c78b76fbad --- /dev/null +++ b/keyboards/nightly_boards/adellein/adellein.h @@ -0,0 +1,55 @@ +/* Copyright 2020 Neil Brian Ramirez + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" +#include "encoder_action.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ + +#define LAYOUT_40ergo_split_ent( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \ + K30, K32, K34, K35, K37, K39, K3C \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C }, \ + { K30, KC_NO, K32, KC_NO, K34, K35, KC_NO, K37, KC_NO, K39, KC_NO, KC_NO, K3C }, \ +} + +#define LAYOUT_40ergo_split_ent_encoder( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \ + K30, K32, K34, K35, K37, K39, K3C, \ + E00A, E00B \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C }, \ + { K30, E00A, K32, E00B, K34, K35, KC_NO, K37, KC_NO, K39, KC_NO, KC_NO, K3C }, \ +} + diff --git a/keyboards/nightly_boards/adellein/config.h b/keyboards/nightly_boards/adellein/config.h new file mode 100644 index 0000000000..cd24f1a1c8 --- /dev/null +++ b/keyboards/nightly_boards/adellein/config.h @@ -0,0 +1,78 @@ +/* +Copyright 2020 Neil Brian Ramirez + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xD812 +#define PRODUCT_ID 0x0010 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Neil Brian Ramirez +#define PRODUCT Adellein + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 13 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ +#define MATRIX_ROW_PINS { B1, B0, B5, B6 } +#define MATRIX_COL_PINS { F7, F6, F5, F4, F1, F0, B7, B3, B2, D0, D1, D2, D3 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +#define RGB_DI_PIN D5 +#ifdef RGB_DI_PIN +#define RGBLED_NUM 14 +#define RGBLIGHT_ANIMATIONS + +#endif + +/* Encoders */ + +#define ENCODERS 1 + +#define ENCODERS_PAD_A { C7 } +#define ENCODERS_PAD_B { C6 } + +#define ENCODERS_CW_KEY { { 3, 3 } } +#define ENCODERS_CCW_KEY { { 1, 3 } } + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + + diff --git a/keyboards/nightly_boards/adellein/encoder_action.c b/keyboards/nightly_boards/adellein/encoder_action.c new file mode 100644 index 0000000000..042a3871c9 --- /dev/null +++ b/keyboards/nightly_boards/adellein/encoder_action.c @@ -0,0 +1,51 @@ +/* Copyright 2020 Neil Brian Ramirez + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "encoder_action.h" + +#ifdef ENCODERS +static uint8_t encoder_state[ENCODERS] = {0}; +static keypos_t encoder_cw[ENCODERS] = ENCODERS_CW_KEY; +static keypos_t encoder_ccw[ENCODERS] = ENCODERS_CCW_KEY; +#endif + +void encoder_action_unregister(void) { +#ifdef ENCODERS + for (int index = 0; index < ENCODERS; ++index) { + if (encoder_state[index]) { + keyevent_t encoder_event = (keyevent_t) { + .key = encoder_state[index] >> 1 ? encoder_cw[index] : encoder_ccw[index], + .pressed = false, + .time = (timer_read() | 1) + }; + encoder_state[index] = 0; + action_exec(encoder_event); + } + } +#endif +} + +void encoder_action_register(uint8_t index, bool clockwise) { +#ifdef ENCODERS + keyevent_t encoder_event = (keyevent_t) { + .key = clockwise ? encoder_cw[index] : encoder_ccw[index], + .pressed = true, + .time = (timer_read() | 1) + }; + encoder_state[index] = (clockwise ^ 1) | (clockwise << 1); + action_exec(encoder_event); +#endif +} diff --git a/keyboards/nightly_boards/adellein/encoder_action.h b/keyboards/nightly_boards/adellein/encoder_action.h new file mode 100644 index 0000000000..098210d40c --- /dev/null +++ b/keyboards/nightly_boards/adellein/encoder_action.h @@ -0,0 +1,21 @@ +/* Copyright 2020 Neil Brian Ramirez + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "quantum.h" + +void encoder_action_unregister(void); + +void encoder_action_register(uint8_t index, bool clockwise); \ No newline at end of file diff --git a/keyboards/nightly_boards/adellein/info.json b/keyboards/nightly_boards/adellein/info.json new file mode 100644 index 0000000000..64a0a0f55f --- /dev/null +++ b/keyboards/nightly_boards/adellein/info.json @@ -0,0 +1,118 @@ +{ + "keyboard_name": "Adellein", + "url": "", + "maintainer": "Neil Brian Ramirez", + "width": 16.25, + "height": 5, + "layouts": { + "LAYOUT_40ergo_split_ent": { + "layout": [ + {"x":0.5, "y":0}, + {"x":1.5, "y":0}, + {"x":2.5, "y":0}, + {"x":3.5, "y":0}, + {"x":4.5, "y":0}, + {"x":5.5, "y":0}, + {"x":8.25, "y":0}, + {"x":9.25, "y":0}, + {"x":10.25, "y":0}, + {"x":11.25, "y":0}, + {"x":12.25, "y":0}, + {"x":13.25, "y":0}, + {"x":14.25, "y":0, "w":1.5}, + + {"x":0.25, "y":1, "w":1.25}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":8.75, "y":1}, + {"x":9.75, "y":1}, + {"x":10.75, "y":1}, + {"x":11.75, "y":1}, + {"x":12.75, "y":1}, + {"x":13.75, "y":1}, + {"x":14.75, "y":1, "w":1.25}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":8.5, "y":2}, + {"x":9.5, "y":2}, + {"x":10.5, "y":2}, + {"x":11.5, "y":2}, + {"x":12.5, "y":2}, + {"x":13.5, "y":2}, + {"x":14.5, "y":2, "w":1.75}, + + {"x":0.25, "y":3, "w":1.25}, + {"x":2.75, "y":3, "w":1.25}, + {"x":4, "y":3, "w":2.25}, + {"x":6.25, "y":3}, + {"x":8, "y":3, "w":2.75}, + {"x":10.75, "y":3, "w":1.25}, + {"x":14.75, "y":3, "w":1.25} + ] + }, + "LAYOUT_40ergo_split_ent_encoder": { + "layout": [ + {"x":0.5, "y":0}, + {"x":1.5, "y":0}, + {"x":2.5, "y":0}, + {"x":3.5, "y":0}, + {"x":4.5, "y":0}, + {"x":5.5, "y":0}, + {"x":8.25, "y":0}, + {"x":9.25, "y":0}, + {"x":10.25, "y":0}, + {"x":11.25, "y":0}, + {"x":12.25, "y":0}, + {"x":13.25, "y":0}, + {"x":14.25, "y":0, "w":1.5}, + + {"x":0.25, "y":1, "w":1.25}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":8.75, "y":1}, + {"x":9.75, "y":1}, + {"x":10.75, "y":1}, + {"x":11.75, "y":1}, + {"x":12.75, "y":1}, + {"x":13.75, "y":1}, + {"x":14.75, "y":1, "w":1.25}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":8.5, "y":2}, + {"x":9.5, "y":2}, + {"x":10.5, "y":2}, + {"x":11.5, "y":2}, + {"x":12.5, "y":2}, + {"x":13.5, "y":2}, + {"x":14.5, "y":2, "w":1.75}, + + {"x":0.25, "y":3, "w":1.25}, + {"x":2.75, "y":3, "w":1.25}, + {"x":4, "y":3, "w":2.25}, + {"x":6.25, "y":3}, + {"x":8, "y":3, "w":2.75}, + {"x":10.75, "y":3, "w":1.25}, + {"x":14.75, "y":3, "w":1.25}, + + {"x":5.75, "y":4}, + {"x":6.75, "y":4} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/nightly_boards/adellein/keymaps/default/keymap.c b/keyboards/nightly_boards/adellein/keymaps/default/keymap.c new file mode 100644 index 0000000000..ccdf46ee4a --- /dev/null +++ b/keyboards/nightly_boards/adellein/keymaps/default/keymap.c @@ -0,0 +1,26 @@ +/* Copyright 2020 Neil Brian Ramirez + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_40ergo_split_ent( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RCTL + ), +}; diff --git a/keyboards/nightly_boards/adellein/keymaps/via/keymap.c b/keyboards/nightly_boards/adellein/keymaps/via/keymap.c new file mode 100644 index 0000000000..c4c0adffe3 --- /dev/null +++ b/keyboards/nightly_boards/adellein/keymaps/via/keymap.c @@ -0,0 +1,49 @@ +/* Copyright 2020 Neil Brian Ramirez + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_40ergo_split_ent_encoder( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RCTL, + KC_VOLD, KC_VOLU + ), + [1] = LAYOUT_40ergo_split_ent_encoder( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_40ergo_split_ent_encoder( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_40ergo_split_ent_encoder( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS + ), + +}; diff --git a/keyboards/nightly_boards/adellein/keymaps/via/rules.mk b/keyboards/nightly_boards/adellein/keymaps/via/rules.mk new file mode 100644 index 0000000000..43061db1dd --- /dev/null +++ b/keyboards/nightly_boards/adellein/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/nightly_boards/adellein/readme.md b/keyboards/nightly_boards/adellein/readme.md new file mode 100644 index 0000000000..1253b2692e --- /dev/null +++ b/keyboards/nightly_boards/adellein/readme.md @@ -0,0 +1,20 @@ +# Nightly Boards Adellein + +![Adellein](https://i.imgur.com/WIZvvcDl.png) + +A 40% alice-like keyboard with rotary encoder support + +* Keyboard Maintainer: [Neil Brian Ramirez](https://github.com/NightlyBoards) +* Hardware Supported: atmega32u4 + +Make example for this keyboard (after setting up your build environment): + + make nightly_boards/adellein:default + +Flashing example for this keyboard: + + make nightly_boards/adellein:default:flash + +You can enter bootloader mode by pressing the physical reset button at the back of the pcb or by holding the upper left key while plugging the usb cable. + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/nightly_boards/adellein/rules.mk b/keyboards/nightly_boards/adellein/rules.mk new file mode 100644 index 0000000000..f78597b916 --- /dev/null +++ b/keyboards/nightly_boards/adellein/rules.mk @@ -0,0 +1,26 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +ENCODER_ENABLE = yes # Enable Rotary Encoders +LTO_ENABLE = yes + +# Added encoder Action +SRC += encoder_action.c \ No newline at end of file From 0779c34db8ba0bf7141712377b1db467394f940f Mon Sep 17 00:00:00 2001 From: xyzz <1065521+xyzz@users.noreply.github.com> Date: Sun, 14 Mar 2021 21:19:01 -0400 Subject: [PATCH 058/613] Fix keycode mappings for via and ensure they don't change within protocol (#12130) * Fix keycode mappings for via and ensure they don't change within protocol * Update keycodes * Fix broken keyboards * added the missing keycodes found in via * Remove invalid keycodes Co-authored-by: David Hoelscher --- keyboards/7c8/framework/keymaps/via/rules.mk | 3 +- keyboards/latin47ble/config.h | 2 + keyboards/latin64ble/config.h | 1 + keyboards/latinpadble/config.h | 2 + keyboards/spaceman/pancake/feather/config.h | 4 +- keyboards/tokyokeyboard/alix40/config.h | 2 + keyboards/ymd75/keymaps/via/rules.mk | 3 +- quantum/quantum_keycodes.h | 4 + quantum/via.c | 1 + quantum/via_ensure_keycode.h | 366 +++++++++++++++++++ tmk_core/common/keycode.h | 10 + 11 files changed, 395 insertions(+), 3 deletions(-) create mode 100644 quantum/via_ensure_keycode.h diff --git a/keyboards/7c8/framework/keymaps/via/rules.mk b/keyboards/7c8/framework/keymaps/via/rules.mk index 036bd6d1c3..9905283151 100644 --- a/keyboards/7c8/framework/keymaps/via/rules.mk +++ b/keyboards/7c8/framework/keymaps/via/rules.mk @@ -1 +1,2 @@ -VIA_ENABLE = yes \ No newline at end of file +VIA_ENABLE = yes +LEADER_ENABLE = no diff --git a/keyboards/latin47ble/config.h b/keyboards/latin47ble/config.h index 716ab52f5d..f9f94d0dbf 100644 --- a/keyboards/latin47ble/config.h +++ b/keyboards/latin47ble/config.h @@ -121,3 +121,5 @@ //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION + +#define VIA_HAS_BROKEN_KEYCODES diff --git a/keyboards/latin64ble/config.h b/keyboards/latin64ble/config.h index ddae1e1499..68e8e7b293 100644 --- a/keyboards/latin64ble/config.h +++ b/keyboards/latin64ble/config.h @@ -47,5 +47,6 @@ along with this program. If not, see .*/ #define RGBLIGHT_ANIMATIONS // Run RGB animations +#define VIA_HAS_BROKEN_KEYCODES diff --git a/keyboards/latinpadble/config.h b/keyboards/latinpadble/config.h index 9c055d9b75..5381bf91cc 100644 --- a/keyboards/latinpadble/config.h +++ b/keyboards/latinpadble/config.h @@ -99,3 +99,5 @@ along with this program. If not, see .*/ #define ENCODERS_PAD_B { F7 } #define ENCODER_RESOLUTION 4 + +#define VIA_HAS_BROKEN_KEYCODES diff --git a/keyboards/spaceman/pancake/feather/config.h b/keyboards/spaceman/pancake/feather/config.h index eac91a5ada..e72b25f3db 100644 --- a/keyboards/spaceman/pancake/feather/config.h +++ b/keyboards/spaceman/pancake/feather/config.h @@ -23,4 +23,6 @@ #define AdafruitBleResetPin D4 #define AdafruitBleCSPin B4 -#define AdafruitBleIRQPin E6 \ No newline at end of file +#define AdafruitBleIRQPin E6 + +#define VIA_HAS_BROKEN_KEYCODES diff --git a/keyboards/tokyokeyboard/alix40/config.h b/keyboards/tokyokeyboard/alix40/config.h index ec6f98d549..113412e95a 100644 --- a/keyboards/tokyokeyboard/alix40/config.h +++ b/keyboards/tokyokeyboard/alix40/config.h @@ -69,3 +69,5 @@ along with this program. If not, see . #define AdafruitBleCSPin B4 #define AdafruitBleIRQPin E6 #define BATTERY_LEVEL_PIN B6 + +#define VIA_HAS_BROKEN_KEYCODES diff --git a/keyboards/ymd75/keymaps/via/rules.mk b/keyboards/ymd75/keymaps/via/rules.mk index 43061db1dd..152460f304 100644 --- a/keyboards/ymd75/keymaps/via/rules.mk +++ b/keyboards/ymd75/keymaps/via/rules.mk @@ -1,2 +1,3 @@ VIA_ENABLE = yes -LTO_ENABLE = yes \ No newline at end of file +LTO_ENABLE = yes +KEY_LOCK_ENABLE = no diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h index 1863a79434..9f1591458d 100644 --- a/quantum/quantum_keycodes.h +++ b/quantum/quantum_keycodes.h @@ -332,7 +332,11 @@ enum quantum_keycodes { MIDI_VELOCITY_MIN, MI_VEL_0 = MIDI_VELOCITY_MIN, +#ifdef VIA_ENABLE + MI_VEL_1 = MIDI_VELOCITY_MIN, +#else MI_VEL_1, +#endif MI_VEL_2, MI_VEL_3, MI_VEL_4, diff --git a/quantum/via.c b/quantum/via.c index 62a16624f2..c89b663b9b 100644 --- a/quantum/via.c +++ b/quantum/via.c @@ -46,6 +46,7 @@ #include "dynamic_keymap.h" #include "tmk_core/common/eeprom.h" #include "version.h" // for QMK_BUILDDATE used in EEPROM magic +#include "via_ensure_keycode.h" // Forward declare some helpers. #if defined(VIA_QMK_BACKLIGHT_ENABLE) diff --git a/quantum/via_ensure_keycode.h b/quantum/via_ensure_keycode.h new file mode 100644 index 0000000000..a9c1b8ba5d --- /dev/null +++ b/quantum/via_ensure_keycode.h @@ -0,0 +1,366 @@ +#pragma once + +#include "quantum.h" +#include "via.h" + +#ifndef VIA_HAS_BROKEN_KEYCODES + +_Static_assert(KC_NO == 0, ""); +_Static_assert(KC_TRNS == 1, ""); + +_Static_assert(KC_A == 0x04, ""); +_Static_assert(KC_B == 0x05, ""); +_Static_assert(KC_C == 0x06, ""); +_Static_assert(KC_D == 0x07, ""); +_Static_assert(KC_E == 0x08, ""); +_Static_assert(KC_F == 0x09, ""); +_Static_assert(KC_G == 0x0A, ""); +_Static_assert(KC_H == 0x0B, ""); +_Static_assert(KC_I == 0x0C, ""); +_Static_assert(KC_J == 0x0D, ""); +_Static_assert(KC_K == 0x0E, ""); +_Static_assert(KC_L == 0x0F, ""); +_Static_assert(KC_M == 0x10, ""); +_Static_assert(KC_N == 0x11, ""); +_Static_assert(KC_O == 0x12, ""); +_Static_assert(KC_P == 0x13, ""); +_Static_assert(KC_Q == 0x14, ""); +_Static_assert(KC_R == 0x15, ""); +_Static_assert(KC_S == 0x16, ""); +_Static_assert(KC_T == 0x17, ""); +_Static_assert(KC_U == 0x18, ""); +_Static_assert(KC_V == 0x19, ""); +_Static_assert(KC_W == 0x1A, ""); +_Static_assert(KC_X == 0x1B, ""); +_Static_assert(KC_Y == 0x1C, ""); +_Static_assert(KC_Z == 0x1D, ""); +_Static_assert(KC_1 == 0x1E, ""); +_Static_assert(KC_2 == 0x1F, ""); +_Static_assert(KC_3 == 0x20, ""); +_Static_assert(KC_4 == 0x21, ""); +_Static_assert(KC_5 == 0x22, ""); +_Static_assert(KC_6 == 0x23, ""); +_Static_assert(KC_7 == 0x24, ""); +_Static_assert(KC_8 == 0x25, ""); +_Static_assert(KC_9 == 0x26, ""); +_Static_assert(KC_0 == 0x27, ""); +_Static_assert(KC_ENTER == 0x28, ""); +_Static_assert(KC_ESCAPE == 0x29, ""); +_Static_assert(KC_BSPACE == 0x2A, ""); +_Static_assert(KC_TAB == 0x2B, ""); +_Static_assert(KC_SPACE == 0x2C, ""); +_Static_assert(KC_MINUS == 0x2D, ""); +_Static_assert(KC_EQUAL == 0x2E, ""); +_Static_assert(KC_LBRACKET == 0x2F, ""); +_Static_assert(KC_RBRACKET == 0x30, ""); +_Static_assert(KC_BSLASH == 0x31, ""); +_Static_assert(KC_SCOLON == 0x33, ""); +_Static_assert(KC_QUOTE == 0x34, ""); +_Static_assert(KC_GRAVE == 0x35, ""); +_Static_assert(KC_COMMA == 0x36, ""); +_Static_assert(KC_DOT == 0x37, ""); +_Static_assert(KC_SLASH == 0x38, ""); +_Static_assert(KC_CAPSLOCK == 0x39, ""); +_Static_assert(KC_F1 == 0x3A, ""); +_Static_assert(KC_F2 == 0x3B, ""); +_Static_assert(KC_F3 == 0x3C, ""); +_Static_assert(KC_F4 == 0x3D, ""); +_Static_assert(KC_F5 == 0x3E, ""); +_Static_assert(KC_F6 == 0x3F, ""); +_Static_assert(KC_F7 == 0x40, ""); +_Static_assert(KC_F8 == 0x41, ""); +_Static_assert(KC_F9 == 0x42, ""); +_Static_assert(KC_F10 == 0x43, ""); +_Static_assert(KC_F11 == 0x44, ""); +_Static_assert(KC_F12 == 0x45, ""); +_Static_assert(KC_PSCREEN == 0x46, ""); +_Static_assert(KC_SCROLLLOCK == 0x47, ""); +_Static_assert(KC_PAUSE == 0x48, ""); +_Static_assert(KC_INSERT == 0x49, ""); +_Static_assert(KC_HOME == 0x4A, ""); +_Static_assert(KC_PGUP == 0x4B, ""); +_Static_assert(KC_DELETE == 0x4C, ""); +_Static_assert(KC_END == 0x4D, ""); +_Static_assert(KC_PGDOWN == 0x4E, ""); +_Static_assert(KC_RIGHT == 0x4F, ""); +_Static_assert(KC_LEFT == 0x50, ""); +_Static_assert(KC_DOWN == 0x51, ""); +_Static_assert(KC_UP == 0x52, ""); +_Static_assert(KC_NUMLOCK == 0x53, ""); +_Static_assert(KC_KP_SLASH == 0x54, ""); +_Static_assert(KC_KP_ASTERISK == 0x55, ""); +_Static_assert(KC_KP_MINUS == 0x56, ""); +_Static_assert(KC_KP_PLUS == 0x57, ""); +_Static_assert(KC_KP_ENTER == 0x58, ""); +_Static_assert(KC_KP_1 == 0x59, ""); +_Static_assert(KC_KP_2 == 0x5A, ""); +_Static_assert(KC_KP_3 == 0x5B, ""); +_Static_assert(KC_KP_4 == 0x5C, ""); +_Static_assert(KC_KP_5 == 0x5D, ""); +_Static_assert(KC_KP_6 == 0x5E, ""); +_Static_assert(KC_KP_7 == 0x5F, ""); +_Static_assert(KC_KP_8 == 0x60, ""); +_Static_assert(KC_KP_9 == 0x61, ""); +_Static_assert(KC_KP_0 == 0x62, ""); +_Static_assert(KC_KP_DOT == 0x63, ""); +_Static_assert(KC_APPLICATION == 0x65, ""); +_Static_assert(KC_KP_EQUAL == 0x67, ""); +_Static_assert(KC_KP_COMMA == 0x85, ""); +_Static_assert(KC_LCTRL == 0xE0, ""); +_Static_assert(KC_LSHIFT == 0xE1, ""); +_Static_assert(KC_LALT == 0xE2, ""); +_Static_assert(KC_LGUI == 0xE3, ""); +_Static_assert(KC_RCTRL == 0xE4, ""); +_Static_assert(KC_RSHIFT == 0xE5, ""); +_Static_assert(KC_RALT == 0xE6, ""); +_Static_assert(KC_RGUI == 0xE7, ""); + +_Static_assert(KC_TILD == 0x235, ""); +_Static_assert(KC_EXLM == 0x21E, ""); +_Static_assert(KC_AT == 0x21F, ""); +_Static_assert(KC_HASH == 0x220, ""); +_Static_assert(KC_DLR == 0x221, ""); +_Static_assert(KC_PERC == 0x222, ""); +_Static_assert(KC_CIRC == 0x223, ""); +_Static_assert(KC_AMPR == 0x224, ""); +_Static_assert(KC_ASTR == 0x225, ""); +_Static_assert(KC_LPRN == 0x226, ""); +_Static_assert(KC_RPRN == 0x227, ""); +_Static_assert(KC_UNDS == 0x22D, ""); +_Static_assert(KC_PLUS == 0x22E, ""); +_Static_assert(KC_LCBR == 0x22F, ""); +_Static_assert(KC_RCBR == 0x230, ""); +_Static_assert(KC_LT == 0x236, ""); +_Static_assert(KC_GT == 0x237, ""); +_Static_assert(KC_COLN == 0x233, ""); +_Static_assert(KC_PIPE == 0x231, ""); +_Static_assert(KC_QUES == 0x238, ""); +_Static_assert(KC_DQUO == 0x234, ""); + +_Static_assert(KC_NONUS_HASH == 0x32, ""); +_Static_assert(KC_NONUS_BSLASH == 0x64, ""); +_Static_assert(KC_RO == 0x87, ""); +_Static_assert(KC_KANA == 0x88, ""); +_Static_assert(KC_JYEN == 0x89, ""); +_Static_assert(KC_HENK == 0x8A, ""); +_Static_assert(KC_MHEN == 0x8B, ""); +_Static_assert(KC_LANG1 == 0x90, ""); +_Static_assert(KC_LANG2 == 0x91, ""); + +_Static_assert(KC_GESC == 0x5C16, ""); +_Static_assert(KC_LSPO == 0x5CD7, ""); +_Static_assert(KC_RSPC == 0x5CD8, ""); +_Static_assert(KC_LCPO == 0x5CF3, ""); +_Static_assert(KC_RCPC == 0x5CF4, ""); +_Static_assert(KC_LAPO == 0x5CF5, ""); +_Static_assert(KC_RAPC == 0x5CF6, ""); +_Static_assert(KC_SFTENT == 0x5CD9, ""); + +_Static_assert(BL_TOGG == 23743, ""); +_Static_assert(BL_STEP == 23744, ""); +_Static_assert(BL_BRTG == 23745, ""); +_Static_assert(BL_ON == 23739, ""); +_Static_assert(BL_OFF == 23740, ""); +_Static_assert(BL_INC == 23742, ""); +_Static_assert(BL_DEC == 23741, ""); +_Static_assert(RGB_TOG == 23746, ""); +_Static_assert(RGB_MOD == 23747, ""); +_Static_assert(RGB_RMOD == 23748, ""); +_Static_assert(RGB_HUI == 23749, ""); +_Static_assert(RGB_HUD == 23750, ""); +_Static_assert(RGB_SAI == 23751, ""); +_Static_assert(RGB_SAD == 23752, ""); +_Static_assert(RGB_VAI == 23753, ""); +_Static_assert(RGB_VAD == 23754, ""); +_Static_assert(RGB_SPI == 23755, ""); +_Static_assert(RGB_SPD == 23756, ""); +_Static_assert(RGB_M_P == 23757, ""); +_Static_assert(RGB_M_B == 23758, ""); +_Static_assert(RGB_M_R == 23759, ""); +_Static_assert(RGB_M_SW == 23760, ""); +_Static_assert(RGB_M_SN == 23761, ""); +_Static_assert(RGB_M_K == 23762, ""); +_Static_assert(RGB_M_X == 23763, ""); +_Static_assert(RGB_M_G == 23764, ""); +_Static_assert(RGB_M_T == 23765, ""); + +_Static_assert(KC_F13 == 104, ""); +_Static_assert(KC_F14 == 105, ""); +_Static_assert(KC_F15 == 106, ""); +_Static_assert(KC_F16 == 107, ""); +_Static_assert(KC_F17 == 108, ""); +_Static_assert(KC_F18 == 109, ""); +_Static_assert(KC_F19 == 110, ""); +_Static_assert(KC_F20 == 111, ""); +_Static_assert(KC_F21 == 112, ""); +_Static_assert(KC_F22 == 113, ""); +_Static_assert(KC_F23 == 114, ""); +_Static_assert(KC_F24 == 115, ""); +_Static_assert(KC_PWR == 165, ""); +_Static_assert(KC_SLEP == 166, ""); +_Static_assert(KC_WAKE == 167, ""); +_Static_assert(KC_EXEC == 116, ""); +_Static_assert(KC_HELP == 117, ""); +_Static_assert(KC_SLCT == 119, ""); +_Static_assert(KC_STOP == 120, ""); +_Static_assert(KC_AGIN == 121, ""); +_Static_assert(KC_UNDO == 122, ""); +_Static_assert(KC_CUT == 123, ""); +_Static_assert(KC_COPY == 124, ""); +_Static_assert(KC_PSTE == 125, ""); +_Static_assert(KC_FIND == 126, ""); +_Static_assert(KC_CALC == 178, ""); +_Static_assert(KC_MAIL == 177, ""); +_Static_assert(KC_MSEL == 175, ""); +_Static_assert(KC_MYCM == 179, ""); +_Static_assert(KC_WSCH == 180, ""); +_Static_assert(KC_WHOM == 181, ""); +_Static_assert(KC_WBAK == 182, ""); +_Static_assert(KC_WFWD == 183, ""); +_Static_assert(KC_WSTP == 184, ""); +_Static_assert(KC_WREF == 185, ""); +_Static_assert(KC_WFAV == 186, ""); +_Static_assert(KC_BRIU == 189, ""); +_Static_assert(KC_BRID == 190, ""); +_Static_assert(KC_MPRV == 172, ""); +_Static_assert(KC_MNXT == 171, ""); +_Static_assert(KC_MUTE == 168, ""); +_Static_assert(KC_VOLD == 170, ""); +_Static_assert(KC_VOLU == 169, ""); +_Static_assert(KC_MSTP == 173, ""); +_Static_assert(KC_MPLY == 174, ""); +_Static_assert(KC_MRWD == 188, ""); +_Static_assert(KC_MFFD == 187, ""); +_Static_assert(KC_EJCT == 176, ""); +_Static_assert(KC_MS_U == 240, ""); +_Static_assert(KC_MS_D == 241, ""); +_Static_assert(KC_MS_L == 242, ""); +_Static_assert(KC_MS_R == 243, ""); +_Static_assert(KC_BTN1 == 244, ""); +_Static_assert(KC_BTN2 == 245, ""); +_Static_assert(KC_BTN3 == 246, ""); +_Static_assert(KC_BTN4 == 247, ""); +_Static_assert(KC_BTN5 == 248, ""); +_Static_assert(KC_WH_U == 249, ""); +_Static_assert(KC_WH_D == 250, ""); +_Static_assert(KC_WH_L == 251, ""); +_Static_assert(KC_WH_R == 252, ""); +_Static_assert(KC_ACL0 == 253, ""); +_Static_assert(KC_ACL1 == 254, ""); +_Static_assert(KC_ACL2 == 255, ""); +_Static_assert(KC_LCAP == 130, ""); +_Static_assert(KC_LNUM == 131, ""); +_Static_assert(KC_LSCR == 132, ""); + +_Static_assert(FN_MO13 == 0x5F10, ""); +_Static_assert(FN_MO23 == 0x5F11, ""); + +_Static_assert(MACRO00 == 0x5F12, ""); +_Static_assert(MACRO01 == 0x5F13, ""); +_Static_assert(MACRO02 == 0x5F14, ""); +_Static_assert(MACRO03 == 0x5F15, ""); +_Static_assert(MACRO04 == 0x5F16, ""); +_Static_assert(MACRO05 == 0x5F17, ""); +_Static_assert(MACRO06 == 0x5F18, ""); +_Static_assert(MACRO07 == 0x5F19, ""); +_Static_assert(MACRO08 == 0x5F1A, ""); +_Static_assert(MACRO09 == 0x5F1B, ""); +_Static_assert(MACRO10 == 0x5F1C, ""); +_Static_assert(MACRO11 == 0x5F1D, ""); +_Static_assert(MACRO12 == 0x5F1E, ""); +_Static_assert(MACRO13 == 0x5F1F, ""); +_Static_assert(MACRO14 == 0x5F20, ""); +_Static_assert(MACRO15 == 0x5F21, ""); + +_Static_assert(USER00 == 0x5F80, ""); +_Static_assert(USER01 == 0x5F81, ""); +_Static_assert(USER02 == 0x5F82, ""); +_Static_assert(USER03 == 0x5F83, ""); +_Static_assert(USER04 == 0x5F84, ""); +_Static_assert(USER05 == 0x5F85, ""); +_Static_assert(USER06 == 0x5F86, ""); +_Static_assert(USER07 == 0x5F87, ""); +_Static_assert(USER08 == 0x5F88, ""); +_Static_assert(USER09 == 0x5F89, ""); +_Static_assert(USER10 == 0x5F8A, ""); +_Static_assert(USER11 == 0x5F8B, ""); +_Static_assert(USER12 == 0x5F8C, ""); +_Static_assert(USER13 == 0x5F8D, ""); +_Static_assert(USER14 == 0x5F8E, ""); +_Static_assert(USER15 == 0x5F8F, ""); + +_Static_assert(KC_POWER == 102, ""); +_Static_assert(KC_MENU == 118, ""); +_Static_assert(KC_KP_EQUAL_AS400 == 134, ""); +_Static_assert(KC_INT6 == 140, ""); +_Static_assert(KC_INT7 == 141, ""); +_Static_assert(KC_INT8 == 142, ""); +_Static_assert(KC_INT9 == 143, ""); +_Static_assert(KC_LANG3 == 146, ""); +_Static_assert(KC_LANG4 == 147, ""); +_Static_assert(KC_LANG5 == 148, ""); +_Static_assert(KC_LANG6 == 149, ""); +_Static_assert(KC_LANG7 == 150, ""); +_Static_assert(KC_LANG8 == 151, ""); +_Static_assert(KC_LANG9 == 152, ""); +_Static_assert(KC_ERAS == 153, ""); +_Static_assert(KC_SYSREQ == 154, ""); +_Static_assert(KC_CANCEL == 155, ""); +_Static_assert(KC_CLEAR == 156, ""); +_Static_assert(KC_CLR == 156, ""); +_Static_assert(KC_PRIOR == 157, ""); +_Static_assert(KC_OUT == 160, ""); +_Static_assert(KC_OPER == 161, ""); +_Static_assert(KC_CLEAR_AGAIN == 162, ""); +_Static_assert(KC_CRSEL == 163, ""); +_Static_assert(KC_EXSEL == 164, ""); +_Static_assert(KC_FN0 == 192, ""); +_Static_assert(KC_FN1 == 193, ""); +_Static_assert(KC_FN2 == 194, ""); +_Static_assert(KC_FN3 == 195, ""); +_Static_assert(KC_FN4 == 196, ""); +_Static_assert(KC_FN5 == 197, ""); +_Static_assert(KC_FN6 == 198, ""); +_Static_assert(KC_FN7 == 199, ""); +_Static_assert(KC_FN8 == 200, ""); +_Static_assert(KC_FN9 == 201, ""); +_Static_assert(KC_FN10 == 202, ""); +_Static_assert(KC_FN11 == 203, ""); +_Static_assert(KC_FN12 == 204, ""); +_Static_assert(KC_FN13 == 205, ""); +_Static_assert(KC_FN14 == 206, ""); +_Static_assert(KC_FN15 == 207, ""); +_Static_assert(KC_FN16 == 208, ""); +_Static_assert(KC_FN17 == 209, ""); +_Static_assert(KC_FN18 == 210, ""); +_Static_assert(KC_FN19 == 211, ""); +_Static_assert(KC_FN20 == 212, ""); +_Static_assert(KC_FN21 == 213, ""); +_Static_assert(KC_FN22 == 214, ""); +_Static_assert(KC_FN23 == 215, ""); +_Static_assert(KC_FN24 == 216, ""); +_Static_assert(KC_FN25 == 217, ""); +_Static_assert(KC_FN26 == 218, ""); +_Static_assert(KC_FN27 == 219, ""); +_Static_assert(KC_FN28 == 220, ""); +_Static_assert(KC_FN29 == 221, ""); +_Static_assert(KC_FN30 == 222, ""); +_Static_assert(KC_FN31 == 223, ""); +_Static_assert(RESET == 23552, ""); +_Static_assert(DEBUG == 23553, ""); +_Static_assert(MAGIC_TOGGLE_NKRO == 23572, ""); +_Static_assert(AU_ON == 23581, ""); +_Static_assert(AU_OFF == 23582, ""); +_Static_assert(AU_TOG == 23583, ""); +_Static_assert(CLICKY_TOGGLE == 23584, ""); +_Static_assert(CLICKY_ENABLE == 23585, ""); +_Static_assert(CLICKY_DISABLE == 23586, ""); +_Static_assert(CLICKY_UP == 23587, ""); +_Static_assert(CLICKY_DOWN == 23588, ""); +_Static_assert(CLICKY_RESET == 23589, ""); +_Static_assert(MU_ON == 23590, ""); +_Static_assert(MU_OFF == 23591, ""); +_Static_assert(MU_TOG == 23592, ""); +_Static_assert(MU_MOD == 23593, ""); + +#endif diff --git a/tmk_core/common/keycode.h b/tmk_core/common/keycode.h index efad92b235..a39a33be21 100644 --- a/tmk_core/common/keycode.h +++ b/tmk_core/common/keycode.h @@ -524,7 +524,11 @@ enum internal_special_keycodes { enum mouse_keys { /* Mouse Buttons */ +#ifdef VIA_ENABLE + KC_MS_UP = 0xF0, +#else KC_MS_UP = 0xED, +#endif KC_MS_DOWN, KC_MS_LEFT, KC_MS_RIGHT, // 0xF0 @@ -533,9 +537,15 @@ enum mouse_keys { KC_MS_BTN3, KC_MS_BTN4, KC_MS_BTN5, +#ifdef VIA_ENABLE + KC_MS_BTN6 = KC_MS_BTN5, + KC_MS_BTN7 = KC_MS_BTN5, + KC_MS_BTN8 = KC_MS_BTN5, +#else KC_MS_BTN6, KC_MS_BTN7, KC_MS_BTN8, +#endif /* Mouse Wheel */ KC_MS_WH_UP, From a18e1305b303be4b30c57f16e72ce27af0dd38d8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 15 Mar 2021 12:21:14 +1100 Subject: [PATCH 059/613] Format code according to conventions (#12244) Co-authored-by: QMK Bot --- quantum/quantum_keycodes.h | 6 +++--- tmk_core/common/keycode.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h index 9f1591458d..e49f8dcdaa 100644 --- a/quantum/quantum_keycodes.h +++ b/quantum/quantum_keycodes.h @@ -332,11 +332,11 @@ enum quantum_keycodes { MIDI_VELOCITY_MIN, MI_VEL_0 = MIDI_VELOCITY_MIN, -#ifdef VIA_ENABLE +# ifdef VIA_ENABLE MI_VEL_1 = MIDI_VELOCITY_MIN, -#else +# else MI_VEL_1, -#endif +# endif MI_VEL_2, MI_VEL_3, MI_VEL_4, diff --git a/tmk_core/common/keycode.h b/tmk_core/common/keycode.h index a39a33be21..8facabd818 100644 --- a/tmk_core/common/keycode.h +++ b/tmk_core/common/keycode.h @@ -523,7 +523,7 @@ enum internal_special_keycodes { }; enum mouse_keys { - /* Mouse Buttons */ +/* Mouse Buttons */ #ifdef VIA_ENABLE KC_MS_UP = 0xF0, #else From 2e50b34c67ec602e456c4a158c0956aa1b9aaa2d Mon Sep 17 00:00:00 2001 From: James Young <18669334+noroadsleft@users.noreply.github.com> Date: Mon, 15 Mar 2021 01:06:55 -0700 Subject: [PATCH 060/613] Add missing info.json files for keyboards (#12239) Recent changes to QMK Configurator's API have made it so an info.json file is required for QMK Configurator to know how to render the keyboard in question. This PR adds info.json files for keyboards that did not have them, with a few exceptions for boards whose layouts I was unable to determine. * add info.json file for 2key2crawl * add info.json file for 40percentclub/4x4 * add info.json file for 40percentclub/5x5 * add info.json file for 4pplet/aekiso60/rev_a * add info.json file for 4pplet/steezy60/rev_a * add info.json file for 6ball * add info.json file for 7c8/framework * add info.json file for aeboards/constellation * add info.json file for alpine65 * add info.json file for aplyard/aplx6 * add info.json file for arch_36 * add info.json file for arisu * add info.json file for box75 * add info.json file for butterstick * add info.json file for four_banger * add info.json file for geekboards/tester * add info.json file for handwired/2x5keypad * add info.json file for handwired/412_64 * add info.json file for handwired/42 * add info.json file for handwired/aplx2 * add info.json file for handwired/brain * add info.json file for handwired/cans12er * add info.json file for handwired/ck4x4 * add info.json file for handwired/d48 * add info.json file for handwired/dactyl_manuform/dmote/62key * add info.json file for handwired/daishi * add info.json file for handwired/hexon38 * add info.json file for handwired/jot50 * add info.json file for handwired/jotanck * add info.json file for handwired/jotpad16 * add info.json file for handwired/k8split * add info.json file for handwired/myskeeb * add info.json file for handwired/nicekey * add info.json file for handwired/onekey * add info.json file for handwired/postageboard * add info.json file for handwired/riblee_f401 * add info.json file for handwired/riblee_f411 * add info.json file for handwired/rs60 * add info.json file for handwired/splittest * add info.json file for handwired/trackpoint * add info.json file for handwired/traveller * add info.json file for hhkb_lite_2 * add info.json file for honeycomb * add info.json file for ivy/rev1 * add info.json file for keebio/viterbi * add info.json file for laptreus * add info.json file for latin47ble * add info.json file for latin64ble * add info.json file for launchpad/rev1 * add info.json file for lets_split_eh/eh * add info.json file for mechmini/v1 * add info.json file for meira * add info.json file for meishi * add info.json file for merge/iso_macro * add info.json file for mschwingen/modelm * add info.json file for pabile/p20 * add info.json files for pimentoso/paddino02 rev1, rev2/left, and rev2/right * add info.json file for rgbkb/pan * add info.json files for runner3680 3x6, 3x7, 3x8, 4x6, 4x7, 4x8, 5x6, 5x7, and 5x8 * add info.json file for sck/gtm * add info.json file for splitish * add info.json file for standaside * add info.json file for ungodly/launch_pad * add info.json file for xelus/trinityxttkl * Revert "add info.json file for rgbkb/pan" This reverts commit 280b89bc6157023a621a9864f5d74d59d62bb511. * correct maintainer for ivy/rev1 --- keyboards/2key2crawl/info.json | 25 +++ keyboards/40percentclub/4x4/info.json | 197 ++++++++++++++++ keyboards/40percentclub/5x5/info.json | 183 +++++++++++++++ keyboards/4pplet/aekiso60/rev_a/info.json | 81 +++++++ keyboards/4pplet/steezy60/rev_a/info.json | 87 ++++++++ keyboards/6ball/info.json | 20 ++ keyboards/7c8/framework/info.json | 210 ++++++++++++++++++ keyboards/aeboards/constellation/info.json | 85 +++++++ keyboards/alpine65/info.json | 84 +++++++ keyboards/aplyard/aplx6/info.json | 20 ++ keyboards/arch_36/info.json | 52 +++++ keyboards/arisu/info.json | 84 +++++++ keyboards/box75/info.json | 101 +++++++++ keyboards/butterstick/info.json | 34 +++ keyboards/four_banger/info.json | 18 ++ keyboards/geekboards/tester/info.json | 22 ++ keyboards/handwired/2x5keypad/info.json | 24 ++ keyboards/handwired/412_64/info.json | 80 +++++++ keyboards/handwired/42/info.json | 58 +++++ keyboards/handwired/aplx2/info.json | 15 ++ keyboards/handwired/brain/info.json | 73 ++++++ keyboards/handwired/cans12er/info.json | 27 +++ keyboards/handwired/ck4x4/info.json | 32 +++ keyboards/handwired/d48/info.json | 67 ++++++ .../dactyl_manuform/dmote/62key/info.json | 90 ++++++++ keyboards/handwired/daishi/info.json | 136 ++++++++++++ keyboards/handwired/hexon38/info.json | 54 +++++ keyboards/handwired/jot50/info.json | 77 +++++++ keyboards/handwired/jotanck/info.json | 64 ++++++ keyboards/handwired/jotpad16/info.json | 32 +++ keyboards/handwired/k8split/info.json | 66 ++++++ keyboards/handwired/myskeeb/info.json | 88 ++++++++ keyboards/handwired/nicekey/info.json | 14 ++ keyboards/handwired/onekey/info.json | 14 ++ keyboards/handwired/postageboard/info.json | 16 ++ keyboards/handwired/riblee_f401/info.json | 77 +++++++ keyboards/handwired/riblee_f411/info.json | 77 +++++++ keyboards/handwired/rs60/info.json | 77 +++++++ keyboards/handwired/splittest/info.json | 15 ++ keyboards/handwired/trackpoint/info.json | 16 ++ keyboards/handwired/traveller/info.json | 66 ++++++ keyboards/hhkb_lite_2/info.json | 77 +++++++ keyboards/honeycomb/info.json | 32 +++ keyboards/ivy/rev1/info.json | 16 ++ keyboards/keebio/viterbi/info.json | 87 ++++++++ keyboards/laptreus/info.json | 64 ++++++ keyboards/latin47ble/info.json | 63 ++++++ keyboards/latin64ble/info.json | 81 +++++++ keyboards/launchpad/rev1/info.json | 24 ++ keyboards/lets_split_eh/eh/info.json | 64 ++++++ keyboards/mechmini/v1/info.json | 58 +++++ keyboards/meira/info.json | 64 ++++++ keyboards/meishi/info.json | 17 ++ keyboards/merge/iso_macro/info.json | 23 ++ keyboards/mschwingen/modelm/info.json | 121 ++++++++++ keyboards/pabile/p20/info.json | 62 ++++++ keyboards/pimentoso/paddino02/rev1/info.json | 25 +++ .../pimentoso/paddino02/rev2/left/info.json | 25 +++ .../pimentoso/paddino02/rev2/right/info.json | 25 +++ keyboards/runner3680/3x6/info.json | 51 +++++ keyboards/runner3680/3x7/info.json | 57 +++++ keyboards/runner3680/3x8/info.json | 63 ++++++ keyboards/runner3680/4x6/info.json | 64 ++++++ keyboards/runner3680/4x7/info.json | 72 ++++++ keyboards/runner3680/4x8/info.json | 80 +++++++ keyboards/runner3680/5x6/info.json | 77 +++++++ keyboards/runner3680/5x7/info.json | 87 ++++++++ keyboards/runner3680/5x8/info.json | 97 ++++++++ keyboards/sck/gtm/info.json | 25 +++ keyboards/splitish/info.json | 64 ++++++ keyboards/standaside/info.json | 80 +++++++ keyboards/ungodly/launch_pad/info.json | 37 +++ keyboards/xelus/trinityxttkl/info.json | 118 ++++++++++ 73 files changed, 4558 insertions(+) create mode 100644 keyboards/2key2crawl/info.json create mode 100644 keyboards/40percentclub/4x4/info.json create mode 100644 keyboards/40percentclub/5x5/info.json create mode 100644 keyboards/4pplet/aekiso60/rev_a/info.json create mode 100644 keyboards/4pplet/steezy60/rev_a/info.json create mode 100644 keyboards/6ball/info.json create mode 100644 keyboards/7c8/framework/info.json create mode 100644 keyboards/aeboards/constellation/info.json create mode 100644 keyboards/alpine65/info.json create mode 100644 keyboards/aplyard/aplx6/info.json create mode 100644 keyboards/arch_36/info.json create mode 100644 keyboards/arisu/info.json create mode 100644 keyboards/box75/info.json create mode 100644 keyboards/butterstick/info.json create mode 100644 keyboards/four_banger/info.json create mode 100644 keyboards/geekboards/tester/info.json create mode 100644 keyboards/handwired/2x5keypad/info.json create mode 100644 keyboards/handwired/412_64/info.json create mode 100644 keyboards/handwired/42/info.json create mode 100644 keyboards/handwired/aplx2/info.json create mode 100644 keyboards/handwired/brain/info.json create mode 100644 keyboards/handwired/cans12er/info.json create mode 100644 keyboards/handwired/ck4x4/info.json create mode 100644 keyboards/handwired/d48/info.json create mode 100644 keyboards/handwired/dactyl_manuform/dmote/62key/info.json create mode 100644 keyboards/handwired/daishi/info.json create mode 100644 keyboards/handwired/hexon38/info.json create mode 100644 keyboards/handwired/jot50/info.json create mode 100644 keyboards/handwired/jotanck/info.json create mode 100644 keyboards/handwired/jotpad16/info.json create mode 100644 keyboards/handwired/k8split/info.json create mode 100644 keyboards/handwired/myskeeb/info.json create mode 100644 keyboards/handwired/nicekey/info.json create mode 100644 keyboards/handwired/onekey/info.json create mode 100644 keyboards/handwired/postageboard/info.json create mode 100644 keyboards/handwired/riblee_f401/info.json create mode 100644 keyboards/handwired/riblee_f411/info.json create mode 100644 keyboards/handwired/rs60/info.json create mode 100644 keyboards/handwired/splittest/info.json create mode 100644 keyboards/handwired/trackpoint/info.json create mode 100644 keyboards/handwired/traveller/info.json create mode 100644 keyboards/hhkb_lite_2/info.json create mode 100644 keyboards/honeycomb/info.json create mode 100644 keyboards/ivy/rev1/info.json create mode 100644 keyboards/keebio/viterbi/info.json create mode 100644 keyboards/laptreus/info.json create mode 100644 keyboards/latin47ble/info.json create mode 100644 keyboards/latin64ble/info.json create mode 100644 keyboards/launchpad/rev1/info.json create mode 100644 keyboards/lets_split_eh/eh/info.json create mode 100644 keyboards/mechmini/v1/info.json create mode 100644 keyboards/meira/info.json create mode 100644 keyboards/meishi/info.json create mode 100644 keyboards/merge/iso_macro/info.json create mode 100644 keyboards/mschwingen/modelm/info.json create mode 100644 keyboards/pabile/p20/info.json create mode 100644 keyboards/pimentoso/paddino02/rev1/info.json create mode 100644 keyboards/pimentoso/paddino02/rev2/left/info.json create mode 100644 keyboards/pimentoso/paddino02/rev2/right/info.json create mode 100644 keyboards/runner3680/3x6/info.json create mode 100644 keyboards/runner3680/3x7/info.json create mode 100644 keyboards/runner3680/3x8/info.json create mode 100644 keyboards/runner3680/4x6/info.json create mode 100644 keyboards/runner3680/4x7/info.json create mode 100644 keyboards/runner3680/4x8/info.json create mode 100644 keyboards/runner3680/5x6/info.json create mode 100644 keyboards/runner3680/5x7/info.json create mode 100644 keyboards/runner3680/5x8/info.json create mode 100644 keyboards/sck/gtm/info.json create mode 100644 keyboards/splitish/info.json create mode 100644 keyboards/standaside/info.json create mode 100644 keyboards/ungodly/launch_pad/info.json create mode 100644 keyboards/xelus/trinityxttkl/info.json diff --git a/keyboards/2key2crawl/info.json b/keyboards/2key2crawl/info.json new file mode 100644 index 0000000000..18f58daf28 --- /dev/null +++ b/keyboards/2key2crawl/info.json @@ -0,0 +1,25 @@ +{ + "keyboard_name": "2Key2CrawlPad", + "url": "", + "maintainer": "qmk", + "width": 6.5, + "height": 2, + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"K00", "x":0, "y":0}, + {"label":"K01", "x":1, "y":0}, + {"label":"K02", "x":2, "y":0}, + {"label":"K03", "x":3, "y":0}, + {"label":"K15", "x":4, "y":0}, + + {"label":"K10", "x":0, "y":1}, + {"label":"K11", "x":1, "y":1}, + {"label":"K12", "x":2, "y":1}, + {"label":"K13", "x":3, "y":1}, + {"label":"K14", "x":4, "y":1}, + {"label":"K16", "x":5.5, "y":0.5} + ] + } + } +} diff --git a/keyboards/40percentclub/4x4/info.json b/keyboards/40percentclub/4x4/info.json new file mode 100644 index 0000000000..83012f0136 --- /dev/null +++ b/keyboards/40percentclub/4x4/info.json @@ -0,0 +1,197 @@ +{ + "keyboard_name": "40percent.club 4x4", + "url": "", + "maintainer": "qmk", + "height": 4, + "width": 4, + "layouts": { + "LAYOUT_ortho_4x4": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + {"x":3, "y":2}, + + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":3} + ] + }, + "LAYOUT_ortho_4x8": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + {"x":4, "y":1}, + {"x":5, "y":1}, + {"x":6, "y":1}, + {"x":7, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + {"x":3, "y":2}, + {"x":4, "y":2}, + {"x":5, "y":2}, + {"x":6, "y":2}, + {"x":7, "y":2}, + + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":3}, + {"x":4, "y":3}, + {"x":5, "y":3}, + {"x":6, "y":3}, + {"x":7, "y":3} + ] + }, + "LAYOUT_ortho_4x12": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + {"x":4, "y":1}, + {"x":5, "y":1}, + {"x":6, "y":1}, + {"x":7, "y":1}, + {"x":8, "y":1}, + {"x":9, "y":1}, + {"x":10, "y":1}, + {"x":11, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + {"x":3, "y":2}, + {"x":4, "y":2}, + {"x":5, "y":2}, + {"x":6, "y":2}, + {"x":7, "y":2}, + {"x":8, "y":2}, + {"x":9, "y":2}, + {"x":10, "y":2}, + {"x":11, "y":2}, + + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":3}, + {"x":4, "y":3}, + {"x":5, "y":3}, + {"x":6, "y":3}, + {"x":7, "y":3}, + {"x":8, "y":3}, + {"x":9, "y":3}, + {"x":10, "y":3}, + {"x":11, "y":3} + ] + }, + "LAYOUT_ortho_4x16": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + {"x":4, "y":1}, + {"x":5, "y":1}, + {"x":6, "y":1}, + {"x":7, "y":1}, + {"x":8, "y":1}, + {"x":9, "y":1}, + {"x":10, "y":1}, + {"x":11, "y":1}, + {"x":12, "y":1}, + {"x":13, "y":1}, + {"x":14, "y":1}, + {"x":15, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + {"x":3, "y":2}, + {"x":4, "y":2}, + {"x":5, "y":2}, + {"x":6, "y":2}, + {"x":7, "y":2}, + {"x":8, "y":2}, + {"x":9, "y":2}, + {"x":10, "y":2}, + {"x":11, "y":2}, + {"x":12, "y":2}, + {"x":13, "y":2}, + {"x":14, "y":2}, + {"x":15, "y":2}, + + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":3}, + {"x":4, "y":3}, + {"x":5, "y":3}, + {"x":6, "y":3}, + {"x":7, "y":3}, + {"x":8, "y":3}, + {"x":9, "y":3}, + {"x":10, "y":3}, + {"x":11, "y":3}, + {"x":12, "y":3}, + {"x":13, "y":3}, + {"x":14, "y":3}, + {"x":15, "y":3} + ] + } + } +} diff --git a/keyboards/40percentclub/5x5/info.json b/keyboards/40percentclub/5x5/info.json new file mode 100644 index 0000000000..1c1df8eda9 --- /dev/null +++ b/keyboards/40percentclub/5x5/info.json @@ -0,0 +1,183 @@ +{ + "keyboard_name": "40percent.club 4x4", + "url": "", + "maintainer": "qmk", + "height": 4, + "width": 4, + "layouts": { + "LAYOUT_ortho_5x5": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + {"x":4, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + {"x":3, "y":2}, + {"x":4, "y":2}, + + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":3}, + {"x":4, "y":3}, + + {"x":0, "y":4}, + {"x":1, "y":4}, + {"x":2, "y":4}, + {"x":3, "y":4}, + {"x":4, "y":4} + ] + }, + "LAYOUT_ortho_5x10": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + {"x":4, "y":1}, + {"x":5, "y":1}, + {"x":6, "y":1}, + {"x":7, "y":1}, + {"x":8, "y":1}, + {"x":9, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + {"x":3, "y":2}, + {"x":4, "y":2}, + {"x":5, "y":2}, + {"x":6, "y":2}, + {"x":7, "y":2}, + {"x":8, "y":2}, + {"x":9, "y":2}, + + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":3}, + {"x":4, "y":3}, + {"x":5, "y":3}, + {"x":6, "y":3}, + {"x":7, "y":3}, + {"x":8, "y":3}, + {"x":9, "y":3}, + + {"x":0, "y":4}, + {"x":1, "y":4}, + {"x":2, "y":4}, + {"x":3, "y":4}, + {"x":4, "y":4}, + {"x":5, "y":4}, + {"x":6, "y":4}, + {"x":7, "y":4}, + {"x":8, "y":4}, + {"x":9, "y":4} + ] + }, + "LAYOUT_ortho_5x15": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + {"x":4, "y":1}, + {"x":5, "y":1}, + {"x":6, "y":1}, + {"x":7, "y":1}, + {"x":8, "y":1}, + {"x":9, "y":1}, + {"x":10, "y":1}, + {"x":11, "y":1}, + {"x":12, "y":1}, + {"x":13, "y":1}, + {"x":14, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + {"x":3, "y":2}, + {"x":4, "y":2}, + {"x":5, "y":2}, + {"x":6, "y":2}, + {"x":7, "y":2}, + {"x":8, "y":2}, + {"x":9, "y":2}, + {"x":10, "y":2}, + {"x":11, "y":2}, + {"x":12, "y":2}, + {"x":13, "y":2}, + {"x":14, "y":2}, + + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":3}, + {"x":4, "y":3}, + {"x":5, "y":3}, + {"x":6, "y":3}, + {"x":7, "y":3}, + {"x":8, "y":3}, + {"x":9, "y":3}, + {"x":10, "y":3}, + {"x":11, "y":3}, + {"x":12, "y":3}, + {"x":13, "y":3}, + {"x":14, "y":3}, + + {"x":0, "y":4}, + {"x":1, "y":4}, + {"x":2, "y":4}, + {"x":3, "y":4}, + {"x":4, "y":4}, + {"x":5, "y":4}, + {"x":6, "y":4}, + {"x":7, "y":4}, + {"x":8, "y":4}, + {"x":9, "y":4}, + {"x":10, "y":4}, + {"x":11, "y":4}, + {"x":12, "y":4}, + {"x":13, "y":4}, + {"x":14, "y":4} + ] + } + } +} diff --git a/keyboards/4pplet/aekiso60/rev_a/info.json b/keyboards/4pplet/aekiso60/rev_a/info.json new file mode 100644 index 0000000000..7f5b09cdc1 --- /dev/null +++ b/keyboards/4pplet/aekiso60/rev_a/info.json @@ -0,0 +1,81 @@ +{ + "keyboard_name": "AEKISO60 Rev A", + "url": "", + "maintainer": "4pplet", + "width": 15, + "height": 5, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0, "w":1.25}, + {"x":1.25, "y":0}, + {"x":2.25, "y":0}, + {"x":3.25, "y":0}, + {"x":4.25, "y":0}, + {"x":5.25, "y":0}, + {"x":6.25, "y":0}, + {"x":7.25, "y":0}, + {"x":8.25, "y":0}, + {"x":9.25, "y":0}, + {"x":10.25, "y":0}, + {"x":11.25, "y":0}, + {"x":12.25, "y":0}, + {"x":13.25, "y":0, "w":1.75}, + + {"x":0, "y":1, "w":1.75}, + {"x":1.75, "y":1}, + {"x":2.75, "y":1}, + {"x":3.75, "y":1}, + {"x":4.75, "y":1}, + {"x":5.75, "y":1}, + {"x":6.75, "y":1}, + {"x":7.75, "y":1}, + {"x":8.75, "y":1}, + {"x":9.75, "y":1}, + {"x":10.75, "y":1}, + {"x":11.75, "y":1}, + {"x":12.75, "y":1}, + + {"x":0, "y":2, "w":2}, + {"x":2, "y":2}, + {"x":3, "y":2}, + {"x":4, "y":2}, + {"x":5, "y":2}, + {"x":6, "y":2}, + {"x":7, "y":2}, + {"x":8, "y":2}, + {"x":9, "y":2}, + {"x":10, "y":2}, + {"x":11, "y":2}, + {"x":12, "y":2}, + {"x":13, "y":2}, + {"x":14, "y":1, "h":2}, + + {"x":0, "y":3, "w":1.5}, + {"x":1.5, "y":3}, + {"x":2.5, "y":3}, + {"x":3.5, "y":3}, + {"x":4.5, "y":3}, + {"x":5.5, "y":3}, + {"x":6.5, "y":3}, + {"x":7.5, "y":3}, + {"x":8.5, "y":3}, + {"x":9.5, "y":3}, + {"x":10.5, "y":3}, + {"x":11.5, "y":3}, + {"x":12.5, "y":3, "w":1.5}, + {"x":14, "y":3}, + + {"x":0, "y":4, "w":1.5}, + {"x":1.5, "y":4, "w":1.25}, + {"x":2.75, "y":4, "w":1.5}, + {"x":4.25, "y":4, "w":2.75}, + {"x":7, "y":4}, + {"x":8, "y":4, "w":2.75}, + {"x":10.75, "y":4, "w":1.5}, + {"x":12.25, "y":4, "w":1.25}, + {"x":13.5, "y":4, "w":1.5} + ] + } + } +} diff --git a/keyboards/4pplet/steezy60/rev_a/info.json b/keyboards/4pplet/steezy60/rev_a/info.json new file mode 100644 index 0000000000..1944187139 --- /dev/null +++ b/keyboards/4pplet/steezy60/rev_a/info.json @@ -0,0 +1,87 @@ +{ + "keyboard_name": "Steezy60 Rev A", + "url": "", + "maintainer": "4pplet", + "width": 15, + "height": 5, + "layouts": { + "LAYOUT_all": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.5, "y":1, "w":1.5}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2}, + {"x":13.75, "y":2, "w":1.25}, + + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":3}, + {"x":4, "y":3}, + {"x":5, "y":3}, + {"x":6, "y":3}, + {"x":7, "y":3}, + {"x":8, "y":3}, + {"x":9, "y":3}, + {"x":10, "y":3}, + {"x":11, "y":3}, + {"x":12, "y":3}, + {"x":13, "y":3}, + {"x":14, "y":3}, + + {"x":0, "y":4}, + {"x":1, "y":4}, + {"x":2, "y":4}, + {"x":3, "y":4}, + {"x":4, "y":4, "w":2.25}, + {"x":6.25, "y":4, "w":1.5}, + {"x":7.75, "y":4, "w":2.25}, + {"x":10, "y":4}, + {"x":11, "y":4}, + {"x":12, "y":4}, + {"x":13, "y":4}, + {"x":14, "y":4} + ] + } + } +} diff --git a/keyboards/6ball/info.json b/keyboards/6ball/info.json new file mode 100644 index 0000000000..d06f3448cc --- /dev/null +++ b/keyboards/6ball/info.json @@ -0,0 +1,20 @@ +{ + "keyboard_name": "6-Ball", + "url": "", + "maintainer": "qmk", + "width": 3, + "height": 2, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1} + ] + } + } +} diff --git a/keyboards/7c8/framework/info.json b/keyboards/7c8/framework/info.json new file mode 100644 index 0000000000..5be8d09374 --- /dev/null +++ b/keyboards/7c8/framework/info.json @@ -0,0 +1,210 @@ +{ + "keyboard_name": "Framework", + "url": "", + "maintainer": "stevennguyen", + "width": 12, + "height": 5, + "layouts": { + "LAYOUT_ortho_5x12": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + + {"x": 0, "y": 1}, + {"x": 1, "y": 1}, + {"x": 2, "y": 1}, + {"x": 3, "y": 1}, + {"x": 4, "y": 1}, + {"x": 5, "y": 1}, + {"x": 6, "y": 1}, + {"x": 7, "y": 1}, + {"x": 8, "y": 1}, + {"x": 9, "y": 1}, + {"x": 10, "y": 1}, + {"x": 11, "y": 1}, + + {"x": 0, "y": 2}, + {"x": 1, "y": 2}, + {"x": 2, "y": 2}, + {"x": 3, "y": 2}, + {"x": 4, "y": 2}, + {"x": 5, "y": 2}, + {"x": 6, "y": 2}, + {"x": 7, "y": 2}, + {"x": 8, "y": 2}, + {"x": 9, "y": 2}, + {"x": 10, "y": 2}, + {"x": 11, "y": 2}, + + {"x": 0, "y": 3}, + {"x": 1, "y": 3}, + {"x": 2, "y": 3}, + {"x": 3, "y": 3}, + {"x": 4, "y": 3}, + {"x": 5, "y": 3}, + {"x": 6, "y": 3}, + {"x": 7, "y": 3}, + {"x": 8, "y": 3}, + {"x": 9, "y": 3}, + {"x": 10, "y": 3}, + {"x": 11, "y": 3}, + + {"x": 0, "y": 4}, + {"x": 1, "y": 4}, + {"x": 2, "y": 4}, + {"x": 3, "y": 4}, + {"x": 4, "y": 4}, + {"x": 5, "y": 4}, + {"x": 6, "y": 4}, + {"x": 7, "y": 4}, + {"x": 8, "y": 4}, + {"x": 9, "y": 4}, + {"x": 10, "y": 4}, + {"x": 11, "y": 4} + ] + }, + "LAYOUT_ortho_5x12_1x2uC": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + + {"x": 0, "y": 1}, + {"x": 1, "y": 1}, + {"x": 2, "y": 1}, + {"x": 3, "y": 1}, + {"x": 4, "y": 1}, + {"x": 5, "y": 1}, + {"x": 6, "y": 1}, + {"x": 7, "y": 1}, + {"x": 8, "y": 1}, + {"x": 9, "y": 1}, + {"x": 10, "y": 1}, + {"x": 11, "y": 1}, + + {"x": 0, "y": 2}, + {"x": 1, "y": 2}, + {"x": 2, "y": 2}, + {"x": 3, "y": 2}, + {"x": 4, "y": 2}, + {"x": 5, "y": 2}, + {"x": 6, "y": 2}, + {"x": 7, "y": 2}, + {"x": 8, "y": 2}, + {"x": 9, "y": 2}, + {"x": 10, "y": 2}, + {"x": 11, "y": 2}, + + {"x": 0, "y": 3}, + {"x": 1, "y": 3}, + {"x": 2, "y": 3}, + {"x": 3, "y": 3}, + {"x": 4, "y": 3}, + {"x": 5, "y": 3}, + {"x": 6, "y": 3}, + {"x": 7, "y": 3}, + {"x": 8, "y": 3}, + {"x": 9, "y": 3}, + {"x": 10, "y": 3}, + {"x": 11, "y": 3}, + + {"x": 0, "y": 4}, + {"x": 1, "y": 4}, + {"x": 2, "y": 4}, + {"x": 3, "y": 4}, + {"x": 4, "y": 4}, + {"x": 5, "y": 4, "w": 2}, + {"x": 7, "y": 4}, + {"x": 8, "y": 4}, + {"x": 9, "y": 4}, + {"x": 10, "y": 4}, + {"x": 11, "y": 4} + ] + }, + "LAYOUT_preonic_2x2u": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + + {"x": 0, "y": 1}, + {"x": 1, "y": 1}, + {"x": 2, "y": 1}, + {"x": 3, "y": 1}, + {"x": 4, "y": 1}, + {"x": 5, "y": 1}, + {"x": 6, "y": 1}, + {"x": 7, "y": 1}, + {"x": 8, "y": 1}, + {"x": 9, "y": 1}, + {"x": 10, "y": 1}, + {"x": 11, "y": 1}, + + {"x": 0, "y": 2}, + {"x": 1, "y": 2}, + {"x": 2, "y": 2}, + {"x": 3, "y": 2}, + {"x": 4, "y": 2}, + {"x": 5, "y": 2}, + {"x": 6, "y": 2}, + {"x": 7, "y": 2}, + {"x": 8, "y": 2}, + {"x": 9, "y": 2}, + {"x": 10, "y": 2}, + {"x": 11, "y": 2}, + + {"x": 0, "y": 3}, + {"x": 1, "y": 3}, + {"x": 2, "y": 3}, + {"x": 3, "y": 3}, + {"x": 4, "y": 3}, + {"x": 5, "y": 3}, + {"x": 6, "y": 3}, + {"x": 7, "y": 3}, + {"x": 8, "y": 3}, + {"x": 9, "y": 3}, + {"x": 10, "y": 3}, + {"x": 11, "y": 3}, + + {"x": 0, "y": 4}, + {"x": 1, "y": 4}, + {"x": 2, "y": 4}, + {"x": 3, "y": 4}, + {"x": 4, "y": 4, "w": 2}, + {"x": 6, "y": 4, "w": 2}, + {"x": 8, "y": 4}, + {"x": 9, "y": 4}, + {"x": 10, "y": 4}, + {"x": 11, "y": 4} + ] + } + } +} diff --git a/keyboards/aeboards/constellation/info.json b/keyboards/aeboards/constellation/info.json new file mode 100644 index 0000000000..172ac4dfa2 --- /dev/null +++ b/keyboards/aeboards/constellation/info.json @@ -0,0 +1,85 @@ +{ + "keyboard_name": "Constellation", + "url": "", + "maintainer": "Xelus22", + "width": 16, + "height": 5, + "layouts": { + "LAYOUT_all": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.5, "y":1, "w":1.5}, + {"x":15, "y":1}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"label":"\"", "x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + {"x":15, "y":2}, + + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":15, "y":3}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.5}, + {"x":11.5, "y":4, "w":1.5}, + {"x":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4} + ] + } + } +} diff --git a/keyboards/alpine65/info.json b/keyboards/alpine65/info.json new file mode 100644 index 0000000000..5ecf6762a0 --- /dev/null +++ b/keyboards/alpine65/info.json @@ -0,0 +1,84 @@ +{ + "keyboard_name": "Alpine65", + "url": "", + "maintainer": "Gondolindrim", + "width": 16.25, + "height": 5.25, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.5, "y":1, "w":1.5}, + {"x":15.25, "y":1.25}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + {"x":15.25, "y":2.25}, + + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14.25, "y":3.25}, + {"x":15.25, "y":3.25}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4}, + {"x":11, "y":4}, + {"x":12, "y":4}, + {"x":13.25, "y":4.25}, + {"x":14.25, "y":4.25}, + {"x":15.25, "y":4.25} + ] + } + } +} diff --git a/keyboards/aplyard/aplx6/info.json b/keyboards/aplyard/aplx6/info.json new file mode 100644 index 0000000000..97a9ac8d41 --- /dev/null +++ b/keyboards/aplyard/aplx6/info.json @@ -0,0 +1,20 @@ +{ + "keyboard_name": "Aplx6", + "url": "", + "maintainer": "Aplyard", + "width": 3, + "height": 2, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1} + ] + } + } +} diff --git a/keyboards/arch_36/info.json b/keyboards/arch_36/info.json new file mode 100644 index 0000000000..aedc658165 --- /dev/null +++ b/keyboards/arch_36/info.json @@ -0,0 +1,52 @@ +{ + "keyboard_name": "Arch-36", + "url": "", + "maintainer": "obosob", + "width": 14, + "height": 5.1, + "layouts": { + "LAYOUT_split_3x5_3": { + "layout": [ + {"x":0, "y":1}, + {"x":1, "y":0.25}, + {"x":2, "y":0}, + {"x":3, "y":0.375}, + {"x":4, "y":0.5}, + {"x":9, "y":0.5}, + {"x":10, "y":0.375}, + {"x":11, "y":0}, + {"x":12, "y":0.25}, + {"x":13, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":1.25}, + {"x":2, "y":1}, + {"x":3, "y":1.375}, + {"x":4, "y":1.5}, + {"x":9, "y":1.5}, + {"x":10, "y":1.375}, + {"x":11, "y":1}, + {"x":12, "y":1.25}, + {"x":13, "y":2}, + + {"x":0, "y":3}, + {"x":1, "y":2.25}, + {"x":2, "y":2}, + {"x":3, "y":2.375}, + {"x":4, "y":2.5}, + {"x":9, "y":2.5}, + {"x":10, "y":2.375}, + {"x":11, "y":2}, + {"x":12, "y":2.25}, + {"x":13, "y":3}, + + {"x":3.5, "y":3.5}, + {"x":4.5, "y":3.7}, + {"x":5.5, "y":4.1}, + {"x":7.5, "y":4.1}, + {"x":8.5, "y":3.7}, + {"x":9.5, "y":3.5} + ] + } + } +} diff --git a/keyboards/arisu/info.json b/keyboards/arisu/info.json new file mode 100644 index 0000000000..213613d768 --- /dev/null +++ b/keyboards/arisu/info.json @@ -0,0 +1,84 @@ +{ + "keyboard_name": "Arisu", + "url": "https://github.com/FateNozomi/arisu-pcb", + "maintainer": "FateNozomi", + "width": 18.3, + "height": 5.25, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15, "y":0}, + {"x":16, "y":0}, + {"x":17.3, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.5, "y":1}, + {"x":14.5, "y":1}, + {"x":15.5, "y":1, "w":1.5}, + {"x":17.3, "y":1}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2}, + {"x":13.75, "y":2}, + {"x":14.75, "y":2, "w":2.25}, + {"x":17.3, "y":2}, + + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3}, + {"x":13.25, "y":3}, + {"x":14.25, "y":3, "w":1.75}, + {"x":16.3, "y":3.25}, + + {"x":0, "y":4, "w":1.5}, + {"x":3.25, "y":4, "w":1.5}, + {"x":4.75, "y":4, "w":2}, + {"x":6.75, "y":4, "w":1.25}, + {"x":8.75, "y":4, "w":2.75}, + {"x":11.5, "y":4, "w":1.5}, + {"x":15.3, "y":4.25}, + {"x":16.3, "y":4.25}, + {"x":17.3, "y":4.25} + ] + } + } +} diff --git a/keyboards/box75/info.json b/keyboards/box75/info.json new file mode 100644 index 0000000000..5eb72471ef --- /dev/null +++ b/keyboards/box75/info.json @@ -0,0 +1,101 @@ +{ + "keyboard_name": "BOX75", + "url": "", + "maintainer": "Gondolindrim", + "width": 16.25, + "height": 6.375, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1.25, "y":0}, + {"x":2.25, "y":0}, + {"x":3.25, "y":0}, + {"x":4.25, "y":0}, + {"x":5.5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.75, "y":0}, + {"x":10.75, "y":0}, + {"x":11.75, "y":0}, + {"x":12.75, "y":0}, + {"x":14, "y":0}, + {"x":15.25, "y":0}, + + {"x":0, "y":1.25}, + {"x":1, "y":1.25}, + {"x":2, "y":1.25}, + {"x":3, "y":1.25}, + {"x":4, "y":1.25}, + {"x":5, "y":1.25}, + {"x":6, "y":1.25}, + {"x":7, "y":1.25}, + {"x":8, "y":1.25}, + {"x":9, "y":1.25}, + {"x":10, "y":1.25}, + {"x":11, "y":1.25}, + {"x":12, "y":1.25}, + {"x":13, "y":1.25, "w":2}, + {"x":15.25, "y":1.25}, + + {"x":0, "y":2.25, "w":1.5}, + {"x":1.5, "y":2.25}, + {"x":2.5, "y":2.25}, + {"x":3.5, "y":2.25}, + {"x":4.5, "y":2.25}, + {"x":5.5, "y":2.25}, + {"x":6.5, "y":2.25}, + {"x":7.5, "y":2.25}, + {"x":8.5, "y":2.25}, + {"x":9.5, "y":2.25}, + {"x":10.5, "y":2.25}, + {"x":11.5, "y":2.25}, + {"x":12.5, "y":2.25}, + {"x":13.5, "y":2.25, "w":1.5}, + {"x":15.25, "y":2.25}, + + {"x":0, "y":3.25, "w":1.75}, + {"x":1.75, "y":3.25}, + {"x":2.75, "y":3.25}, + {"x":3.75, "y":3.25}, + {"x":4.75, "y":3.25}, + {"x":5.75, "y":3.25}, + {"x":6.75, "y":3.25}, + {"x":7.75, "y":3.25}, + {"x":8.75, "y":3.25}, + {"x":9.75, "y":3.25}, + {"x":10.75, "y":3.25}, + {"x":11.75, "y":3.25}, + {"x":12.75, "y":3.25, "w":2.25}, + {"x":15.25, "y":3.25}, + + {"x":0, "y":4.25, "w":2.25}, + {"x":2.25, "y":4.25}, + {"x":3.25, "y":4.25}, + {"x":4.25, "y":4.25}, + {"x":5.25, "y":4.25}, + {"x":6.25, "y":4.25}, + {"x":7.25, "y":4.25}, + {"x":8.25, "y":4.25}, + {"x":9.25, "y":4.25}, + {"x":10.25, "y":4.25}, + {"x":11.25, "y":4.25}, + {"x":12.25, "y":4.25, "w":1.75}, + {"x":14.125, "y":4.375}, + {"x":15.25, "y":4.25}, + + {"x":0, "y":5.25, "w":1.25}, + {"x":1.25, "y":5.25, "w":1.25}, + {"x":2.5, "y":5.25, "w":1.25}, + {"x":3.75, "y":5.25, "w":6.25}, + {"x":10, "y":5.25}, + {"x":11, "y":5.25}, + {"x":12, "y":5.25}, + {"x":13.125, "y":5.375}, + {"x":14.125, "y":5.375}, + {"x":15.125, "y":5.375} + ] + } + } +} diff --git a/keyboards/butterstick/info.json b/keyboards/butterstick/info.json new file mode 100644 index 0000000000..6e3f164794 --- /dev/null +++ b/keyboards/butterstick/info.json @@ -0,0 +1,34 @@ +{ + "keyboard_name": "Butter Stick", + "url": "", + "maintainer": "germ", + "width": 10, + "height": 2, + "layouts": { + "LAYOUT_butter": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + {"x":4, "y":1}, + {"x":5, "y":1}, + {"x":6, "y":1}, + {"x":7, "y":1}, + {"x":8, "y":1}, + {"x":9, "y":1} + ] + } + } +} diff --git a/keyboards/four_banger/info.json b/keyboards/four_banger/info.json new file mode 100644 index 0000000000..bb34a47872 --- /dev/null +++ b/keyboards/four_banger/info.json @@ -0,0 +1,18 @@ +{ + "keyboard_name": "Four Banger", + "url": "", + "maintainer": "qmk", + "width": 2, + "height": 2, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1} + ] + } + } +} diff --git a/keyboards/geekboards/tester/info.json b/keyboards/geekboards/tester/info.json new file mode 100644 index 0000000000..874ce7d887 --- /dev/null +++ b/keyboards/geekboards/tester/info.json @@ -0,0 +1,22 @@ +{ + "keyboard_name": "Geekboards 8-keys macropad", + "url": "", + "maintainer": "moyi4681", + "width": 4, + "height": 2, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1} + ] + } + } +} diff --git a/keyboards/handwired/2x5keypad/info.json b/keyboards/handwired/2x5keypad/info.json new file mode 100644 index 0000000000..2cc66f366b --- /dev/null +++ b/keyboards/handwired/2x5keypad/info.json @@ -0,0 +1,24 @@ +{ + "keyboard_name": "2x5keypad", + "url": "", + "maintainer": "jmcameron", + "width": 5, + "height": 2, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + {"x":4, "y":1} + ] + } + } +} diff --git a/keyboards/handwired/412_64/info.json b/keyboards/handwired/412_64/info.json new file mode 100644 index 0000000000..8d0d14ef90 --- /dev/null +++ b/keyboards/handwired/412_64/info.json @@ -0,0 +1,80 @@ +{ + "keyboard_name": "412-64", + "url": "", + "maintainer": "fateeverywhere", + "width": 16, + "height": 4, + "layouts": { + "LAYOUT_ortho_4x16": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + {"x":4, "y":1}, + {"x":5, "y":1}, + {"x":6, "y":1}, + {"x":7, "y":1}, + {"x":8, "y":1}, + {"x":9, "y":1}, + {"x":10, "y":1}, + {"x":11, "y":1}, + {"x":12, "y":1}, + {"x":13, "y":1}, + {"x":14, "y":1}, + {"x":15, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + {"x":3, "y":2}, + {"x":4, "y":2}, + {"x":5, "y":2}, + {"x":6, "y":2}, + {"x":7, "y":2}, + {"x":8, "y":2}, + {"x":9, "y":2}, + {"x":10, "y":2}, + {"x":11, "y":2}, + {"x":12, "y":2}, + {"x":13, "y":2}, + {"x":14, "y":2}, + {"x":15, "y":2}, + + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":3}, + {"x":4, "y":3}, + {"x":5, "y":3}, + {"x":6, "y":3}, + {"x":7, "y":3}, + {"x":8, "y":3}, + {"x":9, "y":3}, + {"x":10, "y":3}, + {"x":11, "y":3}, + {"x":12, "y":3}, + {"x":13, "y":3}, + {"x":14, "y":3}, + {"x":15, "y":3} + ] + } + } +} diff --git a/keyboards/handwired/42/info.json b/keyboards/handwired/42/info.json new file mode 100644 index 0000000000..0d5b56561a --- /dev/null +++ b/keyboards/handwired/42/info.json @@ -0,0 +1,58 @@ +{ + "keyboard_name": "42", + "url": "", + "maintainer": "nglgzz", + "width": 14.5, + "height": 5.417, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0.625}, + {"x":1, "y":0.417}, + {"x":2, "y":0.208}, + {"x":3, "y":0}, + {"x":4, "y":0.208}, + {"x":5, "y":0.417}, + {"x":8.5, "y":0.417}, + {"x":9.5, "y":0.208}, + {"x":10.5, "y":0}, + {"x":11.5, "y":0.208}, + {"x":12.5, "y":0.417}, + {"x":13.5, "y":0.625}, + + {"x":0, "y":1.625}, + {"x":1, "y":1.417}, + {"x":2, "y":1.208}, + {"x":3, "y":1}, + {"x":4, "y":1.208}, + {"x":5, "y":1.417}, + {"x":8.5, "y":1.417}, + {"x":9.5, "y":1.208}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1.208}, + {"x":12.5, "y":1.417}, + {"x":13.5, "y":1.625}, + + {"x":0, "y":2.625}, + {"x":1, "y":2.417}, + {"x":2, "y":2.208}, + {"x":3, "y":2}, + {"x":4, "y":2.208}, + {"x":5, "y":2.417}, + {"x":8.5, "y":2.417}, + {"x":9.5, "y":2.208}, + {"x":10.5, "y":2}, + {"x":11.5, "y":2.208}, + {"x":12.5, "y":2.417}, + {"x":13.5, "y":2.625}, + + {"x":4, "y":3.208}, + {"x":5, "y":3.417}, + {"x":5.75, "y":4.417}, + {"x":7.75, "y":4.417}, + {"x":8.5, "y":3.417}, + {"x":9.5, "y":3.208} + ] + } + } +} diff --git a/keyboards/handwired/aplx2/info.json b/keyboards/handwired/aplx2/info.json new file mode 100644 index 0000000000..6ca10a44f8 --- /dev/null +++ b/keyboards/handwired/aplx2/info.json @@ -0,0 +1,15 @@ +{ + "keyboard_name": "Aplx2", + "url": "", + "maintainer": "Aplyard", + "width": 2, + "height": 1, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0} + ] + } + } +} diff --git a/keyboards/handwired/brain/info.json b/keyboards/handwired/brain/info.json new file mode 100644 index 0000000000..37454b5bc0 --- /dev/null +++ b/keyboards/handwired/brain/info.json @@ -0,0 +1,73 @@ +{ + "keyboard_name": "Brain", + "url": "", + "maintainer": "Klackygears", + "width": 15, + "height": 6.25, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":1, "y":1}, + {"x":2, "y":0.5}, + {"x":3, "y":0}, + {"x":4, "y":0.5}, + {"x":5, "y":0.75}, + {"x":6, "y":1}, + {"x":8, "y":1}, + {"x":9, "y":0.75}, + {"x":10, "y":0.5}, + {"x":11, "y":0}, + {"x":12, "y":0.5}, + {"x":13, "y":1}, + + {"x":0, "y":2.25}, + {"x":1, "y":2}, + {"x":2, "y":1.5}, + {"x":3, "y":1}, + {"x":4, "y":1.5}, + {"x":5, "y":1.75}, + {"x":6, "y":2}, + {"x":8, "y":2}, + {"x":9, "y":1.75}, + {"x":10, "y":1.5}, + {"x":11, "y":1}, + {"x":12, "y":1.5}, + {"x":13, "y":2}, + {"x":14, "y":2.25}, + + {"x":0, "y":3.25}, + {"x":1, "y":3}, + {"x":2, "y":2.5}, + {"x":3, "y":2}, + {"x":4, "y":2.5}, + {"x":5, "y":2.75}, + {"x":6, "y":3}, + {"x":8, "y":3}, + {"x":9, "y":2.75}, + {"x":10, "y":2.5}, + {"x":11, "y":2}, + {"x":12, "y":2.5}, + {"x":13, "y":3}, + {"x":14, "y":3.25}, + + {"x":1, "y":4}, + {"x":2, "y":3.5}, + {"x":3.5, "y":4.25}, + {"x":4.5, "y":4.25}, + {"x":5.5, "y":4.25}, + {"x":8.5, "y":4.25}, + {"x":9.5, "y":4.25}, + {"x":10.5, "y":4.25}, + {"x":12, "y":3.5}, + {"x":13, "y":4}, + + {"x":3.5, "y":5.25}, + {"x":4.5, "y":5.25}, + {"x":5.5, "y":5.25}, + {"x":8.5, "y":5.25}, + {"x":9.5, "y":5.25}, + {"x":10.5, "y":5.25} + ] + } + } +} diff --git a/keyboards/handwired/cans12er/info.json b/keyboards/handwired/cans12er/info.json new file mode 100644 index 0000000000..640e6a4475 --- /dev/null +++ b/keyboards/handwired/cans12er/info.json @@ -0,0 +1,27 @@ +{ + "keyboard_name": "Cans12er", + "url": "", + "maintainer": "canbaytok", + "width": 4, + "height": 3, + "layouts": { + "LAYOUT_ortho_3x4": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + {"x":3, "y":2} + ] + } + } +} diff --git a/keyboards/handwired/ck4x4/info.json b/keyboards/handwired/ck4x4/info.json new file mode 100644 index 0000000000..e1f31582df --- /dev/null +++ b/keyboards/handwired/ck4x4/info.json @@ -0,0 +1,32 @@ +{ + "keyboard_name": "CK4x4", + "url": "", + "maintainer": "awkannan", + "width": 4, + "height": 4, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + {"x":3, "y":2}, + + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":3} + ] + } + } +} diff --git a/keyboards/handwired/d48/info.json b/keyboards/handwired/d48/info.json new file mode 100644 index 0000000000..540a9e3228 --- /dev/null +++ b/keyboards/handwired/d48/info.json @@ -0,0 +1,67 @@ +{ + "keyboard_name": "D48", + "url": "", + "maintainer": "and3rson", + "width": 12, + "height": 5, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":8, "y":0}, + {"x":11, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + {"x":4, "y":1}, + {"x":5, "y":1}, + {"x":6, "y":1}, + {"x":7, "y":1}, + {"x":8, "y":1}, + {"x":9, "y":1}, + {"x":10, "y":1}, + {"x":11, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + {"x":3, "y":2}, + {"x":4, "y":2}, + {"x":5, "y":2}, + {"x":6, "y":2}, + {"x":7, "y":2}, + {"x":8, "y":2}, + {"x":9, "y":2}, + {"x":10, "y":2}, + {"x":11, "y":2}, + + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":3}, + {"x":4, "y":3}, + {"x":5, "y":3}, + {"x":6, "y":3}, + {"x":7, "y":3}, + {"x":8, "y":3}, + {"x":9, "y":3}, + {"x":10, "y":3}, + {"x":11, "y":3}, + + {"x":0, "y":4}, + {"x":1, "y":4}, + {"x":2, "y":4}, + {"x":3, "y":4}, + {"x":4, "y":4}, + {"x":5, "y":4}, + {"x":6, "y":4}, + {"x":7, "y":4}, + {"x":8, "y":4}, + {"x":9, "y":4}, + {"x":10, "y":4}, + {"x":11, "y":4} + ] + } + } +} diff --git a/keyboards/handwired/dactyl_manuform/dmote/62key/info.json b/keyboards/handwired/dactyl_manuform/dmote/62key/info.json new file mode 100644 index 0000000000..8e54b8db4d --- /dev/null +++ b/keyboards/handwired/dactyl_manuform/dmote/62key/info.json @@ -0,0 +1,90 @@ +{ + "keyboard_name": "DMOTE 62-key", + "url": "", + "maintainer": "veikman", + "width": 15, + "height": 7.5, + "layouts": { + "LAYOUT_62key": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + {"x":4, "y":1}, + {"x":5, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + {"x":3, "y":2}, + {"x":4, "y":2}, + {"x":5, "y":2}, + + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":3}, + {"x":4, "y":3}, + + {"x":3, "y":4}, + {"x":4.5, "y":4.5}, + {"x":5.5, "y":4.5}, + + {"x":4, "y":5.5}, + {"x":5, "y":5.5}, + {"x":6, "y":5.5}, + + {"x":4.5, "y":6.5}, + {"x":5.5, "y":6.5}, + + + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + + {"x":9, "y":1}, + {"x":10, "y":1}, + {"x":11, "y":1}, + {"x":12, "y":1}, + {"x":13, "y":1}, + {"x":14, "y":1}, + + {"x":9, "y":2}, + {"x":10, "y":2}, + {"x":11, "y":2}, + {"x":12, "y":2}, + {"x":13, "y":2}, + {"x":14, "y":2}, + + {"x":10, "y":3}, + {"x":11, "y":3}, + {"x":12, "y":3}, + {"x":13, "y":3}, + {"x":14, "y":3}, + + {"x":8.5, "y":4.5}, + {"x":9.5, "y":4.5}, + {"x":11, "y":4}, + + {"x":8, "y":5.5}, + {"x":9, "y":5.5}, + {"x":10, "y":5.5}, + + {"x":8.5, "y":6.5}, + {"x":9.5, "y":6.5} + ] + } + } +} + diff --git a/keyboards/handwired/daishi/info.json b/keyboards/handwired/daishi/info.json new file mode 100644 index 0000000000..52a67b3de9 --- /dev/null +++ b/keyboards/handwired/daishi/info.json @@ -0,0 +1,136 @@ +{ + "keyboard_name": "Daishi", + "url": "", + "maintainer": "Croktopus", + "width": 19.5, + "height": 7.75, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1.25, "y":0}, + {"x":2.25, "y":0}, + {"x":3.25, "y":0}, + {"x":4.5, "y":0}, + {"x":5.5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.75, "y":0}, + {"x":8.75, "y":0}, + {"x":9.75, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14.25, "y":0}, + {"x":15.25, "y":0}, + {"x":16.25, "y":0}, + {"x":17.25, "y":0}, + {"x":18.5, "y":0}, + + {"x":0, "y":1.25}, + {"x":1, "y":1.25}, + {"x":2, "y":1.25}, + {"x":3, "y":1.25}, + {"x":4.33, "y":1.25}, + {"x":5.33, "y":1.25}, + {"x":6.33, "y":1.25}, + {"x":7.33, "y":1.25}, + {"x":8.67, "y":1.25}, + {"x":9.67, "y":1.25}, + {"x":10.67, "y":1.25}, + {"x":11.67, "y":1.25}, + {"x":13, "y":1.25}, + {"x":14.25, "y":1.25}, + {"x":15.25, "y":1.25}, + {"x":16.25, "y":1.25}, + {"x":17.5, "y":1.25}, + {"x":18.5, "y":1.25}, + + {"x":0, "y":2.5}, + {"x":1, "y":2.5}, + {"x":2, "y":2.5}, + {"x":3, "y":2.5}, + {"x":4, "y":2.5}, + {"x":5, "y":2.5}, + {"x":6, "y":2.5}, + {"x":7, "y":2.5}, + {"x":8, "y":2.5}, + {"x":9, "y":2.5}, + {"x":10, "y":2.5}, + {"x":11, "y":2.5}, + {"x":12, "y":2.5}, + {"x":13, "y":2.5, "w":2}, + {"x":15.25, "y":2.25}, + {"x":16.5, "y":2.5}, + {"x":17.5, "y":2.5}, + {"x":18.5, "y":2.5}, + + {"x":0, "y":3.5, "w":1.5}, + {"x":1.5, "y":3.5}, + {"x":2.5, "y":3.5}, + {"x":3.5, "y":3.5}, + {"x":4.5, "y":3.5}, + {"x":5.5, "y":3.5}, + {"x":6.5, "y":3.5}, + {"x":7.5, "y":3.5}, + {"x":8.5, "y":3.5}, + {"x":9.5, "y":3.5}, + {"x":10.5, "y":3.5}, + {"x":11.5, "y":3.5}, + {"x":12.5, "y":3.5}, + {"x":13.5, "y":3.5, "w":1.5}, + {"x":15.5, "y":3.5}, + {"x":16.5, "y":3.5}, + {"x":17.5, "y":3.5}, + {"x":18.5, "y":3.5}, + + {"x":0, "y":4.5, "w":1.75}, + {"x":1.75, "y":4.5}, + {"x":2.75, "y":4.5}, + {"x":3.75, "y":4.5}, + {"x":4.75, "y":4.5}, + {"x":5.75, "y":4.5}, + {"x":6.75, "y":4.5}, + {"x":7.75, "y":4.5}, + {"x":8.75, "y":4.5}, + {"x":9.75, "y":4.5}, + {"x":10.75, "y":4.5}, + {"x":11.75, "y":4.5}, + {"x":12.75, "y":4.5, "w":2.25}, + {"x":15.5, "y":4.5}, + {"x":16.5, "y":4.5}, + {"x":17.5, "y":4.5}, + {"x":18.5, "y":4.5}, + + {"x":0, "y":5.5, "w":2.25}, + {"x":2.25, "y":5.5}, + {"x":3.25, "y":5.5}, + {"x":4.25, "y":5.5}, + {"x":5.25, "y":5.5}, + {"x":6.25, "y":5.5}, + {"x":7.25, "y":5.5}, + {"x":8.25, "y":5.5}, + {"x":9.25, "y":5.5}, + {"x":10.25, "y":5.5}, + {"x":11.25, "y":5.5}, + {"x":12.25, "y":5.5, "w":1.75}, + {"x":14.25, "y":5.75}, + {"x":15.5, "y":5.5}, + {"x":16.5, "y":5.5}, + {"x":17.5, "y":5.5}, + {"x":18.5, "y":5.5, "h":2}, + + {"x":0, "y":6.5, "w":1.25}, + {"x":1.25, "y":6.5, "w":1.25}, + {"x":2.5, "y":6.5, "w":1.25}, + {"x":3.75, "y":6.5, "w":6.25}, + {"x":10, "y":6.5, "w":1.5}, + {"x":11.5, "y":6.5, "w":1.5}, + {"x":13.25, "y":6.75}, + {"x":14.25, "y":6.75}, + {"x":15.25, "y":6.75}, + {"x":16.5, "y":6.5}, + {"x":17.5, "y":6.5} + ] + } + } +} diff --git a/keyboards/handwired/hexon38/info.json b/keyboards/handwired/hexon38/info.json new file mode 100644 index 0000000000..5c141ac656 --- /dev/null +++ b/keyboards/handwired/hexon38/info.json @@ -0,0 +1,54 @@ +{ + "keyboard_name": "hexon38", + "url": "", + "maintainer": "cellularmitosis", + "width": 18, + "height": 4, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + {"x":4, "y":1}, + {"x":5, "y":1}, + {"x":12, "y":1}, + {"x":13, "y":1}, + {"x":14, "y":1}, + {"x":15, "y":1}, + {"x":16, "y":1}, + {"x":17, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + {"x":3, "y":2}, + {"x":4, "y":2}, + {"x":13, "y":2}, + {"x":14, "y":2}, + {"x":15, "y":2}, + {"x":16, "y":2}, + {"x":17, "y":2}, + + {"x":4.5, "y":3}, + {"x":5.5, "y":3}, + {"x":6.5, "y":3}, + {"x":7.5, "y":3}, + {"x":9.5, "y":3}, + {"x":10.5, "y":3}, + {"x":11.5, "y":3}, + {"x":12.5, "y":3} + ] + } + } +} diff --git a/keyboards/handwired/jot50/info.json b/keyboards/handwired/jot50/info.json new file mode 100644 index 0000000000..c144d684cb --- /dev/null +++ b/keyboards/handwired/jot50/info.json @@ -0,0 +1,77 @@ +{ + "keyboard_name": "Jot50", + "url": "", + "maintainer": "jotix", + "width": 12, + "height": 5, + "layouts": { + "LAYOUT_ortho_5x12": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + {"x":4, "y":1}, + {"x":5, "y":1}, + {"x":6, "y":1}, + {"x":7, "y":1}, + {"x":8, "y":1}, + {"x":9, "y":1}, + {"x":10, "y":1}, + {"x":11, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + {"x":3, "y":2}, + {"x":4, "y":2}, + {"x":5, "y":2}, + {"x":6, "y":2}, + {"x":7, "y":2}, + {"x":8, "y":2}, + {"x":9, "y":2}, + {"x":10, "y":2}, + {"x":11, "y":2}, + + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":3}, + {"x":4, "y":3}, + {"x":5, "y":3}, + {"x":6, "y":3}, + {"x":7, "y":3}, + {"x":8, "y":3}, + {"x":9, "y":3}, + {"x":10, "y":3}, + {"x":11, "y":3}, + + {"x":0, "y":4}, + {"x":1, "y":4}, + {"x":2, "y":4}, + {"x":3, "y":4}, + {"x":4, "y":4}, + {"x":5, "y":4}, + {"x":6, "y":4}, + {"x":7, "y":4}, + {"x":8, "y":4}, + {"x":9, "y":4}, + {"x":10, "y":4}, + {"x":11, "y":4} + ] + } + } +} diff --git a/keyboards/handwired/jotanck/info.json b/keyboards/handwired/jotanck/info.json new file mode 100644 index 0000000000..a5d13876ea --- /dev/null +++ b/keyboards/handwired/jotanck/info.json @@ -0,0 +1,64 @@ +{ + "keyboard_name": "Jotanck", + "url": "", + "maintainer": "jotix", + "width": 12, + "height": 4, + "layouts": { + "LAYOUT_ortho_4x12": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":10, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + {"x":4, "y":1}, + {"x":5, "y":1}, + {"x":6, "y":1}, + {"x":7, "y":1}, + {"x":8, "y":1}, + {"x":9, "y":1}, + {"x":10, "y":1}, + {"x":10, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + {"x":3, "y":2}, + {"x":4, "y":2}, + {"x":5, "y":2}, + {"x":6, "y":2}, + {"x":7, "y":2}, + {"x":8, "y":2}, + {"x":9, "y":2}, + {"x":10, "y":2}, + {"x":10, "y":2}, + + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":3}, + {"x":4, "y":3}, + {"x":5, "y":3}, + {"x":6, "y":3}, + {"x":7, "y":3}, + {"x":8, "y":3}, + {"x":9, "y":3}, + {"x":10, "y":3}, + {"x":10, "y":3} + ] + } + } +} diff --git a/keyboards/handwired/jotpad16/info.json b/keyboards/handwired/jotpad16/info.json new file mode 100644 index 0000000000..feea7575cf --- /dev/null +++ b/keyboards/handwired/jotpad16/info.json @@ -0,0 +1,32 @@ +{ + "keyboard_name": "JotPad16", + "url": "", + "maintainer": "jotix", + "width": 4, + "height": 4, + "layouts": { + "LAYOUT_ortho_4x4": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + {"x":3, "y":2}, + + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":3} + ] + } + } +} diff --git a/keyboards/handwired/k8split/info.json b/keyboards/handwired/k8split/info.json new file mode 100644 index 0000000000..026edfe710 --- /dev/null +++ b/keyboards/handwired/k8split/info.json @@ -0,0 +1,66 @@ +{ + "keyboard_name": "k8split", + "url": "", + "maintainer": "Ckath", + "width": 10, + "height": 6, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + {"x":4, "y":1}, + {"x":5, "y":1}, + {"x":6, "y":1}, + {"x":7, "y":1}, + + {"x":0, "y":2, "w":1.5}, + {"x":1.5, "y":2}, + {"x":2.5, "y":2}, + {"x":3.5, "y":2}, + {"x":4.5, "y":2}, + {"x":5.5, "y":2}, + {"x":6.5, "y":2}, + {"x":7.5, "y":2}, + + {"x":0, "y":3, "w":1.75}, + {"x":1.75, "y":3}, + {"x":2.75, "y":3}, + {"x":3.75, "y":3}, + {"x":4.75, "y":3}, + {"x":5.75, "y":3}, + {"x":6.75, "y":3}, + {"x":7.75, "y":3}, + + {"x":0, "y":4, "w":2.25}, + {"x":2.25, "y":4}, + {"x":3.25, "y":4}, + {"x":4.25, "y":4}, + {"x":5.25, "y":4}, + {"x":6.25, "y":4}, + {"x":7.25, "y":4}, + {"x":8.25, "y":4}, + + {"x":0, "y":5, "w":1.5}, + {"x":1.5, "y":5}, + {"x":2.5, "y":5}, + {"x":3.5, "y":5, "w":1.25}, + {"x":4.75, "y":5, "w":2.25}, + {"x":7, "y":5}, + {"x":8, "y":5}, + {"x":9, "y":5} + ] + } + } +} diff --git a/keyboards/handwired/myskeeb/info.json b/keyboards/handwired/myskeeb/info.json new file mode 100644 index 0000000000..617fbc441b --- /dev/null +++ b/keyboards/handwired/myskeeb/info.json @@ -0,0 +1,88 @@ +{ + "keyboard_name": "myskeeb", + "url": "", + "maintainer": "su8044", + "width": 15, + "height": 5, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + {"x":4, "y":1}, + {"x":5, "y":1}, + {"x":6, "y":1}, + {"x":8, "y":1}, + {"x":9, "y":1}, + {"x":10, "y":1}, + {"x":11, "y":1}, + {"x":12, "y":1}, + {"x":13, "y":1}, + {"x":14, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + {"x":3, "y":2}, + {"x":4, "y":2}, + {"x":5, "y":2}, + {"x":6, "y":2}, + {"x":8, "y":2}, + {"x":9, "y":2}, + {"x":10, "y":2}, + {"x":11, "y":2}, + {"x":12, "y":2}, + {"x":13, "y":2}, + {"x":14, "y":2}, + + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":3}, + {"x":4, "y":3}, + {"x":5, "y":3}, + {"x":6, "y":3}, + {"x":8, "y":3}, + {"x":9, "y":3}, + {"x":10, "y":3}, + {"x":11, "y":3}, + {"x":12, "y":3}, + {"x":13, "y":3}, + {"x":14, "y":3}, + + {"x":0, "y":4}, + {"x":1, "y":4}, + {"x":2, "y":4}, + {"x":3, "y":4}, + {"x":4, "y":4}, + {"x":5, "y":4}, + {"x":6, "y":4}, + {"x":8, "y":4}, + {"x":9, "y":4}, + {"x":10, "y":4}, + {"x":11, "y":4}, + {"x":12, "y":4}, + {"x":13, "y":4}, + {"x":14, "y":4} + ] + } + } +} + diff --git a/keyboards/handwired/nicekey/info.json b/keyboards/handwired/nicekey/info.json new file mode 100644 index 0000000000..1f099534b2 --- /dev/null +++ b/keyboards/handwired/nicekey/info.json @@ -0,0 +1,14 @@ +{ + "keyboard_name": "nicekey handwired", + "url": "", + "maintainer": "spydon", + "width": 1, + "height": 1, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0} + ] + } + } +} diff --git a/keyboards/handwired/onekey/info.json b/keyboards/handwired/onekey/info.json new file mode 100644 index 0000000000..ac339ba197 --- /dev/null +++ b/keyboards/handwired/onekey/info.json @@ -0,0 +1,14 @@ +{ + "keyboard_name": "onekey handwired", + "url": "", + "maintainer": "qmk", + "width": 1, + "height": 1, + "layouts": { + "LAYOUT_ortho_1x1": { + "layout": [ + {"x":0, "y":0} + ] + } + } +} diff --git a/keyboards/handwired/postageboard/info.json b/keyboards/handwired/postageboard/info.json new file mode 100644 index 0000000000..6389470867 --- /dev/null +++ b/keyboards/handwired/postageboard/info.json @@ -0,0 +1,16 @@ +{ + "keyboard_name": "Postage Board", + "url": "", + "maintainer": "LifeIsOnTheWire", + "width": 1, + "height": 1, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0} + ] + } + } +} diff --git a/keyboards/handwired/riblee_f401/info.json b/keyboards/handwired/riblee_f401/info.json new file mode 100644 index 0000000000..ddf13abc93 --- /dev/null +++ b/keyboards/handwired/riblee_f401/info.json @@ -0,0 +1,77 @@ +{ + "keyboard_name": "Handwired Preonic (Blackpill F401)", + "url": "", + "maintainer": "riblee", + "width": 12, + "height": 5, + "layouts": { + "LAYOUT_ortho_5x12": { + "layout": [ + {"x": 0,"y": 0}, + {"x": 1,"y": 0}, + {"x": 2,"y": 0}, + {"x": 3,"y": 0}, + {"x": 4,"y": 0}, + {"x": 5,"y": 0}, + {"x": 6,"y": 0}, + {"x": 7,"y": 0}, + {"x": 8,"y": 0}, + {"x": 9,"y": 0}, + {"x": 10,"y": 0}, + {"x": 11,"y": 0}, + + {"x": 0,"y": 1}, + {"x": 1,"y": 1}, + {"x": 2,"y": 1}, + {"x": 3,"y": 1}, + {"x": 4,"y": 1}, + {"x": 5,"y": 1}, + {"x": 6,"y": 1}, + {"x": 7,"y": 1}, + {"x": 8,"y": 1}, + {"x": 9,"y": 1}, + {"x": 10,"y": 1}, + {"x": 11,"y": 1}, + + {"x": 0,"y": 2}, + {"x": 1,"y": 2}, + {"x": 2,"y": 2}, + {"x": 3,"y": 2}, + {"x": 4,"y": 2}, + {"x": 5,"y": 2}, + {"x": 6,"y": 2}, + {"x": 7,"y": 2}, + {"x": 8,"y": 2}, + {"x": 9,"y": 2}, + {"x": 10,"y": 2}, + {"x": 11,"y": 2}, + + {"x": 0,"y": 3}, + {"x": 1,"y": 3}, + {"x": 2,"y": 3}, + {"x": 3,"y": 3}, + {"x": 4,"y": 3}, + {"x": 5,"y": 3}, + {"x": 6,"y": 3}, + {"x": 7,"y": 3}, + {"x": 8,"y": 3}, + {"x": 9,"y": 3}, + {"x": 10,"y": 3}, + {"x": 11,"y": 3}, + + {"x": 0,"y": 4}, + {"x": 1,"y": 4}, + {"x": 2,"y": 4}, + {"x": 3,"y": 4}, + {"x": 4,"y": 4}, + {"x": 5,"y": 4}, + {"x": 6,"y": 4}, + {"x": 7,"y": 4}, + {"x": 8,"y": 4}, + {"x": 9,"y": 4}, + {"x": 10,"y": 4}, + {"x": 11,"y": 4} + ] + } + } +} diff --git a/keyboards/handwired/riblee_f411/info.json b/keyboards/handwired/riblee_f411/info.json new file mode 100644 index 0000000000..e318e8bd6a --- /dev/null +++ b/keyboards/handwired/riblee_f411/info.json @@ -0,0 +1,77 @@ +{ + "keyboard_name": "Handwired Preonic (Blackpill F411)", + "url": "", + "maintainer": "riblee", + "width": 12, + "height": 5, + "layouts": { + "LAYOUT_ortho_5x12": { + "layout": [ + {"x": 0,"y": 0}, + {"x": 1,"y": 0}, + {"x": 2,"y": 0}, + {"x": 3,"y": 0}, + {"x": 4,"y": 0}, + {"x": 5,"y": 0}, + {"x": 6,"y": 0}, + {"x": 7,"y": 0}, + {"x": 8,"y": 0}, + {"x": 9,"y": 0}, + {"x": 10,"y": 0}, + {"x": 11,"y": 0}, + + {"x": 0,"y": 1}, + {"x": 1,"y": 1}, + {"x": 2,"y": 1}, + {"x": 3,"y": 1}, + {"x": 4,"y": 1}, + {"x": 5,"y": 1}, + {"x": 6,"y": 1}, + {"x": 7,"y": 1}, + {"x": 8,"y": 1}, + {"x": 9,"y": 1}, + {"x": 10,"y": 1}, + {"x": 11,"y": 1}, + + {"x": 0,"y": 2}, + {"x": 1,"y": 2}, + {"x": 2,"y": 2}, + {"x": 3,"y": 2}, + {"x": 4,"y": 2}, + {"x": 5,"y": 2}, + {"x": 6,"y": 2}, + {"x": 7,"y": 2}, + {"x": 8,"y": 2}, + {"x": 9,"y": 2}, + {"x": 10,"y": 2}, + {"x": 11,"y": 2}, + + {"x": 0,"y": 3}, + {"x": 1,"y": 3}, + {"x": 2,"y": 3}, + {"x": 3,"y": 3}, + {"x": 4,"y": 3}, + {"x": 5,"y": 3}, + {"x": 6,"y": 3}, + {"x": 7,"y": 3}, + {"x": 8,"y": 3}, + {"x": 9,"y": 3}, + {"x": 10,"y": 3}, + {"x": 11,"y": 3}, + + {"x": 0,"y": 4}, + {"x": 1,"y": 4}, + {"x": 2,"y": 4}, + {"x": 3,"y": 4}, + {"x": 4,"y": 4}, + {"x": 5,"y": 4}, + {"x": 6,"y": 4}, + {"x": 7,"y": 4}, + {"x": 8,"y": 4}, + {"x": 9,"y": 4}, + {"x": 10,"y": 4}, + {"x": 11,"y": 4} + ] + } + } +} diff --git a/keyboards/handwired/rs60/info.json b/keyboards/handwired/rs60/info.json new file mode 100644 index 0000000000..a3b32aec18 --- /dev/null +++ b/keyboards/handwired/rs60/info.json @@ -0,0 +1,77 @@ +{ + "keyboard_name": "rs60", + "url": "", + "maintainer": "rs", + "width": 12, + "height": 5, + "layouts": { + "LAYOUT_ortho_5x12": { + "layout": [ + {"x": 0,"y": 0}, + {"x": 1,"y": 0}, + {"x": 2,"y": 0}, + {"x": 3,"y": 0}, + {"x": 4,"y": 0}, + {"x": 5,"y": 0}, + {"x": 6,"y": 0}, + {"x": 7,"y": 0}, + {"x": 8,"y": 0}, + {"x": 9,"y": 0}, + {"x": 10,"y": 0}, + {"x": 11,"y": 0}, + + {"x": 0,"y": 1}, + {"x": 1,"y": 1}, + {"x": 2,"y": 1}, + {"x": 3,"y": 1}, + {"x": 4,"y": 1}, + {"x": 5,"y": 1}, + {"x": 6,"y": 1}, + {"x": 7,"y": 1}, + {"x": 8,"y": 1}, + {"x": 9,"y": 1}, + {"x": 10,"y": 1}, + {"x": 11,"y": 1}, + + {"x": 0,"y": 2}, + {"x": 1,"y": 2}, + {"x": 2,"y": 2}, + {"x": 3,"y": 2}, + {"x": 4,"y": 2}, + {"x": 5,"y": 2}, + {"x": 6,"y": 2}, + {"x": 7,"y": 2}, + {"x": 8,"y": 2}, + {"x": 9,"y": 2}, + {"x": 10,"y": 2}, + {"x": 11,"y": 2}, + + {"x": 0,"y": 3}, + {"x": 1,"y": 3}, + {"x": 2,"y": 3}, + {"x": 3,"y": 3}, + {"x": 4,"y": 3}, + {"x": 5,"y": 3}, + {"x": 6,"y": 3}, + {"x": 7,"y": 3}, + {"x": 8,"y": 3}, + {"x": 9,"y": 3}, + {"x": 10,"y": 3}, + {"x": 11,"y": 3}, + + {"x": 0,"y": 4}, + {"x": 1,"y": 4}, + {"x": 2,"y": 4}, + {"x": 3,"y": 4}, + {"x": 4,"y": 4}, + {"x": 5,"y": 4}, + {"x": 6,"y": 4}, + {"x": 7,"y": 4}, + {"x": 8,"y": 4}, + {"x": 9,"y": 4}, + {"x": 10,"y": 4}, + {"x": 11,"y": 4} + ] + } + } +} diff --git a/keyboards/handwired/splittest/info.json b/keyboards/handwired/splittest/info.json new file mode 100644 index 0000000000..fb7dce7b1c --- /dev/null +++ b/keyboards/handwired/splittest/info.json @@ -0,0 +1,15 @@ +{ + "keyboard_name": "Split Tester", + "url": "", + "maintainer": "nooges", + "width": 2, + "height": 1, + "layouts": { + "LAYOUT": { + "layout": [ + {"x": 0,"y": 0}, + {"x": 1,"y": 0} + ] + } + } +} diff --git a/keyboards/handwired/trackpoint/info.json b/keyboards/handwired/trackpoint/info.json new file mode 100644 index 0000000000..d1dcb39d62 --- /dev/null +++ b/keyboards/handwired/trackpoint/info.json @@ -0,0 +1,16 @@ +{ + "keyboard_name": "Trackpoint", + "url": "", + "maintainer": "qmk", + "width": 3, + "height": 1, + "layouts": { + "LAYOUT": { + "layout": [ + {"x": 0,"y": 0}, + {"x": 1,"y": 0}, + {"x": 2,"y": 0} + ] + } + } +} diff --git a/keyboards/handwired/traveller/info.json b/keyboards/handwired/traveller/info.json new file mode 100644 index 0000000000..0a13fab77a --- /dev/null +++ b/keyboards/handwired/traveller/info.json @@ -0,0 +1,66 @@ +{ + "keyboard_name": "traveller", + "url": "", + "maintainer": "qmk", + "width": 1, + "height": 1, + "layouts": { + "KEYMAP": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + {"x":4, "y":1}, + {"x":5, "y":1}, + {"x":7, "y":1}, + {"x":8, "y":1}, + {"x":9, "y":1}, + {"x":10, "y":1}, + {"x":11, "y":1}, + {"x":12, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + {"x":3, "y":2}, + {"x":4, "y":2}, + {"x":5, "y":2}, + {"x":6, "y":2}, + {"x":7, "y":2}, + {"x":8, "y":2}, + {"x":9, "y":2}, + {"x":10, "y":2}, + {"x":11, "y":2}, + {"x":12, "y":2}, + + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":3}, + {"x":4, "y":3}, + {"x":5, "y":3}, + {"x":6, "y":3}, + {"x":7, "y":3}, + {"x":8, "y":3}, + {"x":9, "y":3}, + {"x":10, "y":3}, + {"x":11, "y":3}, + {"x":12, "y":3} + ] + } + } +} diff --git a/keyboards/hhkb_lite_2/info.json b/keyboards/hhkb_lite_2/info.json new file mode 100644 index 0000000000..4319320b10 --- /dev/null +++ b/keyboards/hhkb_lite_2/info.json @@ -0,0 +1,77 @@ +{ + "keyboard_name": "HHKB Lite 2", + "url": "", + "maintainer": "qmk", + "width": 15, + "height": 5, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.5, "y":1, "w":1.5}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + + {"x":1.5, "y":4}, + {"x":2.5, "y":4, "w":1.5}, + {"x":4, "y":4, "w":6}, + {"x":10, "y":4, "w":1.5}, + {"x":11.5, "y":4} + ] + } + } +} diff --git a/keyboards/honeycomb/info.json b/keyboards/honeycomb/info.json new file mode 100644 index 0000000000..1124a8b133 --- /dev/null +++ b/keyboards/honeycomb/info.json @@ -0,0 +1,32 @@ +{ + "keyboard_name": "Honeycomb", + "url": "", + "maintainer": "filoxo", + "width": 4, + "height": 4, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + {"x":3, "y":2}, + + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":3} + ] + } + } +} diff --git a/keyboards/ivy/rev1/info.json b/keyboards/ivy/rev1/info.json new file mode 100644 index 0000000000..4e9db79031 --- /dev/null +++ b/keyboards/ivy/rev1/info.json @@ -0,0 +1,16 @@ +{ + "keyboard_name": "IVY", + "url": "", + "maintainer": "That-Canadian", + "width": 3, + "height": 1, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0} + ] + } + } +} diff --git a/keyboards/keebio/viterbi/info.json b/keyboards/keebio/viterbi/info.json new file mode 100644 index 0000000000..c37d941f40 --- /dev/null +++ b/keyboards/keebio/viterbi/info.json @@ -0,0 +1,87 @@ +{ + "keyboard_name": "Viterbi", + "url": "https://keeb.io", + "maintainer": "nooges", + "width": 15, + "height": 5, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + {"x":4, "y":1}, + {"x":5, "y":1}, + {"x":6, "y":1}, + {"x":8, "y":1}, + {"x":9, "y":1}, + {"x":10, "y":1}, + {"x":11, "y":1}, + {"x":12, "y":1}, + {"x":13, "y":1}, + {"x":14, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + {"x":3, "y":2}, + {"x":4, "y":2}, + {"x":5, "y":2}, + {"x":6, "y":2}, + {"x":8, "y":2}, + {"x":9, "y":2}, + {"x":10, "y":2}, + {"x":11, "y":2}, + {"x":12, "y":2}, + {"x":13, "y":2}, + {"x":14, "y":2}, + + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":3}, + {"x":4, "y":3}, + {"x":5, "y":3}, + {"x":6, "y":3}, + {"x":8, "y":3}, + {"x":9, "y":3}, + {"x":10, "y":3}, + {"x":11, "y":3}, + {"x":12, "y":3}, + {"x":13, "y":3}, + {"x":14, "y":3}, + + {"x":0, "y":4}, + {"x":1, "y":4}, + {"x":2, "y":4}, + {"x":3, "y":4}, + {"x":4, "y":4}, + {"x":5, "y":4}, + {"x":6, "y":4}, + {"x":8, "y":4}, + {"x":9, "y":4}, + {"x":10, "y":4}, + {"x":11, "y":4}, + {"x":12, "y":4}, + {"x":13, "y":4}, + {"x":14, "y":4} + ] + } + } +} diff --git a/keyboards/laptreus/info.json b/keyboards/laptreus/info.json new file mode 100644 index 0000000000..adcfdf6040 --- /dev/null +++ b/keyboards/laptreus/info.json @@ -0,0 +1,64 @@ +{ + "keyboard_name": "Laptreus", + "url": "", + "maintainer": "vosechu", + "width": 14, + "height": 4.67, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0.67}, + {"x":1, "y":0.67}, + {"x":2, "y":0.33}, + {"x":3, "y":0}, + {"x":4, "y":0.33}, + {"x":5, "y":0.33}, + {"x":8, "y":0.33}, + {"x":9, "y":0.33}, + {"x":10, "y":0}, + {"x":11, "y":0.33}, + {"x":12, "y":0.67}, + {"x":13, "y":0.67}, + + {"x":0, "y":1.67}, + {"x":1, "y":1.67}, + {"x":2, "y":1.33}, + {"x":3, "y":1}, + {"x":4, "y":1.33}, + {"x":5, "y":1.33}, + {"x":8, "y":1.33}, + {"x":9, "y":1.33}, + {"x":10, "y":1}, + {"x":11, "y":1.33}, + {"x":12, "y":1.67}, + {"x":13, "y":1.67}, + + {"x":0, "y":2.67}, + {"x":1, "y":2.67}, + {"x":2, "y":2.33}, + {"x":3, "y":2}, + {"x":4, "y":2.33}, + {"x":5, "y":2.33}, + {"x":8, "y":2.33}, + {"x":9, "y":2.33}, + {"x":10, "y":2}, + {"x":11, "y":2.33}, + {"x":12, "y":2.67}, + {"x":13, "y":2.67}, + + {"x":0, "y":3.67}, + {"x":1, "y":3.67}, + {"x":2, "y":3.67}, + {"x":3, "y":3.67}, + {"x":4.5, "y":3.42}, + {"x":5.5, "y":3.67}, + {"x":7.5, "y":3.67}, + {"x":8.5, "y":3.42}, + {"x":10, "y":3.67}, + {"x":11, "y":3.67}, + {"x":12, "y":3.67}, + {"x":13, "y":3.67} + ] + } + } +} diff --git a/keyboards/latin47ble/info.json b/keyboards/latin47ble/info.json new file mode 100644 index 0000000000..8755e97f74 --- /dev/null +++ b/keyboards/latin47ble/info.json @@ -0,0 +1,63 @@ +{ + "keyboard_name": "Latin47ble", + "url": "", + "maintainer": "latincompass", + "width": 12, + "height": 4, + "layouts": { + "LAYOUT_planck_mit": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + {"x":4, "y":1}, + {"x":5, "y":1}, + {"x":6, "y":1}, + {"x":7, "y":1}, + {"x":8, "y":1}, + {"x":9, "y":1}, + {"x":10, "y":1}, + {"x":11, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + {"x":3, "y":2}, + {"x":4, "y":2}, + {"x":5, "y":2}, + {"x":6, "y":2}, + {"x":7, "y":2}, + {"x":8, "y":2}, + {"x":9, "y":2}, + {"x":10, "y":2}, + {"x":11, "y":2}, + + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":3}, + {"x":4, "y":3}, + {"x":5, "y":3, "w":2}, + {"x":7, "y":3}, + {"x":8, "y":3}, + {"x":9, "y":3}, + {"x":10, "y":3}, + {"x":11, "y":3} + ] + } + } +} diff --git a/keyboards/latin64ble/info.json b/keyboards/latin64ble/info.json new file mode 100644 index 0000000000..de34b2bd17 --- /dev/null +++ b/keyboards/latin64ble/info.json @@ -0,0 +1,81 @@ +{ + "keyboard_name": "Latin64ble", + "url": "", + "maintainer": "latincompass", + "width": 15, + "height": 5, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.5, "y":1, "w":1.5}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + + {"x":0, "y":3, "w":2}, + {"x":2, "y":3}, + {"x":3, "y":3}, + {"x":4, "y":3}, + {"x":5, "y":3}, + {"x":6, "y":3}, + {"x":7, "y":3}, + {"x":8, "y":3}, + {"x":9, "y":3}, + {"x":10, "y":3}, + {"x":11, "y":3}, + {"x":12, "y":3}, + {"x":13, "y":3}, + {"x":14, "y":3}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4}, + {"x":11, "y":4}, + {"x":12, "y":4}, + {"x":13, "y":4}, + {"x":14, "y":4} + ] + } + } +} diff --git a/keyboards/launchpad/rev1/info.json b/keyboards/launchpad/rev1/info.json new file mode 100644 index 0000000000..f12eaba42d --- /dev/null +++ b/keyboards/launchpad/rev1/info.json @@ -0,0 +1,24 @@ +{ + "keyboard_name": "Launch Pad rev1", + "url": "", + "maintainer": "qmk", + "width": 2, + "height": 4, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":2}, + + {"x":0, "y":3}, + {"x":1, "y":3} + ] + } + } +} diff --git a/keyboards/lets_split_eh/eh/info.json b/keyboards/lets_split_eh/eh/info.json new file mode 100644 index 0000000000..f96477e6ee --- /dev/null +++ b/keyboards/lets_split_eh/eh/info.json @@ -0,0 +1,64 @@ +{ + "keyboard_name": "Let's Split", + "url": "", + "maintainer": "qmk", + "width": 13, + "height": 4, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + {"x":4, "y":1}, + {"x":5, "y":1}, + {"x":7, "y":1}, + {"x":8, "y":1}, + {"x":9, "y":1}, + {"x":10, "y":1}, + {"x":11, "y":1}, + {"x":12, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + {"x":3, "y":2}, + {"x":4, "y":2}, + {"x":5, "y":2}, + {"x":7, "y":2}, + {"x":8, "y":2}, + {"x":9, "y":2}, + {"x":10, "y":2}, + {"x":11, "y":2}, + {"x":12, "y":2}, + + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":3}, + {"x":4, "y":3}, + {"x":5, "y":3}, + {"x":7, "y":3}, + {"x":8, "y":3}, + {"x":9, "y":3}, + {"x":10, "y":3}, + {"x":11, "y":3}, + {"x":12, "y":3} + ] + } + } +} diff --git a/keyboards/mechmini/v1/info.json b/keyboards/mechmini/v1/info.json new file mode 100644 index 0000000000..d99f360942 --- /dev/null +++ b/keyboards/mechmini/v1/info.json @@ -0,0 +1,58 @@ +{ + "keyboard_name": "MechMini", + "url": "", + "maintainer": "qmk", + "width": 12, + "height": 4, + "layouts": { + "LAYOUT_split_space": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + + {"x":0, "y":1, "w":1.25}, + {"x":1.25, "y":1}, + {"x":2.25, "y":1}, + {"x":3.25, "y":1}, + {"x":4.25, "y":1}, + {"x":5.25, "y":1}, + {"x":6.25, "y":1}, + {"x":7.25, "y":1}, + {"x":8.25, "y":1}, + {"x":9.25, "y":1}, + {"x":10.25, "y":1, "w":1.75}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2, "w":1.25}, + {"x":11, "y":2}, + + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3, "w":1.25}, + {"x":3.5, "y":3, "w":2.75}, + {"x":6.25, "y":3, "w":2.25}, + {"x":8.5, "y":3, "w":1.25}, + {"x":9.75, "y":3}, + {"x":10.75, "y":3, "w":1.25} + ] + } + } +} diff --git a/keyboards/meira/info.json b/keyboards/meira/info.json new file mode 100644 index 0000000000..ea48f0df19 --- /dev/null +++ b/keyboards/meira/info.json @@ -0,0 +1,64 @@ +{ + "keyboard_name": "Meira", + "url": "", + "maintainer": "colemarkham", + "width": 12, + "height": 4, + "layouts": { + "LAYOUT_ortho_4x12": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + {"x":4, "y":1}, + {"x":5, "y":1}, + {"x":6, "y":1}, + {"x":7, "y":1}, + {"x":8, "y":1}, + {"x":9, "y":1}, + {"x":10, "y":1}, + {"x":11, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + {"x":3, "y":2}, + {"x":4, "y":2}, + {"x":5, "y":2}, + {"x":6, "y":2}, + {"x":7, "y":2}, + {"x":8, "y":2}, + {"x":9, "y":2}, + {"x":10, "y":2}, + {"x":11, "y":2}, + + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":3}, + {"x":4, "y":3}, + {"x":5, "y":3}, + {"x":6, "y":3}, + {"x":7, "y":3}, + {"x":8, "y":3}, + {"x":9, "y":3}, + {"x":10, "y":3}, + {"x":11, "y":3} + ] + } + } +} diff --git a/keyboards/meishi/info.json b/keyboards/meishi/info.json new file mode 100644 index 0000000000..ec2a9cb631 --- /dev/null +++ b/keyboards/meishi/info.json @@ -0,0 +1,17 @@ +{ + "keyboard_name": "Meishi", + "url": "", + "maintainer": "Biacco42", + "width": 4, + "height": 1, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0} + ] + } + } +} diff --git a/keyboards/merge/iso_macro/info.json b/keyboards/merge/iso_macro/info.json new file mode 100644 index 0000000000..6ec535ac2d --- /dev/null +++ b/keyboards/merge/iso_macro/info.json @@ -0,0 +1,23 @@ +{ + "keyboard_name": "ISO Macro", + "url": "", + "maintainer": "duoshock", + "width": 5.75, + "height": 2, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1.25, "y":0}, + {"x":2.25, "y":0}, + {"x":3.25, "y":0}, + {"x":4.5, "y":0, "w":1.25, "h":2}, + + {"x":0, "y":1}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1} + ] + } + } +} diff --git a/keyboards/mschwingen/modelm/info.json b/keyboards/mschwingen/modelm/info.json new file mode 100644 index 0000000000..f4e6ed1c14 --- /dev/null +++ b/keyboards/mschwingen/modelm/info.json @@ -0,0 +1,121 @@ +{ + "keyboard_name": "atmega32U4 board for IBM Model M", + "url": "", + "maintainer": "mschwingen", + "width": 23, + "height": 7, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.5, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15.5, "y":0}, + {"x":16.5, "y":0}, + {"x":17.5, "y":0}, + + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + {"x":3, "y":2}, + {"x":4, "y":2}, + {"x":5, "y":2}, + {"x":6, "y":2}, + {"x":7, "y":2}, + {"x":8, "y":2}, + {"x":9, "y":2}, + {"x":10, "y":2}, + {"x":11, "y":2}, + {"x":12, "y":2}, + {"x":13, "y":2, "w":2}, + {"x":15.5, "y":2}, + {"x":16.5, "y":2}, + {"x":17.5, "y":2}, + {"x":19, "y":2}, + {"x":20, "y":2}, + {"x":21, "y":2}, + {"x":22, "y":2}, + + {"x":0, "y":3, "w":1.5}, + {"x":1.5, "y":3}, + {"x":2.5, "y":3}, + {"x":3.5, "y":3}, + {"x":4.5, "y":3}, + {"x":5.5, "y":3}, + {"x":6.5, "y":3}, + {"x":7.5, "y":3}, + {"x":8.5, "y":3}, + {"x":9.5, "y":3}, + {"x":10.5, "y":3}, + {"x":11.5, "y":3}, + {"x":12.5, "y":3}, + {"x":13.5, "y":3, "w":1.5}, + {"x":15.5, "y":3}, + {"x":16.5, "y":3}, + {"x":17.5, "y":3}, + {"x":19, "y":3}, + {"x":20, "y":3}, + {"x":21, "y":3}, + {"x":22, "y":3, "h":2}, + + {"x":0, "y":4, "w":1.75}, + {"x":1.75, "y":4}, + {"x":2.75, "y":4}, + {"x":3.75, "y":4}, + {"x":4.75, "y":4}, + {"x":5.75, "y":4}, + {"x":6.75, "y":4}, + {"x":7.75, "y":4}, + {"x":8.75, "y":4}, + {"x":9.75, "y":4}, + {"x":10.75, "y":4}, + {"x":11.75, "y":4}, + {"x":12.75, "y":4}, + {"x":13.75, "y":4, "w":1.25}, + {"x":19, "y":4}, + {"x":20, "y":4}, + {"x":21, "y":4}, + + {"x":0, "y":5, "w":1.25}, + {"x":1.25, "y":5}, + {"x":2.25, "y":5}, + {"x":3.25, "y":5}, + {"x":4.25, "y":5}, + {"x":5.25, "y":5}, + {"x":6.25, "y":5}, + {"x":7.25, "y":5}, + {"x":8.25, "y":5}, + {"x":9.25, "y":5}, + {"x":10.25, "y":5}, + {"x":11.25, "y":5}, + {"x":12.25, "y":5, "w":2.75}, + {"x":16.5, "y":5}, + {"x":19, "y":5}, + {"x":20, "y":5}, + {"x":21, "y":5}, + {"x":22, "y":5, "h":2}, + + {"x":0, "y":6, "w":1.5}, + {"x":2.5, "y":6, "w":1.5}, + {"x":4, "y":6, "w":7}, + {"x":11, "y":6, "w":1.5}, + {"x":13.5, "y":6, "w":1.5}, + {"x":15.5, "y":6}, + {"x":16.5, "y":6}, + {"x":17.5, "y":6}, + {"x":19, "y":6, "w":2}, + {"x":21, "y":6} + ] + } + } +} diff --git a/keyboards/pabile/p20/info.json b/keyboards/pabile/p20/info.json new file mode 100644 index 0000000000..d1a63a9439 --- /dev/null +++ b/keyboards/pabile/p20/info.json @@ -0,0 +1,62 @@ +{ + "keyboard_name": "P20", + "url": "", + "maintainer": "pabile", + "width": 4, + "height": 5, + "layouts": { + "LAYOUT_ortho_5x4": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + {"x":3, "y":2}, + + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":3}, + + {"x":0, "y":4}, + {"x":1, "y":4}, + {"x":2, "y":4}, + {"x":3, "y":4} + ] + }, + "LAYOUT_numpad_5x4": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + {"x":3, "y":1, "h":2}, + + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + + {"x":0, "y":4, "w":2}, + {"x":2, "y":4}, + {"x":3, "y":3, "h":2} + ] + } + } +} diff --git a/keyboards/pimentoso/paddino02/rev1/info.json b/keyboards/pimentoso/paddino02/rev1/info.json new file mode 100644 index 0000000000..cac61f71c1 --- /dev/null +++ b/keyboards/pimentoso/paddino02/rev1/info.json @@ -0,0 +1,25 @@ +{ + "keyboard_name": "Paddino02 rev1", + "url": "", + "maintainer": "Pimentoso", + "width": 4, + "height": 3.75, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0.5}, + {"x":1, "y":0.25}, + {"x":2, "y":0}, + {"x":3, "y":0.25}, + + {"x":0, "y":1.5}, + {"x":1, "y":1.25}, + {"x":2, "y":1}, + {"x":3, "y":1.25}, + + {"x":2, "y":2.75}, + {"x":3, "y":2.75} + ] + } + } +} diff --git a/keyboards/pimentoso/paddino02/rev2/left/info.json b/keyboards/pimentoso/paddino02/rev2/left/info.json new file mode 100644 index 0000000000..ab5e306193 --- /dev/null +++ b/keyboards/pimentoso/paddino02/rev2/left/info.json @@ -0,0 +1,25 @@ +{ + "keyboard_name": "Paddino02 rev2 (left)", + "url": "", + "maintainer": "Pimentoso", + "width": 4, + "height": 3.75, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0.5}, + {"x":1, "y":0.25}, + {"x":2, "y":0}, + {"x":3, "y":0.25}, + + {"x":0, "y":1.5}, + {"x":1, "y":1.25}, + {"x":2, "y":1}, + {"x":3, "y":1.25}, + + {"x":2, "y":2.75}, + {"x":3, "y":2.75} + ] + } + } +} diff --git a/keyboards/pimentoso/paddino02/rev2/right/info.json b/keyboards/pimentoso/paddino02/rev2/right/info.json new file mode 100644 index 0000000000..1ad6d32234 --- /dev/null +++ b/keyboards/pimentoso/paddino02/rev2/right/info.json @@ -0,0 +1,25 @@ +{ + "keyboard_name": "Paddino02 rev2 (right)", + "url": "", + "maintainer": "Pimentoso", + "width": 4, + "height": 3.75, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0.25}, + {"x":1, "y":0}, + {"x":2, "y":0.25}, + {"x":3, "y":0.5}, + + {"x":0, "y":1.25}, + {"x":1, "y":1}, + {"x":2, "y":1.25}, + {"x":3, "y":1.5}, + + {"x":0, "y":2.75}, + {"x":1, "y":2.75} + ] + } + } +} diff --git a/keyboards/runner3680/3x6/info.json b/keyboards/runner3680/3x6/info.json new file mode 100644 index 0000000000..b9a802349f --- /dev/null +++ b/keyboards/runner3680/3x6/info.json @@ -0,0 +1,51 @@ +{ + "keyboard_name": "runner3680 3x6", + "url": "", + "maintainer": "omkbd", + "width": 13, + "height": 3, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + {"x":4, "y":1}, + {"x":5, "y":1}, + {"x":7, "y":1}, + {"x":8, "y":1}, + {"x":9, "y":1}, + {"x":10, "y":1}, + {"x":11, "y":1}, + {"x":12, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + {"x":3, "y":2}, + {"x":4, "y":2}, + {"x":5, "y":2}, + {"x":7, "y":2}, + {"x":8, "y":2}, + {"x":9, "y":2}, + {"x":10, "y":2}, + {"x":11, "y":2}, + {"x":12, "y":2} + ] + } + } +} diff --git a/keyboards/runner3680/3x7/info.json b/keyboards/runner3680/3x7/info.json new file mode 100644 index 0000000000..55b9e6dd02 --- /dev/null +++ b/keyboards/runner3680/3x7/info.json @@ -0,0 +1,57 @@ +{ + "keyboard_name": "runner3680 3x7", + "url": "", + "maintainer": "omkbd", + "width": 15, + "height": 3, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + {"x":4, "y":1}, + {"x":5, "y":1}, + {"x":6, "y":1}, + {"x":8, "y":1}, + {"x":9, "y":1}, + {"x":10, "y":1}, + {"x":11, "y":1}, + {"x":12, "y":1}, + {"x":13, "y":1}, + {"x":14, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + {"x":3, "y":2}, + {"x":4, "y":2}, + {"x":5, "y":2}, + {"x":6, "y":2}, + {"x":8, "y":2}, + {"x":9, "y":2}, + {"x":10, "y":2}, + {"x":11, "y":2}, + {"x":12, "y":2}, + {"x":13, "y":2}, + {"x":14, "y":2} + ] + } + } +} diff --git a/keyboards/runner3680/3x8/info.json b/keyboards/runner3680/3x8/info.json new file mode 100644 index 0000000000..55a4da4bcf --- /dev/null +++ b/keyboards/runner3680/3x8/info.json @@ -0,0 +1,63 @@ +{ + "keyboard_name": "runner3680 3x8", + "url": "", + "maintainer": "omkbd", + "width": 17, + "height": 3, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15, "y":0}, + {"x":16, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + {"x":4, "y":1}, + {"x":5, "y":1}, + {"x":6, "y":1}, + {"x":7, "y":1}, + {"x":9, "y":1}, + {"x":10, "y":1}, + {"x":11, "y":1}, + {"x":12, "y":1}, + {"x":13, "y":1}, + {"x":14, "y":1}, + {"x":15, "y":1}, + {"x":16, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + {"x":3, "y":2}, + {"x":4, "y":2}, + {"x":5, "y":2}, + {"x":6, "y":2}, + {"x":7, "y":2}, + {"x":9, "y":2}, + {"x":10, "y":2}, + {"x":11, "y":2}, + {"x":12, "y":2}, + {"x":13, "y":2}, + {"x":14, "y":2}, + {"x":15, "y":2}, + {"x":16, "y":2} + ] + } + } +} diff --git a/keyboards/runner3680/4x6/info.json b/keyboards/runner3680/4x6/info.json new file mode 100644 index 0000000000..2109d01aee --- /dev/null +++ b/keyboards/runner3680/4x6/info.json @@ -0,0 +1,64 @@ +{ + "keyboard_name": "runner3680 4x6", + "url": "", + "maintainer": "omkbd", + "width": 13, + "height": 4, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + {"x":4, "y":1}, + {"x":5, "y":1}, + {"x":7, "y":1}, + {"x":8, "y":1}, + {"x":9, "y":1}, + {"x":10, "y":1}, + {"x":11, "y":1}, + {"x":12, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + {"x":3, "y":2}, + {"x":4, "y":2}, + {"x":5, "y":2}, + {"x":7, "y":2}, + {"x":8, "y":2}, + {"x":9, "y":2}, + {"x":10, "y":2}, + {"x":11, "y":2}, + {"x":12, "y":2}, + + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":3}, + {"x":4, "y":3}, + {"x":5, "y":3}, + {"x":7, "y":3}, + {"x":8, "y":3}, + {"x":9, "y":3}, + {"x":10, "y":3}, + {"x":11, "y":3}, + {"x":12, "y":3} + ] + } + } +} diff --git a/keyboards/runner3680/4x7/info.json b/keyboards/runner3680/4x7/info.json new file mode 100644 index 0000000000..f066d85534 --- /dev/null +++ b/keyboards/runner3680/4x7/info.json @@ -0,0 +1,72 @@ +{ + "keyboard_name": "runner3680 4x7", + "url": "", + "maintainer": "omkbd", + "width": 15, + "height": 4, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + {"x":4, "y":1}, + {"x":5, "y":1}, + {"x":6, "y":1}, + {"x":8, "y":1}, + {"x":9, "y":1}, + {"x":10, "y":1}, + {"x":11, "y":1}, + {"x":12, "y":1}, + {"x":13, "y":1}, + {"x":14, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + {"x":3, "y":2}, + {"x":4, "y":2}, + {"x":5, "y":2}, + {"x":6, "y":2}, + {"x":8, "y":2}, + {"x":9, "y":2}, + {"x":10, "y":2}, + {"x":11, "y":2}, + {"x":12, "y":2}, + {"x":13, "y":2}, + {"x":14, "y":2}, + + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":3}, + {"x":4, "y":3}, + {"x":5, "y":3}, + {"x":6, "y":3}, + {"x":8, "y":3}, + {"x":9, "y":3}, + {"x":10, "y":3}, + {"x":11, "y":3}, + {"x":12, "y":3}, + {"x":13, "y":3}, + {"x":14, "y":3} + ] + } + } +} diff --git a/keyboards/runner3680/4x8/info.json b/keyboards/runner3680/4x8/info.json new file mode 100644 index 0000000000..6440493082 --- /dev/null +++ b/keyboards/runner3680/4x8/info.json @@ -0,0 +1,80 @@ +{ + "keyboard_name": "runner3680 4x8", + "url": "", + "maintainer": "omkbd", + "width": 17, + "height": 4, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15, "y":0}, + {"x":16, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + {"x":4, "y":1}, + {"x":5, "y":1}, + {"x":6, "y":1}, + {"x":7, "y":1}, + {"x":9, "y":1}, + {"x":10, "y":1}, + {"x":11, "y":1}, + {"x":12, "y":1}, + {"x":13, "y":1}, + {"x":14, "y":1}, + {"x":15, "y":1}, + {"x":16, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + {"x":3, "y":2}, + {"x":4, "y":2}, + {"x":5, "y":2}, + {"x":6, "y":2}, + {"x":7, "y":2}, + {"x":9, "y":2}, + {"x":10, "y":2}, + {"x":11, "y":2}, + {"x":12, "y":2}, + {"x":13, "y":2}, + {"x":14, "y":2}, + {"x":15, "y":2}, + {"x":16, "y":2}, + + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":3}, + {"x":4, "y":3}, + {"x":5, "y":3}, + {"x":6, "y":3}, + {"x":7, "y":3}, + {"x":9, "y":3}, + {"x":10, "y":3}, + {"x":11, "y":3}, + {"x":12, "y":3}, + {"x":13, "y":3}, + {"x":14, "y":3}, + {"x":15, "y":3}, + {"x":16, "y":3} + ] + } + } +} diff --git a/keyboards/runner3680/5x6/info.json b/keyboards/runner3680/5x6/info.json new file mode 100644 index 0000000000..5840556ffd --- /dev/null +++ b/keyboards/runner3680/5x6/info.json @@ -0,0 +1,77 @@ +{ + "keyboard_name": "runner3680 5x6", + "url": "", + "maintainer": "omkbd", + "width": 13, + "height": 5, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + {"x":4, "y":1}, + {"x":5, "y":1}, + {"x":7, "y":1}, + {"x":8, "y":1}, + {"x":9, "y":1}, + {"x":10, "y":1}, + {"x":11, "y":1}, + {"x":12, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + {"x":3, "y":2}, + {"x":4, "y":2}, + {"x":5, "y":2}, + {"x":7, "y":2}, + {"x":8, "y":2}, + {"x":9, "y":2}, + {"x":10, "y":2}, + {"x":11, "y":2}, + {"x":12, "y":2}, + + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":3}, + {"x":4, "y":3}, + {"x":5, "y":3}, + {"x":7, "y":3}, + {"x":8, "y":3}, + {"x":9, "y":3}, + {"x":10, "y":3}, + {"x":11, "y":3}, + {"x":12, "y":3}, + + {"x":0, "y":4}, + {"x":1, "y":4}, + {"x":2, "y":4}, + {"x":3, "y":4}, + {"x":4, "y":4}, + {"x":5, "y":4}, + {"x":7, "y":4}, + {"x":8, "y":4}, + {"x":9, "y":4}, + {"x":10, "y":4}, + {"x":11, "y":4}, + {"x":12, "y":4} + ] + } + } +} diff --git a/keyboards/runner3680/5x7/info.json b/keyboards/runner3680/5x7/info.json new file mode 100644 index 0000000000..6ccb246120 --- /dev/null +++ b/keyboards/runner3680/5x7/info.json @@ -0,0 +1,87 @@ +{ + "keyboard_name": "runner3680 5x7", + "url": "", + "maintainer": "omkbd", + "width": 15, + "height": 5, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + {"x":4, "y":1}, + {"x":5, "y":1}, + {"x":6, "y":1}, + {"x":8, "y":1}, + {"x":9, "y":1}, + {"x":10, "y":1}, + {"x":11, "y":1}, + {"x":12, "y":1}, + {"x":13, "y":1}, + {"x":14, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + {"x":3, "y":2}, + {"x":4, "y":2}, + {"x":5, "y":2}, + {"x":6, "y":2}, + {"x":8, "y":2}, + {"x":9, "y":2}, + {"x":10, "y":2}, + {"x":11, "y":2}, + {"x":12, "y":2}, + {"x":13, "y":2}, + {"x":14, "y":2}, + + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":3}, + {"x":4, "y":3}, + {"x":5, "y":3}, + {"x":6, "y":3}, + {"x":8, "y":3}, + {"x":9, "y":3}, + {"x":10, "y":3}, + {"x":11, "y":3}, + {"x":12, "y":3}, + {"x":13, "y":3}, + {"x":14, "y":3}, + + {"x":0, "y":4}, + {"x":1, "y":4}, + {"x":2, "y":4}, + {"x":3, "y":4}, + {"x":4, "y":4}, + {"x":5, "y":4}, + {"x":6, "y":4}, + {"x":8, "y":4}, + {"x":9, "y":4}, + {"x":10, "y":4}, + {"x":11, "y":4}, + {"x":12, "y":4}, + {"x":13, "y":4}, + {"x":14, "y":4} + ] + } + } +} diff --git a/keyboards/runner3680/5x8/info.json b/keyboards/runner3680/5x8/info.json new file mode 100644 index 0000000000..6c2f386feb --- /dev/null +++ b/keyboards/runner3680/5x8/info.json @@ -0,0 +1,97 @@ +{ + "keyboard_name": "runner3680 5x8", + "url": "", + "maintainer": "omkbd", + "width": 17, + "height": 5, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15, "y":0}, + {"x":16, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + {"x":4, "y":1}, + {"x":5, "y":1}, + {"x":6, "y":1}, + {"x":7, "y":1}, + {"x":9, "y":1}, + {"x":10, "y":1}, + {"x":11, "y":1}, + {"x":12, "y":1}, + {"x":13, "y":1}, + {"x":14, "y":1}, + {"x":15, "y":1}, + {"x":16, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + {"x":3, "y":2}, + {"x":4, "y":2}, + {"x":5, "y":2}, + {"x":6, "y":2}, + {"x":7, "y":2}, + {"x":9, "y":2}, + {"x":10, "y":2}, + {"x":11, "y":2}, + {"x":12, "y":2}, + {"x":13, "y":2}, + {"x":14, "y":2}, + {"x":15, "y":2}, + {"x":16, "y":2}, + + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":3}, + {"x":4, "y":3}, + {"x":5, "y":3}, + {"x":6, "y":3}, + {"x":7, "y":3}, + {"x":9, "y":3}, + {"x":10, "y":3}, + {"x":11, "y":3}, + {"x":12, "y":3}, + {"x":13, "y":3}, + {"x":14, "y":3}, + {"x":15, "y":3}, + {"x":16, "y":3}, + + {"x":0, "y":4}, + {"x":1, "y":4}, + {"x":2, "y":4}, + {"x":3, "y":4}, + {"x":4, "y":4}, + {"x":5, "y":4}, + {"x":6, "y":4}, + {"x":7, "y":4}, + {"x":9, "y":4}, + {"x":10, "y":4}, + {"x":11, "y":4}, + {"x":12, "y":4}, + {"x":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4}, + {"x":16, "y":4} + ] + } + } +} diff --git a/keyboards/sck/gtm/info.json b/keyboards/sck/gtm/info.json new file mode 100644 index 0000000000..7b6a6375cb --- /dev/null +++ b/keyboards/sck/gtm/info.json @@ -0,0 +1,25 @@ +{ + "keyboard_name": "Grand Theft Macro Pad", + "url": "", + "maintainer": "jrfhoutx", + "width": 6.5, + "height": 2, + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"K00", "x":0, "y":0}, + {"label":"K01", "x":1, "y":0}, + {"label":"K02", "x":2, "y":0}, + {"label":"K03", "x":3, "y":0}, + {"label":"K15", "x":4, "y":0}, + + {"label":"K10", "x":0, "y":1}, + {"label":"K11", "x":1, "y":1}, + {"label":"K12", "x":2, "y":1}, + {"label":"K13", "x":3, "y":1}, + {"label":"K14", "x":4, "y":1}, + {"label":"K16", "x":5.5, "y":0.5} + ] + } + } +} diff --git a/keyboards/splitish/info.json b/keyboards/splitish/info.json new file mode 100644 index 0000000000..4300950441 --- /dev/null +++ b/keyboards/splitish/info.json @@ -0,0 +1,64 @@ +{ + "keyboard_name": "splitish", + "url": "", + "maintainer": "RSchneyer", + "width": 13, + "height": 4, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + {"x":4, "y":1}, + {"x":5, "y":1}, + {"x":7, "y":1}, + {"x":8, "y":1}, + {"x":9, "y":1}, + {"x":10, "y":1}, + {"x":11, "y":1}, + {"x":12, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + {"x":3, "y":2}, + {"x":4, "y":2}, + {"x":5, "y":2}, + {"x":7, "y":2}, + {"x":8, "y":2}, + {"x":9, "y":2}, + {"x":10, "y":2}, + {"x":11, "y":2}, + {"x":12, "y":2}, + + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":3}, + {"x":4, "y":3}, + {"x":5, "y":3}, + {"x":7, "y":3}, + {"x":8, "y":3}, + {"x":9, "y":3}, + {"x":10, "y":3}, + {"x":11, "y":3}, + {"x":12, "y":3} + ] + } + } +} diff --git a/keyboards/standaside/info.json b/keyboards/standaside/info.json new file mode 100644 index 0000000000..b3be6c39ee --- /dev/null +++ b/keyboards/standaside/info.json @@ -0,0 +1,80 @@ +{ + "keyboard_name": "Stand Aside", + "url": "", + "maintainer": "fateeverywhere", + "width": 16, + "height": 4, + "layouts": { + "LAYOUT_ortho_4x16": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + {"x":4, "y":1}, + {"x":5, "y":1}, + {"x":6, "y":1}, + {"x":7, "y":1}, + {"x":8, "y":1}, + {"x":9, "y":1}, + {"x":10, "y":1}, + {"x":11, "y":1}, + {"x":12, "y":1}, + {"x":13, "y":1}, + {"x":14, "y":1}, + {"x":15, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + {"x":3, "y":2}, + {"x":4, "y":2}, + {"x":5, "y":2}, + {"x":6, "y":2}, + {"x":7, "y":2}, + {"x":8, "y":2}, + {"x":9, "y":2}, + {"x":10, "y":2}, + {"x":11, "y":2}, + {"x":12, "y":2}, + {"x":13, "y":2}, + {"x":14, "y":2}, + {"x":15, "y":2}, + + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":3}, + {"x":4, "y":3}, + {"x":5, "y":3}, + {"x":6, "y":3}, + {"x":7, "y":3}, + {"x":8, "y":3}, + {"x":9, "y":3}, + {"x":10, "y":3}, + {"x":11, "y":3}, + {"x":12, "y":3}, + {"x":13, "y":3}, + {"x":14, "y":3}, + {"x":15, "y":3} + ] + } + } +} diff --git a/keyboards/ungodly/launch_pad/info.json b/keyboards/ungodly/launch_pad/info.json new file mode 100644 index 0000000000..b766c07211 --- /dev/null +++ b/keyboards/ungodly/launch_pad/info.json @@ -0,0 +1,37 @@ +{ + "keyboard_name": "Launch Pad", + "url": "", + "maintainer": "luis-godinez", + "width": 4, + "height": 5, + "layouts": { + "LAYOUT_ortho_5x4": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + {"x":3, "y":2}, + + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":3}, + + {"x":0, "y":4}, + {"x":1, "y":4}, + {"x":2, "y":4}, + {"x":3, "y":4} + ] + } + } +} diff --git a/keyboards/xelus/trinityxttkl/info.json b/keyboards/xelus/trinityxttkl/info.json new file mode 100644 index 0000000000..de10202e7f --- /dev/null +++ b/keyboards/xelus/trinityxttkl/info.json @@ -0,0 +1,118 @@ +{ + "keyboard_name": "Trinity XT TKL", + "url": "", + "maintainer": "Xelus22", + "width": 20.5, + "height": 6.25, + "layouts": { + "LAYOUT_all": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2.25, "y":0}, + {"x":4.25, "y":0}, + {"x":5.25, "y":0}, + {"x":6.25, "y":0}, + {"x":7.25, "y":0}, + {"x":8.75, "y":0}, + {"x":9.75, "y":0}, + {"x":10.75, "y":0}, + {"x":11.75, "y":0}, + {"x":13.25, "y":0}, + {"x":14.25, "y":0}, + {"x":15.25, "y":0}, + {"x":16.25, "y":0}, + {"x":17.5, "y":0}, + {"x":18.5, "y":0}, + {"x":19.5, "y":0}, + + {"x":0, "y":1.25}, + {"x":1, "y":1.25}, + {"x":2.25, "y":1.25}, + {"x":3.25, "y":1.25}, + {"x":4.25, "y":1.25}, + {"x":5.25, "y":1.25}, + {"x":6.25, "y":1.25}, + {"x":7.25, "y":1.25}, + {"x":8.25, "y":1.25}, + {"x":9.25, "y":1.25}, + {"x":10.25, "y":1.25}, + {"x":11.25, "y":1.25}, + {"x":12.25, "y":1.25}, + {"x":13.25, "y":1.25}, + {"x":14.25, "y":1.25}, + {"x":15.25, "y":1.25}, + {"x":16.25, "y":1.25}, + {"x":17.5, "y":1.25}, + {"x":18.5, "y":1.25}, + {"x":19.5, "y":1.25}, + + {"x":0, "y":2.25}, + {"x":1, "y":2.25}, + {"x":2.25, "y":2.25, "w":1.5}, + {"x":3.75, "y":2.25}, + {"x":4.75, "y":2.25}, + {"x":5.75, "y":2.25}, + {"x":6.75, "y":2.25}, + {"x":7.75, "y":2.25}, + {"x":8.75, "y":2.25}, + {"x":9.75, "y":2.25}, + {"x":10.75, "y":2.25}, + {"x":11.75, "y":2.25}, + {"x":12.75, "y":2.25}, + {"x":13.75, "y":2.25}, + {"x":14.75, "y":2.25}, + {"x":15.75, "y":2.25, "w":1.5}, + {"x":17.5, "y":2.25}, + {"x":18.5, "y":2.25}, + {"x":19.5, "y":2.25}, + + {"x":0, "y":3.25}, + {"x":1, "y":3.25}, + {"x":2.25, "y":3.25, "w":1.75}, + {"x":4, "y":3.25}, + {"x":5, "y":3.25}, + {"x":6, "y":3.25}, + {"x":7, "y":3.25}, + {"x":8, "y":3.25}, + {"x":9, "y":3.25}, + {"x":10, "y":3.25}, + {"x":11, "y":3.25}, + {"x":12, "y":3.25}, + {"x":13, "y":3.25}, + {"x":14, "y":3.25}, + {"x":15, "y":3.25, "w":2.25}, + + {"x":0, "y":4.25}, + {"x":1, "y":4.25}, + {"x":2.25, "y":4.25, "w":2.25}, + {"x":4.5, "y":4.25}, + {"x":5.5, "y":4.25}, + {"x":6.5, "y":4.25}, + {"x":7.5, "y":4.25}, + {"x":8.5, "y":4.25}, + {"x":9.5, "y":4.25}, + {"x":10.5, "y":4.25}, + {"x":11.5, "y":4.25}, + {"x":12.5, "y":4.25}, + {"x":13.5, "y":4.25}, + {"x":14.5, "y":4.25, "w":1.75}, + {"x":16.25, "y":4.25}, + {"x":18.5, "y":4.25}, + + {"x":0, "y":5.25}, + {"x":1, "y":5.25}, + {"x":2.25, "y":5.25, "w":1.5}, + {"x":4.75, "y":5.25, "w":1.5}, + {"x":6.25, "y":5.25, "w":3}, + {"x":9.25, "y":5.25}, + {"x":10.25, "y":5.25, "w":3}, + {"x":13.25, "y":5.25, "w":1.5}, + {"x":15.75, "y":5.25, "w":1.5}, + {"x":17.5, "y":5.25}, + {"x":18.5, "y":5.25}, + {"x":19.5, "y":5.25} + ] + } + } +} From 52b7ebd6be2532fc41ef1593be8e22c5f39d9a1e Mon Sep 17 00:00:00 2001 From: James Young <18669334+noroadsleft@users.noreply.github.com> Date: Mon, 15 Mar 2021 01:25:00 -0700 Subject: [PATCH 061/613] M10-A refactor (#12242) --- keyboards/m10a/config.h | 38 ++++---- keyboards/m10a/info.json | 26 +++++ keyboards/m10a/keymaps/default/keymap.c | 120 ++++++++++++++++++------ keyboards/m10a/keymaps/via/config.h | 20 +++- keyboards/m10a/keymaps/via/keymap.c | 120 ++++++++++++++++++------ keyboards/m10a/m10a.c | 22 ++++- keyboards/m10a/m10a.h | 29 ++++-- keyboards/m10a/readme.md | 18 +++- keyboards/m10a/rules.mk | 32 +++---- 9 files changed, 311 insertions(+), 114 deletions(-) create mode 100644 keyboards/m10a/info.json diff --git a/keyboards/m10a/config.h b/keyboards/m10a/config.h index 6ece2131b9..01f9d0d0a3 100644 --- a/keyboards/m10a/config.h +++ b/keyboards/m10a/config.h @@ -1,22 +1,22 @@ -/* -Copyright 2012 Jun Wako +/* Copyright + * 2017 Josh Black (@consolenaut) + * 2021 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -72,5 +72,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -#endif diff --git a/keyboards/m10a/info.json b/keyboards/m10a/info.json new file mode 100644 index 0000000000..7692259297 --- /dev/null +++ b/keyboards/m10a/info.json @@ -0,0 +1,26 @@ +{ + "keyboard_name": "Rama Works X Machine Industries M10-A Macropad", + "url": "", + "maintainer": "qmk", + "width": 3, + "height": 4, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + + {"x":1, "y":3, "w":2} + ] + } + } +} diff --git a/keyboards/m10a/keymaps/default/keymap.c b/keyboards/m10a/keymaps/default/keymap.c index 9c9f4c6884..4fb8eb584b 100644 --- a/keyboards/m10a/keymaps/default/keymap.c +++ b/keyboards/m10a/keymaps/default/keymap.c @@ -1,39 +1,101 @@ +/* Copyright + * 2017 Josh Black (@consolenaut) + * 2021 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #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 layers { - _LAYER0, - _LAYER1, - _LAYER2, - _LAYER3, - _LAYER4, - _LAYER5, - _LAYER6, - _LAYER7, - _LAYER8, - _LAYER9 +enum layer_names { + _LAYER0, + _LAYER1, + _LAYER2, + _LAYER3, + _LAYER4, + _LAYER5, + _LAYER6, + _LAYER7, + _LAYER8, + _LAYER9 }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_LAYER0] = LAYOUT(KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_NO, KC_NO, KC_J), - [_LAYER1] = LAYOUT(KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_NO, KC_NO, KC_J), - [_LAYER2] = LAYOUT(KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_NO, KC_NO, KC_J), - [_LAYER3] = LAYOUT(KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_NO, KC_NO, KC_J), - [_LAYER4] = LAYOUT(KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_NO, KC_NO, KC_J), - [_LAYER5] = LAYOUT(KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_NO, KC_NO, KC_J), - [_LAYER6] = LAYOUT(KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_NO, KC_NO, KC_J), - [_LAYER7] = LAYOUT(KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_NO, KC_NO, KC_J), - [_LAYER8] = LAYOUT(KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_NO, KC_NO, KC_J), - [_LAYER9] = LAYOUT(KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_NO, KC_NO, KC_J) + [_LAYER0] = LAYOUT( + KC_A, KC_B, KC_C, + KC_D, KC_E, KC_F, + KC_G, KC_H, KC_I, + KC_J + ), + [_LAYER1] = LAYOUT( + KC_A, KC_B, KC_C, + KC_D, KC_E, KC_F, + KC_G, KC_H, KC_I, + KC_J + ), + [_LAYER2] = LAYOUT( + KC_A, KC_B, KC_C, + KC_D, KC_E, KC_F, + KC_G, KC_H, KC_I, + KC_J + ), + [_LAYER3] = LAYOUT( + KC_A, KC_B, KC_C, + KC_D, KC_E, KC_F, + KC_G, KC_H, KC_I, + KC_J + ), + [_LAYER4] = LAYOUT( + KC_A, KC_B, KC_C, + KC_D, KC_E, KC_F, + KC_G, KC_H, KC_I, + KC_J + ), + [_LAYER5] = LAYOUT( + KC_A, KC_B, KC_C, + KC_D, KC_E, KC_F, + KC_G, KC_H, KC_I, + KC_J + ), + [_LAYER6] = LAYOUT( + KC_A, KC_B, KC_C, + KC_D, KC_E, KC_F, + KC_G, KC_H, KC_I, + KC_J + ), + [_LAYER7] = LAYOUT( + KC_A, KC_B, KC_C, + KC_D, KC_E, KC_F, + KC_G, KC_H, KC_I, + KC_J + ), + [_LAYER8] = LAYOUT( + KC_A, KC_B, KC_C, + KC_D, KC_E, KC_F, + KC_G, KC_H, KC_I, + KC_J + ), + [_LAYER9] = LAYOUT( + KC_A, KC_B, KC_C, + KC_D, KC_E, KC_F, + KC_G, KC_H, KC_I, + KC_J + ) }; void matrix_init_user(void) { - #ifdef BACKLIGHT_ENABLE +#ifdef BACKLIGHT_ENABLE backlight_level(0); - #endif +#endif } diff --git a/keyboards/m10a/keymaps/via/config.h b/keyboards/m10a/keymaps/via/config.h index 79248f04f7..cd097f8daf 100644 --- a/keyboards/m10a/keymaps/via/config.h +++ b/keyboards/m10a/keymaps/via/config.h @@ -1,4 +1,22 @@ +/* Copyright + * 2020 Jason Williams (Wilba) + * 2021 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #pragma once // Keep default crazy number of layers -#define DYNAMIC_KEYMAP_LAYER_COUNT 10 \ No newline at end of file +#define DYNAMIC_KEYMAP_LAYER_COUNT 10 diff --git a/keyboards/m10a/keymaps/via/keymap.c b/keyboards/m10a/keymaps/via/keymap.c index 9c9f4c6884..59cc38ee88 100644 --- a/keyboards/m10a/keymaps/via/keymap.c +++ b/keyboards/m10a/keymaps/via/keymap.c @@ -1,39 +1,101 @@ +/* Copyright + * 2020 Jason Williams (Wilba) + * 2021 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #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 layers { - _LAYER0, - _LAYER1, - _LAYER2, - _LAYER3, - _LAYER4, - _LAYER5, - _LAYER6, - _LAYER7, - _LAYER8, - _LAYER9 +enum layer_names { + _LAYER0, + _LAYER1, + _LAYER2, + _LAYER3, + _LAYER4, + _LAYER5, + _LAYER6, + _LAYER7, + _LAYER8, + _LAYER9 }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_LAYER0] = LAYOUT(KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_NO, KC_NO, KC_J), - [_LAYER1] = LAYOUT(KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_NO, KC_NO, KC_J), - [_LAYER2] = LAYOUT(KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_NO, KC_NO, KC_J), - [_LAYER3] = LAYOUT(KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_NO, KC_NO, KC_J), - [_LAYER4] = LAYOUT(KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_NO, KC_NO, KC_J), - [_LAYER5] = LAYOUT(KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_NO, KC_NO, KC_J), - [_LAYER6] = LAYOUT(KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_NO, KC_NO, KC_J), - [_LAYER7] = LAYOUT(KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_NO, KC_NO, KC_J), - [_LAYER8] = LAYOUT(KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_NO, KC_NO, KC_J), - [_LAYER9] = LAYOUT(KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_NO, KC_NO, KC_J) + [_LAYER0] = LAYOUT( + KC_A, KC_B, KC_C, + KC_D, KC_E, KC_F, + KC_G, KC_H, KC_I, + KC_J + ), + [_LAYER1] = LAYOUT( + KC_A, KC_B, KC_C, + KC_D, KC_E, KC_F, + KC_G, KC_H, KC_I, + KC_J + ), + [_LAYER2] = LAYOUT( + KC_A, KC_B, KC_C, + KC_D, KC_E, KC_F, + KC_G, KC_H, KC_I, + KC_J + ), + [_LAYER3] = LAYOUT( + KC_A, KC_B, KC_C, + KC_D, KC_E, KC_F, + KC_G, KC_H, KC_I, + KC_J + ), + [_LAYER4] = LAYOUT( + KC_A, KC_B, KC_C, + KC_D, KC_E, KC_F, + KC_G, KC_H, KC_I, + KC_J + ), + [_LAYER5] = LAYOUT( + KC_A, KC_B, KC_C, + KC_D, KC_E, KC_F, + KC_G, KC_H, KC_I, + KC_J + ), + [_LAYER6] = LAYOUT( + KC_A, KC_B, KC_C, + KC_D, KC_E, KC_F, + KC_G, KC_H, KC_I, + KC_J + ), + [_LAYER7] = LAYOUT( + KC_A, KC_B, KC_C, + KC_D, KC_E, KC_F, + KC_G, KC_H, KC_I, + KC_J + ), + [_LAYER8] = LAYOUT( + KC_A, KC_B, KC_C, + KC_D, KC_E, KC_F, + KC_G, KC_H, KC_I, + KC_J + ), + [_LAYER9] = LAYOUT( + KC_A, KC_B, KC_C, + KC_D, KC_E, KC_F, + KC_G, KC_H, KC_I, + KC_J + ) }; void matrix_init_user(void) { - #ifdef BACKLIGHT_ENABLE +#ifdef BACKLIGHT_ENABLE backlight_level(0); - #endif +#endif } diff --git a/keyboards/m10a/m10a.c b/keyboards/m10a/m10a.c index 9cc7f069ae..d9e7503a48 100644 --- a/keyboards/m10a/m10a.c +++ b/keyboards/m10a/m10a.c @@ -1,5 +1,19 @@ -#include "m10a.h" +/* Copyright + * 2017 Josh Black (@consolenaut) + * 2021 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ -void matrix_init_kb(void) { - matrix_init_user(); -} \ No newline at end of file +#include "m10a.h" diff --git a/keyboards/m10a/m10a.h b/keyboards/m10a/m10a.h index a62913aa2c..2eb14b7a7f 100644 --- a/keyboards/m10a/m10a.h +++ b/keyboards/m10a/m10a.h @@ -1,19 +1,36 @@ -#ifndef M10A_H -#define M10A_H +/* Copyright + * 2017 Josh Black (@consolenaut) + * 2021 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once #include "quantum.h" +#define ___ KC_NO + #define LAYOUT( \ k00, k01, k02, \ k10, k11, k12, \ k20, k21, k22, \ - k30, k31, k32 \ + k32 \ ) \ { \ { k00, k01, k02 }, \ { k10, k11, k12 }, \ { k20, k21, k22 }, \ - { k30, k31, k32 } \ + { ___, ___, k32 } \ } - -#endif diff --git a/keyboards/m10a/readme.md b/keyboards/m10a/readme.md index 7123e6462e..3918ad21bb 100644 --- a/keyboards/m10a/readme.md +++ b/keyboards/m10a/readme.md @@ -1,13 +1,21 @@ # Rama Works X Machine Industries M10-A Macropad -Firmware for custom macropad PCB +![Rama Works X Machine Industries M10-A Macropad](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/m10a/image-asset9_640.jpg) -Keyboard Maintainer: QMK Community -Hardware Supported: Rama Works M10-A -Hardware Availability: [Rama Works](https://rama.works/m10-a) +A 10-key macro pad with support for single-color LED backlighting in a milled aluminum case. + +* Keyboard Maintainer: QMK Community +* Hardware Supported: Rama Works M10-A +* Hardware Availability: [Rama Works](https://rama.works/m10-a) Make example for this keyboard (after setting up your build environment): make m10a:default -See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. +Flashing example for this keyboard: + + make m10a:default:flash + +To reset the board into bootloader mode, tap the Reset switch mounted on the top side of the PCB, beneath the 2u keycap. + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/m10a/rules.mk b/keyboards/m10a/rules.mk index 71ef0ed649..0f8368e637 100644 --- a/keyboards/m10a/rules.mk +++ b/keyboards/m10a/rules.mk @@ -2,32 +2,24 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options -# change to "no" to disable the options, or define them in the Makefile in -# the appropriate keymap folder that will get included automatically +# change yes to no to disable # BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = yes # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -API_SYSEX_ENABLE = yes - +COMMAND_ENABLE = no # Commands for debug and configuration # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output + +UNICODE_ENABLE = yes # Unicode +API_SYSEX_ENABLE = yes From 926389f3a700ac2cde66b1b982525cd1e7b1a200 Mon Sep 17 00:00:00 2001 From: vattern Date: Mon, 15 Mar 2021 17:42:09 +0000 Subject: [PATCH 062/613] Keyboard/grandiceps (#11933) * Add Grandiceps keyboard * Fix info.json * Fix typo * Fix typo * cleanup format * move mcu files to root * Updated with PR changes * Apply suggestions from code review Co-authored-by: Ryan * Apply suggestions from code review Co-authored-by: Ryan * PR issues for chibios confmigrate * PR Changes Co-authored-by: Thys de Wet Co-authored-by: Ryan --- keyboards/tkw/grandiceps/config.h | 68 +++ keyboards/tkw/grandiceps/grandiceps.c | 16 + keyboards/tkw/grandiceps/grandiceps.h | 38 ++ keyboards/tkw/grandiceps/halconf.h | 31 ++ keyboards/tkw/grandiceps/info.json | 19 + .../tkw/grandiceps/keymaps/default/keymap.c | 466 ++++++++++++++++++ .../tkw/grandiceps/keymaps/default/readme.md | 13 + keyboards/tkw/grandiceps/mcuconf.h | 34 ++ keyboards/tkw/grandiceps/readme.md | 19 + keyboards/tkw/grandiceps/rules.mk | 30 ++ 10 files changed, 734 insertions(+) create mode 100644 keyboards/tkw/grandiceps/config.h create mode 100644 keyboards/tkw/grandiceps/grandiceps.c create mode 100644 keyboards/tkw/grandiceps/grandiceps.h create mode 100644 keyboards/tkw/grandiceps/halconf.h create mode 100644 keyboards/tkw/grandiceps/info.json create mode 100644 keyboards/tkw/grandiceps/keymaps/default/keymap.c create mode 100644 keyboards/tkw/grandiceps/keymaps/default/readme.md create mode 100644 keyboards/tkw/grandiceps/mcuconf.h create mode 100644 keyboards/tkw/grandiceps/readme.md create mode 100644 keyboards/tkw/grandiceps/rules.mk diff --git a/keyboards/tkw/grandiceps/config.h b/keyboards/tkw/grandiceps/config.h new file mode 100644 index 0000000000..44ea8d6994 --- /dev/null +++ b/keyboards/tkw/grandiceps/config.h @@ -0,0 +1,68 @@ +/* Copyright 2020 Thys de Wet + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "config_common.h" + + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x7812 +#define DEVICE_VER 0x0001 +#define MANUFACTURER TKW +#define PRODUCT Grandiceps Split + +/* key matrix size */ +#define MATRIX_ROWS 10 +#define MATRIX_COLS 6 + + + +#define MATRIX_COL_PINS { B0, A7, A3, A5, A4, A2 } +#define MATRIX_ROW_PINS { B12, A6, B13, B9, B8 } +#define MATRIX_COL_PINS_RIGHT { B0, A7, A3, A5, A4, A2 } +#define MATRIX_ROW_PINS_RIGHT { B12, A6, B13, B9, B8 } + +#define DIODE_DIRECTION COL2ROW + +#define SOFT_SERIAL_PIN A15 +#define SELECT_SOFT_SERIAL_SPEED 1 + +#define MATRIX_IO_DELAY 5 +#define TAP_CODE_DELAY 10 + +#define ENCODERS_PAD_A { B14 } +#define ENCODERS_PAD_B { B15 } + +#define RGB_DI_PIN B1 +#define RGBLED_NUM 16 +#define RGBLED_SPLIT { 8,8 } +#define RGBLIGHT_LIMIT_VAL 120 +#define RGBLIGHT_ANIMATIONS + +#define WS2812_PWM_DRIVER PWMD3 +#define WS2812_PWM_CHANNEL 4 +#define WS2812_PWM_PAL_MODE 2 +#define WS2812_DMA_STREAM STM32_DMA1_STREAM2 +#define WS2812_DMA_CHANNEL 5 + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION diff --git a/keyboards/tkw/grandiceps/grandiceps.c b/keyboards/tkw/grandiceps/grandiceps.c new file mode 100644 index 0000000000..bfb67dfc2c --- /dev/null +++ b/keyboards/tkw/grandiceps/grandiceps.c @@ -0,0 +1,16 @@ +/* Copyright 2020 Thys de Wet + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "grandiceps.h" diff --git a/keyboards/tkw/grandiceps/grandiceps.h b/keyboards/tkw/grandiceps/grandiceps.h new file mode 100644 index 0000000000..ecb92fd39a --- /dev/null +++ b/keyboards/tkw/grandiceps/grandiceps.h @@ -0,0 +1,38 @@ +/* Copyright 2020 Thys de Wet + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#define LAYOUT( \ + L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \ + L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ + L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \ + L30, L31, L32, L33, L34, L35, L45, R40, R30, R31, R32, R33, R34, R35, \ + L40, L41, L42, L43, L44, R41, R42, R43, R44, R45 \ + ) \ + { \ + { L00, L01, L02, L03, L04, L05 }, \ + { L10, L11, L12, L13, L14, L15 }, \ + { L20, L21, L22, L23, L24, L25 }, \ + { L30, L31, L32, L33, L34, L35 }, \ + { L40, L41, L42, L43, L44, L45 }, \ + { R05, R04, R03, R02, R01, R00 }, \ + { R15, R14, R13, R12, R11, R10 }, \ + { R25, R24, R23, R22, R21, R20 }, \ + { R35, R34, R33, R32, R31, R30 }, \ + { R45, R44, R43, R42, R41, R40 } \ + } diff --git a/keyboards/tkw/grandiceps/halconf.h b/keyboards/tkw/grandiceps/halconf.h new file mode 100644 index 0000000000..481e7f75ab --- /dev/null +++ b/keyboards/tkw/grandiceps/halconf.h @@ -0,0 +1,31 @@ +/* Copyright 2020 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confupdate -i keyboards/tkw/grandiceps/halconf.h -r platforms/chibios/BLACKPILL_STM32_F411/configs/halconf.h` + */ + +#pragma once + +#define HAL_USE_I2C TRUE + +#define HAL_USE_PWM TRUE + +#define HAL_USE_SERIAL TRUE + +#include_next + diff --git a/keyboards/tkw/grandiceps/info.json b/keyboards/tkw/grandiceps/info.json new file mode 100644 index 0000000000..4f63ae1eb1 --- /dev/null +++ b/keyboards/tkw/grandiceps/info.json @@ -0,0 +1,19 @@ +{ + "keyboard_name": "grandiceps", + "url": "https://github.com/vattern/grandiceps", + "maintainer": "vattern", + "manufacturer": "tkw", + "width": 16.5, + "height": 5.25, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0.5}, {"x":1, "y":0.375}, {"x":2, "y":0.125}, {"x":3, "y":0}, {"x":4, "y":0.125}, {"x":5, "y":0.25}, {"x":10.5, "y":0.25}, {"x":11.5, "y":0.125}, {"x":12.5, "y":0}, {"x":13.5, "y":0.125}, {"x":14.5, "y":0.375}, {"x":15.5, "y":0.5}, + {"x":0, "y":1.5}, {"x":1, "y":1.375}, {"x":2, "y":1.125}, {"x":3, "y":1}, {"x":4, "y":1.125}, {"x":5, "y":1.25}, {"x":10.5, "y":1.25}, {"x":11.5, "y":1.125}, {"x":12.5, "y":1}, {"x":13.5, "y":1.125}, {"x":14.5, "y":1.375}, {"x":15.5, "y":1.5}, + {"x":0, "y":2.5}, {"x":1, "y":2.375}, {"x":2, "y":2.125}, {"x":3, "y":2}, {"x":4, "y":2.125}, {"x":5, "y":2.25}, {"x":10.5, "y":2.25}, {"x":11.5, "y":2.125}, {"x":12.5, "y":2}, {"x":13.5, "y":2.125}, {"x":14.5, "y":2.375}, {"x":15.5, "y":2.5}, + {"x":0, "y":3.5}, {"x":1, "y":3.375}, {"x":2, "y":3.125}, {"x":3, "y":3}, {"x":4, "y":3.125}, {"x":5, "y":3.25}, {"x":6, "y":2.75}, {"x":9.5, "y":2.75}, {"x":10.5, "y":3.25}, {"x":11.5, "y":3.125}, {"x":12.5, "y":3}, {"x":13.5, "y":3.125}, {"x":14.5, "y":3.375}, {"x":15.5, "y":3.5}, + {"x":1, "y":4.375}, {"x":2, "y":4.125}, {"x":3, "y":4.15}, {"x":4.5, "y":4.25}, {"x":6, "y":4.25, "h":1.5}, {"x":9.5, "y":4.25, "h":1.5}, {"x":11, "y":4.25}, {"x":12.5, "y":4.15}, {"x":13.5, "y":4.125}, {"x":14.5, "y":4.375} + ] + } + } +} diff --git a/keyboards/tkw/grandiceps/keymaps/default/keymap.c b/keyboards/tkw/grandiceps/keymaps/default/keymap.c new file mode 100644 index 0000000000..b4cf6ed025 --- /dev/null +++ b/keyboards/tkw/grandiceps/keymaps/default/keymap.c @@ -0,0 +1,466 @@ +/* Copyright 2020 Thys de Wet + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +//This keymap is HEAVILY inspired by sofle + +enum grandiceps_layers { + _QWERTY, + _COLEMAK, + _LOWER, + _RAISE, + _ADJUST, +}; + +enum custom_keycodes { + KC_QWERTY = SAFE_RANGE, + KC_COLEMAK, + KC_LOWER, + KC_RAISE, + KC_ADJUST, + KC_PRVWD, + KC_NXTWD, + KC_LSTRT, + KC_LEND, + KC_DLINE +}; + + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* + * QWERTY + * ,-----------------------------------------. ,-----------------------------------------. + * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | - | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | DEL | Q | W | E | R | T | | Y | U | I | O | P | Bspc | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Tab | A | S | D | F | G |-------. ,-------| H | J | K | L | ; | ' | + * |------+------+------+------+------+------| | | |------+------+------+------+------+------| + * |LShift| Z | X | C | V | B |-------| |-------| N | M | , | . | / |RShift| + * `-----------------------------------------/ / \ \-----------------------------------------' + * | LGUI | LAlt | LCTR |LOWER | /Space / \Enter \ |RAISE | RCTR | RAlt | RGUI | + * | | | | |/ / \ \ | | | | | + * `----------------------------------' '------''---------------------------' + */ + +[_QWERTY] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + KC_DEL, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, XXXXXXX,KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LGUI,KC_LALT,KC_LCTRL, KC_LOWER, KC_SPC, KC_ENT, KC_RAISE, KC_RCTRL, KC_RALT, KC_RGUI +), +/* + * COLEMAK + * ,-----------------------------------------. ,-----------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ` | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | ESC | Q | W | F | P | G | | J | L | U | Y | ; | Bspc | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | TAB | A | R | S | T | D |-------. ,-------| H | N | E | I | O | ' | + * |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------| + * |LShift| Z | X | C | V | B |-------| |-------| K | M | , | . | / |RShift| + * `-----------------------------------------/ / \ \-----------------------------------------' + * | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | RGUI | + * | | | | |/ / \ \ | | | | | + * `----------------------------------' '------''---------------------------' + */ + +[_COLEMAK] = LAYOUT( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_GRV, + KC_ESC, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, + KC_TAB, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, XXXXXXX,KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LGUI,KC_LALT,KC_LCTRL,KC_LOWER, KC_ENT, KC_SPC, KC_RAISE, KC_RCTRL, KC_RALT, KC_RGUI +), +/* LOWER + * ,-----------------------------------------. ,-----------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | F12 | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Tab | ! | @ | # | $ | % |-------. ,-------| ^ | & | * | ( | ) | | | + * |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------| + * | Shift| = | - | + | { | } |-------| |-------| [ | ] | ; | : | \ | Shift| + * `-----------------------------------------/ / \ \-----------------------------------------' + * | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | RGUI | + * | | | | |/ / \ \ | | | | | + * `----------------------------------' '------''---------------------------' + */ +[_LOWER] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_F12, + _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PIPE, + _______, KC_EQL, KC_MINS, KC_PLUS, KC_LCBR, KC_RCBR, _______, _______, KC_LBRC, KC_RBRC, KC_SCLN, KC_COLN, KC_BSLS, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +), +/* RAISE + * ,----------------------------------------. ,-----------------------------------------. + * | | | | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Esc | Ins | Pscr | Menu | | | | | PWrd | Up | NWrd | DLine| Bspc | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Tab | LAt | LCtl |LShift| | Caps |-------. ,-------| | Left | Down | Rigth| Del | Bspc | + * |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------| + * |Shift | Undo | Cut | Copy | Paste| |-------| |-------| | LStr | | LEnd | | Shift| + * `-----------------------------------------/ / \ \-----------------------------------------' + * | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | RGUI | + * | | | | |/ / \ \ | | | | | + * `----------------------------------' '------''---------------------------' + */ +[_RAISE] = LAYOUT( + _______, _______ , _______ , _______ , _______ , _______, _______, _______ , _______, _______ , _______ ,_______, + _______, KC_INS, KC_PSCR, KC_APP, XXXXXXX, XXXXXXX, KC_PGUP, KC_PRVWD, KC_UP, KC_NXTWD, KC_DLINE, KC_BSPC, + _______, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, KC_CAPS, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_DEL, KC_BSPC, + _______, KC_UNDO, KC_CUT, KC_COPY, KC_PASTE, XXXXXXX, _______, _______, XXXXXXX, KC_LSTRT, XXXXXXX, KC_LEND, XXXXXXX, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +), +/* ADJUST + * ,-----------------------------------------. ,-----------------------------------------. + * | | | | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | RESET| |QWERTY|COLEMAK| | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | |MACWIN| | | |-------. ,-------| | VOLDO| MUTE | VOLUP| | | + * |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------| + * | | | | | | |-------| |-------| | PREV | PLAY | NEXT | | | + * `-----------------------------------------/ / \ \-----------------------------------------' + * | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | RGUI | + * | | | | |/ / \ \ | | | | | + * `----------------------------------' '------''---------------------------' + */ + [_ADJUST] = LAYOUT( + XXXXXXX , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_MOD, RGB_VAI, RGB_SAI, RGB_HUI, XXXXXXX, RGB_TOG, + RESET , XXXXXXX, KC_QWERTY,KC_COLEMAK,CG_TOGG, XXXXXXX, RGB_RMOD, RGB_VAD, RGB_SAD, RGB_HUD, XXXXXXX, XXXXXXX, + XXXXXXX , XXXXXXX, CG_TOGG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLD, KC_MUTE, KC_VOLU, XXXXXXX, XXXXXXX, + XXXXXXX , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + + + switch (keycode) { + case KC_QWERTY: + if (record->event.pressed) { + set_single_persistent_default_layer(_QWERTY); + } + return false; + case KC_COLEMAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_COLEMAK); + } + return false; + case KC_LOWER: + if (record->event.pressed) { + layer_on(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + case KC_RAISE: + if (record->event.pressed) { + layer_on(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + case KC_ADJUST: + if (record->event.pressed) { + layer_on(_ADJUST); + } else { + layer_off(_ADJUST); + } + return false; + case KC_PRVWD: + if (record->event.pressed) { + if (keymap_config.swap_lctl_lgui) { + register_mods(mod_config(MOD_LALT)); + register_code(KC_LEFT); + } else { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_LEFT); + } + } else { + if (keymap_config.swap_lctl_lgui) { + unregister_mods(mod_config(MOD_LALT)); + unregister_code(KC_LEFT); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_LEFT); + } + } + break; + case KC_NXTWD: + if (record->event.pressed) { + if (keymap_config.swap_lctl_lgui) { + register_mods(mod_config(MOD_LALT)); + register_code(KC_RIGHT); + } else { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_RIGHT); + } + } else { + if (keymap_config.swap_lctl_lgui) { + unregister_mods(mod_config(MOD_LALT)); + unregister_code(KC_RIGHT); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_RIGHT); + } + } + break; + case KC_LSTRT: + if (record->event.pressed) { + if (keymap_config.swap_lctl_lgui) { + //CMD-arrow on Mac, but we have CTL and GUI swapped + register_mods(mod_config(MOD_LCTL)); + register_code(KC_LEFT); + } else { + register_code(KC_HOME); + } + } else { + if (keymap_config.swap_lctl_lgui) { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_LEFT); + } else { + unregister_code(KC_HOME); + } + } + break; + case KC_LEND: + if (record->event.pressed) { + if (keymap_config.swap_lctl_lgui) { + //CMD-arrow on Mac, but we have CTL and GUI swapped + register_mods(mod_config(MOD_LCTL)); + register_code(KC_RIGHT); + } else { + register_code(KC_END); + } + } else { + if (keymap_config.swap_lctl_lgui) { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_RIGHT); + } else { + unregister_code(KC_END); + } + } + break; + case KC_DLINE: + if (record->event.pressed) { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_BSPC); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_BSPC); + } + break; + case KC_COPY: + if (record->event.pressed) { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_C); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_C); + } + return false; + case KC_PASTE: + if (record->event.pressed) { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_V); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_V); + } + return false; + case KC_CUT: + if (record->event.pressed) { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_X); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_X); + } + return false; + break; + case KC_UNDO: + if (record->event.pressed) { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_Z); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_Z); + } + return false; + } + return true; +} + +#ifdef OLED_DRIVER_ENABLE +static void render_logo(void) { + static const char PROGMEM my_logo[] = { + // 'protea', 128x32px + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x38, 0x1c, 0x0c, 0x06, 0x82, 0x80, 0xc0, 0xc0, + 0x40, 0x00, 0x80, 0x90, 0xd0, 0xd8, 0xc8, 0xc8, 0x44, 0x44, 0x00, 0x88, 0xb8, 0xb8, 0xd8, 0xd8, + 0xc0, 0xc0, 0x80, 0x20, 0x60, 0x60, 0x50, 0xd0, 0xb0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x30, + 0x30, 0x30, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x08, 0x07, 0x01, 0x90, 0x90, 0x90, 0x99, 0x99, 0x90, 0x84, 0x22, + 0x6b, 0xe9, 0xf5, 0xf5, 0xf5, 0xe5, 0xc5, 0x10, 0x1e, 0x1e, 0x4e, 0x60, 0xf1, 0xf9, 0xf9, 0xf9, + 0xf8, 0x78, 0x7a, 0x7b, 0x33, 0x37, 0xc6, 0xee, 0xcc, 0x19, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x02, 0x0c, 0x30, 0xc0, 0x80, 0x00, 0x06, 0x0c, 0x18, 0x31, 0x71, 0x61, 0x69, 0x40, + 0x42, 0x86, 0x0d, 0x1d, 0x19, 0x39, 0x31, 0x76, 0x67, 0x6f, 0x4f, 0x0f, 0x0e, 0xce, 0xc0, 0xc0, + 0xd2, 0xd6, 0xd7, 0xb7, 0x37, 0x3b, 0xda, 0xc0, 0xcb, 0x08, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x06, 0x0e, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0e, 0x1c, 0x38, 0x20, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x06, 0x04, 0x05, 0x01, + 0x01, 0x01, 0x01, 0x05, 0x04, 0x06, 0x06, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + + oled_write_raw_P(my_logo, sizeof(my_logo)); +} + +static void print_status_narrow(void) { + // Print current mode + oled_write_P(PSTR("\n\n"), false); + oled_write_ln_P(PSTR("MODE"), false); + oled_write_ln_P(PSTR("\n"), false); + if (keymap_config.swap_lctl_lgui) { + oled_write_ln_P(PSTR("MAC\n"), false); + } else { + oled_write_ln_P(PSTR("WIN\n"), false); + } + + switch (get_highest_layer(default_layer_state)) { + case _QWERTY: + oled_write_ln_P(PSTR("Qwrt"), false); + break; + case _COLEMAK: + oled_write_ln_P(PSTR("Clmk"), false); + break; + default: + oled_write_P(PSTR("Undef"), false); + } + oled_write_P(PSTR("\n\n"), false); + // Print current layer + oled_write_ln_P(PSTR("LAYER"), false); + switch (get_highest_layer(layer_state)) { + case _COLEMAK: + case _QWERTY: + oled_write_P(PSTR("Base\n"), false); + break; + case _RAISE: + oled_write_P(PSTR("Raise"), false); + break; + case _LOWER: + oled_write_P(PSTR("Lower"), false); + break; + case _ADJUST: + oled_write_P(PSTR("Adj\n"), false); + break; + default: + oled_write_ln_P(PSTR("Undef"), false); + } + oled_write_P(PSTR("\n\n"), false); + led_t led_usb_state = host_keyboard_led_state(); + oled_write_ln_P(PSTR("CPSLK"), led_usb_state.caps_lock); + oled_write_P(PSTR("\n\n"), false); +} + +void oled_task_user(void) { + if (is_keyboard_master()) { + print_status_narrow(); + } else { + render_logo(); + } +} + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + if (is_keyboard_master()) { + return OLED_ROTATION_270; + } else { + return rotation; + } +} +#endif + +#ifdef ENCODER_ENABLE +void encoder_update_user(uint8_t index, bool clockwise){ + + if (index == 0) { + switch (get_highest_layer(layer_state)) { + case _QWERTY: + // Move whole words. Hold shift to select while moving. + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + break; + default: + // History scrubbing. For Adobe products, hold shift while moving + // backward to go forward instead. + if (clockwise) { + tap_code16(C(KC_Z)); + } else { + tap_code16(C(KC_Y)); + } + break; + } + } else if (index == 1) { + switch (get_highest_layer(layer_state)) { + case _QWERTY: + // Scrolling with PageUp and PgDn. + if (clockwise) { + tap_code16(KC_PGDN); + } else { + tap_code16(KC_PGUP); + } + break; + default: + if (clockwise) { + tap_code16(A(KC_TAB)); + } else { + tap_code16(A(S(KC_TAB))); + } + break; + } + } +} +#endif diff --git a/keyboards/tkw/grandiceps/keymaps/default/readme.md b/keyboards/tkw/grandiceps/keymaps/default/readme.md new file mode 100644 index 0000000000..b7ea011a9c --- /dev/null +++ b/keyboards/tkw/grandiceps/keymaps/default/readme.md @@ -0,0 +1,13 @@ +![grandiceps default keymap](https://raw.githubusercontent.com/vattern/grandiceps/master/images/layer0.png) +![grandiceps adjust layer](https://raw.githubusercontent.com/vattern/grandiceps/master/images/layer4.png) + + +# Default keymap for grandiceps Keyboard + +Features: + +- Symmetric modifiers (CMD/Super, Alt/Opt, Ctrl, Shift) +- Various modes, can be switched (using Adjust layer) +- Modes for Qwerty and Colemak support +- Modes for Mac vs Linux/Win support -> different order of modifiers and different action shortcuts on the "UPPER" layer . +- The OLED on master half shows selected mode and caps lock state and is rotated. diff --git a/keyboards/tkw/grandiceps/mcuconf.h b/keyboards/tkw/grandiceps/mcuconf.h new file mode 100644 index 0000000000..bf59ea62a4 --- /dev/null +++ b/keyboards/tkw/grandiceps/mcuconf.h @@ -0,0 +1,34 @@ +/* Copyright 2020 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confupdate -i keyboards/tkw/grandiceps/mcuconf.h -r platforms/chibios/BLACKPILL_STM32_F411/configs/mcuconf.h` + */ + +#pragma once + +#include_next + +#undef STM32_I2C_USE_I2C1 +#define STM32_I2C_USE_I2C1 TRUE + +#undef STM32_PWM_USE_TIM3 +#define STM32_PWM_USE_TIM3 TRUE + +#undef STM32_SERIAL_USE_USART1 +#define STM32_SERIAL_USE_USART1 TRUE + diff --git a/keyboards/tkw/grandiceps/readme.md b/keyboards/tkw/grandiceps/readme.md new file mode 100644 index 0000000000..894f1c8d7a --- /dev/null +++ b/keyboards/tkw/grandiceps/readme.md @@ -0,0 +1,19 @@ +# grandiceps + +![grandiceps](https://i.imgur.com/FMtsboVl.jpg) + +ARM split keyboard with RGB underglow and encoders. + +* Keyboard Maintainer: [vattern](https://github.com/vattern) +* Hardware Supported: f411 blackpill +* Hardware Availability: [grandiceps](https://github.com/vattern/grandiceps) + +Make example for this keyboard (after setting up your build environment): + + make tkw/grandiceps:default + +Flashing example for this keyboard: + + make tkw/grandiceps:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/tkw/grandiceps/rules.mk b/keyboards/tkw/grandiceps/rules.mk new file mode 100644 index 0000000000..432bf8647b --- /dev/null +++ b/keyboards/tkw/grandiceps/rules.mk @@ -0,0 +1,30 @@ +# MCU name +MCU = STM32F411 + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +ENCODER_ENABLE = yes # Enable rotary encoder support +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +KEYBOARD_SHARED_EP = yes # Free up some extra endpoints - needed if console+mouse+extra + +SPLIT_KEYBOARD = yes +SERIAL_DRIVER = usart +OLED_DRIVER_ENABLE = yes +WS2812_DRIVER = pwm +OPT_DEFS += -DSTM32_DMA_REQUIRED=TRUE + +# Address of the bootloader in system memory +STM32_BOOTLOADER_ADDRESS = 0x1FFF0000 From 469b4b21d241a592bedfe1ea217bad74b5195c50 Mon Sep 17 00:00:00 2001 From: James Young <18669334+noroadsleft@users.noreply.github.com> Date: Mon, 15 Mar 2021 13:45:39 -0700 Subject: [PATCH 063/613] Fixes for recent info.json files (#12248) --- keyboards/4pplet/aekiso60/rev_a/info.json | 2 +- keyboards/6ball/info.json | 12 ++++++------ keyboards/box75/info.json | 3 ++- keyboards/four_banger/info.json | 2 +- keyboards/hhkb_lite_2/info.json | 15 ++++++++++----- 5 files changed, 20 insertions(+), 14 deletions(-) diff --git a/keyboards/4pplet/aekiso60/rev_a/info.json b/keyboards/4pplet/aekiso60/rev_a/info.json index 7f5b09cdc1..8929314232 100644 --- a/keyboards/4pplet/aekiso60/rev_a/info.json +++ b/keyboards/4pplet/aekiso60/rev_a/info.json @@ -5,7 +5,7 @@ "width": 15, "height": 5, "layouts": { - "LAYOUT": { + "LAYOUT_all": { "layout": [ {"x":0, "y":0, "w":1.25}, {"x":1.25, "y":0}, diff --git a/keyboards/6ball/info.json b/keyboards/6ball/info.json index d06f3448cc..ec95560c6a 100644 --- a/keyboards/6ball/info.json +++ b/keyboards/6ball/info.json @@ -3,17 +3,17 @@ "url": "", "maintainer": "qmk", "width": 3, - "height": 2, + "height": 3, "layouts": { "LAYOUT": { "layout": [ - {"x":0, "y":0}, + {"x":0, "y":0.5}, {"x":1, "y":0}, - {"x":2, "y":0}, + {"x":2, "y":0.5}, - {"x":0, "y":1}, - {"x":1, "y":1}, - {"x":2, "y":1} + {"x":0, "y":1.5}, + {"x":1, "y":2}, + {"x":2, "y":1.5} ] } } diff --git a/keyboards/box75/info.json b/keyboards/box75/info.json index 5eb72471ef..7f854b0a5d 100644 --- a/keyboards/box75/info.json +++ b/keyboards/box75/info.json @@ -36,7 +36,8 @@ {"x":10, "y":1.25}, {"x":11, "y":1.25}, {"x":12, "y":1.25}, - {"x":13, "y":1.25, "w":2}, + {"x":13, "y":1.25}, + {"x":14, "y":1.25}, {"x":15.25, "y":1.25}, {"x":0, "y":2.25, "w":1.5}, diff --git a/keyboards/four_banger/info.json b/keyboards/four_banger/info.json index bb34a47872..f5ec65cf65 100644 --- a/keyboards/four_banger/info.json +++ b/keyboards/four_banger/info.json @@ -5,7 +5,7 @@ "width": 2, "height": 2, "layouts": { - "LAYOUT": { + "LAYOUT_ortho_2x2": { "layout": [ {"x":0, "y":0}, {"x":1, "y":0}, diff --git a/keyboards/hhkb_lite_2/info.json b/keyboards/hhkb_lite_2/info.json index 4319320b10..c1c50583c5 100644 --- a/keyboards/hhkb_lite_2/info.json +++ b/keyboards/hhkb_lite_2/info.json @@ -3,7 +3,7 @@ "url": "", "maintainer": "qmk", "width": 15, - "height": 5, + "height": 5.75, "layouts": { "LAYOUT": { "layout": [ @@ -66,11 +66,16 @@ {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, - {"x":1.5, "y":4}, - {"x":2.5, "y":4, "w":1.5}, + {"x":2, "y":4}, + {"x":3, "y":4}, {"x":4, "y":4, "w":6}, - {"x":10, "y":4, "w":1.5}, - {"x":11.5, "y":4} + {"x":10, "y":4}, + {"x":11, "y":4}, + + {"x":13.167, "y":4, "w":0.916, "h":0.75}, + {"x":12.25, "y":4.75, "w":0.917, "h":0.75}, + {"x":13.167, "y":4.75, "w":0.916, "h":0.75}, + {"x":14.08, "y":4.75, "w":0.917, "h":0.75} ] } } From cd8497b9fb3b00020a28d582cdc772f3c0fa35b1 Mon Sep 17 00:00:00 2001 From: kb-elmo Date: Tue, 16 Mar 2021 00:03:16 +0100 Subject: [PATCH 064/613] add support for Noah AVR PCB (#11563) * add support for Noah AVR PCB * Update info.json * Update readme.md * Update keyboards/kb_elmo/noah_avr/rules.mk Co-authored-by: Ryan * Update keymap.c * Apply suggestions from code review Co-authored-by: Drashna Jaelre Co-authored-by: Ryan Co-authored-by: Drashna Jaelre --- keyboards/kb_elmo/noah_avr/config.h | 54 ++++ keyboards/kb_elmo/noah_avr/info.json | 297 ++++++++++++++++++ .../kb_elmo/noah_avr/keymaps/default/keymap.c | 33 ++ .../kb_elmo/noah_avr/keymaps/via/keymap.c | 47 +++ .../kb_elmo/noah_avr/keymaps/via/rules.mk | 1 + keyboards/kb_elmo/noah_avr/noah_avr.c | 17 + keyboards/kb_elmo/noah_avr/noah_avr.h | 85 +++++ keyboards/kb_elmo/noah_avr/readme.md | 19 ++ keyboards/kb_elmo/noah_avr/rules.mk | 24 ++ 9 files changed, 577 insertions(+) create mode 100644 keyboards/kb_elmo/noah_avr/config.h create mode 100644 keyboards/kb_elmo/noah_avr/info.json create mode 100644 keyboards/kb_elmo/noah_avr/keymaps/default/keymap.c create mode 100644 keyboards/kb_elmo/noah_avr/keymaps/via/keymap.c create mode 100644 keyboards/kb_elmo/noah_avr/keymaps/via/rules.mk create mode 100644 keyboards/kb_elmo/noah_avr/noah_avr.c create mode 100644 keyboards/kb_elmo/noah_avr/noah_avr.h create mode 100644 keyboards/kb_elmo/noah_avr/readme.md create mode 100644 keyboards/kb_elmo/noah_avr/rules.mk diff --git a/keyboards/kb_elmo/noah_avr/config.h b/keyboards/kb_elmo/noah_avr/config.h new file mode 100644 index 0000000000..5c6dfe8b5e --- /dev/null +++ b/keyboards/kb_elmo/noah_avr/config.h @@ -0,0 +1,54 @@ +/* +Copyright 2021 kb-elmo + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xA68C +#define PRODUCT_ID 0x1DB0 +#define DEVICE_VER 0x0001 +#define MANUFACTURER kb-elmo +#define PRODUCT Noah AVR + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 16 + +/* Keyboard Matrix Assignments */ +#define MATRIX_ROW_PINS { B4, B6, D7, D5, D0 } +#define MATRIX_COL_PINS { D1, D2, D3, D4, C6, C7, F7, F6, F5, F4, F0, F1, B3, B2, B1, B0 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Caps LED */ +#define LED_CAPS_LOCK_PIN D6 + +/* RGB */ +#define RGB_DI_PIN B5 +#define RGBLIGHT_ANIMATIONS +#define RGBLED_NUM 7 +#define RGBLIGHT_SLEEP // RGB will turn off when PC is put to sleep +#define WS2812_BYTE_ORDER WS2812_BYTE_ORDER_BGR // RGB on the Noah is different order + + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + diff --git a/keyboards/kb_elmo/noah_avr/info.json b/keyboards/kb_elmo/noah_avr/info.json new file mode 100644 index 0000000000..c90b32b0db --- /dev/null +++ b/keyboards/kb_elmo/noah_avr/info.json @@ -0,0 +1,297 @@ +{ + "keyboard_name": "Noah AVR", + "url": "https://github.com/kb-elmo/noah_avr", + "maintainer": "kb-elmo", + "width": 16, + "height": 5, + "layouts": { + "LAYOUT_all": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15, "y":0}, + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.5, "y":1, "w":1.5}, + {"x":15, "y":1}, + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + {"x":15, "y":2}, + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":15, "y":3}, + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4} + ] + }, + "LAYOUT_65_ansi": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + {"x":15, "y":0}, + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.5, "y":1, "w":1.5}, + {"x":15, "y":1}, + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + {"x":15, "y":2}, + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":15, "y":3}, + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4} + ] + }, + "LAYOUT_65_ansi_splitbs": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15, "y":0}, + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.5, "y":1, "w":1.5}, + {"x":15, "y":1}, + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + {"x":15, "y":2}, + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":15, "y":3}, + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4} + ] + }, + "LAYOUT_65_iso": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15, "y":0}, + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.5, "y":1, "w":1.5}, + {"x":15, "y":1}, + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + {"x":15, "y":2}, + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":15, "y":3}, + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4} + ] + } + } +} diff --git a/keyboards/kb_elmo/noah_avr/keymaps/default/keymap.c b/keyboards/kb_elmo/noah_avr/keymaps/default/keymap.c new file mode 100644 index 0000000000..aa7f99a5c5 --- /dev/null +++ b/keyboards/kb_elmo/noah_avr/keymaps/default/keymap.c @@ -0,0 +1,33 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_ansi( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_65_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/kb_elmo/noah_avr/keymaps/via/keymap.c b/keyboards/kb_elmo/noah_avr/keymaps/via/keymap.c new file mode 100644 index 0000000000..91d4a7f917 --- /dev/null +++ b/keyboards/kb_elmo/noah_avr/keymaps/via/keymap.c @@ -0,0 +1,47 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/kb_elmo/noah_avr/keymaps/via/rules.mk b/keyboards/kb_elmo/noah_avr/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/kb_elmo/noah_avr/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/kb_elmo/noah_avr/noah_avr.c b/keyboards/kb_elmo/noah_avr/noah_avr.c new file mode 100644 index 0000000000..6245bb6358 --- /dev/null +++ b/keyboards/kb_elmo/noah_avr/noah_avr.c @@ -0,0 +1,17 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "noah_avr.h" diff --git a/keyboards/kb_elmo/noah_avr/noah_avr.h b/keyboards/kb_elmo/noah_avr/noah_avr.h new file mode 100644 index 0000000000..eb16cf4f42 --- /dev/null +++ b/keyboards/kb_elmo/noah_avr/noah_avr.h @@ -0,0 +1,85 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define ____ KC_NO + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT_all( \ + k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, \ + k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k115, \ + k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k213, k215, \ + k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k315, \ + k400, k401, k402, k406, k411, k412, k413, k414, k415 \ +) { \ + { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015 }, \ + { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, ____, k115 }, \ + { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, ____, k213, ____, k215 }, \ + { k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, ____, k315 }, \ + { k400, k401, k402, ____, ____, ____, k406, ____, ____, ____, ____, k411, k412, k413, k414, k415 } \ +} + +#define LAYOUT_64_ansi( \ + k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k015, \ + k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k115, \ + k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k213, k215, \ + k300, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k315, \ + k400, k401, k402, k406, k411, k412, k413, k414, k415 \ +) { \ + { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, ____, k015 }, \ + { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, ____, k115 }, \ + { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, ____, k213, ____, k215 }, \ + { k300, ____, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, ____, k315 }, \ + { k400, k401, k402, ____, ____, ____, k406, ____, ____, ____, ____, k411, k412, k413, k414, k415 } \ +} + +#define LAYOUT_64_ansi_splitbs( \ + k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, \ + k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k115, \ + k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k213, k215, \ + k300, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k315, \ + k400, k401, k402, k406, k411, k412, k413, k414, k415 \ +) { \ + { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015 }, \ + { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, ____, k115 }, \ + { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, ____, k213, ____, k215 }, \ + { k300, ____, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, ____, k315 }, \ + { k400, k401, k402, ____, ____, ____, k406, ____, ____, ____, ____, k411, k412, k413, k414, k415 } \ +} + +#define LAYOUT_64_iso( \ + k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k015, \ + k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k115, \ + k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k113, k213, k215, \ + k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k315, \ + k400, k401, k402, k406, k411, k412, k413, k414, k415 \ +) { \ + { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, ____, k015 }, \ + { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, ____, k115 }, \ + { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, ____, k213, ____, k215 }, \ + { k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, ____, k315 }, \ + { k400, k401, k402, ____, ____, ____, k406, ____, ____, ____, ____, k411, k412, k413, k414, k415 } \ +} diff --git a/keyboards/kb_elmo/noah_avr/readme.md b/keyboards/kb_elmo/noah_avr/readme.md new file mode 100644 index 0000000000..48dbe49729 --- /dev/null +++ b/keyboards/kb_elmo/noah_avr/readme.md @@ -0,0 +1,19 @@ +# Noah AVR + +![noah_avr](https://i.imgur.com/wg2tP47l.png) + +AVR based drop-in replacement PCB for the Matrix Noah keyboard + +* Keyboard Maintainer: [kb-elmo](https://github.com/kb-elmo) +* Hardware Supported: Noah AVR PCB +* Hardware Availability: https://github.com/kb-elmo/noah_avr + +Make example for this keyboard (after setting up your build environment): + + make kb_elmo/noah_avr:default + +Flashing example for this keyboard: + + make kb_elmo/noah_avr:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/kb_elmo/noah_avr/rules.mk b/keyboards/kb_elmo/noah_avr/rules.mk new file mode 100644 index 0000000000..a547ba86b0 --- /dev/null +++ b/keyboards/kb_elmo/noah_avr/rules.mk @@ -0,0 +1,24 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output + +LAYOUTS = 65_ansi 65_iso From d99806cc27f32b1a856ec99731456c79a5358a27 Mon Sep 17 00:00:00 2001 From: Matteo Montemarani <71832926+mm0nte@users.noreply.github.com> Date: Tue, 16 Mar 2021 00:09:29 +0100 Subject: [PATCH 065/613] Pizza Keyboards Pizza65 addition (#11604) * Added Pizza65 from Pizza Keyboards Addition of Pizza65 * Update pizza65.h * Update info.json * Update mcuconf.h * Update rules.mk * Updated makefile * Update keyboards/pizzakeyboards/pizza65/config.h Co-authored-by: Drashna Jaelre * Update keyboards/pizzakeyboards/pizza65/config.h Co-authored-by: Ryan * Update keyboards/pizzakeyboards/pizza65/config.h Co-authored-by: Ryan * Update keyboards/pizzakeyboards/pizza65/keymaps/ansi_blocker_doublebs/keymap.c Co-authored-by: Ryan * Update keyboards/pizzakeyboards/pizza65/keymaps/iso_blocker_doublebs/keymap.c Co-authored-by: Ryan * Update keyboards/pizzakeyboards/pizza65/info.json Co-authored-by: Ryan * Update keyboards/pizzakeyboards/pizza65/rules.mk Co-authored-by: Ryan * Update keyboards/pizzakeyboards/pizza65/keymaps/default/keymap.c Co-authored-by: Ryan * Update keyboards/pizzakeyboards/pizza65/keymaps/iso_blocker/keymap.c Co-authored-by: Ryan * Update keyboards/pizzakeyboards/pizza65/keymaps/via/keymap.c Co-authored-by: Ryan * Update keyboards/pizzakeyboards/pizza65/readme.md Co-authored-by: Ryan * Update keyboards/pizzakeyboards/pizza65/readme.md Co-authored-by: Ryan * Update keyboards/pizzakeyboards/pizza65/info.json Co-authored-by: Ryan * Update keyboards/pizzakeyboards/pizza65/info.json Co-authored-by: Ryan * Update keyboards/pizzakeyboards/pizza65/info.json Co-authored-by: Ryan * Chibios Config migration * Update keyboards/pizzakeyboards/pizza65/readme.md Co-authored-by: Jonas Gessner * Update keyboards/pizzakeyboards/pizza65/readme.md Co-authored-by: Jonas Gessner * Update keyboards/pizzakeyboards/pizza65/pizza65.h Co-authored-by: Jonas Gessner * Update rules.mk nk rollover activation * conf updates * Update keyboards/pizzakeyboards/pizza65/keymaps/iso_blocker/keymap.c Co-authored-by: Davide Riccardo Caliendo * Update keyboards/pizzakeyboards/pizza65/keymaps/iso_blocker_doublebs/keymap.c Co-authored-by: Davide Riccardo Caliendo * Update keymap.c thanks to Acaban * Update pizza65.h update to the iso_blocker_doublebs layout macro * Delete chconf.h Deleting after the ChibiOS-conf migration. * Delete config.h Deleting after the ChibiOS-conf migration. * Revert "Delete config.h" This reverts commit 16d64619e68578382aca3b1475968563b662d07f. * Delete mcuconf.h Deleting after ChibiOS-conf migration. * Delete halconf.h Deleting after ChibiOS-conf migrations. Co-authored-by: Drashna Jaelre Co-authored-by: Ryan Co-authored-by: Jonas Gessner Co-authored-by: Davide Riccardo Caliendo --- keyboards/pizzakeyboards/pizza65/config.h | 58 ++++ keyboards/pizzakeyboards/pizza65/info.json | 317 ++++++++++++++++++ .../keymaps/ansi_blocker_doublebs/keymap.c | 34 ++ .../pizza65/keymaps/default/keymap.c | 34 ++ .../pizza65/keymaps/default/readme.md | 1 + .../pizza65/keymaps/iso_blocker/keymap.c | 34 ++ .../keymaps/iso_blocker_doublebs/keymap.c | 34 ++ .../pizza65/keymaps/via/keymap.c | 48 +++ .../pizza65/keymaps/via/readme.md | 1 + .../pizza65/keymaps/via/rules.mk | 2 + keyboards/pizzakeyboards/pizza65/pizza65.c | 17 + keyboards/pizzakeyboards/pizza65/pizza65.h | 86 +++++ keyboards/pizzakeyboards/pizza65/readme.md | 19 ++ keyboards/pizzakeyboards/pizza65/rules.mk | 19 ++ 14 files changed, 704 insertions(+) create mode 100644 keyboards/pizzakeyboards/pizza65/config.h create mode 100644 keyboards/pizzakeyboards/pizza65/info.json create mode 100644 keyboards/pizzakeyboards/pizza65/keymaps/ansi_blocker_doublebs/keymap.c create mode 100644 keyboards/pizzakeyboards/pizza65/keymaps/default/keymap.c create mode 100644 keyboards/pizzakeyboards/pizza65/keymaps/default/readme.md create mode 100644 keyboards/pizzakeyboards/pizza65/keymaps/iso_blocker/keymap.c create mode 100644 keyboards/pizzakeyboards/pizza65/keymaps/iso_blocker_doublebs/keymap.c create mode 100644 keyboards/pizzakeyboards/pizza65/keymaps/via/keymap.c create mode 100644 keyboards/pizzakeyboards/pizza65/keymaps/via/readme.md create mode 100644 keyboards/pizzakeyboards/pizza65/keymaps/via/rules.mk create mode 100644 keyboards/pizzakeyboards/pizza65/pizza65.c create mode 100644 keyboards/pizzakeyboards/pizza65/pizza65.h create mode 100644 keyboards/pizzakeyboards/pizza65/readme.md create mode 100644 keyboards/pizzakeyboards/pizza65/rules.mk diff --git a/keyboards/pizzakeyboards/pizza65/config.h b/keyboards/pizzakeyboards/pizza65/config.h new file mode 100644 index 0000000000..039fc68263 --- /dev/null +++ b/keyboards/pizzakeyboards/pizza65/config.h @@ -0,0 +1,58 @@ +/* +Copyright 2020 mmonte + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x504B // PK +#define PRODUCT_ID 0x707A // PZ +#define DEVICE_VER 0x0001 +#define MANUFACTURER pizzakeyboards +#define PRODUCT pizza65 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 16 + +#define MATRIX_ROW_PINS { B15, A10, F1, A0, A1 } +#define MATRIX_COL_PINS { A9, A8, F0, A2, A3, A4, B9, B8, B7, B6, B5, B4, B3, A15, A14, A13} +#define UNUSED_PINS + +#define DIODE_DIRECTION COL2ROW + +#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/pizzakeyboards/pizza65/info.json b/keyboards/pizzakeyboards/pizza65/info.json new file mode 100644 index 0000000000..551edc70e3 --- /dev/null +++ b/keyboards/pizzakeyboards/pizza65/info.json @@ -0,0 +1,317 @@ +{ + "keyboard_name": "pizza65", + "url": "www.keyboards.pizza", + "maintainer": "mm0nte", + "width": 16, + "height": 5, + "layouts": { + "LAYOUT_65_ansi_blocker": { + "layout": [ + {"label": "r1_01", "x": 0, "y": 0}, + {"label": "r1_02", "x": 1, "y": 0}, + {"label": "r1_03", "x": 2, "y": 0}, + {"label": "r1_04", "x": 3, "y": 0}, + {"label": "r1_05", "x": 4, "y": 0}, + {"label": "r1_06", "x": 5, "y": 0}, + {"label": "r1_07", "x": 6, "y": 0}, + {"label": "r1_08", "x": 7, "y": 0}, + {"label": "r1_09", "x": 8, "y": 0}, + {"label": "r1_10", "x": 9, "y": 0}, + {"label": "r1_11", "x": 10, "y": 0}, + {"label": "r1_12", "x": 11, "y": 0}, + {"label": "r1_13", "x": 12, "y": 0}, + {"label": "r1_14", "x": 13, "y": 0, "w":2}, + {"label": "r1_15", "x": 15, "y": 0}, + + {"label": "r2_01", "x": 0, "y": 1, "w": 1.5}, + {"label": "r2_02", "x": 1.5, "y": 1}, + {"label": "r2_03", "x": 2.5, "y": 1}, + {"label": "r2_04", "x": 3.5, "y": 1}, + {"label": "r2_05", "x": 4.5, "y": 1}, + {"label": "r2_06", "x": 5.5, "y": 1}, + {"label": "r2_07", "x": 6.5, "y": 1}, + {"label": "r2_08", "x": 7.5, "y": 1}, + {"label": "r2_09", "x": 8.5, "y": 1}, + {"label": "r2_10", "x": 9.5, "y": 1}, + {"label": "r2_11", "x": 10.5, "y": 1}, + {"label": "r2_12", "x": 11.5, "y": 1}, + {"label": "r2_13", "x": 12.5, "y": 1}, + {"label": "r2_14", "x": 13.5, "y": 1, "w": 1.5}, + {"label": "r2_15", "x": 15, "y": 1}, + + {"label": "r3_01", "x": 0, "y": 2, "w": 1.75}, + {"label": "r3_02", "x": 1.75, "y": 2}, + {"label": "r3_03", "x": 2.75, "y": 2}, + {"label": "r3_04", "x": 3.75, "y": 2}, + {"label": "r3_05", "x": 4.75, "y": 2}, + {"label": "r3_06", "x": 5.75, "y": 2}, + {"label": "r3_07", "x": 6.75, "y": 2}, + {"label": "r3_08", "x": 7.75, "y": 2}, + {"label": "r3_09", "x": 8.75, "y": 2}, + {"label": "r3_10", "x": 9.75, "y": 2}, + {"label": "r3_11", "x": 10.75, "y": 2}, + {"label": "r3_12", "x": 11.75, "y": 2}, + {"label": "r3_13", "x": 12.75, "y": 2, "w": 2.25}, + {"label": "r3_14", "x": 15, "y": 2}, + + {"label": "r4_01", "x": 0, "y": 3, "w": 2.25}, + {"label": "r4_02", "x": 2.25, "y": 3}, + {"label": "r4_03", "x": 3.25, "y": 3}, + {"label": "r4_04", "x": 4.25, "y": 3}, + {"label": "r4_05", "x": 5.25, "y": 3}, + {"label": "r4_06", "x": 6.25, "y": 3}, + {"label": "r4_07", "x": 7.25, "y": 3}, + {"label": "r4_08", "x": 8.25, "y": 3}, + {"label": "r4_09", "x": 9.25, "y": 3}, + {"label": "r4_10", "x": 10.25, "y": 3}, + {"label": "r4_11", "x": 11.25, "y": 3}, + {"label": "r4_12", "x": 12.25, "y": 3, "w": 1.75}, + {"label": "r4_13", "x": 14, "y": 3}, + {"label": "r4_14", "x": 15, "y": 3}, + + {"label": "r5_01", "x": 0, "y": 4, "w": 1.25}, + {"label": "r5_02", "x": 1.25, "y": 4, "w": 1.25}, + {"label": "r5_03", "x": 2.50, "y": 4, "w": 1.25}, + {"label": "r5_04", "x": 3.75, "y": 4, "w": 6.25}, + {"label": "r5_05", "x": 10, "y": 4, "w": 1.25}, + {"label": "r5_06", "x": 11.25, "y": 4, "w": 1.25}, + {"label": "r4_07", "x": 13, "y": 4}, + {"label": "r4_08", "x": 14, "y": 4}, + {"label": "r4_09", "x": 15, "y": 4} + ] + }, + "LAYOUT_65_iso_blocker": { + "layout": [ + {"label": "r1_01", "x": 0, "y": 0}, + {"label": "r1_02", "x": 1, "y": 0}, + {"label": "r1_03", "x": 2, "y": 0}, + {"label": "r1_04", "x": 3, "y": 0}, + {"label": "r1_05", "x": 4, "y": 0}, + {"label": "r1_06", "x": 5, "y": 0}, + {"label": "r1_07", "x": 6, "y": 0}, + {"label": "r1_08", "x": 7, "y": 0}, + {"label": "r1_09", "x": 8, "y": 0}, + {"label": "r1_10", "x": 9, "y": 0}, + {"label": "r1_11", "x": 10, "y": 0}, + {"label": "r1_12", "x": 11, "y": 0}, + {"label": "r1_13", "x": 12, "y": 0}, + {"label": "r1_14", "x": 13, "y": 0, "w":2}, + {"label": "r1_15", "x": 15, "y": 0}, + + {"label": "r2_01", "x": 0, "y": 1, "w": 1.5}, + {"label": "r2_02", "x": 1.5, "y": 1}, + {"label": "r2_03", "x": 2.5, "y": 1}, + {"label": "r2_04", "x": 3.5, "y": 1}, + {"label": "r2_05", "x": 4.5, "y": 1}, + {"label": "r2_06", "x": 5.5, "y": 1}, + {"label": "r2_07", "x": 6.5, "y": 1}, + {"label": "r2_08", "x": 7.5, "y": 1}, + {"label": "r2_09", "x": 8.5, "y": 1}, + {"label": "r2_10", "x": 9.5, "y": 1}, + {"label": "r2_11", "x": 10.5, "y": 1}, + {"label": "r2_12", "x": 11.5, "y": 1}, + {"label": "r2_13", "x": 12.5, "y": 1}, + {"label": "r2_14", "x": 13.5, "y": 1}, + {"label": "r2_15", "x": 15, "y": 1}, + + {"label": "r3_01", "x": 0, "y": 2, "w": 1.75}, + {"label": "r3_02", "x": 1.75, "y": 2}, + {"label": "r3_03", "x": 2.75, "y": 2}, + {"label": "r3_04", "x": 3.75, "y": 2}, + {"label": "r3_05", "x": 4.75, "y": 2}, + {"label": "r3_06", "x": 5.75, "y": 2}, + {"label": "r3_07", "x": 6.75, "y": 2}, + {"label": "r3_08", "x": 7.75, "y": 2}, + {"label": "r3_09", "x": 8.75, "y": 2}, + {"label": "r3_10", "x": 9.75, "y": 2}, + {"label": "r3_11", "x": 10.75, "y": 2}, + {"label": "r3_12", "x": 11.75, "y": 2}, + {"label": "r3_13", "x": 12.75, "y": 2}, + {"label": "r3_14", "x": 13.75, "y": 1, "w":1.25, "h":2}, + {"label": "r3_15", "x": 15, "y": 2}, + + + {"label": "r4_01", "x": 0, "y": 3, "w": 1.25}, + {"label": "r4_02", "x": 1.25, "y": 3}, + {"label": "r4_03", "x": 2.25, "y": 3}, + {"label": "r4_04", "x": 3.25, "y": 3}, + {"label": "r4_05", "x": 4.25, "y": 3}, + {"label": "r4_06", "x": 5.25, "y": 3}, + {"label": "r4_07", "x": 6.25, "y": 3}, + {"label": "r4_08", "x": 7.25, "y": 3}, + {"label": "r4_09", "x": 8.25, "y": 3}, + {"label": "r4_10", "x": 9.25, "y": 3}, + {"label": "r4_11", "x": 10.25, "y": 3}, + {"label": "r4_11", "x": 11.25, "y": 3}, + {"label": "r4_12", "x": 12.25, "y": 3, "w": 1.75}, + {"label": "r4_13", "x": 14, "y": 3}, + {"label": "r4_14", "x": 15, "y": 3}, + + {"label": "r5_01", "x": 0, "y": 4, "w": 1.25}, + {"label": "r5_02", "x": 1.25, "y": 4, "w": 1.25}, + {"label": "r5_03", "x": 2.50, "y": 4, "w": 1.25}, + {"label": "r5_04", "x": 3.75, "y": 4, "w": 6.25}, + {"label": "r5_05", "x": 10, "y": 4, "w": 1.25}, + {"label": "r5_06", "x": 11.25, "y": 4, "w": 1.25}, + {"label": "r4_07", "x": 13, "y": 4}, + {"label": "r4_08", "x": 14, "y": 4}, + {"label": "r4_09", "x": 15, "y": 4} + ] + }, + "LAYOUT_65_ansi_blocker_doublebs": { + "layout": [ + {"label": "r1_01", "x": 0, "y": 0}, + {"label": "r1_02", "x": 1, "y": 0}, + {"label": "r1_03", "x": 2, "y": 0}, + {"label": "r1_04", "x": 3, "y": 0}, + {"label": "r1_05", "x": 4, "y": 0}, + {"label": "r1_06", "x": 5, "y": 0}, + {"label": "r1_07", "x": 6, "y": 0}, + {"label": "r1_08", "x": 7, "y": 0}, + {"label": "r1_09", "x": 8, "y": 0}, + {"label": "r1_10", "x": 9, "y": 0}, + {"label": "r1_11", "x": 10, "y": 0}, + {"label": "r1_12", "x": 11, "y": 0}, + {"label": "r1_13", "x": 12, "y": 0}, + {"label": "r1_14", "x": 13, "y": 0}, + {"label": "r1_15", "x": 14, "y": 0}, + {"label": "r1_16", "x": 15, "y": 0}, + + {"label": "r2_01", "x": 0, "y": 1, "w": 1.5}, + {"label": "r2_02", "x": 1.5, "y": 1}, + {"label": "r2_03", "x": 2.5, "y": 1}, + {"label": "r2_04", "x": 3.5, "y": 1}, + {"label": "r2_05", "x": 4.5, "y": 1}, + {"label": "r2_06", "x": 5.5, "y": 1}, + {"label": "r2_07", "x": 6.5, "y": 1}, + {"label": "r2_08", "x": 7.5, "y": 1}, + {"label": "r2_09", "x": 8.5, "y": 1}, + {"label": "r2_10", "x": 9.5, "y": 1}, + {"label": "r2_11", "x": 10.5, "y": 1}, + {"label": "r2_12", "x": 11.5, "y": 1}, + {"label": "r2_13", "x": 12.5, "y": 1}, + {"label": "r2_14", "x": 13.5, "y": 1, "w": 1.5}, + {"label": "r2_15", "x": 15, "y": 1}, + + {"label": "r3_01", "x": 0, "y": 2, "w": 1.75}, + {"label": "r3_02", "x": 1.75, "y": 2}, + {"label": "r3_03", "x": 2.75, "y": 2}, + {"label": "r3_04", "x": 3.75, "y": 2}, + {"label": "r3_05", "x": 4.75, "y": 2}, + {"label": "r3_06", "x": 5.75, "y": 2}, + {"label": "r3_07", "x": 6.75, "y": 2}, + {"label": "r3_08", "x": 7.75, "y": 2}, + {"label": "r3_09", "x": 8.75, "y": 2}, + {"label": "r3_10", "x": 9.75, "y": 2}, + {"label": "r3_11", "x": 10.75, "y": 2}, + {"label": "r3_12", "x": 11.75, "y": 2}, + {"label": "r3_13", "x": 12.75, "y": 2, "w": 2.25}, + {"label": "r3_14", "x": 15, "y": 2}, + + {"label": "r4_01", "x": 0, "y": 3, "w": 2.25}, + {"label": "r4_02", "x": 2.25, "y": 3}, + {"label": "r4_03", "x": 3.25, "y": 3}, + {"label": "r4_04", "x": 4.25, "y": 3}, + {"label": "r4_05", "x": 5.25, "y": 3}, + {"label": "r4_06", "x": 6.25, "y": 3}, + {"label": "r4_07", "x": 7.25, "y": 3}, + {"label": "r4_08", "x": 8.25, "y": 3}, + {"label": "r4_09", "x": 9.25, "y": 3}, + {"label": "r4_10", "x": 10.25, "y": 3}, + {"label": "r4_11", "x": 11.25, "y": 3}, + {"label": "r4_12", "x": 12.25, "y": 3, "w": 1.75}, + {"label": "r4_13", "x": 14, "y": 3}, + {"label": "r4_14", "x": 15, "y": 3}, + + {"label": "r5_01", "x": 0, "y": 4, "w": 1.25}, + {"label": "r5_02", "x": 1.25, "y": 4, "w": 1.25}, + {"label": "r5_03", "x": 2.50, "y": 4, "w": 1.25}, + {"label": "r5_04", "x": 3.75, "y": 4, "w": 6.25}, + {"label": "r5_05", "x": 10, "y": 4, "w": 1.25}, + {"label": "r5_06", "x": 11.25, "y": 4, "w": 1.25}, + {"label": "r4_07", "x": 13, "y": 4}, + {"label": "r4_08", "x": 14, "y": 4}, + {"label": "r4_09", "x": 15, "y": 4} + ] + }, + "LAYOUT_65_iso_blocker_doublebs": { + "layout": [ + {"label": "r1_01", "x": 0, "y": 0}, + {"label": "r1_02", "x": 1, "y": 0}, + {"label": "r1_03", "x": 2, "y": 0}, + {"label": "r1_04", "x": 3, "y": 0}, + {"label": "r1_05", "x": 4, "y": 0}, + {"label": "r1_06", "x": 5, "y": 0}, + {"label": "r1_07", "x": 6, "y": 0}, + {"label": "r1_08", "x": 7, "y": 0}, + {"label": "r1_09", "x": 8, "y": 0}, + {"label": "r1_10", "x": 9, "y": 0}, + {"label": "r1_11", "x": 10, "y": 0}, + {"label": "r1_12", "x": 11, "y": 0}, + {"label": "r1_13", "x": 12, "y": 0}, + {"label": "r1_14", "x": 13, "y": 0}, + {"label": "r1_15", "x": 14, "y": 0}, + {"label": "r1_16", "x": 15, "y": 0}, + + {"label": "r2_01", "x": 0, "y": 1, "w": 1.5}, + {"label": "r2_02", "x": 1.5, "y": 1}, + {"label": "r2_03", "x": 2.5, "y": 1}, + {"label": "r2_04", "x": 3.5, "y": 1}, + {"label": "r2_05", "x": 4.5, "y": 1}, + {"label": "r2_06", "x": 5.5, "y": 1}, + {"label": "r2_07", "x": 6.5, "y": 1}, + {"label": "r2_08", "x": 7.5, "y": 1}, + {"label": "r2_09", "x": 8.5, "y": 1}, + {"label": "r2_10", "x": 9.5, "y": 1}, + {"label": "r2_11", "x": 10.5, "y": 1}, + {"label": "r2_12", "x": 11.5, "y": 1}, + {"label": "r2_13", "x": 12.5, "y": 1}, + {"label": "r2_14", "x": 13.5, "y": 1}, + {"label": "r2_15", "x": 15, "y": 1}, + + {"label": "r3_01", "x": 0, "y": 2, "w": 1.75}, + {"label": "r3_02", "x": 1.75, "y": 2}, + {"label": "r3_03", "x": 2.75, "y": 2}, + {"label": "r3_04", "x": 3.75, "y": 2}, + {"label": "r3_05", "x": 4.75, "y": 2}, + {"label": "r3_06", "x": 5.75, "y": 2}, + {"label": "r3_07", "x": 6.75, "y": 2}, + {"label": "r3_08", "x": 7.75, "y": 2}, + {"label": "r3_09", "x": 8.75, "y": 2}, + {"label": "r3_10", "x": 9.75, "y": 2}, + {"label": "r3_11", "x": 10.75, "y": 2}, + {"label": "r3_12", "x": 11.75, "y": 2}, + {"label": "r3_13", "x": 12.75, "y": 2}, + {"label": "r3_14", "x": 13.75, "y": 1, "w":1.25, "h":2}, + {"label": "r3_15", "x": 15, "y": 2}, + + + {"label": "r4_01", "x": 0, "y": 3, "w": 1.25}, + {"label": "r4_02", "x": 1.25, "y": 3}, + {"label": "r4_03", "x": 2.25, "y": 3}, + {"label": "r4_04", "x": 3.25, "y": 3}, + {"label": "r4_05", "x": 4.25, "y": 3}, + {"label": "r4_06", "x": 5.25, "y": 3}, + {"label": "r4_07", "x": 6.25, "y": 3}, + {"label": "r4_08", "x": 7.25, "y": 3}, + {"label": "r4_09", "x": 8.25, "y": 3}, + {"label": "r4_10", "x": 9.25, "y": 3}, + {"label": "r4_11", "x": 10.25, "y": 3}, + {"label": "r4_11", "x": 11.25, "y": 3}, + {"label": "r4_12", "x": 12.25, "y": 3, "w": 1.75}, + {"label": "r4_13", "x": 14, "y": 3}, + {"label": "r4_14", "x": 15, "y": 3}, + + {"label": "r5_01", "x": 0, "y": 4, "w": 1.25}, + {"label": "r5_02", "x": 1.25, "y": 4, "w": 1.25}, + {"label": "r5_03", "x": 2.50, "y": 4, "w": 1.25}, + {"label": "r5_04", "x": 3.75, "y": 4, "w": 6.25}, + {"label": "r5_05", "x": 10, "y": 4, "w": 1.25}, + {"label": "r5_06", "x": 11.25, "y": 4, "w": 1.25}, + {"label": "r4_07", "x": 13, "y": 4}, + {"label": "r4_08", "x": 14, "y": 4}, + {"label": "r4_09", "x": 15, "y": 4} + ] + } + } +} diff --git a/keyboards/pizzakeyboards/pizza65/keymaps/ansi_blocker_doublebs/keymap.c b/keyboards/pizzakeyboards/pizza65/keymaps/ansi_blocker_doublebs/keymap.c new file mode 100644 index 0000000000..6111144b1d --- /dev/null +++ b/keyboards/pizzakeyboards/pizza65/keymaps/ansi_blocker_doublebs/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2020 'mm0nte' + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_ansi_blocker_doublebs( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_65_ansi_blocker_doublebs( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_DEL, KC_INS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, + RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END + ), +}; diff --git a/keyboards/pizzakeyboards/pizza65/keymaps/default/keymap.c b/keyboards/pizzakeyboards/pizza65/keymaps/default/keymap.c new file mode 100644 index 0000000000..faf803461d --- /dev/null +++ b/keyboards/pizzakeyboards/pizza65/keymaps/default/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2020 'mm0nte' + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_ansi_blocker( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_65_ansi_blocker( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_INS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, + RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END + ), +}; diff --git a/keyboards/pizzakeyboards/pizza65/keymaps/default/readme.md b/keyboards/pizzakeyboards/pizza65/keymaps/default/readme.md new file mode 100644 index 0000000000..bf78ffe048 --- /dev/null +++ b/keyboards/pizzakeyboards/pizza65/keymaps/default/readme.md @@ -0,0 +1 @@ +#Default keymap. Pretty Standard ANSI with blocker layout. diff --git a/keyboards/pizzakeyboards/pizza65/keymaps/iso_blocker/keymap.c b/keyboards/pizzakeyboards/pizza65/keymaps/iso_blocker/keymap.c new file mode 100644 index 0000000000..d05902ac6a --- /dev/null +++ b/keyboards/pizzakeyboards/pizza65/keymaps/iso_blocker/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2020 'mm0nte' + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_iso_blocker( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGDN, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_65_iso_blocker( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_INS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, + RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END + ), +}; diff --git a/keyboards/pizzakeyboards/pizza65/keymaps/iso_blocker_doublebs/keymap.c b/keyboards/pizzakeyboards/pizza65/keymaps/iso_blocker_doublebs/keymap.c new file mode 100644 index 0000000000..17008937c2 --- /dev/null +++ b/keyboards/pizzakeyboards/pizza65/keymaps/iso_blocker_doublebs/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2020 'mm0nte' + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_iso_blocker_doublebs( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_NUHS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_65_iso_blocker_doublebs( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_DEL, KC_INS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, + RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END + ), +}; diff --git a/keyboards/pizzakeyboards/pizza65/keymaps/via/keymap.c b/keyboards/pizzakeyboards/pizza65/keymaps/via/keymap.c new file mode 100644 index 0000000000..068f2d1d41 --- /dev/null +++ b/keyboards/pizzakeyboards/pizza65/keymaps/via/keymap.c @@ -0,0 +1,48 @@ +/* Copyright 2020 'mm0nte' + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_ansi_blocker( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_65_ansi_blocker( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_INS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, + RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END + ), + [2] = LAYOUT_65_ansi_blocker( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_65_ansi_blocker( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; diff --git a/keyboards/pizzakeyboards/pizza65/keymaps/via/readme.md b/keyboards/pizzakeyboards/pizza65/keymaps/via/readme.md new file mode 100644 index 0000000000..72be963a9c --- /dev/null +++ b/keyboards/pizzakeyboards/pizza65/keymaps/via/readme.md @@ -0,0 +1 @@ +#Keymap for enabling VIA compatibility. Same ANSI with blocker as default. diff --git a/keyboards/pizzakeyboards/pizza65/keymaps/via/rules.mk b/keyboards/pizzakeyboards/pizza65/keymaps/via/rules.mk new file mode 100644 index 0000000000..36b7ba9cbc --- /dev/null +++ b/keyboards/pizzakeyboards/pizza65/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/pizzakeyboards/pizza65/pizza65.c b/keyboards/pizzakeyboards/pizza65/pizza65.c new file mode 100644 index 0000000000..93d832af2b --- /dev/null +++ b/keyboards/pizzakeyboards/pizza65/pizza65.c @@ -0,0 +1,17 @@ +/* Copyright 2020 mmonte + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "pizza65.h" diff --git a/keyboards/pizzakeyboards/pizza65/pizza65.h b/keyboards/pizzakeyboards/pizza65/pizza65.h new file mode 100644 index 0000000000..7331f4c4a0 --- /dev/null +++ b/keyboards/pizzakeyboards/pizza65/pizza65.h @@ -0,0 +1,86 @@ +/* Copyright 2020 mmonte + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ + + #define LAYOUT_65_ansi_blocker( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, K0F, \ + K10, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, \ + K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, K2F, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, K3F, \ + K40, K41, K42, K46, K4A, K4B, K4D, K4E, K4F \ + ) \ + { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, KC_NO, K0E, K0F }, \ + { K10, KC_NO, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \ + { K20, KC_NO, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KC_NO, K2E, K2F }, \ + { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, K3E, K3F }, \ + { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, KC_NO, K4D, K4E, K4F }, \ + } + + #define LAYOUT_65_iso_blocker( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, K0F, \ + K10, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1F, \ + K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, K3F, \ + K40, K41, K42, K46, K4A, K4B, K4D, K4E, K4F \ + ) \ + { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, KC_NO, K0E, K0F }, \ + { K10, KC_NO, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K2D, K1F }, \ + { K20, KC_NO, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KC_NO, K2E, K2F }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, K3E, K3F }, \ + { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, KC_NO, K4D, K4E, K4F }, \ + } + #define LAYOUT_65_ansi_blocker_doublebs( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, \ + K10, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, \ + K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, K2F, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, K3F, \ + K40, K41, K42, K46, K4A, K4B, K4D, K4E, K4F \ + ) \ + { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \ + { K10, KC_NO, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \ + { K20, KC_NO, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KC_NO, K2E, K2F }, \ + { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, K3E, K3F }, \ + { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, KC_NO, K4D, K4E, K4F }, \ + } +#define LAYOUT_65_iso_blocker_doublebs( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, \ + K10, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, \ + K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, K2F, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, K3F, \ + K40, K41, K42, K46, K4A, K4B, K4D, K4E, K4F \ + ) \ + { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \ + { K10, KC_NO, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \ + { K20, KC_NO, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KC_NO, K2E, K2F }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, K3E, K3F }, \ + { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, KC_NO, K4D, K4E, K4F }, \ + } diff --git a/keyboards/pizzakeyboards/pizza65/readme.md b/keyboards/pizzakeyboards/pizza65/readme.md new file mode 100644 index 0000000000..8db9931e23 --- /dev/null +++ b/keyboards/pizzakeyboards/pizza65/readme.md @@ -0,0 +1,19 @@ +# Pizza Keyboards Pizza65 + +Pizza65 is the first project from Pizza Keyboards: a seamless design 65% top-mount board, designed in Italy and made in Germany. + +![pizza65](https://i.imgur.com/VxRVrK9l.jpg) + +* Keyboard Maintainer: [mm0nte](https://github.com/mm0nte) +* Hardware Supported: PizzaPCB for Pizza65 +* Hardware Availability: www.keyboards.pizza + +Make example for this keyboard (after setting up your build environment): + + make pizzakeyboards/pizza65:default + +Flashing example for this keyboard: + + make pizzakeyboards/pizza65:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/pizzakeyboards/pizza65/rules.mk b/keyboards/pizzakeyboards/pizza65/rules.mk new file mode 100644 index 0000000000..2889fe9f34 --- /dev/null +++ b/keyboards/pizzakeyboards/pizza65/rules.mk @@ -0,0 +1,19 @@ +# MCU name +MCU = STM32F072 + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output From f75420c209cf5535ed1599504d1a52059f21bc22 Mon Sep 17 00:00:00 2001 From: James Young <18669334+noroadsleft@users.noreply.github.com> Date: Tue, 16 Mar 2021 00:00:59 -0700 Subject: [PATCH 066/613] box75: fix key positioning in info.json (#12256) * fix key positioning for box75 --- keyboards/box75/info.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/keyboards/box75/info.json b/keyboards/box75/info.json index 7f854b0a5d..1fe97f296a 100644 --- a/keyboards/box75/info.json +++ b/keyboards/box75/info.json @@ -71,7 +71,8 @@ {"x":12.75, "y":3.25, "w":2.25}, {"x":15.25, "y":3.25}, - {"x":0, "y":4.25, "w":2.25}, + {"x":0, "y":4.25, "w":1.25}, + {"x":1.25, "y":4.25}, {"x":2.25, "y":4.25}, {"x":3.25, "y":4.25}, {"x":4.25, "y":4.25}, @@ -90,9 +91,8 @@ {"x":1.25, "y":5.25, "w":1.25}, {"x":2.5, "y":5.25, "w":1.25}, {"x":3.75, "y":5.25, "w":6.25}, - {"x":10, "y":5.25}, - {"x":11, "y":5.25}, - {"x":12, "y":5.25}, + {"x":10, "y":5.25, "w":1.5}, + {"x":11.5, "y":5.25, "w":1.5}, {"x":13.125, "y":5.375}, {"x":14.125, "y":5.375}, {"x":15.125, "y":5.375} From e941ae38110c616884acbb7447350b150cdb9d4d Mon Sep 17 00:00:00 2001 From: Simon Arlott <70171+nomis@users.noreply.github.com> Date: Wed, 17 Mar 2021 01:39:09 +0000 Subject: [PATCH 067/613] [Keyboard] Add YMDK NP24 (ATmega32U4 with 6 RGB LEDs) (#12120) --- keyboards/ymdk/np24/u4rgb6/config.h | 55 ++++++++++ keyboards/ymdk/np24/u4rgb6/info.json | 102 ++++++++++++++++++ .../ymdk/np24/u4rgb6/keymaps/default/keymap.c | 49 +++++++++ .../np24/u4rgb6/keymaps/default/readme.md | 29 +++++ keyboards/ymdk/np24/u4rgb6/readme.md | 18 ++++ keyboards/ymdk/np24/u4rgb6/rules.mk | 24 +++++ keyboards/ymdk/np24/u4rgb6/u4rgb6.c | 16 +++ keyboards/ymdk/np24/u4rgb6/u4rgb6.h | 67 ++++++++++++ 8 files changed, 360 insertions(+) create mode 100644 keyboards/ymdk/np24/u4rgb6/config.h create mode 100644 keyboards/ymdk/np24/u4rgb6/info.json create mode 100644 keyboards/ymdk/np24/u4rgb6/keymaps/default/keymap.c create mode 100644 keyboards/ymdk/np24/u4rgb6/keymaps/default/readme.md create mode 100644 keyboards/ymdk/np24/u4rgb6/readme.md create mode 100644 keyboards/ymdk/np24/u4rgb6/rules.mk create mode 100644 keyboards/ymdk/np24/u4rgb6/u4rgb6.c create mode 100644 keyboards/ymdk/np24/u4rgb6/u4rgb6.h diff --git a/keyboards/ymdk/np24/u4rgb6/config.h b/keyboards/ymdk/np24/u4rgb6/config.h new file mode 100644 index 0000000000..dc86ae344b --- /dev/null +++ b/keyboards/ymdk/np24/u4rgb6/config.h @@ -0,0 +1,55 @@ +/* Copyright 2021 Simon Arlott + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x594D +#define PRODUCT_ID 0x5024 +#define DEVICE_VER 0x0406 +#define MANUFACTURER YMDK +#define PRODUCT NP24 U4 RGB6 + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 4 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { B3, B6, B2, B1, D7, B4 } +#define MATRIX_COL_PINS { F5, F4, D3, D2 } + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION ROW2COL + +/* LED indicator pins */ +#define LED_NUM_LOCK_PIN C6 +#define LED_PIN_ON_STATE 0 + +/* number of backlight levels */ +#define BACKLIGHT_PIN B7 +#ifdef BACKLIGHT_PIN +# define BACKLIGHT_LEVELS 31 +#endif + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +#define RGB_DI_PIN E2 +#ifdef RGB_DI_PIN +# define RGBLED_NUM 6 +# define RGBLIGHT_ANIMATIONS +#endif diff --git a/keyboards/ymdk/np24/u4rgb6/info.json b/keyboards/ymdk/np24/u4rgb6/info.json new file mode 100644 index 0000000000..313eeabff7 --- /dev/null +++ b/keyboards/ymdk/np24/u4rgb6/info.json @@ -0,0 +1,102 @@ +{ + "keyboard_name": "YMDK NP24 U4 RGB6", + "maintainer": "qmk", + "width": 4, + "height": 6.25, + "layouts": { + "LAYOUT_ortho_6x4": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + + {"x": 0, "y": 1.25}, + {"x": 1, "y": 1.25}, + {"x": 2, "y": 1.25}, + {"x": 3, "y": 1.25}, + + {"x": 0, "y": 2.25}, + {"x": 1, "y": 2.25}, + {"x": 2, "y": 2.25}, + {"x": 3, "y": 2.25}, + + {"x": 0, "y": 3.25}, + {"x": 1, "y": 3.25}, + {"x": 2, "y": 3.25}, + {"x": 3, "y": 3.25}, + + {"x": 0, "y": 4.25}, + {"x": 1, "y": 4.25}, + {"x": 2, "y": 4.25}, + {"x": 3, "y": 4.25}, + + {"x": 0, "y": 5.25}, + {"x": 1, "y": 5.25}, + {"x": 2, "y": 5.25}, + {"x": 3, "y": 5.25} + ] + }, + "LAYOUT_ortho_4x6": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5.25, "y": 0}, + + {"x": 0, "y": 1}, + {"x": 1, "y": 1}, + {"x": 2, "y": 1}, + {"x": 3, "y": 1}, + {"x": 4, "y": 1}, + {"x": 5.25, "y": 1}, + + {"x": 0, "y": 2}, + {"x": 1, "y": 2}, + {"x": 2, "y": 2}, + {"x": 3, "y": 2}, + {"x": 4, "y": 2}, + {"x": 5.25, "y": 2}, + + {"x": 0, "y": 3}, + {"x": 1, "y": 3}, + {"x": 2, "y": 3}, + {"x": 3, "y": 3}, + {"x": 4, "y": 3}, + {"x": 5.25, "y": 3} + ] + }, + "LAYOUT_numpad_6x4": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + + {"x": 0, "y": 1.25}, + {"x": 1, "y": 1.25}, + {"x": 2, "y": 1.25}, + {"x": 3, "y": 1.25}, + + {"x": 0, "y": 2.25}, + {"x": 1, "y": 2.25}, + {"x": 2, "y": 2.25}, + + {"x": 0, "y": 3.25}, + {"x": 1, "y": 3.25}, + {"x": 2, "y": 3.25}, + {"x": 3, "y": 2.25, "h": 2}, + + {"x": 0, "y": 4.25}, + {"x": 1, "y": 4.25}, + {"x": 2, "y": 4.25}, + + {"x": 0, "y": 5.25, "w": 2}, + {"x": 2, "y": 5.25}, + {"x": 3, "y": 4.25, "h": 2} + ] + } + } +} diff --git a/keyboards/ymdk/np24/u4rgb6/keymaps/default/keymap.c b/keyboards/ymdk/np24/u4rgb6/keymaps/default/keymap.c new file mode 100644 index 0000000000..48ec3599d7 --- /dev/null +++ b/keyboards/ymdk/np24/u4rgb6/keymaps/default/keymap.c @@ -0,0 +1,49 @@ +/* Copyright 2021 Simon Arlott + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layer_names { + L_NUM, + L_BL, + L_RGB +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [L_NUM] = LAYOUT_ortho_6x4( + KC_ESC, KC_CALC, MO(L_BL),MO(L_RGB), + KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_P1, KC_P2, KC_P3, KC_PENT, + KC_P0, KC_P0, KC_PDOT, KC_PENT + ), + [L_BL] = LAYOUT_ortho_6x4( + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, BL_ON, _______, BL_INC, + _______, BL_TOGG, _______, BL_INC, + _______, BL_OFF, _______, BL_DEC, + BL_BRTG, _______, _______, BL_DEC + ), + [L_RGB] = LAYOUT_ortho_6x4( + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, RGB_MOD, _______, RGB_VAI, + _______, RGB_TOG, _______, RGB_VAI, + _______, RGB_RMOD,_______, RGB_VAD, + RGB_M_R, _______, _______, RGB_VAD + ) +}; diff --git a/keyboards/ymdk/np24/u4rgb6/keymaps/default/readme.md b/keyboards/ymdk/np24/u4rgb6/keymaps/default/readme.md new file mode 100644 index 0000000000..7bcf47f3a9 --- /dev/null +++ b/keyboards/ymdk/np24/u4rgb6/keymaps/default/readme.md @@ -0,0 +1,29 @@ +# The default keymap for the YMDK NP24 keypad + +Not the manufacturer default, which has F1, F2, F3, Fn on the top row. +The function layer for the top row was: RGB_MOD, BL_STEP, ______, ______. + +``` +Base Layer Function Layer 1 Function Layer 2 + .-----. .-----. .-----. + | USB | | USB | | USB | +,-------------------------------. ,-------------------------------. ,-------------------------------. +| Esc | Calc | Fn 1 | Fn 2 | | | |â–’â–’â–’â–’â–’â–’â–’| | | | | |â–’â–’â–’â–’â–’â–’â–’| +| | | | | | | |â–’â–’â–’â–’â–’â–’â–’| | | | | |â–’â–’â–’â–’â–’â–’â–’| +|-------+-------+-------+-------| |-------+-------+-------+-------| |-------+-------+-------+-------| +| Num | / | * | - | | | | | | | | | | | +| Lock | | | | | | | | | | | | | | +|-------+-------+-------+-------| |-------+-------+-------+-------| |-------+-------+-------+-------| +| 7 | 8 | 9 | + | | | BL | | BL | | |Mode | |Bright | +| Home | Up | PgUp | | | | On | | Inc | | |Forward| |Inc | +|-------+-------+-------+-------| |-------+-------+-------+-------| |-------+-------+-------+-------| +| 4 | 5 | 6 | + | | | BL | | BL | | |Toggle | |Bright | +| Left | | Right | | | | Togg | | Inc | | |On/Off | |Inc | +|-------+-------+-------+-------| |-------+-------+-------+-------| |-------+-------+-------+-------| +| 1 | 2 | 3 | Ent | | | BL | | BL | | |Mode | |Bright | +| End | Down | PgDn | | | | Off | | Dec | | |Back | |Dec | +|-------+-------+-------+-------| |-------+-------+-------+-------| |-------+-------+-------+-------| +| 0 | 0 | . | Ent | | BL | | | BL | |Mode | | |Bright | +| Ins | Ins | Del | | | Breath| | | Dec | |Rainbow| | |Dec | +`-------------------------------' `-------------------------------' `-------------------------------' +``` diff --git a/keyboards/ymdk/np24/u4rgb6/readme.md b/keyboards/ymdk/np24/u4rgb6/readme.md new file mode 100644 index 0000000000..53e74f2de6 --- /dev/null +++ b/keyboards/ymdk/np24/u4rgb6/readme.md @@ -0,0 +1,18 @@ +# YMDK NP24 U4 RGB6 + +24 key number-pad with 6 RGB LEDs on the bottom (black PCB) sold by YMDK on Aliexpress (https://ymdk.aliexpress.com/store/429151). + +Not to be confused with the 8 RGB LED version (white PCB) that has an ATmega32A ("ymdk_np21"). + +* Keyboard Maintainer: [QMK Community](https://github.com/qmk) +* Hardware Supported: ATmega32U4 + +Make example for this keyboard (after setting up your build environment): + + make ymdk/np24/u4rgb6:default + +Flashing example for this keyboard: + + make ymdk/np24/u4rgb6:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/ymdk/np24/u4rgb6/rules.mk b/keyboards/ymdk/np24/u4rgb6/rules.mk new file mode 100644 index 0000000000..625a433f92 --- /dev/null +++ b/keyboards/ymdk/np24/u4rgb6/rules.mk @@ -0,0 +1,24 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output + +LAYOUTS = ortho_6x4 numpad_6x4 ortho_4x6 diff --git a/keyboards/ymdk/np24/u4rgb6/u4rgb6.c b/keyboards/ymdk/np24/u4rgb6/u4rgb6.c new file mode 100644 index 0000000000..edd0c0552d --- /dev/null +++ b/keyboards/ymdk/np24/u4rgb6/u4rgb6.c @@ -0,0 +1,16 @@ +/* Copyright 2021 Simon Arlott + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "u4rgb6.h" diff --git a/keyboards/ymdk/np24/u4rgb6/u4rgb6.h b/keyboards/ymdk/np24/u4rgb6/u4rgb6.h new file mode 100644 index 0000000000..83ec486887 --- /dev/null +++ b/keyboards/ymdk/np24/u4rgb6/u4rgb6.h @@ -0,0 +1,67 @@ +/* Copyright 2017 Luiz Ribeiro + * Copyright 2021 Simon Arlott + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + +#define LAYOUT_ortho_6x4( \ + k00, k10, k20, k30, \ + k01, k11, k21, k31, \ + k02, k12, k22, k32, \ + k03, k13, k23, k33, \ + k04, k14, k24, k34, \ + k05, k15, k25, k35 \ +) { \ + { k00, k10, k20, k30 }, \ + { k01, k11, k21, k31 }, \ + { k02, k12, k22, k32 }, \ + { k03, k13, k23, k33 }, \ + { k04, k14, k24, k34 }, \ + { k05, k15, k25, k35 } \ +} + +#define LAYOUT_ortho_4x6( \ + k00, k01, k02, k03, k04, k05, \ + k10, k11, k12, k13, k14, k15, \ + k20, k21, k22, k23, k24, k25, \ + k30, k31, k32, k33, k34, k35 \ +) { \ + { k00, k10, k20, k30 }, \ + { k01, k11, k21, k31 }, \ + { k02, k12, k22, k32 }, \ + { k03, k13, k23, k33 }, \ + { k04, k14, k24, k34 }, \ + { k05, k15, k25, k35 } \ +} + +#define LAYOUT_numpad_6x4( \ + k00, k10, k20, k30, \ + k01, k11, k21, k31, \ + k02, k12, k22, \ + k03, k13, k23, k33, \ + k04, k14, k24, \ + k15, k25, k35 \ +) { \ + { k00, k10, k20, k30 }, \ + { k01, k11, k21, k31 }, \ + { k02, k12, k22, XXX }, \ + { k03, k13, k23, k33 }, \ + { k04, k14, k24, XXX }, \ + { XXX, k15, k25, k35 } \ +} From 554b73643dc1bf8cd9b0a0fc6ad137753b2e4ffa Mon Sep 17 00:00:00 2001 From: Gavin Austin <37852683+vk2fgav@users.noreply.github.com> Date: Wed, 17 Mar 2021 13:23:35 +1100 Subject: [PATCH 068/613] [Keyboard] Added Roses Lite Support (#12173) Co-authored-by: Ryan --- keyboards/roseslite/config.h | 131 ++++++++++++++++++ keyboards/roseslite/info.json | 100 +++++++++++++ keyboards/roseslite/keymaps/default/keymap.c | 34 +++++ keyboards/roseslite/keymaps/default/readme.md | 1 + keyboards/roseslite/keymaps/via/keymap.c | 49 +++++++ keyboards/roseslite/keymaps/via/rules.mk | 1 + keyboards/roseslite/readme.md | 16 +++ keyboards/roseslite/roseslite.c | 16 +++ keyboards/roseslite/roseslite.h | 42 ++++++ keyboards/roseslite/rules.mk | 22 +++ 10 files changed, 412 insertions(+) create mode 100644 keyboards/roseslite/config.h create mode 100644 keyboards/roseslite/info.json create mode 100644 keyboards/roseslite/keymaps/default/keymap.c create mode 100644 keyboards/roseslite/keymaps/default/readme.md create mode 100644 keyboards/roseslite/keymaps/via/keymap.c create mode 100644 keyboards/roseslite/keymaps/via/rules.mk create mode 100644 keyboards/roseslite/readme.md create mode 100644 keyboards/roseslite/roseslite.c create mode 100644 keyboards/roseslite/roseslite.h create mode 100644 keyboards/roseslite/rules.mk diff --git a/keyboards/roseslite/config.h b/keyboards/roseslite/config.h new file mode 100644 index 0000000000..48e251e96d --- /dev/null +++ b/keyboards/roseslite/config.h @@ -0,0 +1,131 @@ +/* +Copyright 2019 Fate + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xDE17 +#define PRODUCT_ID 0x0000 +#define DEVICE_VER 0x0001 +#define MANUFACTURER DeltaDesigns +#define PRODUCT roseslite + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 } +#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B6, D4, B1, B0, B7, B5, B4, D7, D6, B3 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +// #define BACKLIGHT_PIN B7 +// #define BACKLIGHT_BREATHING +// #define BACKLIGHT_LEVELS 3 + +// #define RGB_DI_PIN E2 +// #ifdef RGB_DI_PIN +// #define RGBLED_NUM 16 +// #define RGBLIGHT_HUE_STEP 8 +// #define RGBLIGHT_SAT_STEP 8 +// #define RGBLIGHT_VAL_STEP 8 +// #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +// #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +// /*== all animations enable ==*/ +// #define RGBLIGHT_ANIMATIONS +// /*== or choose animations ==*/ +// #define RGBLIGHT_EFFECT_BREATHING +// #define RGBLIGHT_EFFECT_RAINBOW_MOOD +// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL +// #define RGBLIGHT_EFFECT_SNAKE +// #define RGBLIGHT_EFFECT_KNIGHT +// #define RGBLIGHT_EFFECT_CHRISTMAS +// #define RGBLIGHT_EFFECT_STATIC_GRADIENT +// #define RGBLIGHT_EFFECT_RGB_TEST +// #define RGBLIGHT_EFFECT_ALTERNATING +// #endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is userful for the Windows task manager shortcut (ctrl+shift+esc). + */ +// #define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION diff --git a/keyboards/roseslite/info.json b/keyboards/roseslite/info.json new file mode 100644 index 0000000000..88a7ac25f3 --- /dev/null +++ b/keyboards/roseslite/info.json @@ -0,0 +1,100 @@ +{ + "keyboard_name": "roses lite", + "url": "delta-design.xyz", + "maintainer": "Reason6/Vk2fgav", + "width": 18, + "height": 5, + "layouts": { + "LAYOUT": { + "layout": [ + {"x": 0, "y": 0}, + + {"x": 1.5, "y": 0}, + {"x": 2.5, "y": 0}, + {"x": 3.5, "y": 0}, + {"x": 4.5, "y": 0}, + {"x": 5.5, "y": 0}, + {"x": 6.5, "y": 0}, + {"x": 7.5, "y": 0}, + + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + {"x": 15, "y": 0}, + {"x": 16, "y": 0}, + {"x": 17, "y": 0}, + + {"x": 18.5, "y": 0}, + + {"x": 0, "y": 1}, + + {"x": 1.5, "y": 1, "w": 1.5}, + {"x": 3, "y": 1}, + {"x": 4, "y": 1}, + {"x": 5, "y": 1}, + {"x": 6, "y": 1}, + {"x": 7, "y": 1}, + + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + {"x": 13.5, "y": 1}, + {"x": 14.5, "y": 1}, + {"x": 15.5, "y": 1}, + {"x": 16.5, "y": 1, "w": 1.5}, + + {"x": 18.5, "y": 1}, + + {"x": 0, "y": 2}, + + {"x": 1.5, "y": 2, "w": 1.75}, + {"x": 3.25, "y": 2}, + {"x": 4.25, "y": 2}, + {"x": 5.25, "y": 2}, + {"x": 6.25, "y": 2}, + {"x": 7.25, "y": 2}, + + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2}, + {"x": 13.75, "y": 2}, + {"x": 14.75, "y": 2}, + {"x": 15.75, "y": 2, "w": 2.25}, + + {"x": 18.5, "y": 2}, + + {"x": 1.5, "y": 3, "w": 2}, + {"x": 3.5, "y": 3}, + {"x": 4.5, "y": 3}, + {"x": 5.5, "y": 3}, + {"x": 6.5, "y": 3}, + {"x": 7.5, "y": 3}, + + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3}, + {"x": 12.25, "y": 3}, + {"x": 13.25, "y": 3}, + {"x": 14.25, "y": 3}, + {"x": 15.25, "y": 3, "w": 1.75}, + + {"x": 17.5, "y": 3}, + + {"x": 1.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 1.25}, + {"x": 5, "y": 4, "w": 2.75}, + {"x": 7.75, "y": 4}, + + {"x": 10.25, "y": 4, "w": 2.75}, + {"x": 13, "y": 4, "w": 1.25}, + + {"x": 16.5, "y": 4}, + {"x": 17.5, "y": 4}, + {"x": 18.5, "y": 4} + ] + } + } +} diff --git a/keyboards/roseslite/keymaps/default/keymap.c b/keyboards/roseslite/keymaps/default/keymap.c new file mode 100644 index 0000000000..0c224a7385 --- /dev/null +++ b/keyboards/roseslite/keymaps/default/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2021 vk2fgav + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, MO(1), + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_HOME, KC_END, KC_INS, KC_RCTL, KC_LALT, KC_SPC, KC_LGUI, KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, + _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/roseslite/keymaps/default/readme.md b/keyboards/roseslite/keymaps/default/readme.md new file mode 100644 index 0000000000..6598b04bdc --- /dev/null +++ b/keyboards/roseslite/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for roses_lite \ No newline at end of file diff --git a/keyboards/roseslite/keymaps/via/keymap.c b/keyboards/roseslite/keymaps/via/keymap.c new file mode 100644 index 0000000000..a7a513e9b2 --- /dev/null +++ b/keyboards/roseslite/keymaps/via/keymap.c @@ -0,0 +1,49 @@ +/* Copyright 2021 vk2fgav + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, MO(1), + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_HOME, KC_END, KC_INS, KC_RCTL, KC_LALT, KC_SPC, KC_LGUI, KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, + _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [2] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, + _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, + _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/roseslite/keymaps/via/rules.mk b/keyboards/roseslite/keymaps/via/rules.mk new file mode 100644 index 0000000000..036bd6d1c3 --- /dev/null +++ b/keyboards/roseslite/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/roseslite/readme.md b/keyboards/roseslite/readme.md new file mode 100644 index 0000000000..02eb139678 --- /dev/null +++ b/keyboards/roseslite/readme.md @@ -0,0 +1,16 @@ +# Roses Lite + + +* Keyboard Maintainer: [Reason6/Vk2fgav](https://github.com/vk2fgav) +* Hardware Supported: Roses Series +* Hardware Availability: [Shop](http://delta-design.xyz) + +Make example for this keyboard (after setting up your build environment): + + make roseslite:default + +Flashing example for this keyboard: + + make roseslite:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/roseslite/roseslite.c b/keyboards/roseslite/roseslite.c new file mode 100644 index 0000000000..fa3a93fed7 --- /dev/null +++ b/keyboards/roseslite/roseslite.c @@ -0,0 +1,16 @@ +/* Copyright 2019 Fate + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "roseslite.h" diff --git a/keyboards/roseslite/roseslite.h b/keyboards/roseslite/roseslite.h new file mode 100644 index 0000000000..78340d9aa2 --- /dev/null +++ b/keyboards/roseslite/roseslite.h @@ -0,0 +1,42 @@ +/* Copyright 2021 vk2fgav + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +/* This a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define XXX KC_NO +#define LAYOUT( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k1E, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k2E, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k3E, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3D, \ + k40, k41, k42, k45, k47, k48, k49, k4A, k4B, k4C, k4D, k4E \ +) \ +{ \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, XXX, k2E }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, XXX, k3D, k3E }, \ + { k40, k41, k42, XXX, XXX, k45, XXX, k47, k48, k49, k4A, k4B, k4C, k4D, k4E} \ +} diff --git a/keyboards/roseslite/rules.mk b/keyboards/roseslite/rules.mk new file mode 100644 index 0000000000..32981133b2 --- /dev/null +++ b/keyboards/roseslite/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output From 6af387ec6f5228e9d268dc925cef5bddbd02a3ee Mon Sep 17 00:00:00 2001 From: stanrc85 <47038504+stanrc85@users.noreply.github.com> Date: Tue, 16 Mar 2021 22:44:13 -0400 Subject: [PATCH 069/613] [Keymap] stanrc85 keymap updates (#12184) --- layouts/community/alice/stanrc85-alice/keymap.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/layouts/community/alice/stanrc85-alice/keymap.c b/layouts/community/alice/stanrc85-alice/keymap.c index 743f8f7df5..d1ace8b8e5 100644 --- a/layouts/community/alice/stanrc85-alice/keymap.c +++ b/layouts/community/alice/stanrc85-alice/keymap.c @@ -36,8 +36,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_FN1_60] = LAYOUT_alice( _______, KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, - _______, _______, _______, CA_QUOT, KC_VOLU, CA_SCLN, _______, _______, KC_HOME, KC_UP, KC_END, KC_PSCR, _______, _______, KC_INS, - _______, KC_CAPS, _______, KC_MUTE, KC_VOLD, KC_MPLY, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, + _______, _______, _______, CA_QUOT, _______, CA_SCLN, KC_VOLU, KC_PGUP, KC_BSPC, KC_UP, KC_DEL, KC_PSCR, _______, _______, KC_INS, + _______, KC_CAPS, _______, _______, KC_LCTL, KC_LSFT, KC_VOLD, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, KC_RDP, _______, _______, _______, _______, _______, _______, KC_WBAK, KC_WFWD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), From 3c4972a53f9c68b0838ffb1cdd5bb31d06a1b4a2 Mon Sep 17 00:00:00 2001 From: Kyle McAlpine Date: Wed, 17 Mar 2021 02:49:48 +0000 Subject: [PATCH 070/613] [Keyboard] Fix issue with process_record_kb in Torn (#12189) --- keyboards/torn/bongocat.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/torn/bongocat.c b/keyboards/torn/bongocat.c index 2280143a7d..593cd5d4ae 100644 --- a/keyboards/torn/bongocat.c +++ b/keyboards/torn/bongocat.c @@ -373,7 +373,7 @@ void oled_task_user(void) { bool process_record_kb(uint16_t keycode, keyrecord_t *record) { sleep_timer = timer_read32(); - return true; + return process_record_user(keycode, record); } #endif From 57de02c9f290d26927778b1bf7b1cfa41090a436 Mon Sep 17 00:00:00 2001 From: peepeetee <43021794+peepeetee@users.noreply.github.com> Date: Tue, 16 Mar 2021 22:05:20 -0500 Subject: [PATCH 071/613] [Keyboard] fix bm68rgb default keymap (#12199) --- keyboards/bm68rgb/keymaps/default/keymap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/bm68rgb/keymaps/default/keymap.c b/keyboards/bm68rgb/keymaps/default/keymap.c index 4bd7d5974e..eec3b3c264 100644 --- a/keyboards/bm68rgb/keymaps/default/keymap.c +++ b/keyboards/bm68rgb/keymaps/default/keymap.c @@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1),KC_RCTRL, KC_LEFT, KC_DOWN, KC_RGHT ), [1] = LAYOUT_65_ansi( From 4e8a218d175476664258333d89582c243969825f Mon Sep 17 00:00:00 2001 From: Mojitas <47667093+Mojitas@users.noreply.github.com> Date: Wed, 17 Mar 2021 04:09:45 +0100 Subject: [PATCH 072/613] [Keymap] Mojito - removed layer macros (#12201) Co-authored-by: Ryan --- .../keebio/iris/keymaps/mojitas/config.h | 12 +- .../keebio/iris/keymaps/mojitas/keymap.c | 154 +++++++++--------- 2 files changed, 91 insertions(+), 75 deletions(-) diff --git a/keyboards/keebio/iris/keymaps/mojitas/config.h b/keyboards/keebio/iris/keymaps/mojitas/config.h index 149a54be7f..24aecb9f84 100644 --- a/keyboards/keebio/iris/keymaps/mojitas/config.h +++ b/keyboards/keebio/iris/keymaps/mojitas/config.h @@ -1,5 +1,5 @@ /* -Copyright 2017 Danny Nguyen +Copyright 2021 Mathias Strand This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -17,5 +17,13 @@ along with this program. If not, see . #pragma once +/* Use I2C or Serial, not both */ + +#define USE_SERIAL // #define USE_I2C -#define EE_HANDS + +/* Select hand configuration */ + +#define MASTER_LEFT +//#define MASTER_RIGHT +// #define EE_HANDS diff --git a/keyboards/keebio/iris/keymaps/mojitas/keymap.c b/keyboards/keebio/iris/keymaps/mojitas/keymap.c index 548bffc650..2ecfc0f6a1 100644 --- a/keyboards/keebio/iris/keymaps/mojitas/keymap.c +++ b/keyboards/keebio/iris/keymaps/mojitas/keymap.c @@ -1,18 +1,29 @@ +/* +Copyright 2021 Mathias Strand + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + #include QMK_KEYBOARD_H #include "keymap_swedish.h" -//Heavily modified keymap. Some features: -//Multiple layouts, I use dvorak as main. //Nordic(swedish) signs -//Symbols, numpad, arrows/navigation reachable under the alpas via the layers -//Mirrored ctl, alt and shift to be able to use both hands when doing commands -//Gaming layer, qwerty with space on left half. enum layer_names { _DVORAK, _COLEMAK, _QWERTY, - _WORKMAN, _GAMING, _NUMPAD, _LOWER, @@ -20,13 +31,16 @@ enum layer_names { _ADJUST }; + enum custom_keycodes { QWERTY = SAFE_RANGE, DVORAK, COLEMAK, - WORKMAN, GAMING, NUMPAD, + LOWER, + RAISE, + ADJUST }; #define KC_ KC_TRNS @@ -34,16 +48,13 @@ enum custom_keycodes { #define SE_YEN ALGR(SE_6) //isn't in the swedish_keymap.h #define KC_CATDEL LCTL(LALT(KC_DEL)) // Ctrl alt del #define KC_TSKMGR LCTL(S(KC_ESC)) // Ctrl shift esc -#define KC_NUMP TG(_NUMPAD) // Toggle layer NUMPAD for use in LAYOUT_kc #define KC_Close RALT(KC_F4) // Alt F4 -#define KC_MEH1 MEH(KC_1) -#define KC_MEH2 MEH(KC_2) -#define KC_MEH3 MEH(KC_3) -#define KC_MEH4 MEH(KC_4) -#define KC_MEH5 MEH(KC_5) +#define KC_MEH1 MEH(KC_1) // crtl shift alt 1 +#define KC_MEH2 MEH(KC_2) // +#define KC_MEH3 MEH(KC_3) // +#define KC_MEH4 MEH(KC_4) // +#define KC_MEH5 MEH(KC_5) // -#define KC_LOWR MO(_LOWER) -#define KC_RASE MO(_RAISE) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { @@ -51,13 +62,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //,--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------. KC_DEL , KC_APP , KC_VOLD, KC_MUTE, KC_VOLU, KC_LGUI, KC_GRV , KC_MPRV, KC_MPLY, KC_MNXT, KC_DOWN, KC_ESC , //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - KC_TAB , KC_Q , KC_W , KC_E , KC_ R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , SE_ARNG, + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , SE_ARNG, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| KC_LCTL, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , SE_ODIA, SE_ADIA, //|--------+--------+--------+--------+--------+--------+--------. ,--------|--------+--------+--------+--------+--------+--------| - KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_NUMP, KC_ENT , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, + KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , NUMPAD, KC_ENT , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, //`--------+--------+--------+----+---+--------+--------+--------/ \--------+--------+--------+---+----+--------+--------+--------' - KC_LALT, KC_LOWR, KC_BSPC, KC_SPC , KC_RASE, KC_LALT + KC_LALT, LOWER, KC_BSPC, KC_SPC , RAISE , KC_LALT // `--------+--------+--------' `--------+--------+--------' ), @@ -65,13 +76,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //,--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------. KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_ESC , //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - KC_TAB , KC_Q , KC_W , KC_E , KC_ R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_DEL , + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_DEL , //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| KC_LCTL, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , SE_ODIA, KC_RCTL, //|--------+--------+--------+--------+--------+--------+--------. ,--------|--------+--------+--------+--------+--------+--------| - KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_NUMP, KC_ENT , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, + KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , NUMPAD, KC_ENT , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, //`--------+--------+--------+----+---+--------+--------+--------/ \--------+--------+--------+---+----+--------+--------+--------' - KC_LALT, KC_LOWR, KC_BSPC, KC_SPC , KC_RASE, KC_LALT + KC_LALT, LOWER , KC_BSPC, KC_SPC , RAISE, KC_LALT // `--------+--------+--------' `--------+--------+--------' ), @@ -83,9 +94,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| KC_LCTL, KC_A , KC_O , KC_E , KC_U , KC_I , KC_D , KC_H , KC_T , KC_N , KC_S ,KC_RCTL , //|--------+--------+--------+--------+--------+--------+--------. ,--------|--------+--------+--------+--------+--------+--------| - KC_LSFT, KC_DOT , KC_Q , KC_J , KC_K , KC_X , KC_NUMP, KC_ENT , KC_B , KC_M , KC_W , KC_V , KC_Z ,KC_RSFT , + KC_LSFT, KC_DOT , KC_Q , KC_J , KC_K , KC_X , NUMPAD, KC_ENT , KC_B , KC_M , KC_W , KC_V , KC_Z ,KC_RSFT , //`--------+--------+--------+----+---+--------+--------+--------/ \--------+--------+--------+---+----+--------+--------+--------' - KC_LALT, KC_LOWR, KC_BSPC, KC_SPC , KC_RASE, KC_LALT + KC_LALT, LOWER, KC_BSPC, KC_SPC , RAISE, KC_LALT // `--------+--------+--------' `--------+--------+--------' ), @@ -97,37 +108,24 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| KC_LCTL, KC_A , KC_R , KC_S , KC_T , KC_D , KC_H , KC_N , KC_E , KC_I , KC_O , SE_ODIA, //|--------+--------+--------+--------+--------+--------+--------. ,--------|--------+--------+--------+--------+--------+--------| - KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_NUMP, KC_ENT , KC_K , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, + KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , NUMPAD, KC_ENT , KC_K , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, //`--------+--------+--------+----+---+--------+--------+--------/ \--------+--------+--------+---+----+--------+--------+--------' - KC_LALT, KC_LOWR, KC_BSPC, KC_SPC , KC_RASE, KC_LALT + KC_LALT, LOWER, KC_BSPC, KC_SPC , RAISE, KC_LALT // `--------+--------+--------' `--------+--------+--------' ), -[_WORKMAN] = LAYOUT( - //,--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------. - KC_DEL , KC_APP , KC_VOLD, KC_MUTE, KC_VOLU, KC_LGUI, KC_GRV , KC_MPRV, KC_MPLY, KC_MNXT, KC_DOWN, KC_ESC , - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - KC_TAB , KC_Q , KC_W , KC_R , KC_W KC_B , KC_J , KC_F , KC_U , KC_P , SE_ARNG, SE_ODIA, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - KC_LCTL, KC_A , KC_S , KC_H , KC_T , KC_G , KC_Y , KC_N , KC_E , KC_O , KC_I , KC_RCTL, - //|--------+--------+--------+--------+--------+--------+--------. ,--------|--------+--------+--------+--------+--------+--------| - KC_LSFT, KC_Z , KC_X , KC_M , KC_C , KC_V , KC_NUMP, KC_ENT , KC_K , KC_L , SE_ADIA, KC_DOT , KC_SLSH, KC_RSFT, - //`--------+--------+--------+----+---+--------+--------+--------/ \--------+--------+--------+---+----+--------+--------+--------' - KC_LALT, KC_LOWR, KC_BSPC, KC_SPC , KC_RASE, KC_LALT - // `--------+--------+--------' `--------+--------+--------' - ), [_NUMPAD] = LAYOUT( //,--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------. KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - , KC_MEH1, KC_BTN2, KC_MS_U, KC_BTN1, KC_CATDEL, KC_PIPE, KC_P7 , KC_P8 , KC_P9 , KC_SLSH, , + _______, KC_MEH1, KC_BTN2, KC_MS_U, KC_BTN1, KC_CATDEL, KC_PIPE, KC_P7 , KC_P8 , KC_P9 , KC_SLSH, _______, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - , KC_MEH4, KC_MS_L, KC_MS_D, KC_MS_R, KC_TSKMGR, KC_COMM, KC_P4 , KC_P5 , KC_P6 , KC_MINS, , + _______, KC_MEH4, KC_MS_L, KC_MS_D, KC_MS_R, KC_TSKMGR, KC_COMM, KC_P4 , KC_P5 , KC_P6 , KC_MINS, _______, //|--------+--------+--------+--------+--------+--------+--------. ,--------|--------+--------+--------+--------+--------+--------| - , KC_MEH5, KC_ACL0, KC_ACL1, KC_ACL2, KC_MEH3, , KC_PENT , KC_DOT , KC_P1 , KC_P2 , KC_P3 , KC_P0 , , + _______, KC_MEH5, KC_ACL0, KC_ACL1, KC_ACL2, KC_MEH3, _______, KC_PENT , KC_DOT , KC_P1 , KC_P2 , KC_P3 , KC_P0 , _______, //`--------+--------+--------+----+---+--------+--------+--------/ \--------+--------+--------+---+----+--------+--------+--------' - KC_LALT , KC_LOWR, KC_BSPC, , KC_P0 , KC_NLCK + KC_LALT , LOWER, KC_BSPC, _______, RAISE, KC_NLCK // `--------+--------+--------' `--------+--------+--------' ), @@ -136,33 +134,33 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //,--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------. KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - , KC_CAPS, KC_PGUP, KC_UP , KC_PGDN, KC_ESC, KC_RCBR, KC_EXLM, KC_ASTR, KC_LPRN, KC_UNDS, , + _______, KC_CAPS, KC_PGUP, KC_UP , KC_PGDN, KC_ESC, KC_RCBR, KC_EXLM, KC_ASTR, KC_LPRN, KC_UNDS, _______, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - , KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, KC_RPRN, KC_QUES, SE_LBRC, SE_RBRC, KC_LABK, , + _______, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, KC_RPRN, KC_QUES, SE_LBRC, SE_RBRC, KC_LABK, _______, //|--------+--------+--------+--------+--------+--------+--------. ,--------|--------+--------+--------+--------+--------+--------| - , KC_ENT , , , , KC_DEL , , , KC_RABK, SE_LABK, SE_LCBR, SE_RCBR, SE_RABK, , + _______, KC_ENT , _______, _______, _______, KC_DEL , _______, _______, KC_RABK, SE_LABK, SE_LCBR, SE_RCBR, SE_RABK, _______, //`--------+--------+--------+----+---+--------+--------+--------/ \--------+--------+--------+---+----+--------+--------+--------' - , , , , , + _______, _______, _______, _______, _______, _______ // `--------+--------+--------' `--------+--------+--------' ), [_RAISE] = LAYOUT( //,--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------. - SE_TILD, KC_EXLM, KC_GRV , KC_EQL , KC_DLR , KC_PERC, SE_PND , SE_EURO , SE_YEN, SE_RCBR, KC_RPRN, , + SE_TILD, KC_EXLM, KC_GRV , KC_EQL , KC_DLR , KC_PERC, SE_PND , SE_EURO , SE_YEN, SE_RCBR, KC_RPRN, _______, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - , SE_PIPE , SE_AT , KC_HASH, KC_DQT , KC_PERC, KC_PIPE, KC_7 , KC_8 , KC_9 , KC_PMNS, KC_PSLS, + _______ , SE_PIPE , SE_AT , KC_HASH, KC_DQT , KC_PERC, KC_PIPE, KC_7 , KC_8 , KC_9 , KC_PMNS, KC_PSLS, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - , SE_BSLS, SE_TILD, SE_SLSH, KC_AMPR, KC_BSLS, KC_COMM, KC_4 , KC_5 , KC_6 , KC_PPLS, KC_PAST, + _______ , SE_BSLS, SE_TILD, SE_SLSH, KC_AMPR, KC_BSLS, KC_COMM, KC_4 , KC_5 , KC_6 , KC_PPLS, KC_PAST, //|--------+--------+--------+--------+--------+--------+--------. ,--------|--------+--------+--------+--------+--------+--------| - , KC_PIPE, SE_CURR, KC_PLUS, KC_CIRC, KC_TILD, , KC_PENT , KC_DOT , KC_1 , KC_2 , KC_3 , KC_0 , KC_PEQL, + _______ , KC_PIPE, SE_CURR, KC_PLUS, KC_CIRC, KC_TILD, _______ , KC_PENT , KC_DOT , KC_1 , KC_2 , KC_3 , KC_0 , KC_PEQL, //`--------+--------+--------+----+---+--------+--------+--------/ \--------+--------+--------+---+----+--------+--------+--------' - , , KC_DEL , , , + _______ , _______ , KC_DEL , _______, _______, _______ // `--------+--------+--------' `--------+--------+--------' ), [_ADJUST] = LAYOUT( //,--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------. - GAMING , DVORAK, WORKMAN, COLEMAK, QWERTY , RESET, _______, _______, _______, _______, KC_PWR, RESET, + _______, GAMING , DVORAK , COLEMAK , QWERTY , RESET, _______, _______, _______, _______, KC_PWR, RESET, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| _______, _______, _______,LGUI(KC_UP),_______,LALT(KC_F4), _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| @@ -176,42 +174,52 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; -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 QWERTY: - if (record->event.pressed) { - set_single_persistent_default_layer(_QWERTY); - } + if (record->event.pressed) {set_single_persistent_default_layer(_QWERTY);} return false; + case DVORAK: - if (record->event.pressed) { - set_single_persistent_default_layer(_DVORAK); - } + if (record->event.pressed) {set_single_persistent_default_layer(_DVORAK);} return false; + case NUMPAD: - if (record->event.pressed) { - set_single_persistent_default_layer(_NUMPAD); - } + if (record->event.pressed) {layer_invert(_NUMPAD);} return false; + case COLEMAK: - if (record->event.pressed) { - set_single_persistent_default_layer(_COLEMAK); - } - return false; - case WORKMAN: - if (record->event.pressed) { - set_single_persistent_default_layer(_WORKMAN); - } + if (record->event.pressed) {set_single_persistent_default_layer(_COLEMAK);} return false; + case GAMING: + if (record->event.pressed) {set_single_persistent_default_layer(_GAMING);} + return false; + + case LOWER: if (record->event.pressed) { - set_single_persistent_default_layer(_GAMING); + layer_on(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + else { + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); } return false; + + case RAISE: + if (record->event.pressed) { + layer_on(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + else { + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + } return true; } From e527b375e849556da6592ca204ef35674e0d3de0 Mon Sep 17 00:00:00 2001 From: Ryan Date: Wed, 17 Mar 2021 15:56:45 +1100 Subject: [PATCH 073/613] TKC M0lly refactor (#12227) --- keyboards/tkc/m0lly/config.h | 140 ++++++-------- keyboards/tkc/m0lly/info.json | 190 ++++++++++--------- keyboards/tkc/m0lly/keymaps/default/keymap.c | 105 +++++----- keyboards/tkc/m0lly/keymaps/via/keymap.c | 149 ++++++++------- keyboards/tkc/m0lly/m0lly.c | 1 + keyboards/tkc/m0lly/m0lly.h | 23 ++- keyboards/tkc/m0lly/readme.md | 10 +- keyboards/tkc/m0lly/rules.mk | 21 +- 8 files changed, 307 insertions(+), 332 deletions(-) diff --git a/keyboards/tkc/m0lly/config.h b/keyboards/tkc/m0lly/config.h index bb22258066..ebcda755c2 100644 --- a/keyboards/tkc/m0lly/config.h +++ b/keyboards/tkc/m0lly/config.h @@ -30,16 +30,21 @@ along with this program. If not, see . #define MATRIX_ROWS 5 #define MATRIX_COLS 19 -// ROWS: Top to bottom, COLS: Left to right -/* Row pin configuration -*/ -#define MATRIX_ROW_PINS { F2, F1, F0, E1, E0 } -/* Column pin configuration +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * */ +#define MATRIX_ROW_PINS { F2, F1, F0, E1, E0 } #define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, C7, C6, C5, C4, C3, C2, C1, C0, F5, F6, F7 } #define UNUSED_PINS -/* COL2ROW or ROW2COL */ +/* COL2ROW, ROW2COL */ #define DIODE_DIRECTION COL2ROW #define LED_NUM_LOCK_PIN D2 @@ -47,24 +52,44 @@ along with this program. If not, see . #define LED_SCROLL_LOCK_PIN D4 #define BACKLIGHT_PIN B6 -#define BACKLIGHT_BREATHING #define BACKLIGHT_LEVELS 3 +#define BACKLIGHT_BREATHING + -/* Underlight configuration - */ #define RGB_DI_PIN D7 -#define RGBLIGHT_ANIMATIONS -#define RGBLED_NUM 30 // Number of LEDs -#define RGBLIGHT_HUE_STEP 5 -#define RGBLIGHT_SAT_STEP 10 -#define RGBLIGHT_VAL_STEP 10 +#ifdef RGB_DI_PIN +# define RGBLED_NUM 30 +# define RGBLIGHT_HUE_STEP 5 +# define RGBLIGHT_SAT_STEP 10 +# define RGBLIGHT_VAL_STEP 10 +//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +# define RGBLIGHT_ANIMATIONS +/*== or choose animations ==*/ +//# define RGBLIGHT_EFFECT_BREATHING +//# define RGBLIGHT_EFFECT_RAINBOW_MOOD +//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +//# define RGBLIGHT_EFFECT_SNAKE +//# define RGBLIGHT_EFFECT_KNIGHT +//# define RGBLIGHT_EFFECT_CHRISTMAS +//# define RGBLIGHT_EFFECT_STATIC_GRADIENT +//# define RGBLIGHT_EFFECT_RGB_TEST +//# define RGBLIGHT_EFFECT_ALTERNATING +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +#endif -/* define if matrix has ghost */ -//#define MATRIX_HAS_GHOST - -/* Set 0 if debouncing isn't needed */ +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ #define DEBOUNCE 5 +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ #define LOCKING_SUPPORT_ENABLE /* Locking resynchronize hack */ @@ -75,6 +100,11 @@ along with this program. If not, see . #define QMK_LED D2 // NumLock on M0lly //#define QMK_SPEAKER C6 +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + /* * Force NKRO * @@ -96,54 +126,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -159,25 +141,11 @@ along with this program. If not, see . //#define NO_ACTION_LAYER //#define NO_ACTION_TAPPING //#define NO_ACTION_ONESHOT -//#define NO_ACTION_MACRO -//#define NO_ACTION_FUNCTION -/* - * MIDI options - */ +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/tkc/m0lly/info.json b/keyboards/tkc/m0lly/info.json index f2ac456b16..d7a64a0e62 100644 --- a/keyboards/tkc/m0lly/info.json +++ b/keyboards/tkc/m0lly/info.json @@ -1,97 +1,107 @@ { - "keyboard_name": "TKC M0LLY", - "url": "", - "maintainer": "qmk", - "width": 19.5, - "height": 5, + "keyboard_name": "TKC M0LLY", + "url": "", + "maintainer": "qmk", + "width": 19.5, + "height": 5, "layouts": { "LAYOUT_all": { "layout": [ - {"label":"~", "x":0, "y":0}, - {"label":"!", "x":1, "y":0}, - {"label":"@", "x":2, "y":0}, - {"label":"#", "x":3, "y":0}, - {"label":"$", "x":4, "y":0}, - {"label":"%", "x":5, "y":0}, - {"label":"^", "x":6, "y":0}, - {"label":"&", "x":7, "y":0}, - {"label":"*", "x":8, "y":0}, - {"label":"(", "x":9, "y":0}, - {"label":")", "x":10, "y":0}, - {"label":"_", "x":11, "y":0}, - {"label":"+", "x":12, "y":0}, - {"label":"Bksp", "x":13, "y":0}, - {"x":14, "y":0}, - {"label":"Num", "x":15.5, "y":0}, - {"label":"/", "x":16.5, "y":0}, - {"label":"*", "x":17.5, "y":0}, - {"label":"-", "x":18.5, "y":0}, - {"label":"Tab", "x":0, "y":1, "w":1.5}, - {"label":"Q", "x":1.5, "y":1}, - {"label":"W", "x":2.5, "y":1}, - {"label":"E", "x":3.5, "y":1}, - {"label":"R", "x":4.5, "y":1}, - {"label":"T", "x":5.5, "y":1}, - {"label":"Y", "x":6.5, "y":1}, - {"label":"U", "x":7.5, "y":1}, - {"label":"I", "x":8.5, "y":1}, - {"label":"O", "x":9.5, "y":1}, - {"label":"P", "x":10.5, "y":1}, - {"label":"{", "x":11.5, "y":1}, - {"label":"}", "x":12.5, "y":1}, - {"label":"|", "x":13.5, "y":1, "w":1.5}, - {"label":"7", "x":15.5, "y":1}, - {"label":"8", "x":16.5, "y":1}, - {"label":"9", "x":17.5, "y":1}, - {"x":18.5, "y":1}, - {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, - {"label":"A", "x":1.75, "y":2}, - {"label":"S", "x":2.75, "y":2}, - {"label":"D", "x":3.75, "y":2}, - {"label":"F", "x":4.75, "y":2}, - {"label":"G", "x":5.75, "y":2}, - {"label":"H", "x":6.75, "y":2}, - {"label":"J", "x":7.75, "y":2}, - {"label":"K", "x":8.75, "y":2}, - {"label":"L", "x":9.75, "y":2}, - {"label":":", "x":10.75, "y":2}, - {"label":"\"", "x":11.75, "y":2}, - {"label":"ISO ~", "x":12.75, "y":2}, - {"label":"Enter", "x":13.75, "y":2, "w":1.25}, - {"label":"4", "x":15.5, "y":2}, - {"label":"5", "x":16.5, "y":2}, - {"label":"6", "x":17.5, "y":2}, - {"label":"+", "x":18.5, "y":2}, - {"label":"Shift", "x":0, "y":3, "w":1.25}, - {"x":1.25, "y":3}, - {"label":"Z", "x":2.25, "y":3}, - {"label":"X", "x":3.25, "y":3}, - {"label":"C", "x":4.25, "y":3}, - {"label":"V", "x":5.25, "y":3}, - {"label":"B", "x":6.25, "y":3}, - {"label":"N", "x":7.25, "y":3}, - {"label":"M", "x":8.25, "y":3}, - {"label":"<", "x":9.25, "y":3}, - {"label":">", "x":10.25, "y":3}, - {"label":"?", "x":11.25, "y":3}, - {"label":"Shift", "x":12.25, "y":3, "w":1.75}, - {"x":14, "y":3}, - {"label":"1", "x":15.5, "y":3}, - {"label":"2", "x":16.5, "y":3}, - {"label":"3", "x":17.5, "y":3}, - {"x":18.5, "y":3}, - {"label":"Ctrl", "x":0, "y":4, "w":1.25}, - {"label":"Win", "x":1.25, "y":4, "w":1.25}, - {"label":"Alt", "x":2.5, "y":4, "w":1.25}, - {"x":3.75, "y":4, "w":6.25}, - {"label":"Alt", "x":10, "y":4, "w":1.25}, - {"label":"Win", "x":11.25, "y":4, "w":1.25}, - {"label":"FN", "x":12.5, "y":4, "w":1.25}, - {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}, - {"label":"0", "x":15.5, "y":4}, - {"x":16.5, "y":4}, - {"label":".", "x":17.5, "y":4}, - {"label":"Ent", "x":18.5, "y":4}] + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + + {"x": 15.5, "y": 0}, + {"x": 16.5, "y": 0}, + {"x": 17.5, "y": 0}, + {"x": 18.5, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + {"x": 13.5, "y": 1, "w": 1.5}, + + {"x": 15.5, "y": 1}, + {"x": 16.5, "y": 1}, + {"x": 17.5, "y": 1}, + {"x": 18.5, "y": 1}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2}, + {"x": 13.75, "y": 2, "w": 1.25}, + + {"x": 15.5, "y": 2}, + {"x": 16.5, "y": 2}, + {"x": 17.5, "y": 2}, + {"x": 18.5, "y": 2}, + + {"x": 0, "y": 3, "w": 1.25}, + {"x": 1.25, "y": 3}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3}, + {"x": 12.25, "y": 3, "w": 1.75}, + {"x": 14, "y": 3}, + + {"x": 15.5, "y": 3}, + {"x": 16.5, "y": 3}, + {"x": 17.5, "y": 3}, + {"x": 18.5, "y": 3}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 6.25}, + {"x": 10, "y": 4, "w": 1.25}, + {"x": 11.25, "y": 4, "w": 1.25}, + {"x": 12.5, "y": 4, "w": 1.25}, + {"x": 13.75, "y": 4, "w": 1.25}, + + {"x": 15.5, "y": 4}, + {"x": 16.5, "y": 4}, + {"x": 17.5, "y": 4}, + {"x": 18.5, "y": 4} + ] } } } diff --git a/keyboards/tkc/m0lly/keymaps/default/keymap.c b/keyboards/tkc/m0lly/keymaps/default/keymap.c index 27e83cd21c..03f07aff40 100644 --- a/keyboards/tkc/m0lly/keymaps/default/keymap.c +++ b/keyboards/tkc/m0lly/keymaps/default/keymap.c @@ -13,79 +13,80 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ - + #include QMK_KEYBOARD_H -//Layers - -enum { - BASE = 0, - FUNCTION, +enum layer_names { + _BASE, + _FUNC, }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Keymap BASE: (Base Layer) Default Layer - * - * ,-----------------------------------------------------------. .-------------------. - * | ~ | 1 | 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp | |NumL| / | * | - | - * |-----------------------------------------------------------| |-------------------| - * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ | | 7 | 8 | 9 | | - * |-----------------------------------------------------------| |--------------| + | - * |CAPS | A| S| D| F| G| H| J| K| L| ;| '|Return | | 4 | 5 | 6 | | - * |-----------------------------------------------------------| |-------------------| - * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | | 1 | 2 | 3 | Ent| - * |-----------------------------------------------------------| |--------------| | - * |Ctrl|Gui |Alt | Space | Alt | Win |FN |Ctr | | 0 | . | | - * `-----------------------------------------------------------' '-------------------' - */ - [BASE] = 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_MINS, KC_EQL, KC_BSPC, XXXXXXX, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \ - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, XXXXXXX, \ - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, XXXXXXX, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, \ - KC_LSFT, XXXXXXX, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, XXXXXXX, KC_P1, KC_P2, KC_P3, XXXXXXX, \ - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(FUNCTION), KC_RCTL, KC_P0, XXXXXXX, KC_PDOT, KC_PENT \ - ), - /* Keymap FUNCTION: (Function Layer) - * - * ,-----------------------------------------------------------. .-------------------. - * | | | | | | | | | | | | | | RESET | | | | | | - * |-----------------------------------------------------------| |-------------------| - * | | | | | | | | | | | | | | | | | | | | - * |-----------------------------------------------------------| |-------------------| - * | | | | | | | | | | | | | | | | | | | - * |-----------------------------------------------------------| |-------------------| - * | |Tog|Mod|Hu+|Hu-|Sa+|Sa-|Va+|Va-|Stp| | | | | | | | - * |-----------------------------------------------------------| |--------------| | - * | | | | | | | | | | | | | - * `-----------------------------------------------------------' '-------------------' - */ - [FUNCTION] = LAYOUT_all( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, XXXXXXX, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______, _______, _______, _______, _______, \ - _______, XXXXXXX, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, BL_STEP, _______, _______, XXXXXXX, _______, _______, _______, XXXXXXX, \ - _______, _______, _______, _______, _______, _______, MO(FUNCTION), _______, _______, XXXXXXX, _______, _______ \ - ), + /* Base Layer + * + * ,-----------------------------------------------------------. .-------------------. + * | ~ | 1 | 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp | |NumL| / | * | - | + * |-----------------------------------------------------------| |-------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ | | 7 | 8 | 9 | | + * |-----------------------------------------------------------| |--------------| + | + * |CAPS | A| S| D| F| G| H| J| K| L| ;| '|Return | | 4 | 5 | 6 | | + * |-----------------------------------------------------------| |-------------------| + * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | | 1 | 2 | 3 | Ent| + * |-----------------------------------------------------------| |--------------| | + * |Ctrl|Gui |Alt | Space | Alt | Win |FN |Ctr | | 0 | . | | + * `-----------------------------------------------------------' '-------------------' + */ + [_BASE] = 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_MINS, KC_EQL, KC_BSPC, XXXXXXX, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, XXXXXXX, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, XXXXXXX, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT, XXXXXXX, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, XXXXXXX, KC_P1, KC_P2, KC_P3, XXXXXXX, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(_FUNC), KC_RCTL, KC_P0, XXXXXXX, KC_PDOT, KC_PENT + ), + + /* Function Layer + * + * ,-----------------------------------------------------------. .-------------------. + * | | | | | | | | | | | | | | RESET | | | | | | + * |-----------------------------------------------------------| |-------------------| + * | | | | | | | | | | | | | | | | | | | | + * |-----------------------------------------------------------| |-------------------| + * | | | | | | | | | | | | | | | | | | | + * |-----------------------------------------------------------| |-------------------| + * | |Tog|Mod|Hu+|Hu-|Sa+|Sa-|Va+|Va-|Stp| | | | | | | | + * |-----------------------------------------------------------| |--------------| | + * | | | | | | | | | | | | | + * `-----------------------------------------------------------' '-------------------' + */ + [_FUNC] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, XXXXXXX, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______, _______, _______, _______, _______, + _______, XXXXXXX, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, BL_STEP, _______, _______, XXXXXXX, _______, _______, _______, XXXXXXX, + _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______, _______ + ) }; #ifdef OLED_DRIVER_ENABLE void oled_task_user(void) { oled_write_P(PSTR("M0lly\n"),false); - // Host Keyboard Layer Status + + // Layer status oled_write_P(PSTR("Layer: "), false); switch (get_highest_layer(layer_state)) { - case BASE: + case _BASE: oled_write_P(PSTR("Base\n"), false); break; - case FUNCTION: + case _FUNC: oled_write_P(PSTR("Function\n"), false); break; default: // Or use the write_ln shortcut over adding '\n' to the end of your string oled_write_ln_P(PSTR("Undefined"), false); } - // Host Keyboard LED Status + + // Indicators led_t led_state = host_keyboard_led_state(); oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); diff --git a/keyboards/tkc/m0lly/keymaps/via/keymap.c b/keyboards/tkc/m0lly/keymaps/via/keymap.c index b72b8f035b..4dd35169d4 100644 --- a/keyboards/tkc/m0lly/keymaps/via/keymap.c +++ b/keyboards/tkc/m0lly/keymaps/via/keymap.c @@ -13,101 +13,104 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ - + #include QMK_KEYBOARD_H -//Layers - -enum { - BASE = 0, - FUNCTION, - ALTERNATE, - LAST, +enum layer_names { + _BASE, + _FUNC1, + _FUNC2, + _FUNC3 }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Keymap BASE: (Base Layer) Default Layer - * - * ,-----------------------------------------------------------. .-------------------. - * | ~ | 1 | 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp | |NumL| / | * | - | - * |-----------------------------------------------------------| |-------------------| - * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ | | 7 | 8 | 9 | | - * |-----------------------------------------------------------| |--------------| + | - * |CAPS | A| S| D| F| G| H| J| K| L| ;| '|Return | | 4 | 5 | 6 | | - * |-----------------------------------------------------------| |-------------------| - * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | | 1 | 2 | 3 | Ent| - * |-----------------------------------------------------------| |--------------| | - * |Ctrl|Gui |Alt | Space | Alt | Win |FN |Ctr | | 0 | . | | - * `-----------------------------------------------------------' '-------------------' - */ - [BASE] = 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_MINS, KC_EQL, KC_BSPC, XXXXXXX, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, XXXXXXX, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, XXXXXXX, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, - KC_LSFT, XXXXXXX, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, XXXXXXX, KC_P1, KC_P2, KC_P3, XXXXXXX, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(FUNCTION), KC_RCTL, KC_P0, XXXXXXX, KC_PDOT, KC_PENT - ), - /* Keymap FUNCTION: (Function Layer) - * - * ,-----------------------------------------------------------. .-------------------. - * | | | | | | | | | | | | | | RESET | | | | | | - * |-----------------------------------------------------------| |-------------------| - * | | | | | | | | | | | | | | | | | | | | - * |-----------------------------------------------------------| |-------------------| - * | | | | | | | | | | | | | | | | | | | - * |-----------------------------------------------------------| |-------------------| - * | |Tog|Mod|Hu+|Hu-|Sa+|Sa-|Va+|Va-|Stp| | | | | | | | - * |-----------------------------------------------------------| |--------------| | - * | | | | | | | | | | | | | - * `-----------------------------------------------------------' '-------------------' - */ - [FUNCTION] = LAYOUT_all( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, XXXXXXX, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______, _______, _______, _______, _______, - _______, XXXXXXX, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, BL_STEP, _______, _______, XXXXXXX, _______, _______, _______, XXXXXXX, - _______, _______, _______, _______, _______, _______, MO(FUNCTION), _______, _______, XXXXXXX, _______, _______ - ), - [ALTERNATE] = LAYOUT_all( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, XXXXXXX, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______, _______, _______, _______, _______, - _______, XXXXXXX, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, BL_STEP, _______, _______, XXXXXXX, _______, _______, _______, XXXXXXX, - _______, _______, _______, _______, _______, _______, MO(FUNCTION), _______, _______, XXXXXXX, _______, _______ - ), - [LAST] = LAYOUT_all( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, XXXXXXX, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______, _______, _______, _______, _______, - _______, XXXXXXX, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, BL_STEP, _______, _______, XXXXXXX, _______, _______, _______, XXXXXXX, - _______, _______, _______, _______, _______, _______, MO(FUNCTION), _______, _______, XXXXXXX, _______, _______ - ), + /* Base Layer + * + * ,-----------------------------------------------------------. .-------------------. + * | ~ | 1 | 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp | |NumL| / | * | - | + * |-----------------------------------------------------------| |-------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ | | 7 | 8 | 9 | | + * |-----------------------------------------------------------| |--------------| + | + * |CAPS | A| S| D| F| G| H| J| K| L| ;| '|Return | | 4 | 5 | 6 | | + * |-----------------------------------------------------------| |-------------------| + * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | | 1 | 2 | 3 | Ent| + * |-----------------------------------------------------------| |--------------| | + * |Ctrl|Gui |Alt | Space | Alt | Win |FN |Ctr | | 0 | . | | + * `-----------------------------------------------------------' '-------------------' + */ + [_BASE] = 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_MINS, KC_EQL, KC_BSPC, XXXXXXX, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, XXXXXXX, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, XXXXXXX, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT, XXXXXXX, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, XXXXXXX, KC_P1, KC_P2, KC_P3, XXXXXXX, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(_FUNC1), KC_RCTL, KC_P0, XXXXXXX, KC_PDOT, KC_PENT + ), + + /* Function Layer + * + * ,-----------------------------------------------------------. .-------------------. + * | | | | | | | | | | | | | | RESET | | | | | | + * |-----------------------------------------------------------| |-------------------| + * | | | | | | | | | | | | | | | | | | | | + * |-----------------------------------------------------------| |-------------------| + * | | | | | | | | | | | | | | | | | | | + * |-----------------------------------------------------------| |-------------------| + * | |Tog|Mod|Hu+|Hu-|Sa+|Sa-|Va+|Va-|Stp| | | | | | | | + * |-----------------------------------------------------------| |--------------| | + * | | | | | | | | | | | | | + * `-----------------------------------------------------------' '-------------------' + */ + [_FUNC1] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, XXXXXXX, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______, _______, _______, _______, _______, + _______, XXXXXXX, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, BL_STEP, _______, _______, XXXXXXX, _______, _______, _______, XXXXXXX, + _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______, _______ + ), + + [_FUNC2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, XXXXXXX, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______, _______, _______, _______, _______, + _______, XXXXXXX, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, BL_STEP, _______, _______, XXXXXXX, _______, _______, _______, XXXXXXX, + _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______, _______ + ), + + [_FUNC3] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, XXXXXXX, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______, _______, _______, _______, _______, + _______, XXXXXXX, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, BL_STEP, _______, _______, XXXXXXX, _______, _______, _______, XXXXXXX, + _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______, _______ + ) }; #ifdef OLED_DRIVER_ENABLE void oled_task_user(void) { oled_write_P(PSTR("M0lly\n"),false); - // Host Keyboard Layer Status + + // Layer Status oled_write_P(PSTR("Layer: "), false); switch (get_highest_layer(layer_state)) { - case BASE: + case _BASE: oled_write_P(PSTR("Base\n"), false); break; - case FUNCTION: - oled_write_P(PSTR("Function\n"), false); + case _FUNC1: + oled_write_P(PSTR("Func 1\n"), false); break; - case ALTERNATE: - oled_write_P(PSTR("Alternate\n"), false); + case _FUNC2: + oled_write_P(PSTR("Func 2\n"), false); break; - case LAST: - oled_write_P(PSTR("Last\n"), false); + case _FUNC3: + oled_write_P(PSTR("Func 3\n"), false); break; default: // Or use the write_ln shortcut over adding '\n' to the end of your string oled_write_ln_P(PSTR("Undefined"), false); } - // Host Keyboard LED Status + + // Indicators led_t led_state = host_keyboard_led_state(); oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); diff --git a/keyboards/tkc/m0lly/m0lly.c b/keyboards/tkc/m0lly/m0lly.c index e04407a35b..137e1ce21c 100644 --- a/keyboards/tkc/m0lly/m0lly.c +++ b/keyboards/tkc/m0lly/m0lly.c @@ -13,6 +13,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ + #include "m0lly.h" void keyboard_pre_init_kb(void) { diff --git a/keyboards/tkc/m0lly/m0lly.h b/keyboards/tkc/m0lly/m0lly.h index 0c62876efc..ef4f0270f5 100644 --- a/keyboards/tkc/m0lly/m0lly.h +++ b/keyboards/tkc/m0lly/m0lly.h @@ -13,20 +13,23 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ + #pragma once #include "quantum.h" +#define XXX KC_NO + #define LAYOUT_all( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, K0H, K0I, \ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1F, K1G, K1H, K1I, \ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2F, K2G, K2H, K2I, \ - K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3F, K3G, K3H, K3I, \ - K40, K41, K42, K45, K49, K4B, K4C, K4D, K4F, K4G, K4H, K4I \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G, k0H, k0I, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1F, k1G, k1H, k1I, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2F, k2G, k2H, k2I, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3F, k3G, k3H, k3I, \ + k40, k41, k42, k45, k49, k4B, k4C, k4D, k4F, k4G, k4H, k4I \ ) { \ - { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, K0H, K0I }, \ - { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO, K1F, K1G, K1H, K1I }, \ - { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, KC_NO, K2F, K2G, K2H, K2I }, \ - { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, KC_NO, K3F, K3G, K3H, K3I }, \ - { K40, K41, K42, KC_NO, KC_NO, K45, KC_NO, KC_NO, KC_NO, K49, KC_NO, K4B, K4C, K4D, KC_NO, K4F, K4G, K4H, K4I } \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G, k0H, k0I }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, XXX, k1F, k1G, k1H, k1I }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, XXX, k2F, k2G, k2H, k2I }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, XXX, k3F, k3G, k3H, k3I }, \ + { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, k49, XXX, k4B, k4C, k4D, XXX, k4F, k4G, k4H, k4I } \ } diff --git a/keyboards/tkc/m0lly/readme.md b/keyboards/tkc/m0lly/readme.md index 9af80c7e98..b175d45ee8 100644 --- a/keyboards/tkc/m0lly/readme.md +++ b/keyboards/tkc/m0lly/readme.md @@ -1,14 +1,12 @@ -The Key Company M0LLY +# The Key Company M0LLY [TKC M0LLY](https://cdn.shopify.com/s/files/1/1679/2319/files/Molly_Terminal_1024x1024.jpg?v=1529067702) - The Key Company's M0LLY keyboard is inspired by the Apple Macintosh M0110A, and utilizes the AT90USB1286 microcontroller. -Keyboard Maintainer: [Terry Mathews](https://github.com/TerryMathews/) -Hardware Supported: TKC M0LLY -Hardware Availability: [TheKey.Company](https://thekey.company) - +* Keyboard Maintainer: [Terry Mathews](https://github.com/TerryMathews/) +* Hardware Supported: TKC M0LLY +* Hardware Availability: [TheKey.Company](https://thekey.company) Make example for this keyboard (after setting up your build environment): diff --git a/keyboards/tkc/m0lly/rules.mk b/keyboards/tkc/m0lly/rules.mk index 05e6290759..01afbdd12f 100644 --- a/keyboards/tkc/m0lly/rules.mk +++ b/keyboards/tkc/m0lly/rules.mk @@ -2,19 +2,12 @@ MCU = at90usb1286 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = qmk-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug @@ -23,10 +16,8 @@ COMMAND_ENABLE = yes # Commands for debug and configuration SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default -RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. -MIDI_ENABLE = no # MIDI controls -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 -OLED_DRIVER_ENABLE = yes \ No newline at end of file +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +OLED_DRIVER_ENABLE = yes From 563be8ca2a1445120fce79b0fc0c991af697d7bc Mon Sep 17 00:00:00 2001 From: peepeetee <43021794+peepeetee@users.noreply.github.com> Date: Tue, 16 Mar 2021 23:57:51 -0500 Subject: [PATCH 074/613] Add bootmagic support for hub16 and hub20 (#12257) --- keyboards/hub16/readme.md | 9 +++++++++ keyboards/hub16/rules.mk | 2 +- keyboards/hub20/readme.md | 5 +++++ keyboards/hub20/rules.mk | 2 +- 4 files changed, 16 insertions(+), 2 deletions(-) diff --git a/keyboards/hub16/readme.md b/keyboards/hub16/readme.md index db2822c872..f2bcf4b0a7 100755 --- a/keyboards/hub16/readme.md +++ b/keyboards/hub16/readme.md @@ -10,6 +10,15 @@ For more information regarding the keyboard, please visit the [Hub16 Website](ht Make example for this keyboard (after setting up your build environment): + make hub16:default + +Flashing example for this keyboard: + make hub16:default:flash +To reset the board into bootloader mode, do one of the following: + +* Press the reset switch between the center two USB-C ports while the board is plugged in +* Hold the top left key while connecting the USB cable (also erases persistent settings) + See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/hub16/rules.mk b/keyboards/hub16/rules.mk index b7f940198f..07d286c17f 100755 --- a/keyboards/hub16/rules.mk +++ b/keyboards/hub16/rules.mk @@ -4,7 +4,7 @@ BOOTLOADER = caterina # Build Options CUSTOM_MATRIX = lite # Custom scanning of matrix -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug diff --git a/keyboards/hub20/readme.md b/keyboards/hub20/readme.md index e2477b012d..1abfa0dea8 100755 --- a/keyboards/hub20/readme.md +++ b/keyboards/hub20/readme.md @@ -16,4 +16,9 @@ Flashing example for this keyboard: make hub20:default:flash +To reset the board into bootloader mode, do one of the following: + +* Press the reset switch between the center two USB-C ports while the board is plugged in +* Hold the top left key while connecting the USB cable (also erases persistent settings) + See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/hub20/rules.mk b/keyboards/hub20/rules.mk index b520ee35af..9abb4f80a7 100644 --- a/keyboards/hub20/rules.mk +++ b/keyboards/hub20/rules.mk @@ -4,7 +4,7 @@ MCU = STM32F072 # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug From 314ef9df031b2c6ff84f4dd757498ff7b02dba60 Mon Sep 17 00:00:00 2001 From: James Young <18669334+noroadsleft@users.noreply.github.com> Date: Tue, 16 Mar 2021 23:00:43 -0700 Subject: [PATCH 075/613] Pimentoso Paddino02 clean-up (#12263) * fork rules.mk to be version-specific * remove pimentoso/paddino02 as a keyboard target This commit makes it so QMK API doesn't identify pimentoso/paddino02 as a build target on its own, because there's no actionable code here. * add image to readme.md * unify rules.mk files to QMK AVR template - remove Bootloader selection comment block - sort Build Option rules - unify inline comments --- keyboards/pimentoso/paddino02/.noci | 0 keyboards/pimentoso/paddino02/readme.md | 2 ++ keyboards/pimentoso/paddino02/rev1/rules.mk | 24 +++++++++++++++++ .../pimentoso/paddino02/rev2/left/rules.mk | 24 +++++++++++++++++ .../pimentoso/paddino02/rev2/right/rules.mk | 24 +++++++++++++++++ keyboards/pimentoso/paddino02/rules.mk | 27 ------------------- 6 files changed, 74 insertions(+), 27 deletions(-) delete mode 100644 keyboards/pimentoso/paddino02/.noci delete mode 100755 keyboards/pimentoso/paddino02/rules.mk diff --git a/keyboards/pimentoso/paddino02/.noci b/keyboards/pimentoso/paddino02/.noci deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/keyboards/pimentoso/paddino02/readme.md b/keyboards/pimentoso/paddino02/readme.md index c49508c7d7..38e3d7b079 100644 --- a/keyboards/pimentoso/paddino02/readme.md +++ b/keyboards/pimentoso/paddino02/readme.md @@ -1,5 +1,7 @@ # Paddino02 +![Paddino02](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/pimentoso/paddino02/img6_640.jpg) + 10-keys DIY mechanical macropad/gamepad. Features staggered columns, 2 thumb keys, symmetric PCB (you can build right-handed and left-handed versions with the same PCB). Project page on GitHub, with build steps and 3d-printable files: diff --git a/keyboards/pimentoso/paddino02/rev1/rules.mk b/keyboards/pimentoso/paddino02/rev1/rules.mk index e69de29bb2..c000c9ee16 100644 --- a/keyboards/pimentoso/paddino02/rev1/rules.mk +++ b/keyboards/pimentoso/paddino02/rev1/rules.mk @@ -0,0 +1,24 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output + +KEY_LOCK_ENABLE = no # Allows locking any key. diff --git a/keyboards/pimentoso/paddino02/rev2/left/rules.mk b/keyboards/pimentoso/paddino02/rev2/left/rules.mk index e69de29bb2..c000c9ee16 100755 --- a/keyboards/pimentoso/paddino02/rev2/left/rules.mk +++ b/keyboards/pimentoso/paddino02/rev2/left/rules.mk @@ -0,0 +1,24 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output + +KEY_LOCK_ENABLE = no # Allows locking any key. diff --git a/keyboards/pimentoso/paddino02/rev2/right/rules.mk b/keyboards/pimentoso/paddino02/rev2/right/rules.mk index e69de29bb2..c000c9ee16 100755 --- a/keyboards/pimentoso/paddino02/rev2/right/rules.mk +++ b/keyboards/pimentoso/paddino02/rev2/right/rules.mk @@ -0,0 +1,24 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output + +KEY_LOCK_ENABLE = no # Allows locking any key. diff --git a/keyboards/pimentoso/paddino02/rules.mk b/keyboards/pimentoso/paddino02/rules.mk deleted file mode 100755 index 4c2dab1eef..0000000000 --- a/keyboards/pimentoso/paddino02/rules.mk +++ /dev/null @@ -1,27 +0,0 @@ -# MCU name -MCU = atmega32u4 - -# Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = caterina - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -NKRO_ENABLE = yes # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -AUDIO_ENABLE = no # Audio output on port C6 -RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -KEY_LOCK_ENABLE = no # Allows locking any key. From ffc4380b307359d2b77819a59797a180d6e05c18 Mon Sep 17 00:00:00 2001 From: kaylanm <1063516+kaylanm@users.noreply.github.com> Date: Wed, 17 Mar 2021 02:17:40 -0400 Subject: [PATCH 076/613] [Keyboard] Add KMAC VIA keymap (#12224) --- keyboards/kmac/config.h | 4 +-- keyboards/kmac/keymaps/via/keymap.c | 49 +++++++++++++++++++++++++++++ keyboards/kmac/keymaps/via/rules.mk | 2 ++ 3 files changed, 53 insertions(+), 2 deletions(-) create mode 100644 keyboards/kmac/keymaps/via/keymap.c create mode 100644 keyboards/kmac/keymaps/via/rules.mk diff --git a/keyboards/kmac/config.h b/keyboards/kmac/config.h index 7c9fcec320..45cbff9fa2 100644 --- a/keyboards/kmac/config.h +++ b/keyboards/kmac/config.h @@ -20,8 +20,8 @@ along with this program. If not, see . #include "config_common.h" /* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x6050 +#define VENDOR_ID 0x4B4D // KM +#define PRODUCT_ID 0x4143 // AC #define DEVICE_VER 0x0104 #define MANUFACTURER KBDMania #define PRODUCT KMAC diff --git a/keyboards/kmac/keymaps/via/keymap.c b/keyboards/kmac/keymaps/via/keymap.c new file mode 100644 index 0000000000..ebae4a7eca --- /dev/null +++ b/keyboards/kmac/keymaps/via/keymap.c @@ -0,0 +1,49 @@ +/* Copyright 2017-2019 Mathias Andersson + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_tkl_ansi( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_BRK, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + [1] = LAYOUT_tkl_ansi( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + [2] = LAYOUT_tkl_ansi( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + [3] = LAYOUT_tkl_ansi( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), +}; +// clang-format on diff --git a/keyboards/kmac/keymaps/via/rules.mk b/keyboards/kmac/keymaps/via/rules.mk new file mode 100644 index 0000000000..36b7ba9cbc --- /dev/null +++ b/keyboards/kmac/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes From 90f95de5c992e695fa73ebf11116f6ea322815de Mon Sep 17 00:00:00 2001 From: devriesp Date: Tue, 16 Mar 2021 23:22:43 -0700 Subject: [PATCH 077/613] [Keyboard] add via keymap to afternoonlabs breeze keyboard (#12247) --- .../afternoonlabs/breeze/keymaps/via/keymap.c | 87 +++++++++++++++++++ .../breeze/keymaps/via/readme.md | 5 ++ .../afternoonlabs/breeze/keymaps/via/rules.mk | 10 +++ 3 files changed, 102 insertions(+) create mode 100644 keyboards/afternoonlabs/breeze/keymaps/via/keymap.c create mode 100644 keyboards/afternoonlabs/breeze/keymaps/via/readme.md create mode 100644 keyboards/afternoonlabs/breeze/keymaps/via/rules.mk diff --git a/keyboards/afternoonlabs/breeze/keymaps/via/keymap.c b/keyboards/afternoonlabs/breeze/keymaps/via/keymap.c new file mode 100644 index 0000000000..3ed084736f --- /dev/null +++ b/keyboards/afternoonlabs/breeze/keymaps/via/keymap.c @@ -0,0 +1,87 @@ +/* Copyright 2021 eithanshavit + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum layer_names { + _MAIN, + _LOWER, + _RAISE, +}; + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_MAIN] = LAYOUT( + //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”┌────────┬────────┬────────┠+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_MINS, KC_EQL, KC_GRV, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_LBRC, KC_RBRC, KC_BSLS, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_UP, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_LEFT, KC_DOWN, KC_RIGHT, + //└────────┴────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘ + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_ENT, RAISE, LOWER, XXXXXXX + // └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘ + ), + + [_LOWER] = LAYOUT( + //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”┌────────┬────────┬────────┠+ RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //└────────┴────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘ + _______, _______, _______, _______, _______, _______, _______, _______ + // └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘ + ), + + [_RAISE] = LAYOUT( + //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”┌────────┬────────┬────────┠+ _______, _______, _______, _______, _______, _______, _______, KC_PEQL, KC_PSLS, KC_PAST, KC_PMNS, _______, _______, _______, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PPLS, _______, _______, _______, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, _______, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, _______, _______, _______, _______, + //└────────┴────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘ + _______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT + // └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘ + ), + + [3] = LAYOUT( + //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”┌────────┬────────┬────────┠+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //└────────┴────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘ + _______, _______, _______, _______, _______, _______, _______, _______ + // └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘ + ) + + +}; diff --git a/keyboards/afternoonlabs/breeze/keymaps/via/readme.md b/keyboards/afternoonlabs/breeze/keymaps/via/readme.md new file mode 100644 index 0000000000..d8eb3bb511 --- /dev/null +++ b/keyboards/afternoonlabs/breeze/keymaps/via/readme.md @@ -0,0 +1,5 @@ +# Default Breeze Layout + VIA support + +![Breeze Layout Image](https://i.imgur.com/O8FJWD6.jpeg) + +This is the default suggested layout for Breeze Split Keyboard, with VIA support. diff --git a/keyboards/afternoonlabs/breeze/keymaps/via/rules.mk b/keyboards/afternoonlabs/breeze/keymaps/via/rules.mk new file mode 100644 index 0000000000..5b5de19eed --- /dev/null +++ b/keyboards/afternoonlabs/breeze/keymaps/via/rules.mk @@ -0,0 +1,10 @@ +VIA_ENABLE = yes +# LTO: link time optimization makes the build take slightly longer +# but makes the resulting .hex file smaller, which allows you to +# fit more features into smaller MCUs: +LTO_ENABLE = yes +# Support for these features make the hex file larger, but we want 'em: +MOUSEKEY_ENABLE = yes # Allow mapping of mouse control keys +EXTRAKEY_ENABLE = yes # Allow audio & system control keys +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = yes # Support USB N-key roll over. From 163e9b02bfbe1618c00f4b7110d9b7f68c332b41 Mon Sep 17 00:00:00 2001 From: Matthew Dias Date: Wed, 17 Mar 2021 01:31:58 -0500 Subject: [PATCH 078/613] [Keyboard] Add barleycorn smd keyboard (#12200) --- keyboards/barleycorn_smd/barleycorn_smd.c | 16 + keyboards/barleycorn_smd/barleycorn_smd.h | 63 ++++ keyboards/barleycorn_smd/config.h | 111 +++++++ keyboards/barleycorn_smd/info.json | 283 ++++++++++++++++++ .../barleycorn_smd/keymaps/default/keymap.c | 34 +++ .../barleycorn_smd/keymaps/default/readme.md | 11 + keyboards/barleycorn_smd/keymaps/iso/keymap.c | 34 +++ .../barleycorn_smd/keymaps/iso/readme.md | 11 + keyboards/barleycorn_smd/keymaps/via/keymap.c | 48 +++ .../barleycorn_smd/keymaps/via/readme.md | 1 + keyboards/barleycorn_smd/keymaps/via/rules.mk | 1 + keyboards/barleycorn_smd/matrix.c | 138 +++++++++ keyboards/barleycorn_smd/readme.md | 19 ++ keyboards/barleycorn_smd/rules.mk | 27 ++ 14 files changed, 797 insertions(+) create mode 100644 keyboards/barleycorn_smd/barleycorn_smd.c create mode 100644 keyboards/barleycorn_smd/barleycorn_smd.h create mode 100644 keyboards/barleycorn_smd/config.h create mode 100644 keyboards/barleycorn_smd/info.json create mode 100644 keyboards/barleycorn_smd/keymaps/default/keymap.c create mode 100644 keyboards/barleycorn_smd/keymaps/default/readme.md create mode 100644 keyboards/barleycorn_smd/keymaps/iso/keymap.c create mode 100644 keyboards/barleycorn_smd/keymaps/iso/readme.md create mode 100644 keyboards/barleycorn_smd/keymaps/via/keymap.c create mode 100644 keyboards/barleycorn_smd/keymaps/via/readme.md create mode 100644 keyboards/barleycorn_smd/keymaps/via/rules.mk create mode 100644 keyboards/barleycorn_smd/matrix.c create mode 100644 keyboards/barleycorn_smd/readme.md create mode 100644 keyboards/barleycorn_smd/rules.mk diff --git a/keyboards/barleycorn_smd/barleycorn_smd.c b/keyboards/barleycorn_smd/barleycorn_smd.c new file mode 100644 index 0000000000..d70689d8fe --- /dev/null +++ b/keyboards/barleycorn_smd/barleycorn_smd.c @@ -0,0 +1,16 @@ +/* Copyright 2021 Matthew Dias + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "barleycorn_smd.h" diff --git a/keyboards/barleycorn_smd/barleycorn_smd.h b/keyboards/barleycorn_smd/barleycorn_smd.h new file mode 100644 index 0000000000..926b67b379 --- /dev/null +++ b/keyboards/barleycorn_smd/barleycorn_smd.h @@ -0,0 +1,63 @@ +/* Copyright 2021 Matthew Dias + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define XXX KC_NO + +#include "quantum.h" + +#define LAYOUT_all( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K1D, K0E, K0F, K0G, K0H, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K2C, K1E, K1F, K1G, K1H, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K2E, K2F, K2G, K2H, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K3G, K3H, \ + K40, K41, K42, K46, K4A, K4B, K4C, K4D, K4E, K4F, K4G, K4H \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, K0H }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, K1H }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, K2H }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K3G, K3H }, \ + { K40, K41, K42, XXX, XXX, XXX, K46, XXX, XXX, XXX, K4A, K4B, K4C, K4D, K4E, K4F, K4G, K4H } \ +} + +#define LAYOUT_ansi( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K1D, K0E, K0F, K0G, K0H, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K2C, K1E, K1F, K1G, K1H, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K2E, K2F, K2G, K2H, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K3G, K3H, \ + K40, K41, K42, K46, K4A, K4B, K4C, K4D, K4E, K4F, K4G, K4H \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, K0H }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, K1H }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, K2H }, \ + { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K3G, K3H }, \ + { K40, K41, K42, XXX, XXX, XXX, K46, XXX, XXX, XXX, K4A, K4B, K4C, K4D, K4E, K4F, K4G, K4H } \ +} + +#define LAYOUT_iso( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K1D, K0E, K0F, K0G, K0H, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E, K1F, K1G, K1H, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, K2H, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K3G, K3H, \ + K40, K41, K42, K46, K4A, K4B, K4C, K4D, K4E, K4F, K4G, K4H \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, K0H }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, K1H }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, K2H }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K3G, K3H }, \ + { K40, K41, K42, XXX, XXX, XXX, K46, XXX, XXX, XXX, K4A, K4B, K4C, K4D, K4E, K4F, K4G, K4H } \ +} diff --git a/keyboards/barleycorn_smd/config.h b/keyboards/barleycorn_smd/config.h new file mode 100644 index 0000000000..2ac86bf8a8 --- /dev/null +++ b/keyboards/barleycorn_smd/config.h @@ -0,0 +1,111 @@ +/* +Copyright 2021 Matthew Dias + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +#define VENDOR_ID 0x7033 +#define PRODUCT_ID 0x4749 +#define DEVICE_VER 0x0001 +#define MANUFACTURER P3D Store +#define PRODUCT Barleycorn SMD + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 18 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ + +/* A Custom matrix.c is used to poll the port expander C6 shows that the pins are hardwired there */ +#define MATRIX_ROW_PINS { F5, F4, F1, F0, F6 } +#define MATRIX_COL_PINS { D4, D6, D7, B4, B5, B6, C6, C7, D5, D5, D5, D5, D5, D5, D5, D5, D5, D5 } +#define UNUSED_PINS +#define PORT_EXPANDER_ADDRESS 0x20 + +#define RGB_DI_PIN E6 +#define RGBLED_NUM 15 +#define RGBLIGHT_ANIMATIONS +#define RGBLIGHT_LED_MAP { 0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 5 } + +#define LED_CAPS_LOCK_PIN B2 +#define LED_NUM_LOCK_PIN B3 + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +#define USB_MAX_POWER_CONSUMPTION 400 + + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is userful for the Windows task manager shortcut (ctrl+shift+esc). + */ +// #define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION diff --git a/keyboards/barleycorn_smd/info.json b/keyboards/barleycorn_smd/info.json new file mode 100644 index 0000000000..c33f77a9b1 --- /dev/null +++ b/keyboards/barleycorn_smd/info.json @@ -0,0 +1,283 @@ +{ + "keyboard_name": "Barleycorn SMD", + "maintainer": "matthewdias", + "width": 19.5, + "height": 5, + "layouts": { + "LAYOUT_all": { + "layout": [ + { "label": "0,0", "x": 0, "y": 0 }, + { "label": "0,1", "x": 1, "y": 0 }, + { "label": "0,2", "x": 2, "y": 0 }, + { "label": "0,3", "x": 3, "y": 0 }, + { "label": "0,4", "x": 4, "y": 0 }, + { "label": "0,5", "x": 5, "y": 0 }, + { "label": "0,6", "x": 6, "y": 0 }, + { "label": "0,7", "x": 7, "y": 0 }, + { "label": "0,8", "x": 8, "y": 0 }, + { "label": "0,9", "x": 9, "y": 0 }, + { "label": "0,10", "x": 10, "y": 0 }, + { "label": "0,11", "x": 11, "y": 0 }, + { "label": "0,12", "x": 12, "y": 0 }, + { "label": "0,13", "x": 13, "y": 0 }, + { "label": "1,13", "x": 14, "y": 0 }, + { "label": "0,14", "x": 15.5, "y": 0 }, + { "label": "0,15", "x": 16.5, "y": 0 }, + { "label": "0,16", "x": 17.5, "y": 0 }, + { "label": "0,17", "x": 18.5, "y": 0 }, + + { "label": "1,0", "x": 0, "y": 1, "w": 1.5 }, + { "label": "1,1", "x": 1.5, "y": 1 }, + { "label": "1,2", "x": 2.5, "y": 1 }, + { "label": "1,3", "x": 3.5, "y": 1 }, + { "label": "1,4", "x": 4.5, "y": 1 }, + { "label": "1,5", "x": 5.5, "y": 1 }, + { "label": "1,6", "x": 6.5, "y": 1 }, + { "label": "1,7", "x": 7.5, "y": 1 }, + { "label": "1,8", "x": 8.5, "y": 1 }, + { "label": "1,9", "x": 9.5, "y": 1 }, + { "label": "1,10", "x": 10.5, "y": 1 }, + { "label": "1,11", "x": 11.5, "y": 1 }, + { "label": "1,12", "x": 12.5, "y": 1 }, + { "label": "2,12", "x": 13.5, "y": 1, "w": 1.5 }, + { "label": "1,14", "x": 15.5, "y": 1 }, + { "label": "1,15", "x": 16.5, "y": 1 }, + { "label": "1,16", "x": 17.5, "y": 1 }, + { "label": "1,17", "x": 18.5, "y": 1 }, + + { "label": "2,0", "x": 0, "y": 2, "w": 1.75 }, + { "label": "2,1", "x": 1.75, "y": 2 }, + { "label": "2,2", "x": 2.75, "y": 2 }, + { "label": "2,3", "x": 3.75, "y": 2 }, + { "label": "2,4", "x": 4.75, "y": 2 }, + { "label": "2,5", "x": 5.75, "y": 2 }, + { "label": "2,6", "x": 6.75, "y": 2 }, + { "label": "2,7", "x": 7.75, "y": 2 }, + { "label": "2,8", "x": 8.75, "y": 2 }, + { "label": "2,9", "x": 9.75, "y": 2 }, + { "label": "2,10", "x": 10.75, "y": 2 }, + { "label": "2,11", "x": 11.75, "y": 2 }, + { "label": "2,13", "x": 12.75, "y": 2, "w": 2.25 }, + { "label": "2,14", "x": 15.5, "y": 2 }, + { "label": "2,15", "x": 16.5, "y": 2 }, + { "label": "2,16", "x": 17.5, "y": 2 }, + { "label": "2,17", "x": 18.5, "y": 2 }, + + { "label": "3,0", "x": 0, "y": 3, "w": 1.25 }, + { "label": "3,1", "x": 1.25, "y": 3 }, + { "label": "3,2", "x": 2.25, "y": 3 }, + { "label": "3,3", "x": 3.25, "y": 3 }, + { "label": "3,4", "x": 4.25, "y": 3 }, + { "label": "3,5", "x": 5.25, "y": 3 }, + { "label": "3,6", "x": 6.25, "y": 3 }, + { "label": "3,7", "x": 7.25, "y": 3 }, + { "label": "3,8", "x": 8.25, "y": 3 }, + { "label": "3,9", "x": 9.25, "y": 3 }, + { "label": "3,10", "x": 10.25, "y": 3 }, + { "label": "3,11", "x": 11.25, "y": 3 }, + { "label": "3,12", "x": 12.25, "y": 3, "w": 1.75 }, + { "label": "3,13", "x": 14.25, "y": 3.25 }, + { "label": "3,14", "x": 15.5, "y": 3 }, + { "label": "3,15", "x": 16.5, "y": 3 }, + { "label": "3,16", "x": 17.5, "y": 3 }, + { "label": "3,17", "x": 18.5, "y": 3 }, + + { "label": "4,0", "x": 0, "y": 4, "w": 1.25 }, + { "label": "4,1", "x": 1.25, "y": 4, "w": 1.25 }, + { "label": "4,2", "x": 2.5, "y": 4, "w": 1.25 }, + { "label": "4,6", "x": 3.75, "y": 4, "w": 6.25 }, + { "label": "4,10", "x": 10, "y": 4, "w": 1.5 }, + { "label": "4,11", "x": 11.5, "y": 4, "w": 1.5 }, + { "label": "4,12", "x": 13.25, "y": 4.25 }, + { "label": "4,13", "x": 14.25, "y": 4.25 }, + { "label": "4,14", "x": 15.25, "y": 4.25 }, + { "label": "4,15", "x": 16.5, "y": 4 }, + { "label": "4,16", "x": 17.5, "y": 4 }, + { "label": "4,17", "x": 18.5, "y": 4 } + ] + }, + "LAYOUT_ansi": { + "layout": [ + { "label": "0,0", "x": 0, "y": 0 }, + { "label": "0,1", "x": 1, "y": 0 }, + { "label": "0,2", "x": 2, "y": 0 }, + { "label": "0,3", "x": 3, "y": 0 }, + { "label": "0,4", "x": 4, "y": 0 }, + { "label": "0,5", "x": 5, "y": 0 }, + { "label": "0,6", "x": 6, "y": 0 }, + { "label": "0,7", "x": 7, "y": 0 }, + { "label": "0,8", "x": 8, "y": 0 }, + { "label": "0,9", "x": 9, "y": 0 }, + { "label": "0,10", "x": 10, "y": 0 }, + { "label": "0,11", "x": 11, "y": 0 }, + { "label": "0,12", "x": 12, "y": 0 }, + { "label": "0,13", "x": 13, "y": 0 }, + { "label": "1,13", "x": 14, "y": 0 }, + { "label": "0,14", "x": 15.5, "y": 0 }, + { "label": "0,15", "x": 16.5, "y": 0 }, + { "label": "0,16", "x": 17.5, "y": 0 }, + { "label": "0,17", "x": 18.5, "y": 0 }, + + { "label": "1,0", "x": 0, "y": 1, "w": 1.5 }, + { "label": "1,1", "x": 1.5, "y": 1 }, + { "label": "1,2", "x": 2.5, "y": 1 }, + { "label": "1,3", "x": 3.5, "y": 1 }, + { "label": "1,4", "x": 4.5, "y": 1 }, + { "label": "1,5", "x": 5.5, "y": 1 }, + { "label": "1,6", "x": 6.5, "y": 1 }, + { "label": "1,7", "x": 7.5, "y": 1 }, + { "label": "1,8", "x": 8.5, "y": 1 }, + { "label": "1,9", "x": 9.5, "y": 1 }, + { "label": "1,10", "x": 10.5, "y": 1 }, + { "label": "1,11", "x": 11.5, "y": 1 }, + { "label": "1,12", "x": 12.5, "y": 1 }, + { "label": "2,12", "x": 13.5, "y": 1, "w": 1.5 }, + { "label": "1,14", "x": 15.5, "y": 1 }, + { "label": "1,15", "x": 16.5, "y": 1 }, + { "label": "1,16", "x": 17.5, "y": 1 }, + { "label": "1,17", "x": 18.5, "y": 1 }, + + { "label": "2,0", "x": 0, "y": 2, "w": 1.75 }, + { "label": "2,1", "x": 1.75, "y": 2 }, + { "label": "2,2", "x": 2.75, "y": 2 }, + { "label": "2,3", "x": 3.75, "y": 2 }, + { "label": "2,4", "x": 4.75, "y": 2 }, + { "label": "2,5", "x": 5.75, "y": 2 }, + { "label": "2,6", "x": 6.75, "y": 2 }, + { "label": "2,7", "x": 7.75, "y": 2 }, + { "label": "2,8", "x": 8.75, "y": 2 }, + { "label": "2,9", "x": 9.75, "y": 2 }, + { "label": "2,10", "x": 10.75, "y": 2 }, + { "label": "2,11", "x": 11.75, "y": 2 }, + { "label": "2,13", "x": 12.75, "y": 2, "w": 2.25 }, + { "label": "2,14", "x": 15.5, "y": 2 }, + { "label": "2,15", "x": 16.5, "y": 2 }, + { "label": "2,16", "x": 17.5, "y": 2 }, + { "label": "2,17", "x": 18.5, "y": 2 }, + + { "label": "3,0", "x": 0, "y": 3, "w": 2.25 }, + { "label": "3,2", "x": 2.25, "y": 3 }, + { "label": "3,3", "x": 3.25, "y": 3 }, + { "label": "3,4", "x": 4.25, "y": 3 }, + { "label": "3,5", "x": 5.25, "y": 3 }, + { "label": "3,6", "x": 6.25, "y": 3 }, + { "label": "3,7", "x": 7.25, "y": 3 }, + { "label": "3,8", "x": 8.25, "y": 3 }, + { "label": "3,9", "x": 9.25, "y": 3 }, + { "label": "3,10", "x": 10.25, "y": 3 }, + { "label": "3,11", "x": 11.25, "y": 3 }, + { "label": "3,12", "x": 12.25, "y": 3, "w": 1.75 }, + { "label": "3,13", "x": 14.25, "y": 3.25 }, + { "label": "3,14", "x": 15.5, "y": 3 }, + { "label": "3,15", "x": 16.5, "y": 3 }, + { "label": "3,16", "x": 17.5, "y": 3 }, + { "label": "3,17", "x": 18.5, "y": 3 }, + + { "label": "4,0", "x": 0, "y": 4, "w": 1.25 }, + { "label": "4,1", "x": 1.25, "y": 4, "w": 1.25 }, + { "label": "4,2", "x": 2.5, "y": 4, "w": 1.25 }, + { "label": "4,6", "x": 3.75, "y": 4, "w": 6.25 }, + { "label": "4,10", "x": 10, "y": 4, "w": 1.5 }, + { "label": "4,11", "x": 11.5, "y": 4, "w": 1.5 }, + { "label": "4,12", "x": 13.25, "y": 4.25 }, + { "label": "4,13", "x": 14.25, "y": 4.25 }, + { "label": "4,14", "x": 15.25, "y": 4.25 }, + { "label": "4,15", "x": 16.5, "y": 4 }, + { "label": "4,16", "x": 17.5, "y": 4 }, + { "label": "4,17", "x": 18.5, "y": 4 } + ] + }, + "LAYOUT_iso": { + "layout": [ + { "label": "0,0", "x": 0, "y": 0 }, + { "label": "0,1", "x": 1, "y": 0 }, + { "label": "0,2", "x": 2, "y": 0 }, + { "label": "0,3", "x": 3, "y": 0 }, + { "label": "0,4", "x": 4, "y": 0 }, + { "label": "0,5", "x": 5, "y": 0 }, + { "label": "0,6", "x": 6, "y": 0 }, + { "label": "0,7", "x": 7, "y": 0 }, + { "label": "0,8", "x": 8, "y": 0 }, + { "label": "0,9", "x": 9, "y": 0 }, + { "label": "0,10", "x": 10, "y": 0 }, + { "label": "0,11", "x": 11, "y": 0 }, + { "label": "0,12", "x": 12, "y": 0 }, + { "label": "0,13", "x": 13, "y": 0 }, + { "label": "1,13", "x": 14, "y": 0 }, + { "label": "0,14", "x": 15.5, "y": 0 }, + { "label": "0,15", "x": 16.5, "y": 0 }, + { "label": "0,16", "x": 17.5, "y": 0 }, + { "label": "0,17", "x": 18.5, "y": 0 }, + + { "label": "1,0", "x": 0, "y": 1, "w": 1.5 }, + { "label": "1,1", "x": 1.5, "y": 1 }, + { "label": "1,2", "x": 2.5, "y": 1 }, + { "label": "1,3", "x": 3.5, "y": 1 }, + { "label": "1,4", "x": 4.5, "y": 1 }, + { "label": "1,5", "x": 5.5, "y": 1 }, + { "label": "1,6", "x": 6.5, "y": 1 }, + { "label": "1,7", "x": 7.5, "y": 1 }, + { "label": "1,8", "x": 8.5, "y": 1 }, + { "label": "1,9", "x": 9.5, "y": 1 }, + { "label": "1,10", "x": 10.5, "y": 1 }, + { "label": "1,11", "x": 11.5, "y": 1 }, + { "label": "1,12", "x": 12.5, "y": 1 }, + { "label": "1,14", "x": 15.5, "y": 1 }, + { "label": "1,15", "x": 16.5, "y": 1 }, + { "label": "1,16", "x": 17.5, "y": 1 }, + { "label": "1,17", "x": 18.5, "y": 1 }, + + { "label": "2,0", "x": 0, "y": 2, "w": 1.75 }, + { "label": "2,1", "x": 1.75, "y": 2 }, + { "label": "2,2", "x": 2.75, "y": 2 }, + { "label": "2,3", "x": 3.75, "y": 2 }, + { "label": "2,4", "x": 4.75, "y": 2 }, + { "label": "2,5", "x": 5.75, "y": 2 }, + { "label": "2,6", "x": 6.75, "y": 2 }, + { "label": "2,7", "x": 7.75, "y": 2 }, + { "label": "2,8", "x": 8.75, "y": 2 }, + { "label": "2,9", "x": 9.75, "y": 2 }, + { "label": "2,10", "x": 10.75, "y": 2 }, + { "label": "2,11", "x": 11.75, "y": 2 }, + { "label": "2,12", "x": 12.75, "y": 2 }, + { "label": "2,13", "x": 13.75, "y": 1, "w": 1.25, "h": 2 }, + { "label": "2,14", "x": 15.5, "y": 2 }, + { "label": "2,15", "x": 16.5, "y": 2 }, + { "label": "2,16", "x": 17.5, "y": 2 }, + { "label": "2,17", "x": 18.5, "y": 2 }, + + { "label": "3,0", "x": 0, "y": 3, "w": 1.25 }, + { "label": "3,1", "x": 1.25, "y": 3 }, + { "label": "3,2", "x": 2.25, "y": 3 }, + { "label": "3,3", "x": 3.25, "y": 3 }, + { "label": "3,4", "x": 4.25, "y": 3 }, + { "label": "3,5", "x": 5.25, "y": 3 }, + { "label": "3,6", "x": 6.25, "y": 3 }, + { "label": "3,7", "x": 7.25, "y": 3 }, + { "label": "3,8", "x": 8.25, "y": 3 }, + { "label": "3,9", "x": 9.25, "y": 3 }, + { "label": "3,10", "x": 10.25, "y": 3 }, + { "label": "3,11", "x": 11.25, "y": 3 }, + { "label": "3,12", "x": 12.25, "y": 3, "w": 1.75 }, + { "label": "3,13", "x": 14.25, "y": 3.25 }, + { "label": "3,14", "x": 15.5, "y": 3 }, + { "label": "3,15", "x": 16.5, "y": 3 }, + { "label": "3,16", "x": 17.5, "y": 3 }, + { "label": "3,17", "x": 18.5, "y": 3 }, + + { "label": "4,0", "x": 0, "y": 4, "w": 1.25 }, + { "label": "4,1", "x": 1.25, "y": 4, "w": 1.25 }, + { "label": "4,2", "x": 2.5, "y": 4, "w": 1.25 }, + { "label": "4,6", "x": 3.75, "y": 4, "w": 6.25 }, + { "label": "4,10", "x": 10, "y": 4, "w": 1.5 }, + { "label": "4,11", "x": 11.5, "y": 4, "w": 1.5 }, + { "label": "4,12", "x": 13.25, "y": 4.25 }, + { "label": "4,13", "x": 14.25, "y": 4.25 }, + { "label": "4,14", "x": 15.25, "y": 4.25 }, + { "label": "4,15", "x": 16.5, "y": 4 }, + { "label": "4,16", "x": 17.5, "y": 4 }, + { "label": "4,17", "x": 18.5, "y": 4 } + ] + } + } +} diff --git a/keyboards/barleycorn_smd/keymaps/default/keymap.c b/keyboards/barleycorn_smd/keymaps/default/keymap.c new file mode 100644 index 0000000000..8bfc60ad4b --- /dev/null +++ b/keyboards/barleycorn_smd/keymaps/default/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2021 Matthew Dias + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +//This is the ANSI version of the PCB + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT_ansi( /* Base */ + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PEQL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_BSPC, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT), + +[1] = LAYOUT_ansi( /* FN */ + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +}; diff --git a/keyboards/barleycorn_smd/keymaps/default/readme.md b/keyboards/barleycorn_smd/keymaps/default/readme.md new file mode 100644 index 0000000000..04903f8cc9 --- /dev/null +++ b/keyboards/barleycorn_smd/keymaps/default/readme.md @@ -0,0 +1,11 @@ +# The default keymap for Barleycorn + +![Layer 0](https://i.imgur.com/cU9lzz3.png) + +![Layer 1](https://i.imgur.com/0G3e1K3.png) + +Default layer is normal ANSI and Fn layer is used for Volume control and arrow cluster. + +Alternative ANSI layouts: + +![Alt Keymap](https://i.imgur.com/6uAx8jZ.png) diff --git a/keyboards/barleycorn_smd/keymaps/iso/keymap.c b/keyboards/barleycorn_smd/keymaps/iso/keymap.c new file mode 100644 index 0000000000..0f739c8831 --- /dev/null +++ b/keyboards/barleycorn_smd/keymaps/iso/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2021 Matthew Dias + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +//This is the ISO version of the PCB + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT_iso( /* Base */ + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_P7, KC_P8, KC_P9, KC_PEQL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_BSPC, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT), + +[1] = LAYOUT_iso( /* FN */ + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +}; diff --git a/keyboards/barleycorn_smd/keymaps/iso/readme.md b/keyboards/barleycorn_smd/keymaps/iso/readme.md new file mode 100644 index 0000000000..492abfcecc --- /dev/null +++ b/keyboards/barleycorn_smd/keymaps/iso/readme.md @@ -0,0 +1,11 @@ +# The default keymap for ISO Barleycorn + +![Layer 0](https://i.imgur.com/llZlVHt.png) + +![Layer 1](https://i.imgur.com/hrYtMQk.png) + +Default layer is normal ISO and Fn layer is used for Volume control and arrow cluster + +Alternative ISO layouts: + +![Alt Keymap](https://i.imgur.com/2cL0IGQ.png) diff --git a/keyboards/barleycorn_smd/keymaps/via/keymap.c b/keyboards/barleycorn_smd/keymaps/via/keymap.c new file mode 100644 index 0000000000..4cc2f1a73f --- /dev/null +++ b/keyboards/barleycorn_smd/keymaps/via/keymap.c @@ -0,0 +1,48 @@ +/* Copyright 2021 Matthew Dias + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// This keymaps is used for VIA, it reflects the default keymap. + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT_all( /* Base */ + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PEQL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_BSPC, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT), + +[1] = LAYOUT_all( /* FN */ + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +[2] = LAYOUT_all( /* Empty for dynamic keymaps */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +[3] = LAYOUT_all( /* Empty for dynamic keymaps */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +}; diff --git a/keyboards/barleycorn_smd/keymaps/via/readme.md b/keyboards/barleycorn_smd/keymaps/via/readme.md new file mode 100644 index 0000000000..b82bc8e79f --- /dev/null +++ b/keyboards/barleycorn_smd/keymaps/via/readme.md @@ -0,0 +1 @@ +# Compile with this keymap to use VIA diff --git a/keyboards/barleycorn_smd/keymaps/via/rules.mk b/keyboards/barleycorn_smd/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/barleycorn_smd/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/barleycorn_smd/matrix.c b/keyboards/barleycorn_smd/matrix.c new file mode 100644 index 0000000000..b717452f3d --- /dev/null +++ b/keyboards/barleycorn_smd/matrix.c @@ -0,0 +1,138 @@ +/* +Copyright 2021 Matthew Dias + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include +#include +#include "wait.h" +#include "quantum.h" +#include "i2c_master.h" + +static const pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS; +static const pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS; + +static void unselect_rows(void) { + for(uint8_t x = 0; x < MATRIX_ROWS; x++) { + setPinInputHigh(row_pins[x]); + } +} + +static void select_row(uint8_t row) { + setPinOutput(row_pins[row]); + writePinLow(row_pins[row]); +} + +static void unselect_row(uint8_t row) { + setPinInputHigh(row_pins[row]); +} + +static void init_pins(void) { + unselect_rows(); + // Set I/O + uint8_t send_data[2] = { 0xFF, 0x03}; + i2c_writeReg((PORT_EXPANDER_ADDRESS << 1), 0x00, &send_data[0], 2, 20); + // Set Pull-up + i2c_writeReg((PORT_EXPANDER_ADDRESS << 1), 0x0C, &send_data[0], 2, 20); + + for (uint8_t x = 0; x < MATRIX_COLS; x++) { + if ( x < 8 ) { + setPinInputHigh(col_pins[x]); + } + } +} + +void matrix_init_custom(void) { + // TODO: initialize hardware here + // Initialize I2C + i2c_init(); + + // initialize key pins + init_pins(); + wait_ms(50); +} + +static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) { + // Store last value of row prior to reading + matrix_row_t last_row_value = current_matrix[current_row]; + + // Clear data in matrix row + current_matrix[current_row] = 0; + + // Select row and wait for row selecton to stabilize + select_row(current_row); + matrix_io_delay(); + + uint8_t port_expander_col_buffer[2]; + i2c_readReg((PORT_EXPANDER_ADDRESS << 1), 0x12, &port_expander_col_buffer[0], 2, 20); + + // For each col... + for(uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) { + uint8_t pin_state; + // Select the col pin to read (active low) + switch (col_index) { + case 8 : + pin_state = port_expander_col_buffer[0] & (1 << 0); + break; + case 9 : + pin_state = port_expander_col_buffer[0] & (1 << 1); + break; + case 10 : + pin_state = port_expander_col_buffer[0] & (1 << 2); + break; + case 11 : + pin_state = port_expander_col_buffer[0] & (1 << 3); + break; + case 12 : + pin_state = port_expander_col_buffer[0] & (1 << 4); + break; + case 13 : + pin_state = port_expander_col_buffer[0] & (1 << 5); + break; + case 14 : + pin_state = port_expander_col_buffer[0] & (1 << 6); + break; + case 15 : + pin_state = port_expander_col_buffer[0] & (1 << 7); + break; + case 16 : + pin_state = port_expander_col_buffer[1] & (1 << 0); + break; + case 17 : + pin_state = port_expander_col_buffer[1] & (1 << 1); + break; + default : + pin_state = readPin(col_pins[col_index]); + } + + // Populate the matrix row with the state of the col pin + current_matrix[current_row] |= pin_state ? 0 : (MATRIX_ROW_SHIFTER << col_index); + } + + // Unselect row + unselect_row(current_row); + + return (last_row_value != current_matrix[current_row]); +} + +bool matrix_scan_custom(matrix_row_t current_matrix[]) { + bool matrix_has_changed = false; + + // Set row, read cols + for (uint8_t current_row = 0; current_row < MATRIX_ROWS; current_row++) { + matrix_has_changed |= read_cols_on_row(current_matrix, current_row); + } + + return matrix_has_changed; +} diff --git a/keyboards/barleycorn_smd/readme.md b/keyboards/barleycorn_smd/readme.md new file mode 100644 index 0000000000..897e1270fe --- /dev/null +++ b/keyboards/barleycorn_smd/readme.md @@ -0,0 +1,19 @@ +# Barleycorn SMD + +![image](https://user-images.githubusercontent.com/3302524/110901245-a5679b00-82c9-11eb-8f8f-17ed6bd97332.png) + +An f-row less compact 1800 keyboard with SMD components. Based on Barleycorn by Yiancar. + +- Keyboard Maintainer: matthewdias +- Hardware Supported: Barleycorn SMD +- Hardware Availability: https://p3dstore.com + +Make example for this keyboard (after setting up your build environment): + + make barleycorn_smd:default + +Flashing example for this keyboard: + + make barleycorn_smd:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/barleycorn_smd/rules.mk b/keyboards/barleycorn_smd/rules.mk new file mode 100644 index 0000000000..fba31123d0 --- /dev/null +++ b/keyboards/barleycorn_smd/rules.mk @@ -0,0 +1,27 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output + +CUSTOM_MATRIX = lite + +SRC += matrix.c +QUANTUM_LIB_SRC += i2c_master.c From 23765332fa5c99aef876031879615fd49ed09932 Mon Sep 17 00:00:00 2001 From: Salicylic-acid3 <46864619+Salicylic-acid3@users.noreply.github.com> Date: Wed, 17 Mar 2021 15:47:18 +0900 Subject: [PATCH 079/613] [Keyboard] Modification of ErgoArrows info.json (#11980) The order of key descriptions in ErgoArrows info.json was wrong, so it has been corrected. --- keyboards/ergoarrows/info.json | 121 +++++++++++++++++---------------- 1 file changed, 61 insertions(+), 60 deletions(-) diff --git a/keyboards/ergoarrows/info.json b/keyboards/ergoarrows/info.json index b3e7434067..fca43fcd2d 100644 --- a/keyboards/ergoarrows/info.json +++ b/keyboards/ergoarrows/info.json @@ -7,81 +7,82 @@ "layouts": { "LAYOUT": { "layout": [ - {"label":"#", "x":3.5, "y":0}, - {"label":"*", "x":12.25, "y":0}, - {"label":"@", "x":2.5, "y":0.125}, - {"label":"$", "x":4.5, "y":0.125}, - {"label":"&", "x":11.25, "y":0.13}, - {"label":"(", "x":13.25, "y":0.13}, - {"label":"%", "x":5.5, "y":0.25}, - {"label":"^", "x":10.25, "y":0.25}, - {"label":"!", "x":1.5, "y":0.375}, {"label":"Esc", "x":0.5, "y":0.38}, - {"label":")", "x":14.25, "y":0.38}, + {"label":"1", "x":1.5, "y":0.375}, + {"label":"2", "x":2.5, "y":0.125}, + {"label":"3", "x":3.5, "y":0}, + {"label":"4", "x":4.5, "y":0.125}, + {"label":"5", "x":5.5, "y":0.25}, + {"label":"6", "x":6.5, "y":0.5}, + {"label":"5", "x":9.25, "y":0.5}, + {"label":"6", "x":10.25, "y":0.25}, + {"label":"7", "x":11.25, "y":0.13}, + {"label":"8", "x":12.25, "y":0}, + {"label":"9", "x":13.25, "y":0.13}, + {"label":"0", "x":14.25, "y":0.38}, {"label":"PrtScr", "x":15.25, "y":0.38}, - {"x":6.5, "y":0.5}, {"x":9.25, "y":0.5}, - {"label":"E", "x":3.5, "y":1}, - {"label":"I", "x":12.25, "y":1}, - {"label":"W", "x":2.5, "y":1.125}, - {"label":"R", "x":4.5, "y":1.125}, - {"label":"U", "x":11.25, "y":1.13}, - {"label":"O", "x":13.25, "y":1.13}, - {"label":"T", "x":5.5, "y":1.25}, - {"label":"Y", "x":10.25, "y":1.25}, - {"label":"Q", "x":1.5, "y":1.375}, {"label":"Tab", "x":0.5, "y":1.38}, + {"label":"Q", "x":1.5, "y":1.375}, + {"label":"W", "x":2.5, "y":1.125}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1.125}, + {"label":"T", "x":5.5, "y":1.25}, + {"label":"Y", "x":6.5, "y":1.5}, + {"label":"T", "x":9.25, "y":1.5}, + {"label":"Y", "x":10.25, "y":1.25}, + {"label":"U", "x":11.25, "y":1.13}, + {"label":"I", "x":12.25, "y":1}, + {"label":"O", "x":13.25, "y":1.13}, {"label":"P", "x":14.25, "y":1.38}, - {"label":"\u2019", "x":15.25, "y":1.38}, - {"label":"[", "x":6.5, "y":1.5}, - {"label":"]", "x":9.25, "y":1.5}, - {"label":"D", "x":3.5, "y":2}, - {"label":"K", "x":12.25, "y":2}, - {"label":"S", "x":2.5, "y":2.125}, - {"label":"F", "x":4.5, "y":2.125}, - {"label":"J", "x":11.25, "y":2.13}, - {"label":"L", "x":13.25, "y":2.13}, - {"label":"G", "x":5.5, "y":2.25}, - {"label":"H", "x":10.25, "y":2.25}, - {"label":"A", "x":1.5, "y":2.375}, + {"label":"[", "x":15.25, "y":1.38}, {"label":"Caps", "x":0.5, "y":2.38}, + {"label":"A", "x":1.5, "y":2.375}, + {"label":"S", "x":2.5, "y":2.125}, + {"label":"D", "x":3.5, "y":2}, + {"label":"F", "x":4.5, "y":2.125}, + {"label":"G", "x":5.5, "y":2.25}, + {"label":"H", "x":6.5, "y":2.5}, + {"label":"G", "x":9.25, "y":2.5}, + {"label":"H", "x":10.25, "y":2.25}, + {"label":"J", "x":11.25, "y":2.13}, + {"label":"K", "x":12.25, "y":2}, + {"label":"L", "x":13.25, "y":2.13}, {"label":":", "x":14.25, "y":2.38}, {"label":"Ent", "x":15.25, "y":2.38}, - {"label":"(", "x":6.5, "y":2.5}, - {"label":")", "x":9.25, "y":2.5}, - {"label":"C", "x":3.5, "y":3}, - {"label":"<", "x":12.25, "y":3}, - {"label":"X", "x":2.5, "y":3.125}, - {"label":"V", "x":4.5, "y":3.125}, - {"label":"M", "x":11.25, "y":3.13}, - {"label":">", "x":13.25, "y":3.13}, - {"label":"B", "x":5.5, "y":3.25}, - {"label":"N", "x":10.25, "y":3.25}, - {"label":"Z", "x":1.5, "y":3.375}, {"label":"Shift", "x":0.5, "y":3.38}, + {"label":"Z", "x":1.5, "y":3.375}, + {"label":"X", "x":2.5, "y":3.125}, + {"label":"C", "x":3.5, "y":3}, + {"label":"V", "x":4.5, "y":3.125}, + {"label":"B", "x":5.5, "y":3.25}, + {"label":"N", "x":6.5, "y":3.5}, + {"label":"B", "x":9.25, "y":3.5}, + {"label":"N", "x":10.25, "y":3.25}, + {"label":"M", "x":11.25, "y":3.13}, + {"label":"<", "x":12.25, "y":3}, + {"label":">", "x":13.25, "y":3.13}, {"label":"?", "x":14.25, "y":3.38}, {"label":"_", "x":15.25, "y":3.38}, - {"x":6.5, "y":3.5}, - {"x":9.25, "y":3.5}, - {"label":"Ctrl", "x":0.5, "y":4.375}, + {"label":"Ctrl", "x":0.5, "y":4.38}, {"label":"Win", "x":1.5, "y":4.38}, - {"label":"\u7121\u5909", "x":3.75, "y":4.38}, + {"label":"↑", "x":2.63, "y":4.51}, + {"label":"Alt", "x":3.75, "y":4.38}, {"label":"Ent", "x":4.75, "y":4.38}, - {"label":"Spc", "x":11, "y":4.38}, - {"label":"\u5909\u63db", "x":12, "y":4.38}, - {"label":"Alt", "x":14.25, "y":4.38}, - {"label":"App", "x":15.25, "y":4.38}, - {"label":"\u2191", "x":2.625, "y":4.505}, - {"label":"\u2191", "x":13.13, "y":4.51}, {"label":"BS", "x":5.85, "y":4.6}, - {"label":"Del", "x":9.9, "y":4.6}, {"label":"Del", "x":6.9, "y":5.15}, {"label":"BS", "x":8.85, "y":5.15}, - {"label":"\u2190", "x":1.625, "y":5.505}, - {"label":"\u2193", "x":2.625, "y":5.505}, - {"label":"\u2192", "x":3.625, "y":5.505}, - {"label":"\u2190", "x":12.13, "y":5.51}, - {"label":"\u2193", "x":13.13, "y":5.51}, - {"label":"\u2192", "x":14.13, "y":5.51}] + {"label":"Del", "x":9.9, "y":4.6}, + {"label":"Spc", "x":11, "y":4.38}, + {"label":"Alt", "x":12, "y":4.38}, + {"label":"↑", "x":13.13, "y":4.51}, + {"label":"Alt", "x":14.25, "y":4.38}, + {"label":"App", "x":15.25, "y":4.38}, + {"label":"←", "x":1.63, "y":5.51}, + {"label":"⇓", "x":2.63, "y":5.51}, + {"label":"→", "x":3.625, "y":5.51}, + {"label":"←", "x":12.13, "y":5.51}, + {"label":"⇓", "x":13.13, "y":5.51}, + {"label":"→", "x":14.13, "y":5.51}] } } } \ No newline at end of file From 538194344a010e7876c278b10e513ec1e6b245d2 Mon Sep 17 00:00:00 2001 From: im a can what do you think lmao? <33337640+lyso1@users.noreply.github.com> Date: Wed, 17 Mar 2021 02:48:03 -0400 Subject: [PATCH 080/613] [Keyboard] add oled and encoder function to lck75 (#11825) Co-authored-by: Drashna Jaelre --- keyboards/lck75/config.h | 3 - keyboards/lck75/glcdfont.c | 18 --- keyboards/lck75/keymaps/default/keymap.c | 135 ----------------------- keyboards/lck75/lck75.c | 132 +++++++++++++++++++++- keyboards/lck75/rules.mk | 1 + 5 files changed, 130 insertions(+), 159 deletions(-) delete mode 100644 keyboards/lck75/glcdfont.c diff --git a/keyboards/lck75/config.h b/keyboards/lck75/config.h index f5834960e8..3758afa189 100644 --- a/keyboards/lck75/config.h +++ b/keyboards/lck75/config.h @@ -83,9 +83,6 @@ along with this program. If not, see . # undef LOCKING_RESYNC_ENABLE #endif - -#define OLED_FONT_H "keyboards/lck75/glcdfont.c" - #define IGNORE_MOD_TAP_INTERRUPT #define PERMISSIVE_HOLD #define TAPPING_TERM 200 diff --git a/keyboards/lck75/glcdfont.c b/keyboards/lck75/glcdfont.c deleted file mode 100644 index ed46ad56f9..0000000000 --- a/keyboards/lck75/glcdfont.c +++ /dev/null @@ -1,18 +0,0 @@ -// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0. -// See gfxfont.h for newer custom bitmap font info. -// https://helixfonteditor.netlify.com/ - -#include "progmem.h" - -// Standard ASCII 5x7 font -const unsigned char font[] PROGMEM = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00, 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00, 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00, 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00, 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00, 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00, 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00, 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00, 0x00, 0x18, 0x24, 0x18, 0x00, 0x00, 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00, 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00, 0x26, 0x29, 0x79, 0x29, 0x26, 0x00, 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00, 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00, 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00, 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00, 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00, 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00, 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00, 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00, 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00, 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00, - 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00, 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00, 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00, 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00, 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00, 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00, 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00, 0x23, 0x13, 0x08, 0x64, 0x62, 0x00, 0x36, 0x49, 0x56, 0x20, 0x50, 0x00, 0x00, 0x08, 0x07, 0x03, 0x00, 0x00, 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00, 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, 0x00, 0x80, 0x70, 0x30, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00, - 0x72, 0x49, 0x49, 0x49, 0x46, 0x00, 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00, 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00, 0x27, 0x45, 0x45, 0x45, 0x39, 0x00, 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00, 0x41, 0x21, 0x11, 0x09, 0x07, 0x00, 0x36, 0x49, 0x49, 0x49, 0x36, 0x00, 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x40, 0x34, 0x00, 0x00, 0x00, 0x00, 0x08, 0x14, 0x22, 0x41, 0x00, 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, 0x00, 0x41, 0x22, 0x14, 0x08, 0x00, 0x02, 0x01, 0x59, 0x09, 0x06, 0x00, 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00, 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00, 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00, 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00, 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00, 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00, 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00, - 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00, 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00, 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00, 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00, 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00, 0x26, 0x49, 0x49, 0x49, 0x32, 0x00, 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00, 0x63, 0x14, 0x08, 0x14, 0x63, 0x00, 0x03, 0x04, 0x78, 0x04, 0x03, 0x00, 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00, 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00, 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00, 0x04, 0x02, 0x01, 0x02, 0x04, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x03, 0x07, 0x08, 0x00, 0x00, 0x20, 0x54, 0x54, 0x78, 0x40, 0x00, 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00, 0x38, 0x44, 0x44, 0x44, 0x28, 0x00, - 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00, 0x38, 0x54, 0x54, 0x54, 0x18, 0x00, 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00, 0x18, 0x24, 0x24, 0x1C, 0x78, 0x00, 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00, 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00, 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00, 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00, 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00, 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00, 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, 0x7C, 0x18, 0x24, 0x24, 0x18, 0x00, 0x18, 0x24, 0x24, 0x18, 0x7C, 0x00, 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00, 0x48, 0x54, 0x54, 0x54, 0x24, 0x00, 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00, 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, 0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00, 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, 0x00, 0x08, 0x36, 0x41, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, - 0x00, 0x41, 0x36, 0x08, 0x00, 0x00, 0x02, 0x01, 0x02, 0x04, 0x02, 0x00, 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x60, 0x30, 0x18, 0xF8, 0x18, 0x00, 0xC0, 0x70, 0x1C, 0x06, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0xC3, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x00, 0x00, 0x08, 0x08, 0x08, 0x00, 0x1C, 0x22, 0x41, 0x41, 0x41, 0x22, 0x1C, 0x00, 0x08, 0x08, 0x08, 0x00, 0x00, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0xF8, 0x0C, 0x04, 0xE7, 0xE4, 0xE4, 0x07, 0x04, 0xE4, 0xE7, 0xE4, 0x04, 0x07, 0xE4, 0xE4, 0xE7, 0x04, 0x0C, 0xF8, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F, 0x00, 0x14, 0x08, 0x14, 0x00, 0x00, 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F, 0x00, 0x22, 0x1C, 0x41, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x18, 0x0C, 0x06, 0x0C, 0x18, 0x30, 0x77, 0x77, 0x77, 0x00, 0x77, 0x77, - 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x4A, 0x4F, 0x4A, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x60, 0x70, 0x3E, 0x1F, 0x19, 0x18, 0x0C, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x0C, 0x06, 0x07, 0xFC, 0x00, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFF, 0x80, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x1C, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, 0x1C, 0x22, 0x00, 0x00, 0x1C, 0x3E, 0x7F, 0x63, 0x41, 0x22, 0x1C, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x49, 0xFF, 0x00, 0x00, 0x0F, 0x1F, 0x3F, 0x38, 0x30, 0xFF, 0xFF, 0xFF, 0x30, 0x38, 0x3F, 0x1F, 0x0F, 0x00, 0x00, 0xFF, 0x49, 0x49, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x40, 0x60, 0x6A, 0x64, 0x6A, 0x60, 0x40, 0x00, 0x00, 0x00, 0x00, 0x04, 0x42, 0x69, 0x65, 0x65, 0x65, 0x69, 0x42, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0x0C, 0x18, 0x30, 0x66, 0x66, 0x66, 0x00, 0x00, 0xFC, 0x24, 0x24, 0xFC, 0x24, 0x24, 0xFC, 0x24, 0x24, 0xFC, 0x24, 0x24, 0xFC, 0x24, 0x24, 0xFC, 0x24, 0x24, 0xFC, 0x24, 0x24, 0xFC, 0x24, 0x24, 0xFC, 0x00, 0x00, 0x00, 0xF0, 0x90, 0x90, 0xF0, 0x90, 0x90, 0xF0, 0x98, 0x9C, 0xF2, 0x22, 0x21, 0xE1, 0x01, 0x01, 0x01, 0xF1, 0x91, 0x91, 0xFA, 0x4C, 0x4C, 0xF8, 0x48, 0x48, 0xF8, 0x48, 0x48, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0E, 0x18, 0x30, 0x21, 0x21, 0x31, 0x18, 0x10, 0x30, 0x20, 0x60, 0x41, 0x60, 0x20, 0x30, 0x18, 0x30, 0x60, 0x40, 0x40, 0x47, 0x4C, 0x48, 0x68, 0x38, 0x1C, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x22, 0x41, 0x63, 0x7F, 0x3E, 0x1C, - 0x00, 0x00, 0x22, 0x1C, 0x00, 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x0F, 0x18, 0x10, 0x70, 0x10, 0x10, 0x70, 0x10, 0x13, 0x73, 0x13, 0x10, 0x70, 0x10, 0x10, 0x70, 0x10, 0x18, 0x0F, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x22, 0xC9, 0xD1, 0xC9, 0x22, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x10, 0x02, 0x38, 0xFC, 0xED, 0xFC, 0x38, 0x02, 0x10, 0x00, 0x00, 0x08, 0x0C, 0x7E, 0x7F, 0x7E, 0x0C, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x09, 0x09, 0x09, 0x0F, 0x09, 0x09, 0x0F, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x0F, 0x09, 0x09, 0x0F, 0x09, 0x09, 0x09, 0x0F, 0x00, 0x00, 0x00, 0x07, 0x04, 0x04, 0x07, 0x04, 0x04, 0x07, 0x04, 0x04, 0x0F, 0x09, 0x09, 0x0F, 0x00, 0x00, 0x00, 0x07, 0x04, 0x04, 0x07, 0x02, 0x02, 0x03, 0x02, 0x02, 0x03, 0x02, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; \ No newline at end of file diff --git a/keyboards/lck75/keymaps/default/keymap.c b/keyboards/lck75/keymaps/default/keymap.c index 66958417cc..694b42a688 100644 --- a/keyboards/lck75/keymaps/default/keymap.c +++ b/keyboards/lck75/keymaps/default/keymap.c @@ -1,5 +1,4 @@ /* Copyright 2020 Lyso1/Lysol#5640(board/layout code) - * Copyright 2020 @wafflekeebs/@waffle#6666(oled code) * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 2 of the License, or @@ -17,16 +16,6 @@ -void encoder_update_user(uint8_t index, bool clockwise) { - if (index == 0) { - if (clockwise) { - tap_code(KC_VOLU); - } else { - tap_code(KC_VOLD); - } - } -} - // @@ -51,127 +40,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -extern uint8_t is_master; - -#define IDLE_FRAMES 5 -#define IDLE_SPEED 30 -#define TAP_FRAMES 2 -#define TAP_SPEED 40 -#define ANIM_FRAME_DURATION 200 -#define ANIM_SIZE 512 - -bool gui_on = true; -uint32_t anim_timer = 0; -uint32_t anim_sleep = 0; -uint8_t current_idle_frame = 0; -uint8_t current_tap_frame = 0; - -static void render_anim(void) { - - static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = { - - { - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,16,8,8,4,4,4,8,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,100,130,2,2,2,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64, - 64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,56,4,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,7, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - }, - - { - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,16,8,8,4,4,4,8,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,100,130,2,2,2,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64, - 64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,56,4,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8, - 7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - }, - - { - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,64,64,64,64,32,32,32,32,16,8,4,2,2,4,24,96,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,194,1,1,2,2,4,4,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,96,0,129,130,130,132,8,16,32,64,128,0,0,0,0,128,128,128,128,64,64,64,64,32, - 32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,25,6,0,0,0,0,0,0,0,24,24,24,27,3,0,64,160,34,36,20,18,18,18,11,8,8,8,8,5,5,9,9,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,7,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - }, - - { - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64, - 64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8, - 7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - }, - - { - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,8,4,2,2,2,4,56,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,226,1,1,2,2,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64,64,64, - 32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,7,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - } - - }; - - static const char PROGMEM prep[][ANIM_SIZE] = { - - { - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,129,128,128,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,0,1,225,26,6,9,49,53,1,138,124,0,0,128,128,128,128,64,64, - 64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,24,6,5,152,153,132,195,124,65,65,64,64,32,33,34,18,17,17,17,9,8,8,8,8,4,4,4,4,4,4,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - } - - }; - - static const char PROGMEM tap[TAP_FRAMES][ANIM_SIZE] = { - - { - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,248,248,248,248,0,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,129,128,128,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,0,1,1,2,4,8,16,32,67,135,7,1,0,184,188,190,159, - 95,95,79,76,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,24,6,5,152,153,132,67,124,65,65,64,64,32,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,61,124,252,252,252,252,252,60,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1, - 1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - }, - - { - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,0,1,225,26,6,9,49,53,1,138,124,0,0,128,128,128,128,64,64,64,64,32, - 32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,0,0,0,0,0,0,0,0,1,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,4,4,4,4,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,122,122,121,121,121,121,57,49,2,2,4,4,8,8,8,136,136,135,128, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - } - - }; - - void animation_phase(void) { - - if (get_current_wpm() <=IDLE_SPEED) { - current_idle_frame = (current_idle_frame + 1) % IDLE_FRAMES; - oled_write_raw_P(idle[abs((IDLE_FRAMES-1)-current_idle_frame)], ANIM_SIZE); - } - - if (get_current_wpm() >IDLE_SPEED && get_current_wpm() =TAP_SPEED) { - current_tap_frame = (current_tap_frame + 1) % TAP_FRAMES; - oled_write_raw_P(tap[abs((TAP_FRAMES-1)-current_tap_frame)], ANIM_SIZE); - } - } - - if (get_current_wpm() > 0) { - - oled_on(); - - if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { - anim_timer = timer_read32(); - animation_phase(); - } - - anim_sleep = timer_read32(); - } else { - if (timer_elapsed32(anim_sleep) > OLED_TIMEOUT) { - oled_off(); - } else { - if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { - anim_timer = timer_read32(); - animation_phase(); - } - } - } -} -#ifdef OLED_DRIVER_ENABLE -oled_rotation_t oled_init_user(oled_rotation_t rotation) { - return OLED_ROTATION_180; -} - -__attribute__((weak)) void oled_task_user(void) { - render_anim(); -} -#endif diff --git a/keyboards/lck75/lck75.c b/keyboards/lck75/lck75.c index 5851232e65..3bcf350a19 100644 --- a/keyboards/lck75/lck75.c +++ b/keyboards/lck75/lck75.c @@ -1,5 +1,4 @@ -/* Copyright 2020 Lyso1 - * +/* Copyright 2021 Lyso1/ItsWaffle(oled code) * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 2 of the License, or @@ -13,5 +12,132 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ +#include "lck75.h" -#include "lck75.h" \ No newline at end of file +__attribute__((weak)) void encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } +} + +#define IDLE_FRAMES 5 +#define IDLE_SPEED 30 +#define TAP_FRAMES 2 +#define TAP_SPEED 40 +#define ANIM_FRAME_DURATION 200 +#define ANIM_SIZE 512 +#ifdef OLED_DRIVER_ENABLE +__attribute__((weak)) oled_rotation_t oled_init_user(oled_rotation_t rotation) { + return OLED_ROTATION_180; +} + +__attribute__((weak)) void oled_task_user(void) { +uint32_t anim_timer = 0; +uint32_t anim_sleep = 0; +uint8_t current_idle_frame = 0; +uint8_t current_tap_frame = 0; + + static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = { + + { + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,16,8,8,4,4,4,8,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,100,130,2,2,2,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64, + 64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,56,4,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,7, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + }, + + { + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,16,8,8,4,4,4,8,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,100,130,2,2,2,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64, + 64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,56,4,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8, + 7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + }, + + { + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,64,64,64,64,32,32,32,32,16,8,4,2,2,4,24,96,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,194,1,1,2,2,4,4,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,96,0,129,130,130,132,8,16,32,64,128,0,0,0,0,128,128,128,128,64,64,64,64,32, + 32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,25,6,0,0,0,0,0,0,0,24,24,24,27,3,0,64,160,34,36,20,18,18,18,11,8,8,8,8,5,5,9,9,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,7,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + }, + + { + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64, + 64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8, + 7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + }, + + { + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,8,4,2,2,2,4,56,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,226,1,1,2,2,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64,64,64, + 32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,7,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + } + + }; + + static const char PROGMEM prep[][ANIM_SIZE] = { + + { + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,129,128,128,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,0,1,225,26,6,9,49,53,1,138,124,0,0,128,128,128,128,64,64, + 64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,24,6,5,152,153,132,195,124,65,65,64,64,32,33,34,18,17,17,17,9,8,8,8,8,4,4,4,4,4,4,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + } + + }; + + static const char PROGMEM tap[TAP_FRAMES][ANIM_SIZE] = { + + { + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,248,248,248,248,0,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,129,128,128,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,0,1,1,2,4,8,16,32,67,135,7,1,0,184,188,190,159, + 95,95,79,76,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,24,6,5,152,153,132,67,124,65,65,64,64,32,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,61,124,252,252,252,252,252,60,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1, + 1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + }, + + { + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,0,1,225,26,6,9,49,53,1,138,124,0,0,128,128,128,128,64,64,64,64,32, + 32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,0,0,0,0,0,0,0,0,1,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,4,4,4,4,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,122,122,121,121,121,121,57,49,2,2,4,4,8,8,8,136,136,135,128, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + } + + }; + + void animation_phase(void) { + + if (get_current_wpm() <=IDLE_SPEED) { + current_idle_frame = (current_idle_frame + 1) % IDLE_FRAMES; + oled_write_raw_P(idle[abs((IDLE_FRAMES-1)-current_idle_frame)], ANIM_SIZE); + } + + if (get_current_wpm() >IDLE_SPEED && get_current_wpm() =TAP_SPEED) { + current_tap_frame = (current_tap_frame + 1) % TAP_FRAMES; + oled_write_raw_P(tap[abs((TAP_FRAMES-1)-current_tap_frame)], ANIM_SIZE); + } + } + + if (get_current_wpm() > 0) { + + oled_on(); + + if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { + anim_timer = timer_read32(); + animation_phase(); + } + + anim_sleep = timer_read32(); + } else { + if (timer_elapsed32(anim_sleep) > OLED_TIMEOUT) { + oled_off(); + } else { + if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { + anim_timer = timer_read32(); + animation_phase(); + } + } + } + +} +#endif \ No newline at end of file diff --git a/keyboards/lck75/rules.mk b/keyboards/lck75/rules.mk index aa75e72096..ee196d53ac 100644 --- a/keyboards/lck75/rules.mk +++ b/keyboards/lck75/rules.mk @@ -29,3 +29,4 @@ ENCODER_ENABLE = yes WPM_ENABLE = yes LTO_ENABLE = no AUTO_SHIFT_ENABLE = no + From 8a2d3a8861588646c8563dfde080e49358faa245 Mon Sep 17 00:00:00 2001 From: tszaboo <74186529+tszaboo@users.noreply.github.com> Date: Wed, 17 Mar 2021 07:50:22 +0100 Subject: [PATCH 081/613] [Keyboard] Add support for ortho4exent (#11699) Co-authored-by: Joel Challis Co-authored-by: Drashna Jaelre Co-authored-by: Ryan --- keyboards/tszaboo/ortho4exent/config.h | 136 ++++++++++++++++++ keyboards/tszaboo/ortho4exent/info.json | 86 +++++++++++ .../ortho4exent/keymaps/default/keymap.c | 33 +++++ .../ortho4exent/keymaps/default/readme.md | 1 + keyboards/tszaboo/ortho4exent/ortho4exent.c | 16 +++ keyboards/tszaboo/ortho4exent/ortho4exent.h | 41 ++++++ keyboards/tszaboo/ortho4exent/readme.md | 15 ++ keyboards/tszaboo/ortho4exent/rules.mk | 23 +++ 8 files changed, 351 insertions(+) create mode 100644 keyboards/tszaboo/ortho4exent/config.h create mode 100644 keyboards/tszaboo/ortho4exent/info.json create mode 100644 keyboards/tszaboo/ortho4exent/keymaps/default/keymap.c create mode 100644 keyboards/tszaboo/ortho4exent/keymaps/default/readme.md create mode 100644 keyboards/tszaboo/ortho4exent/ortho4exent.c create mode 100644 keyboards/tszaboo/ortho4exent/ortho4exent.h create mode 100644 keyboards/tszaboo/ortho4exent/readme.md create mode 100644 keyboards/tszaboo/ortho4exent/rules.mk diff --git a/keyboards/tszaboo/ortho4exent/config.h b/keyboards/tszaboo/ortho4exent/config.h new file mode 100644 index 0000000000..a88a9c183a --- /dev/null +++ b/keyboards/tszaboo/ortho4exent/config.h @@ -0,0 +1,136 @@ +/* +Copyright 2021 tszaboo + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x5453 // "TS" +#define PRODUCT_ID 0x7934 // "O4" +#define DEVICE_VER 0x0001 +#define MANUFACTURER tszaboo +#define PRODUCT ortho4exent + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +#define MATRIX_ROW_PINS { B0, B1, D4, D7, B4 } +/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14*/ +#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, D6, D5, D3, D2, D1, B7, B3, B2 } +#define UNUSED_PINS +#define LED_CAPS_LOCK_PIN E6 + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +// #define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 + +// #define BACKLIGHT_PIN B7 +// #define BACKLIGHT_BREATHING +// #define BACKLIGHT_LEVELS 3 + + #define RGB_DI_PIN B6 + #ifdef RGB_DI_PIN + #define RGBLED_NUM 16 + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 + #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ + #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ + /*== all animations enable ==*/ + #define RGBLIGHT_ANIMATIONS + /*== or choose animations ==*/ +// #define RGBLIGHT_EFFECT_BREATHING +// #define RGBLIGHT_EFFECT_RAINBOW_MOOD +// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL +// #define RGBLIGHT_EFFECT_SNAKE +// #define RGBLIGHT_EFFECT_KNIGHT +// #define RGBLIGHT_EFFECT_CHRISTMAS +// #define RGBLIGHT_EFFECT_STATIC_GRADIENT +// #define RGBLIGHT_EFFECT_RGB_TEST +// #define RGBLIGHT_EFFECT_ALTERNATING + #endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is userful for the Windows task manager shortcut (ctrl+shift+esc). + */ +// #define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/tszaboo/ortho4exent/info.json b/keyboards/tszaboo/ortho4exent/info.json new file mode 100644 index 0000000000..a34b997cae --- /dev/null +++ b/keyboards/tszaboo/ortho4exent/info.json @@ -0,0 +1,86 @@ +{ + "keyboard_name": "Ortho4exent", + "url": "https://github.com/tszaboo/Ortho4Exent", + "maintainer": "tszaboo", + "width": 16, + "height": 5, + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"k00","x":0,"y":0,"w":1.5}, + {"label":"k01","x":1.5,"y":0}, + {"label":"k02","x":2.5,"y":0}, + {"label":"k03","x":3.5,"y":0}, + {"label":"k04","x":4.5,"y":0}, + {"label":"k05","x":5.5,"y":0}, + {"label":"k06","x":6.5,"y":0}, + {"label":"k07","x":7.5,"y":0}, + {"label":"k08","x":8.5,"y":0}, + {"label":"k09","x":9.5,"y":0}, + {"label":"k0A","x":10.5,"y":0}, + {"label":"k0B","x":11.5,"y":0}, + {"label":"k0C","x":12.5,"y":0}, + {"label":"k0D","x":13.5,"y":0}, + {"label":"k0E","x":14.5,"y":0,"w":1.5}, + {"label":"k10","x":0,"y":1,"w":1.5}, + {"label":"k11","x":1.5,"y":1}, + {"label":"k12","x":2.5,"y":1}, + {"label":"k13","x":3.5,"y":1}, + {"label":"k14","x":4.5,"y":1}, + {"label":"k15","x":5.5,"y":1}, + {"label":"k16","x":6.5,"y":1}, + {"label":"k17","x":7.5,"y":1}, + {"label":"k18","x":8.5,"y":1}, + {"label":"k19","x":9.5,"y":1}, + {"label":"k1A","x":10.5,"y":1}, + {"label":"k1B","x":11.5,"y":1}, + {"label":"k1C","x":12.5,"y":1}, + {"label":"k1D","x":13.5,"y":1}, + {"label":"k1E","x":14.5,"y":1,"w":1.5}, + {"label":"k20","x":0,"y":2}, + {"label":"k21","x":1.5,"y":2}, + {"label":"k22","x":2.5,"y":2}, + {"label":"k23","x":3.5,"y":2}, + {"label":"k24","x":4.5,"y":2}, + {"label":"k25","x":5.5,"y":2}, + {"label":"k26","x":6.5,"y":2}, + {"label":"k27","x":7.5,"y":2}, + {"label":"k28","x":8.5,"y":2}, + {"label":"k29","x":9.5,"y":2}, + {"label":"k2A","x":10.5,"y":2}, + {"label":"k2B","x":11.5,"y":2}, + {"label":"k2C","x":12.5,"y":2}, + {"label":"k2D","x":13.5,"y":2}, + {"label":"k2E","x":14.5,"y":2}, + {"label":"k30","x":0,"y":3,"w":1.5}, + {"label":"k31","x":1.5,"y":3}, + {"label":"k32","x":2.5,"y":3}, + {"label":"k33","x":3.5,"y":3}, + {"label":"k34","x":4.5,"y":3}, + {"label":"k35","x":5.5,"y":3}, + {"label":"k36","x":6.5,"y":3}, + {"label":"k37","x":7.5,"y":3}, + {"label":"k38","x":8.5,"y":3}, + {"label":"k39","x":9.5,"y":3}, + {"label":"k3A","x":10.5,"y":3}, + {"label":"k3B","x":11.5,"y":3}, + {"label":"k3C","x":12.5,"y":3}, + {"label":"k3D","x":13.5,"y":3}, + {"label":"k3E","x":14.5,"y":3,"w":1.5}, + {"label":"k40","x":0,"y":4,"w":1.5}, + {"label":"k41","x":1.5,"y":4,"w":1.5}, + {"label":"k42","x":3,"y":4,"w":1.5}, + {"label":"k43","x":4.5,"y":4,"w":2}, + {"label":"k44","x":6.5,"y":4}, + {"label":"k45","x":7.5,"y":4}, + {"label":"k46","x":8.5,"y":4}, + {"label":"k47","x":9.5,"y":4,"w":2}, + {"label":"k48","x":11.5,"y":4,"w":1.5}, + {"label":"k49","x":13,"y":4,"w":1.5}, + {"label":"k4A","x":14.5,"y":4,"w":1.5} + + ] + } + } + } + diff --git a/keyboards/tszaboo/ortho4exent/keymaps/default/keymap.c b/keyboards/tszaboo/ortho4exent/keymaps/default/keymap.c new file mode 100644 index 0000000000..c6a8a7a80d --- /dev/null +++ b/keyboards/tszaboo/ortho4exent/keymaps/default/keymap.c @@ -0,0 +1,33 @@ +/* Copyright 2021 tszaboo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + //` 1 2 3 4 5 - ESC = 6 7 8 9 0 BSP + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINS, KC_ESC, KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_HOME, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_QUOT, KC_END, KC_BSLS, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_PGUP, KC_UP, KC_PGDN, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LEFT, KC_DOWN, KC_RGHT, KC_SPC, KC_RALT, KC_RCTL, MO(1) + ), + [1] = LAYOUT( + KC_TRNS, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_TRNS, KC_TRNS, KC_TRNS, KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_M_P, RGB_M_G, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/tszaboo/ortho4exent/keymaps/default/readme.md b/keyboards/tszaboo/ortho4exent/keymaps/default/readme.md new file mode 100644 index 0000000000..153fc96da9 --- /dev/null +++ b/keyboards/tszaboo/ortho4exent/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for Ortho4exent diff --git a/keyboards/tszaboo/ortho4exent/ortho4exent.c b/keyboards/tszaboo/ortho4exent/ortho4exent.c new file mode 100644 index 0000000000..b6ef9fedcf --- /dev/null +++ b/keyboards/tszaboo/ortho4exent/ortho4exent.c @@ -0,0 +1,16 @@ +/* Copyright 2021 tszaboo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "ortho4exent.h" diff --git a/keyboards/tszaboo/ortho4exent/ortho4exent.h b/keyboards/tszaboo/ortho4exent/ortho4exent.h new file mode 100644 index 0000000000..3814ce069c --- /dev/null +++ b/keyboards/tszaboo/ortho4exent/ortho4exent.h @@ -0,0 +1,41 @@ +/* Copyright 2021 tszaboo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +/* This a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E,\ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E,\ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E,\ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E,\ + k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A \ +) \ +{ \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E }, \ + { k40, k41, KC_NO, k42, k43, KC_NO, k44, k45, k46, k47, KC_NO, k48, KC_NO, k49, k4A }, \ +} diff --git a/keyboards/tszaboo/ortho4exent/readme.md b/keyboards/tszaboo/ortho4exent/readme.md new file mode 100644 index 0000000000..2039280598 --- /dev/null +++ b/keyboards/tszaboo/ortho4exent/readme.md @@ -0,0 +1,15 @@ +# tszaboo + +Ortholinear PCB that is a drop-in replacement for Exent keyboard. +Layout is inspired by excellent Boardwalk PCB, but extended with an extra column to accommodate the 65% Exent form factor. + +* Keyboard Maintainer: [tszaboo](https://github.com/tszaboo/) +* Keyboard Product owner: [Riba] +* Hardware Supported: Ortho4exent +* Hardware Availability: [Geekhack Group Buy](https://geekhack.org/index.php?topic=110120.0) + +Make example for this keyboard (after setting up your build environment): + + make tszaboo/ortho4exent:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/tszaboo/ortho4exent/rules.mk b/keyboards/tszaboo/ortho4exent/rules.mk new file mode 100644 index 0000000000..e1756f2c4a --- /dev/null +++ b/keyboards/tszaboo/ortho4exent/rules.mk @@ -0,0 +1,23 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +LTO_ENABLE = yes From 3bc7f46412e6e6c829aaff6d0f15c4cf36011948 Mon Sep 17 00:00:00 2001 From: Robert Verst Date: Wed, 17 Mar 2021 17:44:21 +0100 Subject: [PATCH 082/613] [Keymap] Add userspace rverst (#12205) Co-authored-by: Robert Verst --- keyboards/id80/keymaps/rverst/keymap.c | 80 ++++ keyboards/id80/keymaps/rverst/readme.md | 23 + keyboards/id80/keymaps/rverst/rverst.json | 499 ++++++++++++++++++++++ users/rverst/config.h | 38 ++ users/rverst/readme.md | 18 + users/rverst/rules.mk | 7 + users/rverst/rverst.c | 419 ++++++++++++++++++ users/rverst/rverst.h | 81 ++++ users/rverst/unicode.h | 31 ++ 9 files changed, 1196 insertions(+) create mode 100644 keyboards/id80/keymaps/rverst/keymap.c create mode 100644 keyboards/id80/keymaps/rverst/readme.md create mode 100644 keyboards/id80/keymaps/rverst/rverst.json create mode 100644 users/rverst/config.h create mode 100644 users/rverst/readme.md create mode 100644 users/rverst/rules.mk create mode 100644 users/rverst/rverst.c create mode 100644 users/rverst/rverst.h create mode 100644 users/rverst/unicode.h diff --git a/keyboards/id80/keymaps/rverst/keymap.c b/keyboards/id80/keymaps/rverst/keymap.c new file mode 100644 index 0000000000..73bf8899ac --- /dev/null +++ b/keyboards/id80/keymaps/rverst/keymap.c @@ -0,0 +1,80 @@ +/* Copyright 2021 Robert Verst @rverst + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "rverst.h" + +//#define CLOSED_CASE // no underglow RGB visible + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , MO(4) , KC_DEL , + KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_PGUP, + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN, + KC_ESC , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , + KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC , OSL(1) , KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT( + RV_SNAP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, + RV_DEG , RV_SUP1, RV_SUP2, RV_SUP3, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RV_UNEQ, RV_PM , KC_TRNS, KC_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, RV_EUR , RV_RT , RV_TM , KC_TRNS, RV_UUML, KC_TRNS, RV_OUML, KC_TRNS, KC_TRNS, KC_PEQL, KC_TRNS, KC_VOLD, + KC_CAPS, RV_AUML, RV_SZ , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RV_LOCK, KC_TRNS, KC_PAST, KC_PENT, + KC_TRNS, KC_TRNS, KC_TRNS, RV_CC , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PDOT, KC_PSLS, KC_TRNS, KC_MSTP, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RGUI, KC_MPRV, KC_MPLY, KC_MNXT + ), + [2] = LAYOUT( + KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_TRNS, MO(4) , KC_MUTE, + KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_VOLU, + KC_TAB , KC_Q , KC_W , KC_F , KC_P , KC_G , KC_J , KC_L , KC_U , KC_Y , KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, KC_VOLD, + KC_ESC , KC_A , KC_R , KC_S , KC_T , KC_D , KC_H , KC_N , KC_E , KC_I , KC_O , KC_QUOT, KC_ENT, + KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_K , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC , OSL(3) , KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [3] = LAYOUT( + RV_SNAP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, + RV_DEG , RV_SUP1, RV_SUP2, RV_SUP3, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RV_UNEQ, RV_PM , KC_TRNS, KC_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RV_LOCK, RV_UUML, KC_TRNS, KC_TRNS, KC_TRNS, KC_PEQL, KC_TRNS, KC_VOLD, + KC_CAPS, RV_AUML, RV_RT , RV_SZ , RV_TM , KC_TRNS, KC_TRNS, KC_TRNS, RV_EUR , KC_TRNS, RV_OUML, KC_PAST, KC_PENT, + KC_TRNS, KC_TRNS, KC_TRNS, RV_CC , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PDOT, KC_PSLS, KC_TRNS, KC_MSTP, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RGUI, KC_MPRV, KC_MPLY, KC_MNXT + ), + [4] = LAYOUT( + EEP_RST, RV_SM0 , RV_SM1 , RV_SM2 , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , DF(0) , DF(2) , KC_TRNS, MO(5) , + RV_SAYM, RV_SM3 , RV_SM4 , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , + KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , + KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , + KC_TRNS, RGB_HUI, RGB_SAI, RGB_VAI, KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , RGB_TOG, + KC_NO , KC_NO , GUI_ON , KC_NO , KC_NO , RCG_SWP, RGB_RMOD,RGB_M_P, RGB_MOD + ), + [5] = LAYOUT( + RESET , RV_SM0S, RV_SM1S, RV_SM2S, KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_TRNS, + KC_NO , RV_SM3S, RV_SM4S, KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , + KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , + KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , + KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , + KC_NO , KC_NO , GUI_OFF, KC_NO , KC_NO , RCG_NRM, KC_NO , KC_NO , KC_NO + ) +}; +// clang-format on + +void keyboard_post_init_keymap(void) { +#ifdef CLOSED_CASE + if (rgblight_is_enabled()) { + rgblight_disable(); + } +#endif +} diff --git a/keyboards/id80/keymaps/rverst/readme.md b/keyboards/id80/keymaps/rverst/readme.md new file mode 100644 index 0000000000..ba33980edb --- /dev/null +++ b/keyboards/id80/keymaps/rverst/readme.md @@ -0,0 +1,23 @@ +# idobao id80 + +This is my layout for the idobao id80. It depends of my [user files](../../../../users/rverst) +and the main goal is to give an convenient and unified access to some special keys +(umlauts, ß, €) for different operating systems (Mac, Windows and Linux). + +## Overview + +- Layer 0 is the base US-ANSI layout with Mac-style system keys and a OSL-Key for Layer 1 right of the space bar. +- Layer 1 has the special keys and some media-functions like mute, volume up/down etc. +- Layer 2 and 3 are basically the same as Layer 0 and 1 but in Colemak-Layout +- Layer 4 and 5 has some functions like switching the keyboard mode, switching the default layer etc. + + +## Keyboard modes + +- *F1:* Mac Unicode mode (use 'Unicode Hex Input' as input source) +- *F2:* Windows Unicode mode (use [WinCompse](https://github.com/SamHocevar/wincompose) software) +- *F3:* Linux Unicode mode (not tested yet but should work out of the box) +- *1:* Mac legacy mode (uses option-sequences, e.g. `Base Layer + +Numbers Layer:
+Numbers Layer + +Symbols Layer:
+Symbols Layer + +## Choices + +Every keymap is pretty unique and tailored to suit it's main creators needs. Here are some of my choices for the keys and their explanations: + + - Left thumb acts as Space when tapping but as Command when holding: this makes my life so much easier in OS X. Having command reachable all the time just feels right to me and Mod Taps help me a lot on this. + + - Right thumb acts as Enter when tapping but as Right Shift when holding: this is more of an experiment. I usually use shift on my pinkies. It is an interesting feature but I often forget about it. + + - Esc lives in the home row, before A. It also acts as a layer toggle to the numbers layer when held. Having the LT to the numbers layer here allows me to actually reach the number 1 pretty nicely and other numbers on the left hand pretty easily. + + - Keys on the home row are used to switch to layers, so "A" goes to layer 2 when held. I started making this in the Moonlander and migrated the practice, but still sometimes I use the MO 2 on the right thumb. + + - One Shot Keys are enabled for the shifts on the pinkies. If you press it twice: it will lock on shift until pressed again (pretty much like caps lock). These are handy when you're typing and just don't want to hold shift to have a capitalized word. + ## Usage In case you have `qmk` installed: From eae73437412d314a7c00b45ce11da26ffcb22e16 Mon Sep 17 00:00:00 2001 From: Ryan Date: Thu, 25 Mar 2021 22:30:42 +1100 Subject: [PATCH 113/613] Move `API_SYSEX_MAX_SIZE` out of `config_common.h` (#12302) --- quantum/api/api_sysex.h | 2 ++ quantum/config_common.h | 2 -- tmk_core/protocol/midi/qmk_midi.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/quantum/api/api_sysex.h b/quantum/api/api_sysex.h index 382f4bea44..eb0a18848d 100644 --- a/quantum/api/api_sysex.h +++ b/quantum/api/api_sysex.h @@ -18,6 +18,8 @@ #include "api.h" +#define API_SYSEX_MAX_SIZE 32 + void send_bytes_sysex(uint8_t message_type, uint8_t data_type, uint8_t* bytes, uint16_t length); #define SEND_BYTES(mt, dt, b, l) send_bytes_sysex(mt, dt, b, l) diff --git a/quantum/config_common.h b/quantum/config_common.h index fa1ff2a5f5..d93477b27e 100644 --- a/quantum/config_common.h +++ b/quantum/config_common.h @@ -24,6 +24,4 @@ #define COL2ROW 0 #define ROW2COL 1 -#define API_SYSEX_MAX_SIZE 32 - #include "song_list.h" diff --git a/tmk_core/protocol/midi/qmk_midi.c b/tmk_core/protocol/midi/qmk_midi.c index 6f6aced725..c18dbf9930 100644 --- a/tmk_core/protocol/midi/qmk_midi.c +++ b/tmk_core/protocol/midi/qmk_midi.c @@ -5,7 +5,7 @@ #include "usb_descriptor.h" #include "process_midi.h" #if API_SYSEX_ENABLE -# include "api.h" +# include "api_sysex.h" #endif /******************************************************************************* From a888057453db7a854549ec0d13f638392ffbcca8 Mon Sep 17 00:00:00 2001 From: Ryan Roden-Corrent Date: Thu, 25 Mar 2021 07:31:05 -0400 Subject: [PATCH 114/613] Fix a small typo in cli_commands.md (#12379) --- docs/cli_commands.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/cli_commands.md b/docs/cli_commands.md index 5ab49abd27..bb5df89968 100644 --- a/docs/cli_commands.md +++ b/docs/cli_commands.md @@ -170,7 +170,7 @@ qmk json2c [-o OUTPUT] filename ## `qmk c2json` Creates a keymap.json from a keymap.c. -**Note:** Parsing C source files is not easy, therefore this subcommand may not work your keymap. In some cases not using the C pre-processor helps. +**Note:** Parsing C source files is not easy, therefore this subcommand may not work with your keymap. In some cases not using the C pre-processor helps. **Usage**: From 1bb6d8de6fa5063b21bc34549e1cf552e60d90ba Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Thu, 25 Mar 2021 11:33:53 +0000 Subject: [PATCH 115/613] Fix USER_PRINT on avr/atsam (#12269) * Fix USER_PRINT on avr/atsam * Update tmk_core/common/arm_atsam/_print.h Co-authored-by: Ryan Co-authored-by: Ryan --- tmk_core/common/arm_atsam/_print.h | 10 +++++----- tmk_core/common/avr/_print.h | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/tmk_core/common/arm_atsam/_print.h b/tmk_core/common/arm_atsam/_print.h index a774f5d8d2..04320ee38b 100644 --- a/tmk_core/common/arm_atsam/_print.h +++ b/tmk_core/common/arm_atsam/_print.h @@ -27,8 +27,8 @@ // Create user & normal print defines #define xprintf(fmt, ...) __xprintf(fmt, ##__VA_ARGS__) -#define print(s) xprintf(s) -#define println(s) xprintf(s "\r\n") -#define uprint(s) print(s) -#define uprintln(s) println(s) -#define uprintf(fmt, ...) xprintf(fmt, ##__VA_ARGS__) +#define print(s) __xprintf(s) +#define println(s) __xprintf(s "\r\n") +#define uprint(s) __xprintf(s) +#define uprintln(s) __xprintf(s "\r\n") +#define uprintf(fmt, ...) __xprintf(fmt, ##__VA_ARGS__) diff --git a/tmk_core/common/avr/_print.h b/tmk_core/common/avr/_print.h index f9b79bdf85..5c1fdd26d8 100644 --- a/tmk_core/common/avr/_print.h +++ b/tmk_core/common/avr/_print.h @@ -28,6 +28,6 @@ // Create user & normal print defines #define print(s) xputs(PSTR(s)) #define println(s) xputs(PSTR(s "\r\n")) -#define uprint(s) print(s) -#define uprintln(s) println(s) -#define uprintf(fmt, ...) xprintf(fmt, ##__VA_ARGS__) \ No newline at end of file +#define uprint(s) xputs(PSTR(s)) +#define uprintln(s) xputs(PSTR(s "\r\n")) +#define uprintf(fmt, ...) __xprintf(PSTR(fmt), ##__VA_ARGS__) \ No newline at end of file From 8b39ae13c783806ab75460ac35621a403e1564b6 Mon Sep 17 00:00:00 2001 From: Brandon Claveria <48102030+swiftrax@users.noreply.github.com> Date: Thu, 25 Mar 2021 04:34:29 -0700 Subject: [PATCH 116/613] add equator (#12369) Co-authored-by: Swiftrax --- keyboards/handwired/swiftrax/equator/config.h | 44 ++++++++++++++++ .../handwired/swiftrax/equator/equator.c | 17 +++++++ .../handwired/swiftrax/equator/equator.h | 51 +++++++++++++++++++ .../handwired/swiftrax/equator/info.json | 15 ++++++ .../swiftrax/equator/keymaps/default/keymap.c | 34 +++++++++++++ .../swiftrax/equator/keymaps/via/keymap.c | 48 +++++++++++++++++ .../swiftrax/equator/keymaps/via/rules.mk | 1 + .../handwired/swiftrax/equator/readme.md | 13 +++++ keyboards/handwired/swiftrax/equator/rules.mk | 22 ++++++++ 9 files changed, 245 insertions(+) create mode 100644 keyboards/handwired/swiftrax/equator/config.h create mode 100644 keyboards/handwired/swiftrax/equator/equator.c create mode 100644 keyboards/handwired/swiftrax/equator/equator.h create mode 100644 keyboards/handwired/swiftrax/equator/info.json create mode 100644 keyboards/handwired/swiftrax/equator/keymaps/default/keymap.c create mode 100644 keyboards/handwired/swiftrax/equator/keymaps/via/keymap.c create mode 100644 keyboards/handwired/swiftrax/equator/keymaps/via/rules.mk create mode 100644 keyboards/handwired/swiftrax/equator/readme.md create mode 100644 keyboards/handwired/swiftrax/equator/rules.mk diff --git a/keyboards/handwired/swiftrax/equator/config.h b/keyboards/handwired/swiftrax/equator/config.h new file mode 100644 index 0000000000..325cdde3c7 --- /dev/null +++ b/keyboards/handwired/swiftrax/equator/config.h @@ -0,0 +1,44 @@ +/* +Copyright 2021 Swiftrax + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x04D8 +#define PRODUCT_ID 0xE984 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Swiftrax +#define PRODUCT Equator +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +// ROWS: Top to bottom, COLS: Left to right + +#define MATRIX_ROW_PINS { B2, B3, C7, B4, B5 } +#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, D7, D6, D4, D5, D3, D2, D1, D0 } + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 diff --git a/keyboards/handwired/swiftrax/equator/equator.c b/keyboards/handwired/swiftrax/equator/equator.c new file mode 100644 index 0000000000..b2981689b9 --- /dev/null +++ b/keyboards/handwired/swiftrax/equator/equator.c @@ -0,0 +1,17 @@ +/* +Copyright 2021 Swiftrax + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "equator.h" diff --git a/keyboards/handwired/swiftrax/equator/equator.h b/keyboards/handwired/swiftrax/equator/equator.h new file mode 100644 index 0000000000..3f0350ef2b --- /dev/null +++ b/keyboards/handwired/swiftrax/equator/equator.h @@ -0,0 +1,51 @@ +/* +Copyright 2021 Swiftrax + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#include "quantum.h" + +#define K_NO KC_NO + +#define LAYOUT_unified_bs_rshift( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K213, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, \ + K400, K401, K402, K404, K407, K409, K411, K412, K413 \ +) \ +{ \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K_NO, K213 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K_NO}, \ + { K400, K401, K402, K_NO, K404, K_NO, K_NO, K407, K_NO, K409, K_NO, K411, K412, K413 } \ +} + +#define LAYOUT_split_bs_rshift( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K212, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K213, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, \ + K400, K401, K402, K404, K407, K409, K411, K412, K413 \ +) \ +{ \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313 }, \ + { K400, K401, K402, K_NO, K404, K_NO, K_NO, K407, K_NO, K409, K_NO, K411, K412, K413 } \ +} diff --git a/keyboards/handwired/swiftrax/equator/info.json b/keyboards/handwired/swiftrax/equator/info.json new file mode 100644 index 0000000000..e7d67de80c --- /dev/null +++ b/keyboards/handwired/swiftrax/equator/info.json @@ -0,0 +1,15 @@ +{ + "keyboard_name": "Equator", + "url": "https://github.com/swiftrax", + "maintainer": "swiftrax", + "width": 16.5, + "height": 5, + "layouts": { + "LAYOUT_unified_bs_rshift": { + "layout": [{"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":8.5, "y":0}, {"label":"*", "x":9.5, "y":0}, {"label":"(", "x":10.5, "y":0}, {"label":")", "x":11.5, "y":0}, {"label":"_", "x":12.5, "y":0}, {"label":"+", "x":13.5, "y":0}, {"label":"Backspace", "x":14.5, "y":0, "w":2}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":8, "y":1}, {"label":"U", "x":9, "y":1}, {"label":"I", "x":10, "y":1}, {"label":"O", "x":11, "y":1}, {"label":"P", "x":12, "y":1}, {"label":"{", "x":13, "y":1}, {"label":"}", "x":14, "y":1}, {"label":"|", "x":15, "y":1, "w":1.5}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":8.25, "y":2}, {"label":"J", "x":9.25, "y":2}, {"label":"K", "x":10.25, "y":2}, {"label":"L", "x":11.25, "y":2}, {"label":":", "x":12.25, "y":2}, {"label":"\"", "x":13.25, "y":2}, {"label":"Enter", "x":14.25, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"B", "x":7.75, "y":3}, {"label":"N", "x":8.75, "y":3}, {"label":"M", "x":9.75, "y":3}, {"label":"<", "x":10.75, "y":3}, {"label":">", "x":11.75, "y":3}, {"label":"?", "x":12.75, "y":3}, {"label":"Shift", "x":13.75, "y":3, "w":2.75}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":3.75, "y":4, "w":1.25}, {"x":5, "y":4, "w":2.25}, {"x":7.75, "y":4, "w":2.75}, {"label":"Alt", "x":10.5, "y":4, "w":1.25}, {"label":"Win", "x":12.75, "y":4, "w":1.25}, {"label":"Menu", "x":14, "y":4, "w":1.25}, {"label":"Ctrl", "x":15.25, "y":4, "w":1.25}] + }, + "LAYOUT_split_bs_rshift": { + "layout":[{"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":8.5, "y":0}, {"label":"*", "x":9.5, "y":0}, {"label":"(", "x":10.5, "y":0}, {"label":")", "x":11.5, "y":0}, {"label":"_", "x":12.5, "y":0}, {"label":"+", "x":13.5, "y":0}, {"label":"Del", "x":14.5, "y":0}, {"label":"Backspace", "x":15.5, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":8, "y":1}, {"label":"U", "x":9, "y":1}, {"label":"I", "x":10, "y":1}, {"label":"O", "x":11, "y":1}, {"label":"P", "x":12, "y":1}, {"label":"{", "x":13, "y":1}, {"label":"}", "x":14, "y":1}, {"label":"|", "x":15, "y":1, "w":1.5}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":8.25, "y":2}, {"label":"J", "x":9.25, "y":2}, {"label":"K", "x":10.25, "y":2}, {"label":"L", "x":11.25, "y":2}, {"label":":", "x":12.25, "y":2}, {"label":"\"", "x":13.25, "y":2}, {"label":"Enter", "x":14.25, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"B", "x":7.75, "y":3}, {"label":"N", "x":8.75, "y":3}, {"label":"M", "x":9.75, "y":3}, {"label":"<", "x":10.75, "y":3}, {"label":">", "x":11.75, "y":3}, {"label":"?", "x":12.75, "y":3}, {"label":"Shift", "x":13.75, "y":3, "w":1.75}, {"label":"Fn", "x":15.5, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":3.75, "y":4, "w":1.25}, {"x":5, "y":4, "w":2.25}, {"x":7.75, "y":4, "w":2.75}, {"label":"Alt", "x":10.5, "y":4, "w":1.25}, {"label":"Win", "x":12.75, "y":4, "w":1.25}, {"label":"Menu", "x":14, "y":4, "w":1.25}, {"label":"Ctrl", "x":15.25, "y":4, "w":1.25}] + } + } +} \ No newline at end of file diff --git a/keyboards/handwired/swiftrax/equator/keymaps/default/keymap.c b/keyboards/handwired/swiftrax/equator/keymaps/default/keymap.c new file mode 100644 index 0000000000..fab6858a66 --- /dev/null +++ b/keyboards/handwired/swiftrax/equator/keymaps/default/keymap.c @@ -0,0 +1,34 @@ +/* +Copyright 2021 Swiftrax + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_split_bs_rshift( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, MO(1), KC_SPC, KC_RALT, KC_RGUI, KC_RGUI, KC_RCTL + ), + [1] = LAYOUT_split_bs_rshift( + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_BSPC, + _______, _______, KC_PGUP, _______, _______, _______, _______, _______, KC_UP, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, + _______, KC_HOME, KC_PGDN, KC_END, _______, KC_VOLD, KC_VOLU, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/handwired/swiftrax/equator/keymaps/via/keymap.c b/keyboards/handwired/swiftrax/equator/keymaps/via/keymap.c new file mode 100644 index 0000000000..dbe208f2f8 --- /dev/null +++ b/keyboards/handwired/swiftrax/equator/keymaps/via/keymap.c @@ -0,0 +1,48 @@ +/* +Copyright 2020 Swiftrax + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_split_bs_rshift( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, MO(1), KC_SPC, KC_RALT, KC_RGUI, KC_RGUI, KC_RCTL + ), + [1] = LAYOUT_split_bs_rshift( + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_BSPC, + _______, _______, KC_PGUP, _______, _______, _______, _______, _______, KC_UP, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, + _______, KC_HOME, KC_PGDN, KC_END, _______, KC_VOLD, KC_VOLU, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT_split_bs_rshift( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT_split_bs_rshift( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; \ No newline at end of file diff --git a/keyboards/handwired/swiftrax/equator/keymaps/via/rules.mk b/keyboards/handwired/swiftrax/equator/keymaps/via/rules.mk new file mode 100644 index 0000000000..036bd6d1c3 --- /dev/null +++ b/keyboards/handwired/swiftrax/equator/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/handwired/swiftrax/equator/readme.md b/keyboards/handwired/swiftrax/equator/readme.md new file mode 100644 index 0000000000..46ae3d0caf --- /dev/null +++ b/keyboards/handwired/swiftrax/equator/readme.md @@ -0,0 +1,13 @@ +# Equator + +Meridian Layout Keyboard + +* Keyboard Maintainer: Swiftrax +* Hardware Supported: Equator +* Hardware Availability: https://github.com/swiftrax + +Make example for this keyboard (after setting up your build environment): + + make handwired/swiftrax/equator:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/handwired/swiftrax/equator/rules.mk b/keyboards/handwired/swiftrax/equator/rules.mk new file mode 100644 index 0000000000..5c0d8f307c --- /dev/null +++ b/keyboards/handwired/swiftrax/equator/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output From 1fbee7c31681746a268c82c1b99679b3b2a43657 Mon Sep 17 00:00:00 2001 From: Andrew-Fahmy Date: Thu, 25 Mar 2021 06:35:18 -0500 Subject: [PATCH 117/613] (Re)Fixing K-type RGB lighting (#12084) * initial rgb driver fix * added underglow LEDs and fixed typo in RGB locations * removed test code * added my key maps * updated rgb keymap to work with changes * refactored my code to make it more maintainable and updated keymaps. * added GPL licence * Turned off matrix scan rate debug info * added checks if RGB matrix is enabled to fix errors when building keymaps without RGB matrix enabled * Apply suggestions from code review by fauxpark Co-authored-by: Ryan * Renamed led driver file to be less ambiguous * Renamed is31fl3733 driver files to is31fl3733-dual Co-authored-by: Ryan --- keyboards/k_type/i2c_master.c | 150 +++++++++++ keyboards/k_type/i2c_master.h | 127 +++++++++ keyboards/k_type/is31fl3733-dual.c | 236 ++++++++++++++++ keyboards/k_type/is31fl3733-dual.h | 251 ++++++++++++++++++ keyboards/k_type/k_type-rgbdriver.c | 57 ++++ keyboards/k_type/k_type.c | 198 ++++++++------ .../k_type/keymaps/andrew-fahmy/config.h | 52 ++++ .../k_type/keymaps/andrew-fahmy/keymap.c | 60 +++++ .../k_type/keymaps/andrew-fahmy/rules.mk | 1 + keyboards/k_type/keymaps/rgb/config.h | 25 +- keyboards/k_type/keymaps/rgb/keymap.c | 4 +- keyboards/k_type/keymaps/rgb/readme.md | 4 +- keyboards/k_type/mcuconf.h | 3 + keyboards/k_type/rules.mk | 6 +- 14 files changed, 1074 insertions(+), 100 deletions(-) create mode 100644 keyboards/k_type/i2c_master.c create mode 100644 keyboards/k_type/i2c_master.h create mode 100644 keyboards/k_type/is31fl3733-dual.c create mode 100644 keyboards/k_type/is31fl3733-dual.h create mode 100644 keyboards/k_type/k_type-rgbdriver.c create mode 100644 keyboards/k_type/keymaps/andrew-fahmy/config.h create mode 100644 keyboards/k_type/keymaps/andrew-fahmy/keymap.c create mode 100644 keyboards/k_type/keymaps/andrew-fahmy/rules.mk diff --git a/keyboards/k_type/i2c_master.c b/keyboards/k_type/i2c_master.c new file mode 100644 index 0000000000..62d732c2d0 --- /dev/null +++ b/keyboards/k_type/i2c_master.c @@ -0,0 +1,150 @@ +/* Copyright 2018 Jack Humbert + * Copyright 2018 Yiancar + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* This library is only valid for STM32 processors. + * This library follows the convention of the AVR i2c_master library. + * As a result addresses are expected to be already shifted (addr << 1). + * I2CD1 is the default driver which corresponds to pins B6 and B7. This + * can be changed. + * Please ensure that HAL_USE_I2C is TRUE in the halconf.h file and that + * STM32_I2C_USE_I2C1 is TRUE in the mcuconf.h file. Pins B6 and B7 are used + * but using any other I2C pins should be trivial. + */ + +#ifdef RGB_MATRIX_ENABLE + + +#include "quantum.h" +#include "i2c_master.h" +#include +#include + +static uint8_t i2c_address; + +I2CDriver *drivers[I2C_COUNT]; + +static const I2CConfig i2cconfig = { +#if defined(USE_I2CV1_CONTRIB) + I2C1_CLOCK_SPEED, +#elif defined(USE_I2CV1) + I2C1_OPMODE, + I2C1_CLOCK_SPEED, + I2C1_DUTY_CYCLE, +#else + // This configures the I2C clock to 400khz assuming a 72Mhz clock + // For more info : https://www.st.com/en/embedded-software/stsw-stm32126.html + STM32_TIMINGR_PRESC(I2C1_TIMINGR_PRESC) | STM32_TIMINGR_SCLDEL(I2C1_TIMINGR_SCLDEL) | STM32_TIMINGR_SDADEL(I2C1_TIMINGR_SDADEL) | STM32_TIMINGR_SCLH(I2C1_TIMINGR_SCLH) | STM32_TIMINGR_SCLL(I2C1_TIMINGR_SCLL), 0, 0 +#endif +}; + +static i2c_status_t chibios_to_qmk(const msg_t* status) { + switch (*status) { + case I2C_NO_ERROR: + return I2C_STATUS_SUCCESS; + case I2C_TIMEOUT: + return I2C_STATUS_TIMEOUT; + // I2C_BUS_ERROR, I2C_ARBITRATION_LOST, I2C_ACK_FAILURE, I2C_OVERRUN, I2C_PEC_ERROR, I2C_SMB_ALERT + default: + return I2C_STATUS_ERROR; + } +} + +__attribute__((weak)) void i2c_init(I2CDriver *driver, ioportid_t scl_port, ioportid_t sda_port, iopadid_t scl_pad, iopadid_t sda_pad) { + static uint8_t index = 0; + if (index < I2C_COUNT) { + + // Try releasing special pins for a short time + palSetPadMode(scl_port, scl_pad, PAL_MODE_INPUT); + palSetPadMode(sda_port, sda_pad, PAL_MODE_INPUT); + + chThdSleepMilliseconds(10); + +#if defined(USE_GPIOV1) + palSetPadMode(scl_port, scl_pad, I2C1_SCL_PAL_MODE); + palSetPadMode(sda_port, sda_pad, I2C1_SDA_PAL_MODE); +#else + palSetPadMode(scl_port, scl_pad, PAL_MODE_ALTERNATE(I2C1_SCL_PAL_MODE) | PAL_STM32_OTYPE_OPENDRAIN); + palSetPadMode(sda_port, sda_pad, PAL_MODE_ALTERNATE(I2C1_SDA_PAL_MODE) | PAL_STM32_OTYPE_OPENDRAIN); +#endif + + drivers[index++] = driver; + } +} + +i2c_status_t i2c_start(uint8_t index, uint8_t address) { + if(index >= I2C_COUNT) { + return I2C_STATUS_ERROR; + } + i2c_address = address; + i2cStart(drivers[index], &i2cconfig); + return I2C_STATUS_SUCCESS; +} + +i2c_status_t i2c_transmit(uint8_t index, uint8_t address, const uint8_t* data, uint16_t length, uint16_t timeout) { + if(index >= I2C_COUNT) { + return I2C_STATUS_ERROR; + } + i2c_address = address; + i2cStart(drivers[index], &i2cconfig); + msg_t status = i2cMasterTransmitTimeout(drivers[index], (i2c_address >> 1), data, length, 0, 0, TIME_MS2I(timeout)); + return chibios_to_qmk(&status); +} + +i2c_status_t i2c_receive(uint8_t index, uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout) { + if(index >= I2C_COUNT) { + return I2C_STATUS_ERROR; + } + i2c_address = address; + i2cStart(drivers[index], &i2cconfig); + msg_t status = i2cMasterReceiveTimeout(drivers[index], (i2c_address >> 1), data, length, TIME_MS2I(timeout)); + return chibios_to_qmk(&status); +} + +i2c_status_t i2c_writeReg(uint8_t index, uint8_t devaddr, uint8_t regaddr, const uint8_t* data, uint16_t length, uint16_t timeout) { + if(index >= I2C_COUNT) { + return I2C_STATUS_ERROR; + } + i2c_address = devaddr; + i2cStart(drivers[index], &i2cconfig); + + uint8_t complete_packet[length + 1]; + for (uint8_t i = 0; i < length; i++) { + complete_packet[i + 1] = data[i]; + } + complete_packet[0] = regaddr; + + msg_t status = i2cMasterTransmitTimeout(drivers[index], (i2c_address >> 1), complete_packet, length + 1, 0, 0, TIME_MS2I(timeout)); + return chibios_to_qmk(&status); +} + +i2c_status_t i2c_readReg(uint8_t index, uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout) { + if(index >= I2C_COUNT) { + return I2C_STATUS_ERROR; + } + i2c_address = devaddr; + i2cStart(drivers[index], &i2cconfig); + msg_t status = i2cMasterTransmitTimeout(drivers[index], (i2c_address >> 1), ®addr, 1, data, length, TIME_MS2I(timeout)); + return chibios_to_qmk(&status); +} + +void i2c_stop(uint8_t index) { + if(index < I2C_COUNT) { + i2cStop(drivers[index]); + } +} + +#endif diff --git a/keyboards/k_type/i2c_master.h b/keyboards/k_type/i2c_master.h new file mode 100644 index 0000000000..5a7893fae8 --- /dev/null +++ b/keyboards/k_type/i2c_master.h @@ -0,0 +1,127 @@ +/* Copyright 2018 Jack Humbert + * Copyright 2018 Yiancar + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* This library follows the convention of the AVR i2c_master library. + * As a result addresses are expected to be already shifted (addr << 1). + * I2CD1 is the default driver which corresponds to pins B6 and B7. This + * can be changed. + * Please ensure that HAL_USE_I2C is TRUE in the halconf.h file and that + * STM32_I2C_USE_I2C1 is TRUE in the mcuconf.h file. + */ +#pragma once + +#include +#include + +#ifndef I2C_COUNT +# define I2C_COUNT 1 +#endif + +#ifdef I2C1_BANK +# define I2C1_SCL_BANK I2C1_BANK +# define I2C1_SDA_BANK I2C1_BANK +#endif + +#ifndef I2C1_SCL_BANK +# define I2C1_SCL_BANK GPIOB +#endif + +#ifndef I2C1_SDA_BANK +# define I2C1_SDA_BANK GPIOB +#endif + + +#ifdef USE_I2C2 +# ifdef I2C2_BANK +# define I2C2_SCL_BANK I2C2_BANK +# define I2C2_SDA_BANK I2C2_BANK +# endif +# ifndef I2C2_SCL_BANK +# define I2C2_SCL_BANK GPIOC +# endif +# ifndef I2C2_SDA_BANK +# define I2C2_SDA_BANK GPIOC +# endif +#endif + +#ifndef I2C1_SCL +# define I2C1_SCL 6 +#endif +#ifndef I2C1_SDA +# define I2C1_SDA 7 +#endif + +#ifdef USE_I2CV1 +# ifndef I2C1_OPMODE +# define I2C1_OPMODE OPMODE_I2C +# endif +# ifndef I2C1_CLOCK_SPEED +# define I2C1_CLOCK_SPEED 100000 /* 400000 */ +# endif +# ifndef I2C1_DUTY_CYCLE +# define I2C1_DUTY_CYCLE STD_DUTY_CYCLE /* FAST_DUTY_CYCLE_2 */ +# endif +#else +// The default timing values below configures the I2C clock to 400khz assuming a 72Mhz clock +// For more info : https://www.st.com/en/embedded-software/stsw-stm32126.html +# ifndef I2C1_TIMINGR_PRESC +# define I2C1_TIMINGR_PRESC 0U +# endif +# ifndef I2C1_TIMINGR_SCLDEL +# define I2C1_TIMINGR_SCLDEL 7U +# endif +# ifndef I2C1_TIMINGR_SDADEL +# define I2C1_TIMINGR_SDADEL 0U +# endif +# ifndef I2C1_TIMINGR_SCLH +# define I2C1_TIMINGR_SCLH 38U +# endif +# ifndef I2C1_TIMINGR_SCLL +# define I2C1_TIMINGR_SCLL 129U +# endif +#endif + +#ifdef USE_GPIOV1 +# ifndef I2C1_SCL_PAL_MODE +# define I2C1_SCL_PAL_MODE PAL_MODE_STM32_ALTERNATE_OPENDRAIN +# endif +# ifndef I2C1_SDA_PAL_MODE +# define I2C1_SDA_PAL_MODE PAL_MODE_STM32_ALTERNATE_OPENDRAIN +# endif +#else +// The default PAL alternate modes are used to signal that the pins are used for I2C +# ifndef I2C1_SCL_PAL_MODE +# define I2C1_SCL_PAL_MODE 4 +# endif +# ifndef I2C1_SDA_PAL_MODE +# define I2C1_SDA_PAL_MODE 4 +# endif +#endif + +typedef int16_t i2c_status_t; + +#define I2C_STATUS_SUCCESS (0) +#define I2C_STATUS_ERROR (-1) +#define I2C_STATUS_TIMEOUT (-2) + +void i2c_init(I2CDriver *driver, ioportid_t scl_port, ioportid_t sda_port, iopadid_t scl_pad, iopadid_t sda_pad); +i2c_status_t i2c_start(uint8_t index, uint8_t address); +i2c_status_t i2c_transmit(uint8_t index, uint8_t address, const uint8_t* data, uint16_t length, uint16_t timeout); +i2c_status_t i2c_receive(uint8_t index, uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout); +i2c_status_t i2c_writeReg(uint8_t index, uint8_t devaddr, uint8_t regaddr, const uint8_t* data, uint16_t length, uint16_t timeout); +i2c_status_t i2c_readReg(uint8_t index, uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout); +void i2c_stop(uint8_t index); diff --git a/keyboards/k_type/is31fl3733-dual.c b/keyboards/k_type/is31fl3733-dual.c new file mode 100644 index 0000000000..8f39e73c69 --- /dev/null +++ b/keyboards/k_type/is31fl3733-dual.c @@ -0,0 +1,236 @@ +/* Copyright 2017 Jason Williams + * Copyright 2018 Jack Humbert + * Copyright 2018 Yiancar + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifdef RGB_MATRIX_ENABLE + +#include "is31fl3733-dual.h" +#include "i2c_master.h" +#include "wait.h" + +// This is a 7-bit address, that gets left-shifted and bit 0 +// set to 0 for write, 1 for read (as per I2C protocol) +// The address will vary depending on your wiring: +// 00 <-> GND +// 01 <-> SCL +// 10 <-> SDA +// 11 <-> VCC +// ADDR1 represents A1:A0 of the 7-bit address. +// ADDR2 represents A3:A2 of the 7-bit address. +// The result is: 0b101(ADDR2)(ADDR1) +#define ISSI_ADDR_DEFAULT 0x50 + +#define ISSI_COMMANDREGISTER 0xFD +#define ISSI_COMMANDREGISTER_WRITELOCK 0xFE +#define ISSI_INTERRUPTMASKREGISTER 0xF0 +#define ISSI_INTERRUPTSTATUSREGISTER 0xF1 + +#define ISSI_PAGE_LEDCONTROL 0x00 // PG0 +#define ISSI_PAGE_PWM 0x01 // PG1 +#define ISSI_PAGE_AUTOBREATH 0x02 // PG2 +#define ISSI_PAGE_FUNCTION 0x03 // PG3 + +#define ISSI_REG_CONFIGURATION 0x00 // PG3 +#define ISSI_REG_GLOBALCURRENT 0x01 // PG3 +#define ISSI_REG_RESET 0x11 // PG3 +#define ISSI_REG_SWPULLUP 0x0F // PG3 +#define ISSI_REG_CSPULLUP 0x10 // PG3 + +#ifndef ISSI_TIMEOUT +# define ISSI_TIMEOUT 100 +#endif + +#ifndef ISSI_PERSISTENCE +# define ISSI_PERSISTENCE 0 +#endif + +// Transfer buffer for TWITransmitData() +uint8_t g_twi_transfer_buffer[20]; + +// These buffers match the IS31FL3733 PWM registers. +// The control buffers match the PG0 LED On/Off registers. +// Storing them like this is optimal for I2C transfers to the registers. +// We could optimize this and take out the unused registers from these +// buffers and the transfers in IS31FL3733_write_pwm_buffer() but it's +// probably not worth the extra complexity. +uint8_t g_pwm_buffer[DRIVER_COUNT][192]; +bool g_pwm_buffer_update_required[DRIVER_COUNT] = {false}; + +uint8_t g_led_control_registers[DRIVER_COUNT][24] = {{0}, {0}}; +bool g_led_control_registers_update_required[DRIVER_COUNT] = {false}; + +bool IS31FL3733_write_register(uint8_t index, uint8_t addr, uint8_t reg, uint8_t data) { + // If the transaction fails function returns false. + g_twi_transfer_buffer[0] = reg; + g_twi_transfer_buffer[1] = data; + +#if ISSI_PERSISTENCE > 0 + for (uint8_t i = 0; i < ISSI_PERSISTENCE; i++) { + if (i2c_transmit(index, addr << 1, g_twi_transfer_buffer, 2, ISSI_TIMEOUT) != 0) { + return false; + } + } +#else + if (i2c_transmit(index, addr << 1, g_twi_transfer_buffer, 2, ISSI_TIMEOUT) != 0) { + return false; + } +#endif + return true; +} + +bool IS31FL3733_write_pwm_buffer(uint8_t index, uint8_t addr, uint8_t *pwm_buffer) { + // Assumes PG1 is already selected. + // If any of the transactions fails function returns false. + // Transmit PWM registers in 12 transfers of 16 bytes. + // g_twi_transfer_buffer[] is 20 bytes + + // Iterate over the pwm_buffer contents at 16 byte intervals. + for (int i = 0; i < 192; i += 16) { + g_twi_transfer_buffer[0] = i; + // Copy the data from i to i+15. + // Device will auto-increment register for data after the first byte + // Thus this sets registers 0x00-0x0F, 0x10-0x1F, etc. in one transfer. + for (int j = 0; j < 16; j++) { + g_twi_transfer_buffer[1 + j] = pwm_buffer[i + j]; + } + +#if ISSI_PERSISTENCE > 0 + for (uint8_t i = 0; i < ISSI_PERSISTENCE; i++) { + if (i2c_transmit(index, addr << 1, g_twi_transfer_buffer, 17, ISSI_TIMEOUT) != 0) { + return false; + } + } +#else + if (i2c_transmit(index, addr << 1, g_twi_transfer_buffer, 17, ISSI_TIMEOUT) != 0) { + return false; + } +#endif + } + return true; +} + +void IS31FL3733_init(uint8_t bus, uint8_t addr, uint8_t sync) { + // In order to avoid the LEDs being driven with garbage data + // in the LED driver's PWM registers, shutdown is enabled last. + // Set up the mode and other settings, clear the PWM registers, + // then disable software shutdown. + // Sync is passed so set it according to the datasheet. + + // Unlock the command register. + IS31FL3733_write_register(bus, addr, ISSI_COMMANDREGISTER_WRITELOCK, 0xC5); + // Select PG0 + IS31FL3733_write_register(bus, addr, ISSI_COMMANDREGISTER, ISSI_PAGE_LEDCONTROL); + // Turn off all LEDs. + for (int i = 0x00; i <= 0x17; i++) { + IS31FL3733_write_register(bus, addr, i, 0x00); + } + // Unlock the command register. + IS31FL3733_write_register(bus, addr, ISSI_COMMANDREGISTER_WRITELOCK, 0xC5); + // Select PG1 + IS31FL3733_write_register(bus, addr, ISSI_COMMANDREGISTER, ISSI_PAGE_PWM); + // Set PWM on all LEDs to 0 + // No need to setup Breath registers to PWM as that is the default. + for (int i = 0x00; i <= 0xBF; i++) { + IS31FL3733_write_register(bus, addr, i, 0x00); + } + // Unlock the command register. + IS31FL3733_write_register(bus, addr, ISSI_COMMANDREGISTER_WRITELOCK, 0xC5); + // Select PG3 + IS31FL3733_write_register(bus, addr, ISSI_COMMANDREGISTER, ISSI_PAGE_FUNCTION); + // Set global current to maximum. + IS31FL3733_write_register(bus, addr, ISSI_REG_GLOBALCURRENT, 0xFF); + // Disable software shutdown. + IS31FL3733_write_register(bus, addr, ISSI_REG_CONFIGURATION, (sync << 6) | 0x01); + // Wait 10ms to ensure the device has woken up. + wait_ms(10); +} + +void IS31FL3733_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { + if (index >= 0 && index < DRIVER_LED_TOTAL) { + is31_led led = g_is31_leds[index]; + + g_pwm_buffer[led.driver][led.r] = red; + g_pwm_buffer[led.driver][led.g] = green; + g_pwm_buffer[led.driver][led.b] = blue; + g_pwm_buffer_update_required[led.driver] = true; + } +} + +void IS31FL3733_set_color_all(uint8_t red, uint8_t green, uint8_t blue) { + for (int i = 0; i < DRIVER_LED_TOTAL; i++) { + IS31FL3733_set_color(i, red, green, blue); + } +} + +void IS31FL3733_set_led_control_register(uint8_t index, bool red, bool green, bool blue) { + is31_led led = g_is31_leds[index]; + + uint8_t control_register_r = led.r / 8; + uint8_t control_register_g = led.g / 8; + uint8_t control_register_b = led.b / 8; + uint8_t bit_r = led.r % 8; + uint8_t bit_g = led.g % 8; + uint8_t bit_b = led.b % 8; + + if (red) { + g_led_control_registers[led.driver][control_register_r] |= (1 << bit_r); + } else { + g_led_control_registers[led.driver][control_register_r] &= ~(1 << bit_r); + } + if (green) { + g_led_control_registers[led.driver][control_register_g] |= (1 << bit_g); + } else { + g_led_control_registers[led.driver][control_register_g] &= ~(1 << bit_g); + } + if (blue) { + g_led_control_registers[led.driver][control_register_b] |= (1 << bit_b); + } else { + g_led_control_registers[led.driver][control_register_b] &= ~(1 << bit_b); + } + + g_led_control_registers_update_required[led.driver] = true; +} + +void IS31FL3733_update_pwm_buffers(uint8_t addr, uint8_t index) { + if (g_pwm_buffer_update_required[index]) { + // Firstly we need to unlock the command register and select PG1. + IS31FL3733_write_register(index, addr, ISSI_COMMANDREGISTER_WRITELOCK, 0xC5); + IS31FL3733_write_register(index, addr, ISSI_COMMANDREGISTER, ISSI_PAGE_PWM); + + // If any of the transactions fail we risk writing dirty PG0, + // refresh page 0 just in case. + if (!IS31FL3733_write_pwm_buffer(index, addr, g_pwm_buffer[index])) { + g_led_control_registers_update_required[index] = true; + } + } + g_pwm_buffer_update_required[index] = false; +} + +void IS31FL3733_update_led_control_registers(uint8_t addr, uint8_t index) { + if (g_led_control_registers_update_required[index]) { + // Firstly we need to unlock the command register and select PG0 + IS31FL3733_write_register(index, addr, ISSI_COMMANDREGISTER_WRITELOCK, 0xC5); + IS31FL3733_write_register(index, addr, ISSI_COMMANDREGISTER, ISSI_PAGE_LEDCONTROL); + for (int i = 0; i < 24; i++) { + IS31FL3733_write_register(index, addr, i, g_led_control_registers[index][i]); + } + } + g_led_control_registers_update_required[index] = false; +} + + +#endif diff --git a/keyboards/k_type/is31fl3733-dual.h b/keyboards/k_type/is31fl3733-dual.h new file mode 100644 index 0000000000..272bcdc417 --- /dev/null +++ b/keyboards/k_type/is31fl3733-dual.h @@ -0,0 +1,251 @@ +/* Copyright 2017 Jason Williams + * Copyright 2018 Jack Humbert + * Copyright 2018 Yiancar + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include +#include + +typedef struct is31_led { + uint8_t driver : 2; + uint8_t r; + uint8_t g; + uint8_t b; +} __attribute__((packed)) is31_led; + +extern const is31_led g_is31_leds[DRIVER_LED_TOTAL]; + +void IS31FL3733_init(uint8_t bus, uint8_t addr, uint8_t sync); +bool IS31FL3733_write_register(uint8_t index, uint8_t addr, uint8_t reg, uint8_t data); +bool IS31FL3733_write_pwm_buffer(uint8_t index, uint8_t addr, uint8_t *pwm_buffer); + +void IS31FL3733_set_color(int index, uint8_t red, uint8_t green, uint8_t blue); +void IS31FL3733_set_color_all(uint8_t red, uint8_t green, uint8_t blue); + +void IS31FL3733_set_led_control_register(uint8_t index, bool red, bool green, bool blue); + +// This should not be called from an interrupt +// (eg. from a timer interrupt). +// Call this while idle (in between matrix scans). +// If the buffer is dirty, it will update the driver with the buffer. +void IS31FL3733_update_pwm_buffers(uint8_t addr, uint8_t index); // index is the driver index +void IS31FL3733_update_led_control_registers(uint8_t addr, uint8_t index); + +#define A_1 0x00 +#define A_2 0x01 +#define A_3 0x02 +#define A_4 0x03 +#define A_5 0x04 +#define A_6 0x05 +#define A_7 0x06 +#define A_8 0x07 +#define A_9 0x08 +#define A_10 0x09 +#define A_11 0x0A +#define A_12 0x0B +#define A_13 0x0C +#define A_14 0x0D +#define A_15 0x0E +#define A_16 0x0F + +#define B_1 0x10 +#define B_2 0x11 +#define B_3 0x12 +#define B_4 0x13 +#define B_5 0x14 +#define B_6 0x15 +#define B_7 0x16 +#define B_8 0x17 +#define B_9 0x18 +#define B_10 0x19 +#define B_11 0x1A +#define B_12 0x1B +#define B_13 0x1C +#define B_14 0x1D +#define B_15 0x1E +#define B_16 0x1F + +#define C_1 0x20 +#define C_2 0x21 +#define C_3 0x22 +#define C_4 0x23 +#define C_5 0x24 +#define C_6 0x25 +#define C_7 0x26 +#define C_8 0x27 +#define C_9 0x28 +#define C_10 0x29 +#define C_11 0x2A +#define C_12 0x2B +#define C_13 0x2C +#define C_14 0x2D +#define C_15 0x2E +#define C_16 0x2F + +#define D_1 0x30 +#define D_2 0x31 +#define D_3 0x32 +#define D_4 0x33 +#define D_5 0x34 +#define D_6 0x35 +#define D_7 0x36 +#define D_8 0x37 +#define D_9 0x38 +#define D_10 0x39 +#define D_11 0x3A +#define D_12 0x3B +#define D_13 0x3C +#define D_14 0x3D +#define D_15 0x3E +#define D_16 0x3F + +#define E_1 0x40 +#define E_2 0x41 +#define E_3 0x42 +#define E_4 0x43 +#define E_5 0x44 +#define E_6 0x45 +#define E_7 0x46 +#define E_8 0x47 +#define E_9 0x48 +#define E_10 0x49 +#define E_11 0x4A +#define E_12 0x4B +#define E_13 0x4C +#define E_14 0x4D +#define E_15 0x4E +#define E_16 0x4F + +#define F_1 0x50 +#define F_2 0x51 +#define F_3 0x52 +#define F_4 0x53 +#define F_5 0x54 +#define F_6 0x55 +#define F_7 0x56 +#define F_8 0x57 +#define F_9 0x58 +#define F_10 0x59 +#define F_11 0x5A +#define F_12 0x5B +#define F_13 0x5C +#define F_14 0x5D +#define F_15 0x5E +#define F_16 0x5F + +#define G_1 0x60 +#define G_2 0x61 +#define G_3 0x62 +#define G_4 0x63 +#define G_5 0x64 +#define G_6 0x65 +#define G_7 0x66 +#define G_8 0x67 +#define G_9 0x68 +#define G_10 0x69 +#define G_11 0x6A +#define G_12 0x6B +#define G_13 0x6C +#define G_14 0x6D +#define G_15 0x6E +#define G_16 0x6F + +#define H_1 0x70 +#define H_2 0x71 +#define H_3 0x72 +#define H_4 0x73 +#define H_5 0x74 +#define H_6 0x75 +#define H_7 0x76 +#define H_8 0x77 +#define H_9 0x78 +#define H_10 0x79 +#define H_11 0x7A +#define H_12 0x7B +#define H_13 0x7C +#define H_14 0x7D +#define H_15 0x7E +#define H_16 0x7F + +#define I_1 0x80 +#define I_2 0x81 +#define I_3 0x82 +#define I_4 0x83 +#define I_5 0x84 +#define I_6 0x85 +#define I_7 0x86 +#define I_8 0x87 +#define I_9 0x88 +#define I_10 0x89 +#define I_11 0x8A +#define I_12 0x8B +#define I_13 0x8C +#define I_14 0x8D +#define I_15 0x8E +#define I_16 0x8F + +#define J_1 0x90 +#define J_2 0x91 +#define J_3 0x92 +#define J_4 0x93 +#define J_5 0x94 +#define J_6 0x95 +#define J_7 0x96 +#define J_8 0x97 +#define J_9 0x98 +#define J_10 0x99 +#define J_11 0x9A +#define J_12 0x9B +#define J_13 0x9C +#define J_14 0x9D +#define J_15 0x9E +#define J_16 0x9F + +#define K_1 0xA0 +#define K_2 0xA1 +#define K_3 0xA2 +#define K_4 0xA3 +#define K_5 0xA4 +#define K_6 0xA5 +#define K_7 0xA6 +#define K_8 0xA7 +#define K_9 0xA8 +#define K_10 0xA9 +#define K_11 0xAA +#define K_12 0xAB +#define K_13 0xAC +#define K_14 0xAD +#define K_15 0xAE +#define K_16 0xAF + +#define L_1 0xB0 +#define L_2 0xB1 +#define L_3 0xB2 +#define L_4 0xB3 +#define L_5 0xB4 +#define L_6 0xB5 +#define L_7 0xB6 +#define L_8 0xB7 +#define L_9 0xB8 +#define L_10 0xB9 +#define L_11 0xBA +#define L_12 0xBB +#define L_13 0xBC +#define L_14 0xBD +#define L_15 0xBE +#define L_16 0xBF diff --git a/keyboards/k_type/k_type-rgbdriver.c b/keyboards/k_type/k_type-rgbdriver.c new file mode 100644 index 0000000000..8369aa909e --- /dev/null +++ b/keyboards/k_type/k_type-rgbdriver.c @@ -0,0 +1,57 @@ +/* Copyright 2021 Andrew Fahmy + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifdef RGB_MATRIX_ENABLE + +#include "rgb_matrix.h" +#include "i2c_master.h" +#include "is31fl3733-dual.h" + + + +static void init(void) { + i2c_init(&I2CD1, I2C1_SCL_BANK, I2C1_SDA_BANK, I2C1_SCL, I2C1_SDA); + IS31FL3733_init(0, DRIVER_ADDR_1, 0); +# ifdef USE_I2C2 + i2c_init(&I2CD2, I2C2_SCL_BANK, I2C2_SDA_BANK, I2C2_SCL, I2C2_SDA); + IS31FL3733_init(1, DRIVER_ADDR_2, 0); +# endif + for (int index = 0; index < DRIVER_LED_TOTAL; index++) { + bool enabled = true; + // This only caches it for later + IS31FL3733_set_led_control_register(index, enabled, enabled, enabled); + } + IS31FL3733_update_led_control_registers(DRIVER_ADDR_1, 0); +# ifdef USE_I2C2 + IS31FL3733_update_led_control_registers(DRIVER_ADDR_2, 1); +# endif +} + +static void flush(void) { + IS31FL3733_update_pwm_buffers(DRIVER_ADDR_1, 0); +# ifdef USE_I2C2 + IS31FL3733_update_pwm_buffers(DRIVER_ADDR_2, 1); +# endif +} + +const rgb_matrix_driver_t rgb_matrix_driver = { + .init = init, + .flush = flush, + .set_color = IS31FL3733_set_color, + .set_color_all = IS31FL3733_set_color_all, +}; + +#endif diff --git a/keyboards/k_type/k_type.c b/keyboards/k_type/k_type.c index ae62f0e723..61c5881454 100644 --- a/keyboards/k_type/k_type.c +++ b/keyboards/k_type/k_type.c @@ -17,7 +17,12 @@ along with this program. If not, see . #include "k_type.h" + #ifdef RGB_MATRIX_ENABLE + +#include "is31fl3733-dual.h" + + const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { { 0, B_1, A_1, C_1 }, { 0, B_2, A_2, C_2 }, @@ -45,11 +50,11 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { { 0, E_7, D_7, F_7 }, { 0, E_8, D_8, F_8 }, { 0, E_9, D_9, F_9 }, - { 0, E_10, D_1, F_10 }, - { 0, E_11, D_1, F_11 }, - { 0, E_12, D_1, F_12 }, - { 0, E_13, D_1, F_13 }, - { 0, E_14, D_1, F_14 }, + { 0, E_10, D_10, F_10 }, + { 0, E_11, D_11, F_11 }, + { 0, E_12, D_12, F_12 }, + { 0, E_13, D_13, F_13 }, + { 0, E_14, D_14, F_14 }, { 0, E_15, D_15, F_15 }, { 0, E_16, D_16, F_16 }, @@ -62,11 +67,11 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { { 0, H_7, G_7, I_7 }, { 0, H_8, G_8, I_8 }, { 0, H_9, G_9, I_9 }, - { 0, H_10, G_1, I_10 }, - { 0, H_11, G_1, I_11 }, - { 0, H_12, G_1, I_12 }, - { 0, H_13, G_1, I_13 }, - { 0, H_14, G_1, I_14 }, + { 0, H_10, G_10, I_10 }, + { 0, H_11, G_11, I_11 }, + { 0, H_12, G_12, I_12 }, + { 0, H_13, G_13, I_13 }, + { 0, H_14, G_14, I_14 }, { 0, H_15, G_15, I_15 }, { 0, H_16, G_16, I_16 }, @@ -79,106 +84,123 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { { 0, K_7, J_7, L_7 }, { 0, K_8, J_8, L_8 }, { 0, K_9, J_9, L_9 }, - { 0, K_10, J_1, L_10 }, - { 0, K_11, J_1, L_11 }, - { 0, K_12, J_1, L_12 }, - { 0, K_13, J_1, L_13 }, - { 0, K_14, J_1, L_14 }, + { 0, K_10, J_10, L_10 }, + { 0, K_11, J_11, L_11 }, + { 0, K_12, J_12, L_12 }, + { 0, K_13, J_13, L_13 }, + { 0, K_14, J_14, L_14 }, { 0, K_15, J_15, L_15 }, { 0, K_16, J_16, L_16 }, // Driver 2 is on I2C2 - currently not usable with i2c_master - //{ 1, B_1, A_1, C_1 }, - //{ 1, B_2, A_2, C_2 }, - //{ 1, B_3, A_3, C_3 }, - //{ 1, B_4, A_4, C_4 }, - //{ 1, B_5, A_5, C_5 }, - //{ 1, B_6, A_6, C_6 }, - //{ 1, B_7, A_7, C_7 }, - //{ 1, B_8, A_8, C_8 }, - //{ 1, B_9, A_9, C_9 }, - //{ 1, B_10, A_10, C_10 }, - //{ 1, B_11, A_11, C_11 }, - //{ 1, B_12, A_12, C_12 }, - //{ 1, B_13, A_13, C_13 }, - //{ 1, B_14, A_14, C_14 }, - //{ 1, B_15, A_15, C_15 }, - //{ 1, B_16, A_16, C_16 }, + { 1, B_1, A_1, C_1 }, + { 1, B_2, A_2, C_2 }, + { 1, B_3, A_3, C_3 }, + { 1, B_4, A_4, C_4 }, + { 1, B_5, A_5, C_5 }, + { 1, B_6, A_6, C_6 }, + { 1, B_7, A_7, C_7 }, + { 1, B_8, A_8, C_8 }, + { 1, B_9, A_9, C_9 }, + { 1, B_10, A_10, C_10 }, + { 1, B_11, A_11, C_11 }, + { 1, B_12, A_12, C_12 }, + { 1, B_13, A_13, C_13 }, + { 1, B_14, A_14, C_14 }, + { 1, B_15, A_15, C_15 }, + { 1, B_16, A_16, C_16 }, - //{ 1, E_1, D_1, F_1 }, - //{ 1, E_2, D_2, F_2 }, - //{ 1, E_3, D_3, F_3 }, - //{ 1, E_4, D_4, F_4 }, - //{ 1, E_5, D_5, F_5 }, - //{ 1, E_6, D_6, F_6 }, - //{ 1, E_7, D_7, F_7 }, - //{ 1, E_8, D_8, F_8 }, - //{ 1, E_9, D_9, F_9 }, - //{ 1, E_10, D_1, F_10 }, - //{ 1, E_11, D_1, F_11 }, - //{ 1, E_12, D_1, F_12 }, - //{ 1, E_13, D_1, F_13 }, - //{ 1, E_14, D_1, F_14 }, - //{ 1, E_15, D_15, F_15 }, - //{ 1, E_16, D_16, F_16 }, + { 1, E_1, D_1, F_1 }, + { 1, E_2, D_2, F_2 }, + { 1, E_3, D_3, F_3 }, + { 1, E_4, D_4, F_4 }, + { 1, E_5, D_5, F_5 }, + { 1, E_6, D_6, F_6 }, + { 1, E_7, D_7, F_7 }, + { 1, E_8, D_8, F_8 }, + { 1, E_9, D_9, F_9 }, + { 1, E_10, D_10, F_10 }, + { 1, E_11, D_11, F_11 }, + { 1, E_12, D_12, F_12 }, + { 1, E_13, D_13, F_13 }, + { 1, E_14, D_14, F_14 }, + { 1, E_15, D_15, F_15 }, + { 1, E_16, D_16, F_16 }, - //{ 1, H_1, G_1, I_1 }, - //{ 1, H_2, G_2, I_2 }, - //{ 1, H_3, G_3, I_3 }, - //{ 1, H_4, G_4, I_4 }, - //{ 1, H_5, G_5, I_5 }, - //{ 1, H_6, G_6, I_6 }, - //{ 1, H_7, G_7, I_7 }, - //{ 1, H_8, G_8, I_8 }, - //{ 1, H_9, G_9, I_9 }, - //{ 1, H_10, G_1, I_10 }, - //{ 1, H_11, G_1, I_11 }, - //{ 1, H_12, G_1, I_12 }, - //{ 1, H_13, G_1, I_13 }, - //{ 1, H_14, G_1, I_14 }, - //{ 1, H_15, G_15, I_15 }, - //{ 1, H_16, G_16, I_16 }, + { 1, H_1, G_1, I_1 }, + { 1, H_2, G_2, I_2 }, + { 1, H_3, G_3, I_3 }, + { 1, H_4, G_4, I_4 }, + { 1, H_5, G_5, I_5 }, + { 1, H_6, G_6, I_6 }, + { 1, H_7, G_7, I_7 }, + { 1, H_8, G_8, I_8 }, + { 1, H_9, G_9, I_9 }, + { 1, H_10, G_10, I_10 }, + { 1, H_11, G_11, I_11 }, + { 1, H_12, G_12, I_12 }, + { 1, H_13, G_13, I_13 }, + { 1, H_14, G_14, I_14 }, + { 1, H_15, G_15, I_15 }, + { 1, H_16, G_16, I_16 }, - //{ 1, K_1, J_1, L_1 }, - //{ 1, K_2, J_2, L_2 }, - //{ 1, K_3, J_3, L_3 }, - //{ 1, K_4, J_4, L_4 }, - //{ 1, K_5, J_5, L_5 }, - //{ 1, K_6, J_6, L_6 }, - //{ 1, K_7, J_7, L_7 } + { 1, K_1, J_1, L_1 }, + { 1, K_2, J_2, L_2 }, + { 1, K_3, J_3, L_3 }, + { 1, K_4, J_4, L_4 }, + { 1, K_5, J_5, L_5 }, + { 1, K_6, J_6, L_6 }, + { 1, K_7, J_7, L_7 } }; led_config_t g_led_config = { { // Key Matrix to LED Index - { 0, 10, 20, 29, 38, 47, 57, NO_LED, NO_LED, NO_LED }, - { 1, 11, 21, NO_LED, 39, 48, 58, NO_LED, NO_LED, NO_LED }, - { 2, 12, 22, 30, 40, 49, 59, NO_LED, NO_LED, NO_LED }, - { 3, 13, 23, 31, 41, 50, 60, NO_LED, NO_LED, NO_LED }, - { 4, 14, 24, 32, 42, 51, 61, NO_LED, NO_LED, NO_LED }, - { 5, 15, 25, 33, 43, 52, NO_LED, NO_LED, NO_LED, NO_LED }, - { 6, 16, 26, 34, 44, 53, 62, NO_LED, NO_LED, NO_LED }, - { 7, 17, 27, 35, 45, 54, NO_LED, NO_LED, NO_LED, NO_LED }, - { 8, 18, 28, 36, 46, 55, 63, NO_LED, NO_LED, NO_LED }, - { 9, 19, NO_LED, 37, NO_LED, 56, NO_LED, NO_LED, NO_LED, NO_LED } + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }, + { 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 }, + { 20, 21, 22, 23, 24, 25, 26, 27, 28, NO_LED }, + { 29, NO_LED, 30, 31, 32, 33, 34, 35, 36, 37 }, + { 38, 39, 40, 41, 42, 43, 44, 45, 46, NO_LED }, + { 47, 48, 49, 50, 51, 52, 53, 54, 55, 56 }, + { 57, 58, 59, 60, 61, NO_LED, 62, NO_LED, 63, NO_LED }, + { 64, 65, 66, 67, 68, 69, 70, 71, 72, 73 }, + { NO_LED, 74, NO_LED, 75, 76, 77, 78, 79, 80, 81 }, + { 82, 83, 84, 85, 86, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED } }, { // LED Index to Physical Position + // Key LED { 0, 0 }, { 26.35, 0 }, { 39.53, 0 }, { 52.71, 0 }, { 65.88, 0 }, { 79.06, 0 }, { 92.24, 0 }, { 105.41, 0 }, { 118.59, 0 }, { 131.77, 0 }, { 144.94, 0 }, { 158.12, 0 }, { 171.29, 0 }, { 197.65, 0 }, { 210.82, 0 }, { 224, 0 }, { 0, 21.33 }, { 13.18, 21.33 }, { 26.35, 21.33 }, { 39.53, 21.33 }, { 52.71, 21.33 }, { 65.88, 21.33 }, { 79.06, 21.33 }, { 92.24, 21.33 }, { 105.41, 21.33 }, { 118.59, 21.33 }, { 131.77, 21.33 }, { 144.94, 21.33 }, { 158.12, 21.33 }, { 171.29, 21.33 }, { 197.65, 21.33 }, { 210.82, 21.33 }, { 224, 21.33 }, { 0, 32 }, { 13.18, 32 }, { 26.35, 32 }, { 39.53, 32 }, { 52.71, 32 }, { 65.88, 32 }, { 79.06, 32 }, { 92.24, 32 }, { 105.41, 32 }, { 118.59, 32 }, { 131.77, 32 }, { 144.94, 32 }, { 158.12, 32 }, { 171.29, 32 }, { 197.65, 32 }, { 210.82, 32 }, { 224, 32 }, { 0, 42.67 }, { 13.18, 42.67 }, { 26.35, 42.67 }, { 39.53, 42.67 }, { 52.71, 42.67 }, { 65.88, 42.67 }, { 79.06, 42.67 }, { 92.24, 42.67 }, { 105.41, 42.67 }, { 118.59, 42.67 }, { 131.77, 42.67 }, { 144.94, 42.67 }, { 171.29, 42.67 }, - { 0, 53.33 }, //{ 26.35, 53.33 }, { 39.53, 53.33 }, { 52.71, 53.33 }, { 65.88, 53.33 }, { 79.06, 53.33 }, { 92.24, 53.33 }, { 105.41, 53.33 }, { 118.59, 53.33 }, { 131.77, 53.33 }, { 144.94, 53.33 }, { 171.29, 53.33 }, { 210.82, 53.33 }, - //{ 0, 64 }, { 13.18, 64 }, { 26.35, 64 }, { 79.06, 64 }, { 131.77, 64 }, { 144.94, 64 }, { 158.12, 64 }, { 171.29, 64 }, { 197.65, 64 }, { 210.82, 64 }, { 224, 64 } + { 0, 53.33 }, { 26.35, 53.33 }, { 39.53, 53.33 }, { 52.71, 53.33 }, { 65.88, 53.33 }, { 79.06, 53.33 }, { 92.24, 53.33 }, { 105.41, 53.33 }, { 118.59, 53.33 }, { 131.77, 53.33 }, { 144.94, 53.33 }, { 171.29, 53.33 }, { 210.82, 53.33 }, + { 0, 64 }, { 13.18, 64 }, { 26.35, 64 }, { 79.06, 64 }, { 131.77, 64 }, { 144.94, 64 }, { 158.12, 64 }, { 171.29, 64 }, { 197.65, 64 }, { 210.82, 64 }, { 224, 64 }, + + // Underglow LED + { 224, 64 }, { 206.77, 64 }, { 189.54, 64 }, { 172.31, 64 }, { 155.08, 64 }, { 137.85, 64 }, { 120.61, 64 }, { 103.38, 64 }, { 86.15, 64 }, { 68.92, 64 }, { 51.69, 64 }, { 34.46, 64 }, { 17.23, 64 }, { 0, 64 }, + { 0, 42.67 }, { 0, 21.33 }, + { 0, 0 }, { 17.23, 0 }, { 34.46, 0 }, { 51.69, 0 }, { 68.92, 0 }, { 86.15, 0 }, { 103.38, 0 }, { 120.61, 0 }, { 137.85, 0 }, { 155.08, 0 }, { 172.31, 0 }, { 189.54, 0 }, { 206.77, 0 }, { 224, 0 }, + { 224, 21.33 }, { 224, 42.67 } }, { // LED Index to Flag - 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + //Key LED + 1, 4, 4, 4, 4, 1, 1, 1, 1, 4, 4, 4, 4, 1, 1, 1, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, - 1, //4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, - //1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1 + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, + 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, + + // Underglow LED + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + + 2, 2, + + 2, 2, + + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, } }; #endif diff --git a/keyboards/k_type/keymaps/andrew-fahmy/config.h b/keyboards/k_type/keymaps/andrew-fahmy/config.h new file mode 100644 index 0000000000..c035255de6 --- /dev/null +++ b/keyboards/k_type/keymaps/andrew-fahmy/config.h @@ -0,0 +1,52 @@ +/* Copyright 2021 Andrew Fahmy + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + + +#ifdef RGB_MATRIX_ENABLE +// # define RGB_MATRIX_FRAMEBUFFER_EFFECTS +// # define RGB_MATRIX_KEYPRESSES +# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_RAINDROPS + +// # define DEBUG_MATRIX_SCAN_RATE + +# define RGB_MATRIX_LED_FLUSH_LIMIT 100 +// # define RGB_MATRIX_LED_PROCESS_LIMIT 2 + +// i2c_master defines +# define I2C_COUNT 2 + +# define I2C1_BANK GPIOB +# define I2C1_SCL 0 // A2 on pinout = B0 +# define I2C1_SDA 1 // A2 on pinout = B1 +# define I2C1_SCL_PAL_MODE PAL_MODE_ALTERNATIVE_2 +# define I2C1_SDA_PAL_MODE PAL_MODE_ALTERNATIVE_2 + +# define USE_I2C2 +# define I2C2_BANK GPIOC +# define I2C2_SCL 10 // A2 on pinout = C10 +# define I2C2_SDA 11 // A2 on pinout = C11 +# define I2C2_SCL_PAL_MODE PAL_MODE_ALTERNATIVE_2 +# define I2C2_SDA_PAL_MODE PAL_MODE_ALTERNATIVE_2 + +# define DRIVER_ADDR_1 0b1010000 +# define DRIVER_ADDR_2 0b1010000 +# define DRIVER_COUNT 2 +# define DRIVER_1_LED_TOTAL 64 +# define DRIVER_2_LED_TOTAL 55 +# define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) +#endif diff --git a/keyboards/k_type/keymaps/andrew-fahmy/keymap.c b/keyboards/k_type/keymaps/andrew-fahmy/keymap.c new file mode 100644 index 0000000000..1611c25e41 --- /dev/null +++ b/keyboards/k_type/keymaps/andrew-fahmy/keymap.c @@ -0,0 +1,60 @@ +/* Copyright 2021 Andrew Fahmy + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum layer_names { + _MAIN, + _L1 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_MAIN] = LAYOUT_tkl_ansi( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + MO(_L1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, _______, KC_LALT, KC_SPC, KC_RALT, MO(_L1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [_L1] = LAYOUT_tkl_ansi( + RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_MOD, _______, + + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_SPI, _______, RGB_HUI, RGB_SAI, RGB_VAI, + _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD, + _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_LGUI, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; + +void keyboard_post_init_user(void) { + // Customise these values to desired behaviour + // debug_enable=true; + // debug_matrix=true; + // debug_keyboard=true; + // debug_mouse=true; +} + +#ifdef RGB_MATRIX_ENABLE +// Turn off SDB +void keyboard_pre_init_user() { + palSetPadMode(GPIOB, 16, PAL_MODE_OUTPUT_PUSHPULL); + palSetPad(GPIOB, 16); +} + +#endif diff --git a/keyboards/k_type/keymaps/andrew-fahmy/rules.mk b/keyboards/k_type/keymaps/andrew-fahmy/rules.mk new file mode 100644 index 0000000000..aad92997d0 --- /dev/null +++ b/keyboards/k_type/keymaps/andrew-fahmy/rules.mk @@ -0,0 +1 @@ +RGB_MATRIX_ENABLE = yes diff --git a/keyboards/k_type/keymaps/rgb/config.h b/keyboards/k_type/keymaps/rgb/config.h index 206b76f2b6..4c5d234545 100644 --- a/keyboards/k_type/keymaps/rgb/config.h +++ b/keyboards/k_type/keymaps/rgb/config.h @@ -2,22 +2,31 @@ #ifdef RGB_MATRIX_ENABLE # define RGB_MATRIX_KEYPRESSES -# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL +# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_COLOR + +# define RGB_MATRIX_LED_FLUSH_LIMIT 100 + // i2c_master defines +# define I2C_COUNT 2 + +# define I2C1_BANK GPIOB # define I2C1_SCL 0 // A2 on pinout = B0 # define I2C1_SDA 1 // A2 on pinout = B1 # define I2C1_SCL_PAL_MODE PAL_MODE_ALTERNATIVE_2 # define I2C1_SDA_PAL_MODE PAL_MODE_ALTERNATIVE_2 -//# define I2C2_SCL 10 // A2 on pinout = C10 -//# define I2C2_SDA 11 // A2 on pinout = C11 -//# define I2C2_SCL_PAL_MODE PAL_MODE_ALTERNATIVE_2 -//# define I2C2_SDA_PAL_MODE PAL_MODE_ALTERNATIVE_2 + +# define USE_I2C2 +# define I2C2_BANK GPIOC +# define I2C2_SCL 10 // A2 on pinout = C10 +# define I2C2_SDA 11 // A2 on pinout = C11 +# define I2C2_SCL_PAL_MODE PAL_MODE_ALTERNATIVE_2 +# define I2C2_SDA_PAL_MODE PAL_MODE_ALTERNATIVE_2 # define DRIVER_ADDR_1 0b1010000 -# define DRIVER_ADDR_2 0b1010001 +# define DRIVER_ADDR_2 0b1010000 # define DRIVER_COUNT 2 # define DRIVER_1_LED_TOTAL 64 -//# define DRIVER_2_LED_TOTAL 55 -# define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL +# define DRIVER_2_LED_TOTAL 55 +# define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) #endif diff --git a/keyboards/k_type/keymaps/rgb/keymap.c b/keyboards/k_type/keymaps/rgb/keymap.c index 4ed15e5d66..88f5eaa37b 100644 --- a/keyboards/k_type/keymaps/rgb/keymap.c +++ b/keyboards/k_type/keymaps/rgb/keymap.c @@ -8,12 +8,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), [1] = LAYOUT_tkl_ansi( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_MOD, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI, RGB_SAI, RGB_VAI, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_SPI, _______, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, diff --git a/keyboards/k_type/keymaps/rgb/readme.md b/keyboards/k_type/keymaps/rgb/readme.md index 794052c57a..330321976c 100644 --- a/keyboards/k_type/keymaps/rgb/readme.md +++ b/keyboards/k_type/keymaps/rgb/readme.md @@ -2,4 +2,6 @@ This is an experimental keymap adding support for RGB Matrix on the K-Type. -The board has two IS31FL3733 LED controllers, but they are each on different I2C buses, which QMK's `i2c_master` implementation currently does not support. As a result, all the keys after the left shift will not be lit. +The keyboard should now support full RGB lightings. The lighting animations are running at 10 fps for performance reasons. +You can configure this by changing the `RGB_MATRIX_LED_FLUSH_LIMIT` inside the `config.h` file to a lower value. +For example `RGB_MATRIX_LED_FLUSH_LIMIT 16` would mean that the animations run every 16 ms or at 60 fps. diff --git a/keyboards/k_type/mcuconf.h b/keyboards/k_type/mcuconf.h index 28f3c6cdae..1d9ecf6104 100644 --- a/keyboards/k_type/mcuconf.h +++ b/keyboards/k_type/mcuconf.h @@ -51,4 +51,7 @@ #define KINETIS_I2C_USE_I2C0 TRUE #define KINETIS_I2C_I2C0_PRIORITY 4 +#define KINETIS_I2C_USE_I2C1 TRUE +#define KINETIS_I2C_I2C0_PRIORITY 4 + #endif /* _MCUCONF_H_ */ diff --git a/keyboards/k_type/rules.mk b/keyboards/k_type/rules.mk index 18b6e3c8df..369cab4f09 100644 --- a/keyboards/k_type/rules.mk +++ b/keyboards/k_type/rules.mk @@ -27,7 +27,11 @@ RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output RGB_MATRIX_ENABLE = no -RGB_MATRIX_DRIVER = IS31FL3733 +RGB_MATRIX_DRIVER = custom + +SRC += k_type-rgbdriver.c + +QUANTUM_LIB_SRC += i2c_master.c is31fl3733-dual.c LAYOUTS = tkl_ansi From be771e5fd22d348c85f82b8f73812f274ee34841 Mon Sep 17 00:00:00 2001 From: Wilba Date: Thu, 25 Mar 2021 22:35:54 +1100 Subject: [PATCH 118/613] Added wilba.tech WT60-H3 (#12354) * Added wilba.tech WT60-H2 * fix typo --- keyboards/wilba_tech/wt60_h3/config.h | 55 +++++++++++++++++++ keyboards/wilba_tech/wt60_h3/info.json | 12 ++++ .../wt60_h3/keymaps/default/keymap.c | 52 ++++++++++++++++++ .../wilba_tech/wt60_h3/keymaps/via/keymap.c | 1 + .../wilba_tech/wt60_h3/keymaps/via/rules.mk | 1 + keyboards/wilba_tech/wt60_h3/readme.md | 17 ++++++ keyboards/wilba_tech/wt60_h3/rules.mk | 22 ++++++++ keyboards/wilba_tech/wt60_h3/wt60_h3.c | 17 ++++++ keyboards/wilba_tech/wt60_h3/wt60_h3.h | 35 ++++++++++++ 9 files changed, 212 insertions(+) create mode 100644 keyboards/wilba_tech/wt60_h3/config.h create mode 100644 keyboards/wilba_tech/wt60_h3/info.json create mode 100644 keyboards/wilba_tech/wt60_h3/keymaps/default/keymap.c create mode 100644 keyboards/wilba_tech/wt60_h3/keymaps/via/keymap.c create mode 100644 keyboards/wilba_tech/wt60_h3/keymaps/via/rules.mk create mode 100644 keyboards/wilba_tech/wt60_h3/readme.md create mode 100644 keyboards/wilba_tech/wt60_h3/rules.mk create mode 100644 keyboards/wilba_tech/wt60_h3/wt60_h3.c create mode 100644 keyboards/wilba_tech/wt60_h3/wt60_h3.h diff --git a/keyboards/wilba_tech/wt60_h3/config.h b/keyboards/wilba_tech/wt60_h3/config.h new file mode 100644 index 0000000000..7121d00086 --- /dev/null +++ b/keyboards/wilba_tech/wt60_h3/config.h @@ -0,0 +1,55 @@ +/* Copyright 2020 Jason Williams (Wilba) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x6582 // wilba.tech +#define PRODUCT_ID 0x002C // PCB #44 +#define DEVICE_VER 0x0001 +#define MANUFACTURER wilba.tech +#define PRODUCT wilba.tech WT60-H3 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +#define MATRIX_ROW_PINS { F0, F1, F4, F6, F7 } +#define MATRIX_COL_PINS { F5, D5, B1, B2, B3, D3, D2, C7, C6, B6, B5, B4, D7, D6 } // D4, B7, B0 +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE diff --git a/keyboards/wilba_tech/wt60_h3/info.json b/keyboards/wilba_tech/wt60_h3/info.json new file mode 100644 index 0000000000..854a288b94 --- /dev/null +++ b/keyboards/wilba_tech/wt60_h3/info.json @@ -0,0 +1,12 @@ +{ + "keyboard_name": "wilba.tech WT60-H3", + "url": "https://wilba.tech", + "maintainer": "Wilba", + "width": 15, + "height": 5, + "layouts": { + "LAYOUT_all": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.75, "y":1, "w":1.25, "h":2}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.5}, {"x":1.5, "y":4}, {"x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"x":11, "y":4, "w":1.5}, {"x":12.5, "y":4}, {"x":13.5, "y":4, "w":1.5}] + } + } +} diff --git a/keyboards/wilba_tech/wt60_h3/keymaps/default/keymap.c b/keyboards/wilba_tech/wt60_h3/keymaps/default/keymap.c new file mode 100644 index 0000000000..3e8edca10f --- /dev/null +++ b/keyboards/wilba_tech/wt60_h3/keymaps/default/keymap.c @@ -0,0 +1,52 @@ +/* Copyright 2020 Jason Williams (Wilba) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +// Default layout for WT60-H3 +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + // Default layer + [0] = LAYOUT_all( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL), + + // Fn1 Layer + [1] = LAYOUT_all( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS, + KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_EJCT, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + // Fn2 Layer + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + // Fn3 Layer + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +}; diff --git a/keyboards/wilba_tech/wt60_h3/keymaps/via/keymap.c b/keyboards/wilba_tech/wt60_h3/keymaps/via/keymap.c new file mode 100644 index 0000000000..1f9d213f05 --- /dev/null +++ b/keyboards/wilba_tech/wt60_h3/keymaps/via/keymap.c @@ -0,0 +1 @@ +#include "../default/keymap.c" \ No newline at end of file diff --git a/keyboards/wilba_tech/wt60_h3/keymaps/via/rules.mk b/keyboards/wilba_tech/wt60_h3/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/wilba_tech/wt60_h3/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/wilba_tech/wt60_h3/readme.md b/keyboards/wilba_tech/wt60_h3/readme.md new file mode 100644 index 0000000000..b6040bd43a --- /dev/null +++ b/keyboards/wilba_tech/wt60_h3/readme.md @@ -0,0 +1,17 @@ +# wilba.tech WT60-H3 + +WT60-H3 is a keyboard PCB supporting 60% layout and on-board USB-C. [More info at wilba.tech](https://wilba.tech/) + +* Keyboard Maintainer: [Wilba6582](https://github.com/Wilba6582) +* Hardware Supported: wilba.tech WT60-H3 +* Hardware Availability: [wilba.tech](https://wilba.tech/) + +Make example for this keyboard (after setting up your build environment): + + make wilba_tech/wt60_h3:default + +Flashing example for this keyboard: + + make wilba_tech/wt60_h3:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/wilba_tech/wt60_h3/rules.mk b/keyboards/wilba_tech/wt60_h3/rules.mk new file mode 100644 index 0000000000..219b57ecf7 --- /dev/null +++ b/keyboards/wilba_tech/wt60_h3/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/wilba_tech/wt60_h3/wt60_h3.c b/keyboards/wilba_tech/wt60_h3/wt60_h3.c new file mode 100644 index 0000000000..a6c839b5a4 --- /dev/null +++ b/keyboards/wilba_tech/wt60_h3/wt60_h3.c @@ -0,0 +1,17 @@ +/* Copyright 2020 Jason Williams (Wilba) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "wt60_h3.h" diff --git a/keyboards/wilba_tech/wt60_h3/wt60_h3.h b/keyboards/wilba_tech/wt60_h3/wt60_h3.h new file mode 100644 index 0000000000..a8edb59c66 --- /dev/null +++ b/keyboards/wilba_tech/wt60_h3/wt60_h3.h @@ -0,0 +1,35 @@ +/* Copyright 2020 Jason Williams (Wilba) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define ____ KC_NO + +#define LAYOUT_all( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, \ + K400, K401, K402, K406, K411, K412, K413 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, ____ }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313 }, \ + { K400, K401, K402, ____, ____, ____, K406, ____, ____, ____, ____, K411, K412, K413 } \ +} From 038d9118b6458651dad07a43cd008b0331b044ac Mon Sep 17 00:00:00 2001 From: Wilba Date: Thu, 25 Mar 2021 22:36:24 +1100 Subject: [PATCH 119/613] Added wilba.tech WT65-G2 (#12360) --- keyboards/wilba_tech/wt65_g2/config.h | 55 +++++++++++++++++++ keyboards/wilba_tech/wt65_g2/info.json | 12 ++++ .../wt65_g2/keymaps/default/keymap.c | 52 ++++++++++++++++++ .../wilba_tech/wt65_g2/keymaps/via/keymap.c | 1 + .../wilba_tech/wt65_g2/keymaps/via/rules.mk | 1 + keyboards/wilba_tech/wt65_g2/readme.md | 17 ++++++ keyboards/wilba_tech/wt65_g2/rules.mk | 22 ++++++++ keyboards/wilba_tech/wt65_g2/wt65_g2.c | 17 ++++++ keyboards/wilba_tech/wt65_g2/wt65_g2.h | 36 ++++++++++++ 9 files changed, 213 insertions(+) create mode 100644 keyboards/wilba_tech/wt65_g2/config.h create mode 100644 keyboards/wilba_tech/wt65_g2/info.json create mode 100644 keyboards/wilba_tech/wt65_g2/keymaps/default/keymap.c create mode 100644 keyboards/wilba_tech/wt65_g2/keymaps/via/keymap.c create mode 100644 keyboards/wilba_tech/wt65_g2/keymaps/via/rules.mk create mode 100644 keyboards/wilba_tech/wt65_g2/readme.md create mode 100644 keyboards/wilba_tech/wt65_g2/rules.mk create mode 100644 keyboards/wilba_tech/wt65_g2/wt65_g2.c create mode 100644 keyboards/wilba_tech/wt65_g2/wt65_g2.h diff --git a/keyboards/wilba_tech/wt65_g2/config.h b/keyboards/wilba_tech/wt65_g2/config.h new file mode 100644 index 0000000000..1492f689c9 --- /dev/null +++ b/keyboards/wilba_tech/wt65_g2/config.h @@ -0,0 +1,55 @@ +/* Copyright 2020 Jason Williams (Wilba) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x6582 // wilba.tech +#define PRODUCT_ID 0x002A // PCB #42 +#define DEVICE_VER 0x0001 +#define MANUFACTURER wilba.tech +#define PRODUCT wilba.tech WT65-G2 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +#define MATRIX_ROW_PINS { F0, F1, F4, F6, F7 } +#define MATRIX_COL_PINS { F5, D5, B1, B2, B3, D3, D2, C7, C6, B6, B5, B4, D7, D6, D4 } // B7, B0 +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE diff --git a/keyboards/wilba_tech/wt65_g2/info.json b/keyboards/wilba_tech/wt65_g2/info.json new file mode 100644 index 0000000000..6ccc6b2479 --- /dev/null +++ b/keyboards/wilba_tech/wt65_g2/info.json @@ -0,0 +1,12 @@ +{ + "keyboard_name": "wilba.tech WT65-G2", + "url": "https://wilba.tech", + "maintainer": "Wilba", + "width": 16, + "height": 5, + "layouts": { + "LAYOUT_all": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":15, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":15, "y":2}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":15, "y":3}, {"x":0, "y":4, "w":1.5}, {"x":2.25, "y":4, "w":1.5}, {"x":3.75, "y":4, "w":7}, {"x":10.75, "y":4, "w":1.5}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}] + } + } +} diff --git a/keyboards/wilba_tech/wt65_g2/keymaps/default/keymap.c b/keyboards/wilba_tech/wt65_g2/keymaps/default/keymap.c new file mode 100644 index 0000000000..181b1d57a8 --- /dev/null +++ b/keyboards/wilba_tech/wt65_g2/keymaps/default/keymap.c @@ -0,0 +1,52 @@ +/* Copyright 2020 Jason Williams (Wilba) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +// Default layout for WT65-G2 +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + // Default layer + [0] = LAYOUT_all( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_DEL, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_PGUP, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT), + + // Fn1 Layer + [1] = LAYOUT_all( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, KC_TRNS, + KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_EJCT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + // Fn2 Layer + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + // Fn3 Layer + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +}; \ No newline at end of file diff --git a/keyboards/wilba_tech/wt65_g2/keymaps/via/keymap.c b/keyboards/wilba_tech/wt65_g2/keymaps/via/keymap.c new file mode 100644 index 0000000000..1f9d213f05 --- /dev/null +++ b/keyboards/wilba_tech/wt65_g2/keymaps/via/keymap.c @@ -0,0 +1 @@ +#include "../default/keymap.c" \ No newline at end of file diff --git a/keyboards/wilba_tech/wt65_g2/keymaps/via/rules.mk b/keyboards/wilba_tech/wt65_g2/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/wilba_tech/wt65_g2/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/wilba_tech/wt65_g2/readme.md b/keyboards/wilba_tech/wt65_g2/readme.md new file mode 100644 index 0000000000..4e6ec91736 --- /dev/null +++ b/keyboards/wilba_tech/wt65_g2/readme.md @@ -0,0 +1,17 @@ +# wilba.tech WT65-G2 + +WT65-G2 is a keyboard PCB supporting 65% layout and daughterboard USB-C. [More info at wilba.tech](https://wilba.tech/) + +* Keyboard Maintainer: [Wilba6582](https://github.com/Wilba6582) +* Hardware Supported: wilba.tech WT65-G2 +* Hardware Availability: [wilba.tech](https://wilba.tech/) + +Make example for this keyboard (after setting up your build environment): + + make wilba_tech/wt65_g2:default + +Flashing example for this keyboard: + + make wilba_tech/wt65_g2:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/wilba_tech/wt65_g2/rules.mk b/keyboards/wilba_tech/wt65_g2/rules.mk new file mode 100644 index 0000000000..04e644cbc9 --- /dev/null +++ b/keyboards/wilba_tech/wt65_g2/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output \ No newline at end of file diff --git a/keyboards/wilba_tech/wt65_g2/wt65_g2.c b/keyboards/wilba_tech/wt65_g2/wt65_g2.c new file mode 100644 index 0000000000..585f579a33 --- /dev/null +++ b/keyboards/wilba_tech/wt65_g2/wt65_g2.c @@ -0,0 +1,17 @@ +/* Copyright 2020 Jason Williams (Wilba) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "wt65_g2.h" diff --git a/keyboards/wilba_tech/wt65_g2/wt65_g2.h b/keyboards/wilba_tech/wt65_g2/wt65_g2.h new file mode 100644 index 0000000000..1745db7c70 --- /dev/null +++ b/keyboards/wilba_tech/wt65_g2/wt65_g2.h @@ -0,0 +1,36 @@ +/* Copyright 2020 Jason Williams (Wilba) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define ____ KC_NO + +#define LAYOUT_all( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K213, K014, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, \ + K400, K402, K406, K411, K412, K413, K414 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314 }, \ + { K400, ____, K402, ____, ____, ____, K406, ____, ____, ____, ____, K411, K412, K413, K414 } \ +} + From a74846a0dbd5efbc7b993918f7f3122e1d620c24 Mon Sep 17 00:00:00 2001 From: Wilba Date: Thu, 25 Mar 2021 22:36:52 +1100 Subject: [PATCH 120/613] Added wilba.tech WT60-H2 (#12348) * Added wilba.tech WT60-H2 * fix typo * Fix error in keymap --- keyboards/wilba_tech/wt60_h2/config.h | 55 +++++++++++++++++++ keyboards/wilba_tech/wt60_h2/info.json | 12 ++++ .../wt60_h2/keymaps/default/keymap.c | 52 ++++++++++++++++++ .../wilba_tech/wt60_h2/keymaps/via/keymap.c | 1 + .../wilba_tech/wt60_h2/keymaps/via/rules.mk | 1 + keyboards/wilba_tech/wt60_h2/readme.md | 17 ++++++ keyboards/wilba_tech/wt60_h2/rules.mk | 22 ++++++++ keyboards/wilba_tech/wt60_h2/wt60_h2.c | 17 ++++++ keyboards/wilba_tech/wt60_h2/wt60_h2.h | 35 ++++++++++++ 9 files changed, 212 insertions(+) create mode 100644 keyboards/wilba_tech/wt60_h2/config.h create mode 100644 keyboards/wilba_tech/wt60_h2/info.json create mode 100644 keyboards/wilba_tech/wt60_h2/keymaps/default/keymap.c create mode 100644 keyboards/wilba_tech/wt60_h2/keymaps/via/keymap.c create mode 100644 keyboards/wilba_tech/wt60_h2/keymaps/via/rules.mk create mode 100644 keyboards/wilba_tech/wt60_h2/readme.md create mode 100644 keyboards/wilba_tech/wt60_h2/rules.mk create mode 100644 keyboards/wilba_tech/wt60_h2/wt60_h2.c create mode 100644 keyboards/wilba_tech/wt60_h2/wt60_h2.h diff --git a/keyboards/wilba_tech/wt60_h2/config.h b/keyboards/wilba_tech/wt60_h2/config.h new file mode 100644 index 0000000000..382e8993c8 --- /dev/null +++ b/keyboards/wilba_tech/wt60_h2/config.h @@ -0,0 +1,55 @@ +/* Copyright 2020 Jason Williams (Wilba) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x6582 // wilba.tech +#define PRODUCT_ID 0x002B // PCB #43 +#define DEVICE_VER 0x0001 +#define MANUFACTURER wilba.tech +#define PRODUCT wilba.tech WT60-H2 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +#define MATRIX_ROW_PINS { F0, F1, F4, F6, F7 } +#define MATRIX_COL_PINS { F5, D5, B1, B2, B3, D3, D2, C7, C6, B6, B5, B4, D7, D6 } // D4, B7, B0 +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE diff --git a/keyboards/wilba_tech/wt60_h2/info.json b/keyboards/wilba_tech/wt60_h2/info.json new file mode 100644 index 0000000000..f31a62e73b --- /dev/null +++ b/keyboards/wilba_tech/wt60_h2/info.json @@ -0,0 +1,12 @@ +{ + "keyboard_name": "wilba.tech WT60-H2", + "url": "https://wilba.tech", + "maintainer": "Wilba", + "width": 15, + "height": 5, + "layouts": { + "LAYOUT_all": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.5}, {"x":1.5, "y":4}, {"x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"x":11, "y":4, "w":1.5}, {"x":12.5, "y":4}, {"x":13.5, "y":4, "w":1.5}] + } + } +} \ No newline at end of file diff --git a/keyboards/wilba_tech/wt60_h2/keymaps/default/keymap.c b/keyboards/wilba_tech/wt60_h2/keymaps/default/keymap.c new file mode 100644 index 0000000000..762db000f2 --- /dev/null +++ b/keyboards/wilba_tech/wt60_h2/keymaps/default/keymap.c @@ -0,0 +1,52 @@ +/* Copyright 2020 Jason Williams (Wilba) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +// Default layout for WT60-H2 +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + // Default layer + [0] = LAYOUT_all( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL), + + // Fn1 Layer + [1] = LAYOUT_all( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS, + KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_EJCT, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + // Fn2 Layer + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + // Fn3 Layer + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +}; diff --git a/keyboards/wilba_tech/wt60_h2/keymaps/via/keymap.c b/keyboards/wilba_tech/wt60_h2/keymaps/via/keymap.c new file mode 100644 index 0000000000..1f9d213f05 --- /dev/null +++ b/keyboards/wilba_tech/wt60_h2/keymaps/via/keymap.c @@ -0,0 +1 @@ +#include "../default/keymap.c" \ No newline at end of file diff --git a/keyboards/wilba_tech/wt60_h2/keymaps/via/rules.mk b/keyboards/wilba_tech/wt60_h2/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/wilba_tech/wt60_h2/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/wilba_tech/wt60_h2/readme.md b/keyboards/wilba_tech/wt60_h2/readme.md new file mode 100644 index 0000000000..632363790a --- /dev/null +++ b/keyboards/wilba_tech/wt60_h2/readme.md @@ -0,0 +1,17 @@ +# wilba.tech WT60-H2 + +WT60-H2 is a keyboard PCB supporting 60% layout and on-board USB-C. [More info at wilba.tech](https://wilba.tech/) + +* Keyboard Maintainer: [Wilba6582](https://github.com/Wilba6582) +* Hardware Supported: wilba.tech WT60-H2 +* Hardware Availability: [wilba.tech](https://wilba.tech/) + +Make example for this keyboard (after setting up your build environment): + + make wilba_tech/wt60_h2:default + +Flashing example for this keyboard: + + make wilba_tech/wt60_h2:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/wilba_tech/wt60_h2/rules.mk b/keyboards/wilba_tech/wt60_h2/rules.mk new file mode 100644 index 0000000000..219b57ecf7 --- /dev/null +++ b/keyboards/wilba_tech/wt60_h2/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/wilba_tech/wt60_h2/wt60_h2.c b/keyboards/wilba_tech/wt60_h2/wt60_h2.c new file mode 100644 index 0000000000..705535c18e --- /dev/null +++ b/keyboards/wilba_tech/wt60_h2/wt60_h2.c @@ -0,0 +1,17 @@ +/* Copyright 2020 Jason Williams (Wilba) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "wt60_h2.h" diff --git a/keyboards/wilba_tech/wt60_h2/wt60_h2.h b/keyboards/wilba_tech/wt60_h2/wt60_h2.h new file mode 100644 index 0000000000..8a6f47fdb5 --- /dev/null +++ b/keyboards/wilba_tech/wt60_h2/wt60_h2.h @@ -0,0 +1,35 @@ +/* Copyright 2020 Jason Williams (Wilba) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define ____ KC_NO + +#define LAYOUT_all( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, \ + K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, \ + K400, K401, K402, K406, K411, K412, K413 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, ____ }, \ + { K300, ____, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313 }, \ + { K400, K401, K402, ____, ____, ____, K406, ____, ____, ____, ____, K411, K412, K413 } \ +} From 3e60997edba46544557b3a775bdb1538e07c3edf Mon Sep 17 00:00:00 2001 From: Zach White Date: Thu, 25 Mar 2021 04:38:10 -0700 Subject: [PATCH 121/613] Add a `qmk format-json` command that will format JSON files (#12372) * Add a command to format json files * change to work after rebase * add test for qmk format-json * add documentation for qmk format-json * Update lib/python/qmk/cli/format/json.py --- docs/cli_commands.md | 10 ++ lib/python/qmk/cli/__init__.py | 1 + lib/python/qmk/cli/c2json.py | 2 +- lib/python/qmk/cli/format/__init__.py | 1 + lib/python/qmk/cli/format/json.py | 66 ++++++++ lib/python/qmk/cli/generate/api.py | 2 +- lib/python/qmk/cli/generate/info_json.py | 2 +- lib/python/qmk/cli/info.py | 2 +- lib/python/qmk/cli/kle2json.py | 2 +- lib/python/qmk/info_json_encoder.py | 96 ----------- lib/python/qmk/json_encoders.py | 192 ++++++++++++++++++++++ lib/python/qmk/tests/minimal_info.json | 13 ++ lib/python/qmk/tests/minimal_keymap.json | 7 + lib/python/qmk/tests/pytest_export.json | 6 - lib/python/qmk/tests/test_cli_commands.py | 24 +++ 15 files changed, 319 insertions(+), 107 deletions(-) create mode 100644 lib/python/qmk/cli/format/__init__.py create mode 100755 lib/python/qmk/cli/format/json.py delete mode 100755 lib/python/qmk/info_json_encoder.py create mode 100755 lib/python/qmk/json_encoders.py create mode 100644 lib/python/qmk/tests/minimal_info.json create mode 100644 lib/python/qmk/tests/minimal_keymap.json delete mode 100644 lib/python/qmk/tests/pytest_export.json diff --git a/docs/cli_commands.md b/docs/cli_commands.md index bb5df89968..6498b28b88 100644 --- a/docs/cli_commands.md +++ b/docs/cli_commands.md @@ -131,6 +131,16 @@ Check your environment and report problems only: qmk doctor -n +## `qmk format-json` + +Formats a JSON file in a (mostly) human-friendly way. Will usually correctly detect the format of the JSON (info.json or keymap.json) but you can override this with `--format` if neccesary. + +**Usage**: + +``` +qmk format-json [-f FORMAT] +``` + ## `qmk info` Displays information about keyboards and keymaps in QMK. You can use this to get information about a keyboard, show the layouts, display the underlying key matrix, or to pretty-print JSON keymaps. diff --git a/lib/python/qmk/cli/__init__.py b/lib/python/qmk/cli/__init__.py index a5f1f47679..1349e68a9b 100644 --- a/lib/python/qmk/cli/__init__.py +++ b/lib/python/qmk/cli/__init__.py @@ -16,6 +16,7 @@ from . import docs from . import doctor from . import fileformat from . import flash +from . import format from . import generate from . import hello from . import info diff --git a/lib/python/qmk/cli/c2json.py b/lib/python/qmk/cli/c2json.py index a97e212223..1fa833b647 100644 --- a/lib/python/qmk/cli/c2json.py +++ b/lib/python/qmk/cli/c2json.py @@ -6,7 +6,7 @@ from milc import cli import qmk.keymap import qmk.path -from qmk.info_json_encoder import InfoJSONEncoder +from qmk.json_encoders import InfoJSONEncoder from qmk.keyboard import keyboard_folder diff --git a/lib/python/qmk/cli/format/__init__.py b/lib/python/qmk/cli/format/__init__.py new file mode 100644 index 0000000000..741ec778b1 --- /dev/null +++ b/lib/python/qmk/cli/format/__init__.py @@ -0,0 +1 @@ +from . import json diff --git a/lib/python/qmk/cli/format/json.py b/lib/python/qmk/cli/format/json.py new file mode 100755 index 0000000000..1358c70e7a --- /dev/null +++ b/lib/python/qmk/cli/format/json.py @@ -0,0 +1,66 @@ +"""JSON Formatting Script + +Spits out a JSON file formatted with one of QMK's formatters. +""" +import json + +from jsonschema import ValidationError +from milc import cli + +from qmk.info import info_json +from qmk.json_schema import json_load, keyboard_validate +from qmk.json_encoders import InfoJSONEncoder, KeymapJSONEncoder +from qmk.path import normpath + + +@cli.argument('json_file', arg_only=True, type=normpath, help='JSON file to format') +@cli.argument('-f', '--format', choices=['auto', 'keyboard', 'keymap'], default='auto', arg_only=True, help='JSON formatter to use (Default: autodetect)') +@cli.subcommand('Generate an info.json file for a keyboard.', hidden=False if cli.config.user.developer else True) +def format_json(cli): + """Format a json file. + """ + json_file = json_load(cli.args.json_file) + + if cli.args.format == 'auto': + try: + keyboard_validate(json_file) + json_encoder = InfoJSONEncoder + + except ValidationError as e: + cli.log.warning('File %s did not validate as a keyboard:\n\t%s', cli.args.json_file, e) + cli.log.info('Treating %s as a keymap file.', cli.args.json_file) + json_encoder = KeymapJSONEncoder + + elif cli.args.format == 'keyboard': + json_encoder = InfoJSONEncoder + elif cli.args.format == 'keymap': + json_encoder = KeymapJSONEncoder + else: + # This should be impossible + cli.log.error('Unknown format: %s', cli.args.format) + return False + + if json_encoder == KeymapJSONEncoder and 'layout' in json_file: + # Attempt to format the keycodes. + layout = json_file['layout'] + info_data = info_json(json_file['keyboard']) + + if layout in info_data.get('layout_aliases', {}): + layout = json_file['layout'] = info_data['layout_aliases'][layout] + + if layout in info_data.get('layouts'): + for layer_num, layer in enumerate(json_file['layers']): + current_layer = [] + last_row = 0 + + for keymap_key, info_key in zip(layer, info_data['layouts'][layout]['layout']): + if last_row != info_key['y']: + current_layer.append('JSON_NEWLINE') + last_row = info_key['y'] + + current_layer.append(keymap_key) + + json_file['layers'][layer_num] = current_layer + + # Display the results + print(json.dumps(json_file, cls=json_encoder)) diff --git a/lib/python/qmk/cli/generate/api.py b/lib/python/qmk/cli/generate/api.py index 2905908345..70019428f0 100755 --- a/lib/python/qmk/cli/generate/api.py +++ b/lib/python/qmk/cli/generate/api.py @@ -8,7 +8,7 @@ from milc import cli from qmk.datetime import current_datetime from qmk.info import info_json -from qmk.info_json_encoder import InfoJSONEncoder +from qmk.json_encoders import InfoJSONEncoder from qmk.json_schema import json_load from qmk.keyboard import list_keyboards diff --git a/lib/python/qmk/cli/generate/info_json.py b/lib/python/qmk/cli/generate/info_json.py index 6c00ba7d8a..1af7f04392 100755 --- a/lib/python/qmk/cli/generate/info_json.py +++ b/lib/python/qmk/cli/generate/info_json.py @@ -9,7 +9,7 @@ from milc import cli from qmk.decorators import automagic_keyboard, automagic_keymap from qmk.info import info_json -from qmk.info_json_encoder import InfoJSONEncoder +from qmk.json_encoders import InfoJSONEncoder from qmk.json_schema import load_jsonschema from qmk.keyboard import keyboard_folder from qmk.path import is_keyboard diff --git a/lib/python/qmk/cli/info.py b/lib/python/qmk/cli/info.py index 88b65686f5..aac507c1a5 100755 --- a/lib/python/qmk/cli/info.py +++ b/lib/python/qmk/cli/info.py @@ -7,7 +7,7 @@ import platform from milc import cli -from qmk.info_json_encoder import InfoJSONEncoder +from qmk.json_encoders import InfoJSONEncoder from qmk.constants import COL_LETTERS, ROW_LETTERS from qmk.decorators import automagic_keyboard, automagic_keymap from qmk.keyboard import keyboard_folder, render_layouts, render_layout diff --git a/lib/python/qmk/cli/kle2json.py b/lib/python/qmk/cli/kle2json.py index 3bb7443582..91499c9af3 100755 --- a/lib/python/qmk/cli/kle2json.py +++ b/lib/python/qmk/cli/kle2json.py @@ -8,7 +8,7 @@ from milc import cli from kle2xy import KLE2xy from qmk.converter import kle2qmk -from qmk.info_json_encoder import InfoJSONEncoder +from qmk.json_encoders import InfoJSONEncoder @cli.argument('filename', help='The KLE raw txt to convert') diff --git a/lib/python/qmk/info_json_encoder.py b/lib/python/qmk/info_json_encoder.py deleted file mode 100755 index 60dae7247f..0000000000 --- a/lib/python/qmk/info_json_encoder.py +++ /dev/null @@ -1,96 +0,0 @@ -"""Class that pretty-prints QMK info.json files. -""" -import json -from decimal import Decimal - - -class InfoJSONEncoder(json.JSONEncoder): - """Custom encoder to make info.json's a little nicer to work with. - """ - container_types = (list, tuple, dict) - indentation_char = " " - - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - self.indentation_level = 0 - - if not self.indent: - self.indent = 4 - - def encode(self, obj): - """Encode JSON objects for QMK. - """ - if isinstance(obj, Decimal): - if obj == int(obj): # I can't believe Decimal objects don't have .is_integer() - return int(obj) - return float(obj) - - elif isinstance(obj, (list, tuple)): - if self._primitives_only(obj): - return "[" + ", ".join(self.encode(element) for element in obj) + "]" - - else: - self.indentation_level += 1 - output = [self.indent_str + self.encode(element) for element in obj] - self.indentation_level -= 1 - return "[\n" + ",\n".join(output) + "\n" + self.indent_str + "]" - - elif isinstance(obj, dict): - if obj: - if self.indentation_level == 4: - # These are part of a layout, put them on a single line. - return "{ " + ", ".join(f"{self.encode(key)}: {self.encode(element)}" for key, element in sorted(obj.items())) + " }" - - else: - self.indentation_level += 1 - output = [self.indent_str + f"{json.dumps(key)}: {self.encode(value)}" for key, value in sorted(obj.items(), key=self.sort_root_dict)] - self.indentation_level -= 1 - return "{\n" + ",\n".join(output) + "\n" + self.indent_str + "}" - else: - return "{}" - else: - return super().encode(obj) - - def _primitives_only(self, obj): - """Returns true if the object doesn't have any container type objects (list, tuple, dict). - """ - if isinstance(obj, dict): - obj = obj.values() - - return not any(isinstance(element, self.container_types) for element in obj) - - def sort_root_dict(self, key): - """Forces layout to the back of the sort order. - """ - key = key[0] - - if self.indentation_level == 1: - if key == 'manufacturer': - return '10keyboard_name' - - elif key == 'keyboard_name': - return '11keyboard_name' - - elif key == 'maintainer': - return '12maintainer' - - elif key in ('height', 'width'): - return '40' + str(key) - - elif key == 'community_layouts': - return '97community_layouts' - - elif key == 'layout_aliases': - return '98layout_aliases' - - elif key == 'layouts': - return '99layouts' - - else: - return '50' + str(key) - - return key - - @property - def indent_str(self): - return self.indentation_char * (self.indentation_level * self.indent) diff --git a/lib/python/qmk/json_encoders.py b/lib/python/qmk/json_encoders.py new file mode 100755 index 0000000000..9f3da022b4 --- /dev/null +++ b/lib/python/qmk/json_encoders.py @@ -0,0 +1,192 @@ +"""Class that pretty-prints QMK info.json files. +""" +import json +from decimal import Decimal + +newline = '\n' + + +class QMKJSONEncoder(json.JSONEncoder): + """Base class for all QMK JSON encoders. + """ + container_types = (list, tuple, dict) + indentation_char = " " + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.indentation_level = 0 + + if not self.indent: + self.indent = 4 + + def encode_decimal(self, obj): + """Encode a decimal object. + """ + if obj == int(obj): # I can't believe Decimal objects don't have .is_integer() + return int(obj) + + return float(obj) + + def encode_list(self, obj): + """Encode a list-like object. + """ + if self.primitives_only(obj): + return "[" + ", ".join(self.encode(element) for element in obj) + "]" + + else: + self.indentation_level += 1 + output = [self.indent_str + self.encode(element) for element in obj] + self.indentation_level -= 1 + + return "[\n" + ",\n".join(output) + "\n" + self.indent_str + "]" + + def encode(self, obj): + """Encode keymap.json objects for QMK. + """ + if isinstance(obj, Decimal): + return self.encode_decimal(obj) + + elif isinstance(obj, (list, tuple)): + return self.encode_list(obj) + + elif isinstance(obj, dict): + return self.encode_dict(obj) + + else: + return super().encode(obj) + + def primitives_only(self, obj): + """Returns true if the object doesn't have any container type objects (list, tuple, dict). + """ + if isinstance(obj, dict): + obj = obj.values() + + return not any(isinstance(element, self.container_types) for element in obj) + + @property + def indent_str(self): + return self.indentation_char * (self.indentation_level * self.indent) + + +class InfoJSONEncoder(QMKJSONEncoder): + """Custom encoder to make info.json's a little nicer to work with. + """ + def encode_dict(self, obj): + """Encode info.json dictionaries. + """ + if obj: + if self.indentation_level == 4: + # These are part of a layout, put them on a single line. + return "{ " + ", ".join(f"{self.encode(key)}: {self.encode(element)}" for key, element in sorted(obj.items())) + " }" + + else: + self.indentation_level += 1 + output = [self.indent_str + f"{json.dumps(key)}: {self.encode(value)}" for key, value in sorted(obj.items(), key=self.sort_dict)] + self.indentation_level -= 1 + return "{\n" + ",\n".join(output) + "\n" + self.indent_str + "}" + else: + return "{}" + + def sort_dict(self, key): + """Forces layout to the back of the sort order. + """ + key = key[0] + + if self.indentation_level == 1: + if key == 'manufacturer': + return '10keyboard_name' + + elif key == 'keyboard_name': + return '11keyboard_name' + + elif key == 'maintainer': + return '12maintainer' + + elif key in ('height', 'width'): + return '40' + str(key) + + elif key == 'community_layouts': + return '97community_layouts' + + elif key == 'layout_aliases': + return '98layout_aliases' + + elif key == 'layouts': + return '99layouts' + + else: + return '50' + str(key) + + return key + + +class KeymapJSONEncoder(QMKJSONEncoder): + """Custom encoder to make keymap.json's a little nicer to work with. + """ + def encode_dict(self, obj): + """Encode dictionary objects for keymap.json. + """ + if obj: + self.indentation_level += 1 + output_lines = [f"{self.indent_str}{json.dumps(key)}: {self.encode(value)}" for key, value in sorted(obj.items(), key=self.sort_dict)] + output = ',\n'.join(output_lines) + self.indentation_level -= 1 + + return f"{{\n{output}\n{self.indent_str}}}" + + else: + return "{}" + + def encode_list(self, obj): + """Encode a list-like object. + """ + if self.indentation_level == 2: + indent_level = self.indentation_level + 1 + # We have a list of keycodes + layer = [[]] + + for key in obj: + if key == 'JSON_NEWLINE': + layer.append([]) + else: + layer[-1].append(f'"{key}"') + + layer = [f"{self.indent_str*indent_level}{', '.join(row)}" for row in layer] + + return f"{self.indent_str}[\n{newline.join(layer)}\n{self.indent_str*self.indentation_level}]" + + elif self.primitives_only(obj): + return "[" + ", ".join(self.encode(element) for element in obj) + "]" + + else: + self.indentation_level += 1 + output = [self.indent_str + self.encode(element) for element in obj] + self.indentation_level -= 1 + + return "[\n" + ",\n".join(output) + "\n" + self.indent_str + "]" + + def sort_dict(self, key): + """Sorts the hashes in a nice way. + """ + key = key[0] + + if self.indentation_level == 1: + if key == 'version': + return '00version' + + elif key == 'author': + return '01author' + + elif key == 'notes': + return '02notes' + + elif key == 'layers': + return '98layers' + + elif key == 'documentation': + return '99documentation' + + else: + return '50' + str(key) + + return key diff --git a/lib/python/qmk/tests/minimal_info.json b/lib/python/qmk/tests/minimal_info.json new file mode 100644 index 0000000000..b91c23bd3d --- /dev/null +++ b/lib/python/qmk/tests/minimal_info.json @@ -0,0 +1,13 @@ +{ + "keyboard_name": "tester", + "maintainer": "qmk", + "height": 5, + "width": 15, + "layouts": { + "LAYOUT": { + "layout": [ + { "label": "KC_A", "x": 0, "y": 0, "matrix": [0, 0] } + ] + } + } +} diff --git a/lib/python/qmk/tests/minimal_keymap.json b/lib/python/qmk/tests/minimal_keymap.json new file mode 100644 index 0000000000..258f9e8a9a --- /dev/null +++ b/lib/python/qmk/tests/minimal_keymap.json @@ -0,0 +1,7 @@ +{ + "keyboard": "handwired/pytest/basic", + "keymap": "test", + "layers": [["KC_A"]], + "layout": "LAYOUT_ortho_1x1", + "version": 1 +} diff --git a/lib/python/qmk/tests/pytest_export.json b/lib/python/qmk/tests/pytest_export.json deleted file mode 100644 index 5fb0d624f8..0000000000 --- a/lib/python/qmk/tests/pytest_export.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "keyboard":"handwired/pytest/basic", - "keymap":"pytest_unittest", - "layout":"LAYOUT", - "layers":[["KC_A"]] -} diff --git a/lib/python/qmk/tests/test_cli_commands.py b/lib/python/qmk/tests/test_cli_commands.py index a97472e6be..c57d2b7fc7 100644 --- a/lib/python/qmk/tests/test_cli_commands.py +++ b/lib/python/qmk/tests/test_cli_commands.py @@ -259,3 +259,27 @@ def test_generate_layouts(): result = check_subcommand('generate-layouts', '-kb', 'handwired/pytest/basic') check_returncode(result) assert '#define LAYOUT_custom(k0A) {' in result.stdout + + +def test_format_json_keyboard(): + result = check_subcommand('format-json', '--format', 'keyboard', 'lib/python/qmk/tests/minimal_info.json') + check_returncode(result) + assert result.stdout == '{\n "keyboard_name": "tester",\n "maintainer": "qmk",\n "height": 5,\n "width": 15,\n "layouts": {\n "LAYOUT": {\n "layout": [\n { "label": "KC_A", "matrix": [0, 0], "x": 0, "y": 0 }\n ]\n }\n }\n}\n' + + +def test_format_json_keymap(): + result = check_subcommand('format-json', '--format', 'keymap', 'lib/python/qmk/tests/minimal_keymap.json') + check_returncode(result) + assert result.stdout == '{\n "version": 1,\n "keyboard": "handwired/pytest/basic",\n "keymap": "test",\n "layout": "LAYOUT_ortho_1x1",\n "layers": [\n [\n "KC_A"\n ]\n ]\n}\n' + + +def test_format_json_keyboard_auto(): + result = check_subcommand('format-json', '--format', 'auto', 'lib/python/qmk/tests/minimal_info.json') + check_returncode(result) + assert result.stdout == '{\n "keyboard_name": "tester",\n "maintainer": "qmk",\n "height": 5,\n "width": 15,\n "layouts": {\n "LAYOUT": {\n "layout": [\n { "label": "KC_A", "matrix": [0, 0], "x": 0, "y": 0 }\n ]\n }\n }\n}\n' + + +def test_format_json_keymap_auto(): + result = check_subcommand('format-json', '--format', 'auto', 'lib/python/qmk/tests/minimal_keymap.json') + check_returncode(result) + assert result.stdout == '{\n "keyboard": "handwired/pytest/basic",\n "keymap": "test",\n "layers": [\n ["KC_A"]\n ],\n "layout": "LAYOUT_ortho_1x1",\n "version": 1\n}\n' From 1d706bd77ce3831cd31388923a1bee83610419c2 Mon Sep 17 00:00:00 2001 From: James Young <18669334+noroadsleft@users.noreply.github.com> Date: Thu, 25 Mar 2021 04:38:52 -0700 Subject: [PATCH 122/613] handwired/bolek: correct key object order (#12356) --- keyboards/handwired/bolek/info.json | 30 ++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/keyboards/handwired/bolek/info.json b/keyboards/handwired/bolek/info.json index cf73cffa13..c4cf179096 100644 --- a/keyboards/handwired/bolek/info.json +++ b/keyboards/handwired/bolek/info.json @@ -2,8 +2,8 @@ "keyboard_name": "bolek", "url": "https://github.com/klausweiss/bolek", "maintainer": "klausweiss", - "height": 5, - "width": 11, + "height": 5.25, + "width": 12.75, "layouts": { "LAYOUT": { "layout": [ @@ -12,34 +12,34 @@ { "label": "E", "x": 2, "y": 0 }, { "label": "R", "x": 3, "y": 0.25 }, { "label": "T", "x": 4, "y": 0.5 }, - { "label": "A", "x": 0, "y": 1.25 }, - { "label": "S", "x": 1, "y": 1 }, - { "label": "D", "x": 2, "y": 1 }, - { "label": "F", "x": 3, "y": 1.25 }, - { "label": "G", "x": 4, "y": 1.5 }, - { "label": "Z", "x": 0, "y": 2.25 }, - { "label": "X", "x": 1, "y": 2 }, - { "label": "C", "x": 2, "y": 2 }, - { "label": "V", "x": 3, "y": 2.25 }, - { "label": "B", "x": 4, "y": 2.5 }, - { "label": "ESC", "x": 3.25, "y": 3.75 }, - { "label": "SPC", "x": 4.25, "y": 4 }, - { "label": "TAB", "x": 5.25, "y": 4.25 }, { "label": "Y", "x": 7.75, "y": 0.5 }, { "label": "U", "x": 8.75, "y": 0.25 }, { "label": "I", "x": 9.75, "y": 0 }, { "label": "O", "x": 10.75, "y": 0 }, { "label": "P", "x": 11.75, "y": 0.25 }, + { "label": "A", "x": 0, "y": 1.25 }, + { "label": "S", "x": 1, "y": 1 }, + { "label": "D", "x": 2, "y": 1 }, + { "label": "F", "x": 3, "y": 1.25 }, + { "label": "G", "x": 4, "y": 1.5 }, { "label": "H", "x": 7.75, "y": 1.5 }, { "label": "J", "x": 8.75, "y": 1.25 }, { "label": "K", "x": 9.75, "y": 1 }, { "label": "L", "x": 10.75, "y": 1 }, { "label": ";", "x": 11.75, "y": 1.25 }, + { "label": "Z", "x": 0, "y": 2.25 }, + { "label": "X", "x": 1, "y": 2 }, + { "label": "C", "x": 2, "y": 2 }, + { "label": "V", "x": 3, "y": 2.25 }, + { "label": "B", "x": 4, "y": 2.5 }, { "label": "N", "x": 7.75, "y": 2.5 }, { "label": "M", "x": 8.75, "y": 2.25 }, { "label": ",", "x": 9.75, "y": 2 }, { "label": ".", "x": 10.75, "y": 2 }, { "label": "'", "x": 11.75, "y": 2.25 }, + { "label": "ESC", "x": 3.25, "y": 3.75 }, + { "label": "SPC", "x": 4.25, "y": 4 }, + { "label": "TAB", "x": 5.25, "y": 4.25 }, { "label": "RET", "x": 6.5, "y": 4.25 }, { "label": "BSPC", "x": 7.5, "y": 4 }, { "label": "RESET", "x": 8.5, "y": 3.75 } From eac9ee8d3fb3f9f6eec4314fbab20fa3c4ed2edb Mon Sep 17 00:00:00 2001 From: Purdea Andrei Date: Thu, 25 Mar 2021 13:44:28 +0200 Subject: [PATCH 123/613] Improve upon the 'Caveats' section of the Layers and Mod-Tap documentation (#12306) * Improve upon the 'Caveats' section of the Layers and Mod-Tap documentation * Update docs/mod_tap.md Co-authored-by: Ryan * Update docs/feature_layers.md Co-authored-by: Ryan * Update docs/mod_tap.md Co-authored-by: Ryan * Added a line saying that remote desktop problems may also be mitigated by defining TAP_CODE_DELAY * Update docs/mod_tap.md Co-authored-by: Ryan Co-authored-by: Ryan --- docs/feature_layers.md | 4 +--- docs/mod_tap.md | 8 +++++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/feature_layers.md b/docs/feature_layers.md index 3f62cfc805..78d950dc49 100644 --- a/docs/feature_layers.md +++ b/docs/feature_layers.md @@ -19,12 +19,10 @@ These functions allow you to activate layers in various ways. Note that layers a ### Caveats :id=caveats -Currently, `LT()` and `MT()` are limited to the [Basic Keycode set](keycodes_basic.md), meaning you can't use keycodes like `LCTL()`, `KC_TILD`, or anything greater than `0xFF`. Specifically, dual function keys like `LT` and `MT` use a 16 bit keycode. 4 bits are used for the function identifier, the next 12 are divided into the parameters. Layer Tap uses 4 bits for the layer (and is why it's limited to layers 0-15, actually), while Mod Tap does the same, 4 bits for the identifier, 4 bits for which mods are used, and all of them use 8 bits for the keycode. Because of this, the keycode used is limited to `0xFF` (0-255), which are the basic keycodes only. +Currently, the `layer` argument of `LT()` is limited to layers 0-15, and the `kc` argument to the [Basic Keycode set](keycodes_basic.md), meaning you can't use keycodes like `LCTL()`, `KC_TILD`, or anything greater than `0xFF`. This is because QMK uses 16-bit keycodes, of which 4 bits are used for the function identifier and 4 bits for the layer, leaving only 8 bits for the keycode. Expanding this would be complicated, at best. Moving to a 32-bit keycode would solve a lot of this, but would double the amount of space that the keymap matrix uses. And it could potentially cause issues, too. If you need to apply modifiers to your tapped keycode, [Tap Dance](feature_tap_dance.md#example-5-using-tap-dance-for-advanced-mod-tap-and-layer-tap-keys) can be used to accomplish this. -Additionally, if at least one right-handed modifier is specified in a Mod Tap or Layer Tap, it will cause all modifiers specified to become right-handed, so it is not possible to mix and match the two. - ## Working with Layers :id=working-with-layers Care must be taken when switching layers, it's possible to lock yourself into a layer with no way to deactivate that layer (without unplugging your keyboard.) We've created some guidelines to help users avoid the most common problems. diff --git a/docs/mod_tap.md b/docs/mod_tap.md index 18440eb661..6a2bcbc15e 100644 --- a/docs/mod_tap.md +++ b/docs/mod_tap.md @@ -50,11 +50,13 @@ For convenience, QMK includes some Mod-Tap shortcuts to make common combinations ## Caveats -Unfortunately, these keycodes cannot be used in Mod-Taps or Layer-Taps, since any modifiers specified in the keycode are ignored. +Currently, the `kc` argument of `MT()` is limited to the [Basic Keycode set](keycodes_basic.md), meaning you can't use keycodes like `LCTL()`, `KC_TILD`, or anything greater than `0xFF`. This is because QMK uses 16-bit keycodes, of which 3 bits are used for the function identifier, 1 bit for selecting right or left mods, and 4 bits to tell which mods are used, leaving only 8 bits for the keycode. Additionally, if at least one right-handed modifier is specified in a Mod-Tap, it will cause all modifiers specified to become right-handed, so it is not possible to mix and match the two - for example, Left Control and Right Shift would become Right Control and Right Shift. -Additionally, you may run into issues when using Remote Desktop Connection on Windows. Because these codes send shift very fast, Remote Desktop may miss the codes. +Expanding this would be complicated, at best. Moving to a 32-bit keycode would solve a lot of this, but would double the amount of space that the keymap matrix uses. And it could potentially cause issues, too. If you need to apply modifiers to your tapped keycode, [Tap Dance](feature_tap_dance.md#example-5-using-tap-dance-for-advanced-mod-tap-and-layer-tap-keys) can be used to accomplish this. -To fix this, open Remote Desktop Connection, click on "Show Options", open the the "Local Resources" tab. In the keyboard section, change the drop down to "On this Computer". This will fix the issue, and allow the characters to work correctly. +You may also run into issues when using Remote Desktop Connection on Windows. Because these keycodes send key events faster than a human, Remote Desktop could miss them. +To fix this, open Remote Desktop Connection, click on "Show Options", open the the "Local Resources" tab, and in the keyboard section, change the drop down to "On this Computer". This will fix the issue, and allow the characters to work correctly. +It can also be mitigated by increasing [`TAP_CODE_DELAY`](config_options.md#behaviors-that-can-be-configured). ## Other Resources From ef872595ae3c89bd2f59f18a9053af3536240bac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Silva?= <123550+andresilva@users.noreply.github.com> Date: Thu, 25 Mar 2021 11:45:55 +0000 Subject: [PATCH 124/613] update shell.nix (#12295) --- shell.nix | 36 ++++-------------------------------- 1 file changed, 4 insertions(+), 32 deletions(-) diff --git a/shell.nix b/shell.nix index 82505d5d27..ab44dd8e31 100644 --- a/shell.nix +++ b/shell.nix @@ -2,48 +2,20 @@ let nixpkgs = builtins.fetchTarball { - url = "https://github.com/NixOS/nixpkgs/archive/c4b26e702044dbf40f8236136c099d8ab6778514.tar.gz"; - sha256 = "0w6hgs01qzni3a7cvgadjlmcdlb6vay3w910vh4k9fc949ii7s60"; + url = "https://github.com/NixOS/nixpkgs/archive/1f77a4c8c74bbe896053994836790aa9bf6dc5ba.tar.gz"; + sha256 = "1j62nmzz3w33dplzf1xz1pg1pfkxii7lwdqmsxmc71cs9cm3s7n1"; }; pkgs = import nixpkgs { }; - hjson = with pkgs.python3Packages; buildPythonPackage rec { - pname = "hjson"; - version = "3.0.1"; - - src = fetchPypi { - inherit pname version; - sha256 = "1yaimcgz8w0ps1wk28wk9g9zdidp79d14xqqj9rjkvxalvx2f5qx"; - }; - - doCheck = false; - }; - - milc = with pkgs.python3Packages; buildPythonPackage rec { - pname = "milc"; - version = "1.0.10"; - - src = fetchPypi { - inherit pname version; - sha256 = "1q1p7qrqk78mw67nhv04zgxaq8himmdxmy2vp4fmi7chwgcbpi32"; - }; - - propagatedBuildInputs = [ - appdirs - argcomplete - colorama - ]; - - doCheck = false; - }; - pythonEnv = pkgs.python3.withPackages (p: with p; [ # requirements.txt appdirs argcomplete colorama + dotty-dict hjson + jsonschema milc pygments # requirements-dev.txt From cf7404630e8b1682dae3dfb10f5358fb0331d6c7 Mon Sep 17 00:00:00 2001 From: Matteo Montemarani <71832926+mm0nte@users.noreply.github.com> Date: Thu, 25 Mar 2021 12:47:03 +0100 Subject: [PATCH 125/613] ISO Layouts fix (#12319) --- .../pizza65/keymaps/iso_blocker/keymap.c | 4 ++-- .../keymaps/iso_blocker_doublebs/keymap.c | 10 +++++----- keyboards/pizzakeyboards/pizza65/pizza65.h | 16 ++++++++-------- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/keyboards/pizzakeyboards/pizza65/keymaps/iso_blocker/keymap.c b/keyboards/pizzakeyboards/pizza65/keymaps/iso_blocker/keymap.c index d05902ac6a..97f38c30e3 100644 --- a/keyboards/pizzakeyboards/pizza65/keymaps/iso_blocker/keymap.c +++ b/keyboards/pizzakeyboards/pizza65/keymaps/iso_blocker/keymap.c @@ -26,8 +26,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [1] = LAYOUT_65_iso_blocker( KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_INS, - KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END ), diff --git a/keyboards/pizzakeyboards/pizza65/keymaps/iso_blocker_doublebs/keymap.c b/keyboards/pizzakeyboards/pizza65/keymaps/iso_blocker_doublebs/keymap.c index 17008937c2..f39512107f 100644 --- a/keyboards/pizzakeyboards/pizza65/keymaps/iso_blocker_doublebs/keymap.c +++ b/keyboards/pizzakeyboards/pizza65/keymaps/iso_blocker_doublebs/keymap.c @@ -19,15 +19,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_65_iso_blocker_doublebs( KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_HOME, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_NUHS, KC_PGUP, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGDN, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT ), [1] = LAYOUT_65_iso_blocker_doublebs( - KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_DEL, KC_INS, - KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_DEL, KC_INS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NUHS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END ), diff --git a/keyboards/pizzakeyboards/pizza65/pizza65.h b/keyboards/pizzakeyboards/pizza65/pizza65.h index 7331f4c4a0..27b8f37483 100644 --- a/keyboards/pizzakeyboards/pizza65/pizza65.h +++ b/keyboards/pizzakeyboards/pizza65/pizza65.h @@ -50,11 +50,11 @@ K40, K41, K42, K46, K4A, K4B, K4D, K4E, K4F \ ) \ { \ - { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, KC_NO, K0E, K0F }, \ - { K10, KC_NO, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K2D, K1F }, \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, KC_NO, K0E, K0F }, \ + { K10, KC_NO, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K2D, K1F }, \ { K20, KC_NO, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KC_NO, K2E, K2F }, \ - { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, K3E, K3F }, \ - { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, KC_NO, K4D, K4E, K4F }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, K3E, K3F }, \ + { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, KC_NO, K4D, K4E, K4F }, \ } #define LAYOUT_65_ansi_blocker_doublebs( \ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, \ @@ -72,15 +72,15 @@ } #define LAYOUT_65_iso_blocker_doublebs( \ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, \ - K10, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, \ - K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, K2F, \ + K10, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1F, \ + K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, \ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, K3F, \ K40, K41, K42, K46, K4A, K4B, K4D, K4E, K4F \ ) \ { \ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \ - { K10, KC_NO, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \ - { K20, KC_NO, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KC_NO, K2E, K2F }, \ + { K10, KC_NO, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K2D, K1F }, \ + { K20, KC_NO, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KC_NO, K2E, K2F }, \ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, K3E, K3F }, \ { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, KC_NO, K4D, K4E, K4F }, \ } From dd0a35273c9445357e1bd5c28ef81ab93306e108 Mon Sep 17 00:00:00 2001 From: kb-elmo Date: Thu, 25 Mar 2021 12:48:59 +0100 Subject: [PATCH 126/613] added twelvekey (#12281) * added twelvekey * rename layout --- keyboards/kb_elmo/twelvekey/config.h | 46 +++++++++++++++++++ keyboards/kb_elmo/twelvekey/info.json | 24 ++++++++++ .../twelvekey/keymaps/default/keymap.c | 24 ++++++++++ .../kb_elmo/twelvekey/keymaps/via/keymap.c | 39 ++++++++++++++++ .../kb_elmo/twelvekey/keymaps/via/rules.mk | 1 + keyboards/kb_elmo/twelvekey/readme.md | 19 ++++++++ keyboards/kb_elmo/twelvekey/rules.mk | 25 ++++++++++ keyboards/kb_elmo/twelvekey/twelvekey.c | 17 +++++++ keyboards/kb_elmo/twelvekey/twelvekey.h | 37 +++++++++++++++ 9 files changed, 232 insertions(+) create mode 100644 keyboards/kb_elmo/twelvekey/config.h create mode 100644 keyboards/kb_elmo/twelvekey/info.json create mode 100644 keyboards/kb_elmo/twelvekey/keymaps/default/keymap.c create mode 100644 keyboards/kb_elmo/twelvekey/keymaps/via/keymap.c create mode 100644 keyboards/kb_elmo/twelvekey/keymaps/via/rules.mk create mode 100644 keyboards/kb_elmo/twelvekey/readme.md create mode 100644 keyboards/kb_elmo/twelvekey/rules.mk create mode 100644 keyboards/kb_elmo/twelvekey/twelvekey.c create mode 100644 keyboards/kb_elmo/twelvekey/twelvekey.h diff --git a/keyboards/kb_elmo/twelvekey/config.h b/keyboards/kb_elmo/twelvekey/config.h new file mode 100644 index 0000000000..4be5f4f313 --- /dev/null +++ b/keyboards/kb_elmo/twelvekey/config.h @@ -0,0 +1,46 @@ +/* +Copyright 2021 kb-elmo + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xA68C +#define PRODUCT_ID 0x9879 +#define DEVICE_VER 0x0001 +#define MANUFACTURER kb-elmo +#define PRODUCT Twelvekey + +/* key matrix size */ +#define MATRIX_ROWS 3 +#define MATRIX_COLS 4 + +/* Keyboard Matrix Assignments */ +#define MATRIX_ROW_PINS { D1, C4, D7 } +#define MATRIX_COL_PINS { C5, D0, B0, D6 } + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Backlight */ +#define BACKLIGHT_PIN B1 +#define BACKLIGHT_LEVELS 8 +#define BACKLIGHT_ON_STATE 0 + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 diff --git a/keyboards/kb_elmo/twelvekey/info.json b/keyboards/kb_elmo/twelvekey/info.json new file mode 100644 index 0000000000..814123147d --- /dev/null +++ b/keyboards/kb_elmo/twelvekey/info.json @@ -0,0 +1,24 @@ +{ + "keyboard_name": "twelvekey", + "url": "https://github.com/kb-elmo/twelvekey", + "maintainer": "kb-elmo", + "width": 4, + "height": 3, + "layouts": { + "LAYOUT_ortho_3x4": { + "layout": [{"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + {"x":3, "y":2} + ] + } + } +} diff --git a/keyboards/kb_elmo/twelvekey/keymaps/default/keymap.c b/keyboards/kb_elmo/twelvekey/keymaps/default/keymap.c new file mode 100644 index 0000000000..db60b3afc3 --- /dev/null +++ b/keyboards/kb_elmo/twelvekey/keymaps/default/keymap.c @@ -0,0 +1,24 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_ortho_3x4( + KC_1, KC_2, KC_3, KC_4, + KC_5, KC_6, KC_7, KC_8, + KC_9, KC_0, KC_A, KC_B + ) +}; diff --git a/keyboards/kb_elmo/twelvekey/keymaps/via/keymap.c b/keyboards/kb_elmo/twelvekey/keymaps/via/keymap.c new file mode 100644 index 0000000000..025e2026d7 --- /dev/null +++ b/keyboards/kb_elmo/twelvekey/keymaps/via/keymap.c @@ -0,0 +1,39 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_ortho_3x4( + KC_1, KC_2, KC_3, KC_4, + KC_5, KC_6, KC_7, KC_8, + KC_9, KC_0, KC_A, KC_B + ), + [1] = LAYOUT_ortho_3x4( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_ortho_3x4( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_ortho_3x4( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/kb_elmo/twelvekey/keymaps/via/rules.mk b/keyboards/kb_elmo/twelvekey/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/kb_elmo/twelvekey/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/kb_elmo/twelvekey/readme.md b/keyboards/kb_elmo/twelvekey/readme.md new file mode 100644 index 0000000000..db24063783 --- /dev/null +++ b/keyboards/kb_elmo/twelvekey/readme.md @@ -0,0 +1,19 @@ +# Twelvekey + +![twelvekey](https://i.imgur.com/xBQIvpml.png) + +Simple 12-key macropad + +* Keyboard Maintainer: [kb-elmo](https://github.com/kb-elmo) +* Hardware Supported: Twelvekey PCB with backlight +* Hardware Availability: [Open source project](https://github.com/kb-elmo/twelvekey) + +Make example for this keyboard (after setting up your build environment): + + make kb_elmo/twelvekey:default + +Flashing example for this keyboard: + + make kb_elmo/twelvekey:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/kb_elmo/twelvekey/rules.mk b/keyboards/kb_elmo/twelvekey/rules.mk new file mode 100644 index 0000000000..d099a10684 --- /dev/null +++ b/keyboards/kb_elmo/twelvekey/rules.mk @@ -0,0 +1,25 @@ +# MCU name +MCU = atmega328p + +# Processor frequency +F_CPU = 16000000 + +# Bootloader selection +BOOTLOADER = USBasp + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/kb_elmo/twelvekey/twelvekey.c b/keyboards/kb_elmo/twelvekey/twelvekey.c new file mode 100644 index 0000000000..2a33acd92e --- /dev/null +++ b/keyboards/kb_elmo/twelvekey/twelvekey.c @@ -0,0 +1,17 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "twelvekey.h" diff --git a/keyboards/kb_elmo/twelvekey/twelvekey.h b/keyboards/kb_elmo/twelvekey/twelvekey.h new file mode 100644 index 0000000000..3c4d884269 --- /dev/null +++ b/keyboards/kb_elmo/twelvekey/twelvekey.h @@ -0,0 +1,37 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT_ortho_3x4( \ + k00, k01, k02, k03, \ + k10, k11, k12, k13, \ + k20, k21, k22, k23 \ +) { \ + { k00, k01, k02, k03 }, \ + { k10, k11, k12, k13 }, \ + { k20, k21, k22, k23 } \ +} From 3fc710e0b149627bae3406fff84855308710c485 Mon Sep 17 00:00:00 2001 From: kopibeng <52724926+kopibeng@users.noreply.github.com> Date: Thu, 25 Mar 2021 19:49:37 +0800 Subject: [PATCH 127/613] Add XT65 keyboard (#11998) * Add XT65 keyboard * Create readme.md * Updated readme.md and rules.mk * Updated config.h and readme.md * Update imgur link * Update keyboards/kopibeng/xt65/rules.mk Co-authored-by: Drashna Jaelre * Update keyboards/kopibeng/xt65/rules.mk Co-authored-by: Drashna Jaelre * Update keyboards/kopibeng/xt65/config.h Co-authored-by: Ryan * Update keyboards/kopibeng/xt65/readme.md Co-authored-by: Ryan * Update keyboards/kopibeng/xt65/readme.md Co-authored-by: Ryan * Update keyboards/kopibeng/xt65/rules.mk Co-authored-by: Ryan * Update keyboards/kopibeng/xt65/rules.mk Co-authored-by: Ryan Co-authored-by: Drashna Jaelre Co-authored-by: Ryan --- keyboards/kopibeng/xt65/config.h | 108 ++++++++++++++++++ keyboards/kopibeng/xt65/info.json | 80 +++++++++++++ .../kopibeng/xt65/keymaps/default/keymap.c | 48 ++++++++ keyboards/kopibeng/xt65/keymaps/via/keymap.c | 57 +++++++++ keyboards/kopibeng/xt65/keymaps/via/rules.mk | 1 + keyboards/kopibeng/xt65/readme.md | 17 +++ keyboards/kopibeng/xt65/rules.mk | 22 ++++ keyboards/kopibeng/xt65/xt65.c | 17 +++ keyboards/kopibeng/xt65/xt65.h | 65 +++++++++++ 9 files changed, 415 insertions(+) create mode 100644 keyboards/kopibeng/xt65/config.h create mode 100644 keyboards/kopibeng/xt65/info.json create mode 100644 keyboards/kopibeng/xt65/keymaps/default/keymap.c create mode 100644 keyboards/kopibeng/xt65/keymaps/via/keymap.c create mode 100644 keyboards/kopibeng/xt65/keymaps/via/rules.mk create mode 100644 keyboards/kopibeng/xt65/readme.md create mode 100644 keyboards/kopibeng/xt65/rules.mk create mode 100644 keyboards/kopibeng/xt65/xt65.c create mode 100644 keyboards/kopibeng/xt65/xt65.h diff --git a/keyboards/kopibeng/xt65/config.h b/keyboards/kopibeng/xt65/config.h new file mode 100644 index 0000000000..e39f832bdf --- /dev/null +++ b/keyboards/kopibeng/xt65/config.h @@ -0,0 +1,108 @@ +/* Copyright 2021 Samuel Lu + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4B50 // 'KP' kopibeng +#define PRODUCT_ID 0x0650 +#define DEVICE_VER 0x0001 +#define MANUFACTURER kopibeng +#define PRODUCT XT65 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +#define MATRIX_ROW_PINS { B5, B4, D7, D6, D4 } +#define MATRIX_COL_PINS { D1, D2, D3, B6, C6, C7, F0, F1, F4, F5, F6, F7, B2, B3, B7 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +#define BACKLIGHT_PIN B1 +// #define BACKLIGHT_BREATHING +#define BACKLIGHT_LEVELS 5 + +#define RGB_DI_PIN D5 +#ifdef RGB_DI_PIN + #define RGBLED_NUM 12 + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 + #define RGBLIGHT_LIMIT_VAL 200 /* The maximum brightness level */ + #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ + #define RGBLIGHT_ANIMATIONS +// /*== or choose animations ==*/ +// #define RGBLIGHT_EFFECT_BREATHING +// #define RGBLIGHT_EFFECT_RAINBOW_MOOD +// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL +// #define RGBLIGHT_EFFECT_SNAKE +// #define RGBLIGHT_EFFECT_KNIGHT +// #define RGBLIGHT_EFFECT_CHRISTMAS +// #define RGBLIGHT_EFFECT_STATIC_GRADIENT +// #define RGBLIGHT_EFFECT_RGB_TEST +// #define RGBLIGHT_EFFECT_ALTERNATING +#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +// #define BOOTMAGIC_LITE_ROW 0 +// #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/kopibeng/xt65/info.json b/keyboards/kopibeng/xt65/info.json new file mode 100644 index 0000000000..dd374e01fe --- /dev/null +++ b/keyboards/kopibeng/xt65/info.json @@ -0,0 +1,80 @@ +{ + "keyboard_name": "kopibeng XT65", + "url": "", + "maintainer": "kopibeng", + "width": 16, + "height": 5, + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"K00 (B5,D1)", "x":0, "y":0}, + {"label":"K01 (B5,D2)", "x":1, "y":0}, + {"label":"K02 (B5,D3)", "x":2, "y":0}, + {"label":"K03 (B5,B6)", "x":3, "y":0}, + {"label":"K04 (B5,C6)", "x":4, "y":0}, + {"label":"K05 (B5,C7)", "x":5, "y":0}, + {"label":"K06 (B5,F0)", "x":6, "y":0}, + {"label":"K07 (B5,F1)", "x":7, "y":0}, + {"label":"K08 (B5,F4)", "x":8, "y":0}, + {"label":"K09 (B5,F5)", "x":9, "y":0}, + {"label":"K0A (B5,F6)", "x":10, "y":0}, + {"label":"K0B (B5,F7)", "x":11, "y":0}, + {"label":"K0C (B5,B2)", "x":12, "y":0}, + {"label":"K0D (B5,B3)", "x":13, "y":0}, + {"label":"K1D (B4,B3)", "x":14, "y":0}, + {"label":"K0E (B5,B7)", "x":15, "y":0}, + {"label":"K10 (B4,D1)", "x":0, "y":1, "w":1.5}, + {"label":"K11 (B4,D2)", "x":1.5, "y":1}, + {"label":"K12 (B4,D3)", "x":2.5, "y":1}, + {"label":"K13 (B4,B6)", "x":3.5, "y":1}, + {"label":"K14 (B4,C6)", "x":4.5, "y":1}, + {"label":"K15 (B4,C7)", "x":5.5, "y":1}, + {"label":"K16 (B4,F0)", "x":6.5, "y":1}, + {"label":"K17 (B4,F1)", "x":7.5, "y":1}, + {"label":"K18 (B4,F4)", "x":8.5, "y":1}, + {"label":"K19 (B4,F5)", "x":9.5, "y":1}, + {"label":"K1A (B4,F6)", "x":10.5, "y":1}, + {"label":"K1B (B4,F7)", "x":11.5, "y":1}, + {"label":"K1C (B4,B2)", "x":12.5, "y":1}, + {"label":"K2D (D7,B3)", "x":13.5, "y":1, "w":1.5}, + {"label":"K1E (B4,B7)", "x":15, "y":1}, + {"label":"K20 (D7,D1)", "x":0, "y":2, "w":1.25}, + {"label":"K21 (D7,D2)", "x":1.75, "y":2}, + {"label":"K22 (D7,D3)", "x":2.75, "y":2}, + {"label":"K23 (D7,B6)", "x":3.75, "y":2}, + {"label":"K24 (D7,C6)", "x":4.75, "y":2}, + {"label":"K25 (D7,C7)", "x":5.75, "y":2}, + {"label":"K26 (D7,F0)", "x":6.75, "y":2}, + {"label":"K27 (D7,F1)", "x":7.75, "y":2}, + {"label":"K28 (D7,F4)", "x":8.75, "y":2}, + {"label":"K29 (D7,F5)", "x":9.75, "y":2}, + {"label":"K2A (D7,F6)", "x":10.75, "y":2}, + {"label":"K2B (D7,F7)", "x":11.75, "y":2}, + {"label":"K2C (D7,B2)", "x":12.75, "y":2, "w":2.25}, + {"label":"K2E (D7,B7)", "x":15, "y":2}, + {"label":"K30 (D6,D1)", "x":0, "y":3, "w":2.25}, + {"label":"K31 (D6,D2)", "x":2.25, "y":3}, + {"label":"K32 (D6,D3)", "x":3.25, "y":3}, + {"label":"K33 (D6,B6)", "x":4.25, "y":3}, + {"label":"K34 (D6,C6)", "x":5.25, "y":3}, + {"label":"K35 (D6,C7)", "x":6.25, "y":3}, + {"label":"K36 (D6,F0)", "x":7.25, "y":3}, + {"label":"K37 (D6,F1)", "x":8.25, "y":3}, + {"label":"K38 (D6,F4)", "x":9.25, "y":3}, + {"label":"K39 (D6,F5)", "x":10.25, "y":3}, + {"label":"K3A (D6,F6)", "x":11.25, "y":3}, + {"label":"K3B (D6,F7)", "x":12.25, "y":3, "w":1.75}, + {"label":"K3D (D6,B3)", "x":14, "y":3}, + {"label":"K3E (D6,B7)", "x":15, "y":3}, + {"label":"K40 (D4,D1)", "x":0, "y":4, "w":1.5}, + {"label":"K41 (D4,D2)", "x":1.5, "y":4}, + {"label":"K42 (D4,D3)", "x":2.5, "y":4, "w":1.5}, + {"label":"K45 (D4,C7)", "x":4, "y":4, "w":7}, + {"label":"K4A (D4,F6)", "x":11, "y":4, "w":1.5}, + {"label":"K4C (D4,B2)", "x":13, "y":4}, + {"label":"K4D (D4,B3)", "x":14, "y":4}, + {"label":"K4E (D4,B7)", "x":15, "y":4} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/kopibeng/xt65/keymaps/default/keymap.c b/keyboards/kopibeng/xt65/keymaps/default/keymap.c new file mode 100644 index 0000000000..5c6d330411 --- /dev/null +++ b/keyboards/kopibeng/xt65/keymaps/default/keymap.c @@ -0,0 +1,48 @@ +/* Copyright 2021 Samuel Lu + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + // Default layer + [0] = LAYOUT_all( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_DEL, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_PGDN, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_HOME, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + MO(1), KC_LGUI, KC_LALT, KC_SPC, MO(2), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + // Fn1 Layer + [1] = LAYOUT_all( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_VOLD, KC_VOLU, KC_MPLY, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + // Fn2 Layer + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; + diff --git a/keyboards/kopibeng/xt65/keymaps/via/keymap.c b/keyboards/kopibeng/xt65/keymaps/via/keymap.c new file mode 100644 index 0000000000..043afa68af --- /dev/null +++ b/keyboards/kopibeng/xt65/keymaps/via/keymap.c @@ -0,0 +1,57 @@ +/* Copyright 2021 Samuel Lu + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + // Default layer + [0] = LAYOUT_all( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_HOME, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + MO(1), KC_LGUI, KC_LALT, KC_SPC, MO(2), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + // Fn1 Layer + [1] = LAYOUT_all( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_VOLD, KC_VOLU, KC_MPLY, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + // Fn2 Layer + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + // Fn3 Layer + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; + diff --git a/keyboards/kopibeng/xt65/keymaps/via/rules.mk b/keyboards/kopibeng/xt65/keymaps/via/rules.mk new file mode 100644 index 0000000000..036bd6d1c3 --- /dev/null +++ b/keyboards/kopibeng/xt65/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/kopibeng/xt65/readme.md b/keyboards/kopibeng/xt65/readme.md new file mode 100644 index 0000000000..19f1d7efec --- /dev/null +++ b/keyboards/kopibeng/xt65/readme.md @@ -0,0 +1,17 @@ +# XT65 + +![XT65](https://i.imgur.com/extkBr1.png) + +A 65% PCB with support for VIA, LED backlight and RGB underglow. + +* Keyboard Maintainer: kopibeng +* Hardware Supported: A 65% keyboard with ATMEGA32U4 +* Hardware Availability: N/A + +Make example for this keyboard (after setting up your build environment): + + make kopibeng/xt65:default + +Press the switch (SW1) on bottom side of PCB to enter bootloader. + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/kopibeng/xt65/rules.mk b/keyboards/kopibeng/xt65/rules.mk new file mode 100644 index 0000000000..1d60cf3c28 --- /dev/null +++ b/keyboards/kopibeng/xt65/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/kopibeng/xt65/xt65.c b/keyboards/kopibeng/xt65/xt65.c new file mode 100644 index 0000000000..bd1622bfa2 --- /dev/null +++ b/keyboards/kopibeng/xt65/xt65.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Samuel Lu + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "xt65.h" diff --git a/keyboards/kopibeng/xt65/xt65.h b/keyboards/kopibeng/xt65/xt65.h new file mode 100644 index 0000000000..d14440e08b --- /dev/null +++ b/keyboards/kopibeng/xt65/xt65.h @@ -0,0 +1,65 @@ +/* Copyright 2021 Samuel Lu + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define ____ KC_NO + + + +#define LAYOUT_all( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K113, K014, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K213, K114, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, \ + K400, K401, K402, K405, K409, K410, K412, K413, K414 \ +) { \ + {K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014}, \ + {K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114}, \ + {K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214}, \ + {K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, ____, K313, K314}, \ + {K400, K401, K402, ____, ____, K405, ____, ____, ____, K409, K410, ____, K412, K413, K414} \ +} + +#define LAYOUT_65_7u_split_bs( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K113, K014, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K213, K114, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, \ + K400, K401, K402, K405, K410, K412, K413, K414 \ +) { \ + {K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014}, \ + {K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114}, \ + {K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214}, \ + {K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, ____, K313, K314}, \ + {K400, K401, K402, ____, ____, K405, ____, ____, ____, ____, K410, ____, K412, K413, K414} \ +} + +#define LAYOUT_65_625u( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K213, K114, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, \ + K400, K401, K402, K405, K409, K410, K412, K413, K414 \ +) { \ + {K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014}, \ + {K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, ____, K114}, \ + {K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214}, \ + {K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, ____, K313, K314}, \ + {K400, K401, K402, ____, ____, K405, ____, ____, ____, K409, K410, ____, K412, K413, K414} \ +} From 95c74ae4ae969ed9d5004a6378a730b445e38d43 Mon Sep 17 00:00:00 2001 From: peepeetee <43021794+peepeetee@users.noreply.github.com> Date: Thu, 25 Mar 2021 06:50:17 -0500 Subject: [PATCH 128/613] add via support for bm68rgb (#12275) * add via support for bm68rgb * add newline to keymap.c --- keyboards/bm68rgb/keymaps/via/keymap.c | 55 +++++++++++++++++++++++++ keyboards/bm68rgb/keymaps/via/readme.md | 1 + keyboards/bm68rgb/keymaps/via/rules.mk | 1 + 3 files changed, 57 insertions(+) create mode 100644 keyboards/bm68rgb/keymaps/via/keymap.c create mode 100644 keyboards/bm68rgb/keymaps/via/readme.md create mode 100644 keyboards/bm68rgb/keymaps/via/rules.mk diff --git a/keyboards/bm68rgb/keymaps/via/keymap.c b/keyboards/bm68rgb/keymaps/via/keymap.c new file mode 100644 index 0000000000..46381c561c --- /dev/null +++ b/keyboards/bm68rgb/keymaps/via/keymap.c @@ -0,0 +1,55 @@ +/* Copyright 2021 peepeetee + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +// enum layer_names { +// _BASE, +// _FN +// }; + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_ansi( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1),KC_RCTRL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_65_ansi( + KC_GRAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT_65_ansi( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT_65_ansi( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +}; diff --git a/keyboards/bm68rgb/keymaps/via/readme.md b/keyboards/bm68rgb/keymaps/via/readme.md new file mode 100644 index 0000000000..c013ae25e2 --- /dev/null +++ b/keyboards/bm68rgb/keymaps/via/readme.md @@ -0,0 +1 @@ +# The default VIA keymap for bm68rgb \ No newline at end of file diff --git a/keyboards/bm68rgb/keymaps/via/rules.mk b/keyboards/bm68rgb/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/bm68rgb/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes From 572395ac201123a17bc7e705d262ac311139b287 Mon Sep 17 00:00:00 2001 From: TerryMathews Date: Thu, 25 Mar 2021 07:51:02 -0400 Subject: [PATCH 129/613] TKC GodSpeed75: add RGB LED support (#12278) * GodSpeed75: add RGB support * GodSpeed75: minor updates * GodSpeed75: minor updates * GodSpeed75: restore chconf.h * GodSpeed75: restore chconf.h * GodSpeed75: restore chconf.h --- keyboards/tkc/godspeed75/chconf.h | 1 - keyboards/tkc/godspeed75/config.h | 12 +++--------- keyboards/tkc/godspeed75/keymaps/default/keymap.c | 2 +- keyboards/tkc/godspeed75/keymaps/via/keymap.c | 2 +- keyboards/tkc/godspeed75/rules.mk | 2 +- 5 files changed, 6 insertions(+), 13 deletions(-) diff --git a/keyboards/tkc/godspeed75/chconf.h b/keyboards/tkc/godspeed75/chconf.h index c341c6fba4..aeca82af9a 100644 --- a/keyboards/tkc/godspeed75/chconf.h +++ b/keyboards/tkc/godspeed75/chconf.h @@ -28,4 +28,3 @@ #define CH_CFG_USE_CONDVARS_TIMEOUT FALSE #include_next - diff --git a/keyboards/tkc/godspeed75/config.h b/keyboards/tkc/godspeed75/config.h index b4b448e242..93604a9a6f 100644 --- a/keyboards/tkc/godspeed75/config.h +++ b/keyboards/tkc/godspeed75/config.h @@ -100,12 +100,6 @@ /* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ //#define MIDI_TONE_KEYCODE_OCTAVES 1 -// #define WS2812_LED_N 2 -// #define RGBLED_NUM WS2812_LED_N -// #define WS2812_TIM_N 2 -// #define WS2812_TIM_CH 2 -// #define PORT_WS2812 GPIOA -// #define PIN_WS2812 1 -// #define WS2812_DMA_STREAM STM32_DMA1_STREAM2 // DMA stream for TIMx_UP (look up in reference manual under DMA Channel selection) -//#define WS2812_DMA_CHANNEL 7 // DMA channel for TIMx_UP -//#define WS2812_EXTERNAL_PULLUP +#define RGB_DI_PIN A13 +#define RGBLED_NUM 14 +#define RGBLIGHT_ANIMATIONS diff --git a/keyboards/tkc/godspeed75/keymaps/default/keymap.c b/keyboards/tkc/godspeed75/keymaps/default/keymap.c index 92ed5220b8..ac536922f2 100644 --- a/keyboards/tkc/godspeed75/keymaps/default/keymap.c +++ b/keyboards/tkc/godspeed75/keymaps/default/keymap.c @@ -37,6 +37,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_NO, RESET, KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_INS, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, + KC_LSFT, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, KC_LCTL, KC_LALT, KC_SPC, KC_TRNS, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), }; diff --git a/keyboards/tkc/godspeed75/keymaps/via/keymap.c b/keyboards/tkc/godspeed75/keymaps/via/keymap.c index 3dfed700b0..5d99cafad4 100644 --- a/keyboards/tkc/godspeed75/keymaps/via/keymap.c +++ b/keyboards/tkc/godspeed75/keymaps/via/keymap.c @@ -38,7 +38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_NO, RESET, KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_INS, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, + KC_LSFT, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, KC_LCTL, KC_LALT, KC_SPC, KC_TRNS, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), [_AL] = LAYOUT( diff --git a/keyboards/tkc/godspeed75/rules.mk b/keyboards/tkc/godspeed75/rules.mk index 69071e042f..6a6372474c 100644 --- a/keyboards/tkc/godspeed75/rules.mk +++ b/keyboards/tkc/godspeed75/rules.mk @@ -14,7 +14,7 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output From 8e820cde131c72d7966fb5dd528ba0ed2c1cd577 Mon Sep 17 00:00:00 2001 From: jakobkg Date: Thu, 25 Mar 2021 12:51:57 +0100 Subject: [PATCH 130/613] Fix handling multiples of the same MIDI note (fixes bug brought up in issue #10199) (#11639) * Fix handling multiples of the same MIDI note * Extend MIDI note status to fix note releases --- quantum/process_keycode/process_midi.c | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/quantum/process_keycode/process_midi.c b/quantum/process_keycode/process_midi.c index 8e2fb955e7..9632d2b757 100644 --- a/quantum/process_keycode/process_midi.c +++ b/quantum/process_keycode/process_midi.c @@ -34,7 +34,7 @@ void process_midi_all_notes_off(void) { midi_send_cc(&midi_device, 0, 0x7B, 0); # include "timer.h" -static uint8_t tone_status[MIDI_TONE_COUNT]; +static uint8_t tone_status[2][MIDI_TONE_COUNT]; static uint8_t midi_modulation; static int8_t midi_modulation_step; @@ -51,7 +51,8 @@ void midi_init(void) { midi_config.modulation_interval = 8; for (uint8_t i = 0; i < MIDI_TONE_COUNT; i++) { - tone_status[i] = MIDI_INVALID_NOTE; + tone_status[0][i] = MIDI_INVALID_NOTE; + tone_status[1][i] = 0; } midi_modulation = 0; @@ -68,19 +69,21 @@ bool process_midi(uint16_t keycode, keyrecord_t *record) { uint8_t tone = keycode - MIDI_TONE_MIN; uint8_t velocity = midi_config.velocity; if (record->event.pressed) { - if (tone_status[tone] == MIDI_INVALID_NOTE) { - uint8_t note = midi_compute_note(keycode); - midi_send_noteon(&midi_device, channel, note, velocity); - dprintf("midi noteon channel:%d note:%d velocity:%d\n", channel, note, velocity); - tone_status[tone] = note; + uint8_t note = midi_compute_note(keycode); + midi_send_noteon(&midi_device, channel, note, velocity); + dprintf("midi noteon channel:%d note:%d velocity:%d\n", channel, note, velocity); + tone_status[1][tone] += 1; + if (tone_status[0][tone] == MIDI_INVALID_NOTE) { + tone_status[0][tone] = note; } } else { - uint8_t note = tone_status[tone]; - if (note != MIDI_INVALID_NOTE) { + uint8_t note = tone_status[0][tone]; + tone_status[1][tone] -= 1; + if (tone_status[1][tone] == 0) { midi_send_noteoff(&midi_device, channel, note, velocity); dprintf("midi noteoff channel:%d note:%d velocity:%d\n", channel, note, velocity); + tone_status[0][tone] = MIDI_INVALID_NOTE; } - tone_status[tone] = MIDI_INVALID_NOTE; } return false; } From 6276f54752e98ab1f99eaff5c077c52bf29e5c81 Mon Sep 17 00:00:00 2001 From: Albert Y <76888457+filterpaper@users.noreply.github.com> Date: Thu, 25 Mar 2021 19:52:53 +0800 Subject: [PATCH 131/613] Add suspend wake functions for The Mark:65's RGB Matrix (#12245) * Add suspend wake functions for RGB Matrix * Add USB suspend definition to config.h Co-authored-by: filterpaper --- keyboards/boardsource/the_mark/config.h | 1 + keyboards/boardsource/the_mark/the_mark.c | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/keyboards/boardsource/the_mark/config.h b/keyboards/boardsource/the_mark/config.h index cb64c3a690..7af2c302fb 100644 --- a/keyboards/boardsource/the_mark/config.h +++ b/keyboards/boardsource/the_mark/config.h @@ -58,6 +58,7 @@ along with this program. If not, see . #ifdef RGB_MATRIX_ENABLE #define DRIVER_LED_TOTAL 24 // Number of LEDs #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 +#define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended #endif /* diff --git a/keyboards/boardsource/the_mark/the_mark.c b/keyboards/boardsource/the_mark/the_mark.c index bb37974f6e..9bc1f5b461 100644 --- a/keyboards/boardsource/the_mark/the_mark.c +++ b/keyboards/boardsource/the_mark/the_mark.c @@ -35,4 +35,15 @@ led_config_t g_led_config = { { LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL } }; + + +void suspend_power_down_kb(void) { + rgb_matrix_set_suspend_state(true); + suspend_power_down_user(); +} + +void suspend_wakeup_init_kb(void) { + rgb_matrix_set_suspend_state(false); + suspend_wakeup_init_user(); +} #endif From c4d05010cb4dad42740d67003bf66b67e10fe854 Mon Sep 17 00:00:00 2001 From: Blake Date: Thu, 25 Mar 2021 11:53:30 +0000 Subject: [PATCH 132/613] Add Daisy, a macropad with dual rotary encoders + update Scarlet readme.md (#12221) * Daisy first commit buggy * buggy still underglow crash * Daisy V1 * ReadMe Updates --- keyboards/draytronics/daisy/config.h | 112 ++++++++++++++++++ keyboards/draytronics/daisy/daisy.c | 19 +++ keyboards/draytronics/daisy/daisy.h | 33 ++++++ keyboards/draytronics/daisy/info.json | 25 ++++ .../daisy/keymaps/default/keymap.c | 51 ++++++++ keyboards/draytronics/daisy/readme.md | 20 ++++ keyboards/draytronics/daisy/rules.mk | 23 ++++ keyboards/draytronics/scarlet/readme.md | 4 +- 8 files changed, 285 insertions(+), 2 deletions(-) create mode 100644 keyboards/draytronics/daisy/config.h create mode 100644 keyboards/draytronics/daisy/daisy.c create mode 100644 keyboards/draytronics/daisy/daisy.h create mode 100644 keyboards/draytronics/daisy/info.json create mode 100644 keyboards/draytronics/daisy/keymaps/default/keymap.c create mode 100644 keyboards/draytronics/daisy/readme.md create mode 100644 keyboards/draytronics/daisy/rules.mk diff --git a/keyboards/draytronics/daisy/config.h b/keyboards/draytronics/daisy/config.h new file mode 100644 index 0000000000..b524f89028 --- /dev/null +++ b/keyboards/draytronics/daisy/config.h @@ -0,0 +1,112 @@ +/*Copyright 2021 Blake Drayson / Draytronics + +Contact info@draytronics.co.uk + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +#define VENDOR_ID 0x4454 //DT for DrayTronics +#define PRODUCT_ID 0x4441 //DA for Daisy +#define DEVICE_VER 0x0100 //Version 1 +#define MANUFACTURER Draytronics +#define PRODUCT DAISY + +/* key matrix size */ +#define MATRIX_ROWS 3 +#define MATRIX_COLS 4 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ + +#define MATRIX_ROW_PINS { B0, C0, C1} +#define MATRIX_COL_PINS { C2, C3, C4, C5 } +#define UNUSED_PINS + +#define ENCODERS_PAD_A { B1, D0 } +#define ENCODERS_PAD_B { B2, D1 } +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW +#define TAP_CODE_DELAY 10 +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ +/* disable debug print */ +//#define NO_DEBUG +/* disable print */ +//#define NO_PRINT +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +//Underglow +#define RGB_DI_PIN D4 // Underglow led pin +#ifdef RGB_DI_PIN + #define RGBLED_NUM 4 + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 + #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ + #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ + /*== all animations enable ==*/ + #define RGBLIGHT_ANIMATIONS +#endif diff --git a/keyboards/draytronics/daisy/daisy.c b/keyboards/draytronics/daisy/daisy.c new file mode 100644 index 0000000000..149cb3d0c7 --- /dev/null +++ b/keyboards/draytronics/daisy/daisy.c @@ -0,0 +1,19 @@ +/*Copyright 2021 Blake Drayson / Draytronics + +Contact info@draytronics.co.uk + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "daisy.h" diff --git a/keyboards/draytronics/daisy/daisy.h b/keyboards/draytronics/daisy/daisy.h new file mode 100644 index 0000000000..f6f9b69d87 --- /dev/null +++ b/keyboards/draytronics/daisy/daisy.h @@ -0,0 +1,33 @@ +/*Copyright 2021 Blake Drayson / Draytronics + +Contact info@draytronics.co.uk + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#define _x_ KC_NO + +#include "quantum.h" + +#define LAYOUT_daisy( \ + K00, K03, \ + K10, K11, K12, K13, \ + K20, K21, K22, K23 \ +) { \ +{ K00, _x_, _x_, K03, }, \ +{ K10, K11, K12, K13, }, \ +{ K20, K21, K22, K23, }, \ +} diff --git a/keyboards/draytronics/daisy/info.json b/keyboards/draytronics/daisy/info.json new file mode 100644 index 0000000000..4fee494660 --- /dev/null +++ b/keyboards/draytronics/daisy/info.json @@ -0,0 +1,25 @@ +{ + "keyboard_name": "Draytronics DAISY", + "url": "https://www.draytronics.co.uk/daisy", + "maintainer": "ghostseven", + "width": 4, + "height": 3, + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"", "x":0, "y":0}, + {"label":"", "x":3, "y":0}, + + {"label":"", "x":0, "y":1}, + {"label":"", "x":1, "y":1}, + {"label":"", "x":2, "y":1}, + {"label":"", "x":3, "y":1}, + + {"label":"", "x":0, "y":2}, + {"label":"", "x":1, "y":2}, + {"label":"", "x":2, "y":2}, + {"label":"", "x":3, "y":1, "h":2} + ] + } + } +} diff --git a/keyboards/draytronics/daisy/keymaps/default/keymap.c b/keyboards/draytronics/daisy/keymaps/default/keymap.c new file mode 100644 index 0000000000..396fcd9dd7 --- /dev/null +++ b/keyboards/draytronics/daisy/keymaps/default/keymap.c @@ -0,0 +1,51 @@ +/*Copyright 2021 Blake Drayson / Draytronics + +Contact info@draytronics.co.uk + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H +#define _BASE 0 // Base layer +#define _CODE 1 // Code layer + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_daisy( + KC_MUTE, KC_HOME, + MO(_CODE), KC_MPRV, KC_MNXT, KC_MPLY, + C(KC_LEFT), C(KC_UP), C(KC_DOWN), C(KC_RIGHT) + ), + [_CODE] = LAYOUT_daisy( + KC_MUTE, KC_END, + _______, RGB_MOD, RGB_VAI, RGB_TOG, + G(S(KC_5)), G(A(KC_ESC)), G(KC_F), RESET + ) +}; + +void encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + if (clockwise) { + tap_code(KC_VOLD); + } else { + tap_code(KC_VOLU); + } + } + else if (index == 1) { + if (clockwise) { + tap_code(KC_PGUP); + } else { + tap_code(KC_PGDN); + } + } +} diff --git a/keyboards/draytronics/daisy/readme.md b/keyboards/draytronics/daisy/readme.md new file mode 100644 index 0000000000..6e8dd007aa --- /dev/null +++ b/keyboards/draytronics/daisy/readme.md @@ -0,0 +1,20 @@ +# DAISY +![daisy](https://www.draytronics.co.uk/wp-content/uploads/2020/12/repository-open-graph-template-1.png) + +An open source macro pad with rotary encoders and under glow, designed to be easily built with (mostly) through hole components. More info / kits / PCB designs available at [draytronics.co.uk/daisy](https://www.draytronics.co.uk/daisy) + +* Keyboard Maintainer: [Blake Drayson](https://github.com/ghostseven) +* Hardware Supported: DAISY PCB / ATMega328P +* Hardware Availability: [draytronics.co.uk](https://draytronics.co.uk) + +Make example for this keyboard (after setting up your build environment): + + make draytronics/daisy:default + +Flashing example for this keyboard: + + make draytronics/daisy:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +VIA design config file avaliable [here](https://www.draytronics.co.uk/f_daisy/draytronics_daisy_via_config.json) diff --git a/keyboards/draytronics/daisy/rules.mk b/keyboards/draytronics/daisy/rules.mk new file mode 100644 index 0000000000..f826ee6187 --- /dev/null +++ b/keyboards/draytronics/daisy/rules.mk @@ -0,0 +1,23 @@ +# MCU name +MCU = atmega328p + +# Bootloader selection +BOOTLOADER = USBasp + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +ENCODER_ENABLE = yes # Rotary encoder support diff --git a/keyboards/draytronics/scarlet/readme.md b/keyboards/draytronics/scarlet/readme.md index 4a548ec8d6..a1ba2e330f 100644 --- a/keyboards/draytronics/scarlet/readme.md +++ b/keyboards/draytronics/scarlet/readme.md @@ -2,11 +2,11 @@ ![scarlet](https://www.draytronics.co.uk/wp-content/uploads/2020/10/Scarlet-PCB-Compared-Combined.png) -A open source 17 key numpad keyboard, designed to be easily built at home with through hole components. More info / kits / PCB designs available at [draytronics.co.uk/scarlet](draytronics.co.uk) +A open source 17 key numpad keyboard, designed to be easily built at home with through hole components. More info / kits / PCB designs available at [draytronics.co.uk/scarlet](https://draytronics.co.uk) * Keyboard Maintainer: [Blake Drayson](https://github.com/ghostseven) * Hardware Supported: SCARLET PCB / ATMega32A -* Hardware Availability: [draytronics.co.uk](draytronics.co.uk) +* Hardware Availability: [draytronics.co.uk](https://draytronics.co.uk) Make example for this keyboard (after setting up your build environment): From 2cd684f8e0385d97f09a2d08cd9c5f8b2e77845a Mon Sep 17 00:00:00 2001 From: Matt W Date: Thu, 25 Mar 2021 04:55:01 -0700 Subject: [PATCH 133/613] add massdrop/alt/hlmtre keymap, add .exe to gitignore (#12191) * add massdrop/alt/hlmtre keymap, add .exe to gitignore * changes request in PR (license header and fix gitignore) Co-authored-by: Matt Weller --- .../massdrop/alt/keymaps/hlmtre/keymap.c | 131 ++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100644 keyboards/massdrop/alt/keymaps/hlmtre/keymap.c diff --git a/keyboards/massdrop/alt/keymaps/hlmtre/keymap.c b/keyboards/massdrop/alt/keymaps/hlmtre/keymap.c new file mode 100644 index 0000000000..5c2111ccd2 --- /dev/null +++ b/keyboards/massdrop/alt/keymaps/hlmtre/keymap.c @@ -0,0 +1,131 @@ +/* Copyright 2021 hlmtre + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum alt_keycodes { + U_T_AUTO = SAFE_RANGE, //USB Extra Port Toggle Auto Detect / Always Active + U_T_AGCR, //USB Toggle Automatic GCR control + DBG_TOG, //DEBUG Toggle On / Off + DBG_MTRX, //DEBUG Toggle Matrix Prints + DBG_KBD, //DEBUG Toggle Keyboard Prints + DBG_MOU, //DEBUG Toggle Mouse Prints + MD_BOOT, //Restart into bootloader after hold timeout +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_ansi_blocker( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME, \ + MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, \ + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT \ + ), + [1] = LAYOUT_65_ansi_blocker( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_MUTE, \ + _______, RGB_SPD, RGB_VAI, RGB_SPI, RGB_HUI, RGB_SAI, _______, U_T_AUTO, KC_INS, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, KC_END, \ + _______, RGB_RMOD,RGB_VAD, RGB_MOD, RGB_HUD, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, \ + _______, RGB_TOG, _______, _______, _______, MD_BOOT, NK_TOGG, DBG_TOG, _______, _______, _______, _______, KC_VOLU, KC_VOLD, \ + _______, _______, _______, KC_MPLY, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT \ + ), + /* + [X] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______ \ + ), + */ +}; + +#define MODS_SHIFT (get_mods() & MOD_BIT(KC_LSHIFT) || get_mods() & MOD_BIT(KC_RSHIFT)) +#define MODS_CTRL (get_mods() & MOD_BIT(KC_LCTL) || get_mods() & MOD_BIT(KC_RCTRL)) +#define MODS_ALT (get_mods() & MOD_BIT(KC_LALT) || get_mods() & MOD_BIT(KC_RALT)) + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + static uint32_t key_timer; + + switch (keycode) { + case U_T_AUTO: + if (record->event.pressed && MODS_SHIFT && MODS_CTRL) { + TOGGLE_FLAG_AND_PRINT(usb_extra_manual, "USB extra port manual mode"); + } + return false; + case U_T_AGCR: + if (record->event.pressed && MODS_SHIFT && MODS_CTRL) { + TOGGLE_FLAG_AND_PRINT(usb_gcr_auto, "USB GCR auto mode"); + } + return false; + case DBG_TOG: + if (record->event.pressed) { + TOGGLE_FLAG_AND_PRINT(debug_enable, "Debug mode"); + } + return false; + case DBG_MTRX: + if (record->event.pressed) { + TOGGLE_FLAG_AND_PRINT(debug_matrix, "Debug matrix"); + } + return false; + case DBG_KBD: + if (record->event.pressed) { + TOGGLE_FLAG_AND_PRINT(debug_keyboard, "Debug keyboard"); + } + return false; + case DBG_MOU: + if (record->event.pressed) { + TOGGLE_FLAG_AND_PRINT(debug_mouse, "Debug mouse"); + } + return false; + case MD_BOOT: + if (record->event.pressed) { + key_timer = timer_read32(); + } else { + if (timer_elapsed32(key_timer) >= 500) { + reset_keyboard(); + } + } + return false; + case RGB_TOG: + if (record->event.pressed) { + switch (rgb_matrix_get_flags()) { + case LED_FLAG_ALL: { + rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR); + rgb_matrix_set_color_all(0, 0, 0); + } + break; + case (LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR): { + rgb_matrix_set_flags(LED_FLAG_UNDERGLOW); + rgb_matrix_set_color_all(0, 0, 0); + } + break; + case LED_FLAG_UNDERGLOW: { + rgb_matrix_set_flags(LED_FLAG_NONE); + rgb_matrix_disable_noeeprom(); + } + break; + default: { + rgb_matrix_set_flags(LED_FLAG_ALL); + rgb_matrix_enable_noeeprom(); + } + break; + } + } + return false; + default: + return true; //Process all other keycodes normally + } +} From 29c82cfb33bda7fecc58fa9eadfe56bd10af2c56 Mon Sep 17 00:00:00 2001 From: Albert Y <76888457+filterpaper@users.noreply.github.com> Date: Thu, 25 Mar 2021 20:01:03 +0800 Subject: [PATCH 134/613] Add RGB Matrix suspend wake functions to BM40 (#12246) * Add suspend wake functions for RGB Matrix * Add suspension RGB functions to Planck/rev6 and Preonic/rev3 * Add suspend wake to Mark 65 * Revert changes to planck and preonic * Remove changes to The Mark65 Co-authored-by: filterpaper --- keyboards/bm40hsrgb/bm40hsrgb.c | 11 +++++++++++ keyboards/bm40hsrgb/config.h | 3 +++ 2 files changed, 14 insertions(+) diff --git a/keyboards/bm40hsrgb/bm40hsrgb.c b/keyboards/bm40hsrgb/bm40hsrgb.c index a44263a8b8..a0ba84db3c 100755 --- a/keyboards/bm40hsrgb/bm40hsrgb.c +++ b/keyboards/bm40hsrgb/bm40hsrgb.c @@ -39,4 +39,15 @@ led_config_t g_led_config = { 2, 2, 2, 2, 2, 2 } }; + + +void suspend_power_down_kb(void) { + rgb_matrix_set_suspend_state(true); + suspend_power_down_user(); +} + +void suspend_wakeup_init_kb(void) { + rgb_matrix_set_suspend_state(false); + suspend_wakeup_init_user(); +} #endif diff --git a/keyboards/bm40hsrgb/config.h b/keyboards/bm40hsrgb/config.h index 5c1ee06212..84d0950d59 100755 --- a/keyboards/bm40hsrgb/config.h +++ b/keyboards/bm40hsrgb/config.h @@ -50,3 +50,6 @@ #ifdef RGB_DI_PIN #define RGB_MATRIX_KEYPRESSES // reacts to keypresses #endif +#ifdef RGB_MATRIX_ENABLE +# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended +#endif From b5a12fa6d35b0304c457569854f2e7ff8a2200f1 Mon Sep 17 00:00:00 2001 From: Leon Anavi Date: Thu, 25 Mar 2021 14:01:45 +0200 Subject: [PATCH 135/613] [Keymap] ANAVI Macro Pad 2 add git keymap (#12212) This keymap for ANAVI Macro Pad 2 contains popular git commands typed out and executed with a single key: - left key: git commit -s - right key: git push Signed-off-by: Leon Anavi --- .../anavi/macropad2/keymaps/git/keymap.c | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 keyboards/anavi/macropad2/keymaps/git/keymap.c diff --git a/keyboards/anavi/macropad2/keymaps/git/keymap.c b/keyboards/anavi/macropad2/keymaps/git/keymap.c new file mode 100644 index 0000000000..8580af195f --- /dev/null +++ b/keyboards/anavi/macropad2/keymaps/git/keymap.c @@ -0,0 +1,48 @@ +/* Copyright 2021 Leon Anavi + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum custom_keycodes { + GITCOMMIT = SAFE_RANGE, + GITPUSH +}; + +void keyboard_post_init_user(void) { + // Set backlight to the maximum brightness + backlight_level(2); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case GITCOMMIT: + if (record->event.pressed) { + SEND_STRING("git commit -s\n"); + } + break; + case GITPUSH: + if (record->event.pressed) { + SEND_STRING("git push\n"); + } + } + return true; +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + GITCOMMIT, GITPUSH + ) +}; From 81c51ec51cd0059ebe88af62184216125cb8a585 Mon Sep 17 00:00:00 2001 From: Takeshi ISHII <2170248+mtei@users.noreply.github.com> Date: Thu, 25 Mar 2021 21:02:54 +0900 Subject: [PATCH 136/613] [Keymap] Update keyboards/helix/pico/keymaps/mtei/keymap.c (#12188) * update keyboards/helix/pico/keymaps/mtei/keymap.c Stopped using the LAYOUT_kc macro. (this is response to #12160) There is no change in the generated binary. * small update pico/keymaps/mtei/keymap.c --- keyboards/helix/pico/keymaps/mtei/keymap.c | 233 ++++++++++++--------- 1 file changed, 132 insertions(+), 101 deletions(-) diff --git a/keyboards/helix/pico/keymaps/mtei/keymap.c b/keyboards/helix/pico/keymaps/mtei/keymap.c index 27bf062433..728ef0eb5f 100644 --- a/keyboards/helix/pico/keymaps/mtei/keymap.c +++ b/keyboards/helix/pico/keymaps/mtei/keymap.c @@ -14,6 +14,9 @@ #include #endif +#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__) +#define kc5(a,b,c,d,e) KC_##a, KC_##b, KC_##c, KC_##d, KC_##e + extern keymap_config_t keymap_config; #ifdef RGBLIGHT_ENABLE @@ -46,43 +49,33 @@ enum custom_keycodes { EUCALYN, NUML, NUMR, - KC_xEISU, - KC_xKANA, - KC_ZERO2, + xEISU, + xKANA, + ZERO2, RGBRST }; +// clang-format off + //Macros -#define KC_LOWER MO(_LOWER) -#define KC_NUML LT(_NUML,KC_SPC) -#define KC_NUMR LT(_NUMR,KC_SPC) -#define KC_RABS LT(_RAISE,KC_BSPC) -#define KC_RAEN LT(_RAISE,KC_ENT) -#define KC_____ _______ -#define KC_XXXX XXXXXXX -#define KC_ADJ MO(_ADJUST) -#define KC_LSMI LSFT(KC_MINS) -#define KC_LSEQ LSFT(KC_EQL) -#define KC_LSRB LSFT(KC_RBRC) -#define KC_LSLB LSFT(KC_LBRC) -#define KC_LSGR LSFT(KC_GRV) -#define KC_LSQT LSFT(KC_QUOT) +#define LT_NUML_SP LT(_NUML,KC_SPC) +#define LT_NUMR_SP LT(_NUMR,KC_SPC) +#define LT_RA_BSPC LT(_RAISE,KC_BSPC) +#define LT_RA_ENT LT(_RAISE,KC_ENT) #define ___ _______ -#define KC_S0 LSFT(KC_0) -#define KC_S1 LSFT(KC_1) -#define KC_S2 LSFT(KC_2) -#define KC_S3 LSFT(KC_3) -#define KC_S4 LSFT(KC_4) -#define KC_S5 LSFT(KC_5) -#define KC_S6 LSFT(KC_6) -#define KC_S7 LSFT(KC_7) -#define KC_S8 LSFT(KC_8) -#define KC_S9 LSFT(KC_9) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Qwerty - * ,-----------------------------------------. ,-----------------------------------------. + /* Qwerty */ +#define Q_____W_____E_____R_____T kc5( Q, W, E, R, T ) +#define Y_____U_____I_____O_____P kc5( Y, U, I, O, P ) +#define A_____S_____D_____F_____G kc5( A, S, D, F, G ) +#define H_____J_____K_____L__SCLN kc5( H, J, K, L, SCLN ) +#define Z_____X_____C_____V_____B kc5( Z, X, C, V, B ) +#define N_____M__COMM___DOT__SLSH kc5( N, M, COMM, DOT, SLSH ) +#define LOWER___LOWER__CAPS__LALT__LGUI__NUML__RABS MO(_LOWER), MO(_LOWER), KC_CAPS, KC_LALT, KC_LGUI, LT_NUML_SP, LT_RA_BSPC +#define RAEN_NUMR__RGUI__RALT___APP_LOWER__LOWER LT_RA_ENT, LT_NUMR_SP, KC_RGUI, KC_RALT, KC_APP, MO(_LOWER), MO(_LOWER) + /* ,-----------------------------------------. ,-----------------------------------------. * | ESC | Q | W | E | R | T | | Y | U | I | O | P | \ | * |------+------+------+------+------+------| |------+------+------+------+------+------| * | Ctrl | A | S | D | F | G | | H | J | K | L | ; | Ctrl | @@ -92,15 +85,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |Lower | Lower| Caps | Alt | GUI | Space| BS | Enter| Space| GUI | Alt | Menu |Lower |Lower | * `-------------------------------------------------------------------------------------------------' */ - [_QWERTY] = LAYOUT_kc( \ - ESC, Q, W, E, R, T, Y, U, I, O, P, BSLS, \ - LCTL, A, S, D, F, G, H, J, K, L, SCLN, RCTL, \ - LSFT, Z, X, C, V, B, N, M, COMM, DOT, SLSH, RSFT, \ - LOWER,LOWER, CAPS, LALT, LGUI,NUML, RABS, RAEN,NUMR, RGUI, RALT, APP,LOWER, LOWER \ - ), + [_QWERTY] = LAYOUT_wrapper( + KC_ESC, Q_____W_____E_____R_____T, Y_____U_____I_____O_____P, KC_BSLS, + KC_LCTL, A_____S_____D_____F_____G, H_____J_____K_____L__SCLN, KC_RCTL, + KC_LSFT, Z_____X_____C_____V_____B, N_____M__COMM___DOT__SLSH, KC_RSFT, + LOWER___LOWER__CAPS__LALT__LGUI__NUML__RABS, RAEN_NUMR__RGUI__RALT___APP_LOWER__LOWER + ), - /* Colemak - * ,-----------------------------------------. ,-----------------------------------------. + /* Colemak */ +#define Q_____W_____F_____P_____G kc5( Q, W, F, P, G ) +#define J_____L_____U_____Y__SCLN kc5( J, L, U, Y, SCLN ) +#define A_____R_____S_____T_____D kc5( A, R, S, T, D ) +#define H_____N_____E_____I_____O kc5( H, N, E, I, O ) +#define K_____M__COMM___DOT__SLSH kc5( K, M, COMM, DOT, SLSH ) + /* ,-----------------------------------------. ,-----------------------------------------. * | ESC | Q | W | F | P | G | | J | L | U | Y | ; | \ | * |------+------+------+------+------+------| |------+------+------+------+------+------| * | Ctrl | A | R | S | T | D | | H | N | E | I | O | Ctrl | @@ -110,15 +108,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |Lower | Lower| Caps | Alt | GUI | Space| BS | Enter| Space| GUI | Alt | Menu |Lower |Lower | * `-------------------------------------------------------------------------------------------------' */ - [_COLEMAK] = LAYOUT_kc( \ - ESC, Q, W, F, P, G, J, L, U, Y, SCLN, BSLS, \ - LCTL, A, R, S, T, D, H, N, E, I, O, RCTL, \ - LSFT, Z, X, C, V, B, K, M, COMM, DOT, SLSH, RSFT, \ - LOWER,LOWER, CAPS, LALT, LGUI,NUML, RABS, RAEN,NUMR, RGUI, RALT, APP,LOWER, LOWER \ - ), + [_COLEMAK] = LAYOUT_wrapper( + KC_ESC, Q_____W_____F_____P_____G, J_____L_____U_____Y__SCLN, KC_BSLS, + KC_LCTL, A_____R_____S_____T_____D, H_____N_____E_____I_____O, KC_RCTL, + KC_LSFT, Z_____X_____C_____V_____B, K_____M__COMM___DOT__SLSH, KC_RSFT, + LOWER___LOWER__CAPS__LALT__LGUI__NUML__RABS, RAEN_NUMR__RGUI__RALT___APP_LOWER__LOWER + ), - /* Dvorak - * ,-----------------------------------------. ,-----------------------------------------. + /* Dvorak */ +#define QUOT__COMM___DOT_____P_____Y kc5( QUOT, COMM, DOT, P, Y ) +#define F_____G_____C_____R_____L kc5( F, G, C, R, L ) +#define A_____O_____E_____U_____I kc5( A, O, E, U, I ) +#define D_____H_____T_____N_____S kc5( D, H, T, N, S ) +#define SCLN_____Q_____J_____K_____X kc5( SCLN, Q, J, K, X ) +#define B_____M_____W_____V_____Z kc5( B, M, W, V, Z ) + /* ,-----------------------------------------. ,-----------------------------------------. * | ESC | ' | , | . | P | Y | | F | G | C | R | L | \ | * |------+------+------+------+------+------| |------+------+------+------+------+------| * | Ctrl | A | O | E | U | I | | D | H | T | N | S | Ctrl | @@ -128,15 +132,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |Lower | Lower| Caps | Alt | GUI | Space| BS | Enter| Space| GUI | Alt | Menu |Lower |Lower | * `-------------------------------------------------------------------------------------------------' */ - [_DVORAK] = LAYOUT_kc( \ - ESC, QUOT, COMM, DOT, P, Y, F, G, C, R, L, BSLS, \ - LCTL, A, O, E, U, I, D, H, T, N, S, RCTL, \ - LSFT, SCLN, Q, J, K, X, B, M, W, V, Z, RSFT, \ - LOWER,LOWER, CAPS, LALT, LGUI,NUML, RABS, RAEN,NUMR, RGUI, RALT, APP,LOWER, LOWER \ - ), + [_DVORAK] = LAYOUT_wrapper( + KC_ESC, QUOT__COMM___DOT_____P_____Y, F_____G_____C_____R_____L, KC_BSLS, + KC_LCTL, A_____O_____E_____U_____I, D_____H_____T_____N_____S, KC_RCTL, + KC_LSFT, SCLN_____Q_____J_____K_____X, B_____M_____W_____V_____Z, KC_RSFT, + LOWER___LOWER__CAPS__LALT__LGUI__NUML__RABS, RAEN_NUMR__RGUI__RALT___APP_LOWER__LOWER + ), - /* Eucalyn (http://eucalyn.hatenadiary.jp/entry/about-eucalyn-layout) - * ,-----------------------------------------. ,-----------------------------------------. + /* Eucalyn (http://eucalyn.hatenadiary.jp/entry/about-eucalyn-layout) */ +#define Q_____W__COMM___DOT__SCLN kc5( Q, W, COMM, DOT, SCLN ) +#define M_____R_____D_____Y_____P kc5( M, R, D, Y, P ) +#define A_____O_____E_____I_____U kc5( A, O, E, I, U ) +#define G_____T_____K_____S_____N kc5( G, T, K, S, N ) +#define Z_____X_____C_____V_____F kc5( Z, X, C, V, F ) +#define B_____H_____J_____L__SLSH kc5( B, H, J, L, SLSH ) + /* ,-----------------------------------------. ,-----------------------------------------. * | ESC | Q | W | , | . | ; | | M | R | D | Y | P | \ | * |------+------+------+------+------+------| |------+------+------+------+------+------| * | Ctrl | A | O | E | I | U | | G | T | K | S | N | Ctrl | @@ -146,15 +156,24 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |Lower | Lower| Caps | Alt | GUI | Space| BS | Enter| Space| GUI | Alt | Menu |Lower |Lower | * `-------------------------------------------------------------------------------------------------' */ - [_EUCALYN] = LAYOUT_kc( \ - ESC, Q, W, COMM, DOT, SCLN, M, R, D, Y, P, BSLS, \ - LCTL, A, O, E, I, U, G, T, K, S, N, RCTL, \ - LSFT, Z, X, C, V, F, B, H, J, L, SLSH, RSFT, \ - LOWER,LOWER, CAPS, LALT, LGUI,NUML, RABS, RAEN,NUMR, RGUI, RALT, APP,LOWER, LOWER \ - ), + [_EUCALYN] = LAYOUT_wrapper( + KC_ESC, Q_____W__COMM___DOT__SCLN, M_____R_____D_____Y_____P, KC_BSLS, + KC_LCTL, A_____O_____E_____I_____U, G_____T_____K_____S_____N, KC_RCTL, + KC_LSFT, Z_____X_____C_____V_____F, B_____H_____J_____L__SLSH, KC_RSFT, + LOWER___LOWER__CAPS__LALT__LGUI__NUML__RABS, RAEN_NUMR__RGUI__RALT___APP_LOWER__LOWER + ), - /* Num - * ,-----------------------------------------. ,-----------------------------------------. + /* Num */ +#define EXLM__AT__HASH___DLR__PERC kc5( EXLM, AT, HASH, DLR, PERC ) +#define CIRC_AMPR_ASTR__LPRN__RPRN kc5( CIRC, AMPR, ASTR, LPRN, RPRN ) +#define _1_____2_____3_____4_____5 kc5( 1, 2, 3, 4, 5 ) +#define _6_____7_____8_____9_____0 kc5( 6, 7, 8, 9, 0 ) +#define F1____F2____F3____F4____F5 kc5( F1, F2, F3, F4, F5 ) +#define F6____F7____F8____F9___F10 kc5( F6, F7, F8, F9, F10 ) +#define ____z_____z_____z_____z _______, _______, _______, _______ +#define ____z_____z_____z _______, _______, _______ +#define ____z_____z _______, _______ + /* ,-----------------------------------------. ,-----------------------------------------. * | | ! | @ | # | $ | % | | ^ | & | * | ( | ) | | * |------+------+------+------+------+------| |------+------+------+------+------+------| * | | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | F12 | @@ -164,40 +183,53 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | | | | | | | * `-------------------------------------------------------------------------------------------------' */ - [_NUML] = LAYOUT_kc( \ - ____, S1, S2, S3, S4, S5, S6, S7, S8, S9, S0, ____, \ - ____, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, F12, \ - ____, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, \ - ____, ____, ____, ____, ____, ____, ____, ____, SPC, ____, ____, ____, ____, ____ \ - ), - - [_NUMR] = LAYOUT_kc( \ - ____, S1, S2, S3, S4, S5, S6, S7, S8, S9, S0, ____, \ - ____, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, F12, \ - ____, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, \ - ____, ____, ____, ____, ____, SPC, ____, ____, ____, ____, ____, ____, ____, ____ \ - ), - - /* Lower - * ,-----------------------------------------. ,-----------------------------------------. + [_NUML] = LAYOUT_wrapper( + _______, EXLM__AT__HASH___DLR__PERC, CIRC_AMPR_ASTR__LPRN__RPRN, _______, + _______, _1_____2_____3_____4_____5, _6_____7_____8_____9_____0, KC_F12, + _______, F1____F2____F3____F4____F5, F6____F7____F8____F9___F10, KC_F11, + _______, ____z_____z_____z_____z,____z_____z_____z,KC_SPC, ____z_____z_____z_____z, _______ + ), + [_NUMR] = LAYOUT_wrapper( + _______, EXLM__AT__HASH___DLR__PERC, CIRC_AMPR_ASTR__LPRN__RPRN, _______, + _______, _1_____2_____3_____4_____5, _6_____7_____8_____9_____0, KC_F12, + _______, F1____F2____F3____F4____F5, F6____F7____F8____F9___F10, KC_F11, + _______, ____z_____z_____z_____z,KC_SPC, ____z_____z_____z,____z_____z_____z_____z, _______ + ), + /* Lower */ +#define XXXX__PAUS__SLCK___INS__XXXX XXXXXXX, KC_PAUS, KC_SLCK, KC_INS, XXXXXXX +#define XXXX___INS__SLCK__PAUS__XXXX XXXXXXX, KC_INS, KC_SLCK, KC_PAUS, XXXXXXX +#define HOME__XXXX____UP___DEL__PGUP KC_HOME, XXXXXXX, KC_UP, KC_DEL, KC_PGUP +#define PGUP___DEL____UP__XXXX__HOME KC_PGUP, KC_DEL, KC_UP, XXXXXXX, KC_HOME +#define END___LEFT__DOWN__RGHT__PGDN kc5( END, LEFT, DOWN, RGHT, PGDN ) +#define PGDN__LEFT__DOWN__RGHT___END kc5( PGDN, LEFT, DOWN, RGHT, END ) +#define ______PSCR__________________ _______, KC_PSCR, _______, _______, _______ +#define __________________PSCR______ _______, _______, _______, KC_PSCR, _______ +#define ADJ___ADJ MO(_ADJUST), MO(_ADJUST) + /* ,-----------------------------------------. ,-----------------------------------------. * | | |Pause | ScrLk| Ins | | | | Ins | ScrLk|Pause | | | * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | PgUp | | Up |Delete| Home | | Home |Delete| Up | | PgUp | | + * | | Home | | Up |Delete| PgUp | | PgUp |Delete| Up | | Home | | * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | PgDn | Left | Down | Right| End | | End | Left | Down | Right| PgDn | | + * | | End | Left | Down | Right| PgDn | | PgDn | Left | Down | Right| End | | * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| * | | | PrtSc| | | |Adjust|Adjust| | | | PrtSc| | | * `-------------------------------------------------------------------------------------------------' */ - [_LOWER] = LAYOUT_kc( \ - XXXX, XXXX, PAUS, SLCK, INS, XXXX, XXXX, INS, SLCK, PAUS, XXXX, ____, \ - ____, HOME, XXXX, UP, DEL, PGUP, PGUP, DEL, UP, XXXX, HOME, ____, \ - ____, END, LEFT, DOWN, RGHT, PGDN, PGDN, LEFT, DOWN, RGHT, END, ____, \ - ____, ____, PSCR, ____, ____, ____, ADJ, ADJ, ____, ____, ____, PSCR, ____, ____ \ - ), - - /* Raise - * ,-----------------------------------------. ,-----------------------------------------. + [_LOWER] = LAYOUT_wrapper( + XXXXXXX, XXXX__PAUS__SLCK___INS__XXXX, XXXX___INS__SLCK__PAUS__XXXX, _______, + _______, HOME__XXXX____UP___DEL__PGUP, PGUP___DEL____UP__XXXX__HOME, _______, + _______, END___LEFT__DOWN__RGHT__PGDN, PGDN__LEFT__DOWN__RGHT___END, _______, + _______, ______PSCR__________________, ADJ___ADJ, __________________PSCR______, _______ + ), + /* Raise */ +#define XXXX__XXXX__XXXX__UNDS__MINS XXXXXXX, XXXXXXX, XXXXXXX, KC_UNDS, KC_MINS +#define EQL__PLUS__XXXX__XXXX__XXXX KC_EQL, KC_PLUS, XXXXXXX, XXXXXXX, XXXXXXX +#define XXXX__XXXX__XXXX__LCBR__LBRC XXXXXXX, XXXXXXX, XXXXXXX, KC_LCBR, KC_LBRC +#define RBRC__RCBR__XXXX__XXXX__XXXX KC_RBRC, KC_RCBR, XXXXXXX, XXXXXXX, XXXXXXX +#define XXXX__XXXX__XXXX__TILD___GRV XXXXXXX, XXXXXXX, XXXXXXX, KC_TILD, KC_GRV +#define QUOT___DQT__XXXX__XXXX__XXXX KC_QUOT, KC_DQT, XXXXXXX, XXXXXXX, XXXXXXX +#define XXXX______________XXXX XXXXXXX, _______, _______, XXXXXXX + /* ,-----------------------------------------. ,-----------------------------------------. * | TAB | | | | _ | - | | = | + | | | | | * |------+------+------+------+------+------| |------+------+------+------+------+------| * | EISU | | | | { | [ | | ] | } | | | | KANA | @@ -207,13 +239,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | | | | | | | * `-------------------------------------------------------------------------------------------------' */ - [_RAISE] = LAYOUT_kc( \ - TAB, XXXX, XXXX, XXXX, LSMI, MINS, EQL, LSEQ, XXXX, XXXX, XXXX, XXXX, \ - xEISU, XXXX, XXXX, XXXX, LSLB, LBRC, RBRC, LSRB, XXXX, XXXX, XXXX, xKANA, \ - XXXX, XXXX, XXXX, XXXX, LSGR, GRV, QUOT, LSQT, XXXX, XXXX, XXXX, XXXX, \ - ADJ, ADJ, XXXX, ____, ____, XXXX, ____, ____, XXXX, ____, ____, XXXX, ADJ, ADJ \ - ), - + [_RAISE] = LAYOUT_wrapper( + KC_TAB, XXXX__XXXX__XXXX__UNDS__MINS, EQL__PLUS__XXXX__XXXX__XXXX, XXXXXXX, + xEISU, XXXX__XXXX__XXXX__LCBR__LBRC, RBRC__RCBR__XXXX__XXXX__XXXX, xKANA, + XXXXXXX, XXXX__XXXX__XXXX__TILD___GRV, QUOT___DQT__XXXX__XXXX__XXXX, XXXXXXX, + ADJ___ADJ, XXXX______________XXXX, ____z_____z, XXXX______________XXXX, ADJ___ADJ + ), /* Adjust (Lower + Raise) * ,-----------------------------------------. ,-----------------------------------------. * | | Reset|RGBRST|RGB ON|Aud on| Win | | Win | |Qwerty|Euclyn|Colemk|Dvorak| @@ -226,10 +257,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-------------------------------------------------------------------------------------------------' */ [_ADJUST] = LAYOUT( \ - XXXXXXX, RESET, RGBRST, RGB_TOG, AU_ON, AG_SWAP, AG_SWAP, XXXXXXX, QWERTY, EUCALYN, COLEMAK, DVORAK, \ - RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, AU_OFF, AG_NORM, AG_NORM, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ - RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ - _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, ___,___, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______ \ + XXXXXXX, RESET, RGBRST, RGB_TOG, AU_ON, AG_SWAP, AG_SWAP, XXXXXXX, QWERTY, EUCALYN, COLEMAK, DVORAK, \ + RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, AU_OFF, AG_NORM, AG_NORM, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ + RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ + _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, ___,___, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______ \ ) }; @@ -302,7 +333,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return false; break; - case KC_xEISU: + case xEISU: if (record->event.pressed) { if(keymap_config.swap_lalt_lgui==false){ register_code(KC_LANG2); @@ -314,7 +345,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return false; break; - case KC_xKANA: + case xKANA: if (record->event.pressed) { if(keymap_config.swap_lalt_lgui==false){ register_code(KC_LANG1); From f3f444c1df58f85c3720f98eeda3641bc8eddc59 Mon Sep 17 00:00:00 2001 From: Sendy Aditya Suryana Date: Thu, 25 Mar 2021 19:04:02 +0700 Subject: [PATCH 137/613] Add Nix Studio OXALYS80 Keyboard (#12118) * Initial commit of OXALYS80 firmware * Remove comments * Add new return in info.json * Fix pin output init for scroll lock indicator * Update keyboards/nix_studio/oxalys80/config.h Co-authored-by: Drashna Jaelre * Update keyboards/nix_studio/oxalys80/rules.mk Co-authored-by: Drashna Jaelre * Update keyboards/nix_studio/oxalys80/oxalys80.c Co-authored-by: Drashna Jaelre * Update keyboards/nix_studio/oxalys80/keymaps/default/keymap.c Co-authored-by: Drashna Jaelre * Update keyboards/nix_studio/oxalys80/config.h Co-authored-by: Drashna Jaelre * Update keyboards/nix_studio/oxalys80/config.h Co-authored-by: Drashna Jaelre * Update keyboards/nix_studio/oxalys80/config.h Co-authored-by: Drashna Jaelre * Delete keymaps config.h * Update keyboards/nix_studio/oxalys80/config.h Co-authored-by: Sendy Aditya Suryana Co-authored-by: Drashna Jaelre --- keyboards/nix_studio/oxalys80/config.h | 80 + keyboards/nix_studio/oxalys80/info.json | 1365 +++++++++++++++++ .../oxalys80/keymaps/default/keymap.c | 36 + .../oxalys80/keymaps/default/readme.md | 1 + .../nix_studio/oxalys80/keymaps/via/keymap.c | 52 + .../nix_studio/oxalys80/keymaps/via/readme.md | 1 + .../nix_studio/oxalys80/keymaps/via/rules.mk | 1 + keyboards/nix_studio/oxalys80/oxalys80.c | 26 + keyboards/nix_studio/oxalys80/oxalys80.h | 45 + keyboards/nix_studio/oxalys80/readme.md | 43 + keyboards/nix_studio/oxalys80/rules.mk | 23 + 11 files changed, 1673 insertions(+) create mode 100644 keyboards/nix_studio/oxalys80/config.h create mode 100644 keyboards/nix_studio/oxalys80/info.json create mode 100644 keyboards/nix_studio/oxalys80/keymaps/default/keymap.c create mode 100644 keyboards/nix_studio/oxalys80/keymaps/default/readme.md create mode 100644 keyboards/nix_studio/oxalys80/keymaps/via/keymap.c create mode 100644 keyboards/nix_studio/oxalys80/keymaps/via/readme.md create mode 100644 keyboards/nix_studio/oxalys80/keymaps/via/rules.mk create mode 100644 keyboards/nix_studio/oxalys80/oxalys80.c create mode 100644 keyboards/nix_studio/oxalys80/oxalys80.h create mode 100644 keyboards/nix_studio/oxalys80/readme.md create mode 100644 keyboards/nix_studio/oxalys80/rules.mk diff --git a/keyboards/nix_studio/oxalys80/config.h b/keyboards/nix_studio/oxalys80/config.h new file mode 100644 index 0000000000..acd39ad528 --- /dev/null +++ b/keyboards/nix_studio/oxalys80/config.h @@ -0,0 +1,80 @@ +/* Copyright 2021 Nix Studio + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x6E78 +#define PRODUCT_ID 0x3830 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Nix Studio +#define PRODUCT OXALYS80 + + +/* key matrix size */ +#define MATRIX_ROWS 12 +#define MATRIX_COLS 9 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +#define MATRIX_ROW_PINS { C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, D1, D0 } +#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, B0, B1 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +#define BACKLIGHT_PIN B7 +// #define BACKLIGHT_BREATHING +#define BACKLIGHT_LEVELS 3 + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +#define RGB_DI_PIN B3 +#ifdef RGB_DI_PIN +#define RGBLIGHT_ANIMATIONS +#define RGBLED_NUM 24 +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 +#define RGBLIGHT_LIMIT_VAL 200 +#define RGBLIGHT_SLEEP // RGB will turn off when PC is put to sleep +#endif + +#define LED_CAPS_LOCK_PIN E6 +#define LED_SCROLL_LOCK_PIN B2 +#define LED_PIN_ON_STATE 0 diff --git a/keyboards/nix_studio/oxalys80/info.json b/keyboards/nix_studio/oxalys80/info.json new file mode 100644 index 0000000000..78bff3eef2 --- /dev/null +++ b/keyboards/nix_studio/oxalys80/info.json @@ -0,0 +1,1365 @@ +{ + "keyboard_name": "oxalys80", + "url": "", + "maintainer": "Nix Studio", + "width": 18.25, + "height": 6.5, + "layouts": { + "LAYOUT_all": { + "layout": [ + { + "label": "Esc", + "x": 0, + "y": 0 + }, + { + "label": "F1", + "x": 2, + "y": 0 + }, + { + "label": "F2", + "x": 3, + "y": 0 + }, + { + "label": "F3", + "x": 4, + "y": 0 + }, + { + "label": "F4", + "x": 5, + "y": 0 + }, + { + "label": "F5", + "x": 6.5, + "y": 0 + }, + { + "label": "F6", + "x": 7.5, + "y": 0 + }, + { + "label": "F7", + "x": 8.5, + "y": 0 + }, + { + "label": "F8", + "x": 9.5, + "y": 0 + }, + { + "label": "F9", + "x": 11, + "y": 0 + }, + { + "label": "F10", + "x": 12, + "y": 0 + }, + { + "label": "F11", + "x": 13, + "y": 0 + }, + { + "label": "F12", + "x": 14, + "y": 0 + }, + { + "label": "PrtSc", + "x": 15.25, + "y": 0 + }, + { + "label": "Scroll Lock", + "x": 16.25, + "y": 0 + }, + { + "label": "Pause", + "x": 17.25, + "y": 0 + }, + { + "label": "~", + "x": 0, + "y": 1.5 + }, + { + "label": "!", + "x": 1, + "y": 1.5 + }, + { + "label": "@", + "x": 2, + "y": 1.5 + }, + { + "label": "#", + "x": 3, + "y": 1.5 + }, + { + "label": "$", + "x": 4, + "y": 1.5 + }, + { + "label": "%", + "x": 5, + "y": 1.5 + }, + { + "label": "^", + "x": 6, + "y": 1.5 + }, + { + "label": "&", + "x": 7, + "y": 1.5 + }, + { + "label": "*", + "x": 8, + "y": 1.5 + }, + { + "label": "(", + "x": 9, + "y": 1.5 + }, + { + "label": ")", + "x": 10, + "y": 1.5 + }, + { + "label": "_", + "x": 11, + "y": 1.5 + }, + { + "label": "+", + "x": 12, + "y": 1.5 + }, + { + "x": 13, + "y": 1.5 + }, + { + "label": "Bksp", + "x": 14, + "y": 1.5 + }, + { + "label": "Insert", + "x": 15.25, + "y": 1.5 + }, + { + "label": "Home", + "x": 16.25, + "y": 1.5 + }, + { + "label": "PgUp", + "x": 17.25, + "y": 1.5 + }, + { + "label": "Tab", + "x": 0, + "y": 2.5, + "w": 1.5 + }, + { + "label": "Q", + "x": 1.5, + "y": 2.5 + }, + { + "label": "W", + "x": 2.5, + "y": 2.5 + }, + { + "label": "E", + "x": 3.5, + "y": 2.5 + }, + { + "label": "R", + "x": 4.5, + "y": 2.5 + }, + { + "label": "T", + "x": 5.5, + "y": 2.5 + }, + { + "label": "Y", + "x": 6.5, + "y": 2.5 + }, + { + "label": "U", + "x": 7.5, + "y": 2.5 + }, + { + "label": "I", + "x": 8.5, + "y": 2.5 + }, + { + "label": "O", + "x": 9.5, + "y": 2.5 + }, + { + "label": "P", + "x": 10.5, + "y": 2.5 + }, + { + "label": "{", + "x": 11.5, + "y": 2.5 + }, + { + "label": "}", + "x": 12.5, + "y": 2.5 + }, + { + "label": "|", + "x": 13.5, + "y": 2.5, + "w": 1.5 + }, + { + "label": "Delete", + "x": 15.25, + "y": 2.5 + }, + { + "label": "End", + "x": 16.25, + "y": 2.5 + }, + { + "label": "PgDn", + "x": 17.25, + "y": 2.5 + }, + { + "label": "Caps Lock", + "x": 0, + "y": 3.5, + "w": 1.75 + }, + { + "label": "A", + "x": 1.75, + "y": 3.5 + }, + { + "label": "S", + "x": 2.75, + "y": 3.5 + }, + { + "label": "D", + "x": 3.75, + "y": 3.5 + }, + { + "label": "F", + "x": 4.75, + "y": 3.5 + }, + { + "label": "G", + "x": 5.75, + "y": 3.5 + }, + { + "label": "H", + "x": 6.75, + "y": 3.5 + }, + { + "label": "J", + "x": 7.75, + "y": 3.5 + }, + { + "label": "K", + "x": 8.75, + "y": 3.5 + }, + { + "label": "L", + "x": 9.75, + "y": 3.5 + }, + { + "label": ":", + "x": 10.75, + "y": 3.5 + }, + { + "label": "\"", + "x": 11.75, + "y": 3.5 + }, + { + "x": 12.75, + "y": 3.5 + }, + { + "label": "Enter", + "x": 13.75, + "y": 3.5, + "w": 1.25 + }, + { + "label": "Shift", + "x": 0, + "y": 4.5, + "w": 1.25 + }, + { + "x": 1.25, + "y": 4.5 + }, + { + "label": "Z", + "x": 2.25, + "y": 4.5 + }, + { + "label": "X", + "x": 3.25, + "y": 4.5 + }, + { + "label": "C", + "x": 4.25, + "y": 4.5 + }, + { + "label": "V", + "x": 5.25, + "y": 4.5 + }, + { + "label": "B", + "x": 6.25, + "y": 4.5 + }, + { + "label": "N", + "x": 7.25, + "y": 4.5 + }, + { + "label": "M", + "x": 8.25, + "y": 4.5 + }, + { + "label": "<", + "x": 9.25, + "y": 4.5 + }, + { + "label": ">", + "x": 10.25, + "y": 4.5 + }, + { + "label": "?", + "x": 11.25, + "y": 4.5 + }, + { + "label": "Shift", + "x": 12.25, + "y": 4.5, + "w": 1.75 + }, + { + "x": 14, + "y": 4.5 + }, + { + "label": "\u2191", + "x": 16.25, + "y": 4.5 + }, + { + "label": "Ctrl", + "x": 0, + "y": 5.5, + "w": 1.25 + }, + { + "label": "Win", + "x": 1.25, + "y": 5.5, + "w": 1.25 + }, + { + "label": "Alt", + "x": 2.5, + "y": 5.5, + "w": 1.25 + }, + { + "x": 3.75, + "y": 5.5, + "w": 6.25 + }, + { + "label": "Alt", + "x": 10, + "y": 5.5, + "w": 1.25 + }, + { + "label": "Win", + "x": 11.25, + "y": 5.5, + "w": 1.25 + }, + { + "label": "Menu", + "x": 12.5, + "y": 5.5, + "w": 1.25 + }, + { + "label": "Ctrl", + "x": 13.75, + "y": 5.5, + "w": 1.25 + }, + { + "label": "\u2190", + "x": 15.25, + "y": 5.5 + }, + { + "label": "\u2193", + "x": 16.25, + "y": 5.5 + }, + { + "label": "\u2192", + "x": 17.25, + "y": 5.5 + } + ] + }, + "LAYOUT_tkl_ansi": { + "layout": [ + { + "label": "Esc", + "x": 0, + "y": 0 + }, + { + "label": "F1", + "x": 2, + "y": 0 + }, + { + "label": "F2", + "x": 3, + "y": 0 + }, + { + "label": "F3", + "x": 4, + "y": 0 + }, + { + "label": "F4", + "x": 5, + "y": 0 + }, + { + "label": "F5", + "x": 6.5, + "y": 0 + }, + { + "label": "F6", + "x": 7.5, + "y": 0 + }, + { + "label": "F7", + "x": 8.5, + "y": 0 + }, + { + "label": "F8", + "x": 9.5, + "y": 0 + }, + { + "label": "F9", + "x": 11, + "y": 0 + }, + { + "label": "F10", + "x": 12, + "y": 0 + }, + { + "label": "F11", + "x": 13, + "y": 0 + }, + { + "label": "F12", + "x": 14, + "y": 0 + }, + { + "label": "PrtSc", + "x": 15.25, + "y": 0 + }, + { + "label": "Scroll Lock", + "x": 16.25, + "y": 0 + }, + { + "label": "Pause", + "x": 17.25, + "y": 0 + }, + { + "label": "~", + "x": 0, + "y": 1.5 + }, + { + "label": "!", + "x": 1, + "y": 1.5 + }, + { + "label": "@", + "x": 2, + "y": 1.5 + }, + { + "label": "#", + "x": 3, + "y": 1.5 + }, + { + "label": "$", + "x": 4, + "y": 1.5 + }, + { + "label": "%", + "x": 5, + "y": 1.5 + }, + { + "label": "^", + "x": 6, + "y": 1.5 + }, + { + "label": "&", + "x": 7, + "y": 1.5 + }, + { + "label": "*", + "x": 8, + "y": 1.5 + }, + { + "label": "(", + "x": 9, + "y": 1.5 + }, + { + "label": ")", + "x": 10, + "y": 1.5 + }, + { + "label": "_", + "x": 11, + "y": 1.5 + }, + { + "label": "+", + "x": 12, + "y": 1.5 + }, + { + "label": "Bksp", + "x": 13, + "y": 1.5, + "w": 2 + }, + { + "label": "Insert", + "x": 15.25, + "y": 1.5 + }, + { + "label": "Home", + "x": 16.25, + "y": 1.5 + }, + { + "label": "PgUp", + "x": 17.25, + "y": 1.5 + }, + { + "label": "Tab", + "x": 0, + "y": 2.5, + "w": 1.5 + }, + { + "label": "Q", + "x": 1.5, + "y": 2.5 + }, + { + "label": "W", + "x": 2.5, + "y": 2.5 + }, + { + "label": "E", + "x": 3.5, + "y": 2.5 + }, + { + "label": "R", + "x": 4.5, + "y": 2.5 + }, + { + "label": "T", + "x": 5.5, + "y": 2.5 + }, + { + "label": "Y", + "x": 6.5, + "y": 2.5 + }, + { + "label": "U", + "x": 7.5, + "y": 2.5 + }, + { + "label": "I", + "x": 8.5, + "y": 2.5 + }, + { + "label": "O", + "x": 9.5, + "y": 2.5 + }, + { + "label": "P", + "x": 10.5, + "y": 2.5 + }, + { + "label": "{", + "x": 11.5, + "y": 2.5 + }, + { + "label": "}", + "x": 12.5, + "y": 2.5 + }, + { + "label": "|", + "x": 13.5, + "y": 2.5, + "w": 1.5 + }, + { + "label": "Delete", + "x": 15.25, + "y": 2.5 + }, + { + "label": "End", + "x": 16.25, + "y": 2.5 + }, + { + "label": "PgDn", + "x": 17.25, + "y": 2.5 + }, + { + "label": "Caps Lock", + "x": 0, + "y": 3.5, + "w": 1.75 + }, + { + "label": "A", + "x": 1.75, + "y": 3.5 + }, + { + "label": "S", + "x": 2.75, + "y": 3.5 + }, + { + "label": "D", + "x": 3.75, + "y": 3.5 + }, + { + "label": "F", + "x": 4.75, + "y": 3.5 + }, + { + "label": "G", + "x": 5.75, + "y": 3.5 + }, + { + "label": "H", + "x": 6.75, + "y": 3.5 + }, + { + "label": "J", + "x": 7.75, + "y": 3.5 + }, + { + "label": "K", + "x": 8.75, + "y": 3.5 + }, + { + "label": "L", + "x": 9.75, + "y": 3.5 + }, + { + "label": ":", + "x": 10.75, + "y": 3.5 + }, + { + "label": "\"", + "x": 11.75, + "y": 3.5 + }, + { + "label": "Enter", + "x": 12.75, + "y": 3.5, + "w": 2.25 + }, + { + "label": "Shift", + "x": 0, + "y": 4.5, + "w": 2.25 + }, + { + "label": "Z", + "x": 2.25, + "y": 4.5 + }, + { + "label": "X", + "x": 3.25, + "y": 4.5 + }, + { + "label": "C", + "x": 4.25, + "y": 4.5 + }, + { + "label": "V", + "x": 5.25, + "y": 4.5 + }, + { + "label": "B", + "x": 6.25, + "y": 4.5 + }, + { + "label": "N", + "x": 7.25, + "y": 4.5 + }, + { + "label": "M", + "x": 8.25, + "y": 4.5 + }, + { + "label": "<", + "x": 9.25, + "y": 4.5 + }, + { + "label": ">", + "x": 10.25, + "y": 4.5 + }, + { + "label": "?", + "x": 11.25, + "y": 4.5 + }, + { + "label": "Shift", + "x": 12.25, + "y": 4.5, + "w": 2.75 + }, + { + "label": "\u2191", + "x": 16.25, + "y": 4.5 + }, + { + "label": "Ctrl", + "x": 0, + "y": 5.5, + "w": 1.25 + }, + { + "label": "Win", + "x": 1.25, + "y": 5.5, + "w": 1.25 + }, + { + "label": "Alt", + "x": 2.5, + "y": 5.5, + "w": 1.25 + }, + { + "x": 3.75, + "y": 5.5, + "w": 6.25 + }, + { + "label": "Alt", + "x": 10, + "y": 5.5, + "w": 1.25 + }, + { + "label": "Win", + "x": 11.25, + "y": 5.5, + "w": 1.25 + }, + { + "label": "Menu", + "x": 12.5, + "y": 5.5, + "w": 1.25 + }, + { + "label": "Ctrl", + "x": 13.75, + "y": 5.5, + "w": 1.25 + }, + { + "label": "\u2190", + "x": 15.25, + "y": 5.5 + }, + { + "label": "\u2193", + "x": 16.25, + "y": 5.5 + }, + { + "label": "\u2192", + "x": 17.25, + "y": 5.5 + } + ] + }, + "LAYOUT_tkl_ansi_wkl": { + "layout": [ + { + "label": "Esc", + "x": 0, + "y": 0 + }, + { + "label": "F1", + "x": 2, + "y": 0 + }, + { + "label": "F2", + "x": 3, + "y": 0 + }, + { + "label": "F3", + "x": 4, + "y": 0 + }, + { + "label": "F4", + "x": 5, + "y": 0 + }, + { + "label": "F5", + "x": 6.5, + "y": 0 + }, + { + "label": "F6", + "x": 7.5, + "y": 0 + }, + { + "label": "F7", + "x": 8.5, + "y": 0 + }, + { + "label": "F8", + "x": 9.5, + "y": 0 + }, + { + "label": "F9", + "x": 11, + "y": 0 + }, + { + "label": "F10", + "x": 12, + "y": 0 + }, + { + "label": "F11", + "x": 13, + "y": 0 + }, + { + "label": "F12", + "x": 14, + "y": 0 + }, + { + "label": "PrtSc", + "x": 15.25, + "y": 0 + }, + { + "label": "Scroll Lock", + "x": 16.25, + "y": 0 + }, + { + "label": "Pause", + "x": 17.25, + "y": 0 + }, + { + "label": "~", + "x": 0, + "y": 1.5 + }, + { + "label": "!", + "x": 1, + "y": 1.5 + }, + { + "label": "@", + "x": 2, + "y": 1.5 + }, + { + "label": "#", + "x": 3, + "y": 1.5 + }, + { + "label": "$", + "x": 4, + "y": 1.5 + }, + { + "label": "%", + "x": 5, + "y": 1.5 + }, + { + "label": "^", + "x": 6, + "y": 1.5 + }, + { + "label": "&", + "x": 7, + "y": 1.5 + }, + { + "label": "*", + "x": 8, + "y": 1.5 + }, + { + "label": "(", + "x": 9, + "y": 1.5 + }, + { + "label": ")", + "x": 10, + "y": 1.5 + }, + { + "label": "_", + "x": 11, + "y": 1.5 + }, + { + "label": "+", + "x": 12, + "y": 1.5 + }, + { + "label": "Bksp", + "x": 13, + "y": 1.5, + "w": 2 + }, + { + "label": "Insert", + "x": 15.25, + "y": 1.5 + }, + { + "label": "Home", + "x": 16.25, + "y": 1.5 + }, + { + "label": "PgUp", + "x": 17.25, + "y": 1.5 + }, + { + "label": "Tab", + "x": 0, + "y": 2.5, + "w": 1.5 + }, + { + "label": "Q", + "x": 1.5, + "y": 2.5 + }, + { + "label": "W", + "x": 2.5, + "y": 2.5 + }, + { + "label": "E", + "x": 3.5, + "y": 2.5 + }, + { + "label": "R", + "x": 4.5, + "y": 2.5 + }, + { + "label": "T", + "x": 5.5, + "y": 2.5 + }, + { + "label": "Y", + "x": 6.5, + "y": 2.5 + }, + { + "label": "U", + "x": 7.5, + "y": 2.5 + }, + { + "label": "I", + "x": 8.5, + "y": 2.5 + }, + { + "label": "O", + "x": 9.5, + "y": 2.5 + }, + { + "label": "P", + "x": 10.5, + "y": 2.5 + }, + { + "label": "{", + "x": 11.5, + "y": 2.5 + }, + { + "label": "}", + "x": 12.5, + "y": 2.5 + }, + { + "label": "|", + "x": 13.5, + "y": 2.5, + "w": 1.5 + }, + { + "label": "Delete", + "x": 15.25, + "y": 2.5 + }, + { + "label": "End", + "x": 16.25, + "y": 2.5 + }, + { + "label": "PgDn", + "x": 17.25, + "y": 2.5 + }, + { + "label": "Caps Lock", + "x": 0, + "y": 3.5, + "w": 1.75 + }, + { + "label": "A", + "x": 1.75, + "y": 3.5 + }, + { + "label": "S", + "x": 2.75, + "y": 3.5 + }, + { + "label": "D", + "x": 3.75, + "y": 3.5 + }, + { + "label": "F", + "x": 4.75, + "y": 3.5 + }, + { + "label": "G", + "x": 5.75, + "y": 3.5 + }, + { + "label": "H", + "x": 6.75, + "y": 3.5 + }, + { + "label": "J", + "x": 7.75, + "y": 3.5 + }, + { + "label": "K", + "x": 8.75, + "y": 3.5 + }, + { + "label": "L", + "x": 9.75, + "y": 3.5 + }, + { + "label": ":", + "x": 10.75, + "y": 3.5 + }, + { + "label": "\"", + "x": 11.75, + "y": 3.5 + }, + { + "label": "Enter", + "x": 12.75, + "y": 3.5, + "w": 2.25 + }, + { + "label": "Shift", + "x": 0, + "y": 4.5, + "w": 2.25 + }, + { + "label": "Z", + "x": 2.25, + "y": 4.5 + }, + { + "label": "X", + "x": 3.25, + "y": 4.5 + }, + { + "label": "C", + "x": 4.25, + "y": 4.5 + }, + { + "label": "V", + "x": 5.25, + "y": 4.5 + }, + { + "label": "B", + "x": 6.25, + "y": 4.5 + }, + { + "label": "N", + "x": 7.25, + "y": 4.5 + }, + { + "label": "M", + "x": 8.25, + "y": 4.5 + }, + { + "label": "<", + "x": 9.25, + "y": 4.5 + }, + { + "label": ">", + "x": 10.25, + "y": 4.5 + }, + { + "label": "?", + "x": 11.25, + "y": 4.5 + }, + { + "label": "Shift", + "x": 12.25, + "y": 4.5, + "w": 2.75 + }, + { + "label": "\u2191", + "x": 16.25, + "y": 4.5 + }, + { + "label": "Ctrl", + "x": 0, + "y": 5.5, + "w": 1.5 + }, + { + "label": "Alt", + "x": 2.5, + "y": 5.5, + "w": 1.5 + }, + { + "x": 4, + "y": 5.5, + "w": 7 + }, + { + "label": "Alt", + "x": 11, + "y": 5.5, + "w": 1.5 + }, + { + "label": "Ctrl", + "x": 13.5, + "y": 5.5, + "w": 1.5 + }, + { + "label": "\u2190", + "x": 15.25, + "y": 5.5 + }, + { + "label": "\u2193", + "x": 16.25, + "y": 5.5 + }, + { + "label": "\u2192", + "x": 17.25, + "y": 5.5 + } + ] + } + } +} diff --git a/keyboards/nix_studio/oxalys80/keymaps/default/keymap.c b/keyboards/nix_studio/oxalys80/keymaps/default/keymap.c new file mode 100644 index 0000000000..70d05e7b98 --- /dev/null +++ b/keyboards/nix_studio/oxalys80/keymaps/default/keymap.c @@ -0,0 +1,36 @@ +/* Copyright 2021 Nix Studio + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_TRNS, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + [1] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, BL_TOGG, BL_DEC, BL_INC, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MNXT, KC_VOLD, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +}; diff --git a/keyboards/nix_studio/oxalys80/keymaps/default/readme.md b/keyboards/nix_studio/oxalys80/keymaps/default/readme.md new file mode 100644 index 0000000000..d4b2ba9671 --- /dev/null +++ b/keyboards/nix_studio/oxalys80/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for oxalys80 \ No newline at end of file diff --git a/keyboards/nix_studio/oxalys80/keymaps/via/keymap.c b/keyboards/nix_studio/oxalys80/keymaps/via/keymap.c new file mode 100644 index 0000000000..a81dface97 --- /dev/null +++ b/keyboards/nix_studio/oxalys80/keymaps/via/keymap.c @@ -0,0 +1,52 @@ +/* Copyright 2021 Nix Studio + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_TRNS, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + [1] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, BL_TOGG, BL_DEC, BL_INC, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MNXT, KC_VOLD, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, BL_TOGG, BL_DEC, BL_INC, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MNXT, KC_VOLD, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, BL_TOGG, BL_DEC, BL_INC, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MNXT, KC_VOLD, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +}; diff --git a/keyboards/nix_studio/oxalys80/keymaps/via/readme.md b/keyboards/nix_studio/oxalys80/keymaps/via/readme.md new file mode 100644 index 0000000000..7b9d19da1f --- /dev/null +++ b/keyboards/nix_studio/oxalys80/keymaps/via/readme.md @@ -0,0 +1 @@ +# The default VIA keymap for oxalys80 diff --git a/keyboards/nix_studio/oxalys80/keymaps/via/rules.mk b/keyboards/nix_studio/oxalys80/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/nix_studio/oxalys80/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/nix_studio/oxalys80/oxalys80.c b/keyboards/nix_studio/oxalys80/oxalys80.c new file mode 100644 index 0000000000..c5078a9f83 --- /dev/null +++ b/keyboards/nix_studio/oxalys80/oxalys80.c @@ -0,0 +1,26 @@ +/* Copyright 2021 Nix Studio + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "oxalys80.h" + + +void eeconfig_init_kb(void) { // EEPROM is getting reset! + rgblight_enable(); // Enable RGB by default + rgblight_sethsv(0, 255, 128); // Set default HSV - red hue, full saturation, medium brightness + rgblight_mode(RGBLIGHT_MODE_RAINBOW_SWIRL + 2); // set to RGB_RAINBOW_SWIRL by default + + eeconfig_update_kb(0); + eeconfig_init_user(); +} diff --git a/keyboards/nix_studio/oxalys80/oxalys80.h b/keyboards/nix_studio/oxalys80/oxalys80.h new file mode 100644 index 0000000000..a4f36b2ac0 --- /dev/null +++ b/keyboards/nix_studio/oxalys80/oxalys80.h @@ -0,0 +1,45 @@ +/* Copyright 2021 Nix Studio + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +// This a shortcut to help you visually see your layout. +// The following is an example using the Planck MIT layout +// The first section contains all of the arguments +// The second converts the arguments into a two-dimensional array + +#define LAYOUT_all(\ + K000, K001, K011, K002, K012, K003, K013, K004, K014, K005, K015, K006, K016, K007, K017, K008, \ + K020, K030, K021, K031, K022, K032, K023, K033, K024, K034, K025, K035, K026, K036, K066, K027, K037, K028, \ + K040, K050, K041, K051, K042, K052, K043, K053, K044, K054, K045, K055, K046, K056, K047, K057, K048, \ + K060, K070, K061, K071, K062, K072, K063, K073, K064, K074, K065, K075, K076, \ + K080, K090, K081, K091, K082, K092, K083, K093, K084, K094, K085, K095, K086, K096, K097, \ + K100, K110, K101, K103, K105, K115, K106, K116, K107, K117, K108 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008 }, \ + { KC_NO, K011, K012, K013, K014, K015, K016, K017, KC_NO }, \ + { K020, K021, K022, K023, K024, K025, K026, K027, K028 }, \ + { K030, K031, K032, K033, K034, K035, K036, K037, KC_NO }, \ + { K040, K041, K042, K043, K044, K045, K046, K047, K048 }, \ + { K050, K051, K052, K053, K054, K055, K056, K057, KC_NO }, \ + { K060, K061, K062, K063, K064, K065, K066, KC_NO, KC_NO }, \ + { K070, K071, K072, K073, K074, K075, K076, KC_NO, KC_NO }, \ + { K080, K081, K082, K083, K084, K085, K086, KC_NO, KC_NO }, \ + { K090, K091, K092, K093, K094, K095, K096, K097, KC_NO }, \ + { K100, K101, KC_NO, K103, KC_NO, K105, K106, K107, K108 }, \ + { K110, KC_NO, KC_NO, KC_NO, KC_NO, K115, K116, K117, KC_NO } \ +} diff --git a/keyboards/nix_studio/oxalys80/readme.md b/keyboards/nix_studio/oxalys80/readme.md new file mode 100644 index 0000000000..44ad7e8286 --- /dev/null +++ b/keyboards/nix_studio/oxalys80/readme.md @@ -0,0 +1,43 @@ +oxalys80 +=== + +A QMK-powered replacement PCB for custom TKL keyboards. This PCB has the same size of the b.87 PCB, Hiney H87a, KBD8X. + +Keyboard Maintainer: [Nix Studio](https://github.com/Nix-Studio) +Hardware Supported: oxalys80 ver. 1.0 +Hardware Availability: [Nix Studio](https://www.instagram.com/nix.studio/) + +Make example for this keyboard (after setting up your build environment): + + make nix_studio/oxalys80:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## oxalys80 hardware information + +Controller: Atmega32u4 + + /* Column pin configuration + * col: 0 1 2 3 4 5 6 7 8 + * pin: F0 F1 F4 F5 F6 F7 C7 B0 B1 + */ + + /* Row pin configuration + * row: 0 1 2 3 4 5 6 7 8 9 10 11 + * pin: C6 B6 B5 B4 D7 D6 D4 D5 D3 D2 D1 D0 + */ + +The oxalys PCB utilizes duplex matrix organization. + + Caps Lock LED: E6 + Scroll Lock LED: B2 + Num Lock LED: not supported + Backlight Pin: B7 + RGB Data Pin: B3 + + + +In-switch indicators: +To connect the Caps Lock LED to the main backlight matrix, turn switch to top position on SW3. To use the Caps Lock LED as an indicator, turn switch to bottom position on SW3. + +To connect the Scroll Lock LED to the main backlight matrix, turn switch to left position on SW2. To use the Scroll Lock LED as an indicator, turn switch to right position on SW2. diff --git a/keyboards/nix_studio/oxalys80/rules.mk b/keyboards/nix_studio/oxalys80/rules.mk new file mode 100644 index 0000000000..714ba6d383 --- /dev/null +++ b/keyboards/nix_studio/oxalys80/rules.mk @@ -0,0 +1,23 @@ +# MCU name +MCU = atmega32u4 + +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default +RGBLIGHT_ENABLE = yes # Enable RGB underglow +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +LTO_ENABLE = yes From a5ecd4eb87db8eb48544de1de5f437046358369d Mon Sep 17 00:00:00 2001 From: Naoto Takai Date: Thu, 25 Mar 2021 21:05:05 +0900 Subject: [PATCH 138/613] Make the size of MATRIX_ROW_PINS and MATRIX_ROW_PINS_RIGHT the same (#12203) * Make the size of MATRIX_ROW_PINS and MATRIX_ROW_PINS_RIGHT the same * Use NO_PIN instead of duplicate pin --- keyboards/choco60/rev2/config.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/keyboards/choco60/rev2/config.h b/keyboards/choco60/rev2/config.h index 3783234971..46aef108d8 100644 --- a/keyboards/choco60/rev2/config.h +++ b/keyboards/choco60/rev2/config.h @@ -29,7 +29,8 @@ along with this program. If not, see . */ #define MATRIX_ROW_PINS { C5, C4, B6, B7, C7 } #define MATRIX_ROW_PINS_RIGHT { D3, D2, D5, D6, B0 } -#define MATRIX_COL_PINS { C6, B4, B3, B2, B1, B0 } +/* The last three NO_PIN are dummies to make the same size as MATRIX_ROW_PINS_RIGHT. */ +#define MATRIX_COL_PINS { C6, B4, B3, B2, B1, B0, NO_PIN, NO_PIN, NO_PIN } #define MATRIX_COL_PINS_RIGHT { C7, B7, B6, B5, B4, B3, B2, C6, D4 } #define UNUSED_PINS From b664db3cf32f9e286dbbeb9a44761fcf707caf4d Mon Sep 17 00:00:00 2001 From: Takeshi ISHII <2170248+mtei@users.noreply.github.com> Date: Thu, 25 Mar 2021 21:05:38 +0900 Subject: [PATCH 139/613] Removed unused RGBLED_TIMER_TOP and F_CPU macros from quantum/rgblight.[ch] (#12233) --- quantum/rgblight.c | 16 ---------------- quantum/rgblight.h | 3 --- 2 files changed, 19 deletions(-) diff --git a/quantum/rgblight.c b/quantum/rgblight.c index 904c02d6cd..119d3eab21 100644 --- a/quantum/rgblight.c +++ b/quantum/rgblight.c @@ -884,22 +884,6 @@ typedef void (*effect_func_t)(animation_status_t *anim); // Animation timer -- use system timer (AVR Timer0) void rgblight_timer_init(void) { - // OLD!!!! Animation timer -- AVR Timer3 - // static uint8_t rgblight_timer_is_init = 0; - // if (rgblight_timer_is_init) { - // return; - // } - // rgblight_timer_is_init = 1; - // /* Timer 3 setup */ - // TCCR3B = _BV(WGM32) // CTC mode OCR3A as TOP - // | _BV(CS30); // Clock selelct: clk/1 - // /* Set TOP value */ - // uint8_t sreg = SREG; - // cli(); - // OCR3AH = (RGBLED_TIMER_TOP >> 8) & 0xff; - // OCR3AL = RGBLED_TIMER_TOP & 0xff; - // SREG = sreg; - rgblight_status.timer_enabled = false; RGBLIGHT_SPLIT_SET_CHANGE_TIMER_ENABLE; } diff --git a/quantum/rgblight.h b/quantum/rgblight.h index 028b3ea416..6fb3ab9380 100644 --- a/quantum/rgblight.h +++ b/quantum/rgblight.h @@ -170,9 +170,6 @@ enum RGBLIGHT_EFFECT_MODE { # define RGBLIGHT_LIMIT_VAL 255 # endif -# define RGBLED_TIMER_TOP F_CPU / (256 * 64) -// #define RGBLED_TIMER_TOP 0xFF10 - # include # include # include "eeconfig.h" From 0eabb01e27216611662d7e3c814a1a21bd20c90b Mon Sep 17 00:00:00 2001 From: Albert Y <76888457+filterpaper@users.noreply.github.com> Date: Thu, 25 Mar 2021 20:08:04 +0800 Subject: [PATCH 140/613] Minor improvements to BM68RGB (#12156) * Minor improvements to BM68RGB * Add grave esc and LTO support * Move comments to end of line * Document the use of qmk script for compiling and flashing * Revert arrow key flags back to mod * Update keyboards/bm68rgb/bm68rgb.c Co-authored-by: Ryan * Update keyboards/bm68rgb/bm68rgb.c Co-authored-by: Ryan * Remove grave escape Co-authored-by: Ryan * Update tab spacing Co-authored-by: Ryan * Reverted make default Co-authored-by: Ryan * Reverted make flash Co-authored-by: Ryan Co-authored-by: filterpaper Co-authored-by: Ryan --- keyboards/bm68rgb/bm68rgb.c | 39 +++++++--------------- keyboards/bm68rgb/config.h | 26 ++------------- keyboards/bm68rgb/keymaps/default/keymap.c | 2 +- keyboards/bm68rgb/rules.mk | 4 +-- 4 files changed, 17 insertions(+), 54 deletions(-) diff --git a/keyboards/bm68rgb/bm68rgb.c b/keyboards/bm68rgb/bm68rgb.c index 4e49a96ca4..e16292498d 100644 --- a/keyboards/bm68rgb/bm68rgb.c +++ b/keyboards/bm68rgb/bm68rgb.c @@ -26,34 +26,19 @@ led_config_t g_led_config = { { { 58, 59, 60, NO_LED, NO_LED, NO_LED, 61, NO_LED, NO_LED, 62, 63, 64, 65, 66, 67 } }, { // LED Index to Physical Position - //I have no idea how to calculate this based on a templete, nor do have a good enough ruler to measure this. - // Esc, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, =, Backspace, Delete - { 0, 0 }, { 15, 0 }, { 30, 0 }, { 45, 0 }, { 60, 0 }, { 75, 0 }, { 90, 0 }, { 105, 0 }, { 120, 0 }, { 135, 0 }, { 150, 0 }, { 165, 0 }, { 180, 0 }, { 202, 0 }, { 225, 0 }, - // Tab, Q, W, E, R, T, Y, U, I, O, P, [, ], backslash , Home - { 4, 16 }, { 22, 16 }, { 37, 16 }, { 52, 16 }, { 67, 16 }, { 82, 16 }, { 97, 16 }, { 112, 16 }, { 127, 16 }, { 142, 16 }, { 157, 16 }, { 172, 16 }, { 187, 16 }, { 206, 16 }, { 225, 16 }, - // Capslock, A, S, D, F, G, H, J, K, L, ;, ', Enter, Page up - { 6, 32 }, { 26, 32 }, { 41, 32 }, { 56, 32 }, { 71, 32 }, { 86, 32 }, { 101, 32 }, { 116, 32 }, { 131, 32 }, { 146, 32 }, { 161, 32 }, { 176, 32 }, { 201, 32 }, { 225, 32 }, - // LShift, Z, X, C, V, B, N, M, ,, ., /, Shift, Up, Page Down - { 9, 48 }, { 34, 48 }, { 49, 48 }, { 64, 48 }, { 79, 48 }, { 94, 48 }, { 109, 48 }, { 124, 48 }, { 139, 48 }, { 154, 48 }, { 169, 48 }, { 189, 48 }, { 210, 48 }, { 225, 48 }, - // Ctrl, GUI, Alt, Space, RAlt, FN, Ctrl, Left, Down, Right - { 2, 64 }, { 21, 64 }, { 39, 64 }, { 94, 64 }, { 148, 64 }, { 163, 64 }, { 178, 64 }, { 193, 64 }, { 208, 64 }, { 225, 64 }, - // UNDERGLOW - { 185, 45 }, { 160, 45 }, { 125, 45 }, { 95, 45 }, { 60, 45 }, { 25, 45 } + { 0, 0}, { 15, 0}, { 30, 0}, { 45, 0}, { 60, 0}, { 75, 0}, { 90, 0}, {105, 0}, {120, 0}, {135, 0}, {150, 0}, {165, 0}, {180, 0}, {202, 0}, {225, 0}, // Esc, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, =, Backspace, Delete + { 4, 16}, { 22, 16}, { 37, 16}, { 52, 16}, { 67, 16}, { 82, 16}, { 97, 16}, {112, 16}, {127, 16}, {142, 16}, {157, 16}, {172, 16}, {187, 16}, {206, 16}, {225, 16}, // Tab, Q, W, E, R, T, Y, U, I, O, P, [, ], backslash , Home + { 6, 32}, { 26, 32}, { 41, 32}, { 56, 32}, { 71, 32}, { 86, 32}, {101, 32}, {116, 32}, {131, 32}, {146, 32}, {161, 32}, {176, 32}, {201, 32}, {225, 32}, // Capslock, A, S, D, F, G, H, J, K, L, ;, ', Enter, Page up + { 9, 48}, { 34, 48}, { 49, 48}, { 64, 48}, { 79, 48}, { 94, 48}, {109, 48}, {124, 48}, {139, 48}, {154, 48}, {169, 48}, {189, 48}, { 10, 48}, {225, 48}, // LShift, Z, X, C, V, B, N, M, ,, ., /, Shift, Up, Page Down + { 2, 64}, { 21, 64}, { 39, 64}, { 94, 64}, {148, 64}, {163, 64}, {178, 64}, {193, 64}, {208, 64}, {225, 64}, // Ctrl, GUI, Alt, Space, RAlt, FN, Ctrl, Left, Down, Right + {185, 45}, {160, 45}, {125, 45}, { 95, 45}, { 60, 45}, { 25, 45} // UNDERGLOW }, { // LED Index to Flag - //need to recheck what should be a modifier - - // Esc, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, =, Backspace, Delete - 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, - // Tab, Q, W, E, R, T, Y, U, I, O, P, [, ], backslash , Home - 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, - // Capslock, A, S, D, F, G, H, J, K, L, ;, ', Enter, Page up - 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, - // LShift, Z, X, C, V, B, N, M, ,, ., /, Shift, Up, Page Down - 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, - // Ctrl, GUI, Alt, Space, RAlt, FN, Ctrl, Left, Down, Right - 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, - // UNDERGLOW - 2, 2, 2, 2, 2, 2 + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, // Esc, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, =, Backspace, Delete + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, // Tab, Q, W, E, R, T, Y, U, I, O, P, [, ], backslash , Home + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, // Capslock, A, S, D, F, G, H, J, K, L, ;, ', Enter, Page up + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, // LShift, Z, X, C, V, B, N, M, ,, ., /, Shift, Up, Page Down + 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, // Ctrl, GUI, Alt, Space, RAlt, FN, Ctrl, Left, Down, Right + 2, 2, 2, 2, 2, 2 // UNDERGLOW } }; #endif diff --git a/keyboards/bm68rgb/config.h b/keyboards/bm68rgb/config.h index 250b9d734b..7fa2e77960 100644 --- a/keyboards/bm68rgb/config.h +++ b/keyboards/bm68rgb/config.h @@ -56,30 +56,8 @@ along with this program. If not, see . // The number of LEDs connected #define DRIVER_LED_TOTAL 74 #ifdef RGB_DI_PIN -#define RGBLED_NUM 74 -//# define RGBLIGHT_HUE_STEP 8 -//# define RGBLIGHT_SAT_STEP 8 -//# define RGBLIGHT_VAL_STEP 8 -//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ -//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ -/*== all animations enable ==*/ -//# define RGBLIGHT_ANIMATIONS -/*== or choose animations ==*/ -//# define RGBLIGHT_EFFECT_BREATHING -//# define RGBLIGHT_EFFECT_RAINBOW_MOOD -//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL -//# define RGBLIGHT_EFFECT_SNAKE -//# define RGBLIGHT_EFFECT_KNIGHT -//# define RGBLIGHT_EFFECT_CHRISTMAS -//# define RGBLIGHT_EFFECT_STATIC_GRADIENT -//# define RGBLIGHT_EFFECT_RGB_TEST -//# define RGBLIGHT_EFFECT_ALTERNATING -/*== customize breathing effect ==*/ -/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ -//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 -/*==== use exp() and sin() ====*/ -//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 -//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 + #define RGBLED_NUM 74 + #define RGB_MATRIX_KEYPRESSES // reacts to keypresses #endif /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ diff --git a/keyboards/bm68rgb/keymaps/default/keymap.c b/keyboards/bm68rgb/keymaps/default/keymap.c index eec3b3c264..b4bc5cb59d 100644 --- a/keyboards/bm68rgb/keymaps/default/keymap.c +++ b/keyboards/bm68rgb/keymaps/default/keymap.c @@ -41,7 +41,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; /* -Templete +Template [ ] = LAYOUT_65_ansi( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, diff --git a/keyboards/bm68rgb/rules.mk b/keyboards/bm68rgb/rules.mk index 15d81ded88..ce5ad84477 100644 --- a/keyboards/bm68rgb/rules.mk +++ b/keyboards/bm68rgb/rules.mk @@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug @@ -22,6 +22,6 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output RGB_MATRIX_ENABLE = yes RGB_MATRIX_DRIVER = WS2812 -#LTO_ENABLE = yes +LTO_ENABLE = yes LAYOUTS = 65_ansi From 666623d39adc052d2f585e908694279a9d5a65c6 Mon Sep 17 00:00:00 2001 From: ploopyco <54917504+ploopyco@users.noreply.github.com> Date: Thu, 25 Mar 2021 08:10:55 -0400 Subject: [PATCH 141/613] ADNS-5050 / Ploopy Nano / Ploopy Mini Trackballs (#11994) * added adns5050 sensor code, as well as implementations for the Ploopy Mini and the Ploopy Nano * fixed spurious scrolling issue * recommended fixes for pr linting and cleanup --- keyboards/ploopyco/adns5050.c | 197 +++++++++++++++ keyboards/ploopyco/adns5050.h | 79 ++++++ keyboards/ploopyco/trackball_mini/config.h | 59 +++++ keyboards/ploopyco/trackball_mini/info.json | 19 ++ .../trackball_mini/keymaps/default/keymap.c | 28 +++ .../trackball_mini/keymaps/default/readme.md | 3 + .../keymaps/drag_scroll/keymap.c | 66 +++++ .../keymaps/drag_scroll/readme.md | 5 + .../trackball_mini/keymaps/via/config.h | 21 ++ .../trackball_mini/keymaps/via/keymap.c | 30 +++ .../trackball_mini/keymaps/via/rules.mk | 1 + keyboards/ploopyco/trackball_mini/readme.md | 75 ++++++ .../ploopyco/trackball_mini/rev1_001/config.h | 40 +++ .../trackball_mini/rev1_001/readme.md | 1 + .../trackball_mini/rev1_001/rev1_001.h | 22 ++ .../ploopyco/trackball_mini/rev1_001/rules.mk | 0 keyboards/ploopyco/trackball_mini/rules.mk | 32 +++ .../ploopyco/trackball_mini/trackball_mini.c | 235 ++++++++++++++++++ .../ploopyco/trackball_mini/trackball_mini.h | 54 ++++ keyboards/ploopyco/trackball_nano/config.h | 48 ++++ keyboards/ploopyco/trackball_nano/info.json | 13 + .../trackball_nano/keymaps/default/keymap.c | 23 ++ .../trackball_nano/keymaps/default/readme.md | 3 + keyboards/ploopyco/trackball_nano/readme.md | 54 ++++ .../ploopyco/trackball_nano/rev1_001/config.h | 37 +++ .../trackball_nano/rev1_001/readme.md | 1 + .../trackball_nano/rev1_001/rev1_001.h | 22 ++ .../ploopyco/trackball_nano/rev1_001/rules.mk | 0 keyboards/ploopyco/trackball_nano/rules.mk | 32 +++ .../ploopyco/trackball_nano/trackball_nano.c | 211 ++++++++++++++++ .../ploopyco/trackball_nano/trackball_nano.h | 53 ++++ 31 files changed, 1464 insertions(+) create mode 100644 keyboards/ploopyco/adns5050.c create mode 100644 keyboards/ploopyco/adns5050.h create mode 100644 keyboards/ploopyco/trackball_mini/config.h create mode 100644 keyboards/ploopyco/trackball_mini/info.json create mode 100644 keyboards/ploopyco/trackball_mini/keymaps/default/keymap.c create mode 100644 keyboards/ploopyco/trackball_mini/keymaps/default/readme.md create mode 100644 keyboards/ploopyco/trackball_mini/keymaps/drag_scroll/keymap.c create mode 100644 keyboards/ploopyco/trackball_mini/keymaps/drag_scroll/readme.md create mode 100644 keyboards/ploopyco/trackball_mini/keymaps/via/config.h create mode 100644 keyboards/ploopyco/trackball_mini/keymaps/via/keymap.c create mode 100644 keyboards/ploopyco/trackball_mini/keymaps/via/rules.mk create mode 100644 keyboards/ploopyco/trackball_mini/readme.md create mode 100644 keyboards/ploopyco/trackball_mini/rev1_001/config.h create mode 100644 keyboards/ploopyco/trackball_mini/rev1_001/readme.md create mode 100644 keyboards/ploopyco/trackball_mini/rev1_001/rev1_001.h create mode 100644 keyboards/ploopyco/trackball_mini/rev1_001/rules.mk create mode 100644 keyboards/ploopyco/trackball_mini/rules.mk create mode 100644 keyboards/ploopyco/trackball_mini/trackball_mini.c create mode 100644 keyboards/ploopyco/trackball_mini/trackball_mini.h create mode 100644 keyboards/ploopyco/trackball_nano/config.h create mode 100644 keyboards/ploopyco/trackball_nano/info.json create mode 100644 keyboards/ploopyco/trackball_nano/keymaps/default/keymap.c create mode 100644 keyboards/ploopyco/trackball_nano/keymaps/default/readme.md create mode 100644 keyboards/ploopyco/trackball_nano/readme.md create mode 100644 keyboards/ploopyco/trackball_nano/rev1_001/config.h create mode 100644 keyboards/ploopyco/trackball_nano/rev1_001/readme.md create mode 100644 keyboards/ploopyco/trackball_nano/rev1_001/rev1_001.h create mode 100644 keyboards/ploopyco/trackball_nano/rev1_001/rules.mk create mode 100644 keyboards/ploopyco/trackball_nano/rules.mk create mode 100644 keyboards/ploopyco/trackball_nano/trackball_nano.c create mode 100644 keyboards/ploopyco/trackball_nano/trackball_nano.h diff --git a/keyboards/ploopyco/adns5050.c b/keyboards/ploopyco/adns5050.c new file mode 100644 index 0000000000..fcf2f213e4 --- /dev/null +++ b/keyboards/ploopyco/adns5050.c @@ -0,0 +1,197 @@ +/* Copyright 2021 Colin Lam (Ploopy Corporation) + * Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * Copyright 2019 Sunjun Kim + * Copyright 2019 Hiroyuki Okada + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + + +#include "adns5050.h" +#include "quantum.h" +#include "wait.h" + +#ifdef CONSOLE_ENABLE +# include "print.h" +#endif + +#ifndef OPTIC_ROTATED +# define OPTIC_ROTATED false +#endif + +// Definitions for the ADNS serial line. +// These really ought to be defined in your config.h, but defaults are +// here if you're really lazy. +#ifndef ADNS_SCLK_PIN +# define ADNS_SCLK_PIN B7 +#endif + +#ifndef ADNS_SDIO_PIN +# define ADNS_SDIO_PIN C6 +#endif + +#ifndef ADNS_CS_PIN +# define ADNS_CS_PIN B4 +#endif + +#ifdef CONSOLE_ENABLE +void print_byte(uint8_t byte) { dprintf("%c%c%c%c%c%c%c%c|", (byte & 0x80 ? '1' : '0'), (byte & 0x40 ? '1' : '0'), (byte & 0x20 ? '1' : '0'), (byte & 0x10 ? '1' : '0'), (byte & 0x08 ? '1' : '0'), (byte & 0x04 ? '1' : '0'), (byte & 0x02 ? '1' : '0'), (byte & 0x01 ? '1' : '0')); } +#endif + +// Initialize the ADNS serial pins. +void adns_init(void) { + setPinOutput(ADNS_SCLK_PIN); + setPinOutput(ADNS_SDIO_PIN); + setPinOutput(ADNS_CS_PIN); +} + +// Perform a synchronization with the ADNS. +// Just as with the serial protocol, this is used by the slave to send a +// synchronization signal to the master. +void adns_sync(void) { + writePinLow(ADNS_CS_PIN); + wait_us(1); + writePinHigh(ADNS_CS_PIN); +} + +void adns_cs_select(void) { + writePinLow(ADNS_CS_PIN); +} + +void adns_cs_deselect(void) { + writePinHigh(ADNS_CS_PIN); +} + +uint8_t adns_serial_read(void) { + setPinInput(ADNS_SDIO_PIN); + uint8_t byte = 0; + + for (uint8_t i = 0; i < 8; ++i) { + writePinLow(ADNS_SCLK_PIN); + wait_us(1); + + byte = (byte << 1) | readPin(ADNS_SDIO_PIN); + + writePinHigh(ADNS_SCLK_PIN); + wait_us(1); + } + + return byte; +} + +void adns_serial_write(uint8_t data) { + setPinOutput(ADNS_SDIO_PIN); + + for (int8_t b = 7; b >= 0; b--) { + writePinLow(ADNS_SCLK_PIN); + + if (data & (1 << b)) + writePinHigh(ADNS_SDIO_PIN); + else + writePinLow(ADNS_SDIO_PIN); + + wait_us(2); + + writePinHigh(ADNS_SCLK_PIN); + } + + // tSWR. See page 15 of the ADNS spec sheet. + // Technically, this is only necessary if the next operation is an SDIO + // read. This is not guaranteed to be the case, but we're being lazy. + wait_us(4); + + // Note that tSWW is never necessary. All write operations require at + // least 32us, which exceeds tSWW, so there's never a need to wait for it. +} + +// Read a byte of data from a register on the ADNS. +// Don't forget to use the register map (as defined in the header file). +uint8_t adns_read_reg(uint8_t reg_addr) { + adns_cs_select(); + + adns_serial_write(reg_addr); + + // We don't need a minimum tSRAD here. That's because a 4ms wait time is + // already included in adns_serial_write(), so we're good. + // See page 10 and 15 of the ADNS spec sheet. + //wait_us(4); + + uint8_t byte = adns_serial_read(); + + // tSRW & tSRR. See page 15 of the ADNS spec sheet. + // Technically, this is only necessary if the next operation is an SDIO + // read or write. This is not guaranteed to be the case. + // Honestly, this wait could probably be removed. + wait_us(1); + + adns_cs_deselect(); + + return byte; +} + +void adns_write_reg(uint8_t reg_addr, uint8_t data) { + adns_cs_select(); + adns_serial_write(reg_addr); + adns_serial_write(data); + adns_cs_deselect(); +} + +report_adns_t adns_read_burst(void) { + adns_cs_select(); + + report_adns_t data; + data.dx = 0; + data.dy = 0; + + adns_serial_write(REG_MOTION_BURST); + + // We don't need a minimum tSRAD here. That's because a 4ms wait time is + // already included in adns_serial_write(), so we're good. + // See page 10 and 15 of the ADNS spec sheet. + //wait_us(4); + + uint8_t x = adns_serial_read(); + uint8_t y = adns_serial_read(); + + // Burst mode returns a bunch of other shit that we don't really need. + // Setting CS to high ends burst mode early. + adns_cs_deselect(); + + data.dx = convert_twoscomp(x); + data.dy = convert_twoscomp(y); + + return data; +} + +// Convert a two's complement byte from an unsigned data type into a signed +// data type. +int8_t convert_twoscomp(uint8_t data) { + if ((data & 0x80) == 0x80) + return -128 + (data & 0x7F); + else + return data; +} + +// Don't forget to use the definitions for CPI in the header file. +void adns_set_cpi(uint8_t cpi) { + adns_write_reg(REG_MOUSE_CONTROL2, cpi); +} + +bool adns_check_signature(void) { + uint8_t pid = adns_read_reg(REG_PRODUCT_ID); + uint8_t rid = adns_read_reg(REG_REVISION_ID); + uint8_t pid2 = adns_read_reg(REG_PRODUCT_ID2); + + return (pid == 0x12 && rid == 0x01 && pid2 == 0x26); +} diff --git a/keyboards/ploopyco/adns5050.h b/keyboards/ploopyco/adns5050.h new file mode 100644 index 0000000000..ff8e8f78e9 --- /dev/null +++ b/keyboards/ploopyco/adns5050.h @@ -0,0 +1,79 @@ +/* Copyright 2021 Colin Lam (Ploopy Corporation) + * Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * Copyright 2019 Sunjun Kim + * Copyright 2019 Hiroyuki Okada + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include + +// Registers +#define REG_PRODUCT_ID 0x00 +#define REG_REVISION_ID 0x01 +#define REG_MOTION 0x02 +#define REG_DELTA_X 0x03 +#define REG_DELTA_Y 0x04 +#define REG_SQUAL 0x05 +#define REG_SHUTTER_UPPER 0x06 +#define REG_SHUTTER_LOWER 0x07 +#define REG_MAXIMUM_PIXEL 0x08 +#define REG_PIXEL_SUM 0x09 +#define REG_MINIMUM_PIXEL 0x0a +#define REG_PIXEL_GRAB 0x0b +#define REG_MOUSE_CONTROL 0x0d +#define REG_MOUSE_CONTROL2 0x19 +#define REG_LED_DC_MODE 0x22 +#define REG_CHIP_RESET 0x3a +#define REG_PRODUCT_ID2 0x3e +#define REG_INV_REV_ID 0x3f +#define REG_MOTION_BURST 0x63 + +// CPI values +#define CPI125 0x11 +#define CPI250 0x12 +#define CPI375 0x13 +#define CPI500 0x14 +#define CPI625 0x15 +#define CPI750 0x16 +#define CPI875 0x17 +#define CPI1000 0x18 +#define CPI1125 0x19 +#define CPI1250 0x1a +#define CPI1375 0x1b + +#ifdef CONSOLE_ENABLE +void print_byte(uint8_t byte); +#endif + +typedef struct { + int8_t dx; + int8_t dy; +} report_adns_t; + +// A bunch of functions to implement the ADNS5050-specific serial protocol. +// Note that the "serial.h" driver is insufficient, because it does not +// manually manipulate a serial clock signal. +void adns_init(void); +void adns_sync(void); +uint8_t adns_serial_read(void); +void adns_serial_write(uint8_t data); +uint8_t adns_read_reg(uint8_t reg_addr); +void adns_write_reg(uint8_t reg_addr, uint8_t data); +report_adns_t adns_read_burst(void); +int8_t convert_twoscomp(uint8_t data); +void adns_set_cpi(uint8_t cpi); +bool adns_check_signature(void); diff --git a/keyboards/ploopyco/trackball_mini/config.h b/keyboards/ploopyco/trackball_mini/config.h new file mode 100644 index 0000000000..7a94e193fb --- /dev/null +++ b/keyboards/ploopyco/trackball_mini/config.h @@ -0,0 +1,59 @@ +/* Copyright 2021 Colin Lam (Ploopy Corporation) + * Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * Copyright 2019 Sunjun Kim + * Copyright 2019 Hiroyuki Okada + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x5043 +#define PRODUCT_ID 0x1EAB +#define DEVICE_VER 0x0001 +#define MANUFACTURER PloopyCo +#define PRODUCT Trackball Mini + +/* key matrix size */ +#define MATRIX_ROWS 1 +#define MATRIX_COLS 5 + + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Much more so than a keyboard, speed matters for a mouse. So we'll go for as high + a polling rate as possible. */ +#define USB_POLLING_INTERVAL_MS 1 +#define USB_MAX_POWER_CONSUMPTION 100 + +/* Bootmagic Lite key configuration */ +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 3 + +// If board has a debug LED, you can enable it by defining this +// #define DEBUG_LED_PIN F7 diff --git a/keyboards/ploopyco/trackball_mini/info.json b/keyboards/ploopyco/trackball_mini/info.json new file mode 100644 index 0000000000..7b30e0595f --- /dev/null +++ b/keyboards/ploopyco/trackball_mini/info.json @@ -0,0 +1,19 @@ +{ + "keyboard_name": "Ploopy Trackball Mini", + "url": "www.ploopy.co", + "maintainer": "ploopyco", + "manufacturer": "Ploopy Corporation", + "width": 8, + "height": 3, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0, "h":2}, + {"x":1, "y":0.25, "h":1.5}, + {"x":2, "y":0, "h":2}, + {"x":3.5, "y":0, "h":2}, + {"x":4.5, "y":0, "h":2} + ] + } + } +} diff --git a/keyboards/ploopyco/trackball_mini/keymaps/default/keymap.c b/keyboards/ploopyco/trackball_mini/keymaps/default/keymap.c new file mode 100644 index 0000000000..5e7c684d19 --- /dev/null +++ b/keyboards/ploopyco/trackball_mini/keymaps/default/keymap.c @@ -0,0 +1,28 @@ +/* Copyright 2021 Colin Lam (Ploopy Corporation) + * Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * Copyright 2019 Sunjun Kim + * Copyright 2019 Hiroyuki Okada + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// safe range starts at `PLOOPY_SAFE_RANGE` instead. + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( /* Base */ + KC_BTN1, KC_BTN3, KC_BTN2, + KC_BTN4, KC_BTN5 + ), +}; diff --git a/keyboards/ploopyco/trackball_mini/keymaps/default/readme.md b/keyboards/ploopyco/trackball_mini/keymaps/default/readme.md new file mode 100644 index 0000000000..ebb90d2999 --- /dev/null +++ b/keyboards/ploopyco/trackball_mini/keymaps/default/readme.md @@ -0,0 +1,3 @@ +The default keymap for the Ploopy Trackball Mini. + +Note that kits bought from PloopyCo actually ship with the VIA keymap, not this one. \ No newline at end of file diff --git a/keyboards/ploopyco/trackball_mini/keymaps/drag_scroll/keymap.c b/keyboards/ploopyco/trackball_mini/keymaps/drag_scroll/keymap.c new file mode 100644 index 0000000000..7784bc8553 --- /dev/null +++ b/keyboards/ploopyco/trackball_mini/keymaps/drag_scroll/keymap.c @@ -0,0 +1,66 @@ +/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * Copyright 2019 Sunjun Kim + * Copyright 2020 Ploopy Corporation + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// used for tracking the state +bool is_drag_scroll = false; + +enum custom_keycodes { + DRAG_SCROLL = PLOOPY_SAFE_RANGE, +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case DRAG_SCROLL: + if (record->event.pressed) { + // this toggles the state each time you tap it + is_drag_scroll ^= 1; + } + break; + } + return true; +} + +// The real magic is here. +// This function is called to translate the processed sensor movement +// from the mouse sensor and translates it into x and y movement for +// the mouse report. Normally. So if "drag scroll" is toggled on, +// moving the ball scrolls instead. You could remove the x or y here +// to only scroll in one direction, if you wanted, as well. In fact, +// there is no reason that you need to send this to the mouse report. +// You could have it register a key, instead. +void process_mouse_user(report_mouse_t* mouse_report, int16_t x, int16_t y) { + if (is_drag_scroll) { + mouse_report->h = x; + mouse_report->v = y; + } else { + mouse_report->x = x; + mouse_report->y = y; + } +} + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( /* Base */ + KC_BTN1, KC_BTN3, KC_BTN2, + KC_BTN4, LT(1, KC_BTN5) + ), + [1] = LAYOUT( + DRAG_SCROLL, _______, _______, + _______, _______ + ) +}; diff --git a/keyboards/ploopyco/trackball_mini/keymaps/drag_scroll/readme.md b/keyboards/ploopyco/trackball_mini/keymaps/drag_scroll/readme.md new file mode 100644 index 0000000000..362821832f --- /dev/null +++ b/keyboards/ploopyco/trackball_mini/keymaps/drag_scroll/readme.md @@ -0,0 +1,5 @@ +# The Drag Scroll keymap for the Ploopy Trackball Mini + +This is a sample keymap showing off what you can do with the custom callback drivers. + +This particular example enables "drag scrolling". The movement of the ball is used to scroll up and down. \ No newline at end of file diff --git a/keyboards/ploopyco/trackball_mini/keymaps/via/config.h b/keyboards/ploopyco/trackball_mini/keymaps/via/config.h new file mode 100644 index 0000000000..0ba4c7e0c8 --- /dev/null +++ b/keyboards/ploopyco/trackball_mini/keymaps/via/config.h @@ -0,0 +1,21 @@ +/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * Copyright 2019 Sunjun Kim + * Copyright 2020 Ploopy Corporation + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define DYNAMIC_KEYMAP_LAYER_COUNT 8 diff --git a/keyboards/ploopyco/trackball_mini/keymaps/via/keymap.c b/keyboards/ploopyco/trackball_mini/keymaps/via/keymap.c new file mode 100644 index 0000000000..31539be2ec --- /dev/null +++ b/keyboards/ploopyco/trackball_mini/keymaps/via/keymap.c @@ -0,0 +1,30 @@ +/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * Copyright 2019 Sunjun Kim + * Copyright 2020 Ploopy Corporation + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( KC_BTN1, KC_BTN3, KC_BTN2, KC_BTN4, KC_BTN5 ), + [1] = LAYOUT( _______, _______, _______, _______, _______ ), + [2] = LAYOUT( _______, _______, _______, _______, _______ ), + [3] = LAYOUT( _______, _______, _______, _______, _______ ), + [4] = LAYOUT( _______, _______, _______, _______, _______ ), + [5] = LAYOUT( _______, _______, _______, _______, _______ ), + [6] = LAYOUT( _______, _______, _______, _______, _______ ), + [7] = LAYOUT( _______, _______, _______, _______, _______ ) +}; diff --git a/keyboards/ploopyco/trackball_mini/keymaps/via/rules.mk b/keyboards/ploopyco/trackball_mini/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/ploopyco/trackball_mini/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/ploopyco/trackball_mini/readme.md b/keyboards/ploopyco/trackball_mini/readme.md new file mode 100644 index 0000000000..8b8482a387 --- /dev/null +++ b/keyboards/ploopyco/trackball_mini/readme.md @@ -0,0 +1,75 @@ + +# Ploopy Trackball Mini + +![Ploopyco Trackball Mini](mini.jpg) + +It's a DIY, QMK Powered Trackball...Mini! + +* Maintainer: [PloopyCo](https://github.com/ploopyco) +* Key contributors: [Drashna Jael're](https://github.com/drashna/), [Germ](https://github.com/germ/) +* Hardware Supported: ATMega32u4 16MHz(5v) +* Hardware Availability: [Store](https://ploopy.co), [GitHub](https://github.com/ploopyco) + +Make example for this trackball (after setting up your build environment): + + make ploopyco/trackball_mini/rev1_001:default:flash + make ploopyco/trackball_mini/rev1_001:via:flash + +To jump to the bootloader, hold down "Button 4" (immediate right of the ball) + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Hardware Reset Button + +The Ploopy Mini has a handy bootloader reset mechanism: two via pins on the board, designated by the reference designator `MCU.J.X BOOTLOADER`. If you stick an uninsulated paperclip or a pair of metal tweezers into both holes and plug in the Mini, it will start in bootloader mode. + +## Revisions + +Occasionally, new revisions of the PCB will be released. Every board comes with a designator that looks something like `R1.001`. + +Match the firmware that you flash onto the board with the designator on the board. + +# Customzing your Ploopy Mini Trackball + +While the defaults are designed so that it can be plugged in and used right away, there are a number of things that you may want to change, such as adding DPI control, or using the ball to scroll while holding a button. To allow for this sort of control, there is a callback for both the scroll wheel and the mouse sensor. + +The default behavior for this is: + +```c +void process_wheel_user(report_mouse_t* mouse_report, int16_t h, int16_t v) { + mouse_report->h = h; + mouse_report->v = v; +} + +void process_mouse_user(report_mouse_t* mouse_report, int16_t x, int16_t y) { + mouse_report->x = x; + mouse_report->y = y; +} +``` + +This should allow you to more heavily customize the behavior. + +Alternatively, the `process_wheel` and `process_mouse` functions can both be replaced too, to allow for even more functionality. + +Additionally, you can change the DPI/CPI or speed of the trackball by calling `adns_set_cpi` at any time. Additionally, there is a `DPI_CONFIG` macro that will cycle through an array of options for the DPI. This is set to 375, 750, and 1375, but can be changed. 750 is the default. + +To configure/set your own array, there are two defines to use, `PLOOPY_DPI_OPTIONS` to set the array, and `PLOOPY_DPI_DEFAULT`. + +```c +#define PLOOPY_DPI_OPTIONS { CPI375, CPI750, CPI1375} +#define PLOOPY_DPI_DEFAULT 1 +``` + +The `PLOOPY_DPI_OPTIONS` array sets the values that you want to be able to cycle through, and the order they are in. The "default" define lets the firmware know which of these options is the default and should be loaded by default. + +The `DPI_CONFIG` macro will cycle through the values in the array, each time you hit it. It stores this value in persistent memory, so it will load it the next time the device powers up. + +## Fuse settings + +When flashing the bootloader, use the following fuse settings: + +| Fuse | Setting | +|----------|-------------| +| Low | `0x5E` | +| High | `0x99` | +| Extended | `0xC3` | \ No newline at end of file diff --git a/keyboards/ploopyco/trackball_mini/rev1_001/config.h b/keyboards/ploopyco/trackball_mini/rev1_001/config.h new file mode 100644 index 0000000000..3f5941decc --- /dev/null +++ b/keyboards/ploopyco/trackball_mini/rev1_001/config.h @@ -0,0 +1,40 @@ +/* Copyright 2021 Colin Lam (Ploopy Corporation) + * Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * Copyright 2019 Sunjun Kim + * Copyright 2019 Hiroyuki Okada + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ +#define DIRECT_PINS \ + { \ + { D4, D2, E6, D7, B6 } \ + } + +// These pins are not broken out, and cannot be used normally. +// They are set as output and pulled high, by default +#define UNUSED_PINS \ + { B5, C7, D0, D1, D3, D5, D6, F1, F3, F5, F6, F7 } diff --git a/keyboards/ploopyco/trackball_mini/rev1_001/readme.md b/keyboards/ploopyco/trackball_mini/rev1_001/readme.md new file mode 100644 index 0000000000..e8a5a918e4 --- /dev/null +++ b/keyboards/ploopyco/trackball_mini/rev1_001/readme.md @@ -0,0 +1 @@ +See the main readme for more details. This is just here for when future revisions are released. diff --git a/keyboards/ploopyco/trackball_mini/rev1_001/rev1_001.h b/keyboards/ploopyco/trackball_mini/rev1_001/rev1_001.h new file mode 100644 index 0000000000..4f34e17dd4 --- /dev/null +++ b/keyboards/ploopyco/trackball_mini/rev1_001/rev1_001.h @@ -0,0 +1,22 @@ +/* Copyright 2021 Colin Lam (Ploopy Corporation) + * Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * Copyright 2019 Sunjun Kim + * Copyright 2019 Hiroyuki Okada + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "trackball_mini.h" diff --git a/keyboards/ploopyco/trackball_mini/rev1_001/rules.mk b/keyboards/ploopyco/trackball_mini/rev1_001/rules.mk new file mode 100644 index 0000000000..e69de29bb2 diff --git a/keyboards/ploopyco/trackball_mini/rules.mk b/keyboards/ploopyco/trackball_mini/rules.mk new file mode 100644 index 0000000000..58fad239f4 --- /dev/null +++ b/keyboards/ploopyco/trackball_mini/rules.mk @@ -0,0 +1,32 @@ +# MCU name +MCU = atmega32u4 + +# Processor frequency +F_CPU = 16000000 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +POINTING_DEVICE_ENABLE = yes +MOUSEKEY_ENABLE = no # Mouse keys + +QUANTUM_LIB_SRC += analog.c +SRC += adns5050.c opt_encoder.c + +DEFAULT_FOLDER = ploopyco/trackball_mini/rev1_001 diff --git a/keyboards/ploopyco/trackball_mini/trackball_mini.c b/keyboards/ploopyco/trackball_mini/trackball_mini.c new file mode 100644 index 0000000000..4ae5df0837 --- /dev/null +++ b/keyboards/ploopyco/trackball_mini/trackball_mini.c @@ -0,0 +1,235 @@ +/* Copyright 2021 Colin Lam (Ploopy Corporation) + * Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * Copyright 2019 Sunjun Kim + * Copyright 2019 Hiroyuki Okada + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "trackball_mini.h" + +#ifndef OPT_DEBOUNCE +# define OPT_DEBOUNCE 5 // (ms) Time between scroll events +#endif + +#ifndef SCROLL_BUTT_DEBOUNCE +# define SCROLL_BUTT_DEBOUNCE 100 // (ms) Time between scroll events +#endif + +#ifndef OPT_THRES +# define OPT_THRES 150 // (0-1024) Threshold for actication +#endif + +#ifndef OPT_SCALE +# define OPT_SCALE 1 // Multiplier for wheel +#endif + +#ifndef PLOOPY_DPI_OPTIONS +# define PLOOPY_DPI_OPTIONS { CPI375, CPI750, CPI1375 } +# ifndef PLOOPY_DPI_DEFAULT +# define PLOOPY_DPI_DEFAULT 2 +# endif +#endif + +#ifndef PLOOPY_DPI_DEFAULT +# define PLOOPY_DPI_DEFAULT 1 +#endif + +// Transformation constants for delta-X and delta-Y +const static float ADNS_X_TRANSFORM = -1.0; +const static float ADNS_Y_TRANSFORM = 1.0; + +keyboard_config_t keyboard_config; +uint16_t dpi_array[] = PLOOPY_DPI_OPTIONS; +#define DPI_OPTION_SIZE (sizeof(dpi_array) / sizeof(uint16_t)) + +// TODO: Implement libinput profiles +// https://wayland.freedesktop.org/libinput/doc/latest/pointer-acceleration.html +// Compile time accel selection +// Valid options are ACC_NONE, ACC_LINEAR, ACC_CUSTOM, ACC_QUADRATIC + +// Trackball State +bool is_scroll_clicked = false; +bool BurstState = false; // init burst state for Trackball module +uint16_t MotionStart = 0; // Timer for accel, 0 is resting state +uint16_t lastScroll = 0; // Previous confirmed wheel event +uint16_t lastMidClick = 0; // Stops scrollwheel from being read if it was pressed +uint8_t OptLowPin = OPT_ENC1; +bool debug_encoder = false; + +__attribute__((weak)) void process_wheel_user(report_mouse_t* mouse_report, int16_t h, int16_t v) { + mouse_report->h = h; + mouse_report->v = v; +} + +__attribute__((weak)) void process_wheel(report_mouse_t* mouse_report) { + // If the mouse wheel was just released, do not scroll. + if (timer_elapsed(lastMidClick) < SCROLL_BUTT_DEBOUNCE) + return; + + // Limit the number of scrolls per unit time. + if (timer_elapsed(lastScroll) < OPT_DEBOUNCE) + return; + + // Don't scroll if the middle button is depressed. + if (is_scroll_clicked) { +#ifndef IGNORE_SCROLL_CLICK + return; +#endif + } + + lastScroll = timer_read(); + uint16_t p1 = adc_read(OPT_ENC1_MUX); + uint16_t p2 = adc_read(OPT_ENC2_MUX); + + if (debug_encoder) + dprintf("OPT1: %d, OPT2: %d\n", p1, p2); + + uint8_t dir = opt_encoder_handler(p1, p2); + + if (dir == 0) + return; + + process_wheel_user(mouse_report, mouse_report->h, (int)(mouse_report->v + (dir * OPT_SCALE))); +} + +__attribute__((weak)) void process_mouse_user(report_mouse_t* mouse_report, int16_t x, int16_t y) { + // x and y are swapped + // the sensor is rotated + // by 90 degrees + int16_t temp = x; + x = y; + y = temp; + + // Apply delta-X and delta-Y transformations. + float xt = (float) x * ADNS_X_TRANSFORM; + float yt = (float) y * ADNS_Y_TRANSFORM; + + int16_t xti = xt; + int16_t yti = yt; + + mouse_report->x = xti; + mouse_report->y = yti; +} + +__attribute__((weak)) void process_mouse(report_mouse_t* mouse_report) { + report_adns_t data = adns_read_burst(); + + if (data.dx != 0 || data.dy != 0) { + if (debug_mouse) + dprintf("Raw ] X: %d, Y: %d\n", data.dx, data.dy); + + process_mouse_user(mouse_report, data.dx, data.dy); + } +} + +bool process_record_kb(uint16_t keycode, keyrecord_t* record) { + xprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed); + + // Update Timer to prevent accidental scrolls + if ((record->event.key.col == 1) && (record->event.key.row == 0)) { + lastMidClick = timer_read(); + is_scroll_clicked = record->event.pressed; + } + + if (!process_record_user(keycode, record)) + return false; + + if (keycode == DPI_CONFIG && record->event.pressed) { + keyboard_config.dpi_config = (keyboard_config.dpi_config + 1) % DPI_OPTION_SIZE; + eeconfig_update_kb(keyboard_config.raw); + adns_set_cpi(dpi_array[keyboard_config.dpi_config]); + } + +/* If Mousekeys is disabled, then use handle the mouse button + * keycodes. This makes things simpler, and allows usage of + * the keycodes in a consistent manner. But only do this if + * Mousekeys is not enable, so it's not handled twice. + */ +#ifndef MOUSEKEY_ENABLE + if (IS_MOUSEKEY_BUTTON(keycode)) { + report_mouse_t currentReport = pointing_device_get_report(); + if (record->event.pressed) { + currentReport.buttons |= 1 << (keycode - KC_MS_BTN1); + } else { + currentReport.buttons &= ~(1 << (keycode - KC_MS_BTN1)); + } + pointing_device_set_report(currentReport); + pointing_device_send(); + } +#endif + + return true; +} + +// Hardware Setup +void keyboard_pre_init_kb(void) { + // debug_enable = true; + // debug_matrix = true; + debug_mouse = true; + // debug_encoder = true; + + setPinInput(OPT_ENC1); + setPinInput(OPT_ENC2); + + /* Ground all output pins connected to ground. This provides additional + * pathways to ground. If you're messing with this, know this: driving ANY + * of these pins high will cause a short. On the MCU. Ka-blooey. + */ +#ifdef UNUSED_PINS + const pin_t unused_pins[] = UNUSED_PINS; + + for (uint8_t i = 0; i < (sizeof(unused_pins) / sizeof(pin_t)); i++) { + setPinOutput(unused_pins[i]); + writePinLow(unused_pins[i]); + } +#endif + + keyboard_pre_init_user(); +} + +void pointing_device_init(void) { + adns_init(); + opt_encoder_init(); +} + +void pointing_device_task(void) { + report_mouse_t mouse_report = pointing_device_get_report(); + process_wheel(&mouse_report); + process_mouse(&mouse_report); + pointing_device_set_report(mouse_report); + pointing_device_send(); +} + +void eeconfig_init_kb(void) { + keyboard_config.dpi_config = PLOOPY_DPI_DEFAULT; + eeconfig_update_kb(keyboard_config.raw); + eeconfig_init_user(); +} + +void matrix_init_kb(void) { + // is safe to just read DPI setting since matrix init + // comes before pointing device init. + keyboard_config.raw = eeconfig_read_kb(); + if (keyboard_config.dpi_config > DPI_OPTION_SIZE) { + eeconfig_init_kb(); + } + matrix_init_user(); +} + +void keyboard_post_init_kb(void) { + adns_set_cpi(dpi_array[keyboard_config.dpi_config]); + + keyboard_post_init_user(); +} diff --git a/keyboards/ploopyco/trackball_mini/trackball_mini.h b/keyboards/ploopyco/trackball_mini/trackball_mini.h new file mode 100644 index 0000000000..b9754cbc72 --- /dev/null +++ b/keyboards/ploopyco/trackball_mini/trackball_mini.h @@ -0,0 +1,54 @@ +/* Copyright 2021 Colin Lam (Ploopy Corporation) + * Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * Copyright 2019 Sunjun Kim + * Copyright 2019 Hiroyuki Okada + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" +#include "adns5050.h" +#include "analog.h" +#include "opt_encoder.h" +#include "pointing_device.h" + +// Sensor defs +#define OPT_ENC1 F0 +#define OPT_ENC2 F4 +#define OPT_ENC1_MUX 0 +#define OPT_ENC2_MUX 4 + +void process_mouse(report_mouse_t* mouse_report); +void process_mouse_user(report_mouse_t* mouse_report, int16_t x, int16_t y); +void process_wheel(report_mouse_t* mouse_report); +void process_wheel_user(report_mouse_t* mouse_report, int16_t h, int16_t v); + +#define LAYOUT(BL, BM, BR, BF, BB) \ + { {BL, BM, BR, BF, BB}, } + +typedef union { + uint32_t raw; + struct { + uint8_t dpi_config; + }; +} keyboard_config_t; + +extern keyboard_config_t keyboard_config; + +enum ploopy_keycodes { + DPI_CONFIG = SAFE_RANGE, + PLOOPY_SAFE_RANGE, +}; diff --git a/keyboards/ploopyco/trackball_nano/config.h b/keyboards/ploopyco/trackball_nano/config.h new file mode 100644 index 0000000000..54fe840ceb --- /dev/null +++ b/keyboards/ploopyco/trackball_nano/config.h @@ -0,0 +1,48 @@ +/* Copyright 2021 Colin Lam (Ploopy Corporation) + * Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * Copyright 2019 Sunjun Kim + * Copyright 2019 Hiroyuki Okada + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x5043 +#define PRODUCT_ID 0x1EAB +#define DEVICE_VER 0x0001 +#define MANUFACTURER PloopyCo +#define PRODUCT Trackball Nano + +/* key matrix size */ +#define MATRIX_ROWS 1 +#define MATRIX_COLS 1 + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 0 + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Much more so than a keyboard, speed matters for a mouse. So we'll go for as high + a polling rate as possible. */ +#define USB_POLLING_INTERVAL_MS 1 +#define USB_MAX_POWER_CONSUMPTION 100 diff --git a/keyboards/ploopyco/trackball_nano/info.json b/keyboards/ploopyco/trackball_nano/info.json new file mode 100644 index 0000000000..a788ce9eb1 --- /dev/null +++ b/keyboards/ploopyco/trackball_nano/info.json @@ -0,0 +1,13 @@ +{ + "keyboard_name": "Ploopy Trackball Nano", + "url": "www.ploopy.co", + "maintainer": "ploopyco", + "manufacturer": "Ploopy Corporation", + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0} + ] + } + } +} diff --git a/keyboards/ploopyco/trackball_nano/keymaps/default/keymap.c b/keyboards/ploopyco/trackball_nano/keymaps/default/keymap.c new file mode 100644 index 0000000000..1140c30a1d --- /dev/null +++ b/keyboards/ploopyco/trackball_nano/keymaps/default/keymap.c @@ -0,0 +1,23 @@ +/* Copyright 2021 Colin Lam (Ploopy Corporation) + * Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * Copyright 2019 Sunjun Kim + * Copyright 2019 Hiroyuki Okada + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// safe range starts at `PLOOPY_SAFE_RANGE` instead. + +// placeholder file so it will compile \ No newline at end of file diff --git a/keyboards/ploopyco/trackball_nano/keymaps/default/readme.md b/keyboards/ploopyco/trackball_nano/keymaps/default/readme.md new file mode 100644 index 0000000000..ebb90d2999 --- /dev/null +++ b/keyboards/ploopyco/trackball_nano/keymaps/default/readme.md @@ -0,0 +1,3 @@ +The default keymap for the Ploopy Trackball Mini. + +Note that kits bought from PloopyCo actually ship with the VIA keymap, not this one. \ No newline at end of file diff --git a/keyboards/ploopyco/trackball_nano/readme.md b/keyboards/ploopyco/trackball_nano/readme.md new file mode 100644 index 0000000000..8a293602a8 --- /dev/null +++ b/keyboards/ploopyco/trackball_nano/readme.md @@ -0,0 +1,54 @@ + + +# Ploopy Trackball Nano + +![Ploopyco Trackball Nano](https://www.ploopy.co/uploads/b/113cb4122f867acc306a72a2741c5237a9b1d0db13abfe4e8e394cd466c4a311/_MG_7710_1614037372.jpg) + +It's a DIY, QMK Powered Trackball...Nano! + +* Maintainer: [PloopyCo](https://github.com/ploopyco) +* Key contributors: [Drashna Jael're](https://github.com/drashna/), [Germ](https://github.com/germ/) +* Hardware Supported: ATMega32u4 16MHz(5v) +* Hardware Availability: [Store](https://ploopy.co/nano-trackball), [GitHub](https://github.com/ploopyco/nano-trackball) + +Make example for this trackball (after setting up your build environment): + + make ploopyco/trackball_nano/rev1_001:default:flash + make ploopyco/trackball_nano/rev1_001:via:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Hardware Reset Button + +The Ploopy Nano has a handy bootloader reset mechanism: two via pins on the board, designated by the reference designator `MCU.J.X BOOTLOADER`. If you stick an uninsulated paperclip or a pair of metal tweezers into both holes and plug in the Nano, it will start in bootloader mode. + +## Revisions + +Occasionally, new revisions of the PCB will be released. Every board comes with a designator that looks something like `R1.001`. + +Match the firmware that you flash onto the board with the designator on the board. + +# Customzing your Ploopy Nano Trackball + +You can change the DPI/CPI or speed of the trackball by calling `adns_set_cpi` at any time. Additionally, there is a `DPI_CONFIG` macro that will cycle through an array of options for the DPI. This is set to 375, 750, and 1375, but can be changed. 750 is the default. + +To configure/set your own array, there are two defines to use, `PLOOPY_DPI_OPTIONS` to set the array, and `PLOOPY_DPI_DEFAULT`. + +```c +#define PLOOPY_DPI_OPTIONS { CPI375, CPI750, CPI1375} +#define PLOOPY_DPI_DEFAULT 1 +``` + +The `PLOOPY_DPI_OPTIONS` array sets the values that you want to be able to cycle through, and the order they are in. The "default" define lets the firmware know which of these options is the default and should be loaded by default. + +The `DPI_CONFIG` macro will cycle through the values in the array, each time you hit it. It stores this value in persistent memory, so it will load it the next time the device powers up. + +## Fuse settings + +When flashing the bootloader, use the following fuse settings: + +| Fuse | Setting | +|----------|-------------| +| Low | `0x5E` | +| High | `0x99` | +| Extended | `0xC3` | \ No newline at end of file diff --git a/keyboards/ploopyco/trackball_nano/rev1_001/config.h b/keyboards/ploopyco/trackball_nano/rev1_001/config.h new file mode 100644 index 0000000000..63780ef048 --- /dev/null +++ b/keyboards/ploopyco/trackball_nano/rev1_001/config.h @@ -0,0 +1,37 @@ +/* Copyright 2021 Colin Lam (Ploopy Corporation) + * Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * Copyright 2019 Sunjun Kim + * Copyright 2019 Hiroyuki Okada + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ +#define DIRECT_PINS {} + +// These pins are not broken out, and cannot be used normally. +// They are set as output and pulled high, by default +#define UNUSED_PINS \ + { B5, B6, C7, D0, D1, D2, D3, D4, D5, D6, D7, E6, F1, F3, F5, F6, F7 } diff --git a/keyboards/ploopyco/trackball_nano/rev1_001/readme.md b/keyboards/ploopyco/trackball_nano/rev1_001/readme.md new file mode 100644 index 0000000000..052a17f396 --- /dev/null +++ b/keyboards/ploopyco/trackball_nano/rev1_001/readme.md @@ -0,0 +1 @@ +See the main readme for more details. This is just here for when future revisions of the board are released. diff --git a/keyboards/ploopyco/trackball_nano/rev1_001/rev1_001.h b/keyboards/ploopyco/trackball_nano/rev1_001/rev1_001.h new file mode 100644 index 0000000000..4f34e17dd4 --- /dev/null +++ b/keyboards/ploopyco/trackball_nano/rev1_001/rev1_001.h @@ -0,0 +1,22 @@ +/* Copyright 2021 Colin Lam (Ploopy Corporation) + * Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * Copyright 2019 Sunjun Kim + * Copyright 2019 Hiroyuki Okada + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "trackball_mini.h" diff --git a/keyboards/ploopyco/trackball_nano/rev1_001/rules.mk b/keyboards/ploopyco/trackball_nano/rev1_001/rules.mk new file mode 100644 index 0000000000..e69de29bb2 diff --git a/keyboards/ploopyco/trackball_nano/rules.mk b/keyboards/ploopyco/trackball_nano/rules.mk new file mode 100644 index 0000000000..0286194b9f --- /dev/null +++ b/keyboards/ploopyco/trackball_nano/rules.mk @@ -0,0 +1,32 @@ +# MCU name +MCU = atmega32u4 + +# Processor frequency +F_CPU = 16000000 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +POINTING_DEVICE_ENABLE = yes +MOUSEKEY_ENABLE = no # Mouse keys + +QUANTUM_LIB_SRC += analog.c +SRC += adns5050.c opt_encoder.c + +DEFAULT_FOLDER = ploopyco/trackball_nano/rev1_001 diff --git a/keyboards/ploopyco/trackball_nano/trackball_nano.c b/keyboards/ploopyco/trackball_nano/trackball_nano.c new file mode 100644 index 0000000000..93cb60bd4b --- /dev/null +++ b/keyboards/ploopyco/trackball_nano/trackball_nano.c @@ -0,0 +1,211 @@ +/* Copyright 2021 Colin Lam (Ploopy Corporation) + * Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * Copyright 2019 Sunjun Kim + * Copyright 2019 Hiroyuki Okada + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "trackball_nano.h" + +#ifndef OPT_DEBOUNCE +# define OPT_DEBOUNCE 5 // (ms) Time between scroll events +#endif + +#ifndef SCROLL_BUTT_DEBOUNCE +# define SCROLL_BUTT_DEBOUNCE 100 // (ms) Time between scroll events +#endif + +#ifndef OPT_THRES +# define OPT_THRES 150 // (0-1024) Threshold for actication +#endif + +#ifndef OPT_SCALE +# define OPT_SCALE 1 // Multiplier for wheel +#endif + +#ifndef PLOOPY_DPI_OPTIONS +# define PLOOPY_DPI_OPTIONS { CPI375, CPI750, CPI1375 } +# ifndef PLOOPY_DPI_DEFAULT +# define PLOOPY_DPI_DEFAULT 2 +# endif +#endif + +#ifndef PLOOPY_DPI_DEFAULT +# define PLOOPY_DPI_DEFAULT 1 +#endif + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; + +// Transformation constants for delta-X and delta-Y +const static float ADNS_X_TRANSFORM = -1.0; +const static float ADNS_Y_TRANSFORM = 1.0; + +keyboard_config_t keyboard_config; +uint16_t dpi_array[] = PLOOPY_DPI_OPTIONS; +#define DPI_OPTION_SIZE (sizeof(dpi_array) / sizeof(uint16_t)) + +// TODO: Implement libinput profiles +// https://wayland.freedesktop.org/libinput/doc/latest/pointer-acceleration.html +// Compile time accel selection +// Valid options are ACC_NONE, ACC_LINEAR, ACC_CUSTOM, ACC_QUADRATIC + +// Trackball State +bool is_scroll_clicked = false; +bool BurstState = false; // init burst state for Trackball module +uint16_t MotionStart = 0; // Timer for accel, 0 is resting state +uint16_t lastScroll = 0; // Previous confirmed wheel event +uint16_t lastMidClick = 0; // Stops scrollwheel from being read if it was pressed +uint8_t OptLowPin = OPT_ENC1; +bool debug_encoder = false; + +__attribute__((weak)) void process_wheel_user(report_mouse_t* mouse_report, int16_t h, int16_t v) { + // There's no scroller on this device. + return; +} + +__attribute__((weak)) void process_wheel(report_mouse_t* mouse_report) { + // There's no scroller on this device. + return; +} + +__attribute__((weak)) void process_mouse_user(report_mouse_t* mouse_report, int16_t x, int16_t y) { + // x and y are swapped + // the sensor is rotated + // by 90 degrees + int16_t temp = x; + x = y; + y = temp; + + // Apply delta-X and delta-Y transformations. + float xt = (float) x * ADNS_X_TRANSFORM; + float yt = (float) y * ADNS_Y_TRANSFORM; + + int16_t xti = xt; + int16_t yti = yt; + + mouse_report->x = xti; + mouse_report->y = yti; +} + +__attribute__((weak)) void process_mouse(report_mouse_t* mouse_report) { + report_adns_t data = adns_read_burst(); + + if (data.dx != 0 || data.dy != 0) { + if (debug_mouse) + dprintf("Raw ] X: %d, Y: %d\n", data.dx, data.dy); + + process_mouse_user(mouse_report, data.dx, data.dy); + } +} + +bool process_record_kb(uint16_t keycode, keyrecord_t* record) { + xprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed); + + // Update Timer to prevent accidental scrolls + if ((record->event.key.col == 1) && (record->event.key.row == 0)) { + lastMidClick = timer_read(); + is_scroll_clicked = record->event.pressed; + } + + if (!process_record_user(keycode, record)) + return false; + + if (keycode == DPI_CONFIG && record->event.pressed) { + keyboard_config.dpi_config = (keyboard_config.dpi_config + 1) % DPI_OPTION_SIZE; + eeconfig_update_kb(keyboard_config.raw); + adns_set_cpi(dpi_array[keyboard_config.dpi_config]); + } + +/* If Mousekeys is disabled, then use handle the mouse button + * keycodes. This makes things simpler, and allows usage of + * the keycodes in a consistent manner. But only do this if + * Mousekeys is not enable, so it's not handled twice. + */ +#ifndef MOUSEKEY_ENABLE + if (IS_MOUSEKEY_BUTTON(keycode)) { + report_mouse_t currentReport = pointing_device_get_report(); + if (record->event.pressed) { + currentReport.buttons |= 1 << (keycode - KC_MS_BTN1); + } else { + currentReport.buttons &= ~(1 << (keycode - KC_MS_BTN1)); + } + pointing_device_set_report(currentReport); + pointing_device_send(); + } +#endif + + return true; +} + +// Hardware Setup +void keyboard_pre_init_kb(void) { + // debug_enable = true; + // debug_matrix = true; + debug_mouse = true; + // debug_encoder = true; + + setPinInput(OPT_ENC1); + setPinInput(OPT_ENC2); + + /* Ground all output pins connected to ground. This provides additional + * pathways to ground. If you're messing with this, know this: driving ANY + * of these pins high will cause a short. On the MCU. Ka-blooey. + */ +#ifdef UNUSED_PINS + const pin_t unused_pins[] = UNUSED_PINS; + + for (uint8_t i = 0; i < (sizeof(unused_pins) / sizeof(pin_t)); i++) { + setPinOutput(unused_pins[i]); + writePinLow(unused_pins[i]); + } +#endif + + keyboard_pre_init_user(); +} + +void pointing_device_init(void) { + adns_init(); + opt_encoder_init(); +} + +void pointing_device_task(void) { + report_mouse_t mouse_report = pointing_device_get_report(); + process_wheel(&mouse_report); + process_mouse(&mouse_report); + pointing_device_set_report(mouse_report); + pointing_device_send(); +} + +void eeconfig_init_kb(void) { + keyboard_config.dpi_config = PLOOPY_DPI_DEFAULT; + eeconfig_update_kb(keyboard_config.raw); + eeconfig_init_user(); +} + +void matrix_init_kb(void) { + // is safe to just read DPI setting since matrix init + // comes before pointing device init. + keyboard_config.raw = eeconfig_read_kb(); + if (keyboard_config.dpi_config > DPI_OPTION_SIZE) { + eeconfig_init_kb(); + } + matrix_init_user(); +} + +void keyboard_post_init_kb(void) { + adns_set_cpi(dpi_array[keyboard_config.dpi_config]); + + keyboard_post_init_user(); +} diff --git a/keyboards/ploopyco/trackball_nano/trackball_nano.h b/keyboards/ploopyco/trackball_nano/trackball_nano.h new file mode 100644 index 0000000000..4bffb04607 --- /dev/null +++ b/keyboards/ploopyco/trackball_nano/trackball_nano.h @@ -0,0 +1,53 @@ +/* Copyright 2021 Colin Lam (Ploopy Corporation) + * Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * Copyright 2019 Sunjun Kim + * Copyright 2019 Hiroyuki Okada + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" +#include "adns5050.h" +#include "analog.h" +#include "opt_encoder.h" +#include "pointing_device.h" + +// Sensor defs +#define OPT_ENC1 F0 +#define OPT_ENC2 F4 +#define OPT_ENC1_MUX 0 +#define OPT_ENC2_MUX 4 + +void process_mouse(report_mouse_t* mouse_report); +void process_mouse_user(report_mouse_t* mouse_report, int16_t x, int16_t y); +void process_wheel(report_mouse_t* mouse_report); +void process_wheel_user(report_mouse_t* mouse_report, int16_t h, int16_t v); + +#define LAYOUT(k00) {{ KC_NO }} + +typedef union { + uint32_t raw; + struct { + uint8_t dpi_config; + }; +} keyboard_config_t; + +extern keyboard_config_t keyboard_config; + +enum ploopy_keycodes { + DPI_CONFIG = SAFE_RANGE, + PLOOPY_SAFE_RANGE, +}; From 816f2f9cc234b5a98512a483b2781b1c2875f24f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=A6=88=EB=88=85?= Date: Thu, 25 Mar 2021 21:11:16 +0900 Subject: [PATCH 142/613] Fix Kinetic speed condition (#12139) --- quantum/mousekey.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quantum/mousekey.c b/quantum/mousekey.c index 63e74baa93..99bfd6b96f 100644 --- a/quantum/mousekey.c +++ b/quantum/mousekey.c @@ -108,7 +108,7 @@ static uint8_t wheel_unit(void) { } # else /* #ifndef MK_COMBINED */ -# ifndef MK_KINETIC_SPEED +# ifdef MK_KINETIC_SPEED /* * Kinetic movement acceleration algorithm From 5c1442766c10e98a0152b847ccf4d48899558cea Mon Sep 17 00:00:00 2001 From: purple-rw <32964049+purple-rw@users.noreply.github.com> Date: Thu, 25 Mar 2021 05:13:41 -0700 Subject: [PATCH 143/613] fix permissive hold when both PERMISSIVE_HOLD_PER_KEY and TAPPING_TERM_PER_KEY are defined (#12125) Co-authored-by: checyr <32964049+checyr@users.noreply.github.com> --- tmk_core/common/action_tapping.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/tmk_core/common/action_tapping.c b/tmk_core/common/action_tapping.c index fe545c79a0..25b200448f 100644 --- a/tmk_core/common/action_tapping.c +++ b/tmk_core/common/action_tapping.c @@ -121,12 +121,20 @@ bool process_tapping(keyrecord_t *keyp) { */ # if defined(TAPPING_TERM_PER_KEY) || (TAPPING_TERM >= 500) || defined(PERMISSIVE_HOLD) || defined(PERMISSIVE_HOLD_PER_KEY) else if ( + (( # ifdef TAPPING_TERM_PER_KEY - (get_tapping_term(get_event_keycode(tapping_key.event, false), keyp) >= 500) && + get_tapping_term(get_event_keycode(tapping_key.event, false), keyp) +# else + TAPPING_TERM # endif + >= 500 ) + # ifdef PERMISSIVE_HOLD_PER_KEY - !get_permissive_hold(get_event_keycode(tapping_key.event, false), keyp) && + || get_permissive_hold(get_event_keycode(tapping_key.event, false), keyp) +# elif defined(PERMISSIVE_HOLD) + || true # endif + ) && IS_RELEASED(event) && waiting_buffer_typed(event)) { debug("Tapping: End. No tap. Interfered by typing key\n"); process_record(&tapping_key); From 0a056cfd811ea92384185f06a55b0051948f4860 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 25 Mar 2021 23:18:59 +1100 Subject: [PATCH 144/613] Format code according to conventions (#12380) Co-authored-by: QMK Bot --- tmk_core/common/action_tapping.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/tmk_core/common/action_tapping.c b/tmk_core/common/action_tapping.c index 25b200448f..56044e096d 100644 --- a/tmk_core/common/action_tapping.c +++ b/tmk_core/common/action_tapping.c @@ -120,22 +120,21 @@ bool process_tapping(keyrecord_t *keyp) { * useful for long TAPPING_TERM but may prevent fast typing. */ # if defined(TAPPING_TERM_PER_KEY) || (TAPPING_TERM >= 500) || defined(PERMISSIVE_HOLD) || defined(PERMISSIVE_HOLD_PER_KEY) - else if ( - (( + else if ((( # ifdef TAPPING_TERM_PER_KEY - get_tapping_term(get_event_keycode(tapping_key.event, false), keyp) + get_tapping_term(get_event_keycode(tapping_key.event, false), keyp) # else - TAPPING_TERM + TAPPING_TERM # endif - >= 500 ) + >= 500) # ifdef PERMISSIVE_HOLD_PER_KEY - || get_permissive_hold(get_event_keycode(tapping_key.event, false), keyp) + || get_permissive_hold(get_event_keycode(tapping_key.event, false), keyp) # elif defined(PERMISSIVE_HOLD) - || true + || true # endif - ) && - IS_RELEASED(event) && waiting_buffer_typed(event)) { + ) && + IS_RELEASED(event) && waiting_buffer_typed(event)) { debug("Tapping: End. No tap. Interfered by typing key\n"); process_record(&tapping_key); tapping_key = (keyrecord_t){}; From 9f1608a6a2c7137c0c6ff0f40ddce67ad018aa80 Mon Sep 17 00:00:00 2001 From: Takeshi Nishio Date: Thu, 25 Mar 2021 21:38:31 +0900 Subject: [PATCH 145/613] Add unison v04 keyboard (#11982) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update: Jonesã®MIDIキーマップをベースã«åˆæœŸä½œæˆã€‚Audioã¨MIDIã®åŒæ™‚使用ã¯ãƒ•ァームウェアサイズ的ã«å޳ã—ã„。 * Update: Unison用ã®IDã¸å¤‰æ›´ * Update: Audioã¯ãƒ‡ãƒ•ã‚©ã¨ã›ãšã€OLEDをデフォã¨ã—ãŸã€‚ * Update: v03基æ¿ã‹ã‚‰å®Ÿéš›ã«å‹•ãã‚‚ã®ã¨ãªã£ãŸãŸã‚ã€v01ã‹ã‚‰v03ã«å¤‰æ›´ã€‚基本的ãªè¨­å®šã‚’完了。 * Update: 基本的ãªã‚­ãƒ¼ãƒžãƒƒãƒ—ã‚’ä½œæˆ * Update: キーマップã€ãƒ­ãƒ¼ã‚¿ãƒªãƒ¼ã‚¨ãƒ³ã‚³ãƒ¼ãƒ€ã®æ„Ÿåº¦ã‚’調整。 * TEST: BOOTMAGIC = lite ã§ã©ã†ãªã‚‹ã®ã‹ãƒ†ã‚¹ãƒˆ * Update: Jones ---> Unison * TEST: BOOTMAGIC = lite ã§ã€TABキーã§Bootloaerã«å…¥ã‚‹è¨­å®š * Update: インデント * Update: QMKã®ä¸€èˆ¬çš„ãªè¡¨è¨˜ã«åˆã‚ã›ã€ k(col)(row) ã‹ã‚‰ k(row)(col) ã¸å¤‰æ›´ã€‚ * Update: 自å‰ã®ã‚«ã‚¹ã‚¿ãƒ ãƒžãƒˆãƒªã‚¯ã‚¹ã‚’使用ã›ãšã€COL2ROWæ–¹å¼ã§ç·å½“ãŸã‚Šãƒžãƒˆãƒªã‚¯ã‚¹ã‚’動作ã•ã›ã‚‹ãƒ†ã‚¹ãƒˆã‚’開始。 特ã«å•題ãªã動作ã—ã¦ã„る。 * TEST: BOOTMAGICテスト用コード追加 * Update: 主ã«ä¸­å¤®éƒ¨åˆ†ã®ã‚­ãƒ¼ãƒžãƒƒãƒ—変更 * TEST: COL2ROWã§ã€COLã®ãƒ”ンã®é †ç•ªã‚’変ãˆã¦ã‚­ãƒ¼ã‚’読むテスト * Update: QMKã®ä»•様上ã€Macã§ã¯KC_PSCRãŒFキーã¨ã—ã¦åˆ¤å®šã•れるãŸã‚ã€ã‚¹ã‚¯ãƒªãƒ¼ãƒ³ã‚·ãƒ§ãƒƒãƒˆç”¨ãƒžã‚¯ãƒ­ã‚’用æ„ã—ãŸã€‚ * TEST: COL2ROWã§ã€ROWã¨COLã®ãƒ”ン定義をãšã‚‰ã—ãŸçŠ¶æ…‹ã§ã€BOOTMAGIC = lite ã®ï¼ˆ0,0)キーã«å¼•ã£ã‹ã‹ã‚‰ãªã„。 * Update: ロータリーエンコーダã«ãƒžã‚¦ã‚¹ãƒ›ã‚¤ãƒ¼ãƒ«ã‚’割り当㦠* Update: 自明ã®ã‚³ãƒ¡ãƒ³ãƒˆã‚’削除 * Update: NKRO指定時ã¯ã€NKRO動作を強制。 * Update: MIDIãªã—ã®ã¨ãã€AUDIOã®ãƒ•ル機能ãŒãƒ•ァームウェアサイズ内ã«åŽã¾ã‚‹ã“ã¨ã‚’ãƒã‚§ãƒƒã‚¯ã€‚ * Update: Bootmagicテスト完了ã®ãŸã‚ã€ç„¡åŠ¹åŒ–ã€‚ * TEST: LED動作ãƒã‚§ãƒƒã‚¯ã€‚ * Update: キーマップをã€LOWER, RAISEを中心ã«å¤§å¹…変更。 数字を左手レイヤーキーã§ã¯ãªãã€å³æ‰‹ãƒ¬ã‚¤ãƒ¤ãƒ¼ã‚­ãƒ¼ã«ã—ãŸã“ã¨ã§ã€CMD+Qã«ã‚ˆã‚‹èª¤çˆ†ã‚¢ãƒ—リ終了をé¿ã‘ã‚‹ç‹™ã„ã‚‚ã‚る。 * Update: 未使用ã®Numレイヤã¨TapDanceを削除。 * Update: MIDI関連ã®è¨­å®šã‚’多数追加。 * New: Add Sequencer keymap * enumã®é–‹å§‹ã‚’明記 * TAP_DANCEを無効化 * シーケンサーã§ã€ãƒˆãƒ©ãƒƒã‚¯å˜ä½ã®æœ‰åŠ¹ãƒ»ç„¡åŠ¹ã®åˆ‡ã‚Šæ›¿ãˆã‚’追加。※動作ã›ãš * デãƒãƒƒã‚°ç”¨è¨­å®šã‚’テスト * Change custom keycode name for classification. * Add LED update on sequencer step. * change LED adjusting value. * TEST: SQ_T related things. * DEBUG * Increase track 6 ---> 8. Add track indicator. * Add sequencer step viewer. * Move Bootmagic lite position to keyboard's config. * Revert matrix as phisically connected. * Change default RGB lighting animation. * Remove MIDI options from keyboard's config. * change version * Remove unused. * Delete unused. Round-Robin matrix woks with COL2ROW. * Delete unused. Round-Robin matrix woks with COL2ROW. * Formatting. * Formatting. * Remove unused. * No enum. * LED setting for Sequencer layer. * Add TODO flag * Remove unused. * change LCTL * Update Rotary Encoder setting. * revert to default * Add TODO flag. * Update to latest information. * Update to latest information. * Add v04 * Move keymaps directory to just under keyboard directory. * Add music layout. * Update to Unison layout. * Add default keymap. * Update readme description. * Commenting. * Exclude non-PR files. * Change keymap name more general. * Remove unused * Commenting. * Remove unused. * Commenting. * Change Macro name for consistency. * Add tempo definition. * Change transparent to noop for better musical play. * Add Rotary Encoder push functions for Sequencer. * FIX printscreen to work _WIN layer. * Fix style name. * Change keymap style from PC to Music. * Adjust LED number and index to v04 PCB. * Commenting. * Add #ifdef block to LED config related. * Change Sequencer display function from Rotary Encoder right-3 to right-4. * Change default animations. * Set LED effect range. Add LED reset on layer change. * Remove unused. * Commenting. * Commenting. * Use function to change Sequencer track indicator. * Use function to change Sequencer track indicator. * Remove unused * Add PC-style keymap. * Adjust keymap. * Add micro volume control for Mac. * Adjust keymap. * Adjust cursor block. * Adjust grave and tild in layer. * Change magic-key position to Left-Bottom where both Music-style and Terminal-style have a key. * Change LED settings for front-side 9 LEDs. * Change keymap name. * Update supported functions. * Adjust indicator dimmer. * Remove unused. * Add underglow support. * Add rotary encoder keymap at Adjust layer for test hardware function. * Disable rotary encoders. * Change description. * Add support for underglow. Disable knight animation to prevent unnatural feeling when underglow not installed. * Commenting. * Formatting. * Turn on default layer indicator. * remove duplication * Change VID for via. * Initial commit for VIA. * Add layout option. * restore AUDIO enabled. * Removed a JSON file for VIA app, not for QMK. * Remove non-related files for PR. * Add keymap for music layout. * Add photo links. * Commenting. * Apply PR checklist. * Change unused function to "no". * Add keymap image and change keymap as image shows. * Change bootloader entering key to widely known "Left-Top". * Turn off ENCODER by default. * Add VIA keymap. * Change VID unique. https://github.com/qmk/qmk_firmware/pull/11982#discussion_r582276979 * Add config option to prepare future release, #11820. https://github.com/qmk/qmk_firmware/pull/11820 * Remove old defines for Audio. Co-authored-by: Takeshi Nishio --- keyboards/unison/keymaps/default/keymap.c | 26 ++++ keyboards/unison/keymaps/default/readme.md | 6 + .../unison/keymaps/default_music/keymap.c | 26 ++++ .../unison/keymaps/default_music/readme.md | 6 + keyboards/unison/keymaps/via/config.h | 25 ++++ keyboards/unison/keymaps/via/keymap.c | 139 ++++++++++++++++++ keyboards/unison/keymaps/via/readme.md | 36 +++++ keyboards/unison/keymaps/via/rules.mk | 5 + keyboards/unison/readme.md | 26 ++++ keyboards/unison/rules.mk | 1 + keyboards/unison/v04/config.h | 125 ++++++++++++++++ keyboards/unison/v04/info.json | 27 ++++ keyboards/unison/v04/readme.md | 26 ++++ keyboards/unison/v04/rules.mk | 25 ++++ keyboards/unison/v04/v04.c | 27 ++++ keyboards/unison/v04/v04.h | 80 ++++++++++ 16 files changed, 606 insertions(+) create mode 100644 keyboards/unison/keymaps/default/keymap.c create mode 100644 keyboards/unison/keymaps/default/readme.md create mode 100644 keyboards/unison/keymaps/default_music/keymap.c create mode 100644 keyboards/unison/keymaps/default_music/readme.md create mode 100644 keyboards/unison/keymaps/via/config.h create mode 100644 keyboards/unison/keymaps/via/keymap.c create mode 100644 keyboards/unison/keymaps/via/readme.md create mode 100644 keyboards/unison/keymaps/via/rules.mk create mode 100644 keyboards/unison/readme.md create mode 100644 keyboards/unison/rules.mk create mode 100644 keyboards/unison/v04/config.h create mode 100644 keyboards/unison/v04/info.json create mode 100644 keyboards/unison/v04/readme.md create mode 100644 keyboards/unison/v04/rules.mk create mode 100644 keyboards/unison/v04/v04.c create mode 100644 keyboards/unison/v04/v04.h diff --git a/keyboards/unison/keymaps/default/keymap.c b/keyboards/unison/keymaps/default/keymap.c new file mode 100644 index 0000000000..a147855c38 --- /dev/null +++ b/keyboards/unison/keymaps/default/keymap.c @@ -0,0 +1,26 @@ +/* Copyright 2021 Takeshi Nishio + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_NLCK,KC_PSLS,KC_PAST,KC_PMNS,KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, + KC_P7, KC_P8, KC_P9, KC_PPLS,KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_P4, KC_P5, KC_P6, KC_PPLS,KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + KC_P1, KC_P2, KC_P3, KC_PENT,KC_LSFT,KC_LSFT,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH,KC_UP, + KC_P0, KC_P0, KC_PDOT,KC_PENT,KC_GRV, KC_BSLS,KC_LALT,KC_LGUI,KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RGUI,KC_LEFT,KC_DOWN,KC_RGHT + ) +}; diff --git a/keyboards/unison/keymaps/default/readme.md b/keyboards/unison/keymaps/default/readme.md new file mode 100644 index 0000000000..510187da7e --- /dev/null +++ b/keyboards/unison/keymaps/default/readme.md @@ -0,0 +1,6 @@ +![Unison, Terminal style Layout Image](https://raw.githubusercontent.com/jpskenn/Unison/main/assets/readme/layout_terminal_style_variant.png) + +# Defalut keymap for Unison Terminal style Layout. + +This is the default layout for Unison Terminal Layout. +5 rows layout for PC operation. diff --git a/keyboards/unison/keymaps/default_music/keymap.c b/keyboards/unison/keymaps/default_music/keymap.c new file mode 100644 index 0000000000..c1abd1ae4a --- /dev/null +++ b/keyboards/unison/keymaps/default_music/keymap.c @@ -0,0 +1,26 @@ +/* Copyright 2021 Takeshi Nishio + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_music( + KC_MUTE, KC_F1, KC_F2, KC_F3, KC_F4, KC_MUTE, KC_MUTE, KC_MUTE, KC_MUTE, + KC_P7, KC_P8, KC_P9, KC_PPLS,KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_P4, KC_P5, KC_P6, KC_PAST,KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + KC_P1, KC_P2, KC_P3, KC_PMNS,KC_LSFT,KC_LSFT,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_UP, KC_SLSH, + KC_P0, KC_PDOT,KC_PENT,KC_PPLS,KC_GRV, KC_BSLS,KC_LALT,KC_LGUI,KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RGUI,KC_LEFT,KC_DOWN,KC_RGHT + ) +}; diff --git a/keyboards/unison/keymaps/default_music/readme.md b/keyboards/unison/keymaps/default_music/readme.md new file mode 100644 index 0000000000..aa328311a8 --- /dev/null +++ b/keyboards/unison/keymaps/default_music/readme.md @@ -0,0 +1,6 @@ +![Unison, Music style Layout Image](https://raw.githubusercontent.com/jpskenn/Unison/main/assets/readme/layout_music_style.png) + +# Defalut keymap for Unison Music Layout. + +This is the default layout for Unison Music Layout. +Inspired by "Teenage Engineering: OP-1". diff --git a/keyboards/unison/keymaps/via/config.h b/keyboards/unison/keymaps/via/config.h new file mode 100644 index 0000000000..8475af2baa --- /dev/null +++ b/keyboards/unison/keymaps/via/config.h @@ -0,0 +1,25 @@ +/* Copyright 2021 Takeshi Nishio + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#ifdef RGB_DI_PIN + #undef RGBLED_NUM + #define RGBLED_NUM 17 // Layer Indicator(2) + Rotary Encoder(5) + Optional(2) + Under(8) + + #undef RGBLIGHT_LED_MAP + #define RGBLIGHT_LED_MAP {2, 0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16} // Left to Right to Under +#endif diff --git a/keyboards/unison/keymaps/via/keymap.c b/keyboards/unison/keymaps/via/keymap.c new file mode 100644 index 0000000000..f3af26f184 --- /dev/null +++ b/keyboards/unison/keymaps/via/keymap.c @@ -0,0 +1,139 @@ +/* Copyright 2021 Takeshi Nishio + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_number { + _BASE = 0, + _LOW, + _RAI, + _ADJ, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_all( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_NLCK,KC_PSLS,KC_PAST,KC_PMNS,KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P7, KC_P8, KC_P9, KC_PPLS,KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_P4, KC_P5, KC_P6, KC_PPLS,KC_H, KC_J, KC_K, KC_L, KC_MINS, KC_ENT, + KC_LSFT,KC_LSFT,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_P1, KC_P2, KC_P3, KC_PENT,KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH,KC_UP, + KC_GRV, KC_BSLS,KC_LGUI,KC_LALT,KC_SPC, KC_SPC,MO(_LOW),KC_P0, KC_P0, KC_PDOT,MO(_RAI),KC_SPC,KC_APP, KC_ROPT,KC_LEFT,KC_DOWN,KC_RGHT + ), + [_LOW] = LAYOUT_all( + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, + 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_PSCR,KC_SLCK,KC_PAUS,_______,_______,_______,_______,_______,_______,KC_GRV, KC_MINS,KC_EQL, KC_LBRC,KC_RBRC, KC_BSLS, + _______,_______,KC_MUTE,KC_VOLD,KC_VOLU,_______,_______,_______,_______,_______,_______,KC_TILD,KC_UNDS,KC_PLUS,KC_LCBR,KC_RCBR,KC_PIPE, + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,KC_HOME,KC_PGDN,KC_PGUP,KC_END + ), + [_RAI] = LAYOUT_all( + _______,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5,_______,_______,_______,_______,KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, _______,_______,_______,_______,KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______,_______,_______,_______,KC_LEFT,KC_DOWN,KC_UP, KC_RGHT,KC_SCLN, KC_QUOT, + _______,_______,KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______,_______,_______,_______,KC_HOME,KC_PGDN,KC_PGUP,KC_END, KC_COLN,KC_DQUO, + _______,_______,KC_F11, _______,KC_F12,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______ + ), + [_ADJ] = LAYOUT_all( + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, + _______, _______,_______,_______,RESET, _______,_______,_______,_______,_______,RGB_HUI,RGB_SAI,RGB_VAI,_______,RGB_RMOD, _______, + _______, AU_TOG, CK_TOGG,MU_TOG, MU_MOD, _______,_______,_______,_______,_______,RGB_HUD,RGB_SAD,RGB_VAD,RGB_TOG,RGB_MOD, _______, + KC_CAPS,_______,CK_RST, CK_DOWN,CK_UP, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______ + ) +}; + + +/* ------------------------------------------------------------------------------ + RGB Lighting +------------------------------------------------------------------------------ */ +#ifdef RGBLIGHT_LAYERS + +// Indicator LED settings +#define INDICATOR_INDEX 0 // Where to start indicator, default:1 +#define INDICATOR_COUNT 1 // How many LEDs for indicator, default:2 +#define INDICATOR_CHANGE_COUNT 1 // How meny LEDs to change for temporally layer default:1 +#define DIMMER_LEVEL 150 // LED brightness dimmer level, 0(brightest) - 255(perfect dark), default:150 + +// for Default layer (= Base layer) +const rgblight_segment_t PROGMEM my_base_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {INDICATOR_INDEX , INDICATOR_COUNT, HSV_BLACK} +); + +// for Temporal layer +const rgblight_segment_t PROGMEM my_lower_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {INDICATOR_INDEX , INDICATOR_CHANGE_COUNT, HSV_GREEN - DIMMER_LEVEL} +); + +const rgblight_segment_t PROGMEM my_raise_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {INDICATOR_INDEX , INDICATOR_CHANGE_COUNT, HSV_CYAN - DIMMER_LEVEL} +); + +const rgblight_segment_t PROGMEM my_adjust_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {INDICATOR_INDEX , INDICATOR_CHANGE_COUNT, HSV_RED - DIMMER_LEVEL} +); + +// for Lock indicator +const rgblight_segment_t PROGMEM my_caps_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {INDICATOR_INDEX , INDICATOR_CHANGE_COUNT, HSV_MAGENTA - DIMMER_LEVEL} +); + +// Define the array of layers. Later layers take precedence +const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST( + my_base_layer, + my_caps_layer, + my_lower_layer, + my_raise_layer, + my_adjust_layer +); + +// Enabling and disabling lighting layers for default layer +layer_state_t default_layer_state_set_user(layer_state_t state) { + rgblight_set_layer_state(0, layer_state_cmp(state, _BASE)); + + return state; +} + +// Enabling and disabling lighting layers for lock key +bool led_update_user(led_t led_state) { + rgblight_set_layer_state(1, led_state.caps_lock); + return true; +} + +// Enabling and disabling lighting layers for momentary layer +layer_state_t layer_state_set_user(layer_state_t state) { + state = update_tri_layer_state(state, _LOW, _RAI, _ADJ); + + rgblight_set_layer_state(2, layer_state_cmp(state, _LOW)); + rgblight_set_layer_state(3, layer_state_cmp(state, _RAI)); + rgblight_set_layer_state(4, layer_state_cmp(state, _ADJ)); + + return state; +} +#endif + + +/* ------------------------------------------------------------------------------ + Post Initialize +------------------------------------------------------------------------------ */ +void keyboard_post_init_user(void) { + #ifdef RGB_DI_PIN + // RGB Lighting: Set effect range from just after indicator. + rgblight_set_effect_range(1, 16); + #endif + #ifdef RGBLIGHT_LAYERS + // RGB Lighting Layers: Setup LED layers + rgblight_layers = my_rgb_layers; + #endif +} diff --git a/keyboards/unison/keymaps/via/readme.md b/keyboards/unison/keymaps/via/readme.md new file mode 100644 index 0000000000..34036fbc9b --- /dev/null +++ b/keyboards/unison/keymaps/via/readme.md @@ -0,0 +1,36 @@ +![Unison, VIA Layout Image](https://raw.githubusercontent.com/jpskenn/Unison/main/assets/readme/layout_via.png) + +# Keymap for Unison Terminal style with VIA support + +Five rows layout for PC operation. +VIA remapping is supported. + +## Layers + +### Base layer +- Base + +### Momentarily layers +- Lower +- Raise +- Adjust + +## LED lighting + +17 LEDs. +One for Lighting Layer. +The rest for Lighting Effects. + +- Indicator: 2 +- Rotary Encoder side: 5 +- Optional: 2 +- Under: 8 + +## Audio + +Supports simultaneous audio. + +## Bootmagic + +The "lite" mode is enabled. +Hold "Left-Top" key to enter bootloader. diff --git a/keyboards/unison/keymaps/via/rules.mk b/keyboards/unison/keymaps/via/rules.mk new file mode 100644 index 0000000000..6f7de63910 --- /dev/null +++ b/keyboards/unison/keymaps/via/rules.mk @@ -0,0 +1,5 @@ +MOUSEKEY_ENABLE = yes +AUDIO_ENABLE = yes + +BOOTMAGIC_ENABLE = lite +VIA_ENABLE = yes diff --git a/keyboards/unison/readme.md b/keyboards/unison/readme.md new file mode 100644 index 0000000000..0ade8f0890 --- /dev/null +++ b/keyboards/unison/readme.md @@ -0,0 +1,26 @@ +# Unison + +![Unison, Music style](https://raw.githubusercontent.com/jpskenn/Unison/main/assets/readme/IMG_2669.jpeg) + +![Unison, Terminal style](https://raw.githubusercontent.com/jpskenn/Unison/main/assets/readme/IMG_2626.jpeg) + +![Unison, PCB](https://raw.githubusercontent.com/jpskenn/Unison/main/assets/BuildGuide_v04/IMG_2472.jpeg) + +A narrow pitch keyboard with irregular Row-staggered, compatible with GH60 case. +It has two layout style, for music and for computers. + +* Keyboard Maintainer: [jpskenn](https://github.com/jpskenn) +* Hardware Supported: PCB +* Hardware Availability: [GitHub](https://github.com/jpskenn/Unison), [BOOTH](https://jpskenn.booth.pm) + +Make example for this keyboard (after setting up your build environment): + + make unison:default + +Flashing example for this keyboard ([using the command line](https://docs.qmk.fm/#/newbs_flashing?id=flash-your-keyboard-from-the-command-line)): + + make unison:default:flash + +To reset the keyboard into bootloader mode, press the reset switch on the underside. + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/unison/rules.mk b/keyboards/unison/rules.mk new file mode 100644 index 0000000000..69c33d71a2 --- /dev/null +++ b/keyboards/unison/rules.mk @@ -0,0 +1 @@ +DEFAULT_FOLDER = unison/v04 diff --git a/keyboards/unison/v04/config.h b/keyboards/unison/v04/config.h new file mode 100644 index 0000000000..88807811a9 --- /dev/null +++ b/keyboards/unison/v04/config.h @@ -0,0 +1,125 @@ +/* +Copyright 2021 Takeshi Nishio + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xB9DD +#define PRODUCT_ID 0x176A +#define DEVICE_VER 0x0040 +#define MANUFACTURER jpskenn +#define PRODUCT Unison + +/* key matrix size */ +/* NOTE: With Round-Robin matrix, set same size for both. */ +#define MATRIX_ROWS 10 +#define MATRIX_COLS 10 + +/* key matrix pins */ +/* NOTE: With Round-Robin matrix, set same pins for both. */ +#define MATRIX_ROW_PINS { B3, E6, F1, F5, F7, B2, F0, F4, F6, C7 } +#define MATRIX_COL_PINS { B3, E6, F1, F5, F7, B2, F0, F4, F6, C7 } +#define UNUSED_PINS + +#define DIODE_DIRECTION COL2ROW + +/* Rotary Encoder */ +#ifdef ENCODER_ENABLE + #define ENCODERS_PAD_A { B0, D2, D5, D6, B4 } + #define ENCODERS_PAD_B { B1, D3, D4, D7, B5 } + #define ENCODER_RESOLUTION 4 //the default & suggested is 4 +#endif + +/* Audio */ +#ifdef AUDIO_ENABLE + #define AUDIO_PIN C6 + #define AUDIO_PIN_ALT B6 + #define AUDIO_CLICKY + #define MUSIC_MAP +#endif + +/* RGB Lighting */ +#define RGB_DI_PIN B7 +#ifdef RGB_DI_PIN + #define RGBLED_NUM 7 // Layer Indicator(2) + Rotary Encoder(5) + #define RGBLIGHT_LED_MAP {1, 2, 0, 3, 4, 5, 6} // align LEDs from Left to Right + #define RGBLIGHT_HUE_STEP 4 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 + #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ + // #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ + /*== Lighting Layers ==*/ + #define RGBLIGHT_LAYERS + // #define RGBLIGHT_MAX_LAYERS 2 + #define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF // Overriding RGB Lighting on/off status + /*== all animations enable ==*/ + // #define RGBLIGHT_ANIMATIONS + /*== or choose animations ==*/ + #define RGBLIGHT_EFFECT_BREATHING + #define RGBLIGHT_EFFECT_RAINBOW_MOOD + #define RGBLIGHT_EFFECT_RAINBOW_SWIRL + // #define RGBLIGHT_EFFECT_SNAKE + // #define RGBLIGHT_EFFECT_KNIGHT + // #define RGBLIGHT_EFFECT_CHRISTMAS + // #define RGBLIGHT_EFFECT_STATIC_GRADIENT + // #define RGBLIGHT_EFFECT_RGB_TEST + // #define RGBLIGHT_EFFECT_ALTERNATING + #define RGBLIGHT_EFFECT_TWINKLE + // /*== customize breathing effect ==*/ + // /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ + // #define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 + // /*==== use exp() and sin() ====*/ + // #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 + // #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* + * BOOTMAGIC Lite + * Hold Left-Top key to enter bootloader. + * + * NOTE: + * With Round-Robin matrix, diagonal position is always High. + * So, the default (0,0) is always judged as hold and keyboard enters bootloader. + * To prevent this, set specific position for it. + */ +#define BOOTMAGIC_LITE_ROW 5 +#define BOOTMAGIC_LITE_COLUMN 0 + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION diff --git a/keyboards/unison/v04/info.json b/keyboards/unison/v04/info.json new file mode 100644 index 0000000000..d0edf50406 --- /dev/null +++ b/keyboards/unison/v04/info.json @@ -0,0 +1,27 @@ +{ + "keyboard_name": "Unison", + "url": "https://github.com/jpskenn/Unison", + "maintainer": "jpskenn", + "width": 17, + "height": 5.5, + "layouts": { + "LAYOUT_all": { + "layout": [ + {"x":0, "y":0.5}, {"label":"/", "x":1, "y":0.5}, {"label":"*", "x":2, "y":0.5}, {"label":"-", "x":3, "y":0.5}, {"label":"Esc", "x":4, "y":0.5}, {"label":"1", "x":5, "y":0.5}, {"label":"2", "x":6, "y":0.5}, {"label":"3", "x":7, "y":0.5}, {"label":"4", "x":8, "y":0.5}, {"label":"5", "x":9, "y":0.5}, {"label":"6", "x":10, "y":0.5}, {"label":"7", "x":11, "y":0.5}, {"label":"8", "x":12, "y":0.5}, {"label":"9", "x":13, "y":0.5}, {"label":"0", "x":14, "y":0.5}, {"label":"-", "x":15, "y":0.5}, {"label":"=", "x":16, "y":0.5}, + {"label":"7", "x":0, "y":1.5}, {"label":"8", "x":1, "y":1.5}, {"label":"9", "x":2, "y":1.5}, {"label":"+", "x":3, "y":1.5}, {"label":"Tab", "x":4, "y":1.5, "w":1.5}, {"label":"Q", "x":5.5, "y":1.5}, {"label":"W", "x":6.5, "y":1.5}, {"label":"E", "x":7.5, "y":1.5}, {"label":"R", "x":8.5, "y":1.5}, {"label":"T", "x":9.5, "y":1.5}, {"label":"Y", "x":10.5, "y":1.5}, {"label":"U", "x":11.5, "y":1.5}, {"label":"I", "x":12.5, "y":1.5}, {"label":"O", "x":13.5, "y":1.5}, {"label":"P", "x":14.5, "y":1.5}, {"label":"Backspace", "x":15.5, "y":1.5, "w":1.5}, + {"label":"4", "x":0, "y":2.5}, {"label":"5", "x":1, "y":2.5}, {"label":"6", "x":2, "y":2.5}, {"label":"+", "x":3, "y":2.5}, {"label":"Ctrl", "x":4, "y":2.5, "w":1.5}, {"label":"A", "x":5.5, "y":2.5}, {"label":"S", "x":6.5, "y":2.5}, {"label":"D", "x":7.5, "y":2.5}, {"label":"F", "x":8.5, "y":2.5}, {"label":"G", "x":9.5, "y":2.5}, {"label":"H", "x":10.5, "y":2.5}, {"label":"J", "x":11.5, "y":2.5}, {"label":"K", "x":12.5, "y":2.5}, {"label":"L", "x":13.5, "y":2.5}, {"label":";", "x":14.5, "y":2.5}, {"label":"Enter", "x":15.5, "y":2.5, "w":1.5}, + {"label":"1", "x":0, "y":3.5}, {"label":"2", "x":1, "y":3.5}, {"label":"3", "x":2, "y":3.5}, {"label":"Enter", "x":3, "y":3.5}, {"label":"Sfhift", "x":4, "y":3.5}, {"label":"Shift", "x":5, "y":3.5}, {"label":"Z", "x":6, "y":3.5}, {"label":"X", "x":7, "y":3.5}, {"label":"C", "x":8, "y":3.5}, {"label":"V", "x":9, "y":3.5}, {"label":"B", "x":10, "y":3.5}, {"label":"N", "x":11, "y":3.5}, {"label":"M", "x":12, "y":3.5}, {"label":"<", "x":13, "y":3.5}, {"label":">", "x":14, "y":3.5}, {"label":"Up", "x":15, "y":3.5}, {"label":"?", "x":16, "y":3.5}, + {"label":"0", "x":0, "y":4.5}, {"label":"00", "x":1, "y":4.5}, {"label":".", "x":2, "y":4.5}, {"label":"Enter", "x":3, "y":4.5}, {"x":4, "y":4.5}, {"x":5, "y":4.5}, {"label":"Opt", "x":6, "y":4.5}, {"label":"Cmd", "x":7, "y":4.5}, {"label":"Lower", "x":8, "y":4.5}, {"label":"Lower", "x":9, "y":4.5}, {"x":10, "y":4.5}, {"label":"Raise", "x":11, "y":4.5}, {"label":"Raise", "x":12, "y":4.5}, {"label":"Cmd", "x":13, "y":4.5}, {"label":"Left", "x":14, "y":4.5}, {"label":"Down", "x":15, "y":4.5}, {"label":"Right", "x":16, "y":4.5} + ] + }, + "LAYOUT_music": { + "layout": [ + {"label":"R.E.1", "x":2, "y":0.25}, {"label":"F1", "x":4, "y":0.25}, {"label":"F2", "x":5, "y":0.25}, {"label":"F3", "x":6, "y":0.25}, {"label":"F4", "x":7, "y":0.25}, {"label":"R.E.2", "x":9, "y":0.25}, {"label":"R.E.3", "x":11, "y":0.25}, {"label":"R.E.4", "x":13, "y":0.25}, {"label":"R.E.5", "x":15, "y":0.25}, + {"label":"7", "x":0, "y":1.5}, {"label":"8", "x":1, "y":1.5}, {"label":"9", "x":2, "y":1.5}, {"label":"/", "x":3, "y":1.5}, {"label":"Tab", "x":4, "y":1.5, "w":1.5}, {"label":"Q", "x":5.5, "y":1.5}, {"label":"W", "x":6.5, "y":1.5}, {"label":"E", "x":7.5, "y":1.5}, {"label":"R", "x":8.5, "y":1.5}, {"label":"T", "x":9.5, "y":1.5}, {"label":"Y", "x":10.5, "y":1.5}, {"label":"U", "x":11.5, "y":1.5}, {"label":"I", "x":12.5, "y":1.5}, {"label":"O", "x":13.5, "y":1.5}, {"label":"P", "x":14.5, "y":1.5}, {"label":"Backspace", "x":15.5, "y":1.5, "w":1.5}, + {"label":"4", "x":0, "y":2.5}, {"label":"5", "x":1, "y":2.5}, {"label":"6", "x":2, "y":2.5}, {"label":"*", "x":3, "y":2.5}, {"label":"Ctrl", "x":4, "y":2.5, "w":1.5}, {"label":"A", "x":5.5, "y":2.5}, {"label":"S", "x":6.5, "y":2.5}, {"label":"D", "x":7.5, "y":2.5}, {"label":"F", "x":8.5, "y":2.5}, {"label":"G", "x":9.5, "y":2.5}, {"label":"H", "x":10.5, "y":2.5}, {"label":"J", "x":11.5, "y":2.5}, {"label":"K", "x":12.5, "y":2.5}, {"label":"L", "x":13.5, "y":2.5}, {"label":";", "x":14.5, "y":2.5}, {"label":"Enter", "x":15.5, "y":2.5, "w":1.5}, + {"label":"1", "x":0, "y":3.5}, {"label":"2", "x":1, "y":3.5}, {"label":"3", "x":2, "y":3.5}, {"label":"-", "x":3, "y":3.5}, {"label":"Sfhift", "x":4, "y":3.5}, {"label":"Shift", "x":5, "y":3.5}, {"label":"Z", "x":6, "y":3.5}, {"label":"X", "x":7, "y":3.5}, {"label":"C", "x":8, "y":3.5}, {"label":"V", "x":9, "y":3.5}, {"label":"B", "x":10, "y":3.5}, {"label":"N", "x":11, "y":3.5}, {"label":"M", "x":12, "y":3.5}, {"label":"<", "x":13, "y":3.5}, {"label":">", "x":14, "y":3.5}, {"label":"Up", "x":15, "y":3.5}, {"label":"?", "x":16, "y":3.5}, + {"label":"0", "x":0, "y":4.5}, {"label":".", "x":1, "y":4.5}, {"label":"Enter", "x":2, "y":4.5}, {"label":"+", "x":3, "y":4.5}, {"x":4, "y":4.5}, {"x":5, "y":4.5}, {"label":"Opt", "x":6, "y":4.5}, {"label":"Cmd", "x":7, "y":4.5}, {"label":"Lower", "x":8, "y":4.5}, {"label":"Lower", "x":9, "y":4.5}, {"x":10, "y":4.5}, {"label":"Raise", "x":11, "y":4.5}, {"label":"Raise", "x":12, "y":4.5}, {"label":"Cmd", "x":13, "y":4.5}, {"label":"Left", "x":14, "y":4.5}, {"label":"Down", "x":15, "y":4.5}, {"label":"Right", "x":16, "y":4.5} + ] + } + } +} diff --git a/keyboards/unison/v04/readme.md b/keyboards/unison/v04/readme.md new file mode 100644 index 0000000000..0ade8f0890 --- /dev/null +++ b/keyboards/unison/v04/readme.md @@ -0,0 +1,26 @@ +# Unison + +![Unison, Music style](https://raw.githubusercontent.com/jpskenn/Unison/main/assets/readme/IMG_2669.jpeg) + +![Unison, Terminal style](https://raw.githubusercontent.com/jpskenn/Unison/main/assets/readme/IMG_2626.jpeg) + +![Unison, PCB](https://raw.githubusercontent.com/jpskenn/Unison/main/assets/BuildGuide_v04/IMG_2472.jpeg) + +A narrow pitch keyboard with irregular Row-staggered, compatible with GH60 case. +It has two layout style, for music and for computers. + +* Keyboard Maintainer: [jpskenn](https://github.com/jpskenn) +* Hardware Supported: PCB +* Hardware Availability: [GitHub](https://github.com/jpskenn/Unison), [BOOTH](https://jpskenn.booth.pm) + +Make example for this keyboard (after setting up your build environment): + + make unison:default + +Flashing example for this keyboard ([using the command line](https://docs.qmk.fm/#/newbs_flashing?id=flash-your-keyboard-from-the-command-line)): + + make unison:default:flash + +To reset the keyboard into bootloader mode, press the reset switch on the underside. + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/unison/v04/rules.mk b/keyboards/unison/v04/rules.mk new file mode 100644 index 0000000000..9a3ab3decc --- /dev/null +++ b/keyboards/unison/v04/rules.mk @@ -0,0 +1,25 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output +ENCODER_ENABLE = no # Rotary Encoder + +LTO_ENABLE = yes diff --git a/keyboards/unison/v04/v04.c b/keyboards/unison/v04/v04.c new file mode 100644 index 0000000000..3cae408cfa --- /dev/null +++ b/keyboards/unison/v04/v04.c @@ -0,0 +1,27 @@ +/* Copyright 2021 Takeshi Nishio + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "v04.h" + +#if defined(AUDIO_ENABLE) && defined(MUSIC_MAP) +const uint8_t music_map[MATRIX_ROWS][MATRIX_COLS] = LAYOUT_all( + 0,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62, + 0, 32,33,34,35,36,37,38,39,40,41,42,43,44,45, 46, + 0, 17,18,19,20,21,22,23,24,25,26,27,28,29,30, 31, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +); +#endif diff --git a/keyboards/unison/v04/v04.h b/keyboards/unison/v04/v04.h new file mode 100644 index 0000000000..3d66ce1976 --- /dev/null +++ b/keyboards/unison/v04/v04.h @@ -0,0 +1,80 @@ +/* Copyright 2021 Takeshi Nishio + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* +FULL 10x10 ROUND-ROBIN MATRIX for Reference +{ KC_NO, k12, k13, k14, k15, k16, k17, k18, k19, k1a, }, \ +{ k21, KC_NO, k23, k24, k25, k26, k27, k28, k29, k2a, }, \ +{ k31, k32, KC_NO, k34, k35, k36, k37, k38, k39, k3a, }, \ +{ k41, k42, k43, KC_NO, k45, k46, k47, k48, k49, k4a, }, \ +{ k51, k52, k53, k54, KC_NO, k56, k57, k58, k59, k5a, }, \ +{ k61, k62, k63, k64, k65, KC_NO, k67, k68, k69, k6a, }, \ +{ k71, k72, k73, k74, k75, k76, KC_NO, k78, k79, k7a, }, \ +{ k81, k82, k83, k84, k85, k86, k87, KC_NO, k89, k8a, }, \ +{ k91, k92, k93, k94, k95, k96, k97, k98, KC_NO, k9a, }, \ +{ ka1, ka2, ka3, ka4, ka5, ka6, ka7, ka8, ka9, KC_NO, } \ +*/ + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT_all( \ + k61,k12,k62,k13,k63,k14,k64,k15,k65,k16,k67,k17,k68,k18,k69,k19,k6a, \ + k71, k21,k72,k23,k73,k24,k74,k25,k75,k26,k76,k27,k78,k28,k79, k7a, \ + k81, k31,k82,k32,k83,k34,k84,k35,k85,k36,k86,k37,k87,k38,k89, k8a, \ + k91,k41,k92,k42,k93,k43,k94,k45,k95,k46,k96,k47,k97,k48,k98,k49,k9a, \ + ka1,k51,ka2,k52,ka3,k53,ka4,k54,ka5,k56,ka6,k57,ka7,k58,ka8,k59,ka9 \ +) \ +{ \ + { KC_NO, k12, k13, k14, k15, k16, k17, k18, k19, KC_NO, }, \ + { k21, KC_NO, k23, k24, k25, k26, k27, k28, KC_NO, KC_NO, }, \ + { k31, k32, KC_NO, k34, k35, k36, k37, k38, KC_NO, KC_NO, }, \ + { k41, k42, k43, KC_NO, k45, k46, k47, k48, k49, KC_NO, }, \ + { k51, k52, k53, k54, KC_NO, k56, k57, k58, k59, KC_NO, }, \ + { k61, k62, k63, k64, k65, KC_NO, k67, k68, k69, k6a, }, \ + { k71, k72, k73, k74, k75, k76, KC_NO, k78, k79, k7a, }, \ + { k81, k82, k83, k84, k85, k86, k87, KC_NO, k89, k8a, }, \ + { k91, k92, k93, k94, k95, k96, k97, k98, KC_NO, k9a, }, \ + { ka1, ka2, ka3, ka4, ka5, ka6, ka7, ka8, ka9, KC_NO, } \ +} +#define LAYOUT_music( \ + k62, k63,k14,k64,k15, k16, k17, k18, k19, \ + k71,k21,k72,k23,k73, k24,k74,k25,k75,k26,k76,k27,k78,k28,k79, k7a, \ + k81,k31,k82,k32,k83, k34,k84,k35,k85,k36,k86,k37,k87,k38,k89, k8a, \ + k91,k41,k92,k42,k93,k43,k94,k45,k95,k46,k96,k47,k97,k48,k98,k49,k9a, \ + ka1,k51,ka2,k52,ka3,k53,ka4,k54,ka5,k56,ka6,k57,ka7,k58,ka8,k59,ka9 \ +) \ +{ \ + { KC_NO, KC_NO, KC_NO, k14, k15, k16, k17, k18, k19, KC_NO, }, \ + { k21, KC_NO, k23, k24, k25, k26, k27, k28, KC_NO, KC_NO, }, \ + { k31, k32, KC_NO, k34, k35, k36, k37, k38, KC_NO, KC_NO, }, \ + { k41, k42, k43, KC_NO, k45, k46, k47, k48, k49, KC_NO, }, \ + { k51, k52, k53, k54, KC_NO, k56, k57, k58, k59, KC_NO, }, \ + { KC_NO, k62, k63, k64, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, }, \ + { k71, k72, k73, k74, k75, k76, KC_NO, k78, k79, k7a, }, \ + { k81, k82, k83, k84, k85, k86, k87, KC_NO, k89, k8a, }, \ + { k91, k92, k93, k94, k95, k96, k97, k98, KC_NO, k9a, }, \ + { ka1, ka2, ka3, ka4, ka5, ka6, ka7, ka8, ka9, KC_NO, } \ +} From 34205f5bb589437c18bad584525ed97e179e8ba0 Mon Sep 17 00:00:00 2001 From: Sendy Aditya Suryana Date: Thu, 25 Mar 2021 19:39:35 +0700 Subject: [PATCH 146/613] Add new Keyboard: SENDYYeah Bevi (#12011) * Add bevi Keyboard * Update readme * Change image embed * Update instructions to compile * beVi initial * Enable NKRO * Update README * Revert Lily58 rules.mk * Revert h87a info.json * Add URL and maintainer in info.json * Update year * Add layer 1 * Tidying up * Fix keymap * Add one line at end of file * Replicate default keymap to via * Update keyboards/sendyyeah/bevi/bevi.c Co-authored-by: Drashna Jaelre * Remove comment on layout macro definition Co-authored-by: Drashna Jaelre Co-authored-by: Sendy Aditya Suryana Co-authored-by: Drashna Jaelre --- keyboards/sendyyeah/bevi/bevi.c | 17 ++++ keyboards/sendyyeah/bevi/bevi.h | 38 ++++++++ keyboards/sendyyeah/bevi/config.h | 42 +++++++++ keyboards/sendyyeah/bevi/info.json | 93 +++++++++++++++++++ .../sendyyeah/bevi/keymaps/default/keymap.c | 50 ++++++++++ keyboards/sendyyeah/bevi/keymaps/via/keymap.c | 50 ++++++++++ keyboards/sendyyeah/bevi/keymaps/via/rules.mk | 1 + keyboards/sendyyeah/bevi/readme.md | 19 ++++ keyboards/sendyyeah/bevi/rules.mk | 22 +++++ 9 files changed, 332 insertions(+) create mode 100644 keyboards/sendyyeah/bevi/bevi.c create mode 100644 keyboards/sendyyeah/bevi/bevi.h create mode 100644 keyboards/sendyyeah/bevi/config.h create mode 100644 keyboards/sendyyeah/bevi/info.json create mode 100644 keyboards/sendyyeah/bevi/keymaps/default/keymap.c create mode 100644 keyboards/sendyyeah/bevi/keymaps/via/keymap.c create mode 100644 keyboards/sendyyeah/bevi/keymaps/via/rules.mk create mode 100644 keyboards/sendyyeah/bevi/readme.md create mode 100644 keyboards/sendyyeah/bevi/rules.mk diff --git a/keyboards/sendyyeah/bevi/bevi.c b/keyboards/sendyyeah/bevi/bevi.c new file mode 100644 index 0000000000..c5bf0fbe17 --- /dev/null +++ b/keyboards/sendyyeah/bevi/bevi.c @@ -0,0 +1,17 @@ + /* Copyright 2021 sendyyeah + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "bevi.h" diff --git a/keyboards/sendyyeah/bevi/bevi.h b/keyboards/sendyyeah/bevi/bevi.h new file mode 100644 index 0000000000..0a963fe6d6 --- /dev/null +++ b/keyboards/sendyyeah/bevi/bevi.h @@ -0,0 +1,38 @@ + /* Copyright 2021 sendyyeah + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT(\ + K94 , K00 , K10 , K01 , K11 , K02 , K12 , K03 , K13 , K04 , K14 , K05 , K15 , K06 , K16 , K07 , K17 , K97 , K85 , \ + K84 , K20 , K30 , K21 , K31 , K22 , K32 , K23 , K33 , K24 , K34 , K25 , K35 , K26 , K36 , K27 , K37 , K77 , \ + K40 , K50 , K41 , K51 , K42 , K52 , K43 , K53 , K44 , K54 , K45 , K55 , K46 , K56 , K47 , K57 , \ + K93 , K60 , K70 , K61 , K71 , K62 , K72 , K63 , K73 , K64 , K74 , K65 , K75 , K66 , K76 , K67 , \ + K80 , K90 , K81 , K91 , K82 , K92 , K83 , K95 , K86 , K96 , K87 \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07 }, \ + { K10, K11, K12, K13, K14, K15, K16, K17 }, \ + { K20, K21, K22, K23, K24, K25, K26, K27 }, \ + { K30, K31, K32, K33, K34, K35, K36, K37 }, \ + { K40, K41, K42, K43, K44, K45, K46, K47 }, \ + { K50, K51, K52, K53, K54, K55, K56, K57 }, \ + { K60, K61, K62, K63, K64, K65, K66, K67 }, \ + { K70, K71, K72, K73, K74, K75, K76, K77 }, \ + { K80, K81, K82, K83, K84, K85, K86, K87 }, \ + { K90, K91, K92, K93, K94, K95, K96, K97 } \ +} diff --git a/keyboards/sendyyeah/bevi/config.h b/keyboards/sendyyeah/bevi/config.h new file mode 100644 index 0000000000..8283329986 --- /dev/null +++ b/keyboards/sendyyeah/bevi/config.h @@ -0,0 +1,42 @@ + /* Copyright 2021 sendyyeah + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x5359 +#define PRODUCT_ID 0x4256 +#define DEVICE_VER 0x0001 +#define MANUFACTURER sendyyeah +#define PRODUCT beVi + +/* key matrix size */ +#define MATRIX_ROWS 10 +#define MATRIX_COLS 8 + +/* + * Keyboard Matrix Assignments + */ +#define MATRIX_ROW_PINS { B3, B2, D3, D2, D1, D0, D4, C6, D7, E6 } +#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B6, B4, B5 } + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 diff --git a/keyboards/sendyyeah/bevi/info.json b/keyboards/sendyyeah/bevi/info.json new file mode 100644 index 0000000000..d2f66f1f69 --- /dev/null +++ b/keyboards/sendyyeah/bevi/info.json @@ -0,0 +1,93 @@ +{ + "keyboard_name": "beVi", + "url": "https://github.com/sendyyeah/bevi", + "maintainer": "sendyyeah", + "width": 19, + "height": 5, + "layouts": { + "LAYOUT": { + "layout": [ + {"label": "Num", "x": 0, "y": 0}, + {"label": "/", "x": 1, "y": 0}, + {"label": "*", "x": 2, "y": 0}, + {"label": "-", "x": 3, "y": 0}, + {"label": "`", "x": 4, "y": 0}, + {"label": "1", "x": 5, "y": 0}, + {"label": "2", "x": 6, "y": 0}, + {"label": "3", "x": 7, "y": 0}, + {"label": "4", "x": 8, "y": 0}, + {"label": "5", "x": 9, "y": 0}, + {"label": "6", "x": 10, "y": 0}, + {"label": "7", "x": 11, "y": 0}, + {"label": "8", "x": 12, "y": 0}, + {"label": "9", "x": 13, "y": 0}, + {"label": "0", "x": 14, "y": 0}, + {"label": "-", "x": 15, "y": 0}, + {"label": "=", "x": 16, "y": 0}, + {"label": "Bksp", "x": 17, "y": 0}, + {"x": 17, "y": 0}, + {"label": "+", "x": 0, "y": 1, "h": 2}, + {"label": "7", "x": 1, "y": 1}, + {"label": "8", "x": 2, "y": 1}, + {"label": "9", "x": 3, "y": 1}, + {"label": "Tab", "x": 4, "y": 1, "w": 1.5}, + {"label": "Q", "x": 5, "y": 1}, + {"label": "W", "x": 6, "y": 1}, + {"label": "E", "x": 7, "y": 1}, + {"label": "R", "x": 8, "y": 1}, + {"label": "T", "x": 9, "y": 1}, + {"label": "Y", "x": 10, "y": 1}, + {"label": "U", "x": 11, "y": 1}, + {"label": "I", "x": 12, "y": 1}, + {"label": "O", "x": 13, "y": 1}, + {"label": "P", "x": 14, "y": 1}, + {"label": "[", "x": 15, "y": 1}, + {"label": "]", "x": 16, "y": 1}, + {"label": "\\", "x": 17, "y": 1, "w": 1.5}, + {"label": "4", "x": 0, "y": 2}, + {"label": "5", "x": 1, "y": 2}, + {"label": "6", "x": 2, "y": 2}, + {"label": "Caps", "x": 3, "y": 2, "w": 1.75}, + {"label": "A", "x": 4, "y": 2}, + {"label": "S", "x": 5, "y": 2}, + {"label": "D", "x": 6, "y": 2}, + {"label": "F", "x": 7, "y": 2}, + {"label": "G", "x": 8, "y": 2}, + {"label": "H", "x": 9, "y": 2}, + {"label": "J", "x": 10, "y": 2}, + {"label": "K", "x": 11, "y": 2}, + {"label": "L", "x": 12, "y": 2}, + {"label": ";", "x": 13, "y": 2}, + {"label": "'", "x": 14, "y": 2}, + {"label": "Enter", "x": 15, "y": 2, "w": 2.25}, + {"label": "Enter", "x": 0, "y": 3, "h": 2}, + {"label": "1", "x": 1, "y": 3}, + {"label": "2", "x": 2, "y": 3}, + {"label": "3", "x": 3, "y": 3}, + {"label": "Shift", "x": 4, "y": 3, "w": 2.25}, + {"label": "Z", "x": 5, "y": 3}, + {"label": "X", "x": 6, "y": 3}, + {"label": "C", "x": 7, "y": 3}, + {"label": "V", "x": 8, "y": 3}, + {"label": "B", "x": 9, "y": 3}, + {"label": "N", "x": 10, "y": 3}, + {"label": "M", "x": 11, "y": 3}, + {"label": ",", "x": 12, "y": 3}, + {"label": ".", "x": 13, "y": 3}, + {"label": "/", "x": 14, "y": 3}, + {"label": "Shift", "x": 15, "y": 3, "w": 2.75}, + {"label": ".", "x": 0, "y": 4}, + {"label": "00", "x": 1, "y": 4}, + {"label": "0", "x": 2, "y": 4}, + {"label": "Ctrl", "x": 3, "y": 4, "w": 1.25}, + {"label": "Win", "x": 4, "y": 4, "w": 1.25}, + {"label": "Alt", "x": 5, "y": 4, "w": 1.25}, + {"label": "Space", "x": 6, "y": 4, "w": 6.25}, + {"label": "Alt", "x": 7, "y": 4, "w": 1.25}, + {"label": "Win", "x": 8, "y": 4, "w": 1.25}, + {"label": "Fn", "x": 9, "y": 4, "w": 1.25}, + {"label": "Ctrl", "x": 10, "y": 4, "w": 1.25} + ] + } + } +} diff --git a/keyboards/sendyyeah/bevi/keymaps/default/keymap.c b/keyboards/sendyyeah/bevi/keymaps/default/keymap.c new file mode 100644 index 0000000000..4f5e135672 --- /dev/null +++ b/keyboards/sendyyeah/bevi/keymaps/default/keymap.c @@ -0,0 +1,50 @@ +/* Copyright 2021 sendyyeah + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum custom_keycodes { + DBL_0 = SAFE_RANGE, +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case DBL_0: + if (record -> event.pressed) { + SEND_STRING("00"); + } else { + + } + break; + } + return true; +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_ESC , KC_1 , KC_2 , KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, \ + KC_PPLS, KC_P7 , KC_P8 , KC_P9 , KC_TAB , KC_Q , KC_W , KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \ + KC_P4 , KC_P5 , KC_P6 , KC_CAPS , KC_A , KC_S , KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \ + KC_PENT, KC_P1 , KC_P2 , KC_P3 , KC_LSFT , KC_Z , KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \ + KC_P0 , DBL_0 , KC_PDOT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, MO(1) \ + ), + [1] = LAYOUT( + _______, _______, _______, _______, KC_GRV , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______ , \ + _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______ \ + ), +}; diff --git a/keyboards/sendyyeah/bevi/keymaps/via/keymap.c b/keyboards/sendyyeah/bevi/keymaps/via/keymap.c new file mode 100644 index 0000000000..4f5e135672 --- /dev/null +++ b/keyboards/sendyyeah/bevi/keymaps/via/keymap.c @@ -0,0 +1,50 @@ +/* Copyright 2021 sendyyeah + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum custom_keycodes { + DBL_0 = SAFE_RANGE, +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case DBL_0: + if (record -> event.pressed) { + SEND_STRING("00"); + } else { + + } + break; + } + return true; +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_ESC , KC_1 , KC_2 , KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, \ + KC_PPLS, KC_P7 , KC_P8 , KC_P9 , KC_TAB , KC_Q , KC_W , KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \ + KC_P4 , KC_P5 , KC_P6 , KC_CAPS , KC_A , KC_S , KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \ + KC_PENT, KC_P1 , KC_P2 , KC_P3 , KC_LSFT , KC_Z , KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \ + KC_P0 , DBL_0 , KC_PDOT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, MO(1) \ + ), + [1] = LAYOUT( + _______, _______, _______, _______, KC_GRV , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______ , \ + _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______ \ + ), +}; diff --git a/keyboards/sendyyeah/bevi/keymaps/via/rules.mk b/keyboards/sendyyeah/bevi/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/sendyyeah/bevi/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/sendyyeah/bevi/readme.md b/keyboards/sendyyeah/bevi/readme.md new file mode 100644 index 0000000000..0d7fa6e2b6 --- /dev/null +++ b/keyboards/sendyyeah/bevi/readme.md @@ -0,0 +1,19 @@ +# Bevi + +![Bevi](https://i.imgur.com/i3fpHgC.png) + +VortexGear Vibe inspired, but with southpaw layout for the numpad. + +* Keyboard Layout: [KLE](http://www.keyboard-layout-editor.com/#/gists/dd70b976b25180acf42ef0943c102a60) +* Keyboard Maintainer: [SENDYYeah](https://github.com/sendyyeah) +* Hardware Availability: [Tokopedia/Sell Stuffs](https://tokopedia.com/sell-stuffs) (Indonesia only) or any electronic part store. + +Make example for this keyboard (after setting up your build environment): + + make sendyyeah/bevi:default + +How to reset and enter bootloader: + - Press reset button on the PCB (twice if the ProMicro is fresh) + - Flash with QMK Toolbox or any command line you like + + See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/sendyyeah/bevi/rules.mk b/keyboards/sendyyeah/bevi/rules.mk new file mode 100644 index 0000000000..4de348c259 --- /dev/null +++ b/keyboards/sendyyeah/bevi/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output From 57475caab0c030dc3e37086fdc060ddf0c81e69f Mon Sep 17 00:00:00 2001 From: Drashna Jaelre Date: Thu, 25 Mar 2021 05:41:19 -0700 Subject: [PATCH 147/613] Fix issues when manually shifting characters and Auto Shift (#12083) Specifically, when using the Auto-Shift feature, if you hold and roll shift, it would not actually shift the character that you hit after the shift --- quantum/process_keycode/process_auto_shift.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quantum/process_keycode/process_auto_shift.c b/quantum/process_keycode/process_auto_shift.c index a2d315408b..bf359e994d 100644 --- a/quantum/process_keycode/process_auto_shift.c +++ b/quantum/process_keycode/process_auto_shift.c @@ -46,7 +46,7 @@ static bool autoshift_press(uint16_t keycode, uint16_t now, keyrecord_t *record) } # ifndef AUTO_SHIFT_MODIFIERS - if (get_mods() & (~MOD_BIT(KC_LSFT))) { + if (get_mods()) { return true; } # endif From aa2b4a688b5f58bfa2818940c802659c2c1a1800 Mon Sep 17 00:00:00 2001 From: Matt Snell Date: Thu, 25 Mar 2021 21:21:21 -0500 Subject: [PATCH 148/613] [docs] Add IO Warning to WSL section of Getting Started (#12384) * Add IO Warning to WSL section of Getting Started * FauxPark suggestion (thanks!) Co-authored-by: Ryan Co-authored-by: Ryan --- docs/newbs_getting_started.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/newbs_getting_started.md b/docs/newbs_getting_started.md index 3cb63e5692..7af9579dfb 100644 --- a/docs/newbs_getting_started.md +++ b/docs/newbs_getting_started.md @@ -70,6 +70,8 @@ Install the QMK CLI by running: ### ** Linux/WSL ** +?> **Note for WSL users**: By default, the installation process will clone the QMK repository into your WSL home directory, but if you have cloned manually, ensure that it is located inside the WSL instance instead of the Windows filesystem (ie. not in `/mnt`), as accessing it is currently [extremely slow](https://github.com/microsoft/WSL/issues/4197). + #### Prerequisites You will need to install Git and Python. It's very likely that you already have both, but if not, one of the following commands should install them: From f028dbf179b6e9eb9bbc58b14c38c35ddd0e73ea Mon Sep 17 00:00:00 2001 From: Anthon van der Neut Date: Fri, 26 Mar 2021 13:37:17 +0100 Subject: [PATCH 149/613] Minor typo in comments Colemak DM-MK -> DH-MK (#10721) --- keyboards/redox/keymaps/finex/keymap.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/redox/keymaps/finex/keymap.c b/keyboards/redox/keymaps/finex/keymap.c index 5a508815b2..8cc822f1ce 100644 --- a/keyboards/redox/keymaps/finex/keymap.c +++ b/keyboards/redox/keymaps/finex/keymap.c @@ -232,7 +232,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - // Colemak DM-MK Mod + // Colemak DH-MK Mod [_COLEMAKDHMK] = LAYOUT( //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┠XXXXXXX ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 , KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_ESC , @@ -247,7 +247,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘ ), - // Colemak DM-MK Mod, Mac version (CTRL and GUI are swapped) + // Colemak DH-MK Mod, Mac version (CTRL and GUI are swapped) [_COLEMAKDHMK_MAC] = LAYOUT( //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┠XXXXXXX ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 , KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_ESC , From 8af72000851dbe2c50a66bf2b9452011cbfe835a Mon Sep 17 00:00:00 2001 From: joedinkle Date: Fri, 26 Mar 2021 10:58:13 -0700 Subject: [PATCH 150/613] Pull Request for babyV keyboard (#12112) * Add files via upload * Add files via upload * Update readme.md * Update readme.md * Update readme.md * Update readme.md * Update Readme.md * Update Readme.md * Update readme.md * Update readme.md * Update readme.md * Update readme.md * Update readme.md * Update readme.md * Update readme.md * Update readme.md * Update readme.md * Update readme.md * Update readme.md * Create CaseFiles * Delete CaseFiles * Create Readme.md * Add files via upload * Add files via upload * Add files via upload * Create Readme.md * Create Readme.md * Create Readme.md * Delete S50-Top.dxf * Delete S50-Top.svg * Add files via upload * Update Readme.md * Update Readme.md * Update Readme.md * Update readme.md * Update readme.md * Update readme.md * Update readme.md * Update readme.md * Updating encoder code. * Update encoder code. * Case files and encoder update. * Update encoder code. * Updates to encoder code. * Syntax fixes. * Create readme.md * Add files via upload * Create readme.md * Add files via upload * Removed case files from s50 branch * Format changes. * Add case files to Master branch * Syntax fixes * Recommended code changes for pull request into QMK. * Recommended change for pull request. * Delete config.h * Delete config.h * Delete config.h * Delete config.h * Delete config.h * Delete config.h * Add config.h and rules.mk files to the joedinkle layout for autoshift. * Delete S50-Top-New.dxf * Delete S50-Top-New.svg * New case files Revision to S50 top file. * Added 3D printed case STL and DXF files. * Create readme.md * Update readme.md * Added babyV firmware * Update readme.md * QMK PR preperations. * Delete config.h * Delete keymap.c * Delete readme.md * Delete rules.mk * Delete config.h * Delete keymap.c * Delete readme.md * Changes for QMK formatting. * Removed excess files Removed case files and schematics from the joedinkle branch. The joedinkle branch is primarily for QMK PRs. These files will remain in the master branch of this fork. * Add SPRH keyboard * Formatting and cleanup. * Edits to default Layout * Readme Update * Formatting changes. * Deleted obsolete code. * Formatting changes and file removal for QMK PR * Deleted S50 S50 is a completed keyboard and is located in the Master Branch. S50 removed from the in progress branch. * Delete Read Me * Replaced S50 files accidentally deleted in merge. * Added split layout for SPRH * Added Files for Blvd PCB * Add PCB files for Blvd * Added compressed kicad projects * Removed obsolete PCB files * Added PCB files * Added personal babyV keymap. * Update readme.md * Update readme.md * Update readme.md * Update readme.md * babyV-added info.json and updated default keymap * Added case files for babyV * Update readme.md * Update readme.md * Update readme.md * Updated default keymap. * Cleaned up keymap folder. * Added info.json for babyV * babyV updates * PR preps * PR preps * Update .gitignore * Delete Backlight.png * Delete MCU.png * Delete Matrix.png * Delete readme.md * Rename Readme.md to readme.md * Requested PR changes. * Update rules.mk * Update rules.mk * readme and rules.mk updates * Update keyboards/eyeohdesigns/babyv/readme.md Co-authored-by: Ryan * Update keyboards/eyeohdesigns/babyv/readme.md Co-authored-by: Ryan * Update keyboards/eyeohdesigns/babyv/readme.md Co-authored-by: Ryan * Update keyboards/eyeohdesigns/babyv/rules.mk Co-authored-by: Ryan * Update keyboards/eyeohdesigns/readme.md Co-authored-by: Ryan * Update keyboards/eyeohdesigns/readme.md Co-authored-by: Ryan * Update readme.md * Update keyboards/eyeohdesigns/babyv/readme.md Co-authored-by: Ryan Co-authored-by: Ryan --- keyboards/eyeohdesigns/babyv/babyv.c | 17 +++++ keyboards/eyeohdesigns/babyv/babyv.h | 71 +++++++++++++++++++ keyboards/eyeohdesigns/babyv/config.h | 60 ++++++++++++++++ keyboards/eyeohdesigns/babyv/info.json | 22 ++++++ .../eyeohdesigns/babyv/keymaps/1u/keymap.c | 45 ++++++++++++ .../eyeohdesigns/babyv/keymaps/1u2u/keymap.c | 44 ++++++++++++ .../eyeohdesigns/babyv/keymaps/2u1u/keymap.c | 45 ++++++++++++ .../babyv/keymaps/default/keymap.c | 44 ++++++++++++ keyboards/eyeohdesigns/babyv/readme.md | 19 +++++ keyboards/eyeohdesigns/babyv/rules.mk | 22 ++++++ keyboards/eyeohdesigns/readme.md | 13 ++++ 11 files changed, 402 insertions(+) create mode 100644 keyboards/eyeohdesigns/babyv/babyv.c create mode 100644 keyboards/eyeohdesigns/babyv/babyv.h create mode 100644 keyboards/eyeohdesigns/babyv/config.h create mode 100644 keyboards/eyeohdesigns/babyv/info.json create mode 100644 keyboards/eyeohdesigns/babyv/keymaps/1u/keymap.c create mode 100644 keyboards/eyeohdesigns/babyv/keymaps/1u2u/keymap.c create mode 100644 keyboards/eyeohdesigns/babyv/keymaps/2u1u/keymap.c create mode 100644 keyboards/eyeohdesigns/babyv/keymaps/default/keymap.c create mode 100644 keyboards/eyeohdesigns/babyv/readme.md create mode 100644 keyboards/eyeohdesigns/babyv/rules.mk create mode 100644 keyboards/eyeohdesigns/readme.md diff --git a/keyboards/eyeohdesigns/babyv/babyv.c b/keyboards/eyeohdesigns/babyv/babyv.c new file mode 100644 index 0000000000..5a01ea2c91 --- /dev/null +++ b/keyboards/eyeohdesigns/babyv/babyv.c @@ -0,0 +1,17 @@ +/* Copyright 2020 Eye Oh! Designs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "babyv.h" diff --git a/keyboards/eyeohdesigns/babyv/babyv.h b/keyboards/eyeohdesigns/babyv/babyv.h new file mode 100644 index 0000000000..749e16f353 --- /dev/null +++ b/keyboards/eyeohdesigns/babyv/babyv.h @@ -0,0 +1,71 @@ +/* Copyright 2020 Eye Oh! Designs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT_1u( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \ + k30, k33, k34, k35, k36, k37, k38, k3b \ + ) \ + { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \ + { k30, KC_NO, KC_NO, k33, k34, k35, k36, k37, k38, KC_NO, KC_NO, k3b } \ + } + +#define LAYOUT_2u( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \ + k30, k33, k35, k36, k38, k3b \ + ) \ + { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \ + { k30, KC_NO, KC_NO, k33, KC_NO, k35, k36, KC_NO, k38, KC_NO, KC_NO, k3b } \ + } + +#define LAYOUT_1u_2u( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \ + k30, k33, k34, k35, k36, k38, k3b \ + ) \ + { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \ + { k30, KC_NO, KC_NO, k33, k34, k35, k36, KC_NO, k38, KC_NO, KC_NO, k3b } \ + } +#define LAYOUT_2u_1u( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \ + k30, k33, k35, k36, k37, k38, k3b \ + ) \ + { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \ + { k30, KC_NO, KC_NO, k33, KC_NO, k35, k36, k37, k38, KC_NO, KC_NO, k3b } \ + } + \ No newline at end of file diff --git a/keyboards/eyeohdesigns/babyv/config.h b/keyboards/eyeohdesigns/babyv/config.h new file mode 100644 index 0000000000..c49a039df2 --- /dev/null +++ b/keyboards/eyeohdesigns/babyv/config.h @@ -0,0 +1,60 @@ +/* +Copyright 2020 Eye Oh! Designs + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x0000 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Eye Oh Designs +#define PRODUCT babyv + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 12 + + +#define MATRIX_ROW_PINS { B5, D2, D5, D3 } +#define MATRIX_COL_PINS { D0, D1, B4, D7, D6, D4, B0, B1, B2, F0, F1, F4 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +#define BACKLIGHT_PIN B6 +#define BACKLIGHT_LEVELS 3 + +#define RGB_DI_PIN B7 +#define RGBLED_NUM 12 +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 +#define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +// /*== all animations enable ==*/ +#define RGBLIGHT_ANIMATIONS + + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION diff --git a/keyboards/eyeohdesigns/babyv/info.json b/keyboards/eyeohdesigns/babyv/info.json new file mode 100644 index 0000000000..1ff70463a4 --- /dev/null +++ b/keyboards/eyeohdesigns/babyv/info.json @@ -0,0 +1,22 @@ +{ + "keyboard_name": "babyv", + "url": "", + "maintainer": "eye oh designs", + "width": 14.25, + "height": 6.14, + "layouts": { + "LAYOUT_2u": { + "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":7, "y":0}, {"label":"U", "x":8, "y":0}, {"label":"I", "x":9, "y":0}, {"label":"O", "x":10, "y":0}, {"label":"P", "x":11, "y":0}, {"label":"Back Space", "x":12, "y":0}, {"label":"Tab", "x":0, "y":1}, {"label":"A", "x":1, "y":1}, {"label":"S", "x":2, "y":1}, {"label":"D", "x":3, "y":1}, {"label":"F", "x":4, "y":1}, {"label":"G", "x":5, "y":1}, {"label":"H", "x":7, "y":1}, {"label":"J", "x":8, "y":1}, {"label":"K", "x":9, "y":1}, {"label":"L", "x":10, "y":1}, {"label":";", "x":11, "y":1}, {"label":"Return", "x":12, "y":1}, {"label":"Shift", "x":0, "y":2}, {"label":"Z", "x":1, "y":2}, {"label":"X", "x":2, "y":2}, {"label":"C", "x":3, "y":2}, {"label":"V", "x":4, "y":2}, {"label":"B", "x":5, "y":2}, {"label":"N", "x":7, "y":2}, {"label":"M", "x":8, "y":2}, {"label":",", "x":9, "y":2}, {"label":".", "x":10, "y":2}, {"label":"/", "x":11, "y":2}, {"label":"Shift", "x":12, "y":2}, {"label":"Ctl", "x":0, "y":3}, {"label":"Alt", "x":3, "y":3}, {"x":4, "y":3, "w":2}, {"x":7, "y":3, "w":2}, {"label":"Fn", "x":9, "y":3}, {"label":"OS", "x":12, "y":3}] + }, + "LAYOUT_1u": { + "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":7, "y":0}, {"label":"U", "x":8, "y":0}, {"label":"I", "x":9, "y":0}, {"label":"O", "x":10, "y":0}, {"label":"P", "x":11, "y":0}, {"label":"Back Space", "x":12, "y":0}, {"label":"Tab", "x":0, "y":1}, {"label":"A", "x":1, "y":1}, {"label":"S", "x":2, "y":1}, {"label":"D", "x":3, "y":1}, {"label":"F", "x":4, "y":1}, {"label":"G", "x":5, "y":1}, {"label":"H", "x":7, "y":1}, {"label":"J", "x":8, "y":1}, {"label":"K", "x":9, "y":1}, {"label":"L", "x":10, "y":1}, {"label":";", "x":11, "y":1}, {"label":"Return", "x":12, "y":1}, {"label":"Shift", "x":0, "y":2}, {"label":"Z", "x":1, "y":2}, {"label":"X", "x":2, "y":2}, {"label":"C", "x":3, "y":2}, {"label":"V", "x":4, "y":2}, {"label":"B", "x":5, "y":2}, {"label":"N", "x":7, "y":2}, {"label":"M", "x":8, "y":2}, {"label":",", "x":9, "y":2}, {"label":".", "x":10, "y":2}, {"label":"/", "x":11, "y":2}, {"label":"Shift", "x":12, "y":2}, {"label":"Ctl", "x":0, "y":3}, {"label":"Alt", "x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":7, "y":3}, {"x":8, "y":3}, {"label":"Fn", "x":9, "y":3}, {"label":"OS", "x":12, "y":3}] + }, + "LAYOUT_1u2u": { + "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":7, "y":0}, {"label":"U", "x":8, "y":0}, {"label":"I", "x":9, "y":0}, {"label":"O", "x":10, "y":0}, {"label":"P", "x":11, "y":0}, {"label":"Back Space", "x":12, "y":0}, {"label":"Tab", "x":0, "y":1}, {"label":"A", "x":1, "y":1}, {"label":"S", "x":2, "y":1}, {"label":"D", "x":3, "y":1}, {"label":"F", "x":4, "y":1}, {"label":"G", "x":5, "y":1}, {"label":"H", "x":7, "y":1}, {"label":"J", "x":8, "y":1}, {"label":"K", "x":9, "y":1}, {"label":"L", "x":10, "y":1}, {"label":";", "x":11, "y":1}, {"label":"Return", "x":12, "y":1}, {"label":"Shift", "x":0, "y":2}, {"label":"Z", "x":1, "y":2}, {"label":"X", "x":2, "y":2}, {"label":"C", "x":3, "y":2}, {"label":"V", "x":4, "y":2}, {"label":"B", "x":5, "y":2}, {"label":"N", "x":7, "y":2}, {"label":"M", "x":8, "y":2}, {"label":",", "x":9, "y":2}, {"label":".", "x":10, "y":2}, {"label":"/", "x":11, "y":2}, {"label":"Shift", "x":12, "y":2}, {"x":0, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":7, "y":3, "w":2}, {"x":9, "y":3}, {"label":"OS", "x":12, "y":3}] + }, + "LAYOUT_2u1u": { + "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":7, "y":0}, {"label":"U", "x":8, "y":0}, {"label":"I", "x":9, "y":0}, {"label":"O", "x":10, "y":0}, {"label":"P", "x":11, "y":0}, {"label":"Back Space", "x":12, "y":0}, {"label":"Tab", "x":0, "y":1}, {"label":"A", "x":1, "y":1}, {"label":"S", "x":2, "y":1}, {"label":"D", "x":3, "y":1}, {"label":"F", "x":4, "y":1}, {"label":"G", "x":5, "y":1}, {"label":"H", "x":7, "y":1}, {"label":"J", "x":8, "y":1}, {"label":"K", "x":9, "y":1}, {"label":"L", "x":10, "y":1}, {"label":";", "x":11, "y":1}, {"label":"Return", "x":12, "y":1}, {"label":"Shift", "x":0, "y":2}, {"label":"Z", "x":1, "y":2}, {"label":"X", "x":2, "y":2}, {"label":"C", "x":3, "y":2}, {"label":"V", "x":4, "y":2}, {"label":"B", "x":5, "y":2}, {"label":"N", "x":7, "y":2}, {"label":"M", "x":8, "y":2}, {"label":",", "x":9, "y":2}, {"label":".", "x":10, "y":2}, {"label":"/", "x":11, "y":2}, {"label":"Shift", "x":12, "y":2}, {"x":0, "y":3}, {"x":3, "y":3}, {"x":4, "y":3, "w":2}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}, {"label":"OS", "x":12, "y":3}] + } + + } +} diff --git a/keyboards/eyeohdesigns/babyv/keymaps/1u/keymap.c b/keyboards/eyeohdesigns/babyv/keymaps/1u/keymap.c new file mode 100644 index 0000000000..ef2c32108b --- /dev/null +++ b/keyboards/eyeohdesigns/babyv/keymaps/1u/keymap.c @@ -0,0 +1,45 @@ +/* Copyright 2020 Eye Oh! Designs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + + QWERTY, + FUNCTN, + NUMBRS, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [QWERTY] = LAYOUT_1u( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, MO(FUNCTN), MO(NUMBRS), KC_SPC, KC_SPC, MO(NUMBRS), MO(FUNCTN), KC_RALT + ), + [FUNCTN] = LAYOUT_1u( + KC_VOLU, KC_Q, KC_PGUP, RGB_TOG, BL_STEP, KC_T, KC_Y, KC_U, KC_UP, RGB_MOD, RGB_RMOD, KC_DEL, + KC_VOLD, KC_HOME, KC_PGDN, KC_D, KC_U, KC_MINS, KC_EQL, KC_LEFT, KC_DOWN, KC_RIGHT, KC_QUOT, RESET, + KC_LSFT, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, KC_LBRC, KC_RBRC, RGB_VAI, RGB_VAD, KC_DOT, KC_BSLS, KC_RSFT, + KC_LCTL, KC_TRNS, KC_TRNS, KC_SPC, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS + ), + [NUMBRS] = LAYOUT_1u( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + KC_MUTE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_ENT, + KC_CAPS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_RSFT, + KC_LCTL, KC_TRNS, KC_TRNS, KC_SPC, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; \ No newline at end of file diff --git a/keyboards/eyeohdesigns/babyv/keymaps/1u2u/keymap.c b/keyboards/eyeohdesigns/babyv/keymaps/1u2u/keymap.c new file mode 100644 index 0000000000..86f4efffe4 --- /dev/null +++ b/keyboards/eyeohdesigns/babyv/keymaps/1u2u/keymap.c @@ -0,0 +1,44 @@ +/* Copyright 2020 Eye Oh! Designs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + QWERTY, + FUNCTN, + NUMBRS, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [QWERTY] = LAYOUT_1u_2u( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LALT, MO(FUNCTN), MO(NUMBRS), KC_SPC, MO(FUNCTN), KC_RCTL + ), + [FUNCTN] = LAYOUT_1u_2u( + KC_VOLU, KC_Q, KC_PGUP, RGB_TOG, BL_STEP, KC_T, KC_Y, KC_U, KC_UP, RGB_MOD, RGB_RMOD, KC_DEL, + KC_VOLD, KC_HOME, KC_PGDN, KC_D, KC_U, KC_MINS, KC_EQL, KC_LEFT, KC_DOWN, KC_RIGHT, KC_QUOT, RESET, + KC_LSFT, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, KC_LBRC, KC_RBRC, RGB_VAI, RGB_VAD, KC_DOT, KC_BSLS, KC_RSFT, + KC_LGUI, KC_LALT, KC_TRNS, KC_TRNS, KC_SPC, KC_TRNS, RESET + ), + [NUMBRS] = LAYOUT_1u_2u( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + KC_MUTE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_ENT, + KC_CAPS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_RSFT, + KC_LCTL, KC_LALT, KC_TRNS, KC_TRNS, KC_SPC, KC_TRNS, KC_RCTL + ), +}; \ No newline at end of file diff --git a/keyboards/eyeohdesigns/babyv/keymaps/2u1u/keymap.c b/keyboards/eyeohdesigns/babyv/keymaps/2u1u/keymap.c new file mode 100644 index 0000000000..7963db77eb --- /dev/null +++ b/keyboards/eyeohdesigns/babyv/keymaps/2u1u/keymap.c @@ -0,0 +1,45 @@ +/* Copyright 2020 Eye Oh! Designs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + + QWERTY, + FUNCTN, + NUMBRS, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [QWERTY] = LAYOUT_2u_1u( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, MO(FUNCTN), KC_SPC, MO(NUMBRS), MO(FUNCTN), KC_LGUI, KC_RALT + ), + [FUNCTN] = LAYOUT_2u_1u( + KC_VOLU, KC_Q, KC_PGUP, RGB_TOG, BL_STEP, KC_T, KC_Y, KC_U, KC_UP, RGB_MOD, RGB_RMOD, KC_DEL, + KC_VOLD, KC_HOME, KC_PGDN, KC_D, KC_U, KC_MINS, KC_EQL, KC_LEFT, KC_DOWN, KC_RIGHT, KC_QUOT, RESET, + KC_LSFT, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, KC_LBRC, KC_RBRC, RGB_VAI, RGB_VAD, KC_DOT, KC_BSLS, KC_RSFT, + KC_LCTL, KC_TRNS, KC_SPC, KC_TRNS, KC_TRNS, KC_LGUI, KC_TRNS + ), + [NUMBRS] = LAYOUT_2u_1u( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + KC_MUTE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_ENT, + KC_CAPS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_RSFT, + KC_LCTL, KC_TRNS, KC_SPC, KC_TRNS, KC_TRNS, KC_LGUI, KC_TRNS + ), +}; \ No newline at end of file diff --git a/keyboards/eyeohdesigns/babyv/keymaps/default/keymap.c b/keyboards/eyeohdesigns/babyv/keymaps/default/keymap.c new file mode 100644 index 0000000000..2b071bd854 --- /dev/null +++ b/keyboards/eyeohdesigns/babyv/keymaps/default/keymap.c @@ -0,0 +1,44 @@ +/* Copyright 2020 Eye Oh! Designs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + QWERTY, + FUNCT, + NUMBRS, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [QWERTY] = LAYOUT_2u( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LALT, MO(NUMBRS), KC_SPC, MO(FUNCT), KC_LGUI + ), + [FUNCT] = LAYOUT_2u( + KC_VOLU, KC_Q, KC_PGUP, RGB_TOG, BL_STEP, KC_T, KC_Y, KC_U, KC_UP, RGB_MOD, RGB_RMOD, KC_DEL, + KC_VOLD, KC_HOME, KC_PGDN, KC_D, KC_U, KC_MINS, KC_EQL, KC_LEFT, KC_DOWN, KC_RIGHT, KC_QUOT, RESET, + KC_LSFT, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, KC_LBRC, KC_RBRC, RGB_VAI, RGB_VAD, KC_DOT, KC_BSLS, KC_RSFT, + KC_LCTL, KC_TRNS, KC_TRNS, KC_SPC, KC_TRNS, RESET + ), + [NUMBRS] = LAYOUT_2u( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + KC_MUTE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_ENT, + KC_CAPS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_RSFT, + KC_LCTL, KC_TRNS, KC_TRNS, KC_SPC, KC_TRNS, KC_LGUI + ), +}; \ No newline at end of file diff --git a/keyboards/eyeohdesigns/babyv/readme.md b/keyboards/eyeohdesigns/babyv/readme.md new file mode 100644 index 0000000000..b3cd4f7035 --- /dev/null +++ b/keyboards/eyeohdesigns/babyv/readme.md @@ -0,0 +1,19 @@ +# babyV + +![babyV](https://i.imgur.com/iRUm9I5l.jpg) + +babyV is a 40% ortholinear take on the EM7/Alice layout. + +* Keyboard Maintainer: [Eye Oh Designs](https://github.com/joedinkle) +* Hardware Supported: babyV ver 1.00 +* Hardware Availability: Groupbuy ran from Nov - Dec 2020 + +Make example for this keyboard (after setting up your build environment): + + make eyeohdesigns/babyv:default + +Flashing example for this keyboard: + + make eyeohdesigns/babyv:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/eyeohdesigns/babyv/rules.mk b/keyboards/eyeohdesigns/babyv/rules.mk new file mode 100644 index 0000000000..b26342b202 --- /dev/null +++ b/keyboards/eyeohdesigns/babyv/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/eyeohdesigns/readme.md b/keyboards/eyeohdesigns/readme.md new file mode 100644 index 0000000000..7710bfc154 --- /dev/null +++ b/keyboards/eyeohdesigns/readme.md @@ -0,0 +1,13 @@ +# eye oh designs + +When I'm not spending time with family, or busy with work, I make keyboards that I hope you'll love. + +Stay up to date with my projects on Instagram: @eyeohdesigns + +I post on reddit and Geekhack as joedinkle + +![Longbow](https://i.imgur.com/nZz3tII.jpg) + +![SPRH](https://imgur.com/DHR0beSl.jpg) + +![S50](https://imgur.com/9aGFOUi.jpg) From a866fbf3819eaf0ce787fd8c67b1bddee59bc19b Mon Sep 17 00:00:00 2001 From: James Young <18669334+noroadsleft@users.noreply.github.com> Date: Sat, 27 Mar 2021 01:03:42 -0700 Subject: [PATCH 151/613] handwired/rs60: use LAYOUT_ortho_5x12 directly (#12397) This commit renames the macro LAYOUT to LAYOUT_ortho_5x12, and removes the alias. --- keyboards/handwired/rs60/keymaps/default/keymap.c | 12 ++++++------ keyboards/handwired/rs60/rs60.h | 4 +--- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/keyboards/handwired/rs60/keymaps/default/keymap.c b/keyboards/handwired/rs60/keymaps/default/keymap.c index 9fea769d05..7c61964330 100644 --- a/keyboards/handwired/rs60/keymaps/default/keymap.c +++ b/keyboards/handwired/rs60/keymaps/default/keymap.c @@ -48,7 +48,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | * `-----------------------------------------------------------------------------------' */ -[_QWERTY] = LAYOUT( \ +[_QWERTY] = LAYOUT_ortho_5x12( \ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, \ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ @@ -69,7 +69,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | * `-----------------------------------------------------------------------------------' */ -[_COLEMAK] = LAYOUT( \ +[_COLEMAK] = LAYOUT_ortho_5x12( \ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \ KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_DEL, \ KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \ @@ -90,7 +90,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | * `-----------------------------------------------------------------------------------' */ -[_DVORAK] = LAYOUT( \ +[_DVORAK] = LAYOUT_ortho_5x12( \ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \ KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DEL, \ KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \ @@ -111,7 +111,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | Next | Vol- | Vol+ | Play | * `-----------------------------------------------------------------------------------' */ -[_LOWER] = LAYOUT( \ +[_LOWER] = LAYOUT_ortho_5x12( \ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \ 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_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \ @@ -132,7 +132,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | Next | Vol- | Vol+ | Play | * `-----------------------------------------------------------------------------------' */ -[_RAISE] = LAYOUT( \ +[_RAISE] = LAYOUT_ortho_5x12( \ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \ @@ -153,7 +153,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | | | | * `-----------------------------------------------------------------------------------' */ -[_ADJUST] = LAYOUT( \ +[_ADJUST] = LAYOUT_ortho_5x12( \ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \ _______, RESET, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL, \ _______, _______, _______, _______, _______, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \ diff --git a/keyboards/handwired/rs60/rs60.h b/keyboards/handwired/rs60/rs60.h index f2113f05c3..294149729e 100644 --- a/keyboards/handwired/rs60/rs60.h +++ b/keyboards/handwired/rs60/rs60.h @@ -18,7 +18,7 @@ along with this program. If not, see . #include "quantum.h" -#define LAYOUT( \ +#define LAYOUT_ortho_5x12( \ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \ @@ -32,5 +32,3 @@ along with this program. If not, see . { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b }, \ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b } \ } - -#define LAYOUT_ortho_5x12 LAYOUT From 5dc7951dc0a2f4c0f116db3c0fe992e4d3fd8657 Mon Sep 17 00:00:00 2001 From: Zach White Date: Sat, 27 Mar 2021 08:55:47 -0700 Subject: [PATCH 152/613] add utf-8 encoding to the open() call (#12388) --- lib/python/qmk/json_schema.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/python/qmk/json_schema.py b/lib/python/qmk/json_schema.py index b4cd1776b2..077dfcaa93 100644 --- a/lib/python/qmk/json_schema.py +++ b/lib/python/qmk/json_schema.py @@ -15,7 +15,7 @@ def json_load(json_file): Note: file must be a Path object. """ try: - return hjson.load(json_file.open()) + return hjson.load(json_file.open(encoding='utf-8')) except json.decoder.JSONDecodeError as e: cli.log.error('Invalid JSON encountered attempting to load {fg_cyan}%s{fg_reset}:\n\t{fg_red}%s', json_file, e) From ae59a51193031b2f36f3c5daf11316e542fcdd47 Mon Sep 17 00:00:00 2001 From: kb-elmo Date: Mon, 29 Mar 2021 05:46:17 +0200 Subject: [PATCH 153/613] Added the 64_ansi (GK64) layout to DZ60 (#12378) * add gk64 layout * Apply suggestions from code review --- keyboards/dz60/dz60.h | 27 +++++++++++ keyboards/dz60/info.json | 68 ++++++++++++++++++++++++++++ keyboards/dz60/keymaps/gk64/keymap.c | 18 ++++++++ 3 files changed, 113 insertions(+) create mode 100644 keyboards/dz60/keymaps/gk64/keymap.c diff --git a/keyboards/dz60/dz60.h b/keyboards/dz60/dz60.h index 8ed4a27279..0f30390c1a 100644 --- a/keyboards/dz60/dz60.h +++ b/keyboards/dz60/dz60.h @@ -708,3 +708,30 @@ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e }, \ { k40, k41, KC_NO, k43, KC_NO, KC_NO, k46, KC_NO, KC_NO, KC_NO, k4a, k4b, k4c, k4d, k4e } \ } + +/* LAYOUT_64_ansi + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┠+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ + * │10 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │1e │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ + * │20 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2d │ + * ├──────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬───┬───┤ + * │30 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │3e │ + * ├────┬──┴─┬─┴──┬┴───┴───┴───┴───┴───┴───┼───┼───┼───┼───┼───┤ + * │40 │41 │43 │46 │4a │4b │4c │4d │4e │ + * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘ +*/ +#define LAYOUT_64_ansi( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \ + k10, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, \ + k20, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \ + k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \ + k40, k41, k43, k46, k4a, k4b, k4c, k4d, k4e \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, KC_NO }, \ + { k10, KC_NO, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e }, \ + { k20, KC_NO, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, KC_NO }, \ + { k30, KC_NO, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e }, \ + { k40, k41, KC_NO, k43, KC_NO, KC_NO, k46, KC_NO, KC_NO, KC_NO, k4a, k4b, k4c, k4d, k4e } \ +} diff --git a/keyboards/dz60/info.json b/keyboards/dz60/info.json index dd86fc3fe1..5990bbec11 100644 --- a/keyboards/dz60/info.json +++ b/keyboards/dz60/info.json @@ -1873,6 +1873,74 @@ {"x": 13, "y": 4}, {"x": 14, "y": 4} ] + }, + "LAYOUT_64_ansi": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.5, "y":1, "w":1.5}, + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + {"x":0, "y":3, "w":2}, + {"x":2, "y":3}, + {"x":3, "y":3}, + {"x":4, "y":3}, + {"x":5, "y":3}, + {"x":6, "y":3}, + {"x":7, "y":3}, + {"x":8, "y":3}, + {"x":9, "y":3}, + {"x":10, "y":3}, + {"x":11, "y":3}, + {"x":12, "y":3}, + {"x":13, "y":3}, + {"x":14, "y":3}, + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4}, + {"x":11, "y":4}, + {"x":12, "y":4}, + {"x":13, "y":4}, + {"x":14, "y":4} + ] } } } diff --git a/keyboards/dz60/keymaps/gk64/keymap.c b/keyboards/dz60/keymaps/gk64/keymap.c new file mode 100644 index 0000000000..9de1ec11c5 --- /dev/null +++ b/keyboards/dz60/keymaps/gk64/keymap.c @@ -0,0 +1,18 @@ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_64_ansi( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT), + + LAYOUT_64_ansi( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; From 64551a8386d4c84c16c859b0bdbb05a623fe8e89 Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Wed, 31 Mar 2021 09:33:26 +1100 Subject: [PATCH 154/613] Allow for clang-format up to v20. (#12407) --- lib/python/qmk/cli/cformat.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/python/qmk/cli/cformat.py b/lib/python/qmk/cli/cformat.py index 5aab31843c..1edb30553a 100644 --- a/lib/python/qmk/cli/cformat.py +++ b/lib/python/qmk/cli/cformat.py @@ -14,7 +14,7 @@ def cformat_run(files, all_files): """ # Determine which version of clang-format to use clang_format = ['clang-format', '-i'] - for clang_version in [10, 9, 8, 7]: + for clang_version in range(20,6,-1): binary = 'clang-format-%d' % clang_version if which(binary): clang_format[0] = binary From 8a950a7116fa8401148efa14a1da47b0879ec379 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 31 Mar 2021 10:16:14 +1100 Subject: [PATCH 155/613] Format code according to conventions (#12437) Co-authored-by: QMK Bot --- lib/python/qmk/cli/cformat.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/python/qmk/cli/cformat.py b/lib/python/qmk/cli/cformat.py index 1edb30553a..c7e93b2ab6 100644 --- a/lib/python/qmk/cli/cformat.py +++ b/lib/python/qmk/cli/cformat.py @@ -14,7 +14,7 @@ def cformat_run(files, all_files): """ # Determine which version of clang-format to use clang_format = ['clang-format', '-i'] - for clang_version in range(20,6,-1): + for clang_version in range(20, 6, -1): binary = 'clang-format-%d' % clang_version if which(binary): clang_format[0] = binary From c5ddada32ea45f50ddecdfc1e7d39f51465ef302 Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Thu, 1 Apr 2021 00:09:01 +1100 Subject: [PATCH 156/613] Remove leftover old implementations of the lily58 split code. (#12442) --- keyboards/lily58/rev1/config.h | 2 + keyboards/lily58/rev1/matrix.c | 357 ---------------- keyboards/lily58/rev1/serial_config.h | 4 - keyboards/lily58/rev1/split_util.c | 100 ----- keyboards/lily58/serial.c | 589 -------------------------- 5 files changed, 2 insertions(+), 1050 deletions(-) delete mode 100755 keyboards/lily58/rev1/matrix.c delete mode 100755 keyboards/lily58/rev1/serial_config.h delete mode 100755 keyboards/lily58/rev1/split_util.c delete mode 100755 keyboards/lily58/serial.c diff --git a/keyboards/lily58/rev1/config.h b/keyboards/lily58/rev1/config.h index 39b15fc5b6..24dc41151f 100644 --- a/keyboards/lily58/rev1/config.h +++ b/keyboards/lily58/rev1/config.h @@ -35,6 +35,8 @@ along with this program. If not, see . #define MATRIX_ROW_PINS { C6, D7, E6, B4, B5 } #define MATRIX_COL_PINS { F6, F7, B1, B3, B2, B6 } +#define SOFT_SERIAL_PIN D2 +#define SERIAL_USE_MULTI_TRANSACTION /* define if matrix has ghost */ //#define MATRIX_HAS_GHOST diff --git a/keyboards/lily58/rev1/matrix.c b/keyboards/lily58/rev1/matrix.c deleted file mode 100755 index d3ba1c924e..0000000000 --- a/keyboards/lily58/rev1/matrix.c +++ /dev/null @@ -1,357 +0,0 @@ -/* -Copyright 2012 Jun Wako - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -/* - * scan matrix - */ -#include -#include -#include -#include -#include -#include -#include -#include "print.h" -#include "debug.h" -#include "util.h" -#include "matrix.h" -#include "split_util.h" -#include "quantum.h" - -#ifdef USE_MATRIX_I2C -# include "i2c.h" -#else // USE_SERIAL -# include "split_scomm.h" -#endif - -#ifndef DEBOUNCE -# define DEBOUNCE 5 -#endif - -#define ERROR_DISCONNECT_COUNT 5 - -static uint8_t debouncing = DEBOUNCE; -static const int ROWS_PER_HAND = MATRIX_ROWS/2; -static uint8_t error_count = 0; -uint8_t is_master = 0 ; - -static const uint8_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS; -static const uint8_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS; - -/* matrix state(1:on, 0:off) */ -static matrix_row_t matrix[MATRIX_ROWS]; -static matrix_row_t matrix_debouncing[MATRIX_ROWS]; - -static matrix_row_t read_cols(void); -static void init_cols(void); -static void unselect_rows(void); -static void select_row(uint8_t row); -static uint8_t matrix_master_scan(void); - - -__attribute__ ((weak)) -void matrix_init_kb(void) { - matrix_init_user(); -} - -__attribute__ ((weak)) -void matrix_scan_kb(void) { - matrix_scan_user(); -} - -__attribute__ ((weak)) -void matrix_init_user(void) { -} - -__attribute__ ((weak)) -void matrix_scan_user(void) { -} - -inline -uint8_t matrix_rows(void) -{ - return MATRIX_ROWS; -} - -inline -uint8_t matrix_cols(void) -{ - return MATRIX_COLS; -} - -void matrix_init(void) -{ - split_keyboard_setup(); - - // initialize row and col - unselect_rows(); - init_cols(); - - setPinOutput(B0); - setPinOutput(D5); - writePinHigh(B0); - writePinHigh(D5); - - // initialize matrix state: all keys off - for (uint8_t i=0; i < MATRIX_ROWS; i++) { - matrix[i] = 0; - matrix_debouncing[i] = 0; - } - - is_master = has_usb(); - - matrix_init_quantum(); -} - -uint8_t _matrix_scan(void) -{ - // Right hand is stored after the left in the matirx so, we need to offset it - int offset = isLeftHand ? 0 : (ROWS_PER_HAND); - - for (uint8_t i = 0; i < ROWS_PER_HAND; i++) { - select_row(i); - _delay_us(30); // without this wait read unstable value. - matrix_row_t cols = read_cols(); - if (matrix_debouncing[i+offset] != cols) { - matrix_debouncing[i+offset] = cols; - debouncing = DEBOUNCE; - } - unselect_rows(); - } - - if (debouncing) { - if (--debouncing) { - _delay_ms(1); - } else { - for (uint8_t i = 0; i < ROWS_PER_HAND; i++) { - matrix[i+offset] = matrix_debouncing[i+offset]; - } - } - } - - return 1; -} - -#ifdef USE_MATRIX_I2C - -// Get rows from other half over i2c -int i2c_transaction(void) { - int slaveOffset = (isLeftHand) ? (ROWS_PER_HAND) : 0; - - int err = i2c_master_start(SLAVE_I2C_ADDRESS + I2C_WRITE); - if (err) goto i2c_error; - - // start of matrix stored at 0x00 - err = i2c_master_write(0x00); - if (err) goto i2c_error; - - // Start read - err = i2c_master_start(SLAVE_I2C_ADDRESS + I2C_READ); - if (err) goto i2c_error; - - if (!err) { - int i; - for (i = 0; i < ROWS_PER_HAND-1; ++i) { - matrix[slaveOffset+i] = i2c_master_read(I2C_ACK); - } - matrix[slaveOffset+i] = i2c_master_read(I2C_NACK); - i2c_master_stop(); - } else { -i2c_error: // the cable is disconnceted, or something else went wrong - i2c_reset_state(); - return err; - } - - return 0; -} - -#else // USE_SERIAL - -int serial_transaction(int master_changed) { - int slaveOffset = (isLeftHand) ? (ROWS_PER_HAND) : 0; -#ifdef SERIAL_USE_MULTI_TRANSACTION - int ret=serial_update_buffers(master_changed); -#else - int ret=serial_update_buffers(); -#endif - if (ret ) { - if(ret==2) writePinLow(B0); - return 1; - } - writePinHigh(B0); - memcpy(&matrix[slaveOffset], - (void *)serial_slave_buffer, SERIAL_SLAVE_BUFFER_LENGTH); - return 0; -} -#endif - -uint8_t matrix_scan(void) -{ - if (is_master) { - matrix_master_scan(); - }else{ - matrix_slave_scan(); - int offset = (isLeftHand) ? ROWS_PER_HAND : 0; - memcpy(&matrix[offset], - (void *)serial_master_buffer, SERIAL_MASTER_BUFFER_LENGTH); - matrix_scan_quantum(); - } - return 1; -} - - -uint8_t matrix_master_scan(void) { - - int ret = _matrix_scan(); - int mchanged = 1; - - int offset = (isLeftHand) ? 0 : ROWS_PER_HAND; - -#ifdef USE_MATRIX_I2C -// for (int i = 0; i < ROWS_PER_HAND; ++i) { - /* i2c_slave_buffer[i] = matrix[offset+i]; */ -// i2c_slave_buffer[i] = matrix[offset+i]; -// } -#else // USE_SERIAL - #ifdef SERIAL_USE_MULTI_TRANSACTION - mchanged = memcmp((void *)serial_master_buffer, - &matrix[offset], SERIAL_MASTER_BUFFER_LENGTH); - #endif - memcpy((void *)serial_master_buffer, - &matrix[offset], SERIAL_MASTER_BUFFER_LENGTH); -#endif - -#ifdef USE_MATRIX_I2C - if( i2c_transaction() ) { -#else // USE_SERIAL - if( serial_transaction(mchanged) ) { -#endif - // turn on the indicator led when halves are disconnected - writePinLow(D5); - - error_count++; - - if (error_count > ERROR_DISCONNECT_COUNT) { - // reset other half if disconnected - int slaveOffset = (isLeftHand) ? (ROWS_PER_HAND) : 0; - for (int i = 0; i < ROWS_PER_HAND; ++i) { - matrix[slaveOffset+i] = 0; - } - } - } else { - // turn off the indicator led on no error - writePinHigh(D5); - error_count = 0; - } - matrix_scan_quantum(); - return ret; -} - -void matrix_slave_scan(void) { - _matrix_scan(); - - int offset = (isLeftHand) ? 0 : ROWS_PER_HAND; - -#ifdef USE_MATRIX_I2C - for (int i = 0; i < ROWS_PER_HAND; ++i) { - /* i2c_slave_buffer[i] = matrix[offset+i]; */ - i2c_slave_buffer[i] = matrix[offset+i]; - } -#else // USE_SERIAL - #ifdef SERIAL_USE_MULTI_TRANSACTION - int change = 0; - #endif - for (int i = 0; i < ROWS_PER_HAND; ++i) { - #ifdef SERIAL_USE_MULTI_TRANSACTION - if( serial_slave_buffer[i] != matrix[offset+i] ) - change = 1; - #endif - serial_slave_buffer[i] = matrix[offset+i]; - } - #ifdef SERIAL_USE_MULTI_TRANSACTION - slave_buffer_change_count += change; - #endif -#endif -} - -bool matrix_is_modified(void) -{ - if (debouncing) return false; - return true; -} - -inline -bool matrix_is_on(uint8_t row, uint8_t col) -{ - return (matrix[row] & ((matrix_row_t)1<> 4) + 1) &= ~_BV(col_pins[x] & 0xF); - _SFR_IO8((col_pins[x] >> 4) + 2) |= _BV(col_pins[x] & 0xF); - } -} - -static matrix_row_t read_cols(void) -{ - matrix_row_t result = 0; - for(int x = 0; x < MATRIX_COLS; x++) { - result |= (_SFR_IO8(col_pins[x] >> 4) & _BV(col_pins[x] & 0xF)) ? 0 : (1 << x); - } - return result; -} - -static void unselect_rows(void) -{ - for(int x = 0; x < ROWS_PER_HAND; x++) { - _SFR_IO8((row_pins[x] >> 4) + 1) &= ~_BV(row_pins[x] & 0xF); - _SFR_IO8((row_pins[x] >> 4) + 2) |= _BV(row_pins[x] & 0xF); - } -} - -static void select_row(uint8_t row) -{ - _SFR_IO8((row_pins[row] >> 4) + 1) |= _BV(row_pins[row] & 0xF); - _SFR_IO8((row_pins[row] >> 4) + 2) &= ~_BV(row_pins[row] & 0xF); -} diff --git a/keyboards/lily58/rev1/serial_config.h b/keyboards/lily58/rev1/serial_config.h deleted file mode 100755 index 4fab8e8ddf..0000000000 --- a/keyboards/lily58/rev1/serial_config.h +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef SOFT_SERIAL_PIN -#define SOFT_SERIAL_PIN D2 -#define SERIAL_USE_MULTI_TRANSACTION -#endif diff --git a/keyboards/lily58/rev1/split_util.c b/keyboards/lily58/rev1/split_util.c deleted file mode 100755 index 316c1c389e..0000000000 --- a/keyboards/lily58/rev1/split_util.c +++ /dev/null @@ -1,100 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include "split_util.h" -#include "matrix.h" -#include "keyboard.h" -#include "wait.h" - -#ifdef USE_MATRIX_I2C -# include "i2c.h" -#else -# include "split_scomm.h" -#endif - -#ifndef SPLIT_USB_TIMEOUT -# define SPLIT_USB_TIMEOUT 2500 -#endif - -volatile bool isLeftHand = true; - -bool waitForUsb(void) { - for (uint8_t i = 0; i < (SPLIT_USB_TIMEOUT / 100); i++) { - // This will return true of a USB connection has been established - if (UDADDR & _BV(ADDEN)) { - return true; - } - wait_ms(100); - } - - // Avoid NO_USB_STARTUP_CHECK - Disable USB as the previous checks seem to enable it somehow - (USBCON &= ~(_BV(USBE) | _BV(OTGPADE))); - - return false; -} - -__attribute__((weak)) bool is_keyboard_left(void) { -#if defined(SPLIT_HAND_PIN) - // Test pin SPLIT_HAND_PIN for High/Low, if low it's right hand - setPinInput(SPLIT_HAND_PIN); - return readPin(SPLIT_HAND_PIN); -#elif defined(EE_HANDS) - return eeconfig_read_handedness(); -#elif defined(MASTER_RIGHT) - return !has_usb(); -#endif - - return has_usb(); -} - -__attribute__((weak)) bool has_usb(void) { - static enum { UNKNOWN, MASTER, SLAVE } usbstate = UNKNOWN; - - // only check once, as this is called often - if (usbstate == UNKNOWN) { -#if defined(SPLIT_USB_DETECT) - usbstate = waitForUsb() ? MASTER : SLAVE; -#elif defined(__AVR__) - USBCON |= (1 << OTGPADE); // enables VBUS pad - wait_us(5); - - usbstate = (USBSTA & (1 << VBUS)) ? MASTER : SLAVE; // checks state of VBUS -#else - usbstate = MASTER; -#endif - } - - return (usbstate == MASTER); -} - -static void keyboard_master_setup(void) { - -#ifdef USE_MATRIX_I2C - i2c_master_init(); -#else - serial_master_init(); -#endif -} - -static void keyboard_slave_setup(void) { - -#ifdef USE_MATRIX_I2C - i2c_slave_init(SLAVE_I2C_ADDRESS); -#else - serial_slave_init(); -#endif -} - -void split_keyboard_setup(void) { - isLeftHand = is_keyboard_left(); - - if (has_usb()) { - keyboard_master_setup(); - } else { - keyboard_slave_setup(); - } - sei(); -} diff --git a/keyboards/lily58/serial.c b/keyboards/lily58/serial.c deleted file mode 100755 index f6293c3dc2..0000000000 --- a/keyboards/lily58/serial.c +++ /dev/null @@ -1,589 +0,0 @@ -/* - * WARNING: be careful changing this code, it is very timing dependent - * - * 2018-10-28 checked - * avr-gcc 4.9.2 - * avr-gcc 5.4.0 - * avr-gcc 7.3.0 - */ - -#ifndef F_CPU -#define F_CPU 16000000 -#endif - -#include -#include -#include -#include -#include -#include "serial.h" - -#ifdef SOFT_SERIAL_PIN - -#ifdef __AVR_ATmega32U4__ - // if using ATmega32U4 I2C, can not use PD0 and PD1 in soft serial. - #ifdef USE_I2C - #if SOFT_SERIAL_PIN == D0 || SOFT_SERIAL_PIN == D1 - #error Using ATmega32U4 I2C, so can not use PD0, PD1 - #endif - #endif - - #if SOFT_SERIAL_PIN >= D0 && SOFT_SERIAL_PIN <= D3 - #define SERIAL_PIN_DDR DDRD - #define SERIAL_PIN_PORT PORTD - #define SERIAL_PIN_INPUT PIND - #if SOFT_SERIAL_PIN == D0 - #define SERIAL_PIN_MASK _BV(PD0) - #define EIMSK_BIT _BV(INT0) - #define EICRx_BIT (~(_BV(ISC00) | _BV(ISC01))) - #define SERIAL_PIN_INTERRUPT INT0_vect - #elif SOFT_SERIAL_PIN == D1 - #define SERIAL_PIN_MASK _BV(PD1) - #define EIMSK_BIT _BV(INT1) - #define EICRx_BIT (~(_BV(ISC10) | _BV(ISC11))) - #define SERIAL_PIN_INTERRUPT INT1_vect - #elif SOFT_SERIAL_PIN == D2 - #define SERIAL_PIN_MASK _BV(PD2) - #define EIMSK_BIT _BV(INT2) - #define EICRx_BIT (~(_BV(ISC20) | _BV(ISC21))) - #define SERIAL_PIN_INTERRUPT INT2_vect - #elif SOFT_SERIAL_PIN == D3 - #define SERIAL_PIN_MASK _BV(PD3) - #define EIMSK_BIT _BV(INT3) - #define EICRx_BIT (~(_BV(ISC30) | _BV(ISC31))) - #define SERIAL_PIN_INTERRUPT INT3_vect - #endif - #elif SOFT_SERIAL_PIN == E6 - #define SERIAL_PIN_DDR DDRE - #define SERIAL_PIN_PORT PORTE - #define SERIAL_PIN_INPUT PINE - #define SERIAL_PIN_MASK _BV(PE6) - #define EIMSK_BIT _BV(INT6) - #define EICRx_BIT (~(_BV(ISC60) | _BV(ISC61))) - #define SERIAL_PIN_INTERRUPT INT6_vect - #else - #error invalid SOFT_SERIAL_PIN value - #endif - -#else - #error serial.c now support ATmega32U4 only -#endif - -//////////////// for backward compatibility //////////////////////////////// -#ifndef SERIAL_USE_MULTI_TRANSACTION -/* --- USE Simple API (OLD API, compatible with let's split serial.c) */ - #if SERIAL_SLAVE_BUFFER_LENGTH > 0 - uint8_t volatile serial_slave_buffer[SERIAL_SLAVE_BUFFER_LENGTH] = {0}; - #endif - #if SERIAL_MASTER_BUFFER_LENGTH > 0 - uint8_t volatile serial_master_buffer[SERIAL_MASTER_BUFFER_LENGTH] = {0}; - #endif - uint8_t volatile status0 = 0; - -SSTD_t transactions[] = { - { (uint8_t *)&status0, - #if SERIAL_MASTER_BUFFER_LENGTH > 0 - sizeof(serial_master_buffer), (uint8_t *)serial_master_buffer, - #else - 0, (uint8_t *)NULL, - #endif - #if SERIAL_SLAVE_BUFFER_LENGTH > 0 - sizeof(serial_slave_buffer), (uint8_t *)serial_slave_buffer - #else - 0, (uint8_t *)NULL, - #endif - } -}; - -void serial_master_init(void) -{ soft_serial_initiator_init(transactions, TID_LIMIT(transactions)); } - -void serial_slave_init(void) -{ soft_serial_target_init(transactions, TID_LIMIT(transactions)); } - -// 0 => no error -// 1 => slave did not respond -// 2 => checksum error -int serial_update_buffers() -{ - int result; - result = soft_serial_transaction(); - return result; -} - -#endif // end of Simple API (OLD API, compatible with let's split serial.c) -//////////////////////////////////////////////////////////////////////////// - -#define ALWAYS_INLINE __attribute__((always_inline)) -#define NO_INLINE __attribute__((noinline)) -#define _delay_sub_us(x) __builtin_avr_delay_cycles(x) - -// parity check -#define ODD_PARITY 1 -#define EVEN_PARITY 0 -#define PARITY EVEN_PARITY - -#ifdef SERIAL_DELAY - // custom setup in config.h - // #define TID_SEND_ADJUST 2 - // #define SERIAL_DELAY 6 // micro sec - // #define READ_WRITE_START_ADJUST 30 // cycles - // #define READ_WRITE_WIDTH_ADJUST 8 // cycles -#else -// ============ Standard setups ============ - -#ifndef SELECT_SOFT_SERIAL_SPEED -#define SELECT_SOFT_SERIAL_SPEED 1 -// 0: about 189kbps -// 1: about 137kbps (default) -// 2: about 75kbps -// 3: about 39kbps -// 4: about 26kbps -// 5: about 20kbps -#endif - -#if __GNUC__ < 6 - #define TID_SEND_ADJUST 14 -#else - #define TID_SEND_ADJUST 2 -#endif - -#if SELECT_SOFT_SERIAL_SPEED == 0 - // Very High speed - #define SERIAL_DELAY 4 // micro sec - #if __GNUC__ < 6 - #define READ_WRITE_START_ADJUST 33 // cycles - #define READ_WRITE_WIDTH_ADJUST 3 // cycles - #else - #define READ_WRITE_START_ADJUST 34 // cycles - #define READ_WRITE_WIDTH_ADJUST 7 // cycles - #endif -#elif SELECT_SOFT_SERIAL_SPEED == 1 - // High speed - #define SERIAL_DELAY 6 // micro sec - #if __GNUC__ < 6 - #define READ_WRITE_START_ADJUST 30 // cycles - #define READ_WRITE_WIDTH_ADJUST 3 // cycles - #else - #define READ_WRITE_START_ADJUST 33 // cycles - #define READ_WRITE_WIDTH_ADJUST 7 // cycles - #endif -#elif SELECT_SOFT_SERIAL_SPEED == 2 - // Middle speed - #define SERIAL_DELAY 12 // micro sec - #define READ_WRITE_START_ADJUST 30 // cycles - #if __GNUC__ < 6 - #define READ_WRITE_WIDTH_ADJUST 3 // cycles - #else - #define READ_WRITE_WIDTH_ADJUST 7 // cycles - #endif -#elif SELECT_SOFT_SERIAL_SPEED == 3 - // Low speed - #define SERIAL_DELAY 24 // micro sec - #define READ_WRITE_START_ADJUST 30 // cycles - #if __GNUC__ < 6 - #define READ_WRITE_WIDTH_ADJUST 3 // cycles - #else - #define READ_WRITE_WIDTH_ADJUST 7 // cycles - #endif -#elif SELECT_SOFT_SERIAL_SPEED == 4 - // Very Low speed - #define SERIAL_DELAY 36 // micro sec - #define READ_WRITE_START_ADJUST 30 // cycles - #if __GNUC__ < 6 - #define READ_WRITE_WIDTH_ADJUST 3 // cycles - #else - #define READ_WRITE_WIDTH_ADJUST 7 // cycles - #endif -#elif SELECT_SOFT_SERIAL_SPEED == 5 - // Ultra Low speed - #define SERIAL_DELAY 48 // micro sec - #define READ_WRITE_START_ADJUST 30 // cycles - #if __GNUC__ < 6 - #define READ_WRITE_WIDTH_ADJUST 3 // cycles - #else - #define READ_WRITE_WIDTH_ADJUST 7 // cycles - #endif -#else -#error invalid SELECT_SOFT_SERIAL_SPEED value -#endif /* SELECT_SOFT_SERIAL_SPEED */ -#endif /* SERIAL_DELAY */ - -#define SERIAL_DELAY_HALF1 (SERIAL_DELAY/2) -#define SERIAL_DELAY_HALF2 (SERIAL_DELAY - SERIAL_DELAY/2) - -#define SLAVE_INT_WIDTH_US 1 -#ifndef SERIAL_USE_MULTI_TRANSACTION - #define SLAVE_INT_RESPONSE_TIME SERIAL_DELAY -#else - #define SLAVE_INT_ACK_WIDTH_UNIT 2 - #define SLAVE_INT_ACK_WIDTH 4 -#endif - -static SSTD_t *Transaction_table = NULL; -static uint8_t Transaction_table_size = 0; - -inline static void serial_delay(void) ALWAYS_INLINE; -inline static -void serial_delay(void) { - _delay_us(SERIAL_DELAY); -} - -inline static void serial_delay_half1(void) ALWAYS_INLINE; -inline static -void serial_delay_half1(void) { - _delay_us(SERIAL_DELAY_HALF1); -} - -inline static void serial_delay_half2(void) ALWAYS_INLINE; -inline static -void serial_delay_half2(void) { - _delay_us(SERIAL_DELAY_HALF2); -} - -inline static void serial_output(void) ALWAYS_INLINE; -inline static -void serial_output(void) { - SERIAL_PIN_DDR |= SERIAL_PIN_MASK; -} - -// make the serial pin an input with pull-up resistor -inline static void serial_input_with_pullup(void) ALWAYS_INLINE; -inline static -void serial_input_with_pullup(void) { - SERIAL_PIN_DDR &= ~SERIAL_PIN_MASK; - SERIAL_PIN_PORT |= SERIAL_PIN_MASK; -} - -inline static uint8_t serial_read_pin(void) ALWAYS_INLINE; -inline static -uint8_t serial_read_pin(void) { - return !!(SERIAL_PIN_INPUT & SERIAL_PIN_MASK); -} - -inline static void serial_low(void) ALWAYS_INLINE; -inline static -void serial_low(void) { - SERIAL_PIN_PORT &= ~SERIAL_PIN_MASK; -} - -inline static void serial_high(void) ALWAYS_INLINE; -inline static -void serial_high(void) { - SERIAL_PIN_PORT |= SERIAL_PIN_MASK; -} - -void soft_serial_initiator_init(SSTD_t *sstd_table, int sstd_table_size) -{ - Transaction_table = sstd_table; - Transaction_table_size = (uint8_t)sstd_table_size; - serial_output(); - serial_high(); -} - -void soft_serial_target_init(SSTD_t *sstd_table, int sstd_table_size) -{ - Transaction_table = sstd_table; - Transaction_table_size = (uint8_t)sstd_table_size; - serial_input_with_pullup(); - - // Enable INT0-INT3,INT6 - EIMSK |= EIMSK_BIT; -#if SERIAL_PIN_MASK == _BV(PE6) - // Trigger on falling edge of INT6 - EICRB &= EICRx_BIT; -#else - // Trigger on falling edge of INT0-INT3 - EICRA &= EICRx_BIT; -#endif -} - -// Used by the sender to synchronize timing with the reciver. -static void sync_recv(void) NO_INLINE; -static -void sync_recv(void) { - for (uint8_t i = 0; i < SERIAL_DELAY*5 && serial_read_pin(); i++ ) { - } - // This shouldn't hang if the target disconnects because the - // serial line will float to high if the target does disconnect. - while (!serial_read_pin()); -} - -// Used by the reciver to send a synchronization signal to the sender. -static void sync_send(void) NO_INLINE; -static -void sync_send(void) { - serial_low(); - serial_delay(); - serial_high(); -} - -// Reads a byte from the serial line -static uint8_t serial_read_chunk(uint8_t *pterrcount, uint8_t bit) NO_INLINE; -static uint8_t serial_read_chunk(uint8_t *pterrcount, uint8_t bit) { - uint8_t byte, i, p, pb; - - _delay_sub_us(READ_WRITE_START_ADJUST); - for( i = 0, byte = 0, p = PARITY; i < bit; i++ ) { - serial_delay_half1(); // read the middle of pulses - if( serial_read_pin() ) { - byte = (byte << 1) | 1; p ^= 1; - } else { - byte = (byte << 1) | 0; p ^= 0; - } - _delay_sub_us(READ_WRITE_WIDTH_ADJUST); - serial_delay_half2(); - } - /* recive parity bit */ - serial_delay_half1(); // read the middle of pulses - pb = serial_read_pin(); - _delay_sub_us(READ_WRITE_WIDTH_ADJUST); - serial_delay_half2(); - - *pterrcount += (p != pb)? 1 : 0; - - return byte; -} - -// Sends a byte with MSB ordering -void serial_write_chunk(uint8_t data, uint8_t bit) NO_INLINE; -void serial_write_chunk(uint8_t data, uint8_t bit) { - uint8_t b, p; - for( p = PARITY, b = 1<<(bit-1); b ; b >>= 1) { - if(data & b) { - serial_high(); p ^= 1; - } else { - serial_low(); p ^= 0; - } - serial_delay(); - } - /* send parity bit */ - if(p & 1) { serial_high(); } - else { serial_low(); } - serial_delay(); - - serial_low(); // sync_send() / senc_recv() need raise edge -} - -static void serial_send_packet(uint8_t *buffer, uint8_t size) NO_INLINE; -static -void serial_send_packet(uint8_t *buffer, uint8_t size) { - for (uint8_t i = 0; i < size; ++i) { - uint8_t data; - data = buffer[i]; - sync_send(); - serial_write_chunk(data,8); - } -} - -static uint8_t serial_recive_packet(uint8_t *buffer, uint8_t size) NO_INLINE; -static -uint8_t serial_recive_packet(uint8_t *buffer, uint8_t size) { - uint8_t pecount = 0; - for (uint8_t i = 0; i < size; ++i) { - uint8_t data; - sync_recv(); - data = serial_read_chunk(&pecount, 8); - buffer[i] = data; - } - return pecount == 0; -} - -inline static -void change_sender2reciver(void) { - sync_send(); //0 - serial_delay_half1(); //1 - serial_low(); //2 - serial_input_with_pullup(); //2 - serial_delay_half1(); //3 -} - -inline static -void change_reciver2sender(void) { - sync_recv(); //0 - serial_delay(); //1 - serial_low(); //3 - serial_output(); //3 - serial_delay_half1(); //4 -} - -static inline uint8_t nibble_bits_count(uint8_t bits) -{ - bits = (bits & 0x5) + (bits >> 1 & 0x5); - bits = (bits & 0x3) + (bits >> 2 & 0x3); - return bits; -} - -// interrupt handle to be used by the target device -ISR(SERIAL_PIN_INTERRUPT) { - -#ifndef SERIAL_USE_MULTI_TRANSACTION - serial_low(); - serial_output(); - SSTD_t *trans = Transaction_table; -#else - // recive transaction table index - uint8_t tid, bits; - uint8_t pecount = 0; - sync_recv(); - bits = serial_read_chunk(&pecount,7); - tid = bits>>3; - bits = (bits&7) != nibble_bits_count(tid); - if( bits || pecount> 0 || tid > Transaction_table_size ) { - return; - } - serial_delay_half1(); - - serial_high(); // response step1 low->high - serial_output(); - _delay_sub_us(SLAVE_INT_ACK_WIDTH_UNIT*SLAVE_INT_ACK_WIDTH); - SSTD_t *trans = &Transaction_table[tid]; - serial_low(); // response step2 ack high->low -#endif - - // target send phase - if( trans->target2initiator_buffer_size > 0 ) - serial_send_packet((uint8_t *)trans->target2initiator_buffer, - trans->target2initiator_buffer_size); - // target switch to input - change_sender2reciver(); - - // target recive phase - if( trans->initiator2target_buffer_size > 0 ) { - if (serial_recive_packet((uint8_t *)trans->initiator2target_buffer, - trans->initiator2target_buffer_size) ) { - *trans->status = TRANSACTION_ACCEPTED; - } else { - *trans->status = TRANSACTION_DATA_ERROR; - } - } else { - *trans->status = TRANSACTION_ACCEPTED; - } - - sync_recv(); //weit initiator output to high -} - -///////// -// start transaction by initiator -// -// int soft_serial_transaction(int sstd_index) -// -// Returns: -// TRANSACTION_END -// TRANSACTION_NO_RESPONSE -// TRANSACTION_DATA_ERROR -// this code is very time dependent, so we need to disable interrupts -#ifndef SERIAL_USE_MULTI_TRANSACTION -int soft_serial_transaction(void) { - SSTD_t *trans = Transaction_table; -#else -int soft_serial_transaction(int sstd_index) { - if( sstd_index > Transaction_table_size ) - return TRANSACTION_TYPE_ERROR; - SSTD_t *trans = &Transaction_table[sstd_index]; -#endif - cli(); - - // signal to the target that we want to start a transaction - serial_output(); - serial_low(); - _delay_us(SLAVE_INT_WIDTH_US); - -#ifndef SERIAL_USE_MULTI_TRANSACTION - // wait for the target response - serial_input_with_pullup(); - _delay_us(SLAVE_INT_RESPONSE_TIME); - - // check if the target is present - if (serial_read_pin()) { - // target failed to pull the line low, assume not present - serial_output(); - serial_high(); - *trans->status = TRANSACTION_NO_RESPONSE; - sei(); - return TRANSACTION_NO_RESPONSE; - } - -#else - // send transaction table index - int tid = (sstd_index<<3) | (7 & nibble_bits_count(sstd_index)); - sync_send(); - _delay_sub_us(TID_SEND_ADJUST); - serial_write_chunk(tid, 7); - serial_delay_half1(); - - // wait for the target response (step1 low->high) - serial_input_with_pullup(); - while( !serial_read_pin() ) { - _delay_sub_us(2); - } - - // check if the target is present (step2 high->low) - for( int i = 0; serial_read_pin(); i++ ) { - if (i > SLAVE_INT_ACK_WIDTH + 1) { - // slave failed to pull the line low, assume not present - serial_output(); - serial_high(); - *trans->status = TRANSACTION_NO_RESPONSE; - sei(); - return TRANSACTION_NO_RESPONSE; - } - _delay_sub_us(SLAVE_INT_ACK_WIDTH_UNIT); - } -#endif - - // initiator recive phase - // if the target is present syncronize with it - if( trans->target2initiator_buffer_size > 0 ) { - if (!serial_recive_packet((uint8_t *)trans->target2initiator_buffer, - trans->target2initiator_buffer_size) ) { - serial_output(); - serial_high(); - *trans->status = TRANSACTION_DATA_ERROR; - sei(); - return TRANSACTION_DATA_ERROR; - } - } - - // initiator switch to output - change_reciver2sender(); - - // initiator send phase - if( trans->initiator2target_buffer_size > 0 ) { - serial_send_packet((uint8_t *)trans->initiator2target_buffer, - trans->initiator2target_buffer_size); - } - - // always, release the line when not in use - sync_send(); - - *trans->status = TRANSACTION_END; - sei(); - return TRANSACTION_END; -} - -#ifdef SERIAL_USE_MULTI_TRANSACTION -int soft_serial_get_and_clean_status(int sstd_index) { - SSTD_t *trans = &Transaction_table[sstd_index]; - cli(); - int retval = *trans->status; - *trans->status = 0;; - sei(); - return retval; -} -#endif - -#endif - -// Helix serial.c history -// 2018-1-29 fork from let's split and add PD2, modify sync_recv() (#2308, bceffdefc) -// 2018-6-28 bug fix master to slave comm and speed up (#3255, 1038bbef4) -// (adjusted with avr-gcc 4.9.2) -// 2018-7-13 remove USE_SERIAL_PD2 macro (#3374, f30d6dd78) -// (adjusted with avr-gcc 4.9.2) -// 2018-8-11 add support multi-type transaction (#3608, feb5e4aae) -// (adjusted with avr-gcc 4.9.2) -// 2018-10-21 fix serial and RGB animation conflict (#4191, 4665e4fff) -// (adjusted with avr-gcc 7.3.0) -// 2018-10-28 re-adjust compiler depend value of delay (#4269, 8517f8a66) -// (adjusted with avr-gcc 5.4.0, 7.3.0) From ac0ba832c73dd2130f66ba1f3781ccb16c150a89 Mon Sep 17 00:00:00 2001 From: peepeetee <43021794+peepeetee@users.noreply.github.com> Date: Wed, 31 Mar 2021 20:58:23 -0500 Subject: [PATCH 157/613] change BM68 RGB USB Device descriptor device name (#12418) * change styling USB Device descriptor device name to reflect stylistic choices of the developer --- keyboards/bm68rgb/config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/bm68rgb/config.h b/keyboards/bm68rgb/config.h index 7fa2e77960..1923192e5f 100644 --- a/keyboards/bm68rgb/config.h +++ b/keyboards/bm68rgb/config.h @@ -24,7 +24,7 @@ along with this program. If not, see . #define PRODUCT_ID 0xEF6F #define DEVICE_VER 0x0001 #define MANUFACTURER KPRepublic -#define PRODUCT bm68rgb +#define PRODUCT BM68 RGB /* key matrix size */ #define MATRIX_ROWS 5 From 12f308748f3dd7ab2a1f3d93f8f207cb51e306a4 Mon Sep 17 00:00:00 2001 From: Ryan Date: Fri, 2 Apr 2021 21:44:27 +1100 Subject: [PATCH 158/613] qmk doctor: Display macOS and Windows versions, and add WSL warning for /mnt (#12441) --- lib/python/qmk/cli/doctor.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/lib/python/qmk/cli/doctor.py b/lib/python/qmk/cli/doctor.py index 9210737f1e..45a53c7d44 100755 --- a/lib/python/qmk/cli/doctor.py +++ b/lib/python/qmk/cli/doctor.py @@ -35,6 +35,11 @@ def os_test_linux(): if 'microsoft' in platform.uname().release.lower(): cli.log.info("Detected {fg_cyan}Linux (WSL){fg_reset}.") + # https://github.com/microsoft/WSL/issues/4197 + if QMK_FIRMWARE.startswith("/mnt"): + cli.log.warning("I/O performance on /mnt may be extremely slow.") + return CheckStatus.WARNING + return CheckStatus.OK else: cli.log.info("Detected {fg_cyan}Linux{fg_reset}.") @@ -46,7 +51,7 @@ def os_test_linux(): def os_test_macos(): """Run the Mac specific tests. """ - cli.log.info("Detected {fg_cyan}macOS{fg_reset}.") + cli.log.info("Detected {fg_cyan}macOS %s{fg_reset}.", platform.mac_ver()[0]) return CheckStatus.OK @@ -54,7 +59,8 @@ def os_test_macos(): def os_test_windows(): """Run the Windows specific tests. """ - cli.log.info("Detected {fg_cyan}Windows{fg_reset}.") + win32_ver = platform.win32_ver() + cli.log.info("Detected {fg_cyan}Windows %s (%s){fg_reset}.", win32_ver[0], win32_ver[1]) return CheckStatus.OK @@ -71,11 +77,10 @@ def doctor(cli): * [ ] Compile a trivial program with each compiler """ cli.log.info('QMK Doctor is checking your environment.') + cli.log.info('QMK home: {fg_cyan}%s', QMK_FIRMWARE) status = os_tests() - cli.log.info('QMK home: {fg_cyan}%s', QMK_FIRMWARE) - # Make sure our QMK home is a Git repo git_ok = check_git_repo() From cd981ec56a546a29f30c3cc1ce1f5ef2934bc9cd Mon Sep 17 00:00:00 2001 From: Ryan Date: Sat, 3 Apr 2021 08:24:09 +1100 Subject: [PATCH 159/613] `qmk doctor`: Fix WSL /mnt check (#12466) --- lib/python/qmk/cli/doctor.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/python/qmk/cli/doctor.py b/lib/python/qmk/cli/doctor.py index 45a53c7d44..4a2e2010f7 100755 --- a/lib/python/qmk/cli/doctor.py +++ b/lib/python/qmk/cli/doctor.py @@ -36,7 +36,7 @@ def os_test_linux(): cli.log.info("Detected {fg_cyan}Linux (WSL){fg_reset}.") # https://github.com/microsoft/WSL/issues/4197 - if QMK_FIRMWARE.startswith("/mnt"): + if QMK_FIRMWARE.as_posix().startswith("/mnt"): cli.log.warning("I/O performance on /mnt may be extremely slow.") return CheckStatus.WARNING From 43d74d7fa597572677ff79f8213d0ea23f20fc83 Mon Sep 17 00:00:00 2001 From: Duong Anh <56441863+duongaanh@users.noreply.github.com> Date: Sat, 3 Apr 2021 04:25:44 +0700 Subject: [PATCH 160/613] [Keyboard] Add CherryB Studio Keyboards (#11475) Co-authored-by: Joel Challis Co-authored-by: Ryan Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com> --- keyboards/cherrybstudio/cb87/cb87.c | 14 + keyboards/cherrybstudio/cb87/cb87.h | 73 +++++ keyboards/cherrybstudio/cb87/config.h | 63 ++++ keyboards/cherrybstudio/cb87/info.json | 295 ++++++++++++++++++ .../cb87/keymaps/default/keymap.c | 34 ++ .../cb87/keymaps/default/readme.md | 1 + .../cherrybstudio/cb87/keymaps/via/keymap.c | 50 +++ .../cherrybstudio/cb87/keymaps/via/rules.mk | 2 + keyboards/cherrybstudio/cb87/readme.md | 26 ++ keyboards/cherrybstudio/cb87/rules.mk | 24 ++ 10 files changed, 582 insertions(+) create mode 100644 keyboards/cherrybstudio/cb87/cb87.c create mode 100644 keyboards/cherrybstudio/cb87/cb87.h create mode 100644 keyboards/cherrybstudio/cb87/config.h create mode 100644 keyboards/cherrybstudio/cb87/info.json create mode 100644 keyboards/cherrybstudio/cb87/keymaps/default/keymap.c create mode 100644 keyboards/cherrybstudio/cb87/keymaps/default/readme.md create mode 100644 keyboards/cherrybstudio/cb87/keymaps/via/keymap.c create mode 100644 keyboards/cherrybstudio/cb87/keymaps/via/rules.mk create mode 100644 keyboards/cherrybstudio/cb87/readme.md create mode 100644 keyboards/cherrybstudio/cb87/rules.mk diff --git a/keyboards/cherrybstudio/cb87/cb87.c b/keyboards/cherrybstudio/cb87/cb87.c new file mode 100644 index 0000000000..4dcdd898eb --- /dev/null +++ b/keyboards/cherrybstudio/cb87/cb87.c @@ -0,0 +1,14 @@ +/* +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "cb87.h" \ No newline at end of file diff --git a/keyboards/cherrybstudio/cb87/cb87.h b/keyboards/cherrybstudio/cb87/cb87.h new file mode 100644 index 0000000000..b3106894bd --- /dev/null +++ b/keyboards/cherrybstudio/cb87/cb87.h @@ -0,0 +1,73 @@ +/* +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +#define LAYOUT_all( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K100, K101, K102, K103, K104, K105, \ + K106, K107, K108, K109, K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K300, K301, K302, \ + K303, K304, K305, K306, K307, K308, K309, K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, \ + K500, K501, K502, K503, K504, K505, K506, K507, K508, K509, K600, K601, K602, K603, \ + K604, K605, K606, K607, K608, K609, K700, K701, K702, K703, K704, K705, K706, K707, \ + K708, K709, K800, K801, K802, K803, K804, K805, K806, K807, K808 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309 }, \ + { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409 }, \ + { K500, K501, K502, K503, K504, K505, K506, K507, K508, K509 }, \ + { K600, K601, K602, K603, K604, K605, K606, K607, K608, K609 }, \ + { K700, K701, K702, K703, K704, K705, K706, K707, K708, K709 }, \ + { K800, K801, K802, K803, K804, K805, K806, K807, K808, KC_NO } \ +} + +#define LAYOUT_tkl_ansi( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K100, K101, K102, K103, K104, K105, \ + K106, K107, K108, K109, K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K300, K301, K302, \ + K303, K304, K305, K306, K307, K308, K309, K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, \ + K500, K501, K502, K503, K504, K505, K506, K507, K508, K509, K600, K601, K603, \ + K604, K606, K607, K608, K609, K700, K701, K702, K703, K704, K705, K706, K707, \ + K708, K709, K800, K801, K802, K803, K804, K805, K806, K807, K808 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309 }, \ + { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409 }, \ + { K500, K501, K502, K503, K504, K505, K506, K507, K508, K509 }, \ + { K600, K601, KC_NO, K603, K604, KC_NO, K606, K607, K608, K609 }, \ + { K700, K701, K702, K703, K704, K705, K706, K707, K708, K709 }, \ + { K800, K801, K802, K803, K804, K805, K806, K807, K808, KC_NO } \ +} + +#define LAYOUT_tkl_iso( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K100, K101, K102, K103, K104, K105, \ + K106, K107, K108, K109, K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K300, K301, K302, \ + K303, K304, K305, K306, K307, K308, K309, K400, K401, K402, K403, K404, K405, K407, K408, K409, \ + K500, K501, K502, K503, K504, K505, K506, K507, K508, K509, K600, K601, K602, K603, \ + K604, K605, K606, K607, K608, K609, K700, K701, K702, K703, K704, K705, K706, K707, \ + K708, K709, K800, K801, K802, K803, K804, K805, K806, K807, K808 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309 }, \ + { K400, K401, K402, K403, K404, K405, KC_NO, K407, K408, K409 }, \ + { K500, K501, K502, K503, K504, K505, K506, K507, K508, K509 }, \ + { K600, K601, K602, K603, K604, K605, K606, K607, K608, K609 }, \ + { K700, K701, K702, K703, K704, K705, K706, K707, K708, K709 }, \ + { K800, K801, K802, K803, K804, K805, K806, K807, K808, KC_NO } \ +} diff --git a/keyboards/cherrybstudio/cb87/config.h b/keyboards/cherrybstudio/cb87/config.h new file mode 100644 index 0000000000..41a153081d --- /dev/null +++ b/keyboards/cherrybstudio/cb87/config.h @@ -0,0 +1,63 @@ +/* +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4342 // CB +#define PRODUCT_ID 0x8787 +#define DEVICE_VER 0x0001 +#define MANUFACTURER CherryB Studio +#define PRODUCT CB87 + +/* key matrix size */ +#define MATRIX_ROWS 9 +#define MATRIX_COLS 10 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + * 0 1 2 3 4 5 6 7 8 9 +*/ +#define MATRIX_ROW_PINS { B0, B1, B2, B3, B7, D0, D1, D2, D3 } +#define MATRIX_COL_PINS { D5, D4, D6, D7, B4, B5, F5, C6, C7, F7 } +//#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW +#define BACKLIGHT_PIN B6 +#ifdef BACKLIGHT_PIN +#define BACKLIGHT_LEVELS 3 +#endif + +#define LED_CAPS_LOCK_PIN F0 + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +#define RGB_DI_PIN E6 +#ifdef RGB_DI_PIN +#define RGBLIGHT_ANIMATIONS +#define RGBLED_NUM 22 /* 16 Bottom 6 top*/ +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 +#endif diff --git a/keyboards/cherrybstudio/cb87/info.json b/keyboards/cherrybstudio/cb87/info.json new file mode 100644 index 0000000000..cd02a58166 --- /dev/null +++ b/keyboards/cherrybstudio/cb87/info.json @@ -0,0 +1,295 @@ +{ + "keyboard_name": "CB87", + "url": "https://discord.gg/qVwv3gcq83", + "maintainer": "duongaanh", + "width": 18.25, + "height": 6.5, + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":2, "y":0}, + {"label":"F2", "x":3, "y":0}, + {"label":"F3", "x":4, "y":0}, + {"label":"F4", "x":5, "y":0}, + {"label":"F5", "x":6.5, "y":0}, + {"label":"F6", "x":7.5, "y":0}, + {"label":"F7", "x":8.5, "y":0}, + {"label":"F8", "x":9.5, "y":0}, + {"label":"F9", "x":11, "y":0}, + {"label":"F10", "x":12, "y":0}, + {"label":"F11", "x":13, "y":0}, + {"label":"F12", "x":14, "y":0}, + {"label":"PrtSc", "x":15.25, "y":0}, + {"label":"Scroll Lock", "x":16.25, "y":0}, + {"label":"Pause", "x":17.25, "y":0}, + {"label":"~", "x":0, "y":1.5}, + {"label":"1", "x":1, "y":1.5}, + {"label":"2", "x":2, "y":1.5}, + {"label":"3", "x":3, "y":1.5}, + {"label":"4", "x":4, "y":1.5}, + {"label":"5", "x":5, "y":1.5}, + {"label":"6", "x":6, "y":1.5}, + {"label":"7", "x":7, "y":1.5}, + {"label":"8", "x":8, "y":1.5}, + {"label":"9", "x":9, "y":1.5}, + {"label":"0", "x":10, "y":1.5}, + {"label":"-", "x":11, "y":1.5}, + {"label":"=", "x":12, "y":1.5}, + {"label":"Backspace", "x":13, "y":1.5, "w":2}, + {"label":"Insert", "x":15.25, "y":1.5}, + {"label":"Home", "x":16.25, "y":1.5}, + {"label":"PgUp", "x":17.25, "y":1.5}, + {"label":"Tab", "x":0, "y":2.5, "w":1.5}, + {"label":"Q", "x":1.5, "y":2.5}, + {"label":"W", "x":2.5, "y":2.5}, + {"label":"E", "x":3.5, "y":2.5}, + {"label":"R", "x":4.5, "y":2.5}, + {"label":"T", "x":5.5, "y":2.5}, + {"label":"Y", "x":6.5, "y":2.5}, + {"label":"U", "x":7.5, "y":2.5}, + {"label":"I", "x":8.5, "y":2.5}, + {"label":"O", "x":9.5, "y":2.5}, + {"label":"P", "x":10.5, "y":2.5}, + {"label":"[", "x":11.5, "y":2.5}, + {"label":"]", "x":12.5, "y":2.5}, + {"label":"\\", "x":13.5, "y":2.5, "w":1.5}, + {"label":"Delete", "x":15.25, "y":2.5}, + {"label":"End", "x":16.25, "y":2.5}, + {"label":"PgDn", "x":17.25, "y":2.5}, + {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, + {"label":"A", "x":1.75, "y":3.5}, + {"label":"S", "x":2.75, "y":3.5}, + {"label":"D", "x":3.75, "y":3.5}, + {"label":"F", "x":4.75, "y":3.5}, + {"label":"G", "x":5.75, "y":3.5}, + {"label":"H", "x":6.75, "y":3.5}, + {"label":"J", "x":7.75, "y":3.5}, + {"label":"K", "x":8.75, "y":3.5}, + {"label":"L", "x":9.75, "y":3.5}, + {"label":";", "x":10.75, "y":3.5}, + {"label":"'", "x":11.75, "y":3.5}, + {"label":"ISO", "x":12.75, "y":3.5}, + {"label":"Enter", "x":13.75, "y":3.5, "w":1.25}, + {"label":"Shift", "x":0, "y":4.5, "w":1.25}, + {"label":"ISO", "x":1.25, "y":4.5}, + {"label":"Z", "x":2.25, "y":4.5}, + {"label":"X", "x":3.25, "y":4.5}, + {"label":"C", "x":4.25, "y":4.5}, + {"label":"V", "x":5.25, "y":4.5}, + {"label":"B", "x":6.25, "y":4.5}, + {"label":"N", "x":7.25, "y":4.5}, + {"label":"M", "x":8.25, "y":4.5}, + {"label":",", "x":9.25, "y":4.5}, + {"label":".", "x":10.25, "y":4.5}, + {"label":"/", "x":11.25, "y":4.5}, + {"label":"Shift", "x":12.25, "y":4.5, "w":2.75}, + {"label":"Up", "x":16.25, "y":4.5}, + {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, + {"label":"Win", "x":1.25, "y":5.5, "w":1.25}, + {"label":"Alt", "x":2.5, "y":5.5, "w":1.25}, + {"label":"Space", "x":3.75, "y":5.5, "w":6.25}, + {"label":"Alt", "x":10, "y":5.5, "w":1.25}, + {"label":"Win", "x":11.25, "y":5.5, "w":1.25}, + {"label":"App", "x":12.5, "y":5.5, "w":1.25}, + {"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25}, + {"label":"Left", "x":15.25, "y":5.5}, + {"label":"Down", "x":16.25, "y":5.5}, + {"label":"Right", "x":17.25, "y":5.5} + ] + }, + "LAYOUT_tkl_ansi": { + "layout": [ + {"x":0, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.5, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15.25, "y":0}, + {"x":16.25, "y":0}, + {"x":17.25, "y":0}, + + {"x":0, "y":1.5}, + {"x":1, "y":1.5}, + {"x":2, "y":1.5}, + {"x":3, "y":1.5}, + {"x":4, "y":1.5}, + {"x":5, "y":1.5}, + {"x":6, "y":1.5}, + {"x":7, "y":1.5}, + {"x":8, "y":1.5}, + {"x":9, "y":1.5}, + {"x":10, "y":1.5}, + {"x":11, "y":1.5}, + {"x":12, "y":1.5}, + {"x":13, "y":1.5, "w":2}, + {"x":15.25, "y":1.5}, + {"x":16.25, "y":1.5}, + {"x":17.25, "y":1.5}, + + {"x":0, "y":2.5, "w":1.5}, + {"x":1.5, "y":2.5}, + {"x":2.5, "y":2.5}, + {"x":3.5, "y":2.5}, + {"x":4.5, "y":2.5}, + {"x":5.5, "y":2.5}, + {"x":6.5, "y":2.5}, + {"x":7.5, "y":2.5}, + {"x":8.5, "y":2.5}, + {"x":9.5, "y":2.5}, + {"x":10.5, "y":2.5}, + {"x":11.5, "y":2.5}, + {"x":12.5, "y":2.5}, + {"x":13.5, "y":2.5, "w":1.5}, + {"x":15.25, "y":2.5}, + {"x":16.25, "y":2.5}, + {"x":17.25, "y":2.5}, + + {"x":0, "y":3.5, "w":1.75}, + {"x":1.75, "y":3.5}, + {"x":2.75, "y":3.5}, + {"x":3.75, "y":3.5}, + {"x":4.75, "y":3.5}, + {"x":5.75, "y":3.5}, + {"x":6.75, "y":3.5}, + {"x":7.75, "y":3.5}, + {"x":8.75, "y":3.5}, + {"x":9.75, "y":3.5}, + {"x":10.75, "y":3.5}, + {"x":11.75, "y":3.5}, + {"x":12.75, "y":3.5, "w":2.25}, + + {"x":0, "y":4.5, "w":2.25}, + {"x":2.25, "y":4.5}, + {"x":3.25, "y":4.5}, + {"x":4.25, "y":4.5}, + {"x":5.25, "y":4.5}, + {"x":6.25, "y":4.5}, + {"x":7.25, "y":4.5}, + {"x":8.25, "y":4.5}, + {"x":9.25, "y":4.5}, + {"x":10.25, "y":4.5}, + {"x":11.25, "y":4.5}, + {"x":12.25, "y":4.5, "w":2.75}, + {"x":16.25, "y":4.5}, + + {"x":0, "y":5.5, "w":1.25}, + {"x":1.25, "y":5.5, "w":1.25}, + {"x":2.5, "y":5.5, "w":1.25}, + {"x":3.75, "y":5.5, "w":6.25}, + {"x":10, "y":5.5, "w":1.25}, + {"x":11.25, "y":5.5, "w":1.25}, + {"x":12.5, "y":5.5, "w":1.25}, + {"x":13.75, "y":5.5, "w":1.25}, + {"x":15.25, "y":5.5}, + {"x":16.25, "y":5.5}, + {"x":17.25, "y":5.5} + ] + }, + "LAYOUT_tkl_iso": { + "layout": [ + {"x":0, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.5, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15.25, "y":0}, + {"x":16.25, "y":0}, + {"x":17.25, "y":0}, + + {"x":0, "y":1.5}, + {"x":1, "y":1.5}, + {"x":2, "y":1.5}, + {"x":3, "y":1.5}, + {"x":4, "y":1.5}, + {"x":5, "y":1.5}, + {"x":6, "y":1.5}, + {"x":7, "y":1.5}, + {"x":8, "y":1.5}, + {"x":9, "y":1.5}, + {"x":10, "y":1.5}, + {"x":11, "y":1.5}, + {"x":12, "y":1.5}, + {"x":13, "y":1.5, "w":2}, + {"x":15.25, "y":1.5}, + {"x":16.25, "y":1.5}, + {"x":17.25, "y":1.5}, + + {"x":0, "y":2.5, "w":1.5}, + {"x":1.5, "y":2.5}, + {"x":2.5, "y":2.5}, + {"x":3.5, "y":2.5}, + {"x":4.5, "y":2.5}, + {"x":5.5, "y":2.5}, + {"x":6.5, "y":2.5}, + {"x":7.5, "y":2.5}, + {"x":8.5, "y":2.5}, + {"x":9.5, "y":2.5}, + {"x":10.5, "y":2.5}, + {"x":11.5, "y":2.5}, + {"x":12.5, "y":2.5}, + {"x":15.25, "y":2.5}, + {"x":16.25, "y":2.5}, + {"x":17.25, "y":2.5}, + + {"x":0, "y":3.5, "w":1.75}, + {"x":1.75, "y":3.5}, + {"x":2.75, "y":3.5}, + {"x":3.75, "y":3.5}, + {"x":4.75, "y":3.5}, + {"x":5.75, "y":3.5}, + {"x":6.75, "y":3.5}, + {"x":7.75, "y":3.5}, + {"x":8.75, "y":3.5}, + {"x":9.75, "y":3.5}, + {"x":10.75, "y":3.5}, + {"x":11.75, "y":3.5}, + {"x":12.75, "y":3.5}, + {"x":13.75, "y":2.5, "w":1.25, "h":2}, + + {"x":0, "y":4.5, "w":1.25}, + {"x":1.25, "y":4.5}, + {"x":2.25, "y":4.5}, + {"x":3.25, "y":4.5}, + {"x":4.25, "y":4.5}, + {"x":5.25, "y":4.5}, + {"x":6.25, "y":4.5}, + {"x":7.25, "y":4.5}, + {"x":8.25, "y":4.5}, + {"x":9.25, "y":4.5}, + {"x":10.25, "y":4.5}, + {"x":11.25, "y":4.5}, + {"x":12.25, "y":4.5, "w":2.75}, + {"x":16.25, "y":4.5}, + + {"x":0, "y":5.5, "w":1.25}, + {"x":1.25, "y":5.5, "w":1.25}, + {"x":2.5, "y":5.5, "w":1.25}, + {"x":3.75, "y":5.5, "w":6.25}, + {"x":10, "y":5.5, "w":1.25}, + {"x":11.25, "y":5.5, "w":1.25}, + {"x":12.5, "y":5.5, "w":1.25}, + {"x":13.75, "y":5.5, "w":1.25}, + {"x":15.25, "y":5.5}, + {"x":16.25, "y":5.5}, + {"x":17.25, "y":5.5} + ] + } + } +} diff --git a/keyboards/cherrybstudio/cb87/keymaps/default/keymap.c b/keyboards/cherrybstudio/cb87/keymaps/default/keymap.c new file mode 100644 index 0000000000..d95c56dc8d --- /dev/null +++ b/keyboards/cherrybstudio/cb87/keymaps/default/keymap.c @@ -0,0 +1,34 @@ +/* +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + +}; diff --git a/keyboards/cherrybstudio/cb87/keymaps/default/readme.md b/keyboards/cherrybstudio/cb87/keymaps/default/readme.md new file mode 100644 index 0000000000..46e2ebc211 --- /dev/null +++ b/keyboards/cherrybstudio/cb87/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for CB87 diff --git a/keyboards/cherrybstudio/cb87/keymaps/via/keymap.c b/keyboards/cherrybstudio/cb87/keymaps/via/keymap.c new file mode 100644 index 0000000000..3cd72b6670 --- /dev/null +++ b/keyboards/cherrybstudio/cb87/keymaps/via/keymap.c @@ -0,0 +1,50 @@ +/* +Copyright 2020 Tybera +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; diff --git a/keyboards/cherrybstudio/cb87/keymaps/via/rules.mk b/keyboards/cherrybstudio/cb87/keymaps/via/rules.mk new file mode 100644 index 0000000000..ca9fed0e6b --- /dev/null +++ b/keyboards/cherrybstudio/cb87/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +LTO_ENABLE = yes +VIA_ENABLE = yes diff --git a/keyboards/cherrybstudio/cb87/readme.md b/keyboards/cherrybstudio/cb87/readme.md new file mode 100644 index 0000000000..72bd8c32fa --- /dev/null +++ b/keyboards/cherrybstudio/cb87/readme.md @@ -0,0 +1,26 @@ +# CherryB Studio CB87 + +![CB87](https://i.imgur.com/balJ20Xl.png) + +A TKL PCB for CherryB Studio Freyr and replacement for some TKL keyboards. + +* Keyboard Maintainer: duongaanh +* Hardware Supported: CB87, atmega32u4 +* Hardware Availability: [CherryB Studio](https://www.reddit.com/r/mechmarket/comments/kkgs6p/gb_freyr_tkl_cb_edition_holiday_preorder/) + +Make example for this keyboard (after setting up your build environment): + + make cherrybstudio/cb87:default + +Flashing example for this keyboard: + + make cherrybstudio/cb87:default:flash + +## Accessing Bootloader Mode + +To access Bootloader Mode, do one of the following: + +* Tap the Reset switch mounted on the top side of the PCB to the left of the spacebar +* Hold the top left key of the keyboard while connecting the USB cable + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/cherrybstudio/cb87/rules.mk b/keyboards/cherrybstudio/cb87/rules.mk new file mode 100644 index 0000000000..43a7e336c4 --- /dev/null +++ b/keyboards/cherrybstudio/cb87/rules.mk @@ -0,0 +1,24 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output + +LAYOUTS = tkl_ansi tkl_iso From 6592f83589801263a2db5fa5c97a5def99e9c9ac Mon Sep 17 00:00:00 2001 From: dsanchezseco Date: Fri, 2 Apr 2021 23:44:46 +0200 Subject: [PATCH 161/613] [Keymap] for Ibm m122 (#11704) Co-authored-by: Ryan --- .../keymaps/dsanchezseco/keymap.c | 58 +++++++++++++++++++ .../keymaps/dsanchezseco/rules.mk | 1 + 2 files changed, 59 insertions(+) create mode 100644 keyboards/converter/ibm_terminal/keymaps/dsanchezseco/keymap.c create mode 100644 keyboards/converter/ibm_terminal/keymaps/dsanchezseco/rules.mk diff --git a/keyboards/converter/ibm_terminal/keymaps/dsanchezseco/keymap.c b/keyboards/converter/ibm_terminal/keymaps/dsanchezseco/keymap.c new file mode 100644 index 0000000000..3828f09f5d --- /dev/null +++ b/keyboards/converter/ibm_terminal/keymaps/dsanchezseco/keymap.c @@ -0,0 +1,58 @@ +/* +Copyright 2020 dsanchezseco +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layers { + DVO, // dvorak + QWE, // qwerty + SYS, // system +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* dvorak */ + [DVO] = LAYOUT( + KC_VOLD, KC_VOLU, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, _______, _______, KC_PSCR, KC_PAUS, MO(SYS), + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + + LCTL(KC_A), LCTL(KC_Z), KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, XXXXXXX, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_BSPC, KC_PEQL, KC_PSLS, KC_PAST, + LCTL(KC_B), LCTL(KC_X), KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_EQL, XXXXXXX, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PMNS, + LCTL(KC_D), LCTL(KC_C), KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, KC_BSLS, KC_ENT, KC_UP, KC_P4, KC_P5, KC_P6, KC_PPLS, + LCTL(KC_F), LCTL(KC_V), KC_LSFT, KC_BSLS, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, XXXXXXX, KC_RSFT, KC_LEFT, KC_DOWN, KC_RGHT, KC_P1, KC_P2, KC_P3, KC_PENT, + LCTL(KC_G), LCTL(KC_W), KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LGUI, XXXXXXX, KC_P0, KC_PDOT, XXXXXXX + ), + /* qwerty */ + [QWE] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, XXXXXXX, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, KC_GRV, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______, _______, XXXXXXX + ), + + /* system */ + [SYS] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______, _______, _______, _______, KC_NLCK, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, TO(DVO), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, TO(QWE), _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______, _______, XXXXXXX + ), +}; diff --git a/keyboards/converter/ibm_terminal/keymaps/dsanchezseco/rules.mk b/keyboards/converter/ibm_terminal/keymaps/dsanchezseco/rules.mk new file mode 100644 index 0000000000..0a5b666e85 --- /dev/null +++ b/keyboards/converter/ibm_terminal/keymaps/dsanchezseco/rules.mk @@ -0,0 +1 @@ +MOUSEKEY_ENABLE = no From 619885b48432bccb7ba4b65f0f5a3c9f4a8d40e2 Mon Sep 17 00:00:00 2001 From: Paul James Date: Sat, 3 Apr 2021 02:25:23 +0200 Subject: [PATCH 162/613] [Keyboard] Add Lumberjack keyboard (#12124) --- keyboards/peej/lumberjack/config.h | 41 +++++++++++ keyboards/peej/lumberjack/info.json | 73 +++++++++++++++++++ .../peej/lumberjack/keymaps/default/keymap.c | 70 ++++++++++++++++++ .../peej/lumberjack/keymaps/via/keymap.c | 50 +++++++++++++ .../peej/lumberjack/keymaps/via/rules.mk | 1 + keyboards/peej/lumberjack/lumberjack.c | 30 ++++++++ keyboards/peej/lumberjack/lumberjack.h | 38 ++++++++++ keyboards/peej/lumberjack/readme.md | 16 ++++ keyboards/peej/lumberjack/rules.mk | 24 ++++++ 9 files changed, 343 insertions(+) create mode 100644 keyboards/peej/lumberjack/config.h create mode 100644 keyboards/peej/lumberjack/info.json create mode 100644 keyboards/peej/lumberjack/keymaps/default/keymap.c create mode 100644 keyboards/peej/lumberjack/keymaps/via/keymap.c create mode 100644 keyboards/peej/lumberjack/keymaps/via/rules.mk create mode 100644 keyboards/peej/lumberjack/lumberjack.c create mode 100644 keyboards/peej/lumberjack/lumberjack.h create mode 100644 keyboards/peej/lumberjack/readme.md create mode 100644 keyboards/peej/lumberjack/rules.mk diff --git a/keyboards/peej/lumberjack/config.h b/keyboards/peej/lumberjack/config.h new file mode 100644 index 0000000000..ee993e9c99 --- /dev/null +++ b/keyboards/peej/lumberjack/config.h @@ -0,0 +1,41 @@ +/* Copyright 2020 Paul James + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x706A +#define PRODUCT_ID 0x0002 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Peej +#define PRODUCT Lumberjack + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 10 +#define MATRIX_ROW_PINS { C0, B5, B4, B3, B2, B1 } +#define MATRIX_COL_PINS { B0, D7, D6, D5, D4, D1, D0, C1, C2, C3 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +#define USB_MAX_POWER_CONSUMPTION 100 + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 diff --git a/keyboards/peej/lumberjack/info.json b/keyboards/peej/lumberjack/info.json new file mode 100644 index 0000000000..f7d0f703f5 --- /dev/null +++ b/keyboards/peej/lumberjack/info.json @@ -0,0 +1,73 @@ +{ + "keyboard_name": "Lumberjack", + "url": "https://github.com/peej/lumberjack-keyboard", + "maintainer": "Peej", + "width": 12, + "height": 5, + "layouts": { + "LAYOUT_ortho_5x12": { + "layout": [ + { "x": 0, "y": 0 }, + { "x": 1, "y": 0 }, + { "x": 2, "y": 0 }, + { "x": 3, "y": 0 }, + { "x": 4, "y": 0 }, + { "x": 5, "y": 0 }, + { "x": 6, "y": 0 }, + { "x": 7, "y": 0 }, + { "x": 8, "y": 0 }, + { "x": 9, "y": 0 }, + { "x": 10, "y": 0 }, + { "x": 11, "y": 0 }, + { "x": 0, "y": 1 }, + { "x": 1, "y": 1 }, + { "x": 2, "y": 1 }, + { "x": 3, "y": 1 }, + { "x": 4, "y": 1 }, + { "x": 5, "y": 1 }, + { "x": 6, "y": 1 }, + { "x": 7, "y": 1 }, + { "x": 8, "y": 1 }, + { "x": 9, "y": 1 }, + { "x": 10, "y": 1 }, + { "x": 11, "y": 1 }, + { "x": 0, "y": 2 }, + { "x": 1, "y": 2 }, + { "x": 2, "y": 2 }, + { "x": 3, "y": 2 }, + { "x": 4, "y": 2 }, + { "x": 5, "y": 2 }, + { "x": 6, "y": 2 }, + { "x": 7, "y": 2 }, + { "x": 8, "y": 2 }, + { "x": 9, "y": 2 }, + { "x": 10, "y": 2 }, + { "x": 11, "y": 2 }, + { "x": 0, "y": 3 }, + { "x": 1, "y": 3 }, + { "x": 2, "y": 3 }, + { "x": 3, "y": 3 }, + { "x": 4, "y": 3 }, + { "x": 5, "y": 3 }, + { "x": 6, "y": 3 }, + { "x": 7, "y": 3 }, + { "x": 8, "y": 3 }, + { "x": 9, "y": 3 }, + { "x": 10, "y": 3 }, + { "x": 11, "y": 3 }, + { "x": 0, "y": 4 }, + { "x": 1, "y": 4 }, + { "x": 2, "y": 4 }, + { "x": 3, "y": 4 }, + { "x": 4, "y": 4 }, + { "x": 5, "y": 4 }, + { "x": 6, "y": 4 }, + { "x": 7, "y": 4 }, + { "x": 8, "y": 4 }, + { "x": 9, "y": 4 }, + { "x": 10, "y": 4 }, + { "x": 11, "y": 4 } + ] + } + } +} diff --git a/keyboards/peej/lumberjack/keymaps/default/keymap.c b/keyboards/peej/lumberjack/keymaps/default/keymap.c new file mode 100644 index 0000000000..b283324356 --- /dev/null +++ b/keyboards/peej/lumberjack/keymaps/default/keymap.c @@ -0,0 +1,70 @@ +/* Copyright 2020 Paul James + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum layers { + _QWERTY = 0, + _FUNCTION +}; + +#define FN MO(_FUNCTION) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Qwerty + * ,-----------------------------------------. ,-----------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BkSp | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Tab | Q | W | E | R | T | | Y | U | I | O | P | Del | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Esc | A | S | D | F | G | | H | J | K | L | ; | ' | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Shft | Z | X | C | V | B | | N | M | , | . | / | Entr | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Ctrl | Fn | Alt | Cmd | Fn | Spac | | Spac | Fn | Left | Down | Up | Rght | + * `-----------------------------------------' `-----------------------------------------' + */ +[_QWERTY] = LAYOUT_ortho_5x12( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_LCTL, FN, KC_LALT, KC_LGUI, FN, KC_SPC, KC_SPC, FN, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT +), + +/* Function +* ,------------------------------------------. ,-----------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | | F6 | - | = | [ | ] | \ | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | | F12 |ISO # |ISO / | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------' `-----------------------------------------' + */ +[_FUNCTION] = LAYOUT_ortho_5x12( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY +) + +}; diff --git a/keyboards/peej/lumberjack/keymaps/via/keymap.c b/keyboards/peej/lumberjack/keymaps/via/keymap.c new file mode 100644 index 0000000000..a1981cd5be --- /dev/null +++ b/keyboards/peej/lumberjack/keymaps/via/keymap.c @@ -0,0 +1,50 @@ +/* Copyright 2020 Paul James + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[0] = LAYOUT_ortho_5x12( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_LCTL, MO(2), KC_LALT, KC_LGUI, MO(1), KC_SPC, KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT +), +[1] = LAYOUT_ortho_5x12( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + 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_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),KC_HOME, KC_END, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY +), +[2] = LAYOUT_ortho_5x12( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY +), +[3] = LAYOUT_ortho_5x12( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +) + +}; diff --git a/keyboards/peej/lumberjack/keymaps/via/rules.mk b/keyboards/peej/lumberjack/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/peej/lumberjack/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/peej/lumberjack/lumberjack.c b/keyboards/peej/lumberjack/lumberjack.c new file mode 100644 index 0000000000..34e5a2848c --- /dev/null +++ b/keyboards/peej/lumberjack/lumberjack.c @@ -0,0 +1,30 @@ +/* Copyright 2020 Paul James + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "lumberjack.h" + +bool process_record_kb(uint16_t keycode, keyrecord_t *record) { + writePin(LED1, record->event.pressed); + + return process_record_user(keycode, record); +} + +layer_state_t layer_state_set_kb(layer_state_t state) { + writePinLow(LED1); + writePin(LED2, state); + + return layer_state_set_user(state); +} diff --git a/keyboards/peej/lumberjack/lumberjack.h b/keyboards/peej/lumberjack/lumberjack.h new file mode 100644 index 0000000000..785f13a903 --- /dev/null +++ b/keyboards/peej/lumberjack/lumberjack.h @@ -0,0 +1,38 @@ +/* Copyright 2020 Paul James + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT_ortho_5x12( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, \ + k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b \ +) \ +{ \ + { k00, k01, k02, k03, k04, k0b, k0a, k09, k08, k07 }, \ + { k10, k11, k12, k13, k05, k1b, k1a, k19, k18, k06 }, \ + { k20, k21, k22, k14, k15, k2b, k2a, k29, k17, k16 }, \ + { k30, k31, k23, k24, k25, k3b, k3a, k28, k27, k26 }, \ + { k40, k32, k33, k34, k35, k4b, k39, k38, k37, k36 }, \ + { k41, k42, k43, k44, k45, k4a, k49, k48, k47, k46 } \ +} + +#define LED1 C5 +#define LED2 C4 diff --git a/keyboards/peej/lumberjack/readme.md b/keyboards/peej/lumberjack/readme.md new file mode 100644 index 0000000000..b350dd1eec --- /dev/null +++ b/keyboards/peej/lumberjack/readme.md @@ -0,0 +1,16 @@ +# Lumberjack ## Through-hole ortholinear 60% keyboard PCB + +![lumberjack](https://github.com/peej/lumberjack-keyboard/raw/master/images/pcb.jpg) + +12x5 ortholinear PCB for 60% tray mount cases with only through hole components. + +* Keyboard Maintainer: [Paul James](https://github.com/peej) +* Hardware Supported: ATMEGA328p with vusb [PCB](https://github.com/peej/lumberjack-keyboard) + +Make example for this keyboard (after setting up your build environment): + + make peej/lumberjack:default + +## Bootloader + +Use usbasploader in [hsgw's repository](https://github.com/hsgw/USBaspLoader/tree/plaid). diff --git a/keyboards/peej/lumberjack/rules.mk b/keyboards/peej/lumberjack/rules.mk new file mode 100644 index 0000000000..410124b840 --- /dev/null +++ b/keyboards/peej/lumberjack/rules.mk @@ -0,0 +1,24 @@ +# MCU name +MCU = atmega328p + +# Bootloader selection +BOOTLOADER = USBasp + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output + +LAYOUTS = ortho_5x12 From 63445be4e5d3752b5a3ff51c512a2822c1fde23c Mon Sep 17 00:00:00 2001 From: Danny Date: Fri, 2 Apr 2021 20:51:39 -0400 Subject: [PATCH 163/613] [Keyboard] Add FoldKB (#12255) Co-authored-by: Ryan --- keyboards/keebio/foldkb/.noci | 0 keyboards/keebio/foldkb/config.h | 19 ++++ keyboards/keebio/foldkb/foldkb.c | 17 ++++ keyboards/keebio/foldkb/foldkb.h | 23 +++++ keyboards/keebio/foldkb/info.json | 89 +++++++++++++++++++ .../keebio/foldkb/keymaps/default/keymap.c | 50 +++++++++++ keyboards/keebio/foldkb/keymaps/via/keymap.c | 64 +++++++++++++ keyboards/keebio/foldkb/keymaps/via/rules.mk | 3 + keyboards/keebio/foldkb/readme.md | 19 ++++ keyboards/keebio/foldkb/rev1/config.h | 58 ++++++++++++ keyboards/keebio/foldkb/rev1/rev1.c | 26 ++++++ keyboards/keebio/foldkb/rev1/rev1.h | 40 +++++++++ keyboards/keebio/foldkb/rev1/rules.mk | 3 + keyboards/keebio/foldkb/rules.mk | 26 ++++++ 14 files changed, 437 insertions(+) create mode 100644 keyboards/keebio/foldkb/.noci create mode 100644 keyboards/keebio/foldkb/config.h create mode 100644 keyboards/keebio/foldkb/foldkb.c create mode 100644 keyboards/keebio/foldkb/foldkb.h create mode 100644 keyboards/keebio/foldkb/info.json create mode 100644 keyboards/keebio/foldkb/keymaps/default/keymap.c create mode 100644 keyboards/keebio/foldkb/keymaps/via/keymap.c create mode 100644 keyboards/keebio/foldkb/keymaps/via/rules.mk create mode 100644 keyboards/keebio/foldkb/readme.md create mode 100644 keyboards/keebio/foldkb/rev1/config.h create mode 100644 keyboards/keebio/foldkb/rev1/rev1.c create mode 100644 keyboards/keebio/foldkb/rev1/rev1.h create mode 100644 keyboards/keebio/foldkb/rev1/rules.mk create mode 100644 keyboards/keebio/foldkb/rules.mk diff --git a/keyboards/keebio/foldkb/.noci b/keyboards/keebio/foldkb/.noci new file mode 100644 index 0000000000..e69de29bb2 diff --git a/keyboards/keebio/foldkb/config.h b/keyboards/keebio/foldkb/config.h new file mode 100644 index 0000000000..d4a20c4bcf --- /dev/null +++ b/keyboards/keebio/foldkb/config.h @@ -0,0 +1,19 @@ +/* Copyright 2021 Danny Nguyen + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" diff --git a/keyboards/keebio/foldkb/foldkb.c b/keyboards/keebio/foldkb/foldkb.c new file mode 100644 index 0000000000..97641bf992 --- /dev/null +++ b/keyboards/keebio/foldkb/foldkb.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Danny Nguyen + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "foldkb.h" diff --git a/keyboards/keebio/foldkb/foldkb.h b/keyboards/keebio/foldkb/foldkb.h new file mode 100644 index 0000000000..bd02a4ef9d --- /dev/null +++ b/keyboards/keebio/foldkb/foldkb.h @@ -0,0 +1,23 @@ +/* Copyright 2021 Danny Nguyen + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +#ifdef KEYBOARD_keebio_foldkb_rev1 + #include "rev1.h" +#endif diff --git a/keyboards/keebio/foldkb/info.json b/keyboards/keebio/foldkb/info.json new file mode 100644 index 0000000000..cf248ae48a --- /dev/null +++ b/keyboards/keebio/foldkb/info.json @@ -0,0 +1,89 @@ +{ + "keyboard_name": "FoldKB", + "url": "https://keeb.io", + "maintainer": "nooges", + "width": 17.5, + "height": 5, + "layouts": { + "LAYOUT": { + "layout": [ + { "label": "Mute", "x": 0, "y": 0 }, + { "label": "Esc", "x": 1.25, "y": 0 }, + { "label": "~", "x": 2.25, "y": 0 }, + { "label": "1", "x": 3.25, "y": 0 }, + { "label": "2", "x": 4.25, "y": 0 }, + { "label": "3", "x": 5.25, "y": 0 }, + { "label": "4", "x": 6.25, "y": 0 }, + { "label": "5", "x": 7.25, "y": 0 }, + { "label": "6", "x": 9, "y": 0 }, + { "label": "7", "x": 10, "y": 0 }, + { "label": "8", "x": 11, "y": 0 }, + { "label": "9", "x": 12, "y": 0 }, + { "label": "0", "x": 13, "y": 0 }, + { "label": "-", "x": 14, "y": 0 }, + { "label": "=", "x": 15, "y": 0 }, + { "label": "Bksp", "x": 16, "y": 0 }, + + { "label": "Home", "x": 0, "y": 1 }, + { "label": "Tab", "x": 1.75, "y": 1, "w": 1.5 }, + { "label": "Q", "x": 3.25, "y": 1 }, + { "label": "W", "x": 4.25, "y": 1 }, + { "label": "E", "x": 5.25, "y": 1 }, + { "label": "R", "x": 6.25, "y": 1 }, + { "label": "T", "x": 7.25, "y": 1 }, + { "label": "Y", "x": 9, "y": 1 }, + { "label": "U", "x": 10, "y": 1 }, + { "label": "I", "x": 11, "y": 1 }, + { "label": "O", "x": 12, "y": 1 }, + { "label": "P", "x": 13, "y": 1 }, + { "label": "[", "x": 14, "y": 1 }, + { "label": "]", "x": 15, "y": 1 }, + { "label": "\\", "x": 16, "y": 1, "w": 1.5 }, + + { "label": "End", "x": 0, "y": 2 }, + { "label": "Caps", "x": 1.5, "y": 2, "w": 1.75 }, + { "label": "A", "x": 3.25, "y": 2 }, + { "label": "S", "x": 4.25, "y": 2 }, + { "label": "D", "x": 5.25, "y": 2 }, + { "label": "F", "x": 6.25, "y": 2 }, + { "label": "G", "x": 7.25, "y": 2 }, + { "label": "H", "x": 9, "y": 2 }, + { "label": "J", "x": 10, "y": 2 }, + { "label": "K", "x": 11, "y": 2 }, + { "label": "L", "x": 12, "y": 2 }, + { "label": ";", "x": 13, "y": 2 }, + { "label": "'", "x": 14, "y": 2 }, + { "label": "Enter", "x": 15, "y": 2, "w": 2.25 }, + + { "label": "PgUp", "x": 0, "y": 3 }, + { "label": "Shift", "x": 1, "y": 3, "w": 2.25 }, + { "label": "Z", "x": 3.25, "y": 3 }, + { "label": "X", "x": 4.25, "y": 3 }, + { "label": "C", "x": 5.25, "y": 3 }, + { "label": "V", "x": 6.25, "y": 3 }, + { "label": "B", "x": 7.25, "y": 3 }, + { "label": "N", "x": 9, "y": 3 }, + { "label": "M", "x": 10, "y": 3 }, + { "label": ",", "x": 11, "y": 3 }, + { "label": ".", "x": 12, "y": 3 }, + { "label": "/", "x": 13, "y": 3 }, + { "label": "Shift", "x": 14, "y": 3, "w": 1.75 }, + { "label": "Fn1", "x": 15.75, "y": 3 }, + + { "label": "PgDn", "x": 0, "y": 4 }, + { "label": "Ctrl", "x": 1.5, "y": 4, "w": 1.25 }, + { "label": "Win", "x": 2.75, "y": 4, "w": 1.25 }, + { "label": "Alt", "x": 4, "y": 4, "w": 1.25 }, + { "label": "Fn1", "x": 5.25, "y": 4 }, + { "label": "Space", "x": 6.25, "y": 4 }, + { "label": "Space", "x": 7.25, "y": 4 }, + { "label": "Space", "x": 9, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 10.25, "y": 4, "w": 1.5 }, + { "label": "Alt", "x": 11.75, "y": 4, "w": 1.25 }, + { "label": "Win", "x": 13, "y": 4, "w": 1.25 }, + { "label": "Menu", "x": 14.25, "y": 4, "w": 1.25 }, + { "label": "Ctrl", "x": 15.5, "y": 4, "w": 1.25 } + ] + } + } +} diff --git a/keyboards/keebio/foldkb/keymaps/default/keymap.c b/keyboards/keebio/foldkb/keymaps/default/keymap.c new file mode 100644 index 0000000000..9d339080f3 --- /dev/null +++ b/keyboards/keebio/foldkb/keymaps/default/keymap.c @@ -0,0 +1,50 @@ +/* Copyright 2021 Danny Nguyen + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_MUTE, KC_ESC, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_HOME, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_END, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_PGUP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_PGDN, KC_LCTL, KC_LGUI, KC_LALT, MO(1), KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL + ), + [1] = LAYOUT( + KC_MUTE, RESET, _______, RGB_HUD, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, + BL_STEP, _______, RGB_SAD, RGB_SAI, _______, _______, _______, _______, KC_7, KC_8, KC_9, _______, _______, _______, _______, + RGB_MOD, _______, RGB_VAD, RGB_VAI, _______, _______, _______, _______, KC_4, KC_5, KC_6, _______, _______, _______, + KC_VOLU, _______, _______, _______, _______, _______, _______, _______, KC_1, KC_2, KC_3, _______, _______, _______, + KC_VOLD, _______, _______, _______, _______, _______, _______, _______, KC_0, _______, _______, _______, _______ + ), +}; + +void encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } else if (index == 1) { + if (clockwise) { + tap_code(KC_PGDN); + } else { + tap_code(KC_PGUP); + } + } +} diff --git a/keyboards/keebio/foldkb/keymaps/via/keymap.c b/keyboards/keebio/foldkb/keymaps/via/keymap.c new file mode 100644 index 0000000000..f7f19ea7cd --- /dev/null +++ b/keyboards/keebio/foldkb/keymaps/via/keymap.c @@ -0,0 +1,64 @@ +/* Copyright 2021 Danny Nguyen + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_MUTE, KC_ESC, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_HOME, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_END, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_PGUP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_PGDN, KC_LCTL, KC_LGUI, KC_LALT, MO(1), KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL + ), + [1] = LAYOUT( + KC_MUTE, RESET, _______, RGB_HUD, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, + BL_STEP, _______, RGB_SAD, RGB_SAI, _______, _______, _______, _______, KC_7, KC_8, KC_9, _______, _______, _______, _______, + RGB_MOD, _______, RGB_VAD, RGB_VAI, _______, _______, _______, _______, KC_4, KC_5, KC_6, _______, _______, _______, + KC_VOLU, _______, _______, _______, _______, _______, _______, _______, KC_1, KC_2, KC_3, _______, _______, _______, + KC_VOLD, _______, _______, _______, _______, _______, _______, _______, KC_0, _______, _______, _______, _______ + ), + [2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; + +void encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } else if (index == 1) { + if (clockwise) { + tap_code(KC_PGDN); + } else { + tap_code(KC_PGUP); + } + } +} diff --git a/keyboards/keebio/foldkb/keymaps/via/rules.mk b/keyboards/keebio/foldkb/keymaps/via/rules.mk new file mode 100644 index 0000000000..4b1bcabda8 --- /dev/null +++ b/keyboards/keebio/foldkb/keymaps/via/rules.mk @@ -0,0 +1,3 @@ +VIA_ENABLE = yes +CONSOLE_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/keebio/foldkb/readme.md b/keyboards/keebio/foldkb/readme.md new file mode 100644 index 0000000000..2ac505120d --- /dev/null +++ b/keyboards/keebio/foldkb/readme.md @@ -0,0 +1,19 @@ +# FoldKB + +A split 60% ortholinear keyboard that uses a standard keyset, made and sold by Keebio. [More info at Keebio](https://keeb.io). +Layout design by friglesnart. + +* Keyboard Maintainer: [Bakingpy/nooges](https://github.com/nooges) +* Hardware Availability: [Keebio](https://keeb.io/) + +Make example for this keyboard (after setting up your build environment): + + make keebio/foldkb/rev1:default + +Example of flashing this keyboard: + + make keebio/foldkb/rev1:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +A build guide for this keyboard can be found here: [Keebio Build Guides](https://docs.keeb.io) diff --git a/keyboards/keebio/foldkb/rev1/config.h b/keyboards/keebio/foldkb/rev1/config.h new file mode 100644 index 0000000000..ab4751f1f3 --- /dev/null +++ b/keyboards/keebio/foldkb/rev1/config.h @@ -0,0 +1,58 @@ +/* Copyright 2021 Danny Nguyen + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xCB10 +#define PRODUCT_ID 0x1258 +#define DEVICE_VER 0x0100 +#define MANUFACTURER Keebio +#define PRODUCT FoldKB Rev. 1 + +/* key matrix size */ +// Rows are doubled-up +#define MATRIX_ROWS 10 +#define MATRIX_COLS 8 + +#define DIODE_DIRECTION COL2ROW +// wiring of each half +#define MATRIX_ROW_PINS { B1, B2, C7, B4, D7 } +#define MATRIX_COL_PINS { F4, F1, F0, B7, B3, D2, D3, D5 } +#define SPLIT_HAND_PIN F7 +#define ENCODERS_PAD_A { F5 } +#define ENCODERS_PAD_B { F6 } + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +#define BACKLIGHT_PIN B5 + +/* serial.c configuration for split keyboard */ +#define SOFT_SERIAL_PIN D0 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* ws2812 RGB LED */ +#define RGB_DI_PIN E6 +#define RGBLIGHT_ANIMATIONS +#define RGBLED_NUM 16 // Number of LEDs +#define RGBLED_SPLIT { 8, 8 } +#define RGBLIGHT_LED_MAP { 0, 1, 2, 3, 12, 13, 14, 15, 4, 5, 6, 7, 8, 9, 10, 11 } +#define RGBLIGHT_DEFAULT_MODE (RGBLIGHT_MODE_RAINBOW_SWIRL + 2) diff --git a/keyboards/keebio/foldkb/rev1/rev1.c b/keyboards/keebio/foldkb/rev1/rev1.c new file mode 100644 index 0000000000..bab2674003 --- /dev/null +++ b/keyboards/keebio/foldkb/rev1/rev1.c @@ -0,0 +1,26 @@ +/* Copyright 2021 Danny Nguyen + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "foldkb.h" + +void eeconfig_init_kb(void) { +#ifdef BACKLIGHT_ENABLE + backlight_enable(); + backlight_level(3); +#endif + eeconfig_update_kb(0); + eeconfig_init_user(); +} diff --git a/keyboards/keebio/foldkb/rev1/rev1.h b/keyboards/keebio/foldkb/rev1/rev1.h new file mode 100644 index 0000000000..d07152538a --- /dev/null +++ b/keyboards/keebio/foldkb/rev1/rev1.h @@ -0,0 +1,40 @@ +/* Copyright 2021 Danny Nguyen + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "foldkb.h" +#include "quantum.h" + +#define LAYOUT( \ + LA1, LA2, LA3, LA4, LA5, LA6, LA7, LA8, RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, \ + LB1, LB3, LB4, LB5, LB6, LB7, LB8, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, \ + LC1, LC3, LC4, LC5, LC6, LC7, LC8, RC1, RC2, RC3, RC4, RC5, RC6, RC8, \ + LD1, LD3, LD4, LD5, LD6, LD7, LD8, RD1, RD2, RD3, RD4, RD5, RD6, RD8, \ + LE1, LE3, LE4, LE5, LE6, LE7, LE8, RE1, RE2, RE4, RE5, RE6, RE8 \ + ) \ + { \ + { LA1, LA2, LA3, LA4, LA5, LA6, LA7, LA8 }, \ + { LB1, KC_NO, LB3, LB4, LB5, LB6, LB7, LB8 }, \ + { LC1, KC_NO, LC3, LC4, LC5, LC6, LC7, LC8 }, \ + { LD1, KC_NO, LD3, LD4, LD5, LD6, LD7, LD8 }, \ + { LE1, KC_NO, LE3, LE4, LE5, LE6, LE7, LE8 }, \ + { RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8 }, \ + { RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8 }, \ + { RC1, RC2, RC3, RC4, RC5, RC6, KC_NO, RC8 }, \ + { RD1, RD2, RD3, RD4, RD5, RD6, KC_NO, RD8 }, \ + { RE1, RE2, KC_NO, RE4, RE5, RE6, KC_NO, RE8 }, \ + } diff --git a/keyboards/keebio/foldkb/rev1/rules.mk b/keyboards/keebio/foldkb/rev1/rules.mk new file mode 100644 index 0000000000..32e7881599 --- /dev/null +++ b/keyboards/keebio/foldkb/rev1/rules.mk @@ -0,0 +1,3 @@ +BACKLIGHT_ENABLE = yes +RGBLIGHT_ENABLE = yes +ENCODER_ENABLE = yes diff --git a/keyboards/keebio/foldkb/rules.mk b/keyboards/keebio/foldkb/rules.mk new file mode 100644 index 0000000000..4f3a43261a --- /dev/null +++ b/keyboards/keebio/foldkb/rules.mk @@ -0,0 +1,26 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +LTO_ENABLE = yes +SPLIT_KEYBOARD = yes + +DEFAULT_FOLDER = keebio/foldkb/rev1 From 0232941b1d968c83403197606d4a4a208b87c182 Mon Sep 17 00:00:00 2001 From: adamkraus6 <39069342+adamkraus6@users.noreply.github.com> Date: Fri, 2 Apr 2021 20:02:26 -0600 Subject: [PATCH 164/613] [Keyboard] Added VIA support to dmqdesign/spin (#12300) Co-authored-by: Kraus, Adam --- keyboards/dmqdesign/spin/keymaps/via/keymap.c | 68 +++++++++++++++++++ keyboards/dmqdesign/spin/keymaps/via/rules.mk | 1 + 2 files changed, 69 insertions(+) create mode 100644 keyboards/dmqdesign/spin/keymaps/via/keymap.c create mode 100644 keyboards/dmqdesign/spin/keymaps/via/rules.mk diff --git a/keyboards/dmqdesign/spin/keymaps/via/keymap.c b/keyboards/dmqdesign/spin/keymaps/via/keymap.c new file mode 100644 index 0000000000..c3b5ef2603 --- /dev/null +++ b/keyboards/dmqdesign/spin/keymaps/via/keymap.c @@ -0,0 +1,68 @@ +/* Copyright 2020-2021 adamkraus6 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_7, KC_8, KC_9, TO(0), + KC_4, KC_5, KC_6, TO(1), + KC_1, KC_2, KC_3, TO(2), + KC_0, KC_BSPC, KC_ENTER + ), + + [1] = LAYOUT( + KC_NO, KC_NO, KC_NO, KC_TRNS, + KC_NO, KC_NO, KC_NO, KC_TRNS, + KC_NO, KC_NO, KC_NO, KC_TRNS, + KC_NO, KC_NO, KC_NO + ), + + [2] = LAYOUT( + KC_NO, KC_NO, KC_NO, KC_TRNS, + KC_NO, KC_NO, KC_NO, KC_TRNS, + KC_NO, KC_NO, KC_NO, KC_TRNS, + KC_NO, KC_NO, KC_NO + ), + + [3] = LAYOUT( + KC_NO, KC_NO, KC_NO, KC_TRNS, + KC_NO, KC_NO, KC_NO, KC_TRNS, + KC_NO, KC_NO, KC_NO, KC_TRNS, + KC_NO, KC_NO, KC_NO + ) +}; + +void encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { /* First encoder */ + if (clockwise) { + rgblight_increase_hue(); //Cycle through the RGB hue + } else { + rgblight_decrease_hue(); + } + } else if (index == 1) { /* Second encoder */ + if (clockwise) { + rgblight_increase_sat(); + } else { + rgblight_decrease_sat(); + } + } else if (index == 2) { /* Third encoder */ + if (clockwise) { + rgblight_increase_val(); //Change brightness on the RGB LEDs + } else { + rgblight_decrease_val(); + } + } +} \ No newline at end of file diff --git a/keyboards/dmqdesign/spin/keymaps/via/rules.mk b/keyboards/dmqdesign/spin/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/dmqdesign/spin/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes From caca8949de32088776d56f717950e07204c7da97 Mon Sep 17 00:00:00 2001 From: Jason Yamada-Hanff Date: Fri, 2 Apr 2021 19:04:28 -0700 Subject: [PATCH 165/613] [Keymap] remove kc layout from levinson jyh keymap (#12301) Co-authored-by: Jason Yamada-Hanff --- .../keebio/levinson/keymaps/jyh/keymap.c | 119 ++++++++---------- 1 file changed, 53 insertions(+), 66 deletions(-) diff --git a/keyboards/keebio/levinson/keymaps/jyh/keymap.c b/keyboards/keebio/levinson/keymaps/jyh/keymap.c index d8cfa7e06b..310356cd68 100644 --- a/keyboards/keebio/levinson/keymaps/jyh/keymap.c +++ b/keyboards/keebio/levinson/keymaps/jyh/keymap.c @@ -20,9 +20,6 @@ enum custom_keycodes { ADJUST, }; -// Fillers to make layering more clear -#define KC_ KC_TRNS - // tap toggle numpad on #define NUMPAD TT(_NUMS) @@ -48,13 +45,6 @@ enum custom_keycodes { #define CTL_BSL MT(MOD_RCTL, KC_BSLS) // \ Right Control #define CTL_PIP MT(MOD_RCTL, KC_PIPE) // | Right Control -// Redefine for LAYOUT_kc -#define KC_CTL_BSL CTL_BSL -#define KC_CTL_PIP CTL_PIP -#define KC_CTL_DEL CTL_DEL -#define KC_HPR_TIL HPR_TIL -#define KC_HPR_GRV HPR_GRV - const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { @@ -81,12 +71,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | | | | | | * `-----------------------------------------' `-----------------------------------------' */ - [_QWERTY] = LAYOUT_ortho_4x12( - HPR_TAB, KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_BSPC, - CTL_ESC, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, CTL_QOT, - SFT_MIN, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, SFT_ENT, - NUMPAD , KC_MEH , KC_LGUI, KC_LALT, LOWER, CTL_SPC, KC_SPC, RAISE, KC_RALT, KC_RGUI, KC_HYPR, MO(_FUNC) - ), + [_QWERTY] = LAYOUT_ortho_4x12( + HPR_TAB, KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_BSPC, + CTL_ESC, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, CTL_QOT, + SFT_MIN, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, SFT_ENT, + NUMPAD , KC_MEH , KC_LGUI, KC_LALT, LOWER, CTL_SPC, KC_SPC, RAISE, KC_RALT, KC_RGUI, KC_HYPR, MO(_FUNC) + ), /* Raise @@ -100,12 +90,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | | | | | | * `-----------------------------------------' `-----------------------------------------' */ - [_RAISE] = LAYOUT_kc_ortho_4x12( - HPR_GRV, 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 , , - ,LEFT, UP ,DOWN,RGHT,LPRN, RPRN,MINS, EQL,LBRC,RBRC,CTL_PIP, - ,COLN,QUOT,ASTR,COMM,LCBR, RCBR,UNDS,PLUS, , , , - , , , , , , , , , , , - ), + [_RAISE] = LAYOUT_ortho_4x12( + HPR_GRV, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , _______, + _______, KC_LEFT, KC_UP , KC_DOWN, KC_RGHT, KC_LPRN, KC_RPRN, KC_MINS, KC_EQL , KC_LBRC, KC_RBRC, CTL_PIP, + _______, KC_COLN, KC_QUOT, KC_ASTR, KC_COMM, KC_LCBR, KC_RCBR, KC_UNDS, KC_PLUS, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), /* Lower * ,-----------------------------------------. ,-----------------------------------------. @@ -118,61 +108,58 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | | | | | | * `-----------------------------------------' `-----------------------------------------' */ - [_LOWER] = LAYOUT_kc_ortho_4x12( - HPR_TIL,EXLM, AT ,HASH,DLR , PERC , CIRC,AMPR,ASTR,LPRN,RPRN, , - CTL_DEL,VOLU,MUTE,MPLY,PGUP, COLN , QUOT,MINS, EQL,LBRC,RBRC,CTL_BSL, - ,VOLD,MPRV,MNXT,PGDN, SCLN , DQUO,PIPE,COMM, DOT,SLSH, , - , , , , , , , , , , , - ), + [_LOWER] = LAYOUT_ortho_4x12( + HPR_TIL, KC_EXLM, KC_AT , KC_HASH, KC_DLR , KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, + CTL_DEL, KC_VOLU, KC_MUTE, KC_MPLY, KC_PGUP, KC_COLN, KC_QUOT, KC_MINS, KC_EQL , KC_LBRC, KC_RBRC, CTL_BSL, + _______, KC_VOLD, KC_MPRV, KC_MNXT, KC_PGDN, KC_SCLN, KC_DQUO, KC_PIPE, KC_COMM, KC_DOT , KC_SLSH, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), - [_FUNC] = LAYOUT_kc_ortho_4x12( -// ,----+----+----+----+----+----. ,----+----+----+----+----+----. - , F1 , F2 , F3 , F4 , F5 , F6 , F7 , F8 , F9 , F10, , -// |----+----+----+----+----+----| |----+----+----+----+----+----| - , F11, F12, F13, F14, F15, F16, F17, F18, F19, F20, , -// |----+----+----+----+----+----| |----+----+----+----+----+----| - , F21, F22, F23, F24, NO , NO , NO , NO , NO , NO , , -// |----+----+----+----+----+----| |----+----+----+----+----+----| - , , , , , , , , , , , -// `----+----+----+----+----+----' `----+----+----+----+----+----' - ), + [_FUNC] = LAYOUT_ortho_4x12( + _______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , _______, + _______, KC_F11 , KC_F12 , KC_F13 , KC_F14 , KC_F15 , KC_F16 , KC_F17 , KC_F18 , KC_F19 , KC_F20 , _______, + _______, KC_F21 , KC_F22 , KC_F23 , KC_F24 , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), - [_NUMS] = LAYOUT_kc_ortho_4x12( -// ,----+----+----+----+----+----. ,----+----+----+----+----+----. - , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ,SLSH, , -// |----+----+----+----+----+----| |----+----+----+----+----+----| - ,CAPS, INS,HOME,PGUP,LPRN, RPRN, 4 , 5 , 6 ,ASTR, , -// |----+----+----+----+----+----| |----+----+----+----+----+----| - ,NLCK, DEL, END,PGDN,SCLN, COMM, 1 , 2 , 3 ,MINS, , -// |----+----+----+----+----+----| |----+----+----+----+----+----| - , , , , , , , 0 ,DOT ,EQL ,PLUS, -// `----+----+----+----+----+----' `----+----+----+----+----+----' - ), + [_NUMS] = LAYOUT_ortho_4x12( + _______, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_SLSH, _______, + _______, KC_CAPS, KC_INS , KC_HOME, KC_PGUP, KC_LPRN, KC_RPRN, KC_4 , KC_5 , KC_6 , KC_ASTR, _______, + _______, KC_NLCK, KC_DEL , KC_END , KC_PGDN, KC_SCLN, KC_COMM, KC_1 , KC_2 , KC_3 , KC_MINS, _______, + _______, _______, _______, _______, _______, _______, _______, KC_0 , KC_DOT , KC_EQL , KC_PLUS, _______ + ), - [_ADJUST] = LAYOUT_ortho_4x12( -// ,-------+--------+--------+--------+--------+--------. ,-------+--------+--------+--------+--------+--------. - RESET , XXXXXXX, KC_UP , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_DEL , \ -// |-------+--------+--------+--------+--------+--------| |-------+--------+--------+--------+--------+--------| - _______, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, BL_TOGG, BL_STEP, XXXXXXX, XXXXXXX, XXXXXXX, _______, \ -// |-------+--------+--------+--------+--------+--------| |-------+--------+--------+--------+--------+--------| - _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, \ -// |-------+--------+--------+--------+--------+--------| |-------+--------+--------+--------+--------+--------| - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ -// `-------+--------+--------+--------+--------+--------' `-------+--------+--------+--------+--------+--------, - ) + [_ADJUST] = LAYOUT_ortho_4x12( + RESET , XXXXXXX, KC_UP , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_DEL , + _______, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, BL_TOGG, BL_STEP, XXXXXXX, XXXXXXX, XXXXXXX, _______, + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; -/* +/* Template + * * ,-----------------------------------------. ,-----------------------------------------. - * | | | | | | | | | | | | | | + * | Hyper| | | | | | | | | | | | | * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | | | | | | | | | | | | | + * | Ctrl | | | | | | | | | | | | Ctrl | * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | | | | | | | | | | | | | + * | Shift| | | | | | | | | | | | Shift| * |------+------+------+------+------+------| |------+------+------+------+------+------| * | | | | | | | | | | | | | | * `-----------------------------------------' `-----------------------------------------' + * + * */ -}; +// ,-------+--------+--------+--------+--------+--------. ,-------+--------+--------+--------+--------+--------. +// | | | | | | | | | | | | | | +// ,-------+--------+--------+--------+--------+--------. ,-------+--------+--------+--------+--------+--------. +// | | | | | | | | | | | | | | +// ,-------+--------+--------+--------+--------+--------. ,-------+--------+--------+--------+--------+--------. +// | | | | | | | | | | | | | | +// ,-------+--------+--------+--------+--------+--------. ,-------+--------+--------+--------+--------+--------. +// | | | | | | | | | | | | | | +// `-------+--------+--------+--------+--------+--------' `-------+--------+--------+--------+--------+--------, bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { From f0dc2067844a9045ffbd423c48b32abcceca742e Mon Sep 17 00:00:00 2001 From: jrdsgl Date: Fri, 2 Apr 2021 20:44:06 -0700 Subject: [PATCH 166/613] [Keyboard] Update sixkeyboard VID/PID (#12345) Co-authored-by: Ryan --- keyboards/sixkeyboard/config.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/sixkeyboard/config.h b/keyboards/sixkeyboard/config.h index f25c09bc0d..b8fcb8d7d1 100644 --- a/keyboards/sixkeyboard/config.h +++ b/keyboards/sixkeyboard/config.h @@ -21,8 +21,8 @@ along with this program. If not, see . #include "config_common.h" /* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x6062 +#define VENDOR_ID 0x746B +#define PRODUCT_ID 0x736B #define DEVICE_VER 0x0001 #define MANUFACTURER techkeys.us #define PRODUCT sixkeykeyboard From 70540a1f744d350913b332a59571e899ea4556f3 Mon Sep 17 00:00:00 2001 From: Wilba Date: Sat, 3 Apr 2021 14:48:26 +1100 Subject: [PATCH 167/613] [Keyboard] Added RAMA WORKS KARA (#12346) Co-authored-by: Ryan --- keyboards/wilba_tech/rama_works_kara/config.h | 123 ++++++++++++++++++ .../wilba_tech/rama_works_kara/info.json | 12 ++ .../rama_works_kara/keymaps/default/keymap.c | 55 ++++++++ .../rama_works_kara/keymaps/via/keymap.c | 1 + .../rama_works_kara/keymaps/via/rules.mk | 1 + .../rama_works_kara/rama_works_kara.c | 18 +++ .../rama_works_kara/rama_works_kara.h | 37 ++++++ .../wilba_tech/rama_works_kara/readme.md | 13 ++ keyboards/wilba_tech/rama_works_kara/rules.mk | 38 ++++++ 9 files changed, 298 insertions(+) create mode 100644 keyboards/wilba_tech/rama_works_kara/config.h create mode 100644 keyboards/wilba_tech/rama_works_kara/info.json create mode 100644 keyboards/wilba_tech/rama_works_kara/keymaps/default/keymap.c create mode 100644 keyboards/wilba_tech/rama_works_kara/keymaps/via/keymap.c create mode 100644 keyboards/wilba_tech/rama_works_kara/keymaps/via/rules.mk create mode 100644 keyboards/wilba_tech/rama_works_kara/rama_works_kara.c create mode 100644 keyboards/wilba_tech/rama_works_kara/rama_works_kara.h create mode 100644 keyboards/wilba_tech/rama_works_kara/readme.md create mode 100644 keyboards/wilba_tech/rama_works_kara/rules.mk diff --git a/keyboards/wilba_tech/rama_works_kara/config.h b/keyboards/wilba_tech/rama_works_kara/config.h new file mode 100644 index 0000000000..724098257b --- /dev/null +++ b/keyboards/wilba_tech/rama_works_kara/config.h @@ -0,0 +1,123 @@ +/* Copyright 2021 Jason Williams (Wilba) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "config_common.h" + +// USB Device descriptor parameter +#define VENDOR_ID 0x5241 // "RA" +#define PRODUCT_ID 0x4B52 // "KR" +#define DEVICE_VER 0x0001 +#define MANUFACTURER RAMA WORKS +#define PRODUCT RAMA WORKS KARA + +// key matrix size +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +// M60-A PCB default pin-out +#define MATRIX_ROW_PINS { F0, F1, F4, F6, F7 } +#define MATRIX_COL_PINS { F5, D5, B1, B2, B3, D3, D2, C7, C6, B6, B5, B4, D7, D6 } +#define UNUSED_PINS + +// IS31FL3731 driver +#define DRIVER_COUNT 2 +#define DRIVER_LED_TOTAL 72 + +// COL2ROW or ROW2COL +#define DIODE_DIRECTION COL2ROW + +// Set 0 if debouncing isn't needed +#define DEBOUNCE 5 + +// Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap +#define LOCKING_SUPPORT_ENABLE +// Locking resynchronize hack +#define LOCKING_RESYNC_ENABLE + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +// disable debug print +//#define NO_DEBUG + +// disable print +//#define NO_PRINT + +// disable action features +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +#define RGB_BACKLIGHT_ENABLED 1 + +// This conditionally compiles the backlight code for M60-A specifics +#define RGB_BACKLIGHT_M60_A + +// enable/disable LEDs based on layout +// they aren't really used if RGB_BACKLIGHT_M60_A defined +#define RGB_BACKLIGHT_USE_SPLIT_BACKSPACE 1 +#define RGB_BACKLIGHT_USE_SPLIT_LEFT_SHIFT 0 +#define RGB_BACKLIGHT_USE_SPLIT_RIGHT_SHIFT 1 +#define RGB_BACKLIGHT_USE_7U_SPACEBAR 1 +#define RGB_BACKLIGHT_USE_ISO_ENTER 0 +#define RGB_BACKLIGHT_DISABLE_HHKB_BLOCKER_LEDS 1 + +// disable backlight when USB suspended (PC sleep/hibernate/shutdown) +#define RGB_BACKLIGHT_DISABLE_WHEN_USB_SUSPENDED 0 + +// disable backlight after timeout in minutes, 0 = no timeout +#define RGB_BACKLIGHT_DISABLE_AFTER_TIMEOUT 0 + +// the default brightness +#define RGB_BACKLIGHT_BRIGHTNESS 255 + +// the default effect (RGB test) +#define RGB_BACKLIGHT_EFFECT 255 + +// the default effect speed (0-3) +#define RGB_BACKLIGHT_EFFECT_SPEED 0 + +// the default color1 and color2 +#define RGB_BACKLIGHT_COLOR_1 { .h = 0, .s = 255 } +#define RGB_BACKLIGHT_COLOR_2 { .h = 127, .s = 255 } + +// These define which keys in the matrix are alphas/mods +// Used for backlight effects so colors are different for +// alphas vs. mods +// Each value is for a row, bit 0 is column 0 +// Alpha=0 Mod=1 +#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_0 0b0000000000000001 +#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_1 0b0010000000000001 +#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_2 0b0011000000000001 +#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_3 0b0011000000000001 +#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_4 0b0011100000000111 + +#define RGB_BACKLIGHT_CAPS_LOCK_INDICATOR { .color = { .h = 0, .s = 0 }, .index = 255 } +#define RGB_BACKLIGHT_LAYER_1_INDICATOR { .color = { .h = 0, .s = 0 }, .index = 255 } +#define RGB_BACKLIGHT_LAYER_2_INDICATOR { .color = { .h = 0, .s = 0 }, .index = 255 } +#define RGB_BACKLIGHT_LAYER_3_INDICATOR { .color = { .h = 0, .s = 0 }, .index = 255 } + +// Backlight config starts after VIA's EEPROM usage, +// dynamic keymaps start after this. +#define VIA_EEPROM_CUSTOM_CONFIG_SIZE 31 + +// VIA lighting is handled by the keyboard-level code +#define VIA_CUSTOM_LIGHTING_ENABLE diff --git a/keyboards/wilba_tech/rama_works_kara/info.json b/keyboards/wilba_tech/rama_works_kara/info.json new file mode 100644 index 0000000000..c064f9c298 --- /dev/null +++ b/keyboards/wilba_tech/rama_works_kara/info.json @@ -0,0 +1,12 @@ +{ + "keyboard_name": "RAMA WORKS KARA", + "url": "http://rama.works", + "maintainer": "Wilba", + "width": 15, + "height": 5, + "layouts": { + "LAYOUT_60_hhkb": { + "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"|", "x":13, "y":0}, {"label":"~", "x":14, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"Delete", "x":13.5, "y":1, "w":1.5}, {"label":"Control", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"Fn", "x":14, "y":3}, {"label":"Os", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"label":"Alt", "x":11, "y":4, "w":1.5}, {"label":"Os", "x":12.5, "y":4}] + } + } +} \ No newline at end of file diff --git a/keyboards/wilba_tech/rama_works_kara/keymaps/default/keymap.c b/keyboards/wilba_tech/rama_works_kara/keymaps/default/keymap.c new file mode 100644 index 0000000000..15f654de0c --- /dev/null +++ b/keyboards/wilba_tech/rama_works_kara/keymaps/default/keymap.c @@ -0,0 +1,55 @@ +/* Copyright 2021 Jason Williams (Wilba) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +// Default layout for RAMA WORKS KARA +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + // Default layer + [0] = LAYOUT_60_hhkb( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, FN_MO13, + KC_LGUI, KC_LALT, KC_SPC, KC_RALT, FN_MO23), + + // Fn1 Layer + [1] = LAYOUT_60_hhkb( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, + KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS, + KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_EJCT, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + // Fn2 Layer + [2] = LAYOUT_60_hhkb( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + // Fn3 Layer + [3] = LAYOUT_60_hhkb( + KC_TRNS, EF_DEC, EF_INC, H1_DEC, H1_INC, H2_DEC, H2_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BR_DEC, BR_INC, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, S1_DEC, S1_INC, S2_DEC, S2_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, ES_DEC, ES_INC, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +}; + + diff --git a/keyboards/wilba_tech/rama_works_kara/keymaps/via/keymap.c b/keyboards/wilba_tech/rama_works_kara/keymaps/via/keymap.c new file mode 100644 index 0000000000..1f9d213f05 --- /dev/null +++ b/keyboards/wilba_tech/rama_works_kara/keymaps/via/keymap.c @@ -0,0 +1 @@ +#include "../default/keymap.c" \ No newline at end of file diff --git a/keyboards/wilba_tech/rama_works_kara/keymaps/via/rules.mk b/keyboards/wilba_tech/rama_works_kara/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/wilba_tech/rama_works_kara/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/wilba_tech/rama_works_kara/rama_works_kara.c b/keyboards/wilba_tech/rama_works_kara/rama_works_kara.c new file mode 100644 index 0000000000..787a854925 --- /dev/null +++ b/keyboards/wilba_tech/rama_works_kara/rama_works_kara.c @@ -0,0 +1,18 @@ +/* Copyright 2021 Jason Williams (Wilba) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#ifndef RGB_BACKLIGHT_M60_A +#error RGB_BACKLIGHT_M60_A not defined +#endif diff --git a/keyboards/wilba_tech/rama_works_kara/rama_works_kara.h b/keyboards/wilba_tech/rama_works_kara/rama_works_kara.h new file mode 100644 index 0000000000..c3e06f8521 --- /dev/null +++ b/keyboards/wilba_tech/rama_works_kara/rama_works_kara.h @@ -0,0 +1,37 @@ +/* Copyright 2021 Jason Williams (Wilba) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" +#include "keyboards/wilba_tech/wt_rgb_backlight_keycodes.h" +#include "via.h" + +#define XXX KC_NO + +#define LAYOUT_60_hhkb( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \ + K41, K42, K47, K4B, K4C \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \ + { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \ + { XXX, K41, K42, XXX, XXX, XXX, XXX, K47, XXX, XXX, XXX, K4B, K4C, XXX } \ +} + diff --git a/keyboards/wilba_tech/rama_works_kara/readme.md b/keyboards/wilba_tech/rama_works_kara/readme.md new file mode 100644 index 0000000000..967cfd5e7f --- /dev/null +++ b/keyboards/wilba_tech/rama_works_kara/readme.md @@ -0,0 +1,13 @@ +# RAMA WORKS KARA + +KARA is a keyboard PCB supporting HHKB layout and daughterboard USB-C. [More info at RAMA WORKS](https://rama.works/kara/) + +* Keyboard Maintainer: [Wilba6582](https://github.com/Wilba6582) +* Hardware Supported: RAMA WORKS KARA PCB +* Hardware Availability: [RAMA WORKS Store](https://ramaworks.store/) + +Make example for this keyboard (after setting up your build environment): + + make wilba_tech/rama_works_kara:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/wilba_tech/rama_works_kara/rules.mk b/keyboards/wilba_tech/rama_works_kara/rules.mk new file mode 100644 index 0000000000..8af9101d35 --- /dev/null +++ b/keyboards/wilba_tech/rama_works_kara/rules.mk @@ -0,0 +1,38 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Do not put the microcontroller into power saving mode +# when we get USB suspend event. We want it to keep updating +# backlight effects. +OPT_DEFS += -DNO_SUSPEND_POWER_DOWN + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output + +CIE1931_CURVE = yes + +LAYOUTS = 60_hhkb + +# project specific files +SRC = keyboards/wilba_tech/wt_main.c \ + keyboards/wilba_tech/wt_rgb_backlight.c \ + quantum/color.c \ + drivers/issi/is31fl3731.c \ + drivers/avr/i2c_master.c From 4caeb648881543fb822efb9fca3f54ee34a73041 Mon Sep 17 00:00:00 2001 From: Wilba Date: Sat, 3 Apr 2021 14:57:18 +1100 Subject: [PATCH 168/613] [Keyboard] Added wilba.tech WT70-JB (#12347) Co-authored-by: Ryan --- keyboards/wilba_tech/wt70_jb/config.h | 64 +++++++++++++++++++ keyboards/wilba_tech/wt70_jb/info.json | 12 ++++ .../wt70_jb/keymaps/default/keymap.c | 52 +++++++++++++++ .../wilba_tech/wt70_jb/keymaps/via/keymap.c | 1 + .../wilba_tech/wt70_jb/keymaps/via/rules.mk | 1 + keyboards/wilba_tech/wt70_jb/readme.md | 19 ++++++ keyboards/wilba_tech/wt70_jb/rules.mk | 22 +++++++ keyboards/wilba_tech/wt70_jb/wt70_jb.c | 60 +++++++++++++++++ keyboards/wilba_tech/wt70_jb/wt70_jb.h | 34 ++++++++++ 9 files changed, 265 insertions(+) create mode 100644 keyboards/wilba_tech/wt70_jb/config.h create mode 100644 keyboards/wilba_tech/wt70_jb/info.json create mode 100644 keyboards/wilba_tech/wt70_jb/keymaps/default/keymap.c create mode 100644 keyboards/wilba_tech/wt70_jb/keymaps/via/keymap.c create mode 100644 keyboards/wilba_tech/wt70_jb/keymaps/via/rules.mk create mode 100644 keyboards/wilba_tech/wt70_jb/readme.md create mode 100644 keyboards/wilba_tech/wt70_jb/rules.mk create mode 100644 keyboards/wilba_tech/wt70_jb/wt70_jb.c create mode 100644 keyboards/wilba_tech/wt70_jb/wt70_jb.h diff --git a/keyboards/wilba_tech/wt70_jb/config.h b/keyboards/wilba_tech/wt70_jb/config.h new file mode 100644 index 0000000000..67bf6b0843 --- /dev/null +++ b/keyboards/wilba_tech/wt70_jb/config.h @@ -0,0 +1,64 @@ +/* Copyright 2020 Jason Williams (Wilba) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x6582 // wilba.tech +#define PRODUCT_ID 0x001F // PCB #31 +#define DEVICE_VER 0x0001 +#define MANUFACTURER wilba.tech +#define PRODUCT wilba.tech WT70-JB + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 17 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +#define MATRIX_ROW_PINS { E6, F0, F4, F6, F7 } +#define MATRIX_COL_PINS { F5, D5, D3, D2, D1, D0, B7, C7, C6, B6, B5, B4, D7, D6, D4, B0, B3 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +// RGBLIGHT configuation +#define RGB_DI_PIN B2 +#ifdef RGB_DI_PIN + #define RGBLED_NUM 2 + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 + #define RGBLIGHT_ANIMATIONS +#endif diff --git a/keyboards/wilba_tech/wt70_jb/info.json b/keyboards/wilba_tech/wt70_jb/info.json new file mode 100644 index 0000000000..bfe4f68d58 --- /dev/null +++ b/keyboards/wilba_tech/wt70_jb/info.json @@ -0,0 +1,12 @@ +{ + "keyboard_name": "wilba.tech WT70-JB", + "url": "https://wilba.tech", + "maintainer": "Wilba", + "width": 18.5, + "height": 5, + "layouts": { + "LAYOUT_all": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.5, "y":0}, {"x":16.5, "y":0}, {"x":17.5, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":15.5, "y":1}, {"x":16.5, "y":1}, {"x":17.5, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":16.5, "y":3}, {"x":0, "y":4, "w":1.5}, {"x":1.5, "y":4}, {"x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"x":11, "y":4, "w":1.5}, {"x":12.5, "y":4}, {"x":13.5, "y":4, "w":1.5}, {"x":15.5, "y":4}, {"x":16.5, "y":4}, {"x":17.5, "y":4}] + } + } +} \ No newline at end of file diff --git a/keyboards/wilba_tech/wt70_jb/keymaps/default/keymap.c b/keyboards/wilba_tech/wt70_jb/keymaps/default/keymap.c new file mode 100644 index 0000000000..725b95551a --- /dev/null +++ b/keyboards/wilba_tech/wt70_jb/keymaps/default/keymap.c @@ -0,0 +1,52 @@ +/* Copyright 2020 Jason Williams (Wilba) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +// Default layer +[0] = LAYOUT_all( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + +// Fn1 Layer +[1] = LAYOUT_all( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +// Fn2 Layer +[2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +// Fn3 Layer +[3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +}; diff --git a/keyboards/wilba_tech/wt70_jb/keymaps/via/keymap.c b/keyboards/wilba_tech/wt70_jb/keymaps/via/keymap.c new file mode 100644 index 0000000000..1f9d213f05 --- /dev/null +++ b/keyboards/wilba_tech/wt70_jb/keymaps/via/keymap.c @@ -0,0 +1 @@ +#include "../default/keymap.c" \ No newline at end of file diff --git a/keyboards/wilba_tech/wt70_jb/keymaps/via/rules.mk b/keyboards/wilba_tech/wt70_jb/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/wilba_tech/wt70_jb/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/wilba_tech/wt70_jb/readme.md b/keyboards/wilba_tech/wt70_jb/readme.md new file mode 100644 index 0000000000..0d32c99fd1 --- /dev/null +++ b/keyboards/wilba_tech/wt70_jb/readme.md @@ -0,0 +1,19 @@ +# wilba.tech WT70-JB + +![wilba.tech WT70-JB](https://i.imgur.com/qOtyfp4h.jpg) + +WT70-JB is a keyboard PCB supporting TKL without F-row layout. + +* Keyboard Maintainer: [Wilba6582](https://github.com/Wilba6582) +* Hardware Supported: wilba.tech WT70-JB +* Hardware Availability: [wilba.tech](https://wilba.tech/) + +Make example for this keyboard (after setting up your build environment): + + make wilba_tech/wt70_jb:default + +Flashing example for this keyboard: + + make wilba_tech/wt70_jb:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/wilba_tech/wt70_jb/rules.mk b/keyboards/wilba_tech/wt70_jb/rules.mk new file mode 100644 index 0000000000..3d07971159 --- /dev/null +++ b/keyboards/wilba_tech/wt70_jb/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output \ No newline at end of file diff --git a/keyboards/wilba_tech/wt70_jb/wt70_jb.c b/keyboards/wilba_tech/wt70_jb/wt70_jb.c new file mode 100644 index 0000000000..0bb9aca092 --- /dev/null +++ b/keyboards/wilba_tech/wt70_jb/wt70_jb.c @@ -0,0 +1,60 @@ +/* Copyright 2020 Jason Williams (Wilba) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "wt70_jb.h" + +bool g_first_execution = false; + +void keyboard_pre_init_kb(void) { + setPinOutput(F1); + + keyboard_pre_init_user(); +} + +bool led_update_kb(led_t led_state) { + if (led_update_user(led_state)) { + writePin(F1, led_state.caps_lock); + } + return true; +} + +// This is some magic so that PCBs flashed with VIA firmware at the factory +// will start with an RGB test pattern. Not relevant for non-VIA firmware. +#ifdef VIA_ENABLE + +// Called from via_init() if VIA_ENABLE +// Called from matrix_init_kb() if not VIA_ENABLE +void via_init_kb(void) +{ + // If the EEPROM has the magic, the data is good. + // OK to load from EEPROM + if (via_eeprom_is_valid()) { + } else { + // Cache "first execution" state so we can do something + // specific after QMK initialization has done its thing. + g_first_execution = true; + // DO NOT set EEPROM valid here, let caller do this + } +} + +void keyboard_post_init_kb() { + // This is a workaround to ensure "EEPROM cleared" PCBs will + // start with the RGB test mode, essential for testing LEDs. + if ( g_first_execution ) { + rgblight_mode(RGBLIGHT_MODE_RGB_TEST); + } +} + +#endif // VIA_ENABLE diff --git a/keyboards/wilba_tech/wt70_jb/wt70_jb.h b/keyboards/wilba_tech/wt70_jb/wt70_jb.h new file mode 100644 index 0000000000..b69d1a7630 --- /dev/null +++ b/keyboards/wilba_tech/wt70_jb/wt70_jb.h @@ -0,0 +1,34 @@ +/* Copyright 2020 Jason Williams (Wilba) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#define ____ KC_NO + +#define LAYOUT_all( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K213, K014, K015, K016, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, \ + K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K315, \ + K400, K401, K402, K403, K411, K412, K413, K414, K415, K416 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, ____, ____, ____ }, \ + { K300, ____, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, ____, K315, ____ }, \ + { K400, K401, K402, K403, ____, ____, ____, ____, ____, ____, ____, K411, K412, K413, K414, K415, K416 } \ +} From 68762639610d87ca1cd49752dfbc993ae6ee2f6a Mon Sep 17 00:00:00 2001 From: MechMerlin <30334081+mechmerlin@users.noreply.github.com> Date: Fri, 2 Apr 2021 20:58:42 -0700 Subject: [PATCH 169/613] [Keyboard] KBD67 Hotswap VIA Support (#12351) Co-authored-by: Ryan --- keyboards/kbdfans/kbd67/hotswap/config.h | 4 +- .../kbd67/hotswap/keymaps/via/keymap.c | 46 +++++++++++++++++++ .../kbd67/hotswap/keymaps/via/rules.mk | 2 + 3 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 keyboards/kbdfans/kbd67/hotswap/keymaps/via/keymap.c create mode 100644 keyboards/kbdfans/kbd67/hotswap/keymaps/via/rules.mk diff --git a/keyboards/kbdfans/kbd67/hotswap/config.h b/keyboards/kbdfans/kbd67/hotswap/config.h index e26dfac2f9..400b7540cb 100644 --- a/keyboards/kbdfans/kbd67/hotswap/config.h +++ b/keyboards/kbdfans/kbd67/hotswap/config.h @@ -20,8 +20,8 @@ along with this program. If not, see . #include "config_common.h" /* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x0000 +#define VENDOR_ID 0x4B42 +#define PRODUCT_ID 0x6065 #define DEVICE_VER 0x0001 #define MANUFACTURER KBDFans #define PRODUCT KBD67 Hotswap diff --git a/keyboards/kbdfans/kbd67/hotswap/keymaps/via/keymap.c b/keyboards/kbdfans/kbd67/hotswap/keymaps/via/keymap.c new file mode 100644 index 0000000000..e7fa5ef8e4 --- /dev/null +++ b/keyboards/kbdfans/kbd67/hotswap/keymaps/via/keymap.c @@ -0,0 +1,46 @@ +/* Copyright 2021 MechMerlin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_DEL, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_PGUP, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT), + +[1] = LAYOUT( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_DEL, + RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +[2] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +[3] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +}; diff --git a/keyboards/kbdfans/kbd67/hotswap/keymaps/via/rules.mk b/keyboards/kbdfans/kbd67/hotswap/keymaps/via/rules.mk new file mode 100644 index 0000000000..36b7ba9cbc --- /dev/null +++ b/keyboards/kbdfans/kbd67/hotswap/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes From 8b98e67643e664dd28b96f7e40372f5b93595050 Mon Sep 17 00:00:00 2001 From: MCKeebs <72995608+chrisquocmai@users.noreply.github.com> Date: Sat, 3 Apr 2021 00:18:15 -0400 Subject: [PATCH 170/613] [Keyboard] Add pkb65 keyboard (#12230) Co-authored-by: Drashna Jaelre Co-authored-by: Ryan --- keyboards/pkb65/config.h | 68 +++++++++++++++++++++ keyboards/pkb65/info.json | 77 ++++++++++++++++++++++++ keyboards/pkb65/keymaps/default/keymap.c | 40 ++++++++++++ keyboards/pkb65/keymaps/via/keymap.c | 53 ++++++++++++++++ keyboards/pkb65/keymaps/via/rules.mk | 2 + keyboards/pkb65/pkb65.c | 20 ++++++ keyboards/pkb65/pkb65.h | 38 ++++++++++++ keyboards/pkb65/readme.md | 16 +++++ keyboards/pkb65/rules.mk | 22 +++++++ 9 files changed, 336 insertions(+) create mode 100644 keyboards/pkb65/config.h create mode 100644 keyboards/pkb65/info.json create mode 100644 keyboards/pkb65/keymaps/default/keymap.c create mode 100644 keyboards/pkb65/keymaps/via/keymap.c create mode 100644 keyboards/pkb65/keymaps/via/rules.mk create mode 100644 keyboards/pkb65/pkb65.c create mode 100644 keyboards/pkb65/pkb65.h create mode 100644 keyboards/pkb65/readme.md create mode 100644 keyboards/pkb65/rules.mk diff --git a/keyboards/pkb65/config.h b/keyboards/pkb65/config.h new file mode 100644 index 0000000000..7c6af9f84a --- /dev/null +++ b/keyboards/pkb65/config.h @@ -0,0 +1,68 @@ +/* + +Copyright 2021 MCKeebs +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + + +*/ + + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4D43 // MCKeebs +#define PRODUCT_ID 0x6060 +#define DEVICE_VER 0x0001 +#define MANUFACTURER MCKeebs +#define PRODUCT PKB65 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { C7, C6, B6, B7, F0 } +#define MATRIX_COL_PINS { B0, B1, B2, B3, D0, D1, D2, D3, D5, D4, D6, D7, B4, B5 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* number of backlight levels */ + +#ifdef BACKLIGHT_PIN +#define BACKLIGHT_LEVELS 0 +#endif + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE + +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + + + +#ifdef RGB_DI_PIN +#define RGBLIGHT_ANIMATIONS +#define RGBLED_NUM 0 +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 +#endif diff --git a/keyboards/pkb65/info.json b/keyboards/pkb65/info.json new file mode 100644 index 0000000000..e21010015d --- /dev/null +++ b/keyboards/pkb65/info.json @@ -0,0 +1,77 @@ +{ + "keyboard_name": "PKB65", + "url": "", + "maintainer": "qmk", + "width": 16, + "height": 5, + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"!", "x":1, "y":0}, + {"label":"@", "x":2, "y":0}, + {"label":"#", "x":3, "y":0}, + {"label":"$", "x":4, "y":0}, + {"label":"%", "x":5, "y":0}, + {"label":"^", "x":6, "y":0}, + {"label":"&", "x":7, "y":0}, + {"label":"*", "x":8, "y":0}, + {"label":"(", "x":9, "y":0}, + {"label":")", "x":10, "y":0}, + {"label":"_", "x":11, "y":0}, + {"label":"+", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"{", "x":11.5, "y":1}, + {"label":"}", "x":12.5, "y":1}, + {"label":"|", "x":13.5, "y":1, "w":1.5}, + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":":", "x":10.75, "y":2}, + {"label":"\"", "x":11.75, "y":2}, + {"label":"Enter", "x":12.75, "y":2, "w":2.25}, + {"label":"Delete", "x":15, "y":2}, + {"label":"Shift", "x":0, "y":3, "w":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":"<", "x":9.25, "y":3}, + {"label":">", "x":10.25, "y":3}, + {"label":"?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"\u2191", "x":14, "y":3}, + {"label":"PrtSc", "x":15, "y":3}, + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"Win", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"label":"Alt", "x":10, "y":4, "w":1.25}, + {"label":"Fn", "x":11.25, "y":4, "w":1.25}, + {"label":"\u2190", "x":13, "y":4}, + {"label":"\u2193", "x":14, "y":4}, + {"label":"\u2192", "x":15, "y":4}] + } + } +} \ No newline at end of file diff --git a/keyboards/pkb65/keymaps/default/keymap.c b/keyboards/pkb65/keymaps/default/keymap.c new file mode 100644 index 0000000000..74528cd2b6 --- /dev/null +++ b/keyboards/pkb65/keymaps/default/keymap.c @@ -0,0 +1,40 @@ +/* + +Copyright 2021 MCKeebs +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + + +*/ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_END, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT), + + LAYOUT( + KC_GRAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + +}; + diff --git a/keyboards/pkb65/keymaps/via/keymap.c b/keyboards/pkb65/keymaps/via/keymap.c new file mode 100644 index 0000000000..fc33861452 --- /dev/null +++ b/keyboards/pkb65/keymaps/via/keymap.c @@ -0,0 +1,53 @@ +/* + +Copyright 2021 MCKeebs +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + + +*/ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_DEL, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_PSCR, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT), + + LAYOUT( + KC_GRAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + +}; diff --git a/keyboards/pkb65/keymaps/via/rules.mk b/keyboards/pkb65/keymaps/via/rules.mk new file mode 100644 index 0000000000..43061db1dd --- /dev/null +++ b/keyboards/pkb65/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/pkb65/pkb65.c b/keyboards/pkb65/pkb65.c new file mode 100644 index 0000000000..3e07960320 --- /dev/null +++ b/keyboards/pkb65/pkb65.c @@ -0,0 +1,20 @@ +/* + +Copyright 2021 MCKeebs +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + + +*/ +#include "pkb65.h" diff --git a/keyboards/pkb65/pkb65.h b/keyboards/pkb65/pkb65.h new file mode 100644 index 0000000000..770f3db457 --- /dev/null +++ b/keyboards/pkb65/pkb65.h @@ -0,0 +1,38 @@ +/* + +Copyright 2021 MCKeebs +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + + +*/ +#pragma once + +#include "quantum.h" + +#define LAYOUT( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, \ + K400, K401, K402, K405, K409, K410, K411, K412, K413 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313 }, \ + { K400, K401, K402, KC_NO, KC_NO, K405, KC_NO, KC_NO, KC_NO, K409, K410, K411, K412, K413 } \ +} + + diff --git a/keyboards/pkb65/readme.md b/keyboards/pkb65/readme.md new file mode 100644 index 0000000000..b47552da0f --- /dev/null +++ b/keyboards/pkb65/readme.md @@ -0,0 +1,16 @@ +# PKB65 + +![PKB65 Layout Image](https://i.imgur.com/0bqpIb8.png) + +A regular 65% layout keyboard. This will be the default layout flashed for all pkb65 boards. +Made and sold by MCKeebs. [More info on MCKeebDeisgn](https://www.mckeebdesign.com) + +* Keyboard Maintainer: [MCKeebs](https://github.com/chrisquocmai) +* Hardware Supported: [PKB65 PCB](https://https://mckeebdesign.com/PKB65/) +* Hardware Availability: [PKB65](https://mckeebdesign.com/PKB65/) + +Make example for this keyboard (after setting up your build environment: + + make pkb65:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/pkb65/rules.mk b/keyboards/pkb65/rules.mk new file mode 100644 index 0000000000..91f48bd442 --- /dev/null +++ b/keyboards/pkb65/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output From cd9637731205e908b8b28b103fe86e50ab9f86b8 Mon Sep 17 00:00:00 2001 From: kaylanm <1063516+kaylanm@users.noreply.github.com> Date: Sat, 3 Apr 2021 00:20:34 -0400 Subject: [PATCH 171/613] [Keyboard] Add GON NerD TKL VIA keymap (#12309) Co-authored-by: Ryan --- keyboards/gon/nerdtkl/config.h | 7 ++- keyboards/gon/nerdtkl/keymaps/via/keymap.c | 58 ++++++++++++++++++++++ keyboards/gon/nerdtkl/keymaps/via/rules.mk | 3 ++ 3 files changed, 66 insertions(+), 2 deletions(-) create mode 100644 keyboards/gon/nerdtkl/keymaps/via/keymap.c create mode 100644 keyboards/gon/nerdtkl/keymaps/via/rules.mk diff --git a/keyboards/gon/nerdtkl/config.h b/keyboards/gon/nerdtkl/config.h index 8619cf24a7..74d67f30d4 100644 --- a/keyboards/gon/nerdtkl/config.h +++ b/keyboards/gon/nerdtkl/config.h @@ -3,8 +3,8 @@ #include "config_common.h" /* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x6965 +#define VENDOR_ID 0x4E45 // NE +#define PRODUCT_ID 0x5244 // RD #define DEVICE_VER 0x0001 #define MANUFACTURER GON #define PRODUCT NerD TKL @@ -22,6 +22,9 @@ #define MATRIX_COL_PINS { E6, B0, B1, B2, B3, F0, D0, D5, D1 } #define UNUSED_PINS +#define BOOTMAGIC_LITE_ROW 8 +#define BOOTMAGIC_LITE_COLUMN 0 + /* COL2ROW or ROW2COL */ #define DIODE_DIRECTION COL2ROW diff --git a/keyboards/gon/nerdtkl/keymaps/via/keymap.c b/keyboards/gon/nerdtkl/keymaps/via/keymap.c new file mode 100644 index 0000000000..297c6a091a --- /dev/null +++ b/keyboards/gon/nerdtkl/keymaps/via/keymap.c @@ -0,0 +1,58 @@ + /* Copyright 2020 Michael Kaylan + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// Keymap layers +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_tkl( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_tkl( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [2] = LAYOUT_tkl( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [3] = LAYOUT_tkl( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) + +}; diff --git a/keyboards/gon/nerdtkl/keymaps/via/rules.mk b/keyboards/gon/nerdtkl/keymaps/via/rules.mk new file mode 100644 index 0000000000..df7e3909c9 --- /dev/null +++ b/keyboards/gon/nerdtkl/keymaps/via/rules.mk @@ -0,0 +1,3 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes +BACKLIGHT_ENABLE = yes From 8d3581a49ffaf567c99d1868a93df4c3d9bb352e Mon Sep 17 00:00:00 2001 From: Dylan Khor Date: Sat, 3 Apr 2021 00:44:37 -0400 Subject: [PATCH 172/613] [Keymap] Remove kc keymap from khord chocopad keymap (#12409) Co-authored-by: Ryan --- .../keebio/chocopad/keymaps/khord/keymap.c | 59 +++++-------------- 1 file changed, 15 insertions(+), 44 deletions(-) diff --git a/keyboards/keebio/chocopad/keymaps/khord/keymap.c b/keyboards/keebio/chocopad/keymaps/khord/keymap.c index 2c871c4e82..04811dfb4f 100644 --- a/keyboards/keebio/chocopad/keymaps/khord/keymap.c +++ b/keyboards/keebio/chocopad/keymaps/khord/keymap.c @@ -4,22 +4,8 @@ #define _FN1 1 #define _FN2 2 -// Fillers to make layering more clear -#define KC_ KC_TRNS -#define KC_XX KC_NO - #define KC_L1 LT(1, KC_P0) #define KC_L2 LT(2, KC_SPC) -#define KC_RST RESET -#define KC_BSTP BL_STEP -#define KC_RTOG RGB_TOG -#define KC_RMOD RGB_MOD -#define KC_RHUI RGB_HUI -#define KC_RHUD RGB_HUD -#define KC_RSAI RGB_SAI -#define KC_RSAD RGB_SAD -#define KC_RVAI RGB_VAI -#define KC_RVAD RGB_VAD #define KC_MAC1 ADMIN #define KC_MAC2 SMSPC #define KC_M192 M192 @@ -35,40 +21,25 @@ enum custom_keycodes { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_BASE] = LAYOUT_kc( - //,----+----+----+----. - P7 , P8 , P9 ,BSPC, - //|----+----+----+----| - P4 , P5 , P6 ,TAB , - //|----+----+----+----| - P1 , P2 , P3 ,PENT, - //|----+----+----+----| - L1 , L2 ,PDOT,PSLS - //`----+----+----+----' + [_BASE] = LAYOUT_ortho_4x4( + KC_P7, KC_P8, KC_P9, KC_BSPC, + KC_P4, KC_P5, KC_P6, KC_TAB , + KC_P1, KC_P2, KC_P3, KC_PENT, + KC_L1, KC_L2, KC_PDOT, KC_PSLS ), - [_FN1] = LAYOUT_kc( - //,----+----+----+----. - ESC ,MAC1,MAC2,DEL , - //|----+----+----+----| - LEFT,DOWN, UP ,RGHT, - //|----+----+----+----| - M192,M255, XX , XX , - //|----+----+----+----| - , XX , , XX - //`----+----+----+----' + [_FN1] = LAYOUT_ortho_4x4( + KC_ESC, KC_MAC1, KC_MAC2, KC_DEL , + KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, + KC_M192, KC_M255, XXXXXXX, XXXXXXX, + _______, XXXXXXX, _______, XXXXXXX ), - [_FN2] = LAYOUT_kc( - //,----+----+----+----. - RST , XX , XX , XX , - //|----+----+----+----| - RTOG,RHUI,RSAI,RVAI, - //|----+----+----+----| - RMOD,RHUD,RSAD,RVAD, - //|----+----+----+----| - BSTP, , XX , XX - //`----+----+----+----' + [_FN2] = LAYOUT_ortho_4x4( + RESET, XXXXXXX, XXXXXXX, XXXXXXX, + RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, + RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, + BL_STEP, _______, XXXXXXX, XXXXXXX ) }; From 79a87a9c2bd808a6e7a5ef5250739850c4105c30 Mon Sep 17 00:00:00 2001 From: Robert Verst Date: Sat, 3 Apr 2021 07:06:02 +0200 Subject: [PATCH 173/613] [Keymap] Fixing userspace `rverst` (#12422) Co-authored-by: Robert Verst --- users/rverst/rverst.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/users/rverst/rverst.c b/users/rverst/rverst.c index 4e8aa43e4d..0524c6011d 100644 --- a/users/rverst/rverst.c +++ b/users/rverst/rverst.c @@ -138,10 +138,14 @@ void eeconfig_init_user(void) { __attribute__((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true; } bool process_record_user(uint16_t keycode, keyrecord_t *record) { - if (process_record_keymap(keycode, record)) { + if (!process_record_keymap(keycode, record)) { return false; } + if (!record->event.pressed) { + return true; + } + bool ls = (get_mods() | get_weak_mods()) & MOD_BIT(KC_LSFT); bool rs = (get_mods() | get_weak_mods()) & MOD_BIT(KC_RSFT); bool as = ls || rs; From a7920acff5667d24f14eff3cc21eeeaae58d3711 Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Sat, 3 Apr 2021 07:12:24 +0200 Subject: [PATCH 174/613] keymaps: fix kinesis default keymap progrm/reset keycode (#12429) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The right-most top-most key on the Kinesis Advantage keyboard is labeled “Progrm†and was meant to enter the Teensy bootloader as per the comment. However, the keycode was set to KC_1, which just produces a “1â€. It should be RESET instead. This commit fixes KC_1 to RESET in all files where the fix is needed. The other files have already been fixed independently. --- keyboards/kinesis/keymaps/default/keymap.c | 2 +- keyboards/kinesis/keymaps/default_pretty/keymap.c | 2 +- keyboards/kinesis/keymaps/dvorak/keymap.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/keyboards/kinesis/keymaps/default/keymap.c b/keyboards/kinesis/keymaps/default/keymap.c index dd85cdbe28..b116386cec 100644 --- a/keyboards/kinesis/keymaps/default/keymap.c +++ b/keyboards/kinesis/keymaps/default/keymap.c @@ -40,7 +40,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL,KC_LALT, KC_HOME, KC_BSPC,KC_DEL ,KC_END , - KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,KC_PSCR ,KC_SLCK ,KC_PAUS, KC_FN0, KC_1, + KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,KC_PSCR ,KC_SLCK ,KC_PAUS, KC_FN0, RESET, KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_MINS, KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_BSLS, KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN,KC_QUOT, diff --git a/keyboards/kinesis/keymaps/default_pretty/keymap.c b/keyboards/kinesis/keymaps/default_pretty/keymap.c index 3d2a538a2e..d5cb690710 100644 --- a/keyboards/kinesis/keymaps/default_pretty/keymap.c +++ b/keyboards/kinesis/keymaps/default_pretty/keymap.c @@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [QWERTY] = LAYOUT_pretty( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_FN0, KC_1, + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_FN0, RESET, KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, diff --git a/keyboards/kinesis/keymaps/dvorak/keymap.c b/keyboards/kinesis/keymaps/dvorak/keymap.c index ff67eb9fc7..3c532628ef 100644 --- a/keyboards/kinesis/keymaps/dvorak/keymap.c +++ b/keyboards/kinesis/keymaps/dvorak/keymap.c @@ -17,7 +17,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_HOME, KC_BSPC, KC_DEL, KC_END, // right hand - KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_FN0, KC_1, + KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_FN0, RESET, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_D, KC_H, KC_T, KC_N, KC_S, KC_BSLS, From 59c8672f5c09ae078162beb836032482c79c4b93 Mon Sep 17 00:00:00 2001 From: James Young <18669334+noroadsleft@users.noreply.github.com> Date: Fri, 2 Apr 2021 23:20:11 -0700 Subject: [PATCH 175/613] kingly_keys/ave: move RGBLight config to keyboard level (#12457) QMK Configurator's API can't use the RGBLight configurator when it's defined at keymap level. --- keyboards/kingly_keys/ave/config.h | 6 ++++++ .../kingly_keys/ave/ortho/keymaps/default/config.h | 12 ------------ .../ave/staggered/keymaps/default/config.h | 12 ------------ 3 files changed, 6 insertions(+), 24 deletions(-) diff --git a/keyboards/kingly_keys/ave/config.h b/keyboards/kingly_keys/ave/config.h index 06fda4c26d..8a663da356 100644 --- a/keyboards/kingly_keys/ave/config.h +++ b/keyboards/kingly_keys/ave/config.h @@ -41,6 +41,12 @@ /* COL2ROW or ROW2COL */ #define DIODE_DIRECTION COL2ROW +#define RGB_DI_PIN B7 +#if defined(RGBLIGHT_ENABLE) +# define RGBLED_NUM 2 +# define RGBLIGHT_EFFECT_BREATHING +#endif + /* Set 0 if debouncing isn't needed */ #define DEBOUNCE 5 diff --git a/keyboards/kingly_keys/ave/ortho/keymaps/default/config.h b/keyboards/kingly_keys/ave/ortho/keymaps/default/config.h index 6fba9d2b9c..204d3236eb 100644 --- a/keyboards/kingly_keys/ave/ortho/keymaps/default/config.h +++ b/keyboards/kingly_keys/ave/ortho/keymaps/default/config.h @@ -18,15 +18,3 @@ #pragma once #define TAPPING_TERM_PER_KEY - -#ifdef RGBLIGHT_ENABLE - /* ws2812 RGB LED */ - #define RGB_DI_PIN B7 - #define RGBLED_NUM 2 // Number of LEDs - - #define RGBLIGHT_EFFECT_BREATHING -/* #define RGBLIGHT_HUE_STEP 6 -* #define RGBLIGHT_SAT_STEP 4 -* #define RGBLIGHT_VAL_STEP 4 -*/ -#endif diff --git a/keyboards/kingly_keys/ave/staggered/keymaps/default/config.h b/keyboards/kingly_keys/ave/staggered/keymaps/default/config.h index 6fba9d2b9c..204d3236eb 100644 --- a/keyboards/kingly_keys/ave/staggered/keymaps/default/config.h +++ b/keyboards/kingly_keys/ave/staggered/keymaps/default/config.h @@ -18,15 +18,3 @@ #pragma once #define TAPPING_TERM_PER_KEY - -#ifdef RGBLIGHT_ENABLE - /* ws2812 RGB LED */ - #define RGB_DI_PIN B7 - #define RGBLED_NUM 2 // Number of LEDs - - #define RGBLIGHT_EFFECT_BREATHING -/* #define RGBLIGHT_HUE_STEP 6 -* #define RGBLIGHT_SAT_STEP 4 -* #define RGBLIGHT_VAL_STEP 4 -*/ -#endif From 4b9f5578a0ec9041292ffd39ce57e457883ecf9e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 3 Apr 2021 20:13:45 +1100 Subject: [PATCH 176/613] [CI] Format code according to conventions (#12468) Co-authored-by: QMK Bot --- .../cb87/keymaps/default/readme.md | 2 +- keyboards/pkb65/info.json | 152 +++++++++--------- 2 files changed, 77 insertions(+), 77 deletions(-) diff --git a/keyboards/cherrybstudio/cb87/keymaps/default/readme.md b/keyboards/cherrybstudio/cb87/keymaps/default/readme.md index 46e2ebc211..75b731fa17 100644 --- a/keyboards/cherrybstudio/cb87/keymaps/default/readme.md +++ b/keyboards/cherrybstudio/cb87/keymaps/default/readme.md @@ -1 +1 @@ -# The default keymap for CB87 +# The default keymap for CB87 diff --git a/keyboards/pkb65/info.json b/keyboards/pkb65/info.json index e21010015d..0c0877e3dc 100644 --- a/keyboards/pkb65/info.json +++ b/keyboards/pkb65/info.json @@ -1,77 +1,77 @@ -{ - "keyboard_name": "PKB65", - "url": "", - "maintainer": "qmk", - "width": 16, - "height": 5, - "layouts": { - "LAYOUT": { - "layout": [ - {"label":"Esc", "x":0, "y":0}, - {"label":"!", "x":1, "y":0}, - {"label":"@", "x":2, "y":0}, - {"label":"#", "x":3, "y":0}, - {"label":"$", "x":4, "y":0}, - {"label":"%", "x":5, "y":0}, - {"label":"^", "x":6, "y":0}, - {"label":"&", "x":7, "y":0}, - {"label":"*", "x":8, "y":0}, - {"label":"(", "x":9, "y":0}, - {"label":")", "x":10, "y":0}, - {"label":"_", "x":11, "y":0}, - {"label":"+", "x":12, "y":0}, - {"label":"Backspace", "x":13, "y":0, "w":2}, - {"label":"Tab", "x":0, "y":1, "w":1.5}, - {"label":"Q", "x":1.5, "y":1}, - {"label":"W", "x":2.5, "y":1}, - {"label":"E", "x":3.5, "y":1}, - {"label":"R", "x":4.5, "y":1}, - {"label":"T", "x":5.5, "y":1}, - {"label":"Y", "x":6.5, "y":1}, - {"label":"U", "x":7.5, "y":1}, - {"label":"I", "x":8.5, "y":1}, - {"label":"O", "x":9.5, "y":1}, - {"label":"P", "x":10.5, "y":1}, - {"label":"{", "x":11.5, "y":1}, - {"label":"}", "x":12.5, "y":1}, - {"label":"|", "x":13.5, "y":1, "w":1.5}, - {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, - {"label":"A", "x":1.75, "y":2}, - {"label":"S", "x":2.75, "y":2}, - {"label":"D", "x":3.75, "y":2}, - {"label":"F", "x":4.75, "y":2}, - {"label":"G", "x":5.75, "y":2}, - {"label":"H", "x":6.75, "y":2}, - {"label":"J", "x":7.75, "y":2}, - {"label":"K", "x":8.75, "y":2}, - {"label":"L", "x":9.75, "y":2}, - {"label":":", "x":10.75, "y":2}, - {"label":"\"", "x":11.75, "y":2}, - {"label":"Enter", "x":12.75, "y":2, "w":2.25}, - {"label":"Delete", "x":15, "y":2}, - {"label":"Shift", "x":0, "y":3, "w":2.25}, - {"label":"Z", "x":2.25, "y":3}, - {"label":"X", "x":3.25, "y":3}, - {"label":"C", "x":4.25, "y":3}, - {"label":"V", "x":5.25, "y":3}, - {"label":"B", "x":6.25, "y":3}, - {"label":"N", "x":7.25, "y":3}, - {"label":"M", "x":8.25, "y":3}, - {"label":"<", "x":9.25, "y":3}, - {"label":">", "x":10.25, "y":3}, - {"label":"?", "x":11.25, "y":3}, - {"label":"Shift", "x":12.25, "y":3, "w":1.75}, - {"label":"\u2191", "x":14, "y":3}, - {"label":"PrtSc", "x":15, "y":3}, - {"label":"Ctrl", "x":0, "y":4, "w":1.25}, - {"label":"Win", "x":1.25, "y":4, "w":1.25}, - {"label":"Alt", "x":2.5, "y":4, "w":1.25}, - {"x":3.75, "y":4, "w":6.25}, - {"label":"Alt", "x":10, "y":4, "w":1.25}, - {"label":"Fn", "x":11.25, "y":4, "w":1.25}, - {"label":"\u2190", "x":13, "y":4}, - {"label":"\u2193", "x":14, "y":4}, - {"label":"\u2192", "x":15, "y":4}] - } - } +{ + "keyboard_name": "PKB65", + "url": "", + "maintainer": "qmk", + "width": 16, + "height": 5, + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"!", "x":1, "y":0}, + {"label":"@", "x":2, "y":0}, + {"label":"#", "x":3, "y":0}, + {"label":"$", "x":4, "y":0}, + {"label":"%", "x":5, "y":0}, + {"label":"^", "x":6, "y":0}, + {"label":"&", "x":7, "y":0}, + {"label":"*", "x":8, "y":0}, + {"label":"(", "x":9, "y":0}, + {"label":")", "x":10, "y":0}, + {"label":"_", "x":11, "y":0}, + {"label":"+", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"{", "x":11.5, "y":1}, + {"label":"}", "x":12.5, "y":1}, + {"label":"|", "x":13.5, "y":1, "w":1.5}, + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":":", "x":10.75, "y":2}, + {"label":"\"", "x":11.75, "y":2}, + {"label":"Enter", "x":12.75, "y":2, "w":2.25}, + {"label":"Delete", "x":15, "y":2}, + {"label":"Shift", "x":0, "y":3, "w":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":"<", "x":9.25, "y":3}, + {"label":">", "x":10.25, "y":3}, + {"label":"?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"\u2191", "x":14, "y":3}, + {"label":"PrtSc", "x":15, "y":3}, + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"Win", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"label":"Alt", "x":10, "y":4, "w":1.25}, + {"label":"Fn", "x":11.25, "y":4, "w":1.25}, + {"label":"\u2190", "x":13, "y":4}, + {"label":"\u2193", "x":14, "y":4}, + {"label":"\u2192", "x":15, "y":4}] + } + } } \ No newline at end of file From 7d33d1bace66f1d9c6dbe3860d4bed651025e580 Mon Sep 17 00:00:00 2001 From: kb-elmo Date: Sat, 3 Apr 2021 15:51:21 +0200 Subject: [PATCH 177/613] Added Epoch80 (#12307) --- keyboards/epoch80/config.h | 47 ++ keyboards/epoch80/epoch80.c | 17 + keyboards/epoch80/epoch80.h | 157 +++++ keyboards/epoch80/info.json | 736 +++++++++++++++++++++ keyboards/epoch80/keymaps/default/keymap.c | 36 + keyboards/epoch80/keymaps/iso/keymap.c | 36 + keyboards/epoch80/keymaps/tsangan/keymap.c | 36 + keyboards/epoch80/keymaps/via/keymap.c | 52 ++ keyboards/epoch80/keymaps/via/rules.mk | 1 + keyboards/epoch80/keymaps/wkl/keymap.c | 36 + keyboards/epoch80/readme.md | 20 + keyboards/epoch80/rules.mk | 24 + 12 files changed, 1198 insertions(+) create mode 100644 keyboards/epoch80/config.h create mode 100644 keyboards/epoch80/epoch80.c create mode 100644 keyboards/epoch80/epoch80.h create mode 100644 keyboards/epoch80/info.json create mode 100644 keyboards/epoch80/keymaps/default/keymap.c create mode 100644 keyboards/epoch80/keymaps/iso/keymap.c create mode 100644 keyboards/epoch80/keymaps/tsangan/keymap.c create mode 100644 keyboards/epoch80/keymaps/via/keymap.c create mode 100644 keyboards/epoch80/keymaps/via/rules.mk create mode 100644 keyboards/epoch80/keymaps/wkl/keymap.c create mode 100644 keyboards/epoch80/readme.md create mode 100644 keyboards/epoch80/rules.mk diff --git a/keyboards/epoch80/config.h b/keyboards/epoch80/config.h new file mode 100644 index 0000000000..ba79c4c26c --- /dev/null +++ b/keyboards/epoch80/config.h @@ -0,0 +1,47 @@ +/* +Copyright 2021 kb-elmo + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x6463 +#define PRODUCT_ID 0x0000 +#define DEVICE_VER 0x0001 +#define MANUFACTURER caryworks +#define PRODUCT epoch80 + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 17 + +/* Keyboard Matrix Assignments */ +#define MATRIX_ROW_PINS { D1, D0, B3, B0, B2, B1 } +#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D4, D6, D2, D3, D5 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Indicator LEDs */ +#define LED_CAPS_LOCK_PIN E6 +#define LED_SCROLL_LOCK_PIN B7 +#define LED_PIN_ON_STATE 0 + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 diff --git a/keyboards/epoch80/epoch80.c b/keyboards/epoch80/epoch80.c new file mode 100644 index 0000000000..43aa6ee8c9 --- /dev/null +++ b/keyboards/epoch80/epoch80.c @@ -0,0 +1,17 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "epoch80.h" diff --git a/keyboards/epoch80/epoch80.h b/keyboards/epoch80/epoch80.h new file mode 100644 index 0000000000..a21623b1c9 --- /dev/null +++ b/keyboards/epoch80/epoch80.h @@ -0,0 +1,157 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define ____ KC_NO + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT_all( \ + k000, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, k016, \ + k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k314, k114, k115, k116, \ + k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k214, k215, k216, \ + k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k313, \ + k400, k401, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, k413, k415, \ + k500, k501, k502, k506, k510, k511, k512, k513, k514, k515, k516 \ +) { \ + { k000, ____, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, k016, }, \ + { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, k115, k116, }, \ + { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k214, k215, k216, }, \ + { k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, ____, k313, k314, ____, ____, }, \ + { k400, k401, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, k413, ____, k415, ____, }, \ + { k500, k501, k502, ____, ____, ____, k506, ____, ____, ____, k510, k511, k512, k513, k514, k515, k516, } \ +} + +#define LAYOUT_tkl_ansi( \ + k000, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, k016, \ + k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, k115, k116, \ + k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k214, k215, k216, \ + k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k313, \ + k400, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, k415, \ + k500, k501, k502, k506, k510, k511, k512, k513, k514, k515, k516 \ +) { \ + { k000, ____, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, k016, }, \ + { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, k115, k116, }, \ + { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k214, k215, k216, }, \ + { k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, ____, k313, ____, ____, ____, }, \ + { k400, ____, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, ____, ____, k415, ____, }, \ + { k500, k501, k502, ____, ____, ____, k506, ____, ____, ____, k510, k511, k512, k513, k514, k515, k516, } \ +} + +#define LAYOUT_tkl_ansi_splitbs( \ + k000, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, k016, \ + k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k314, k114, k115, k116, \ + k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k214, k215, k216, \ + k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k313, \ + k400, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, k415, \ + k500, k501, k502, k506, k510, k511, k512, k513, k514, k515, k516 \ +) { \ + { k000, ____, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, k016, }, \ + { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, k115, k116, }, \ + { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k214, k215, k216, }, \ + { k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, ____, k313, k314, ____, ____, }, \ + { k400, ____, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, ____, ____, k415, ____, }, \ + { k500, k501, k502, ____, ____, ____, k506, ____, ____, ____, k510, k511, k512, k513, k514, k515, k516, } \ +} + +#define LAYOUT_tkl_ansi_tsangan( \ + k000, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, k016, \ + k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, k115, k116, \ + k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k214, k215, k216, \ + k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k313, \ + k400, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, k415, \ + k500, k501, k502, k506, k511, k512, k513, k514, k515, k516 \ +) { \ + { k000, ____, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, k016, }, \ + { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, k115, k116, }, \ + { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k214, k215, k216, }, \ + { k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, ____, k313, ____, ____, ____, }, \ + { k400, ____, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, ____, ____, k415, ____, }, \ + { k500, k501, k502, ____, ____, ____, k506, ____, ____, ____, ____, k511, k512, k513, k514, k515, k516, } \ +} + +#define LAYOUT_tkl_ansi_tsangan_splitbs( \ + k000, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, k016, \ + k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k314, k114, k115, k116, \ + k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k214, k215, k216, \ + k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k313, \ + k400, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, k415, \ + k500, k501, k502, k506, k511, k512, k513, k514, k515, k516 \ +) { \ + { k000, ____, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, k016, }, \ + { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, k115, k116, }, \ + { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k214, k215, k216, }, \ + { k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, ____, k313, k314, ____, ____, }, \ + { k400, ____, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, ____, ____, k415, ____, }, \ + { k500, k501, k502, ____, ____, ____, k506, ____, ____, ____, ____, k511, k512, k513, k514, k515, k516, } \ +} + +#define LAYOUT_tkl_ansi_wkl( \ + k000, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, k016, \ + k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, k115, k116, \ + k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k214, k215, k216, \ + k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k313, \ + k400, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, k415, \ + k500, k502, k506, k511, k513, k514, k515, k516 \ +) { \ + { k000, ____, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, k016, }, \ + { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, k115, k116, }, \ + { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k214, k215, k216, }, \ + { k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, ____, k313, ____, ____, ____, }, \ + { k400, ____, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, ____, ____, k415, ____, }, \ + { k500, ____, k502, ____, ____, ____, k506, ____, ____, ____, ____, k511, ____, k513, k514, k515, k516, } \ +} + +#define LAYOUT_tkl_ansi_wkl_splitbs( \ + k000, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, k016, \ + k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k314, k114, k115, k116, \ + k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k214, k215, k216, \ + k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k313, \ + k400, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, k415, \ + k500, k502, k506, k511, k513, k514, k515, k516 \ +) { \ + { k000, ____, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, k016, }, \ + { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, k115, k116, }, \ + { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k214, k215, k216, }, \ + { k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, ____, k313, k314, ____, ____, }, \ + { k400, ____, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, ____, ____, k415, ____, }, \ + { k500, ____, k502, ____, ____, ____, k506, ____, ____, ____, ____, k511, ____, k513, k514, k515, k516, } \ +} + +#define LAYOUT_tkl_iso( \ + k000, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, k016, \ + k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, k115, k116, \ + k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k214, k215, k216, \ + k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k213, k313, \ + k400, k401, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, k415, \ + k500, k501, k502, k506, k510, k511, k512, k513, k514, k515, k516 \ +) { \ + { k000, ____, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, k016, }, \ + { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, k115, k116, }, \ + { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k214, k215, k216, }, \ + { k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, ____, k313, ____, ____, ____, }, \ + { k400, k401, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, ____, ____, k415, ____, }, \ + { k500, k501, k502, ____, ____, ____, k506, ____, ____, ____, k510, k511, k512, k513, k514, k515, k516, } \ +} diff --git a/keyboards/epoch80/info.json b/keyboards/epoch80/info.json new file mode 100644 index 0000000000..eaf99df698 --- /dev/null +++ b/keyboards/epoch80/info.json @@ -0,0 +1,736 @@ +{ + "keyboard_name": "epoch80", + "url": "https://kbdfans.com/collections/80-diy-kit/products/coming-soon-epoch-80-mechanical-keyboard", + "maintainer": "kb-elmo", + "width": 18.5, + "height": 6.5, + "layouts": { + "LAYOUT_all": { + "layout": [ + {"x":0, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.5, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15.5, "y":0}, + {"x":16.5, "y":0}, + {"x":17.5, "y":0}, + {"x":0, "y":1.5}, + {"x":1, "y":1.5}, + {"x":2, "y":1.5}, + {"x":3, "y":1.5}, + {"x":4, "y":1.5}, + {"x":5, "y":1.5}, + {"x":6, "y":1.5}, + {"x":7, "y":1.5}, + {"x":8, "y":1.5}, + {"x":9, "y":1.5}, + {"x":10, "y":1.5}, + {"x":11, "y":1.5}, + {"x":12, "y":1.5}, + {"x":13, "y":1.5}, + {"x":14, "y":1.5}, + {"x":15.5, "y":1.5}, + {"x":16.5, "y":1.5}, + {"x":17.5, "y":1.5}, + {"x":0, "y":2.5, "w":1.5}, + {"x":1.5, "y":2.5}, + {"x":2.5, "y":2.5}, + {"x":3.5, "y":2.5}, + {"x":4.5, "y":2.5}, + {"x":5.5, "y":2.5}, + {"x":6.5, "y":2.5}, + {"x":7.5, "y":2.5}, + {"x":8.5, "y":2.5}, + {"x":9.5, "y":2.5}, + {"x":10.5, "y":2.5}, + {"x":11.5, "y":2.5}, + {"x":12.5, "y":2.5}, + {"x":13.5, "y":2.5, "w":1.5}, + {"x":15.5, "y":2.5}, + {"x":16.5, "y":2.5}, + {"x":17.5, "y":2.5}, + {"x":0, "y":3.5, "w":1.75}, + {"x":1.75, "y":3.5}, + {"x":2.75, "y":3.5}, + {"x":3.75, "y":3.5}, + {"x":4.75, "y":3.5}, + {"x":5.75, "y":3.5}, + {"x":6.75, "y":3.5}, + {"x":7.75, "y":3.5}, + {"x":8.75, "y":3.5}, + {"x":9.75, "y":3.5}, + {"x":10.75, "y":3.5}, + {"x":11.75, "y":3.5}, + {"x":12.75, "y":3.5, "w":2.25}, + {"x":0, "y":4.5, "w":1.25}, + {"x":1.25, "y":4.5}, + {"x":2.25, "y":4.5}, + {"x":3.25, "y":4.5}, + {"x":4.25, "y":4.5}, + {"x":5.25, "y":4.5}, + {"x":6.25, "y":4.5}, + {"x":7.25, "y":4.5}, + {"x":8.25, "y":4.5}, + {"x":9.25, "y":4.5}, + {"x":10.25, "y":4.5}, + {"x":11.25, "y":4.5}, + {"x":12.25, "y":4.5, "w":1.75}, + {"x":14, "y":4.5}, + {"x":16.5, "y":4.5}, + {"x":0, "y":5.5, "w":1.25}, + {"x":1.25, "y":5.5, "w":1.25}, + {"x":2.5, "y":5.5, "w":1.25}, + {"x":3.75, "y":5.5, "w":6.25}, + {"x":10, "y":5.5, "w":1.25}, + {"x":11.25, "y":5.5, "w":1.25}, + {"x":12.5, "y":5.5, "w":1.25}, + {"x":13.75, "y":5.5, "w":1.25}, + {"x":15.5, "y":5.5}, + {"x":16.5, "y":5.5}, + {"x":17.5, "y":5.5} + ] + }, + "LAYOUT_tkl_ansi": { + "layout": [ + {"x":0, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.5, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15.5, "y":0}, + {"x":16.5, "y":0}, + {"x":17.5, "y":0}, + {"x":0, "y":1.5}, + {"x":1, "y":1.5}, + {"x":2, "y":1.5}, + {"x":3, "y":1.5}, + {"x":4, "y":1.5}, + {"x":5, "y":1.5}, + {"x":6, "y":1.5}, + {"x":7, "y":1.5}, + {"x":8, "y":1.5}, + {"x":9, "y":1.5}, + {"x":10, "y":1.5}, + {"x":11, "y":1.5}, + {"x":12, "y":1.5}, + {"x":13, "y":1.5, "w":2}, + {"x":15.5, "y":1.5}, + {"x":16.5, "y":1.5}, + {"x":17.5, "y":1.5}, + {"x":0, "y":2.5, "w":1.5}, + {"x":1.5, "y":2.5}, + {"x":2.5, "y":2.5}, + {"x":3.5, "y":2.5}, + {"x":4.5, "y":2.5}, + {"x":5.5, "y":2.5}, + {"x":6.5, "y":2.5}, + {"x":7.5, "y":2.5}, + {"x":8.5, "y":2.5}, + {"x":9.5, "y":2.5}, + {"x":10.5, "y":2.5}, + {"x":11.5, "y":2.5}, + {"x":12.5, "y":2.5}, + {"x":13.5, "y":2.5, "w":1.5}, + {"x":15.5, "y":2.5}, + {"x":16.5, "y":2.5}, + {"x":17.5, "y":2.5}, + {"x":0, "y":3.5, "w":1.75}, + {"x":1.75, "y":3.5}, + {"x":2.75, "y":3.5}, + {"x":3.75, "y":3.5}, + {"x":4.75, "y":3.5}, + {"x":5.75, "y":3.5}, + {"x":6.75, "y":3.5}, + {"x":7.75, "y":3.5}, + {"x":8.75, "y":3.5}, + {"x":9.75, "y":3.5}, + {"x":10.75, "y":3.5}, + {"x":11.75, "y":3.5}, + {"x":12.75, "y":3.5, "w":2.25}, + {"x":0, "y":4.5, "w":2.25}, + {"x":2.25, "y":4.5}, + {"x":3.25, "y":4.5}, + {"x":4.25, "y":4.5}, + {"x":5.25, "y":4.5}, + {"x":6.25, "y":4.5}, + {"x":7.25, "y":4.5}, + {"x":8.25, "y":4.5}, + {"x":9.25, "y":4.5}, + {"x":10.25, "y":4.5}, + {"x":11.25, "y":4.5}, + {"x":12.25, "y":4.5, "w":2.75}, + {"x":16.5, "y":4.5}, + {"x":0, "y":5.5, "w":1.25}, + {"x":1.25, "y":5.5, "w":1.25}, + {"x":2.5, "y":5.5, "w":1.25}, + {"x":3.75, "y":5.5, "w":6.25}, + {"x":10, "y":5.5, "w":1.25}, + {"x":11.25, "y":5.5, "w":1.25}, + {"x":12.5, "y":5.5, "w":1.25}, + {"x":13.75, "y":5.5, "w":1.25}, + {"x":15.5, "y":5.5}, + {"x":16.5, "y":5.5}, + {"x":17.5, "y":5.5} + ] + }, + "LAYOUT_tkl_ansi_splitbs": { + "layout": [ + {"x":0, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.5, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15.5, "y":0}, + {"x":16.5, "y":0}, + {"x":17.5, "y":0}, + {"x":0, "y":1.5}, + {"x":1, "y":1.5}, + {"x":2, "y":1.5}, + {"x":3, "y":1.5}, + {"x":4, "y":1.5}, + {"x":5, "y":1.5}, + {"x":6, "y":1.5}, + {"x":7, "y":1.5}, + {"x":8, "y":1.5}, + {"x":9, "y":1.5}, + {"x":10, "y":1.5}, + {"x":11, "y":1.5}, + {"x":12, "y":1.5}, + {"x":13, "y":1.5}, + {"x":14, "y":1.5}, + {"x":15.5, "y":1.5}, + {"x":16.5, "y":1.5}, + {"x":17.5, "y":1.5}, + {"x":0, "y":2.5, "w":1.5}, + {"x":1.5, "y":2.5}, + {"x":2.5, "y":2.5}, + {"x":3.5, "y":2.5}, + {"x":4.5, "y":2.5}, + {"x":5.5, "y":2.5}, + {"x":6.5, "y":2.5}, + {"x":7.5, "y":2.5}, + {"x":8.5, "y":2.5}, + {"x":9.5, "y":2.5}, + {"x":10.5, "y":2.5}, + {"x":11.5, "y":2.5}, + {"x":12.5, "y":2.5}, + {"x":13.5, "y":2.5, "w":1.5}, + {"x":15.5, "y":2.5}, + {"x":16.5, "y":2.5}, + {"x":17.5, "y":2.5}, + {"x":0, "y":3.5, "w":1.75}, + {"x":1.75, "y":3.5}, + {"x":2.75, "y":3.5}, + {"x":3.75, "y":3.5}, + {"x":4.75, "y":3.5}, + {"x":5.75, "y":3.5}, + {"x":6.75, "y":3.5}, + {"x":7.75, "y":3.5}, + {"x":8.75, "y":3.5}, + {"x":9.75, "y":3.5}, + {"x":10.75, "y":3.5}, + {"x":11.75, "y":3.5}, + {"x":12.75, "y":3.5, "w":2.25}, + {"x":0, "y":4.5, "w":2.25}, + {"x":2.25, "y":4.5}, + {"x":3.25, "y":4.5}, + {"x":4.25, "y":4.5}, + {"x":5.25, "y":4.5}, + {"x":6.25, "y":4.5}, + {"x":7.25, "y":4.5}, + {"x":8.25, "y":4.5}, + {"x":9.25, "y":4.5}, + {"x":10.25, "y":4.5}, + {"x":11.25, "y":4.5}, + {"x":12.25, "y":4.5, "w":2.75}, + {"x":16.5, "y":4.5}, + {"x":0, "y":5.5, "w":1.25}, + {"x":1.25, "y":5.5, "w":1.25}, + {"x":2.5, "y":5.5, "w":1.25}, + {"x":3.75, "y":5.5, "w":6.25}, + {"x":10, "y":5.5, "w":1.25}, + {"x":11.25, "y":5.5, "w":1.25}, + {"x":12.5, "y":5.5, "w":1.25}, + {"x":13.75, "y":5.5, "w":1.25}, + {"x":15.5, "y":5.5}, + {"x":16.5, "y":5.5}, + {"x":17.5, "y":5.5} + ] + }, + "LAYOUT_tkl_ansi_tsangan": { + "layout": [ + {"x":0, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.5, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15.5, "y":0}, + {"x":16.5, "y":0}, + {"x":17.5, "y":0}, + {"x":0, "y":1.5}, + {"x":1, "y":1.5}, + {"x":2, "y":1.5}, + {"x":3, "y":1.5}, + {"x":4, "y":1.5}, + {"x":5, "y":1.5}, + {"x":6, "y":1.5}, + {"x":7, "y":1.5}, + {"x":8, "y":1.5}, + {"x":9, "y":1.5}, + {"x":10, "y":1.5}, + {"x":11, "y":1.5}, + {"x":12, "y":1.5}, + {"x":13, "y":1.5, "w":2}, + {"x":15.5, "y":1.5}, + {"x":16.5, "y":1.5}, + {"x":17.5, "y":1.5}, + {"x":0, "y":2.5, "w":1.5}, + {"x":1.5, "y":2.5}, + {"x":2.5, "y":2.5}, + {"x":3.5, "y":2.5}, + {"x":4.5, "y":2.5}, + {"x":5.5, "y":2.5}, + {"x":6.5, "y":2.5}, + {"x":7.5, "y":2.5}, + {"x":8.5, "y":2.5}, + {"x":9.5, "y":2.5}, + {"x":10.5, "y":2.5}, + {"x":11.5, "y":2.5}, + {"x":12.5, "y":2.5}, + {"x":13.5, "y":2.5, "w":1.5}, + {"x":15.5, "y":2.5}, + {"x":16.5, "y":2.5}, + {"x":17.5, "y":2.5}, + {"x":0, "y":3.5, "w":1.75}, + {"x":1.75, "y":3.5}, + {"x":2.75, "y":3.5}, + {"x":3.75, "y":3.5}, + {"x":4.75, "y":3.5}, + {"x":5.75, "y":3.5}, + {"x":6.75, "y":3.5}, + {"x":7.75, "y":3.5}, + {"x":8.75, "y":3.5}, + {"x":9.75, "y":3.5}, + {"x":10.75, "y":3.5}, + {"x":11.75, "y":3.5}, + {"x":12.75, "y":3.5, "w":2.25}, + {"x":0, "y":4.5, "w":2.25}, + {"x":2.25, "y":4.5}, + {"x":3.25, "y":4.5}, + {"x":4.25, "y":4.5}, + {"x":5.25, "y":4.5}, + {"x":6.25, "y":4.5}, + {"x":7.25, "y":4.5}, + {"x":8.25, "y":4.5}, + {"x":9.25, "y":4.5}, + {"x":10.25, "y":4.5}, + {"x":11.25, "y":4.5}, + {"x":12.25, "y":4.5, "w":2.75}, + {"x":16.5, "y":4.5}, + {"x":0, "y":5.5, "w":1.5}, + {"x":1.5, "y":5.5}, + {"x":2.5, "y":5.5, "w":1.5}, + {"x":4, "y":5.5, "w":7}, + {"x":11, "y":5.5, "w":1.5}, + {"x":12.5, "y":5.5}, + {"x":13.5, "y":5.5, "w":1.5}, + {"x":15.5, "y":5.5}, + {"x":16.5, "y":5.5}, + {"x":17.5, "y":5.5} + ] + }, + "LAYOUT_tkl_ansi_tsangan_splitbs": { + "layout": [ + {"x":0, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.5, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15.5, "y":0}, + {"x":16.5, "y":0}, + {"x":17.5, "y":0}, + {"x":0, "y":1.5}, + {"x":1, "y":1.5}, + {"x":2, "y":1.5}, + {"x":3, "y":1.5}, + {"x":4, "y":1.5}, + {"x":5, "y":1.5}, + {"x":6, "y":1.5}, + {"x":7, "y":1.5}, + {"x":8, "y":1.5}, + {"x":9, "y":1.5}, + {"x":10, "y":1.5}, + {"x":11, "y":1.5}, + {"x":12, "y":1.5}, + {"x":13, "y":1.5}, + {"x":14, "y":1.5}, + {"x":15.5, "y":1.5}, + {"x":16.5, "y":1.5}, + {"x":17.5, "y":1.5}, + {"x":0, "y":2.5, "w":1.5}, + {"x":1.5, "y":2.5}, + {"x":2.5, "y":2.5}, + {"x":3.5, "y":2.5}, + {"x":4.5, "y":2.5}, + {"x":5.5, "y":2.5}, + {"x":6.5, "y":2.5}, + {"x":7.5, "y":2.5}, + {"x":8.5, "y":2.5}, + {"x":9.5, "y":2.5}, + {"x":10.5, "y":2.5}, + {"x":11.5, "y":2.5}, + {"x":12.5, "y":2.5}, + {"x":13.5, "y":2.5, "w":1.5}, + {"x":15.5, "y":2.5}, + {"x":16.5, "y":2.5}, + {"x":17.5, "y":2.5}, + {"x":0, "y":3.5, "w":1.75}, + {"x":1.75, "y":3.5}, + {"x":2.75, "y":3.5}, + {"x":3.75, "y":3.5}, + {"x":4.75, "y":3.5}, + {"x":5.75, "y":3.5}, + {"x":6.75, "y":3.5}, + {"x":7.75, "y":3.5}, + {"x":8.75, "y":3.5}, + {"x":9.75, "y":3.5}, + {"x":10.75, "y":3.5}, + {"x":11.75, "y":3.5}, + {"x":12.75, "y":3.5, "w":2.25}, + {"x":0, "y":4.5, "w":2.25}, + {"x":2.25, "y":4.5}, + {"x":3.25, "y":4.5}, + {"x":4.25, "y":4.5}, + {"x":5.25, "y":4.5}, + {"x":6.25, "y":4.5}, + {"x":7.25, "y":4.5}, + {"x":8.25, "y":4.5}, + {"x":9.25, "y":4.5}, + {"x":10.25, "y":4.5}, + {"x":11.25, "y":4.5}, + {"x":12.25, "y":4.5, "w":2.75}, + {"x":16.5, "y":4.5}, + {"x":0, "y":5.5, "w":1.5}, + {"x":1.5, "y":5.5}, + {"x":2.5, "y":5.5, "w":1.5}, + {"x":4, "y":5.5, "w":7}, + {"x":11, "y":5.5, "w":1.5}, + {"x":12.5, "y":5.5}, + {"x":13.5, "y":5.5, "w":1.5}, + {"x":15.5, "y":5.5}, + {"x":16.5, "y":5.5}, + {"x":17.5, "y":5.5} + ] + }, + "LAYOUT_tkl_ansi_wkl": { + "layout": [ + {"x":0, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.5, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15.5, "y":0}, + {"x":16.5, "y":0}, + {"x":17.5, "y":0}, + {"x":0, "y":1.5}, + {"x":1, "y":1.5}, + {"x":2, "y":1.5}, + {"x":3, "y":1.5}, + {"x":4, "y":1.5}, + {"x":5, "y":1.5}, + {"x":6, "y":1.5}, + {"x":7, "y":1.5}, + {"x":8, "y":1.5}, + {"x":9, "y":1.5}, + {"x":10, "y":1.5}, + {"x":11, "y":1.5}, + {"x":12, "y":1.5}, + {"x":13, "y":1.5, "w":2}, + {"x":15.5, "y":1.5}, + {"x":16.5, "y":1.5}, + {"x":17.5, "y":1.5}, + {"x":0, "y":2.5, "w":1.5}, + {"x":1.5, "y":2.5}, + {"x":2.5, "y":2.5}, + {"x":3.5, "y":2.5}, + {"x":4.5, "y":2.5}, + {"x":5.5, "y":2.5}, + {"x":6.5, "y":2.5}, + {"x":7.5, "y":2.5}, + {"x":8.5, "y":2.5}, + {"x":9.5, "y":2.5}, + {"x":10.5, "y":2.5}, + {"x":11.5, "y":2.5}, + {"x":12.5, "y":2.5}, + {"x":13.5, "y":2.5, "w":1.5}, + {"x":15.5, "y":2.5}, + {"x":16.5, "y":2.5}, + {"x":17.5, "y":2.5}, + {"x":0, "y":3.5, "w":1.75}, + {"x":1.75, "y":3.5}, + {"x":2.75, "y":3.5}, + {"x":3.75, "y":3.5}, + {"x":4.75, "y":3.5}, + {"x":5.75, "y":3.5}, + {"x":6.75, "y":3.5}, + {"x":7.75, "y":3.5}, + {"x":8.75, "y":3.5}, + {"x":9.75, "y":3.5}, + {"x":10.75, "y":3.5}, + {"x":11.75, "y":3.5}, + {"x":12.75, "y":3.5, "w":2.25}, + {"x":0, "y":4.5, "w":2.25}, + {"x":2.25, "y":4.5}, + {"x":3.25, "y":4.5}, + {"x":4.25, "y":4.5}, + {"x":5.25, "y":4.5}, + {"x":6.25, "y":4.5}, + {"x":7.25, "y":4.5}, + {"x":8.25, "y":4.5}, + {"x":9.25, "y":4.5}, + {"x":10.25, "y":4.5}, + {"x":11.25, "y":4.5}, + {"x":12.25, "y":4.5, "w":2.75}, + {"x":16.5, "y":4.5}, + {"x":0, "y":5.5, "w":1.5}, + {"x":2.5, "y":5.5, "w":1.5}, + {"x":4, "y":5.5, "w":7}, + {"x":11, "y":5.5, "w":1.5}, + {"x":13.5, "y":5.5, "w":1.5}, + {"x":15.5, "y":5.5}, + {"x":16.5, "y":5.5}, + {"x":17.5, "y":5.5} + ] + }, + "LAYOUT_tkl_ansi_wkl_splitbs": { + "layout": [ + {"x":0, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.5, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15.5, "y":0}, + {"x":16.5, "y":0}, + {"x":17.5, "y":0}, + {"x":0, "y":1.5}, + {"x":1, "y":1.5}, + {"x":2, "y":1.5}, + {"x":3, "y":1.5}, + {"x":4, "y":1.5}, + {"x":5, "y":1.5}, + {"x":6, "y":1.5}, + {"x":7, "y":1.5}, + {"x":8, "y":1.5}, + {"x":9, "y":1.5}, + {"x":10, "y":1.5}, + {"x":11, "y":1.5}, + {"x":12, "y":1.5}, + {"x":13, "y":1.5}, + {"x":14, "y":1.5}, + {"x":15.5, "y":1.5}, + {"x":16.5, "y":1.5}, + {"x":17.5, "y":1.5}, + {"x":0, "y":2.5, "w":1.5}, + {"x":1.5, "y":2.5}, + {"x":2.5, "y":2.5}, + {"x":3.5, "y":2.5}, + {"x":4.5, "y":2.5}, + {"x":5.5, "y":2.5}, + {"x":6.5, "y":2.5}, + {"x":7.5, "y":2.5}, + {"x":8.5, "y":2.5}, + {"x":9.5, "y":2.5}, + {"x":10.5, "y":2.5}, + {"x":11.5, "y":2.5}, + {"x":12.5, "y":2.5}, + {"x":13.5, "y":2.5, "w":1.5}, + {"x":15.5, "y":2.5}, + {"x":16.5, "y":2.5}, + {"x":17.5, "y":2.5}, + {"x":0, "y":3.5, "w":1.75}, + {"x":1.75, "y":3.5}, + {"x":2.75, "y":3.5}, + {"x":3.75, "y":3.5}, + {"x":4.75, "y":3.5}, + {"x":5.75, "y":3.5}, + {"x":6.75, "y":3.5}, + {"x":7.75, "y":3.5}, + {"x":8.75, "y":3.5}, + {"x":9.75, "y":3.5}, + {"x":10.75, "y":3.5}, + {"x":11.75, "y":3.5}, + {"x":12.75, "y":3.5, "w":2.25}, + {"x":0, "y":4.5, "w":2.25}, + {"x":2.25, "y":4.5}, + {"x":3.25, "y":4.5}, + {"x":4.25, "y":4.5}, + {"x":5.25, "y":4.5}, + {"x":6.25, "y":4.5}, + {"x":7.25, "y":4.5}, + {"x":8.25, "y":4.5}, + {"x":9.25, "y":4.5}, + {"x":10.25, "y":4.5}, + {"x":11.25, "y":4.5}, + {"x":12.25, "y":4.5, "w":2.75}, + {"x":16.5, "y":4.5}, + {"x":0, "y":5.5, "w":1.5}, + {"x":2.5, "y":5.5, "w":1.5}, + {"x":4, "y":5.5, "w":7}, + {"x":11, "y":5.5, "w":1.5}, + {"x":13.5, "y":5.5, "w":1.5}, + {"x":15.5, "y":5.5}, + {"x":16.5, "y":5.5}, + {"x":17.5, "y":5.5} + ] + }, + "LAYOUT_tkl_iso": { + "layout": [ + {"x":0, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.5, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15.5, "y":0}, + {"x":16.5, "y":0}, + {"x":17.5, "y":0}, + {"x":0, "y":1.5}, + {"x":1, "y":1.5}, + {"x":2, "y":1.5}, + {"x":3, "y":1.5}, + {"x":4, "y":1.5}, + {"x":5, "y":1.5}, + {"x":6, "y":1.5}, + {"x":7, "y":1.5}, + {"x":8, "y":1.5}, + {"x":9, "y":1.5}, + {"x":10, "y":1.5}, + {"x":11, "y":1.5}, + {"x":12, "y":1.5}, + {"x":13, "y":1.5, "w":2}, + {"x":15.5, "y":1.5}, + {"x":16.5, "y":1.5}, + {"x":17.5, "y":1.5}, + {"x":0, "y":2.5, "w":1.5}, + {"x":1.5, "y":2.5}, + {"x":2.5, "y":2.5}, + {"x":3.5, "y":2.5}, + {"x":4.5, "y":2.5}, + {"x":5.5, "y":2.5}, + {"x":6.5, "y":2.5}, + {"x":7.5, "y":2.5}, + {"x":8.5, "y":2.5}, + {"x":9.5, "y":2.5}, + {"x":10.5, "y":2.5}, + {"x":11.5, "y":2.5}, + {"x":12.5, "y":2.5}, + {"x":13.75, "y":2.5, "w":1.25, "h":2}, + {"x":15.5, "y":2.5}, + {"x":16.5, "y":2.5}, + {"x":17.5, "y":2.5}, + {"x":0, "y":3.5, "w":1.75}, + {"x":1.75, "y":3.5}, + {"x":2.75, "y":3.5}, + {"x":3.75, "y":3.5}, + {"x":4.75, "y":3.5}, + {"x":5.75, "y":3.5}, + {"x":6.75, "y":3.5}, + {"x":7.75, "y":3.5}, + {"x":8.75, "y":3.5}, + {"x":9.75, "y":3.5}, + {"x":10.75, "y":3.5}, + {"x":11.75, "y":3.5}, + {"x":12.75, "y":3.5}, + {"x":0, "y":4.5, "w":1.25}, + {"x":1.25, "y":4.5}, + {"x":2.25, "y":4.5}, + {"x":3.25, "y":4.5}, + {"x":4.25, "y":4.5}, + {"x":5.25, "y":4.5}, + {"x":6.25, "y":4.5}, + {"x":7.25, "y":4.5}, + {"x":8.25, "y":4.5}, + {"x":9.25, "y":4.5}, + {"x":10.25, "y":4.5}, + {"x":11.25, "y":4.5}, + {"x":12.25, "y":4.5, "w":2.75}, + {"x":16.5, "y":4.5}, + {"x":0, "y":5.5, "w":1.25}, + {"x":1.25, "y":5.5, "w":1.25}, + {"x":2.5, "y":5.5, "w":1.25}, + {"x":3.75, "y":5.5, "w":6.25}, + {"x":10, "y":5.5, "w":1.25}, + {"x":11.25, "y":5.5, "w":1.25}, + {"x":12.5, "y":5.5, "w":1.25}, + {"x":13.75, "y":5.5, "w":1.25}, + {"x":15.5, "y":5.5}, + {"x":16.5, "y":5.5}, + {"x":17.5, "y":5.5} + ] + } + } +} diff --git a/keyboards/epoch80/keymaps/default/keymap.c b/keyboards/epoch80/keymaps/default/keymap.c new file mode 100644 index 0000000000..76ac04d1b5 --- /dev/null +++ b/keyboards/epoch80/keymaps/default/keymap.c @@ -0,0 +1,36 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_tkl_ansi( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_tkl_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_TOGG, BL_DEC, BL_INC, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MNXT, KC_VOLD, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/epoch80/keymaps/iso/keymap.c b/keyboards/epoch80/keymaps/iso/keymap.c new file mode 100644 index 0000000000..dcf43d76e1 --- /dev/null +++ b/keyboards/epoch80/keymaps/iso/keymap.c @@ -0,0 +1,36 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_tkl_iso( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_tkl_iso( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_TOGG, BL_DEC, BL_INC, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MNXT, KC_VOLD, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/epoch80/keymaps/tsangan/keymap.c b/keyboards/epoch80/keymaps/tsangan/keymap.c new file mode 100644 index 0000000000..a0595a0d77 --- /dev/null +++ b/keyboards/epoch80/keymaps/tsangan/keymap.c @@ -0,0 +1,36 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_tkl_ansi_tsangan( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_tkl_ansi_tsangan( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_TOGG, BL_DEC, BL_INC, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MNXT, KC_VOLD, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/epoch80/keymaps/via/keymap.c b/keyboards/epoch80/keymaps/via/keymap.c new file mode 100644 index 0000000000..cf2aeb3ca9 --- /dev/null +++ b/keyboards/epoch80/keymaps/via/keymap.c @@ -0,0 +1,52 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MNXT, KC_VOLD, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/epoch80/keymaps/via/rules.mk b/keyboards/epoch80/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/epoch80/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/epoch80/keymaps/wkl/keymap.c b/keyboards/epoch80/keymaps/wkl/keymap.c new file mode 100644 index 0000000000..30b7126908 --- /dev/null +++ b/keyboards/epoch80/keymaps/wkl/keymap.c @@ -0,0 +1,36 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_tkl_ansi_wkl( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_tkl_ansi_wkl( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_TOGG, BL_DEC, BL_INC, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MNXT, KC_VOLD, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/epoch80/readme.md b/keyboards/epoch80/readme.md new file mode 100644 index 0000000000..a78f9ce87b --- /dev/null +++ b/keyboards/epoch80/readme.md @@ -0,0 +1,20 @@ +# Epoch 80 / Dolch.CR 80 + +![epoch80](https://i.imgur.com/xNvEKBOl.png) + +Dolch PAC inspired TKL keyboard designed by Cary Works and made by KBDFans. +The board was also sold in a zFrontier groupbuy under the name Dolch.CR 80. + +* Keyboard Maintainer: [kb-elmo](https://github.com/kb-elmo) +* Hardware Supported: Epoch 80 / Dolch.CR 80 PCB +* Hardware Availability: https://kbdfans.com/collections/80-diy-kit/products/coming-soon-epoch-80-mechanical-keyboard + +Make example for this keyboard (after setting up your build environment): + + make epoch80:default + +Flashing example for this keyboard: + + make epoch80:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/epoch80/rules.mk b/keyboards/epoch80/rules.mk new file mode 100644 index 0000000000..277cde08e2 --- /dev/null +++ b/keyboards/epoch80/rules.mk @@ -0,0 +1,24 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output + +LAYOUTS = tkl_ansi tkl_iso From a3cd1290be8187a34e3c4e156c07531380bfecaa Mon Sep 17 00:00:00 2001 From: TurtleHunter <48608128+TurtleHunter@users.noreply.github.com> Date: Sat, 3 Apr 2021 10:41:54 -0400 Subject: [PATCH 178/613] 3 new LED effect animations (#9827) Co-authored-by: Joel Challis Co-authored-by: Ryan Co-authored-by: Erovia --- docs/feature_rgb_matrix.md | 6 +++++ .../hue_breathing_anim.h | 22 +++++++++++++++++++ .../rgb_matrix_animations/hue_pendulum_anim.h | 17 ++++++++++++++ quantum/rgb_matrix_animations/hue_wave_anim.h | 17 ++++++++++++++ .../rgb_matrix_effects.inc | 3 +++ 5 files changed, 65 insertions(+) create mode 100644 quantum/rgb_matrix_animations/hue_breathing_anim.h create mode 100644 quantum/rgb_matrix_animations/hue_pendulum_anim.h create mode 100644 quantum/rgb_matrix_animations/hue_wave_anim.h diff --git a/docs/feature_rgb_matrix.md b/docs/feature_rgb_matrix.md index 6917de5ab4..e996cadddd 100644 --- a/docs/feature_rgb_matrix.md +++ b/docs/feature_rgb_matrix.md @@ -254,6 +254,9 @@ enum rgb_matrix_effects { RGB_MATRIX_RAINBOW_PINWHEELS, // Full dual gradients spinning two halfs of keyboard RGB_MATRIX_RAINDROPS, // Randomly changes a single key's hue RGB_MATRIX_JELLYBEAN_RAINDROPS, // Randomly changes a single key's hue and saturation + RGB_MATRIX_HUE_BREATHING, // Hue shifts up a slight ammount at the same time, then shifts back + RGB_MATRIX_HUE_PENDULUM, // Hue shifts up a slight ammount in a wave to the right, then back to the left + RGB_MATRIX_HUE_WAVE, // Hue shifts up a slight ammount and then back down in a wave to the right #if define(RGB_MATRIX_FRAMEBUFFER_EFFECTS) RGB_MATRIX_TYPING_HEATMAP, // How hot is your WPM! RGB_MATRIX_DIGITAL_RAIN, // That famous computer simulation @@ -305,6 +308,9 @@ You can disable a single effect by defining `DISABLE_[EFFECT_NAME]` in your `con |`#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS` |Disables `RGB_MATRIX_RAINBOW_PINWHEELS` | |`#define DISABLE_RGB_MATRIX_RAINDROPS` |Disables `RGB_MATRIX_RAINDROPS` | |`#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS` |Disables `RGB_MATRIX_JELLYBEAN_RAINDROPS` | +|`#define DISABLE_RGB_MATRIX_HUE_BREATHING` |Disables `RGB_MATRIX_HUE_BREATHING` | +|`#define DISABLE_RGB_MATRIX_HUE_PENDULUM` |Disables `RGB_MATRIX_HUE_PENDULUM` | +|`#define DISABLE_RGB_MATRIX_HUE_WAVE ` |Disables `RGB_MATRIX_HUE_WAVE ` | |`#define DISABLE_RGB_MATRIX_TYPING_HEATMAP` |Disables `RGB_MATRIX_TYPING_HEATMAP` | |`#define DISABLE_RGB_MATRIX_DIGITAL_RAIN` |Disables `RGB_MATRIX_DIGITAL_RAIN` | |`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE` |Disables `RGB_MATRIX_SOLID_REACTIVE_SIMPLE` | diff --git a/quantum/rgb_matrix_animations/hue_breathing_anim.h b/quantum/rgb_matrix_animations/hue_breathing_anim.h new file mode 100644 index 0000000000..37a6293c70 --- /dev/null +++ b/quantum/rgb_matrix_animations/hue_breathing_anim.h @@ -0,0 +1,22 @@ +#ifndef DISABLE_RGB_MATRIX_HUE_BREATHING +RGB_MATRIX_EFFECT(HUE_BREATHING) +# ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS + +// Change huedelta to adjust range of hue change. 0-255. +// Hue Breathing - All LED's light up +bool HUE_BREATHING(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + uint8_t huedelta = 12; + HSV hsv = rgb_matrix_config.hsv; + uint16_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 8); + hsv.h = hsv.h + scale8(abs8(sin8(time) - 128) * 2, huedelta); + RGB rgb = hsv_to_rgb(hsv); + for (uint8_t i = led_min; i < led_max; i++) { + RGB_MATRIX_TEST_LED_FLAGS(); + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); + } + return led_max < DRIVER_LED_TOTAL; +} + +# endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS +#endif // DISABLE_RGB_HUE_BREATHING diff --git a/quantum/rgb_matrix_animations/hue_pendulum_anim.h b/quantum/rgb_matrix_animations/hue_pendulum_anim.h new file mode 100644 index 0000000000..37db649c18 --- /dev/null +++ b/quantum/rgb_matrix_animations/hue_pendulum_anim.h @@ -0,0 +1,17 @@ +#ifndef DISABLE_RGB_MATRIX_HUE_PENDULUM +RGB_MATRIX_EFFECT(HUE_PENDULUM) +# ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS + +// Change huedelta to adjust range of hue change. 0-255. +// Looks better with a low value and slow speed for subtle change. +// Hue Pendulum - color changes in a wave to the right before reversing direction +static HSV HUE_PENDULUM_math(HSV hsv, uint8_t i, uint8_t time) { + uint8_t huedelta = 12; + hsv.h = hsv.h + scale8(abs8(sin8(time) + (g_led_config.point[i].x) - 128) * 2, huedelta); + return hsv; +} + +bool HUE_PENDULUM(effect_params_t* params) { return effect_runner_i(params, &HUE_PENDULUM_math); } + +# endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS +#endif // DISABLE_RGB_HUE_PENDULUM diff --git a/quantum/rgb_matrix_animations/hue_wave_anim.h b/quantum/rgb_matrix_animations/hue_wave_anim.h new file mode 100644 index 0000000000..1d4af5af43 --- /dev/null +++ b/quantum/rgb_matrix_animations/hue_wave_anim.h @@ -0,0 +1,17 @@ +#ifndef DISABLE_RGB_MATRIX_HUE_WAVE +RGB_MATRIX_EFFECT(HUE_WAVE) +# ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS + +// Change huedelta to adjust range of hue change. 0-255. +// Looks better with a low value and slow speed for subtle change. +// Hue Wave - color changes in a wave to the right +static HSV HUE_WAVE_math(HSV hsv, uint8_t i, uint8_t time) { + uint8_t huedelta = 24; + hsv.h = hsv.h + scale8(abs8(g_led_config.point[i].x - time), huedelta); + return hsv; +} + +bool HUE_WAVE(effect_params_t* params) { return effect_runner_i(params, &HUE_WAVE_math); } + +# endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS +#endif // DISABLE_RGB_HUE_WAVE diff --git a/quantum/rgb_matrix_animations/rgb_matrix_effects.inc b/quantum/rgb_matrix_animations/rgb_matrix_effects.inc index 4c1723d933..053d441506 100644 --- a/quantum/rgb_matrix_animations/rgb_matrix_effects.inc +++ b/quantum/rgb_matrix_animations/rgb_matrix_effects.inc @@ -23,6 +23,9 @@ #include "rgb_matrix_animations/rainbow_pinwheels_anim.h" #include "rgb_matrix_animations/raindrops_anim.h" #include "rgb_matrix_animations/jellybean_raindrops_anim.h" +#include "rgb_matrix_animations/hue_breathing_anim.h" +#include "rgb_matrix_animations/hue_pendulum_anim.h" +#include "rgb_matrix_animations/hue_wave_anim.h" #include "rgb_matrix_animations/typing_heatmap_anim.h" #include "rgb_matrix_animations/digital_rain_anim.h" #include "rgb_matrix_animations/solid_reactive_simple_anim.h" From d91938c19dd65af88713b9deffe95794ed78e889 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 4 Apr 2021 03:05:46 +1200 Subject: [PATCH 179/613] [nix] Use niv and poetry2nix to more easily manage dependencies (#11181) * [nix] Update nixpkgs to avoid issues with Big Sur The older nixpkgs snapshot did not contain nix changes to the compiler/linker hooks that are necessary for compatibility with MacOS Big Sur. The fix is simply to update to a newer snapshot. * [nix] Add a poetry manifest and use poetry to build the Python env * [nix] Use niv to manage upstream sources like nixpkgs * [nix] Update to newer nixpkgs snapshot * [nix] Bump python package versions --- .gitattributes | 1 + nix/poetry.lock | 369 +++++++++++++++++++++++++++++++++++++++++++++ nix/pyproject.toml | 30 ++++ nix/sources.json | 26 ++++ nix/sources.nix | 174 +++++++++++++++++++++ shell.nix | 35 ++--- 6 files changed, 611 insertions(+), 24 deletions(-) create mode 100644 nix/poetry.lock create mode 100644 nix/pyproject.toml create mode 100644 nix/sources.json create mode 100644 nix/sources.nix diff --git a/.gitattributes b/.gitattributes index 92dfc3c617..a0fd4fed62 100644 --- a/.gitattributes +++ b/.gitattributes @@ -92,3 +92,4 @@ GRAPHICS # hex files *.hex binary *.eep binary +nix/sources.nix linguist-generated=true diff --git a/nix/poetry.lock b/nix/poetry.lock new file mode 100644 index 0000000000..74d6e7dd58 --- /dev/null +++ b/nix/poetry.lock @@ -0,0 +1,369 @@ +[[package]] +name = "appdirs" +version = "1.4.4" +description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "argcomplete" +version = "1.12.2" +description = "Bash tab completion for argparse" +category = "main" +optional = false +python-versions = "*" + +[package.extras] +test = ["coverage", "flake8", "pexpect", "wheel"] + +[[package]] +name = "attrs" +version = "20.3.0" +description = "Classes Without Boilerplate" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[package.extras] +dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "furo", "sphinx", "pre-commit"] +docs = ["furo", "sphinx", "zope.interface"] +tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface"] +tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six"] + +[[package]] +name = "colorama" +version = "0.4.4" +description = "Cross-platform colored terminal text." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[[package]] +name = "coverage" +version = "5.5" +description = "Code coverage measurement for Python" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" + +[package.extras] +toml = ["toml"] + +[[package]] +name = "dotty-dict" +version = "1.3.0" +description = "Dictionary wrapper for quick access to deeply nested keys." +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +setuptools_scm = "*" + +[[package]] +name = "flake8" +version = "3.9.0" +description = "the modular source code checker: pep8 pyflakes and co" +category = "dev" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" + +[package.dependencies] +mccabe = ">=0.6.0,<0.7.0" +pycodestyle = ">=2.7.0,<2.8.0" +pyflakes = ">=2.3.0,<2.4.0" + +[[package]] +name = "flake8-polyfill" +version = "1.0.2" +description = "Polyfill package for Flake8 plugins" +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +flake8 = "*" + +[[package]] +name = "hjson" +version = "3.0.2" +description = "Hjson, a user interface for JSON." +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "jsonschema" +version = "3.2.0" +description = "An implementation of JSON Schema validation for Python" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +attrs = ">=17.4.0" +pyrsistent = ">=0.14.0" +six = ">=1.11.0" + +[package.extras] +format = ["idna", "jsonpointer (>1.13)", "rfc3987", "strict-rfc3339", "webcolors"] +format_nongpl = ["idna", "jsonpointer (>1.13)", "webcolors", "rfc3986-validator (>0.1.0)", "rfc3339-validator"] + +[[package]] +name = "mccabe" +version = "0.6.1" +description = "McCabe checker, plugin for flake8" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "milc" +version = "1.3.0" +description = "Opinionated Batteries-Included Python 3 CLI Framework." +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +appdirs = "*" +argcomplete = "*" +colorama = "*" + +[[package]] +name = "nose2" +version = "0.10.0" +description = "unittest2 with plugins, the succesor to nose" +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +coverage = ">=4.4.1" +six = ">=1.7" + +[package.extras] +coverage_plugin = ["coverage (>=4.4.1)"] +dev = ["Sphinx (>=1.6.5)", "sphinx-rtd-theme", "mock", "coverage"] + +[[package]] +name = "pep8-naming" +version = "0.11.1" +description = "Check PEP-8 naming conventions, plugin for flake8" +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +flake8-polyfill = ">=1.0.2,<2" + +[[package]] +name = "pycodestyle" +version = "2.7.0" +description = "Python style guide checker" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[[package]] +name = "pyflakes" +version = "2.3.1" +description = "passive checker of Python programs" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[[package]] +name = "pygments" +version = "2.8.1" +description = "Pygments is a syntax highlighting package written in Python." +category = "main" +optional = false +python-versions = ">=3.5" + +[[package]] +name = "pyrsistent" +version = "0.17.3" +description = "Persistent/Functional/Immutable data structures" +category = "main" +optional = false +python-versions = ">=3.5" + +[[package]] +name = "setuptools-scm" +version = "6.0.1" +description = "the blessed package to manage your versions by scm tags" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.extras] +toml = ["toml"] + +[[package]] +name = "six" +version = "1.15.0" +description = "Python 2 and 3 compatibility utilities" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" + +[[package]] +name = "wave" +version = "0.0.2" +description = "Whole Architecture Verification" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "yapf" +version = "0.30.0" +description = "A formatter for Python code." +category = "dev" +optional = false +python-versions = "*" + +[metadata] +lock-version = "1.1" +python-versions = "^3.8" +content-hash = "6adb87c61d9eacf55e4e80bc6c73325e4e4854a792e3881ff448b6ee1cb75091" + +[metadata.files] +appdirs = [ + {file = "appdirs-1.4.4-py2.py3-none-any.whl", hash = "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128"}, + {file = "appdirs-1.4.4.tar.gz", hash = "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41"}, +] +argcomplete = [ + {file = "argcomplete-1.12.2-py2.py3-none-any.whl", hash = "sha256:17f01a9b9b9ece3e6b07058eae737ad6e10de8b4e149105f84614783913aba71"}, + {file = "argcomplete-1.12.2.tar.gz", hash = "sha256:de0e1282330940d52ea92a80fea2e4b9e0da1932aaa570f84d268939d1897b04"}, +] +attrs = [ + {file = "attrs-20.3.0-py2.py3-none-any.whl", hash = "sha256:31b2eced602aa8423c2aea9c76a724617ed67cf9513173fd3a4f03e3a929c7e6"}, + {file = "attrs-20.3.0.tar.gz", hash = "sha256:832aa3cde19744e49938b91fea06d69ecb9e649c93ba974535d08ad92164f700"}, +] +colorama = [ + {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, + {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"}, +] +coverage = [ + {file = "coverage-5.5-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:b6d534e4b2ab35c9f93f46229363e17f63c53ad01330df9f2d6bd1187e5eaacf"}, + {file = "coverage-5.5-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:b7895207b4c843c76a25ab8c1e866261bcfe27bfaa20c192de5190121770672b"}, + {file = "coverage-5.5-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:c2723d347ab06e7ddad1a58b2a821218239249a9e4365eaff6649d31180c1669"}, + {file = "coverage-5.5-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:900fbf7759501bc7807fd6638c947d7a831fc9fdf742dc10f02956ff7220fa90"}, + {file = "coverage-5.5-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:004d1880bed2d97151facef49f08e255a20ceb6f9432df75f4eef018fdd5a78c"}, + {file = "coverage-5.5-cp27-cp27m-win32.whl", hash = "sha256:06191eb60f8d8a5bc046f3799f8a07a2d7aefb9504b0209aff0b47298333302a"}, + {file = "coverage-5.5-cp27-cp27m-win_amd64.whl", hash = "sha256:7501140f755b725495941b43347ba8a2777407fc7f250d4f5a7d2a1050ba8e82"}, + {file = "coverage-5.5-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:372da284cfd642d8e08ef606917846fa2ee350f64994bebfbd3afb0040436905"}, + {file = "coverage-5.5-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:8963a499849a1fc54b35b1c9f162f4108017b2e6db2c46c1bed93a72262ed083"}, + {file = "coverage-5.5-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:869a64f53488f40fa5b5b9dcb9e9b2962a66a87dab37790f3fcfb5144b996ef5"}, + {file = "coverage-5.5-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:4a7697d8cb0f27399b0e393c0b90f0f1e40c82023ea4d45d22bce7032a5d7b81"}, + {file = "coverage-5.5-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:8d0a0725ad7c1a0bcd8d1b437e191107d457e2ec1084b9f190630a4fb1af78e6"}, + {file = "coverage-5.5-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:51cb9476a3987c8967ebab3f0fe144819781fca264f57f89760037a2ea191cb0"}, + {file = "coverage-5.5-cp310-cp310-win_amd64.whl", hash = "sha256:c0891a6a97b09c1f3e073a890514d5012eb256845c451bd48f7968ef939bf4ae"}, + {file = "coverage-5.5-cp35-cp35m-macosx_10_9_x86_64.whl", hash = "sha256:3487286bc29a5aa4b93a072e9592f22254291ce96a9fbc5251f566b6b7343cdb"}, + {file = "coverage-5.5-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:deee1077aae10d8fa88cb02c845cfba9b62c55e1183f52f6ae6a2df6a2187160"}, + {file = "coverage-5.5-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:f11642dddbb0253cc8853254301b51390ba0081750a8ac03f20ea8103f0c56b6"}, + {file = "coverage-5.5-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:6c90e11318f0d3c436a42409f2749ee1a115cd8b067d7f14c148f1ce5574d701"}, + {file = "coverage-5.5-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:30c77c1dc9f253283e34c27935fded5015f7d1abe83bc7821680ac444eaf7793"}, + {file = "coverage-5.5-cp35-cp35m-win32.whl", hash = "sha256:9a1ef3b66e38ef8618ce5fdc7bea3d9f45f3624e2a66295eea5e57966c85909e"}, + {file = "coverage-5.5-cp35-cp35m-win_amd64.whl", hash = "sha256:972c85d205b51e30e59525694670de6a8a89691186012535f9d7dbaa230e42c3"}, + {file = "coverage-5.5-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:af0e781009aaf59e25c5a678122391cb0f345ac0ec272c7961dc5455e1c40066"}, + {file = "coverage-5.5-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:74d881fc777ebb11c63736622b60cb9e4aee5cace591ce274fb69e582a12a61a"}, + {file = "coverage-5.5-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:92b017ce34b68a7d67bd6d117e6d443a9bf63a2ecf8567bb3d8c6c7bc5014465"}, + {file = "coverage-5.5-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:d636598c8305e1f90b439dbf4f66437de4a5e3c31fdf47ad29542478c8508bbb"}, + {file = "coverage-5.5-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:41179b8a845742d1eb60449bdb2992196e211341818565abded11cfa90efb821"}, + {file = "coverage-5.5-cp36-cp36m-win32.whl", hash = "sha256:040af6c32813fa3eae5305d53f18875bedd079960822ef8ec067a66dd8afcd45"}, + {file = "coverage-5.5-cp36-cp36m-win_amd64.whl", hash = "sha256:5fec2d43a2cc6965edc0bb9e83e1e4b557f76f843a77a2496cbe719583ce8184"}, + {file = "coverage-5.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:18ba8bbede96a2c3dde7b868de9dcbd55670690af0988713f0603f037848418a"}, + {file = "coverage-5.5-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:2910f4d36a6a9b4214bb7038d537f015346f413a975d57ca6b43bf23d6563b53"}, + {file = "coverage-5.5-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:f0b278ce10936db1a37e6954e15a3730bea96a0997c26d7fee88e6c396c2086d"}, + {file = "coverage-5.5-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:796c9c3c79747146ebd278dbe1e5c5c05dd6b10cc3bcb8389dfdf844f3ead638"}, + {file = "coverage-5.5-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:53194af30d5bad77fcba80e23a1441c71abfb3e01192034f8246e0d8f99528f3"}, + {file = "coverage-5.5-cp37-cp37m-win32.whl", hash = "sha256:184a47bbe0aa6400ed2d41d8e9ed868b8205046518c52464fde713ea06e3a74a"}, + {file = "coverage-5.5-cp37-cp37m-win_amd64.whl", hash = "sha256:2949cad1c5208b8298d5686d5a85b66aae46d73eec2c3e08c817dd3513e5848a"}, + {file = "coverage-5.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:217658ec7187497e3f3ebd901afdca1af062b42cfe3e0dafea4cced3983739f6"}, + {file = "coverage-5.5-cp38-cp38-manylinux1_i686.whl", hash = "sha256:1aa846f56c3d49205c952d8318e76ccc2ae23303351d9270ab220004c580cfe2"}, + {file = "coverage-5.5-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:24d4a7de75446be83244eabbff746d66b9240ae020ced65d060815fac3423759"}, + {file = "coverage-5.5-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:d1f8bf7b90ba55699b3a5e44930e93ff0189aa27186e96071fac7dd0d06a1873"}, + {file = "coverage-5.5-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:970284a88b99673ccb2e4e334cfb38a10aab7cd44f7457564d11898a74b62d0a"}, + {file = "coverage-5.5-cp38-cp38-win32.whl", hash = "sha256:01d84219b5cdbfc8122223b39a954820929497a1cb1422824bb86b07b74594b6"}, + {file = "coverage-5.5-cp38-cp38-win_amd64.whl", hash = "sha256:2e0d881ad471768bf6e6c2bf905d183543f10098e3b3640fc029509530091502"}, + {file = "coverage-5.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d1f9ce122f83b2305592c11d64f181b87153fc2c2bbd3bb4a3dde8303cfb1a6b"}, + {file = "coverage-5.5-cp39-cp39-manylinux1_i686.whl", hash = "sha256:13c4ee887eca0f4c5a247b75398d4114c37882658300e153113dafb1d76de529"}, + {file = "coverage-5.5-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:52596d3d0e8bdf3af43db3e9ba8dcdaac724ba7b5ca3f6358529d56f7a166f8b"}, + {file = "coverage-5.5-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:2cafbbb3af0733db200c9b5f798d18953b1a304d3f86a938367de1567f4b5bff"}, + {file = "coverage-5.5-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:44d654437b8ddd9eee7d1eaee28b7219bec228520ff809af170488fd2fed3e2b"}, + {file = "coverage-5.5-cp39-cp39-win32.whl", hash = "sha256:d314ed732c25d29775e84a960c3c60808b682c08d86602ec2c3008e1202e3bb6"}, + {file = "coverage-5.5-cp39-cp39-win_amd64.whl", hash = "sha256:13034c4409db851670bc9acd836243aeee299949bd5673e11844befcb0149f03"}, + {file = "coverage-5.5-pp36-none-any.whl", hash = "sha256:f030f8873312a16414c0d8e1a1ddff2d3235655a2174e3648b4fa66b3f2f1079"}, + {file = "coverage-5.5-pp37-none-any.whl", hash = "sha256:2a3859cb82dcbda1cfd3e6f71c27081d18aa251d20a17d87d26d4cd216fb0af4"}, + {file = "coverage-5.5.tar.gz", hash = "sha256:ebe78fe9a0e874362175b02371bdfbee64d8edc42a044253ddf4ee7d3c15212c"}, +] +dotty-dict = [ + {file = "dotty_dict-1.3.0.tar.gz", hash = "sha256:eb0035a3629ecd84397a68f1f42f1e94abd1c34577a19cd3eacad331ee7cbaf0"}, +] +flake8 = [ + {file = "flake8-3.9.0-py2.py3-none-any.whl", hash = "sha256:12d05ab02614b6aee8df7c36b97d1a3b2372761222b19b58621355e82acddcff"}, + {file = "flake8-3.9.0.tar.gz", hash = "sha256:78873e372b12b093da7b5e5ed302e8ad9e988b38b063b61ad937f26ca58fc5f0"}, +] +flake8-polyfill = [ + {file = "flake8-polyfill-1.0.2.tar.gz", hash = "sha256:e44b087597f6da52ec6393a709e7108b2905317d0c0b744cdca6208e670d8eda"}, + {file = "flake8_polyfill-1.0.2-py2.py3-none-any.whl", hash = "sha256:12be6a34ee3ab795b19ca73505e7b55826d5f6ad7230d31b18e106400169b9e9"}, +] +hjson = [ + {file = "hjson-3.0.2-py3-none-any.whl", hash = "sha256:5546438bf4e1b52bc964c6a47c4ed10fa5fba8a1b264e22efa893e333baad2db"}, + {file = "hjson-3.0.2.tar.gz", hash = "sha256:2838fd7200e5839ea4516ece953f3a19892c41089f0d933ba3f68e596aacfcd5"}, +] +jsonschema = [ + {file = "jsonschema-3.2.0-py2.py3-none-any.whl", hash = "sha256:4e5b3cf8216f577bee9ce139cbe72eca3ea4f292ec60928ff24758ce626cd163"}, + {file = "jsonschema-3.2.0.tar.gz", hash = "sha256:c8a85b28d377cc7737e46e2d9f2b4f44ee3c0e1deac6bf46ddefc7187d30797a"}, +] +mccabe = [ + {file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"}, + {file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"}, +] +milc = [ + {file = "milc-1.3.0-py2.py3-none-any.whl", hash = "sha256:a4dd8ce77f1d4ac5e08311eecc6954c349d4032d7ed4e0335822e09740514f22"}, + {file = "milc-1.3.0.tar.gz", hash = "sha256:a9d0299aaaef7a3f00010589c3c0d0669798467e397580620a68e9290b36cdda"}, +] +nose2 = [ + {file = "nose2-0.10.0-py2.py3-none-any.whl", hash = "sha256:aa620e759f2c5018d9ba041340391913e282ecebd3c392027f1575847b093ec6"}, + {file = "nose2-0.10.0.tar.gz", hash = "sha256:886ba617a96de0130c54b24479bd5c2d74d5c940d40f3809c3a275511a0c4a60"}, +] +pep8-naming = [ + {file = "pep8-naming-0.11.1.tar.gz", hash = "sha256:a1dd47dd243adfe8a83616e27cf03164960b507530f155db94e10b36a6cd6724"}, + {file = "pep8_naming-0.11.1-py2.py3-none-any.whl", hash = "sha256:f43bfe3eea7e0d73e8b5d07d6407ab47f2476ccaeff6937c84275cd30b016738"}, +] +pycodestyle = [ + {file = "pycodestyle-2.7.0-py2.py3-none-any.whl", hash = "sha256:514f76d918fcc0b55c6680472f0a37970994e07bbb80725808c17089be302068"}, + {file = "pycodestyle-2.7.0.tar.gz", hash = "sha256:c389c1d06bf7904078ca03399a4816f974a1d590090fecea0c63ec26ebaf1cef"}, +] +pyflakes = [ + {file = "pyflakes-2.3.1-py2.py3-none-any.whl", hash = "sha256:7893783d01b8a89811dd72d7dfd4d84ff098e5eed95cfa8905b22bbffe52efc3"}, + {file = "pyflakes-2.3.1.tar.gz", hash = "sha256:f5bc8ecabc05bb9d291eb5203d6810b49040f6ff446a756326104746cc00c1db"}, +] +pygments = [ + {file = "Pygments-2.8.1-py3-none-any.whl", hash = "sha256:534ef71d539ae97d4c3a4cf7d6f110f214b0e687e92f9cb9d2a3b0d3101289c8"}, + {file = "Pygments-2.8.1.tar.gz", hash = "sha256:2656e1a6edcdabf4275f9a3640db59fd5de107d88e8663c5d4e9a0fa62f77f94"}, +] +pyrsistent = [ + {file = "pyrsistent-0.17.3.tar.gz", hash = "sha256:2e636185d9eb976a18a8a8e96efce62f2905fea90041958d8cc2a189756ebf3e"}, +] +setuptools-scm = [ + {file = "setuptools_scm-6.0.1-py3-none-any.whl", hash = "sha256:c3bd5f701c8def44a5c0bfe8d407bef3f80342217ef3492b951f3777bd2d915c"}, + {file = "setuptools_scm-6.0.1.tar.gz", hash = "sha256:d1925a69cb07e9b29416a275b9fadb009a23c148ace905b2fb220649a6c18e92"}, +] +six = [ + {file = "six-1.15.0-py2.py3-none-any.whl", hash = "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced"}, + {file = "six-1.15.0.tar.gz", hash = "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259"}, +] +wave = [ + {file = "Wave-0.0.2.tar.gz", hash = "sha256:5a895bb85e04e38c82dba90d66a5ae8f488b50c58f3fc4df868a5bcdcabb8632"}, + {file = "Wave-0.0.2.zip", hash = "sha256:5187f49497287d218cc83d4cd1e5299dc31485ab3ed32abbaa9e95d8f73c4095"}, +] +yapf = [ + {file = "yapf-0.30.0-py2.py3-none-any.whl", hash = "sha256:3abf61ba67cf603069710d30acbc88cfe565d907e16ad81429ae90ce9651e0c9"}, + {file = "yapf-0.30.0.tar.gz", hash = "sha256:3000abee4c28daebad55da6c85f3cd07b8062ce48e2e9943c8da1b9667d48427"}, +] diff --git a/nix/pyproject.toml b/nix/pyproject.toml new file mode 100644 index 0000000000..62d49fad59 --- /dev/null +++ b/nix/pyproject.toml @@ -0,0 +1,30 @@ +# This file should be kept in sync with requirements.txt and requirements-dev.txt +# It is particularly required by the Nix environment (see shell.nix). To update versions, +# normally one would run "poetry update --lock" +[tool.poetry] +name = "qmk" +version = "0.1.0" +description = "" +authors = [] + +[tool.poetry.dependencies] +python = "^3.8" +appdirs = "^1.4.4" +argcomplete = "^1.12.2" +colorama = "^0.4.4" +hjson = "^3.0.2" +milc = "^1.1.0" +Pygments = "^2.8.0" +dotty-dict = "^1.3.0" +jsonschema = "^3.2.0" + +[tool.poetry.dev-dependencies] +nose2 = "^0.10.0" +flake8 = "^3.8.4" +pep8-naming = "^0.11.1" +yapf = "^0.30.0" +Wave = "^0.0.2" + +[build-system] +requires = ["poetry-core>=1.0.0"] +build-backend = "poetry.core.masonry.api" diff --git a/nix/sources.json b/nix/sources.json new file mode 100644 index 0000000000..7afca37073 --- /dev/null +++ b/nix/sources.json @@ -0,0 +1,26 @@ +{ + "niv": { + "branch": "master", + "description": "Easy dependency management for Nix projects", + "homepage": "https://github.com/nmattia/niv", + "owner": "nmattia", + "repo": "niv", + "rev": "af958e8057f345ee1aca714c1247ef3ba1c15f5e", + "sha256": "1qjavxabbrsh73yck5dcq8jggvh3r2jkbr6b5nlz5d9yrqm9255n", + "type": "tarball", + "url": "https://github.com/nmattia/niv/archive/af958e8057f345ee1aca714c1247ef3ba1c15f5e.tar.gz", + "url_template": "https://github.com///archive/.tar.gz" + }, + "nixpkgs": { + "branch": "nixpkgs-unstable", + "description": "Nix Packages collection", + "homepage": "", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "c0e881852006b132236cbf0301bd1939bb50867e", + "sha256": "0fy7z7yxk5n7yslsvx5cyc6h21qwi4bhxf3awhirniszlbvaazy2", + "type": "tarball", + "url": "https://github.com/NixOS/nixpkgs/archive/c0e881852006b132236cbf0301bd1939bb50867e.tar.gz", + "url_template": "https://github.com///archive/.tar.gz" + } +} diff --git a/nix/sources.nix b/nix/sources.nix new file mode 100644 index 0000000000..1938409ddd --- /dev/null +++ b/nix/sources.nix @@ -0,0 +1,174 @@ +# This file has been generated by Niv. + +let + + # + # The fetchers. fetch_ fetches specs of type . + # + + fetch_file = pkgs: name: spec: + let + name' = sanitizeName name + "-src"; + in + if spec.builtin or true then + builtins_fetchurl { inherit (spec) url sha256; name = name'; } + else + pkgs.fetchurl { inherit (spec) url sha256; name = name'; }; + + fetch_tarball = pkgs: name: spec: + let + name' = sanitizeName name + "-src"; + in + if spec.builtin or true then + builtins_fetchTarball { name = name'; inherit (spec) url sha256; } + else + pkgs.fetchzip { name = name'; inherit (spec) url sha256; }; + + fetch_git = name: spec: + let + ref = + if spec ? ref then spec.ref else + if spec ? branch then "refs/heads/${spec.branch}" else + if spec ? tag then "refs/tags/${spec.tag}" else + abort "In git source '${name}': Please specify `ref`, `tag` or `branch`!"; + in + builtins.fetchGit { url = spec.repo; inherit (spec) rev; inherit ref; }; + + fetch_local = spec: spec.path; + + fetch_builtin-tarball = name: throw + ''[${name}] The niv type "builtin-tarball" is deprecated. You should instead use `builtin = true`. + $ niv modify ${name} -a type=tarball -a builtin=true''; + + fetch_builtin-url = name: throw + ''[${name}] The niv type "builtin-url" will soon be deprecated. You should instead use `builtin = true`. + $ niv modify ${name} -a type=file -a builtin=true''; + + # + # Various helpers + # + + # https://github.com/NixOS/nixpkgs/pull/83241/files#diff-c6f540a4f3bfa4b0e8b6bafd4cd54e8bR695 + sanitizeName = name: + ( + concatMapStrings (s: if builtins.isList s then "-" else s) + ( + builtins.split "[^[:alnum:]+._?=-]+" + ((x: builtins.elemAt (builtins.match "\\.*(.*)" x) 0) name) + ) + ); + + # The set of packages used when specs are fetched using non-builtins. + mkPkgs = sources: system: + let + sourcesNixpkgs = + import (builtins_fetchTarball { inherit (sources.nixpkgs) url sha256; }) { inherit system; }; + hasNixpkgsPath = builtins.any (x: x.prefix == "nixpkgs") builtins.nixPath; + hasThisAsNixpkgsPath = == ./.; + in + if builtins.hasAttr "nixpkgs" sources + then sourcesNixpkgs + else if hasNixpkgsPath && ! hasThisAsNixpkgsPath then + import {} + else + abort + '' + Please specify either (through -I or NIX_PATH=nixpkgs=...) or + add a package called "nixpkgs" to your sources.json. + ''; + + # The actual fetching function. + fetch = pkgs: name: spec: + + if ! builtins.hasAttr "type" spec then + abort "ERROR: niv spec ${name} does not have a 'type' attribute" + else if spec.type == "file" then fetch_file pkgs name spec + else if spec.type == "tarball" then fetch_tarball pkgs name spec + else if spec.type == "git" then fetch_git name spec + else if spec.type == "local" then fetch_local spec + else if spec.type == "builtin-tarball" then fetch_builtin-tarball name + else if spec.type == "builtin-url" then fetch_builtin-url name + else + abort "ERROR: niv spec ${name} has unknown type ${builtins.toJSON spec.type}"; + + # If the environment variable NIV_OVERRIDE_${name} is set, then use + # the path directly as opposed to the fetched source. + replace = name: drv: + let + saneName = stringAsChars (c: if isNull (builtins.match "[a-zA-Z0-9]" c) then "_" else c) name; + ersatz = builtins.getEnv "NIV_OVERRIDE_${saneName}"; + in + if ersatz == "" then drv else + # this turns the string into an actual Nix path (for both absolute and + # relative paths) + if builtins.substring 0 1 ersatz == "/" then /. + ersatz else /. + builtins.getEnv "PWD" + "/${ersatz}"; + + # Ports of functions for older nix versions + + # a Nix version of mapAttrs if the built-in doesn't exist + mapAttrs = builtins.mapAttrs or ( + f: set: with builtins; + listToAttrs (map (attr: { name = attr; value = f attr set.${attr}; }) (attrNames set)) + ); + + # https://github.com/NixOS/nixpkgs/blob/0258808f5744ca980b9a1f24fe0b1e6f0fecee9c/lib/lists.nix#L295 + range = first: last: if first > last then [] else builtins.genList (n: first + n) (last - first + 1); + + # https://github.com/NixOS/nixpkgs/blob/0258808f5744ca980b9a1f24fe0b1e6f0fecee9c/lib/strings.nix#L257 + stringToCharacters = s: map (p: builtins.substring p 1 s) (range 0 (builtins.stringLength s - 1)); + + # https://github.com/NixOS/nixpkgs/blob/0258808f5744ca980b9a1f24fe0b1e6f0fecee9c/lib/strings.nix#L269 + stringAsChars = f: s: concatStrings (map f (stringToCharacters s)); + concatMapStrings = f: list: concatStrings (map f list); + concatStrings = builtins.concatStringsSep ""; + + # https://github.com/NixOS/nixpkgs/blob/8a9f58a375c401b96da862d969f66429def1d118/lib/attrsets.nix#L331 + optionalAttrs = cond: as: if cond then as else {}; + + # fetchTarball version that is compatible between all the versions of Nix + builtins_fetchTarball = { url, name ? null, sha256 }@attrs: + let + inherit (builtins) lessThan nixVersion fetchTarball; + in + if lessThan nixVersion "1.12" then + fetchTarball ({ inherit url; } // (optionalAttrs (!isNull name) { inherit name; })) + else + fetchTarball attrs; + + # fetchurl version that is compatible between all the versions of Nix + builtins_fetchurl = { url, name ? null, sha256 }@attrs: + let + inherit (builtins) lessThan nixVersion fetchurl; + in + if lessThan nixVersion "1.12" then + fetchurl ({ inherit url; } // (optionalAttrs (!isNull name) { inherit name; })) + else + fetchurl attrs; + + # Create the final "sources" from the config + mkSources = config: + mapAttrs ( + name: spec: + if builtins.hasAttr "outPath" spec + then abort + "The values in sources.json should not have an 'outPath' attribute" + else + spec // { outPath = replace name (fetch config.pkgs name spec); } + ) config.sources; + + # The "config" used by the fetchers + mkConfig = + { sourcesFile ? if builtins.pathExists ./sources.json then ./sources.json else null + , sources ? if isNull sourcesFile then {} else builtins.fromJSON (builtins.readFile sourcesFile) + , system ? builtins.currentSystem + , pkgs ? mkPkgs sources system + }: rec { + # The sources, i.e. the attribute set of spec name to spec + inherit sources; + + # The "pkgs" (evaluated nixpkgs) to use for e.g. non-builtin fetchers + inherit pkgs; + }; + +in +mkSources (mkConfig {}) // { __functor = _: settings: mkSources (mkConfig settings); } diff --git a/shell.nix b/shell.nix index ab44dd8e31..e82436ae11 100644 --- a/shell.nix +++ b/shell.nix @@ -1,29 +1,16 @@ { avr ? true, arm ? true, teensy ? true }: - let - nixpkgs = builtins.fetchTarball { - url = "https://github.com/NixOS/nixpkgs/archive/1f77a4c8c74bbe896053994836790aa9bf6dc5ba.tar.gz"; - sha256 = "1j62nmzz3w33dplzf1xz1pg1pfkxii7lwdqmsxmc71cs9cm3s7n1"; + # We specify sources via Niv: use "niv update nixpkgs" to update nixpkgs, for example. + sources = import ./nix/sources.nix {}; + pkgs = import sources.nixpkgs {}; + + # Builds the python env based on nix/pyproject.toml and + # nix/poetry.lock Use the "poetry update --lock", "poetry add + # --lock" etc. in the nix folder to adjust the contents of those + # files if the requirements*.txt files change + pythonEnv = pkgs.poetry2nix.mkPoetryEnv { + projectDir = ./nix; }; - - pkgs = import nixpkgs { }; - - pythonEnv = pkgs.python3.withPackages (p: with p; [ - # requirements.txt - appdirs - argcomplete - colorama - dotty-dict - hjson - jsonschema - milc - pygments - # requirements-dev.txt - nose2 - flake8 - pep8-naming - yapf - ]); in with pkgs; @@ -43,7 +30,7 @@ in mkShell { name = "qmk-firmware"; - buildInputs = [ clang-tools dfu-programmer dfu-util diffutils git pythonEnv ] + buildInputs = [ clang-tools dfu-programmer dfu-util diffutils git pythonEnv poetry niv ] ++ lib.optional avr [ pkgsCross.avr.buildPackages.binutils pkgsCross.avr.buildPackages.gcc8 From 41f649c9a95985603d1063f2ec5e2864a7e32a0b Mon Sep 17 00:00:00 2001 From: Zach White Date: Sat, 3 Apr 2021 08:25:50 -0700 Subject: [PATCH 180/613] fix line endings --- .../hue_breathing_anim.h | 44 +++++++++---------- .../rgb_matrix_animations/hue_pendulum_anim.h | 34 +++++++------- quantum/rgb_matrix_animations/hue_wave_anim.h | 34 +++++++------- 3 files changed, 56 insertions(+), 56 deletions(-) diff --git a/quantum/rgb_matrix_animations/hue_breathing_anim.h b/quantum/rgb_matrix_animations/hue_breathing_anim.h index 37a6293c70..54dea958af 100644 --- a/quantum/rgb_matrix_animations/hue_breathing_anim.h +++ b/quantum/rgb_matrix_animations/hue_breathing_anim.h @@ -1,22 +1,22 @@ -#ifndef DISABLE_RGB_MATRIX_HUE_BREATHING -RGB_MATRIX_EFFECT(HUE_BREATHING) -# ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS - -// Change huedelta to adjust range of hue change. 0-255. -// Hue Breathing - All LED's light up -bool HUE_BREATHING(effect_params_t* params) { - RGB_MATRIX_USE_LIMITS(led_min, led_max); - uint8_t huedelta = 12; - HSV hsv = rgb_matrix_config.hsv; - uint16_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 8); - hsv.h = hsv.h + scale8(abs8(sin8(time) - 128) * 2, huedelta); - RGB rgb = hsv_to_rgb(hsv); - for (uint8_t i = led_min; i < led_max; i++) { - RGB_MATRIX_TEST_LED_FLAGS(); - rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); - } - return led_max < DRIVER_LED_TOTAL; -} - -# endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS -#endif // DISABLE_RGB_HUE_BREATHING +#ifndef DISABLE_RGB_MATRIX_HUE_BREATHING +RGB_MATRIX_EFFECT(HUE_BREATHING) +# ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS + +// Change huedelta to adjust range of hue change. 0-255. +// Hue Breathing - All LED's light up +bool HUE_BREATHING(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + uint8_t huedelta = 12; + HSV hsv = rgb_matrix_config.hsv; + uint16_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 8); + hsv.h = hsv.h + scale8(abs8(sin8(time) - 128) * 2, huedelta); + RGB rgb = hsv_to_rgb(hsv); + for (uint8_t i = led_min; i < led_max; i++) { + RGB_MATRIX_TEST_LED_FLAGS(); + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); + } + return led_max < DRIVER_LED_TOTAL; +} + +# endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS +#endif // DISABLE_RGB_HUE_BREATHING diff --git a/quantum/rgb_matrix_animations/hue_pendulum_anim.h b/quantum/rgb_matrix_animations/hue_pendulum_anim.h index 37db649c18..2d8d36174f 100644 --- a/quantum/rgb_matrix_animations/hue_pendulum_anim.h +++ b/quantum/rgb_matrix_animations/hue_pendulum_anim.h @@ -1,17 +1,17 @@ -#ifndef DISABLE_RGB_MATRIX_HUE_PENDULUM -RGB_MATRIX_EFFECT(HUE_PENDULUM) -# ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS - -// Change huedelta to adjust range of hue change. 0-255. -// Looks better with a low value and slow speed for subtle change. -// Hue Pendulum - color changes in a wave to the right before reversing direction -static HSV HUE_PENDULUM_math(HSV hsv, uint8_t i, uint8_t time) { - uint8_t huedelta = 12; - hsv.h = hsv.h + scale8(abs8(sin8(time) + (g_led_config.point[i].x) - 128) * 2, huedelta); - return hsv; -} - -bool HUE_PENDULUM(effect_params_t* params) { return effect_runner_i(params, &HUE_PENDULUM_math); } - -# endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS -#endif // DISABLE_RGB_HUE_PENDULUM +#ifndef DISABLE_RGB_MATRIX_HUE_PENDULUM +RGB_MATRIX_EFFECT(HUE_PENDULUM) +# ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS + +// Change huedelta to adjust range of hue change. 0-255. +// Looks better with a low value and slow speed for subtle change. +// Hue Pendulum - color changes in a wave to the right before reversing direction +static HSV HUE_PENDULUM_math(HSV hsv, uint8_t i, uint8_t time) { + uint8_t huedelta = 12; + hsv.h = hsv.h + scale8(abs8(sin8(time) + (g_led_config.point[i].x) - 128) * 2, huedelta); + return hsv; +} + +bool HUE_PENDULUM(effect_params_t* params) { return effect_runner_i(params, &HUE_PENDULUM_math); } + +# endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS +#endif // DISABLE_RGB_HUE_PENDULUM diff --git a/quantum/rgb_matrix_animations/hue_wave_anim.h b/quantum/rgb_matrix_animations/hue_wave_anim.h index 1d4af5af43..fd9026fc90 100644 --- a/quantum/rgb_matrix_animations/hue_wave_anim.h +++ b/quantum/rgb_matrix_animations/hue_wave_anim.h @@ -1,17 +1,17 @@ -#ifndef DISABLE_RGB_MATRIX_HUE_WAVE -RGB_MATRIX_EFFECT(HUE_WAVE) -# ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS - -// Change huedelta to adjust range of hue change. 0-255. -// Looks better with a low value and slow speed for subtle change. -// Hue Wave - color changes in a wave to the right -static HSV HUE_WAVE_math(HSV hsv, uint8_t i, uint8_t time) { - uint8_t huedelta = 24; - hsv.h = hsv.h + scale8(abs8(g_led_config.point[i].x - time), huedelta); - return hsv; -} - -bool HUE_WAVE(effect_params_t* params) { return effect_runner_i(params, &HUE_WAVE_math); } - -# endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS -#endif // DISABLE_RGB_HUE_WAVE +#ifndef DISABLE_RGB_MATRIX_HUE_WAVE +RGB_MATRIX_EFFECT(HUE_WAVE) +# ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS + +// Change huedelta to adjust range of hue change. 0-255. +// Looks better with a low value and slow speed for subtle change. +// Hue Wave - color changes in a wave to the right +static HSV HUE_WAVE_math(HSV hsv, uint8_t i, uint8_t time) { + uint8_t huedelta = 24; + hsv.h = hsv.h + scale8(abs8(g_led_config.point[i].x - time), huedelta); + return hsv; +} + +bool HUE_WAVE(effect_params_t* params) { return effect_runner_i(params, &HUE_WAVE_math); } + +# endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS +#endif // DISABLE_RGB_HUE_WAVE From 4e2ab3a17734fa0460e259b835e2ea1dbfd72d75 Mon Sep 17 00:00:00 2001 From: Excitable Snowball Date: Sat, 3 Apr 2021 16:15:39 +0000 Subject: [PATCH 181/613] Remove `wave` from requirements-dev.txt (#12387) This resolves to , but the places where the `wave` module is imported make it clear that the standard library module was intended. Was originally added in #11820 and used in the following files: * `util/sample_parser.py` * `util/wavetable_parser.py` --- requirements-dev.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index caae27741a..1db3b6d733 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -6,4 +6,3 @@ nose2 flake8 pep8-naming yapf -wave From 60e1910e5b4f83a07aebbb0d75276ecda6c50e27 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Sat, 3 Apr 2021 17:29:06 +0100 Subject: [PATCH 182/613] Add WSL specific logic for avrdude device detection (#12392) --- tmk_core/avr.mk | 65 ++++++++++++++++++++++++++----------------------- 1 file changed, 35 insertions(+), 30 deletions(-) diff --git a/tmk_core/avr.mk b/tmk_core/avr.mk index f9c56e06de..c1d3f6b39e 100644 --- a/tmk_core/avr.mk +++ b/tmk_core/avr.mk @@ -154,38 +154,43 @@ dfu-split-left: $(BUILD_DIR)/$(TARGET).hex cpfirmware check-size dfu-split-right: $(BUILD_DIR)/$(TARGET).hex cpfirmware check-size $(call EXEC_DFU,eeprom-righthand.eep) +AVRDUDE_PROGRAMMER ?= avrdude + define EXEC_AVRDUDE - USB= ;\ - if $(GREP) -q -s Microsoft /proc/version; then \ - echo 'ERROR: AVR flashing cannot be automated within the Windows Subsystem for Linux (WSL) currently. Instead, take the .hex file generated and flash it using QMK Toolbox, AVRDUDE, AVRDUDESS, or XLoader.'; \ - else \ - printf "Detecting USB port, reset your controller now."; \ - TMP1=`mktemp`; \ - TMP2=`mktemp`; \ - ls /dev/tty* > $$TMP1; \ - while [ -z $$USB ]; do \ - sleep 0.5; \ - printf "."; \ - ls /dev/tty* > $$TMP2; \ - USB=`comm -13 $$TMP1 $$TMP2 | $(GREP) -o '/dev/tty.*'`; \ - mv $$TMP2 $$TMP1; \ - done; \ - rm $$TMP1; \ - echo ""; \ - echo "Device $$USB has appeared; assuming it is the controller."; \ - if $(GREP) -q -s 'MINGW\|MSYS' /proc/version; then \ - USB=`echo "$$USB" | perl -pne 's/\/dev\/ttyS(\d+)/COM.($$1+1)/e'`; \ - echo "Remapped MSYS2 USB port to $$USB"; \ - sleep 1; \ + list_devices() { \ + if $(GREP) -q -s icrosoft /proc/version; then \ + wmic.exe path Win32_SerialPort get DeviceID 2>/dev/null | LANG=C perl -pne 's/COM(\d+)/COM.($$1-1)/e' | sed 's!COM!/dev/ttyS!' | xargs echo -n | sort; \ else \ - printf "Waiting for $$USB to become writable."; \ - while [ ! -w "$$USB" ]; do sleep 0.5; printf "."; done; echo ""; \ + ls /dev/tty*; \ fi; \ - if [ -z "$(1)" ]; then \ - avrdude -p $(MCU) -c avr109 -P $$USB -U flash:w:$(BUILD_DIR)/$(TARGET).hex; \ - else \ - avrdude -p $(MCU) -c avr109 -P $$USB -U flash:w:$(BUILD_DIR)/$(TARGET).hex -U eeprom:w:$(QUANTUM_PATH)/split_common/$(1); \ - fi \ + }; \ + USB= ;\ + printf "Detecting USB port, reset your controller now."; \ + TMP1=`mktemp`; \ + TMP2=`mktemp`; \ + list_devices > $$TMP1; \ + while [ -z $$USB ]; do \ + sleep 0.5; \ + printf "."; \ + list_devices > $$TMP2; \ + USB=`comm -13 $$TMP1 $$TMP2 | $(GREP) -o '/dev/tty.*'`; \ + mv $$TMP2 $$TMP1; \ + done; \ + rm $$TMP1; \ + echo ""; \ + echo "Device $$USB has appeared; assuming it is the controller."; \ + if $(GREP) -q -s 'MINGW\|MSYS\|icrosoft' /proc/version; then \ + USB=`echo "$$USB" | LANG=C perl -pne 's/\/dev\/ttyS(\d+)/COM.($$1+1)/e'`; \ + echo "Remapped USB port to $$USB"; \ + sleep 1; \ + else \ + printf "Waiting for $$USB to become writable."; \ + while [ ! -w "$$USB" ]; do sleep 0.5; printf "."; done; echo ""; \ + fi; \ + if [ -z "$(1)" ]; then \ + $(AVRDUDE_PROGRAMMER) -p $(MCU) -c avr109 -P $$USB -U flash:w:$(BUILD_DIR)/$(TARGET).hex; \ + else \ + $(AVRDUDE_PROGRAMMER) -p $(MCU) -c avr109 -P $$USB -U flash:w:$(BUILD_DIR)/$(TARGET).hex -U eeprom:w:$(QUANTUM_PATH)/split_common/$(1); \ fi endef @@ -204,7 +209,7 @@ avrdude-split-right: $(BUILD_DIR)/$(TARGET).hex check-size cpfirmware $(call EXEC_AVRDUDE,eeprom-righthand.eep) define EXEC_USBASP - avrdude -p $(AVRDUDE_MCU) -c usbasp -U flash:w:$(BUILD_DIR)/$(TARGET).hex + $(AVRDUDE_PROGRAMMER) -p $(AVRDUDE_MCU) -c usbasp -U flash:w:$(BUILD_DIR)/$(TARGET).hex endef usbasp: $(BUILD_DIR)/$(TARGET).hex check-size cpfirmware From 49dc332a0401c9089afe91d2d06dc1f4e18fe01b Mon Sep 17 00:00:00 2001 From: Takeshi ISHII <2170248+mtei@users.noreply.github.com> Date: Sun, 4 Apr 2021 04:42:29 +0900 Subject: [PATCH 183/613] [Keymap] cleanup keyboards/helix/{rev2|rev3_5rows}/keymaps/five_rows (#12259) * cleanup keyboards/helix/{rev2|rev3_5rows}/keymaps/five_rows * Made the layout data easier to read. * helix/rev2/keymaps/five_rows/keymap.c * helix/rev3_5rows/keymaps/five_rows/keymap.c * The following two were made the same. * keymaps/five_rows/config.h * keymaps/five_rows/oled_display.c The binary of the compilation result has not changed. * update keyboards/helix/rev2/keymaps/five_rows/rules.mk KEYBOARD_LOCAL_FEATURES_MK was moved to the end. * add '#define DISABLE_SYNC_TIMER' into helix/rev3_5rows/keymaps/five_rows/config.h The sync timer features worsen the matrix scan rate of the Helix keyboard. I'm not sure if it makes sense to have sync timer features enabled on the Helix keyboard. So in my keymap I disable this. --- .../helix/rev2/keymaps/five_rows/config.h | 2 + .../helix/rev2/keymaps/five_rows/keymap.c | 325 +++++++++--------- .../helix/rev2/keymaps/five_rows/rules.mk | 22 +- .../rev3_5rows/keymaps/five_rows/config.h | 8 +- .../rev3_5rows/keymaps/five_rows/keymap.c | 325 +++++++++--------- .../keymaps/five_rows/oled_display.c | 10 + 6 files changed, 353 insertions(+), 339 deletions(-) diff --git a/keyboards/helix/rev2/keymaps/five_rows/config.h b/keyboards/helix/rev2/keymaps/five_rows/config.h index cd76af4faf..b9961f5c48 100644 --- a/keyboards/helix/rev2/keymaps/five_rows/config.h +++ b/keyboards/helix/rev2/keymaps/five_rows/config.h @@ -35,6 +35,8 @@ along with this program. If not, see . // If you need more program area, try select and reduce rgblight modes to use. +#define DISABLE_SYNC_TIMER + // Selection of RGBLIGHT MODE to use. #undef RGBLIGHT_ANIMATIONS #undef RGBLIGHT_EFFECT_BREATHING diff --git a/keyboards/helix/rev2/keymaps/five_rows/keymap.c b/keyboards/helix/rev2/keymaps/five_rows/keymap.c index a2ec108624..16eff49244 100644 --- a/keyboards/helix/rev2/keymaps/five_rows/keymap.c +++ b/keyboards/helix/rev2/keymaps/five_rows/keymap.c @@ -42,6 +42,8 @@ enum custom_keycodes { RGBRST }; +// clang-format off + #define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__) //Macros @@ -49,24 +51,26 @@ enum custom_keycodes { #define XXXX XXXXXXX #define ____ _______ #define KC_ADJ MO(_ADJUST) -#define KC_LSMI LSFT(KC_MINS) -#define KC_LSEQ LSFT(KC_EQL) -#define KC_LSRB LSFT(KC_RBRC) -#define KC_LSLB LSFT(KC_LBRC) -#define _1_2_3_4_5 KC_1, KC_2, KC_3, KC_4, KC_5 -#define _6_7_8_9_0 KC_6, KC_7, KC_8, KC_9, KC_0 -#define L_LOWER2_CAPS_LALT_LGUI_SPC_RABS \ +#define _1_____2_____3_____4_____5 KC_1, KC_2, KC_3, KC_4, KC_5 +#define _6_____7_____8_____9_____0 KC_6, KC_7, KC_8, KC_9, KC_0 +#define LOWER__LOWER__CAPS__LALT__LGUI__SPC__RABS \ KC_LOWER, KC_LOWER, KC_CAPS, KC_LALT, KC_LGUI, KC_SPC, LT(_RAISE,KC_BSPC) -#define R_RAEN_SPC_RGUI_RALT_APP_LOWER2 \ +#define RAEN___SPC___RGUI__RALT__APP___LOWER__LOWER \ LT(_RAISE,KC_ENT), KC_SPC, KC_RGUI, KC_RALT, KC_APP, KC_LOWER, KC_LOWER - +#define GRV__QUOT KC_GRV, KC_QUOT #if MATRIX_ROWS == 10 // HELIX_ROWS == 5 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Qwerty - * ,-----------------------------------. ,-----------------------------------. + /* Qwerty */ +#define Q_____W_____E_____R_____T KC_Q, KC_W, KC_E, KC_R, KC_T +#define Y_____U_____I_____O_____P KC_Y, KC_U, KC_I, KC_O, KC_P +#define A_____S_____D_____F_____G KC_A, KC_S, KC_D, KC_F, KC_G +#define H_____J_____K_____L____SCLN KC_H, KC_J, KC_K, KC_L, KC_SCLN +#define Z_____X_____C_____V_____B KC_Z, KC_X, KC_C, KC_V, KC_B +#define N_____M____COMM__DOT___SLSH KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH + /* ,-----------------------------------. ,-----------------------------------. * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BS | * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| * | Tab | Q | W | E | R | T | | Y | U | I | O | P | \ | @@ -78,23 +82,22 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |Lower|Lower|Caps | Alt | GUI |Space| BS |Enter|Space| GUI | Alt |Menu |Lower|Lower| * `-----------------------------------------------------------------------------------' */ -#define _Q_W_E_R_T KC_Q, KC_W, KC_E, KC_R, KC_T -#define _Y_U_I_O_P KC_Y, KC_U, KC_I, KC_O, KC_P -#define _A_S_D_F_G KC_A, KC_S, KC_D, KC_F, KC_G -#define _H_J_K_L_SCLN KC_H, KC_J, KC_K, KC_L, KC_SCLN -#define _Z_X_C_V_B KC_Z, KC_X, KC_C, KC_V, KC_B -#define _N_M_COMM_DOT_SLSH KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH - - [_QWERTY] = LAYOUT_wrapper( \ - KC_ESC, _1_2_3_4_5, _6_7_8_9_0, KC_BSPC, \ - KC_TAB, _Q_W_E_R_T, _Y_U_I_O_P, KC_BSLS, \ - KC_LCTL, _A_S_D_F_G, _H_J_K_L_SCLN, KC_RCTL, \ - KC_LSFT, _Z_X_C_V_B, KC_GRV, KC_QUOT, _N_M_COMM_DOT_SLSH, KC_RSFT, \ - L_LOWER2_CAPS_LALT_LGUI_SPC_RABS, R_RAEN_SPC_RGUI_RALT_APP_LOWER2 \ + [_QWERTY] = LAYOUT_wrapper( + KC_ESC, _1_____2_____3_____4_____5, _6_____7_____8_____9_____0, KC_BSPC, + KC_TAB, Q_____W_____E_____R_____T, Y_____U_____I_____O_____P, KC_BSLS, + KC_LCTL, A_____S_____D_____F_____G, H_____J_____K_____L____SCLN, KC_RCTL, + KC_LSFT, Z_____X_____C_____V_____B, GRV__QUOT, N_____M____COMM__DOT___SLSH, KC_RSFT, + LOWER__LOWER__CAPS__LALT__LGUI__SPC__RABS, RAEN___SPC___RGUI__RALT__APP___LOWER__LOWER ), - /* Colemak - * ,-----------------------------------. ,-----------------------------------. + /* Colemak */ +#define Q_____W_____F_____P_____G KC_Q, KC_W, KC_F, KC_P, KC_G +#define J_____L_____U_____Y____SCLN KC_J, KC_L, KC_U, KC_Y, KC_SCLN +#define A_____R_____S_____T_____D KC_A, KC_R, KC_S, KC_T, KC_D +#define H_____N_____E_____I_____O KC_H, KC_N, KC_E, KC_I, KC_O +#define Z_____X_____C_____V_____B KC_Z, KC_X, KC_C, KC_V, KC_B +#define K_____M____COMM__DOT___SLSH KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH + /* ,-----------------------------------. ,-----------------------------------. * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BS | * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| * | Tab | Q | W | F | P | G | | J | L | U | Y | ; | \ | @@ -106,23 +109,23 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |Lower|Lower|Caps | Alt | GUI |Space| BS |Enter|Space| GUI | Alt |Menu |Lower|Lower| * `-----------------------------------------------------------------------------------' */ -#define _Q_W_F_P_G KC_Q, KC_W, KC_F, KC_P, KC_G -#define _J_L_U_Y_SCLN KC_J, KC_L, KC_U, KC_Y, KC_SCLN -#define _A_R_S_T_D KC_A, KC_R, KC_S, KC_T, KC_D -#define _H_N_E_I_O KC_H, KC_N, KC_E, KC_I, KC_O -#define _Z_X_C_V_B KC_Z, KC_X, KC_C, KC_V, KC_B -#define _K_M_COMM_DOT_SLSH KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH + [_COLEMAK] = LAYOUT_wrapper( + KC_ESC, _1_____2_____3_____4_____5, _6_____7_____8_____9_____0, KC_BSPC, + KC_TAB, Q_____W_____F_____P_____G, J_____L_____U_____Y____SCLN, KC_BSLS, + KC_LCTL, A_____R_____S_____T_____D, H_____N_____E_____I_____O, KC_RCTL, + KC_LSFT, Z_____X_____C_____V_____B, GRV__QUOT, K_____M____COMM__DOT___SLSH, KC_RSFT, + LOWER__LOWER__CAPS__LALT__LGUI__SPC__RABS, RAEN___SPC___RGUI__RALT__APP___LOWER__LOWER + ), - [_COLEMAK] = LAYOUT_wrapper( \ - KC_ESC, _1_2_3_4_5, _6_7_8_9_0, KC_BSPC, \ - KC_TAB, _Q_W_F_P_G, _J_L_U_Y_SCLN, KC_BSLS, \ - KC_LCTL, _A_R_S_T_D, _H_N_E_I_O, KC_RCTL, \ - KC_LSFT, _Z_X_C_V_B, KC_GRV, KC_QUOT, _K_M_COMM_DOT_SLSH, KC_RSFT, \ - L_LOWER2_CAPS_LALT_LGUI_SPC_RABS, R_RAEN_SPC_RGUI_RALT_APP_LOWER2 \ - ), - - /* Dvorak - * ,-----------------------------------. ,-----------------------------------. + /* Dvorak */ +#define QUOT_COMM___DOT____P_____Y KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y +#define F_____G_____C_____R_____L KC_F, KC_G, KC_C, KC_R, KC_L +#define A_____O_____E_____U_____I KC_A, KC_O, KC_E, KC_U, KC_I +#define D_____H_____T_____N_____S KC_D, KC_H, KC_T, KC_N, KC_S +#define SCLN___Q_____J_____K_____X KC_SCLN, KC_Q, KC_J, KC_K, KC_X +#define B_____M_____W_____V_____Z KC_B, KC_M, KC_W, KC_V, KC_Z +#define GRV__SLSH KC_GRV, KC_SLSH + /* ,-----------------------------------. ,-----------------------------------. * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BS | * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| * | Tab | ' | , | . | P | Y | | F | G | C | R | L | \ | @@ -134,23 +137,22 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |Lower|Lower|Caps | Alt | GUI |Space| BS |Enter|Space| GUI | Alt |Menu |Lower|Lower| * `-----------------------------------------------------------------------------------' */ -#define _QUOT_COMM_DOT_P_Y KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y -#define _F_G_C_R_L KC_F, KC_G, KC_C, KC_R, KC_L -#define _A_O_E_U_I KC_A, KC_O, KC_E, KC_U, KC_I -#define _D_H_T_N_S KC_D, KC_H, KC_T, KC_N, KC_S -#define _SCLN_Q_J_K_X KC_SCLN, KC_Q, KC_J, KC_K, KC_X -#define _B_M_W_V_Z KC_B, KC_M, KC_W, KC_V, KC_Z - - [_DVORAK] = LAYOUT_wrapper( \ - KC_ESC, _1_2_3_4_5, _6_7_8_9_0, KC_BSPC, \ - KC_TAB, _QUOT_COMM_DOT_P_Y, _F_G_C_R_L, KC_BSLS, \ - KC_LCTL, _A_O_E_U_I, _D_H_T_N_S, KC_RCTL, \ - KC_LSFT, _SCLN_Q_J_K_X, KC_GRV, KC_SLSH, _B_M_W_V_Z, KC_RSFT, \ - L_LOWER2_CAPS_LALT_LGUI_SPC_RABS, R_RAEN_SPC_RGUI_RALT_APP_LOWER2 \ + [_DVORAK] = LAYOUT_wrapper( + KC_ESC, _1_____2_____3_____4_____5, _6_____7_____8_____9_____0, KC_BSPC, + KC_TAB, QUOT_COMM___DOT____P_____Y, F_____G_____C_____R_____L, KC_BSLS, + KC_LCTL, A_____O_____E_____U_____I, D_____H_____T_____N_____S, KC_RCTL, + KC_LSFT, SCLN___Q_____J_____K_____X, GRV__SLSH, B_____M_____W_____V_____Z, KC_RSFT, + LOWER__LOWER__CAPS__LALT__LGUI__SPC__RABS, RAEN___SPC___RGUI__RALT__APP___LOWER__LOWER ), - /* Eucalyn (http://eucalyn.hatenadiary.jp/entry/about-eucalyn-layout) - * ,-----------------------------------. ,-----------------------------------. + /* Eucalyn (http://eucalyn.hatenadiary.jp/entry/about-eucalyn-layout) */ +#define Q_____W___COMM___DOT__SCLN KC_Q, KC_W, KC_COMM, KC_DOT, KC_SCLN +#define M_____R_____D_____Y_____P KC_M, KC_R, KC_D, KC_Y, KC_P +#define A_____O_____E_____I_____U KC_A, KC_O, KC_E, KC_I, KC_U +#define G_____T_____K_____S_____N KC_G, KC_T, KC_K, KC_S, KC_N +#define Z_____X_____C_____V_____F KC_Z, KC_X, KC_C, KC_V, KC_F +#define B_____H_____J_____L____SLSH KC_B, KC_H, KC_J, KC_L, KC_SLSH + /* ,-----------------------------------. ,-----------------------------------. * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BS | * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| * | Tab | Q | W | , | . | ; | | M | R | D | Y | P | \ | @@ -162,23 +164,27 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |Lower|Lower|Caps | Alt | GUI |Space| BS |Enter|Space| GUI | Alt |Menu |Lower|Lower| * `-----------------------------------------------------------------------------------' */ -#define _Q_W_COMM_DOT_SCLN KC_Q, KC_W, KC_COMM, KC_DOT, KC_SCLN -#define _M_R_D_Y_P KC_M, KC_R, KC_D, KC_Y, KC_P -#define _A_O_E_I_U KC_A, KC_O, KC_E, KC_I, KC_U -#define _G_T_K_S_N KC_G, KC_T, KC_K, KC_S, KC_N -#define _Z_X_C_V_F KC_Z, KC_X, KC_C, KC_V, KC_F -#define _B_H_J_L_SLSH KC_B, KC_H, KC_J, KC_L, KC_SLSH + [_EUCALYN] = LAYOUT_wrapper( + KC_ESC, _1_____2_____3_____4_____5, _6_____7_____8_____9_____0, KC_BSPC, + KC_TAB, Q_____W___COMM___DOT__SCLN, M_____R_____D_____Y_____P, KC_BSLS, + KC_LCTL, A_____O_____E_____I_____U, G_____T_____K_____S_____N, KC_RCTL, + KC_LSFT, Z_____X_____C_____V_____F, GRV__QUOT, B_____H_____J_____L____SLSH, KC_RSFT, + LOWER__LOWER__CAPS__LALT__LGUI__SPC__RABS, RAEN___SPC___RGUI__RALT__APP___LOWER__LOWER + ), - [_EUCALYN] = LAYOUT_wrapper( \ - KC_ESC, _1_2_3_4_5, _6_7_8_9_0, KC_BSPC, \ - KC_TAB, _Q_W_COMM_DOT_SCLN, _M_R_D_Y_P, KC_BSLS, \ - KC_LCTL, _A_O_E_I_U, _G_T_K_S_N, KC_RCTL, \ - KC_LSFT, _Z_X_C_V_F, KC_GRV, KC_QUOT, _B_H_J_L_SLSH, KC_RSFT, \ - L_LOWER2_CAPS_LALT_LGUI_SPC_RABS, R_RAEN_SPC_RGUI_RALT_APP_LOWER2 \ - ), - - /* Keypad - * ,-----------------------------------. ,-----------------------------------. + /* Keypad */ +#define KP_TAB__PSLS_PAST KC_TAB, KC_PSLS, KC_PAST +#define KP__7_____8_____9 KC_KP_7, KC_KP_8, KC_KP_9 +#define KP__4_____5_____6 KC_KP_4, KC_KP_5, KC_KP_6 +#define KP__1_____2_____3 KC_KP_1, KC_KP_2, KC_KP_3 +#define KP__0___COMM_PDOT KC_KP_0, KC_COMM, KC_PDOT +#define F1___F6 KC_F1, KC_F6 +#define F2___F7 KC_F2, KC_F7 +#define F3___F8 KC_F3, KC_F8 +#define F4___F9 KC_F4, KC_F9 +#define F5__F10 KC_F5, KC_F10 +#define FF12 LT(_PADFUNC,KC_F12) + /* ,-----------------------------------. ,-----------------------------------. * | Tab | / | * | Del | F1 | F6 | | F1 | F6 | Del | Tab | / | * | * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| * | 7 | 8 | 9 | BS | F2 | F7 | | F2 | F7 | BS | 7 | 8 | 9 | @@ -190,25 +196,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | 0 | , | . |Enter| F5 | F10| F12 | F12 | F5 | F10|Enter| 0 | , | . | * `-----------------------------------------------------------------------------------' */ -#define KP_TOP KC_TAB, KC_PSLS, KC_PAST -#define KP_789 KC_KP_7, KC_KP_8, KC_KP_9 -#define KP_456 KC_KP_4, KC_KP_5, KC_KP_6 -#define KP_123 KC_KP_1, KC_KP_2, KC_KP_3 -#define KP_BTM KC_KP_0, KC_COMM, KC_PDOT -#define F_1_6 KC_F1, KC_F6 -#define F_2_7 KC_F2, KC_F7 -#define F_3_8 KC_F3, KC_F8 -#define F_4_9 KC_F4, KC_F9 -#define F_510 KC_F5, KC_F10 -#define FF12 LT(_PADFUNC,KC_F12) - - [_KEYPAD] = LAYOUT_wrapper( \ - KP_TOP, KC_DEL, F_1_6, F_1_6, KC_DEL, KP_TOP, \ - KP_789, KC_BSPC, F_2_7, F_2_7, KC_BSPC, KP_789, \ - KP_456, KC_PMNS, F_3_8, F_3_8, KC_PMNS, KP_456, \ - KP_123, KC_PPLS, F_4_9, KC_F11, KC_F11, F_4_9, KC_PPLS, KP_123, \ - KP_BTM, KC_PENT, F_510, FF12, FF12, F_510, KC_PENT, KP_BTM \ - ), + [_KEYPAD] = LAYOUT_wrapper( + KP_TAB__PSLS_PAST, KC_DEL, F1___F6, F1___F6, KC_DEL, KP_TAB__PSLS_PAST, + KP__7_____8_____9, KC_BSPC, F2___F7, F2___F7, KC_BSPC, KP__7_____8_____9, + KP__4_____5_____6, KC_PMNS, F3___F8, F3___F8, KC_PMNS, KP__4_____5_____6, + KP__1_____2_____3, KC_PPLS, F4___F9, KC_F11,KC_F11, F4___F9, KC_PPLS, KP__1_____2_____3, + KP__0___COMM_PDOT, KC_PENT, F5__F10, FF12, FF12, F5__F10, KC_PENT, KP__0___COMM_PDOT + ), /* AUX modifier key layer * ,-----------------------------------. ,-----------------------------------. @@ -223,16 +217,23 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | 00 | | | | | | | | | | | 00 | | * `-----------------------------------------------------------------------------------' */ - [_KAUX] = LAYOUT( \ - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ - ____,ZERO2, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____,ZERO2, ____ \ + [_KAUX] = LAYOUT( + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, + ____,ZERO2, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____,ZERO2, ____ ), - /* Keypad function layer - * ,-----------------------------------------. ,-----------------------------------------. + /* Keypad function layer */ +#define PAUS__SLCK__PSCR KC_PAUS, KC_SLCK, KC_PSCR +#define PSCR__SLCK__PAUS KC_PSCR, KC_SLCK, KC_PAUS +#define HOME___UP___PGUP KC_HOME, KC_UP, KC_PGUP +#define PGUP___UP___HOME KC_PGUP, KC_UP, KC_HOME +#define DEL____INS__LEFT__DOWN__RGHT KC_DEL, KC_INS, KC_LEFT, KC_DOWN, KC_RGHT +#define LEFT__DOWN__RGHT___INS___DEL KC_LEFT, KC_DOWN, KC_RGHT, KC_INS, KC_DEL +#define PGDN___ADJ___ADJ__PGDN KC_PGDN, KC_ADJ, KC_ADJ, KC_PGDN + /* ,-----------------------------------------. ,-----------------------------------------. * | | | | Pause| ScrLk| PtrSc| | PtrSc| ScrLk| Pause| | | | * |------+------+------+------+------+------| |------+------+------+------+------+------| * | | | | Home | Up | PgUp | | PgUp | Up | Home | | | | @@ -244,55 +245,53 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | | | | | | | * `-------------------------------------------------------------------------------------------------' */ -#define _PAUS_SLCK_PSCR KC_PAUS, KC_SLCK, KC_PSCR -#define _PSCR_SLCK_PAUS KC_PSCR, KC_SLCK, KC_PAUS -#define _HOME_UP_PGUP KC_HOME, KC_UP, KC_PGUP -#define _PGUP_UP_HOME KC_PGUP, KC_UP, KC_HOME -#define _DEL_INS_LEFT_DOWN_RGHT KC_DEL, KC_INS, KC_LEFT, KC_DOWN, KC_RGHT -#define _LEFT_DOWN_RGHT_INS_DEL KC_LEFT, KC_DOWN, KC_RGHT, KC_INS, KC_DEL -#define _PGDN_ADJ_ADJ_PGDN KC_PGDN, KC_ADJ, KC_ADJ, KC_PGDN - - [_PADFUNC] = LAYOUT_wrapper( \ - XXXX, XXXX, XXXX, _PAUS_SLCK_PSCR, _PSCR_SLCK_PAUS, XXXX, XXXX, XXXX, \ - XXXX, XXXX, XXXX, _HOME_UP_PGUP, _PGUP_UP_HOME, XXXX, XXXX, XXXX, \ - XXXX, _DEL_INS_LEFT_DOWN_RGHT, _LEFT_DOWN_RGHT_INS_DEL, XXXX, \ - XXXX, XXXX, XXXX, KC_END, XXXX, _PGDN_ADJ_ADJ_PGDN, XXXX, KC_END, XXXX, XXXX, XXXX, \ - XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, ____, ____, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX \ + [_PADFUNC] = LAYOUT_wrapper( + XXXX, XXXX, XXXX, PAUS__SLCK__PSCR, PSCR__SLCK__PAUS, XXXX, XXXX, XXXX, + XXXX, XXXX, XXXX, HOME___UP___PGUP, PGUP___UP___HOME, XXXX, XXXX, XXXX, + XXXX, DEL____INS__LEFT__DOWN__RGHT, LEFT__DOWN__RGHT___INS___DEL, XXXX, + XXXX, XXXX, XXXX,KC_END,XXXX, PGDN___ADJ___ADJ__PGDN, XXXX,KC_END,XXXX, XXXX, XXXX, + XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, ____, ____, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX ), - /* Lower - * ,-----------------------------------------. ,-----------------------------------------. + /* Lower */ +#define F1____F2____F3____F4____F5 KC_F1, KC_F2, KC_F3, KC_F4, KC_F5 +#define F6____F7____F8____F9____F10 KC_F6, KC_F7, KC_F8, KC_F9, KC_F10 +#define XXXX__PAUS__SLCK___INS XXXX, KC_PAUS, KC_SLCK, KC_INS +#define XXXX___INS__SLCK__PAUS__XXXX XXXX, KC_INS, KC_SLCK, KC_PAUS, XXXX +#define ADJ___ADJ KC_ADJ, KC_ADJ +#define HOME__XXXX___UP____DEL__PGUP KC_HOME, XXXX, KC_UP, KC_DEL, KC_PGUP +#define PGUP___DEL___UP___XXXX__HOME KC_PGUP, KC_DEL, KC_UP, XXXX, KC_HOME +#define END__LEFT__DOWN__RGHT__PGDN KC_END, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN +#define PGDN__LEFT__DOWN__RGHT___END KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_END + /* ,-----------------------------------------. ,-----------------------------------------. * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 | * |------+------+------+------+------+------| |------+------+------+------+------+------| * | | |Pause | ScrLk| Ins | | | | Ins | ScrLk|Pause | | F12 | * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | PgUp | | Up |Delete| Home | | Home |Delete| Up | | PgUp | | + * | | Home | | Up |Delete| PgUp | | PgUp |Delete| Up | | Home | | * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | PgDn | Left | Down | Right| End |Adjust|Adjust| End | Left | Down | Right| PgDn | | + * | | End | Left | Down | Right| PgDn |Adjust|Adjust| PgDn | Left | Down | Right| End | | * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| * | | | PrtSc| | | | | | | | | PrtSc| | | * `-------------------------------------------------------------------------------------------------' */ -#define _F1_F2_F3_F4_F5 KC_F1, KC_F2, KC_F3, KC_F4, KC_F5 -#define _F6_F7_F8_F9_F10_F11 KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11 -#define _PAUS_SLCK_INS KC_PAUS, KC_SLCK, KC_INS -#define _INS_SLCK_PAUS KC_INS, KC_SLCK, KC_PAUS -#define _ADJ_ADJ KC_ADJ, KC_ADJ -#define _UP_DEL_PGUP KC_UP, KC_DEL, KC_PGUP -#define _PGUP_DEL_UP KC_PGUP, KC_DEL, KC_UP -#define _END_LEFT_DOWN_RGHT_PGDN KC_END, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN -#define _PGDN_LEFT_DOWN_RGHT_END KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_END + [_LOWER] = LAYOUT_wrapper( + XXXX, F1____F2____F3____F4____F5, F6____F7____F8____F9____F10, KC_F11, + XXXX, XXXX__PAUS__SLCK___INS, XXXX, XXXX___INS__SLCK__PAUS__XXXX, KC_F12, + ____, HOME__XXXX___UP____DEL__PGUP, PGUP___DEL___UP___XXXX__HOME, ____, + ____, END__LEFT__DOWN__RGHT__PGDN, XXXX, XXXX, PGDN__LEFT__DOWN__RGHT___END, ____, + ____, ____,KC_PSCR,____, ____, ____, ADJ___ADJ, ____, ____, ____,KC_PSCR,____, ____ + ), - [_LOWER] = LAYOUT_wrapper( \ - XXXX, _F1_F2_F3_F4_F5, _F6_F7_F8_F9_F10_F11, \ - XXXX, XXXX, _PAUS_SLCK_INS, XXXX, XXXX, _INS_SLCK_PAUS, XXXX, KC_F12, \ - ____, KC_HOME, XXXX, _UP_DEL_PGUP, _PGUP_DEL_UP, XXXX, KC_HOME, ____, \ - ____, _END_LEFT_DOWN_RGHT_PGDN, XXXX, XXXX, _PGDN_LEFT_DOWN_RGHT_END, ____, \ - ____, ____, KC_PSCR, ____, ____, ____, _ADJ_ADJ, ____, ____, ____, KC_PSCR, ____, ____ \ - ), - - /* Raise - * ,-----------------------------------------. ,-----------------------------------------. + /* Raise */ +#define UNDS__MINS KC_UNDS, KC_MINS +#define EQL___PLUS KC_EQL, KC_PLUS +#define LCBR__LBRC KC_LCBR, KC_LBRC +#define RBRC__RCBR KC_RBRC, KC_RCBR +#define MNXT__VOLD__VOLU__MPLY KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY +#define EISU__EISU xEISU, xEISU +#define KANA__KANA xKANA, xKANA + /* ,-----------------------------------------. ,-----------------------------------------. * | | | | | | | | | | | | | | * |------+------+------+------+------+------| |------+------+------+------+------+------| * | | | | | _ | - | | = | + | | | | | @@ -304,19 +303,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | | | | | | | * `-------------------------------------------------------------------------------------------------' */ -#define _LSMI_MINS KC_LSMI, KC_MINS -#define _EQL_LSEQ KC_EQL, KC_LSEQ -#define _LSLB_LBRC KC_LSLB, KC_LBRC -#define _RBRC_LSRB KC_RBRC, KC_LSRB -#define _MNXT_VOLD_VOLU_MPLY KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY - - [_RAISE] = LAYOUT_wrapper( \ - XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, \ - XXXX, XXXX, XXXX, XXXX, _LSMI_MINS, _EQL_LSEQ, XXXX, XXXX, XXXX, XXXX, \ - ____, XXXX, XXXX, XXXX, _LSLB_LBRC, _RBRC_LSRB, XXXX, XXXX, XXXX, ____, \ - ____, XXXX, XXXX, XXXX, XXXX,xEISU,xEISU, xKANA,xKANA, _MNXT_VOLD_VOLU_MPLY, ____, \ - _ADJ_ADJ, XXXX, ____, ____, XXXX, ____, ____, XXXX, ____, ____, XXXX, _ADJ_ADJ \ - ), + [_RAISE] = LAYOUT_wrapper( + XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, + XXXX, XXXX, XXXX, XXXX, UNDS__MINS, EQL___PLUS, XXXX, XXXX, XXXX, XXXX, + ____, XXXX, XXXX, XXXX, LCBR__LBRC, RBRC__RCBR, XXXX, XXXX, XXXX, ____, + ____, XXXX, XXXX, XXXX, XXXX, EISU__EISU, KANA__KANA, MNXT__VOLD__VOLU__MPLY, ____, + ADJ___ADJ, XXXX, ____, ____, XXXX, ____, ____, XXXX, ____, ____, XXXX, ADJ___ADJ + ), /* Adjust (Lower + Raise) * ,-----------------------------------------. ,-----------------------------------------. @@ -331,16 +324,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | | | | | | | * `-------------------------------------------------------------------------------------------------' */ - [_ADJUST] = LAYOUT( \ - XXXXXXX, KEYPAD, DVORAK, COLEMAK, EUCALYN, QWERTY, QWERTY, EUCALYN, COLEMAK, DVORAK, KEYPAD, XXXXXXX, \ - XXXXXXX, RESET, RGBRST, RGB_TOG, AU_ON, AG_SWAP, AG_SWAP, AU_ON, RGB_TOG, RGBRST, XXXXXXX, XXXXXXX, \ - RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, AU_OFF, AG_NORM, AG_NORM, AU_OFF, RGB_MOD, RGB_VAI, RGB_SAI, RGB_HUI, \ - RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX,____,____,XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAD, RGB_SAD, RGB_HUD, \ - _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,____,____,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______ \ + [_ADJUST] = LAYOUT( + XXXXXXX, KEYPAD, DVORAK, COLEMAK, EUCALYN, QWERTY, QWERTY, EUCALYN, COLEMAK, DVORAK, KEYPAD, XXXXXXX, + XXXXXXX, RESET, RGBRST, RGB_TOG, AU_ON, AG_SWAP, AG_SWAP, AU_ON, RGB_TOG, RGBRST, XXXXXXX, XXXXXXX, + RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, AU_OFF, AG_NORM, AG_NORM, AU_OFF, RGB_MOD, RGB_VAI, RGB_SAI, RGB_HUI, + RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX,____,____,XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAD, RGB_SAD, RGB_HUD, + _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,____,____,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______ ), - /* AUX modifier key layer - * ,-----------------------------------------. ,-----------------------------------------. + /* AUX modifier key layer */ +#define BSPC__RAEN KC_BSPC, LT(_RAISE,KC_ENT) + /* ,-----------------------------------------. ,-----------------------------------------. * | | | | | | | | | | | | | | * |------+------+------+------+------+------| |------+------+------+------+------+------| * | | | | | | | | | | | | | | @@ -352,14 +346,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | BS | Enter| | | | | | | | * `-------------------------------------------------------------------------------------------------' */ -#define _BSPC_RAEN KC_BSPC, LT(_RAISE,KC_ENT) - [_AUX] = LAYOUT_wrapper( \ - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ - ____, ____, ____, ____, ____, _BSPC_RAEN, ____, ____, ____, ____, ____, ____, ____ \ - ) + [_AUX] = LAYOUT_wrapper( + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, + ____, ____, ____, ____, ____, BSPC__RAEN, ____, ____, ____, ____, ____, ____, ____ + ) }; #else diff --git a/keyboards/helix/rev2/keymaps/five_rows/rules.mk b/keyboards/helix/rev2/keymaps/five_rows/rules.mk index fbde2fe6a6..58b7ef4efc 100644 --- a/keyboards/helix/rev2/keymaps/five_rows/rules.mk +++ b/keyboards/helix/rev2/keymaps/five_rows/rules.mk @@ -35,6 +35,20 @@ ifneq ($(strip $(HELIX)),) LED_BACK_ENABLE = no LED_UNDERGLOW_ENABLE = no endif + ifneq ($(filter nooled no-oled,$(strip $1)),) + OLED_ENABLE = no + endif + ifeq ($(strip $1),oled) + OLED_ENABLE = yes + endif + ifneq ($(filter core-oled core_oled newoled new-oled olednew oled-new,$(strip $1)),) + OLED_ENABLE = yes + OLED_SELECT = core + endif + ifneq ($(filter local-oled local_oled oldoled old-oled oledold oled-old,$(strip $1)),) + OLED_ENABLE = yes + OLED_SELECT = local + endif ifeq ($(strip $1),console) CONSOLE_ENABLE = yes endif @@ -79,10 +93,10 @@ ifeq ($(strip $(DEBUG_CONFIG)), yes) OPT_DEFS += -DDEBUG_CONFIG endif -# convert Helix-specific options (that represent combinations of standard options) -# into QMK standard options. -include $(strip $(KEYBOARD_LOCAL_FEATURES_MK)) - ifeq ($(strip $(OLED_ENABLE)), yes) SRC += oled_display.c endif + +# convert Helix-specific options (that represent combinations of standard options) +# into QMK standard options. +include $(strip $(KEYBOARD_LOCAL_FEATURES_MK)) diff --git a/keyboards/helix/rev3_5rows/keymaps/five_rows/config.h b/keyboards/helix/rev3_5rows/keymaps/five_rows/config.h index 205867e5b7..b9961f5c48 100644 --- a/keyboards/helix/rev3_5rows/keymaps/five_rows/config.h +++ b/keyboards/helix/rev3_5rows/keymaps/five_rows/config.h @@ -22,19 +22,21 @@ along with this program. If not, see . #ifndef CONFIG_USER_H #define CONFIG_USER_H -#undef OLED_UPDATE_INTERVAL -#define OLED_UPDATE_INTERVAL 50 - #undef TAPPING_TERM #define TAPPING_TERM 300 #define PERMISSIVE_HOLD /* when TAPPING_TERM >= 500 same effect PERMISSIVE_HOLD. see tmk_core/common/action_tapping.c */ +#undef OLED_UPDATE_INTERVAL +#define OLED_UPDATE_INTERVAL 50 + // place overrides here // If you need more program area, try select and reduce rgblight modes to use. +#define DISABLE_SYNC_TIMER + // Selection of RGBLIGHT MODE to use. #undef RGBLIGHT_ANIMATIONS #undef RGBLIGHT_EFFECT_BREATHING diff --git a/keyboards/helix/rev3_5rows/keymaps/five_rows/keymap.c b/keyboards/helix/rev3_5rows/keymaps/five_rows/keymap.c index a2ec108624..16eff49244 100644 --- a/keyboards/helix/rev3_5rows/keymaps/five_rows/keymap.c +++ b/keyboards/helix/rev3_5rows/keymaps/five_rows/keymap.c @@ -42,6 +42,8 @@ enum custom_keycodes { RGBRST }; +// clang-format off + #define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__) //Macros @@ -49,24 +51,26 @@ enum custom_keycodes { #define XXXX XXXXXXX #define ____ _______ #define KC_ADJ MO(_ADJUST) -#define KC_LSMI LSFT(KC_MINS) -#define KC_LSEQ LSFT(KC_EQL) -#define KC_LSRB LSFT(KC_RBRC) -#define KC_LSLB LSFT(KC_LBRC) -#define _1_2_3_4_5 KC_1, KC_2, KC_3, KC_4, KC_5 -#define _6_7_8_9_0 KC_6, KC_7, KC_8, KC_9, KC_0 -#define L_LOWER2_CAPS_LALT_LGUI_SPC_RABS \ +#define _1_____2_____3_____4_____5 KC_1, KC_2, KC_3, KC_4, KC_5 +#define _6_____7_____8_____9_____0 KC_6, KC_7, KC_8, KC_9, KC_0 +#define LOWER__LOWER__CAPS__LALT__LGUI__SPC__RABS \ KC_LOWER, KC_LOWER, KC_CAPS, KC_LALT, KC_LGUI, KC_SPC, LT(_RAISE,KC_BSPC) -#define R_RAEN_SPC_RGUI_RALT_APP_LOWER2 \ +#define RAEN___SPC___RGUI__RALT__APP___LOWER__LOWER \ LT(_RAISE,KC_ENT), KC_SPC, KC_RGUI, KC_RALT, KC_APP, KC_LOWER, KC_LOWER - +#define GRV__QUOT KC_GRV, KC_QUOT #if MATRIX_ROWS == 10 // HELIX_ROWS == 5 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Qwerty - * ,-----------------------------------. ,-----------------------------------. + /* Qwerty */ +#define Q_____W_____E_____R_____T KC_Q, KC_W, KC_E, KC_R, KC_T +#define Y_____U_____I_____O_____P KC_Y, KC_U, KC_I, KC_O, KC_P +#define A_____S_____D_____F_____G KC_A, KC_S, KC_D, KC_F, KC_G +#define H_____J_____K_____L____SCLN KC_H, KC_J, KC_K, KC_L, KC_SCLN +#define Z_____X_____C_____V_____B KC_Z, KC_X, KC_C, KC_V, KC_B +#define N_____M____COMM__DOT___SLSH KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH + /* ,-----------------------------------. ,-----------------------------------. * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BS | * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| * | Tab | Q | W | E | R | T | | Y | U | I | O | P | \ | @@ -78,23 +82,22 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |Lower|Lower|Caps | Alt | GUI |Space| BS |Enter|Space| GUI | Alt |Menu |Lower|Lower| * `-----------------------------------------------------------------------------------' */ -#define _Q_W_E_R_T KC_Q, KC_W, KC_E, KC_R, KC_T -#define _Y_U_I_O_P KC_Y, KC_U, KC_I, KC_O, KC_P -#define _A_S_D_F_G KC_A, KC_S, KC_D, KC_F, KC_G -#define _H_J_K_L_SCLN KC_H, KC_J, KC_K, KC_L, KC_SCLN -#define _Z_X_C_V_B KC_Z, KC_X, KC_C, KC_V, KC_B -#define _N_M_COMM_DOT_SLSH KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH - - [_QWERTY] = LAYOUT_wrapper( \ - KC_ESC, _1_2_3_4_5, _6_7_8_9_0, KC_BSPC, \ - KC_TAB, _Q_W_E_R_T, _Y_U_I_O_P, KC_BSLS, \ - KC_LCTL, _A_S_D_F_G, _H_J_K_L_SCLN, KC_RCTL, \ - KC_LSFT, _Z_X_C_V_B, KC_GRV, KC_QUOT, _N_M_COMM_DOT_SLSH, KC_RSFT, \ - L_LOWER2_CAPS_LALT_LGUI_SPC_RABS, R_RAEN_SPC_RGUI_RALT_APP_LOWER2 \ + [_QWERTY] = LAYOUT_wrapper( + KC_ESC, _1_____2_____3_____4_____5, _6_____7_____8_____9_____0, KC_BSPC, + KC_TAB, Q_____W_____E_____R_____T, Y_____U_____I_____O_____P, KC_BSLS, + KC_LCTL, A_____S_____D_____F_____G, H_____J_____K_____L____SCLN, KC_RCTL, + KC_LSFT, Z_____X_____C_____V_____B, GRV__QUOT, N_____M____COMM__DOT___SLSH, KC_RSFT, + LOWER__LOWER__CAPS__LALT__LGUI__SPC__RABS, RAEN___SPC___RGUI__RALT__APP___LOWER__LOWER ), - /* Colemak - * ,-----------------------------------. ,-----------------------------------. + /* Colemak */ +#define Q_____W_____F_____P_____G KC_Q, KC_W, KC_F, KC_P, KC_G +#define J_____L_____U_____Y____SCLN KC_J, KC_L, KC_U, KC_Y, KC_SCLN +#define A_____R_____S_____T_____D KC_A, KC_R, KC_S, KC_T, KC_D +#define H_____N_____E_____I_____O KC_H, KC_N, KC_E, KC_I, KC_O +#define Z_____X_____C_____V_____B KC_Z, KC_X, KC_C, KC_V, KC_B +#define K_____M____COMM__DOT___SLSH KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH + /* ,-----------------------------------. ,-----------------------------------. * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BS | * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| * | Tab | Q | W | F | P | G | | J | L | U | Y | ; | \ | @@ -106,23 +109,23 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |Lower|Lower|Caps | Alt | GUI |Space| BS |Enter|Space| GUI | Alt |Menu |Lower|Lower| * `-----------------------------------------------------------------------------------' */ -#define _Q_W_F_P_G KC_Q, KC_W, KC_F, KC_P, KC_G -#define _J_L_U_Y_SCLN KC_J, KC_L, KC_U, KC_Y, KC_SCLN -#define _A_R_S_T_D KC_A, KC_R, KC_S, KC_T, KC_D -#define _H_N_E_I_O KC_H, KC_N, KC_E, KC_I, KC_O -#define _Z_X_C_V_B KC_Z, KC_X, KC_C, KC_V, KC_B -#define _K_M_COMM_DOT_SLSH KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH + [_COLEMAK] = LAYOUT_wrapper( + KC_ESC, _1_____2_____3_____4_____5, _6_____7_____8_____9_____0, KC_BSPC, + KC_TAB, Q_____W_____F_____P_____G, J_____L_____U_____Y____SCLN, KC_BSLS, + KC_LCTL, A_____R_____S_____T_____D, H_____N_____E_____I_____O, KC_RCTL, + KC_LSFT, Z_____X_____C_____V_____B, GRV__QUOT, K_____M____COMM__DOT___SLSH, KC_RSFT, + LOWER__LOWER__CAPS__LALT__LGUI__SPC__RABS, RAEN___SPC___RGUI__RALT__APP___LOWER__LOWER + ), - [_COLEMAK] = LAYOUT_wrapper( \ - KC_ESC, _1_2_3_4_5, _6_7_8_9_0, KC_BSPC, \ - KC_TAB, _Q_W_F_P_G, _J_L_U_Y_SCLN, KC_BSLS, \ - KC_LCTL, _A_R_S_T_D, _H_N_E_I_O, KC_RCTL, \ - KC_LSFT, _Z_X_C_V_B, KC_GRV, KC_QUOT, _K_M_COMM_DOT_SLSH, KC_RSFT, \ - L_LOWER2_CAPS_LALT_LGUI_SPC_RABS, R_RAEN_SPC_RGUI_RALT_APP_LOWER2 \ - ), - - /* Dvorak - * ,-----------------------------------. ,-----------------------------------. + /* Dvorak */ +#define QUOT_COMM___DOT____P_____Y KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y +#define F_____G_____C_____R_____L KC_F, KC_G, KC_C, KC_R, KC_L +#define A_____O_____E_____U_____I KC_A, KC_O, KC_E, KC_U, KC_I +#define D_____H_____T_____N_____S KC_D, KC_H, KC_T, KC_N, KC_S +#define SCLN___Q_____J_____K_____X KC_SCLN, KC_Q, KC_J, KC_K, KC_X +#define B_____M_____W_____V_____Z KC_B, KC_M, KC_W, KC_V, KC_Z +#define GRV__SLSH KC_GRV, KC_SLSH + /* ,-----------------------------------. ,-----------------------------------. * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BS | * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| * | Tab | ' | , | . | P | Y | | F | G | C | R | L | \ | @@ -134,23 +137,22 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |Lower|Lower|Caps | Alt | GUI |Space| BS |Enter|Space| GUI | Alt |Menu |Lower|Lower| * `-----------------------------------------------------------------------------------' */ -#define _QUOT_COMM_DOT_P_Y KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y -#define _F_G_C_R_L KC_F, KC_G, KC_C, KC_R, KC_L -#define _A_O_E_U_I KC_A, KC_O, KC_E, KC_U, KC_I -#define _D_H_T_N_S KC_D, KC_H, KC_T, KC_N, KC_S -#define _SCLN_Q_J_K_X KC_SCLN, KC_Q, KC_J, KC_K, KC_X -#define _B_M_W_V_Z KC_B, KC_M, KC_W, KC_V, KC_Z - - [_DVORAK] = LAYOUT_wrapper( \ - KC_ESC, _1_2_3_4_5, _6_7_8_9_0, KC_BSPC, \ - KC_TAB, _QUOT_COMM_DOT_P_Y, _F_G_C_R_L, KC_BSLS, \ - KC_LCTL, _A_O_E_U_I, _D_H_T_N_S, KC_RCTL, \ - KC_LSFT, _SCLN_Q_J_K_X, KC_GRV, KC_SLSH, _B_M_W_V_Z, KC_RSFT, \ - L_LOWER2_CAPS_LALT_LGUI_SPC_RABS, R_RAEN_SPC_RGUI_RALT_APP_LOWER2 \ + [_DVORAK] = LAYOUT_wrapper( + KC_ESC, _1_____2_____3_____4_____5, _6_____7_____8_____9_____0, KC_BSPC, + KC_TAB, QUOT_COMM___DOT____P_____Y, F_____G_____C_____R_____L, KC_BSLS, + KC_LCTL, A_____O_____E_____U_____I, D_____H_____T_____N_____S, KC_RCTL, + KC_LSFT, SCLN___Q_____J_____K_____X, GRV__SLSH, B_____M_____W_____V_____Z, KC_RSFT, + LOWER__LOWER__CAPS__LALT__LGUI__SPC__RABS, RAEN___SPC___RGUI__RALT__APP___LOWER__LOWER ), - /* Eucalyn (http://eucalyn.hatenadiary.jp/entry/about-eucalyn-layout) - * ,-----------------------------------. ,-----------------------------------. + /* Eucalyn (http://eucalyn.hatenadiary.jp/entry/about-eucalyn-layout) */ +#define Q_____W___COMM___DOT__SCLN KC_Q, KC_W, KC_COMM, KC_DOT, KC_SCLN +#define M_____R_____D_____Y_____P KC_M, KC_R, KC_D, KC_Y, KC_P +#define A_____O_____E_____I_____U KC_A, KC_O, KC_E, KC_I, KC_U +#define G_____T_____K_____S_____N KC_G, KC_T, KC_K, KC_S, KC_N +#define Z_____X_____C_____V_____F KC_Z, KC_X, KC_C, KC_V, KC_F +#define B_____H_____J_____L____SLSH KC_B, KC_H, KC_J, KC_L, KC_SLSH + /* ,-----------------------------------. ,-----------------------------------. * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BS | * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| * | Tab | Q | W | , | . | ; | | M | R | D | Y | P | \ | @@ -162,23 +164,27 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |Lower|Lower|Caps | Alt | GUI |Space| BS |Enter|Space| GUI | Alt |Menu |Lower|Lower| * `-----------------------------------------------------------------------------------' */ -#define _Q_W_COMM_DOT_SCLN KC_Q, KC_W, KC_COMM, KC_DOT, KC_SCLN -#define _M_R_D_Y_P KC_M, KC_R, KC_D, KC_Y, KC_P -#define _A_O_E_I_U KC_A, KC_O, KC_E, KC_I, KC_U -#define _G_T_K_S_N KC_G, KC_T, KC_K, KC_S, KC_N -#define _Z_X_C_V_F KC_Z, KC_X, KC_C, KC_V, KC_F -#define _B_H_J_L_SLSH KC_B, KC_H, KC_J, KC_L, KC_SLSH + [_EUCALYN] = LAYOUT_wrapper( + KC_ESC, _1_____2_____3_____4_____5, _6_____7_____8_____9_____0, KC_BSPC, + KC_TAB, Q_____W___COMM___DOT__SCLN, M_____R_____D_____Y_____P, KC_BSLS, + KC_LCTL, A_____O_____E_____I_____U, G_____T_____K_____S_____N, KC_RCTL, + KC_LSFT, Z_____X_____C_____V_____F, GRV__QUOT, B_____H_____J_____L____SLSH, KC_RSFT, + LOWER__LOWER__CAPS__LALT__LGUI__SPC__RABS, RAEN___SPC___RGUI__RALT__APP___LOWER__LOWER + ), - [_EUCALYN] = LAYOUT_wrapper( \ - KC_ESC, _1_2_3_4_5, _6_7_8_9_0, KC_BSPC, \ - KC_TAB, _Q_W_COMM_DOT_SCLN, _M_R_D_Y_P, KC_BSLS, \ - KC_LCTL, _A_O_E_I_U, _G_T_K_S_N, KC_RCTL, \ - KC_LSFT, _Z_X_C_V_F, KC_GRV, KC_QUOT, _B_H_J_L_SLSH, KC_RSFT, \ - L_LOWER2_CAPS_LALT_LGUI_SPC_RABS, R_RAEN_SPC_RGUI_RALT_APP_LOWER2 \ - ), - - /* Keypad - * ,-----------------------------------. ,-----------------------------------. + /* Keypad */ +#define KP_TAB__PSLS_PAST KC_TAB, KC_PSLS, KC_PAST +#define KP__7_____8_____9 KC_KP_7, KC_KP_8, KC_KP_9 +#define KP__4_____5_____6 KC_KP_4, KC_KP_5, KC_KP_6 +#define KP__1_____2_____3 KC_KP_1, KC_KP_2, KC_KP_3 +#define KP__0___COMM_PDOT KC_KP_0, KC_COMM, KC_PDOT +#define F1___F6 KC_F1, KC_F6 +#define F2___F7 KC_F2, KC_F7 +#define F3___F8 KC_F3, KC_F8 +#define F4___F9 KC_F4, KC_F9 +#define F5__F10 KC_F5, KC_F10 +#define FF12 LT(_PADFUNC,KC_F12) + /* ,-----------------------------------. ,-----------------------------------. * | Tab | / | * | Del | F1 | F6 | | F1 | F6 | Del | Tab | / | * | * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| * | 7 | 8 | 9 | BS | F2 | F7 | | F2 | F7 | BS | 7 | 8 | 9 | @@ -190,25 +196,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | 0 | , | . |Enter| F5 | F10| F12 | F12 | F5 | F10|Enter| 0 | , | . | * `-----------------------------------------------------------------------------------' */ -#define KP_TOP KC_TAB, KC_PSLS, KC_PAST -#define KP_789 KC_KP_7, KC_KP_8, KC_KP_9 -#define KP_456 KC_KP_4, KC_KP_5, KC_KP_6 -#define KP_123 KC_KP_1, KC_KP_2, KC_KP_3 -#define KP_BTM KC_KP_0, KC_COMM, KC_PDOT -#define F_1_6 KC_F1, KC_F6 -#define F_2_7 KC_F2, KC_F7 -#define F_3_8 KC_F3, KC_F8 -#define F_4_9 KC_F4, KC_F9 -#define F_510 KC_F5, KC_F10 -#define FF12 LT(_PADFUNC,KC_F12) - - [_KEYPAD] = LAYOUT_wrapper( \ - KP_TOP, KC_DEL, F_1_6, F_1_6, KC_DEL, KP_TOP, \ - KP_789, KC_BSPC, F_2_7, F_2_7, KC_BSPC, KP_789, \ - KP_456, KC_PMNS, F_3_8, F_3_8, KC_PMNS, KP_456, \ - KP_123, KC_PPLS, F_4_9, KC_F11, KC_F11, F_4_9, KC_PPLS, KP_123, \ - KP_BTM, KC_PENT, F_510, FF12, FF12, F_510, KC_PENT, KP_BTM \ - ), + [_KEYPAD] = LAYOUT_wrapper( + KP_TAB__PSLS_PAST, KC_DEL, F1___F6, F1___F6, KC_DEL, KP_TAB__PSLS_PAST, + KP__7_____8_____9, KC_BSPC, F2___F7, F2___F7, KC_BSPC, KP__7_____8_____9, + KP__4_____5_____6, KC_PMNS, F3___F8, F3___F8, KC_PMNS, KP__4_____5_____6, + KP__1_____2_____3, KC_PPLS, F4___F9, KC_F11,KC_F11, F4___F9, KC_PPLS, KP__1_____2_____3, + KP__0___COMM_PDOT, KC_PENT, F5__F10, FF12, FF12, F5__F10, KC_PENT, KP__0___COMM_PDOT + ), /* AUX modifier key layer * ,-----------------------------------. ,-----------------------------------. @@ -223,16 +217,23 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | 00 | | | | | | | | | | | 00 | | * `-----------------------------------------------------------------------------------' */ - [_KAUX] = LAYOUT( \ - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ - ____,ZERO2, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____,ZERO2, ____ \ + [_KAUX] = LAYOUT( + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, + ____,ZERO2, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____,ZERO2, ____ ), - /* Keypad function layer - * ,-----------------------------------------. ,-----------------------------------------. + /* Keypad function layer */ +#define PAUS__SLCK__PSCR KC_PAUS, KC_SLCK, KC_PSCR +#define PSCR__SLCK__PAUS KC_PSCR, KC_SLCK, KC_PAUS +#define HOME___UP___PGUP KC_HOME, KC_UP, KC_PGUP +#define PGUP___UP___HOME KC_PGUP, KC_UP, KC_HOME +#define DEL____INS__LEFT__DOWN__RGHT KC_DEL, KC_INS, KC_LEFT, KC_DOWN, KC_RGHT +#define LEFT__DOWN__RGHT___INS___DEL KC_LEFT, KC_DOWN, KC_RGHT, KC_INS, KC_DEL +#define PGDN___ADJ___ADJ__PGDN KC_PGDN, KC_ADJ, KC_ADJ, KC_PGDN + /* ,-----------------------------------------. ,-----------------------------------------. * | | | | Pause| ScrLk| PtrSc| | PtrSc| ScrLk| Pause| | | | * |------+------+------+------+------+------| |------+------+------+------+------+------| * | | | | Home | Up | PgUp | | PgUp | Up | Home | | | | @@ -244,55 +245,53 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | | | | | | | * `-------------------------------------------------------------------------------------------------' */ -#define _PAUS_SLCK_PSCR KC_PAUS, KC_SLCK, KC_PSCR -#define _PSCR_SLCK_PAUS KC_PSCR, KC_SLCK, KC_PAUS -#define _HOME_UP_PGUP KC_HOME, KC_UP, KC_PGUP -#define _PGUP_UP_HOME KC_PGUP, KC_UP, KC_HOME -#define _DEL_INS_LEFT_DOWN_RGHT KC_DEL, KC_INS, KC_LEFT, KC_DOWN, KC_RGHT -#define _LEFT_DOWN_RGHT_INS_DEL KC_LEFT, KC_DOWN, KC_RGHT, KC_INS, KC_DEL -#define _PGDN_ADJ_ADJ_PGDN KC_PGDN, KC_ADJ, KC_ADJ, KC_PGDN - - [_PADFUNC] = LAYOUT_wrapper( \ - XXXX, XXXX, XXXX, _PAUS_SLCK_PSCR, _PSCR_SLCK_PAUS, XXXX, XXXX, XXXX, \ - XXXX, XXXX, XXXX, _HOME_UP_PGUP, _PGUP_UP_HOME, XXXX, XXXX, XXXX, \ - XXXX, _DEL_INS_LEFT_DOWN_RGHT, _LEFT_DOWN_RGHT_INS_DEL, XXXX, \ - XXXX, XXXX, XXXX, KC_END, XXXX, _PGDN_ADJ_ADJ_PGDN, XXXX, KC_END, XXXX, XXXX, XXXX, \ - XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, ____, ____, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX \ + [_PADFUNC] = LAYOUT_wrapper( + XXXX, XXXX, XXXX, PAUS__SLCK__PSCR, PSCR__SLCK__PAUS, XXXX, XXXX, XXXX, + XXXX, XXXX, XXXX, HOME___UP___PGUP, PGUP___UP___HOME, XXXX, XXXX, XXXX, + XXXX, DEL____INS__LEFT__DOWN__RGHT, LEFT__DOWN__RGHT___INS___DEL, XXXX, + XXXX, XXXX, XXXX,KC_END,XXXX, PGDN___ADJ___ADJ__PGDN, XXXX,KC_END,XXXX, XXXX, XXXX, + XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, ____, ____, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX ), - /* Lower - * ,-----------------------------------------. ,-----------------------------------------. + /* Lower */ +#define F1____F2____F3____F4____F5 KC_F1, KC_F2, KC_F3, KC_F4, KC_F5 +#define F6____F7____F8____F9____F10 KC_F6, KC_F7, KC_F8, KC_F9, KC_F10 +#define XXXX__PAUS__SLCK___INS XXXX, KC_PAUS, KC_SLCK, KC_INS +#define XXXX___INS__SLCK__PAUS__XXXX XXXX, KC_INS, KC_SLCK, KC_PAUS, XXXX +#define ADJ___ADJ KC_ADJ, KC_ADJ +#define HOME__XXXX___UP____DEL__PGUP KC_HOME, XXXX, KC_UP, KC_DEL, KC_PGUP +#define PGUP___DEL___UP___XXXX__HOME KC_PGUP, KC_DEL, KC_UP, XXXX, KC_HOME +#define END__LEFT__DOWN__RGHT__PGDN KC_END, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN +#define PGDN__LEFT__DOWN__RGHT___END KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_END + /* ,-----------------------------------------. ,-----------------------------------------. * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 | * |------+------+------+------+------+------| |------+------+------+------+------+------| * | | |Pause | ScrLk| Ins | | | | Ins | ScrLk|Pause | | F12 | * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | PgUp | | Up |Delete| Home | | Home |Delete| Up | | PgUp | | + * | | Home | | Up |Delete| PgUp | | PgUp |Delete| Up | | Home | | * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | PgDn | Left | Down | Right| End |Adjust|Adjust| End | Left | Down | Right| PgDn | | + * | | End | Left | Down | Right| PgDn |Adjust|Adjust| PgDn | Left | Down | Right| End | | * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| * | | | PrtSc| | | | | | | | | PrtSc| | | * `-------------------------------------------------------------------------------------------------' */ -#define _F1_F2_F3_F4_F5 KC_F1, KC_F2, KC_F3, KC_F4, KC_F5 -#define _F6_F7_F8_F9_F10_F11 KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11 -#define _PAUS_SLCK_INS KC_PAUS, KC_SLCK, KC_INS -#define _INS_SLCK_PAUS KC_INS, KC_SLCK, KC_PAUS -#define _ADJ_ADJ KC_ADJ, KC_ADJ -#define _UP_DEL_PGUP KC_UP, KC_DEL, KC_PGUP -#define _PGUP_DEL_UP KC_PGUP, KC_DEL, KC_UP -#define _END_LEFT_DOWN_RGHT_PGDN KC_END, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN -#define _PGDN_LEFT_DOWN_RGHT_END KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_END + [_LOWER] = LAYOUT_wrapper( + XXXX, F1____F2____F3____F4____F5, F6____F7____F8____F9____F10, KC_F11, + XXXX, XXXX__PAUS__SLCK___INS, XXXX, XXXX___INS__SLCK__PAUS__XXXX, KC_F12, + ____, HOME__XXXX___UP____DEL__PGUP, PGUP___DEL___UP___XXXX__HOME, ____, + ____, END__LEFT__DOWN__RGHT__PGDN, XXXX, XXXX, PGDN__LEFT__DOWN__RGHT___END, ____, + ____, ____,KC_PSCR,____, ____, ____, ADJ___ADJ, ____, ____, ____,KC_PSCR,____, ____ + ), - [_LOWER] = LAYOUT_wrapper( \ - XXXX, _F1_F2_F3_F4_F5, _F6_F7_F8_F9_F10_F11, \ - XXXX, XXXX, _PAUS_SLCK_INS, XXXX, XXXX, _INS_SLCK_PAUS, XXXX, KC_F12, \ - ____, KC_HOME, XXXX, _UP_DEL_PGUP, _PGUP_DEL_UP, XXXX, KC_HOME, ____, \ - ____, _END_LEFT_DOWN_RGHT_PGDN, XXXX, XXXX, _PGDN_LEFT_DOWN_RGHT_END, ____, \ - ____, ____, KC_PSCR, ____, ____, ____, _ADJ_ADJ, ____, ____, ____, KC_PSCR, ____, ____ \ - ), - - /* Raise - * ,-----------------------------------------. ,-----------------------------------------. + /* Raise */ +#define UNDS__MINS KC_UNDS, KC_MINS +#define EQL___PLUS KC_EQL, KC_PLUS +#define LCBR__LBRC KC_LCBR, KC_LBRC +#define RBRC__RCBR KC_RBRC, KC_RCBR +#define MNXT__VOLD__VOLU__MPLY KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY +#define EISU__EISU xEISU, xEISU +#define KANA__KANA xKANA, xKANA + /* ,-----------------------------------------. ,-----------------------------------------. * | | | | | | | | | | | | | | * |------+------+------+------+------+------| |------+------+------+------+------+------| * | | | | | _ | - | | = | + | | | | | @@ -304,19 +303,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | | | | | | | * `-------------------------------------------------------------------------------------------------' */ -#define _LSMI_MINS KC_LSMI, KC_MINS -#define _EQL_LSEQ KC_EQL, KC_LSEQ -#define _LSLB_LBRC KC_LSLB, KC_LBRC -#define _RBRC_LSRB KC_RBRC, KC_LSRB -#define _MNXT_VOLD_VOLU_MPLY KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY - - [_RAISE] = LAYOUT_wrapper( \ - XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, \ - XXXX, XXXX, XXXX, XXXX, _LSMI_MINS, _EQL_LSEQ, XXXX, XXXX, XXXX, XXXX, \ - ____, XXXX, XXXX, XXXX, _LSLB_LBRC, _RBRC_LSRB, XXXX, XXXX, XXXX, ____, \ - ____, XXXX, XXXX, XXXX, XXXX,xEISU,xEISU, xKANA,xKANA, _MNXT_VOLD_VOLU_MPLY, ____, \ - _ADJ_ADJ, XXXX, ____, ____, XXXX, ____, ____, XXXX, ____, ____, XXXX, _ADJ_ADJ \ - ), + [_RAISE] = LAYOUT_wrapper( + XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, + XXXX, XXXX, XXXX, XXXX, UNDS__MINS, EQL___PLUS, XXXX, XXXX, XXXX, XXXX, + ____, XXXX, XXXX, XXXX, LCBR__LBRC, RBRC__RCBR, XXXX, XXXX, XXXX, ____, + ____, XXXX, XXXX, XXXX, XXXX, EISU__EISU, KANA__KANA, MNXT__VOLD__VOLU__MPLY, ____, + ADJ___ADJ, XXXX, ____, ____, XXXX, ____, ____, XXXX, ____, ____, XXXX, ADJ___ADJ + ), /* Adjust (Lower + Raise) * ,-----------------------------------------. ,-----------------------------------------. @@ -331,16 +324,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | | | | | | | * `-------------------------------------------------------------------------------------------------' */ - [_ADJUST] = LAYOUT( \ - XXXXXXX, KEYPAD, DVORAK, COLEMAK, EUCALYN, QWERTY, QWERTY, EUCALYN, COLEMAK, DVORAK, KEYPAD, XXXXXXX, \ - XXXXXXX, RESET, RGBRST, RGB_TOG, AU_ON, AG_SWAP, AG_SWAP, AU_ON, RGB_TOG, RGBRST, XXXXXXX, XXXXXXX, \ - RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, AU_OFF, AG_NORM, AG_NORM, AU_OFF, RGB_MOD, RGB_VAI, RGB_SAI, RGB_HUI, \ - RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX,____,____,XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAD, RGB_SAD, RGB_HUD, \ - _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,____,____,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______ \ + [_ADJUST] = LAYOUT( + XXXXXXX, KEYPAD, DVORAK, COLEMAK, EUCALYN, QWERTY, QWERTY, EUCALYN, COLEMAK, DVORAK, KEYPAD, XXXXXXX, + XXXXXXX, RESET, RGBRST, RGB_TOG, AU_ON, AG_SWAP, AG_SWAP, AU_ON, RGB_TOG, RGBRST, XXXXXXX, XXXXXXX, + RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, AU_OFF, AG_NORM, AG_NORM, AU_OFF, RGB_MOD, RGB_VAI, RGB_SAI, RGB_HUI, + RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX,____,____,XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAD, RGB_SAD, RGB_HUD, + _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,____,____,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______ ), - /* AUX modifier key layer - * ,-----------------------------------------. ,-----------------------------------------. + /* AUX modifier key layer */ +#define BSPC__RAEN KC_BSPC, LT(_RAISE,KC_ENT) + /* ,-----------------------------------------. ,-----------------------------------------. * | | | | | | | | | | | | | | * |------+------+------+------+------+------| |------+------+------+------+------+------| * | | | | | | | | | | | | | | @@ -352,14 +346,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | BS | Enter| | | | | | | | * `-------------------------------------------------------------------------------------------------' */ -#define _BSPC_RAEN KC_BSPC, LT(_RAISE,KC_ENT) - [_AUX] = LAYOUT_wrapper( \ - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ - ____, ____, ____, ____, ____, _BSPC_RAEN, ____, ____, ____, ____, ____, ____, ____ \ - ) + [_AUX] = LAYOUT_wrapper( + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, + ____, ____, ____, ____, ____, BSPC__RAEN, ____, ____, ____, ____, ____, ____, ____ + ) }; #else diff --git a/keyboards/helix/rev3_5rows/keymaps/five_rows/oled_display.c b/keyboards/helix/rev3_5rows/keymaps/five_rows/oled_display.c index 127d80cc7d..689efe4c88 100644 --- a/keyboards/helix/rev3_5rows/keymaps/five_rows/oled_display.c +++ b/keyboards/helix/rev3_5rows/keymaps/five_rows/oled_display.c @@ -163,6 +163,10 @@ void render_status(void) { } # ifdef SSD1306OLED +# if OLED_UPDATE_INTERVAL > 0 +uint16_t oled_update_timeout; +# endif + void iota_gfx_task_user(void) { struct CharacterMatrix matrix; @@ -172,6 +176,12 @@ void iota_gfx_task_user(void) { } # endif +#if OLED_UPDATE_INTERVAL > 0 + if (timer_elapsed(oled_update_timeout) < OLED_UPDATE_INTERVAL) { + return; + } + oled_update_timeout = timer_read(); +#endif matrix_clear(&matrix); if (is_keyboard_master()) { render_status(&matrix); From e0614e4f52875f337668e9530ab3dcf7ce74c8cc Mon Sep 17 00:00:00 2001 From: SneakboxKB <67670271+SneakboxKB@users.noreply.github.com> Date: Sun, 4 Apr 2021 04:09:43 -0500 Subject: [PATCH 184/613] Disarray ProductID change (#12440) Co-authored-by: Joel Challis Co-authored-by: Drashna Jaelre Co-authored-by: mujimanic <64090325+mujimanic@users.noreply.github.com> Co-authored-by: Zach White --- keyboards/sneakbox/disarray/staggered/config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/sneakbox/disarray/staggered/config.h b/keyboards/sneakbox/disarray/staggered/config.h index 41d06e341d..cc9a2ebd49 100644 --- a/keyboards/sneakbox/disarray/staggered/config.h +++ b/keyboards/sneakbox/disarray/staggered/config.h @@ -21,7 +21,7 @@ along with this program. If not, see . /* USB Device descriptor parameter */ #define VENDOR_ID 0x5342 -#define PRODUCT_ID 0x0003 +#define PRODUCT_ID 0x0002 #define DEVICE_VER 0x0001 #define MANUFACTURER Sneakbox #define PRODUCT Disarray (Staggered Layout) From 546dfce20984cda4c584c26ad79a2777963bd065 Mon Sep 17 00:00:00 2001 From: Ryan Date: Wed, 7 Apr 2021 20:03:45 +1000 Subject: [PATCH 185/613] Add info.json for CK60i (#12318) --- keyboards/ck60i/info.json | 82 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 keyboards/ck60i/info.json diff --git a/keyboards/ck60i/info.json b/keyboards/ck60i/info.json new file mode 100644 index 0000000000..f7bec1378d --- /dev/null +++ b/keyboards/ck60i/info.json @@ -0,0 +1,82 @@ +{ + "keyboard_name": "CK60i", + "url": "", + "maintainer": "qmk", + "width": 15, + "height": 5, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.5, "y":1, "w":1.5}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2}, + {"x":13.75, "y":2, "w":1.25}, + + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4}, + {"x":11, "y":4}, + {"x":12, "y":4}, + {"x":13, "y":4}, + {"x":14, "y":4} + ] + } + } +} From d1270c9d5519c04ce9c6da3ad3d7a2a02ef255db Mon Sep 17 00:00:00 2001 From: Kosuke Adachi Date: Wed, 7 Apr 2021 22:57:36 +0900 Subject: [PATCH 186/613] Update info.json to correctly. (#12507) --- keyboards/foostan/cornelius/info.json | 67 +++++++++++++++++++++++---- 1 file changed, 58 insertions(+), 9 deletions(-) diff --git a/keyboards/foostan/cornelius/info.json b/keyboards/foostan/cornelius/info.json index cc98321691..3df1269e94 100644 --- a/keyboards/foostan/cornelius/info.json +++ b/keyboards/foostan/cornelius/info.json @@ -1,12 +1,61 @@ { - "keyboard_name": "cornelius", - "url": "", - "maintainer": "qmk", - "width": 7.55, - "height": 6.11, - "layouts": { - "LAYOUT": { - "layout": [{"label":"E", "x":2.5, "y":0}, {"label":"R", "x":3.5, "y":0.125}, {"label":"W", "x":1.5, "y":0.25}, {"label":"T", "x":4.5, "y":0.25}, {"label":"Tab", "x":-0.5, "y":0.625}, {"label":"Q", "x":0.5, "y":0.625}, {"label":"D", "x":2.5, "y":1}, {"label":"F", "x":3.5, "y":1.125}, {"label":"S", "x":1.5, "y":1.25}, {"label":"G", "x":4.5, "y":1.25}, {"label":"Esc", "x":-0.5, "y":1.625}, {"label":"A", "x":0.5, "y":1.625}, {"label":"C", "x":2.5, "y":2}, {"label":"V", "x":3.5, "y":2.125}, {"label":"X", "x":1.5, "y":2.25}, {"label":"B", "x":4.5, "y":2.25}, {"label":"Shift", "x":-0.5, "y":2.625}, {"label":"Z", "x":0.5, "y":2.625}, {"label":"Win", "x":1.5, "y":3.25}, {"label":"Alt", "x":3, "y":3.25}, {"label":"Fn", "x":-0.5, "y":3.625}, {"label":"Ctrl", "x":0.5, "y":3.625}, {"label":"Lower", "x":4.97, "y":2.11}, {"x":6.55, "y":0.48}, {"x":-7.55, "y":1.94}, {"label":"Raise", "x":-5.95, "y":3.58}, {"label":"I", "x":-3.5, "y":1.48}, {"label":"U", "x":-4.5, "y":1.605}, {"label":"Y", "x":-5.5, "y":1.73}, {"label":"O", "x":-2.5, "y":1.73}, {"label":"P", "x":-1.5, "y":2.105}, {"label":"Bksp", "x":-0.5, "y":2.105}, {"label":"K", "x":-3.5, "y":2.48}, {"label":"J", "x":-4.5, "y":2.605}, {"label":"H", "x":-5.5, "y":2.73}, {"label":"L", "x":-2.5, "y":2.73}, {"label":":", "x":-1.5, "y":3.105}, {"label":"\"", "x":-0.5, "y":3.105}, {"label":"<", "x":-3.5, "y":3.48}, {"label":"M", "x":-4.5, "y":3.605}, {"label":"N", "x":-5.5, "y":3.73}, {"label":">", "x":-2.5, "y":3.73}, {"label":"?", "x":-1.5, "y":4.105}, {"label":"Shift", "x":-0.5, "y":4.105}, {"label":"Alt", "x":-4, "y":4.73}, {"label":"Win", "x":-2.5, "y":4.73}, {"label":"Ctrl", "x":-1.5, "y":5.105}, {"label":"Fn", "x":-0.5, "y":5.105}] + "keyboard_name":"cornelius", + "url":"", + "maintainer":"foostan", + "width":14, + "height":8.5, + "layouts":{ + "LAYOUT":{ + "layout":[ + {"label":"Tab", "x":0,"y":0.625}, + {"label":"Q", "x":1,"y":0.625}, + {"label":"W", "x":2,"y":0.25}, + {"label":"E", "x":3,"y":0}, + {"label":"R", "x":4,"y":0.125}, + {"label":"T", "x":5,"y":0.25}, + {"label":"Y", "x":8,"y":0.25}, + {"label":"U", "x":9,"y":0.125}, + {"label":"I", "x":10,"y":0}, + {"label":"O", "x":11,"y":0.25}, + {"label":"P", "x":12,"y":0.625}, + {"label":"Bksp", "x":13,"y":0.625}, + {"label":"Esc", "x":0,"y":1.625}, + {"label":"A", "x":1,"y":1.625}, + {"label":"S", "x":2,"y":1.25}, + {"label":"D", "x":3,"y":1}, + {"label":"F", "x":4,"y":1.125}, + {"label":"G", "x":5,"y":1.25}, + {"label":"H", "x":8,"y":1.25}, + {"label":"J", "x":9,"y":1.125}, + {"label":"K", "x":10,"y":1}, + {"label":"L", "x":11,"y":1.25}, + {"label":":", "x":12,"y":1.625}, + {"label":"\"", "x":13,"y":1.625}, + {"label":"Shift", "x":0,"y":2.625}, + {"label":"Z", "x":1,"y":2.625}, + {"label":"X", "x":2,"y":2.25}, + {"label":"C", "x":3,"y":2}, + {"label":"V", "x":4,"y":2.125}, + {"label":"B", "x":5,"y":2.25}, + {"label":"N", "x":8,"y":2.25}, + {"label":"M", "x":9,"y":2.125}, + {"label":"<", "x":10,"y":2}, + {"label":">", "x":11,"y":2.25}, + {"label":"?", "x":12,"y":2.625}, + {"label":"Shift", "x":13,"y":2.625}, + {"label":"Fn", "x":0,"y":3.625}, + {"label":"Ctrl", "x":1,"y":3.625}, + {"label":"Win", "x":2,"y":3.25}, + {"label":"Alt", "x":3.5,"y":3.25}, + {"label":"Lower", "x":4.5,"y":3.5}, + {"x":5.5,"y":3.75}, + {"x":7.5,"y":3.75}, + {"label":"Raise", "x":8.5,"y":3.5}, + {"label":"Alt", "x":9.5,"y":3.25}, + {"label":"Win", "x":11,"y":3.25}, + {"label":"Ctrl", "x":12,"y":3.625}, + {"label":"Fn", "x":13,"y":3.625} + ] } } -} \ No newline at end of file +} From 2170b75b26d46c7f46ad281b6c2eacddadc9cb45 Mon Sep 17 00:00:00 2001 From: Ryan Date: Thu, 8 Apr 2021 14:16:15 +1000 Subject: [PATCH 187/613] `qmk chibios-confmigrate`: Make `-i` and `-r` required (#12515) --- lib/python/qmk/cli/chibios/confmigrate.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/python/qmk/cli/chibios/confmigrate.py b/lib/python/qmk/cli/chibios/confmigrate.py index 89995931a4..be1f2cd744 100644 --- a/lib/python/qmk/cli/chibios/confmigrate.py +++ b/lib/python/qmk/cli/chibios/confmigrate.py @@ -107,8 +107,8 @@ def migrate_mcuconf_h(to_override, outfile): print("", file=outfile) -@cli.argument('-i', '--input', type=normpath, arg_only=True, help='Specify input config file.') -@cli.argument('-r', '--reference', type=normpath, arg_only=True, help='Specify the reference file to compare against') +@cli.argument('-i', '--input', type=normpath, arg_only=True, required=True, help='Specify input config file.') +@cli.argument('-r', '--reference', type=normpath, arg_only=True, required=True, help='Specify the reference file to compare against') @cli.argument('-o', '--overwrite', arg_only=True, action='store_true', help='Overwrites the input file during migration.') @cli.argument('-d', '--delete', arg_only=True, action='store_true', help='If the file has no overrides, migration will delete the input file.') @cli.argument('-f', '--force', arg_only=True, action='store_true', help='Re-migrates an already migrated file, even if it doesn\'t detect a full ChibiOS config.') From 75f83210f43a3ec893635e4dd4e5d5a21dcc157d Mon Sep 17 00:00:00 2001 From: Adrian <42110361+xSteins@users.noreply.github.com> Date: Thu, 8 Apr 2021 23:47:24 +0700 Subject: [PATCH 188/613] Add new handwired keyboard (Ergocheap) (#11857) Co-authored-by: Drashna Jaelre Co-authored-by: Ryan --- keyboards/handwired/ergocheap/chconf.h | 57 ++++++++++++++++ keyboards/handwired/ergocheap/config.h | 67 +++++++++++++++++++ keyboards/handwired/ergocheap/ergocheap.c | 16 +++++ keyboards/handwired/ergocheap/ergocheap.h | 42 ++++++++++++ keyboards/handwired/ergocheap/halconf.h | 37 ++++++++++ keyboards/handwired/ergocheap/info.json | 12 ++++ .../ergocheap/keymaps/default/keymap.c | 42 ++++++++++++ .../handwired/ergocheap/keymaps/via/keymap.c | 60 +++++++++++++++++ .../handwired/ergocheap/keymaps/via/rules.mk | 1 + keyboards/handwired/ergocheap/mcuconf.h | 28 ++++++++ keyboards/handwired/ergocheap/readme.md | 15 +++++ keyboards/handwired/ergocheap/rules.mk | 25 +++++++ 12 files changed, 402 insertions(+) create mode 100644 keyboards/handwired/ergocheap/chconf.h create mode 100644 keyboards/handwired/ergocheap/config.h create mode 100644 keyboards/handwired/ergocheap/ergocheap.c create mode 100644 keyboards/handwired/ergocheap/ergocheap.h create mode 100644 keyboards/handwired/ergocheap/halconf.h create mode 100644 keyboards/handwired/ergocheap/info.json create mode 100644 keyboards/handwired/ergocheap/keymaps/default/keymap.c create mode 100644 keyboards/handwired/ergocheap/keymaps/via/keymap.c create mode 100644 keyboards/handwired/ergocheap/keymaps/via/rules.mk create mode 100644 keyboards/handwired/ergocheap/mcuconf.h create mode 100644 keyboards/handwired/ergocheap/readme.md create mode 100644 keyboards/handwired/ergocheap/rules.mk diff --git a/keyboards/handwired/ergocheap/chconf.h b/keyboards/handwired/ergocheap/chconf.h new file mode 100644 index 0000000000..feaf02b017 --- /dev/null +++ b/keyboards/handwired/ergocheap/chconf.h @@ -0,0 +1,57 @@ +/* Copyright 2020 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confupdate -i keyboards/handwired/ergocheap/chconf.h -r platforms/chibios/common/configs/chconf.h` + */ + +#pragma once + +#define CH_CFG_ST_TIMEDELTA 0 + +#define CH_CFG_USE_TM FALSE + +#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE + +#define CH_CFG_USE_MESSAGES_PRIORITY FALSE + +#define CH_CFG_USE_MEMPOOLS FALSE + +#define CH_CFG_USE_OBJ_FIFOS FALSE + +#define CH_CFG_USE_PIPES FALSE + +#define CH_CFG_USE_DYNAMIC FALSE + +#define CH_CFG_USE_FACTORY FALSE + +#define CH_CFG_FACTORY_OBJECTS_REGISTRY FALSE + +#define CH_CFG_FACTORY_GENERIC_BUFFERS FALSE + +#define CH_CFG_FACTORY_SEMAPHORES FALSE + +#define CH_CFG_FACTORY_MAILBOXES FALSE + +#define CH_CFG_FACTORY_OBJ_FIFOS FALSE + +#define CH_CFG_FACTORY_PIPES FALSE + +#define CH_DBG_ENABLE_STACK_CHECK FALSE + +#include_next + diff --git a/keyboards/handwired/ergocheap/config.h b/keyboards/handwired/ergocheap/config.h new file mode 100644 index 0000000000..f563036642 --- /dev/null +++ b/keyboards/handwired/ergocheap/config.h @@ -0,0 +1,67 @@ +/* +Copyright 2021 xSteins + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEDE //0xFEED +#define PRODUCT_ID 0x6942 //0x6465 +#define DEVICE_VER 0x0001 +#define MANUFACTURER xSteins +#define PRODUCT ERGOCHEAP + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +#define MATRIX_COL_PINS { A8, A9, B14, B12, B13, B15, B3, B11, A4, A5, A6, A7, B0, B1, B10 } +#define MATRIX_ROW_PINS { B5, B6, B7, B9, B8 } + +#define DIODE_DIRECTION COL2ROW + +/* key led setting */ +//#define BACKLIGHT_PIN A8 +//#define BACKLIGHT_PWM_DRIVER PWMD1 +//#define BACKLIGHT_PWM_CHANNEL 1 +//#define BACKLIGHT_LEVELS 6 +//#define BACKLIGHT_BREATHING +//#define BREATHING_PERIOD 6 + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 +#define TAPPING_TERM 500 + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION diff --git a/keyboards/handwired/ergocheap/ergocheap.c b/keyboards/handwired/ergocheap/ergocheap.c new file mode 100644 index 0000000000..ab5cf8a0a7 --- /dev/null +++ b/keyboards/handwired/ergocheap/ergocheap.c @@ -0,0 +1,16 @@ + /* Copyright 2021 xSteins + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "ergocheap.h" \ No newline at end of file diff --git a/keyboards/handwired/ergocheap/ergocheap.h b/keyboards/handwired/ergocheap/ergocheap.h new file mode 100644 index 0000000000..72f3775618 --- /dev/null +++ b/keyboards/handwired/ergocheap/ergocheap.h @@ -0,0 +1,42 @@ +/* +Copyright 2021 xSteins + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once +#include "quantum.h" + +/* + * The first section contains all of the arguments representing the physical + * layout of the board and position of the Keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. +*/ + + +#define LAYOUT( \ + K00, K01, K02, K0B, K0D, K0E, K0F, \ + K10, K11, K03, K04, K05, K06, K07, K08, K09, K0A, K1B, K1D, K1E, K1F, \ + K20, K21,K12, K13, K14, K15, K16, K17, K18, K19, K1A, K2B, K2D, K2E, K2F, \ + K30, K31,K22, K23, K24, K25, K26, K27, K28, K29, K3B, K3D, K3E, K3F, \ + K40, K32, K33, K34, K35, K36, K37, K38, K39, K4B, K4D, K4E, K4F, \ + K42, K44, K45, K46, K47, K48 \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0D, K0E, K0F, }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1D, K1E, K1F, }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, KC_NO, K2B, K2D, K2E, K2F, }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, KC_NO, K3B, K3D, K3E, K3F, }, \ + { K40, KC_NO, K42, KC_NO, K44, K45, K46, K47, K48, KC_NO, KC_NO, K4B, K4D, K4E, K4F } \ +} diff --git a/keyboards/handwired/ergocheap/halconf.h b/keyboards/handwired/ergocheap/halconf.h new file mode 100644 index 0000000000..930fa15a27 --- /dev/null +++ b/keyboards/handwired/ergocheap/halconf.h @@ -0,0 +1,37 @@ +/* Copyright 2020 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confupdate -i keyboards/handwired/ergocheap/halconf.h -r platforms/chibios/common/configs/halconf.h` + */ + +#pragma once + +#define HAL_USE_DAC FALSE + +#define HAL_USE_GPT FALSE + +#define HAL_USE_I2C FALSE + +#define HAL_USE_SERIAL_USB FALSE + +#define PAL_USE_CALLBACKS FALSE + +#define PAL_USE_WAIT FALSE + +#include_next + diff --git a/keyboards/handwired/ergocheap/info.json b/keyboards/handwired/ergocheap/info.json new file mode 100644 index 0000000000..2bf09653aa --- /dev/null +++ b/keyboards/handwired/ergocheap/info.json @@ -0,0 +1,12 @@ +{ + "keyboard_name": "Ergocheap", + "url": "", + "maintainer": "xSteins", + "width": 17.8, + "height": 11.85, + "layouts": { + "LAYOUT": { + "layout": [{"label":"0,12", "x":13.47, "y":0}, {"label":"0,13", "x":14.5, "y":0, "w":2}, {"label":"0,14", "x":16.5, "y":0}, {"label":"0,0", "x":0.75, "y":0.25}, {"label":"0,1", "x":1.75, "y":0.25}, {"label":"1,11", "x":13.1, "y":1}, {"label":"1,12", "x":14.1, "y":1}, {"label":"1,13", "x":15.1, "y":1, "w":1.5}, {"label":"1,14", "x":16.6, "y":1}, {"label":"1,0", "x":0.5, "y":1.25, "w":1.5}, {"label":"1,1", "x":2, "y":1.25}, {"label":"2,11", "x":13.55, "y":2}, {"label":"2,12", "x":14.55, "y":2, "w":2.25}, {"label":"2,13", "x":16.8, "y":2}, {"label":"2,0", "x":0.25, "y":2.25, "w":1.75}, {"label":"2,1", "x":2, "y":2.25}, {"label":"3,11", "x":13.05, "y":3}, {"label":"3,12", "x":14.05, "y":3, "w":1.75}, {"label":"3,13", "x":15.75, "y":3}, {"label":"3,14", "x":16.75, "y":3}, {"label":"3,0", "x":0.1, "y":3.25, "w":2.25}, {"label":"3,1", "x":2.35, "y":3.25}, {"label":"4,8", "x":13.5, "y":4, "w":1.25}, {"label":"4,12", "x":14.75, "y":4}, {"label":"4,13", "x":15.75, "y":4}, {"label":"4,14", "x":16.75, "y":4}, {"label":"4,0", "x":0.1, "y":4.25, "w":1.25}, {"label":"0,11", "x":2.45, "y":5.25}, {"label":"0,2", "x":-7.25, "y":5.35}, {"label":"0,3", "x":-5.1, "y":4.1}, {"label":"0,4", "x":-4.1, "y":4.1}, {"label":"0,5", "x":-3.0999999999999996, "y":4.1}, {"label":"0,6", "x":-2.0999999999999996, "y":4.1}, {"label":"1,2", "x":-5.7, "y":5.1}, {"label":"1,3", "x":-4.7, "y":5.1}, {"label":"1,4", "x":-3.7, "y":5.1}, {"label":"1,5", "x":-2.7, "y":5.1}, {"label":"2,2", "x":-5.45, "y":6.1}, {"label":"2,3", "x":-4.45, "y":6.1}, {"label":"2,4", "x":-3.45, "y":6.1}, {"label":"2,5", "x":-2.45, "y":6.1}, {"label":"3,2", "x":-4.85, "y":7.1}, {"label":"3,3", "x":-3.8499999999999996, "y":7.1}, {"label":"3,4", "x":-2.8499999999999996, "y":7.1}, {"label":"3,5", "x":-1.8499999999999996, "y":7.1}, {"label":"4,2", "x":-4.9, "y":8.1, "w":1.25}, {"label":"4,4", "x":-3.6500000000000004, "y":8.1, "w":2}, {"label":"4,5", "x":-1.6500000000000004, "y":8.1, "w":1.25}, {"label":"0,7", "x":0.3, "y":6.85}, {"label":"0,8", "x":1.3, "y":6.85}, {"label":"0,9", "x":2.3, "y":6.85}, {"label":"0,10", "x":3.3, "y":6.85}, {"label":"1,6", "x":-0.2, "y":7.85}, {"label":"1,7", "x":0.7999999999999999, "y":7.85}, {"label":"1,8", "x":1.8, "y":7.85}, {"label":"1,9", "x":2.8, "y":7.85}, {"label":"1,10", "x":3.8, "y":7.85}, {"label":"2,6", "x":0.05, "y":8.85}, {"label":"2,7", "x":1.05, "y":8.85}, {"label":"2,8", "x":2.05, "y":8.85}, {"label":"2,9", "x":3.05, "y":8.85}, {"label":"2,10", "x":4, "y":8.85}, {"label":"3,6", "x":0.3, "y":9.85}, {"label":"3,7", "x":1.3, "y":9.85}, {"label":"3,8", "x":2.3, "y":9.85}, {"label":"3,9", "x":3.3, "y":9.85}, {"label":"4,6", "x":-0.2, "y":10.85, "w":2.75}, {"label":"4,7", "x":2.5, "y":10.85, "w":1.25}] + } + } +} \ No newline at end of file diff --git a/keyboards/handwired/ergocheap/keymaps/default/keymap.c b/keyboards/handwired/ergocheap/keymaps/default/keymap.c new file mode 100644 index 0000000000..dc70f4f278 --- /dev/null +++ b/keyboards/handwired/ergocheap/keymaps/default/keymap.c @@ -0,0 +1,42 @@ +/* Copyright 2021 xSteins + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _FN1, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_MINS, KC_EQL, KC_BSPC, KC_GRV, + KC_TAB, KC_Q, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_SCLN, KC_QUOT, KC_ENT, KC_HOME, + KC_LSFT, KC_Z, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SLSH, TO(_FN1), KC_UP, KC_END, + KC_LCTL, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_LGUI, KC_LEFT, KC_DOWN, KC_RGHT, + KC_LALT, KC_SPC, MO(_FN1),KC_SPC, KC_SPC, MO(_FN1) + ), + [_FN1] = LAYOUT( + KC_GRV, KC_F1, KC_F2, KC_F11, KC_F12, _______, _______, + _______, _______, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_UP, _______, _______, _______, + KC_LCTL, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, KC_LEFT, KC_RIGHT, _______, _______, + KC_LSFT, KC_LEFT, KC_S, _______, _______, _______, _______, KC_VOLD, KC_MUTE, KC_VOLU, KC_DOWN, TO(_BASE), KC_MS_WH_UP, _______, + _______, KC_UP, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, KC_MS_WH_LEFT, KC_MS_WH_DOWN, KC_MS_WH_RIGHT, + KC_LGUI, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/handwired/ergocheap/keymaps/via/keymap.c b/keyboards/handwired/ergocheap/keymaps/via/keymap.c new file mode 100644 index 0000000000..1c3acc796b --- /dev/null +++ b/keyboards/handwired/ergocheap/keymaps/via/keymap.c @@ -0,0 +1,60 @@ +/* Copyright 2021 xSteins + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _FN1, + _FN2, + _FN3, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_MINS, KC_EQL, KC_BSPC, KC_GRV, + KC_TAB, KC_Q, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_SCLN, KC_QUOT, KC_ENT, KC_HOME, + KC_LSFT, KC_Z, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SLSH, TO(_FN1), KC_UP, KC_END, + KC_LCTL, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_LGUI, KC_LEFT, KC_DOWN, KC_RGHT, + KC_LALT, KC_SPC, MO(_FN1),KC_SPC, KC_SPC, MO(_FN1) + ), + [_FN1] = LAYOUT( + KC_GRV, KC_F1, KC_F2, KC_F11, KC_F12, _______, _______, + _______, _______, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_UP, _______, _______, _______, + KC_LCTL, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, KC_LEFT, KC_RIGHT, _______, _______, + KC_LSFT, KC_LEFT, KC_S, _______, _______, _______, _______, KC_VOLD, KC_MUTE, KC_VOLU, KC_DOWN, TO(_BASE), KC_MS_WH_UP, _______, + _______, KC_UP, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, KC_MS_WH_LEFT, KC_MS_WH_DOWN, KC_MS_WH_RIGHT, + KC_LGUI, _______, _______, _______, _______, _______ + ), + [_FN2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______ + ), + [_FN3] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/handwired/ergocheap/keymaps/via/rules.mk b/keyboards/handwired/ergocheap/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/handwired/ergocheap/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/handwired/ergocheap/mcuconf.h b/keyboards/handwired/ergocheap/mcuconf.h new file mode 100644 index 0000000000..fb353433ef --- /dev/null +++ b/keyboards/handwired/ergocheap/mcuconf.h @@ -0,0 +1,28 @@ +/* Copyright 2020 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confupdate -i keyboards/handwired/ergocheap/mcuconf.h -r platforms/chibios/STM32_F103_STM32DUINO/configs/mcuconf.h` + */ + +#pragma once + +#include_next + +#undef STM32_PWM_USE_TIM1 +#define STM32_PWM_USE_TIM1 TRUE + diff --git a/keyboards/handwired/ergocheap/readme.md b/keyboards/handwired/ergocheap/readme.md new file mode 100644 index 0000000000..ca30d4f50a --- /dev/null +++ b/keyboards/handwired/ergocheap/readme.md @@ -0,0 +1,15 @@ +# Ergocheap handwired keyboard + +Ergocheap is an ergonomic keyboard with layout forked from adelheid with some minor adjustment in 13-15th row and standard keycaps size + +![Ergocheap](https://i.imgur.com/II3aBYgl.jpg) + +* Keyboard Maintainer: [xSteins](https://github.com/xSteins) +* Hardware Supported: bluepill +* Hardware Availability: [case files](https://github.com/xSteins/Mechanical-Keyboard/tree/master/ErgoCheap/CASE) + +Make example for this keyboard (after setting up your build environment): + + make handwired/ergocheap:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/handwired/ergocheap/rules.mk b/keyboards/handwired/ergocheap/rules.mk new file mode 100644 index 0000000000..b126207bc6 --- /dev/null +++ b/keyboards/handwired/ergocheap/rules.mk @@ -0,0 +1,25 @@ +# MCU name +MCU = STM32F103 + +# Bootloader selection +BOOTLOADER = stm32duino + +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output From 1a913aa12eda0c62faba160dad55befeafdf4dc0 Mon Sep 17 00:00:00 2001 From: peepeetee <43021794+peepeetee@users.noreply.github.com> Date: Thu, 8 Apr 2021 21:41:29 -0500 Subject: [PATCH 189/613] Fix Breaking Change date (#12272) --- docs/breaking_changes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/breaking_changes.md b/docs/breaking_changes.md index de9148ad62..0503789cdb 100644 --- a/docs/breaking_changes.md +++ b/docs/breaking_changes.md @@ -15,7 +15,7 @@ The breaking change period is when we will merge PR's that change QMK in dangero ## When is the next Breaking Change? -The next Breaking Change is scheduled for February 27, 2021. +The next Breaking Change is scheduled for May 29, 2021. ### Important Dates From f744e22b4944c4e8e5e71a4eb424dd4619c3e57d Mon Sep 17 00:00:00 2001 From: mechlovin <57231893+mechlovin@users.noreply.github.com> Date: Fri, 9 Apr 2021 11:48:30 -0700 Subject: [PATCH 190/613] Add TH1800 PCB, Hex6C PCB, Rogue87 PCB, Rouge87 PCB, Infinity87 series (#11977) Co-authored-by: Drashna Jaelre Co-authored-by: Ryan Co-authored-by: Erovia Co-authored-by: vuhopkep --- keyboards/mechlovin/hex6c/config.h | 65 +++ keyboards/mechlovin/hex6c/hex6c.c | 17 + keyboards/mechlovin/hex6c/hex6c.h | 35 ++ keyboards/mechlovin/hex6c/info.json | 128 +++++ .../mechlovin/hex6c/keymaps/default/keymap.c | 40 ++ .../mechlovin/hex6c/keymaps/default/readme.md | 1 + .../mechlovin/hex6c/keymaps/via/keymap.c | 68 +++ .../mechlovin/hex6c/keymaps/via/rules.mk | 1 + keyboards/mechlovin/hex6c/readme.md | 21 + keyboards/mechlovin/hex6c/rules.mk | 20 + keyboards/mechlovin/infinity87/config.h | 81 +--- keyboards/mechlovin/infinity87/infinity87.h | 13 +- .../mechlovin/infinity87/keymaps/via/rules.mk | 3 +- keyboards/mechlovin/infinity87/rev1/config.h | 31 ++ keyboards/mechlovin/infinity87/rev1/readme.md | 16 + keyboards/mechlovin/infinity87/rev1/rev1.c | 17 + keyboards/mechlovin/infinity87/rev1/rev1.h | 19 + .../infinity87/rev1/rogue87/config.h | 21 + .../infinity87/rev1/rogue87/info.json | 99 ++++ .../rev1/rogue87/keymaps/default/keymap.c | 27 ++ .../rev1/rogue87/keymaps/default/readme.md | 1 + .../rev1/rogue87/keymaps/via/keymap.c | 53 +++ .../rev1/rogue87/keymaps/via/readme.md | 1 + .../rev1/rogue87/keymaps/via/rules.mk | 2 + .../infinity87/rev1/rogue87/readme.md | 19 + .../infinity87/rev1/rogue87/rogue87.h | 34 ++ .../infinity87/rev1/rogue87/rules.mk | 1 + .../infinity87/rev1/rouge87/config.h | 21 + .../infinity87/rev1/rouge87/info.json | 101 ++++ .../rev1/rouge87/keymaps/default/keymap.c | 27 ++ .../rev1/rouge87/keymaps/default/readme.md | 1 + .../rev1/rouge87/keymaps/via/keymap.c | 53 +++ .../rev1/rouge87/keymaps/via/readme.md | 1 + .../rev1/rouge87/keymaps/via/rules.mk | 2 + .../infinity87/rev1/rouge87/readme.md | 19 + .../infinity87/rev1/rouge87/rouge87.h | 35 ++ .../infinity87/rev1/rouge87/rules.mk | 1 + keyboards/mechlovin/infinity87/rev1/rules.mk | 6 + .../infinity87/rev1/standard/config.h | 40 ++ .../infinity87/{ => rev1/standard}/info.json | 0 .../infinity87/rev1/standard/readme.md | 15 + .../infinity87/rev1/standard/rules.mk | 1 + keyboards/mechlovin/infinity87/rev2/config.h | 48 ++ keyboards/mechlovin/infinity87/rev2/info.json | 105 +++++ keyboards/mechlovin/infinity87/rev2/matrix.c | 442 ++++++++++++++++++ keyboards/mechlovin/infinity87/rev2/readme.md | 23 + keyboards/mechlovin/infinity87/rev2/rev2.c | 57 +++ keyboards/mechlovin/infinity87/rev2/rev2.h | 19 + keyboards/mechlovin/infinity87/rev2/rules.mk | 19 + .../mechlovin/infinity87/rgb_rev1/config.h | 51 ++ .../mechlovin/infinity87/rgb_rev1/info.json | 105 +++++ .../mechlovin/infinity87/rgb_rev1/readme.md | 21 + .../mechlovin/infinity87/rgb_rev1/rgb_rev1.c | 159 +++++++ .../mechlovin/infinity87/rgb_rev1/rgb_rev1.h | 19 + .../mechlovin/infinity87/rgb_rev1/rules.mk | 5 + keyboards/mechlovin/infinity87/rules.mk | 14 +- keyboards/mechlovin/th1800/config.h | 53 +++ keyboards/mechlovin/th1800/info.json | 119 +++++ .../mechlovin/th1800/keymaps/default/keymap.c | 29 ++ .../th1800/keymaps/default/readme.md | 1 + .../mechlovin/th1800/keymaps/via/keymap.c | 56 +++ .../mechlovin/th1800/keymaps/via/readme.md | 2 + .../mechlovin/th1800/keymaps/via/rules.mk | 1 + keyboards/mechlovin/th1800/readme.md | 23 + keyboards/mechlovin/th1800/rules.mk | 25 + keyboards/mechlovin/th1800/th1800.c | 17 + keyboards/mechlovin/th1800/th1800.h | 36 ++ 67 files changed, 2526 insertions(+), 80 deletions(-) create mode 100644 keyboards/mechlovin/hex6c/config.h create mode 100644 keyboards/mechlovin/hex6c/hex6c.c create mode 100644 keyboards/mechlovin/hex6c/hex6c.h create mode 100644 keyboards/mechlovin/hex6c/info.json create mode 100644 keyboards/mechlovin/hex6c/keymaps/default/keymap.c create mode 100644 keyboards/mechlovin/hex6c/keymaps/default/readme.md create mode 100644 keyboards/mechlovin/hex6c/keymaps/via/keymap.c create mode 100644 keyboards/mechlovin/hex6c/keymaps/via/rules.mk create mode 100644 keyboards/mechlovin/hex6c/readme.md create mode 100644 keyboards/mechlovin/hex6c/rules.mk create mode 100644 keyboards/mechlovin/infinity87/rev1/config.h create mode 100644 keyboards/mechlovin/infinity87/rev1/readme.md create mode 100644 keyboards/mechlovin/infinity87/rev1/rev1.c create mode 100644 keyboards/mechlovin/infinity87/rev1/rev1.h create mode 100644 keyboards/mechlovin/infinity87/rev1/rogue87/config.h create mode 100644 keyboards/mechlovin/infinity87/rev1/rogue87/info.json create mode 100644 keyboards/mechlovin/infinity87/rev1/rogue87/keymaps/default/keymap.c create mode 100644 keyboards/mechlovin/infinity87/rev1/rogue87/keymaps/default/readme.md create mode 100644 keyboards/mechlovin/infinity87/rev1/rogue87/keymaps/via/keymap.c create mode 100644 keyboards/mechlovin/infinity87/rev1/rogue87/keymaps/via/readme.md create mode 100644 keyboards/mechlovin/infinity87/rev1/rogue87/keymaps/via/rules.mk create mode 100644 keyboards/mechlovin/infinity87/rev1/rogue87/readme.md create mode 100644 keyboards/mechlovin/infinity87/rev1/rogue87/rogue87.h create mode 100644 keyboards/mechlovin/infinity87/rev1/rogue87/rules.mk create mode 100644 keyboards/mechlovin/infinity87/rev1/rouge87/config.h create mode 100644 keyboards/mechlovin/infinity87/rev1/rouge87/info.json create mode 100644 keyboards/mechlovin/infinity87/rev1/rouge87/keymaps/default/keymap.c create mode 100644 keyboards/mechlovin/infinity87/rev1/rouge87/keymaps/default/readme.md create mode 100644 keyboards/mechlovin/infinity87/rev1/rouge87/keymaps/via/keymap.c create mode 100644 keyboards/mechlovin/infinity87/rev1/rouge87/keymaps/via/readme.md create mode 100644 keyboards/mechlovin/infinity87/rev1/rouge87/keymaps/via/rules.mk create mode 100644 keyboards/mechlovin/infinity87/rev1/rouge87/readme.md create mode 100644 keyboards/mechlovin/infinity87/rev1/rouge87/rouge87.h create mode 100644 keyboards/mechlovin/infinity87/rev1/rouge87/rules.mk create mode 100644 keyboards/mechlovin/infinity87/rev1/rules.mk create mode 100644 keyboards/mechlovin/infinity87/rev1/standard/config.h rename keyboards/mechlovin/infinity87/{ => rev1/standard}/info.json (100%) create mode 100644 keyboards/mechlovin/infinity87/rev1/standard/readme.md create mode 100644 keyboards/mechlovin/infinity87/rev1/standard/rules.mk create mode 100644 keyboards/mechlovin/infinity87/rev2/config.h create mode 100644 keyboards/mechlovin/infinity87/rev2/info.json create mode 100644 keyboards/mechlovin/infinity87/rev2/matrix.c create mode 100644 keyboards/mechlovin/infinity87/rev2/readme.md create mode 100644 keyboards/mechlovin/infinity87/rev2/rev2.c create mode 100644 keyboards/mechlovin/infinity87/rev2/rev2.h create mode 100644 keyboards/mechlovin/infinity87/rev2/rules.mk create mode 100644 keyboards/mechlovin/infinity87/rgb_rev1/config.h create mode 100644 keyboards/mechlovin/infinity87/rgb_rev1/info.json create mode 100644 keyboards/mechlovin/infinity87/rgb_rev1/readme.md create mode 100644 keyboards/mechlovin/infinity87/rgb_rev1/rgb_rev1.c create mode 100644 keyboards/mechlovin/infinity87/rgb_rev1/rgb_rev1.h create mode 100644 keyboards/mechlovin/infinity87/rgb_rev1/rules.mk create mode 100644 keyboards/mechlovin/th1800/config.h create mode 100644 keyboards/mechlovin/th1800/info.json create mode 100644 keyboards/mechlovin/th1800/keymaps/default/keymap.c create mode 100644 keyboards/mechlovin/th1800/keymaps/default/readme.md create mode 100644 keyboards/mechlovin/th1800/keymaps/via/keymap.c create mode 100644 keyboards/mechlovin/th1800/keymaps/via/readme.md create mode 100644 keyboards/mechlovin/th1800/keymaps/via/rules.mk create mode 100644 keyboards/mechlovin/th1800/readme.md create mode 100644 keyboards/mechlovin/th1800/rules.mk create mode 100644 keyboards/mechlovin/th1800/th1800.c create mode 100644 keyboards/mechlovin/th1800/th1800.h diff --git a/keyboards/mechlovin/hex6c/config.h b/keyboards/mechlovin/hex6c/config.h new file mode 100644 index 0000000000..b79b5211c2 --- /dev/null +++ b/keyboards/mechlovin/hex6c/config.h @@ -0,0 +1,65 @@ +/* +Copyright 2021 Mechlovin' Studio + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4D4C +#define PRODUCT_ID 0x6C01 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Mechlovin Studio and Hex Keyboard +#define PRODUCT Hex6C + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 21 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ +#define MATRIX_ROW_PINS { A10, B13, B12, B11, C14, C15 } +#define MATRIX_COL_PINS { A13, A14, A1, A0, C13, B9, B4, B7, B8, B5, B6, A9, A5, A6, A7, B1, B2, B10, B3, B14, B15 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +#define LED_NUM_LOCK_PIN A3 +#define LED_CAPS_LOCK_PIN A4 +#define LED_SCROLL_LOCK_PIN A8 +#define LED_PIN_ON_STATE 0 + +#define BACKLIGHT_PIN B0 +#define BACKLIGHT_BREATHING +#define BACKLIGHT_PWM_DRIVER PWMD3 +#define BACKLIGHT_PWM_CHANNEL 3 + +#define ENCODERS_PAD_A { A15 } +#define ENCODERS_PAD_B { A2 } +#define ENCODER_RESOLUTION 4 + +#define TAP_CODE_DELAY 10 +#define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 2047 \ No newline at end of file diff --git a/keyboards/mechlovin/hex6c/hex6c.c b/keyboards/mechlovin/hex6c/hex6c.c new file mode 100644 index 0000000000..255121dc19 --- /dev/null +++ b/keyboards/mechlovin/hex6c/hex6c.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Mechlovin' Studio + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "hex6c.h" diff --git a/keyboards/mechlovin/hex6c/hex6c.h b/keyboards/mechlovin/hex6c/hex6c.h new file mode 100644 index 0000000000..eb5cd735cb --- /dev/null +++ b/keyboards/mechlovin/hex6c/hex6c.h @@ -0,0 +1,35 @@ +/* Copyright 2021 Mechlovin' Studio + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT_all( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, K0H, K0I, K0J, K0K, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, K1H, K2H, K1I, K1J, K1K, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, K3G, K2I, K2J, K2K, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K3H, \ + K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, K4F, K4G, K4H, K4J, \ + K50, K51, K52, K53, K54, K55, K56, K5A, K5E, K5F, K5G, K5H, K5I, K5J, K5K \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, K0H, K0I, K0J, K0K }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, K1H, K1I, K1J, K1K }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, K2H, K2I, K2J, K2K }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K3G, K3H, KC_NO, KC_NO, KC_NO }, \ + { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, K4F, K4G, K4H, KC_NO, K4J, KC_NO }, \ + { K50, K51, K52, K53, K54, K55, K56, KC_NO, KC_NO, KC_NO, K5A, KC_NO, KC_NO, KC_NO, K5E, K5F, K5G, K5H, K5I, K5J, K5K }, \ +} diff --git a/keyboards/mechlovin/hex6c/info.json b/keyboards/mechlovin/hex6c/info.json new file mode 100644 index 0000000000..f7692bb805 --- /dev/null +++ b/keyboards/mechlovin/hex6c/info.json @@ -0,0 +1,128 @@ +{ + "keyboard_name": "hex-6C", + "url": "", + "maintainer": "Mechlovin' Studio", + "width": 22.5, + "height": 6.25, + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"K00 (B0,B6)", "x":0, "y":0}, + {"label":"K01 (B0,B7)", "x":1, "y":0}, + {"label":"K02 (B0,C0)", "x":2, "y":0}, + {"label":"K03 (B0,C1)", "x":3, "y":0}, + {"label":"K04 (B0,C2)", "x":4.25, "y":0}, + {"label":"K05 (B0,C3)", "x":5.5, "y":0}, + {"label":"K06 (B0,C4)", "x":6.5, "y":0}, + {"label":"K07 (B0,C5)", "x":7.5, "y":0}, + {"label":"K08 (B0,C6)", "x":8.5, "y":0}, + {"label":"K09 (B0,C7)", "x":9.75, "y":0}, + {"label":"K0A (B0,D0)", "x":10.75, "y":0}, + {"label":"K0B (B0,D1)", "x":11.75, "y":0}, + {"label":"K0C (B0,D2)", "x":12.75, "y":0}, + {"label":"K0D (B0,D3)", "x":14, "y":0}, + {"label":"K0E (B0,D4)", "x":15, "y":0}, + {"label":"K0F (B0,D5)", "x":16, "y":0}, + {"label":"K0G (B0,D6)", "x":17, "y":0}, + {"label":"K0H (B0,D7)", "x":18.25, "y":0}, + {"label":"K0I (B0,E0)", "x":19.5, "y":0}, + {"label":"K0J (B0,E1)", "x":20.5, "y":0}, + {"label":"K0K (B0,E2)", "x":21.5, "y":0}, + {"label":"K10 (B1,B6)", "x":0, "y":1.25}, + {"label":"K11 (B1,B7)", "x":1, "y":1.25}, + {"label":"K12 (B1,C0)", "x":2, "y":1.25}, + {"label":"K13 (B1,C1)", "x":3, "y":1.25}, + {"label":"K14 (B1,C2)", "x":4.25, "y":1.25}, + {"label":"K15 (B1,C3)", "x":5.25, "y":1.25}, + {"label":"K16 (B1,C4)", "x":6.25, "y":1.25}, + {"label":"K17 (B1,C5)", "x":7.25, "y":1.25}, + {"label":"K18 (B1,C6)", "x":8.25, "y":1.25}, + {"label":"K19 (B1,C7)", "x":9.25, "y":1.25}, + {"label":"K1A (B1,D0)", "x":10.25, "y":1.25}, + {"label":"K1B (B1,D1)", "x":11.25, "y":1.25}, + {"label":"K1C (B1,D2)", "x":12.25, "y":1.25}, + {"label":"K1D (B1,D3)", "x":13.25, "y":1.25}, + {"label":"K1E (B1,D4)", "x":14.25, "y":1.25}, + {"label":"K1F (B1,D5)", "x":15.25, "y":1.25}, + {"label":"K1G (B1,D6)", "x":16.25, "y":1.25}, + {"label":"K1H (B1,D7)", "x":17.25, "y":1.25}, + {"label":"K2H (B2,D7)", "x":18.25, "y":1.25}, + {"label":"K1I (B1,E0)", "x":19.5, "y":1.25}, + {"label":"K1J (B1,E1)", "x":20.5, "y":1.25}, + {"label":"K1K (B1,E2)", "x":21.5, "y":1.25}, + {"label":"K20 (B2,B6)", "x":0, "y":2.25}, + {"label":"K21 (B2,B7)", "x":1, "y":2.25}, + {"label":"K22 (B2,C0)", "x":2, "y":2.25}, + {"label":"K23 (B2,C1)", "x":3, "y":2.25}, + {"label":"K24 (B2,C2)", "x":4.25, "y":2.25, "w":1.5}, + {"label":"K25 (B2,C3)", "x":5.75, "y":2.25}, + {"label":"K26 (B2,C4)", "x":6.75, "y":2.25}, + {"label":"K27 (B2,C5)", "x":7.75, "y":2.25}, + {"label":"K28 (B2,C6)", "x":8.75, "y":2.25}, + {"label":"K29 (B2,C7)", "x":9.75, "y":2.25}, + {"label":"K2A (B2,D0)", "x":10.75, "y":2.25}, + {"label":"K2B (B2,D1)", "x":11.75, "y":2.25}, + {"label":"K2C (B2,D2)", "x":12.75, "y":2.25}, + {"label":"K2D (B2,D3)", "x":13.75, "y":2.25}, + {"label":"K2E (B2,D4)", "x":14.75, "y":2.25}, + {"label":"K2F (B2,D5)", "x":15.75, "y":2.25}, + {"label":"K2G (B2,D6)", "x":16.75, "y":2.25}, + {"label":"K3G (B3,D6)", "x":17.75, "y":2.25, "w":1.5}, + {"label":"K2I (B2,E0)", "x":19.5, "y":2.25}, + {"label":"K2J (B2,E1)", "x":20.5, "y":2.25}, + {"label":"K2K (B2,E2)", "x":21.5, "y":2.25}, + {"label":"K30 (B3,B6)", "x":0, "y":3.25}, + {"label":"K31 (B3,B7)", "x":1, "y":3.25}, + {"label":"K32 (B3,C0)", "x":2, "y":3.25}, + {"label":"K33 (B3,C1)", "x":3, "y":3.25}, + {"label":"K34 (B3,C2)", "x":4.25, "y":3.25, "w":1.75}, + {"label":"K35 (B3,C3)", "x":6, "y":3.25}, + {"label":"K36 (B3,C4)", "x":7, "y":3.25}, + {"label":"K37 (B3,C5)", "x":8, "y":3.25}, + {"label":"K38 (B3,C6)", "x":9, "y":3.25}, + {"label":"K39 (B3,C7)", "x":10, "y":3.25}, + {"label":"K3A (B3,D0)", "x":11, "y":3.25}, + {"label":"K3B (B3,D1)", "x":12, "y":3.25}, + {"label":"K3C (B3,D2)", "x":13, "y":3.25}, + {"label":"K3D (B3,D3)", "x":14, "y":3.25}, + {"label":"K3E (B3,D4)", "x":15, "y":3.25}, + {"label":"K3F (B3,D5)", "x":16, "y":3.25}, + {"label":"K3H (B3,D7)", "x":17, "y":3.25, "w":2.25}, + {"label":"K40 (B4,B6)", "x":0, "y":4.25}, + {"label":"K41 (B4,B7)", "x":1, "y":4.25}, + {"label":"K42 (B4,C0)", "x":2, "y":4.25}, + {"label":"K43 (B4,C1)", "x":3, "y":4.25}, + {"label":"K44 (B4,C2)", "x":4.25, "y":4.25, "w":1.25}, + {"label":"K45 (B4,C3)", "x":5.5, "y":4.25}, + {"label":"K46 (B4,C4)", "x":6.5, "y":4.25}, + {"label":"K47 (B4,C5)", "x":7.5, "y":4.25}, + {"label":"K48 (B4,C6)", "x":8.5, "y":4.25}, + {"label":"K49 (B4,C7)", "x":9.5, "y":4.25}, + {"label":"K4A (B4,D0)", "x":10.5, "y":4.25}, + {"label":"K4B (B4,D1)", "x":11.5, "y":4.25}, + {"label":"K4C (B4,D2)", "x":12.5, "y":4.25}, + {"label":"K4D (B4,D3)", "x":13.5, "y":4.25}, + {"label":"K4E (B4,D4)", "x":14.5, "y":4.25}, + {"label":"K4F (B4,D5)", "x":15.5, "y":4.25}, + {"label":"K4G (B4,D6)", "x":16.5, "y":4.25, "w":1.75}, + {"label":"K4H (B4,D7)", "x":18.25, "y":4.25}, + {"label":"K4J (B4,E1)", "x":20.5, "y":4.25}, + {"label":"K50 (B5,B6)", "x":0, "y":5.25}, + {"label":"K51 (B5,B7)", "x":1, "y":5.25}, + {"label":"K52 (B5,C0)", "x":2, "y":5.25}, + {"label":"K53 (B5,C1)", "x":3, "y":5.25}, + {"label":"K54 (B5,C2)", "x":4.25, "y":5.25, "w":1.25}, + {"label":"K55 (B5,C3)", "x":5.5, "y":5.25, "w":1.25}, + {"label":"K56 (B5,C4)", "x":6.75, "y":5.25, "w":1.25}, + {"label":"K5A (B5,D0)", "x":8, "y":5.25, "w":6.25}, + {"label":"K5E (B5,D4)", "x":14.25, "y":5.25, "w":1.25}, + {"label":"K5F (B5,D5)", "x":15.5, "y":5.25, "w":1.25}, + {"label":"K5G (B5,D6)", "x":16.75, "y":5.25, "w":1.25}, + {"label":"K5H (B5,D7)", "x":18, "y":5.25, "w":1.25}, + {"label":"K5I (B5,E0)", "x":19.5, "y":5.25}, + {"label":"K5J (B5,E1)", "x":20.5, "y":5.25}, + {"label":"K5K (B5,E2)", "x":21.5, "y":5.25} + ] + } + } +} diff --git a/keyboards/mechlovin/hex6c/keymaps/default/keymap.c b/keyboards/mechlovin/hex6c/keymaps/default/keymap.c new file mode 100644 index 0000000000..c8ff6dad1b --- /dev/null +++ b/keyboards/mechlovin/hex6c/keymaps/default/keymap.c @@ -0,0 +1,40 @@ +/* Copyright 2021 Mechlovin' Studio + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_CALC, KC_MAIL, KC_MYCM, KC_MUTE, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SLCK, KC_PAUS, + KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_INS, KC_HOME, KC_PGUP, + KC_P7, KC_P8, KC_P9, KC_PPLS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_P4, KC_P5, KC_P6, KC_PPLS, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_P1, KC_P2, KC_P3, KC_PENT, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_SPC, KC_UP, + KC_0, KC_PCMM, KC_PDOT, KC_PEQL, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + +}; + +#ifdef ENCODER_ENABLE +void encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } +} +#endif diff --git a/keyboards/mechlovin/hex6c/keymaps/default/readme.md b/keyboards/mechlovin/hex6c/keymaps/default/readme.md new file mode 100644 index 0000000000..5d2f472b0a --- /dev/null +++ b/keyboards/mechlovin/hex6c/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for hex6c diff --git a/keyboards/mechlovin/hex6c/keymaps/via/keymap.c b/keyboards/mechlovin/hex6c/keymaps/via/keymap.c new file mode 100644 index 0000000000..6fa6045a62 --- /dev/null +++ b/keyboards/mechlovin/hex6c/keymaps/via/keymap.c @@ -0,0 +1,68 @@ +/* Copyright 2021 Mechlovin' Studio + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_CALC, KC_MAIL, KC_MYCM, KC_MUTE, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SLCK, KC_PAUS, + KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_INS, KC_HOME, KC_PGUP, + KC_P7, KC_P8, KC_P9, KC_PPLS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_P4, KC_P5, KC_P6, KC_PPLS, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_P1, KC_P2, KC_P3, KC_PENT, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_SPC, KC_UP, + KC_0, KC_PCMM, KC_PDOT, KC_PEQL, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + +}; + +#ifdef ENCODER_ENABLE +void encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } +} +#endif diff --git a/keyboards/mechlovin/hex6c/keymaps/via/rules.mk b/keyboards/mechlovin/hex6c/keymaps/via/rules.mk new file mode 100644 index 0000000000..036bd6d1c3 --- /dev/null +++ b/keyboards/mechlovin/hex6c/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/mechlovin/hex6c/readme.md b/keyboards/mechlovin/hex6c/readme.md new file mode 100644 index 0000000000..9b81afd7ff --- /dev/null +++ b/keyboards/mechlovin/hex6c/readme.md @@ -0,0 +1,21 @@ +# hex6c + +![hex6c](https://i.imgur.com/uYxCTiTl.jpeg) + +A Southpaw Fullsize Keyboard with encoder. + +* Keyboard Maintainer: [Mechlovin' Studio](https://github.com/mechlovin) +* Hardware Supported: Hex6C Keyboard, STM32F303 +* Hardware Availability: [Hex Keyboard](https://hexkeyboards.com/) + +Make example for this keyboard (after setting up your build environment): + + make mechlovin/hex6c:default + +Flashing example for this keyboard: + + make mechlovin/hex6c:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +**Reset Key:** To put the Hex6C into bootloader, hold esc key while plugging in (bootmagic) or push reset swith on the bottom of the PCB. diff --git a/keyboards/mechlovin/hex6c/rules.mk b/keyboards/mechlovin/hex6c/rules.mk new file mode 100644 index 0000000000..99aa532c26 --- /dev/null +++ b/keyboards/mechlovin/hex6c/rules.mk @@ -0,0 +1,20 @@ +# MCU name +MCU = STM32F303 + +BOARD = QMK_PROTON_C + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +ENCODER_ENABLE = yes diff --git a/keyboards/mechlovin/infinity87/config.h b/keyboards/mechlovin/infinity87/config.h index ccb9f67566..a344c98b8f 100644 --- a/keyboards/mechlovin/infinity87/config.h +++ b/keyboards/mechlovin/infinity87/config.h @@ -1,19 +1,18 @@ -/* -Copyright 2020 Team Mechlovin' - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ +/* Copyright 2020 Team Mechlovin' + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ #pragma once @@ -21,54 +20,10 @@ along with this program. If not, see . /* USB Device descriptor parameter */ #define VENDOR_ID 0x4D4C // ML -#define PRODUCT_ID 0x8701 -#define DEVICE_VER 0x0001 -#define MANUFACTURER Team.Mechlovin -#define PRODUCT Infinity 87 + +#define MANUFACTURER Mechlovin.Studio /* key matrix size */ #define MATRIX_ROWS 6 #define MATRIX_COLS 17 - -/* - * Keyboard Matrix Assignments - * - * Change this to how you wired your keyboard - * COLS: AVR pins used for columns, left to right - * ROWS: AVR pins used for rows, top to bottom - * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) - * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) - * - */ -#define MATRIX_ROW_PINS { A10, B13, B12, B11, C14, C15 } -#define MATRIX_COL_PINS { C13, B9, B4, B7, B8, B5, B6, A9, A5, A6, A7,B1, B2, B10, B3, B14, B15 } - -#define DIODE_DIRECTION COL2ROW - -#define LED_NUM_LOCK_PIN A3 -#define LED_CAPS_LOCK_PIN A4 - -#define BACKLIGHT_PIN B0 -#define BACKLIGHT_BREATHING -#define BACKLIGHT_PWM_DRIVER PWMD3 -#define BACKLIGHT_PWM_CHANNEL 3 - -#define RGB_DI_PIN A15 -#define RGBLED_NUM 26 -#define RGBLIGHT_LIMIT_VAL 255 -#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ -/*== all animations enable ==*/ -#define RGBLIGHT_ANIMATIONS -// /*== or choose animations ==*/ -// #define RGBLIGHT_EFFECT_BREATHING -// #define RGBLIGHT_EFFECT_RAINBOW_MOOD -// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL -// #define RGBLIGHT_EFFECT_SNAKE -// #define RGBLIGHT_EFFECT_KNIGHT -// #define RGBLIGHT_EFFECT_CHRISTMAS -// #define RGBLIGHT_EFFECT_STATIC_GRADIENT -// #define RGBLIGHT_EFFECT_RGB_TEST -// #define RGBLIGHT_EFFECT_ALTERNATING - -// generated by KBFirmware JSON to QMK Parser -// https://noroadsleft.github.io/kbf_qmk_converter/ \ No newline at end of file + diff --git a/keyboards/mechlovin/infinity87/infinity87.h b/keyboards/mechlovin/infinity87/infinity87.h index 4810d9d86a..f56d960e92 100644 --- a/keyboards/mechlovin/infinity87/infinity87.h +++ b/keyboards/mechlovin/infinity87/infinity87.h @@ -18,12 +18,12 @@ #include "quantum.h" #define LAYOUT_all( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, K0F, K0G, \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, K0F, K0G, \ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K0D, K1E, K1F, K1G, \ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, \ - K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \ - K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4F, \ - K50, K51, K52, K56, K5A, K5B, K5C, K5D, K5E, K5F, K5G \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \ + K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4F, \ + K50, K51, K52, K56, K5A, K5B, K5C, K5D, K5E, K5F, K5G \ ) { \ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G }, \ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G }, \ @@ -32,6 +32,3 @@ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, KC_NO, K4F, KC_NO }, \ { K50, K51, K52, KC_NO, KC_NO, KC_NO, K56, KC_NO, KC_NO, KC_NO, K5A, K5B, K5C, K5D, K5E, K5F, K5G }, \ } - -// generated by KBFirmware JSON to QMK Parser -// https://noroadsleft.github.io/kbf_qmk_converter/ \ No newline at end of file diff --git a/keyboards/mechlovin/infinity87/keymaps/via/rules.mk b/keyboards/mechlovin/infinity87/keymaps/via/rules.mk index 036bd6d1c3..36b7ba9cbc 100644 --- a/keyboards/mechlovin/infinity87/keymaps/via/rules.mk +++ b/keyboards/mechlovin/infinity87/keymaps/via/rules.mk @@ -1 +1,2 @@ -VIA_ENABLE = yes \ No newline at end of file +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/mechlovin/infinity87/rev1/config.h b/keyboards/mechlovin/infinity87/rev1/config.h new file mode 100644 index 0000000000..467d47c6f4 --- /dev/null +++ b/keyboards/mechlovin/infinity87/rev1/config.h @@ -0,0 +1,31 @@ +/* Copyright 2020 Team Mechlovin' + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define MATRIX_ROW_PINS { A10, B13, B12, B11, C14, C15 } +#define MATRIX_COL_PINS { C13, B9, B4, B7, B8, B5, B6, A9, A5, A6, A7, B1, B2, B10, B3, B14, B15 } + +#define BACKLIGHT_PIN B0 +#define BACKLIGHT_BREATHING +#define BACKLIGHT_PWM_DRIVER PWMD3 +#define BACKLIGHT_PWM_CHANNEL 3 + + +#define LED_CAPS_LOCK_PIN A4 +#define LED_SCROLL_LOCK_PIN A8 + +#define DIODE_DIRECTION COL2ROW \ No newline at end of file diff --git a/keyboards/mechlovin/infinity87/rev1/readme.md b/keyboards/mechlovin/infinity87/rev1/readme.md new file mode 100644 index 0000000000..448d69ca7c --- /dev/null +++ b/keyboards/mechlovin/infinity87/rev1/readme.md @@ -0,0 +1,16 @@ +# infinity87 + +![infinity87](https://i.imgur.com/QuK1EnNl.png) + +A replacement PCB for TKL keyboard + +* Keyboard Maintainer: [Team Mechlovin'](https://github.com/mechlovin) +* Hardware Supported: Infinity87 rev.1 (1.6mm & 1.2mm). Rouge87 for OTD, Rogue87 for UTD + +Make example for this keyboard (after setting up your build environment): + + make mechlovin/infinity87:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +**Reset Key:** To put the IF87_rev1, rouge87, rogue87 into bootloader, hold esc key while plugging in (bootmagic) or push reset swith on the bottom of the PCB. \ No newline at end of file diff --git a/keyboards/mechlovin/infinity87/rev1/rev1.c b/keyboards/mechlovin/infinity87/rev1/rev1.c new file mode 100644 index 0000000000..c65ff19838 --- /dev/null +++ b/keyboards/mechlovin/infinity87/rev1/rev1.c @@ -0,0 +1,17 @@ +/* Copyright 2020 Team Mechlovin' + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "rev1.h" diff --git a/keyboards/mechlovin/infinity87/rev1/rev1.h b/keyboards/mechlovin/infinity87/rev1/rev1.h new file mode 100644 index 0000000000..16cdf9ed85 --- /dev/null +++ b/keyboards/mechlovin/infinity87/rev1/rev1.h @@ -0,0 +1,19 @@ +/* Copyright 2020 Team Mechlovin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" diff --git a/keyboards/mechlovin/infinity87/rev1/rogue87/config.h b/keyboards/mechlovin/infinity87/rev1/rogue87/config.h new file mode 100644 index 0000000000..3415f3add9 --- /dev/null +++ b/keyboards/mechlovin/infinity87/rev1/rogue87/config.h @@ -0,0 +1,21 @@ +/* Copyright 2020 Team Mechlovin' + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define PRODUCT_ID 0x8704 +#define DEVICE_VER 0x0001 +#define PRODUCT Rogue87 Rev.1 \ No newline at end of file diff --git a/keyboards/mechlovin/infinity87/rev1/rogue87/info.json b/keyboards/mechlovin/infinity87/rev1/rogue87/info.json new file mode 100644 index 0000000000..3d541cfb79 --- /dev/null +++ b/keyboards/mechlovin/infinity87/rev1/rogue87/info.json @@ -0,0 +1,99 @@ +{ + "keyboard_name": "Rogue87", + "url": "", + "maintainer": "Mechlovin' Studio", + "width": 18.25, + "height": 6.25, + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"K00", "x":0, "y":0}, + {"label":"K01", "x":2, "y":0}, + {"label":"K02", "x":3, "y":0}, + {"label":"K03", "x":4, "y":0}, + {"label":"K04", "x":5, "y":0}, + {"label":"K05", "x":6.5, "y":0}, + {"label":"K06", "x":7.5, "y":0}, + {"label":"K07", "x":8.5, "y":0}, + {"label":"K08", "x":9.5, "y":0}, + {"label":"K09", "x":11, "y":0}, + {"label":"K0A", "x":12, "y":0}, + {"label":"K0B", "x":13, "y":0}, + {"label":"K0C", "x":14, "y":0}, + {"label":"K0E", "x":15.25, "y":0}, + {"label":"K0F", "x":16.25, "y":0}, + {"label":"K0G", "x":17.25, "y":0}, + {"label":"K10", "x":0, "y":1.25}, + {"label":"K11", "x":1, "y":1.25}, + {"label":"K12", "x":2, "y":1.25}, + {"label":"K13", "x":3, "y":1.25}, + {"label":"K14", "x":4, "y":1.25}, + {"label":"K15", "x":5, "y":1.25}, + {"label":"K16", "x":6, "y":1.25}, + {"label":"K17", "x":7, "y":1.25}, + {"label":"K18", "x":8, "y":1.25}, + {"label":"K19", "x":9, "y":1.25}, + {"label":"K1A", "x":10, "y":1.25}, + {"label":"K1B", "x":11, "y":1.25}, + {"label":"K1C", "x":12, "y":1.25}, + {"label":"K1D", "x":13, "y":1.25, "w":2}, + {"label":"K1E", "x":15.25, "y":1.25}, + {"label":"K1F", "x":16.25, "y":1.25}, + {"label":"K1G", "x":17.25, "y":1.25}, + {"label":"K20", "x":0, "y":2.25, "w":1.5}, + {"label":"K21", "x":1.5, "y":2.25}, + {"label":"K22", "x":2.5, "y":2.25}, + {"label":"K23", "x":3.5, "y":2.25}, + {"label":"K24", "x":4.5, "y":2.25}, + {"label":"K25", "x":5.5, "y":2.25}, + {"label":"K26", "x":6.5, "y":2.25}, + {"label":"K27", "x":7.5, "y":2.25}, + {"label":"K28", "x":8.5, "y":2.25}, + {"label":"K29", "x":9.5, "y":2.25}, + {"label":"K2A", "x":10.5, "y":2.25}, + {"label":"K2B", "x":11.5, "y":2.25}, + {"label":"K2C", "x":12.5, "y":2.25}, + {"label":"K2D", "x":13.5, "y":2.25, "w":1.5}, + {"label":"K2E", "x":15.25, "y":2.25}, + {"label":"K2F", "x":16.25, "y":2.25}, + {"label":"K2G", "x":17.25, "y":2.25}, + {"label":"K30", "x":0, "y":3.25, "w":1.75}, + {"label":"K31", "x":1.75, "y":3.25}, + {"label":"K32", "x":2.75, "y":3.25}, + {"label":"K33", "x":3.75, "y":3.25}, + {"label":"K34", "x":4.75, "y":3.25}, + {"label":"K35", "x":5.75, "y":3.25}, + {"label":"K36", "x":6.75, "y":3.25}, + {"label":"K37", "x":7.75, "y":3.25}, + {"label":"K38", "x":8.75, "y":3.25}, + {"label":"K39", "x":9.75, "y":3.25}, + {"label":"K3A", "x":10.75, "y":3.25}, + {"label":"K3B", "x":11.75, "y":3.25}, + {"label":"K3C", "x":12.75, "y":3.25}, + {"label":"K3D", "x":13.75, "y":3.25, "w":1.25}, + {"label":"K40", "x":0, "y":4.25, "w":1.25}, + {"label":"K41", "x":1.25, "y":4.25}, + {"label":"K42", "x":2.25, "y":4.25}, + {"label":"K43", "x":3.25, "y":4.25}, + {"label":"K44", "x":4.25, "y":4.25}, + {"label":"K45", "x":5.25, "y":4.25}, + {"label":"K46", "x":6.25, "y":4.25}, + {"label":"K47", "x":7.25, "y":4.25}, + {"label":"K48", "x":8.25, "y":4.25}, + {"label":"K49", "x":9.25, "y":4.25}, + {"label":"K4A", "x":10.25, "y":4.25}, + {"label":"K4B", "x":11.25, "y":4.25}, + {"label":"K4D", "x":12.25, "y":4.25, "w":2.75}, + {"label":"K4F", "x":16.25, "y":4.25}, + {"label":"K50", "x":0, "y":5.25, "w":1.5}, + {"label":"K52", "x":2.5, "y":5.25, "w":1.5}, + {"label":"K56", "x":4, "y":5.25, "w":7}, + {"label":"K5B", "x":11, "y":5.25, "w":1.5}, + {"label":"K5D", "x":13.5, "y":5.25, "w":1.5}, + {"label":"K5E", "x":15.25, "y":5.25}, + {"label":"K5F", "x":16.25, "y":5.25}, + {"label":"K5G", "x":17.25, "y":5.25} + ] + } + } +} diff --git a/keyboards/mechlovin/infinity87/rev1/rogue87/keymaps/default/keymap.c b/keyboards/mechlovin/infinity87/rev1/rogue87/keymaps/default/keymap.c new file mode 100644 index 0000000000..7e0bcb49d3 --- /dev/null +++ b/keyboards/mechlovin/infinity87/rev1/rogue87/keymaps/default/keymap.c @@ -0,0 +1,27 @@ +/* Copyright 2020 Team Mechlovin' + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_HASH, KC_ENT, + KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, + KC_LCTL, KC_LALT, KC_SPC, KC_LALT, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), +}; diff --git a/keyboards/mechlovin/infinity87/rev1/rogue87/keymaps/default/readme.md b/keyboards/mechlovin/infinity87/rev1/rogue87/keymaps/default/readme.md new file mode 100644 index 0000000000..01ef555056 --- /dev/null +++ b/keyboards/mechlovin/infinity87/rev1/rogue87/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for infinity87 diff --git a/keyboards/mechlovin/infinity87/rev1/rogue87/keymaps/via/keymap.c b/keyboards/mechlovin/infinity87/rev1/rogue87/keymaps/via/keymap.c new file mode 100644 index 0000000000..0c1aa67f4f --- /dev/null +++ b/keyboards/mechlovin/infinity87/rev1/rogue87/keymaps/via/keymap.c @@ -0,0 +1,53 @@ +/* Copyright 2020 Team Mechlovin' + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_HASH, KC_ENT, + KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, + KC_LCTL, KC_LALT, KC_SPC, KC_LALT, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + +}; diff --git a/keyboards/mechlovin/infinity87/rev1/rogue87/keymaps/via/readme.md b/keyboards/mechlovin/infinity87/rev1/rogue87/keymaps/via/readme.md new file mode 100644 index 0000000000..8867d290cd --- /dev/null +++ b/keyboards/mechlovin/infinity87/rev1/rogue87/keymaps/via/readme.md @@ -0,0 +1 @@ +# The via keymap for infinity87 diff --git a/keyboards/mechlovin/infinity87/rev1/rogue87/keymaps/via/rules.mk b/keyboards/mechlovin/infinity87/rev1/rogue87/keymaps/via/rules.mk new file mode 100644 index 0000000000..36b7ba9cbc --- /dev/null +++ b/keyboards/mechlovin/infinity87/rev1/rogue87/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/mechlovin/infinity87/rev1/rogue87/readme.md b/keyboards/mechlovin/infinity87/rev1/rogue87/readme.md new file mode 100644 index 0000000000..a3fb9ef554 --- /dev/null +++ b/keyboards/mechlovin/infinity87/rev1/rogue87/readme.md @@ -0,0 +1,19 @@ +# Rogue87 PCB + +![infinity87](https://i.imgur.com/DBquKMBl.jpeg) + +A replacement PCB for UTD keyboard. + +* Keyboard Maintainer: [Team Mechlovin'](https://github.com/mechlovin) +* Hardware Supported: UTD Keyboard, Rogue87, STM32F303 +* Hardware Availability: [Reddit GB](https://www.reddit.com/r/mechmarket/comments/ll6e5x/gb_mechlovin_rouge_otd_compatible_pcb_plates/) + +Make example for this keyboard (after setting up your build environment): + + make mechlovin/infinity87/rev1/rogue87:default + +Flashing example for this keyboard: + + make mechlovin/infinity87/rev1/rogue87:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/mechlovin/infinity87/rev1/rogue87/rogue87.h b/keyboards/mechlovin/infinity87/rev1/rogue87/rogue87.h new file mode 100644 index 0000000000..70a50b9620 --- /dev/null +++ b/keyboards/mechlovin/infinity87/rev1/rogue87/rogue87.h @@ -0,0 +1,34 @@ +/* Copyright 2020 Team Mechlovin' + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#define LAYOUT_all( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, K0F, K0G, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \ + K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4D, K4F, \ + K50, K52, K56, K5B, K5D, K5E, K5F, K5G \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, KC_NO, K0E, K0F, K0G }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, KC_NO, KC_NO, KC_NO}, \ + { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, KC_NO, K4D, KC_NO, K4F, KC_NO}, \ + { K50, KC_NO, K52, KC_NO, KC_NO, KC_NO, K56, KC_NO, KC_NO, KC_NO, KC_NO, K5B, KC_NO, K5D, K5E, K5F, K5G }, \ +} diff --git a/keyboards/mechlovin/infinity87/rev1/rogue87/rules.mk b/keyboards/mechlovin/infinity87/rev1/rogue87/rules.mk new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/keyboards/mechlovin/infinity87/rev1/rogue87/rules.mk @@ -0,0 +1 @@ + diff --git a/keyboards/mechlovin/infinity87/rev1/rouge87/config.h b/keyboards/mechlovin/infinity87/rev1/rouge87/config.h new file mode 100644 index 0000000000..786da387bc --- /dev/null +++ b/keyboards/mechlovin/infinity87/rev1/rouge87/config.h @@ -0,0 +1,21 @@ +/* Copyright 2020 Team Mechlovin' + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define PRODUCT_ID 0x8703 +#define DEVICE_VER 0x0001 +#define PRODUCT Rouge87 Rev.1 diff --git a/keyboards/mechlovin/infinity87/rev1/rouge87/info.json b/keyboards/mechlovin/infinity87/rev1/rouge87/info.json new file mode 100644 index 0000000000..8317e93512 --- /dev/null +++ b/keyboards/mechlovin/infinity87/rev1/rouge87/info.json @@ -0,0 +1,101 @@ +{ + "keyboard_name": "Rouge87", + "url": "", + "maintainer": "Mechlovin' Studio", + "width": 18.25, + "height": 6.25, + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"K00", "x":0, "y":0}, + {"label":"K01", "x":2, "y":0}, + {"label":"K02", "x":3, "y":0}, + {"label":"K03", "x":4, "y":0}, + {"label":"K04", "x":5, "y":0}, + {"label":"K05", "x":6.5, "y":0}, + {"label":"K06", "x":7.5, "y":0}, + {"label":"K07", "x":8.5, "y":0}, + {"label":"K08", "x":9.5, "y":0}, + {"label":"K09", "x":11, "y":0}, + {"label":"K0A", "x":12, "y":0}, + {"label":"K0B", "x":13, "y":0}, + {"label":"K0C", "x":14, "y":0}, + {"label":"K0E", "x":15.25, "y":0}, + {"label":"K0F", "x":16.25, "y":0}, + {"label":"K0G", "x":17.25, "y":0}, + {"label":"K10", "x":0, "y":1.25}, + {"label":"K11", "x":1, "y":1.25}, + {"label":"K12", "x":2, "y":1.25}, + {"label":"K13", "x":3, "y":1.25}, + {"label":"K14", "x":4, "y":1.25}, + {"label":"K15", "x":5, "y":1.25}, + {"label":"K16", "x":6, "y":1.25}, + {"label":"K17", "x":7, "y":1.25}, + {"label":"K18", "x":8, "y":1.25}, + {"label":"K19", "x":9, "y":1.25}, + {"label":"K1A", "x":10, "y":1.25}, + {"label":"K1B", "x":11, "y":1.25}, + {"label":"K1C", "x":12, "y":1.25}, + {"label":"K1D", "x":13, "y":1.25, "w":2}, + {"label":"K1E", "x":15.25, "y":1.25}, + {"label":"K1F", "x":16.25, "y":1.25}, + {"label":"K1G", "x":17.25, "y":1.25}, + {"label":"K20", "x":0, "y":2.25, "w":1.5}, + {"label":"K21", "x":1.5, "y":2.25}, + {"label":"K22", "x":2.5, "y":2.25}, + {"label":"K23", "x":3.5, "y":2.25}, + {"label":"K24", "x":4.5, "y":2.25}, + {"label":"K25", "x":5.5, "y":2.25}, + {"label":"K26", "x":6.5, "y":2.25}, + {"label":"K27", "x":7.5, "y":2.25}, + {"label":"K28", "x":8.5, "y":2.25}, + {"label":"K29", "x":9.5, "y":2.25}, + {"label":"K2A", "x":10.5, "y":2.25}, + {"label":"K2B", "x":11.5, "y":2.25}, + {"label":"K2C", "x":12.5, "y":2.25}, + {"label":"K2D", "x":13.5, "y":2.25, "w":1.5}, + {"label":"K2E", "x":15.25, "y":2.25}, + {"label":"K2F", "x":16.25, "y":2.25}, + {"label":"K2G", "x":17.25, "y":2.25}, + {"label":"K30", "x":0, "y":3.25, "w":1.75}, + {"label":"K31", "x":1.75, "y":3.25}, + {"label":"K32", "x":2.75, "y":3.25}, + {"label":"K33", "x":3.75, "y":3.25}, + {"label":"K34", "x":4.75, "y":3.25}, + {"label":"K35", "x":5.75, "y":3.25}, + {"label":"K36", "x":6.75, "y":3.25}, + {"label":"K37", "x":7.75, "y":3.25}, + {"label":"K38", "x":8.75, "y":3.25}, + {"label":"K39", "x":9.75, "y":3.25}, + {"label":"K3A", "x":10.75, "y":3.25}, + {"label":"K3B", "x":11.75, "y":3.25}, + {"label":"K3C", "x":12.75, "y":3.25}, + {"label":"K3D", "x":13.75, "y":3.25, "w":1.25}, + {"label":"K40", "x":0, "y":4.25, "w":1.25}, + {"label":"K41", "x":1.25, "y":4.25}, + {"label":"K42", "x":2.25, "y":4.25}, + {"label":"K43", "x":3.25, "y":4.25}, + {"label":"K44", "x":4.25, "y":4.25}, + {"label":"K45", "x":5.25, "y":4.25}, + {"label":"K46", "x":6.25, "y":4.25}, + {"label":"K47", "x":7.25, "y":4.25}, + {"label":"K48", "x":8.25, "y":4.25}, + {"label":"K49", "x":9.25, "y":4.25}, + {"label":"K4A", "x":10.25, "y":4.25}, + {"label":"K4B", "x":11.25, "y":4.25}, + {"label":"K4D", "x":12.25, "y":4.25, "w":2.75}, + {"label":"K4F", "x":16.25, "y":4.25}, + {"label":"K50", "x":0, "y":5.25, "w":1.5}, + {"label":"K51", "x":1.5, "y":5.25}, + {"label":"K52", "x":2.5, "y":5.25, "w":1.5}, + {"label":"K56", "x":4, "y":5.25, "w":7}, + {"label":"K5B", "x":11, "y":5.25, "w":1.5}, + {"label":"K5C", "x":12.5, "y":5.25}, + {"label":"K5D", "x":13.5, "y":5.25, "w":1.5}, + {"label":"K5E", "x":15.25, "y":5.25}, + {"label":"K5F", "x":16.25, "y":5.25}, + {"label":"K5G", "x":17.25, "y":5.25} + ] + } + } +} diff --git a/keyboards/mechlovin/infinity87/rev1/rouge87/keymaps/default/keymap.c b/keyboards/mechlovin/infinity87/rev1/rouge87/keymaps/default/keymap.c new file mode 100644 index 0000000000..79658b2050 --- /dev/null +++ b/keyboards/mechlovin/infinity87/rev1/rouge87/keymaps/default/keymap.c @@ -0,0 +1,27 @@ +/* Copyright 2020 Team Mechlovin' + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_HASH, KC_ENT, + KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LGUI, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), +}; diff --git a/keyboards/mechlovin/infinity87/rev1/rouge87/keymaps/default/readme.md b/keyboards/mechlovin/infinity87/rev1/rouge87/keymaps/default/readme.md new file mode 100644 index 0000000000..01ef555056 --- /dev/null +++ b/keyboards/mechlovin/infinity87/rev1/rouge87/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for infinity87 diff --git a/keyboards/mechlovin/infinity87/rev1/rouge87/keymaps/via/keymap.c b/keyboards/mechlovin/infinity87/rev1/rouge87/keymaps/via/keymap.c new file mode 100644 index 0000000000..201ee4e4ba --- /dev/null +++ b/keyboards/mechlovin/infinity87/rev1/rouge87/keymaps/via/keymap.c @@ -0,0 +1,53 @@ +/* Copyright 2020 Team Mechlovin' + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_HASH, KC_ENT, + KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LGUI, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + +}; diff --git a/keyboards/mechlovin/infinity87/rev1/rouge87/keymaps/via/readme.md b/keyboards/mechlovin/infinity87/rev1/rouge87/keymaps/via/readme.md new file mode 100644 index 0000000000..8867d290cd --- /dev/null +++ b/keyboards/mechlovin/infinity87/rev1/rouge87/keymaps/via/readme.md @@ -0,0 +1 @@ +# The via keymap for infinity87 diff --git a/keyboards/mechlovin/infinity87/rev1/rouge87/keymaps/via/rules.mk b/keyboards/mechlovin/infinity87/rev1/rouge87/keymaps/via/rules.mk new file mode 100644 index 0000000000..36b7ba9cbc --- /dev/null +++ b/keyboards/mechlovin/infinity87/rev1/rouge87/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/mechlovin/infinity87/rev1/rouge87/readme.md b/keyboards/mechlovin/infinity87/rev1/rouge87/readme.md new file mode 100644 index 0000000000..de43b2568e --- /dev/null +++ b/keyboards/mechlovin/infinity87/rev1/rouge87/readme.md @@ -0,0 +1,19 @@ +# rouge87 PCB + +![infinity87](https://i.imgur.com/y2RVpzSl.jpeg) + +A replacement PCB OTD 356.2, 360c, 456gt, The Cheat + +* Keyboard Maintainer: [Team Mechlovin'](https://github.com/mechlovin) +* Hardware Supported: OTD 360C, The Cheat,... +* Hardware Availability: [Reddit GB](https://www.reddit.com/r/mechmarket/comments/ll6e5x/gb_mechlovin_rouge_otd_compatible_pcb_plates/) + +Make example for this keyboard (after setting up your build environment): + + make mechlovin/infinity87/rev1/rouge87:default + +Flashing example for this keyboard: + + make mechlovin/infinity87/rev1/rouge87:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/mechlovin/infinity87/rev1/rouge87/rouge87.h b/keyboards/mechlovin/infinity87/rev1/rouge87/rouge87.h new file mode 100644 index 0000000000..67dcefde26 --- /dev/null +++ b/keyboards/mechlovin/infinity87/rev1/rouge87/rouge87.h @@ -0,0 +1,35 @@ +/* Copyright 2020 Team Mechlovin' + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#define LAYOUT_all( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, K0F, K0G, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \ + K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4D, K4F, \ + K50, K51, K52, K56, K5B, K5C, K5D, K5E, K5F, K5G \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, KC_NO, K0E, K0F, K0G }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, KC_NO, KC_NO, KC_NO}, \ + { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, KC_NO, K4D, KC_NO, K4F, KC_NO}, \ + { K50, K51, K52, KC_NO, KC_NO, KC_NO, K56, KC_NO, KC_NO, KC_NO, KC_NO, K5B, K5C, K5D, K5E, K5F, K5G }, \ +} + diff --git a/keyboards/mechlovin/infinity87/rev1/rouge87/rules.mk b/keyboards/mechlovin/infinity87/rev1/rouge87/rules.mk new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/keyboards/mechlovin/infinity87/rev1/rouge87/rules.mk @@ -0,0 +1 @@ + diff --git a/keyboards/mechlovin/infinity87/rev1/rules.mk b/keyboards/mechlovin/infinity87/rev1/rules.mk new file mode 100644 index 0000000000..cb04a558f2 --- /dev/null +++ b/keyboards/mechlovin/infinity87/rev1/rules.mk @@ -0,0 +1,6 @@ +MCU = STM32F303 +BOARD = QMK_PROTON_C + +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality + +DEFAULT_FOLDER = mechlovin/infinity87/rev1/standard \ No newline at end of file diff --git a/keyboards/mechlovin/infinity87/rev1/standard/config.h b/keyboards/mechlovin/infinity87/rev1/standard/config.h new file mode 100644 index 0000000000..b3ae5a7717 --- /dev/null +++ b/keyboards/mechlovin/infinity87/rev1/standard/config.h @@ -0,0 +1,40 @@ +/* Copyright 2020 Team Mechlovin' + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define PRODUCT_ID 0x8701 +#define DEVICE_VER 0x0001 +#define PRODUCT Infinity 87 rev1 + +#define RGB_DI_PIN A15 +#define RGBLED_NUM 26 +#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +#define RGBLIGHT_ANIMATIONS +// /*== or choose animations ==*/ +// #define RGBLIGHT_EFFECT_BREATHING +// #define RGBLIGHT_EFFECT_RAINBOW_MOOD +// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL +// #define RGBLIGHT_EFFECT_SNAKE +// #define RGBLIGHT_EFFECT_KNIGHT +// #define RGBLIGHT_EFFECT_CHRISTMAS +// #define RGBLIGHT_EFFECT_STATIC_GRADIENT +// #define RGBLIGHT_EFFECT_RGB_TEST +// #define RGBLIGHT_EFFECT_ALTERNATING + +// generated by KBFirmware JSON to QMK Parser +// https://noroadsleft.github.io/kbf_qmk_converter/ diff --git a/keyboards/mechlovin/infinity87/info.json b/keyboards/mechlovin/infinity87/rev1/standard/info.json similarity index 100% rename from keyboards/mechlovin/infinity87/info.json rename to keyboards/mechlovin/infinity87/rev1/standard/info.json diff --git a/keyboards/mechlovin/infinity87/rev1/standard/readme.md b/keyboards/mechlovin/infinity87/rev1/standard/readme.md new file mode 100644 index 0000000000..f8998b4987 --- /dev/null +++ b/keyboards/mechlovin/infinity87/rev1/standard/readme.md @@ -0,0 +1,15 @@ +# infinity87 + +![infinity87](https://i.imgur.com/QuK1EnNl.png) + +A replacement PCB for TKL keyboard. A87 form factor,south-facing stabilisers. + +* Keyboard Maintainer: [Team Mechlovin'](https://github.com/mechlovin) +* Hardware Supported: Infinity87 rev.1 (1.6mm & 1.2mm). +* Hardware Availability: [Geekhack GB](https://geekhack.org/index.php?topic=105853.0), [Reddit GB](https://www.reddit.com/r/mechmarket/comments/g4vf2w/gb_team_mechlovin_infinity_87_a87_form_factor/) + +Make example for this keyboard (after setting up your build environment): + + make mechlovin/infinity87/rev1/standard:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/mechlovin/infinity87/rev1/standard/rules.mk b/keyboards/mechlovin/infinity87/rev1/standard/rules.mk new file mode 100644 index 0000000000..1e3cebb145 --- /dev/null +++ b/keyboards/mechlovin/infinity87/rev1/standard/rules.mk @@ -0,0 +1 @@ +RGBLIGHT_ENABLE = yes diff --git a/keyboards/mechlovin/infinity87/rev2/config.h b/keyboards/mechlovin/infinity87/rev2/config.h new file mode 100644 index 0000000000..1be7f0a1bb --- /dev/null +++ b/keyboards/mechlovin/infinity87/rev2/config.h @@ -0,0 +1,48 @@ +/* Copyright 2020 Team Mechlovin' + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define PRODUCT_ID 0x8702 +#define DEVICE_VER 0x0001 +#define PRODUCT Infinity 87 rev2 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +#define MATRIX_ROW_PINS { A3, D5, C3, C2, B3, B4 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION ROW2COL + +#define BACKLIGHT_PIN D4 +#define BACKLIGHT_BREATHING + +#define LED_NUM_LOCK_PIN B1 +#define LED_CAPS_LOCK_PIN B0 +#define LED_SCROLL_LOCK_PIN B2 +#define LED_PIN_ON_STATE 0 + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 \ No newline at end of file diff --git a/keyboards/mechlovin/infinity87/rev2/info.json b/keyboards/mechlovin/infinity87/rev2/info.json new file mode 100644 index 0000000000..9b3fe1002c --- /dev/null +++ b/keyboards/mechlovin/infinity87/rev2/info.json @@ -0,0 +1,105 @@ +{ + "keyboard_name": "infinity87", + "url": "", + "maintainer": "Team Mechlovin'", + "width": 18.25, + "height": 6.25, + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"K00 (B0,B6)", "x":0, "y":0}, + {"label":"K01 (B0,F4)", "x":2, "y":0}, + {"label":"K02 (B0,C0)", "x":3, "y":0}, + {"label":"K03 (B0,C1)", "x":4, "y":0}, + {"label":"K04 (B0,C2)", "x":5, "y":0}, + {"label":"K05 (B0,C3)", "x":6.5, "y":0}, + {"label":"K06 (B0,C4)", "x":7.5, "y":0}, + {"label":"K07 (B0,C5)", "x":8.5, "y":0}, + {"label":"K08 (B0,C6)", "x":9.5, "y":0}, + {"label":"K09 (B0,C7)", "x":11, "y":0}, + {"label":"K0A (B0,D0)", "x":12, "y":0}, + {"label":"K0B (B0,D1)", "x":13, "y":0}, + {"label":"K0C (B0,D2)", "x":14, "y":0}, + {"label":"K0E (B0,D4)", "x":15.25, "y":0}, + {"label":"K0F (B0,D5)", "x":16.25, "y":0}, + {"label":"K0G (B0,D6)", "x":17.25, "y":0}, + {"label":"K10 (B1,B6)", "x":0, "y":1.25}, + {"label":"K11 (B1,F4)", "x":1, "y":1.25}, + {"label":"K12 (B1,C0)", "x":2, "y":1.25}, + {"label":"K13 (B1,C1)", "x":3, "y":1.25}, + {"label":"K14 (B1,C2)", "x":4, "y":1.25}, + {"label":"K15 (B1,C3)", "x":5, "y":1.25}, + {"label":"K16 (B1,C4)", "x":6, "y":1.25}, + {"label":"K17 (B1,C5)", "x":7, "y":1.25}, + {"label":"K18 (B1,C6)", "x":8, "y":1.25}, + {"label":"K19 (B1,C7)", "x":9, "y":1.25}, + {"label":"K1A (B1,D0)", "x":10, "y":1.25}, + {"label":"K1B (B1,D1)", "x":11, "y":1.25}, + {"label":"K1C (B1,D2)", "x":12, "y":1.25}, + {"label":"K1D (B1,D3)", "x":13, "y":1.25}, + {"label":"K0D (B0,D3)", "x":14, "y":1.25}, + {"label":"K1E (B1,D4)", "x":15.25, "y":1.25}, + {"label":"K1F (B1,D5)", "x":16.25, "y":1.25}, + {"label":"K1G (B1,D6)", "x":17.25, "y":1.25}, + {"label":"K20 (B2,B6)", "x":0, "y":2.25, "w":1.5}, + {"label":"K21 (B2,F4)", "x":1.5, "y":2.25}, + {"label":"K22 (B2,C0)", "x":2.5, "y":2.25}, + {"label":"K23 (B2,C1)", "x":3.5, "y":2.25}, + {"label":"K24 (B2,C2)", "x":4.5, "y":2.25}, + {"label":"K25 (B2,C3)", "x":5.5, "y":2.25}, + {"label":"K26 (B2,C4)", "x":6.5, "y":2.25}, + {"label":"K27 (B2,C5)", "x":7.5, "y":2.25}, + {"label":"K28 (B2,C6)", "x":8.5, "y":2.25}, + {"label":"K29 (B2,C7)", "x":9.5, "y":2.25}, + {"label":"K2A (B2,D0)", "x":10.5, "y":2.25}, + {"label":"K2B (B2,D1)", "x":11.5, "y":2.25}, + {"label":"K2C (B2,D2)", "x":12.5, "y":2.25}, + {"label":"K2D (B2,D3)", "x":13.5, "y":2.25, "w":1.5}, + {"label":"K2E (B2,D4)", "x":15.25, "y":2.25}, + {"label":"K2F (B2,D5)", "x":16.25, "y":2.25}, + {"label":"K2G (B2,D6)", "x":17.25, "y":2.25}, + {"label":"K30 (B3,B6)", "x":0, "y":3.25, "w":1.75}, + {"label":"K31 (B3,F4)", "x":1.75, "y":3.25}, + {"label":"K32 (B3,C0)", "x":2.75, "y":3.25}, + {"label":"K33 (B3,C1)", "x":3.75, "y":3.25}, + {"label":"K34 (B3,C2)", "x":4.75, "y":3.25}, + {"label":"K35 (B3,C3)", "x":5.75, "y":3.25}, + {"label":"K36 (B3,C4)", "x":6.75, "y":3.25}, + {"label":"K37 (B3,C5)", "x":7.75, "y":3.25}, + {"label":"K38 (B3,C6)", "x":8.75, "y":3.25}, + {"label":"K39 (B3,C7)", "x":9.75, "y":3.25}, + {"label":"K3A (B3,D0)", "x":10.75, "y":3.25}, + {"label":"K3B (B3,D1)", "x":11.75, "y":3.25}, + {"label":"K3C (B3,D2)", "x":12.75, "y":3.25}, + {"label":"K3D (B3,D3)", "x":13.75, "y":3.25, "w":1.25}, + {"label":"K40 (B4,B6)", "x":0, "y":4.25, "w":1.25}, + {"label":"K41 (B4,F4)", "x":1.25, "y":4.25}, + {"label":"K42 (B4,C0)", "x":2.25, "y":4.25}, + {"label":"K43 (B4,C1)", "x":3.25, "y":4.25}, + {"label":"K44 (B4,C2)", "x":4.25, "y":4.25}, + {"label":"K45 (B4,C3)", "x":5.25, "y":4.25}, + {"label":"K46 (B4,C4)", "x":6.25, "y":4.25}, + {"label":"K47 (B4,C5)", "x":7.25, "y":4.25}, + {"label":"K48 (B4,C6)", "x":8.25, "y":4.25}, + {"label":"K49 (B4,C7)", "x":9.25, "y":4.25}, + {"label":"K4A (B4,D0)", "x":10.25, "y":4.25}, + {"label":"K4B (B4,D1)", "x":11.25, "y":4.25}, + {"label":"K4C (B4,D2)", "x":12.25, "y":4.25, "w":1.75}, + {"label":"K4D (B4,D3)", "x":14, "y":4.25}, + {"label":"K4F (B4,D5)", "x":16.25, "y":4.25}, + {"label":"K50 (B5,B6)", "x":0, "y":5.25, "w":1.25}, + {"label":"K51 (B5,F4)", "x":1.25, "y":5.25, "w":1.25}, + {"label":"K52 (B5,C0)", "x":2.5, "y":5.25, "w":1.25}, + {"label":"K56 (B5,C4)", "x":3.75, "y":5.25, "w":6.25}, + {"label":"K5A (B5,D0)", "x":10, "y":5.25, "w":1.25}, + {"label":"K5B (B5,D1)", "x":11.25, "y":5.25, "w":1.25}, + {"label":"K5C (B5,D2)", "x":12.5, "y":5.25, "w":1.25}, + {"label":"K5D (B5,D3)", "x":13.75, "y":5.25, "w":1.25}, + {"label":"K5E (B5,D4)", "x":15.25, "y":5.25}, + {"label":"K5F (B5,D5)", "x":16.25, "y":5.25}, + {"label":"K5G (B5,D6)", "x":17.25, "y":5.25} + ] + } + } + ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/" +} diff --git a/keyboards/mechlovin/infinity87/rev2/matrix.c b/keyboards/mechlovin/infinity87/rev2/matrix.c new file mode 100644 index 0000000000..6f417765aa --- /dev/null +++ b/keyboards/mechlovin/infinity87/rev2/matrix.c @@ -0,0 +1,442 @@ +/* +Copyright 2012-2018 Jun Wako, Jack Humbert, Yiancar +Copyright 2019 Evy Dekkers + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include +#include +#include "wait.h" +#include "util.h" +#include "matrix.h" +#include "debounce.h" +#include "quantum.h" + +#ifdef DIRECT_PINS +static pin_t direct_pins[MATRIX_ROWS][MATRIX_COLS] = DIRECT_PINS; +#elif (DIODE_DIRECTION == ROW2COL) || (DIODE_DIRECTION == COL2ROW) +static const pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS; +//static const pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS; +#endif + +// matrix code + +#ifdef DIRECT_PINS + +static void init_pins(void) { + for (int row = 0; row < MATRIX_ROWS; row++) { + for (int col = 0; col < MATRIX_COLS; col++) { + pin_t pin = direct_pins[row][col]; + if (pin != NO_PIN) { + setPinInputHigh(pin); + } + } + } +} + +static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) { + matrix_row_t last_row_value = current_matrix[current_row]; + current_matrix[current_row] = 0; + + for (uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) { + pin_t pin = direct_pins[current_row][col_index]; + if (pin != NO_PIN) { + current_matrix[current_row] |= readPin(pin) ? 0 : (MATRIX_ROW_SHIFTER << col_index); + } + } + + return (last_row_value != current_matrix[current_row]); +} + +#elif (DIODE_DIRECTION == COL2ROW) + +static void select_row(uint8_t row) { + setPinOutput(row_pins[row]); + writePinLow(row_pins[row]); +} + +static void unselect_row(uint8_t row) { setPinInputHigh(row_pins[row]); } + +static void unselect_rows(void) { + for (uint8_t x = 0; x < MATRIX_ROWS; x++) { + setPinInputHigh(row_pins[x]); + } +} + +static void init_pins(void) { + unselect_rows(); + for (uint8_t x = 0; x < MATRIX_COLS; x++) { + setPinInputHigh(col_pins[x]); + } +} + +static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) { + // Store last value of row prior to reading + matrix_row_t last_row_value = current_matrix[current_row]; + + // Clear data in matrix row + current_matrix[current_row] = 0; + + // Select row and wait for row selecton to stabilize + select_row(current_row); + wait_us(30); + + // For each col... + for (uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) { + + // Select the col pin to read (active low) + uint8_t pin_state = readPin(col_pins[col_index]); + + // Populate the matrix row with the state of the col pin + current_matrix[current_row] |= pin_state ? 0 : (MATRIX_ROW_SHIFTER << col_index); + } + + // Unselect row + unselect_row(current_row); + + return (last_row_value != current_matrix[current_row]); +} + +#elif (DIODE_DIRECTION == ROW2COL) + +/* Cols 0 - 16 + * These columns use two 74HC138 3 to 8 bit demultiplexer. D6, D7 is the enable pin, must be set high (1) to use it. + * + * col / pin: PA0 PA1 PA2 PD6 PD7 PC4 + * 0: 0 ── 0 ── 0 1 ── 0 0 + * ──────────────────────────────────────────── + * 1: 0 ── 0 ── 1 1 ── 0 0 + * ──────────────────────────────────────────── + * 2: 0 ── 1 ── 0 1 ── 0 0 + * ──────────────────────────────────────────── + * 3: 0 ── 1 ── 1 1 ── 0 0 + * ──────────────────────────────────────────── + * 4: 1 ── 0 ── 0 1 ── 0 0 + * ──────────────────────────────────────────── + * 5: 1 ── 0 ── 1 1 ── 0 0 + * ──────────────────────────────────────────── + * 6: 1 ── 1 ── 0 1 ── 0 0 + * ──────────────────────────────────────────── + * 7: 1 ── 1 ── 1 1 ── 0 0 + * ──────────────────────────────────────────── + * 8: 0 ── 0 ── 0 0 ── 1 0 + * ──────────────────────────────────────────── + * 9: 0 ── 0 ── 1 0 ── 1 0 + * ──────────────────────────────────────────── + *10: 0 ── 1 ── 0 0 ── 1 0 + * ──────────────────────────────────────────── + *11: 0 ── 1 ── 1 0 ── 1 0 + * ──────────────────────────────────────────── + *12: 1 ── 0 ── 0 0 ── 1 0 + * ──────────────────────────────────────────── + *13: 1 ── 0 ── 1 0 ── 1 0 + * ──────────────────────────────────────────── + *14: 1 ── 1 ── 1 0 ── 1 0 + * ──────────────────────────────────────────── + *15: 1 ── 1 ── 0 0 ── 1 0 + * ──────────────────────────────────────────── + *16: 0 ── 0 ── 0 0 ── 0 1 + * + */ +static void select_col(uint8_t col) { + switch (col) { + case 0: + writePinLow(A0); + writePinLow(A1); + writePinLow(A2); + writePinHigh(D6); + break; + case 1: + writePinLow(A0); + writePinLow(A1); + writePinHigh(A2); + writePinHigh(D6); + break; + case 2: + writePinLow(A0); + writePinHigh(A1); + writePinLow(A2); + writePinHigh(D6); + break; + case 3: + writePinLow(A0); + writePinHigh(A1); + writePinHigh(A2); + writePinHigh(D6); + break; + case 4: + writePinHigh(A0); + writePinLow(A1); + writePinLow(A2); + writePinHigh(D6); + break; + case 5: + writePinHigh(A0); + writePinLow(A1); + writePinHigh(A2); + writePinHigh(D6); + break; + case 6: + writePinHigh(A0); + writePinHigh(A1); + writePinLow(A2); + writePinHigh(D6); + break; + case 7: + writePinHigh(A0); + writePinHigh(A1); + writePinHigh(A2); + writePinHigh(D6); + break; + case 8: + writePinLow(A0); + writePinLow(A1); + writePinLow(A2); + writePinHigh(D7); + break; + case 9: + writePinLow(A0); + writePinLow(A1); + writePinHigh(A2); + writePinHigh(D7); + break; + case 10: + writePinLow(A0); + writePinHigh(A1); + writePinLow(A2); + writePinHigh(D7); + break; + case 11: + writePinLow(A0); + writePinHigh(A1); + writePinHigh(A2); + writePinHigh(D7); + break; + case 12: + writePinHigh(A0); + writePinLow(A1); + writePinLow(A2); + writePinHigh(D7); + break; + case 13: + writePinHigh(A0); + writePinLow(A1); + writePinHigh(A2); + writePinHigh(D7); + break; + case 14: + writePinHigh(A0); + writePinHigh(A1); + writePinHigh(A2); + writePinHigh(D7); + break; + case 15: + writePinHigh(A0); + writePinHigh(A1); + writePinLow(A2); + writePinHigh(D7); + break; + case 16: + writePinLow(C4); + break; + } +} + +static void unselect_col(uint8_t col) { + switch (col) { + case 0: + writePinHigh(A0); + writePinHigh(A1); + writePinHigh(A2); + writePinLow(D6); + break; + case 1: + writePinHigh(A0); + writePinHigh(A1); + writePinLow(A2); + writePinLow(D6); + break; + case 2: + writePinHigh(A0); + writePinLow(A1); + writePinHigh(A2); + writePinLow(D6); + break; + case 3: + writePinHigh(A0); + writePinLow(A1); + writePinLow(A2); + writePinLow(D6); + break; + case 4: + writePinLow(A0); + writePinHigh(A1); + writePinHigh(A2); + writePinLow(D6); + break; + case 5: + writePinLow(A0); + writePinHigh(A1); + writePinLow(A2); + writePinLow(D6); + break; + case 6: + writePinLow(A0); + writePinLow(A1); + writePinHigh(A2); + writePinLow(D6); + break; + case 7: + writePinLow(A0); + writePinLow(A1); + writePinLow(A2); + writePinLow(D6); + break; + case 8: + writePinHigh(A0); + writePinHigh(A1); + writePinHigh(A2); + writePinLow(D7); + break; + case 9: + writePinHigh(A0); + writePinHigh(A1); + writePinLow(A2); + writePinLow(D7); + break; + case 10: + writePinHigh(A0); + writePinLow(A1); + writePinHigh(A2); + writePinLow(D7); + break; + case 11: + writePinHigh(A0); + writePinLow(A1); + writePinLow(A2); + writePinLow(D7); + break; + case 12: + writePinLow(A0); + writePinHigh(A1); + writePinHigh(A2); + writePinLow(D7); + break; + case 13: + writePinLow(A0); + writePinHigh(A1); + writePinLow(A2); + writePinLow(D7); + break; + case 14: + writePinLow(A0); + writePinLow(A1); + writePinLow(A2); + writePinLow(D7); + break; + case 15: + writePinLow(A0); + writePinLow(A1); + writePinHigh(A2); + writePinLow(D7); + break; + case 16: + writePinHigh(C4); + break; + } +} + +static void unselect_cols(void) { + //Native + writePinHigh(C4); + + //Demultiplexer + writePinLow(D6); + writePinLow(D7); + writePinHigh(A0); + writePinHigh(A1); + writePinHigh(A2); +} + +static void init_pins(void) { + unselect_cols(); + for (uint8_t x = 0; x < MATRIX_ROWS; x++) { + setPinInputHigh(row_pins[x]); + } + setPinOutput(A0); + setPinOutput(A1); + setPinOutput(A2); + setPinOutput(D6); + setPinOutput(D7); + setPinOutput(C4); +} + +static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col) { + bool matrix_changed = false; + + // Select col and wait for col selecton to stabilize + select_col(current_col); + wait_us(30); + + // For each row... + for (uint8_t row_index = 0; row_index < MATRIX_ROWS; row_index++) { + // Store last value of row prior to reading + matrix_row_t last_row_value = current_matrix[row_index]; + + // Check row pin state + if (readPin(row_pins[row_index]) == 0) { + // Pin LO, set col bit + current_matrix[row_index] |= (MATRIX_ROW_SHIFTER << current_col); + } else { + // Pin HI, clear col bit + current_matrix[row_index] &= ~(MATRIX_ROW_SHIFTER << current_col); + } + + // Determine if the matrix changed state + if ((last_row_value != current_matrix[row_index]) && !(matrix_changed)) { + matrix_changed = true; + } + } + + // Unselect col + unselect_col(current_col); + + return matrix_changed; +} + +#endif + +void matrix_init_custom(void) { + // initialize key pins + init_pins(); +} + +bool matrix_scan_custom(matrix_row_t current_matrix[]) { + bool changed = false; + +#if defined(DIRECT_PINS) || (DIODE_DIRECTION == COL2ROW) + // Set row, read cols + for (uint8_t current_row = 0; current_row < MATRIX_ROWS; current_row++) { + changed |= read_cols_on_row(current_matrix, current_row); + } +#elif (DIODE_DIRECTION == ROW2COL) + // Set col, read rows + for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++) { + changed |= read_rows_on_col(current_matrix, current_col); + } +#endif + + return changed; +} diff --git a/keyboards/mechlovin/infinity87/rev2/readme.md b/keyboards/mechlovin/infinity87/rev2/readme.md new file mode 100644 index 0000000000..4c7ea29291 --- /dev/null +++ b/keyboards/mechlovin/infinity87/rev2/readme.md @@ -0,0 +1,23 @@ +# infinity87 Rev.2 + +![infinity87](https://i.imgur.com/pgtvUTrl.png) + +A replacement PCB for TKL keyboard. south-facing stabilisers, .STEP file in our github + +* Keyboard Maintainer: [Team Mechlovin'](https://github.com/mechlovin) +* Hardware Supported: Infinity87 rev.2, AVR. +* Hardware Availability: [Mechlovin.studio](https://mechlovin.studio) + +Make example for this keyboard (after setting up your build environment): + + make mechlovin/infinity87/rev2:default + +Flashing example for this keyboard: + + make mechlovin/infinity87/rev2:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +**Reset Key:** To put the IF87_rev2 into bootloader, push reset swith on the bottom of the PCB. + +IF87_rev2 used USBasploader from [Erovia tutorial](https://erovia.github.io/posts/thk/#bootloader), thank you [Erovia](https://github.com/Erovia). diff --git a/keyboards/mechlovin/infinity87/rev2/rev2.c b/keyboards/mechlovin/infinity87/rev2/rev2.c new file mode 100644 index 0000000000..5a92f8bec6 --- /dev/null +++ b/keyboards/mechlovin/infinity87/rev2/rev2.c @@ -0,0 +1,57 @@ +/* Copyright 2020 Team Mechlovin' + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "rev2.h" + +void matrix_init_kb(void) { + matrix_init_user(); + led_init_ports(); +}; +void led_init_ports(void) { + setPinOutput(A5); + setPinOutput(A6); + setPinOutput(A7); + setPinOutput(C7); + setPinOutput(C6); + +} + +layer_state_t layer_state_set_kb(layer_state_t state) { + state = layer_state_set_user(state); + writePinHigh(C6); + writePinHigh(C7); + writePinHigh(A7); + writePinHigh(A6); + writePinHigh(A5); + switch (get_highest_layer(state)) { + case 0: + writePinLow(C6); + break; + case 1: + writePinLow(C7); + break; + case 2: + writePinLow(A7); + break; + case 3: + writePinLow(A6); + break; + case 4: + writePinLow(A5); + break; + } + return state; +} diff --git a/keyboards/mechlovin/infinity87/rev2/rev2.h b/keyboards/mechlovin/infinity87/rev2/rev2.h new file mode 100644 index 0000000000..16cdf9ed85 --- /dev/null +++ b/keyboards/mechlovin/infinity87/rev2/rev2.h @@ -0,0 +1,19 @@ +/* Copyright 2020 Team Mechlovin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" diff --git a/keyboards/mechlovin/infinity87/rev2/rules.mk b/keyboards/mechlovin/infinity87/rev2/rules.mk new file mode 100644 index 0000000000..367e0bc82f --- /dev/null +++ b/keyboards/mechlovin/infinity87/rev2/rules.mk @@ -0,0 +1,19 @@ +# MCU name +MCU = atmega32a + +# Processor frequency +F_CPU = 16000000 + +# Bootloader selection +BOOTLOADER = USBasp + +# Build Options +# change yes to no to disable +# +CONSOLE_ENABLE = no +COMMAND_ENABLE = no +NKRO_ENABLE = no +BACKLIGHT_ENABLE = yes +CUSTOM_MATRIX = lite + +SRC += matrix.c diff --git a/keyboards/mechlovin/infinity87/rgb_rev1/config.h b/keyboards/mechlovin/infinity87/rgb_rev1/config.h new file mode 100644 index 0000000000..0c16c684cf --- /dev/null +++ b/keyboards/mechlovin/infinity87/rgb_rev1/config.h @@ -0,0 +1,51 @@ +/* Copyright 2020 Team Mechlovin' + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define PRODUCT_ID 0x8710 +#define DEVICE_VER 0x0001 +#define PRODUCT Infinity 87 RGB rev1 + +#define MATRIX_ROW_PINS { A10, A13, A14, C13, A4, A3 } +#define MATRIX_COL_PINS { B12, B13, B14, B15, A8, A9, B11, B10, B2, B1, B0, A7, A6, A5, A2, A1, A0 } + + +#define DIODE_DIRECTION COL2ROW + +//rgb matrix setting +// This is a 7-bit address, that gets left-shifted and bit 0 +// set to 0 for write, 1 for read (as per I2C protocol) +// The address will vary depending on your wiring: +// 0b0110000 AD <-> GND +// 0b0110011 AD <-> VCC +// 0b0110001 AD <-> SCL +// 0b0110010 AD <-> SDA +#define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects +#define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended +#define RGB_MATRIX_KEYPRESSES +#define DISABLE_RGB_MATRIX_SPLASH +#define DISABLE_RGB_MATRIX_MULTISPLASH +#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH +//#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_COLOR +#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL +//#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define DRIVER_ADDR_1 0b0110010 +#define DRIVER_ADDR_2 0b0110010 // this is here for compliancy reasons. +#define DRIVER_COUNT 1 +#define DRIVER_1_LED_TOTAL 91 +#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL +#define DRIVER_INDICATOR_LED_TOTAL 0 diff --git a/keyboards/mechlovin/infinity87/rgb_rev1/info.json b/keyboards/mechlovin/infinity87/rgb_rev1/info.json new file mode 100644 index 0000000000..9b3fe1002c --- /dev/null +++ b/keyboards/mechlovin/infinity87/rgb_rev1/info.json @@ -0,0 +1,105 @@ +{ + "keyboard_name": "infinity87", + "url": "", + "maintainer": "Team Mechlovin'", + "width": 18.25, + "height": 6.25, + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"K00 (B0,B6)", "x":0, "y":0}, + {"label":"K01 (B0,F4)", "x":2, "y":0}, + {"label":"K02 (B0,C0)", "x":3, "y":0}, + {"label":"K03 (B0,C1)", "x":4, "y":0}, + {"label":"K04 (B0,C2)", "x":5, "y":0}, + {"label":"K05 (B0,C3)", "x":6.5, "y":0}, + {"label":"K06 (B0,C4)", "x":7.5, "y":0}, + {"label":"K07 (B0,C5)", "x":8.5, "y":0}, + {"label":"K08 (B0,C6)", "x":9.5, "y":0}, + {"label":"K09 (B0,C7)", "x":11, "y":0}, + {"label":"K0A (B0,D0)", "x":12, "y":0}, + {"label":"K0B (B0,D1)", "x":13, "y":0}, + {"label":"K0C (B0,D2)", "x":14, "y":0}, + {"label":"K0E (B0,D4)", "x":15.25, "y":0}, + {"label":"K0F (B0,D5)", "x":16.25, "y":0}, + {"label":"K0G (B0,D6)", "x":17.25, "y":0}, + {"label":"K10 (B1,B6)", "x":0, "y":1.25}, + {"label":"K11 (B1,F4)", "x":1, "y":1.25}, + {"label":"K12 (B1,C0)", "x":2, "y":1.25}, + {"label":"K13 (B1,C1)", "x":3, "y":1.25}, + {"label":"K14 (B1,C2)", "x":4, "y":1.25}, + {"label":"K15 (B1,C3)", "x":5, "y":1.25}, + {"label":"K16 (B1,C4)", "x":6, "y":1.25}, + {"label":"K17 (B1,C5)", "x":7, "y":1.25}, + {"label":"K18 (B1,C6)", "x":8, "y":1.25}, + {"label":"K19 (B1,C7)", "x":9, "y":1.25}, + {"label":"K1A (B1,D0)", "x":10, "y":1.25}, + {"label":"K1B (B1,D1)", "x":11, "y":1.25}, + {"label":"K1C (B1,D2)", "x":12, "y":1.25}, + {"label":"K1D (B1,D3)", "x":13, "y":1.25}, + {"label":"K0D (B0,D3)", "x":14, "y":1.25}, + {"label":"K1E (B1,D4)", "x":15.25, "y":1.25}, + {"label":"K1F (B1,D5)", "x":16.25, "y":1.25}, + {"label":"K1G (B1,D6)", "x":17.25, "y":1.25}, + {"label":"K20 (B2,B6)", "x":0, "y":2.25, "w":1.5}, + {"label":"K21 (B2,F4)", "x":1.5, "y":2.25}, + {"label":"K22 (B2,C0)", "x":2.5, "y":2.25}, + {"label":"K23 (B2,C1)", "x":3.5, "y":2.25}, + {"label":"K24 (B2,C2)", "x":4.5, "y":2.25}, + {"label":"K25 (B2,C3)", "x":5.5, "y":2.25}, + {"label":"K26 (B2,C4)", "x":6.5, "y":2.25}, + {"label":"K27 (B2,C5)", "x":7.5, "y":2.25}, + {"label":"K28 (B2,C6)", "x":8.5, "y":2.25}, + {"label":"K29 (B2,C7)", "x":9.5, "y":2.25}, + {"label":"K2A (B2,D0)", "x":10.5, "y":2.25}, + {"label":"K2B (B2,D1)", "x":11.5, "y":2.25}, + {"label":"K2C (B2,D2)", "x":12.5, "y":2.25}, + {"label":"K2D (B2,D3)", "x":13.5, "y":2.25, "w":1.5}, + {"label":"K2E (B2,D4)", "x":15.25, "y":2.25}, + {"label":"K2F (B2,D5)", "x":16.25, "y":2.25}, + {"label":"K2G (B2,D6)", "x":17.25, "y":2.25}, + {"label":"K30 (B3,B6)", "x":0, "y":3.25, "w":1.75}, + {"label":"K31 (B3,F4)", "x":1.75, "y":3.25}, + {"label":"K32 (B3,C0)", "x":2.75, "y":3.25}, + {"label":"K33 (B3,C1)", "x":3.75, "y":3.25}, + {"label":"K34 (B3,C2)", "x":4.75, "y":3.25}, + {"label":"K35 (B3,C3)", "x":5.75, "y":3.25}, + {"label":"K36 (B3,C4)", "x":6.75, "y":3.25}, + {"label":"K37 (B3,C5)", "x":7.75, "y":3.25}, + {"label":"K38 (B3,C6)", "x":8.75, "y":3.25}, + {"label":"K39 (B3,C7)", "x":9.75, "y":3.25}, + {"label":"K3A (B3,D0)", "x":10.75, "y":3.25}, + {"label":"K3B (B3,D1)", "x":11.75, "y":3.25}, + {"label":"K3C (B3,D2)", "x":12.75, "y":3.25}, + {"label":"K3D (B3,D3)", "x":13.75, "y":3.25, "w":1.25}, + {"label":"K40 (B4,B6)", "x":0, "y":4.25, "w":1.25}, + {"label":"K41 (B4,F4)", "x":1.25, "y":4.25}, + {"label":"K42 (B4,C0)", "x":2.25, "y":4.25}, + {"label":"K43 (B4,C1)", "x":3.25, "y":4.25}, + {"label":"K44 (B4,C2)", "x":4.25, "y":4.25}, + {"label":"K45 (B4,C3)", "x":5.25, "y":4.25}, + {"label":"K46 (B4,C4)", "x":6.25, "y":4.25}, + {"label":"K47 (B4,C5)", "x":7.25, "y":4.25}, + {"label":"K48 (B4,C6)", "x":8.25, "y":4.25}, + {"label":"K49 (B4,C7)", "x":9.25, "y":4.25}, + {"label":"K4A (B4,D0)", "x":10.25, "y":4.25}, + {"label":"K4B (B4,D1)", "x":11.25, "y":4.25}, + {"label":"K4C (B4,D2)", "x":12.25, "y":4.25, "w":1.75}, + {"label":"K4D (B4,D3)", "x":14, "y":4.25}, + {"label":"K4F (B4,D5)", "x":16.25, "y":4.25}, + {"label":"K50 (B5,B6)", "x":0, "y":5.25, "w":1.25}, + {"label":"K51 (B5,F4)", "x":1.25, "y":5.25, "w":1.25}, + {"label":"K52 (B5,C0)", "x":2.5, "y":5.25, "w":1.25}, + {"label":"K56 (B5,C4)", "x":3.75, "y":5.25, "w":6.25}, + {"label":"K5A (B5,D0)", "x":10, "y":5.25, "w":1.25}, + {"label":"K5B (B5,D1)", "x":11.25, "y":5.25, "w":1.25}, + {"label":"K5C (B5,D2)", "x":12.5, "y":5.25, "w":1.25}, + {"label":"K5D (B5,D3)", "x":13.75, "y":5.25, "w":1.25}, + {"label":"K5E (B5,D4)", "x":15.25, "y":5.25}, + {"label":"K5F (B5,D5)", "x":16.25, "y":5.25}, + {"label":"K5G (B5,D6)", "x":17.25, "y":5.25} + ] + } + } + ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/" +} diff --git a/keyboards/mechlovin/infinity87/rgb_rev1/readme.md b/keyboards/mechlovin/infinity87/rgb_rev1/readme.md new file mode 100644 index 0000000000..1e71fc29fc --- /dev/null +++ b/keyboards/mechlovin/infinity87/rgb_rev1/readme.md @@ -0,0 +1,21 @@ +# infinity87 RGB Rev.1 + +![infinity87](https://i.imgur.com/sGRD4d7l.jpeg) + +A replacement PCB for TKL keyboard, RGB backlight, south-facing stabilisers, .STEP file in our github + +* Keyboard Maintainer: [Team Mechlovin'](https://github.com/mechlovin) +* Hardware Supported: Infinity87 RGB Rev.1, STM32F303. +* Hardware Availability: [Mechlovin.studio](https://mechlovin.studio) + +Make example for this keyboard (after setting up your build environment): + + make mechlovin/infinity87/rgb_rev1:default + +Flashing example for this keyboard: + + make mechlovin/infinity87/rgb_rev1:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +**Reset Key:** To put the IF87_RGB_Rev.1 into bootloader, hold esc key while plugging in (bootmagic) or push reset swith on the bottom of the PCB. \ No newline at end of file diff --git a/keyboards/mechlovin/infinity87/rgb_rev1/rgb_rev1.c b/keyboards/mechlovin/infinity87/rgb_rev1/rgb_rev1.c new file mode 100644 index 0000000000..f13fee8add --- /dev/null +++ b/keyboards/mechlovin/infinity87/rgb_rev1/rgb_rev1.c @@ -0,0 +1,159 @@ +/* Copyright 2020 Team Mechlovin' + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "rgb_rev1.h" + +#ifdef RGB_MATRIX_ENABLE +const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { + {0, CS34_SW1, CS35_SW1, CS36_SW1}, //D92-K00-0 + {0, CS37_SW1, CS38_SW1, CS39_SW1}, //D94-K01-1 + {0, CS31_SW1, CS32_SW1, CS33_SW1}, //D96-K02-2 + {0, CS28_SW1, CS29_SW1, CS30_SW1}, //D98-K03-3 + {0, CS25_SW1, CS26_SW1, CS27_SW1}, //D100-K04-4 + {0, CS22_SW1, CS23_SW1, CS24_SW1}, //D102-K05-5 + {0, CS19_SW1, CS20_SW1, CS21_SW1}, //D104-K06-6 + {0, CS18_SW1, CS17_SW1, CS16_SW1}, //D106-K07-7 + {0, CS15_SW1, CS14_SW1, CS13_SW1}, //D108-K08-8 + {0, CS12_SW1, CS11_SW1, CS10_SW1}, //D110-K09-9 + {0, CS9_SW1, CS8_SW1, CS7_SW1}, //D112-K0A-10 + {0, CS6_SW1, CS5_SW1, CS4_SW1}, //D114-K0B-11 + {0, CS3_SW1, CS2_SW1, CS1_SW1}, //D116-K0C-12 + {0, CS15_SW7, CS14_SW7, CS13_SW7}, //D157-K0D-13 + {0, CS18_SW7, CS17_SW7, CS16_SW7}, //D118-K0E-14 + {0, CS19_SW7, CS20_SW7, CS21_SW7}, //D120-K0F-15 + {0, CS12_SW7, CS11_SW7, CS10_SW7}, //D122-K0G-16 + {0, CS34_SW2, CS35_SW2, CS36_SW2}, //D93-K10-17 + {0, CS37_SW2, CS38_SW2, CS39_SW2}, //D95-K11-18 + {0, CS31_SW2, CS32_SW2, CS33_SW2}, //D97-K12-19 + {0, CS28_SW2, CS29_SW2, CS30_SW2}, //D99-K13-20 + {0, CS25_SW2, CS26_SW2, CS27_SW2}, //D101-K14-21 + {0, CS22_SW2, CS23_SW2, CS24_SW2}, //D103-K15-22 + {0, CS19_SW2, CS20_SW2, CS21_SW2}, //D105-K16-23 + {0, CS18_SW2, CS17_SW2, CS16_SW2}, //D107-K17-24 + {0, CS15_SW2, CS14_SW2, CS13_SW2}, //D109-K18-25 + {0, CS12_SW2, CS11_SW2, CS10_SW2}, //D111-K19-26 + {0, CS9_SW2, CS8_SW2, CS7_SW2}, //D113-K1A-27 + {0, CS6_SW2, CS5_SW2, CS4_SW2}, //D115-K1B-28 + {0, CS3_SW2, CS2_SW2, CS1_SW2}, //D117-K1C-29 + {0, CS3_SW8, CS2_SW8, CS1_SW8}, //D158-K1D-30 + {0, CS3_SW7, CS2_SW7, CS1_SW7}, //D119-K1E-31 + {0, CS18_SW8, CS17_SW8, CS16_SW8}, //D121-K1F-32 + {0, CS9_SW9, CS8_SW9, CS7_SW9}, //D123-K1G-33 + {0, CS34_SW3, CS35_SW3, CS36_SW3}, //D124-K20-34 + {0, CS37_SW3, CS38_SW3, CS39_SW3}, //D127-K21-35 + {0, CS31_SW3, CS32_SW3, CS33_SW3}, //D130-K22-36 + {0, CS28_SW3, CS29_SW3, CS30_SW3}, //D133-K23-37 + {0, CS25_SW3, CS26_SW3, CS27_SW3}, //D135-K24-38 + {0, CS22_SW3, CS23_SW3, CS24_SW3}, //D137-K25-39 + {0, CS19_SW3, CS20_SW3, CS21_SW3}, //D139-K26-40 + {0, CS18_SW3, CS17_SW3, CS16_SW3}, //D142-K27-41 + {0, CS15_SW3, CS14_SW3, CS13_SW3}, //D144-K28-42 + {0, CS12_SW3, CS11_SW3, CS10_SW3}, //D146-K29-43 + {0, CS9_SW3, CS8_SW3, CS7_SW3}, //D148-K2A-44 + {0, CS6_SW3, CS5_SW3, CS4_SW3}, //D151-K2B-45 + {0, CS3_SW3, CS2_SW3, CS1_SW3}, //D154-K2C-46 + {0, CS6_SW8, CS5_SW8, CS4_SW8}, //D159-K2D-47 + {0, CS6_SW7, CS5_SW7, CS4_SW7}, //D180-K2E-48 + {0, CS19_SW8, CS20_SW8, CS21_SW8}, //D181-K2F-49 + {0, CS9_SW7, CS8_SW7, CS7_SW7}, //D182-K2G-50 + {0, CS34_SW4, CS35_SW4, CS36_SW4}, //D166-K30-51 + {0, CS37_SW4, CS38_SW4, CS39_SW4}, //D167-K31-52 + {0, CS31_SW4, CS32_SW4, CS33_SW4}, //D168-K32-53 + {0, CS28_SW4, CS29_SW4, CS30_SW4}, //D169-K33-54 + {0, CS25_SW4, CS26_SW4, CS27_SW4}, //D170-K34-55 + {0, CS22_SW4, CS23_SW4, CS24_SW4}, //D171-K35-56 + {0, CS19_SW4, CS20_SW4, CS21_SW4}, //D172-K36-57 + {0, CS18_SW4, CS17_SW4, CS16_SW4}, //D173-K37-58 + {0, CS15_SW4, CS14_SW4, CS13_SW4}, //D174-K38-59 + {0, CS12_SW4, CS11_SW4, CS10_SW4}, //D175-K39-60 + {0, CS9_SW4, CS8_SW4, CS7_SW4}, //D176-K3A-61 + {0, CS6_SW4, CS5_SW4, CS4_SW4}, //D177-K3B-62 + {0, CS3_SW4, CS2_SW4, CS1_SW4}, //D178-K3C-63 + {0, CS9_SW8, CS8_SW8, CS7_SW8}, //D179-K3D-64 + {0, CS34_SW5, CS35_SW5, CS36_SW5}, //D125-K40-65 + {0, CS37_SW5, CS38_SW5, CS39_SW5}, //D128-K41-66 + {0, CS31_SW5, CS32_SW5, CS33_SW5}, //D131-K42-67 + {0, CS28_SW5, CS29_SW5, CS30_SW5}, //D134-K43-68 + {0, CS25_SW5, CS26_SW5, CS27_SW5}, //D136-K44-69 + {0, CS22_SW5, CS23_SW5, CS24_SW5}, //D138-K45-70 + {0, CS19_SW5, CS20_SW5, CS21_SW5}, //D140-K46-71 + {0, CS18_SW5, CS17_SW5, CS16_SW5}, //D143-K47-72 + {0, CS15_SW5, CS14_SW5, CS13_SW5}, //D145-K48-73 + {0, CS12_SW5, CS11_SW5, CS10_SW5}, //D147-K49-74 + {0, CS9_SW5, CS8_SW5, CS7_SW5}, //D149-K4A-75 + {0, CS6_SW5, CS5_SW5, CS4_SW5}, //D152-K4B-76 + {0, CS3_SW5, CS2_SW5, CS1_SW5}, //D155-K4C-77 + {0, CS12_SW8, CS11_SW8, CS10_SW8}, //D160-K4D-78 + {0, CS12_SW9, CS11_SW9, CS10_SW9}, //D163-K4E-79 + {0, CS34_SW6, CS35_SW6, CS36_SW6}, //D126-K20-80 + {0, CS37_SW6, CS38_SW6, CS39_SW6}, //D129-K21-81 + {0, CS31_SW6, CS32_SW6, CS33_SW6}, //D132-K22-82 + {0, CS19_SW6, CS20_SW6, CS21_SW6}, //D141-K26-83 + {0, CS9_SW6, CS8_SW6, CS7_SW6}, //D150-K2A-84 + {0, CS6_SW6, CS5_SW6, CS4_SW6}, //D153-K2B-85 + {0, CS3_SW6, CS2_SW6, CS1_SW6}, //D156-K2C-86 + {0, CS15_SW8, CS14_SW8, CS13_SW8}, //D161-K2D-87 + {0, CS15_SW9, CS14_SW9, CS13_SW9}, //D162-K2E-88 + {0, CS18_SW9, CS17_SW9, CS16_SW9}, //D164-K2F-89 + {0, CS19_SW9, CS20_SW9, CS21_SW9}, //D165-K2G-90 +}; + +led_config_t g_led_config = { { + // Key Matrix to LED Index + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}, + {17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33}, + {34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50}, + {51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, NO_LED, NO_LED, NO_LED}, + {65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, NO_LED, 79, NO_LED}, + {80, 81, 82, NO_LED, NO_LED, NO_LED, 83, NO_LED, NO_LED, NO_LED, 84, 85, 86, 87, 88, 89, 90} + }, { + {0, 0}, {14, 0}, {28, 0}, {42, 0}, {56, 0}, {70, 0}, {84, 0}, {98, 0}, {112, 0}, {126, 0}, {140, 0}, {154, 0}, {168, 0}, {182, 0}, {196, 0}, {210, 0}, {224, 0}, + {0,16}, {14,16}, {28,16}, {42, 16}, {56, 16}, {70, 16}, {84, 16}, {98, 16}, {112, 16}, {126, 16}, {140, 16}, {154, 16}, {168, 16}, {182, 16}, {196, 16}, {210, 16}, {224, 16}, + {0,32}, {14,32}, {28,32}, {42, 32}, {56, 32}, {70, 32}, {84, 32}, {98, 32}, {112, 32}, {126, 32}, {140, 32}, {154, 32}, {168, 32}, {182, 32}, {196, 32}, {210, 32}, {224, 32}, + {0,48}, {14,48}, {28,48}, {42, 48}, {56, 48}, {70, 48}, {84, 48}, {98, 48}, {112, 48}, {126, 48}, {140, 48}, {154, 48}, {168, 48}, {182, 48}, + {0,64}, {14,64}, {28,64}, {42, 64}, {56, 64}, {70, 64}, {84, 64}, {98, 64}, {112, 64}, {126, 64}, {140, 64}, {154, 64}, {168, 64}, {182, 64}, {210, 64}, + {0,80}, {14,80}, {28,80}, {84, 80}, {140, 80}, {154, 80}, {168, 80}, {182, 80}, {196, 80}, {210, 80}, {224, 80} + }, { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 + } }; + + +__attribute__((weak)) +void rgb_matrix_indicators_user(void) { + if (host_keyboard_led_state().caps_lock) { + rgb_matrix_set_color(51, 255, 255, 255); + } + if (host_keyboard_led_state().scroll_lock) { + rgb_matrix_set_color(15, 255, 255, 255); + } +} + + +void suspend_power_down_kb(void) { + rgb_matrix_set_suspend_state(true); + suspend_power_down_user(); +} + +void suspend_wakeup_init_kb(void) { + rgb_matrix_set_suspend_state(false); + suspend_wakeup_init_user(); +} +#endif diff --git a/keyboards/mechlovin/infinity87/rgb_rev1/rgb_rev1.h b/keyboards/mechlovin/infinity87/rgb_rev1/rgb_rev1.h new file mode 100644 index 0000000000..16cdf9ed85 --- /dev/null +++ b/keyboards/mechlovin/infinity87/rgb_rev1/rgb_rev1.h @@ -0,0 +1,19 @@ +/* Copyright 2020 Team Mechlovin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" diff --git a/keyboards/mechlovin/infinity87/rgb_rev1/rules.mk b/keyboards/mechlovin/infinity87/rgb_rev1/rules.mk new file mode 100644 index 0000000000..aa7adc8954 --- /dev/null +++ b/keyboards/mechlovin/infinity87/rgb_rev1/rules.mk @@ -0,0 +1,5 @@ +MCU = STM32F303 +BOARD = QMK_PROTON_C + +RGB_MATRIX_ENABLE = yes # Use RGB matrix +RGB_MATRIX_DRIVER = IS31FL3741 diff --git a/keyboards/mechlovin/infinity87/rules.mk b/keyboards/mechlovin/infinity87/rules.mk index ed8f3223ad..1222987996 100644 --- a/keyboards/mechlovin/infinity87/rules.mk +++ b/keyboards/mechlovin/infinity87/rules.mk @@ -1,6 +1,3 @@ -# MCU name -MCU = STM32F303 -BOARD = QMK_PROTON_C # Build Options # change yes to no to disable @@ -14,8 +11,9 @@ COMMAND_ENABLE = yes # Commands for debug and configuration SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output + +DEFAULT_FOLDER = mechlovin/infinity87/rev1/standard diff --git a/keyboards/mechlovin/th1800/config.h b/keyboards/mechlovin/th1800/config.h new file mode 100644 index 0000000000..f8c4567825 --- /dev/null +++ b/keyboards/mechlovin/th1800/config.h @@ -0,0 +1,53 @@ +/* +Copyright 2020 Team Mechlovin + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4D4C // ML-Mechlovin +#define PRODUCT_ID 0x1800 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Team Mechlovin +#define PRODUCT th1800 + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 18 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ +#define MATRIX_ROW_PINS { B6, B7, D0, D1, D5, D6 } +#define MATRIX_COL_PINS { A3, D7, C0, C1, C2, C3, C4, C5, C6, C7, A7, A6, A5, A4, B3, B2, B0, B1 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +#define LED_NUM_LOCK_PIN A2 +#define LED_CAPS_LOCK_PIN A0 +#define LED_SCROLL_LOCK_PIN A1 +#define LED_PIN_ON_STATE 0 diff --git a/keyboards/mechlovin/th1800/info.json b/keyboards/mechlovin/th1800/info.json new file mode 100644 index 0000000000..2ed6673a55 --- /dev/null +++ b/keyboards/mechlovin/th1800/info.json @@ -0,0 +1,119 @@ +{ + "keyboard_name": "th-1800", + "url": "", + "maintainer": "qmk", + "width": 19.5, + "height": 7.25, + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"K00 (B0,B7)", "x":0, "y":0}, + {"label":"K01 (B0,C0)", "x":1.25, "y":0}, + {"label":"K02 (B0,C1)", "x":2.25, "y":0}, + {"label":"K03 (B0,C2)", "x":3.25, "y":0}, + {"label":"K04 (B0,C3)", "x":4.25, "y":0}, + {"label":"K05 (B0,C4)", "x":5.5, "y":0}, + {"label":"K06 (B0,C5)", "x":6.5, "y":0}, + {"label":"K07 (B0,C6)", "x":7.5, "y":0}, + {"label":"K08 (B0,C7)", "x":8.5, "y":0}, + {"label":"K09 (B0,D0)", "x":9.75, "y":0}, + {"label":"K0A (B0,D1)", "x":10.75, "y":0}, + {"label":"K0B (B0,D2)", "x":11.75, "y":0}, + {"label":"K0C (B0,D3)", "x":12.75, "y":0}, + {"label":"K0E (B0,D5)", "x":15.5, "y":0}, + {"label":"K0F (B0,D6)", "x":16.5, "y":0}, + {"label":"K0G (B0,D7)", "x":17.5, "y":0}, + {"label":"K0H (B0,E0)", "x":18.5, "y":0}, + {"label":"K5E (B5,D5)", "x":15.5, "y":1}, + {"label":"K5F (B5,D6)", "x":16.5, "y":1}, + {"label":"K5G (B5,D7)", "x":17.5, "y":1}, + {"label":"K5H (B5,E0)", "x":18.5, "y":1}, + {"label":"K10 (B1,B7)", "x":0, "y":2}, + {"label":"K11 (B1,C0)", "x":1, "y":2}, + {"label":"K12 (B1,C1)", "x":2, "y":2}, + {"label":"K13 (B1,C2)", "x":3, "y":2}, + {"label":"K14 (B1,C3)", "x":4, "y":2}, + {"label":"K15 (B1,C4)", "x":5, "y":2}, + {"label":"K16 (B1,C5)", "x":6, "y":2}, + {"label":"K17 (B1,C6)", "x":7, "y":2}, + {"label":"K18 (B1,C7)", "x":8, "y":2}, + {"label":"K19 (B1,D0)", "x":9, "y":2}, + {"label":"K1A (B1,D1)", "x":10, "y":2}, + {"label":"K1B (B1,D2)", "x":11, "y":2}, + {"label":"K1C (B1,D3)", "x":12, "y":2}, + {"label":"K1D (B1,D4)", "x":13, "y":2}, + {"label":"K0D (B0,D4)", "x":14, "y":2}, + {"label":"K1E (B1,D5)", "x":15.5, "y":2}, + {"label":"K1F (B1,D6)", "x":16.5, "y":2}, + {"label":"K1G (B1,D7)", "x":17.5, "y":2}, + {"label":"K1H (B1,E0)", "x":18.5, "y":2}, + {"label":"K20 (B2,B7)", "x":0, "y":3, "w":1.5}, + {"label":"K21 (B2,C0)", "x":1.5, "y":3}, + {"label":"K22 (B2,C1)", "x":2.5, "y":3}, + {"label":"K23 (B2,C2)", "x":3.5, "y":3}, + {"label":"K24 (B2,C3)", "x":4.5, "y":3}, + {"label":"K25 (B2,C4)", "x":5.5, "y":3}, + {"label":"K26 (B2,C5)", "x":6.5, "y":3}, + {"label":"K27 (B2,C6)", "x":7.5, "y":3}, + {"label":"K28 (B2,C7)", "x":8.5, "y":3}, + {"label":"K29 (B2,D0)", "x":9.5, "y":3}, + {"label":"K2A (B2,D1)", "x":10.5, "y":3}, + {"label":"K2B (B2,D2)", "x":11.5, "y":3}, + {"label":"K2C (B2,D3)", "x":12.5, "y":3}, + {"label":"K2D (B2,D4)", "x":13.5, "y":3, "w":1.5}, + {"label":"K2E (B2,D5)", "x":15.5, "y":3}, + {"label":"K2F (B2,D6)", "x":16.5, "y":3}, + {"label":"K2G (B2,D7)", "x":17.5, "y":3}, + {"label":"K2H (B2,E0)", "x":18.5, "y":3}, + {"label":"K30 (B3,B7)", "x":0, "y":4, "w":1.75}, + {"label":"K31 (B3,C0)", "x":1.75, "y":4}, + {"label":"K32 (B3,C1)", "x":2.75, "y":4}, + {"label":"K33 (B3,C2)", "x":3.75, "y":4}, + {"label":"K34 (B3,C3)", "x":4.75, "y":4}, + {"label":"K35 (B3,C4)", "x":5.75, "y":4}, + {"label":"K36 (B3,C5)", "x":6.75, "y":4}, + {"label":"K37 (B3,C6)", "x":7.75, "y":4}, + {"label":"K38 (B3,C7)", "x":8.75, "y":4}, + {"label":"K39 (B3,D0)", "x":9.75, "y":4}, + {"label":"K3A (B3,D1)", "x":10.75, "y":4}, + {"label":"K3B (B3,D2)", "x":11.75, "y":4}, + {"label":"K3C (B3,D3)", "x":12.75, "y":4}, + {"label":"K3D (B3,D4)", "x":13.75, "y":4, "w":1.25}, + {"label":"K3E (B3,D5)", "x":15.5, "y":4}, + {"label":"K3F (B3,D6)", "x":16.5, "y":4}, + {"label":"K3G (B3,D7)", "x":17.5, "y":4}, + {"label":"K3H (B3,E0)", "x":18.5, "y":4}, + {"label":"K40 (B4,B7)", "x":0, "y":5, "w":1.25}, + {"label":"K41 (B4,C0)", "x":1.25, "y":5}, + {"label":"K42 (B4,C1)", "x":2.25, "y":5}, + {"label":"K43 (B4,C2)", "x":3.25, "y":5}, + {"label":"K44 (B4,C3)", "x":4.25, "y":5}, + {"label":"K45 (B4,C4)", "x":5.25, "y":5}, + {"label":"K46 (B4,C5)", "x":6.25, "y":5}, + {"label":"K47 (B4,C6)", "x":7.25, "y":5}, + {"label":"K48 (B4,C7)", "x":8.25, "y":5}, + {"label":"K49 (B4,D0)", "x":9.25, "y":5}, + {"label":"K4A (B4,D1)", "x":10.25, "y":5}, + {"label":"K4B (B4,D2)", "x":11.25, "y":5}, + {"label":"K4C (B4,D3)", "x":12.25, "y":5, "w":1.75}, + {"label":"K4D (B4,D4)", "x":14.25, "y":5.25}, + {"label":"K4E (B4,D5)", "x":15.5, "y":5}, + {"label":"K4F (B4,D6)", "x":16.5, "y":5}, + {"label":"K4G (B4,D7)", "x":17.5, "y":5}, + {"label":"K4H (B4,E0)", "x":18.5, "y":5, "h":2}, + {"label":"K50 (B5,B7)", "x":0, "y":6, "w":1.5}, + {"label":"K51 (B5,C0)", "x":1.5, "y":6}, + {"label":"K52 (B5,C1)", "x":2.5, "y":6, "w":1.5}, + {"label":"K55 (B5,C4)", "x":4, "y":6, "w":6.25}, + {"label":"K57 (B5,C6)", "x":10.25, "y":6, "w":1.25}, + {"label":"K58 (B5,C7)", "x":11.5, "y":6, "w":1.5}, + {"label":"K59 (B5,D0)", "x":13.25, "y":6.25}, + {"label":"K5A (B5,D1)", "x":14.25, "y":6.25}, + {"label":"K5B (B5,D2)", "x":15.25, "y":6.25}, + {"label":"K5C (B5,D3)", "x":16.5, "y":6}, + {"label":"K5D (B5,D4)", "x":17.5, "y":6} + ] + } + } + ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/" +} diff --git a/keyboards/mechlovin/th1800/keymaps/default/keymap.c b/keyboards/mechlovin/th1800/keymaps/default/keymap.c new file mode 100644 index 0000000000..a04a6f246d --- /dev/null +++ b/keyboards/mechlovin/th1800/keymaps/default/keymap.c @@ -0,0 +1,29 @@ +/* Copyright 2020 Team Mechlovin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_HOME, KC_PGUP, KC_PSCR, + KC_DEL, KC_END, KC_PGDN, KC_SLCK, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_NLCK, KC_PSLS, KC_PAST, KC_PAUS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PMNS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT, KC_SPC, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT + ), + +}; diff --git a/keyboards/mechlovin/th1800/keymaps/default/readme.md b/keyboards/mechlovin/th1800/keymaps/default/readme.md new file mode 100644 index 0000000000..4471e2802b --- /dev/null +++ b/keyboards/mechlovin/th1800/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for th1800 diff --git a/keyboards/mechlovin/th1800/keymaps/via/keymap.c b/keyboards/mechlovin/th1800/keymaps/via/keymap.c new file mode 100644 index 0000000000..86bc278593 --- /dev/null +++ b/keyboards/mechlovin/th1800/keymaps/via/keymap.c @@ -0,0 +1,56 @@ +/* Copyright 2020 Team Mechlovin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_HOME, KC_PGUP, KC_PSCR, + KC_DEL, KC_END, KC_PGDN, KC_SLCK, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_NLCK, KC_PSLS, KC_PAST, KC_PAUS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PMNS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT, KC_SPC, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT + ), + [1] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + +}; diff --git a/keyboards/mechlovin/th1800/keymaps/via/readme.md b/keyboards/mechlovin/th1800/keymaps/via/readme.md new file mode 100644 index 0000000000..d81d42fbc6 --- /dev/null +++ b/keyboards/mechlovin/th1800/keymaps/via/readme.md @@ -0,0 +1,2 @@ +# The VIA keymap for TH1800 + diff --git a/keyboards/mechlovin/th1800/keymaps/via/rules.mk b/keyboards/mechlovin/th1800/keymaps/via/rules.mk new file mode 100644 index 0000000000..036bd6d1c3 --- /dev/null +++ b/keyboards/mechlovin/th1800/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/mechlovin/th1800/readme.md b/keyboards/mechlovin/th1800/readme.md new file mode 100644 index 0000000000..e71ca25747 --- /dev/null +++ b/keyboards/mechlovin/th1800/readme.md @@ -0,0 +1,23 @@ +# th1800 + +![th1800](https://i.imgur.com/7LZUCgBl.png) + +The project use atmega32a, through hole component, 1800 compact layout, open source. + +* Keyboard Maintainer: [Team Mechlovin](https://github.com/mechlovin) +* Hardware Supported: th1800 PCB, ATmega32A +* Hardware Availability: [PCB](https://github.com/mechlovin/PCB/tree/master/1800-Compact) + +Make example for this keyboard (after setting up your build environment): + + make mechlovin/th1800:default + +Flashing example for this keyboard: + + make mechlovin/th1800:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +**Reset Key:** To put the Th1800 into bootloader, push reset swith on the top of the PCB. + +IF87_rev2 used USBasploader from [Erovia tutorial](https://erovia.github.io/posts/thk/#bootloader), thank you [Erovia](https://github.com/Erovia). diff --git a/keyboards/mechlovin/th1800/rules.mk b/keyboards/mechlovin/th1800/rules.mk new file mode 100644 index 0000000000..3076166479 --- /dev/null +++ b/keyboards/mechlovin/th1800/rules.mk @@ -0,0 +1,25 @@ +# MCU name +MCU = atmega32a + +# Processor frequency +F_CPU = 16000000 + +# Bootloader selection +BOOTLOADER = USBasp + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/mechlovin/th1800/th1800.c b/keyboards/mechlovin/th1800/th1800.c new file mode 100644 index 0000000000..f27b244c41 --- /dev/null +++ b/keyboards/mechlovin/th1800/th1800.c @@ -0,0 +1,17 @@ +/* Copyright 2020 Team Mechlovin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "th1800.h" diff --git a/keyboards/mechlovin/th1800/th1800.h b/keyboards/mechlovin/th1800/th1800.h new file mode 100644 index 0000000000..edd950b76d --- /dev/null +++ b/keyboards/mechlovin/th1800/th1800.h @@ -0,0 +1,36 @@ +/* Copyright 2020 Team Mechlovin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, K0F, K0G, K0H, \ + K5E, K5F, K5G, K5H, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K0D, K1E, K1F, K1G, K1H, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, K2H, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K3G, K3H, \ + K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, K4F, K4G, K4H, \ + K50, K51, K52, K55, K57, K58, K59, K5A, K5B, K5C, K5D \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, K0H }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, K1H }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, K2H }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K3G, K3H }, \ + { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, K4F, K4G, K4H }, \ + { K50, K51, K52, KC_NO, KC_NO, K55, KC_NO, K57, K58, K59, K5A, K5B, K5C, K5D, K5E, K5F, K5G, K5H }, \ +} From 633464acfa68377eb993dc4437cb66ebe19010ed Mon Sep 17 00:00:00 2001 From: kiwikey <75843996+kiwikey@users.noreply.github.com> Date: Sat, 10 Apr 2021 02:05:14 +0700 Subject: [PATCH 191/613] Add VIA keymap for Kawii9 (#12521) Co-authored-by: Ryan --- keyboards/kiwikey/kawii9/keymaps/via/keymap.c | 39 +++++++++++++++++++ keyboards/kiwikey/kawii9/keymaps/via/rules.mk | 1 + keyboards/kiwikey/kawii9/rules.mk | 3 +- 3 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 keyboards/kiwikey/kawii9/keymaps/via/keymap.c create mode 100644 keyboards/kiwikey/kawii9/keymaps/via/rules.mk diff --git a/keyboards/kiwikey/kawii9/keymaps/via/keymap.c b/keyboards/kiwikey/kawii9/keymaps/via/keymap.c new file mode 100644 index 0000000000..4d64978cd0 --- /dev/null +++ b/keyboards/kiwikey/kawii9/keymaps/via/keymap.c @@ -0,0 +1,39 @@ +/* Copyright 2021 KiwiKey + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_ortho_3x3( + KC_MUTE, KC_VOLD, KC_VOLU, // Media volume: Mute - Volume Up - Volume Down + KC_MPLY, KC_MPRV, KC_MNXT, // Media track control: Play/Pause - Previous Track - Next Track + MO(1), LCTL(KC_C), LCTL(KC_V) // FN(1) - Copy - Paste + ), + [1] = LAYOUT_ortho_3x3( + RGB_TOG, RGB_MODE_REVERSE, RGB_MODE_FORWARD, + _______, RGB_MODE_BREATHE, RGB_MODE_RAINBOW, + _______, _______, RESET + ), + [2] = LAYOUT_ortho_3x3( + _______, _______, _______, + _______, _______, _______, + _______, _______, _______ + ), + [3] = LAYOUT_ortho_3x3( + _______, _______, _______, + _______, _______, _______, + _______, _______, _______ + ) +}; diff --git a/keyboards/kiwikey/kawii9/keymaps/via/rules.mk b/keyboards/kiwikey/kawii9/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/kiwikey/kawii9/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/kiwikey/kawii9/rules.mk b/keyboards/kiwikey/kawii9/rules.mk index b855c6f452..682c48b120 100644 --- a/keyboards/kiwikey/kawii9/rules.mk +++ b/keyboards/kiwikey/kawii9/rules.mk @@ -18,5 +18,6 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = yes # Enable Bluetooth +BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output +NO_USB_STARTUP_CHECK = yes From 7f9409bbb36534f23e3c120e7fa32e9256660a33 Mon Sep 17 00:00:00 2001 From: hadi Date: Fri, 9 Apr 2021 14:31:57 -0700 Subject: [PATCH 192/613] [Keyboard] Added senselessclay had60 (#12093) Co-authored-by: Ryan --- keyboards/senselessclay/had60/config.h | 114 ++++++++++++++++++ keyboards/senselessclay/had60/had60.c | 17 +++ keyboards/senselessclay/had60/had60.h | 35 ++++++ keyboards/senselessclay/had60/info.json | 81 +++++++++++++ .../had60/keymaps/default/keymap.c | 38 ++++++ .../senselessclay/had60/keymaps/had/keymap.c | 38 ++++++ .../senselessclay/had60/keymaps/iso/keymap.c | 38 ++++++ .../senselessclay/had60/keymaps/via/keymap.c | 51 ++++++++ .../senselessclay/had60/keymaps/via/rules.mk | 1 + keyboards/senselessclay/had60/readme.md | 21 ++++ keyboards/senselessclay/had60/rules.mk | 20 +++ 11 files changed, 454 insertions(+) create mode 100644 keyboards/senselessclay/had60/config.h create mode 100644 keyboards/senselessclay/had60/had60.c create mode 100644 keyboards/senselessclay/had60/had60.h create mode 100644 keyboards/senselessclay/had60/info.json create mode 100644 keyboards/senselessclay/had60/keymaps/default/keymap.c create mode 100644 keyboards/senselessclay/had60/keymaps/had/keymap.c create mode 100644 keyboards/senselessclay/had60/keymaps/iso/keymap.c create mode 100644 keyboards/senselessclay/had60/keymaps/via/keymap.c create mode 100644 keyboards/senselessclay/had60/keymaps/via/rules.mk create mode 100644 keyboards/senselessclay/had60/readme.md create mode 100644 keyboards/senselessclay/had60/rules.mk diff --git a/keyboards/senselessclay/had60/config.h b/keyboards/senselessclay/had60/config.h new file mode 100644 index 0000000000..a410ee91d5 --- /dev/null +++ b/keyboards/senselessclay/had60/config.h @@ -0,0 +1,114 @@ +/* +Copyright 2020 Hadi Iskandarani + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4849 // HI +#define PRODUCT_ID 0x060F // 60flex +#define DEVICE_VER 0x0001 // rev1 +#define MANUFACTURER senselessclay +#define PRODUCT had60 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ +/* rev0 */ +//#define MATRIX_ROW_PINS { F0, D0, D4, F5, F4 } +//#define MATRIX_COL_PINS { F1, D5, D3, D2, D1, F6, F7, C7, C6, B6, B5, B4, D7, D6 } +/* rev1 */ +#define MATRIX_ROW_PINS { F1, F0, F7, F6, F5 } +#define MATRIX_COL_PINS { F4, D5, D3, D2, D1, D0, C7, C6, B6, B5, B4, D7, D6, D4 } + +#define UNUSED_PINS { B0, B7, E6 } + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/senselessclay/had60/had60.c b/keyboards/senselessclay/had60/had60.c new file mode 100644 index 0000000000..b90b89193e --- /dev/null +++ b/keyboards/senselessclay/had60/had60.c @@ -0,0 +1,17 @@ +/* Copyright 2020 Hadi Iskandarani + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "had60.h" diff --git a/keyboards/senselessclay/had60/had60.h b/keyboards/senselessclay/had60/had60.h new file mode 100644 index 0000000000..5a2e228150 --- /dev/null +++ b/keyboards/senselessclay/had60/had60.h @@ -0,0 +1,35 @@ +/* Copyright 2020 Hadi Iskandarani + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define ____ KC_NO + +#define LAYOUT_all( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K213, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, \ + K400, K401, K402, K403, K410, K411, K412, K413 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313 }, \ + { K400, K401, K402, K403, ____, ____, ____, ____, ____, ____, K410, K411, K412, K413 } \ +} diff --git a/keyboards/senselessclay/had60/info.json b/keyboards/senselessclay/had60/info.json new file mode 100644 index 0000000000..daeb4411ac --- /dev/null +++ b/keyboards/senselessclay/had60/info.json @@ -0,0 +1,81 @@ +{ + "keyboard_name": "had60", + "url": "https://senselessclay.com/", + "maintainer": "hadi", + "width": 15, + "height": 5, + "layouts": { + "LAYOUT_all": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + {"x": 13.5, "y": 1, "w": 1.5}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2, "w": 2.25}, + + {"x": 0, "y": 3, "w": 1.25}, + {"x": 1.25, "y": 3}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3}, + {"x": 12.25, "y": 3, "w": 1.75}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 6.25}, + {"x": 10, "y": 4, "w": 1.25}, + {"x": 11.25, "y": 4, "w": 1.25}, + {"x": 12.5, "y": 4, "w": 1.25}, + {"x": 13.75, "y": 4, "w": 1.25} + ] + } + } + } \ No newline at end of file diff --git a/keyboards/senselessclay/had60/keymaps/default/keymap.c b/keyboards/senselessclay/had60/keymaps/default/keymap.c new file mode 100644 index 0000000000..d9c4f458c8 --- /dev/null +++ b/keyboards/senselessclay/had60/keymaps/default/keymap.c @@ -0,0 +1,38 @@ +/* Copyright 2020 Hadi Iskandarani + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [0] = LAYOUT_all( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_TRNS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(2), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL), + [1] = LAYOUT_all( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [2] = LAYOUT_all( + MAGIC_NO_GUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, + MAGIC_UNNO_GUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_RGHT, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DOWN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; \ No newline at end of file diff --git a/keyboards/senselessclay/had60/keymaps/had/keymap.c b/keyboards/senselessclay/had60/keymaps/had/keymap.c new file mode 100644 index 0000000000..0776a740ef --- /dev/null +++ b/keyboards/senselessclay/had60/keymaps/had/keymap.c @@ -0,0 +1,38 @@ +/* Copyright 2020 Hadi Iskandarani + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + /*Base*/ + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, + MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_TRNS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(2), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RALT, KC_RGUI, KC_RCTL), + [1] = LAYOUT_all( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_VOLD, KC_VOLU, KC_MUTE, KC_SLEP, + KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [2] = LAYOUT_all( + MAGIC_NO_GUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F11, KC_F12, KC_TRNS, RESET, + MAGIC_UNNO_GUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_RGHT, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DOWN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; \ No newline at end of file diff --git a/keyboards/senselessclay/had60/keymaps/iso/keymap.c b/keyboards/senselessclay/had60/keymaps/iso/keymap.c new file mode 100644 index 0000000000..b35af822d9 --- /dev/null +++ b/keyboards/senselessclay/had60/keymaps/iso/keymap.c @@ -0,0 +1,38 @@ +/* Copyright 2020 Hadi Iskandarani + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + /*Base*/ + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, + KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(2), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL), + [1] = LAYOUT_all( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [2] = LAYOUT_all( + MAGIC_NO_GUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, + MAGIC_UNNO_GUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_RGHT, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DOWN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; diff --git a/keyboards/senselessclay/had60/keymaps/via/keymap.c b/keyboards/senselessclay/had60/keymaps/via/keymap.c new file mode 100644 index 0000000000..8ea437aa2a --- /dev/null +++ b/keyboards/senselessclay/had60/keymaps/via/keymap.c @@ -0,0 +1,51 @@ +/* Copyright 2020 Hadi Iskandarani + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layers { + _0, + _1, + _2, + _3, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_0] = LAYOUT_all( + /*Base*/ + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_TRNS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(2), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL), + [_1] = LAYOUT_all( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [_2] = LAYOUT_all( + MAGIC_NO_GUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, + MAGIC_UNNO_GUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_RGHT, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DOWN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [_3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; \ No newline at end of file diff --git a/keyboards/senselessclay/had60/keymaps/via/rules.mk b/keyboards/senselessclay/had60/keymaps/via/rules.mk new file mode 100644 index 0000000000..036bd6d1c3 --- /dev/null +++ b/keyboards/senselessclay/had60/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/senselessclay/had60/readme.md b/keyboards/senselessclay/had60/readme.md new file mode 100644 index 0000000000..a43e4f6fdb --- /dev/null +++ b/keyboards/senselessclay/had60/readme.md @@ -0,0 +1,21 @@ +# had60 + +![had60](https://i.imgur.com/Q0AtIAgh.jpg) + +A minimal 60% keyboard implementation based around the ATMEGA32u4. + +* Keyboard Maintainer: [hadi](https://github.com/senselessclay) +* Hardware Supported: had60 PCB +* Hardware Availability: https://senselessclay.com/ + +Make example for this keyboard (after setting up your build environment): + + make senselessclay/had60:default + +Flashing example for this keyboard: + + make senselessclay/had60:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +If you'd like to reset the board into bootloader mode for flashing using [QMK Toolbox](https://github.com/qmk/qmk_toolbox), simply press the reset button directly above the controller assembly on the bottom side of the PCB. diff --git a/keyboards/senselessclay/had60/rules.mk b/keyboards/senselessclay/had60/rules.mk new file mode 100644 index 0000000000..af835e9705 --- /dev/null +++ b/keyboards/senselessclay/had60/rules.mk @@ -0,0 +1,20 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output \ No newline at end of file From 93e8a401df09df910b2caad7fc5ecb13fe2142ac Mon Sep 17 00:00:00 2001 From: littleferris Date: Fri, 9 Apr 2021 15:36:18 -0600 Subject: [PATCH 193/613] [Keyboard] ergosaurus - add VIA support, enabled RGB (#12126) Co-authored-by: Drashna Jaelre --- keyboards/ergosaurus/config.h | 31 +++++------ .../ergosaurus/keymaps/default/via/keymap.c | 51 +++++++++++++++++++ .../ergosaurus/keymaps/default/via/rules.mk | 2 + 3 files changed, 69 insertions(+), 15 deletions(-) create mode 100644 keyboards/ergosaurus/keymaps/default/via/keymap.c create mode 100644 keyboards/ergosaurus/keymaps/default/via/rules.mk diff --git a/keyboards/ergosaurus/config.h b/keyboards/ergosaurus/config.h index 5519354132..9731897c65 100644 --- a/keyboards/ergosaurus/config.h +++ b/keyboards/ergosaurus/config.h @@ -20,8 +20,8 @@ along with this program. If not, see . #include "config_common.h" /* USB Device descriptor parameter */ -#define VENDOR_ID 0xBEEF -#define PRODUCT_ID 0xFEED +#define VENDOR_ID 0x434B +#define PRODUCT_ID 0xE590 #define DEVICE_VER 0x0001 #define MANUFACTURER reggalicious #define PRODUCT ergosaurus @@ -58,24 +58,24 @@ along with this program. If not, see . // #define BACKLIGHT_BREATHING // #define BACKLIGHT_LEVELS 3 -// #ifdef RGBLIGHT_ENABLE -// #define RGB_DI_PIN B6 -// #define RGBLED_NUM 16 -// #define RGBLIGHT_HUE_STEP 8 -// #define RGBLIGHT_SAT_STEP 8 -// #define RGBLIGHT_VAL_STEP 8 -// #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ -// #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +#ifdef RGBLIGHT_ENABLE +# define RGB_DI_PIN B6 + #define RGBLED_NUM 32 + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 + #define RGBLIGHT_LIMIT_VAL 200 /* The maximum brightness level */ + #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ // /*== all animations enable ==*/ // #define RGBLIGHT_ANIMATIONS // /*== or choose animations ==*/ -// #define RGBLIGHT_EFFECT_BREATHING -// #define RGBLIGHT_EFFECT_RAINBOW_MOOD -// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL + #define RGBLIGHT_EFFECT_BREATHING + #define RGBLIGHT_EFFECT_RAINBOW_MOOD + #define RGBLIGHT_EFFECT_RAINBOW_SWIRL // #define RGBLIGHT_EFFECT_SNAKE // #define RGBLIGHT_EFFECT_KNIGHT // #define RGBLIGHT_EFFECT_CHRISTMAS -// #define RGBLIGHT_EFFECT_STATIC_GRADIENT + #define RGBLIGHT_EFFECT_STATIC_GRADIENT // #define RGBLIGHT_EFFECT_RGB_TEST // #define RGBLIGHT_EFFECT_ALTERNATING // /*== customize breathing effect ==*/ @@ -84,7 +84,7 @@ along with this program. If not, see . // /*==== use exp() and sin() ====*/ // #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 // #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 -// #endif + #endif /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ #define DEBOUNCE 5 @@ -198,6 +198,7 @@ along with this program. If not, see . * MIDI options */ + /* enable basic MIDI features: - MIDI notes can be sent when in Music mode is on */ diff --git a/keyboards/ergosaurus/keymaps/default/via/keymap.c b/keyboards/ergosaurus/keymaps/default/via/keymap.c new file mode 100644 index 0000000000..5ae73bfd47 --- /dev/null +++ b/keyboards/ergosaurus/keymaps/default/via/keymap.c @@ -0,0 +1,51 @@ +/* Copyright 2021 littleferris + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_alice_split_bs( + KC_GRV, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_DEL, + KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, + KC_PGDN, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LGUI, KC_LALT, KC_ENT, MO(2), KC_SPC, KC_RALT, KC_RCTL + ), + + [1] = LAYOUT_alice_split_bs( + _______, KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_RIGHT, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DOWN, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ), + + [2] = LAYOUT_alice_split_bs( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, RESET + ), + + [3] = LAYOUT_alice_split_bs( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, RESET + ) +}; diff --git a/keyboards/ergosaurus/keymaps/default/via/rules.mk b/keyboards/ergosaurus/keymaps/default/via/rules.mk new file mode 100644 index 0000000000..36b7ba9cbc --- /dev/null +++ b/keyboards/ergosaurus/keymaps/default/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes From 3dbb7f261dab573a3b55390394444ac3ceb3d257 Mon Sep 17 00:00:00 2001 From: Ryo Maeda Date: Sat, 10 Apr 2021 09:37:49 +0900 Subject: [PATCH 194/613] [Keymap] Remove LAYOUT_kc macros from edvorakjp keymaps (#12217) --- keyboards/crkbd/keymaps/edvorakjp/config.h | 26 ++-- keyboards/crkbd/keymaps/edvorakjp/keymap.c | 121 +++++++---------- keyboards/crkbd/keymaps/edvorakjp/oled.c | 103 ++++++--------- keyboards/crkbd/keymaps/edvorakjp/oled.h | 25 ++-- keyboards/crkbd/keymaps/edvorakjp/rules.mk | 12 +- .../helix/rev2/keymaps/edvorakjp/config.h | 25 ++-- .../helix/rev2/keymaps/edvorakjp/keymap.c | 42 ++---- .../rev2/keymaps/edvorakjp/keymap_4rows.c | 63 ++++----- .../rev2/keymaps/edvorakjp/keymap_5rows.c | 75 +++++------ .../rev2/keymaps/edvorakjp/keymap_xrows.h | 16 +-- keyboards/helix/rev2/keymaps/edvorakjp/oled.c | 116 ++++++++--------- keyboards/helix/rev2/keymaps/edvorakjp/oled.h | 21 +-- .../helix/rev2/keymaps/edvorakjp/rules.mk | 1 + .../keebio/iris/keymaps/edvorakjp/config.h | 5 +- .../keebio/iris/keymaps/edvorakjp/keymap.c | 117 ++++++++--------- users/edvorakjp/edvorakjp.c | 28 ++-- users/edvorakjp/edvorakjp.h | 86 +++++++----- users/edvorakjp/edvorakjp_process_record.c | 122 +++++++++--------- users/edvorakjp/edvorakjp_status.c | 58 ++++----- users/edvorakjp/edvorakjp_tap_dance.c | 90 ++++++------- 20 files changed, 525 insertions(+), 627 deletions(-) diff --git a/keyboards/crkbd/keymaps/edvorakjp/config.h b/keyboards/crkbd/keymaps/edvorakjp/config.h index b8662aca09..8787ba88d3 100644 --- a/keyboards/crkbd/keymaps/edvorakjp/config.h +++ b/keyboards/crkbd/keymaps/edvorakjp/config.h @@ -1,25 +1,25 @@ -#ifndef CONFIG_USER_H -#define CONFIG_USER_H +#pragma once /* Select hand configuration */ -// #define MASTER_LEFT -#define MASTER_RIGHT +#define MASTER_LEFT +// #define MASTER_RIGHT // #define EE_HANDS -#define SSD1306OLED #define SWAP_SCLN // #define TAPPING_FORCE_HOLD #define TAPPING_TERM 300 #define IGNORE_MOD_TAP_INTERRUPT -#undef RGBLED_NUM -#define RGBLIGHT_EFFECT_STATIC_GRADIENT -#define RGBLED_NUM 27 -#define RGBLIGHT_LIMIT_VAL 100 -#define RGBLIGHT_HUE_STEP 10 -#define RGBLIGHT_SAT_STEP 17 -#define RGBLIGHT_VAL_STEP 17 +#ifdef RGBLIGHT_ENABLE +# undef RGBLED_NUM +# define RGBLIGHT_EFFECT_STATIC_GRADIENT +# define RGBLED_NUM 27 +# define RGBLIGHT_LIMIT_VAL 100 +# define RGBLIGHT_HUE_STEP 10 +# define RGBLIGHT_SAT_STEP 17 +# define RGBLIGHT_VAL_STEP 17 +#endif // RGBLIGHT_ENABLE -#endif // CONFIG_USER_H +#define OLED_FONT_H "keyboards/crkbd/lib/glcdfont.c" diff --git a/keyboards/crkbd/keymaps/edvorakjp/keymap.c b/keyboards/crkbd/keymaps/edvorakjp/keymap.c index 32001f22da..5e56da61a9 100644 --- a/keyboards/crkbd/keymaps/edvorakjp/keymap.c +++ b/keyboards/crkbd/keymaps/edvorakjp/keymap.c @@ -1,9 +1,6 @@ #include QMK_KEYBOARD_H #ifdef PROTOCOL_LUFA - #include "split_util.h" -#endif -#ifdef SSD1306OLED - #include "oled.h" +# include "split_util.h" #endif #include "edvorakjp.h" @@ -14,85 +11,63 @@ * }; */ -#define KC_ KC_TRNS - -#define KC_TMB1 KC_LA(TAB) -#define KC_TMB2 KC_LS(SPC) -#define KC_TMB3 TD(TD_LOWER) // act as LOWER when hold, as KC_LANG2(=English) when tapped -#define KC_TMB4 TD(TD_RAISE) // act as RAISE when hold, as KC_LANG1(=Japanese) when tapped -#define KC_TMB5 KC_RC(BSPC) -#define KC_TMB6 KC_RG(ENT) -#define KC_TMB7 KC_RC(DEL) +#define LAYOUT_wrapper(...) LAYOUT_split_3x6_3(__VA_ARGS__) +// clang-format off const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [_EDVORAK] = LAYOUT_kc( - //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| - GRV ,QUOT,COMM , DOT , Y , Q , F , G , R , W , P ,BSLS, - //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| - EQL , A ,LA(O),LG(E),LC(I), U , D ,RS(T),RG(N),RA(S), M ,MINS, - //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| - ESC ,SCLN, X , C , V , Z , H , J , K , L , B ,SLSH, - //`----+----+-----+-----+-----+----+----| |----+----+-----+-----+-----+----+----' - TMB1 ,TMB2,TMB3, TMB4,TMB5,TMB6 - // `-----+----+----' `----+----+-----' + [L_EDVORAKJP_BASE] = LAYOUT_wrapper( + //,-----------------------------------------------------. ,-----------------------------------------------------. + KC_GRV, __EDVORAKJP_BASE_L1__ , __EDVORAKJP_BASE_R1__ , KC_BSLS, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_EQL, __EDVORAKJP_BASE_L2__ , __EDVORAKJP_BASE_R2__ , KC_MINS, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_ESC, __EDVORAKJP_BASE_L3__ , __EDVORAKJP_BASE_R3__ , KC_SLSH, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + LA_TAB, LS_SPC,LOWER_TD, RAISE_TD, RC_BSPC, RG_ENT + //`--------------------------' `--------------------------' ), - [_LOWER] = LAYOUT_kc( - //|----+----+------+------+------+----| |----+------+------+-------+----+----| - , , LCBR , LBRC , LPRN , , , RPRN , RBRC , RCBR , , , - //|----+----+------+------+------+----| |----+------+------+-------+----+----| - F1 , F2 ,LA(F3),LG(F4),LC(F5), F6 , F7 ,RS(F8),RG(F9),RA(F10),F11 ,F12 , - //|----+----+------+------+------+----| |----+------+------+-------+----+----| - PSCR, , HOME , PGDN , PGUP ,END , LEFT, DOWN , UP , RGHT , , , - //`----+----+------+------+------+----+----| |----+----+------+------+-------+----+----' - , , NO , MAC ,TMB7, - // `-----+----+----' `----+----+-----' + [L_EDVORAKJP_LOWER] = LAYOUT_wrapper( + //,-----------------------------------------------------. ,-----------------------------------------------------. + XXXXXXX, XXXXXXX, __EDVORAKJP_BRACKET_L__ , XXXXXXX, XXXXXXX, __EDVORAKJP_BRACKET_R__ , XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + __EDVORAKJP_FUNCTION_L__ , __EDVORAKJP_FUNCTION_R__ , + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_PSCR, XXXXXXX, __EDVORAKJP_PAGE__ , __EDVORAKJP_CURSOR__ , XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + KC_TRNS, KC_TRNS, XXXXXXX, KC_MAC, RC_DEL, KC_TRNS + //`--------------------------' `--------------------------' ), - [_RAISE] = LAYOUT_kc( - //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| - , ,EXLM , AT ,HASH ,DLR , PERC,CIRC ,AMPR ,ASTR , , , - //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| - , 1 ,LA(2),LG(3),LC(4), 5 , 6 ,RS(7),RG(8),RA(9), 0 , , - //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| - PSCR, ,HOME ,PGDN ,PGUP ,END , LEFT,DOWN , UP ,RGHT , , , - //`----+----+-----+-----+-----+----+----| |----+----+-----+-----+-----+----+----' - , ,WIN , NO , , - // `-----+----+----' `----+----+----' + [L_EDVORAKJP_RAISE] = LAYOUT_wrapper( + //,-----------------------------------------------------. ,-----------------------------------------------------. + XXXXXXX, XXXXXXX, __EDVORAKJP_SYMBOL_L__ , __EDVORAKJP_SYMBOL_R__ , XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + XXXXXXX, __EDVORAKJP_NUMBER_L__ , __EDVORAKJP_NUMBER_R__ , XXXXXXX, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_PSCR, XXXXXXX, __EDVORAKJP_PAGE__ , __EDVORAKJP_CURSOR__ , XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + KC_TRNS, KC_TRNS, KC_WIN, XXXXXXX, KC_TRNS, KC_TRNS + //`--------------------------' `--------------------------' ) }; - -#ifdef SSD1306OLED -void matrix_init_keymap(void) { - //SSD1306 OLED init, make sure to add #define SSD1306OLED in config.h -#ifdef MASTER_RIGHT - iota_gfx_init(has_usb()); // turns on the display -#else - iota_gfx_init(!has_usb()); -#endif // MASTER_RIGHT -} - -void matrix_scan_user(void) { - iota_gfx_task(); // this is what updates the display continuously -} -#endif +// clang-format on #ifdef RGBLIGHT_EFFECT_STATIC_GRADIENT uint32_t layer_state_set_keymap(uint32_t state) { - rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); - switch (biton32(state)) { - case _LOWER: - rgblight_sethsv_noeeprom_red(); - break; - case _RAISE: - rgblight_sethsv_noeeprom_green(); - break; - default: // for any other layers, or the default layer - rgblight_mode(RGBLIGHT_MODE_STATIC_GRADIENT + 3); - rgblight_sethsv_red(); - break; - } - return state; + rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); + switch (biton32(state)) { + case L_EDVORAKJP_LOWER: + rgblight_sethsv_noeeprom_red(); + break; + case L_EDVORAKJP_RAISE: + rgblight_sethsv_noeeprom_green(); + break; + default: // for any other layers, or the default layer + rgblight_mode(RGBLIGHT_MODE_STATIC_GRADIENT + 3); + rgblight_sethsv_red(); + break; + } + return state; } #endif diff --git a/keyboards/crkbd/keymaps/edvorakjp/oled.c b/keyboards/crkbd/keymaps/edvorakjp/oled.c index cbb43d0615..2e0fed47ee 100644 --- a/keyboards/crkbd/keymaps/edvorakjp/oled.c +++ b/keyboards/crkbd/keymaps/edvorakjp/oled.c @@ -1,76 +1,55 @@ +#include #include #include "oled.h" -// NOTE: Redefined to avoid to use snprintf(); It makes size of firmware big. -const char *read_mode_icon(bool windows_mode) { - static const char logo[][2][3] = {{{0x95, 0x96, 0}, {0xb5, 0xb6, 0}}, {{0x97, 0x98, 0}, {0xb7, 0xb8, 0}}}; - static char mode_icon[10]; +#ifdef OLED_DRIVER_ENABLE +void render_host_led_state(void) { oled_write(read_host_led_state(), false); } - int mode_number = windows_mode ? 1 : 0; - strcpy(mode_icon, logo[mode_number][0]); +void render_layer_state(void) { + char layer_name[17]; + oled_write_P(PSTR("Layer: "), false); - strcat(mode_icon, "\n"); - strcat(mode_icon, logo[mode_number][1]); - - return mode_icon; + switch (biton32(layer_state)) { + case L_EDVORAKJP_BASE: + oled_write_ln_P(PSTR("Default"), false); + break; + case L_EDVORAKJP_LOWER: + oled_write_ln_P(PSTR("Lower"), false); + break; + case L_EDVORAKJP_RAISE: + oled_write_ln_P(PSTR("Raise"), false); + break; + default: + snprintf(layer_name, sizeof(layer_name), "Undef-%ld", layer_state); + oled_write_ln(layer_name, false); + } } -const char *read_layer_state(void) { - static char layer_state_str[24]; - char layer_name[17]; +void render_logo(void) { oled_write(read_logo(), false); } - switch (biton32(layer_state)) { - case L_BASE: - strcpy(layer_name, "Default"); - break; - case _RAISE: - strcpy(layer_name, "Raise"); - break; - case _LOWER: - strcpy(layer_name, "Lower"); - break; - default: - snprintf(layer_name, sizeof(layer_name), "Undef-%ld", layer_state); - } +void render_mode_icon(bool is_windows) { + static const char logo[][2][3] = { + {{0x95, 0x96, 0}, {0xb5, 0xb6, 0}}, + {{0x97, 0x98, 0}, {0xb7, 0xb8, 0}}, + }; + static char mode_icon[10]; - strcpy(layer_state_str, "Layer: "); - - strcat(layer_state_str, layer_name); - strcat(layer_state_str, "\n"); - return layer_state_str; + snprintf(mode_icon, sizeof(mode_icon), "%s\n%s ", logo[is_windows][0], logo[is_windows][1]); + oled_write(mode_icon, false); } -const char *read_host_led_state(void) { - static char led_str[24]; - strcpy(led_str, (host_keyboard_leds() & (1<display, source->display, sizeof(dest->display))) { - memcpy(dest->display, source->display, sizeof(dest->display)); - dest->dirty = true; - } -} - -void iota_gfx_task_user(void) { - struct CharacterMatrix matrix; - - matrix_clear(&matrix); -#ifdef MASTER_RIGHT - if (!is_master) { -#else - if (is_master) { -#endif // MASTER_RIGHT - matrix_write(&matrix, read_mode_icon(!get_enable_kc_lang())); - matrix_write(&matrix, " "); - matrix_write(&matrix, read_layer_state()); - matrix_write(&matrix, read_host_led_state()); - } else { - matrix_write(&matrix, read_logo()); - } - matrix_update(&display, &matrix); +void oled_task_user(void) { + if (is_keyboard_left()) { + render_mode_icon(!get_enable_kc_lang()); + render_layer_state(); + render_host_led_state(); + } else { + render_logo(); + } } +#endif // OLED_DRIVER_ENABLE diff --git a/keyboards/crkbd/keymaps/edvorakjp/oled.h b/keyboards/crkbd/keymaps/edvorakjp/oled.h index 896347aea9..d9939c83a0 100644 --- a/keyboards/crkbd/keymaps/edvorakjp/oled.h +++ b/keyboards/crkbd/keymaps/edvorakjp/oled.h @@ -1,24 +1,17 @@ -#ifndef OLED_USER_H -#define OLED_USER_H +#pragma once -//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h -#include "ssd1306.h" #include "edvorakjp.h" -//assign the right code to your layers for OLED display -#define L_BASE 0 - -extern uint8_t is_master; extern bool japanese_mode; // method prototypes defined in crkbd/lib +extern const char *read_host_led_state(void); extern const char *read_logo(void); +extern const char *read_mode_icon(bool swap); -const char *read_mode_icon(bool swap); -const char *read_layer_state(void); -const char *read_host_led_state(void); -void matrix_update(struct CharacterMatrix *dest, - const struct CharacterMatrix *source); -void iota_gfx_task_user(void); - -#endif // OLED_CONFIG_USER_H +void render_host_led_state(void); +void render_layer_state(void); +void render_logo(void); +void render_mode_icon(bool is_windows); +oled_rotation_t oled_init_user(oled_rotation_t rotation); +void oled_task_user(void); diff --git a/keyboards/crkbd/keymaps/edvorakjp/rules.mk b/keyboards/crkbd/keymaps/edvorakjp/rules.mk index b4f6d2f1f1..111f6de27d 100644 --- a/keyboards/crkbd/keymaps/edvorakjp/rules.mk +++ b/keyboards/crkbd/keymaps/edvorakjp/rules.mk @@ -16,17 +16,13 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. SWAP_HANDS_ENABLE = no # Enable one-hand typing TAP_DANCE_ENABLE = yes +OLED_DRIVER_ENABLE = yes # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # If you want to change the display of OLED, you need to change here -SRC += ./lib/glcdfont.c \ +SRC += ./lib/host_led_state_reader.c \ ./lib/logo_reader.c \ - oled.c \ - # ./lib/rgb_state_reader.c \ - # ./lib/layer_state_reader.c \ - # ./lib/keylogger.c \ - # ./lib/mode_icon_reader.c \ - # ./lib/host_led_state_reader.c \ - # ./lib/timelogger.c \ + ./lib/mode_icon_reader.c \ + oled.c diff --git a/keyboards/helix/rev2/keymaps/edvorakjp/config.h b/keyboards/helix/rev2/keymaps/edvorakjp/config.h index cd0568f61e..ca3b73aa29 100644 --- a/keyboards/helix/rev2/keymaps/edvorakjp/config.h +++ b/keyboards/helix/rev2/keymaps/edvorakjp/config.h @@ -1,5 +1,4 @@ -#ifndef CONFIG_USER_H -#define CONFIG_USER_H +#pragma once #define SWAP_SCLN @@ -12,15 +11,13 @@ // Selection of RGBLIGHT MODE to use. #if defined(LED_ANIMATIONS) - //#define RGBLIGHT_EFFECT_BREATHING - //#define RGBLIGHT_EFFECT_RAINBOW_MOOD - //#define RGBLIGHT_EFFECT_RAINBOW_SWIRL - //#define RGBLIGHT_EFFECT_SNAKE - //#define RGBLIGHT_EFFECT_KNIGHT - //#define RGBLIGHT_EFFECT_CHRISTMAS - #define RGBLIGHT_EFFECT_STATIC_GRADIENT - //#define RGBLIGHT_EFFECT_RGB_TEST - //#define RGBLIGHT_EFFECT_ALTERNATING -#endif - -#endif /* CONFIG_USER_H */ +//# define RGBLIGHT_EFFECT_BREATHING +//# define RGBLIGHT_EFFECT_RAINBOW_MOOD +//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +//# define RGBLIGHT_EFFECT_SNAKE +//# define RGBLIGHT_EFFECT_KNIGHT +//# define RGBLIGHT_EFFECT_CHRISTMAS +# define RGBLIGHT_EFFECT_STATIC_GRADIENT +//# define RGBLIGHT_EFFECT_RGB_TEST +//# define RGBLIGHT_EFFECT_ALTERNATING +#endif // LED_ANIMATIONS diff --git a/keyboards/helix/rev2/keymaps/edvorakjp/keymap.c b/keyboards/helix/rev2/keymaps/edvorakjp/keymap.c index 9fba5072c4..5de00cb14c 100644 --- a/keyboards/helix/rev2/keymaps/edvorakjp/keymap.c +++ b/keyboards/helix/rev2/keymaps/edvorakjp/keymap.c @@ -1,38 +1,24 @@ #include QMK_KEYBOARD_H #include "split_util.h" #include "keymap_xrows.h" -#ifdef SSD1306OLED - #include "oled.h" -#endif // keymaps definitions are moved to keymap_Xrows.c. -#ifdef SSD1306OLED -void matrix_init_keymap(void) { - //SSD1306 OLED init, make sure to add #define SSD1306OLED in config.h - iota_gfx_init(!has_usb()); // turns on the display -} - -void matrix_scan_user(void) { - iota_gfx_task(); // this is what updates the display continuously -} -#endif - #ifdef RGBLIGHT_ENABLE uint32_t layer_state_set_keymap(uint32_t state) { - rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); - switch (biton32(state)) { - case _LOWER: - rgblight_sethsv_noeeprom_red(); - break; - case _RAISE: - rgblight_sethsv_noeeprom_blue(); - break; - default: // for any other layers, or the default layer - rgblight_mode(RGBLIGHT_MODE_STATIC_GRADIENT + 3); - rgblight_sethsv_red(); - break; - } - return state; + rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); + switch (biton32(state)) { + case L_EDVORAKJP_LOWER: + rgblight_sethsv_noeeprom_red(); + break; + case L_EDVORAKJP_RAISE: + rgblight_sethsv_noeeprom_green(); + break; + default: // for any other layers, or the default layer + rgblight_mode(RGBLIGHT_MODE_STATIC_GRADIENT + 3); + rgblight_sethsv_red(); + break; + } + return state; } #endif diff --git a/keyboards/helix/rev2/keymaps/edvorakjp/keymap_4rows.c b/keyboards/helix/rev2/keymaps/edvorakjp/keymap_4rows.c index f2befc03b5..246c2a9fd2 100644 --- a/keyboards/helix/rev2/keymaps/edvorakjp/keymap_4rows.c +++ b/keyboards/helix/rev2/keymaps/edvorakjp/keymap_4rows.c @@ -1,41 +1,42 @@ #include "helix.h" #include "keymap_xrows.h" +// clang-format off const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [_EDVORAK] = LAYOUT_kc( - //,----+----+-----+-----+-----+----. ,----+-----+-----+-----+----+----. - GRV ,QUOT,COMM , DOT , Y , Q , F , G , R , W , P ,BSLS, - //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| - EQL , A ,LA(O),LG(E),LC(I), U , D ,RS(T),RG(N),RA(S), M ,MINS, - //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| - ESC ,SCLN, X , C , V , Z , H , J , K , L , B ,SLSH, - //|----+----+-----+-----+-----+----+----. ,----+----+-----+-----+-----+----+----| - HOME,PGDN,PGUP , END ,TMB1 ,TMB2,TMB3, TMB4,TMB5,TMB6 ,LEFT ,DOWN , UP ,RGHT - //`----+----+-----+-----+-----+----+----/ \----+----+-----+-----+-----+----+----' + [L_EDVORAKJP_BASE] = LAYOUT_wrapper( + //,-----------------------------------------------------. ,-----------------------------------------------------. + KC_GRV, __EDVORAKJP_BASE_L1__ , __EDVORAKJP_BASE_R1__ , KC_BSLS, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_EQL, __EDVORAKJP_BASE_L2__ , __EDVORAKJP_BASE_R2__ , KC_MINS, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_ESC, __EDVORAKJP_BASE_L3__ , __EDVORAKJP_BASE_R3__ , KC_SLSH, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + __EDVORAKJP_PAGE__ , LA_TAB, LS_SPC,LOWER_TD, RAISE_TD, RC_BSPC, RG_ENT, __EDVORAKJP_CURSOR__ + //`--------------------------------------------------------------' `--------------------------------------------------------------' ), - [_LOWER] = LAYOUT_kc( - //,----+----+------+------+------+----. ,----+------+------+-------+----+----. - , , LCBR , LBRC , LPRN , , , RPRN , RBRC , RCBR , , , - //|----+----+------+------+------+----| |----+------+------+-------+----+----| - F1 , F2 ,LA(F3),LG(F4),LC(F5), F6 , F7 ,RS(F8),RG(F9),RA(F10),F11 ,F12 , - //|----+----+------+------+------+----| |----+------+------+-------+----+----| - PSCR, , HOME , PGDN , PGUP ,END , LEFT, DOWN , UP , RGHT , , , - //|----+----+------+------+------+----+----. ,----+----+------+------+-------+----+----| - , , , , , , NO , MAC ,TMB7, , , , , - //`----+----+------+------+------+----+----/ \----+----+------+------+-------+----+----' + [L_EDVORAKJP_LOWER] = LAYOUT_wrapper( + //,-----------------------------------------------------. ,-----------------------------------------------------. + XXXXXXX, XXXXXXX, __EDVORAKJP_BRACKET_L__ , XXXXXXX, XXXXXXX, __EDVORAKJP_BRACKET_R__ , XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + __EDVORAKJP_FUNCTION_L__ , __EDVORAKJP_FUNCTION_R__ , + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_PSCR, XXXXXXX, __EDVORAKJP_PAGE__ , __EDVORAKJP_CURSOR__ , XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + __KC_TRNS_x4__ , KC_TRNS, KC_TRNS, XXXXXXX, KC_MAC, RC_DEL, KC_TRNS, __KC_TRNS_x4__ + //`--------------------------------------------------------------' `--------------------------------------------------------------' ), - [_RAISE] = LAYOUT_kc( - //,----+----+-----+-----+-----+----. ,----+-----+-----+-----+----+----. - , ,EXLM , AT ,HASH ,DLR , PERC,CIRC ,AMPR ,ASTR , , , - //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| - , 1 ,LA(2),LG(3),LC(4), 5 , 6 ,RS(7),RG(8),RA(9), 0 , , - //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| - PSCR, ,HOME ,PGDN ,PGUP ,END , LEFT,DOWN , UP ,RGHT , , , - //|----+----+-----+-----+-----+----+----. ,----+----+-----+-----+-----+----+----| - , , , , , ,WIN , NO , , , , , , - //`----+----+-----+-----+-----+----+----/ \----+----+-----+-----+-----+----+----' + [L_EDVORAKJP_RAISE] = LAYOUT_wrapper( + //,-----------------------------------------------------. ,-----------------------------------------------------. + XXXXXXX, XXXXXXX, __EDVORAKJP_SYMBOL_L__ , __EDVORAKJP_SYMBOL_R__ , XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + XXXXXXX, __EDVORAKJP_NUMBER_L__ , __EDVORAKJP_NUMBER_R__ , XXXXXXX, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_PSCR, XXXXXXX, __EDVORAKJP_PAGE__ , __EDVORAKJP_CURSOR__ , XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + __KC_TRNS_x4__ , KC_TRNS, KC_TRNS, KC_WIN, XXXXXXX, KC_TRNS, KC_TRNS, __KC_TRNS_x4__ + //`--------------------------------------------------------------' `--------------------------------------------------------------' ) }; +// clang-format on diff --git a/keyboards/helix/rev2/keymaps/edvorakjp/keymap_5rows.c b/keyboards/helix/rev2/keymaps/edvorakjp/keymap_5rows.c index 642ba8c635..6f2a4d371a 100644 --- a/keyboards/helix/rev2/keymaps/edvorakjp/keymap_5rows.c +++ b/keyboards/helix/rev2/keymaps/edvorakjp/keymap_5rows.c @@ -1,47 +1,48 @@ #include "helix.h" #include "keymap_xrows.h" +// clang-format off const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [_EDVORAK] = LAYOUT_kc( - //,----+----+-----+-----+-----+----. ,----+-----+-----+-----+----+----. - ESC ,EXLM, AT ,HASH , DLR ,PERC, CIRC,AMPR ,ASTR ,LPRN ,RPRN,BSPC, - //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| - GRV ,QUOT,COMM , DOT , Y , Q , F , G , R , W , P ,BSLS, - //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| - EQL , A ,LA(O),LG(E),LC(I), U , D ,RS(T),RG(N),RA(S), M ,MINS, - //|----+----+-----+-----+-----+----+----. ,----+----+-----+-----+-----+----+----| - TAB ,SCLN, X , C , V , Z , NO , NO , H , J , K , L , B ,SLSH, - //|----+----+-----+-----+-----+----+----| |----+----+-----+-----+-----+----+----| - HOME,PGDN,PGUP , END ,TMB1 ,TMB2,TMB3, TMB4,TMB5,TMB6 ,LEFT ,DOWN , UP ,RGHT - //`----+----+-----+-----+-----+----+----/ \----+----+-----+-----+-----+----+----' + [L_EDVORAKJP_BASE] = LAYOUT_wrapper( + //,-----------------------------------------------------. ,-----------------------------------------------------. + KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_GRV, __EDVORAKJP_BASE_L1__ , __EDVORAKJP_BASE_R1__ , KC_BSLS, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_EQL, __EDVORAKJP_BASE_L2__ , __EDVORAKJP_BASE_R2__ , KC_MINS, + //|--------+--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------+--------| + KC_ESC, __EDVORAKJP_BASE_L3__ , XXXXXXX, XXXXXXX, __EDVORAKJP_BASE_R3__ , KC_SLSH, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + __EDVORAKJP_PAGE__ , LA_TAB, LS_SPC,LOWER_TD, RAISE_TD, RC_BSPC, RG_ENT, __EDVORAKJP_CURSOR__ + //`--------------------------------------------------------------' `--------------------------------------------------------------' ), - [_LOWER] = LAYOUT_kc( - //,----+----+------+------+------+----. ,----+------+------+-------+----+----. - PSCR, , , , , , , , , , , , - //|----+----+------+------+------+----| |----+------+------+-------+----+----| - , , LCBR , LBRC , LPRN , , , RPRN , RBRC , RCBR , , , - //|----+----+------+------+------+----| |----+------+------+-------+----+----| - F1 , F2 ,LA(F3),LG(F4),LC(F5), F6 , F7 ,RS(F8),RG(F9),RA(F10),F11 ,F12 , - //|----+----+------+------+------+----+----. ,----+----+------+------+-------+----+----| - , , HOME , PGDN , PGUP ,END , , ,LEFT, DOWN , UP , RGHT , , , - //|----+----+------+------+------+----+----| |----+----+------+------+-------+----+----| - , , , , , , NO , MAC ,TMB7, , , , , - //`----+----+------+------+------+----+----/ \----+----+------+------+-------+----+----' + [L_EDVORAKJP_LOWER] = LAYOUT_wrapper( + //,-----------------------------------------------------. ,-----------------------------------------------------. + __KC_TRNS_x6__ , __KC_TRNS_x6__ , + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + XXXXXXX, XXXXXXX, __EDVORAKJP_BRACKET_L__ , XXXXXXX, XXXXXXX, __EDVORAKJP_BRACKET_R__ , XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + __EDVORAKJP_FUNCTION_L__ , __EDVORAKJP_FUNCTION_R__ , + //|--------+--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------+--------| + KC_PSCR, XXXXXXX, __EDVORAKJP_PAGE__ , KC_TRNS, KC_TRNS, __EDVORAKJP_CURSOR__ , XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + __KC_TRNS_x4__ , KC_TRNS, KC_TRNS, XXXXXXX, KC_MAC, RC_DEL, KC_TRNS, __KC_TRNS_x4__ + //`--------------------------------------------------------------' `--------------------------------------------------------------' ), - [_RAISE] = LAYOUT_kc( - //,----+----+-----+-----+-----+----. ,----+-----+-----+-----+----+----. - PSCR, , , , , , , , , , , , - //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| - , ,EXLM , AT ,HASH ,DLR , PERC,CIRC ,AMPR ,ASTR , , , - //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| - , 1 ,LA(2),LG(3),LC(4), 5 , 6 ,RS(7),RG(8),RA(9), 0 , , - //|----+----+-----+-----+-----+----+----. ,----+----+-----+-----+-----+----+----| - , ,HOME ,PGDN ,PGUP ,END , , ,LEFT,DOWN , UP ,RGHT , , , - //|----+----+-----+-----+-----+----+----| |----+----+-----+-----+-----+----+----| - , , , , , ,WIN , NO , , , , , , - //`----+----+-----+-----+-----+----+----/ \----+----+-----+-----+-----+----+----' + [L_EDVORAKJP_RAISE] = LAYOUT_wrapper( + //,-----------------------------------------------------. ,-----------------------------------------------------. + __KC_TRNS_x6__ , __KC_TRNS_x6__ , + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + XXXXXXX, XXXXXXX, __EDVORAKJP_SYMBOL_L__ , __EDVORAKJP_SYMBOL_R__ , XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + XXXXXXX, __EDVORAKJP_NUMBER_L__ , __EDVORAKJP_NUMBER_R__ , XXXXXXX, + //|--------+--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------+--------| + KC_PSCR, XXXXXXX, __EDVORAKJP_PAGE__ , KC_TRNS, KC_TRNS, __EDVORAKJP_CURSOR__ , XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + __KC_TRNS_x4__ , KC_TRNS, KC_TRNS, KC_WIN, XXXXXXX, KC_TRNS, KC_TRNS, __KC_TRNS_x4__ + //`--------------------------------------------------------------' `--------------------------------------------------------------' ) }; +// clang-format on diff --git a/keyboards/helix/rev2/keymaps/edvorakjp/keymap_xrows.h b/keyboards/helix/rev2/keymaps/edvorakjp/keymap_xrows.h index d9561d0b70..aae83fc7a8 100644 --- a/keyboards/helix/rev2/keymaps/edvorakjp/keymap_xrows.h +++ b/keyboards/helix/rev2/keymaps/edvorakjp/keymap_xrows.h @@ -1,5 +1,4 @@ -#ifndef KEYMAP_XROWS_H -#define KEYMAP_XROWS_H +#pragma once #include "edvorakjp.h" /* @@ -8,14 +7,7 @@ * }; */ -#define KC_ KC_TRNS +#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__) -#define KC_TMB1 KC_LA(TAB) -#define KC_TMB2 KC_LS(SPC) -#define KC_TMB3 TD(TD_LOWER) // act as LOWER when hold, as KC_LANG2(=English) when tapped -#define KC_TMB4 TD(TD_RAISE) // act as RAISE when hold, as KC_LANG1(=Japanese) when tapped -#define KC_TMB5 KC_RC(BSPC) -#define KC_TMB6 KC_RG(ENT) -#define KC_TMB7 KC_RC(DEL) - -#endif +#define __KC_TRNS_x4__ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS +#define __KC_TRNS_x6__ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS diff --git a/keyboards/helix/rev2/keymaps/edvorakjp/oled.c b/keyboards/helix/rev2/keymaps/edvorakjp/oled.c index b931b72b7c..4bbab1dc4b 100644 --- a/keyboards/helix/rev2/keymaps/edvorakjp/oled.c +++ b/keyboards/helix/rev2/keymaps/edvorakjp/oled.c @@ -1,72 +1,68 @@ +#include #include #include "oled.h" -static void render_logo(struct CharacterMatrix *matrix) { +#ifdef OLED_DRIVER_ENABLE +void render_host_led_state(void) { + char led_state_str[24]; + uint8_t leds = host_keyboard_leds(); - static char logo[] = { - 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, - 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, - 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4, - 0}; - matrix_write(matrix, logo); + bool is_num_lock_enabled = leds & (1 << USB_LED_NUM_LOCK); + bool is_caps_lock_enabled = leds & (1 << USB_LED_CAPS_LOCK); + bool is_scroll_lock_enabled = leds & (1 << USB_LED_SCROLL_LOCK); + + snprintf(led_state_str, sizeof(led_state_str), "NL:%s CL:%s SL:%s", is_num_lock_enabled ? "on" : "- ", is_caps_lock_enabled ? "on" : "- ", is_scroll_lock_enabled ? "on" : "- "); + oled_write(led_state_str, false); } -void matrix_update(struct CharacterMatrix *dest, - const struct CharacterMatrix *source) { - if (memcmp(dest->display, source->display, sizeof(dest->display))) { - memcpy(dest->display, source->display, sizeof(dest->display)); - dest->dirty = true; - } +void render_layer_state(void) { + char layer_name[17]; + oled_write_P(PSTR("Layer: "), false); + + switch (biton32(layer_state)) { + case L_EDVORAKJP_BASE: + oled_write_ln_P(PSTR("Default"), false); + break; + case L_EDVORAKJP_LOWER: + oled_write_ln_P(PSTR("Lower"), false); + break; + case L_EDVORAKJP_RAISE: + oled_write_ln_P(PSTR("Raise"), false); + break; + default: + snprintf(layer_name, sizeof(layer_name), "Undef-%ld", layer_state); + oled_write_ln(layer_name, false); + } } -void render_status(struct CharacterMatrix *matrix) { - - // Render to mode icon - static char logo[][2][3] = {{{0x95,0x96,0},{0xb5,0xb6,0}},{{0x97,0x98,0},{0xb7,0xb8,0}}}; - int mode_number = get_enable_kc_lang() ? 0 : 1; - matrix_write(matrix, logo[mode_number][0]); - matrix_write(matrix, "\n"); - matrix_write(matrix, logo[mode_number][1]); - - // Define layers here, Have not worked out how to have text displayed for each layer. Copy down the number you see and add a case for it below - char buf[40]; - snprintf(buf,sizeof(buf), "Undef-%ld", layer_state); - matrix_write_P(matrix, PSTR("\nLayer: ")); - switch (biton32(layer_state)) { - case L_BASE: - matrix_write_P(matrix, PSTR("Default")); - break; - case _RAISE: - matrix_write_P(matrix, PSTR("Raise")); - break; - case _LOWER: - matrix_write_P(matrix, PSTR("Lower")); - break; - default: - matrix_write(matrix, buf); - } - - // Host Keyboard LED Status - char led[40]; - snprintf(led, sizeof(led), "\n%s %s %s", - (host_keyboard_leds() & (1<event.pressed) { - last_mods_status = get_mods(); + static const uint8_t shift_bits = MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT); + static uint8_t last_mods_status; + if (keycode == KC_SCLN) { + if (record->event.pressed) { + last_mods_status = get_mods(); - // invert shift_bits - if (last_mods_status & shift_bits) { - set_mods(last_mods_status & ~shift_bits); - } else { - set_mods(last_mods_status | MOD_BIT(KC_LSFT)); - } - } else { - set_mods(last_mods_status); - last_mods_status = 0; + // invert shift_bits + if (last_mods_status & shift_bits) { + set_mods(last_mods_status & ~shift_bits); + } else { + set_mods(last_mods_status | MOD_BIT(KC_LSFT)); + } + } else { + set_mods(last_mods_status); + last_mods_status = 0; + } } - } #endif - return true; + return true; } bool process_record_edvorakjp_config(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case KC_MAC: - case KC_WIN: - if (record->event.pressed) { - set_enable_kc_lang(keycode == KC_MAC); - } - return false; - } - return true; + switch (keycode) { + case KC_MAC: + case KC_WIN: + if (record->event.pressed) { + set_enable_kc_lang(keycode == KC_MAC); + } + return false; + } + return true; } bool process_record_layer(uint16_t keycode, keyrecord_t *record) { #if TAP_DANCE_ENABLE != yes - switch (keycode) { - case LOWER: - if (record->event.pressed) { - layer_on(_LOWER); - time_on_pressed = record->event.time; - } else { - layer_off(_LOWER); + switch (keycode) { + case KC_EDVORAKJP_LOWER: + if (record->event.pressed) { + layer_on(L_EDVORAKJP_LOWER); + time_on_pressed = record->event.time; + } else { + layer_off(L_EDVORAKJP_LOWER); - if (TIMER_DIFF_16(record->event.time, time_on_pressed) < TAPPING_TERM) { - set_japanese_mode(false); - } - time_on_pressed = 0; - } - return false; - case RAISE: - if (record->event.pressed) { - layer_on(_RAISE); - time_on_pressed = record->event.time; - } else { - layer_off(_RAISE); + if (TIMER_DIFF_16(record->event.time, time_on_pressed) < TAPPING_TERM) { + set_japanese_mode(false); + } + time_on_pressed = 0; + } + return false; + case KC_EDVORAKJP_RAISE: + if (record->event.pressed) { + layer_on(L_EDVORAKJP_RAISE); + time_on_pressed = record->event.time; + } else { + layer_off(L_EDVORAKJP_RAISE); - if (TIMER_DIFF_16(record->event.time, time_on_pressed) < TAPPING_TERM) { - set_japanese_mode(true); - } - time_on_pressed = 0; - } - return false; - } + if (TIMER_DIFF_16(record->event.time, time_on_pressed) < TAPPING_TERM) { + set_japanese_mode(true); + } + time_on_pressed = 0; + } + return false; + } #endif - return true; + return true; } bool process_record_ime(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case KC_JPN: - case KC_ENG: - if (record->event.pressed) { - set_japanese_mode(keycode == KC_JPN); - } - return false; - } - return true; + switch (keycode) { + case KC_JPN: + case KC_ENG: + if (record->event.pressed) { + set_japanese_mode(keycode == KC_JPN); + } + return false; + } + return true; } diff --git a/users/edvorakjp/edvorakjp_status.c b/users/edvorakjp/edvorakjp_status.c index 128fc3bd28..c8a06c2255 100644 --- a/users/edvorakjp/edvorakjp_status.c +++ b/users/edvorakjp/edvorakjp_status.c @@ -2,63 +2,55 @@ #include "edvorakjp.h" typedef union { - uint8_t raw; - struct { - bool enable_kc_lang; // for macOS - }; + uint8_t raw; + struct { + bool enable_kc_lang; // for macOS + }; } edvorakjp_config_t; static edvorakjp_config_t edvorakjp_config; typedef struct { - bool japanese_mode; + bool japanese_mode; } edvorakjp_state_t; static edvorakjp_state_t edvorakjp_state; /* * private methods */ -uint8_t eeconfig_read_edvorakjp(void) { - return eeprom_read_byte(EECONFIG_EDVORAK); -} +uint8_t eeconfig_read_edvorakjp(void) { return eeprom_read_byte(EECONFIG_EDVORAK); } -void eeconfig_update_edvorakjp(uint8_t val) { - eeprom_update_byte(EECONFIG_EDVORAK, val); -} +void eeconfig_update_edvorakjp(uint8_t val) { eeprom_update_byte(EECONFIG_EDVORAK, val); } /* * public methods */ void edvorakjp_status_init(void) { - edvorakjp_state.japanese_mode = false; - edvorakjp_config.raw = eeconfig_read_edvorakjp(); + edvorakjp_state.japanese_mode = false; + edvorakjp_config.raw = eeconfig_read_edvorakjp(); } -bool get_enable_kc_lang(void) { - return edvorakjp_config.enable_kc_lang; -} +bool get_enable_kc_lang(void) { return edvorakjp_config.enable_kc_lang; } void set_enable_kc_lang(bool new_state) { - edvorakjp_config.enable_kc_lang = new_state; - eeconfig_update_edvorakjp(edvorakjp_config.raw); + edvorakjp_config.enable_kc_lang = new_state; + eeconfig_update_edvorakjp(edvorakjp_config.raw); } -bool get_japanese_mode(void) { - return edvorakjp_state.japanese_mode; -} +bool get_japanese_mode(void) { return edvorakjp_state.japanese_mode; } void set_japanese_mode(bool new_state) { - edvorakjp_state.japanese_mode = new_state; - if (edvorakjp_state.japanese_mode) { - if (edvorakjp_config.enable_kc_lang) { - SEND_STRING(SS_TAP(X_LANG1)); + edvorakjp_state.japanese_mode = new_state; + if (edvorakjp_state.japanese_mode) { + if (edvorakjp_config.enable_kc_lang) { + SEND_STRING(SS_TAP(X_LANG1)); + } else { + SEND_STRING(SS_LALT("`")); + } } else { - SEND_STRING(SS_LALT("`")); + if (edvorakjp_config.enable_kc_lang) { + SEND_STRING(SS_TAP(X_LANG2)); + } else { + SEND_STRING(SS_LALT("`")); + } } - } else { - if (edvorakjp_config.enable_kc_lang) { - SEND_STRING(SS_TAP(X_LANG2)); - } else { - SEND_STRING(SS_LALT("`")); - } - } } diff --git a/users/edvorakjp/edvorakjp_tap_dance.c b/users/edvorakjp/edvorakjp_tap_dance.c index d5369f9266..cee10de693 100644 --- a/users/edvorakjp/edvorakjp_tap_dance.c +++ b/users/edvorakjp/edvorakjp_tap_dance.c @@ -2,72 +2,68 @@ #include "process_keycode/process_tap_dance.h" enum tap_state { - NONE = 0, - SINGLE_TAP = 1, - DOUBLE_TAP = 2, - HOLD + NONE = 0, + SINGLE_TAP = 1, + DOUBLE_TAP = 2, + HOLD, }; typedef struct { - uint8_t lower; - uint8_t raise; + uint8_t lower; + uint8_t raise; } td_status_t; static td_status_t td_status = {NONE, NONE}; -int cur_dance(qk_tap_dance_state_t *state) { - if (state->interrupted || !state->pressed) { - return state->count == 1 ? SINGLE_TAP : DOUBLE_TAP; - } else { - return HOLD; - } +uint8_t cur_dance(qk_tap_dance_state_t *state) { + if (state->interrupted || !state->pressed) { + return state->count == 1 ? SINGLE_TAP : DOUBLE_TAP; + } else { + return HOLD; + } } void td_lower_finished(qk_tap_dance_state_t *state, void *user_data) { - td_status.lower = cur_dance(state); - switch(td_status.lower) { - case SINGLE_TAP: - set_japanese_mode(false); - break; - case DOUBLE_TAP: - set_japanese_mode(false); - register_code(KC_ESC); - break; - case HOLD: - break; - } - layer_on(_LOWER); + td_status.lower = cur_dance(state); + switch (td_status.lower) { + case SINGLE_TAP: + set_japanese_mode(false); + break; + case DOUBLE_TAP: + set_japanese_mode(false); + register_code(KC_ESC); + break; + } + layer_on(L_EDVORAKJP_LOWER); } void td_lower_reset(qk_tap_dance_state_t *state, void *user_data) { - if (td_status.lower == DOUBLE_TAP) { - unregister_code(KC_ESC); - } - layer_off(_LOWER); - td_status.lower = NONE; + switch (td_status.lower) { + case DOUBLE_TAP: + unregister_code(KC_ESC); + break; + } + layer_off(L_EDVORAKJP_LOWER); + td_status.lower = NONE; } void td_raise_finished(qk_tap_dance_state_t *state, void *user_data) { - td_status.raise = cur_dance(state); - switch(td_status.raise) { - case DOUBLE_TAP: - // same as single - case SINGLE_TAP: - set_japanese_mode(true); - break; - case HOLD: - break; - } - layer_on(_RAISE); + td_status.raise = cur_dance(state); + switch (td_status.raise) { + case DOUBLE_TAP: + // same as single + case SINGLE_TAP: + set_japanese_mode(true); + break; + } + layer_on(L_EDVORAKJP_RAISE); } void td_raise_reset(qk_tap_dance_state_t *state, void *user_data) { - layer_off(_RAISE); - td_status.raise = NONE; + layer_off(L_EDVORAKJP_RAISE); + td_status.raise = NONE; } qk_tap_dance_action_t tap_dance_actions[] = { - [TD_LOWER] = - ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, td_lower_finished, td_lower_reset, 100), - [TD_RAISE] = - ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, td_raise_finished, td_raise_reset, 100) + [TD_EDVORAKJP_LOWER] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, td_lower_finished, td_lower_reset, 150), + [TD_EDVORAKJP_RAISE] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, td_raise_finished, td_raise_reset, 150), }; From e09ca633173c9b6d9a1f1c7dff49ccef89fae273 Mon Sep 17 00:00:00 2001 From: Eithan Shavit Date: Fri, 9 Apr 2021 22:57:30 -0700 Subject: [PATCH 195/613] [Keyboard] Add afternoonlabs/oceanbreeze (#12299) Co-authored-by: Ryan Co-authored-by: Eithan Shavit --- keyboards/afternoonlabs/breeze/rev1/readme.md | 4 +- keyboards/afternoonlabs/breeze/rev1/rules.mk | 4 +- keyboards/afternoonlabs/oceanbreeze/config.h | 22 +++++ .../oceanbreeze/keymaps/default/keymap.c | 71 +++++++++++++++ .../oceanbreeze/keymaps/default/readme.md | 5 ++ .../afternoonlabs/oceanbreeze/oceanbreeze.c | 17 ++++ .../afternoonlabs/oceanbreeze/oceanbreeze.h | 21 +++++ .../afternoonlabs/oceanbreeze/rev1/config.h | 49 +++++++++++ .../afternoonlabs/oceanbreeze/rev1/info.json | 86 +++++++++++++++++++ .../afternoonlabs/oceanbreeze/rev1/readme.md | 15 ++++ .../afternoonlabs/oceanbreeze/rev1/rev1.c | 17 ++++ .../afternoonlabs/oceanbreeze/rev1/rev1.h | 44 ++++++++++ .../afternoonlabs/oceanbreeze/rev1/rules.mk | 23 +++++ 13 files changed, 374 insertions(+), 4 deletions(-) create mode 100644 keyboards/afternoonlabs/oceanbreeze/config.h create mode 100644 keyboards/afternoonlabs/oceanbreeze/keymaps/default/keymap.c create mode 100644 keyboards/afternoonlabs/oceanbreeze/keymaps/default/readme.md create mode 100644 keyboards/afternoonlabs/oceanbreeze/oceanbreeze.c create mode 100644 keyboards/afternoonlabs/oceanbreeze/oceanbreeze.h create mode 100644 keyboards/afternoonlabs/oceanbreeze/rev1/config.h create mode 100644 keyboards/afternoonlabs/oceanbreeze/rev1/info.json create mode 100644 keyboards/afternoonlabs/oceanbreeze/rev1/readme.md create mode 100644 keyboards/afternoonlabs/oceanbreeze/rev1/rev1.c create mode 100644 keyboards/afternoonlabs/oceanbreeze/rev1/rev1.h create mode 100644 keyboards/afternoonlabs/oceanbreeze/rev1/rules.mk diff --git a/keyboards/afternoonlabs/breeze/rev1/readme.md b/keyboards/afternoonlabs/breeze/rev1/readme.md index 9d845f6f37..604d95f252 100644 --- a/keyboards/afternoonlabs/breeze/rev1/readme.md +++ b/keyboards/afternoonlabs/breeze/rev1/readme.md @@ -4,9 +4,9 @@ Split ergonomics meets productivity. Breeze Rev1 is a split keyboard with 6×4 keys, 4 key thumb cluster, arrow keys, and a 6 key macro cluster, with ortholinear column-staggered. -* Keyboard Maintainer: [Eithan Shavit](https://github.com/eithanshavit) +* Keyboard Maintainer: [AfternoonLabs](https://github.com/afternoonlabs) * Hardware Supported: Breeze Rev1 PCB -* Hardware Availability: Coming soon +* Hardware Availability: [store.afternoonlab.com](https://store.afternoonlabs.com) Make example for this keyboard (after setting up your build environment): diff --git a/keyboards/afternoonlabs/breeze/rev1/rules.mk b/keyboards/afternoonlabs/breeze/rev1/rules.mk index d1847482f6..773650d128 100644 --- a/keyboards/afternoonlabs/breeze/rev1/rules.mk +++ b/keyboards/afternoonlabs/breeze/rev1/rules.mk @@ -9,8 +9,8 @@ BOOTLOADER = caterina # SPLIT_KEYBOARD = yes BOOTMAGIC_ENABLE = lite -MOUSEKEY_ENABLE = no # Mouse keys -EXTRAKEY_ENABLE = no # Audio control and System control +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE diff --git a/keyboards/afternoonlabs/oceanbreeze/config.h b/keyboards/afternoonlabs/oceanbreeze/config.h new file mode 100644 index 0000000000..1197fa2257 --- /dev/null +++ b/keyboards/afternoonlabs/oceanbreeze/config.h @@ -0,0 +1,22 @@ +/* Copyright 2021 Afternoon Labs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION diff --git a/keyboards/afternoonlabs/oceanbreeze/keymaps/default/keymap.c b/keyboards/afternoonlabs/oceanbreeze/keymaps/default/keymap.c new file mode 100644 index 0000000000..73d0dda0f3 --- /dev/null +++ b/keyboards/afternoonlabs/oceanbreeze/keymaps/default/keymap.c @@ -0,0 +1,71 @@ +/* Copyright 2021 Afternoon Labs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum layer_names { + _MAIN, + _LOWER, + _RAISE, +}; + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_MAIN] = LAYOUT( + //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”┌────────┬────────┬────────┠+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_MINS, KC_EQL, KC_GRV, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_LBRC, KC_RBRC, KC_BSLS, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_UP, + //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC, KC_RBRC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_LEFT, KC_DOWN, KC_RIGHT, + //└────────┴────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘ + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_ENT, RAISE, LOWER, XXXXXXX + // └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘ + ), + + [_LOWER] = LAYOUT( + //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”┌────────┬────────┬────────┠+ RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //└────────┴────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘ + _______, _______, _______, _______, _______, _______, _______, _______ + // └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘ + ), + + [_RAISE] = LAYOUT( + //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”┌────────┬────────┬────────┠+ _______, _______, _______, _______, _______, _______, _______, KC_PEQL, KC_PSLS, KC_PAST, KC_PMNS, _______, _______, _______, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PPLS, _______, _______, _______, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, _______, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, _______, _______, _______, _______, + //└────────┴────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘ + _______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT + // └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘ + ) +}; diff --git a/keyboards/afternoonlabs/oceanbreeze/keymaps/default/readme.md b/keyboards/afternoonlabs/oceanbreeze/keymaps/default/readme.md new file mode 100644 index 0000000000..109b0f5e77 --- /dev/null +++ b/keyboards/afternoonlabs/oceanbreeze/keymaps/default/readme.md @@ -0,0 +1,5 @@ +# Default Ocean Breeze Layout + +![Ocean Breeze Layout Image](https://i.imgur.com/cXGLDVQ.png) + +This is the default suggested layout for Ocean Breeze Split Keyboard. diff --git a/keyboards/afternoonlabs/oceanbreeze/oceanbreeze.c b/keyboards/afternoonlabs/oceanbreeze/oceanbreeze.c new file mode 100644 index 0000000000..35268ecf6f --- /dev/null +++ b/keyboards/afternoonlabs/oceanbreeze/oceanbreeze.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Afternoon Labs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "oceanbreeze.h" diff --git a/keyboards/afternoonlabs/oceanbreeze/oceanbreeze.h b/keyboards/afternoonlabs/oceanbreeze/oceanbreeze.h new file mode 100644 index 0000000000..f51f55de13 --- /dev/null +++ b/keyboards/afternoonlabs/oceanbreeze/oceanbreeze.h @@ -0,0 +1,21 @@ +/* Copyright 2021 Afternoon Labs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#ifdef KEYBOARD_afternoonlabs_oceanbreeze_rev1 +# include "rev1.h" +#endif diff --git a/keyboards/afternoonlabs/oceanbreeze/rev1/config.h b/keyboards/afternoonlabs/oceanbreeze/rev1/config.h new file mode 100644 index 0000000000..6afe6b54e8 --- /dev/null +++ b/keyboards/afternoonlabs/oceanbreeze/rev1/config.h @@ -0,0 +1,49 @@ +/* Copyright 2021 Afternoon Labs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x616C +#define PRODUCT_ID 0x0003 +#define DEVICE_VER 0x0001 +#define MANUFACTURER AfternoonLabs +#define PRODUCT OceanBreeze + +/* key matrix size */ +// Rows are doubled-up +#define MATRIX_ROWS 12 +#define MATRIX_COLS 9 + +// wiring of each half +#define MATRIX_ROW_PINS \ + { F4, F5, F6, F7, B1, B6 } +#define MATRIX_COL_PINS \ + { B2, D1, D0, D4, C6, D7, E6, B4, B5 } + +#define SPLIT_HAND_PIN B3 + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +#define SOFT_SERIAL_PIN D2 + +#define DIODE_DIRECTION COL2ROW + +#define BOOTMAGIC_LITE_ROW_RIGHT 0 +#define BOOTMAGIC_LITE_COLUMN_RIGHT 5 +#define BOOTMAGIC_LITE_ROW_LEFT 0 +#define BOOTMAGIC_LITE_COLUMN_LEFT 5 diff --git a/keyboards/afternoonlabs/oceanbreeze/rev1/info.json b/keyboards/afternoonlabs/oceanbreeze/rev1/info.json new file mode 100644 index 0000000000..db7d533d12 --- /dev/null +++ b/keyboards/afternoonlabs/oceanbreeze/rev1/info.json @@ -0,0 +1,86 @@ +{ + "keyboard_name": "OceanBreeze", + "url": "afternoonlabs.com", + "productId": "0x0003", + "maintainer": "afternoonlabs", + "width": 19, + "height": 6, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0.375}, + {"x":1, "y":0.375}, + {"x":2, "y":0.125}, + {"x":3, "y":0}, + {"x":4, "y":0.125}, + {"x":5, "y":0.25}, + {"x":9.75, "y":0.25}, + {"x":10.75, "y":0.125}, + {"x":11.75, "y":0}, + {"x":12.75, "y":0.125}, + {"x":13.75, "y":0.375}, + {"x":14.75, "y":0.375}, + {"x":16, "y":0.375}, + {"x":17, "y":0.375}, + {"x":18, "y":0.375}, + + {"x":0, "y":1.375}, + {"x":1, "y":1.375}, + {"x":2, "y":1.125}, + {"x":3, "y":1}, + {"x":4, "y":1.125}, + {"x":5, "y":1.25}, + {"x":9.75, "y":1.25}, + {"x":10.75, "y":1.125}, + {"x":11.75, "y":1}, + {"x":12.75, "y":1.125}, + {"x":13.75, "y":1.375}, + {"x":14.75, "y":1.375}, + {"x":16, "y":1.375}, + {"x":17, "y":1.375}, + {"x":18, "y":1.375}, + + {"x":0, "y":2.375}, + {"x":1, "y":2.375}, + {"x":2, "y":2.125}, + {"x":3, "y":2}, + {"x":4, "y":2.125}, + {"x":5, "y":2.25}, + {"x":9.75, "y":2.25}, + {"x":10.75, "y":2.125}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2.125}, + {"x":13.75, "y":2.375}, + {"x":14.75, "y":2.375}, + {"x":17, "y":2.375}, + + {"x":0, "y":3.375}, + {"x":1, "y":3.375}, + {"x":2, "y":3.125}, + {"x":3, "y":3}, + {"x":4, "y":3.125}, + {"x":5, "y":3.25}, + {"x":6.25, "y":3.75}, + {"x":8.5, "y":3.75}, + {"x":9.75, "y":3.25}, + {"x":10.75, "y":3.125}, + {"x":11.75, "y":3}, + {"x":12.75, "y":3.125}, + {"x":13.75, "y":3.375}, + {"x":14.75, "y":3.375}, + {"x":16, "y":3.375}, + {"x":17, "y":3.375}, + {"x":18, "y":3.375}, + + {"x":2.5, "y":4.25}, + {"x":3.5, "y":4.25}, + {"x":4.5, "y":4.5}, + {"x":6.25, "y":4.75}, + {"x":8.5, "y":4.75}, + {"x":10.25, "y":4.5}, + {"x":11.25, "y":4.25}, + {"x":12.25, "y":4.25} + ] + } + } +} diff --git a/keyboards/afternoonlabs/oceanbreeze/rev1/readme.md b/keyboards/afternoonlabs/oceanbreeze/rev1/readme.md new file mode 100644 index 0000000000..0b82913c4b --- /dev/null +++ b/keyboards/afternoonlabs/oceanbreeze/rev1/readme.md @@ -0,0 +1,15 @@ +# Breeze + +![Ocean Breeze Layout Image](https://i.imgur.com/cXGLDVQ.png) + +Special Edition of the [Breeze](https://afternoonlabs.com). This one has two 1Us instead of the larger 2U on the thumb cluster. + +* Keyboard Maintainer: [AfternoonLabs](https://github.com/afternoonlabs) +* Hardware Supported: Ocean Breeze Rev1 PCB +* Hardware Availability: [store.afternoonlab.com](https://store.afternoonlabs.com) + +Make example for this keyboard (after setting up your build environment): + + make afternoonlabs/oceanbreeze/rev1:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/afternoonlabs/oceanbreeze/rev1/rev1.c b/keyboards/afternoonlabs/oceanbreeze/rev1/rev1.c new file mode 100644 index 0000000000..35268ecf6f --- /dev/null +++ b/keyboards/afternoonlabs/oceanbreeze/rev1/rev1.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Afternoon Labs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "oceanbreeze.h" diff --git a/keyboards/afternoonlabs/oceanbreeze/rev1/rev1.h b/keyboards/afternoonlabs/oceanbreeze/rev1/rev1.h new file mode 100644 index 0000000000..36de22ec18 --- /dev/null +++ b/keyboards/afternoonlabs/oceanbreeze/rev1/rev1.h @@ -0,0 +1,44 @@ +/* Copyright 2021 Afternoon Labs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "oceanbreeze.h" + +#include "quantum.h" + +#define XXX KC_NO + +#define LAYOUT( \ + L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, MC0, MC1, MC2, \ + L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, MC3, MC4, MC5, \ + L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, AUP, \ + L30, L31, L32, L33, L34, L35, LT4, RT1, R30, R31, R32, R33, R34, R35, ALT, ADN, ART, \ + LT0, LT1, LT2, LT3, RT2, RT3, RT4, RT5 \ +) { \ + { L05, L04, L03, L02, L01, L00, XXX, XXX, XXX }, \ + { L15, L14, L13, L12, L11, L10, XXX, XXX, XXX }, \ + { L25, L24, L23, L22, L21, L20, XXX, XXX, XXX }, \ + { L35, L34, L33, L32, L31, L30, XXX, XXX, XXX }, \ + { LT3, LT2, LT1, LT0, XXX, XXX, XXX, XXX, XXX }, \ + { LT4, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \ + { R00, R01, R02, R03, R04, R05, MC0, MC1, MC2 }, \ + { R10, R11, R12, R13, R14, R15, MC3, MC4, MC5 }, \ + { R20, R21, R22, R23, R24, R25, XXX, AUP, XXX }, \ + { R30, R31, R32, R33, R34, R35, ALT, ADN, ART }, \ + { RT2, RT3, RT4, RT5, XXX, XXX, XXX, XXX, XXX }, \ + { RT1, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX } \ +} diff --git a/keyboards/afternoonlabs/oceanbreeze/rev1/rules.mk b/keyboards/afternoonlabs/oceanbreeze/rev1/rules.mk new file mode 100644 index 0000000000..96875e4ffe --- /dev/null +++ b/keyboards/afternoonlabs/oceanbreeze/rev1/rules.mk @@ -0,0 +1,23 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +SPLIT_KEYBOARD = yes From 03685309fd857c64ed16c231507017214e4805ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20A=2E=20Volpato?= Date: Sat, 10 Apr 2021 10:23:08 -0300 Subject: [PATCH 196/613] Reverse K0E and K0G (#12491) Co-authored-by: Gondolindrim --- keyboards/iron180/iron180.h | 2 +- keyboards/iron180/mcuconf.h | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/keyboards/iron180/iron180.h b/keyboards/iron180/iron180.h index 48f5f94db1..032d8afb58 100644 --- a/keyboards/iron180/iron180.h +++ b/keyboards/iron180/iron180.h @@ -22,7 +22,7 @@ along with this program. If not, see . #include "quantum.h" #define LAYOUT_all( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0G, K0F, K0E, \ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, K3G, \ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, \ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \ diff --git a/keyboards/iron180/mcuconf.h b/keyboards/iron180/mcuconf.h index 3792ceffe7..620b983c75 100644 --- a/keyboards/iron180/mcuconf.h +++ b/keyboards/iron180/mcuconf.h @@ -28,4 +28,3 @@ #undef STM32_PWM_USE_TIM3 #define STM32_PWM_USE_TIM3 YES - From 7d953332e0d7c0394c607156bf4099881bdf3f43 Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Sat, 10 Apr 2021 17:03:38 +0200 Subject: [PATCH 197/613] ChibiOS USB driver: prevent deadlock with CONSOLE_ENABLE = yes (#12472) Before this commit, attaching an ARM-based (i.e. ChibiOS-based) keyboard that uses CONSOLE_ENABLE = yes and produces debug messages would deadlock the keyboard unless one was running hid_listen. With this commit, dead-locking writes to the queue are detected and prevented. fixes #5631 --- tmk_core/protocol/chibios/usb_driver.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/tmk_core/protocol/chibios/usb_driver.c b/tmk_core/protocol/chibios/usb_driver.c index cc0ce7600f..eb72f8ff6d 100644 --- a/tmk_core/protocol/chibios/usb_driver.c +++ b/tmk_core/protocol/chibios/usb_driver.c @@ -80,7 +80,19 @@ static bool qmkusb_start_receive(QMKUSBDriver *qmkusbp) { * Interface implementation. */ -static size_t _write(void *ip, const uint8_t *bp, size_t n) { return obqWriteTimeout(&((QMKUSBDriver *)ip)->obqueue, bp, n, TIME_INFINITE); } +static size_t _write(void *ip, const uint8_t *bp, size_t n) { + output_buffers_queue_t *obqueue = &((QMKUSBDriver *)ip)->obqueue; + chSysLock(); + const bool full = obqIsFullI(obqueue); + chSysUnlock(); + if (full || bqIsSuspendedX(obqueue)) { + /* Discard any writes while the queue is suspended or full, i.e. the hidraw + interface is not open. If we tried to send with an infinite timeout, we + would deadlock the keyboard otherwise. */ + return -1; + } + return obqWriteTimeout(obqueue, bp, n, TIME_INFINITE); +} static size_t _read(void *ip, uint8_t *bp, size_t n) { return ibqReadTimeout(&((QMKUSBDriver *)ip)->ibqueue, bp, n, TIME_INFINITE); } From 7daa2e210cc7fc121259535d724962c9896c5f3a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 10 Apr 2021 17:34:26 +0100 Subject: [PATCH 198/613] Format code according to conventions (#12540) Co-authored-by: QMK Bot --- tmk_core/protocol/chibios/usb_driver.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/tmk_core/protocol/chibios/usb_driver.c b/tmk_core/protocol/chibios/usb_driver.c index eb72f8ff6d..40bfb8eb2b 100644 --- a/tmk_core/protocol/chibios/usb_driver.c +++ b/tmk_core/protocol/chibios/usb_driver.c @@ -81,17 +81,17 @@ static bool qmkusb_start_receive(QMKUSBDriver *qmkusbp) { */ static size_t _write(void *ip, const uint8_t *bp, size_t n) { - output_buffers_queue_t *obqueue = &((QMKUSBDriver *)ip)->obqueue; - chSysLock(); - const bool full = obqIsFullI(obqueue); - chSysUnlock(); - if (full || bqIsSuspendedX(obqueue)) { - /* Discard any writes while the queue is suspended or full, i.e. the hidraw - interface is not open. If we tried to send with an infinite timeout, we - would deadlock the keyboard otherwise. */ - return -1; - } - return obqWriteTimeout(obqueue, bp, n, TIME_INFINITE); + output_buffers_queue_t *obqueue = &((QMKUSBDriver *)ip)->obqueue; + chSysLock(); + const bool full = obqIsFullI(obqueue); + chSysUnlock(); + if (full || bqIsSuspendedX(obqueue)) { + /* Discard any writes while the queue is suspended or full, i.e. the hidraw + interface is not open. If we tried to send with an infinite timeout, we + would deadlock the keyboard otherwise. */ + return -1; + } + return obqWriteTimeout(obqueue, bp, n, TIME_INFINITE); } static size_t _read(void *ip, uint8_t *bp, size_t n) { return ibqReadTimeout(&((QMKUSBDriver *)ip)->ibqueue, bp, n, TIME_INFINITE); } From 98939868fae77ecb96674d07bd71dea78d726104 Mon Sep 17 00:00:00 2001 From: Hawley Waldman <321077+hjw@users.noreply.github.com> Date: Sun, 11 Apr 2021 06:45:30 -0400 Subject: [PATCH 199/613] Update github instruction link in newbs_getting_started.md (#12510) Clarify that the link to the github/forking instructions is a link to how to fork this project. Previous wording implied that the link was to a how-to-use github in general page. --- docs/newbs_getting_started.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/newbs_getting_started.md b/docs/newbs_getting_started.md index 7af9579dfb..ff8337f382 100644 --- a/docs/newbs_getting_started.md +++ b/docs/newbs_getting_started.md @@ -172,7 +172,7 @@ Once that completes, re-run `qmk setup` to complete the setup and checks. ?> The qmk home folder can be specified at setup with `qmk setup -H `, and modified afterwards using the [cli configuration](cli_configuration.md?id=single-key-example) and the variable `user.qmk_home`. For all available options run `qmk setup --help`. -?> If you already know [how to use GitHub](getting_started_github.md), we recommend that you create your own fork and use `qmk setup /qmk_firmware` to clone your personal fork. If you don't know what that means you can safely ignore this message. +?> If you already know how to use GitHub, [we recommend that you follow these instructions](getting_started_github.md) and use `qmk setup /qmk_firmware` to clone your personal fork. If you don't know what that means you can safely ignore this message. ## 4. Test Your Build Environment From 1298eab6ab5212871213898fabea593e339024c1 Mon Sep 17 00:00:00 2001 From: Joseph Whom Date: Sun, 11 Apr 2021 03:46:43 -0700 Subject: [PATCH 200/613] Update readme.md (#12502) Noticed a letter missing in "compiling". --- keyboards/planck/keymaps/readme.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/planck/keymaps/readme.md b/keyboards/planck/keymaps/readme.md index 54fb5f6d9e..1d67980a83 100644 --- a/keyboards/planck/keymaps/readme.md +++ b/keyboards/planck/keymaps/readme.md @@ -11,7 +11,7 @@ and contain the following files: * `keymap.c` * `readme.md` *recommended* * `config.h` *optional*, found automatically when compiling -* `Makefile` *optional*, found automatically when compling +* `Makefile` *optional*, found automatically when compiling When adding your keymap to this list, keep it organised alphabetically (select list, edit->sort lines), and use this format: @@ -20,4 +20,4 @@ When adding your keymap to this list, keep it organised alphabetically (select l # List of Planck keymaps * **default** default Planck layout -* **cbbrowne** cbbrowne's Planck layout \ No newline at end of file +* **cbbrowne** cbbrowne's Planck layout From b23eeb6a14831064578428306938d577be3b6a05 Mon Sep 17 00:00:00 2001 From: swampmonster Date: Sun, 11 Apr 2021 12:49:12 +0200 Subject: [PATCH 201/613] Documentation update (#12484) Update documentation to reflect what the actual target flags are Co-authored-by: swampmonster <> --- docs/getting_started_make_guide.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/getting_started_make_guide.md b/docs/getting_started_make_guide.md index 7198576e3a..02216875c8 100644 --- a/docs/getting_started_make_guide.md +++ b/docs/getting_started_make_guide.md @@ -22,8 +22,8 @@ The `` means the following The following targets are for developers: -* `show-path` shows the path of the source and object files. -* `dump-vars` dumps the makefile variable. +* `show_path` shows the path of the source and object files. +* `dump_vars` dumps the makefile variable. * `objs-size` displays the size of individual object files. * `show_build_options` shows the options set in 'rules.mk'. * `check-md5` displays the md5 checksum of the generated binary file. From 0f516d902622ad4edd6e5f46a1903101b4a6f5b0 Mon Sep 17 00:00:00 2001 From: Arthur Tabatchnic Date: Sun, 11 Apr 2021 13:50:45 +0300 Subject: [PATCH 202/613] A few small typo fixes in docs (#12524) --- docs/feature_audio.md | 6 +++--- docs/feature_backlight.md | 2 +- docs/newbs_flashing.md | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/feature_audio.md b/docs/feature_audio.md index 9e7ba75f52..2c440c951d 100644 --- a/docs/feature_audio.md +++ b/docs/feature_audio.md @@ -8,7 +8,7 @@ To activate this feature, add `AUDIO_ENABLE = yes` to your `rules.mk`. On Atmega32U4 based boards, up to two simultaneous tones can be rendered. With one speaker connected to a PWM capable pin on PORTC driven by timer 3 and the other on one of the PWM pins on PORTB driven by timer 1. -The following pins can be configured as audio outputs in `config.h` - for one speaker set eiter one out of: +The following pins can be configured as audio outputs in `config.h` - for one speaker set either one out of: * `#define AUDIO_PIN C4` * `#define AUDIO_PIN C5` @@ -166,7 +166,7 @@ The available keycodes for audio are: !> These keycodes turn all of the audio functionality on and off. Turning it off means that audio feedback, audio clicky, music mode, etc. are disabled, completely. ## Tempo -the 'speed' at which SONGs are played is dictated by the set Tempo, which is measured in beats-per-minute. Note lenghts are defined relative to that. +the 'speed' at which SONGs are played is dictated by the set Tempo, which is measured in beats-per-minute. Note lengths are defined relative to that. The initial/default tempo is set to 120 bpm, but can be configured by setting `TEMPO_DEFAULT` in `config.c`. There is also a set of functions to modify the tempo from within the user/keymap code: ```c @@ -291,7 +291,7 @@ You can configure the default, min and max frequencies, the stepping and built i |--------|---------------|-------------| | `AUDIO_CLICKY_FREQ_DEFAULT` | 440.0f | Sets the default/starting audio frequency for the clicky sounds. | | `AUDIO_CLICKY_FREQ_MIN` | 65.0f | Sets the lowest frequency (under 60f are a bit buggy). | -| `AUDIO_CLICKY_FREQ_MAX` | 1500.0f | Sets the the highest frequency. Too high may result in coworkers attacking you. | +| `AUDIO_CLICKY_FREQ_MAX` | 1500.0f | Sets the highest frequency. Too high may result in coworkers attacking you. | | `AUDIO_CLICKY_FREQ_FACTOR` | 1.18921f| Sets the stepping of UP/DOWN key codes. This is a multiplicative factor. The default steps the frequency up/down by a musical minor third. | | `AUDIO_CLICKY_FREQ_RANDOMNESS` | 0.05f | Sets a factor of randomness for the clicks, Setting this to `0f` will make each click identical, and `1.0f` will make this sound much like the 90's computer screen scrolling/typing effect. | | `AUDIO_CLICKY_DELAY_DURATION` | 1 | An integer note duration where 1 is 1/16th of the tempo, or a sixty-fourth note (see `quantum/audio/musical_notes.h` for implementation details). The main clicky effect will be delayed by this duration. Adjusting this to values around 6-12 will help compensate for loud switches. | diff --git a/docs/feature_backlight.md b/docs/feature_backlight.md index 2adb16e4a8..74511dd43f 100644 --- a/docs/feature_backlight.md +++ b/docs/feature_backlight.md @@ -171,7 +171,7 @@ BACKLIGHT_DRIVER = software #### Multiple Backlight Pins :id=multiple-backlight-pins -Most keyboards have only one backlight pin which control all backlight LEDs (especially if the backlight is connected to an hardware PWM pin). +Most keyboards have only one backlight pin which controls all backlight LEDs (especially if the backlight is connected to a hardware PWM pin). In software PWM, it is possible to define multiple backlight pins, which will be turned on and off at the same time during the PWM duty cycle. This feature allows to set, for instance, the Caps Lock LED's (or any other controllable LED) brightness at the same level as the other LEDs of the backlight. This is useful if you have mapped Control in place of Caps Lock and you need the Caps Lock LED to be part of the backlight instead of being activated when Caps Lock is on, as it is usually wired to a separate pin from the backlight. diff --git a/docs/newbs_flashing.md b/docs/newbs_flashing.md index 7ce1f84938..c17ff4c956 100644 --- a/docs/newbs_flashing.md +++ b/docs/newbs_flashing.md @@ -65,7 +65,7 @@ For example, the `planck/rev5` with a `default` keymap will have this filename: planck_rev5_default.hex ``` -Once you have located your firmware file drag it into the "Local file" box in QMK Toolbox, or click "Open" and navigate to where your firmware file is stored. +Once you have located your firmware file, drag it into the "Local file" box in QMK Toolbox, or click "Open" and navigate to where your firmware file is stored. ### Flash Your Keyboard From 50e0f5dc802c881eae0c213ee50c7bb8f0065cf0 Mon Sep 17 00:00:00 2001 From: jackytrabbit Date: Tue, 13 Apr 2021 01:55:57 +0800 Subject: [PATCH 203/613] Update layout option for lazydesigners/THE40 (#12312) --- keyboards/lazydesigners/the40/info.json | 66 +++++++++++-------- .../the40/keymaps/ortho/keymap.c | 41 ++++++++++++ keyboards/lazydesigners/the40/readme.md | 9 ++- keyboards/lazydesigners/the40/the40.h | 26 ++++---- 4 files changed, 98 insertions(+), 44 deletions(-) create mode 100644 keyboards/lazydesigners/the40/keymaps/ortho/keymap.c diff --git a/keyboards/lazydesigners/the40/info.json b/keyboards/lazydesigners/the40/info.json index a02a88a049..6e145bbb7c 100644 --- a/keyboards/lazydesigners/the40/info.json +++ b/keyboards/lazydesigners/the40/info.json @@ -51,7 +51,7 @@ {"label":"K310 (F5,D2)", "x":10.75, "y":3, "w":1.25} ] }, - "LAYOUT_hhkb": { + "LAYOUT_ortho": { "layout": [ {"label":"K000 (D0,F4)", "x":0, "y":0}, {"label":"K001 (D0,F6)", "x":1, "y":0}, @@ -65,34 +65,42 @@ {"label":"K009 (D0,D3)", "x":9, "y":0}, {"label":"K010 (D0,D2)", "x":10, "y":0}, {"label":"K011 (D0,B0)", "x":11, "y":0}, - {"label":"K100 (D1,F4)", "x":0, "y":1, "w":1.25}, - {"label":"K101 (D1,F6)", "x":1.25, "y":1}, - {"label":"K102 (D1,F7)", "x":2.25, "y":1}, - {"label":"K103 (D1,B5)", "x":3.25, "y":1}, - {"label":"K104 (D1,B4)", "x":4.25, "y":1}, - {"label":"K105 (D1,D7)", "x":5.25, "y":1}, - {"label":"K106 (D1,D6)", "x":6.25, "y":1}, - {"label":"K107 (D1,D4)", "x":7.25, "y":1}, - {"label":"K108 (D1,D5)", "x":8.25, "y":1}, - {"label":"K109 (D1,D3)", "x":9.25, "y":1}, - {"label":"K110 (D1,D2)", "x":10.25, "y":1, "w":1.75}, - {"label":"K200 (B6,F4)", "x":0, "y":2, "w":1.75}, - {"label":"K201 (B6,F6)", "x":1.75, "y":2}, - {"label":"K202 (B6,F7)", "x":2.75, "y":2}, - {"label":"K203 (B6,B5)", "x":3.75, "y":2}, - {"label":"K204 (B6,B4)", "x":4.75, "y":2}, - {"label":"K205 (B6,D7)", "x":5.75, "y":2}, - {"label":"K206 (B6,D6)", "x":6.75, "y":2}, - {"label":"K207 (B6,D4)", "x":7.75, "y":2}, - {"label":"K208 (B6,D5)", "x":8.75, "y":2}, - {"label":"K209 (B6,D3)", "x":9.75, "y":2}, - {"label":"K210 (B6,D2)", "x":10.75, "y":2, "w":1.25}, - {"label":"K301 (F5,F6)", "x":1.25, "y":3}, - {"label":"K302 (F5,F7)", "x":2.25, "y":3, "w":1.25}, - {"label":"K304 (F5,B4)", "x":3.5, "y":3, "w":2.25}, - {"label":"K306 (F5,D6)", "x":5.75, "y":3, "w":2.75}, - {"label":"K308 (F5,D5)", "x":8.5, "y":3, "w":1.25}, - {"label":"K309 (F5,D3)", "x":9.75, "y":3} + {"label":"K100 (D1,F4)", "x":0, "y":1}, + {"label":"K101 (D1,F6)", "x":1, "y":1}, + {"label":"K102 (D1,F7)", "x":2, "y":1}, + {"label":"K103 (D1,B5)", "x":3, "y":1}, + {"label":"K104 (D1,B4)", "x":4, "y":1}, + {"label":"K105 (D1,D7)", "x":5, "y":1}, + {"label":"K106 (D1,D6)", "x":6, "y":1}, + {"label":"K107 (D1,D4)", "x":7, "y":1}, + {"label":"K108 (D1,D5)", "x":8, "y":1}, + {"label":"K109 (D1,D3)", "x":9, "y":1}, + {"label":"K110 (D1,D2)", "x":10, "y":1}, + {"label":"K111 (D1,B0)", "x":11, "y":1}, + {"label":"K200 (B6,F4)", "x":0, "y":2}, + {"label":"K201 (B6,F6)", "x":1, "y":2}, + {"label":"K202 (B6,F7)", "x":2, "y":2}, + {"label":"K203 (B6,B5)", "x":3, "y":2}, + {"label":"K204 (B6,B4)", "x":4, "y":2}, + {"label":"K205 (B6,D7)", "x":5, "y":2}, + {"label":"K206 (B6,D6)", "x":6, "y":2}, + {"label":"K207 (B6,D4)", "x":7, "y":2}, + {"label":"K208 (B6,D5)", "x":8, "y":2}, + {"label":"K209 (B6,D3)", "x":9, "y":2}, + {"label":"K210 (B6,D2)", "x":10, "y":2}, + {"label":"K211 (B6,B0)", "x":11, "y":2}, + {"label":"K300 (F5,F4)", "x":0, "y":3}, + {"label":"K301 (F5,F6)", "x":1, "y":3}, + {"label":"K302 (F5,F7)", "x":2, "y":3}, + {"label":"K303 (F5,B5)", "x":3, "y":3}, + {"label":"K304 (F5,B4)", "x":4, "y":3}, + {"label":"K305 (F5,D7)", "x":5, "y":3}, + {"label":"K306 (F5,D6)", "x":6, "y":3}, + {"label":"K307 (F5,D4)", "x":7, "y":3}, + {"label":"K308 (F5,D5)", "x":8, "y":3}, + {"label":"K309 (F5,D3)", "x":9, "y":3}, + {"label":"K310 (F5,D2)", "x":10, "y":3}, + {"label":"K311 (F5,B0)", "x":11, "y":3} ] }, "LAYOUT_wkl": { diff --git a/keyboards/lazydesigners/the40/keymaps/ortho/keymap.c b/keyboards/lazydesigners/the40/keymaps/ortho/keymap.c new file mode 100644 index 0000000000..e81bdaa1c7 --- /dev/null +++ b/keyboards/lazydesigners/the40/keymaps/ortho/keymap.c @@ -0,0 +1,41 @@ +/* Copyright 2020 LAZYDESIGNERS + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +#define LT2_TAB LT(2, KC_TAB) +#define LT1_SPC LT(1, KC_SPC) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_ortho( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + LT2_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCOLON, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_QUOTE, MO(2), + KC_LCTL, KC_LGUI, KC_RALT, KC_LSFT, LT1_SPC, KC_SPC, KC_SPC, KC_SPC, KC_UP, KC_DOWN, KC_LEFT, KC_RGHT + ), + [1] = LAYOUT_ortho( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_NO, + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_NO, + KC_NO, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_VOLD, KC_MUTE, KC_VOLU, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO + ), + [2] = LAYOUT_ortho( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO + ), +}; diff --git a/keyboards/lazydesigners/the40/readme.md b/keyboards/lazydesigners/the40/readme.md index db31c288ab..e618967561 100644 --- a/keyboards/lazydesigners/the40/readme.md +++ b/keyboards/lazydesigners/the40/readme.md @@ -1,9 +1,14 @@ # THE40 -![the40](https://i.loli.net/2020/12/27/6u9UpyPJCWVEgwM.jpg) - A 40% keyboard designed and produced by [LAZYDESIGNERS](http://lazydesigners.cn). +Regular Layout +![the40](https://i.loli.net/2021/04/11/omspwSGi6Zrg7e2.jpg) +WKL Layout +![the40wkl](https://i.loli.net/2021/04/11/YxyKqT16LrRdJAE.jpg) +Ortho Layout +![the40ortho](https://i.loli.net/2021/04/11/w9GurZKsSAbHDtM.jpg) + * Keyboard Maintainer: [LAZYDESIGNERS](https://github.com/jackytrabbit) * Hardware Supported: THE40 * Hardware Availability: Check [LAZYDESIGNERS's homepage.](http://lazydesigners.cn) diff --git a/keyboards/lazydesigners/the40/the40.h b/keyboards/lazydesigners/the40/the40.h index 38da7bdfb1..91e7120605 100644 --- a/keyboards/lazydesigners/the40/the40.h +++ b/keyboards/lazydesigners/the40/the40.h @@ -32,28 +32,28 @@ { K300, K301, K302, KC_NO, K304, KC_NO, K306, KC_NO, K308, K309, K310, KC_NO }, \ } -#define LAYOUT_hhkb( \ - K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, \ - K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, \ - K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, \ - K301, K302, K304, K306, K308, K309 \ +#define LAYOUT_ortho( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311 \ ) \ { \ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011 }, \ - { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, KC_NO }, \ - { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, KC_NO }, \ - { KC_NO, K301, K302, KC_NO, K304, KC_NO, K306, KC_NO, K308, K309, KC_NO, KC_NO }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311 }, \ } #define LAYOUT_wkl( \ - K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, \ - K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, \ - K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, \ - K300, K302, K304, K306, K308, K310 \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, \ + K300, K302, K304, K306, K308, K310 \ ) \ { \ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011 }, \ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, KC_NO }, \ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, KC_NO }, \ - { K300, KC_NO, K302, KC_NO, K304, KC_NO, K306, KC_NO, K308, KC_NO, K310, KC_NO }, \ + { K300, K301, K302, KC_NO, K304, KC_NO, K306, KC_NO, K308, K309, K310, KC_NO }, \ } From 1a7a821582d3b848d50fddd6e942ed278bf36eff Mon Sep 17 00:00:00 2001 From: Kyle McCreery Date: Mon, 12 Apr 2021 08:40:38 -1000 Subject: [PATCH 204/613] Merc updates (#12289) --- keyboards/mechwild/mercutio/keymaps/bongocat/rules.mk | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/keyboards/mechwild/mercutio/keymaps/bongocat/rules.mk b/keyboards/mechwild/mercutio/keymaps/bongocat/rules.mk index 10a23be91a..a475e2b6cd 100644 --- a/keyboards/mechwild/mercutio/keymaps/bongocat/rules.mk +++ b/keyboards/mechwild/mercutio/keymaps/bongocat/rules.mk @@ -1,2 +1,3 @@ WPM_ENABLE = yes -VIA_ENABLE = yes \ No newline at end of file +VIA_ENABLE = yes +MOUSEKEY_ENABLE = no \ No newline at end of file From a2ac6f50aab4f16d1756eb6bb6041a9a6c34b322 Mon Sep 17 00:00:00 2001 From: Leon Anavi Date: Tue, 13 Apr 2021 12:52:13 +0300 Subject: [PATCH 205/613] [Keymap] ANAVI Macro Pad 2 add Google Meet keymap (#12449) This keymap for ANAVI Macro Pad 2 contains a couple of shortcuts for Google Meet: - left key: turn on/off the microphone (mute button) - right key: turn on/off the camera Signed-off-by: Leon Anavi --- .../macropad2/keymaps/google-meet/keymap.c | 37 +++++++++++++++++++ .../macropad2/keymaps/google-meet/rules.mk | 1 + 2 files changed, 38 insertions(+) create mode 100644 keyboards/anavi/macropad2/keymaps/google-meet/keymap.c create mode 100644 keyboards/anavi/macropad2/keymaps/google-meet/rules.mk diff --git a/keyboards/anavi/macropad2/keymaps/google-meet/keymap.c b/keyboards/anavi/macropad2/keymaps/google-meet/keymap.c new file mode 100644 index 0000000000..03bc388127 --- /dev/null +++ b/keyboards/anavi/macropad2/keymaps/google-meet/keymap.c @@ -0,0 +1,37 @@ +/* Copyright 2021 Leon Anavi + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +/* + * The keymap contains the following shortcuts for Google Meet: + * + * Ctrl+D: Mute/unmute my audio + * Ctrl+E: Start/stop video + */ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + LCTL(KC_D), LCTL(KC_E) + ) +}; + +const uint16_t PROGMEM test_combo[] = {LCTL(KC_D), LCTL(KC_E), COMBO_END}; +combo_t key_combos[COMBO_COUNT] = {COMBO_ACTION(test_combo)}; + +void process_combo_event(uint16_t combo_index, bool pressed) { + backlight_step(); +} diff --git a/keyboards/anavi/macropad2/keymaps/google-meet/rules.mk b/keyboards/anavi/macropad2/keymaps/google-meet/rules.mk new file mode 100644 index 0000000000..ab1e438182 --- /dev/null +++ b/keyboards/anavi/macropad2/keymaps/google-meet/rules.mk @@ -0,0 +1 @@ +COMBO_ENABLE = yes From b64dabdffda0ea6900beec550d2f42bc3b69ac7b Mon Sep 17 00:00:00 2001 From: James Young <18669334+noroadsleft@users.noreply.github.com> Date: Tue, 13 Apr 2021 18:31:51 -0700 Subject: [PATCH 206/613] Correct layout macro name in Cannonkeys Ortho75 info.json (#12581) --- keyboards/cannonkeys/ortho75/info.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/cannonkeys/ortho75/info.json b/keyboards/cannonkeys/ortho75/info.json index b6aaa8e7e8..a57f184218 100644 --- a/keyboards/cannonkeys/ortho75/info.json +++ b/keyboards/cannonkeys/ortho75/info.json @@ -5,7 +5,7 @@ "width": 15, "height": 5, "layouts": { - "LAYOUT_ortho_5x12": { + "LAYOUT_ortho_5x15": { "layout": [ {"label":"`", "x":0, "y":0}, {"label":"1", "x":1, "y":0}, From 9dea6f772077dc5c09daf40378e45884d29ab2e2 Mon Sep 17 00:00:00 2001 From: "J.Flanagan" Date: Tue, 13 Apr 2021 22:08:42 -0500 Subject: [PATCH 207/613] [Keyboard] Add Caffeinated Studios Serpent65 (#12578) --- keyboards/caffeinated/serpent65/chconf.h | 25 ++++ keyboards/caffeinated/serpent65/config.h | 109 ++++++++++++++++++ keyboards/caffeinated/serpent65/info.json | 13 +++ .../serpent65/keymaps/default/keymap.c | 48 ++++++++ .../serpent65/keymaps/default/readme.md | 1 + .../serpent65/keymaps/via/keymap.c | 64 ++++++++++ .../serpent65/keymaps/via/readme.md | 1 + .../serpent65/keymaps/via/rules.mk | 1 + keyboards/caffeinated/serpent65/readme.md | 23 ++++ keyboards/caffeinated/serpent65/rules.mk | 19 +++ keyboards/caffeinated/serpent65/serpent65.c | 16 +++ keyboards/caffeinated/serpent65/serpent65.h | 52 +++++++++ 12 files changed, 372 insertions(+) create mode 100644 keyboards/caffeinated/serpent65/chconf.h create mode 100644 keyboards/caffeinated/serpent65/config.h create mode 100644 keyboards/caffeinated/serpent65/info.json create mode 100644 keyboards/caffeinated/serpent65/keymaps/default/keymap.c create mode 100644 keyboards/caffeinated/serpent65/keymaps/default/readme.md create mode 100644 keyboards/caffeinated/serpent65/keymaps/via/keymap.c create mode 100644 keyboards/caffeinated/serpent65/keymaps/via/readme.md create mode 100644 keyboards/caffeinated/serpent65/keymaps/via/rules.mk create mode 100644 keyboards/caffeinated/serpent65/readme.md create mode 100644 keyboards/caffeinated/serpent65/rules.mk create mode 100644 keyboards/caffeinated/serpent65/serpent65.c create mode 100644 keyboards/caffeinated/serpent65/serpent65.h diff --git a/keyboards/caffeinated/serpent65/chconf.h b/keyboards/caffeinated/serpent65/chconf.h new file mode 100644 index 0000000000..cbbae31079 --- /dev/null +++ b/keyboards/caffeinated/serpent65/chconf.h @@ -0,0 +1,25 @@ +/* Copyright 2020 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define CH_CFG_ST_FREQUENCY 10000 + +#define CH_CFG_OPTIMIZE_SPEED FALSE + +#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE + +#include_next diff --git a/keyboards/caffeinated/serpent65/config.h b/keyboards/caffeinated/serpent65/config.h new file mode 100644 index 0000000000..f09a1c2b08 --- /dev/null +++ b/keyboards/caffeinated/serpent65/config.h @@ -0,0 +1,109 @@ +/* +Copyright 2021 jrfhoutx + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4353 // "CS" = Caffeinated Studios +#define PRODUCT_ID 0x6501 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Caffeinated Studios +#define PRODUCT Serpent65 + +/* key matrix size */ +#define MATRIX_ROWS 10 +#define MATRIX_COLS 8 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +#define MATRIX_ROW_PINS {B11, B10, B2, B1, B0, A7, A6, A5, B13, B12} +#define MATRIX_COL_PINS {A1, A2, A3, A4, B14, B15, A8, A9} +//{C13, C14, C15, A0,A2,A3,A4,A5,A6, A1,B12,B1} +/* Unused pins, in the default layout, are: +EncA (B6) because it is not used in the default PCB +All Extra pins (A8, B15, B14, B13, B3, B5, B8, B9) , for the same reason; +B0, which is unconnected on the PCB +*/ +//#define UNUSED_PINS { B0, B6, B13, B14, B15, B8, B9, B5, B3 } + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is userful for the Windows task manager shortcut (ctrl+shift+esc). + */ +// #define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION diff --git a/keyboards/caffeinated/serpent65/info.json b/keyboards/caffeinated/serpent65/info.json new file mode 100644 index 0000000000..83acc6b680 --- /dev/null +++ b/keyboards/caffeinated/serpent65/info.json @@ -0,0 +1,13 @@ +{ + "keyboard_name": "Serpent65", + "keyboard_folder": "caffeinated/serpent65", + "url": "https", + "maintainer": "jrfhoutx", + "width": 18.25, + "height": 5, + "layouts": { + "LAYOUT_all": { + "layout": [{"label":"F1", "x":0, "y":0}, {"label":"MO(1)", "x":1, "y":0}, {"label":"~", "x":2.25, "y":0}, {"label":"!", "x":3.25, "y":0}, {"label":"@", "x":4.25, "y":0}, {"label":"#", "x":5.25, "y":0}, {"label":"$", "x":6.25, "y":0}, {"label":"%", "x":7.25, "y":0}, {"label":"^", "x":8.25, "y":0}, {"label":"&", "x":9.25, "y":0}, {"label":"*", "x":10.25, "y":0}, {"label":"(", "x":11.25, "y":0}, {"label":")", "x":12.25, "y":0}, {"label":"_", "x":13.25, "y":0}, {"label":"+", "x":14.25, "y":0}, {"x":15.25, "y":0}, {"label":"Back", "x":16.25, "y":0}, {"label":"Insert", "x":17.25, "y":0}, {"label":"F3", "x":0, "y":1}, {"label":"F4", "x":1, "y":1}, {"label":"Tab", "x":2.25, "y":1, "w":1.5}, {"label":"Q", "x":3.75, "y":1}, {"label":"W", "x":4.75, "y":1}, {"label":"E", "x":5.75, "y":1}, {"label":"R", "x":6.75, "y":1}, {"label":"T", "x":7.75, "y":1}, {"label":"Y", "x":8.75, "y":1}, {"label":"U", "x":9.75, "y":1}, {"label":"I", "x":10.75, "y":1}, {"label":"O", "x":11.75, "y":1}, {"label":"P", "x":12.75, "y":1}, {"label":"{", "x":13.75, "y":1}, {"label":"}", "x":14.75, "y":1}, {"label":"|", "x":15.75, "y":1, "w":1.5}, {"label":"Delete", "x":17.25, "y":1}, {"label":"F5", "x":0, "y":2}, {"label":"F6", "x":1, "y":2}, {"label":"Caps Lock", "x":2.25, "y":2, "w":1.75}, {"label":"A", "x":4, "y":2}, {"label":"S", "x":5, "y":2}, {"label":"D", "x":6, "y":2}, {"label":"F", "x":7, "y":2}, {"label":"G", "x":8, "y":2}, {"label":"H", "x":9, "y":2}, {"label":"J", "x":10, "y":2}, {"label":"K", "x":11, "y":2}, {"label":"L", "x":12, "y":2}, {"label":":", "x":13, "y":2}, {"label":"\"", "x":14, "y":2}, {"x":15, "y":2}, {"label":"Enter", "x":16, "y":2, "w":1.25}, {"label":"PgUp", "x":17.25, "y":2}, {"label":"F7", "x":0, "y":3}, {"label":"F8", "x":1, "y":3}, {"label":"Shift", "x":2.25, "y":3, "w":1.25}, {"x":3.5, "y":3}, {"label":"Z", "x":4.5, "y":3}, {"label":"X", "x":5.5, "y":3}, {"label":"C", "x":6.5, "y":3}, {"label":"V", "x":7.5, "y":3}, {"label":"B", "x":8.5, "y":3}, {"label":"N", "x":9.5, "y":3}, {"label":"M", "x":10.5, "y":3}, {"label":"<", "x":11.5, "y":3}, {"label":">", "x":12.5, "y":3}, {"label":"?", "x":13.5, "y":3}, {"label":"Shift", "x":14.5, "y":3, "w":1.75}, {"label":"\u2191", "x":16.25, "y":3}, {"label":"PgDn", "x":17.25, "y":3}, {"label":"F9", "x":0, "y":4}, {"label":"F10", "x":1, "y":4}, {"label":"Ctrl", "x":2.25, "y":4, "w":1.25}, {"label":"Win", "x":3.5, "y":4, "w":1.25}, {"label":"Alt", "x":4.75, "y":4, "w":1.25}, {"x":6, "y":4, "w":6.25}, {"label":"Alt", "x":12.25, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.25}, {"label":"\u2190", "x":15.25, "y":4}, {"label":"\u2193", "x":16.25, "y":4}, {"label":"\u2192", "x":17.25, "y":4}] + } +} +} diff --git a/keyboards/caffeinated/serpent65/keymaps/default/keymap.c b/keyboards/caffeinated/serpent65/keymaps/default/keymap.c new file mode 100644 index 0000000000..cf0097f912 --- /dev/null +++ b/keyboards/caffeinated/serpent65/keymaps/default/keymap.c @@ -0,0 +1,48 @@ +/* Copyright 2021 jrfhoutx + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap BASE: (Base Layer) Default Layer + * .---------------------------------------------------------------------. + * |Esc | 1 | 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| ~ | \ | Ins | + * |---------------------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [ | ] | BkSpc | Del | + * |---------------------------------------------------------------------| + * |CAPS | A| S| D| F| G| H| J| K| L| ;| '| Return | PgUp| + * |---------------------------------------------------------------------| + * |Shift | Z| X| C| V| B| N| M| ,| .| /| Shift | Up | | + * |---------------------------------------------------------------------| + * | LCtrl | GUI | Alt | Space | Alt | MO(1) | L | Dn | R | + * `---------------------------------------------------------------------' + */ +[0] = LAYOUT_all( /* Serpent65 Base */ + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSLS, KC_INS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_TRNS, KC_ENT, KC_PGUP, + KC_LSFT, KC_TRNS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + +[1] = LAYOUT_all( /* Serpent65 Base */ + RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; diff --git a/keyboards/caffeinated/serpent65/keymaps/default/readme.md b/keyboards/caffeinated/serpent65/keymaps/default/readme.md new file mode 100644 index 0000000000..fd995e9e2a --- /dev/null +++ b/keyboards/caffeinated/serpent65/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for the Cafeinated Studios Serpent65 diff --git a/keyboards/caffeinated/serpent65/keymaps/via/keymap.c b/keyboards/caffeinated/serpent65/keymaps/via/keymap.c new file mode 100644 index 0000000000..d4f6d9e20b --- /dev/null +++ b/keyboards/caffeinated/serpent65/keymaps/via/keymap.c @@ -0,0 +1,64 @@ +/* Copyright 2021 jrfhoutx + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap BASE: (Base Layer) Default Layer + * .---------------------------------------------------------------------. + * |Esc | 1 | 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| ~ | \ | Ins | + * |---------------------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [ | ] | BkSpc | Del | + * |---------------------------------------------------------------------| + * |CAPS | A| S| D| F| G| H| J| K| L| ;| '| Return | PgUp| + * |---------------------------------------------------------------------| + * |Shift | Z| X| C| V| B| N| M| ,| .| /| Shift | Up | | + * |---------------------------------------------------------------------| + * | LCtrl | GUI | Alt | Space | Alt | MO(1) | L | Dn | R | + * `---------------------------------------------------------------------' + */ +[0] = LAYOUT_all( /* Serpent65 Base */ + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSLS, KC_INS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_TRNS, KC_ENT, KC_PGUP, + KC_LSFT, KC_TRNS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + +[1] = LAYOUT_all( /* Serpent65 Base */ + RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + +[2] = LAYOUT_all( /* Serpent65 Base */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + +[3] = LAYOUT_all( /* Serpent65 Base */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; diff --git a/keyboards/caffeinated/serpent65/keymaps/via/readme.md b/keyboards/caffeinated/serpent65/keymaps/via/readme.md new file mode 100644 index 0000000000..156593344f --- /dev/null +++ b/keyboards/caffeinated/serpent65/keymaps/via/readme.md @@ -0,0 +1 @@ +# The VIA keymap for the Cafeinated Studios Serpent65 diff --git a/keyboards/caffeinated/serpent65/keymaps/via/rules.mk b/keyboards/caffeinated/serpent65/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/caffeinated/serpent65/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/caffeinated/serpent65/readme.md b/keyboards/caffeinated/serpent65/readme.md new file mode 100644 index 0000000000..58a90ec02c --- /dev/null +++ b/keyboards/caffeinated/serpent65/readme.md @@ -0,0 +1,23 @@ +# Caffeinated Studios' Serpent65 + +![Serpent65](https://i.imgur.com/rAsZsXk.png) + +The Serpent65 is a 65% created by Caffeinated Studios. The board supports ANSI and ISO modifiers as well as split backspace and stepped/non-stepped caps lock. + +The PCB is an ARM powered board utilizing the STM32F072CBT6 mcu, designed by BlindAssassin111. The PCB is designed to work with the universal daughterboard and a 4in (~100mm) 4 pin JST SR cable with reversed pinout (pin 1 of both connectors is the same wire etc.). + +On the PCB is a single button for a reset for flashing. As well, there is a [Segger J-Link 6-pin Needle Adapter](https://www.segger.com/products/debug-probes/j-link/accessories/adapters/6-pin-needle-adapter/) footprint for reflashing the mcu as a backup in case of a bootloader issue. + +* Keyboard Maintainer: [jrfhoutx](https://github.com/jrfhoutx) +* Hardware Supported: Serpent65 +* Hardware Availability: Coming Soon + +Make example for this keyboard (after setting up your build environment): + + make caffeinated/serpent65:default + +Flashing example for this keyboard: + + make caffeinated/serpent65:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/caffeinated/serpent65/rules.mk b/keyboards/caffeinated/serpent65/rules.mk new file mode 100644 index 0000000000..ce2a3f75e5 --- /dev/null +++ b/keyboards/caffeinated/serpent65/rules.mk @@ -0,0 +1,19 @@ +# MCU name +MCU = STM32F072 + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/caffeinated/serpent65/serpent65.c b/keyboards/caffeinated/serpent65/serpent65.c new file mode 100644 index 0000000000..ad812ee44c --- /dev/null +++ b/keyboards/caffeinated/serpent65/serpent65.c @@ -0,0 +1,16 @@ +/* Copyright 2021 jrfhoutx + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "serpent65.h" diff --git a/keyboards/caffeinated/serpent65/serpent65.h b/keyboards/caffeinated/serpent65/serpent65.h new file mode 100644 index 0000000000..a218e32798 --- /dev/null +++ b/keyboards/caffeinated/serpent65/serpent65.h @@ -0,0 +1,52 @@ +/* Copyright 2021 jrfhoutx + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" +#define ___ KC_NO + +/* This a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + * + * + * Use LAYOUT_all for ISO and Tsangan builds + * + */ + +#define LAYOUT_all( \ + K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K16, K07, K17, \ + K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K27, K37, \ + K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K46, K47, K57, \ + K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K66, K67, \ + K80, K90, K81, K83, K85, K95, K96, K87, K97 \ +) \ +{ \ + { K00, K01, K02, K03, K04, K05, K06, K07, }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, }, \ + { K30, K31, K32, K33, K34, K35, ___, K37, }, \ + { K40, K41, K42, K43, K44, K45, K46, K47, }, \ + { K50, K51, K52, K53, K54, K55, ___, K57, }, \ + { K60, K61, K62, K63, K64, K65, K66, K67, }, \ + { K70, K71, K72, K73, K74, K75, ___, ___, }, \ + { K80, K81, ___, K83, ___, K85, ___, K87, }, \ + { K90, ___, ___, ___, ___, K95, K96, K97 } \ +} From bcceb701cdfd91ed098407e1d6b7bcd261447621 Mon Sep 17 00:00:00 2001 From: Marius Kavoliunas Date: Wed, 14 Apr 2021 23:38:27 +0300 Subject: [PATCH 208/613] [Keyboard] CyberGear Macro25 (#12518) * add cybergear macro25 keyboard * add readme and fix file namings * rename readme.md * separate default and via keymaps * add info.json * unify info.json and key coordinates * remove via json * add missing via layers * Update keyboards/cybergear/macro25/keymaps/via/rules.mk * Update keyboards/cybergear/macro25/macro25.c * Update keyboards/cybergear/macro25/macro25.h * Update keyboards/cybergear/macro25/readme.md * Update keyboards/cybergear/macro25/readme.md * Update keyboards/cybergear/macro25/readme.md * Update keyboards/cybergear/macro25/readme.md * remove unnecessary config.h parameters * Update keyboards/cybergear/macro25/config.h * remove MATRIX_ROWS and COLS from config.h * Apply suggestions from code review set to LAYOUT_ortho_2x5 and fix grammar --- keyboards/cybergear/macro25/LICENSE | 339 ++++++++++++++++++ keyboards/cybergear/macro25/config.h | 23 ++ keyboards/cybergear/macro25/info.json | 25 ++ .../macro25/keymaps/default/keymap.c | 27 ++ .../cybergear/macro25/keymaps/via/keymap.c | 39 ++ .../cybergear/macro25/keymaps/via/rules.mk | 1 + keyboards/cybergear/macro25/macro25.c | 17 + keyboards/cybergear/macro25/macro25.h | 27 ++ keyboards/cybergear/macro25/readme.md | 15 + keyboards/cybergear/macro25/rules.mk | 22 ++ 10 files changed, 535 insertions(+) create mode 100644 keyboards/cybergear/macro25/LICENSE create mode 100644 keyboards/cybergear/macro25/config.h create mode 100644 keyboards/cybergear/macro25/info.json create mode 100644 keyboards/cybergear/macro25/keymaps/default/keymap.c create mode 100644 keyboards/cybergear/macro25/keymaps/via/keymap.c create mode 100644 keyboards/cybergear/macro25/keymaps/via/rules.mk create mode 100644 keyboards/cybergear/macro25/macro25.c create mode 100644 keyboards/cybergear/macro25/macro25.h create mode 100644 keyboards/cybergear/macro25/readme.md create mode 100644 keyboards/cybergear/macro25/rules.mk diff --git a/keyboards/cybergear/macro25/LICENSE b/keyboards/cybergear/macro25/LICENSE new file mode 100644 index 0000000000..d159169d10 --- /dev/null +++ b/keyboards/cybergear/macro25/LICENSE @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/keyboards/cybergear/macro25/config.h b/keyboards/cybergear/macro25/config.h new file mode 100644 index 0000000000..982559ef37 --- /dev/null +++ b/keyboards/cybergear/macro25/config.h @@ -0,0 +1,23 @@ +/* Copyright 2021 CyberGear Marius Kavoliunas + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define MANUFACTURER CyberGear +#define PRODUCT Macro25 (mk-macro-01) diff --git a/keyboards/cybergear/macro25/info.json b/keyboards/cybergear/macro25/info.json new file mode 100644 index 0000000000..4117d12bb5 --- /dev/null +++ b/keyboards/cybergear/macro25/info.json @@ -0,0 +1,25 @@ +{ + "keyboard_name": "Macro225 (mk-macro-01)", + "url": "https://github.com/CyberGear/mk-macro-01", + "maintainer": "CyberGear", + "usb": { + "vid": "0x1209", + "pid": "0x69A1", + "device_ver": "0x0001" + }, + "width": 5, + "height": 2, + "diode_direction": "COL2ROW", + "layouts": { + "LAYOUT_ortho_2x5": { + "layout": [ + {"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, + {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1} + ] + } + }, + "matrix_pins": { + "rows": ["E6", "B4"], + "cols": ["B1", "F7", "F6", "F5", "F4"] + } +} diff --git a/keyboards/cybergear/macro25/keymaps/default/keymap.c b/keyboards/cybergear/macro25/keymaps/default/keymap.c new file mode 100644 index 0000000000..79a7e65adc --- /dev/null +++ b/keyboards/cybergear/macro25/keymaps/default/keymap.c @@ -0,0 +1,27 @@ +/* Copyright 2021 CyberGear Marius Kavoliunas + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + + +#define MAC(kc) (QK_RCTL | QK_RGUI | QK_RALT | (kc)) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_ortho_2x5( + MAC(KC_KP_0), MAC(KC_KP_1), MAC(KC_KP_2), MAC(KC_KP_3), MAC(KC_KP_4), + MAC(KC_KP_5), MAC(KC_KP_6), MAC(KC_KP_7), MAC(KC_KP_8), MAC(KC_KP_9) + ) +}; diff --git a/keyboards/cybergear/macro25/keymaps/via/keymap.c b/keyboards/cybergear/macro25/keymaps/via/keymap.c new file mode 100644 index 0000000000..c4db95797e --- /dev/null +++ b/keyboards/cybergear/macro25/keymaps/via/keymap.c @@ -0,0 +1,39 @@ +/* Copyright 2021 CyberGear Marius Kavoliunas + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + + +#define MAC(kc) (QK_RCTL | QK_RGUI | QK_RALT | (kc)) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_ortho_2x5( + MAC(KC_KP_0), MAC(KC_KP_1), MAC(KC_KP_2), MAC(KC_KP_3), MAC(KC_KP_4), + MAC(KC_KP_5), MAC(KC_KP_6), MAC(KC_KP_7), MAC(KC_KP_8), MAC(KC_KP_9) + ), + [1] = LAYOUT_ortho_2x5( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_ortho_2x5( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_ortho_2x5( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/cybergear/macro25/keymaps/via/rules.mk b/keyboards/cybergear/macro25/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/cybergear/macro25/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/cybergear/macro25/macro25.c b/keyboards/cybergear/macro25/macro25.c new file mode 100644 index 0000000000..662c5c1fe3 --- /dev/null +++ b/keyboards/cybergear/macro25/macro25.c @@ -0,0 +1,17 @@ +/* Copyright 2021 CyberGear Marius Kavoliunas + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "macro25.h" diff --git a/keyboards/cybergear/macro25/macro25.h b/keyboards/cybergear/macro25/macro25.h new file mode 100644 index 0000000000..22b814a97b --- /dev/null +++ b/keyboards/cybergear/macro25/macro25.h @@ -0,0 +1,27 @@ +/* Copyright 2021 CyberGear Marius Kavoliunas + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT_ortho_2x5( \ + K00, K01, K02, K03, K04, \ + K05, K06, K07, K08, K09 \ +) { \ + { K00, K01, K02, K03, K04 }, \ + { K05, K06, K07, K08, K09 }, \ +} diff --git a/keyboards/cybergear/macro25/readme.md b/keyboards/cybergear/macro25/readme.md new file mode 100644 index 0000000000..9875e83173 --- /dev/null +++ b/keyboards/cybergear/macro25/readme.md @@ -0,0 +1,15 @@ +# CyberGear Macro25 + +![](https://i.imgur.com/Jk2xGMvh.jpg) + +Macro keyboard made using Arduino Pro Micro, with VIA support. + +* Keyboard Maintainer: [CyberGear](https://github.com/CyberGear) +* Hardware Supported: Arduino Pro Micro +* Hardware Availability: [GitHub](https://github.com/CyberGear/mk-macro-01) + +Make example for this keyboard (after setting up your build environment): + + make cybergear/macro25:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/cybergear/macro25/rules.mk b/keyboards/cybergear/macro25/rules.mk new file mode 100644 index 0000000000..e4ffb10d04 --- /dev/null +++ b/keyboards/cybergear/macro25/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output From b33e6793de6c5f5124ee88fb3eb62d8f54f74940 Mon Sep 17 00:00:00 2001 From: Jan Christoph Ebersbach Date: Wed, 14 Apr 2021 23:51:08 +0200 Subject: [PATCH 209/613] Dactyl manuform 5x6 2 5 keymap (#11353) * feat(keymap): add DactylManuform w/ 2 extra keys and 5 thumb keys * fix(keymap): add missing readme * chore: add gpl2 license header * chore: add gpl2 license header * docs[dactyl_manuform_5x6_2_5]: reformat readme Co-authored-by: Ryan Co-authored-by: Ryan --- .../dactyl_manuform/5x6_2_5/5x6_2_5.c | 17 + .../dactyl_manuform/5x6_2_5/5x6_2_5.h | 43 ++ .../dactyl_manuform/5x6_2_5/config.h | 61 ++ .../dactyl_manuform/5x6_2_5/info.json | 86 +++ .../5x6_2_5/keymaps/default/config.h | 24 + .../5x6_2_5/keymaps/default/keymap.json | 525 ++++++++++++++++++ .../dactyl_manuform/5x6_2_5/readme.md | 13 + .../dactyl_manuform/5x6_2_5/rules.mk | 14 + .../dactyl_manuform/dactyl_manuform.h | 2 + 9 files changed, 785 insertions(+) create mode 100644 keyboards/handwired/dactyl_manuform/5x6_2_5/5x6_2_5.c create mode 100644 keyboards/handwired/dactyl_manuform/5x6_2_5/5x6_2_5.h create mode 100644 keyboards/handwired/dactyl_manuform/5x6_2_5/config.h create mode 100644 keyboards/handwired/dactyl_manuform/5x6_2_5/info.json create mode 100644 keyboards/handwired/dactyl_manuform/5x6_2_5/keymaps/default/config.h create mode 100644 keyboards/handwired/dactyl_manuform/5x6_2_5/keymaps/default/keymap.json create mode 100644 keyboards/handwired/dactyl_manuform/5x6_2_5/readme.md create mode 100644 keyboards/handwired/dactyl_manuform/5x6_2_5/rules.mk diff --git a/keyboards/handwired/dactyl_manuform/5x6_2_5/5x6_2_5.c b/keyboards/handwired/dactyl_manuform/5x6_2_5/5x6_2_5.c new file mode 100644 index 0000000000..0d1ffd84df --- /dev/null +++ b/keyboards/handwired/dactyl_manuform/5x6_2_5/5x6_2_5.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Jan Christoph Ebersbach + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "5x6_2_5.h" diff --git a/keyboards/handwired/dactyl_manuform/5x6_2_5/5x6_2_5.h b/keyboards/handwired/dactyl_manuform/5x6_2_5/5x6_2_5.h new file mode 100644 index 0000000000..c41037ce6b --- /dev/null +++ b/keyboards/handwired/dactyl_manuform/5x6_2_5/5x6_2_5.h @@ -0,0 +1,43 @@ +/* Copyright 2021 Jan Christoph Ebersbach + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "dactyl_manuform.h" + +#define LAYOUT_5x6_2_5(\ + L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \ + L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ + L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \ + L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, \ + L40, L41, L42, L43, L44, L55, L53, R52, R50, R41, R42, R43, R44, R45, \ + L54, L52, R53, R51 \ + ) \ + { \ + { L00, L01, L02, L03, L04, L05 }, \ + { L10, L11, L12, L13, L14, L15 }, \ + { L20, L21, L22, L23, L24, L25 }, \ + { L30, L31, L32, L33, L34, L35 }, \ + { L40, L41, L42, L43, L44, KC_NO }, \ + { KC_NO, KC_NO, L52, L53, L54, L55 }, \ + \ + { R00, R01, R02, R03, R04, R05 }, \ + { R10, R11, R12, R13, R14, R15 }, \ + { R20, R21, R22, R23, R24, R25 }, \ + { R30, R31, R32, R33, R34, R35 }, \ + { KC_NO, R41, R42, R43, R44, R45 }, \ + { R50, R51, R52, R53, KC_NO, KC_NO } \ +} diff --git a/keyboards/handwired/dactyl_manuform/5x6_2_5/config.h b/keyboards/handwired/dactyl_manuform/5x6_2_5/config.h new file mode 100644 index 0000000000..029f1723b5 --- /dev/null +++ b/keyboards/handwired/dactyl_manuform/5x6_2_5/config.h @@ -0,0 +1,61 @@ +/* +Copyright 2020 Jan Christoph Ebersbach + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +#define PRODUCT_ID 0x3536 +#define DEVICE_VER 0x0003 +#define PRODUCT Dactyl-Manuform (5x6+2) +// #define PRODUCT Dactyl-Manuform (5x6+2) BLE + +/* key matrix size */ +#define MATRIX_ROWS 12 +#define MATRIX_COLS 6 + +// wiring of each half +// ../../../../docs/proton_c_conversion.md + +// left half pro-mirco +#define MATRIX_COL_PINS { D4, C6, D7, E6, B4, B5 } +#define MATRIX_ROW_PINS { F6, F7, B1, B3, B2, B6 } + +// // right half adafruit feather +// #define MATRIX_COL_PINS { F1, F0, B1, B2, B3, D2 } +// #define MATRIX_ROW_PINS { D6, B7, B6, B5, D7, C6 } +// #define AdafruitBleResetPin D4 +// #define AdafruitBleCSPin B4 +// #define AdafruitBleIRQPin E6 + +#define DIODE_DIRECTION COL2ROW + +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 0 + +#define BOOTMAGIC_LITE_ROW_RIGHT 6 +#define BOOTMAGIC_LITE_COLUMN_RIGHT 5 + +// WS2812 RGB LED strip input and number of LEDs +// #define RGB_DI_PIN D3 +// #define RGBLED_NUM 12 + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ +// #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/handwired/dactyl_manuform/5x6_2_5/info.json b/keyboards/handwired/dactyl_manuform/5x6_2_5/info.json new file mode 100644 index 0000000000..ad227d5f5d --- /dev/null +++ b/keyboards/handwired/dactyl_manuform/5x6_2_5/info.json @@ -0,0 +1,86 @@ +{ + "keyboard_name": "Dactyl Manuform 5x6 2 extra keys and 5 thumb keys", + "url": "", + "maintainer": "jceb", + "width": 17, + "height": 6, + "layouts": { + "LAYOUT_5x6_2_5": { + "layout": [ + {"label":"L00", "x":0, "y":0}, + {"label":"L01", "x":1, "y":0}, + {"label":"L02", "x":2, "y":0}, + {"label":"L03", "x":3, "y":0}, + {"label":"L04", "x":4, "y":0}, + {"label":"L05", "x":5, "y":0}, + {"label":"R00", "x":11, "y":0}, + {"label":"R01", "x":12, "y":0}, + {"label":"R02", "x":13, "y":0}, + {"label":"R03", "x":14, "y":0}, + {"label":"R04", "x":15, "y":0}, + {"label":"R05", "x":16, "y":0}, + + {"label":"L10", "x":0, "y":1}, + {"label":"L11", "x":1, "y":1}, + {"label":"L12", "x":2, "y":1}, + {"label":"L13", "x":3, "y":1}, + {"label":"L14", "x":4, "y":1}, + {"label":"L15", "x":5, "y":1}, + {"label":"R10", "x":11, "y":1}, + {"label":"R11", "x":12, "y":1}, + {"label":"R12", "x":13, "y":1}, + {"label":"R13", "x":14, "y":1}, + {"label":"R14", "x":15, "y":1}, + {"label":"R15", "x":16, "y":1}, + + {"label":"L20", "x":0, "y":2}, + {"label":"L21", "x":1, "y":2}, + {"label":"L22", "x":2, "y":2}, + {"label":"L23", "x":3, "y":2}, + {"label":"L24", "x":4, "y":2}, + {"label":"L25", "x":5, "y":2}, + {"label":"R20", "x":11, "y":2}, + {"label":"R21", "x":12, "y":2}, + {"label":"R22", "x":13, "y":2}, + {"label":"R23", "x":14, "y":2}, + {"label":"R24", "x":15, "y":2}, + {"label":"R25", "x":16, "y":2}, + + {"label":"L30", "x":0, "y":3}, + {"label":"L31", "x":1, "y":3}, + {"label":"L32", "x":2, "y":3}, + {"label":"L33", "x":3, "y":3}, + {"label":"L34", "x":4, "y":3}, + {"label":"L35", "x":5, "y":3}, + {"label":"R30", "x":11, "y":3}, + {"label":"R31", "x":12, "y":3}, + {"label":"R32", "x":13, "y":3}, + {"label":"R33", "x":14, "y":3}, + {"label":"R34", "x":15, "y":3}, + {"label":"R35", "x":16, "y":3}, + + {"label":"L40", "x":0, "y":4}, + {"label":"L41", "x":1, "y":4}, + {"label":"L42", "x":2, "y":4}, + {"label":"L43", "x":3, "y":4}, + {"label":"L44", "x":5, "y":4}, + {"label":"L45", "x":6, "y":4}, + {"label":"L53", "x":7, "y":4}, + + {"label":"R52", "x":9, "y":4}, + {"label":"R40", "x":10, "y":4}, + {"label":"R41", "x":11, "y":4}, + {"label":"R42", "x":13, "y":4}, + {"label":"R43", "x":14, "y":4}, + {"label":"R44", "x":15, "y":4}, + {"label":"R45", "x":16, "y":4}, + + {"label":"L54", "x":6, "y":5}, + {"label":"L52", "x":7, "y":5}, + + {"label":"R53", "x":9, "y":5}, + {"label":"R51", "x":10, "y":5} + ] + } + } +} diff --git a/keyboards/handwired/dactyl_manuform/5x6_2_5/keymaps/default/config.h b/keyboards/handwired/dactyl_manuform/5x6_2_5/keymaps/default/config.h new file mode 100644 index 0000000000..c4fb3742d9 --- /dev/null +++ b/keyboards/handwired/dactyl_manuform/5x6_2_5/keymaps/default/config.h @@ -0,0 +1,24 @@ +/* +Copyright 2012 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#define USE_SERIAL + +#define EE_HANDS + +#define KINETIC_SPEED diff --git a/keyboards/handwired/dactyl_manuform/5x6_2_5/keymaps/default/keymap.json b/keyboards/handwired/dactyl_manuform/5x6_2_5/keymaps/default/keymap.json new file mode 100644 index 0000000000..f8628a403d --- /dev/null +++ b/keyboards/handwired/dactyl_manuform/5x6_2_5/keymaps/default/keymap.json @@ -0,0 +1,525 @@ +{ + "version": 1, + "notes": "", + "author": "Jan Christoph Ebersbach", + "keyboard": "handwired/dactyl_manuform/5x6_2_5", + "keymap": "jceb", + "layout": "LAYOUT_5x6_2_5", + "layers": [ + [ + "KC_GRV", + "KC_1", + "KC_2", + "KC_3", + "KC_4", + "KC_5", + "KC_6", + "KC_7", + "KC_8", + "KC_9", + "KC_0", + "KC_MINS", + + "KC_TAB", + "KC_Q", + "KC_W", + "KC_E", + "KC_R", + "KC_T", + "KC_Y", + "KC_U", + "KC_I", + "KC_O", + "KC_P", + "KC_LBRC", + + "LCTL_T(KC_ESC)", + "KC_A", + "KC_S", + "KC_D", + "KC_F", + "KC_G", + "KC_H", + "KC_J", + "KC_K", + "KC_L", + "KC_SCLN", + "KC_QUOT", + + "KC_LSPO", + "KC_Z", + "KC_X", + "KC_C", + "KC_V", + "KC_B", + "KC_N", + "KC_M", + "KC_COMM", + "KC_DOT", + "KC_SLSH", + "KC_RSPC", + + "KC_LCTL", + "KC_LALT", + "KC_LGUI", + "KC_LALT", + "TT(2)", + + "LT(6,KC_SPC)", + "LT(4,KC_DEL)", + "LT(4,KC_ENT)", + "KC_SPC", + + "LT(2,KC_BSPC)", + "LALT_T(KC_RALT)", + "KC_RGUI", + "KC_RALT", + "KC_RCTL", + + "LCTL_T(KC_LBRC)", + "KC_LSPO", + "KC_RSPC", + "RCTL_T(KC_RBRC)" + ], + [ + "KC_GRV", + "KC_1", + "KC_2", + "KC_3", + "KC_4", + "KC_5", + "KC_6", + "KC_7", + "KC_8", + "KC_9", + "KC_0", + "KC_MINS", + + "KC_TAB", + "KC_Q", + "KC_W", + "KC_F", + "KC_P", + "KC_G", + "KC_J", + "KC_L", + "KC_U", + "KC_Y", + "KC_SCLN", + "KC_LBRC", + + "LCTL_T(KC_ESC)", + "KC_A", + "KC_R", + "KC_S", + "KC_T", + "KC_D", + "KC_H", + "KC_N", + "KC_E", + "KC_I", + "KC_O", + "KC_QUOT", + + "KC_LSPO", + "KC_Z", + "KC_X", + "KC_C", + "KC_V", + "KC_B", + "KC_K", + "KC_M", + "KC_COMM", + "KC_DOT", + "KC_SLSH", + "KC_RSPC", + + "KC_LCTL", + "KC_LALT", + "KC_LGUI", + "KC_LALT", + "TT(2)", + "LT(6,KC_SPC)", + "LT(4,KC_DEL)", + + "LT(4,KC_ENT)", + "KC_SPC", + "LT(2,KC_BSPC)", + "LALT_T(KC_RALT)", + "KC_RGUI", + + "KC_RALT", + "KC_RCTL", + "LCTL_T(KC_LBRC)", + "KC_LSPO", + "KC_RSPC", + "RCTL_T(KC_RBRC)" + ], + [ + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_7", + "KC_7", + "KC_8", + "KC_9", + "KC_TRNS", + "KC_RBRC", + + "KC_TRNS", + "DF(0)", + "DF(1)", + "KC_NO", + "MO(3)", + "MO(3)", + "KC_4", + "KC_4", + "KC_5", + "KC_6", + "KC_MINS", + "KC_EQL", + + "KC_TRNS", + "MO(5)", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_1", + "KC_1", + "KC_2", + "KC_3", + "KC_BSLS", + "KC_TRNS", + + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_SPC", + "KC_DEL", + + "KC_ENT", + "KC_0", + "KC_BSPC", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + + "TG(2)", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS" + ], + [ + "KC_TRNS", + "KC_F1", + "KC_F2", + "KC_F3", + "KC_F4", + "KC_F5", + "KC_F6", + "KC_F7", + "KC_F8", + "KC_F9", + "KC_F10", + "KC_F11", + + "KC_TRNS", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_F7", + "KC_F7", + "KC_F8", + "KC_F9", + "KC_F10", + "KC_NO", + + "KC_TRNS", + "KC_NO", + "KC_NO", + "KC_NO", + "MO(3)", + "MO(3)", + "KC_F4", + "KC_F4", + "KC_F5", + "KC_F6", + "KC_F11", + "KC_NO", + + "KC_TRNS", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_F1", + "KC_F1", + "KC_F2", + "KC_F3", + "KC_F12", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_SPC", + "KC_DEL", + + "KC_ENT", + "KC_SPC", + "KC_BSPC", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "TG(3)", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS" + ], + [ + "KC_ESC", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_ESC", + "KC_NO", + "LCTL(KC_W)", + "LCTL(KC_T)", + "LCTL(KC_PGDN)", + "LCTL(KC_PGDN)", + "KC_PGDN", + "KC_HOME", + "KC_UP", + "KC_INS", + "LSFT(KC_INS)", + "KC_ESC", + + "KC_TRNS", + "KC_CAPS", + "LGUI(KC_LEFT)", + "LGUI(KC_TAB)", + "LGUI(KC_RGHT)", + "LGUI(KC_RGHT)", + "KC_LEFT", + "KC_LEFT", + "KC_DOWN", + "KC_RGHT", + "KC_END", + "KC_PSCR", + + "KC_TRNS", + "KC_NO", + "KC_NO", + "KC_NO", + "LCTL(KC_PGUP)", + "LCTL(KC_PGUP)", + "KC_PGUP", + "KC_TRNS", + "KC_DOWN", + "KC_NO", + "KC_APP", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_SPC", + "KC_DEL", + + "KC_ENT", + "KC_SPC", + "KC_BSPC", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "TG(4)", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS" + ], + [ + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + + "KC_TRNS", + "KC_NO", + "KC_MPLY", + "KC_VOLU", + "KC_VOLU", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "RESET", + "KC_PWR", + + "KC_TRNS", + "KC_NO", + "KC_MPRV", + "KC_MUTE", + "KC_MNXT", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_SLEP", + + "KC_TRNS", + "MO(5)", + "KC_NO", + "KC_VOLD", + "KC_VOLD", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + + "KC_NO", + "KC_NO", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_SPC", + + "KC_DEL", + "KC_ENT", + "KC_SPC", + "KC_BSPC", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + + "TG(5)", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS" + ], + [ + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + + "KC_TRNS", + "KC_ACL1", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_WH_U", + "KC_WH_L", + "KC_MS_U", + "KC_WH_R", + "KC_NO", + "KC_NO", + + "KC_TRNS", + "KC_ACL2", + "KC_BTN2", + "KC_BTN3", + "KC_BTN1", + "KC_BTN1", + "KC_MS_L", + "KC_MS_L", + "KC_MS_D", + "KC_MS_R", + "KC_NO", + "KC_NO", + + "KC_TRNS", + "KC_ACL0", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_NO", + "KC_WH_D", + "KC_NO", + "KC_MS_D", + "KC_NO", + "KC_NO", + "KC_TRNS", + + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_SPC", + "KC_DEL", + + "KC_ENT", + "KC_SPC", + "KC_BSPC", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + + "TG(6)", + "KC_TRNS", + + "KC_TRNS", + "KC_TRNS" + ] + ] +} diff --git a/keyboards/handwired/dactyl_manuform/5x6_2_5/readme.md b/keyboards/handwired/dactyl_manuform/5x6_2_5/readme.md new file mode 100644 index 0000000000..d67f940611 --- /dev/null +++ b/keyboards/handwired/dactyl_manuform/5x6_2_5/readme.md @@ -0,0 +1,13 @@ +# Dactyl ManuForm Mini + +The Dactyl ManuForm Mini is a fork of the [Dactyl ManuForm](https://github.com/tshort/dactyl-keyboard). The Dactyl ManuForm is a fork of the [Dactyl](https://github.com/adereth/dactyl-keyboard) with the thumb cluster from [ManuForm](https://github.com/jeffgran/ManuForm). + +This [specific version](https://github.com/jceb/dactyl-manuform-mini-keyboard) of the Dactyl ManuForm Mini adds to additional keys to each side, CTRL and ALT, that are missing in the default configuration of the mini keyboard. In addition, a thumb cluster with 5 keys is enabled. + +The keyboard is custom built and handwired. There multiple build guides available. + +Make example for this keyboard (after setting up your build environment): + + make handwired/dactyl_manuform/5x6_2_5:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/handwired/dactyl_manuform/5x6_2_5/rules.mk b/keyboards/handwired/dactyl_manuform/5x6_2_5/rules.mk new file mode 100644 index 0000000000..d5ba60f2ad --- /dev/null +++ b/keyboards/handwired/dactyl_manuform/5x6_2_5/rules.mk @@ -0,0 +1,14 @@ +BOOTMAGIC_ENABLE = lite +COMMAND_ENABLE = no + +# # Pro-Micro +# NKRO_ENABLE = yes + +# # # Adafruit Feather +# # NKRO_ENABLE = no +# # # Processor frequency +# F_CPU = 8000000 +# F_USB = $(F_CPU) +# # # BLUETOOTH_ENABLE = no +# # BLUETOOTH = AdafruitBLE +# # CONSOLE_DEBUG = yes diff --git a/keyboards/handwired/dactyl_manuform/dactyl_manuform.h b/keyboards/handwired/dactyl_manuform/dactyl_manuform.h index 7352b5e838..1b6b105ece 100644 --- a/keyboards/handwired/dactyl_manuform/dactyl_manuform.h +++ b/keyboards/handwired/dactyl_manuform/dactyl_manuform.h @@ -8,6 +8,8 @@ #include "5x6.h" #elif KEYBOARD_handwired_dactyl_manuform_5x6_5 #include "5x6_5.h" +#elif KEYBOARD_handwired_dactyl_manuform_5x6_2_5 + #include "5x6_2_5.h" #elif KEYBOARD_handwired_dactyl_manuform_5x7 #include "5x7.h" #elif KEYBOARD_handwired_dactyl_manuform_6x6 From 588bcdc8ca212b195a428fc43766a59a9252c08d Mon Sep 17 00:00:00 2001 From: Zach White Date: Wed, 14 Apr 2021 19:00:22 -0700 Subject: [PATCH 210/613] Add support for tab completion (#12411) * Add support for tab completion * make flake8 happy * Add documentation --- docs/_summary.md | 1 + docs/cli_tab_complete.md | 27 +++++++++++ lib/python/qmk/cli/__init__.py | 14 +++++- lib/python/qmk/cli/c2json.py | 7 +-- lib/python/qmk/cli/cformat.py | 3 +- lib/python/qmk/cli/compile.py | 10 ++-- lib/python/qmk/cli/flash.py | 7 +-- lib/python/qmk/cli/generate/config_h.py | 4 +- lib/python/qmk/cli/generate/dfu_header.py | 3 +- lib/python/qmk/cli/generate/info_json.py | 4 +- lib/python/qmk/cli/generate/layouts.py | 4 +- lib/python/qmk/cli/generate/rules_mk.py | 4 +- lib/python/qmk/cli/info.py | 4 +- lib/python/qmk/cli/json2c.py | 3 +- lib/python/qmk/cli/kle2json.py | 3 +- lib/python/qmk/cli/lint.py | 3 +- lib/python/qmk/cli/list/keymaps.py | 4 +- lib/python/qmk/cli/new/keymap.py | 4 +- lib/python/qmk/decorators.py | 58 ++++------------------- lib/python/qmk/keyboard.py | 26 +++++++++- lib/python/qmk/keymap.py | 56 ++++++++++++++++++++-- requirements.txt | 2 +- util/qmk_tab_complete.sh | 2 + 23 files changed, 168 insertions(+), 85 deletions(-) create mode 100644 docs/cli_tab_complete.md create mode 100644 util/qmk_tab_complete.sh diff --git a/docs/_summary.md b/docs/_summary.md index 83799acdb8..825514e6b5 100644 --- a/docs/_summary.md +++ b/docs/_summary.md @@ -29,6 +29,7 @@ * [Overview](cli.md) * [Configuration](cli_configuration.md) * [Commands](cli_commands.md) + * [Tab Completion](cli_tab_complete.md) * Using QMK * Guides diff --git a/docs/cli_tab_complete.md b/docs/cli_tab_complete.md new file mode 100644 index 0000000000..2217d4fd3b --- /dev/null +++ b/docs/cli_tab_complete.md @@ -0,0 +1,27 @@ +# Tab Completion for QMK + +If you are using Bash 4.2 or later, Zsh, or FiSH you can enable Tab Completion for the QMK CLI. This will let you tab complete the names of flags, keyboards, files, and other `qmk` options. + +## Setup + +There are several ways you can setup tab completion. + +### For Your User Only + +Add this to the end of your `.profile` or `.bashrc`: + + source ~/qmk_firmware/util/qmk_tab_complete.sh + +If you put `qmk_firmware` into another location you will need to adjust this path. + +### System Wide Symlink + +If you want the tab completion available to all users of the system you can add a symlink to the `qmk_tab_complete.sh` script: + + `ln -s ~/qmk_firmware/util/qmk_tab_complete.sh /etc/profile.d/qmk_tab_complete.sh` + +### System Wide Copy + +In some cases a symlink may not work. Instead you can copy the file directly into place. Be aware that updates to the tab complete script may happen from time to time, you will want to recopy the file periodically. + + cp util/qmk_tab_complete.sh /etc/profile.d diff --git a/lib/python/qmk/cli/__init__.py b/lib/python/qmk/cli/__init__.py index 1349e68a9b..f7df908119 100644 --- a/lib/python/qmk/cli/__init__.py +++ b/lib/python/qmk/cli/__init__.py @@ -4,7 +4,7 @@ We list each subcommand here explicitly because all the reliable ways of searchi """ import sys -from milc import cli +from milc import cli, __VERSION__ from . import c2json from . import cformat @@ -47,5 +47,15 @@ from . import pytest # void: 3.9 if sys.version_info[0] != 3 or sys.version_info[1] < 7: - cli.log.error('Your Python is too old! Please upgrade to Python 3.7 or later.') + print('Error: Your Python is too old! Please upgrade to Python 3.7 or later.') + exit(127) + +milc_version = __VERSION__.split('.') + +if int(milc_version[0]) < 2 and int(milc_version[1]) < 3: + from pathlib import Path + + requirements = Path('requirements.txt').resolve() + + print(f'Your MILC library is too old! Please upgrade: python3 -m pip install -U -r {str(requirements)}') exit(127) diff --git a/lib/python/qmk/cli/c2json.py b/lib/python/qmk/cli/c2json.py index 1fa833b647..e66b0a1b58 100644 --- a/lib/python/qmk/cli/c2json.py +++ b/lib/python/qmk/cli/c2json.py @@ -2,20 +2,21 @@ """ import json +from argcomplete.completers import FilesCompleter from milc import cli import qmk.keymap import qmk.path from qmk.json_encoders import InfoJSONEncoder -from qmk.keyboard import keyboard_folder +from qmk.keyboard import keyboard_completer, keyboard_folder @cli.argument('--no-cpp', arg_only=True, action='store_false', help='Do not use \'cpp\' on keymap.c') @cli.argument('-o', '--output', arg_only=True, type=qmk.path.normpath, help='File to write to') @cli.argument('-q', '--quiet', arg_only=True, action='store_true', help="Quiet mode, only output error messages") -@cli.argument('-kb', '--keyboard', arg_only=True, type=keyboard_folder, required=True, help='The keyboard\'s name') +@cli.argument('-kb', '--keyboard', arg_only=True, type=keyboard_folder, completer=keyboard_completer, required=True, help='The keyboard\'s name') @cli.argument('-km', '--keymap', arg_only=True, required=True, help='The keymap\'s name') -@cli.argument('filename', arg_only=True, help='keymap.c file') +@cli.argument('filename', arg_only=True, completer=FilesCompleter('.c'), help='keymap.c file') @cli.subcommand('Creates a keymap.json from a keymap.c file.') def c2json(cli): """Generate a keymap.json from a keymap.c file. diff --git a/lib/python/qmk/cli/cformat.py b/lib/python/qmk/cli/cformat.py index c7e93b2ab6..d0d3b3b0a3 100644 --- a/lib/python/qmk/cli/cformat.py +++ b/lib/python/qmk/cli/cformat.py @@ -3,6 +3,7 @@ import subprocess from shutil import which +from argcomplete.completers import FilesCompleter from milc import cli from qmk.path import normpath @@ -33,7 +34,7 @@ def cformat_run(files, all_files): @cli.argument('-a', '--all-files', arg_only=True, action='store_true', help='Format all core files.') @cli.argument('-b', '--base-branch', default='origin/master', help='Branch to compare to diffs to.') -@cli.argument('files', nargs='*', arg_only=True, help='Filename(s) to format.') +@cli.argument('files', nargs='*', arg_only=True, completer=FilesCompleter('.c'), help='Filename(s) to format.') @cli.subcommand("Format C code according to QMK's style.", hidden=False if cli.config.user.developer else True) def cformat(cli): """Format C code according to QMK's style. diff --git a/lib/python/qmk/cli/compile.py b/lib/python/qmk/cli/compile.py index 5793e98928..23ca4e00a6 100755 --- a/lib/python/qmk/cli/compile.py +++ b/lib/python/qmk/cli/compile.py @@ -2,17 +2,19 @@ You can compile a keymap already in the repo or using a QMK Configurator export. """ +from argcomplete.completers import FilesCompleter from milc import cli import qmk.path from qmk.decorators import automagic_keyboard, automagic_keymap from qmk.commands import compile_configurator_json, create_make_command, parse_configurator_json -from qmk.keyboard import keyboard_folder +from qmk.keyboard import keyboard_completer, keyboard_folder +from qmk.keymap import keymap_completer -@cli.argument('filename', nargs='?', arg_only=True, type=qmk.path.FileType('r'), help='The configurator export to compile') -@cli.argument('-kb', '--keyboard', type=keyboard_folder, help='The keyboard to build a firmware for. Ignored when a configurator export is supplied.') -@cli.argument('-km', '--keymap', help='The keymap to build a firmware for. Ignored when a configurator export is supplied.') +@cli.argument('filename', nargs='?', arg_only=True, type=qmk.path.FileType('r'), completer=FilesCompleter('.json'), help='The configurator export to compile') +@cli.argument('-kb', '--keyboard', type=keyboard_folder, completer=keyboard_completer, help='The keyboard to build a firmware for. Ignored when a configurator export is supplied.') +@cli.argument('-km', '--keymap', completer=keymap_completer, help='The keymap to build a firmware for. Ignored when a configurator export is supplied.') @cli.argument('-n', '--dry-run', arg_only=True, action='store_true', help="Don't actually build, just show the make command to be run.") @cli.argument('-j', '--parallel', type=int, default=1, help="Set the number of parallel make jobs to run.") @cli.argument('-e', '--env', arg_only=True, action='append', default=[], help="Set a variable to be passed to make. May be passed multiple times.") diff --git a/lib/python/qmk/cli/flash.py b/lib/python/qmk/cli/flash.py index c9273c3f98..1b67840616 100644 --- a/lib/python/qmk/cli/flash.py +++ b/lib/python/qmk/cli/flash.py @@ -4,12 +4,13 @@ You can compile a keymap already in the repo or using a QMK Configurator export. A bootloader must be specified. """ +from argcomplete.completers import FilesCompleter from milc import cli import qmk.path from qmk.decorators import automagic_keyboard, automagic_keymap from qmk.commands import compile_configurator_json, create_make_command, parse_configurator_json -from qmk.keyboard import keyboard_folder +from qmk.keyboard import keyboard_completer, keyboard_folder def print_bootloader_help(): @@ -30,11 +31,11 @@ def print_bootloader_help(): cli.echo('For more info, visit https://docs.qmk.fm/#/flashing') -@cli.argument('filename', nargs='?', arg_only=True, type=qmk.path.FileType('r'), help='The configurator export JSON to compile.') +@cli.argument('filename', nargs='?', arg_only=True, type=qmk.path.FileType('r'), completer=FilesCompleter('.json'), help='The configurator export JSON to compile.') @cli.argument('-b', '--bootloaders', action='store_true', help='List the available bootloaders.') @cli.argument('-bl', '--bootloader', default='flash', help='The flash command, corresponding to qmk\'s make options of bootloaders.') @cli.argument('-km', '--keymap', help='The keymap to build a firmware for. Use this if you dont have a configurator file. Ignored when a configurator file is supplied.') -@cli.argument('-kb', '--keyboard', type=keyboard_folder, help='The keyboard to build a firmware for. Use this if you dont have a configurator file. Ignored when a configurator file is supplied.') +@cli.argument('-kb', '--keyboard', type=keyboard_folder, completer=keyboard_completer, help='The keyboard to build a firmware for. Use this if you dont have a configurator file. Ignored when a configurator file is supplied.') @cli.argument('-n', '--dry-run', arg_only=True, action='store_true', help="Don't actually build, just show the make command to be run.") @cli.argument('-j', '--parallel', type=int, default=1, help="Set the number of parallel make jobs to run.") @cli.argument('-e', '--env', arg_only=True, action='append', default=[], help="Set a variable to be passed to make. May be passed multiple times.") diff --git a/lib/python/qmk/cli/generate/config_h.py b/lib/python/qmk/cli/generate/config_h.py index ccea6d7a05..54cd5b96a8 100755 --- a/lib/python/qmk/cli/generate/config_h.py +++ b/lib/python/qmk/cli/generate/config_h.py @@ -8,7 +8,7 @@ from milc import cli from qmk.decorators import automagic_keyboard, automagic_keymap from qmk.info import info_json from qmk.json_schema import json_load -from qmk.keyboard import keyboard_folder +from qmk.keyboard import keyboard_completer, keyboard_folder from qmk.path import is_keyboard, normpath @@ -75,7 +75,7 @@ def matrix_pins(matrix_pins): @cli.argument('-o', '--output', arg_only=True, type=normpath, help='File to write to') @cli.argument('-q', '--quiet', arg_only=True, action='store_true', help="Quiet mode, only output error messages") -@cli.argument('-kb', '--keyboard', type=keyboard_folder, help='Keyboard to generate config.h for.') +@cli.argument('-kb', '--keyboard', type=keyboard_folder, completer=keyboard_completer, help='Keyboard to generate config.h for.') @cli.subcommand('Used by the make system to generate info_config.h from info.json', hidden=True) @automagic_keyboard @automagic_keymap diff --git a/lib/python/qmk/cli/generate/dfu_header.py b/lib/python/qmk/cli/generate/dfu_header.py index 6f958b3a3d..211ed9991a 100644 --- a/lib/python/qmk/cli/generate/dfu_header.py +++ b/lib/python/qmk/cli/generate/dfu_header.py @@ -6,11 +6,12 @@ from milc import cli from qmk.decorators import automagic_keyboard from qmk.info import info_json from qmk.path import is_keyboard, normpath +from qmk.keyboard import keyboard_completer @cli.argument('-o', '--output', arg_only=True, type=normpath, help='File to write to') @cli.argument('-q', '--quiet', arg_only=True, action='store_true', help="Quiet mode, only output error messages") -@cli.argument('-kb', '--keyboard', help='Keyboard to generate LUFA Keyboard.h for.') +@cli.argument('-kb', '--keyboard', completer=keyboard_completer, help='Keyboard to generate LUFA Keyboard.h for.') @cli.subcommand('Used by the make system to generate LUFA Keyboard.h from info.json', hidden=True) @automagic_keyboard def generate_dfu_header(cli): diff --git a/lib/python/qmk/cli/generate/info_json.py b/lib/python/qmk/cli/generate/info_json.py index 1af7f04392..8931b68b6f 100755 --- a/lib/python/qmk/cli/generate/info_json.py +++ b/lib/python/qmk/cli/generate/info_json.py @@ -11,7 +11,7 @@ from qmk.decorators import automagic_keyboard, automagic_keymap from qmk.info import info_json from qmk.json_encoders import InfoJSONEncoder from qmk.json_schema import load_jsonschema -from qmk.keyboard import keyboard_folder +from qmk.keyboard import keyboard_completer, keyboard_folder from qmk.path import is_keyboard @@ -41,7 +41,7 @@ def strip_info_json(kb_info_json): return validator(kb_info_json) -@cli.argument('-kb', '--keyboard', type=keyboard_folder, help='Keyboard to show info for.') +@cli.argument('-kb', '--keyboard', type=keyboard_folder, completer=keyboard_completer, help='Keyboard to show info for.') @cli.argument('-km', '--keymap', help='Show the layers for a JSON keymap too.') @cli.subcommand('Generate an info.json file for a keyboard.', hidden=False if cli.config.user.developer else True) @automagic_keyboard diff --git a/lib/python/qmk/cli/generate/layouts.py b/lib/python/qmk/cli/generate/layouts.py index 7b4394291f..ad6946d6cf 100755 --- a/lib/python/qmk/cli/generate/layouts.py +++ b/lib/python/qmk/cli/generate/layouts.py @@ -5,7 +5,7 @@ from milc import cli from qmk.constants import COL_LETTERS, ROW_LETTERS from qmk.decorators import automagic_keyboard, automagic_keymap from qmk.info import info_json -from qmk.keyboard import keyboard_folder +from qmk.keyboard import keyboard_completer, keyboard_folder from qmk.path import is_keyboard, normpath usb_properties = { @@ -17,7 +17,7 @@ usb_properties = { @cli.argument('-o', '--output', arg_only=True, type=normpath, help='File to write to') @cli.argument('-q', '--quiet', arg_only=True, action='store_true', help="Quiet mode, only output error messages") -@cli.argument('-kb', '--keyboard', type=keyboard_folder, help='Keyboard to generate config.h for.') +@cli.argument('-kb', '--keyboard', type=keyboard_folder, completer=keyboard_completer, help='Keyboard to generate config.h for.') @cli.subcommand('Used by the make system to generate layouts.h from info.json', hidden=True) @automagic_keyboard @automagic_keymap diff --git a/lib/python/qmk/cli/generate/rules_mk.py b/lib/python/qmk/cli/generate/rules_mk.py index 91759d26c6..41c94e16b5 100755 --- a/lib/python/qmk/cli/generate/rules_mk.py +++ b/lib/python/qmk/cli/generate/rules_mk.py @@ -8,7 +8,7 @@ from milc import cli from qmk.decorators import automagic_keyboard, automagic_keymap from qmk.info import info_json from qmk.json_schema import json_load -from qmk.keyboard import keyboard_folder +from qmk.keyboard import keyboard_completer, keyboard_folder from qmk.path import is_keyboard, normpath @@ -39,7 +39,7 @@ def process_mapping_rule(kb_info_json, rules_key, info_dict): @cli.argument('-o', '--output', arg_only=True, type=normpath, help='File to write to') @cli.argument('-q', '--quiet', arg_only=True, action='store_true', help="Quiet mode, only output error messages") @cli.argument('-e', '--escape', arg_only=True, action='store_true', help="Escape spaces in quiet mode") -@cli.argument('-kb', '--keyboard', type=keyboard_folder, help='Keyboard to generate config.h for.') +@cli.argument('-kb', '--keyboard', type=keyboard_folder, completer=keyboard_completer, help='Keyboard to generate config.h for.') @cli.subcommand('Used by the make system to generate info_config.h from info.json', hidden=True) @automagic_keyboard @automagic_keymap diff --git a/lib/python/qmk/cli/info.py b/lib/python/qmk/cli/info.py index aac507c1a5..572b305cac 100755 --- a/lib/python/qmk/cli/info.py +++ b/lib/python/qmk/cli/info.py @@ -10,7 +10,7 @@ from milc import cli from qmk.json_encoders import InfoJSONEncoder from qmk.constants import COL_LETTERS, ROW_LETTERS from qmk.decorators import automagic_keyboard, automagic_keymap -from qmk.keyboard import keyboard_folder, render_layouts, render_layout +from qmk.keyboard import keyboard_completer, keyboard_folder, render_layouts, render_layout from qmk.keymap import locate_keymap from qmk.info import info_json from qmk.path import is_keyboard @@ -124,7 +124,7 @@ def print_text_output(kb_info_json): show_keymap(kb_info_json, False) -@cli.argument('-kb', '--keyboard', type=keyboard_folder, help='Keyboard to show info for.') +@cli.argument('-kb', '--keyboard', type=keyboard_folder, completer=keyboard_completer, help='Keyboard to show info for.') @cli.argument('-km', '--keymap', help='Show the layers for a JSON keymap too.') @cli.argument('-l', '--layouts', action='store_true', help='Render the layouts.') @cli.argument('-m', '--matrix', action='store_true', help='Render the layouts with matrix information.') diff --git a/lib/python/qmk/cli/json2c.py b/lib/python/qmk/cli/json2c.py index 5a2fb96c78..a90578c021 100755 --- a/lib/python/qmk/cli/json2c.py +++ b/lib/python/qmk/cli/json2c.py @@ -2,6 +2,7 @@ """ import json +from argcomplete.completers import FilesCompleter from milc import cli import qmk.keymap @@ -10,7 +11,7 @@ import qmk.path @cli.argument('-o', '--output', arg_only=True, type=qmk.path.normpath, help='File to write to') @cli.argument('-q', '--quiet', arg_only=True, action='store_true', help="Quiet mode, only output error messages") -@cli.argument('filename', type=qmk.path.FileType('r'), arg_only=True, help='Configurator JSON file') +@cli.argument('filename', type=qmk.path.FileType('r'), arg_only=True, completer=FilesCompleter('.json'), help='Configurator JSON file') @cli.subcommand('Creates a keymap.c from a QMK Configurator export.') def json2c(cli): """Generate a keymap.c from a configurator export. diff --git a/lib/python/qmk/cli/kle2json.py b/lib/python/qmk/cli/kle2json.py index 91499c9af3..acb75ef4fd 100755 --- a/lib/python/qmk/cli/kle2json.py +++ b/lib/python/qmk/cli/kle2json.py @@ -4,6 +4,7 @@ import json import os from pathlib import Path +from argcomplete.completers import FilesCompleter from milc import cli from kle2xy import KLE2xy @@ -11,7 +12,7 @@ from qmk.converter import kle2qmk from qmk.json_encoders import InfoJSONEncoder -@cli.argument('filename', help='The KLE raw txt to convert') +@cli.argument('filename', completer=FilesCompleter('.json'), help='The KLE raw txt to convert') @cli.argument('-f', '--force', action='store_true', help='Flag to overwrite current info.json') @cli.subcommand('Convert a KLE layout to a Configurator JSON', hidden=False if cli.config.user.developer else True) def kle2json(cli): diff --git a/lib/python/qmk/cli/lint.py b/lib/python/qmk/cli/lint.py index 74467021e0..a164dba632 100644 --- a/lib/python/qmk/cli/lint.py +++ b/lib/python/qmk/cli/lint.py @@ -4,12 +4,13 @@ from milc import cli from qmk.decorators import automagic_keyboard, automagic_keymap from qmk.info import info_json +from qmk.keyboard import keyboard_completer from qmk.keymap import locate_keymap from qmk.path import is_keyboard, keyboard @cli.argument('--strict', action='store_true', help='Treat warnings as errors.') -@cli.argument('-kb', '--keyboard', help='The keyboard to check.') +@cli.argument('-kb', '--keyboard', completer=keyboard_completer, help='The keyboard to check.') @cli.argument('-km', '--keymap', help='The keymap to check.') @cli.subcommand('Check keyboard and keymap for common mistakes.') @automagic_keyboard diff --git a/lib/python/qmk/cli/list/keymaps.py b/lib/python/qmk/cli/list/keymaps.py index 7c0ad43997..d79ab75b58 100644 --- a/lib/python/qmk/cli/list/keymaps.py +++ b/lib/python/qmk/cli/list/keymaps.py @@ -4,10 +4,10 @@ from milc import cli import qmk.keymap from qmk.decorators import automagic_keyboard -from qmk.keyboard import keyboard_folder +from qmk.keyboard import keyboard_completer, keyboard_folder -@cli.argument("-kb", "--keyboard", type=keyboard_folder, help="Specify keyboard name. Example: 1upkeyboards/1up60hse") +@cli.argument("-kb", "--keyboard", type=keyboard_folder, completer=keyboard_completer, help="Specify keyboard name. Example: 1upkeyboards/1up60hse") @cli.subcommand("List the keymaps for a specific keyboard") @automagic_keyboard def list_keymaps(cli): diff --git a/lib/python/qmk/cli/new/keymap.py b/lib/python/qmk/cli/new/keymap.py index ea98a287c1..60cb743cb6 100755 --- a/lib/python/qmk/cli/new/keymap.py +++ b/lib/python/qmk/cli/new/keymap.py @@ -5,11 +5,11 @@ from pathlib import Path import qmk.path from qmk.decorators import automagic_keyboard, automagic_keymap -from qmk.keyboard import keyboard_folder +from qmk.keyboard import keyboard_completer, keyboard_folder from milc import cli -@cli.argument('-kb', '--keyboard', type=keyboard_folder, help='Specify keyboard name. Example: 1upkeyboards/1up60hse') +@cli.argument('-kb', '--keyboard', type=keyboard_folder, completer=keyboard_completer, help='Specify keyboard name. Example: 1upkeyboards/1up60hse') @cli.argument('-km', '--keymap', help='Specify the name for the new keymap directory') @cli.subcommand('Creates a new keymap for the keyboard of your choosing') @automagic_keyboard diff --git a/lib/python/qmk/decorators.py b/lib/python/qmk/decorators.py index 629402b095..8d43ae980f 100644 --- a/lib/python/qmk/decorators.py +++ b/lib/python/qmk/decorators.py @@ -1,13 +1,12 @@ """Helpful decorators that subcommands can use. """ import functools -from pathlib import Path from time import monotonic from milc import cli -from qmk.keymap import is_keymap_dir -from qmk.path import is_keyboard, under_qmk_firmware +from qmk.keyboard import find_keyboard_from_dir +from qmk.keymap import find_keymap_from_dir def automagic_keyboard(func): @@ -17,27 +16,13 @@ def automagic_keyboard(func): """ @functools.wraps(func) def wrapper(*args, **kwargs): - # Check to make sure their copy of MILC supports config_source - if not hasattr(cli, 'config_source'): - cli.log.error("This subcommand requires a newer version of the QMK CLI. Please upgrade using `pip3 install --upgrade qmk` or your package manager.") - exit(1) - # Ensure that `--keyboard` was not passed and CWD is under `qmk_firmware/keyboards` if cli.config_source[cli._entrypoint.__name__]['keyboard'] != 'argument': - relative_cwd = under_qmk_firmware() + keyboard = find_keyboard_from_dir() - if relative_cwd and len(relative_cwd.parts) > 1 and relative_cwd.parts[0] == 'keyboards': - # Attempt to extract the keyboard name from the current directory - current_path = Path('/'.join(relative_cwd.parts[1:])) - - if 'keymaps' in current_path.parts: - # Strip current_path of anything after `keymaps` - keymap_index = len(current_path.parts) - current_path.parts.index('keymaps') - 1 - current_path = current_path.parents[keymap_index] - - if is_keyboard(current_path): - cli.config[cli._entrypoint.__name__]['keyboard'] = str(current_path) - cli.config_source[cli._entrypoint.__name__]['keyboard'] = 'keyboard_directory' + if keyboard: + cli.config[cli._entrypoint.__name__]['keyboard'] = keyboard + cli.config_source[cli._entrypoint.__name__]['keyboard'] = 'keyboard_directory' return func(*args, **kwargs) @@ -51,36 +36,13 @@ def automagic_keymap(func): """ @functools.wraps(func) def wrapper(*args, **kwargs): - # Check to make sure their copy of MILC supports config_source - if not hasattr(cli, 'config_source'): - cli.log.error("This subcommand requires a newer version of the QMK CLI. Please upgrade using `pip3 install --upgrade qmk` or your package manager.") - exit(1) - # Ensure that `--keymap` was not passed and that we're under `qmk_firmware` if cli.config_source[cli._entrypoint.__name__]['keymap'] != 'argument': - relative_cwd = under_qmk_firmware() + keymap_name, keymap_type = find_keymap_from_dir() - if relative_cwd and len(relative_cwd.parts) > 1: - # If we're in `qmk_firmware/keyboards` and `keymaps` is in our path, try to find the keyboard name. - if relative_cwd.parts[0] == 'keyboards' and 'keymaps' in relative_cwd.parts: - current_path = Path('/'.join(relative_cwd.parts[1:])) # Strip 'keyboards' from the front - - if 'keymaps' in current_path.parts and current_path.name != 'keymaps': - while current_path.parent.name != 'keymaps': - current_path = current_path.parent - cli.config[cli._entrypoint.__name__]['keymap'] = current_path.name - cli.config_source[cli._entrypoint.__name__]['keymap'] = 'keymap_directory' - - # If we're in `qmk_firmware/layouts` guess the name from the community keymap they're in - elif relative_cwd.parts[0] == 'layouts' and is_keymap_dir(relative_cwd): - cli.config[cli._entrypoint.__name__]['keymap'] = relative_cwd.name - cli.config_source[cli._entrypoint.__name__]['keymap'] = 'layouts_directory' - - # If we're in `qmk_firmware/users` guess the name from the userspace they're in - elif relative_cwd.parts[0] == 'users': - # Guess the keymap name based on which userspace they're in - cli.config[cli._entrypoint.__name__]['keymap'] = relative_cwd.parts[1] - cli.config_source[cli._entrypoint.__name__]['keymap'] = 'users_directory' + if keymap_name: + cli.config[cli._entrypoint.__name__]['keymap'] = keymap_name + cli.config_source[cli._entrypoint.__name__]['keymap'] = keymap_type return func(*args, **kwargs) diff --git a/lib/python/qmk/keyboard.py b/lib/python/qmk/keyboard.py index 89f9346c40..0168d17ef3 100644 --- a/lib/python/qmk/keyboard.py +++ b/lib/python/qmk/keyboard.py @@ -9,7 +9,7 @@ from glob import glob from qmk.c_parse import parse_config_h_file from qmk.json_schema import json_load from qmk.makefile import parse_rules_mk_file -from qmk.path import is_keyboard +from qmk.path import is_keyboard, under_qmk_firmware BOX_DRAWING_CHARACTERS = { "unicode": { @@ -33,6 +33,24 @@ BOX_DRAWING_CHARACTERS = { base_path = os.path.join(os.getcwd(), "keyboards") + os.path.sep +def find_keyboard_from_dir(): + """Returns a keyboard name based on the user's current directory. + """ + relative_cwd = under_qmk_firmware() + + if relative_cwd and len(relative_cwd.parts) > 1 and relative_cwd.parts[0] == 'keyboards': + # Attempt to extract the keyboard name from the current directory + current_path = Path('/'.join(relative_cwd.parts[1:])) + + if 'keymaps' in current_path.parts: + # Strip current_path of anything after `keymaps` + keymap_index = len(current_path.parts) - current_path.parts.index('keymaps') - 1 + current_path = current_path.parents[keymap_index] + + if is_keyboard(current_path): + return str(current_path) + + def keyboard_folder(keyboard): """Returns the actual keyboard folder. @@ -61,6 +79,12 @@ def _find_name(path): return path.replace(base_path, "").replace(os.path.sep + "rules.mk", "") +def keyboard_completer(prefix, action, parser, parsed_args): + """Returns a list of keyboards for tab completion. + """ + return list_keyboards() + + def list_keyboards(): """Returns a list of all keyboards. """ diff --git a/lib/python/qmk/keymap.py b/lib/python/qmk/keymap.py index d8495c38bc..4ad9ffb591 100644 --- a/lib/python/qmk/keymap.py +++ b/lib/python/qmk/keymap.py @@ -1,19 +1,19 @@ """Functions that help you work with QMK keymaps. """ -from pathlib import Path import json import subprocess import sys +from pathlib import Path +import argcomplete +from milc import cli from pygments.lexers.c_cpp import CLexer from pygments.token import Token from pygments import lex -from milc import cli - -from qmk.keyboard import rules_mk import qmk.path import qmk.commands +from qmk.keyboard import find_keyboard_from_dir, rules_mk # The `keymap.c` template to use when a keyboard doesn't have its own DEFAULT_KEYMAP_C = """#include QMK_KEYBOARD_H @@ -74,6 +74,54 @@ def _strip_any(keycode): return keycode +def find_keymap_from_dir(): + """Returns `(keymap_name, source)` for the directory we're currently in. + + """ + relative_cwd = qmk.path.under_qmk_firmware() + + if relative_cwd and len(relative_cwd.parts) > 1: + # If we're in `qmk_firmware/keyboards` and `keymaps` is in our path, try to find the keyboard name. + if relative_cwd.parts[0] == 'keyboards' and 'keymaps' in relative_cwd.parts: + current_path = Path('/'.join(relative_cwd.parts[1:])) # Strip 'keyboards' from the front + + if 'keymaps' in current_path.parts and current_path.name != 'keymaps': + while current_path.parent.name != 'keymaps': + current_path = current_path.parent + + return current_path.name, 'keymap_directory' + + # If we're in `qmk_firmware/layouts` guess the name from the community keymap they're in + elif relative_cwd.parts[0] == 'layouts' and is_keymap_dir(relative_cwd): + return relative_cwd.name, 'layouts_directory' + + # If we're in `qmk_firmware/users` guess the name from the userspace they're in + elif relative_cwd.parts[0] == 'users': + # Guess the keymap name based on which userspace they're in + return relative_cwd.parts[1], 'users_directory' + + return None, None + + +def keymap_completer(prefix, action, parser, parsed_args): + """Returns a list of keymaps for tab completion. + """ + try: + if parsed_args.keyboard: + return list_keymaps(parsed_args.keyboard) + + keyboard = find_keyboard_from_dir() + + if keyboard: + return list_keymaps(keyboard) + + except Exception as e: + argcomplete.warn(f'Error: {e.__class__.__name__}: {str(e)}') + return [] + + return [] + + def is_keymap_dir(keymap, c=True, json=True, additional_files=None): """Return True if Path object `keymap` has a keymap file inside. diff --git a/requirements.txt b/requirements.txt index f74cb73cb7..8553e2c3f0 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,5 +5,5 @@ colorama dotty-dict hjson jsonschema>=3 -milc>=1.1.0 +milc>=1.3.0 pygments diff --git a/util/qmk_tab_complete.sh b/util/qmk_tab_complete.sh new file mode 100644 index 0000000000..ebcb5536ac --- /dev/null +++ b/util/qmk_tab_complete.sh @@ -0,0 +1,2 @@ +# Register qmk with tab completion +eval "$(register-python-argcomplete --no-defaults qmk)" From 39d31d3ee49604fd88e6b45396da0cb4d0074da6 Mon Sep 17 00:00:00 2001 From: MechMerlin <30334081+mechmerlin@users.noreply.github.com> Date: Thu, 15 Apr 2021 10:01:25 -0700 Subject: [PATCH 211/613] update readme (#12322) --- keyboards/gray_studio/think65/solder/readme.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/keyboards/gray_studio/think65/solder/readme.md b/keyboards/gray_studio/think65/solder/readme.md index 1d7e4450ad..5f0ddfe5d8 100644 --- a/keyboards/gray_studio/think65/solder/readme.md +++ b/keyboards/gray_studio/think65/solder/readme.md @@ -1,10 +1,12 @@ -# Think6.5 Solder (Compatible) +# Think6.5 Solder V1/V2 -65% board with 6.5 degree angle ran by Airpotter and Oldcat. PCB Manufactured by DEMO Studio and Keyboard manufactured by Gray Studio. +65% PCB with center mount USB C ran by Airpotter and Oldcat through Graystudio. -Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin) -Hardware Supported: Think6.5 Compatible PCB -Hardware Availability: [Geekhack GB](https://geekhack.org/index.php?topic=100166.0) +This firmware is compatible with both V1 and V2 variants of the Think 6.5 PCB. + +* Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin) +* Hardware Supported: Think6.5 V1 and V2 Compatible PCB +* Hardware Availability: [Geekhack V1 GB](https://geekhack.org/index.php?topic=100166.0), [Graystudio V2 GB](https://graystudio.club/products/gb-think6-5-v2) **Indicator LEDs:** The solder PCB ONLY supports Caps Lock LEDs unlike the Hotswap version that supports Num Lock, Caps Lock, and Scroll Lock. From a69616c45ce30463b0025c48d72d8cac0350e639 Mon Sep 17 00:00:00 2001 From: Jay Greco Date: Thu, 15 Apr 2021 10:04:26 -0700 Subject: [PATCH 212/613] Optimize NIBBLE oled_bongocat keymap to reduce flash usage (#12330) * Optimize with squeez-o frame compression Adds VIA support! * Clean up for PR + Add copyright header - Remove debug print statements --- .../keymaps/oled_bongocat/animation_frames.h | 404 ++++++++++++++++++ .../nibble/keymaps/oled_bongocat/keymap.c | 301 ++----------- .../nibble/keymaps/oled_bongocat/readme.md | 2 + .../nibble/keymaps/oled_bongocat/rules.mk | 3 +- 4 files changed, 452 insertions(+), 258 deletions(-) create mode 100644 keyboards/nullbitsco/nibble/keymaps/oled_bongocat/animation_frames.h diff --git a/keyboards/nullbitsco/nibble/keymaps/oled_bongocat/animation_frames.h b/keyboards/nullbitsco/nibble/keymaps/oled_bongocat/animation_frames.h new file mode 100644 index 0000000000..bef80febea --- /dev/null +++ b/keyboards/nullbitsco/nibble/keymaps/oled_bongocat/animation_frames.h @@ -0,0 +1,404 @@ +/* Copyright 2021 Jay Greco + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once +#ifdef OLED_DRIVER_ENABLE + +// Enable OLED bitmpa compression selectively. +#define USE_OLED_BITMAP_COMPRESSION + +#define NUM_IDLE_FRAMES 5 +#define NUM_TAP_FRAMES 2 +#define NUM_OLED_BYTES 512 + +#ifdef USE_OLED_BITMAP_COMPRESSION + +static const char PROGMEM idle_1_block_map[] = { //IDLE_1 and IDLE_2 + 0x80, 0x03, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, + 0x00, 0xc0, 0x0f, 0x00, 0x00, 0xff, 0x19, 0x00, 0xfc, 0xf1, 0x1d, 0x00, 0x38, 0x00, 0xf3, 0x0f, + 0xe0, 0x83, 0x0d, 0x0f, 0x00, 0xfe, 0xff, 0x03, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const char PROGMEM idle_2_block_map[] = { //IDLE_3 + 0x80, 0x03, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, + 0x00, 0xc0, 0x0f, 0x00, 0x00, 0xfe, 0x19, 0x00, 0xfe, 0xe3, 0x1f, 0x00, 0x7c, 0x00, 0xf6, 0x0f, + 0xc0, 0x07, 0x1b, 0x0f, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const char PROGMEM idle_3_block_map[] = { //IDLE_4 + 0x80, 0x03, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, + 0x00, 0xc0, 0x0f, 0x00, 0x00, 0xff, 0x19, 0x00, 0xff, 0xf1, 0x1d, 0x00, 0x3e, 0x00, 0xf3, 0x0f, + 0xe0, 0x83, 0x0d, 0x0f, 0x80, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const char PROGMEM idle_4_block_map[] = { //IDLE_5 + 0x80, 0x03, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, + 0x00, 0xc0, 0x0f, 0x00, 0x00, 0xff, 0x19, 0x00, 0xfe, 0xf1, 0x1d, 0x00, 0x3c, 0x00, 0xf3, 0x0f, + 0xe0, 0x83, 0x0d, 0x0f, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const char PROGMEM tap_1_block_map[] = { //TAP_1 + 0x80, 0x03, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x80, 0x7f, 0xfc, 0x00, + 0xf8, 0xff, 0xff, 0x03, 0xf8, 0xff, 0x19, 0x00, 0xff, 0xb1, 0x1d, 0x00, 0x3e, 0x00, 0x73, 0x00, + 0xe0, 0x83, 0xff, 0x01, 0x80, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const char PROGMEM tap_2_block_map[] = { //TAP_2 + 0x80, 0x03, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, + 0x00, 0xfc, 0x01, 0x00, 0x00, 0xff, 0x07, 0x00, 0xff, 0xb1, 0x1d, 0x00, 0x3e, 0x00, 0xf3, 0x8f, + 0xe0, 0x83, 0x01, 0x3f, 0x80, 0xff, 0xff, 0x7b, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const char PROGMEM idle_1_block_list[] = { //IDLE_1 and IDLE_2 + 0x07, 0x78, 0x80, 0x07, 0xf8, 0x1f, 0xe0, 0x01, 0x1e, 0xe0, 0x01, 0x1e, 0xe0, 0x80, 0x80, 0x80, + 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0xc2, 0xc1, 0x01, 0xc0, 0x3f, 0xe0, 0x10, 0x08, 0x08, 0x04, + 0x02, 0x01, 0x18, 0x18, 0x03, 0x43, 0xc0, 0x03, 0x7c, 0x80, 0x03, 0x7c, 0x80, 0x13, 0x0c, 0x07, + 0x38, 0x40, 0x20, 0x20, 0x20, 0x20, 0xc0, 0x07, 0x18, 0x20, 0x40, 0x80, 0x03, 0x03, 0x1e, 0x1e, + 0x80, 0x60, 0x18, 0x07, 0x1f, 0x20, 0x40, 0x40, 0x20, 0x20, 0x10, 0x10, 0x10, 0x20, 0x40, 0x40, + 0x40, 0x80, 0x80, 0x9f, 0xe0, 0x01, 0x3e, 0xc0, 0x07, 0xf8, 0x1f, 0xe0, 0x03, 0x7c +}; + +static const char PROGMEM idle_2_block_list[] = { //IDLE_3 + 0x07, 0x78, 0x80, 0x07, 0xf8, 0x1f, 0xe0, 0x01, 0x1e, 0xe0, 0x01, 0x1e, 0xe0, 0x80, 0x80, 0x80, + 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0xc2, 0xc1, 0xc0, 0x3f, 0xc0, 0x20, 0x10, 0x10, 0x08, 0x08, + 0x04, 0x02, 0x01, 0x18, 0x18, 0x03, 0x43, 0xc0, 0x03, 0x7c, 0x80, 0x01, 0x02, 0x04, 0x78, 0x80, + 0x13, 0x0c, 0x07, 0x38, 0x40, 0x20, 0x20, 0x20, 0x20, 0xc0, 0x07, 0x18, 0x20, 0x40, 0x80, 0x03, + 0x03, 0x1e, 0x1e, 0x80, 0x60, 0x18, 0x07, 0x18, 0x26, 0x41, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, + 0x10, 0x10, 0x20, 0x60, 0x40, 0x40, 0x80, 0x9f, 0xe0, 0x01, 0x3e, 0xc0, 0x07, 0xf8, 0x1f, 0xe0, + 0x03, 0x7c +}; + +static const char PROGMEM idle_3_block_list[] = { //IDLE_4 + 0x07, 0x78, 0x80, 0x07, 0xf8, 0x1f, 0xe0, 0x01, 0x1e, 0xe0, 0x01, 0x1e, 0xe0, 0x80, 0x80, 0x80, + 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0xc2, 0xc1, 0x01, 0xc0, 0x3f, 0xc0, 0x20, 0x10, 0x10, 0x08, + 0x08, 0x04, 0x02, 0x01, 0x18, 0x18, 0x03, 0x43, 0xc0, 0x03, 0x7c, 0x80, 0x01, 0x02, 0x04, 0x78, + 0x80, 0x13, 0x0c, 0x07, 0x38, 0x40, 0x20, 0x20, 0x20, 0x20, 0xc0, 0x07, 0x18, 0x20, 0x40, 0x80, + 0x03, 0x03, 0x1e, 0x1e, 0x80, 0x60, 0x18, 0x07, 0x18, 0x26, 0x41, 0x40, 0x40, 0x40, 0x20, 0x20, + 0x20, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x40, 0x80, 0x9f, 0xe0, 0x01, 0x3e, 0xc0, 0x07, 0xf8, + 0x1f, 0xe0, 0x03, 0x7c +}; + +static const char PROGMEM idle_4_block_list[] = { //IDLE_5 + 0x07, 0x78, 0x80, 0x07, 0xf8, 0x1f, 0xe0, 0x01, 0x1e, 0xe0, 0x01, 0x1e, 0xe0, 0x80, 0x80, 0x80, + 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0xc2, 0xc1, 0x01, 0xc0, 0x3f, 0xe0, 0x10, 0x08, 0x08, 0x08, + 0x04, 0x02, 0x01, 0x18, 0x18, 0x03, 0x43, 0xc0, 0x03, 0x7c, 0x80, 0x01, 0x06, 0x78, 0x80, 0x13, + 0x0c, 0x07, 0x38, 0x40, 0x20, 0x20, 0x20, 0x20, 0xc0, 0x07, 0x18, 0x20, 0x40, 0x80, 0x03, 0x03, + 0x1e, 0x1e, 0x80, 0x60, 0x18, 0x07, 0x18, 0x27, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x10, 0x10, + 0x20, 0x20, 0x40, 0x40, 0x40, 0x80, 0x9f, 0xe0, 0x01, 0x3e, 0xc0, 0x07, 0xf8, 0x1f, 0xe0, 0x03, + 0x7c +}; + +static const char PROGMEM tap_1_block_list[] = { //TAP_1 + 0x07, 0x78, 0x80, 0x07, 0xf8, 0x1f, 0xe0, 0x80, 0xc0, 0xc0, 0xe0, 0xe0, 0x81, 0x1e, 0xe0, 0xe0, + 0xe0, 0xc0, 0xc0, 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc1, 0xc3, 0x87, 0x8f, 0x1f, 0x1f, 0x1c, + 0x01, 0x1e, 0xe0, 0x80, 0xbf, 0xbf, 0x3f, 0x3f, 0x1f, 0x0f, 0x07, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x83, 0x43, 0x21, 0x10, 0x08, 0x04, 0x02, 0x01, 0x01, 0xc0, 0x3f, 0xc0, 0x20, 0x10, 0x10, + 0x08, 0x08, 0x04, 0x02, 0x01, 0x18, 0x18, 0x40, 0xc0, 0x03, 0x7c, 0x80, 0x01, 0x02, 0x04, 0x78, + 0x80, 0x13, 0x0c, 0x07, 0x38, 0xc0, 0x07, 0x18, 0x20, 0x40, 0x80, 0x73, 0xab, 0x08, 0x94, 0x64, + 0x64, 0x04, 0x0f, 0x70, 0x80, 0x18, 0x26, 0x41, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x10, 0x11, + 0x21, 0x22, 0x42, 0x40, 0x40, 0x80, 0x9f, 0xe0, 0x01, 0x3e, 0xc0, 0x07, 0xf8, 0x1f, 0xe0, 0x03, + 0x7c +}; + +static const char PROGMEM tap_2_block_list[] = { //TAP_2 + 0x07, 0x78, 0x80, 0x07, 0xf8, 0x1f, 0xe0, 0x01, 0x1e, 0xe0, 0x80, 0x80, 0x80, 0x80, 0x81, 0x1e, + 0xe0, 0x9e, 0x61, 0x24, 0x51, 0x4c, 0x8c, 0x80, 0x81, 0x01, 0x0e, 0xf0, 0xc0, 0x20, 0x10, 0x10, + 0x08, 0x08, 0x04, 0x02, 0x01, 0x18, 0x18, 0x40, 0xc0, 0x03, 0x7c, 0x80, 0x01, 0x02, 0x04, 0x78, + 0x80, 0x13, 0x0c, 0x07, 0x38, 0x40, 0x20, 0x20, 0x20, 0x20, 0xc0, 0xf0, 0x07, 0x18, 0x20, 0x40, + 0x80, 0x03, 0x03, 0x80, 0x60, 0x18, 0x07, 0x80, 0x80, 0x18, 0x26, 0x41, 0x40, 0x40, 0x40, 0x20, + 0x20, 0x20, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x40, 0x80, 0x9f, 0xe0, 0x7f, 0x7f, 0x7f, 0x7e, + 0x01, 0x3e, 0xc0, 0x07, 0xf8, 0x1f, 0xe0, 0x03, 0x7c +}; + +// idle_1 and idle_2 are identical, so share them and save some space +const char* idle_frames[NUM_IDLE_FRAMES] = { + idle_1_block_list, + idle_1_block_list, + idle_2_block_list, + idle_3_block_list, + idle_4_block_list +}; + +const char* tap_frames[NUM_TAP_FRAMES] = { + tap_1_block_list, + tap_2_block_list +}; + +// idle_1 and idle_2 are identical, so save some space +const char* idle_block_map[NUM_IDLE_FRAMES] = { + idle_1_block_map, + idle_1_block_map, + idle_2_block_map, + idle_3_block_map, + idle_4_block_map +}; + +const char* tap_block_map[NUM_TAP_FRAMES] = { + tap_1_block_map, + tap_2_block_map +}; + +#else + +static const char PROGMEM idle_frames[NUM_IDLE_FRAMES][NUM_OLED_BYTES] = { + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x78, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xe0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1e, 0xe0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1e, + 0xe0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0xc2, 0xc1, + 0x01, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xe0, 0x10, 0x08, 0x08, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x18, 0x18, 0x03, 0x43, + 0xc0, 0x00, 0x03, 0x7c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x7c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x13, 0x0c, 0x00, 0x00, 0x07, 0x38, 0x40, 0x20, 0x20, 0x20, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x18, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, + 0x03, 0x00, 0x1e, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x18, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x20, 0x40, 0x40, 0x20, 0x20, 0x10, + 0x10, 0x10, 0x20, 0x40, 0x40, 0x40, 0x80, 0x80, 0x9f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3e, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xe0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x7c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x78, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xe0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1e, 0xe0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1e, + 0xe0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0xc2, 0xc1, + 0x01, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xe0, 0x10, 0x08, 0x08, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x18, 0x18, 0x03, 0x43, + 0xc0, 0x00, 0x03, 0x7c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x7c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x13, 0x0c, 0x00, 0x00, 0x07, 0x38, 0x40, 0x20, 0x20, 0x20, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x18, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, + 0x03, 0x00, 0x1e, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x18, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x20, 0x40, 0x40, 0x20, 0x20, 0x10, + 0x10, 0x10, 0x20, 0x40, 0x40, 0x40, 0x80, 0x80, 0x9f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3e, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xe0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x7c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x78, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xe0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1e, 0xe0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1e, + 0xe0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0xc2, + 0xc1, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0x20, 0x10, 0x10, 0x08, 0x08, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x18, 0x18, 0x03, + 0x43, 0xc0, 0x03, 0x7c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x02, 0x04, 0x78, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x13, 0x0c, 0x00, 0x07, 0x38, 0x40, 0x20, 0x20, 0x20, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x18, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x03, 0x00, 0x1e, 0x1e, 0x00, 0x00, 0x00, 0x80, 0x60, 0x18, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x26, 0x41, 0x40, 0x40, 0x40, 0x20, 0x20, + 0x20, 0x10, 0x10, 0x20, 0x60, 0x40, 0x40, 0x80, 0x9f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3e, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xe0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x7c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x78, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xe0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1e, 0xe0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1e, + 0xe0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0xc2, 0xc1, + 0x01, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc0, 0x20, 0x10, 0x10, 0x08, 0x08, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x18, 0x18, 0x03, 0x43, + 0xc0, 0x00, 0x03, 0x7c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x02, 0x04, 0x78, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x13, 0x0c, 0x00, 0x00, 0x07, 0x38, 0x40, 0x20, 0x20, 0x20, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x18, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, + 0x03, 0x00, 0x1e, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x18, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x26, 0x41, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, + 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x40, 0x80, 0x9f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3e, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xe0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x7c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x78, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xe0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1e, 0xe0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1e, + 0xe0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0xc2, 0xc1, + 0x01, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xe0, 0x10, 0x08, 0x08, 0x08, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x18, 0x18, 0x03, 0x43, + 0xc0, 0x00, 0x03, 0x7c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x06, 0x78, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x13, 0x0c, 0x00, 0x00, 0x07, 0x38, 0x40, 0x20, 0x20, 0x20, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x18, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, + 0x03, 0x00, 0x1e, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x18, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x27, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, + 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x40, 0x80, 0x9f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3e, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xe0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x7c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + } + }; +static const char PROGMEM tap_frames[NUM_TAP_FRAMES][NUM_OLED_BYTES] = { + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x78, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xe0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0xe0, 0xe0, 0x81, 0x1e, 0xe0, 0x00, + 0x00, 0x00, 0xe0, 0xe0, 0xc0, 0xc0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc1, 0xc3, 0x87, 0x8f, 0x1f, 0x1f, 0x1c, 0x01, 0x1e, + 0xe0, 0x80, 0xbf, 0xbf, 0x3f, 0x3f, 0x1f, 0x0f, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x83, 0x43, 0x21, 0x10, 0x08, 0x04, 0x02, 0x01, + 0x01, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc0, 0x20, 0x10, 0x10, 0x08, 0x08, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x40, + 0xc0, 0x00, 0x03, 0x7c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x02, 0x04, 0x78, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x13, 0x0c, 0x00, 0x00, 0x07, 0x38, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x18, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, + 0xab, 0x08, 0x94, 0x64, 0x64, 0x04, 0x0f, 0x70, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x26, 0x41, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, + 0x10, 0x11, 0x21, 0x22, 0x42, 0x40, 0x40, 0x80, 0x9f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3e, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xe0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x7c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x78, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xe0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1e, 0xe0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x81, 0x1e, + 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9e, 0x61, 0x24, 0x51, 0x4c, 0x8c, 0x80, 0x81, + 0x01, 0x0e, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc0, 0x20, 0x10, 0x10, 0x08, 0x08, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x40, + 0xc0, 0x00, 0x03, 0x7c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x02, 0x04, 0x78, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x13, 0x0c, 0x00, 0x00, 0x07, 0x38, 0x40, 0x20, 0x20, 0x20, 0x20, 0xc0, 0x00, 0x00, 0x00, 0xf0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x18, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x18, 0x07, 0x80, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x26, 0x41, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, + 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x40, 0x80, 0x9f, 0xe0, 0x00, 0x7f, 0x7f, 0x7f, 0x7e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3e, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xe0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x7c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }, + }; +#endif //USE_BITMAP_COMPRESSION +#endif //OLED_DRIVER_ENABLE \ No newline at end of file diff --git a/keyboards/nullbitsco/nibble/keymaps/oled_bongocat/keymap.c b/keyboards/nullbitsco/nibble/keymaps/oled_bongocat/keymap.c index 4bdecf2c6a..327cc7720d 100644 --- a/keyboards/nullbitsco/nibble/keymaps/oled_bongocat/keymap.c +++ b/keyboards/nullbitsco/nibble/keymaps/oled_bongocat/keymap.c @@ -1,4 +1,4 @@ -/* Copyright 2020 Jonathan Law +/* Copyright 2021 Jonathan Law, Jay Greco * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -16,8 +16,10 @@ * Original: j-inc's kyria keymap */ #include QMK_KEYBOARD_H +#include "animation_frames.h" #include + enum layer_names { _MA, _FN @@ -54,12 +56,9 @@ void encoder_update_kb(uint8_t index, bool clockwise) { } #ifdef OLED_DRIVER_ENABLE -oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_90; } +#define IDLE_FRAME_DURATION 200 // Idle animation iteration rate in ms -#define TAP_FRAMES 2 // cycles through frames on keypress, 2 required -#define IDLE_FRAMES 5 -#define IDLE_FRAME_DURATION 200 // idle animation iteration rate in ms -#define ANIM_SIZE 512 // number of bytes in array, max is 1024 (minimize where possible) +oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_90; } uint32_t anim_timer = 0; uint32_t anim_sleep = 0; @@ -69,259 +68,44 @@ char wpm_str[10]; bool tap_anim = false; bool tap_anim_toggle = false; -static const char PROGMEM idle_frames[IDLE_FRAMES][ANIM_SIZE] = { - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x78, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xe0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1e, 0xe0, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1e, - 0xe0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0xc2, 0xc1, - 0x01, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xe0, 0x10, 0x08, 0x08, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x18, 0x18, 0x03, 0x43, - 0xc0, 0x00, 0x03, 0x7c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x03, 0x7c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x13, 0x0c, 0x00, 0x00, 0x07, 0x38, 0x40, 0x20, 0x20, 0x20, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x18, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, - 0x03, 0x00, 0x1e, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x18, 0x07, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x20, 0x40, 0x40, 0x20, 0x20, 0x10, - 0x10, 0x10, 0x20, 0x40, 0x40, 0x40, 0x80, 0x80, 0x9f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3e, 0xc0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xe0, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x7c, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x78, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xe0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1e, 0xe0, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1e, - 0xe0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0xc2, 0xc1, - 0x01, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xe0, 0x10, 0x08, 0x08, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x18, 0x18, 0x03, 0x43, - 0xc0, 0x00, 0x03, 0x7c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x03, 0x7c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x13, 0x0c, 0x00, 0x00, 0x07, 0x38, 0x40, 0x20, 0x20, 0x20, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x18, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, - 0x03, 0x00, 0x1e, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x18, 0x07, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x20, 0x40, 0x40, 0x20, 0x20, 0x10, - 0x10, 0x10, 0x20, 0x40, 0x40, 0x40, 0x80, 0x80, 0x9f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3e, 0xc0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xe0, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x7c, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x78, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xe0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1e, 0xe0, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1e, - 0xe0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0xc2, - 0xc1, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xc0, 0x20, 0x10, 0x10, 0x08, 0x08, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x18, 0x18, 0x03, - 0x43, 0xc0, 0x03, 0x7c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x02, 0x04, 0x78, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x13, 0x0c, 0x00, 0x07, 0x38, 0x40, 0x20, 0x20, 0x20, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x18, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x03, 0x00, 0x1e, 0x1e, 0x00, 0x00, 0x00, 0x80, 0x60, 0x18, 0x07, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x26, 0x41, 0x40, 0x40, 0x40, 0x20, 0x20, - 0x20, 0x10, 0x10, 0x20, 0x60, 0x40, 0x40, 0x80, 0x9f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3e, 0xc0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xe0, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x7c, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x78, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xe0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1e, 0xe0, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1e, - 0xe0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0xc2, 0xc1, - 0x01, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xc0, 0x20, 0x10, 0x10, 0x08, 0x08, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x18, 0x18, 0x03, 0x43, - 0xc0, 0x00, 0x03, 0x7c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x02, 0x04, 0x78, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x13, 0x0c, 0x00, 0x00, 0x07, 0x38, 0x40, 0x20, 0x20, 0x20, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x18, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, - 0x03, 0x00, 0x1e, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x18, 0x07, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x26, 0x41, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, - 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x40, 0x80, 0x9f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3e, 0xc0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xe0, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x7c, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x78, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xe0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1e, 0xe0, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1e, - 0xe0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0xc2, 0xc1, - 0x01, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xe0, 0x10, 0x08, 0x08, 0x08, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x18, 0x18, 0x03, 0x43, - 0xc0, 0x00, 0x03, 0x7c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x06, 0x78, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x13, 0x0c, 0x00, 0x00, 0x07, 0x38, 0x40, 0x20, 0x20, 0x20, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x18, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, - 0x03, 0x00, 0x1e, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x18, 0x07, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x27, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, - 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x40, 0x80, 0x9f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3e, 0xc0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xe0, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x7c, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + +// Decompress and write a precompressed bitmap frame to the OLED. +// Documentation and python compression script available at: +// https://github.com/nullbitsco/squeez-o +#ifdef USE_OLED_BITMAP_COMPRESSION +static void oled_write_compressed_P(const char* input_block_map, const char* input_block_list) { + uint16_t block_index = 0; + for (uint16_t i=0; i IDLE_FRAME_DURATION) { @@ -329,7 +113,7 @@ static void render_anim(void) { animation_phase(); } anim_sleep = timer_read32(); - } else { // turn off screen when timer threshold elapsed or reset time since last input + } else { // Turn off screen when timer threshold elapsed or reset time since last input if (timer_elapsed32(anim_sleep) > OLED_TIMEOUT) { oled_off(); } else { @@ -341,15 +125,18 @@ static void render_anim(void) { } } -// animate tap? +// Animate tap bool process_record_user(uint16_t keycode, keyrecord_t *record) { - process_record_remote_kb(keycode, record); - // check if non-mod + // Check if non-mod if ((keycode >= KC_A && keycode <= KC_0) || (keycode >= KC_TAB && keycode <= KC_SLASH)) { if (record->event.pressed) { - // display tap frames + // Display tap frames tap_anim_toggle = !tap_anim_toggle; - oled_write_raw_P(tap_frames[tap_anim_toggle], ANIM_SIZE); // hacky; only 2 frames so bool works in this scenario (return 0/1) + #ifdef USE_OLED_BITMAP_COMPRESSION + oled_write_compressed_P(tap_block_map[tap_anim_toggle], tap_frames[tap_anim_toggle]); + #else + oled_write_raw_P(tap_frames[tap_anim_toggle], NUM_OLED_BYTES); + #endif } } return true; diff --git a/keyboards/nullbitsco/nibble/keymaps/oled_bongocat/readme.md b/keyboards/nullbitsco/nibble/keymaps/oled_bongocat/readme.md index 303bed8975..81286d1afe 100644 --- a/keyboards/nullbitsco/nibble/keymaps/oled_bongocat/readme.md +++ b/keyboards/nullbitsco/nibble/keymaps/oled_bongocat/readme.md @@ -4,4 +4,6 @@ If you're looking for the Bongo Cat/WPM Counter firmware for your Nibble, this is it! The OLED occupies the bottom two left macro key spots, so there isn't anything assigned. However, if you've manually wired the oled to a different position, you can assign keys to those locations. This uses the default keymap layout so everything is where you expect it to be. +Now optimized to fit VIA support! This uses the [squeez-o](https://github.com/nullbitsco/squeez-o) tool to compress the animation frames, which reduces their program memory usage by a large amount. + ![Layout Image](http://i.imgur.com/5Q6BzAe.png) \ No newline at end of file diff --git a/keyboards/nullbitsco/nibble/keymaps/oled_bongocat/rules.mk b/keyboards/nullbitsco/nibble/keymaps/oled_bongocat/rules.mk index 53784c69f9..c7ffad546e 100644 --- a/keyboards/nullbitsco/nibble/keymaps/oled_bongocat/rules.mk +++ b/keyboards/nullbitsco/nibble/keymaps/oled_bongocat/rules.mk @@ -1,2 +1,3 @@ OLED_DRIVER_ENABLE = yes -WPM_ENABLE = yes \ No newline at end of file +WPM_ENABLE = yes +VIA_ENABLE = yes \ No newline at end of file From a8c013a145bf52a28b88154c9d1445615f7e984b Mon Sep 17 00:00:00 2001 From: Wilba Date: Fri, 16 Apr 2021 03:19:41 +1000 Subject: [PATCH 213/613] Fix audio on WT60-XT (#12526) --- keyboards/wilba_tech/wt60_xt/wt60_xt.c | 47 ++++++++++++-------------- 1 file changed, 22 insertions(+), 25 deletions(-) diff --git a/keyboards/wilba_tech/wt60_xt/wt60_xt.c b/keyboards/wilba_tech/wt60_xt/wt60_xt.c index 1f4cb96987..f575b032df 100644 --- a/keyboards/wilba_tech/wt60_xt/wt60_xt.c +++ b/keyboards/wilba_tech/wt60_xt/wt60_xt.c @@ -65,32 +65,29 @@ bool led_update_kb(led_t led_state) { wait_ms(10); // gets rid of tick - if (!is_playing_notes()) + if (led_state.caps_lock && !old_led_state.caps_lock) { - if (led_state.caps_lock && !old_led_state.caps_lock) - { - PLAY_SONG(tone_caps_on); - } - else if (!led_state.caps_lock && old_led_state.caps_lock) - { - PLAY_SONG(tone_caps_off); - } - else if (led_state.num_lock && !old_led_state.num_lock) - { - PLAY_SONG(tone_numlk_on); - } - else if (!led_state.num_lock && old_led_state.num_lock) - { - PLAY_SONG(tone_numlk_off); - } - else if (led_state.scroll_lock && !old_led_state.scroll_lock) - { - PLAY_SONG(tone_scroll_on); - } - else if (!led_state.scroll_lock && old_led_state.scroll_lock) - { - PLAY_SONG(tone_scroll_off); - } + PLAY_SONG(tone_caps_on); + } + else if (!led_state.caps_lock && old_led_state.caps_lock) + { + PLAY_SONG(tone_caps_off); + } + else if (led_state.num_lock && !old_led_state.num_lock) + { + PLAY_SONG(tone_numlk_on); + } + else if (!led_state.num_lock && old_led_state.num_lock) + { + PLAY_SONG(tone_numlk_off); + } + else if (led_state.scroll_lock && !old_led_state.scroll_lock) + { + PLAY_SONG(tone_scroll_on); + } + else if (!led_state.scroll_lock && old_led_state.scroll_lock) + { + PLAY_SONG(tone_scroll_off); } old_led_state = led_state; From 3975c712f0c850156a3e3ec24452077e5f973309 Mon Sep 17 00:00:00 2001 From: sendmmsg <47253595+sendmmsg@users.noreply.github.com> Date: Fri, 16 Apr 2021 16:23:30 +0200 Subject: [PATCH 214/613] Bug in beautifier script, compound modifiers not correctly parsed (#12595) --- keyboards/ergodox_ez/util/keymap_beautifier/KeymapBeautifier.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/keyboards/ergodox_ez/util/keymap_beautifier/KeymapBeautifier.py b/keyboards/ergodox_ez/util/keymap_beautifier/KeymapBeautifier.py index b96e4c96cd..6b6f391ce5 100755 --- a/keyboards/ergodox_ez/util/keymap_beautifier/KeymapBeautifier.py +++ b/keyboards/ergodox_ez/util/keymap_beautifier/KeymapBeautifier.py @@ -361,6 +361,8 @@ class KeymapBeautifier: args.append(arg.value) elif type(arg) is pycparser.c_ast.ID: args.append(arg.name) + elif type(arg) is pycparser.c_ast.FuncCall: + args.append(self.function_expr(arg)) return "{}({})".format(name, ",".join(args)) def key_expr(self, raw): From 09a392433a34dfcc3416c58d7f01563504abef2f Mon Sep 17 00:00:00 2001 From: Harshit Goel Date: Fri, 16 Apr 2021 19:56:19 +0530 Subject: [PATCH 215/613] Ergodone via support (#11618) Co-authored-by: Erovia --- keyboards/ergodone/config.h | 4 +- keyboards/ergodone/keymaps/via/config.h | 18 +++ keyboards/ergodone/keymaps/via/keymap.c | 196 +++++++++++++++++++++++ keyboards/ergodone/keymaps/via/readme.md | 5 + keyboards/ergodone/keymaps/via/rules.mk | 2 + 5 files changed, 223 insertions(+), 2 deletions(-) create mode 100644 keyboards/ergodone/keymaps/via/config.h create mode 100644 keyboards/ergodone/keymaps/via/keymap.c create mode 100644 keyboards/ergodone/keymaps/via/readme.md create mode 100644 keyboards/ergodone/keymaps/via/rules.mk diff --git a/keyboards/ergodone/config.h b/keyboards/ergodone/config.h index 5256d03a64..39e0ae8c75 100644 --- a/keyboards/ergodone/config.h +++ b/keyboards/ergodone/config.h @@ -4,8 +4,8 @@ #include "config_common.h" /* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED // You may want to use 0x47EC for "KTEC", which doesn't seem to be in official use as of October 2017. -#define PRODUCT_ID 0xE60D // For "EGOD"/"ErgoDone". +#define VENDOR_ID 0x1209 +#define PRODUCT_ID 0x2328 // The official ErgoDone VID and PID are documented at http://pid.codes/1209/2328/. #define DEVICE_VER 0x0001 #define MANUFACTURER K.T.E.C. diff --git a/keyboards/ergodone/keymaps/via/config.h b/keyboards/ergodone/keymaps/via/config.h new file mode 100644 index 0000000000..fc7744c763 --- /dev/null +++ b/keyboards/ergodone/keymaps/via/config.h @@ -0,0 +1,18 @@ + /* Copyright HarshitGoel96 2021 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + //Keymap specific config.h +#pragma once +#define DYNAMIC_KEYMAP_LAYER_COUNT 4 \ No newline at end of file diff --git a/keyboards/ergodone/keymaps/via/keymap.c b/keyboards/ergodone/keymaps/via/keymap.c new file mode 100644 index 0000000000..f155a4b51d --- /dev/null +++ b/keyboards/ergodone/keymaps/via/keymap.c @@ -0,0 +1,196 @@ + /* Copyright HarshitGoel96 2021 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layer_names { + QRTY, // qwerty above workman to make sure transparent does not catch unwanted keycode + SYMB, // symbols + MDIA, // media keys + EXTRA, // added extra layer for via +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Keymap 0: Basic layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | = | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | - | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | Del | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | \ | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | BkSp | A | S | D | F | G |------| |------| H | J | K | L |; / L2|' / Cmd | + * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------| + * | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | App | LGui | | Alt |Ctrl/Esc| + * ,------|------|------| |------+--------+------. + * | | | Home | | PgUp | | | + * | Space|Backsp|------| |------| Tab |Enter | + * | |ace | End | | PgDn | | | + * `--------------------' `----------------------' + */ +// If it accepts an argument (i.e, is a function), it doesn't need KC_. +// Otherwise, it needs KC_* + +[QRTY] = LAYOUT_ergodox( // layer 0 : default + // left hand + KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, + KC_DEL, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), + KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, + KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), + LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT, + ALT_T(KC_APP), KC_LGUI, + KC_HOME, + KC_SPC,KC_BSPC,KC_END, + // right hand + KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),GUI_T(KC_QUOT), + MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT, + KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, TT(SYMB), + KC_LALT, CTL_T(KC_ESC), + KC_PGUP, + KC_PGDN,KC_TAB, KC_ENT + ), +/* Keymap 1: Symbol Layer + * + * ,---------------------------------------------------. ,--------------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | + * |---------+------+------+------+------+------+------| |------+------+------+------+------+------+--------| + * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 | + * |---------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | | + * |---------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | | + * `---------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | EEP_RST | | | | | | | . | 0 | = | | + * `-----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * |Animat| | |Toggle|Solid | + * ,------|------|------| |------+------+------. + * |Bright|Bright| | | |Hue- |Hue+ | + * |ness- |ness+ |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// SYMBOLS +[SYMB] = LAYOUT_ergodox( + // left hand + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, + KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS, + KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV, + KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS, + EEP_RST ,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + RGB_MOD,KC_TRNS, + KC_TRNS, + RGB_VAD,RGB_VAI,KC_TRNS, + // right hand + KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12, + KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS, + KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS, + KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS, + RGB_TOG, RGB_M_P , + KC_TRNS, + KC_TRNS, RGB_HUD, RGB_HUI +), +/* Keymap 2: Media and mouse keys + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | | MsUp | | | | | | | | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | | | Prev | Next | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | |Brwser| + * | | |------| |------| |Back | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// MEDIA AND MOUSE +[MDIA] = LAYOUT_ergodox( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + // right hand + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, + KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_WBAK +), +[EXTRA] = LAYOUT_ergodox( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + // right hand + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, + KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_WBAK +) +}; + +// Runs constantly in the background, in a loop. + +layer_state_t layer_state_set_user(layer_state_t state) { + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); + switch (get_highest_layer(state)) { + case 1: + ergodox_right_led_1_on(); + break; + case 2: + ergodox_right_led_2_on(); + break; + case 3: + ergodox_right_led_3_on(); + break; + default: + // none + break; + } + return state; +} diff --git a/keyboards/ergodone/keymaps/via/readme.md b/keyboards/ergodone/keymaps/via/readme.md new file mode 100644 index 0000000000..223cb892ba --- /dev/null +++ b/keyboards/ergodone/keymaps/via/readme.md @@ -0,0 +1,5 @@ + +## Changelog +HarshitGoel96 + +I love my ergodone, but it needed via, so here it is. Flash using HIDBOOTLOADER as described in keyboard root read.md and enjoy via on ergodone. \ No newline at end of file diff --git a/keyboards/ergodone/keymaps/via/rules.mk b/keyboards/ergodone/keymaps/via/rules.mk new file mode 100644 index 0000000000..43061db1dd --- /dev/null +++ b/keyboards/ergodone/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes \ No newline at end of file From c32264d9b7382e86c7df75edfe3bc4154d714e25 Mon Sep 17 00:00:00 2001 From: MarioCorona Date: Sat, 17 Apr 2021 10:46:46 -0500 Subject: [PATCH 216/613] mcrown crkbd new keymap (#12092) Co-authored-by: Erovia --- keyboards/crkbd/keymaps/mcrown/config.h | 86 ++++++ keyboards/crkbd/keymaps/mcrown/glcdfont.c | 35 +++ keyboards/crkbd/keymaps/mcrown/keymap.c | 141 +++++++++ keyboards/crkbd/keymaps/mcrown/mcrown.h | 109 +++++++ keyboards/crkbd/keymaps/mcrown/oled.c | 354 ++++++++++++++++++++++ keyboards/crkbd/keymaps/mcrown/oled.h | 34 +++ keyboards/crkbd/keymaps/mcrown/readme.md | 13 + keyboards/crkbd/keymaps/mcrown/rules.mk | 18 ++ 8 files changed, 790 insertions(+) create mode 100644 keyboards/crkbd/keymaps/mcrown/config.h create mode 100644 keyboards/crkbd/keymaps/mcrown/glcdfont.c create mode 100644 keyboards/crkbd/keymaps/mcrown/keymap.c create mode 100644 keyboards/crkbd/keymaps/mcrown/mcrown.h create mode 100644 keyboards/crkbd/keymaps/mcrown/oled.c create mode 100644 keyboards/crkbd/keymaps/mcrown/oled.h create mode 100644 keyboards/crkbd/keymaps/mcrown/readme.md create mode 100644 keyboards/crkbd/keymaps/mcrown/rules.mk diff --git a/keyboards/crkbd/keymaps/mcrown/config.h b/keyboards/crkbd/keymaps/mcrown/config.h new file mode 100644 index 0000000000..e40bd639f3 --- /dev/null +++ b/keyboards/crkbd/keymaps/mcrown/config.h @@ -0,0 +1,86 @@ +/** @file config.h + * @brief config header that includes function prototypes and external variables. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * @author Mario Corona (mariocc@comunidad.unam.mx) 2021 + * + */ + +#pragma once + +/* Select hand configuration */ +#define MASTER_LEFT + +/* Comment this definition out if you want the main display to be output in horizontal mode */ +#define OLED_VERTICAL + +#ifdef RGB_MATRIX_ENABLE + #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 120 + #define RGB_MATRIX_HUE_STEP 10 + #define RGB_MATRIX_SAT_STEP 10 + #define RGB_MATRIX_VAL_STEP 10 + #define RGB_MATRIX_SPD_STEP 10 +// #define RGB_MATRIX_KEYPRESSES + #define RGB_MATRIX_FRAMEBUFFER_EFFECTS + + /* BEGIN: Disable RGB Effects */ +// #define DISABLE_RGB_MATRIX_SOLID_COLOR +// #define DISABLE_RGB_MATRIX_ALPHAS_MODS +// #define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN +// #define DISABLE_RGB_MATRIX_BREATHING +// #define DISABLE_RGB_MATRIX_BAND_SAT +// #define DISABLE_RGB_MATRIX_BAND_VAL +// #define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +// #define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +// #define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT +// #define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL +// #define DISABLE_RGB_MATRIX_CYCLE_ALL +// #define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +// #define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN +// #define DISABLE_RGB_MATRIX_CYCLE_OUT_IN +// #define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL + #define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON + #define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL + #define DISABLE_RGB_MATRIX_CYCLE_SPIRAL +// #define DISABLE_RGB_MATRIX_DUAL_BEACON + #define DISABLE_RGB_MATRIX_RAINBOW_BEACON + #define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS + #define DISABLE_RGB_MATRIX_RAINDROPS +// #define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS + + /* BEGIN: RGB_MATRIX_FRAMEBUFFER_EFFECTS */ +// #define DISABLE_RGB_MATRIX_TYPING_HEATMAP +// #define DISABLE_RGB_MATRIX_DIGITAL_RAIN + /* END: RGB_MATRIX_FRAMEBUFFER_EFFECTS */ + + /* BEGIN: RGB_MATRIX_KEYPRESSES */ +// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE +// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +// #define DISABLE_RGB_MATRIX_SPLASH +// #define DISABLE_RGB_MATRIX_MULTISPLASH +// #define DISABLE_RGB_MATRIX_SOLID_SPLASH +// #define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH + /* END: RGB_MATRIX_KEYPRESSES */ + /* END: Disable RGB Effects */ +#endif + +/* To tell the compiler to use custom font */ +#define OLED_FONT_H "keyboards/crkbd/keymaps/mcrown/glcdfont.c" diff --git a/keyboards/crkbd/keymaps/mcrown/glcdfont.c b/keyboards/crkbd/keymaps/mcrown/glcdfont.c new file mode 100644 index 0000000000..17aa1dde39 --- /dev/null +++ b/keyboards/crkbd/keymaps/mcrown/glcdfont.c @@ -0,0 +1,35 @@ +/** @file glcfont.c + * @brief mcrown glcfont module. This module includes the font for mcrown keymap. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * @author Mario Corona (mariocc@comunidad.unam.mx) 2021 + * + */ + +#include "progmem.h" + +/* Standard ASCII 5x7 font */ +static const unsigned char font[] PROGMEM = +{ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00, 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00, 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00, 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00, 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00, 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00, 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00, 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00, 0x00, 0x18, 0x24, 0x18, 0x00, 0x00, 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00, 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00, 0x26, 0x29, 0x79, 0x29, 0x26, 0x00, 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00, 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00, 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00, 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00, 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00, 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00, 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00, 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00, 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00, 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00, + 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00, 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00, 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00, 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00, 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00, 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00, 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00, 0x23, 0x13, 0x08, 0x64, 0x62, 0x00, 0x36, 0x49, 0x56, 0x20, 0x50, 0x00, 0x00, 0x08, 0x07, 0x03, 0x00, 0x00, 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00, 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, 0x00, 0x80, 0x70, 0x30, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00, + 0x72, 0x49, 0x49, 0x49, 0x46, 0x00, 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00, 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00, 0x27, 0x45, 0x45, 0x45, 0x39, 0x00, 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00, 0x41, 0x21, 0x11, 0x09, 0x07, 0x00, 0x36, 0x49, 0x49, 0x49, 0x36, 0x00, 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x40, 0x34, 0x00, 0x00, 0x00, 0x00, 0x08, 0x14, 0x22, 0x41, 0x00, 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, 0x00, 0x41, 0x22, 0x14, 0x08, 0x00, 0x02, 0x01, 0x59, 0x09, 0x06, 0x00, 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00, 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00, 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00, 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00, 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00, 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00, 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00, + 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00, 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00, 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00, 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00, 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00, 0x26, 0x49, 0x49, 0x49, 0x32, 0x00, 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00, 0x63, 0x14, 0x08, 0x14, 0x63, 0x00, 0x03, 0x04, 0x78, 0x04, 0x03, 0x00, 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00, 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00, 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00, 0x04, 0x02, 0x01, 0x02, 0x04, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x03, 0x07, 0x08, 0x00, 0x00, 0x20, 0x54, 0x54, 0x78, 0x40, 0x00, 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00, 0x38, 0x44, 0x44, 0x44, 0x28, 0x00, + 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00, 0x38, 0x54, 0x54, 0x54, 0x18, 0x00, 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00, 0x18, 0xA4, 0xA4, 0x9C, 0x78, 0x00, 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00, 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00, 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00, 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00, 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00, 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00, 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, 0xFC, 0x18, 0x24, 0x24, 0x18, 0x00, 0x18, 0x24, 0x24, 0x18, 0xFC, 0x00, 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00, 0x48, 0x54, 0x54, 0x54, 0x24, 0x00, 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00, 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, 0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00, 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, 0x00, 0x08, 0x36, 0x41, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, + 0x00, 0x41, 0x36, 0x08, 0x00, 0x00, 0x02, 0x01, 0x02, 0x04, 0x02, 0x00, 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0xF0, 0xF8, 0xF8, 0xFF, 0x38, 0xFF, 0xF8, 0xF8, 0x3F, 0xF8, 0xF8, 0xFF, 0x38, 0xFF, 0xF8, 0xF8, 0xF0, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xF8, 0xFC, 0x3E, + 0x1E, 0x06, 0x01, 0x00, 0x00, 0x00, 0x7F, 0x41, 0x41, 0x41, 0x7F, 0x00, 0x7F, 0x41, 0x41, 0x41, 0x7F, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x7E, 0x5B, 0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE, 0xDE, 0xD7, 0xDC, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x49, 0x49, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xDF, 0xBF, 0xBF, 0x00, 0xBF, 0xBF, 0xDF, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x49, 0x49, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x60, 0x60, 0xE0, 0xBF, 0x1F, 0x00, 0x7F, 0x7F, 0x07, 0x1E, 0x38, 0x1E, 0x07, 0x7F, 0x7F, 0x00, 0x7F, 0x7F, 0x0E, 0x1F, 0x3B, 0x71, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x0C, 0x0C, 0x0C, 0x00, 0x7E, 0x7E, 0x00, 0x7F, 0x7E, 0x03, 0x03, 0x00, 0x7F, 0x7E, 0x03, 0x03, 0x7E, 0x7E, 0x03, 0x03, 0x7F, 0x7E, 0x00, 0x0F, + 0x3E, 0x70, 0x3C, 0x06, 0x3C, 0x70, 0x3E, 0x0F, 0x00, 0x32, 0x7B, 0x49, 0x49, 0x3F, 0x7E, 0x00, 0x7F, 0x7E, 0x03, 0x03, 0x00, 0x1E, 0x3F, 0x69, 0x69, 0x6F, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x1F, 0x3F, 0x3C, 0x78, 0x70, 0x60, 0x00, 0x00, 0x00, 0x7F, 0x41, 0x41, 0x41, 0x7F, 0x00, 0x7F, 0x41, 0x41, 0x41, 0x7F, 0x00, 0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20, 0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00, 0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F, 0x0F, 0x7F, 0x0F, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x07, 0x0F, 0x0F, 0x7F, 0x0F, 0x7F, 0x0F, 0x0F, 0x7E, 0x0F, 0x0F, 0x7F, 0x0F, 0x7F, 0x0F, 0x0F, 0x07, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; diff --git a/keyboards/crkbd/keymaps/mcrown/keymap.c b/keyboards/crkbd/keymaps/mcrown/keymap.c new file mode 100644 index 0000000000..907e1347bb --- /dev/null +++ b/keyboards/crkbd/keymaps/mcrown/keymap.c @@ -0,0 +1,141 @@ +/** @file keymap.c + * @brief keymao.c that includes key layout and keylogs functions + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * @author Mario Corona (mariocc@comunidad.unam.mx) 2021 + * + */ + +#include "mcrown.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_QWERTY] = LAYOUT_wrapper( + /*,-------------------------------------------------|-----|--------------------------------------------------------|.*/ + _____________________QWERTY_L1______________________, _____________________QWERTY_R1______________________, + /*|--------+--------+--------+--------+--------+----| |--------+--------+--------+--------+--------+-----------|*/ + _____________________QWERTY_L2______________________, _____________________QWERTY_R2______________________, + /*|--------+--------+--------+--------+--------+----| |--------+--------+--------+--------+--------+-----------|*/ + _____________________QWERTY_L3______________________, _____________________QWERTY_R3______________________, + /*|--------+--------+--------+--------+--------+----| |--------+--------+--------+--------+--------+-----------|*/ + _____________MOD_LEFT_____________, _____________MOD_RIGHT____________ + /*|-----------------------------------| |----------------------------------|*/ + ), + + [_LOWER] = LAYOUT_wrapper( + /*,-------------------------------------------------|-----|--------------------------------------------------------|.*/ + _____________________LOWER_L1_______________________, _____________________LOWER_R1_______________________, + /*|--------+--------+--------+--------+--------+----| |--------+--------+--------+--------+--------+-----------|*/ + _____________________LOWER_L2_______________________, _____________________LOWER_R2_______________________, + /*|--------+--------+--------+--------+--------+----| |--------+--------+--------+--------+--------+-----------|*/ + _____________________LOWER_L3_______________________, _____________________LOWER_R3_______________________, + /*|--------+--------+--------+--------+--------+----| |--------+--------+--------+--------+--------+-----------|*/ + _____________MOD_LEFT_____________, _____________MOD_RIGHT____________ + /*|-----------------------------------| |----------------------------------|*/ + ), + + [_RAISE] = LAYOUT_wrapper( + /*,-------------------------------------------------|-----|--------------------------------------------------------|.*/ + _____________________RAISE_L1_______________________, _____________________RAISE_R1_______________________, + /*|--------+--------+--------+--------+--------+----| |--------+--------+--------+--------+--------+-----------|*/ + _____________________RAISE_L2_______________________, _____________________RAISE_R2_______________________, + /*|--------+--------+--------+--------+--------+----| |--------+--------+--------+--------+--------+-----------|*/ + _____________________RAISE_L3_______________________, _____________________RAISE_R3_______________________, + /*|--------+--------+--------+--------+--------+----| |--------+--------+--------+--------+--------+-----------|*/ + _____________MOD_LEFT_____________, _____________MOD_RIGHT____________ + /*|-----------------------------------| |----------------------------------|*/ + ), + + [_ADJUST] = LAYOUT_wrapper( + /*,-------------------------------------------------|-----|--------------------------------------------------------|.*/ + _____________________ADJUST_L1______________________, _____________________ADJUST_R1______________________, + /*|--------+--------+--------+--------+--------+----| |--------+--------+--------+--------+--------+-----------|*/ + _____________________ADJUST_L2______________________, _____________________ADJUST_R2______________________, + /*|--------+--------+--------+--------+--------+----| |--------+--------+--------+--------+--------+-----------|*/ + _____________________ADJUST_L3______________________, _____________________ADJUST_R3______________________, + /*|--------+--------+--------+--------+--------+----| |--------+--------+--------+--------+--------+-----------|*/ + _____________MOD_LEFT_____________, _____________MOD_RIGHT____________ + /*|-----------------------------------| |----------------------------------|*/ + ), +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record){ + bool user_records_press=true; + + if (record->event.pressed){ + add_keylog(keycode); + } + + switch (keycode){ + case QWERTY: + if (record->event.pressed){ + set_single_persistent_default_layer(_QWERTY); + } + break; + + case LOWER: + if(record->event.pressed){ + layer_on(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + }else{ + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + break; + + case RAISE: + if (record->event.pressed){ + layer_on(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + }else{ + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + break; + + case ADJUST: + if (record->event.pressed){ + layer_on(_ADJUST); + }else{ + layer_off(_ADJUST); + } + break; + + case RGB_MOD: + #ifdef RGBLIGHT_ENABLE + if(record->event.pressed){ + rgblight_mode(RGB_current_mode); + rgblight_step(); + RGB_current_mode = rgblight_get_mode(); + } + #endif + break; + + case RGBRST: + #ifdef RGBLIGHT_ENABLE + if(record->event.pressed){ + eeconfig_update_rgblight_default(); + rgblight_enable(); + RGB_current_mode = rgblight_get_mode(); + } + #endif + break; + + default: + user_records_press=false; + break; + } + + return false==user_records_press; +} diff --git a/keyboards/crkbd/keymaps/mcrown/mcrown.h b/keyboards/crkbd/keymaps/mcrown/mcrown.h new file mode 100644 index 0000000000..c3ed36eece --- /dev/null +++ b/keyboards/crkbd/keymaps/mcrown/mcrown.h @@ -0,0 +1,109 @@ +/** @file mcrown.h + * @brief mcrown header thant incluedes key layout and some definintions. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * @author Mario Corona (mariocc@comunidad.unam.mx) 2021 + * + */ + +#pragma once + +#include QMK_KEYBOARD_H +#include "oled.h" + +#define KC_XXXXX KC_NO +#define KC_LOWER LOWER +#define KC_RAISE RAISE +#define KC_CTLTB CTL_T(KC_TAB) +#define KC_GUIEI GUI_T(KC_LANG2) +#define KC_ALTKN ALT_T(KC_LANG1) + +#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__) + +/* For values greater than 0x200, substract that value and add 0x20 so the characters can be mapped */ +#define RM_LSFT(kc) ((uint8_t)(0x20)+(kc-0x200)) + +/* ######################################################################### LAYOUT BLOCKS ##################################################### */ +/* -----------------------------------------BUTTON1---BUTTON2- BUTTON3------- */ +#define _____________MOD_LEFT_____________ KC_GUIEI, KC_LOWER, KC_SPC +#define _____________MOD_RIGHT____________ KC_ENT, KC_RAISE, KC_ALTKN + + +/* ------------------------------------------------------------COL1------COL2-----COL3-----COL4-----COL5-----COL6--------- */ +#define _____________________RAISE_L1_______________________ KC_ESC, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC +#define _____________________RAISE_L2_______________________ KC_LSFT, KC_MPLY, KC_VOLU, KC_MNXT, XXXXXXX, XXXXXXX +#define _____________________RAISE_L3_______________________ KC_CTLTB, KC_CALC, KC_VOLD, KC_MPRV, KC_BRIU, KC_BRID + +#define _____________________RAISE_R1_______________________ KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL +#define _____________________RAISE_R2_______________________ KC_MINS, KC_EQL, KC_LCBR, KC_RCBR, KC_PIPE, KC_GRV +#define _____________________RAISE_R3_______________________ KC_UNDS, KC_PLUS, KC_LBRC, KC_RBRC, KC_BSLS, KC_TILD + +/* ------------------------------------------------------------COL1------COL2-----COL3-----COL4-----COL5-----COL6--------- */ +#define _____________________QWERTY_L1______________________ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T +#define _____________________QWERTY_L2______________________ KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G +#define _____________________QWERTY_L3______________________ KC_CTLTB, KC_Z, KC_X, KC_C, KC_V, KC_B + +#define _____________________QWERTY_R1______________________ KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC +#define _____________________QWERTY_R2______________________ KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT +#define _____________________QWERTY_R3______________________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT + +/* ------------------------------------------------------------COL1------COL2-----COL3-----COL4-----COL5-----COL6--------- */ +#define _____________________LOWER_L1_______________________ KC_CAPS, KC_1, KC_2, KC_3, KC_4, KC_5 +#define _____________________LOWER_L2_______________________ KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, KC_PGUP, KC_PGDN +#define _____________________LOWER_L3_______________________ KC_CTLTB, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5 + +#define _____________________LOWER_R1_______________________ KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC +#define _____________________LOWER_R2_______________________ KC_LEFT, KC_UP, KC_DOWN, KC_RIGHT, KC_HOME, KC_END +#define _____________________LOWER_R3_______________________ KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11 + +/* ------------------------------------------------------------COL1------COL2-----COL3-----COL4-----COL5-----COL6--------- */ +#define _____________________ADJUST_L1______________________ XXXXXXX, EEP_RST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX +#if defined(RGB_MATRIX_ENABLE) || defined(RGBLIGHT_ENABLE) + #define _____________________ADJUST_L2______________________ XXXXXXX, XXXXXXX, RGB_SPI, RGB_SAI, RGB_HUI, RGB_VAI + #define _____________________ADJUST_L3______________________ XXXXXXX, XXXXXXX, RGB_SPD, RGB_SAD, RGB_HUD, RGB_VAD +#else/* ---------------------------------------------------------------|---------|--------|--------|--------|------------- */ + #define _____________________ADJUST_L2______________________ M_VRSN, M_MALL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + #define _____________________ADJUST_L3______________________ M_FLSH, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX +#endif/* --------------------------------------------------------------|---------|--------|--------|--------|------------- */ +#if defined(RGB_MATRIX_ENABLE) || defined(RGBLIGHT_ENABLE) + #define _____________________ADJUST_R1______________________ RGB_TOG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + #define _____________________ADJUST_R3______________________ RGB_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX +#else/* ---------------------------------------------------------------|---------|--------|--------|--------|------------- */ + #define _____________________ADJUST_R1______________________ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + #define _____________________ADJUST_R3______________________ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX +#endif/* --------------------------------------------------------------|---------|--------|--------|--------|------------- */ +#define _____________________ADJUST_R2______________________ RGB_RMOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + +/* Each layer gets a name for readability */ +typedef enum custom_layers { + _QWERTY, + _DVORAK, + _COLEMAK, + _LOWER, + _RAISE, + _ADJUST, + _NUMPAD, + _MAX_LAYERS +}CUSTOM_LAYERS_T; + +/* To be used to identify the current working layer */ +typedef enum custom_keycodes{ + QWERTY = SAFE_RANGE, + LOWER, + RAISE, + ADJUST, + BACKLIT, + RGBRST +}CUSTOM_KEYCODES_T; diff --git a/keyboards/crkbd/keymaps/mcrown/oled.c b/keyboards/crkbd/keymaps/mcrown/oled.c new file mode 100644 index 0000000000..0e245e9004 --- /dev/null +++ b/keyboards/crkbd/keymaps/mcrown/oled.c @@ -0,0 +1,354 @@ +/** @file oled.h + * @brief mcrown oled service implementation. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * @author Mario Corona (mariocc@comunidad.unam.mx) 2021 + * + */ + +#include QMK_KEYBOARD_H +#include +#include +#include "mcrown.h" +#include "oled.h" + +#define ASCII_TABLE_LENGTH (0x80) +#define KEYLOG_STRING_STARTUP (KEYLOG_EOL_LEN+1) +#define ALT_CODE (0x7E) +#define SPECIAL_KEYS_SHIFT(kc) (0x18+(kc)) + +static void render_keylogger_status(void); + +static char keylog_str[KEYLOG_EOL_LEN] = {' '}; +static uint16_t log_timer = 0; +static uint8_t current_cursor_pos=0; +static uint32_t cursor_oled_timer = 0; +static uint32_t standby_oled_timer = 0; +static char last_c=' '; + +/* Provides the ASCII value or the address of the character selected of the OLED font specified in glcfont.c */ +static const char ascii_t[ASCII_TABLE_LENGTH] = { + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ + /* | | | | | | | | | | | | | | | | */ + 0x0F, 0x1A, 0x1B, 0x19, 0x18, 0x0E, ' ', ' ', 0x11, 0x1C, 0x97, ' ', ' ', ' ', ' ', ' ', /* 0 */ + /* | | | | | | | | | | | | | | | | */ + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 0x1D, ' ', ' ', ' ', ' ', /* 1 */ + /* | | | | | | | | | | | | | | | | */ + 0x16, '!', '"', '#', '$', '%', '&', '\'', '(', ')', '*', '+', ',', '-', '.', '/', /* 2 */ + /* | | | | | | | | | | | | | | | | */ + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=', '>', '?', /* 3 */ + /* | | | | | | | | | | | | | | | | */ + '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', /* 4 */ + /* | | | | | | | | | | | | | | | | */ + 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '[', '\\', ']', '^', '_', /* 5 */ + /* | | | | | | | | | | | | | | | | */ + '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', /* 6 */ + /* | | | | | | | | | | | | | | | | */ + 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~', 0x7F, /* 7 */ +}; + +/* This table is to remap and get the corresponding ASCII value based on the KEYCODE (taken as the index of the array) of quatum_keycodes.h module */ +static const unsigned char code_to_ascii[ASCII_TABLE_LENGTH] = { + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ + /* | | | | | | | | | | | | | | | | */ + 0x00, 0x00, 0x00, 0x00, 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', /* 0 */ + /* | | | | | | | | | | | | | | | | */ + 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '1', '2', /* 1 */ + /* | | | | | | | | | | | | | | | | */ + '3', '4', '5', '6', '7', '8', '9', '0', 0x0A, 0x1B, 0x08, 0x09, ' ', '-', '=', '[', /* 2 */ + /* | | | | | | | | | | | | | | | | */ + ']', '\\', 0x00, ';', '\'', '`', ',', '.', '/', 0x00, 0x00, 0x00, 0x00, 0x00, '!', '@', /* 3 */ + /* | | | | | | | | | | | | | | | | */ + '#', '$', '%', '^', '&', '*', '(', ')', 0x00, 0x00, 0x00, 0x00, 0x00, '_', '+', '{', /* 4 */ + /* | | | | | | | | | | | | | | | | */ + '}', '|', 0x00, 0x00, 0x00, '~', 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 5 */ + /* | | | | | | | | | | | | | | | | */ + 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, /* 6 */ + /* | | | | | | | | | | | | | | | | */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, /* 7 */ +}; + +/** @brief maps the keycode to get the ascii value. + * + * If any argument is invalid, the function has no effect. + * + * @param keycode value of the pressed key. + * @return ascii value of the pressed key or a special value for non-ascii keys. + */ +inline static char get_ascii(int16_t keycode){ + uint8_t ascii_idx=0x00; + + if(keycode 300){ + cursor_oled_timer = timer_read32(); + cursor_f=!cursor_f; + } + oled_write_P(PSTR("\n>:"), false); + if(current_cursor_pos>(KEYLOG_LEN-1)){ + current_cursor_pos=0; + memset(keylog_str, ' ', sizeof(char)*KEYLOG_EOL_LEN); + /* Here the EOL is to clear with white spaces all the keylog area */ + keylog_str[KEYLOG_EOL_LEN-1] = '\0'; + oled_write(keylog_str, false); + /* Reset EOL to the begining of the keylog string */ + keylog_str[0] = '\0'; + } + oled_write(keylog_str, false); + oled_write_char(last_c, cursor_f); + +} + +/** @brief displays the current active layout. + * + * If any argument is invalid, the function has no effect. + * + * @param void. + * @return void. + */ +void render_layout_state(void){ + CUSTOM_LAYERS_T current_layer; + current_layer=(CUSTOM_LAYERS_T)get_highest_layer(layer_state); + +#ifdef OLED_VERTICAL + oled_write_P(PSTR("Lyt:\n"), false); +#else + oled_write_P(PSTR("Layout: "), false); +#endif + + switch (current_layer){ +#ifdef OLED_VERTICAL + case _COLEMAK: + oled_write_P(PSTR("Clmak\n"), false); + break; + + case _DVORAK: + oled_write_P(PSTR("Dvak\n"), false); + break; + + case _QWERTY: + oled_write_P(PSTR("Qwty\n"), false); + break; + + default: + oled_write_P(PSTR("Undf\n"), false); + break; + +#else + case _COLEMAK: + oled_write_P(PSTR("Colemak\n"), false); + break; + + case _DVORAK: + oled_write_P(PSTR("Dvorak\n"), false); + break; + + case _QWERTY: + oled_write_P(PSTR("Qwerty\n"), false); + break; + + default: + oled_write_P(PSTR("Undefined\n"), false); + break; +#endif + } +} + +/** @brief displays the current active layer. + * + * If any argument is invalid, the function has no effect. + * + * @param void. + * @return void. + */ +void render_layer_state(void){ + CUSTOM_LAYERS_T current_layer; + current_layer=(CUSTOM_LAYERS_T)get_highest_layer(layer_state); + +#ifdef OLED_VERTICAL + oled_write_P(PSTR("Lyr:\n"), false); +#else + oled_write_P(PSTR("Layer:"), false); +#endif + + switch(current_layer){ +#ifdef OLED_VERTICAL + case _LOWER: + oled_write_P(PSTR("Lwr\n"), true); + break; + + case _RAISE: + oled_write_P(PSTR("Ris\n"), true); + break; + + case _ADJUST: + oled_write_P(PSTR("Adj\n"), true); + break; + + case _NUMPAD: + oled_write_P(PSTR("Num\n"), true); + break; + + default: + oled_write_P(PSTR("Def\n"), false); + break; + +#else + case _LOWER: + oled_write_P(PSTR(" Lower "), true); + break; + + case _RAISE: + oled_write_P(PSTR(" Raise "), true); + break; + + case _ADJUST: + oled_write_P(PSTR(" Adjust "), true); + break; + + case _NUMPAD: + oled_write_P(PSTR(" Numpad "), true); + break; + + default: + oled_write_P(PSTR(" Default "), false); + break; +#endif + } +} + +/** @brief displays the current status of the main display/ + * + * If any argument is invalid, the function has no effect. + * + * @param void. + * @return void. + */ +void render_status(void){ + render_layout_state(); + oled_write_P(PSTR("\n"), false); + render_layer_state(); + render_keylogger_status(); +} + +/** @brief renders the logo to be displayed. + * + * If any argument is invalid, the function has no effect. + * + * @param void. + * @return void. + */ +static void render_logo(void){ + static const char PROGMEM qmk_logo[] = { + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, + 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, + 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, + 0x00}; + + oled_write_P(qmk_logo, false); +} + +/** @brief executes the actions for both displays. + * + * If any argument is invalid, the function has no effect. + * + * @param void. + * @return void. + */ +void oled_task_user(void){ + if (timer_elapsed32(standby_oled_timer) > 15000){ + oled_off(); + }else{ + oled_on(); + if(true==is_master){ + render_status(); + }else{ + render_logo(); + oled_write_P(PSTR("\n"), false); + oled_scroll_left(); + } + } +} + +/** @brief process the current key and add it to the keylog string. + * + * If any argument is invalid, the function has no effect. + * + * @param keycode pressed key. + * @return void. + */ +extern void add_keylog(uint16_t keycode){ + if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)){ + keycode&=0x00FF; + } + + if(current_cursor_pos>(KEYLOG_LEN-1)||(current_cursor_pos>KEYLOG_STRING_STARTUP)){ + current_cursor_pos=0; + last_c=get_ascii(keycode); + current_cursor_pos++; + }else{ + if(keycode <= KC_TILD){ + keylog_str[current_cursor_pos]=last_c; + last_c=get_ascii(keycode); + current_cursor_pos++; + } + keylog_str[current_cursor_pos] = '\0'; + } + + log_timer = timer_read(); + + standby_oled_timer = timer_read32(); +} diff --git a/keyboards/crkbd/keymaps/mcrown/oled.h b/keyboards/crkbd/keymaps/mcrown/oled.h new file mode 100644 index 0000000000..7e7c746b99 --- /dev/null +++ b/keyboards/crkbd/keymaps/mcrown/oled.h @@ -0,0 +1,34 @@ +/** @file oled.h + * @brief oled header that includes function prototypes and external variables. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * @author Mario Corona (mariocc@comunidad.unam.mx) 2021 + * + */ +#pragma once + +#include +#include "mcrown.h" + +#ifdef OLED_VERTICAL +#define KEYLOG_LEN (48) +#else +#define KEYLOG_LEN (19) +#endif + +#define KEYLOG_EOL_LEN (KEYLOG_LEN+1) + +extern void add_keylog(uint16_t keycode); +extern void update_log(void); diff --git a/keyboards/crkbd/keymaps/mcrown/readme.md b/keyboards/crkbd/keymaps/mcrown/readme.md new file mode 100644 index 0000000000..e6034b1234 --- /dev/null +++ b/keyboards/crkbd/keymaps/mcrown/readme.md @@ -0,0 +1,13 @@ +![the-frey-layout](https://raw.githubusercontent.com/MarioCorona/mcrown_pics/main/mcrown_layout.png) + +# Keyboard layout by MCrown + +This is all four layers: + +- The top indicates the RAISE layer +- The middle indicates the DEFAULT layer +- The bottom indicates the LOWER layer +- Green indicated ADJUST layer + +All the keys respond as you'd expect to the 'shift' key - i.e. on a UK/GB keyboard, `/` becomes `?` and so on. + diff --git a/keyboards/crkbd/keymaps/mcrown/rules.mk b/keyboards/crkbd/keymaps/mcrown/rules.mk new file mode 100644 index 0000000000..df09acc6c0 --- /dev/null +++ b/keyboards/crkbd/keymaps/mcrown/rules.mk @@ -0,0 +1,18 @@ + +# Build Options +# change to "no" to disable the options, or define them in the Makefile in +# the appropriate keymap folder that will get included automatically +# +MOUSEKEY_ENABLE = no # Mouse keys(+4700) +EXTRAKEY_ENABLE = no # Audio control and System control(+450) +RGB_MATRIX_ENABLE = yes # Enable RGB Matrix. +OLED_DRIVER_ENABLE = yes + +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend + +# If you want to change the display of OLED, you need to change here +SRC += ./lib/rgb_state_reader.c \ + ./lib/layer_state_reader.c \ + ./lib/logo_reader.c \ + ./oled.c\ From d0973e1cfb9f0a2643a30128ba119e76c6fe2f3c Mon Sep 17 00:00:00 2001 From: Pierre Chevalier Date: Sun, 18 Apr 2021 16:51:45 +0100 Subject: [PATCH 217/613] Add ferris 0.2 (#12133) Co-authored-by: Ryan --- keyboards/ferris/0_1/matrix.c | 77 +++---- keyboards/ferris/0_1/readme.md | 17 ++ keyboards/ferris/0_2/0_2.c | 17 ++ keyboards/ferris/0_2/0_2.h | 43 ++++ keyboards/ferris/0_2/chconf.h | 40 ++++ keyboards/ferris/0_2/config.h | 80 ++++++++ keyboards/ferris/0_2/halconf.h | 30 +++ keyboards/ferris/0_2/matrix.c | 255 ++++++++++++++++++++++++ keyboards/ferris/0_2/mcuconf.h | 36 ++++ keyboards/ferris/0_2/readme.md | 17 ++ keyboards/ferris/0_2/rules.mk | 25 +++ keyboards/ferris/keymaps/test/config.h | 20 ++ keyboards/ferris/keymaps/test/keymap.c | 13 ++ keyboards/ferris/keymaps/test/readme.md | 5 + keyboards/ferris/keymaps/test/rules.mk | 1 + keyboards/ferris/readme.md | 5 +- keyboards/ferris/sweep/readme.md | 18 ++ 17 files changed, 644 insertions(+), 55 deletions(-) create mode 100644 keyboards/ferris/0_1/readme.md create mode 100644 keyboards/ferris/0_2/0_2.c create mode 100644 keyboards/ferris/0_2/0_2.h create mode 100644 keyboards/ferris/0_2/chconf.h create mode 100644 keyboards/ferris/0_2/config.h create mode 100644 keyboards/ferris/0_2/halconf.h create mode 100644 keyboards/ferris/0_2/matrix.c create mode 100644 keyboards/ferris/0_2/mcuconf.h create mode 100644 keyboards/ferris/0_2/readme.md create mode 100644 keyboards/ferris/0_2/rules.mk create mode 100644 keyboards/ferris/keymaps/test/config.h create mode 100644 keyboards/ferris/keymaps/test/keymap.c create mode 100644 keyboards/ferris/keymaps/test/readme.md create mode 100644 keyboards/ferris/keymaps/test/rules.mk create mode 100644 keyboards/ferris/sweep/readme.md diff --git a/keyboards/ferris/0_1/matrix.c b/keyboards/ferris/0_1/matrix.c index e13c35d358..0dfb150b6c 100644 --- a/keyboards/ferris/0_1/matrix.c +++ b/keyboards/ferris/0_1/matrix.c @@ -72,40 +72,25 @@ uint8_t init_mcp23017(void) { // - unused : input : 1 // - input : input : 1 // - driving : output : 0 - mcp23017_status = i2c_start(I2C_ADDR_WRITE, I2C_TIMEOUT); - if (mcp23017_status) goto out; - mcp23017_status = i2c_write(IODIRA, I2C_TIMEOUT); - if (mcp23017_status) goto out; // This means: we will read all the bits on GPIOA - mcp23017_status = i2c_write(0b11111111, I2C_TIMEOUT); - if (mcp23017_status) goto out; // This means: we will write to the pins 0-4 on GPIOB (in select_rows) - mcp23017_status = i2c_write(0b11110000, I2C_TIMEOUT); - if (mcp23017_status) goto out; - i2c_stop(); - - // set pull-up - // - unused : on : 1 - // - input : on : 1 - // - driving : off : 0 - mcp23017_status = i2c_start(I2C_ADDR_WRITE, I2C_TIMEOUT); - if (mcp23017_status) goto out; - mcp23017_status = i2c_write(GPPUA, I2C_TIMEOUT); - if (mcp23017_status) goto out; - // This means: we will read all the bits on GPIOA - mcp23017_status = i2c_write(0b11111111, I2C_TIMEOUT); - if (mcp23017_status) goto out; - // This means: we will write to the pins 0-4 on GPIOB (in select_rows) - mcp23017_status = i2c_write(0b11110000, I2C_TIMEOUT); - if (mcp23017_status) goto out; - -out: - i2c_stop(); + uint8_t buf[] = {IODIRA, 0b11111111, 0b11110000}; + mcp23017_status = i2c_transmit(I2C_ADDR_WRITE, buf, sizeof(buf), I2C_TIMEOUT); + if (!mcp23017_status) { + // set pull-up + // - unused : on : 1 + // - input : on : 1 + // - driving : off : 0 + // This means: we will read all the bits on GPIOA + // This means: we will write to the pins 0-4 on GPIOB (in select_rows) + uint8_t pullup_buf[] = {GPPUA, 0b11111111, 0b11110000}; + mcp23017_status = i2c_transmit(I2C_ADDR_WRITE, pullup_buf, sizeof(pullup_buf), I2C_TIMEOUT); + } return mcp23017_status; } /* matrix state(1:on, 0:off) */ -static matrix_row_t matrix[MATRIX_ROWS]; // debounced values +static matrix_row_t matrix[MATRIX_ROWS]; // debounced values static matrix_row_t read_cols(uint8_t row); static void init_cols(void); @@ -124,7 +109,7 @@ void matrix_init_custom(void) { // initialize matrix state: all keys off for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - matrix[i] = 0; + matrix[i] = 0; } } @@ -217,25 +202,18 @@ static matrix_row_t read_cols(uint8_t row) { if (mcp23017_status) { // if there was an error return 0; } else { - uint8_t data = 0; - mcp23017_status = i2c_start(I2C_ADDR_WRITE, I2C_TIMEOUT); - if (mcp23017_status) goto out; - mcp23017_status = i2c_write(GPIOA, I2C_TIMEOUT); - if (mcp23017_status) goto out; - mcp23017_status = i2c_start(I2C_ADDR_READ, I2C_TIMEOUT); - if (mcp23017_status) goto out; - mcp23017_status = i2c_read_nack(I2C_TIMEOUT); - if (mcp23017_status < 0) goto out; + uint8_t buf[] = {GPIOA}; + mcp23017_status = i2c_transmit(I2C_ADDR_WRITE, buf, sizeof(buf), I2C_TIMEOUT); // We read all the pins on GPIOA. // The initial state was all ones and any depressed key at a given column for the currently selected row will have its bit flipped to zero. // The return value is a row as represented in the generic matrix code were the rightmost bits represent the lower columns and zeroes represent non-depressed keys while ones represent depressed keys. // Since the pins connected to eact columns are sequential, and counting from zero up (col 5 -> GPIOA0, col 6 -> GPIOA1 and so on), the only transformation needed is a bitwise not to swap all zeroes and ones. - data = ~((uint8_t)mcp23017_status); - mcp23017_status = I2C_STATUS_SUCCESS; - out: - i2c_stop(); - // return reverse_bits(data, MATRIX_COLS_PER_SIDE); - return data; + uint8_t data[] = {0}; + if (!mcp23017_status) { + mcp23017_status = i2c_receive(I2C_ADDR_READ, data, sizeof(data), I2C_TIMEOUT); + data[0] = ~(data[0]); + } + return data[0]; } } } @@ -266,17 +244,10 @@ static void select_row(uint8_t row) { if (mcp23017_status) { // if there was an error // do nothing } else { - mcp23017_status = i2c_start(I2C_ADDR_WRITE, I2C_TIMEOUT); - if (mcp23017_status) goto out; - mcp23017_status = i2c_write(GPIOB, I2C_TIMEOUT); - if (mcp23017_status) goto out; // Select the desired row by writing a byte for the entire GPIOB bus where only the bit representing the row we want to select is a zero (write instruction) and every other bit is a one. // Note that the row - MATRIX_ROWS_PER_SIDE reflects the fact that being on the right hand, the columns are numbered from MATRIX_ROWS_PER_SIDE to MATRIX_ROWS, but the pins we want to write to are indexed from zero up on the GPIOB bus. - mcp23017_status = i2c_write(0xFF & ~(1 << (row - MATRIX_ROWS_PER_SIDE)), I2C_TIMEOUT); - - if (mcp23017_status) goto out; - out: - i2c_stop(); + uint8_t buf[] = {GPIOB, 0xFF & ~(1 << (row - MATRIX_ROWS_PER_SIDE))}; + mcp23017_status = i2c_transmit(I2C_ADDR_WRITE, buf, sizeof(buf), I2C_TIMEOUT); } } } diff --git a/keyboards/ferris/0_1/readme.md b/keyboards/ferris/0_1/readme.md new file mode 100644 index 0000000000..336ee3863e --- /dev/null +++ b/keyboards/ferris/0_1/readme.md @@ -0,0 +1,17 @@ +# Ferris 0.1 + +![Ferris 0.1 - base, top view](https://i.imgur.com/s6nTn0Ch.jpg) +![Ferris 0.1 - base, bottom view](https://i.imgur.com/Ymlac2Ah.jpg) + +An atmega32u4 based split 34 keys column staggered keyboard named and decorated after the rustlang mascott. All PCB files and some thoughts on the design are available on the [project's github page](https://github.com/pierrechevalier83/ferris) + +* Keyboard Maintainer: [Pierre Chevalier](https://github.com/pierrechevalier83) +* Hardware Supported: + * Ferris 0.1: atmega32u4 chip. Comes in 4 variants: base, low, high and compact +* Hardware Availability: Pierre Chevalier has been selling keyboard kits (see the #ferris channel in the 40% discord chat). Wider availability is on the horizon. + +Make examples for this keyboard (after setting up your build environment): + + make ferris/0_1:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/ferris/0_2/0_2.c b/keyboards/ferris/0_2/0_2.c new file mode 100644 index 0000000000..519961dd38 --- /dev/null +++ b/keyboards/ferris/0_2/0_2.c @@ -0,0 +1,17 @@ +/* +Copyright 2020 Pierre Chevalier + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "0_2.h" diff --git a/keyboards/ferris/0_2/0_2.h b/keyboards/ferris/0_2/0_2.h new file mode 100644 index 0000000000..4602637ca6 --- /dev/null +++ b/keyboards/ferris/0_2/0_2.h @@ -0,0 +1,43 @@ +/* +Copyright 2020 Pierre Chevalier + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +// clang-format off + +/* left hand right hand */ +#define LAYOUT(\ + K0_0, K0_1, K0_2, K0_3, K0_4, K0_5, K0_6, K0_7, K0_8, K0_9,\ + K1_0, K1_1, K1_2, K1_3, K1_4, K1_5, K1_6, K1_7, K1_8, K1_9,\ + K2_0, K2_1, K2_2, K2_3, K2_4, K2_5, K2_6, K2_7, K2_8, K2_9,\ + K3_3, K3_4, K3_5, K3_6)\ +/* matrix positions */\ +{\ + {K0_0, K0_1, K0_2, K0_3, K0_4},\ + {K1_0, K1_1, K1_2, K1_3, K1_4},\ + {K2_0, K2_1, K2_2, K2_3, K2_4},\ + {KC_NO, KC_NO, KC_NO, K3_3, K3_4},\ + \ + {K0_5, K0_6, K0_7, K0_8, K0_9},\ + {K1_5, K1_6, K1_7, K1_8, K1_9},\ + {K2_5, K2_6, K2_7, K2_8, K2_9},\ + {K3_5, K3_6, KC_NO, KC_NO, KC_NO}\ +} + +// clang-format on diff --git a/keyboards/ferris/0_2/chconf.h b/keyboards/ferris/0_2/chconf.h new file mode 100644 index 0000000000..c72955f65d --- /dev/null +++ b/keyboards/ferris/0_2/chconf.h @@ -0,0 +1,40 @@ +/* Copyright 2020 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/ferris/0_2/chconf.h -r platforms/chibios/common/configs/chconf.h` + */ + +#pragma once + +#define CH_CFG_ST_FREQUENCY 10000 + +#define CH_CFG_OPTIMIZE_SPEED FALSE + +#define CH_CFG_USE_REGISTRY TRUE + +#define CH_CFG_USE_WAITEXIT TRUE + +#define CH_CFG_USE_CONDVARS TRUE + +#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE + +#define CH_CFG_USE_MESSAGES TRUE + +#define CH_CFG_USE_MAILBOXES TRUE + +#include_next diff --git a/keyboards/ferris/0_2/config.h b/keyboards/ferris/0_2/config.h new file mode 100644 index 0000000000..958cf4356d --- /dev/null +++ b/keyboards/ferris/0_2/config.h @@ -0,0 +1,80 @@ +/* +Copyright 2020 Pierre Chevalier + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xC2AB +#define PRODUCT_ID 0x0001 +#define DEVICE_VER 0x0002 +#define MANUFACTURER Pierre +#define PRODUCT Ferris the keeb + +/* key matrix size */ +#define MATRIX_ROWS 8 +#define MATRIX_COLS 10 + +#define MATRIX_ROWS_PER_SIDE (MATRIX_ROWS / 2) +#define MATRIX_COLS_PER_SIDE (MATRIX_COLS / 2) + +#define UNUSED_MCU 24 +#define UNUSED_MCP 7 + +// wiring +#define MATRIX_ROW_PINS_MCU \ + { B7, B6, B5, A2 } +#define MATRIX_COL_PINS_MCU \ + { B8, B4, B3, A15, A14 } +#define UNUSED_PINS_MCU \ + { A0, A1, A3, A4, A5, A6, A7, A8, A9, A10, A13, B0, B1, B2, B9, B12, B13, B14, B15, C13, C14, C15, F0, F1 } +#define MATRIX_ROW_PINS_MCP \ + { B0, B1, B2, B3 } +#define MATRIX_COL_PINS_MCP \ + { A0, A1, A2, A3, A4 } +#define UNUSED_PINS_MCP \ + { B4, B5, B6, B7, A5, A6, A7 } + +#define MATRIX_ROW_PINS \ + { B7, B6, B5, A2, A0, A0, A0, A0 } +#define MATRIX_COL_PINS \ + { B8, B4, B3, A15, A14, A1, A1, A1, A1, A1 } +#define UNUSED_PINS \ + { A3, A4, A5, A6, A7, A8, A9, A10, A13, B0, B1, B2, B9, B12, B13, B14, B15, C13, C14, C15, F0, F1 } + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* i2c settings */ + +#define I2C_DRIVER I2CD2 +#define I2C1_SCL_BANK GPIOB +#define I2C1_SCL 10 +#define I2C1_SDA_BANK GPIOB +#define I2C1_SDA 11 +#define I2C1_TIMINGR_PRESC 2U +#define I2C1_TIMINGR_SCLDEL 1U +#define I2C1_TIMINGR_SDADEL 0U +#define I2C1_TIMINGR_SCLH 9U +#define I2C1_TIMINGR_SCLL 26U +#define I2C1_SCL_PAL_MODE 1 +#define I2C1_SDA_PAL_MODE 1 diff --git a/keyboards/ferris/0_2/halconf.h b/keyboards/ferris/0_2/halconf.h new file mode 100644 index 0000000000..037cbbdb40 --- /dev/null +++ b/keyboards/ferris/0_2/halconf.h @@ -0,0 +1,30 @@ +/* Copyright 2020 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/ferris/0_2/halconf.h -r platforms/chibios/common/configs/halconf.h` + */ + +#pragma once + +#define HAL_USE_I2C TRUE + +#define HAL_USE_PWM TRUE + +#define HAL_USE_SPI TRUE + +#include_next diff --git a/keyboards/ferris/0_2/matrix.c b/keyboards/ferris/0_2/matrix.c new file mode 100644 index 0000000000..afa8a344cd --- /dev/null +++ b/keyboards/ferris/0_2/matrix.c @@ -0,0 +1,255 @@ +/* +Copyright 2013 Oleg Kostyuk + 2020 Pierre Chevalier + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +/* + * This code was heavily inspired by the ergodox_ez keymap, and modernized + * to take advantage of the quantum.h microcontroller agnostics gpio control + * abstractions and use the macros defined in config.h for the wiring as opposed + * to repeating that information all over the place. + */ + +#include QMK_KEYBOARD_H +#include "i2c_master.h" +#include + +extern i2c_status_t mcp23017_status; +#define MCP23017_I2C_TIMEOUT 1000 +#define I2C_WRITE 0x00 +#define I2C_READ 0x01 +// For a better understanding of the i2c protocol, this is a good read: +// https://www.robot-electronics.co.uk/i2c-tutorial + +// I2C address: +// See the datasheet, section 3.3.1 on addressing I2C devices and figure 3-6 for an +// illustration +// http://ww1.microchip.com/downloads/en/devicedoc/20001952c.pdf +// All address pins of the mcp23017 are connected to the ground on the ferris +// | 0 | 1 | 0 | 0 | A2 | A1 | A0 | +// | 0 | 1 | 0 | 0 | 0 | 0 | 0 | +#define I2C_ADDR 0b0100000 +#define I2C_ADDR_WRITE ((I2C_ADDR << 1) | I2C_WRITE) +#define I2C_ADDR_READ ((I2C_ADDR << 1) | I2C_READ) + +// Register addresses +// See https://github.com/adafruit/Adafruit-MCP23017-Arduino-Library/blob/master/Adafruit_MCP23017.h +#define IODIRA 0x00 // i/o direction register +#define IODIRB 0x01 +#define GPPUA 0x0C // GPIO pull-up resistor register +#define GPPUB 0x0D +#define MCP23017_GPIOA 0x12 // general purpose i/o port register (write modifies OLAT) +#define MCP23017_GPIOB 0x13 +#define OLATA 0x14 // output latch register +#define OLATB 0x15 + +bool i2c_initialized = 0; +i2c_status_t mcp23017_status = I2C_ADDR; + +#define I2C2_SCL_BANK GPIOB +#define I2C2_SCL 10 +#define I2C2_SDA_BANK GPIOB +#define I2C2_SDA 11 + +uint8_t init_mcp23017(void) { + print("init mcp23017\n"); + mcp23017_status = I2C_ADDR; + + // I2C subsystem + if (i2c_initialized == 0) { + i2c_init(); // on pins D(1,0) + i2c_initialized = true; + wait_ms(MCP23017_I2C_TIMEOUT); + } + + // set pin direction + // - unused : input : 1 + // - input : input : 1 + // - driving : output : 0 + // This means: we will read all the bits on GPIOA + // This means: we will write to the pins 0-4 on GPIOB (in select_rows) + uint8_t buf[] = {IODIRA, 0b11111111, 0b11110000}; + print("before transmit\n"); + mcp23017_status = i2c_transmit(I2C_ADDR_WRITE, buf, sizeof(buf), MCP23017_I2C_TIMEOUT); + uprintf("after transmit %i\n", mcp23017_status); + if (!mcp23017_status) { + // set pull-up + // - unused : on : 1 + // - input : on : 1 + // - driving : off : 0 + // This means: we will read all the bits on GPIOA + // This means: we will write to the pins 0-4 on GPIOB (in select_rows) + uint8_t pullup_buf[] = {GPPUA, 0b11111111, 0b11110000}; + mcp23017_status = i2c_transmit(I2C_ADDR_WRITE, pullup_buf, sizeof(pullup_buf), MCP23017_I2C_TIMEOUT); + uprintf("after transmit2 %i\n", mcp23017_status); + } + return mcp23017_status; +} + +/* matrix state(1:on, 0:off) */ +static matrix_row_t matrix[MATRIX_ROWS]; // debounced values + +static matrix_row_t read_cols(uint8_t row); +static void unselect_row(uint8_t row); +static void unselect_rows(void); +static void unselect_cols(void); +static void select_row(uint8_t row); + +static uint8_t mcp23017_reset_loop; + +static void init_mcu_pins(void) { + unselect_rows(); + unselect_cols(); +} + +void matrix_init_custom(void) { + debug_enable = true; + debug_matrix = true; + dprint("matrix_init_custom\n"); + // initialize row and col + init_mcu_pins(); + mcp23017_status = init_mcp23017(); + + // initialize matrix state: all keys off + for (uint8_t i = 0; i < MATRIX_ROWS; i++) { + matrix[i] = 0; + } +} + +// Reads and stores a row, returning +// whether a change occurred. +static inline bool store_matrix_row(matrix_row_t current_matrix[], uint8_t index) { + matrix_row_t temp = read_cols(index); + if (current_matrix[index] != temp) { + current_matrix[index] = temp; + return true; + } + return false; +} + +bool matrix_scan_custom(matrix_row_t current_matrix[]) { + if (mcp23017_status) { // if there was an error + if (++mcp23017_reset_loop == 0) { + // if (++mcp23017_reset_loop >= 1300) { + // since mcp23017_reset_loop is 8 bit - we'll try to reset once in 255 matrix scans + // this will be approx bit more frequent than once per second + print("trying to reset mcp23017\n"); + mcp23017_status = init_mcp23017(); + if (mcp23017_status) { + print("right side not responding\n"); + } else { + print("right side attached\n"); + } + } + } + + bool changed = false; + for (uint8_t i = 0; i < MATRIX_ROWS_PER_SIDE; i++) { + // select rows from left and right hands + uint8_t left_index = i; + uint8_t right_index = i + MATRIX_ROWS_PER_SIDE; + + changed |= store_matrix_row(current_matrix, left_index); + changed |= store_matrix_row(current_matrix, right_index); + + unselect_rows(); + } + + return changed; +} + +static matrix_row_t read_cols(uint8_t row) { + select_row(row); + if (row < MATRIX_ROWS_PER_SIDE) { + pin_t matrix_col_pins_mcu[MATRIX_COLS_PER_SIDE] = MATRIX_COL_PINS_MCU; + matrix_row_t current_row_value = 0; + matrix_io_delay(); + // For each col... + for (uint8_t col_index = 0; col_index < MATRIX_COLS_PER_SIDE; col_index++) { + // Select the col pin to read (active low) + uint8_t pin_state = readPin(matrix_col_pins_mcu[col_index]); + + // Populate the matrix row with the state of the col pin + current_row_value |= pin_state ? 0 : (MATRIX_ROW_SHIFTER << col_index); + } + unselect_row(row); + return current_row_value; + } else { + // we don't need a 30us delay anymore, because selecting a + // right-hand row requires more than 30us for i2c. + if (mcp23017_status) { // if there was an error + return 0; + } else { + uint8_t buf[] = {MCP23017_GPIOA}; + mcp23017_status = i2c_transmit(I2C_ADDR_WRITE, buf, sizeof(buf), MCP23017_I2C_TIMEOUT); + // We read all the pins on GPIOA. + // The initial state was all ones and any depressed key at a given column for the currently selected row will have its bit flipped to zero. + // The return value is a row as represented in the generic matrix code were the rightmost bits represent the lower columns and zeroes represent non-depressed keys while ones represent depressed keys. + // Since the pins connected to eact columns are sequential, and counting from zero up (col 5 -> GPIOA0, col 6 -> GPIOA1 and so on), the only transformation needed is a bitwise not to swap all zeroes and ones. + uint8_t data[] = {0}; + if (!mcp23017_status) { + mcp23017_status = i2c_receive(I2C_ADDR_READ, data, sizeof(data), MCP23017_I2C_TIMEOUT); + data[0] = ~(data[0]); + } + return data[0]; + } + } +} + +static void unselect_row(uint8_t row) { + pin_t matrix_row_pins_mcu[MATRIX_ROWS_PER_SIDE] = MATRIX_ROW_PINS_MCU; + setPinInputHigh(matrix_row_pins_mcu[row]); +} + +static void unselect_rows(void) { + // no need to unselect on mcp23017, because the select step sets all + // the other row bits high, and it's not changing to a different + // direction + + // unselect rows on microcontroller + pin_t matrix_row_pins_mcu[MATRIX_ROWS_PER_SIDE] = MATRIX_ROW_PINS_MCU; + for (int pin_index = 0; pin_index < MATRIX_ROWS_PER_SIDE; pin_index++) { + pin_t pin = matrix_row_pins_mcu[pin_index]; + setPinInputHigh(pin); + } +} +static void unselect_cols(void) { + pin_t matrix_col_pins_mcu[MATRIX_COLS_PER_SIDE] = MATRIX_COL_PINS_MCU; + for (int pin_index = 0; pin_index < MATRIX_COLS_PER_SIDE; pin_index++) { + pin_t pin = matrix_col_pins_mcu[pin_index]; + setPinInputHigh(pin); + } +} + +static void select_row(uint8_t row) { + if (row < MATRIX_ROWS_PER_SIDE) { + // select on MCU + pin_t matrix_row_pins_mcu[MATRIX_ROWS_PER_SIDE] = MATRIX_ROW_PINS_MCU; + pin_t pin = matrix_row_pins_mcu[row]; + setPinOutput(pin); + writePinLow(pin); + } else { + // select on mcp23017 + if (mcp23017_status) { // if there was an error + // do nothing + } else { + // Select the desired row by writing a byte for the entire GPIOB bus where only the bit representing the row we want to select is a zero (write instruction) and every other bit is a one. + // Note that the row - MATRIX_ROWS_PER_SIDE reflects the fact that being on the right hand, the columns are numbered from MATRIX_ROWS_PER_SIDE to MATRIX_ROWS, but the pins we want to write to are indexed from zero up on the GPIOB bus. + uint8_t buf[] = {MCP23017_GPIOB, 0xFF & ~(1 << (row - MATRIX_ROWS_PER_SIDE))}; + mcp23017_status = i2c_transmit(I2C_ADDR_WRITE, buf, sizeof(buf), I2C_TIMEOUT); + } + } +} diff --git a/keyboards/ferris/0_2/mcuconf.h b/keyboards/ferris/0_2/mcuconf.h new file mode 100644 index 0000000000..05d37e7bcd --- /dev/null +++ b/keyboards/ferris/0_2/mcuconf.h @@ -0,0 +1,36 @@ +/* Copyright 2020 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/ferris/0_2/mcuconf.h -r platforms/chibios/GENERIC_STM32_F072XB/configs/mcuconf.h` + */ + +#pragma once + +#include_next + +#undef STM32_I2C_USE_I2C2 +#define STM32_I2C_USE_I2C2 TRUE + +#undef STM32_I2C_USE_DMA +#define STM32_I2C_USE_DMA FALSE + +#undef STM32_PWM_USE_TIM3 +#define STM32_PWM_USE_TIM3 TRUE + +#undef STM32_SPI_USE_SPI2 +#define STM32_SPI_USE_SPI2 TRUE diff --git a/keyboards/ferris/0_2/readme.md b/keyboards/ferris/0_2/readme.md new file mode 100644 index 0000000000..bd98ce8ad1 --- /dev/null +++ b/keyboards/ferris/0_2/readme.md @@ -0,0 +1,17 @@ +# Ferris 0.2 + +![Ferris 0.2 - bling, top view](https://i.imgur.com/LwKlmnzh.jpg) +![Ferris 0.2 - bling, bottom view](https://i.imgur.com/qGnYGVOh.jpg) + +An stm32f072 based split 34 keys column staggered keyboard named and decorated after the rustlang mascott. All PCB files and some thoughts on the design are available on the [project's github page](https://github.com/pierrechevalier83/ferris) + +* Keyboard Maintainer: [Pierre Chevalier](https://github.com/pierrechevalier83) +* Hardware Supported: + * Ferris 0.2: stm32f072 chip. Comes in 4 variants: bling, mini, high and compact +* Hardware Availability: Pierre Chevalier has been selling keyboard kits (see the #ferris channel in the 40% discord chat). Wider availability is on the horizon. + +Make examples for this keyboard (after setting up your build environment): + + make ferris/0_2:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/ferris/0_2/rules.mk b/keyboards/ferris/0_2/rules.mk new file mode 100644 index 0000000000..5a7649b757 --- /dev/null +++ b/keyboards/ferris/0_2/rules.mk @@ -0,0 +1,25 @@ +# MCU name +MCU = STM32F072 + +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +UNICODE_ENABLE = yes +CUSTOM_MATRIX = lite +NO_USB_STARTUP_CHECK = yes +LTO_ENABLE = no + +SRC += matrix.c +QUANTUM_LIB_SRC += i2c_master.c diff --git a/keyboards/ferris/keymaps/test/config.h b/keyboards/ferris/keymaps/test/config.h new file mode 100644 index 0000000000..f784af4d11 --- /dev/null +++ b/keyboards/ferris/keymaps/test/config.h @@ -0,0 +1,20 @@ +/* +Copyright 2021 Pierre Chevalier + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#define DEBUG_MATRIX_SCAN_RATE diff --git a/keyboards/ferris/keymaps/test/keymap.c b/keyboards/ferris/keymaps/test/keymap.c new file mode 100644 index 0000000000..30e2e9cff1 --- /dev/null +++ b/keyboards/ferris/keymaps/test/keymap.c @@ -0,0 +1,13 @@ +#include QMK_KEYBOARD_H + +void matrix_init_user(void) { + debug_enable=true; + debug_matrix=true; + //debug_keyboard=true; + //debug_mouse=true; +} + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT(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_P0, DEBUG, KC_P2, KC_P3) +}; + diff --git a/keyboards/ferris/keymaps/test/readme.md b/keyboards/ferris/keymaps/test/readme.md new file mode 100644 index 0000000000..c3b3fe90e3 --- /dev/null +++ b/keyboards/ferris/keymaps/test/readme.md @@ -0,0 +1,5 @@ +# A test keymap for the Ferris keyboard + +This keymap is not intended to be used to use the Ferris as a usable keyboard, but rather it is meant to be a very simple keymap used to test the hardware works properly. It can also be used to test firmware being written for new versions with a minimum amount of complexity coming from the keymap itself. + +The keymap is composed of a single qwerty layer with a unique digit bound to each non-alpha key. diff --git a/keyboards/ferris/keymaps/test/rules.mk b/keyboards/ferris/keymaps/test/rules.mk new file mode 100644 index 0000000000..15b7f725b2 --- /dev/null +++ b/keyboards/ferris/keymaps/test/rules.mk @@ -0,0 +1 @@ +CONSOLE_ENABLE = yes diff --git a/keyboards/ferris/readme.md b/keyboards/ferris/readme.md index 74a08a38fe..84ac85b57f 100644 --- a/keyboards/ferris/readme.md +++ b/keyboards/ferris/readme.md @@ -1,19 +1,20 @@ # Ferris -![Ferris, top view](https://imgur.com/V4QuaGs.jpg) -![Ferris, bottom view](https://i.imgur.com/7DJYME8.jpg) +![Ferris, familly pic](https://i.imgur.com/TCjkquRh.jpeg) A split 34 keys column staggered keyboard named and decorated after the rustlang mascott. All PCB files and some thoughts on the design are available on the [project's github page](https://github.com/pierrechevalier83/ferris) * Keyboard Maintainer: [Pierre Chevalier](https://github.com/pierrechevalier83) * Hardware Supported: * Ferris 0.1 (With atmega32u4 chip. Comes in 4 variants: base, low, high and compact) + * Ferris 0.2 (With stm32f072 chip. Comes in 4 variants: bling, mini, high and compact) * Ferris sweep (With pro-micro. Comes in a couple of PCB edge cuts shapes, but with identical pinout) * Hardware Availability: Pierre Chevalier has been selling keyboard kits (see the #ferris channel in the 40% discord chat). Wider availability is on the horizon. Make examples for this keyboard (after setting up your build environment): make ferris/0_1:default + make ferris/0_2:default make ferris/sweep:default:avrdude-split-right See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/ferris/sweep/readme.md b/keyboards/ferris/sweep/readme.md new file mode 100644 index 0000000000..d7102aa1a0 --- /dev/null +++ b/keyboards/ferris/sweep/readme.md @@ -0,0 +1,18 @@ +# Ferris sweep + +![Ferris sweep, top view](https://i.imgur.com/5qCZUv6h.jpg) +![Ferris sweep, bottom view](https://i.imgur.com/ZC47CJth.jpg) + +A version of the Ferris keyboard that uses a daughterboard, designed by the fantastic @davidphilipbarr with some input from @pierrechevalier83 for the copper pad. All PCB files are available on the [project's github page](https://github.com/davidphilipbarr/Sweep) + +* Keyboard Maintainer: [Pierre Chevalier](https://github.com/pierrechevalier83) +* Hardware Supported: + * Ferris sweep (With pro-micro. Comes in a couple of PCB edge cuts shapes, but with identical pinout) +* Hardware Availability: @iamnotyourbroom in the 40% discord chat server may have some spares for you. + +Make examples for this keyboard (after setting up your build environment): + + make ferris/sweep:default:avrdude-split-left + make ferris/sweep:default:avrdude-split-right + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). From fd6545167962c0761e7797e786bc7ce8e0481f02 Mon Sep 17 00:00:00 2001 From: "Antoine R. Dumont" Date: Mon, 19 Apr 2021 00:14:23 +0200 Subject: [PATCH 218/613] keyboardio/atreus: Add ardumont keymap (#12479) --- .../atreus/keymaps/ardumont/keymap.c | 132 ++++++++++++++++++ .../atreus/keymaps/ardumont/readme.md | 23 +++ 2 files changed, 155 insertions(+) create mode 100644 keyboards/keyboardio/atreus/keymaps/ardumont/keymap.c create mode 100644 keyboards/keyboardio/atreus/keymaps/ardumont/readme.md diff --git a/keyboards/keyboardio/atreus/keymaps/ardumont/keymap.c b/keyboards/keyboardio/atreus/keymaps/ardumont/keymap.c new file mode 100644 index 0000000000..3bde667ee9 --- /dev/null +++ b/keyboards/keyboardio/atreus/keymaps/ardumont/keymap.c @@ -0,0 +1,132 @@ +// Copyright (C) 2019, 2020 Keyboard.io, Inc +// 2021 Antoine R. Dumont (@ardumont) +// +// this is the style you want to emulate. +// This is the canonical layout file for the Quantum project. If you want to add another keyboard, + +#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 { + _QW, + _RS, + _LW, +}; + +// tap: z // hold: SHIFT +#define Z_SFT SFT_T(KC_Z) +// tap: / // hold: SHIFT +#define SLSH_SFT SFT_T(KC_SLSH) + +// tap: ` // hold: SHIFT +#define GRAVE_SFT SFT_T(KC_GRAVE) +// tap: [ // hold: SHIFT +#define RBRC_SFT SFT_T(KC_RBRC) + +// Layer movment +#define FN0 MO(_RS) // move to layer 1 (L1) +#define FN1 TG(_LW) // move to layer 2 (L2) +#define FN2 TO(_QW) // move to layer 0 (L0) + + /* + * q w e r t || y u i/tab o p + * a s d f g || h j k l ; + * z/sft x c v b ` || \ n m , . //sft + * ctl esc super alt L1 spc || spc L1 alt - ' ctl + */ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_QW] = LAYOUT( /* 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 , + Z_SFT, KC_X, KC_C, KC_V, KC_B, KC_GRAVE, KC_BSLS, KC_N, KC_M, KC_COMM, KC_DOT, SLSH_SFT, + KC_LCTRL, KC_ESC, KC_LGUI, KC_LALT, KC_SPC, FN0, FN0, KC_SPC, KC_LALT, KC_MINS, KC_QUOT, KC_LCTRL + ), + + /* + * 1 2 3 4 5 || 6 7 8 9 0 + * ! @ # $ % || ^ & * ( ) + * `/sft ~ ? ? ? ~ || | + - / [ ]/sft + * ctl esc super alt spc L2 || L2 spc alt = esc ctl + */ + [_RS] = LAYOUT( /* [> RAISE <] */ + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0 , + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN , + GRAVE_SFT, KC_TILD, KC_NO, KC_NO, KC_NO, _______, _______, KC_PLUS, KC_MINS, KC_SLSH, KC_LBRC, RBRC_SFT, + _______, _______, _______, _______, _______, FN1, FN1, _______, _______, KC_EQL, _______, _______ + ), + + /* + * F1 F2 F3 F4 F5 || F6 F7 F8 F9 F10 + * __ __ __ __ F11 || F12 __ __ __ __ + * __ __ __ dbg rst eep-rst || __ __ __ __ __ __ + * ctl esc super alt __ L0 || L0 __ alt __ esc ctl + */ + [_LW] = LAYOUT( /* [> LOWER <] */ + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, + KC_NO, KC_NO, KC_NO, KC_NO, KC_F11, KC_F12, KC_NO, KC_NO, KC_NO, KC_NO , + KC_NO, KC_NO, KC_NO, DEBUG, RESET, EEP_RST, _______, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO , + _______, _______, _______, _______, _______, FN2, FN2, _______, _______, KC_NO, KC_ESC, _______ + ) +}; + +// Initialize variable holding the binary +// representation of active modifiers. +uint8_t mod_state; + +bool substitute_keycode(uint16_t keycode, keyrecord_t *record, uint8_t mod_state, uint16_t substitute_keycode) { + /* Substitute keycode if condition matches */ + // Initialize a boolean variable that keeps track + // of the delete key status: registered or not? + static bool key_registered; + // ctrl activated? + if ((mod_state & MOD_BIT(KC_LCTRL)) == MOD_BIT(KC_LCTRL)) { + if (record->event.pressed) { + // No need to register KC_LCTRL because it's already active. + unregister_code(KC_LCTRL); + // Send substitute code + register_code(substitute_keycode); + // Update the boolean variable to reflect the status of the register + key_registered = true; + // Reapplying modifier state so that the held shift key(s) + // still work even after having tapped the Backspace/Delete key. + set_mods(mod_state); + // Do not let QMK process the keycode further + return false; + } else { + // In case substitude_keycode is still being sent even after the release of + // the key + if (key_registered) { + unregister_code(substitute_keycode); + key_registered = false; + // Do not let QMK process the keycode further + return false; + } + } + } + // Else, let QMK process the keycode as usual + return true; +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + // Store the current modifier state in the variable for later reference + mod_state = get_mods(); + switch (keycode) { + case KC_I: + return substitute_keycode(keycode, record, mod_state, KC_TAB); + case KC_M: + return substitute_keycode(keycode, record, mod_state, KC_ENTER); + case KC_H: + return substitute_keycode(keycode, record, mod_state, KC_BSPC); + case KC_D: + return substitute_keycode(keycode, record, mod_state, KC_DEL); + case KC_N: + return substitute_keycode(keycode, record, mod_state, KC_DOWN); + case KC_P: + return substitute_keycode(keycode, record, mod_state, KC_UP); + } + return true; +}; diff --git a/keyboards/keyboardio/atreus/keymaps/ardumont/readme.md b/keyboards/keyboardio/atreus/keymaps/ardumont/readme.md new file mode 100644 index 0000000000..d2532d7e97 --- /dev/null +++ b/keyboards/keyboardio/atreus/keymaps/ardumont/readme.md @@ -0,0 +1,23 @@ +![ardumont layout](https://i.imgur.com/tuk64AI.png) + +# ardumont layout + +This is a qwerty layout for the keyboardio/atreus. For the most part, it's a +straightforward layout. Only the modifiers key are not organized like the default +layout. Those modifier keys are mostly symmetrically configured. + +The idea is that when using a modifier key, some users may expect to use both side of +the keyboard symmetrically (as in emacs, qutebrowser, terminal/tmux). + +Exceptions to the rules are the `Escape` and the `Super` which only exists on the left +Side of the keyboard. Those are mostly unused. + +Note that some keys are not present in the keyboard (e.g `Tab`, `Enter`, ...) since they +are available from the legacy terminal bindings: + +- Ctrl-i: Tab +- Ctrl-m: Enter +- Ctrl-h: Backspace +- Ctrl-d: Del +- Ctrl-n: Down +- Ctrl-p: Up From a3d717cb83eddc9c46cd11f2326879c009126184 Mon Sep 17 00:00:00 2001 From: Giorgi Chavchanidze <76832811+gkbd@users.noreply.github.com> Date: Mon, 19 Apr 2021 00:22:56 +0200 Subject: [PATCH 219/613] Keymap: Orthocarpus keymap for idobo (#12462) * Keymap: Orthocarpus keymap for idobo * Update keyboards/idobo/keymaps/gkbd_75/config.h Co-authored-by: Drashna Jaelre Co-authored-by: Giorgi Chavchanidze Co-authored-by: Drashna Jaelre --- keyboards/idobo/keymaps/gkbd_75/config.h | 21 ++++++++++++++ keyboards/idobo/keymaps/gkbd_75/keymap.c | 35 +++++++++++++++++++++++ keyboards/idobo/keymaps/gkbd_75/readme.md | 7 +++++ 3 files changed, 63 insertions(+) create mode 100644 keyboards/idobo/keymaps/gkbd_75/config.h create mode 100644 keyboards/idobo/keymaps/gkbd_75/keymap.c create mode 100644 keyboards/idobo/keymaps/gkbd_75/readme.md diff --git a/keyboards/idobo/keymaps/gkbd_75/config.h b/keyboards/idobo/keymaps/gkbd_75/config.h new file mode 100644 index 0000000000..7813d776e5 --- /dev/null +++ b/keyboards/idobo/keymaps/gkbd_75/config.h @@ -0,0 +1,21 @@ +/* Copyright 2021 Giorgi Chavchanidze + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define TAPPING_TERM 200 +#define IGNORE_MOD_TAP_INTERRUPT +#define PERMISSIVE_HOLD diff --git a/keyboards/idobo/keymaps/gkbd_75/keymap.c b/keyboards/idobo/keymaps/gkbd_75/keymap.c new file mode 100644 index 0000000000..be67aead4e --- /dev/null +++ b/keyboards/idobo/keymaps/gkbd_75/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2021 Giorgi Chavchanidze + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_ortho_5x15( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_F1, KC_F4, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL, KC_F7, + KC_TAB, KC_K, KC_P, KC_L, KC_R, KC_C, KC_F2, KC_F5, KC_M, KC_U, KC_O, KC_W, KC_X, KC_SLSH, KC_F8, + KC_CAPS, KC_D, KC_S, KC_T, KC_F, KC_N, KC_F3, KC_F6, KC_I, RSFT_T(KC_J), KC_E, KC_A, KC_H, KC_ENT, KC_F9, + KC_PGUP, KC_Q, KC_B, KC_G, KC_COMM, KC_DOT, KC_LGUI, KC_RALT, KC_MINS, KC_V, KC_Y, KC_QUOT, KC_Z, KC_UP, KC_F10, + KC_PGDN, KC_PSCR, KC_INS, KC_DEL, LT(1,KC_F11), KC_BSPC, KC_LSFT, KC_RCTL, KC_SPC, LT(1,KC_F12), KC_HOME, KC_END, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_ortho_5x15( + RESET, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_TOG, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_LCBR, KC_RCBR, KC_LBRC, KC_RBRC, KC_SLCK, KC_NO, KC_NO, KC_PAUS, KC_BSLS, KC_PIPE, KC_SCLN, KC_COLN, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_WAKE, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_GRV, KC_TRNS, KC_TRNS, KC_TILD, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_APP + ) +}; + diff --git a/keyboards/idobo/keymaps/gkbd_75/readme.md b/keyboards/idobo/keymaps/gkbd_75/readme.md new file mode 100644 index 0000000000..aa14049420 --- /dev/null +++ b/keyboards/idobo/keymaps/gkbd_75/readme.md @@ -0,0 +1,7 @@ +![Orthocarpus layout](https://lykt.xyz/jnsf/ortho/ortho.jpg) + +# Orthocarpus layout configuration for idobo + +Based on ortholinear carpalx optimized layout from [https://gitlab.com/lykt](https://gitlab.com/lykt) + +Some documentation and resources (carpalx report, json configuration) are available at [https://lykt.xyz/jnsf/ortho/](https://lykt.xyz/jnsf/ortho/) From eb7e668eb908de9d41ab9d088effb8adedf520b5 Mon Sep 17 00:00:00 2001 From: Richard Dawe Date: Sun, 18 Apr 2021 23:39:15 +0100 Subject: [PATCH 220/613] Add RGB controls to picture; label Layer 3 correctly (#12337) --- keyboards/ut472/keymaps/default/keymap.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/ut472/keymaps/default/keymap.c b/keyboards/ut472/keymaps/default/keymap.c index 883eb5a228..c6509e97a6 100644 --- a/keyboards/ut472/keymaps/default/keymap.c +++ b/keyboards/ut472/keymaps/default/keymap.c @@ -45,7 +45,7 @@ LAYOUT( * ,-------------------------------------------------------------------------. * | ` ~ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Delete| * |-------------------------------------------------------------------------+ - * | | | | | | | | - | = | [ | ] | \ | + * | | RGB |RGBMO|BRT+ |BRT- | | | - | = | [ | ] | \ | * |-------------------------------------------------------------------------+ * | | F11 | F12 | F13 | F14 | F15 | F16 | F17 | F18 | F19 | F20 | | * |-------------------------------------------------------------------------+ @@ -79,7 +79,7 @@ LAYOUT( /* Left */ _______, _______, _______, KC_CAPS, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END ), - /* FN Layer 2 + /* FN Layer 3 * ,-------------------------------------------------------------------------. * | Esc | Calc|Webhm| Mail| Comp| | | | | |PrtSc| | * |-------------------------------------------------------------------------+ From a0089aa34519ec4fcf7cee6a352424e4b7cba7da Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Mon, 19 Apr 2021 13:08:01 +1000 Subject: [PATCH 221/613] Fixup Satisfaction75 bootprocess. (#12621) - Use normal ChibiOS I2C driver. - Move drawing code to housekeeping -- previously it was during matrix scan, which gets executed during bootmagic checks. However, bootmagic is invoked before QWIIC subsystem is enabled, which means I2C isn't configured yet. All I2C calls to the OLED fail with timeouts while bootmagic is being checked. Housekeeping ensures this is executed once the system has initialised and settled. - QWIIC OLED driver: properly clear out OLED buffer when clearing screen. --- drivers/qwiic/micro_oled.c | 2 + keyboards/cannonkeys/satisfaction75/config.h | 12 ++ .../cannonkeys/satisfaction75/i2c_master.c | 124 ------------------ .../satisfaction75/satisfaction75.c | 2 +- 4 files changed, 15 insertions(+), 125 deletions(-) delete mode 100644 keyboards/cannonkeys/satisfaction75/i2c_master.c diff --git a/drivers/qwiic/micro_oled.c b/drivers/qwiic/micro_oled.c index c7a4ee081d..bbeb140cbe 100644 --- a/drivers/qwiic/micro_oled.c +++ b/drivers/qwiic/micro_oled.c @@ -206,6 +206,8 @@ void clear_screen(void) { send_data(0); } } + + memset(micro_oled_screen_current, 0, LCDWIDTH * LCDHEIGHT / 8); } /** \brief Clear SSD1306's memory. diff --git a/keyboards/cannonkeys/satisfaction75/config.h b/keyboards/cannonkeys/satisfaction75/config.h index dfb624a0d7..e100cc99b1 100644 --- a/keyboards/cannonkeys/satisfaction75/config.h +++ b/keyboards/cannonkeys/satisfaction75/config.h @@ -51,6 +51,18 @@ along with this program. If not, see . /* define if matrix has ghost */ //#define MATRIX_HAS_GHOST +// I2C config +#define I2C_DRIVER I2CD1 +#define I2C1_SCL_BANK GPIOB +#define I2C1_SCL 6 +#define I2C1_SDA 7 +#define I2C1_SCL_PAL_MODE 1 +#define I2C1_SDA_PAL_MODE 1 +#define I2C1_TIMINGR_PRESC 0x00U +#define I2C1_TIMINGR_SCLDEL 0x03U +#define I2C1_TIMINGR_SDADEL 0x01U +#define I2C1_TIMINGR_SCLH 0x03U +#define I2C1_TIMINGR_SCLL 0x09U /* Set 0 if debouncing isn't needed */ #define DEBOUNCE 5 diff --git a/keyboards/cannonkeys/satisfaction75/i2c_master.c b/keyboards/cannonkeys/satisfaction75/i2c_master.c deleted file mode 100644 index d87f7668d5..0000000000 --- a/keyboards/cannonkeys/satisfaction75/i2c_master.c +++ /dev/null @@ -1,124 +0,0 @@ -/* Copyright 2018 Jack Humbert - * Copyright 2018 Yiancar - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/* This library is only valid for STM32 processors. - * This library follows the convention of the AVR i2c_master library. - * As a result addresses are expected to be already shifted (addr << 1). - * I2CD1 is the default driver which corresponds to pins B6 and B7. This - * can be changed. - * Please ensure that HAL_USE_I2C is TRUE in the halconf.h file and that - * STM32_I2C_USE_I2C1 is TRUE in the mcuconf.h file. Pins B6 and B7 are used - * but using any other I2C pins should be trivial. - */ - -#include "i2c_master.h" -#include "quantum.h" -#include -#include - -static uint8_t i2c_address; - -// This configures the I2C clock to 400khz assuming a 48Mhz clock -// For more info : https://www.st.com/en/embedded-software/stsw-stm32126.html -static const I2CConfig i2cconfig = { - STM32_TIMINGR_PRESC(0x00U) | - STM32_TIMINGR_SCLDEL(0x03U) | STM32_TIMINGR_SDADEL(0x01U) | - STM32_TIMINGR_SCLH(0x03U) | STM32_TIMINGR_SCLL(0x09U), - 0, - 0 -}; - -static i2c_status_t chibios_to_qmk(const msg_t status) { - switch (status) { - case I2C_NO_ERROR: - return I2C_STATUS_SUCCESS; - case I2C_TIMEOUT: - return I2C_STATUS_TIMEOUT; - // I2C_BUS_ERROR, I2C_ARBITRATION_LOST, I2C_ACK_FAILURE, I2C_OVERRUN, I2C_PEC_ERROR, I2C_SMB_ALERT - default: - return I2C_STATUS_ERROR; - } -} - -__attribute__ ((weak)) -void i2c_init(void) -{ - // Try releasing special pins for a short time - palSetPadMode(GPIOB, 6, PAL_MODE_INPUT); - palSetPadMode(GPIOB, 7, PAL_MODE_INPUT); - - chThdSleepMilliseconds(10); - - palSetPadMode(GPIOB, 6, PAL_MODE_ALTERNATE(1) | PAL_STM32_OTYPE_OPENDRAIN); - palSetPadMode(GPIOB, 7, PAL_MODE_ALTERNATE(1) | PAL_STM32_OTYPE_OPENDRAIN); - - //i2cInit(); //This is invoked by halInit() so no need to redo it. -} - -i2c_status_t i2c_start(uint8_t address) -{ - i2c_address = address; - i2cStart(&I2C_DRIVER, &i2cconfig); - return I2C_STATUS_SUCCESS; -} - -i2c_status_t i2c_transmit(uint8_t address, const uint8_t* data, uint16_t length, uint16_t timeout) -{ - i2c_address = address; - i2cStart(&I2C_DRIVER, &i2cconfig); - i2cAcquireBus(&I2C_DRIVER); - msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (i2c_address >> 1), data, length, 0, 0, TIME_MS2I(timeout)); - i2cReleaseBus(&I2C_DRIVER); - return chibios_to_qmk(status); -} - -i2c_status_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout) -{ - i2c_address = address; - i2cStart(&I2C_DRIVER, &i2cconfig); - msg_t status = i2cMasterReceiveTimeout(&I2C_DRIVER, (i2c_address >> 1), data, length, TIME_MS2I(timeout)); - return chibios_to_qmk(status); -} - -i2c_status_t i2c_writeReg(uint8_t devaddr, uint8_t regaddr, const uint8_t* data, uint16_t length, uint16_t timeout) -{ - i2c_address = devaddr; - i2cStart(&I2C_DRIVER, &i2cconfig); - - uint8_t complete_packet[length + 1]; - for(uint8_t i = 0; i < length; i++) - { - complete_packet[i+1] = data[i]; - } - complete_packet[0] = regaddr; - - msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (i2c_address >> 1), complete_packet, length + 1, 0, 0, TIME_MS2I(timeout)); - return chibios_to_qmk(status); -} - -i2c_status_t i2c_readReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout) -{ - i2c_address = devaddr; - i2cStart(&I2C_DRIVER, &i2cconfig); - msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (i2c_address >> 1), ®addr, 1, data, length, TIME_MS2I(timeout)); - return chibios_to_qmk(status); -} - -void i2c_stop(void) -{ - i2cStop(&I2C_DRIVER); -} diff --git a/keyboards/cannonkeys/satisfaction75/satisfaction75.c b/keyboards/cannonkeys/satisfaction75/satisfaction75.c index fd85b8230b..47c9a9d503 100644 --- a/keyboards/cannonkeys/satisfaction75/satisfaction75.c +++ b/keyboards/cannonkeys/satisfaction75/satisfaction75.c @@ -380,7 +380,7 @@ void matrix_init_kb(void) } -void matrix_scan_kb(void) { +void housekeeping_task_kb(void) { rtcGetTime(&RTCD1, &last_timespec); uint16_t minutes_since_midnight = last_timespec.millisecond / 1000 / 60; From 05357d7937d1a806243c010e8a308a93e0bf8959 Mon Sep 17 00:00:00 2001 From: Oliver Gaskell Date: Mon, 19 Apr 2021 04:36:40 +0100 Subject: [PATCH 222/613] [Keyboard] Add Tau4 keyboard (#11361) with default and i2cscanner keymaps Co-authored-by: Ryan Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com> --- keyboards/tau4/common/glcdfont.c | 105 ++++++++++++++++ keyboards/tau4/config.h | 72 +++++++++++ keyboards/tau4/keymaps/default/keymap.c | 145 +++++++++++++++++++++++ keyboards/tau4/keymaps/default/readme.md | 5 + keyboards/tau4/readme.md | 16 +++ keyboards/tau4/rules.mk | 28 +++++ keyboards/tau4/tau4.c | 18 +++ keyboards/tau4/tau4.h | 32 +++++ 8 files changed, 421 insertions(+) create mode 100755 keyboards/tau4/common/glcdfont.c create mode 100755 keyboards/tau4/config.h create mode 100755 keyboards/tau4/keymaps/default/keymap.c create mode 100644 keyboards/tau4/keymaps/default/readme.md create mode 100644 keyboards/tau4/readme.md create mode 100755 keyboards/tau4/rules.mk create mode 100755 keyboards/tau4/tau4.c create mode 100755 keyboards/tau4/tau4.h diff --git a/keyboards/tau4/common/glcdfont.c b/keyboards/tau4/common/glcdfont.c new file mode 100755 index 0000000000..05577612a1 --- /dev/null +++ b/keyboards/tau4/common/glcdfont.c @@ -0,0 +1,105 @@ +/* +Copyright 2020 Oliver Gaskell + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "progmem.h" + +static const unsigned char PROGMEM font[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x5b, 0x4f, 0x5b, 0x3e, 0x00, 0x3e, 0x6b, 0x4f, 0x6b, + 0x3e, 0x00, 0x1c, 0x3e, 0x7c, 0x3e, 0x1c, 0x00, 0x18, 0x3c, 0x7e, 0x3c, 0x18, 0x00, 0x1c, 0x57, + 0x7d, 0x57, 0x1c, 0x00, 0x1c, 0x5e, 0x7f, 0x5e, 0x1c, 0x00, 0x00, 0x18, 0x3c, 0x18, 0x00, 0x00, + 0xff, 0xe7, 0xc3, 0xe7, 0xff, 0x00, 0x00, 0x18, 0x24, 0x18, 0x00, 0x00, 0xff, 0xe7, 0xdb, 0xe7, + 0xff, 0x00, 0x30, 0x48, 0x3a, 0x06, 0x0e, 0x00, 0x26, 0x29, 0x79, 0x29, 0x26, 0x00, 0x40, 0x7f, + 0x05, 0x05, 0x07, 0x00, 0x40, 0x7f, 0x05, 0x25, 0x3f, 0x00, 0x5a, 0x3c, 0xe7, 0x3c, 0x5a, 0x00, + 0x7f, 0x3e, 0x1c, 0x1c, 0x08, 0x00, 0x08, 0x1c, 0x1c, 0x3e, 0x7f, 0x00, 0x14, 0x22, 0x7f, 0x22, + 0x14, 0x00, 0x5f, 0x5f, 0x00, 0x5f, 0x5f, 0x00, 0x06, 0x09, 0x7f, 0x01, 0x7f, 0x00, 0x00, 0x66, + 0x89, 0x95, 0x6a, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x94, 0xa2, 0xff, 0xa2, 0x94, 0x00, + 0x08, 0x04, 0x7e, 0x04, 0x08, 0x00, 0x10, 0x20, 0x7e, 0x20, 0x10, 0x00, 0x08, 0x08, 0x2a, 0x1c, + 0x08, 0x00, 0x08, 0x1c, 0x2a, 0x08, 0x08, 0x00, 0x1e, 0x10, 0x10, 0x10, 0x10, 0x00, 0x0c, 0x1e, + 0x0c, 0x1e, 0x0c, 0x00, 0x30, 0x38, 0x3e, 0x38, 0x30, 0x00, 0x06, 0x0e, 0x3e, 0x0e, 0x06, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x07, + 0x00, 0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14, 0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12, 0x00, 0x23, 0x13, + 0x08, 0x64, 0x62, 0x00, 0x36, 0x49, 0x56, 0x20, 0x50, 0x00, 0x00, 0x08, 0x07, 0x03, 0x00, 0x00, + 0x00, 0x1c, 0x22, 0x41, 0x00, 0x00, 0x00, 0x41, 0x22, 0x1c, 0x00, 0x00, 0x2a, 0x1c, 0x7f, 0x1c, + 0x2a, 0x00, 0x08, 0x08, 0x3e, 0x08, 0x08, 0x00, 0x00, 0x80, 0x70, 0x30, 0x00, 0x00, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, + 0x3e, 0x51, 0x49, 0x45, 0x3e, 0x00, 0x00, 0x42, 0x7f, 0x40, 0x00, 0x00, 0x72, 0x49, 0x49, 0x49, + 0x46, 0x00, 0x21, 0x41, 0x49, 0x4d, 0x33, 0x00, 0x18, 0x14, 0x12, 0x7f, 0x10, 0x00, 0x27, 0x45, + 0x45, 0x45, 0x39, 0x00, 0x3c, 0x4a, 0x49, 0x49, 0x31, 0x00, 0x41, 0x21, 0x11, 0x09, 0x07, 0x00, + 0x36, 0x49, 0x49, 0x49, 0x36, 0x00, 0x46, 0x49, 0x49, 0x29, 0x1e, 0x00, 0x00, 0x00, 0x14, 0x00, + 0x00, 0x00, 0x00, 0x40, 0x34, 0x00, 0x00, 0x00, 0x00, 0x08, 0x14, 0x22, 0x41, 0x00, 0x14, 0x14, + 0x14, 0x14, 0x14, 0x00, 0x00, 0x41, 0x22, 0x14, 0x08, 0x00, 0x02, 0x01, 0x59, 0x09, 0x06, 0x00, + 0x3e, 0x41, 0x5d, 0x59, 0x4e, 0x00, 0x7c, 0x12, 0x11, 0x12, 0x7c, 0x00, 0x7f, 0x49, 0x49, 0x49, + 0x36, 0x00, 0x3e, 0x41, 0x41, 0x41, 0x22, 0x00, 0x7f, 0x41, 0x41, 0x41, 0x3e, 0x00, 0x7f, 0x49, + 0x49, 0x49, 0x41, 0x00, 0x7f, 0x09, 0x09, 0x09, 0x01, 0x00, 0x3e, 0x41, 0x41, 0x51, 0x73, 0x00, + 0x7f, 0x08, 0x08, 0x08, 0x7f, 0x00, 0x00, 0x41, 0x7f, 0x41, 0x00, 0x00, 0x20, 0x40, 0x41, 0x3f, + 0x01, 0x00, 0x7f, 0x08, 0x14, 0x22, 0x41, 0x00, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x00, 0x7f, 0x02, + 0x1c, 0x02, 0x7f, 0x00, 0x7f, 0x04, 0x08, 0x10, 0x7f, 0x00, 0x3e, 0x41, 0x41, 0x41, 0x3e, 0x00, + 0x7f, 0x09, 0x09, 0x09, 0x06, 0x00, 0x3e, 0x41, 0x51, 0x21, 0x5e, 0x00, 0x7f, 0x09, 0x19, 0x29, + 0x46, 0x00, 0x26, 0x49, 0x49, 0x49, 0x32, 0x00, 0x03, 0x01, 0x7f, 0x01, 0x03, 0x00, 0x3f, 0x40, + 0x40, 0x40, 0x3f, 0x00, 0x1f, 0x20, 0x40, 0x20, 0x1f, 0x00, 0x3f, 0x40, 0x38, 0x40, 0x3f, 0x00, + 0x63, 0x14, 0x08, 0x14, 0x63, 0x00, 0x03, 0x04, 0x78, 0x04, 0x03, 0x00, 0x61, 0x59, 0x49, 0x4d, + 0x43, 0x00, 0x00, 0x7f, 0x41, 0x41, 0x41, 0x00, 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, 0x00, 0x41, + 0x41, 0x41, 0x7f, 0x00, 0x04, 0x02, 0x01, 0x02, 0x04, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, + 0x00, 0x03, 0x07, 0x08, 0x00, 0x00, 0x20, 0x54, 0x54, 0x78, 0x40, 0x00, 0x7f, 0x28, 0x44, 0x44, + 0x38, 0x00, 0x38, 0x44, 0x44, 0x44, 0x28, 0x00, 0x38, 0x44, 0x44, 0x28, 0x7f, 0x00, 0x38, 0x54, + 0x54, 0x54, 0x18, 0x00, 0x00, 0x08, 0x7e, 0x09, 0x02, 0x00, 0x18, 0xa4, 0xa4, 0x9c, 0x78, 0x00, + 0x7f, 0x08, 0x04, 0x04, 0x78, 0x00, 0x00, 0x44, 0x7d, 0x40, 0x00, 0x00, 0x20, 0x40, 0x40, 0x3d, + 0x00, 0x00, 0x7f, 0x10, 0x28, 0x44, 0x00, 0x00, 0x00, 0x41, 0x7f, 0x40, 0x00, 0x00, 0x7c, 0x04, + 0x78, 0x04, 0x78, 0x00, 0x7c, 0x08, 0x04, 0x04, 0x78, 0x00, 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, + 0xfc, 0x18, 0x24, 0x24, 0x18, 0x00, 0x18, 0x24, 0x24, 0x18, 0xfc, 0x00, 0x7c, 0x08, 0x04, 0x04, + 0x08, 0x00, 0x48, 0x54, 0x54, 0x54, 0x24, 0x00, 0x04, 0x04, 0x3f, 0x44, 0x24, 0x00, 0x3c, 0x40, + 0x40, 0x20, 0x7c, 0x00, 0x1c, 0x20, 0x40, 0x20, 0x1c, 0x00, 0x3c, 0x40, 0x30, 0x40, 0x3c, 0x00, + 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, 0x4c, 0x90, 0x90, 0x90, 0x7c, 0x00, 0x44, 0x64, 0x54, 0x4c, + 0x44, 0x00, 0x00, 0x08, 0x36, 0x41, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x00, 0x41, + 0x36, 0x08, 0x00, 0x00, 0x02, 0x01, 0x02, 0x04, 0x02, 0x00, 0x3c, 0x26, 0x23, 0x26, 0x3c, 0x00, + 0x00, 0x06, 0x0e, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, + 0xf0, 0xf8, 0xfc, 0x3e, 0x1e, 0x06, 0x01, 0x00, 0x00, 0x00, 0x7f, 0x41, 0x41, 0x41, 0x7f, 0x00, + 0x7f, 0x41, 0x41, 0x41, 0x7f, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0x7e, 0x5b, 0x4f, 0x5b, 0xfe, 0xc0, + 0x00, 0x00, 0xc0, 0x00, 0xdc, 0xd7, 0xde, 0xde, 0xde, 0xd7, 0xdc, 0x00, 0xc0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe0, 0x30, 0x1c, 0x0e, 0xfe, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, + 0x0f, 0x1f, 0x3f, 0x3c, 0x78, 0x70, 0x60, 0x00, 0x00, 0x00, 0x7f, 0x41, 0x41, 0x41, 0x7f, 0x00, + 0x7f, 0x41, 0x41, 0x41, 0x7f, 0x00, 0x30, 0x7b, 0x7f, 0x78, 0x30, 0x20, 0x20, 0x30, 0x78, 0x7f, + 0x3b, 0x00, 0x03, 0x00, 0x0f, 0x7f, 0x0f, 0x0f, 0x0f, 0x7f, 0x0f, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x7f, 0x7f, 0xff, 0xf0, 0xf0, 0x70, + 0x00, 0x00, 0xe0, 0xe0, 0x00, 0x04, 0x0f, 0x0f, 0x0c, 0x0c, 0x0c, 0x0c, 0xff, 0x0e, 0x0c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; diff --git a/keyboards/tau4/config.h b/keyboards/tau4/config.h new file mode 100755 index 0000000000..d7e6ffe1bb --- /dev/null +++ b/keyboards/tau4/config.h @@ -0,0 +1,72 @@ +/* +Copyright 2020 Oliver Gaskell + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x6060 +#define DEVICE_VER 0x0001 +#define MANUFACTURER taukeyboards +#define PRODUCT tau4 + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 12 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { F4, F5, F6, F7 } +#define MATRIX_COL_PINS { D4, D6, D7, B4, B5, B6, C6, C7, F1, F0, B0, B1 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +#define RGB_DI_PIN B2 +#ifdef RGB_DI_PIN +#define RGBLIGHT_ANIMATIONS +#define RGBLIGHT_LAYERS +#define RGBLED_NUM 10 +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 16 +#define RGBLIGHT_VAL_STEP 8 +#define RGBLIGHT_LIMIT_VAL 128 +#endif + +#define ENCODERS_PAD_A { B3 } +#define ENCODERS_PAD_B { B7 } +#define ENCODER_RESOLUTION 1 + +// Buggy, currently disabled +/* #define EXTERNAL_EEPROM_I2C_BASE_ADDRESS 0b10100000 +#define EXTERNAL_EEPROM_I2C_ADDRESS(loc) (EXTERNAL_EEPROM_I2C_BASE_ADDRESS | ((((loc) >> 8) & 0x07) << 1)) +#define EXTERNAL_EEPROM_BYTE_COUNT 2048 +#define EXTERNAL_EEPROM_PAGE_SIZE 16 +#define EXTERNAL_EEPROM_ADDRESS_SIZE 1 +#define EXTERNAL_EEPROM_WRITE_TIME 5 */ + +#define OLED_DISPLAY_ADDRESS 0x3C +#define OLED_BRIGHTNESS 255 +#define OLED_IC OLED_IC_SSD1306 +#define OLED_DISPLAY_WIDTH 128 +#define OLED_DISPLAY_HEIGHT 32 +#define OLED_FONT_H "keyboards/tau4/common/glcdfont.c" diff --git a/keyboards/tau4/keymaps/default/keymap.c b/keyboards/tau4/keymaps/default/keymap.c new file mode 100755 index 0000000000..aff188e4c6 --- /dev/null +++ b/keyboards/tau4/keymaps/default/keymap.c @@ -0,0 +1,145 @@ +/* +Copyright 2020 Oliver Gaskell + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layers { + _QWERTY = 0, + _NUMPAD, + _LOWER, + _RAISE, + _ADJUST +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_QWERTY] = LAYOUT_ortho_4x12( + KC_MUTE, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_BSPC, KC_LCTL, KC_LGUI, KC_LALT, MO(_LOWER), KC_SPC, KC_SPC, MO(_RAISE), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT), + + [_NUMPAD] = LAYOUT_ortho_4x12( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PSLS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PAST, + KC_TRNS, TG(_NUMPAD), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P0, KC_PDOT, KC_PMNS, KC_PPLS), + + [_LOWER] = LAYOUT_ortho_4x12( + KC_VOLD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_INS, + KC_NLCK, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_LCBR, KC_RCBR, KC_UNDS, KC_PLUS, LSFT(KC_NUHS), + KC_TRNS, LSFT(KC_NUBS), KC_GRAVE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, LSFT(KC_GRV), LSFT(KC_NUBS), KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_PGUP, KC_END), + + [_RAISE] = LAYOUT_ortho_4x12( + KC_VOLU, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, + KC_CAPS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_LBRC, KC_RBRC, KC_MINS, KC_EQL, KC_NUHS, + KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_APP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_GRV, KC_NUBS, KC_TRNS, + KC_TAB, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MSTP, KC_MPRV, KC_MPLY, KC_MNXT), + + [_ADJUST] = LAYOUT_ortho_4x12( + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, KC_TRNS, KC_TRNS, RESET, + KC_TRNS, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, RGB_M_K, RGB_M_X, RGB_M_G, RGB_M_T, KC_TRNS, KC_TRNS, + KC_TRNS, TG(_NUMPAD), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +}; + +const rgblight_segment_t PROGMEM _RAISE_lighting[] = RGBLIGHT_LAYER_SEGMENTS( + {7, 1, 1, 202, 110} +); +const rgblight_segment_t PROGMEM _LOWER_lighting[] = RGBLIGHT_LAYER_SEGMENTS( + {7, 1, 125, 188, 80} +); +const rgblight_segment_t PROGMEM _ADJUST_lighting[] = RGBLIGHT_LAYER_SEGMENTS( + {7, 1, 32, 25, 127} +); +const rgblight_segment_t PROGMEM _NUMPAD_lighting[] = RGBLIGHT_LAYER_SEGMENTS( + {7, 1, HSV_BLUE} +); +const rgblight_segment_t PROGMEM _DEFAULT_lighting[] = RGBLIGHT_LAYER_SEGMENTS( + {7, 1, HSV_OFF} +); +const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST( + _DEFAULT_lighting, + _NUMPAD_lighting, + _LOWER_lighting, + _RAISE_lighting, + _ADJUST_lighting +); + +void keyboard_post_init_user(void) { + rgblight_layers = my_rgb_layers; + + // Uncomment for debug mode + /* debug_enable=true; + debug_matrix=true; */ +} + +layer_state_t layer_state_set_user(layer_state_t state) { + state = update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); + + rgblight_set_layer_state(_QWERTY, layer_state_cmp(state, _QWERTY)); + rgblight_set_layer_state(_NUMPAD, layer_state_cmp(state, _NUMPAD)); + rgblight_set_layer_state(_LOWER, layer_state_cmp(state, _LOWER)); + rgblight_set_layer_state(_RAISE, layer_state_cmp(state, _RAISE)); + rgblight_set_layer_state(_ADJUST, layer_state_cmp(state, _ADJUST)); + + return state; +} + +void encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { /* First encoder */ + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } +} + + +#ifdef OLED_DRIVER_ENABLE + +static void render_status(void) { + oled_write_P(PSTR("Tau.4 v1.0\n\n"), false); + oled_write_P(PSTR("Layer:\n"), false); + + switch (get_highest_layer(layer_state)) { + case _QWERTY: + oled_write_P(PSTR("Default "), false); + break; + case _NUMPAD: + oled_write_P(PSTR("Numpad "), false); + break; + case _LOWER: + oled_write_P(PSTR("Lower "), false); + break; + case _RAISE: + oled_write_P(PSTR("Raise "), false); + break; + case _ADJUST: + oled_write_P(PSTR("Adjust "), false); + break; + default: + oled_write_P(PSTR("Undefined"), false); + } +} + +void oled_task_user(void) { + render_status(); +} +#endif diff --git a/keyboards/tau4/keymaps/default/readme.md b/keyboards/tau4/keymaps/default/readme.md new file mode 100644 index 0000000000..ee5d1b8398 --- /dev/null +++ b/keyboards/tau4/keymaps/default/readme.md @@ -0,0 +1,5 @@ +Default keymap: + +![Keymap](http://gaskell.tech/tau/images/tau4keymap.png) + +This layout supports 2x1u spacebar and 1x2u, and an encoder in the topmost position. diff --git a/keyboards/tau4/readme.md b/keyboards/tau4/readme.md new file mode 100644 index 0000000000..beea3f07a9 --- /dev/null +++ b/keyboards/tau4/readme.md @@ -0,0 +1,16 @@ +# Ï„.4 + +![Tau.4](http://gaskell.tech/tau/images/tau4.jpg) + +A 40% ortholinear keyboard, developed by Oliver Gaskell. More info on [gaskell.tech](https://gaskell.tech/tau/four.html) + +* Keyboard Maintainer: [Oliver Gaskell](https://github.com/ogaskell) +* Hardware Supported: Tau4 PCB rev1.0, Tau4 PCB rev1.1 +* Hardware Availability: Group Buy - Opens 05 Feb 2021 [More Details](https://gaskell.tech/tau/four.html) + + +Make example for this keyboard (after setting up your build environment): + + make tau4:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/tau4/rules.mk b/keyboards/tau4/rules.mk new file mode 100755 index 0000000000..712646abc5 --- /dev/null +++ b/keyboards/tau4/rules.mk @@ -0,0 +1,28 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +ENCODER_ENABLE = yes # Rotary Encoder support +OLED_DRIVER_ENABLE = yes # OLED display support +# EEPROM_DRIVER ?= i2c # Driver for external EEPROM chip +# This is currently not working due to QMK not officially supporting the chip used on the Tau4, I am working on a fix. + +LAYOUTS = ortho_4x12 diff --git a/keyboards/tau4/tau4.c b/keyboards/tau4/tau4.c new file mode 100755 index 0000000000..3002566cea --- /dev/null +++ b/keyboards/tau4/tau4.c @@ -0,0 +1,18 @@ +/* +Copyright 2020 Oliver Gaskell + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "tau4.h" diff --git a/keyboards/tau4/tau4.h b/keyboards/tau4/tau4.h new file mode 100755 index 0000000000..d9ff502116 --- /dev/null +++ b/keyboards/tau4/tau4.h @@ -0,0 +1,32 @@ +/* +Copyright 2020 Oliver Gaskell + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +#define LAYOUT_ortho_4x12( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311 } \ +} From cfefecd95126e81022297b83641db750552547d9 Mon Sep 17 00:00:00 2001 From: Ian McLinden Date: Sun, 18 Apr 2021 22:44:32 -0500 Subject: [PATCH 223/613] [Keyboard] Added Koolertron AMAG23 (#11725) --- keyboards/amag23/amag23.c | 17 ++++++++ keyboards/amag23/amag23.h | 32 ++++++++++++++ keyboards/amag23/config.h | 50 ++++++++++++++++++++++ keyboards/amag23/info.json | 36 ++++++++++++++++ keyboards/amag23/keymaps/default/keymap.c | 40 +++++++++++++++++ keyboards/amag23/keymaps/default/readme.md | 14 ++++++ keyboards/amag23/keymaps/qwert/keymap.c | 40 +++++++++++++++++ keyboards/amag23/keymaps/qwert/readme.md | 14 ++++++ keyboards/amag23/readme.md | 27 ++++++++++++ keyboards/amag23/rules.mk | 19 ++++++++ 10 files changed, 289 insertions(+) create mode 100644 keyboards/amag23/amag23.c create mode 100644 keyboards/amag23/amag23.h create mode 100644 keyboards/amag23/config.h create mode 100644 keyboards/amag23/info.json create mode 100644 keyboards/amag23/keymaps/default/keymap.c create mode 100644 keyboards/amag23/keymaps/default/readme.md create mode 100644 keyboards/amag23/keymaps/qwert/keymap.c create mode 100644 keyboards/amag23/keymaps/qwert/readme.md create mode 100644 keyboards/amag23/readme.md create mode 100644 keyboards/amag23/rules.mk diff --git a/keyboards/amag23/amag23.c b/keyboards/amag23/amag23.c new file mode 100644 index 0000000000..5fda69e999 --- /dev/null +++ b/keyboards/amag23/amag23.c @@ -0,0 +1,17 @@ +/* Copyright 2021 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "amag23.h" + diff --git a/keyboards/amag23/amag23.h b/keyboards/amag23/amag23.h new file mode 100644 index 0000000000..a737dde63c --- /dev/null +++ b/keyboards/amag23/amag23.h @@ -0,0 +1,32 @@ +/* Copyright 2021 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +// clang-format off +#define LAYOUT_all( \ + K00, K01, K02, K03, K04, K05, \ + K10, K11, K12, K13, K14, K15, \ + K20, K21, K22, K23, K24, K25, \ + K30, K31, K32, K33, K34 \ +) { \ + { K00, K01, K02, K03, K04, K05 }, \ + { K10, K11, K12, K13, K14, K15 }, \ + { K20, K21, K22, K23, K24, K25 }, \ + { K30, K31, K32, K33, KC_NO, K34 } \ +} +// clang-format on diff --git a/keyboards/amag23/config.h b/keyboards/amag23/config.h new file mode 100644 index 0000000000..798fcf9d0f --- /dev/null +++ b/keyboards/amag23/config.h @@ -0,0 +1,50 @@ +/* Copyright 2021 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4B54 // "KT" +#define PRODUCT_ID 0x2323 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Koolertron +#define PRODUCT AMAG23 + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 6 + +#define MATRIX_ROW_PINS { A0, A1, A2, A3 } +#define MATRIX_COL_PINS { B0, B1, B2, B3, B4, B5 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION ROW2COL + +#define RGBLED_NUM 7 +#define RGBLIGHT_ANIMATIONS +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE diff --git a/keyboards/amag23/info.json b/keyboards/amag23/info.json new file mode 100644 index 0000000000..c573407725 --- /dev/null +++ b/keyboards/amag23/info.json @@ -0,0 +1,36 @@ +{ + "keyboard_name": "AMAG23", + "url": "http://www.koolertron.com/koolertron-one-handed-macro-mechanical-keyboard-rgb-led-backlit-portable-mini-onehanded-mechanical-gaming-keypad-23-fully-programmable-keys-blue-switches-p-874.html", + "maintainer": "ianmclinden", + "width": 6, + "height": 4, + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"K00", "x":0, "y":0}, + {"label":"K01", "x":1, "y":0}, + {"label":"K02", "x":2, "y":0}, + {"label":"K03", "x":3, "y":0}, + {"label":"K04", "x":4, "y":0}, + {"label":"K05", "x":5, "y":0}, + {"label":"K10", "x":0, "y":1}, + {"label":"K11", "x":1, "y":1}, + {"label":"K12", "x":2, "y":1}, + {"label":"K13", "x":3, "y":1}, + {"label":"K14", "x":4, "y":1}, + {"label":"K15", "x":5, "y":1}, + {"label":"K20", "x":0, "y":2}, + {"label":"K21", "x":1, "y":2}, + {"label":"K22", "x":2, "y":2}, + {"label":"K23", "x":3, "y":2}, + {"label":"K24", "x":4, "y":2}, + {"label":"K25", "x":5, "y":2}, + {"label":"K30", "x":0, "y":3}, + {"label":"K31", "x":1, "y":3}, + {"label":"K32", "x":2, "y":3}, + {"label":"K33", "x":3, "y":3}, + {"label":"K34", "x":4, "y":3, "w":2} + ] + } + } +} diff --git a/keyboards/amag23/keymaps/default/keymap.c b/keyboards/amag23/keymaps/default/keymap.c new file mode 100644 index 0000000000..6d36198849 --- /dev/null +++ b/keyboards/amag23/keymaps/default/keymap.c @@ -0,0 +1,40 @@ +/* Copyright 2021 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + BASE, + FN1 +}; + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [BASE] = LAYOUT_all( /* Base Layer */ + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_Y, + MO(FN1), KC_A, KC_S, KC_D, KC_F, KC_G, + KC_Z, KC_X, KC_C, KC_B, KC_SPC + ), + [FN1] = LAYOUT_all( /* Function Layer */ + KC_NO, KC_NO, KC_NO, RGB_MOD, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO + ), +}; +// clang-format on + diff --git a/keyboards/amag23/keymaps/default/readme.md b/keyboards/amag23/keymaps/default/readme.md new file mode 100644 index 0000000000..a1a784cdfc --- /dev/null +++ b/keyboards/amag23/keymaps/default/readme.md @@ -0,0 +1,14 @@ +# Factory Keymap for Koolertron AMAG23 + +## Additional Notes +Default Keymap for AMAG23 as indicated on the original [product page](http://www.koolertron.com/koolertron-one-handed-macro-mechanical-keyboard-rgb-led-backlit-portable-mini-onehanded-mechanical-gaming-keypad-23-fully-programmable-keys-blue-switches-p-853.html). + +## Keymap + +![AMAG23 Factory Layout](https://i.imgur.com/c28RfwI.png) + +## Build + +To build the factory keymap, simply run: + + make amag23:default diff --git a/keyboards/amag23/keymaps/qwert/keymap.c b/keyboards/amag23/keymaps/qwert/keymap.c new file mode 100644 index 0000000000..4cb2e4736d --- /dev/null +++ b/keyboards/amag23/keymaps/qwert/keymap.c @@ -0,0 +1,40 @@ +/* Copyright 2021 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + BASE, + FN1 +}; + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [BASE] = LAYOUT_all( /* Base Layer */ + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, + MO(FN1), KC_A, KC_S, KC_D, KC_F, KC_G, + KC_LSFT, KC_Z, KC_X, KC_C, KC_SPC + ), + [FN1] = LAYOUT_all( /* Function Layer */ + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, + _______, RGB_TOG, RGB_VAI, RGB_MOD, RGB_HUI, _______, + _______, _______, RGB_VAD, RGB_RMOD,RGB_HUD, _______, + _______, _______, _______, _______, _______ + ), +}; +// clang-format on + diff --git a/keyboards/amag23/keymaps/qwert/readme.md b/keyboards/amag23/keymaps/qwert/readme.md new file mode 100644 index 0000000000..c3a7df467d --- /dev/null +++ b/keyboards/amag23/keymaps/qwert/readme.md @@ -0,0 +1,14 @@ +# QWERT Keymap for Koolertron AMAG23 + +## Additional Notes +QWERT keymap, based on the left hand of an ortholinear layout. + +## Keymap + +![AMAG23 QWERT Layout](https://i.imgur.com/fiDUo77.png) + +## Build + +To build the factory keymap, simply run: + + make amag23:qwert diff --git a/keyboards/amag23/readme.md b/keyboards/amag23/readme.md new file mode 100644 index 0000000000..6ffd64f879 --- /dev/null +++ b/keyboards/amag23/readme.md @@ -0,0 +1,27 @@ +# AMAG23 (Koolertron) + +![Koolertron AMAG23](https://i.imgur.com/DakwCxk.jpg) + +One Handed Macro Mechanical Keyboard, 23 Key with optional RGB backlighting. + +- Keyboard Maintainer: [ianmclinden](https://github.com/ianmclinden) +- Hardware Supported: AMAG23 (ATmega32A) +- Hardware Availability: + - [Newegg](https://www.newegg.com/p/32K-00H1-00001) + - [Amazon](https://www.amazon.com/Koolertron-Mechanical-Keyboard-One-Handed-Programmable/dp/B07RM1TBR8) + +Make example for this keyboard (after setting up your build environment): + + make amag23:default + +Flashing example for this keyboard ([after setting up the bootloadHID flashing environment](https://docs.qmk.fm/#/flashing_bootloadhid)) + + make amag23:default:flash + +**Reset Key**: Hold down the *Escape* key while plugging in the keyboard. + +**Tips**: +- The keyboard comes with bootloadHID installed from factory. +- The RGB leds seem to be chained together in diagonal rows. The result is that only 7 individual colors are supported, and these are striped across the keypad. + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/amag23/rules.mk b/keyboards/amag23/rules.mk new file mode 100644 index 0000000000..fa292d5cc8 --- /dev/null +++ b/keyboards/amag23/rules.mk @@ -0,0 +1,19 @@ +# MCU name +MCU = atmega32a + +# Bootloader selection +BOOTLOADER = bootloadHID + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +WS2812_DRIVER = i2c From 6b2a3a67a6a2044049b90fdd0c16ffbbd07a302a Mon Sep 17 00:00:00 2001 From: RinoSolutions <41451021+RinoSolutions@users.noreply.github.com> Date: Sun, 18 Apr 2021 23:54:07 -0400 Subject: [PATCH 224/613] [Keyboard] Adding of Monarch keyboard (#11769) Co-authored-by: Joel Challis Co-authored-by: Ryan Co-authored-by: Ramon Imbao --- keyboards/monarch/config.h | 77 +++++++++++++++++++ keyboards/monarch/info.json | 18 +++++ keyboards/monarch/keymaps/default/keymap.c | 43 +++++++++++ keyboards/monarch/keymaps/iso/keymap.c | 43 +++++++++++ keyboards/monarch/keymaps/via/config.h | 18 +++++ keyboards/monarch/keymaps/via/keymap.c | 89 ++++++++++++++++++++++ keyboards/monarch/keymaps/via/rules.mk | 1 + keyboards/monarch/monarch.c | 15 ++++ keyboards/monarch/monarch.h | 69 +++++++++++++++++ keyboards/monarch/readme.md | 15 ++++ keyboards/monarch/rules.mk | 23 ++++++ 11 files changed, 411 insertions(+) create mode 100644 keyboards/monarch/config.h create mode 100644 keyboards/monarch/info.json create mode 100644 keyboards/monarch/keymaps/default/keymap.c create mode 100644 keyboards/monarch/keymaps/iso/keymap.c create mode 100644 keyboards/monarch/keymaps/via/config.h create mode 100644 keyboards/monarch/keymaps/via/keymap.c create mode 100644 keyboards/monarch/keymaps/via/rules.mk create mode 100644 keyboards/monarch/monarch.c create mode 100644 keyboards/monarch/monarch.h create mode 100644 keyboards/monarch/readme.md create mode 100644 keyboards/monarch/rules.mk diff --git a/keyboards/monarch/config.h b/keyboards/monarch/config.h new file mode 100644 index 0000000000..ca9e2646b5 --- /dev/null +++ b/keyboards/monarch/config.h @@ -0,0 +1,77 @@ +/* +Copyright 2021 King Keyboards www.kingkbs.com + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4011 +#define PRODUCT_ID 0x43C1 +#define DEVICE_VER 0x0001 +#define MANUFACTURER DoCallMeKing +#define PRODUCT Monarch + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 16 + +#define MATRIX_COL_PINS { A10, A9, A8, B15, B14, B13, B12, B10, B2, B1, B0, A5, A7, A4, A3, B6 } +#define MATRIX_ROW_PINS { A15, B3, B11, A2, A1, B9 } +#define DIODE_DIRECTION COL2ROW + +/* Rotary encoder pins */ +#define ENCODERS_PAD_A { B4 } +#define ENCODERS_PAD_B { B5 } +#define ENCODER_RESOLUTION 1 + +//LEDS A6 +#define BACKLIGHT_PIN A6 +#define BACKLIGHT_PWM_DRIVER PWMD3 +#define BACKLIGHT_PWM_CHANNEL 1 +#define BACKLIGHT_PAL_MODE 1 +#define BACKLIGHT_LEVELS 24 +#define BACKLIGHT_BREATHING +#define BREATHING_PERIOD 6 + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION diff --git a/keyboards/monarch/info.json b/keyboards/monarch/info.json new file mode 100644 index 0000000000..a3c5ecabaf --- /dev/null +++ b/keyboards/monarch/info.json @@ -0,0 +1,18 @@ +{ + "keyboard_name": "Monarch", + "url": "", + "maintainer": "Ramon Imbao", + "width": 16.75, + "height": 5.5, + "layouts": { + "LAYOUT_ansi": { + "layout": [{"x":0.25, "y":0.25}, {"x":1.25, "y":0.25}, {"x":2.25, "y":0.25}, {"x":3.25, "y":0.25}, {"x":4.25, "y":0.25}, {"x":5.25, "y":0.25}, {"x":6.25, "y":0.25}, {"x":7.25, "y":0.25}, {"x":8.25, "y":0.25}, {"x":9.25, "y":0.25}, {"x":10.25, "y":0.25}, {"x":11.25, "y":0.25}, {"x":12.25, "y":0.25}, {"x":13.25, "y":0.25}, {"x":14.25, "y":0.25}, {"x":15.75, "y":0.25}, {"x":0.25, "y":1.25, "w":1.5}, {"x":1.75, "y":1.25}, {"x":2.75, "y":1.25}, {"x":3.75, "y":1.25}, {"x":4.75, "y":1.25}, {"x":5.75, "y":1.25}, {"x":6.75, "y":1.25}, {"x":7.75, "y":1.25}, {"x":8.75, "y":1.25}, {"x":9.75, "y":1.25}, {"x":10.75, "y":1.25}, {"x":11.75, "y":1.25}, {"x":12.75, "y":1.25}, {"x":13.75, "y":1.25, "w":1.5}, {"x":15.75, "y":1.75}, {"x":0.25, "y":2.25, "w":1.75}, {"x":2, "y":2.25}, {"x":3, "y":2.25}, {"x":4, "y":2.25}, {"x":5, "y":2.25}, {"x":6, "y":2.25}, {"x":7, "y":2.25}, {"x":8, "y":2.25}, {"x":9, "y":2.25}, {"x":10, "y":2.25}, {"x":11, "y":2.25}, {"x":12, "y":2.25}, {"x":13, "y":2.25, "w":2.25}, {"x":15.75, "y":2.75}, {"x":0.25, "y":3.25, "w":2.25}, {"x":2.5, "y":3.25}, {"x":3.5, "y":3.25}, {"x":4.5, "y":3.25}, {"x":5.5, "y":3.25}, {"x":6.5, "y":3.25}, {"x":7.5, "y":3.25}, {"x":8.5, "y":3.25}, {"x":9.5, "y":3.25}, {"x":10.5, "y":3.25}, {"x":11.5, "y":3.25}, {"x":12.5, "y":3.25, "w":1.75}, {"x":14.5, "y":3.5}, {"x":0.25, "y":4.25, "w":1.5}, {"x":1.75, "y":4.25}, {"x":2.75, "y":4.25, "w":1.5}, {"x":4.25, "y":4.25, "w":7}, {"x":11.25, "y":4.25, "w":1.5}, {"x":13.5, "y":4.5}, {"x":14.5, "y":4.5}, {"x":15.5, "y":4.5}] + }, + "LAYOUT_iso": { + "layout": [{"x":0.25, "y":0.25}, {"x":1.25, "y":0.25}, {"x":2.25, "y":0.25}, {"x":3.25, "y":0.25}, {"x":4.25, "y":0.25}, {"x":5.25, "y":0.25}, {"x":6.25, "y":0.25}, {"x":7.25, "y":0.25}, {"x":8.25, "y":0.25}, {"x":9.25, "y":0.25}, {"x":10.25, "y":0.25}, {"x":11.25, "y":0.25}, {"x":12.25, "y":0.25}, {"x":13.25, "y":0.25}, {"x":14.25, "y":0.25}, {"x":15.75, "y":0.25}, {"x":0.25, "y":1.25, "w":1.5}, {"x":1.75, "y":1.25}, {"x":2.75, "y":1.25}, {"x":3.75, "y":1.25}, {"x":4.75, "y":1.25}, {"x":5.75, "y":1.25}, {"x":6.75, "y":1.25}, {"x":7.75, "y":1.25}, {"x":8.75, "y":1.25}, {"x":9.75, "y":1.25}, {"x":10.75, "y":1.25}, {"x":11.75, "y":1.25}, {"x":12.75, "y":1.25}, {"x":14, "y":1.25, "w":1.25, "h":2}, {"x":15.75, "y":1.75}, {"x":0.25, "y":2.25, "w":1.75}, {"x":2, "y":2.25}, {"x":3, "y":2.25}, {"x":4, "y":2.25}, {"x":5, "y":2.25}, {"x":6, "y":2.25}, {"x":7, "y":2.25}, {"x":8, "y":2.25}, {"x":9, "y":2.25}, {"x":10, "y":2.25}, {"x":11, "y":2.25}, {"x":12, "y":2.25}, {"x":13, "y":2.25}, {"x":15.75, "y":2.75}, {"x":0.25, "y":3.25, "w":1.25}, {"x":1.5, "y":3.25}, {"x":2.5, "y":3.25}, {"x":3.5, "y":3.25}, {"x":4.5, "y":3.25}, {"x":5.5, "y":3.25}, {"x":6.5, "y":3.25}, {"x":7.5, "y":3.25}, {"x":8.5, "y":3.25}, {"x":9.5, "y":3.25}, {"x":10.5, "y":3.25}, {"x":11.5, "y":3.25}, {"x":12.5, "y":3.25, "w":1.75}, {"x":14.5, "y":3.5}, {"x":0.25, "y":4.25, "w":1.5}, {"x":1.75, "y":4.25}, {"x":2.75, "y":4.25, "w":1.5}, {"x":4.25, "y":4.25, "w":7}, {"x":11.25, "y":4.25, "w":1.5}, {"x":13.5, "y":4.5}, {"x":14.5, "y":4.5}, {"x":15.5, "y":4.5}] + }, + "LAYOUT_all": { + "layout": [{"x":0.25, "y":0.25}, {"x":1.25, "y":0.25}, {"x":2.25, "y":0.25}, {"x":3.25, "y":0.25}, {"x":4.25, "y":0.25}, {"x":5.25, "y":0.25}, {"x":6.25, "y":0.25}, {"x":7.25, "y":0.25}, {"x":8.25, "y":0.25}, {"x":9.25, "y":0.25}, {"x":10.25, "y":0.25}, {"x":11.25, "y":0.25}, {"x":12.25, "y":0.25}, {"x":13.25, "y":0.25}, {"x":14.25, "y":0.25}, {"x":15.75, "y":0.25}, {"x":0.25, "y":1.25, "w":1.5}, {"x":1.75, "y":1.25}, {"x":2.75, "y":1.25}, {"x":3.75, "y":1.25}, {"x":4.75, "y":1.25}, {"x":5.75, "y":1.25}, {"x":6.75, "y":1.25}, {"x":7.75, "y":1.25}, {"x":8.75, "y":1.25}, {"x":9.75, "y":1.25}, {"x":10.75, "y":1.25}, {"x":11.75, "y":1.25}, {"x":12.75, "y":1.25}, {"x":13.75, "y":1.25, "w":1.5}, {"x":15.75, "y":1.75}, {"x":0.25, "y":2.25, "w":1.75}, {"x":2, "y":2.25}, {"x":3, "y":2.25}, {"x":4, "y":2.25}, {"x":5, "y":2.25}, {"x":6, "y":2.25}, {"x":7, "y":2.25}, {"x":8, "y":2.25}, {"x":9, "y":2.25}, {"x":10, "y":2.25}, {"x":11, "y":2.25}, {"x":12, "y":2.25}, {"x":13, "y":2.25, "w":2.25}, {"x":15.75, "y":2.75}, {"x":0.25, "y":3.25, "w":1.25}, {"x":1.5, "y":3.25}, {"x":2.5, "y":3.25}, {"x":3.5, "y":3.25}, {"x":4.5, "y":3.25}, {"x":5.5, "y":3.25}, {"x":6.5, "y":3.25}, {"x":7.5, "y":3.25}, {"x":8.5, "y":3.25}, {"x":9.5, "y":3.25}, {"x":10.5, "y":3.25}, {"x":11.5, "y":3.25}, {"x":12.5, "y":3.25, "w":1.75}, {"x":14.5, "y":3.5}, {"x":0.25, "y":4.25, "w":1.5}, {"x":1.75, "y":4.25}, {"x":2.75, "y":4.25, "w":1.5}, {"x":4.25, "y":4.25, "w":7}, {"x":11.25, "y":4.25, "w":1.5}, {"x":13.5, "y":4.5}, {"x":14.5, "y":4.5}, {"x":15.5, "y":4.5}, {"x":0.25, "y":5.25}, {"x":1.25, "y":5.25}] + } + } +} diff --git a/keyboards/monarch/keymaps/default/keymap.c b/keyboards/monarch/keymaps/default/keymap.c new file mode 100644 index 0000000000..e4d4e9ef35 --- /dev/null +++ b/keyboards/monarch/keymaps/default/keymap.c @@ -0,0 +1,43 @@ +/* +Copyright 2021 King Keyboards www.kingkbs.com + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_ansi( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_MUTE, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_ansi( + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_ON, + _______, _______, _______, BL_TOGG, _______, BL_DEC, BL_OFF, BL_INC + ) +}; + +void encoder_update_user(uint8_t index, bool clockwise) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } +} diff --git a/keyboards/monarch/keymaps/iso/keymap.c b/keyboards/monarch/keymaps/iso/keymap.c new file mode 100644 index 0000000000..71f02675eb --- /dev/null +++ b/keyboards/monarch/keymaps/iso/keymap.c @@ -0,0 +1,43 @@ +/* +Copyright 2021 King Keyboards www.kingkbs.com + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_iso( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_MUTE, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_PGDN, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_iso( + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_ON, + _______, _______, _______, BL_TOGG, _______, BL_DEC, BL_OFF, BL_INC + ) +}; + +void encoder_update_user(uint8_t index, bool clockwise) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } +} diff --git a/keyboards/monarch/keymaps/via/config.h b/keyboards/monarch/keymaps/via/config.h new file mode 100644 index 0000000000..04a6bd6b1a --- /dev/null +++ b/keyboards/monarch/keymaps/via/config.h @@ -0,0 +1,18 @@ +/* +Copyright 2021 King Keyboards www.kingkbs.com + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 2047 diff --git a/keyboards/monarch/keymaps/via/keymap.c b/keyboards/monarch/keymaps/via/keymap.c new file mode 100644 index 0000000000..1f14b195dc --- /dev/null +++ b/keyboards/monarch/keymaps/via/keymap.c @@ -0,0 +1,89 @@ +/* +Copyright 2021 King Keyboards www.kingkbs.com + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_MUTE, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT, + KC_VOLD, KC_VOLU + ), + [1] = LAYOUT_all( + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_ON, + _______, _______, _______, BL_TOGG, _______, BL_DEC, BL_OFF, BL_INC, + _______, _______ + ), + [2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______ + ), + [3] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______ + ) +}; + +keyevent_t encoder_ccw = { + .key = (keypos_t){.row = 5, .col = 0}, + .pressed = false +}; + +keyevent_t encoder_cw = { + .key = (keypos_t){.row = 5, .col = 1}, + .pressed = false +}; + +void matrix_scan_user(void) { + if (IS_PRESSED(encoder_ccw)) { + encoder_ccw.pressed = false; + encoder_ccw.time = (timer_read() | 1); + action_exec(encoder_ccw); + } + + if (IS_PRESSED(encoder_cw)) { + encoder_cw.pressed = false; + encoder_cw.time = (timer_read() | 1); + action_exec(encoder_cw); + } +} + +void encoder_update_user(uint8_t index, bool clockwise) { + if (clockwise) { + encoder_cw.pressed = true; + encoder_cw.time = (timer_read() | 1); + action_exec(encoder_cw); + } else { + encoder_ccw.pressed = true; + encoder_ccw.time = (timer_read() | 1); + action_exec(encoder_ccw); + } +} diff --git a/keyboards/monarch/keymaps/via/rules.mk b/keyboards/monarch/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/monarch/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/monarch/monarch.c b/keyboards/monarch/monarch.c new file mode 100644 index 0000000000..a054e2caef --- /dev/null +++ b/keyboards/monarch/monarch.c @@ -0,0 +1,15 @@ +/* +Copyright 2021 King Keyboards www.kingkbs.com +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "monarch.h" diff --git a/keyboards/monarch/monarch.h b/keyboards/monarch/monarch.h new file mode 100644 index 0000000000..7678a078a1 --- /dev/null +++ b/keyboards/monarch/monarch.h @@ -0,0 +1,69 @@ +/* +Copyright 2021 King Keyboards www.kingkbs.com +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + +// ANSI enter +#define LAYOUT_ansi( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1e, k1f, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, k2f, \ + k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3e, \ + k40, k41, k42, k47, k4b, k4d, k4e, k4f \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, XXX, k1e, k1f }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d, XXX, k2f }, \ + { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d, k3e, XXX }, \ + { k40, k41, k42, XXX, XXX, XXX, XXX, k47, XXX, XXX, XXX, k4b, XXX, k4d, k4e, k4f }, \ + { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \ +} + +// ISO enter +// Split left shift +#define LAYOUT_iso( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1e, k1f, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, k2f, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3e, \ + k40, k41, k42, k47, k4b, k4d, k4e, k4f \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, XXX, k1e, k1f }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d, XXX, k2f }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d, k3e, XXX }, \ + { k40, k41, k42, XXX, XXX, XXX, XXX, k47, XXX, XXX, XXX, k4b, XXX, k4d, k4e, k4f }, \ + { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \ +} + +// VIA-specific layout with extra buttons for changing rotary encoder functionality +#define LAYOUT_all( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1e, k1f, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, k2f, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3e, \ + k40, k41, k42, k47, k4b, k4d, k4e, k4f, \ + k50, k51 \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, XXX, k1e, k1f }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d, XXX, k2f }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d, k3e, XXX }, \ + { k40, k41, k42, XXX, XXX, XXX, XXX, k47, XXX, XXX, XXX, k4b, XXX, k4d, k4e, k4f }, \ + { k50, k51, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \ +} diff --git a/keyboards/monarch/readme.md b/keyboards/monarch/readme.md new file mode 100644 index 0000000000..1e22d94afe --- /dev/null +++ b/keyboards/monarch/readme.md @@ -0,0 +1,15 @@ +# Monarch + +![Monarch Keyboard](https://i.imgur.com/3nnybLkh.jpg) + +A 65percent keyboard with a rotary encoder and interchangeable inserts. + +* Keyboard Maintainer: [Ramon Imbao](https://github.com/ramonimbao) +* Hardware Supported: STM32F072CBT6 +* Hardware Availability: https://www.kingkbs.com + +Make example for this keyboard (after setting up your build environment): + + make monarch:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/monarch/rules.mk b/keyboards/monarch/rules.mk new file mode 100644 index 0000000000..5536d53345 --- /dev/null +++ b/keyboards/monarch/rules.mk @@ -0,0 +1,23 @@ +# MCU name +MCU = STM32F072 + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +ENCODER_ENABLE = yes + +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE From 2aab8a114e559cecd4aecbcaf79172f8728262f3 Mon Sep 17 00:00:00 2001 From: MelGeek <65591833+melgeek001365@users.noreply.github.com> Date: Mon, 19 Apr 2021 12:02:13 +0800 Subject: [PATCH 225/613] [Keyboard] Update MJ61 architecture to support multi version (#11787) Co-authored-by: Ryan Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com> Co-authored-by: Drashna Jaelre --- keyboards/melgeek/mj61/config.h | 32 +++++++ keyboards/melgeek/mj61/mj61.c | 107 --------------------- keyboards/melgeek/mj61/rev1/config.h | 31 ------- keyboards/melgeek/mj61/rev1/rev1.c | 124 +++++++++++++++++++++++++ keyboards/melgeek/mj61/rev1/rules.mk | 2 + keyboards/melgeek/mj61/rev2/config.h | 39 ++++++++ keyboards/melgeek/mj61/rev2/rev2.c | 134 +++++++++++++++++++++++++++ keyboards/melgeek/mj61/rev2/rules.mk | 23 +++++ 8 files changed, 354 insertions(+), 138 deletions(-) create mode 100644 keyboards/melgeek/mj61/rev1/rev1.c create mode 100644 keyboards/melgeek/mj61/rev2/config.h create mode 100644 keyboards/melgeek/mj61/rev2/rev2.c create mode 100644 keyboards/melgeek/mj61/rev2/rules.mk diff --git a/keyboards/melgeek/mj61/config.h b/keyboards/melgeek/mj61/config.h index 452b1c8728..164c04fb50 100644 --- a/keyboards/melgeek/mj61/config.h +++ b/keyboards/melgeek/mj61/config.h @@ -17,3 +17,35 @@ #pragma once #include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xEDED +#define PRODUCT_ID 0xED61 +#define DEVICE_VER 0x0001 +#define MANUFACTURER MelGeek +#define PRODUCT MJ61 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 3 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +#define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects +#define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended +#define RGB_MATRIX_KEYPRESSES +#define RGB_MATRIX_LED_PROCESS_LIMIT 4 +#define RGB_MATRIX_LED_FLUSH_LIMIT 26 +#define DISABLE_RGB_MATRIX_SPLASH +#define DISABLE_RGB_MATRIX_MULTISPLASH +#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH +//#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_COLOR +#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL +#define DRIVER_ADDR_1 0b0110000 +#define DRIVER_ADDR_2 0b0110000 // this is here for compliancy reasons. +#define DRIVER_COUNT 1 diff --git a/keyboards/melgeek/mj61/mj61.c b/keyboards/melgeek/mj61/mj61.c index 21853019f0..a3aa29676a 100644 --- a/keyboards/melgeek/mj61/mj61.c +++ b/keyboards/melgeek/mj61/mj61.c @@ -15,110 +15,3 @@ */ #include "mj61.h" - -#ifdef RGB_MATRIX_ENABLE -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { - {0, CS12_SW1, CS11_SW1, CS10_SW1}, /* RGB1 */ - {0, CS12_SW2, CS11_SW2, CS10_SW2}, /* RGB2 */ - {0, CS12_SW3, CS11_SW3, CS10_SW3}, /* RGB3 */ - {0, CS12_SW4, CS11_SW4, CS10_SW4}, /* RGB4 */ - {0, CS12_SW5, CS11_SW5, CS10_SW5}, /* RGB5 */ - {0, CS12_SW6, CS11_SW6, CS10_SW6}, /* RGB6 */ - {0, CS12_SW7, CS11_SW7, CS10_SW7}, /* RGB7 */ - {0, CS12_SW8, CS11_SW8, CS10_SW8}, /* RGB8 */ - {0, CS12_SW9, CS11_SW9, CS10_SW9}, /* RGB9 */ - {0, CS15_SW1, CS14_SW1, CS13_SW1}, /* RGB10 */ - {0, CS15_SW2, CS14_SW2, CS13_SW2}, /* RGB11 */ - {0, CS15_SW3, CS14_SW3, CS13_SW3}, /* RGB12 */ - {0, CS15_SW4, CS14_SW4, CS13_SW4}, /* RGB13 */ - {0, CS15_SW5, CS14_SW5, CS13_SW5}, /* RGB14 */ - {0, CS15_SW6, CS14_SW6, CS13_SW6}, /* RGB15 */ - {0, CS15_SW7, CS14_SW7, CS13_SW7}, /* RGB16 */ - {0, CS15_SW8, CS14_SW8, CS13_SW8}, /* RGB17 */ - {0, CS15_SW9, CS14_SW9, CS13_SW9}, /* RGB18 */ - {0, CS18_SW1, CS17_SW1, CS16_SW1}, /* RGB19 */ - {0, CS18_SW2, CS17_SW2, CS16_SW2}, /* RGB20 */ - {0, CS18_SW3, CS17_SW3, CS16_SW3}, /* RGB21 */ - {0, CS18_SW4, CS17_SW4, CS16_SW4}, /* RGB22 */ - {0, CS18_SW5, CS17_SW5, CS16_SW5}, /* RGB23 */ - {0, CS18_SW6, CS17_SW6, CS16_SW6}, /* RGB24 */ - {0, CS18_SW7, CS17_SW7, CS16_SW7}, /* RGB25 */ - {0, CS18_SW8, CS17_SW8, CS16_SW8}, /* RGB26 */ - {0, CS18_SW9, CS17_SW9, CS16_SW9}, /* RGB27 */ - {0, CS21_SW1, CS20_SW1, CS19_SW1}, /* RGB28 */ - {0, CS21_SW2, CS20_SW2, CS19_SW2}, /* RGB29 */ - {0, CS21_SW3, CS20_SW3, CS19_SW3}, /* RGB30 */ - {0, CS21_SW4, CS20_SW4, CS19_SW4}, /* RGB31 */ - {0, CS21_SW5, CS20_SW5, CS19_SW5}, /* RGB32 */ - {0, CS21_SW6, CS20_SW6, CS19_SW6}, /* RGB33 */ - {0, CS21_SW7, CS20_SW7, CS19_SW7}, /* RGB34 */ - {0, CS21_SW8, CS20_SW8, CS19_SW8}, /* RGB35 */ - {0, CS21_SW9, CS20_SW9, CS19_SW9}, /* RGB36 */ - {0, CS24_SW1, CS23_SW1, CS22_SW1}, /* RGB37 */ - {0, CS24_SW2, CS23_SW2, CS22_SW2}, /* RGB38 */ - {0, CS24_SW3, CS23_SW3, CS22_SW3}, /* RGB39 */ - {0, CS24_SW4, CS23_SW4, CS22_SW4}, /* RGB40 */ - {0, CS24_SW5, CS23_SW5, CS22_SW5}, /* RGB41 */ - {0, CS24_SW6, CS23_SW6, CS22_SW6}, /* RGB42 */ - {0, CS24_SW7, CS23_SW7, CS22_SW7}, /* RGB43 */ - {0, CS24_SW8, CS23_SW8, CS22_SW8}, /* RGB44 */ - {0, CS24_SW9, CS23_SW9, CS22_SW9}, /* RGB45 */ - {0, CS27_SW1, CS26_SW1, CS25_SW1}, /* RGB46 */ - {0, CS27_SW2, CS26_SW2, CS25_SW2}, /* RGB47 */ - {0, CS27_SW3, CS26_SW3, CS25_SW3}, /* RGB48 */ - {0, CS27_SW4, CS26_SW4, CS25_SW4}, /* RGB49 */ - {0, CS27_SW5, CS26_SW5, CS25_SW5}, /* RGB50 */ - {0, CS27_SW6, CS26_SW6, CS25_SW6}, /* RGB51 */ - {0, CS27_SW7, CS26_SW7, CS25_SW7}, /* RGB52 */ - {0, CS27_SW8, CS26_SW8, CS25_SW8}, /* RGB53 */ - {0, CS27_SW9, CS26_SW9, CS25_SW9}, /* RGB54 */ - {0, CS30_SW1, CS29_SW1, CS28_SW1}, /* RGB55 */ - {0, CS30_SW2, CS29_SW2, CS28_SW2}, /* RGB56 */ - {0, CS30_SW3, CS29_SW3, CS28_SW3}, /* RGB57 */ - {0, CS30_SW4, CS29_SW4, CS28_SW4}, /* RGB58 */ - {0, CS30_SW5, CS29_SW5, CS28_SW5}, /* RGB59 */ - {0, CS30_SW6, CS29_SW6, CS28_SW6}, /* RGB60 */ - {0, CS30_SW7, CS29_SW7, CS28_SW7}, /* RGB61 */ - {0, CS30_SW8, CS29_SW8, CS28_SW8}, /* RGB62 */ - {0, CS30_SW9, CS29_SW9, CS28_SW9}, /* RGB63 */ -}; - -led_config_t g_led_config = { - { - /* C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13 */ - { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 }, /* R0 */ - { 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14 }, /* R1 */ - { 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, NO_LED,}, /* R2 */ - { 52, NO_LED, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, NO_LED }, /* R3 */ - { 53, 54, NO_LED, 55, 61, 56, 62, NO_LED, NO_LED, 57, 58, 59, 60, NO_LED }, /* R4 */ - }, { - {0, 0}, {16, 0}, {32, 0}, {48, 0}, {64, 0}, {80, 0}, {96, 0}, {112, 0}, {128, 0}, {144, 0}, {160, 0}, {176, 0}, {192, 0}, {208, 0}, - {0, 16}, {16, 16}, {32, 16}, {48, 16}, {64, 16}, {80, 16}, {96, 16}, {112, 16}, {128, 16}, {144, 16}, {160, 16}, {176, 16}, {192, 16}, {208, 16}, - {0, 32}, {16, 32}, {32, 32}, {48, 32}, {64, 32}, {80, 32}, {96, 32}, {112, 32}, {128, 32}, {144, 32}, {160, 32}, {176, 32}, {192, 32}, - {0, 48}, {16, 48}, {32, 48}, {48, 48}, {64, 48}, {80, 48}, {96, 48}, {112, 48}, {128, 48}, {144, 48}, {160, 48}, {176, 48}, - {0, 64}, {16, 64}, {32, 64}, {48, 64}, {64, 64}, {80, 64}, {96, 64}, {112, 64}, {128, 64}, {144, 64}, - }, { - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - } -}; - -void suspend_power_down_kb(void) { - rgb_matrix_set_suspend_state(true); - suspend_power_down_user(); -} - -void suspend_wakeup_init_kb(void) { - rgb_matrix_set_suspend_state(false); - suspend_wakeup_init_user(); -} - -void keyboard_pre_init_kb(void) { - setPinOutput(A2); - writePinHigh(A2); - keyboard_pre_init_user(); -} -#endif diff --git a/keyboards/melgeek/mj61/rev1/config.h b/keyboards/melgeek/mj61/rev1/config.h index a0ba953b0e..9586a6930d 100644 --- a/keyboards/melgeek/mj61/rev1/config.h +++ b/keyboards/melgeek/mj61/rev1/config.h @@ -16,17 +16,6 @@ #pragma once -/* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0xED61 -#define DEVICE_VER 0x0001 -#define MANUFACTURER MelGeek -#define PRODUCT MJ61 - -/* key matrix size */ -#define MATRIX_ROWS 5 -#define MATRIX_COLS 14 - /* * Keyboard Matrix Assignments * @@ -45,26 +34,6 @@ /* COL2ROW, ROW2COL*/ #define DIODE_DIRECTION COL2ROW -/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCE 3 - -/* disable these deprecated features by default */ -#define NO_ACTION_MACRO -#define NO_ACTION_FUNCTION - -#define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects -#define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended -#define RGB_MATRIX_KEYPRESSES -#define RGB_MATRIX_LED_PROCESS_LIMIT 4 -#define RGB_MATRIX_LED_FLUSH_LIMIT 26 -#define DISABLE_RGB_MATRIX_SPLASH -#define DISABLE_RGB_MATRIX_MULTISPLASH -#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH -//#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_COLOR -#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL -#define DRIVER_ADDR_1 0b0110000 -#define DRIVER_ADDR_2 0b0110000 // this is here for compliancy reasons. -#define DRIVER_COUNT 1 #define DRIVER_1_LED_TOTAL 63 #define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL #define DRIVER_INDICATOR_LED_TOTAL 0 diff --git a/keyboards/melgeek/mj61/rev1/rev1.c b/keyboards/melgeek/mj61/rev1/rev1.c new file mode 100644 index 0000000000..be58f57a95 --- /dev/null +++ b/keyboards/melgeek/mj61/rev1/rev1.c @@ -0,0 +1,124 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "mj61.h" + +#ifdef RGB_MATRIX_ENABLE +const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { + {0, CS12_SW1, CS11_SW1, CS10_SW1}, /* RGB1 */ + {0, CS12_SW2, CS11_SW2, CS10_SW2}, /* RGB2 */ + {0, CS12_SW3, CS11_SW3, CS10_SW3}, /* RGB3 */ + {0, CS12_SW4, CS11_SW4, CS10_SW4}, /* RGB4 */ + {0, CS12_SW5, CS11_SW5, CS10_SW5}, /* RGB5 */ + {0, CS12_SW6, CS11_SW6, CS10_SW6}, /* RGB6 */ + {0, CS12_SW7, CS11_SW7, CS10_SW7}, /* RGB7 */ + {0, CS12_SW8, CS11_SW8, CS10_SW8}, /* RGB8 */ + {0, CS12_SW9, CS11_SW9, CS10_SW9}, /* RGB9 */ + {0, CS15_SW1, CS14_SW1, CS13_SW1}, /* RGB10 */ + {0, CS15_SW2, CS14_SW2, CS13_SW2}, /* RGB11 */ + {0, CS15_SW3, CS14_SW3, CS13_SW3}, /* RGB12 */ + {0, CS15_SW4, CS14_SW4, CS13_SW4}, /* RGB13 */ + {0, CS15_SW5, CS14_SW5, CS13_SW5}, /* RGB14 */ + {0, CS15_SW6, CS14_SW6, CS13_SW6}, /* RGB15 */ + {0, CS15_SW7, CS14_SW7, CS13_SW7}, /* RGB16 */ + {0, CS15_SW8, CS14_SW8, CS13_SW8}, /* RGB17 */ + {0, CS15_SW9, CS14_SW9, CS13_SW9}, /* RGB18 */ + {0, CS18_SW1, CS17_SW1, CS16_SW1}, /* RGB19 */ + {0, CS18_SW2, CS17_SW2, CS16_SW2}, /* RGB20 */ + {0, CS18_SW3, CS17_SW3, CS16_SW3}, /* RGB21 */ + {0, CS18_SW4, CS17_SW4, CS16_SW4}, /* RGB22 */ + {0, CS18_SW5, CS17_SW5, CS16_SW5}, /* RGB23 */ + {0, CS18_SW6, CS17_SW6, CS16_SW6}, /* RGB24 */ + {0, CS18_SW7, CS17_SW7, CS16_SW7}, /* RGB25 */ + {0, CS18_SW8, CS17_SW8, CS16_SW8}, /* RGB26 */ + {0, CS18_SW9, CS17_SW9, CS16_SW9}, /* RGB27 */ + {0, CS21_SW1, CS20_SW1, CS19_SW1}, /* RGB28 */ + {0, CS21_SW2, CS20_SW2, CS19_SW2}, /* RGB29 */ + {0, CS21_SW3, CS20_SW3, CS19_SW3}, /* RGB30 */ + {0, CS21_SW4, CS20_SW4, CS19_SW4}, /* RGB31 */ + {0, CS21_SW5, CS20_SW5, CS19_SW5}, /* RGB32 */ + {0, CS21_SW6, CS20_SW6, CS19_SW6}, /* RGB33 */ + {0, CS21_SW7, CS20_SW7, CS19_SW7}, /* RGB34 */ + {0, CS21_SW8, CS20_SW8, CS19_SW8}, /* RGB35 */ + {0, CS21_SW9, CS20_SW9, CS19_SW9}, /* RGB36 */ + {0, CS24_SW1, CS23_SW1, CS22_SW1}, /* RGB37 */ + {0, CS24_SW2, CS23_SW2, CS22_SW2}, /* RGB38 */ + {0, CS24_SW3, CS23_SW3, CS22_SW3}, /* RGB39 */ + {0, CS24_SW4, CS23_SW4, CS22_SW4}, /* RGB40 */ + {0, CS24_SW5, CS23_SW5, CS22_SW5}, /* RGB41 */ + {0, CS24_SW6, CS23_SW6, CS22_SW6}, /* RGB42 */ + {0, CS24_SW7, CS23_SW7, CS22_SW7}, /* RGB43 */ + {0, CS24_SW8, CS23_SW8, CS22_SW8}, /* RGB44 */ + {0, CS24_SW9, CS23_SW9, CS22_SW9}, /* RGB45 */ + {0, CS27_SW1, CS26_SW1, CS25_SW1}, /* RGB46 */ + {0, CS27_SW2, CS26_SW2, CS25_SW2}, /* RGB47 */ + {0, CS27_SW3, CS26_SW3, CS25_SW3}, /* RGB48 */ + {0, CS27_SW4, CS26_SW4, CS25_SW4}, /* RGB49 */ + {0, CS27_SW5, CS26_SW5, CS25_SW5}, /* RGB50 */ + {0, CS27_SW6, CS26_SW6, CS25_SW6}, /* RGB51 */ + {0, CS27_SW7, CS26_SW7, CS25_SW7}, /* RGB52 */ + {0, CS27_SW8, CS26_SW8, CS25_SW8}, /* RGB53 */ + {0, CS27_SW9, CS26_SW9, CS25_SW9}, /* RGB54 */ + {0, CS30_SW1, CS29_SW1, CS28_SW1}, /* RGB55 */ + {0, CS30_SW2, CS29_SW2, CS28_SW2}, /* RGB56 */ + {0, CS30_SW3, CS29_SW3, CS28_SW3}, /* RGB57 */ + {0, CS30_SW4, CS29_SW4, CS28_SW4}, /* RGB58 */ + {0, CS30_SW5, CS29_SW5, CS28_SW5}, /* RGB59 */ + {0, CS30_SW6, CS29_SW6, CS28_SW6}, /* RGB60 */ + {0, CS30_SW7, CS29_SW7, CS28_SW7}, /* RGB61 */ + {0, CS30_SW8, CS29_SW8, CS28_SW8}, /* RGB62 */ + {0, CS30_SW9, CS29_SW9, CS28_SW9}, /* RGB63 */ +}; + +led_config_t g_led_config = { + { + /* C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13 */ + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 }, /* R0 */ + { 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14 }, /* R1 */ + { 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, NO_LED,}, /* R2 */ + { 52, NO_LED, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, NO_LED }, /* R3 */ + { 53, 54, NO_LED, 55, 61, 56, 62, NO_LED, NO_LED, 57, 58, 59, 60, NO_LED }, /* R4 */ + }, { + {0, 0}, {16, 0}, {32, 0}, {48, 0}, {64, 0}, {80, 0}, {96, 0}, {112, 0}, {128, 0}, {144, 0}, {160, 0}, {176, 0}, {192, 0}, {208, 0}, + {0, 16}, {16, 16}, {32, 16}, {48, 16}, {64, 16}, {80, 16}, {96, 16}, {112, 16}, {128, 16}, {144, 16}, {160, 16}, {176, 16}, {192, 16}, {208, 16}, + {0, 32}, {16, 32}, {32, 32}, {48, 32}, {64, 32}, {80, 32}, {96, 32}, {112, 32}, {128, 32}, {144, 32}, {160, 32}, {176, 32}, {192, 32}, + {0, 48}, {16, 48}, {32, 48}, {48, 48}, {64, 48}, {80, 48}, {96, 48}, {112, 48}, {128, 48}, {144, 48}, {160, 48}, {176, 48}, + {0, 64}, {16, 64}, {32, 64}, {48, 64}, {64, 64}, {80, 64}, {96, 64}, {112, 64}, {128, 64}, {144, 64}, + }, { + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + } +}; + +void suspend_power_down_kb(void) { + rgb_matrix_set_suspend_state(true); + suspend_power_down_user(); +} + +void suspend_wakeup_init_kb(void) { + rgb_matrix_set_suspend_state(false); + suspend_wakeup_init_user(); +} +#endif + +void keyboard_pre_init_kb(void) { + setPinOutput(A2); + writePinHigh(A2); + keyboard_pre_init_user(); +} diff --git a/keyboards/melgeek/mj61/rev1/rules.mk b/keyboards/melgeek/mj61/rev1/rules.mk index 6f196e8849..31a770cfbb 100644 --- a/keyboards/melgeek/mj61/rev1/rules.mk +++ b/keyboards/melgeek/mj61/rev1/rules.mk @@ -20,3 +20,5 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth RGB_MATRIX_ENABLE = yes # Use RGB matrix RGB_MATRIX_DRIVER = IS31FL3741 NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in + +LAYOUTS = 60_ansi diff --git a/keyboards/melgeek/mj61/rev2/config.h b/keyboards/melgeek/mj61/rev2/config.h new file mode 100644 index 0000000000..e6c6e9610e --- /dev/null +++ b/keyboards/melgeek/mj61/rev2/config.h @@ -0,0 +1,39 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ + +#define MATRIX_ROW_PINS { B12, B11, B10, B1, A3 } +#define MATRIX_COL_PINS { B15, A8, B13, A15, B3, B4, B5, B8, B9, C13, C14, C15, A0, A1 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +#define DRIVER_1_LED_TOTAL 71 +#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL +#define DRIVER_INDICATOR_LED_TOTAL 0 diff --git a/keyboards/melgeek/mj61/rev2/rev2.c b/keyboards/melgeek/mj61/rev2/rev2.c new file mode 100644 index 0000000000..236b003972 --- /dev/null +++ b/keyboards/melgeek/mj61/rev2/rev2.c @@ -0,0 +1,134 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "mj61.h" + +#ifdef RGB_MATRIX_ENABLE + + +const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { + {0, CS9_SW1, CS8_SW1, CS7_SW1}, /* RGB1 */ + {0, CS9_SW2, CS8_SW2, CS7_SW2}, /* RGB3 */ + {0, CS9_SW3, CS8_SW3, CS7_SW3}, /* RGB4 */ + {0, CS9_SW4, CS8_SW4, CS7_SW4}, /* RGB5 */ + {0, CS9_SW5, CS8_SW5, CS7_SW5}, /* RGB6 */ + {0, CS9_SW6, CS8_SW6, CS7_SW6}, /* RGB7 */ + {0, CS9_SW7, CS8_SW7, CS7_SW7}, /* RGB2 */ + {0, CS9_SW8, CS8_SW8, CS7_SW8}, /* RGB8 */ + {0, CS9_SW9, CS8_SW9, CS7_SW9}, /* RGB9 */ + {0, CS24_SW1, CS23_SW1, CS22_SW1}, /* RGB48 */ + {0, CS24_SW2, CS23_SW2, CS22_SW2}, /* RGB46 */ + {0, CS24_SW3, CS23_SW3, CS22_SW3}, /* RGB49 */ + {0, CS24_SW4, CS23_SW4, CS22_SW4}, /* RGB50 */ + {0, CS24_SW5, CS23_SW5, CS22_SW5}, /* RGB51 */ + {0, CS24_SW6, CS23_SW6, CS22_SW6}, /* RGB52 */ + {0, CS24_SW7, CS23_SW7, CS22_SW7}, /* RGB53 */ + {0, CS12_SW1, CS11_SW1, CS10_SW1}, /* RGB10 */ + {0, CS12_SW2, CS11_SW2, CS10_SW2}, /* RGB11 */ + {0, CS12_SW3, CS11_SW3, CS10_SW3}, /* RGB16 */ + {0, CS12_SW4, CS11_SW4, CS10_SW4}, /* RGB12 */ + {0, CS12_SW5, CS11_SW5, CS10_SW5}, /* RGB17 */ + {0, CS12_SW6, CS11_SW6, CS10_SW6}, /* RGB13 */ + {0, CS12_SW7, CS11_SW7, CS10_SW7}, /* RGB14 */ + {0, CS12_SW8, CS11_SW8, CS10_SW8}, /* RGB18 */ + {0, CS12_SW9, CS11_SW9, CS10_SW9}, /* RGB15 */ + {0, CS24_SW8, CS23_SW8, CS22_SW8}, /* RGB47 */ + {0, CS24_SW9, CS23_SW9, CS22_SW9}, /* RGB54 */ + {0, CS27_SW1, CS26_SW1, CS25_SW1}, /* RGB55 */ + {0, CS27_SW2, CS26_SW2, CS25_SW2}, /* RGB60 */ + {0, CS27_SW3, CS26_SW3, CS25_SW3}, /* RGB61 */ + {0, CS15_SW1, CS14_SW1, CS13_SW1}, /* RGB21 */ + {0, CS15_SW2, CS14_SW2, CS13_SW2}, /* RGB19 */ + {0, CS15_SW3, CS14_SW3, CS13_SW3}, /* RGB22 */ + {0, CS15_SW4, CS14_SW4, CS13_SW4}, /* RGB26 */ + {0, CS15_SW5, CS14_SW5, CS13_SW5}, /* RGB20 */ + {0, CS15_SW6, CS14_SW6, CS13_SW6}, /* RGB23 */ + {0, CS15_SW7, CS14_SW7, CS13_SW7}, /* RGB24 */ + {0, CS15_SW8, CS14_SW8, CS13_SW8}, /* RGB25 */ + {0, CS15_SW9, CS14_SW9, CS13_SW9}, /* RGB27 */ + {0, CS27_SW4, CS26_SW4, CS25_SW4}, /* RGB56 */ + {0, CS27_SW5, CS26_SW5, CS25_SW5}, /* RGB57 */ + {0, CS27_SW6, CS26_SW6, CS25_SW6}, /* RGB62 */ + {0, CS27_SW7, CS26_SW7, CS25_SW7}, /* RGB58 */ + {0, CS27_SW8, CS26_SW8, CS25_SW8}, /* RGB63 */ + {0, CS27_SW9, CS26_SW9, CS25_SW9}, /* RGB59 */ + {0, CS18_SW1, CS17_SW1, CS16_SW1}, /* RGB28 */ + {0, CS18_SW2, CS17_SW2, CS16_SW2}, /* RGB29 */ + {0, CS18_SW3, CS17_SW3, CS16_SW3}, /* RGB30 */ + {0, CS18_SW4, CS17_SW4, CS16_SW4}, /* RGB31 */ + {0, CS18_SW5, CS17_SW5, CS16_SW5}, /* RGB35 */ + {0, CS18_SW6, CS17_SW6, CS16_SW6}, /* RGB32 */ + {0, CS18_SW7, CS17_SW7, CS16_SW7}, /* RGB33 */ + {0, CS18_SW8, CS17_SW8, CS16_SW8}, /* RGB34 */ + {0, CS18_SW9, CS17_SW9, CS16_SW9}, /* RGB36 */ + {0, CS30_SW1, CS29_SW1, CS28_SW1}, /* RGB64 */ + {0, CS30_SW2, CS29_SW2, CS28_SW2}, /* RGB65 */ + {0, CS30_SW3, CS29_SW3, CS28_SW3}, /* RGB66 */ + {0, CS30_SW4, CS29_SW4, CS28_SW4}, /* RGB67 */ + {0, CS30_SW5, CS29_SW5, CS28_SW5}, /* RGB68 */ + {0, CS30_SW6, CS29_SW6, CS28_SW6}, /* RGB69 */ + {0, CS30_SW7, CS29_SW7, CS28_SW7}, /* RGB70 */ + {0, CS21_SW1, CS20_SW1, CS19_SW1}, /* RGB37 */ + {0, CS21_SW2, CS20_SW2, CS19_SW2}, /* RGB40 */ + {0, CS21_SW3, CS20_SW3, CS19_SW3}, /* RGB43 */ + {0, CS21_SW4, CS20_SW4, CS19_SW4}, /* RGB38 */ + {0, CS21_SW5, CS20_SW5, CS19_SW5}, /* RGB41 */ + {0, CS21_SW6, CS20_SW6, CS19_SW6}, /* RGB44 */ + {0, CS21_SW7, CS20_SW7, CS19_SW7}, /* RGB45 */ + {0, CS21_SW8, CS20_SW8, CS19_SW8}, /* RGB39 */ + {0, CS21_SW9, CS20_SW9, CS19_SW9}, /* RGB42 */ + {0, CS30_SW8, CS29_SW8, CS28_SW8}, /* RGB71 */ +}; + +led_config_t g_led_config = { + { + /* C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13 */ + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14 }, /* R0 */ + { 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 }, /* R1 */ + { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 43, NO_LED }, /* R2 */ + { 46, NO_LED, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 59, NO_LED }, /* R3 */ + { 61, 62, NO_LED, 63, NO_LED, 65, NO_LED, NO_LED, NO_LED, 67, 68, 69, NO_LED, 70 }, /* R4 */ + }, { + {0, 0}, {16, 0}, {32, 0}, {48, 0}, {64, 0}, {80, 0}, {96, 0}, {112, 0}, {128, 0}, {144, 0}, {160, 0}, {176, 0}, {192, 0}, {208, 0}, {224, 0}, {240, 0}, + {0, 16}, {16, 16}, {32, 16}, {48, 16}, {64, 16}, {80, 16}, {96, 16}, {112, 16}, {128, 16}, {144, 16}, {160, 16}, {176, 16}, {192, 16}, {208, 16}, + {0, 32}, {16, 32}, {32, 32}, {48, 32}, {64, 32}, {80, 32}, {96, 32}, {112, 32}, {128, 32}, {144, 32}, {160, 32}, {176, 32}, {192, 32}, {208, 32}, {224, 32}, + {0, 48}, {16, 48}, {32, 48}, {48, 48}, {64, 48}, {80, 48}, {96, 48}, {112, 48}, {128, 48}, {144, 48}, {160, 48}, {176, 48}, {192, 48}, {208, 48}, {224, 48}, {240, 48}, + {0, 64}, {16, 64}, {32, 64}, {48, 64}, {64, 64}, {80, 64}, {96, 64}, {112, 64}, {128, 64}, {144, 64}, + }, { + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + } +}; + +void suspend_power_down_kb(void) { + rgb_matrix_set_suspend_state(true); + suspend_power_down_user(); +} + +void suspend_wakeup_init_kb(void) { + rgb_matrix_set_suspend_state(false); + suspend_wakeup_init_user(); +} +#endif + +void keyboard_pre_init_kb(void) { + setPinOutput(A2); + writePinHigh(A2); + keyboard_pre_init_user(); +} diff --git a/keyboards/melgeek/mj61/rev2/rules.mk b/keyboards/melgeek/mj61/rev2/rules.mk new file mode 100644 index 0000000000..a4c0558052 --- /dev/null +++ b/keyboards/melgeek/mj61/rev2/rules.mk @@ -0,0 +1,23 @@ +# MCU name +MCU = STM32F303 + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +RGB_MATRIX_ENABLE = yes # Use RGB matrix +RGB_MATRIX_DRIVER = IS31FL3741 +NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in + +LAYOUTS = 60_ansi From 0afbf8cc3ca637b427a70704fb4f1d4d218b08dc Mon Sep 17 00:00:00 2001 From: Sanctified-git <32301784+Sanctified-git@users.noreply.github.com> Date: Mon, 19 Apr 2021 06:53:33 +0200 Subject: [PATCH 226/613] [Keyboard] Add Dystopia keyboard (#11997) Co-authored-by: Drashna Jaelre Co-authored-by: Ryan Co-authored-by: Erovia Co-authored-by: Sanctified --- keyboards/sanctified/dystopia/config.h | 39 +++++++++++++++ keyboards/sanctified/dystopia/dystopia.c | 17 +++++++ keyboards/sanctified/dystopia/dystopia.h | 35 ++++++++++++++ keyboards/sanctified/dystopia/info.json | 17 +++++++ .../dystopia/keymaps/default/keymap.c | 34 +++++++++++++ .../sanctified/dystopia/keymaps/via/keymap.c | 48 +++++++++++++++++++ .../sanctified/dystopia/keymaps/via/rules.mk | 1 + keyboards/sanctified/dystopia/readme.md | 16 +++++++ keyboards/sanctified/dystopia/rules.mk | 23 +++++++++ 9 files changed, 230 insertions(+) create mode 100644 keyboards/sanctified/dystopia/config.h create mode 100644 keyboards/sanctified/dystopia/dystopia.c create mode 100644 keyboards/sanctified/dystopia/dystopia.h create mode 100644 keyboards/sanctified/dystopia/info.json create mode 100644 keyboards/sanctified/dystopia/keymaps/default/keymap.c create mode 100644 keyboards/sanctified/dystopia/keymaps/via/keymap.c create mode 100644 keyboards/sanctified/dystopia/keymaps/via/rules.mk create mode 100644 keyboards/sanctified/dystopia/readme.md create mode 100644 keyboards/sanctified/dystopia/rules.mk diff --git a/keyboards/sanctified/dystopia/config.h b/keyboards/sanctified/dystopia/config.h new file mode 100644 index 0000000000..dbed621724 --- /dev/null +++ b/keyboards/sanctified/dystopia/config.h @@ -0,0 +1,39 @@ +/* Copyright 2021 Quentin Melis + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x5357 // "SW" +#define PRODUCT_ID 0x0001 // First public keyboard +#define DEVICE_VER 0x0001 // Version 1 +#define MANUFACTURER Sanctified.Works +#define PRODUCT Dystopia + +/* Key Matrix Size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +/* Keyboard Matrix Assignments */ +#define MATRIX_ROW_PINS { B2, B3, E6, D5, D3 } +#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, D4, D6, D7, B4 } + +#define DIODE_DIRECTION COL2ROW + +#define USB_POLLING_INTERVAL_MS 1 +#define QMK_KEYS_PER_SCAN 12 diff --git a/keyboards/sanctified/dystopia/dystopia.c b/keyboards/sanctified/dystopia/dystopia.c new file mode 100644 index 0000000000..64ad5abc82 --- /dev/null +++ b/keyboards/sanctified/dystopia/dystopia.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Quentin Melis + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "dystopia.h" diff --git a/keyboards/sanctified/dystopia/dystopia.h b/keyboards/sanctified/dystopia/dystopia.h new file mode 100644 index 0000000000..5737f137cd --- /dev/null +++ b/keyboards/sanctified/dystopia/dystopia.h @@ -0,0 +1,35 @@ +/* Copyright 2021 Quentin Melis + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define ___ KC_NO + +#define LAYOUT_split_bs( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \ + K40, K41, K42, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \ + { K40, K41, K42, ___, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D } \ +} diff --git a/keyboards/sanctified/dystopia/info.json b/keyboards/sanctified/dystopia/info.json new file mode 100644 index 0000000000..f7948e5662 --- /dev/null +++ b/keyboards/sanctified/dystopia/info.json @@ -0,0 +1,17 @@ +{ + "keyboard_name": "Dystopia", + "url": "", + "maintainer": "Sanctified", + "width": 17.5, + "height": 5, + "layouts": { + "LAYOUT_split_bs": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":8.25, "y":0}, {"label":"*", "x":9.25, "y":0}, {"label":"(", "x":10.25, "y":0}, {"label":")", "x":11.25, "y":0}, {"label":"_", "x":12.25, "y":0}, {"label":"+", "x":13.25, "y":0}, {"label":"~", "x":14.25, "y":0}, {"label":"|", "x":15.25, "y":0}, {"label":"Insert", "x":16.5, "y":0}, + {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":7.75, "y":1}, {"label":"U", "x":8.75, "y":1}, {"label":"I", "x":9.75, "y":1}, {"label":"O", "x":10.75, "y":1}, {"label":"P", "x":11.75, "y":1}, {"label":"{", "x":12.75, "y":1}, {"label":"}", "x":13.75, "y":1}, {"label":"Delete", "x":14.75, "y":1, "w":1.5}, {"label":"PgUp", "x":16.5, "y":1}, + {"label":"Caps", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":8, "y":2}, {"label":"J", "x":9, "y":2}, {"label":"K", "x":10, "y":2}, {"label":"L", "x":11, "y":2}, {"label":":", "x":12, "y":2}, {"label":"\"", "x":13, "y":2}, {"label":"Enter", "x":14, "y":2, "w":2.25}, {"label":"PgDn", "x":16.5, "y":2}, + {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"B", "x":7.5, "y":3}, {"label":"N", "x":8.5, "y":3}, {"label":"M", "x":9.5, "y":3}, {"label":"<", "x":10.5, "y":3}, {"label":">", "x":11.5, "y":3}, {"label":"?", "x":12.5, "y":3}, {"label":"Shift", "x":13.5, "y":3, "w":1.75}, {"label":"Up", "x":15.25, "y":3}, + {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"label":"Space", "x":4, "y":4, "w":2.25}, {"label":"Fn", "x":6.25, "y":4}, {"label":"Backspace", "x":7.5, "y":4, "w":2.75}, {"label":"Alt", "x":10.25, "y":4, "w":1.5}, {"label":"Ctrl", "x":12.75, "y":4, "w":1.5}, {"label":"Left", "x":14.25, "y":4}, {"label":"Down", "x":15.25, "y":4}, {"label":"Right", "x":16.25, "y":4}] + } + } +} diff --git a/keyboards/sanctified/dystopia/keymaps/default/keymap.c b/keyboards/sanctified/dystopia/keymaps/default/keymap.c new file mode 100644 index 0000000000..1840f98196 --- /dev/null +++ b/keyboards/sanctified/dystopia/keymaps/default/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2021 Quentin Melis + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_split_bs( + KC_ESC, KC_1, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSLS, + KC_TAB, KC_2, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, + KC_CAPS, KC_Q, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_DEL, + KC_LSFT, KC_A, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGUP, + KC_LCTL, KC_Z, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_M, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN + ), + [1] = LAYOUT_split_bs( + KC_GRV, KC_F1, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_F2, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, + KC_LGUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END + ), +}; diff --git a/keyboards/sanctified/dystopia/keymaps/via/keymap.c b/keyboards/sanctified/dystopia/keymaps/via/keymap.c new file mode 100644 index 0000000000..4a3a0039f2 --- /dev/null +++ b/keyboards/sanctified/dystopia/keymaps/via/keymap.c @@ -0,0 +1,48 @@ +/* Copyright 2021 Quentin Melis + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_split_bs( + KC_ESC, KC_1, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSLS, + KC_TAB, KC_2, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, + KC_CAPS, KC_Q, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_DEL, + KC_LSFT, KC_A, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGUP, + KC_LCTL, KC_Z, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_M, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN + ), + [1] = LAYOUT_split_bs( + KC_GRV, KC_F1, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_F2, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, + KC_LGUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END + ), + [3] = LAYOUT_split_bs( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [4] = LAYOUT_split_bs( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; diff --git a/keyboards/sanctified/dystopia/keymaps/via/rules.mk b/keyboards/sanctified/dystopia/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/sanctified/dystopia/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/sanctified/dystopia/readme.md b/keyboards/sanctified/dystopia/readme.md new file mode 100644 index 0000000000..14574f818a --- /dev/null +++ b/keyboards/sanctified/dystopia/readme.md @@ -0,0 +1,16 @@ +# Dystopia + +![Dystopia](https://imgur.com/cwZ8bVVl.jpg) + +Ergonomic 65% layout keyboard. Features an 8 degree alpha rotation (similar to Prime-E and Meridian). + +* Keyboard Maintainer : [Sanctified](https://github.com/Sanctified-git) +* Made for the Dystopia PCB & Case + +Make example for this keyboard (after setting up your build environment): + + make sanctified/dystopia:default + +To enter bootloader mode, hold the RESET switch on the back of the PCB while plugging it in via USB. + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with the [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/sanctified/dystopia/rules.mk b/keyboards/sanctified/dystopia/rules.mk new file mode 100644 index 0000000000..8701c54163 --- /dev/null +++ b/keyboards/sanctified/dystopia/rules.mk @@ -0,0 +1,23 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +LTO_ENABLE = yes # Enable link time optimization From 9b8c5c186005b557c45b4f8c7a52f4261c5ca28f Mon Sep 17 00:00:00 2001 From: LIParadise Date: Mon, 19 Apr 2021 13:05:21 +0800 Subject: [PATCH 227/613] [Keyboard] Helen80 matrix fixes (#11969) Co-authored-by: LIParadise --- keyboards/playkbtw/helen80/helen80.h | 2 +- keyboards/playkbtw/helen80/rules.mk | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/keyboards/playkbtw/helen80/helen80.h b/keyboards/playkbtw/helen80/helen80.h index 11c34400d1..e1a25ea84e 100644 --- a/keyboards/playkbtw/helen80/helen80.h +++ b/keyboards/playkbtw/helen80/helen80.h @@ -27,7 +27,7 @@ K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5A \ ) { \ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \ - { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, KC_NO, K1E }, \ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E }, \ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \ { K40, KC_NO, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, KC_NO, K4C }, \ diff --git a/keyboards/playkbtw/helen80/rules.mk b/keyboards/playkbtw/helen80/rules.mk index d6c56d2678..eef98a9fe0 100644 --- a/keyboards/playkbtw/helen80/rules.mk +++ b/keyboards/playkbtw/helen80/rules.mk @@ -16,7 +16,7 @@ COMMAND_ENABLE = no # Commands for debug and configuration SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output @@ -27,4 +27,4 @@ KEY_LOCK_ENABLE = no # Enable KC_LOCK support LAYOUTS = tkl_ansi # generated by KBFirmware JSON to QMK Parser -# https://noroadsleft.github.io/kbf_qmk_converter/ \ No newline at end of file +# https://noroadsleft.github.io/kbf_qmk_converter/ From 1e19227b31f449b72542372b9c1cade126ecafa2 Mon Sep 17 00:00:00 2001 From: maz0r Date: Mon, 19 Apr 2021 06:24:30 +0100 Subject: [PATCH 228/613] [Keyboard] Capsunlocked CU80 Squish and Refactor (#12193) Co-authored-by: Ryan Co-authored-by: Erovia --- keyboards/capsunlocked/cu80/v2_ansi/config.h | 33 +-- keyboards/capsunlocked/cu80/v2_ansi/info.json | 236 ++++++++++------- .../cu80/v2_ansi/keymaps/default/keymap.c | 4 +- .../cu80/v2_ansi/keymaps/via/keymap.c | 4 +- keyboards/capsunlocked/cu80/v2_ansi/readme.md | 3 +- .../capsunlocked/cu80/v2_ansi/rgb/config.h | 37 +++ .../capsunlocked/cu80/v2_ansi/rgb/readme.md | 3 + .../capsunlocked/cu80/v2_ansi/rgb/rules.mk | 3 + keyboards/capsunlocked/cu80/v2_ansi/rules.mk | 17 +- keyboards/capsunlocked/cu80/v2_ansi/v2_ansi.c | 30 +++ .../capsunlocked/cu80/v2_ansi_rgb/config.h | 55 ---- .../capsunlocked/cu80/v2_ansi_rgb/info.json | 100 -------- .../cu80/v2_ansi_rgb/keymaps/default/keymap.c | 38 --- .../v2_ansi_rgb/keymaps/default/readme.md | 3 - .../cu80/v2_ansi_rgb/keymaps/via/keymap.c | 55 ---- .../cu80/v2_ansi_rgb/keymaps/via/rules.mk | 1 - .../capsunlocked/cu80/v2_ansi_rgb/readme.md | 18 -- .../capsunlocked/cu80/v2_ansi_rgb/rules.mk | 28 --- .../cu80/v2_ansi_rgb/v2_ansi_rgb.c | 67 ----- .../cu80/v2_ansi_rgb/v2_ansi_rgb.h | 46 ---- keyboards/capsunlocked/cu80/v2_iso/config.h | 32 +-- keyboards/capsunlocked/cu80/v2_iso/info.json | 238 ++++++++++-------- .../cu80/v2_iso/keymaps/default/keymap.c | 2 +- .../cu80/v2_iso/keymaps/via/keymap.c | 2 +- keyboards/capsunlocked/cu80/v2_iso/readme.md | 3 +- .../capsunlocked/cu80/v2_iso/rgb/config.h | 36 +++ .../capsunlocked/cu80/v2_iso/rgb/readme.md | 3 + .../capsunlocked/cu80/v2_iso/rgb/rules.mk | 3 + keyboards/capsunlocked/cu80/v2_iso/rules.mk | 17 +- keyboards/capsunlocked/cu80/v2_iso/v2_iso.c | 24 ++ .../capsunlocked/cu80/v2_iso_rgb/config.h | 52 ---- .../capsunlocked/cu80/v2_iso_rgb/info.json | 101 -------- .../cu80/v2_iso_rgb/keymaps/default/keymap.c | 38 --- .../cu80/v2_iso_rgb/keymaps/default/readme.md | 3 - .../cu80/v2_iso_rgb/keymaps/via/keymap.c | 55 ---- .../cu80/v2_iso_rgb/keymaps/via/rules.mk | 1 - .../capsunlocked/cu80/v2_iso_rgb/readme.md | 18 -- .../capsunlocked/cu80/v2_iso_rgb/rules.mk | 28 --- .../capsunlocked/cu80/v2_iso_rgb/v2_iso_rgb.c | 64 ----- .../capsunlocked/cu80/v2_iso_rgb/v2_iso_rgb.h | 46 ---- 40 files changed, 436 insertions(+), 1111 deletions(-) create mode 100644 keyboards/capsunlocked/cu80/v2_ansi/rgb/config.h create mode 100644 keyboards/capsunlocked/cu80/v2_ansi/rgb/readme.md create mode 100644 keyboards/capsunlocked/cu80/v2_ansi/rgb/rules.mk delete mode 100644 keyboards/capsunlocked/cu80/v2_ansi_rgb/config.h delete mode 100644 keyboards/capsunlocked/cu80/v2_ansi_rgb/info.json delete mode 100644 keyboards/capsunlocked/cu80/v2_ansi_rgb/keymaps/default/keymap.c delete mode 100644 keyboards/capsunlocked/cu80/v2_ansi_rgb/keymaps/default/readme.md delete mode 100644 keyboards/capsunlocked/cu80/v2_ansi_rgb/keymaps/via/keymap.c delete mode 100644 keyboards/capsunlocked/cu80/v2_ansi_rgb/keymaps/via/rules.mk delete mode 100644 keyboards/capsunlocked/cu80/v2_ansi_rgb/readme.md delete mode 100644 keyboards/capsunlocked/cu80/v2_ansi_rgb/rules.mk delete mode 100644 keyboards/capsunlocked/cu80/v2_ansi_rgb/v2_ansi_rgb.c delete mode 100644 keyboards/capsunlocked/cu80/v2_ansi_rgb/v2_ansi_rgb.h create mode 100644 keyboards/capsunlocked/cu80/v2_iso/rgb/config.h create mode 100644 keyboards/capsunlocked/cu80/v2_iso/rgb/readme.md create mode 100644 keyboards/capsunlocked/cu80/v2_iso/rgb/rules.mk delete mode 100644 keyboards/capsunlocked/cu80/v2_iso_rgb/config.h delete mode 100644 keyboards/capsunlocked/cu80/v2_iso_rgb/info.json delete mode 100644 keyboards/capsunlocked/cu80/v2_iso_rgb/keymaps/default/keymap.c delete mode 100644 keyboards/capsunlocked/cu80/v2_iso_rgb/keymaps/default/readme.md delete mode 100644 keyboards/capsunlocked/cu80/v2_iso_rgb/keymaps/via/keymap.c delete mode 100644 keyboards/capsunlocked/cu80/v2_iso_rgb/keymaps/via/rules.mk delete mode 100644 keyboards/capsunlocked/cu80/v2_iso_rgb/readme.md delete mode 100644 keyboards/capsunlocked/cu80/v2_iso_rgb/rules.mk delete mode 100644 keyboards/capsunlocked/cu80/v2_iso_rgb/v2_iso_rgb.c delete mode 100644 keyboards/capsunlocked/cu80/v2_iso_rgb/v2_iso_rgb.h diff --git a/keyboards/capsunlocked/cu80/v2_ansi/config.h b/keyboards/capsunlocked/cu80/v2_ansi/config.h index a32d2e9439..4ff0af5c27 100644 --- a/keyboards/capsunlocked/cu80/v2_ansi/config.h +++ b/keyboards/capsunlocked/cu80/v2_ansi/config.h @@ -19,37 +19,10 @@ along with this program. If not, see . #include "config_common.h" -/* USB Device descriptor parameter */ -#define VENDOR_ID 0x4355 -#define PRODUCT_ID 0x0081 -#define DEVICE_VER 0x0001 -#define MANUFACTURER CapsUnlocked -#define PRODUCT CU80 v2 ANSI - -/* key matrix size */ -#define MATRIX_ROWS 6 -#define MATRIX_COLS 17 - -#define MATRIX_ROW_PINS { D3, D2, B7, F1, C7, D5 } -#define MATRIX_COL_PINS { B0, B1, B2, B3, F4, F5, F6, F7, B6, B5, D7, B4, D6, F0, D1, C6, D4 } -#define UNUSED_PINS - -/* COL2ROW, ROW2COL */ -#define DIODE_DIRECTION COL2ROW - -/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCE 5 - #define LOCKING_SUPPORT_ENABLE /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -#define RGB_DI_PIN E6 -#ifdef RGB_DI_PIN - #define RGBLIGHT_ANIMATIONS - #define RGBLED_NUM 87 - #define RGBLIGHT_HUE_STEP 8 - #define RGBLIGHT_SAT_STEP 8 - #define RGBLIGHT_VAL_STEP 8 - #define RGBLIGHT_LIMIT_VAL 50 -#endif +/* Define RGB */ +#define DRIVER_LED_TOTAL 87 +#define RGBLIGHT_ANIMATIONS diff --git a/keyboards/capsunlocked/cu80/v2_ansi/info.json b/keyboards/capsunlocked/cu80/v2_ansi/info.json index 168b1bfae2..f4b8a1f709 100644 --- a/keyboards/capsunlocked/cu80/v2_ansi/info.json +++ b/keyboards/capsunlocked/cu80/v2_ansi/info.json @@ -1,100 +1,142 @@ { - "keyboard_name": "CapsUnlocked CU80 v2 ANSI", - "maintainer": "rys", - "url": "https://caps-unlocked.com/cu80-round-2/", - "width": 18.25, - "height": 6.5, - "layouts": { - "LAYOUT_tkl_ansi": { - "layout": [ - {"label":"Esc", "x":0, "y":0}, - {"label":"F1", "x":2, "y":0}, - {"label":"F2", "x":3, "y":0}, - {"label":"F3", "x":4, "y":0}, - {"label":"F4", "x":5, "y":0}, - {"label":"F5", "x":6.5, "y":0}, - {"label":"F6", "x":7.5, "y":0}, - {"label":"F7", "x":8.5, "y":0}, - {"label":"F8", "x":9.5, "y":0}, - {"label":"F9", "x":11, "y":0}, - {"label":"F10", "x":12, "y":0}, - {"label":"F11", "x":13, "y":0}, - {"label":"F12", "x":14, "y":0}, - {"label":"PrtSc", "x":15.25, "y":0}, - {"label":"Scroll Lock", "x":16.25, "y":0}, - {"label":"Pause", "x":17.25, "y":0}, - {"label":"\u00ac", "x":0, "y":1.5}, - {"label":"!", "x":1, "y":1.5}, - {"label":"@", "x":2, "y":1.5}, - {"label":"£", "x":3, "y":1.5}, - {"label":"$", "x":4, "y":1.5}, - {"label":"%", "x":5, "y":1.5}, - {"label":"^", "x":6, "y":1.5}, - {"label":"&", "x":7, "y":1.5}, - {"label":"*", "x":8, "y":1.5}, - {"label":"(", "x":9, "y":1.5}, - {"label":")", "x":10, "y":1.5}, - {"label":"_", "x":11, "y":1.5}, - {"label":"+", "x":12, "y":1.5}, - {"label":"Backspace", "x":13, "y":1.5, "w":2}, - {"label":"Insert", "x":15.25, "y":1.5}, - {"label":"Home", "x":16.25, "y":1.5}, - {"label":"PgUp", "x":17.25, "y":1.5}, - {"label":"Tab", "x":0, "y":2.5, "w":1.5}, - {"label":"Q", "x":1.5, "y":2.5}, - {"label":"W", "x":2.5, "y":2.5}, - {"label":"E", "x":3.5, "y":2.5}, - {"label":"R", "x":4.5, "y":2.5}, - {"label":"T", "x":5.5, "y":2.5}, - {"label":"Y", "x":6.5, "y":2.5}, - {"label":"U", "x":7.5, "y":2.5}, - {"label":"I", "x":8.5, "y":2.5}, - {"label":"O", "x":9.5, "y":2.5}, - {"label":"P", "x":10.5, "y":2.5}, - {"label":"{", "x":11.5, "y":2.5}, - {"label":"}", "x":12.5, "y":2.5}, - {"label":"|", "x":13.5, "y":2.5, "w":1.5}, - {"label":"Delete", "x":15.25, "y":2.5}, - {"label":"End", "x":16.25, "y":2.5}, - {"label":"PgDn", "x":17.25, "y":2.5}, - {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, - {"label":"A", "x":1.75, "y":3.5}, - {"label":"S", "x":2.75, "y":3.5}, - {"label":"D", "x":3.75, "y":3.5}, - {"label":"F", "x":4.75, "y":3.5}, - {"label":"G", "x":5.75, "y":3.5}, - {"label":"H", "x":6.75, "y":3.5}, - {"label":"J", "x":7.75, "y":3.5}, - {"label":"K", "x":8.75, "y":3.5}, - {"label":"L", "x":9.75, "y":3.5}, - {"label":":", "x":10.75, "y":3.5}, - {"label":"\"", "x":11.75, "y":3.5}, - {"label":"Enter", "x":12.75, "y":3.5, "w":2.25}, - {"label":"Shift", "x":0, "y":4.5, "w":2.25}, - {"label":"Z", "x":2.25, "y":4.5}, - {"label":"X", "x":3.25, "y":4.5}, - {"label":"C", "x":4.25, "y":4.5}, - {"label":"V", "x":5.25, "y":4.5}, - {"label":"B", "x":6.25, "y":4.5}, - {"label":"N", "x":7.25, "y":4.5}, - {"label":"M", "x":8.25, "y":4.5}, - {"label":"<", "x":9.25, "y":4.5}, - {"label":">", "x":10.25, "y":4.5}, - {"label":"?", "x":11.25, "y":4.5}, - {"label":"Shift", "x":12.25, "y":4.5, "w":2.75}, - {"label":"Up", "x":16.25, "y":4.5}, - {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, - {"label":"Alt", "x":1.25, "y":5.5, "w":1.25}, - {"label":"Win", "x":2.5, "y":5.5, "w":1.25}, - {"label":"Space", "x":3.75, "y":5.5, "w":6.25}, - {"label":"Win", "x":10, "y":5.5, "w":1.25}, - {"label":"AltGr", "x":11.25, "y":5.5, "w":1.25}, - {"label":"Ctrl", "x":12.5, "y":5.5, "w":1.25}, - {"label":"Fn", "x":13.75, "y":5.5, "w":1.25}, - {"label":"Left", "x":15.25, "y":5.5}, - {"label":"Down", "x":16.25, "y":5.5}, - {"label":"Right", "x":17.25, "y":5.5} - ] - } + "manufacturer": "CapsUnlocked", + "keyboard_name": "CapsUnlocked CU80 v2 ANSI", + "maintainer": "rys / maz0r", + "height": 6.5, + "width": 18.25, + "bootloader": "atmel-dfu", + "debounce": 5, + "diode_direction": "COL2ROW", + "features": { + "audio": false, + "backlight": false, + "bluetooth": false, + "bootmagic_lite": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": false, + "nkro": true, + "rgblight": true, + "sleep_led": false, + "unicode": false + }, + "matrix_pins": { + "cols": ["B0", "B1", "B2", "B3", "F4", "F5", "F6", "F7", "B6", "B5", "D7", "B4", "D6", "F0", "D1", "C6", "D4"], + "rows": ["D3", "D2", "B7", "F1", "C7", "D5"] + }, + "processor": "atmega32u4", + "rgblight": { + "animations": { + "all": false + }, + "brightness_steps": 8, + "hue_steps": 8, + "led_count": 87, + "max_brightness": 50, + "pin": "E6", + "saturation_steps": 8 + }, + "url": "https://caps-unlocked.com/cu80-round-2/", + "usb": { + "device_ver": "0x0001", + "pid": "0x0081", + "vid": "0x4355" + }, + "community_layouts": ["tkl_ansi"], + "layouts": { + "LAYOUT_tkl_ansi": { + "c_macro": true, + "filename": "keyboards/capsunlocked/cu80/v2_ansi/v2_ansi.h", + "layout": [ + { "label": "Esc", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, + { "label": "F1", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 }, + { "label": "F2", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 }, + { "label": "F3", "matrix": [0, 4], "w": 1, "x": 4, "y": 0 }, + { "label": "F4", "matrix": [0, 5], "w": 1, "x": 5, "y": 0 }, + { "label": "F5", "matrix": [0, 6], "w": 1, "x": 6.5, "y": 0 }, + { "label": "F6", "matrix": [0, 7], "w": 1, "x": 7.5, "y": 0 }, + { "label": "F7", "matrix": [0, 8], "w": 1, "x": 8.5, "y": 0 }, + { "label": "F8", "matrix": [0, 9], "w": 1, "x": 9.5, "y": 0 }, + { "label": "F9", "matrix": [0, 10], "w": 1, "x": 11, "y": 0 }, + { "label": "F10", "matrix": [0, 11], "w": 1, "x": 12, "y": 0 }, + { "label": "F11", "matrix": [0, 12], "w": 1, "x": 13, "y": 0 }, + { "label": "F12", "matrix": [0, 13], "w": 1, "x": 14, "y": 0 }, + { "label": "PrtSc", "matrix": [0, 14], "w": 1, "x": 15.25, "y": 0 }, + { "label": "Scroll Lock", "matrix": [0, 15], "w": 1, "x": 16.25, "y": 0 }, + { "label": "Pause", "matrix": [0, 16], "w": 1, "x": 17.25, "y": 0 }, + { "label": "\u00ac", "matrix": [1, 0], "w": 1, "x": 0, "y": 1.5 }, + { "label": "!", "matrix": [1, 1], "w": 1, "x": 1, "y": 1.5 }, + { "label": "@", "matrix": [1, 2], "w": 1, "x": 2, "y": 1.5 }, + { "label": "\u00a3", "matrix": [1, 3], "w": 1, "x": 3, "y": 1.5 }, + { "label": "$", "matrix": [1, 4], "w": 1, "x": 4, "y": 1.5 }, + { "label": "%", "matrix": [1, 5], "w": 1, "x": 5, "y": 1.5 }, + { "label": "^", "matrix": [1, 6], "w": 1, "x": 6, "y": 1.5 }, + { "label": "&", "matrix": [1, 7], "w": 1, "x": 7, "y": 1.5 }, + { "label": "*", "matrix": [1, 8], "w": 1, "x": 8, "y": 1.5 }, + { "label": "(", "matrix": [1, 9], "w": 1, "x": 9, "y": 1.5 }, + { "label": ")", "matrix": [1, 10], "w": 1, "x": 10, "y": 1.5 }, + { "label": "_", "matrix": [1, 11], "w": 1, "x": 11, "y": 1.5 }, + { "label": "+", "matrix": [1, 12], "w": 1, "x": 12, "y": 1.5 }, + { "label": "Backspace", "matrix": [1, 13], "w": 2, "x": 13, "y": 1.5 }, + { "label": "Insert", "matrix": [1, 14], "w": 1, "x": 15.25, "y": 1.5 }, + { "label": "Home", "matrix": [1, 15], "w": 1, "x": 16.25, "y": 1.5 }, + { "label": "PgUp", "matrix": [1, 16], "w": 1, "x": 17.25, "y": 1.5 }, + { "label": "Tab", "matrix": [2, 0], "w": 1.5, "x": 0, "y": 2.5 }, + { "label": "Q", "matrix": [2, 1], "w": 1, "x": 1.5, "y": 2.5 }, + { "label": "W", "matrix": [2, 2], "w": 1, "x": 2.5, "y": 2.5 }, + { "label": "E", "matrix": [2, 3], "w": 1, "x": 3.5, "y": 2.5 }, + { "label": "R", "matrix": [2, 4], "w": 1, "x": 4.5, "y": 2.5 }, + { "label": "T", "matrix": [2, 5], "w": 1, "x": 5.5, "y": 2.5 }, + { "label": "Y", "matrix": [2, 6], "w": 1, "x": 6.5, "y": 2.5 }, + { "label": "U", "matrix": [2, 7], "w": 1, "x": 7.5, "y": 2.5 }, + { "label": "I", "matrix": [2, 8], "w": 1, "x": 8.5, "y": 2.5 }, + { "label": "O", "matrix": [2, 9], "w": 1, "x": 9.5, "y": 2.5 }, + { "label": "P", "matrix": [2, 10], "w": 1, "x": 10.5, "y": 2.5 }, + { "label": "{", "matrix": [2, 11], "w": 1, "x": 11.5, "y": 2.5 }, + { "label": "}", "matrix": [2, 12], "w": 1, "x": 12.5, "y": 2.5 }, + { "label": "|", "matrix": [2, 13], "w": 1.5, "x": 13.5, "y": 2.5 }, + { "label": "Delete", "matrix": [2, 14], "w": 1, "x": 15.25, "y": 2.5 }, + { "label": "End", "matrix": [2, 15], "w": 1, "x": 16.25, "y": 2.5 }, + { "label": "PgDn", "matrix": [2, 16], "w": 1, "x": 17.25, "y": 2.5 }, + { "label": "Caps Lock", "matrix": [3, 0], "w": 1.75, "x": 0, "y": 3.5 }, + { "label": "A", "matrix": [3, 1], "w": 1, "x": 1.75, "y": 3.5 }, + { "label": "S", "matrix": [3, 2], "w": 1, "x": 2.75, "y": 3.5 }, + { "label": "D", "matrix": [3, 3], "w": 1, "x": 3.75, "y": 3.5 }, + { "label": "F", "matrix": [3, 4], "w": 1, "x": 4.75, "y": 3.5 }, + { "label": "G", "matrix": [3, 5], "w": 1, "x": 5.75, "y": 3.5 }, + { "label": "H", "matrix": [3, 6], "w": 1, "x": 6.75, "y": 3.5 }, + { "label": "J", "matrix": [3, 7], "w": 1, "x": 7.75, "y": 3.5 }, + { "label": "K", "matrix": [3, 8], "w": 1, "x": 8.75, "y": 3.5 }, + { "label": "L", "matrix": [3, 9], "w": 1, "x": 9.75, "y": 3.5 }, + { "label": ":", "matrix": [3, 10], "w": 1, "x": 10.75, "y": 3.5 }, + { "label": "\"", "matrix": [3, 11], "w": 1, "x": 11.75, "y": 3.5 }, + { "label": "Enter", "matrix": [3, 12], "w": 2.25, "x": 12.75, "y": 3.5 }, + { "label": "Shift", "matrix": [4, 0], "w": 2.25, "x": 0, "y": 4.5 }, + { "label": "Z", "matrix": [4, 2], "w": 1, "x": 2.25, "y": 4.5 }, + { "label": "X", "matrix": [4, 3], "w": 1, "x": 3.25, "y": 4.5 }, + { "label": "C", "matrix": [4, 4], "w": 1, "x": 4.25, "y": 4.5 }, + { "label": "V", "matrix": [4, 5], "w": 1, "x": 5.25, "y": 4.5 }, + { "label": "B", "matrix": [4, 6], "w": 1, "x": 6.25, "y": 4.5 }, + { "label": "N", "matrix": [4, 7], "w": 1, "x": 7.25, "y": 4.5 }, + { "label": "M", "matrix": [4, 8], "w": 1, "x": 8.25, "y": 4.5 }, + { "label": "<", "matrix": [4, 9], "w": 1, "x": 9.25, "y": 4.5 }, + { "label": ">", "matrix": [4, 10], "w": 1, "x": 10.25, "y": 4.5 }, + { "label": "?", "matrix": [4, 11], "w": 1, "x": 11.25, "y": 4.5 }, + { "label": "Shift", "matrix": [4, 12], "w": 2.75, "x": 12.25, "y": 4.5 }, + { "label": "Up", "matrix": [4, 15], "w": 1, "x": 16.25, "y": 4.5 }, + { "label": "Ctrl", "matrix": [5, 0], "w": 1.25, "x": 0, "y": 5.5 }, + { "label": "Alt", "matrix": [5, 1], "w": 1.25, "x": 1.25, "y": 5.5 }, + { "label": "Win", "matrix": [5, 2], "w": 1.25, "x": 2.5, "y": 5.5 }, + { "label": "Space", "matrix": [5, 5], "w": 6.25, "x": 3.75, "y": 5.5 }, + { "label": "Win", "matrix": [5, 9], "w": 1.25, "x": 10, "y": 5.5 }, + { "label": "AltGr", "matrix": [5, 10], "w": 1.25, "x": 11.25, "y": 5.5 }, + { "label": "Ctrl", "matrix": [5, 11], "w": 1.25, "x": 12.5, "y": 5.5 }, + { "label": "Fn", "matrix": [5, 12], "w": 1.25, "x": 13.75, "y": 5.5 }, + { "label": "Left", "matrix": [5, 13], "w": 1, "x": 15.25, "y": 5.5 }, + { "label": "Down", "matrix": [5, 15], "w": 1, "x": 16.25, "y": 5.5 }, + { "label": "Right", "matrix": [5, 16], "w": 1, "x": 17.25, "y": 5.5 } + ] } + } } diff --git a/keyboards/capsunlocked/cu80/v2_ansi/keymaps/default/keymap.c b/keyboards/capsunlocked/cu80/v2_ansi/keymaps/default/keymap.c index 0e17b349a8..e8480605b7 100644 --- a/keyboards/capsunlocked/cu80/v2_ansi/keymaps/default/keymap.c +++ b/keyboards/capsunlocked/cu80/v2_ansi/keymaps/default/keymap.c @@ -24,7 +24,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_APP, KC_RCTL, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), [1] = LAYOUT_tkl_ansi( RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_M_P, RGB_M_B, RGB_M_R, @@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, RGB_RMOD,RGB_TOG, RGB_MOD ), }; diff --git a/keyboards/capsunlocked/cu80/v2_ansi/keymaps/via/keymap.c b/keyboards/capsunlocked/cu80/v2_ansi/keymaps/via/keymap.c index 1a1de7230c..fb487aa833 100644 --- a/keyboards/capsunlocked/cu80/v2_ansi/keymaps/via/keymap.c +++ b/keyboards/capsunlocked/cu80/v2_ansi/keymaps/via/keymap.c @@ -23,7 +23,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_APP, KC_RCTL, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), [1] = LAYOUT_tkl_ansi( RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_M_P, RGB_M_B, RGB_M_R, @@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, RGB_RMOD,RGB_TOG, RGB_MOD ), [2] = LAYOUT_tkl_ansi( diff --git a/keyboards/capsunlocked/cu80/v2_ansi/readme.md b/keyboards/capsunlocked/cu80/v2_ansi/readme.md index 4ade5be088..4768917fc8 100644 --- a/keyboards/capsunlocked/cu80/v2_ansi/readme.md +++ b/keyboards/capsunlocked/cu80/v2_ansi/readme.md @@ -4,12 +4,13 @@ The CU80 v2 ANSI is the PCB for round 2 of the CU80 TKL keyboard, with fixed lay To place the keyboard into bootloader mode in order to flash it, hold the ESC key while plugging the board in, or use the reset button on the back of the PCB. -* Keyboard maintainer: [rys](https://github.com/rys) +* Keyboard maintainer: [rys](https://github.com/rys) & [maz0r](https://github.com/maz0r) * Hardware supported: [CU80 v2 ANSI](https://imgur.com/gOWpJqe) * Hardware availability: [CapsUnlocked](https://caps-unlocked.com/cu80-round-2/) Make and flash example for this keyboard (after setting up your build environment): make capsunlocked/cu80/v2_ansi:default:flash + make capsunlocked/cu80/v2_ansi/rgb:default:flash See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/capsunlocked/cu80/v2_ansi/rgb/config.h b/keyboards/capsunlocked/cu80/v2_ansi/rgb/config.h new file mode 100644 index 0000000000..87486a543f --- /dev/null +++ b/keyboards/capsunlocked/cu80/v2_ansi/rgb/config.h @@ -0,0 +1,37 @@ +/* +Copyright 2021 CapsUnlocked + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +/* enable RGB matrix */ +#define CU80_RGB + +/* update the product for RGB Matrix variant in VIA/VIAL and Remap-keys.app */ +#undef PRODUCT_ID +#undef PRODUCT +#define PRODUCT_ID 0x0082 +#define PRODUCT CU80 v2 ANSI RGB + +/* moved to RGB specific */ +#define RGB_MATRIX_KEYPRESSES +#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 50 + +/* RGB firmware override */ +#undef RGBLIGHT_ANIMATIONS +#undef RGBLIGHT_HUE_STEP +#undef RGBLIGHT_SAT_STEP +#undef RGBLIGHT_VAL_STEP +#undef RGBLIGHT_LIMIT_VAL diff --git a/keyboards/capsunlocked/cu80/v2_ansi/rgb/readme.md b/keyboards/capsunlocked/cu80/v2_ansi/rgb/readme.md new file mode 100644 index 0000000000..0919483592 --- /dev/null +++ b/keyboards/capsunlocked/cu80/v2_ansi/rgb/readme.md @@ -0,0 +1,3 @@ +# CU80 v2 ANSI RGB + +Overrides \ No newline at end of file diff --git a/keyboards/capsunlocked/cu80/v2_ansi/rgb/rules.mk b/keyboards/capsunlocked/cu80/v2_ansi/rgb/rules.mk new file mode 100644 index 0000000000..d4e53eda16 --- /dev/null +++ b/keyboards/capsunlocked/cu80/v2_ansi/rgb/rules.mk @@ -0,0 +1,3 @@ +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +RGB_MATRIX_ENABLE = yes # Enable RGB matrix +RGB_MATRIX_DRIVER = WS2812 # Set Driver to WS2812 diff --git a/keyboards/capsunlocked/cu80/v2_ansi/rules.mk b/keyboards/capsunlocked/cu80/v2_ansi/rules.mk index da23ce1866..7c5554a087 100644 --- a/keyboards/capsunlocked/cu80/v2_ansi/rules.mk +++ b/keyboards/capsunlocked/cu80/v2_ansi/rules.mk @@ -7,19 +7,4 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration -MOUSEKEY_ENABLE = no # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -NKRO_ENABLE = yes # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth -AUDIO_ENABLE = no # Audio output - -LAYOUTS = tkl_ansi +NO_USB_STARTUP_CHECK = yes # resolve possible sleep issue diff --git a/keyboards/capsunlocked/cu80/v2_ansi/v2_ansi.c b/keyboards/capsunlocked/cu80/v2_ansi/v2_ansi.c index f0c108ecc8..ef920474bb 100644 --- a/keyboards/capsunlocked/cu80/v2_ansi/v2_ansi.c +++ b/keyboards/capsunlocked/cu80/v2_ansi/v2_ansi.c @@ -16,3 +16,33 @@ along with this program. If not, see . */ #include "v2_ansi.h" + +#ifdef CU80_RGB + +void matrix_init_kb(void) { + setPinOutput(E6); + matrix_init_user(); +} + +/* Set LED 62 (Caps Lock) and LED 14 (Scroll Lock) when key active */ +void rgb_matrix_indicators_kb(void) { + if (host_keyboard_led_state().caps_lock) { + rgb_matrix_set_color(62, 255, 255, 255); + } + if (host_keyboard_led_state().scroll_lock) { + rgb_matrix_set_color(14, 255, 255, 255); + } +} + +/* Leds on the CU80 go ltr > rtl > ltr > rlt > Ltr > rtl */ +led_config_t g_led_config = {{{0, NO_LED, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}, {32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16}, {33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49}, {62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50}, {63, NO_LED, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, NO_LED, NO_LED, 75}, {86, 85, 84, NO_LED, NO_LED, 83, NO_LED, NO_LED, NO_LED, 82, 81, 80, 79, 78, NO_LED, 77, 76} + + }, + /*board layout accounting for led directions */ + {{0, 0}, {28, 0}, {42, 0}, {56, 0}, {71, 0}, {85, 0}, {99, 0}, {113, 0}, {127, 0}, {141, 0}, {155, 0}, {169, 0}, {184, 0}, {198, 0}, {212, 0}, {226, 0}, {226, 13}, {212, 13}, {198, 13}, {184, 13}, {169, 13}, {155, 13}, {141, 13}, {127, 13}, {113, 13}, {99, 13}, {85, 13}, {71, 13}, {56, 13}, {42, 13}, {28, 13}, {14, 13}, {0, 13}, {0, 26}, {14, 26}, {28, 26}, {42, 26}, {56, 26}, {71, 26}, {85, 26}, {99, 26}, {113, 26}, {127, 26}, {141, 26}, + {155, 26}, {169, 26}, {184, 26}, {198, 26}, {212, 26}, {226, 26}, {169, 38}, {155, 38}, {141, 38}, {127, 38}, {113, 38}, {99, 38}, {85, 38}, {71, 38}, {56, 38}, {42, 38}, {28, 38}, {14, 38}, {0, 38}, {0, 51}, {28, 51}, {42, 51}, {56, 51}, {71, 51}, {85, 51}, {99, 51}, {113, 51}, {127, 51}, {141, 51}, {155, 51}, {169, 51}, {212, 51}, {226, 64}, {212, 64}, {184, 64}, {169, 64}, {155, 64}, {141, 64}, {127, 64}, {71, 64}, {28, 64}, {14, 64}, {0, 64} + + }, + /* marks scroll and caps as function modifiers for led effects */ + {4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4, 1, 1, 1, 1, 4, 1, 1, 1}}; +#endif diff --git a/keyboards/capsunlocked/cu80/v2_ansi_rgb/config.h b/keyboards/capsunlocked/cu80/v2_ansi_rgb/config.h deleted file mode 100644 index fe07286963..0000000000 --- a/keyboards/capsunlocked/cu80/v2_ansi_rgb/config.h +++ /dev/null @@ -1,55 +0,0 @@ -/* -Copyright 2021 CapsUnlocked - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#pragma once - -#include "config_common.h" - -/* USB Device descriptor parameter */ -#define VENDOR_ID 0x4355 -#define PRODUCT_ID 0x0082 -#define DEVICE_VER 0x0001 -#define MANUFACTURER CapsUnlocked -#define PRODUCT CU80 v2 ANSI RGB - -/* key matrix size */ -#define MATRIX_ROWS 6 -#define MATRIX_COLS 17 - -#define MATRIX_ROW_PINS { D3, D2, B7, F1, C7, D5 } -#define MATRIX_COL_PINS { B0, B1, B2, B3, F4, F5, F6, F7, B6, B5, D7, B4, D6, F0, D1, C6, D4 } -#define UNUSED_PINS - -/* COL2ROW, ROW2COL */ -#define DIODE_DIRECTION COL2ROW - -/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCE 5 - -#define LOCKING_SUPPORT_ENABLE -/* Locking resynchronize hack */ -#define LOCKING_RESYNC_ENABLE - - -/* Define RGB */ -#define RGB_DI_PIN E6 -#define RGB_MATRIX_KEYPRESSES -#define DRIVER_LED_TOTAL 87 -#define RGBLED_NUM 87 -#define RGBLIGHT_LIMIT_VAL 50 - - diff --git a/keyboards/capsunlocked/cu80/v2_ansi_rgb/info.json b/keyboards/capsunlocked/cu80/v2_ansi_rgb/info.json deleted file mode 100644 index 809b7d5cfa..0000000000 --- a/keyboards/capsunlocked/cu80/v2_ansi_rgb/info.json +++ /dev/null @@ -1,100 +0,0 @@ -{ - "keyboard_name": "CapsUnlocked CU80 v2 ANSI RGB", - "maintainer": "rys", - "url": "https://caps-unlocked.com/cu80-round-2/", - "width": 18.25, - "height": 6.5, - "layouts": { - "LAYOUT_tkl_ansi": { - "layout": [ - {"label":"Esc", "x":0, "y":0}, - {"label":"F1", "x":2, "y":0}, - {"label":"F2", "x":3, "y":0}, - {"label":"F3", "x":4, "y":0}, - {"label":"F4", "x":5, "y":0}, - {"label":"F5", "x":6.5, "y":0}, - {"label":"F6", "x":7.5, "y":0}, - {"label":"F7", "x":8.5, "y":0}, - {"label":"F8", "x":9.5, "y":0}, - {"label":"F9", "x":11, "y":0}, - {"label":"F10", "x":12, "y":0}, - {"label":"F11", "x":13, "y":0}, - {"label":"F12", "x":14, "y":0}, - {"label":"PrtSc", "x":15.25, "y":0}, - {"label":"Scroll Lock", "x":16.25, "y":0}, - {"label":"Pause", "x":17.25, "y":0}, - {"label":"\u00ac", "x":0, "y":1.5}, - {"label":"!", "x":1, "y":1.5}, - {"label":"@", "x":2, "y":1.5}, - {"label":"£", "x":3, "y":1.5}, - {"label":"$", "x":4, "y":1.5}, - {"label":"%", "x":5, "y":1.5}, - {"label":"^", "x":6, "y":1.5}, - {"label":"&", "x":7, "y":1.5}, - {"label":"*", "x":8, "y":1.5}, - {"label":"(", "x":9, "y":1.5}, - {"label":")", "x":10, "y":1.5}, - {"label":"_", "x":11, "y":1.5}, - {"label":"+", "x":12, "y":1.5}, - {"label":"Backspace", "x":13, "y":1.5, "w":2}, - {"label":"Insert", "x":15.25, "y":1.5}, - {"label":"Home", "x":16.25, "y":1.5}, - {"label":"PgUp", "x":17.25, "y":1.5}, - {"label":"Tab", "x":0, "y":2.5, "w":1.5}, - {"label":"Q", "x":1.5, "y":2.5}, - {"label":"W", "x":2.5, "y":2.5}, - {"label":"E", "x":3.5, "y":2.5}, - {"label":"R", "x":4.5, "y":2.5}, - {"label":"T", "x":5.5, "y":2.5}, - {"label":"Y", "x":6.5, "y":2.5}, - {"label":"U", "x":7.5, "y":2.5}, - {"label":"I", "x":8.5, "y":2.5}, - {"label":"O", "x":9.5, "y":2.5}, - {"label":"P", "x":10.5, "y":2.5}, - {"label":"{", "x":11.5, "y":2.5}, - {"label":"}", "x":12.5, "y":2.5}, - {"label":"|", "x":13.5, "y":2.5, "w":1.5}, - {"label":"Delete", "x":15.25, "y":2.5}, - {"label":"End", "x":16.25, "y":2.5}, - {"label":"PgDn", "x":17.25, "y":2.5}, - {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, - {"label":"A", "x":1.75, "y":3.5}, - {"label":"S", "x":2.75, "y":3.5}, - {"label":"D", "x":3.75, "y":3.5}, - {"label":"F", "x":4.75, "y":3.5}, - {"label":"G", "x":5.75, "y":3.5}, - {"label":"H", "x":6.75, "y":3.5}, - {"label":"J", "x":7.75, "y":3.5}, - {"label":"K", "x":8.75, "y":3.5}, - {"label":"L", "x":9.75, "y":3.5}, - {"label":":", "x":10.75, "y":3.5}, - {"label":"\"", "x":11.75, "y":3.5}, - {"label":"Enter", "x":12.75, "y":3.5, "w":2.25}, - {"label":"Shift", "x":0, "y":4.5, "w":2.25}, - {"label":"Z", "x":2.25, "y":4.5}, - {"label":"X", "x":3.25, "y":4.5}, - {"label":"C", "x":4.25, "y":4.5}, - {"label":"V", "x":5.25, "y":4.5}, - {"label":"B", "x":6.25, "y":4.5}, - {"label":"N", "x":7.25, "y":4.5}, - {"label":"M", "x":8.25, "y":4.5}, - {"label":"<", "x":9.25, "y":4.5}, - {"label":">", "x":10.25, "y":4.5}, - {"label":"?", "x":11.25, "y":4.5}, - {"label":"Shift", "x":12.25, "y":4.5, "w":2.75}, - {"label":"Up", "x":16.25, "y":4.5}, - {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, - {"label":"Alt", "x":1.25, "y":5.5, "w":1.25}, - {"label":"Win", "x":2.5, "y":5.5, "w":1.25}, - {"label":"Space", "x":3.75, "y":5.5, "w":6.25}, - {"label":"Win", "x":10, "y":5.5, "w":1.25}, - {"label":"AltGr", "x":11.25, "y":5.5, "w":1.25}, - {"label":"Ctrl", "x":12.5, "y":5.5, "w":1.25}, - {"label":"Fn", "x":13.75, "y":5.5, "w":1.25}, - {"label":"Left", "x":15.25, "y":5.5}, - {"label":"Down", "x":16.25, "y":5.5}, - {"label":"Right", "x":17.25, "y":5.5} - ] - } - } -} diff --git a/keyboards/capsunlocked/cu80/v2_ansi_rgb/keymaps/default/keymap.c b/keyboards/capsunlocked/cu80/v2_ansi_rgb/keymaps/default/keymap.c deleted file mode 100644 index b27fe2c9be..0000000000 --- a/keyboards/capsunlocked/cu80/v2_ansi_rgb/keymaps/default/keymap.c +++ /dev/null @@ -1,38 +0,0 @@ -/* -Copyright 2021 CapsUnlocked - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ -#include QMK_KEYBOARD_H - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_tkl_ansi( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, - - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ), - [1] = LAYOUT_tkl_ansi( - RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_M_P, RGB_M_B, RGB_M_R, - - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI, RGB_SAI, RGB_VAI, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, RGB_RMOD,RGB_TOG, RGB_MOD - ), -}; diff --git a/keyboards/capsunlocked/cu80/v2_ansi_rgb/keymaps/default/readme.md b/keyboards/capsunlocked/cu80/v2_ansi_rgb/keymaps/default/readme.md deleted file mode 100644 index 717c2c283a..0000000000 --- a/keyboards/capsunlocked/cu80/v2_ansi_rgb/keymaps/default/readme.md +++ /dev/null @@ -1,3 +0,0 @@ -# The default ANSI keymap for the CU80 - -This CU80 is keymap is for the fixed ANSI variant with fully populated bottom row. diff --git a/keyboards/capsunlocked/cu80/v2_ansi_rgb/keymaps/via/keymap.c b/keyboards/capsunlocked/cu80/v2_ansi_rgb/keymaps/via/keymap.c deleted file mode 100644 index 9d53b04cd2..0000000000 --- a/keyboards/capsunlocked/cu80/v2_ansi_rgb/keymaps/via/keymap.c +++ /dev/null @@ -1,55 +0,0 @@ -/* Copyright 2021 CapsUnlocked - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include QMK_KEYBOARD_H - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_tkl_ansi( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, - - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ), - [1] = LAYOUT_tkl_ansi( - RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_M_P, RGB_M_B, RGB_M_R, - - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI, RGB_SAI, RGB_VAI, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, RGB_RMOD,RGB_TOG, RGB_MOD - ), - [2] = LAYOUT_tkl_ansi( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - [3] = LAYOUT_tkl_ansi( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), -}; diff --git a/keyboards/capsunlocked/cu80/v2_ansi_rgb/keymaps/via/rules.mk b/keyboards/capsunlocked/cu80/v2_ansi_rgb/keymaps/via/rules.mk deleted file mode 100644 index 1e5b99807c..0000000000 --- a/keyboards/capsunlocked/cu80/v2_ansi_rgb/keymaps/via/rules.mk +++ /dev/null @@ -1 +0,0 @@ -VIA_ENABLE = yes diff --git a/keyboards/capsunlocked/cu80/v2_ansi_rgb/readme.md b/keyboards/capsunlocked/cu80/v2_ansi_rgb/readme.md deleted file mode 100644 index 302248f117..0000000000 --- a/keyboards/capsunlocked/cu80/v2_ansi_rgb/readme.md +++ /dev/null @@ -1,18 +0,0 @@ -# CU80 v2 ANSI RGB - -The CU80 v2 ANSI is the PCB for round 2 of the CU80 TKL keyboard, with matrix RGB lighting, fixed ANSI layout and VIA support. - -This firmware adds RGB matrix support. - -To place the keyboard into bootloader mode in order to flash it, hold the ESC key while plugging the board in. - -* Keyboard maintainer: [rys](https://github.com/rys) -* Hardware supported: CU80 v2 ANSI -* Hardware availability: [CapsUnlocked](https://caps-unlocked.com/cu80-round-2/) - -Make and flash example for this keyboard (after setting up your build environment): - - make capsunlocked/cu80/v2_ansi_rgb:default:flash - make capsunlocked/cu80/v2_ansi_rgb:via:flash - -See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/capsunlocked/cu80/v2_ansi_rgb/rules.mk b/keyboards/capsunlocked/cu80/v2_ansi_rgb/rules.mk deleted file mode 100644 index 0473b7d414..0000000000 --- a/keyboards/capsunlocked/cu80/v2_ansi_rgb/rules.mk +++ /dev/null @@ -1,28 +0,0 @@ -# MCU name -MCU = atmega32u4 - -# Bootloader selection -BOOTLOADER = atmel-dfu - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration -MOUSEKEY_ENABLE = no # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -NKRO_ENABLE = yes # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth -AUDIO_ENABLE = no # Audio output -RGB_MATRIX_ENABLE = yes # Enable RGB matrix -RGB_MATRIX_DRIVER = WS2812 # Set Driver to WS2812 -NO_USB_STARTUP_CHECK = yes # resolve possible sleep issue - - -LAYOUTS = tkl_ansi diff --git a/keyboards/capsunlocked/cu80/v2_ansi_rgb/v2_ansi_rgb.c b/keyboards/capsunlocked/cu80/v2_ansi_rgb/v2_ansi_rgb.c deleted file mode 100644 index 7065d960f1..0000000000 --- a/keyboards/capsunlocked/cu80/v2_ansi_rgb/v2_ansi_rgb.c +++ /dev/null @@ -1,67 +0,0 @@ -/* -Copyright 2021 CapsUnlocked - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#include "v2_ansi_rgb.h" -#include "rgb_matrix_types.h" - - -void matrix_init_kb(void) { - setPinOutput(E6); - matrix_init_user(); -} - -/* Set LED 62 (Caps Lock) and LED 14 (Scroll Lock) when key active */ -void rgb_matrix_indicators_kb(void) { - if (host_keyboard_led_state().caps_lock) { - rgb_matrix_set_color(62, 255, 255, 255); - } - if (host_keyboard_led_state().scroll_lock) { - rgb_matrix_set_color(14, 255, 255, 255); - } -} - -/* Leds on the CU80 go ltr > rtl > ltr > rlt > Ltr > rtl */ -led_config_t g_led_config = { - { - { 0,NO_LED, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }, - { 32,31 ,30 ,29 ,28 ,27 ,26 ,25 ,24 ,23 ,22 ,21 ,20 ,19 ,18 ,17 ,16 }, - { 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49 }, - { 62, 61, 60, 59,58,57,56,55,54,53,52,51,50 }, - { 63, NO_LED, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, NO_LED, NO_LED, 75 }, - { 86 ,85 ,84 ,NO_LED, NO_LED ,83, NO_LED,NO_LED, NO_LED ,82 ,81 ,80 ,79 ,78 ,NO_LED,77 ,76 } - - }, - /*board layout accounting for led directions */ - { - {0,0}, {28,0}, {42,0}, {56,0}, {71,0}, {85,0}, {99,0}, {113,0}, {127,0}, {141,0}, {155,0}, {169,0}, {184,0}, {198,0}, {212,0}, {226,0}, - {226,13}, {212,13}, {198,13}, {184,13}, {169,13}, {155,13}, {141,13}, {127,13}, {113,13}, {99,13}, {85,13}, {71,13}, {56,13}, {42,13}, {28,13}, {14,13}, {0,13}, - {0,26}, {14,26}, {28,26}, {42,26}, {56,26}, {71,26}, {85,26}, {99,26}, {113,26}, {127,26}, {141,26}, {155,26}, {169,26}, {184,26}, {198,26}, {212,26}, {226,26}, - {169,38}, {155,38}, {141,38}, {127,38}, {113,38}, {99,38}, {85,38}, {71,38}, {56,38}, {42,38}, {28,38}, {14,38}, {0,38}, - {0,51}, {28,51}, {42,51}, {56,51}, {71,51}, {85,51}, {99,51}, {113,51}, {127,51}, {141,51}, {155,51}, {169,51}, {212,51}, - {226,64}, {212,64}, {184,64}, {169,64}, {155,64}, {141,64}, {127,64}, {71,64}, {28,64}, {14,64}, {0,64} - - }, - /* marks scroll and caps as function modifiers for led effects */ - { - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 - } -}; diff --git a/keyboards/capsunlocked/cu80/v2_ansi_rgb/v2_ansi_rgb.h b/keyboards/capsunlocked/cu80/v2_ansi_rgb/v2_ansi_rgb.h deleted file mode 100644 index 61aecfa008..0000000000 --- a/keyboards/capsunlocked/cu80/v2_ansi_rgb/v2_ansi_rgb.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -Copyright 2021 CapsUnlocked - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#pragma once - -#include "quantum.h" - -/* This a shortcut to help you visually see your layout. - * - * The first section contains all of the arguments representing the physical - * layout of the board and position of the keys. - * - * The second converts the arguments into a two-dimensional array which - * represents the switch matrix. - */ - -#define LAYOUT_tkl_ansi( \ - K000, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016, \ - \ - K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116, \ - K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216, \ - K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, \ - K400, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K415, \ - K500, K501, K502, K505, K509, K510, K511, K512, K513, K515, K516 \ -) { \ - { K000, KC_NO, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016 }, \ - { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116 }, \ - { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216 }, \ - { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, KC_NO, KC_NO, KC_NO, KC_NO }, \ - { K400, KC_NO, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, KC_NO, KC_NO, K415, KC_NO }, \ - { K500, K501, K502, KC_NO, KC_NO, K505, KC_NO, KC_NO, KC_NO, K509, K510, K511, K512, K513, KC_NO, K515, K516 }, \ -} diff --git a/keyboards/capsunlocked/cu80/v2_iso/config.h b/keyboards/capsunlocked/cu80/v2_iso/config.h index d757fd33a3..7980837acf 100644 --- a/keyboards/capsunlocked/cu80/v2_iso/config.h +++ b/keyboards/capsunlocked/cu80/v2_iso/config.h @@ -19,37 +19,11 @@ along with this program. If not, see . #include "config_common.h" -/* USB Device descriptor parameter */ -#define VENDOR_ID 0x4355 -#define PRODUCT_ID 0x0080 -#define DEVICE_VER 0x0001 -#define MANUFACTURER CapsUnlocked -#define PRODUCT CU80 v2 ISO - -/* key matrix size */ -#define MATRIX_ROWS 6 -#define MATRIX_COLS 17 - -#define MATRIX_ROW_PINS { D3, D2, B7, F1, C7, D5 } -#define MATRIX_COL_PINS { B0, B1, B2, B3, F4, F5, F6, F7, B6, B5, D7, B4, D6, F0, D1, C6, D4 } -#define UNUSED_PINS - -/* COL2ROW, ROW2COL */ -#define DIODE_DIRECTION COL2ROW - -/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCE 5 #define LOCKING_SUPPORT_ENABLE /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -#define RGB_DI_PIN E6 -#ifdef RGB_DI_PIN - #define RGBLIGHT_ANIMATIONS - #define RGBLED_NUM 88 - #define RGBLIGHT_HUE_STEP 8 - #define RGBLIGHT_SAT_STEP 8 - #define RGBLIGHT_VAL_STEP 8 - #define RGBLIGHT_LIMIT_VAL 50 -#endif +/* Define RGB */ +#define DRIVER_LED_TOTAL 88 +#define RGBLIGHT_ANIMATIONS diff --git a/keyboards/capsunlocked/cu80/v2_iso/info.json b/keyboards/capsunlocked/cu80/v2_iso/info.json index 746e3ae7c8..fd572704d9 100644 --- a/keyboards/capsunlocked/cu80/v2_iso/info.json +++ b/keyboards/capsunlocked/cu80/v2_iso/info.json @@ -1,101 +1,143 @@ { - "keyboard_name": "CapsUnlocked CU80 v2 ISO", - "maintainer": "rys", - "url": "https://caps-unlocked.com/cu80-round-2/", - "width": 18.25, - "height": 6.5, - "layouts": { - "LAYOUT_tkl_iso": { - "layout": [ - {"label":"Esc", "x":0, "y":0}, - {"label":"F1", "x":2, "y":0}, - {"label":"F2", "x":3, "y":0}, - {"label":"F3", "x":4, "y":0}, - {"label":"F4", "x":5, "y":0}, - {"label":"F5", "x":6.5, "y":0}, - {"label":"F6", "x":7.5, "y":0}, - {"label":"F7", "x":8.5, "y":0}, - {"label":"F8", "x":9.5, "y":0}, - {"label":"F9", "x":11, "y":0}, - {"label":"F10", "x":12, "y":0}, - {"label":"F11", "x":13, "y":0}, - {"label":"F12", "x":14, "y":0}, - {"label":"PrtSc", "x":15.25, "y":0}, - {"label":"Scroll Lock", "x":16.25, "y":0}, - {"label":"Pause", "x":17.25, "y":0}, - {"label":"\u00ac", "x":0, "y":1.5}, - {"label":"!", "x":1, "y":1.5}, - {"label":"\"", "x":2, "y":1.5}, - {"label":"£", "x":3, "y":1.5}, - {"label":"$", "x":4, "y":1.5}, - {"label":"%", "x":5, "y":1.5}, - {"label":"^", "x":6, "y":1.5}, - {"label":"&", "x":7, "y":1.5}, - {"label":"*", "x":8, "y":1.5}, - {"label":"(", "x":9, "y":1.5}, - {"label":")", "x":10, "y":1.5}, - {"label":"_", "x":11, "y":1.5}, - {"label":"+", "x":12, "y":1.5}, - {"label":"Backspace", "x":13, "y":1.5, "w":2}, - {"label":"Insert", "x":15.25, "y":1.5}, - {"label":"Home", "x":16.25, "y":1.5}, - {"label":"PgUp", "x":17.25, "y":1.5}, - {"label":"Tab", "x":0, "y":2.5, "w":1.5}, - {"label":"Q", "x":1.5, "y":2.5}, - {"label":"W", "x":2.5, "y":2.5}, - {"label":"E", "x":3.5, "y":2.5}, - {"label":"R", "x":4.5, "y":2.5}, - {"label":"T", "x":5.5, "y":2.5}, - {"label":"Y", "x":6.5, "y":2.5}, - {"label":"U", "x":7.5, "y":2.5}, - {"label":"I", "x":8.5, "y":2.5}, - {"label":"O", "x":9.5, "y":2.5}, - {"label":"P", "x":10.5, "y":2.5}, - {"label":"{", "x":11.5, "y":2.5}, - {"label":"}", "x":12.5, "y":2.5}, - {"label":"Delete", "x":15.25, "y":2.5}, - {"label":"End", "x":16.25, "y":2.5}, - {"label":"PgDn", "x":17.25, "y":2.5}, - {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, - {"label":"A", "x":1.75, "y":3.5}, - {"label":"S", "x":2.75, "y":3.5}, - {"label":"D", "x":3.75, "y":3.5}, - {"label":"F", "x":4.75, "y":3.5}, - {"label":"G", "x":5.75, "y":3.5}, - {"label":"H", "x":6.75, "y":3.5}, - {"label":"J", "x":7.75, "y":3.5}, - {"label":"K", "x":8.75, "y":3.5}, - {"label":"L", "x":9.75, "y":3.5}, - {"label":":", "x":10.75, "y":3.5}, - {"label":"@", "x":11.75, "y":3.5}, - {"label":"~", "x":12.75, "y":3.5}, - {"label":"Enter", "x":13.75, "y":2.5, "w":1.25, "h":2}, - {"label":"Shift", "x":0, "y":4.5, "w":1.25}, - {"label":"|", "x":1.25, "y":4.5}, - {"label":"Z", "x":2.25, "y":4.5}, - {"label":"X", "x":3.25, "y":4.5}, - {"label":"C", "x":4.25, "y":4.5}, - {"label":"V", "x":5.25, "y":4.5}, - {"label":"B", "x":6.25, "y":4.5}, - {"label":"N", "x":7.25, "y":4.5}, - {"label":"M", "x":8.25, "y":4.5}, - {"label":"<", "x":9.25, "y":4.5}, - {"label":">", "x":10.25, "y":4.5}, - {"label":"?", "x":11.25, "y":4.5}, - {"label":"Shift", "x":12.25, "y":4.5, "w":2.75}, - {"label":"Up", "x":16.25, "y":4.5}, - {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, - {"label":"Alt", "x":1.25, "y":5.5, "w":1.25}, - {"label":"Win", "x":2.5, "y":5.5, "w":1.25}, - {"label":"Space", "x":3.75, "y":5.5, "w":6.25}, - {"label":"Win", "x":10, "y":5.5, "w":1.25}, - {"label":"AltGr", "x":11.25, "y":5.5, "w":1.25}, - {"label":"Ctrl", "x":12.5, "y":5.5, "w":1.25}, - {"label":"Fn", "x":13.75, "y":5.5, "w":1.25}, - {"label":"Left", "x":15.25, "y":5.5}, - {"label":"Down", "x":16.25, "y":5.5}, - {"label":"Right", "x":17.25, "y":5.5} - ] - } + "manufacturer": "CapsUnlocked", + "keyboard_name": "CapsUnlocked CU80 v2 ISO", + "maintainer": "rys / maz0r", + "height": 6.5, + "width": 18.25, + "bootloader": "atmel-dfu", + "debounce": 5, + "diode_direction": "COL2ROW", + "features": { + "audio": false, + "backlight": false, + "bluetooth": false, + "bootmagic_lite": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": false, + "nkro": true, + "rgblight": true, + "sleep_led": false, + "unicode": false + }, + "matrix_pins": { + "cols": ["B0", "B1", "B2", "B3", "F4", "F5", "F6", "F7", "B6", "B5", "D7", "B4", "D6", "F0", "D1", "C6", "D4"], + "rows": ["D3", "D2", "B7", "F1", "C7", "D5"] + }, + "processor": "atmega32u4", + "rgblight": { + "animations": { + "all": false + }, + "brightness_steps": 8, + "hue_steps": 8, + "led_count": 88, + "max_brightness": 50, + "pin": "E6", + "saturation_steps": 8 + }, + "url": "https://caps-unlocked.com/cu80-round-2/", + "usb": { + "device_ver": "0x0001", + "pid": "0x0080", + "vid": "0x4355" + }, + "community_layouts": ["tkl_iso"], + "layouts": { + "LAYOUT_tkl_iso": { + "c_macro": true, + "filename": "keyboards/capsunlocked/cu80/v2_iso/v2_iso.h", + "layout": [ + { "label": "Esc", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, + { "label": "F1", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 }, + { "label": "F2", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 }, + { "label": "F3", "matrix": [0, 4], "w": 1, "x": 4, "y": 0 }, + { "label": "F4", "matrix": [0, 5], "w": 1, "x": 5, "y": 0 }, + { "label": "F5", "matrix": [0, 6], "w": 1, "x": 6.5, "y": 0 }, + { "label": "F6", "matrix": [0, 7], "w": 1, "x": 7.5, "y": 0 }, + { "label": "F7", "matrix": [0, 8], "w": 1, "x": 8.5, "y": 0 }, + { "label": "F8", "matrix": [0, 9], "w": 1, "x": 9.5, "y": 0 }, + { "label": "F9", "matrix": [0, 10], "w": 1, "x": 11, "y": 0 }, + { "label": "F10", "matrix": [0, 11], "w": 1, "x": 12, "y": 0 }, + { "label": "F11", "matrix": [0, 12], "w": 1, "x": 13, "y": 0 }, + { "label": "F12", "matrix": [0, 13], "w": 1, "x": 14, "y": 0 }, + { "label": "PrtSc", "matrix": [0, 14], "w": 1, "x": 15.25, "y": 0 }, + { "label": "Scroll Lock", "matrix": [0, 15], "w": 1, "x": 16.25, "y": 0 }, + { "label": "Pause", "matrix": [0, 16], "w": 1, "x": 17.25, "y": 0 }, + { "label": "\u00ac", "matrix": [1, 0], "w": 1, "x": 0, "y": 1.5 }, + { "label": "!", "matrix": [1, 1], "w": 1, "x": 1, "y": 1.5 }, + { "label": "\"", "matrix": [1, 2], "w": 1, "x": 2, "y": 1.5 }, + { "label": "\u00a3", "matrix": [1, 3], "w": 1, "x": 3, "y": 1.5 }, + { "label": "$", "matrix": [1, 4], "w": 1, "x": 4, "y": 1.5 }, + { "label": "%", "matrix": [1, 5], "w": 1, "x": 5, "y": 1.5 }, + { "label": "^", "matrix": [1, 6], "w": 1, "x": 6, "y": 1.5 }, + { "label": "&", "matrix": [1, 7], "w": 1, "x": 7, "y": 1.5 }, + { "label": "*", "matrix": [1, 8], "w": 1, "x": 8, "y": 1.5 }, + { "label": "(", "matrix": [1, 9], "w": 1, "x": 9, "y": 1.5 }, + { "label": ")", "matrix": [1, 10], "w": 1, "x": 10, "y": 1.5 }, + { "label": "_", "matrix": [1, 11], "w": 1, "x": 11, "y": 1.5 }, + { "label": "+", "matrix": [1, 12], "w": 1, "x": 12, "y": 1.5 }, + { "label": "Backspace", "matrix": [1, 13], "w": 2, "x": 13, "y": 1.5 }, + { "label": "Insert", "matrix": [1, 14], "w": 1, "x": 15.25, "y": 1.5 }, + { "label": "Home", "matrix": [1, 15], "w": 1, "x": 16.25, "y": 1.5 }, + { "label": "PgUp", "matrix": [1, 16], "w": 1, "x": 17.25, "y": 1.5 }, + { "label": "Tab", "matrix": [2, 0], "w": 1.5, "x": 0, "y": 2.5 }, + { "label": "Q", "matrix": [2, 1], "w": 1, "x": 1.5, "y": 2.5 }, + { "label": "W", "matrix": [2, 2], "w": 1, "x": 2.5, "y": 2.5 }, + { "label": "E", "matrix": [2, 3], "w": 1, "x": 3.5, "y": 2.5 }, + { "label": "R", "matrix": [2, 4], "w": 1, "x": 4.5, "y": 2.5 }, + { "label": "T", "matrix": [2, 5], "w": 1, "x": 5.5, "y": 2.5 }, + { "label": "Y", "matrix": [2, 6], "w": 1, "x": 6.5, "y": 2.5 }, + { "label": "U", "matrix": [2, 7], "w": 1, "x": 7.5, "y": 2.5 }, + { "label": "I", "matrix": [2, 8], "w": 1, "x": 8.5, "y": 2.5 }, + { "label": "O", "matrix": [2, 9], "w": 1, "x": 9.5, "y": 2.5 }, + { "label": "P", "matrix": [2, 10], "w": 1, "x": 10.5, "y": 2.5 }, + { "label": "{", "matrix": [2, 11], "w": 1, "x": 11.5, "y": 2.5 }, + { "label": "}", "matrix": [2, 12], "w": 1, "x": 12.5, "y": 2.5 }, + { "label": "Delete", "matrix": [2, 14], "w": 1, "x": 15.25, "y": 2.5 }, + { "label": "End", "matrix": [2, 15], "w": 1, "x": 16.25, "y": 2.5 }, + { "label": "PgDn", "matrix": [2, 16], "w": 1, "x": 17.25, "y": 2.5 }, + { "label": "Caps Lock", "matrix": [3, 0], "w": 1.75, "x": 0, "y": 3.5 }, + { "label": "A", "matrix": [3, 1], "w": 1, "x": 1.75, "y": 3.5 }, + { "label": "S", "matrix": [3, 2], "w": 1, "x": 2.75, "y": 3.5 }, + { "label": "D", "matrix": [3, 3], "w": 1, "x": 3.75, "y": 3.5 }, + { "label": "F", "matrix": [3, 4], "w": 1, "x": 4.75, "y": 3.5 }, + { "label": "G", "matrix": [3, 5], "w": 1, "x": 5.75, "y": 3.5 }, + { "label": "H", "matrix": [3, 6], "w": 1, "x": 6.75, "y": 3.5 }, + { "label": "J", "matrix": [3, 7], "w": 1, "x": 7.75, "y": 3.5 }, + { "label": "K", "matrix": [3, 8], "w": 1, "x": 8.75, "y": 3.5 }, + { "label": "L", "matrix": [3, 9], "w": 1, "x": 9.75, "y": 3.5 }, + { "label": ":", "matrix": [3, 10], "w": 1, "x": 10.75, "y": 3.5 }, + { "label": "@", "matrix": [3, 11], "w": 1, "x": 11.75, "y": 3.5 }, + { "label": "~", "matrix": [3, 12], "w": 1, "x": 12.75, "y": 3.5 }, + { "h": 2, "label": "Enter", "matrix": [2, 13], "w": 1.25, "x": 13.75, "y": 2.5 }, + { "label": "Shift", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4.5 }, + { "label": "|", "matrix": [4, 1], "w": 1, "x": 1.25, "y": 4.5 }, + { "label": "Z", "matrix": [4, 2], "w": 1, "x": 2.25, "y": 4.5 }, + { "label": "X", "matrix": [4, 3], "w": 1, "x": 3.25, "y": 4.5 }, + { "label": "C", "matrix": [4, 4], "w": 1, "x": 4.25, "y": 4.5 }, + { "label": "V", "matrix": [4, 5], "w": 1, "x": 5.25, "y": 4.5 }, + { "label": "B", "matrix": [4, 6], "w": 1, "x": 6.25, "y": 4.5 }, + { "label": "N", "matrix": [4, 7], "w": 1, "x": 7.25, "y": 4.5 }, + { "label": "M", "matrix": [4, 8], "w": 1, "x": 8.25, "y": 4.5 }, + { "label": "<", "matrix": [4, 9], "w": 1, "x": 9.25, "y": 4.5 }, + { "label": ">", "matrix": [4, 10], "w": 1, "x": 10.25, "y": 4.5 }, + { "label": "?", "matrix": [4, 11], "w": 1, "x": 11.25, "y": 4.5 }, + { "label": "Shift", "matrix": [4, 12], "w": 2.75, "x": 12.25, "y": 4.5 }, + { "label": "Up", "matrix": [4, 15], "w": 1, "x": 16.25, "y": 4.5 }, + { "label": "Ctrl", "matrix": [5, 0], "w": 1.25, "x": 0, "y": 5.5 }, + { "label": "Alt", "matrix": [5, 1], "w": 1.25, "x": 1.25, "y": 5.5 }, + { "label": "Win", "matrix": [5, 2], "w": 1.25, "x": 2.5, "y": 5.5 }, + { "label": "Space", "matrix": [5, 5], "w": 6.25, "x": 3.75, "y": 5.5 }, + { "label": "Win", "matrix": [5, 9], "w": 1.25, "x": 10, "y": 5.5 }, + { "label": "AltGr", "matrix": [5, 10], "w": 1.25, "x": 11.25, "y": 5.5 }, + { "label": "Ctrl", "matrix": [5, 11], "w": 1.25, "x": 12.5, "y": 5.5 }, + { "label": "Fn", "matrix": [5, 12], "w": 1.25, "x": 13.75, "y": 5.5 }, + { "label": "Left", "matrix": [5, 13], "w": 1, "x": 15.25, "y": 5.5 }, + { "label": "Down", "matrix": [5, 15], "w": 1, "x": 16.25, "y": 5.5 }, + { "label": "Right", "matrix": [5, 16], "w": 1, "x": 17.25, "y": 5.5 } + ] } + } } diff --git a/keyboards/capsunlocked/cu80/v2_iso/keymaps/default/keymap.c b/keyboards/capsunlocked/cu80/v2_iso/keymaps/default/keymap.c index 2438a9ebc9..1b1caa8776 100644 --- a/keyboards/capsunlocked/cu80/v2_iso/keymaps/default/keymap.c +++ b/keyboards/capsunlocked/cu80/v2_iso/keymaps/default/keymap.c @@ -24,7 +24,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, KC_END, KC_PGDN, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_APP, KC_RCTL, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), [1] = LAYOUT_tkl_iso( RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_M_P, RGB_M_B, RGB_M_R, diff --git a/keyboards/capsunlocked/cu80/v2_iso/keymaps/via/keymap.c b/keyboards/capsunlocked/cu80/v2_iso/keymaps/via/keymap.c index 3f6c28abb2..f63ab5a53c 100644 --- a/keyboards/capsunlocked/cu80/v2_iso/keymaps/via/keymap.c +++ b/keyboards/capsunlocked/cu80/v2_iso/keymaps/via/keymap.c @@ -23,7 +23,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, KC_END, KC_PGDN, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_APP, KC_RCTL, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), [1] = LAYOUT_tkl_iso( RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_M_P, RGB_M_B, RGB_M_R, diff --git a/keyboards/capsunlocked/cu80/v2_iso/readme.md b/keyboards/capsunlocked/cu80/v2_iso/readme.md index bcdbfaa627..cf8c5fc6fa 100644 --- a/keyboards/capsunlocked/cu80/v2_iso/readme.md +++ b/keyboards/capsunlocked/cu80/v2_iso/readme.md @@ -4,12 +4,13 @@ The CU80 v2 ISO is the PCB for round 2 of the CU80 TKL keyboard, with fixed layo To place the keyboard into bootloader mode in order to flash it, hold the ESC key while plugging the board in, or use the reset button on the back of the PCB. -* Keyboard maintainer: [rys](https://github.com/rys) +* Keyboard maintainer: [rys](https://github.com/rys) & [maz0r](https://github.com/maz0r) * Hardware supported: [CU80 v2 ISO](https://imgur.com/yMZMt6j) * Hardware availability: [CapsUnlocked](https://caps-unlocked.com/cu80-round-2/) Make and flash example for this keyboard (after setting up your build environment): make capsunlocked/cu80/v2_iso:default:flash + make capsunlocked/cu80/v2_iso/rgb:default:flash See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/capsunlocked/cu80/v2_iso/rgb/config.h b/keyboards/capsunlocked/cu80/v2_iso/rgb/config.h new file mode 100644 index 0000000000..1936150aba --- /dev/null +++ b/keyboards/capsunlocked/cu80/v2_iso/rgb/config.h @@ -0,0 +1,36 @@ +/* +Copyright 2021 CapsUnlocked + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +/* enable RGB matrix */ +#define CU80_RGB + +/* update the product for RGB Matrix variant in VIA/VIAL and Remap-keys.app */ +#undef PRODUCT_ID +#undef PRODUCT +#define PRODUCT_ID 0x0083 +#define PRODUCT CU80 v2 ISO RGB + +/* moved to RGB specific */ +#define RGB_MATRIX_KEYPRESSES +#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 50 + +/* RGB firmware override */ +#undef RGBLIGHT_ANIMATIONS +#undef RGBLIGHT_HUE_STEP +#undef RGBLIGHT_SAT_STEP +#undef RGBLIGHT_VAL_STEP +#undef RGBLIGHT_LIMIT_VAL diff --git a/keyboards/capsunlocked/cu80/v2_iso/rgb/readme.md b/keyboards/capsunlocked/cu80/v2_iso/rgb/readme.md new file mode 100644 index 0000000000..c53bf74078 --- /dev/null +++ b/keyboards/capsunlocked/cu80/v2_iso/rgb/readme.md @@ -0,0 +1,3 @@ +# CU80 v2 ISO RGB + +Overrides \ No newline at end of file diff --git a/keyboards/capsunlocked/cu80/v2_iso/rgb/rules.mk b/keyboards/capsunlocked/cu80/v2_iso/rgb/rules.mk new file mode 100644 index 0000000000..d4e53eda16 --- /dev/null +++ b/keyboards/capsunlocked/cu80/v2_iso/rgb/rules.mk @@ -0,0 +1,3 @@ +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +RGB_MATRIX_ENABLE = yes # Enable RGB matrix +RGB_MATRIX_DRIVER = WS2812 # Set Driver to WS2812 diff --git a/keyboards/capsunlocked/cu80/v2_iso/rules.mk b/keyboards/capsunlocked/cu80/v2_iso/rules.mk index 5650414182..7c5554a087 100644 --- a/keyboards/capsunlocked/cu80/v2_iso/rules.mk +++ b/keyboards/capsunlocked/cu80/v2_iso/rules.mk @@ -7,19 +7,4 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration -MOUSEKEY_ENABLE = no # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -NKRO_ENABLE = yes # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth -AUDIO_ENABLE = no # Audio output - -LAYOUTS = tkl_iso +NO_USB_STARTUP_CHECK = yes # resolve possible sleep issue diff --git a/keyboards/capsunlocked/cu80/v2_iso/v2_iso.c b/keyboards/capsunlocked/cu80/v2_iso/v2_iso.c index 748deb1086..2caef36bc7 100644 --- a/keyboards/capsunlocked/cu80/v2_iso/v2_iso.c +++ b/keyboards/capsunlocked/cu80/v2_iso/v2_iso.c @@ -16,3 +16,27 @@ along with this program. If not, see . */ #include "v2_iso.h" +#ifdef CU80_RGB + +void matrix_init_kb(void) { + setPinOutput(E6); + matrix_init_user(); +} + +/* Set LED 62 (Caps Lock) and LED 14 (Scroll Lock) when key active */ +void rgb_matrix_indicators_kb(void) { + if (host_keyboard_led_state().caps_lock) { + rgb_matrix_set_color(62, 255, 255, 255); + } + if (host_keyboard_led_state().scroll_lock) { + rgb_matrix_set_color(14, 255, 255, 255); + } +} + +/* Leds on the CU80 go ltr > rtl > ltr > rlt > Ltr > rtl */ +led_config_t g_led_config = {{{0, NO_LED, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}, {32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16}, {33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49}, {62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50}, {63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, NO_LED, NO_LED, 76}, {87, 86, 85, NO_LED, NO_LED, 84, NO_LED, NO_LED, NO_LED, 83, 82, 81, 80, 79, NO_LED, 78, 77}}, + /*board layout accounting for led directions */ + {{0, 0}, {28, 0}, {42, 0}, {56, 0}, {71, 0}, {85, 0}, {99, 0}, {113, 0}, {127, 0}, {141, 0}, {155, 0}, {169, 0}, {184, 0}, {198, 0}, {212, 0}, {226, 0}, {226, 26}, {212, 26}, {198, 26}, {184, 26}, {169, 26}, {155, 26}, {141, 26}, {127, 26}, {113, 26}, {99, 26}, {85, 26}, {71, 26}, {56, 26}, {42, 26}, {28, 26}, {14, 26}, {0, 26}, {0, 26}, {14, 26}, {28, 26}, {42, 26}, {56, 26}, {71, 26}, {85, 26}, {99, 26}, {113, 26}, {127, 26}, {141, 26}, {155, 26}, {169, 26}, {184, 26}, {198, 26}, {212, 26}, {226, 26}, {169, 38}, {155, 38}, {141, 38}, {127, 38}, {113, 38}, {99, 38}, {85, 38}, {71, 38}, {56, 38}, {42, 38}, {28, 38}, {14, 38}, {0, 38}, {0, 51}, {14, 51}, {28, 51}, {42, 51}, {56, 51}, {71, 51}, {85, 51}, {99, 51}, {113, 51}, {127, 51}, {141, 51}, {155, 51}, {169, 51}, {212, 51}, {226, 64}, {212, 64}, {184, 64}, {169, 64}, {155, 64}, {141, 64}, {127, 64}, {71, 64}, {28, 64}, {14, 64}, {0, 64}}, + /* marks scroll and caps as function modifiers for led effects */ + {4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4, 1, 1, 1, 1, 4, 1, 1, 1}}; +#endif diff --git a/keyboards/capsunlocked/cu80/v2_iso_rgb/config.h b/keyboards/capsunlocked/cu80/v2_iso_rgb/config.h deleted file mode 100644 index eb607ce88d..0000000000 --- a/keyboards/capsunlocked/cu80/v2_iso_rgb/config.h +++ /dev/null @@ -1,52 +0,0 @@ -/* -Copyright 2021 CapsUnlocked - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#pragma once - -#include "config_common.h" - -/* USB Device descriptor parameter */ -#define VENDOR_ID 0x4355 -#define PRODUCT_ID 0x0083 -#define DEVICE_VER 0x0001 -#define MANUFACTURER CapsUnlocked -#define PRODUCT CU80 v2 ISO RGB - -/* key matrix size */ -#define MATRIX_ROWS 6 -#define MATRIX_COLS 17 - -#define MATRIX_ROW_PINS { D3, D2, B7, F1, C7, D5 } -#define MATRIX_COL_PINS { B0, B1, B2, B3, F4, F5, F6, F7, B6, B5, D7, B4, D6, F0, D1, C6, D4 } -#define UNUSED_PINS - -/* COL2ROW, ROW2COL */ -#define DIODE_DIRECTION COL2ROW - -/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCE 5 - -#define LOCKING_SUPPORT_ENABLE -/* Locking resynchronize hack */ -#define LOCKING_RESYNC_ENABLE - -/* Define RGB */ -#define RGB_DI_PIN E6 -#define DRIVER_LED_TOTAL 88 -#define RGBLED_NUM 88 -#define RGB_MATRIX_KEYPRESSES -#define RGBLIGHT_LIMIT_VAL 50 diff --git a/keyboards/capsunlocked/cu80/v2_iso_rgb/info.json b/keyboards/capsunlocked/cu80/v2_iso_rgb/info.json deleted file mode 100644 index 75de023929..0000000000 --- a/keyboards/capsunlocked/cu80/v2_iso_rgb/info.json +++ /dev/null @@ -1,101 +0,0 @@ -{ - "keyboard_name": "CapsUnlocked CU80 v2 ISO RGB", - "maintainer": "rys", - "url": "https://caps-unlocked.com/cu80-round-2/", - "width": 18.25, - "height": 6.5, - "layouts": { - "LAYOUT_tkl_iso": { - "layout": [ - {"label":"Esc", "x":0, "y":0}, - {"label":"F1", "x":2, "y":0}, - {"label":"F2", "x":3, "y":0}, - {"label":"F3", "x":4, "y":0}, - {"label":"F4", "x":5, "y":0}, - {"label":"F5", "x":6.5, "y":0}, - {"label":"F6", "x":7.5, "y":0}, - {"label":"F7", "x":8.5, "y":0}, - {"label":"F8", "x":9.5, "y":0}, - {"label":"F9", "x":11, "y":0}, - {"label":"F10", "x":12, "y":0}, - {"label":"F11", "x":13, "y":0}, - {"label":"F12", "x":14, "y":0}, - {"label":"PrtSc", "x":15.25, "y":0}, - {"label":"Scroll Lock", "x":16.25, "y":0}, - {"label":"Pause", "x":17.25, "y":0}, - {"label":"\u00ac", "x":0, "y":1.5}, - {"label":"!", "x":1, "y":1.5}, - {"label":"\"", "x":2, "y":1.5}, - {"label":"£", "x":3, "y":1.5}, - {"label":"$", "x":4, "y":1.5}, - {"label":"%", "x":5, "y":1.5}, - {"label":"^", "x":6, "y":1.5}, - {"label":"&", "x":7, "y":1.5}, - {"label":"*", "x":8, "y":1.5}, - {"label":"(", "x":9, "y":1.5}, - {"label":")", "x":10, "y":1.5}, - {"label":"_", "x":11, "y":1.5}, - {"label":"+", "x":12, "y":1.5}, - {"label":"Backspace", "x":13, "y":1.5, "w":2}, - {"label":"Insert", "x":15.25, "y":1.5}, - {"label":"Home", "x":16.25, "y":1.5}, - {"label":"PgUp", "x":17.25, "y":1.5}, - {"label":"Tab", "x":0, "y":2.5, "w":1.5}, - {"label":"Q", "x":1.5, "y":2.5}, - {"label":"W", "x":2.5, "y":2.5}, - {"label":"E", "x":3.5, "y":2.5}, - {"label":"R", "x":4.5, "y":2.5}, - {"label":"T", "x":5.5, "y":2.5}, - {"label":"Y", "x":6.5, "y":2.5}, - {"label":"U", "x":7.5, "y":2.5}, - {"label":"I", "x":8.5, "y":2.5}, - {"label":"O", "x":9.5, "y":2.5}, - {"label":"P", "x":10.5, "y":2.5}, - {"label":"{", "x":11.5, "y":2.5}, - {"label":"}", "x":12.5, "y":2.5}, - {"label":"Delete", "x":15.25, "y":2.5}, - {"label":"End", "x":16.25, "y":2.5}, - {"label":"PgDn", "x":17.25, "y":2.5}, - {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, - {"label":"A", "x":1.75, "y":3.5}, - {"label":"S", "x":2.75, "y":3.5}, - {"label":"D", "x":3.75, "y":3.5}, - {"label":"F", "x":4.75, "y":3.5}, - {"label":"G", "x":5.75, "y":3.5}, - {"label":"H", "x":6.75, "y":3.5}, - {"label":"J", "x":7.75, "y":3.5}, - {"label":"K", "x":8.75, "y":3.5}, - {"label":"L", "x":9.75, "y":3.5}, - {"label":":", "x":10.75, "y":3.5}, - {"label":"@", "x":11.75, "y":3.5}, - {"label":"~", "x":12.75, "y":3.5}, - {"label":"Enter", "x":13.75, "y":2.5, "w":1.25, "h":2}, - {"label":"Shift", "x":0, "y":4.5, "w":1.25}, - {"label":"|", "x":1.25, "y":4.5}, - {"label":"Z", "x":2.25, "y":4.5}, - {"label":"X", "x":3.25, "y":4.5}, - {"label":"C", "x":4.25, "y":4.5}, - {"label":"V", "x":5.25, "y":4.5}, - {"label":"B", "x":6.25, "y":4.5}, - {"label":"N", "x":7.25, "y":4.5}, - {"label":"M", "x":8.25, "y":4.5}, - {"label":"<", "x":9.25, "y":4.5}, - {"label":">", "x":10.25, "y":4.5}, - {"label":"?", "x":11.25, "y":4.5}, - {"label":"Shift", "x":12.25, "y":4.5, "w":2.75}, - {"label":"Up", "x":16.25, "y":4.5}, - {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, - {"label":"Alt", "x":1.25, "y":5.5, "w":1.25}, - {"label":"Win", "x":2.5, "y":5.5, "w":1.25}, - {"label":"Space", "x":3.75, "y":5.5, "w":6.25}, - {"label":"Win", "x":10, "y":5.5, "w":1.25}, - {"label":"AltGr", "x":11.25, "y":5.5, "w":1.25}, - {"label":"Ctrl", "x":12.5, "y":5.5, "w":1.25}, - {"label":"Fn", "x":13.75, "y":5.5, "w":1.25}, - {"label":"Left", "x":15.25, "y":5.5}, - {"label":"Down", "x":16.25, "y":5.5}, - {"label":"Right", "x":17.25, "y":5.5} - ] - } - } -} diff --git a/keyboards/capsunlocked/cu80/v2_iso_rgb/keymaps/default/keymap.c b/keyboards/capsunlocked/cu80/v2_iso_rgb/keymaps/default/keymap.c deleted file mode 100644 index 1b1caa8776..0000000000 --- a/keyboards/capsunlocked/cu80/v2_iso_rgb/keymaps/default/keymap.c +++ /dev/null @@ -1,38 +0,0 @@ -/* -Copyright 2021 CapsUnlocked - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ -#include QMK_KEYBOARD_H - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_tkl_iso( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, - - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, KC_END, KC_PGDN, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, - KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ), - [1] = LAYOUT_tkl_iso( - RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_M_P, RGB_M_B, RGB_M_R, - - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI, RGB_SAI, RGB_VAI, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, RGB_RMOD,RGB_TOG, RGB_MOD - ), -}; diff --git a/keyboards/capsunlocked/cu80/v2_iso_rgb/keymaps/default/readme.md b/keyboards/capsunlocked/cu80/v2_iso_rgb/keymaps/default/readme.md deleted file mode 100644 index bf55002afe..0000000000 --- a/keyboards/capsunlocked/cu80/v2_iso_rgb/keymaps/default/readme.md +++ /dev/null @@ -1,3 +0,0 @@ -# The default ISO keymap for the CU80 - -This CU80 is keymap is for the fixed ISO variant with fully populated bottom row. diff --git a/keyboards/capsunlocked/cu80/v2_iso_rgb/keymaps/via/keymap.c b/keyboards/capsunlocked/cu80/v2_iso_rgb/keymaps/via/keymap.c deleted file mode 100644 index f63ab5a53c..0000000000 --- a/keyboards/capsunlocked/cu80/v2_iso_rgb/keymaps/via/keymap.c +++ /dev/null @@ -1,55 +0,0 @@ -/* Copyright 2021 CapsUnlocked - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include QMK_KEYBOARD_H - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_tkl_iso( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, - - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, KC_END, KC_PGDN, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, - KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ), - [1] = LAYOUT_tkl_iso( - RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_M_P, RGB_M_B, RGB_M_R, - - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI, RGB_SAI, RGB_VAI, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, RGB_RMOD,RGB_TOG, RGB_MOD - ), - [2] = LAYOUT_tkl_iso( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - [3] = LAYOUT_tkl_iso( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), -}; diff --git a/keyboards/capsunlocked/cu80/v2_iso_rgb/keymaps/via/rules.mk b/keyboards/capsunlocked/cu80/v2_iso_rgb/keymaps/via/rules.mk deleted file mode 100644 index 1e5b99807c..0000000000 --- a/keyboards/capsunlocked/cu80/v2_iso_rgb/keymaps/via/rules.mk +++ /dev/null @@ -1 +0,0 @@ -VIA_ENABLE = yes diff --git a/keyboards/capsunlocked/cu80/v2_iso_rgb/readme.md b/keyboards/capsunlocked/cu80/v2_iso_rgb/readme.md deleted file mode 100644 index 004612942f..0000000000 --- a/keyboards/capsunlocked/cu80/v2_iso_rgb/readme.md +++ /dev/null @@ -1,18 +0,0 @@ -# CU80 v2 ISO RGB - -The CU80 v2 ISO is the PCB for round 2 of the CU80 TKL keyboard, with fixed layout ISO and VIA support. - -This firmware adds RGB matrix support. - -To place the keyboard into bootloader mode in order to flash it, hold the ESC key while plugging the board in, or use the reset button on the back of the PCB. - -* Keyboard maintainer: [rys](https://github.com/rys) -* Hardware supported: [CU80 v2 ISO](https://imgur.com/yMZMt6j) -* Hardware availability: [CapsUnlocked](https://caps-unlocked.com/cu80-round-2/) - -Make and flash example for this keyboard (after setting up your build environment): - - make capsunlocked/cu80/v2_iso_rgb:default:flash - make capsunlocked/cu80/v2_iso_rgb:via:flash - -See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/capsunlocked/cu80/v2_iso_rgb/rules.mk b/keyboards/capsunlocked/cu80/v2_iso_rgb/rules.mk deleted file mode 100644 index 454c08c617..0000000000 --- a/keyboards/capsunlocked/cu80/v2_iso_rgb/rules.mk +++ /dev/null @@ -1,28 +0,0 @@ -# MCU name -MCU = atmega32u4 - -# Bootloader selection -BOOTLOADER = atmel-dfu - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration -MOUSEKEY_ENABLE = no # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -NKRO_ENABLE = yes # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth -AUDIO_ENABLE = no # Audio output -RGB_MATRIX_ENABLE = yes # Enable RGB matrix -RGB_MATRIX_DRIVER = WS2812 # Set Driver to WS2812 -NO_USB_STARTUP_CHECK = yes # resolve possible sleep issue - - -LAYOUTS = tkl_iso diff --git a/keyboards/capsunlocked/cu80/v2_iso_rgb/v2_iso_rgb.c b/keyboards/capsunlocked/cu80/v2_iso_rgb/v2_iso_rgb.c deleted file mode 100644 index 641fce69ef..0000000000 --- a/keyboards/capsunlocked/cu80/v2_iso_rgb/v2_iso_rgb.c +++ /dev/null @@ -1,64 +0,0 @@ -/* -Copyright 2021 CapsUnlocked - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#include "v2_iso_rgb.h" -#include "rgb_matrix_types.h" - -void matrix_init_kb(void) { - setPinOutput(E6); - matrix_init_user(); -} - -/* Set LED 62 (Caps Lock) and LED 14 (Scroll Lock) when key active */ -void rgb_matrix_indicators_kb(void) { - if (host_keyboard_led_state().caps_lock) { - rgb_matrix_set_color(62, 255, 255, 255); - } - if (host_keyboard_led_state().scroll_lock) { - rgb_matrix_set_color(14, 255, 255, 255); - } -} - -/* Leds on the CU80 go ltr > rtl > ltr > rlt > Ltr > rtl */ -led_config_t g_led_config = { - { - { 0, NO_LED, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, }, - { 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16,}, - { 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,}, - { 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50,}, - { 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, NO_LED, NO_LED, 76,}, - { 87, 86, 85, NO_LED, NO_LED, 84, NO_LED, NO_LED, NO_LED, 83, 82, 81, 80, 79, NO_LED, 78, 77} - }, - /*board layout accounting for led directions */ - { - {0,0}, {28,0}, {42,0}, {56,0}, {71,0}, {85,0}, {99,0}, {113,0}, {127,0}, {141,0}, {155,0}, {169,0}, {184,0}, {198,0}, {212,0}, {226,0}, - {226,26}, {212,26}, {198,26}, {184,26}, {169,26}, {155,26}, {141,26}, {127,26}, {113,26}, {99,26}, {85,26}, {71,26}, {56,26}, {42,26}, {28,26}, {14,26}, {0,26}, - {0,26}, {14,26}, {28,26}, {42,26}, {56,26}, {71,26}, {85,26}, {99,26}, {113,26}, {127,26}, {141,26}, {155,26}, {169,26}, {184,26}, {198,26}, {212,26}, {226,26}, - {169,38}, {155,38}, {141,38}, {127,38}, {113,38}, {99,38}, {85,38}, {71,38}, {56,38}, {42,38}, {28,38}, {14,38}, {0,38}, - {0,51}, {14,51}, {28,51}, {42,51}, {56,51}, {71,51}, {85,51}, {99,51}, {113,51}, {127,51}, {141,51}, {155,51}, {169,51}, {212,51}, - {226,64}, {212,64}, {184,64}, {169,64}, {155,64}, {141,64}, {127,64}, {71,64}, {28,64}, {14,64}, {0,64} - }, - /* marks scroll and caps as function modifiers for led effects */ - { - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 - } -}; diff --git a/keyboards/capsunlocked/cu80/v2_iso_rgb/v2_iso_rgb.h b/keyboards/capsunlocked/cu80/v2_iso_rgb/v2_iso_rgb.h deleted file mode 100644 index affdc9da9f..0000000000 --- a/keyboards/capsunlocked/cu80/v2_iso_rgb/v2_iso_rgb.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -Copyright 2021 CapsUnlocked - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#pragma once - -#include "quantum.h" - -/* This a shortcut to help you visually see your layout. - * - * The first section contains all of the arguments representing the physical - * layout of the board and position of the keys. - * - * The second converts the arguments into a two-dimensional array which - * represents the switch matrix. - */ - -#define LAYOUT_tkl_iso( \ - K000, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016, \ - \ - K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116, \ - K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, K215, K216, \ - K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K213, \ - K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K415, \ - K500, K501, K502, K505, K509, K510, K511, K512, K513, K515, K516 \ -) { \ - { K000, KC_NO, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016 }, \ - { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116 }, \ - { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216 }, \ - { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, KC_NO, KC_NO, KC_NO, KC_NO }, \ - { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, KC_NO, KC_NO, K415, KC_NO }, \ - { K500, K501, K502, KC_NO, KC_NO, K505, KC_NO, KC_NO, KC_NO, K509, K510, K511, K512, K513, KC_NO, K515, K516 }, \ -} From 99c46e4b736cb72dee208d5ef034b91d74853013 Mon Sep 17 00:00:00 2001 From: Angel Rojas <66912190+rojasa1990@users.noreply.github.com> Date: Mon, 19 Apr 2021 01:30:36 -0400 Subject: [PATCH 229/613] [Keyboard] Add G1_65 keyboard (#12140) Co-authored-by: Drashna Jaelre --- keyboards/genone/g1_65/config.h | 48 +++++++++++++++++ keyboards/genone/g1_65/g1_65.c | 17 ++++++ keyboards/genone/g1_65/g1_65.h | 37 +++++++++++++ keyboards/genone/g1_65/info.json | 12 +++++ .../genone/g1_65/keymaps/default/keymap.c | 37 +++++++++++++ keyboards/genone/g1_65/keymaps/via/keymap.c | 53 +++++++++++++++++++ keyboards/genone/g1_65/keymaps/via/rules.mk | 2 + keyboards/genone/g1_65/readme.md | 18 +++++++ keyboards/genone/g1_65/rules.mk | 24 +++++++++ 9 files changed, 248 insertions(+) create mode 100644 keyboards/genone/g1_65/config.h create mode 100644 keyboards/genone/g1_65/g1_65.c create mode 100644 keyboards/genone/g1_65/g1_65.h create mode 100644 keyboards/genone/g1_65/info.json create mode 100644 keyboards/genone/g1_65/keymaps/default/keymap.c create mode 100644 keyboards/genone/g1_65/keymaps/via/keymap.c create mode 100644 keyboards/genone/g1_65/keymaps/via/rules.mk create mode 100644 keyboards/genone/g1_65/readme.md create mode 100644 keyboards/genone/g1_65/rules.mk diff --git a/keyboards/genone/g1_65/config.h b/keyboards/genone/g1_65/config.h new file mode 100644 index 0000000000..3236160c12 --- /dev/null +++ b/keyboards/genone/g1_65/config.h @@ -0,0 +1,48 @@ +/* Copyright 2020 GEN ONE LLC + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xE720 // GEN ONE +#define PRODUCT_ID 0x0001 // G1_65 +#define DEVICE_VER 0x0001 +#define MANUFACTURER GEN ONE LLC +#define PRODUCT G1_65 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +#define MATRIX_ROW_PINS { B3, B7, B0, B1, B2 } +#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, D4, D6, D7, B4, B5, B6, C6, C7, F7, F6 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + diff --git a/keyboards/genone/g1_65/g1_65.c b/keyboards/genone/g1_65/g1_65.c new file mode 100644 index 0000000000..af2da3de9a --- /dev/null +++ b/keyboards/genone/g1_65/g1_65.c @@ -0,0 +1,17 @@ +/* Copyright 2020 GEN ONE LLC + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "g1_65.h" diff --git a/keyboards/genone/g1_65/g1_65.h b/keyboards/genone/g1_65/g1_65.h new file mode 100644 index 0000000000..633c6e4477 --- /dev/null +++ b/keyboards/genone/g1_65/g1_65.h @@ -0,0 +1,37 @@ +/* Copyright 2020 GEN ONE LLC + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define ____ KC_NO + + +#define LAYOUT_65_ansi( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K213, K214, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K312, K313, K314, \ + K400, K401, K402, K406, K409, K410, K411, K412, K413, K414 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, ____, K213, K214 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, ____, K312, K313, K314 }, \ + { K400, K401, K402, ____, ____, ____, K406, ____, ____, K409, K410, K411, K412, K413, K414 } \ +} + diff --git a/keyboards/genone/g1_65/info.json b/keyboards/genone/g1_65/info.json new file mode 100644 index 0000000000..966c2d352a --- /dev/null +++ b/keyboards/genone/g1_65/info.json @@ -0,0 +1,12 @@ +{ + "keyboard_name": "G1_65", + "url": "https://genonemerch.com", + "maintainer": "rojasa1990", + "width": 16, + "height": 5, + "layouts": { + "LAYOUT_65_ansi": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":15, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":15, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":15, "y":2}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":15, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4}, {"x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}] + } + } +} diff --git a/keyboards/genone/g1_65/keymaps/default/keymap.c b/keyboards/genone/g1_65/keymaps/default/keymap.c new file mode 100644 index 0000000000..a72cc1d23b --- /dev/null +++ b/keyboards/genone/g1_65/keymaps/default/keymap.c @@ -0,0 +1,37 @@ +/* Copyright 2020 GEN ONE LLC + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + // Default layer + [0] = LAYOUT_65_ansi( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + // Fn1 Layer + [1] = LAYOUT_65_ansi( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, + KC_CAPS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +}; + diff --git a/keyboards/genone/g1_65/keymaps/via/keymap.c b/keyboards/genone/g1_65/keymaps/via/keymap.c new file mode 100644 index 0000000000..94361dd14f --- /dev/null +++ b/keyboards/genone/g1_65/keymaps/via/keymap.c @@ -0,0 +1,53 @@ +/* Copyright 2020 GEN ONE LLC + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + // Default layer + [0] = LAYOUT_65_ansi( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + // Fn1 Layer + [1] = LAYOUT_65_ansi( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, + KC_CAPS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + // Fn2 Layer + [2] = LAYOUT_65_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + // Fn3 Layer + [3] = LAYOUT_65_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +}; diff --git a/keyboards/genone/g1_65/keymaps/via/rules.mk b/keyboards/genone/g1_65/keymaps/via/rules.mk new file mode 100644 index 0000000000..36b7ba9cbc --- /dev/null +++ b/keyboards/genone/g1_65/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/genone/g1_65/readme.md b/keyboards/genone/g1_65/readme.md new file mode 100644 index 0000000000..2ea3e191e6 --- /dev/null +++ b/keyboards/genone/g1_65/readme.md @@ -0,0 +1,18 @@ +# GEN ONE G1_65 + +G1_65 is a keyboard PCB supporting 65% layout. [More info at GEN ONE MERCH](https://genonemerch.com) + +* Keyboard Maintainer: [rojasa1990](https://github.com/rojasa1990) +* Hardware Supported: GEN ONE G1_65 +* Hardware Availability: GEN ONE MERCH + +Make example for this keyboard (after setting up your build environment): + + make genone/g1_65:default + +Flashing example for this keyboard: + + make genone/g1_65:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + diff --git a/keyboards/genone/g1_65/rules.mk b/keyboards/genone/g1_65/rules.mk new file mode 100644 index 0000000000..a8020aa539 --- /dev/null +++ b/keyboards/genone/g1_65/rules.mk @@ -0,0 +1,24 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keybaord RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output + +LAYOUTS = 65_ansi From 2b7078cd2125f58fed01f222c7b6eb796f4e4642 Mon Sep 17 00:00:00 2001 From: Ben Fiedler Date: Mon, 19 Apr 2021 07:44:23 +0200 Subject: [PATCH 230/613] [Keymap] add my quefrency layout (#12104) --- .../quefrency/keymaps/bfiedler/config.h | 33 +++++++++ .../quefrency/keymaps/bfiedler/keymap.c | 69 +++++++++++++++++++ .../quefrency/keymaps/bfiedler/rules.mk | 3 + 3 files changed, 105 insertions(+) create mode 100644 keyboards/keebio/quefrency/keymaps/bfiedler/config.h create mode 100644 keyboards/keebio/quefrency/keymaps/bfiedler/keymap.c create mode 100644 keyboards/keebio/quefrency/keymaps/bfiedler/rules.mk diff --git a/keyboards/keebio/quefrency/keymaps/bfiedler/config.h b/keyboards/keebio/quefrency/keymaps/bfiedler/config.h new file mode 100644 index 0000000000..e7d5ba9ca8 --- /dev/null +++ b/keyboards/keebio/quefrency/keymaps/bfiedler/config.h @@ -0,0 +1,33 @@ +/* +This is the c configuration file for the keymap + +Copyright 2012 Jun Wako +Copyright 2015 Jack Humbert +Copyright 2018 Danny Nguyen +Copyright 2021 Ben Fiedler + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +/* Use I2C or Serial, not both */ + +#define USE_SERIAL +// #define USE_I2C + +// https://docs.qmk.fm/#/tap_hold?id=tap-hold-configuration-options +#define TAPPING_TERM 120 +//#define PERMISSIVE_HOLD +#define IGNORE_MOD_TAP_INTERRUPT diff --git a/keyboards/keebio/quefrency/keymaps/bfiedler/keymap.c b/keyboards/keebio/quefrency/keymaps/bfiedler/keymap.c new file mode 100644 index 0000000000..c83327ce37 --- /dev/null +++ b/keyboards/keebio/quefrency/keymaps/bfiedler/keymap.c @@ -0,0 +1,69 @@ +/* Copyright 2021 Ben Fiedler + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +#define KC_RST RESET + +// 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 custom_layers { + _BASE, + _FN1, +}; + +enum custom_keycodes { + QWERTY = SAFE_RANGE, +}; + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_65( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL, KC_BSPC, KC_HOME, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END, \ + LGUI_T(KC_BSPC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, LGUI_T(KC_ENT), KC_PGUP, \ + KC_LSFT, LCTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, LCTL_T(KC_SLSH), KC_RSFT, KC_UP, KC_PGDN, \ + KC_LCTL, KC_LALT, KC_LGUI, KC_LALT, KC_SPC, LT(_FN1, KC_ENT), KC_RALT, _______, KC_RCTL, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_FN1] = LAYOUT_65( + KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_BSPC, _______, \ + RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + KC_RST, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_RST + ) +}; +// clang-format on + +// TODO: I don't even have a rotary encoder, do I need this? +void encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + if (clockwise) { + tap_code(KC_PGDN); + } else { + tap_code(KC_PGUP); + } + } else if (index == 1) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } +} diff --git a/keyboards/keebio/quefrency/keymaps/bfiedler/rules.mk b/keyboards/keebio/quefrency/keymaps/bfiedler/rules.mk new file mode 100644 index 0000000000..f69cb0dfea --- /dev/null +++ b/keyboards/keebio/quefrency/keymaps/bfiedler/rules.mk @@ -0,0 +1,3 @@ +# Saves a bit of space, and currently (04.03.2021) the +# case is not see-through. +RGBLIGHT_ENABLE = no From 0b560673ce351da3fe7a90237be4ae0ff7d4ef74 Mon Sep 17 00:00:00 2001 From: Conor Burns Date: Mon, 19 Apr 2021 08:00:05 +0200 Subject: [PATCH 231/613] [Keyboard] Updates for 0xCB 1337 (#12336) --- keyboards/0xcb/1337/config.h | 13 +- keyboards/0xcb/1337/gfxfont.c | 276 +++++++++++++++++++ keyboards/0xcb/1337/keymaps/default/keymap.c | 131 ++++----- keyboards/0xcb/1337/keymaps/jakob/keymap.c | 168 +++++++++++ keyboards/0xcb/1337/keymaps/jakob/rules.mk | 1 + keyboards/0xcb/1337/keymaps/via/keymap.c | 131 ++++----- 6 files changed, 565 insertions(+), 155 deletions(-) create mode 100644 keyboards/0xcb/1337/gfxfont.c create mode 100644 keyboards/0xcb/1337/keymaps/jakob/keymap.c create mode 100644 keyboards/0xcb/1337/keymaps/jakob/rules.mk diff --git a/keyboards/0xcb/1337/config.h b/keyboards/0xcb/1337/config.h index 25b1eadd91..6d25e49cc9 100644 --- a/keyboards/0xcb/1337/config.h +++ b/keyboards/0xcb/1337/config.h @@ -36,12 +36,13 @@ along with this program. If not, see . { E6, B4, B2 } \ } #define TAP_CODE_DELAY 10 +#define ENCODER_DIRECTION_FLIP #define ENCODER_RESOLUTION 4 #define ENCODERS_PAD_A { F5 } #define ENCODERS_PAD_B { F6 } #define BACKLIGHT_PIN B5 -// #define BACKLIGHT_BREATHING +#define BACKLIGHT_BREATHING #define BACKLIGHT_LEVELS 7 #define RGB_DI_PIN D3 @@ -52,8 +53,12 @@ along with this program. If not, see . #define RGBLIGHT_VAL_STEP 8 #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ - /*== all animations enable ==*/ - #define RGBLIGHT_ANIMATIONS + // #define RGBLIGHT_ANIMATIONS + #define RGBLIGHT_EFFECT_BREATHING + #define RGBLIGHT_EFFECT_SNAKE + #define RGBLIGHT_EFFECT_STATIC_GRADIENT + #define RGBLIGHT_EFFECT_RAINBOW_SWIRL + #define RGBLIGHT_EFFECT_RAINBOW_MOOD #endif /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ @@ -65,6 +70,8 @@ along with this program. If not, see . #define LOCKING_RESYNC_ENABLE /* Oled Size */ #define OLED_DISPLAY_128X64 +#define OLED_FONT_END 255 +#define OLED_FONT_H "gfxfont.c" /* QMK DFU */ #define QMK_LED B0 diff --git a/keyboards/0xcb/1337/gfxfont.c b/keyboards/0xcb/1337/gfxfont.c new file mode 100644 index 0000000000..4e7940b64a --- /dev/null +++ b/keyboards/0xcb/1337/gfxfont.c @@ -0,0 +1,276 @@ +/* +Copyright 2021 0xCB - Conor Burns + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "progmem.h" + +static const unsigned char font[] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00, + 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00, + 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00, + 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00, + 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00, + 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00, + 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00, + 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00, + 0x00, 0x18, 0x24, 0x18, 0x00, 0x00, + 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00, + 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00, + 0x26, 0x29, 0x79, 0x29, 0x26, 0x00, + 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00, + 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00, + 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00, + 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00, + 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00, + 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00, + 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00, + 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00, + 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, + 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00, + 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00, + 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00, + 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00, + 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00, + 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00, + 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00, + 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00, + 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, + 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, + 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00, + 0x23, 0x13, 0x08, 0x64, 0x62, 0x00, + 0x36, 0x49, 0x56, 0x20, 0x50, 0x00, + 0x00, 0x08, 0x07, 0x03, 0x00, 0x00, + 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, + 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00, + 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, + 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, + 0x00, 0x80, 0x70, 0x30, 0x00, 0x00, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, + 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, + 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, + 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, + 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00, + 0x72, 0x49, 0x49, 0x49, 0x46, 0x00, + 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00, + 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00, + 0x27, 0x45, 0x45, 0x45, 0x39, 0x00, + 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00, + 0x41, 0x21, 0x11, 0x09, 0x07, 0x00, + 0x36, 0x49, 0x49, 0x49, 0x36, 0x00, + 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00, + 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x34, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x14, 0x22, 0x41, 0x00, + 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, + 0x00, 0x41, 0x22, 0x14, 0x08, 0x00, + 0x02, 0x01, 0x59, 0x09, 0x06, 0x00, + 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00, + 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00, + 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00, + 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00, + 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00, + 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00, + 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00, + 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00, + 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, + 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00, + 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00, + 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00, + 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00, + 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00, + 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00, + 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00, + 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00, + 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00, + 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00, + 0x26, 0x49, 0x49, 0x49, 0x32, 0x00, + 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00, + 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00, + 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00, + 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00, + 0x63, 0x14, 0x08, 0x14, 0x63, 0x00, + 0x03, 0x04, 0x78, 0x04, 0x03, 0x00, + 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00, + 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00, + 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, + 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00, + 0x04, 0x02, 0x01, 0x02, 0x04, 0x00, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, + 0x00, 0x03, 0x07, 0x08, 0x00, 0x00, + 0x20, 0x54, 0x54, 0x78, 0x40, 0x00, + 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00, + 0x38, 0x44, 0x44, 0x44, 0x28, 0x00, + 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00, + 0x38, 0x54, 0x54, 0x54, 0x18, 0x00, + 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00, + 0x18, 0x24, 0x24, 0x1C, 0x78, 0x00, + 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00, + 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00, + 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00, + 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00, + 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00, + 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00, + 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00, + 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, + 0xFC, 0x18, 0x24, 0x24, 0x18, 0x00, + 0x18, 0x24, 0x24, 0x18, 0xFC, 0x00, + 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00, + 0x48, 0x54, 0x54, 0x54, 0x24, 0x00, + 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00, + 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00, + 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00, + 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00, + 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, + 0x4C, 0x10, 0x10, 0x10, 0x7C, 0x00, + 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, + 0x00, 0x08, 0x36, 0x41, 0x00, 0x00, + 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, + 0x00, 0x41, 0x36, 0x08, 0x00, 0x00, + 0x02, 0x01, 0x02, 0x04, 0x02, 0x00, + 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00, + 0x00, 0xE0, 0xFC, 0x1E, 0x06, 0xC6, + 0xC6, 0x06, 0x1E, 0xFC, 0xE0, 0x00, + 0x00, 0x00, 0x60, 0xE0, 0x80, 0x00, + 0x00, 0x80, 0xE0, 0x60, 0x00, 0x00, + 0x00, 0x00, 0xE0, 0xF8, 0x3C, 0x0E, + 0x06, 0x06, 0x06, 0x0E, 0x0C, 0x00, + 0x00, 0x00, 0xFE, 0xFE, 0x86, 0x86, + 0x86, 0x86, 0x8C, 0x78, 0x70, 0x00, + 0x00, 0x0E, 0x0E, 0x06, 0x06, 0xFE, + 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0C, 0x8E, 0x86, 0x86, 0x86, + 0x86, 0x86, 0xCE, 0xFE, 0x7C, 0x00, + 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0xE6, 0xE6, 0x3E, 0x3E, 0x00, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x06, 0x78, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xE0, 0x1C, 0x02, 0x01, 0x04, 0x18, + 0x00, 0x00, 0x00, 0x02, 0x0C, 0x00, + 0x80, 0x80, 0x71, 0x02, 0x1C, 0xE0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x78, 0x06, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0xF0, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, + 0x00, 0x00, 0xFC, 0xFC, 0xFC, 0xFC, + 0xFC, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, + 0xE0, 0xE0, 0xE0, 0xE0, 0xF0, 0xF0, + 0x00, 0x00, 0x40, 0xF0, 0xFC, 0xFF, + 0xFF, 0xFC, 0xF0, 0xC0, 0x00, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x3F, 0x78, 0x60, 0x63, + 0x63, 0x60, 0x78, 0x3F, 0x07, 0x00, + 0x00, 0x00, 0x60, 0x79, 0x19, 0x06, + 0x06, 0x19, 0x79, 0x60, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x1F, 0x3C, 0x70, + 0x60, 0x60, 0x60, 0x70, 0x30, 0x00, + 0x00, 0x00, 0x7F, 0x7F, 0x61, 0x61, + 0x61, 0x61, 0x31, 0x1E, 0x0E, 0x00, + 0x00, 0x60, 0x60, 0x60, 0x60, 0x7F, + 0x7F, 0x60, 0x60, 0x60, 0x60, 0x00, + 0x00, 0x30, 0x71, 0x61, 0x61, 0x61, + 0x61, 0x61, 0x73, 0x7F, 0x3E, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, + 0x7F, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0xBC, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x87, 0x38, 0x40, 0x80, 0x08, 0x08, + 0x08, 0x04, 0x04, 0x02, 0x02, 0x01, + 0x00, 0x00, 0x80, 0x40, 0x38, 0x87, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0xBC, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, + 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, + 0x00, 0x00, 0x7F, 0x7F, 0x7F, 0x7F, + 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, + 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, + 0xFC, 0xFE, 0xFC, 0xF8, 0xF9, 0xF3, + 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, + 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x70, 0xD0, 0x70, 0x00, 0x07, 0x05, + 0x07, 0x02, 0x02, 0x82, 0xC2, 0x42, + 0x7E, 0xC0, 0xC0, 0xC0, 0x40, 0x7E, + 0x42, 0xC2, 0x82, 0x02, 0x02, 0x07, + 0x05, 0x07, 0x00, 0x70, 0xD0, 0x70, + 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, + 0x10, 0xC8, 0xC8, 0x84, 0x04, 0x02, + 0x02, 0x02, 0x02, 0xC2, 0xC2, 0xC2, + 0xC2, 0xC4, 0xC4, 0xC8, 0x88, 0x90, + 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0xFD, 0x05, 0x04, 0x04, 0x04, + 0x1F, 0x30, 0x40, 0x87, 0x9F, 0x1F, + 0x01, 0x81, 0xFF, 0xFF, 0x00, 0x00, + 0x1E, 0x9E, 0x86, 0x40, 0x30, 0x1F, + 0x04, 0x04, 0x04, 0x05, 0xFD, 0x01, + 0x00, 0x0F, 0x70, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x80, 0xE0, 0xF8, 0x3E, + 0x0F, 0x03, 0x00, 0xFF, 0xFF, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x80, 0x70, 0x0F, 0x00, + 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, + 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, + 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0xFE, + 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, + 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0x00, + 0xC0, 0xF0, 0xFC, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x07, 0x03, 0x03, + 0x03, 0x03, 0x07, 0xFF, 0xFF, 0xFF, + 0xDF, 0x9F, 0x3F, 0x3C, 0x70, 0x40, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xC0, 0x5F, 0xD0, 0x90, 0x90, 0x90, + 0xFC, 0x06, 0x01, 0xF8, 0xFC, 0xFC, + 0xC0, 0xC0, 0xFF, 0xFF, 0x00, 0x00, + 0x3C, 0x3C, 0x30, 0x01, 0x06, 0xFC, + 0x90, 0x90, 0x90, 0xD0, 0x5F, 0xC0, + 0x00, 0xF0, 0x0E, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x03, 0x07, 0x1E, + 0x3C, 0xF0, 0xE0, 0xFF, 0xFF, 0x80, + 0x80, 0x80, 0x80, 0xC1, 0xC1, 0xFF, + 0x3E, 0x00, 0x01, 0x0E, 0xF0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x07, 0x05, 0x07, 0x00, 0x70, 0x50, + 0x70, 0x20, 0x20, 0x20, 0x21, 0x3F, + 0x01, 0x61, 0x9F, 0x9F, 0x61, 0x01, + 0x3F, 0x21, 0x20, 0x20, 0x20, 0x70, + 0x50, 0x70, 0x00, 0x07, 0x05, 0x07, + 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, + 0x08, 0x10, 0x13, 0x23, 0x20, 0x40, + 0x40, 0x40, 0x40, 0x43, 0x43, 0x40, + 0x40, 0x20, 0x20, 0x10, 0x10, 0x08, + 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, + 0x07, 0x07, 0x07, 0x07, 0x0F, 0x0F, + 0x0F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, + 0x00, 0x00, 0x3F, 0x3F, 0x3F, 0x3F, + 0x3F, 0x7F, 0x7F, 0x7F, 0xFF, 0xFF, + 0x00, 0x80, 0xC0, 0x70, 0x7C, 0x3F, + 0x3F, 0x1F, 0x0F, 0x0F, 0x07, 0x07, + 0x07, 0x03, 0x03, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x03, 0x03, 0x07, + 0x07, 0x07, 0x0F, 0x0F, 0x1E, 0x3E, + 0x3C, 0x7C, 0x70, 0xC0, 0x80, 0x00, +}; diff --git a/keyboards/0xcb/1337/keymaps/default/keymap.c b/keyboards/0xcb/1337/keymaps/default/keymap.c index c711bdae90..5089117d8d 100644 --- a/keyboards/0xcb/1337/keymaps/default/keymap.c +++ b/keyboards/0xcb/1337/keymaps/default/keymap.c @@ -15,6 +15,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ #include QMK_KEYBOARD_H +#include enum layer_names { _HOME, @@ -51,11 +52,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #ifdef ENCODER_ENABLE void encoder_update_user(uint8_t index, bool clockwise) { if (IS_LAYER_ON(_RGB)) { - if (clockwise) { - rgblight_increase_val(); - } else { - rgblight_decrease_val(); - } + #ifdef RGBLIGHT_ENABLE + if (clockwise) { + rgblight_increase_val(); + } else { + rgblight_decrease_val(); + } + #endif } else if (IS_LAYER_ON(_BLED)) { if (clockwise) { backlight_increase(); @@ -82,74 +85,27 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) { } static void render_logo(void) { - static const char PROGMEM logo[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x80, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x02, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x05, - 0xf8, 0x05, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0xe0, 0xe0, 0x70, 0x78, - 0x38, 0x3f, 0x1c, 0x0e, 0x0e, 0x0e, 0xfe, 0x0e, 0x0e, 0x1e, 0x1c, 0x3f, 0x38, 0x78, 0x70, 0xe0, - 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x05, 0xf8, 0x05, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xa0, - 0x13, 0xa2, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xfc, - 0xfe, 0xfe, 0xc0, 0xc0, 0xc0, 0xc0, 0xff, 0x00, 0x00, 0x00, 0x3e, 0x3e, 0x3c, 0x3c, 0x00, 0x00, - 0x01, 0xff, 0xff, 0xff, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0xa2, 0x13, 0xa0, 0x40, 0x00, - 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x80, 0xc0, 0x40, 0x40, 0xc0, 0x80, 0x00, 0x00, 0xc0, 0x40, 0x40, 0xc0, 0x80, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0xc0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x40, 0x40, 0xc0, 0x80, 0x00, 0x00, 0x80, 0xc0, 0x40, - 0x40, 0xc0, 0x80, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xf9, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x7f, 0xff, 0xff, 0xc0, 0x80, 0x80, 0x0f, - 0x1f, 0x1f, 0x01, 0x01, 0x01, 0x01, 0xff, 0x00, 0x00, 0x00, 0x1e, 0x1e, 0x0e, 0x0e, 0x80, 0xc0, - 0xc0, 0xff, 0xff, 0x7f, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf9, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x1f, 0x31, 0x40, 0x4e, 0x40, 0x31, 0x1f, 0x00, 0x00, 0x61, 0x16, 0x08, 0x16, 0x61, - 0x00, 0x00, 0x1f, 0x31, 0x60, 0x40, 0x40, 0x60, 0x20, 0x00, 0x00, 0x7f, 0x44, 0x44, 0x64, 0x3b, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x7f, - 0x40, 0x40, 0x00, 0x00, 0x00, 0x20, 0x64, 0x44, 0x44, 0x6e, 0x3b, 0x00, 0x00, 0x20, 0x64, 0x44, - 0x44, 0x6e, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x03, 0x01, 0x00, 0x00, 0x00, 0x08, 0x14, - 0x23, 0x14, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x07, 0x07, - 0x0f, 0xfe, 0x1e, 0x1c, 0x1c, 0x1c, 0xff, 0x1c, 0x1c, 0x1c, 0x1e, 0xfe, 0x0f, 0x07, 0x03, 0x03, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0a, 0x11, 0x0a, 0x04, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x28, 0x44, 0x28, 0x10, 0x10, 0x10, 0x10, 0x10, - 0x10, 0x1f, 0x00, 0x00, 0x10, 0x28, 0x47, 0x28, 0x10, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, - 0x10, 0x10, 0x28, 0x44, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }; + static const char PROGMEM raw_logo[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 1, 2, 4, 2, 1, 1, 1, 1, 1, 1,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 1, 1, 1, 1, 1, 2, 4, 2, 1, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 5,248, 5, 2, 0, 0, 0, 0, 0, 0,128,192,192,224,224,112,120, 56, 63, 28, 14, 14, 14,254, 14, 14, 30, 28, 63, 56,120,112,224,224,192,128, 0, 0, 0, 0, 0, 0, 0, 2, 5,248, 5, 2, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,160, 19,162, 66, 66, 66, 66, 66, 66, 66,255,255,255, 0, 0, 0,252,254,254,192,192,192,192,255, 0, 0, 0, 62, 62, 60, 60, 0, 0, 1,255,255,255, 66, 66, 66, 66, 66, 66, 66,162, 19,160, 64, 0, + 0, 0, 0,128, 64, 64, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,192, 64, 64,192,128, 0, 0,192, 64, 64,192,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 64,192, 0, 0, 0, 0, 0,128,192, 64, 64,192,128, 0, 0,128,192, 64, 64,192,128, 0, 0, 64, 64, 64, 64, 64,192, 0, 0, 0, 0, 0,249, 8, 8, 8, 8, 8, 8, 8, 8,127,255,255,192,128,128, 15, 31, 31, 1, 1, 1, 1,255, 0, 0, 0, 30, 30, 14, 14,128,192,192,255,255,127, 8, 8, 8, 8, 8, 8, 8, 8,249, 0, 0, 0, + 0, 0, 31, 49, 64, 78, 64, 49, 31, 0, 0, 97, 22, 8, 22, 97, 0, 0, 31, 49, 96, 64, 64, 96, 32, 0, 0,127, 68, 68,100, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64,127, 64, 64, 0, 0, 0, 32,100, 68, 68,110, 59, 0, 0, 32,100, 68, 68,110, 59, 0, 0, 0, 0, 0,126, 3, 1, 0, 0, 0, 8, 20, 35, 20, 8, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 7, 7, 15,254, 30, 28, 28, 28,255, 28, 28, 28, 30,254, 15, 7, 3, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 10, 17, 10, 4, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 40, 68, 40, 16, 16, 16, 16, 16, 16, 31, 0, 0, 16, 40, 71, 40, 16, 0, 0, 31, 16, 16, 16, 16, 16, 16, 40, 68, 40, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }; + oled_write_raw_P(raw_logo, sizeof(raw_logo)); +} +static void render_logo_font(void) { + static const char PROGMEM qmk_logo[] = { + 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xCB, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0xCB, 0xCB, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, + 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xCB, 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xCB, 0xCB, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, + 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xCB, 0x88, 0x89, 0x8A, 0x8B, 0x8A, 0x8B, 0x8C, 0x8D, 0xCB, 0xCB, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, + 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xCB, 0xA8, 0xA9, 0xAA, 0xAB, 0xAA, 0xAB, 0xAC, 0xAD, 0xCB, 0xCB, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0x00 + }; - oled_write_raw_P(logo, sizeof(logo)); + oled_write_P(qmk_logo, false); } /* Shows the name of the current layer and locks for the host (CAPS etc.) */ static void render_info(void) { @@ -174,16 +130,39 @@ static void render_info(void) { led_t led_state = host_keyboard_led_state(); oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); - oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); + oled_write_ln_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); +} +static void render_rgbled_status(bool full) { +#ifdef RGBLIGHT_ENABLE + char buf[30]; + if (RGBLIGHT_MODES > 1 && rgblight_is_enabled() && get_highest_layer(layer_state) == _RGB) { + if (full) { + snprintf(buf, sizeof(buf), "RGB mode %2d: %d,%d,%d \n", + rgblight_get_mode(), + rgblight_get_hue()/RGBLIGHT_HUE_STEP, + rgblight_get_sat()/RGBLIGHT_SAT_STEP, + rgblight_get_val()/RGBLIGHT_VAL_STEP); + } else { + snprintf(buf, sizeof(buf), "[%2d] ", rgblight_get_mode()); + } + oled_write(buf, false); + } else { + oled_write_ln_P(PSTR("\n"), false); + } +#endif } - void oled_task_user(void) { static bool finished_timer = false; - if ((timer_elapsed(startup_timer) < 3000) && !finished_timer) { + if (!finished_timer && (timer_elapsed(startup_timer) < 1000)) { render_logo(); } else { - finished_timer = true; + if (!finished_timer) { + oled_clear(); + finished_timer = true; + } render_info(); + render_rgbled_status(true); + render_logo_font(); } } #endif diff --git a/keyboards/0xcb/1337/keymaps/jakob/keymap.c b/keyboards/0xcb/1337/keymaps/jakob/keymap.c new file mode 100644 index 0000000000..dc5ba60251 --- /dev/null +++ b/keyboards/0xcb/1337/keymaps/jakob/keymap.c @@ -0,0 +1,168 @@ +/* +Copyright 2021 0xCB - Conor Burns + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H +#include + +enum layer_names { + _HOME, + _MISC, + _RGB, + _BLED +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[_HOME] = LAYOUT( + KC_MPRV, KC_MNXT, KC_MPLY, + KC_PGUP, KC_PGDN, TO(3), + KC_HOME, KC_END, TO(1) +), +[_MISC] = LAYOUT( + _______, _______, _______, + _______, _______, TO(0), + _______, _______, TO(2) +), +[_RGB] = LAYOUT( + RGB_HUI, RGB_HUD, RGB_MOD, + RGB_SAI, RGB_SAD, TO(1), + RGB_SPI, RGB_SPD, TO(3) +), +[_BLED] = LAYOUT( + BL_STEP, BL_BRTG, BL_TOGG, + BL_ON, BL_OFF, TO(2), + BL_INC, BL_DEC, TO(0) +) +}; + + +/* rotary encoder (SW3) - add more else if blocks for more granular layer control */ +#ifdef ENCODER_ENABLE +void encoder_update_user(uint8_t index, bool clockwise) { + if (IS_LAYER_ON(_RGB)) { + #ifdef RGBLIGHT_ENABLE + if (clockwise) { + rgblight_increase_val(); + } else { + rgblight_decrease_val(); + } + #endif + } else if (IS_LAYER_ON(_BLED)) { + if (clockwise) { + backlight_increase(); + } else { + backlight_decrease(); + } + } else { + if (clockwise) { + tap_code16(C(A(KC_UP))); + } else { + tap_code16(C(A(KC_DOWN))); + } + } +} +#endif + +/* oled stuff :) */ +#ifdef OLED_DRIVER_ENABLE +uint16_t startup_timer; + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + startup_timer = timer_read(); + return rotation; +} + +static void render_logo(void) { + static const char PROGMEM raw_logo[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 1, 2, 4, 2, 1, 1, 1, 1, 1, 1,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 1, 1, 1, 1, 1, 2, 4, 2, 1, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 5,248, 5, 2, 0, 0, 0, 0, 0, 0,128,192,192,224,224,112,120, 56, 63, 28, 14, 14, 14,254, 14, 14, 30, 28, 63, 56,120,112,224,224,192,128, 0, 0, 0, 0, 0, 0, 0, 2, 5,248, 5, 2, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,160, 19,162, 66, 66, 66, 66, 66, 66, 66,255,255,255, 0, 0, 0,252,254,254,192,192,192,192,255, 0, 0, 0, 62, 62, 60, 60, 0, 0, 1,255,255,255, 66, 66, 66, 66, 66, 66, 66,162, 19,160, 64, 0, + 0, 0, 0,128, 64, 64, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,192, 64, 64,192,128, 0, 0,192, 64, 64,192,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 64,192, 0, 0, 0, 0, 0,128,192, 64, 64,192,128, 0, 0,128,192, 64, 64,192,128, 0, 0, 64, 64, 64, 64, 64,192, 0, 0, 0, 0, 0,249, 8, 8, 8, 8, 8, 8, 8, 8,127,255,255,192,128,128, 15, 31, 31, 1, 1, 1, 1,255, 0, 0, 0, 30, 30, 14, 14,128,192,192,255,255,127, 8, 8, 8, 8, 8, 8, 8, 8,249, 0, 0, 0, + 0, 0, 31, 49, 64, 78, 64, 49, 31, 0, 0, 97, 22, 8, 22, 97, 0, 0, 31, 49, 96, 64, 64, 96, 32, 0, 0,127, 68, 68,100, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64,127, 64, 64, 0, 0, 0, 32,100, 68, 68,110, 59, 0, 0, 32,100, 68, 68,110, 59, 0, 0, 0, 0, 0,126, 3, 1, 0, 0, 0, 8, 20, 35, 20, 8, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 7, 7, 15,254, 30, 28, 28, 28,255, 28, 28, 28, 30,254, 15, 7, 3, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 10, 17, 10, 4, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 40, 68, 40, 16, 16, 16, 16, 16, 16, 31, 0, 0, 16, 40, 71, 40, 16, 0, 0, 31, 16, 16, 16, 16, 16, 16, 40, 68, 40, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }; + oled_write_raw_P(raw_logo, sizeof(raw_logo)); +} +static void render_logo_font(void) { + static const char PROGMEM qmk_logo[] = { + 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xCB, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0xCB, 0xCB, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, + 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xCB, 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xCB, 0xCB, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, + 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xCB, 0x88, 0x89, 0x8A, 0x8B, 0x8A, 0x8B, 0x8C, 0x8D, 0xCB, 0xCB, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, + 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xCB, 0xA8, 0xA9, 0xAA, 0xAB, 0xAA, 0xAB, 0xAC, 0xAD, 0xCB, 0xCB, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0x00 + }; + + oled_write_P(qmk_logo, false); +} +/* Shows the name of the current layer and locks for the host (CAPS etc.) */ +static void render_info(void) { + oled_write_P(PSTR("Layer: "), false); + + switch (get_highest_layer(layer_state)) { + case _HOME: + oled_write_ln_P(PSTR("HOME"), false); + break; + case _MISC: + oled_write_ln_P(PSTR("MISC"), false); + break; + case _RGB: + oled_write_ln_P(PSTR("RGB"), false); + break; + case _BLED: + oled_write_ln_P(PSTR("Backlight"), false); + break; + default: + oled_write_ln_P(PSTR("Undefined"), false); + } + led_t led_state = host_keyboard_led_state(); + oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); + oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); + oled_write_ln_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); +} +static void render_rgbled_status(bool full) { +#ifdef RGBLIGHT_ENABLE + char buf[30]; + if (RGBLIGHT_MODES > 1 && rgblight_is_enabled() && get_highest_layer(layer_state) == _RGB) { + if (full) { + snprintf(buf, sizeof(buf), "RGB mode %2d: %d,%d,%d \n", + rgblight_get_mode(), + rgblight_get_hue()/RGBLIGHT_HUE_STEP, + rgblight_get_sat()/RGBLIGHT_SAT_STEP, + rgblight_get_val()/RGBLIGHT_VAL_STEP); + } else { + snprintf(buf, sizeof(buf), "[%2d] ", rgblight_get_mode()); + } + oled_write(buf, false); + } else { + oled_write_ln_P(PSTR("\n"), false); + } +#endif +} +void oled_task_user(void) { + static bool finished_timer = false; + if (!finished_timer && (timer_elapsed(startup_timer) < 1000)) { + render_logo(); + } else { + if (!finished_timer) { + oled_clear(); + finished_timer = true; + } + render_info(); + render_rgbled_status(true); + render_logo_font(); + } +} +#endif diff --git a/keyboards/0xcb/1337/keymaps/jakob/rules.mk b/keyboards/0xcb/1337/keymaps/jakob/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/0xcb/1337/keymaps/jakob/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/0xcb/1337/keymaps/via/keymap.c b/keyboards/0xcb/1337/keymaps/via/keymap.c index c711bdae90..5089117d8d 100644 --- a/keyboards/0xcb/1337/keymaps/via/keymap.c +++ b/keyboards/0xcb/1337/keymaps/via/keymap.c @@ -15,6 +15,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ #include QMK_KEYBOARD_H +#include enum layer_names { _HOME, @@ -51,11 +52,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #ifdef ENCODER_ENABLE void encoder_update_user(uint8_t index, bool clockwise) { if (IS_LAYER_ON(_RGB)) { - if (clockwise) { - rgblight_increase_val(); - } else { - rgblight_decrease_val(); - } + #ifdef RGBLIGHT_ENABLE + if (clockwise) { + rgblight_increase_val(); + } else { + rgblight_decrease_val(); + } + #endif } else if (IS_LAYER_ON(_BLED)) { if (clockwise) { backlight_increase(); @@ -82,74 +85,27 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) { } static void render_logo(void) { - static const char PROGMEM logo[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x80, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x02, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x05, - 0xf8, 0x05, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0xe0, 0xe0, 0x70, 0x78, - 0x38, 0x3f, 0x1c, 0x0e, 0x0e, 0x0e, 0xfe, 0x0e, 0x0e, 0x1e, 0x1c, 0x3f, 0x38, 0x78, 0x70, 0xe0, - 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x05, 0xf8, 0x05, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xa0, - 0x13, 0xa2, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xfc, - 0xfe, 0xfe, 0xc0, 0xc0, 0xc0, 0xc0, 0xff, 0x00, 0x00, 0x00, 0x3e, 0x3e, 0x3c, 0x3c, 0x00, 0x00, - 0x01, 0xff, 0xff, 0xff, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0xa2, 0x13, 0xa0, 0x40, 0x00, - 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x80, 0xc0, 0x40, 0x40, 0xc0, 0x80, 0x00, 0x00, 0xc0, 0x40, 0x40, 0xc0, 0x80, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0xc0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x40, 0x40, 0xc0, 0x80, 0x00, 0x00, 0x80, 0xc0, 0x40, - 0x40, 0xc0, 0x80, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xf9, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x7f, 0xff, 0xff, 0xc0, 0x80, 0x80, 0x0f, - 0x1f, 0x1f, 0x01, 0x01, 0x01, 0x01, 0xff, 0x00, 0x00, 0x00, 0x1e, 0x1e, 0x0e, 0x0e, 0x80, 0xc0, - 0xc0, 0xff, 0xff, 0x7f, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf9, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x1f, 0x31, 0x40, 0x4e, 0x40, 0x31, 0x1f, 0x00, 0x00, 0x61, 0x16, 0x08, 0x16, 0x61, - 0x00, 0x00, 0x1f, 0x31, 0x60, 0x40, 0x40, 0x60, 0x20, 0x00, 0x00, 0x7f, 0x44, 0x44, 0x64, 0x3b, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x7f, - 0x40, 0x40, 0x00, 0x00, 0x00, 0x20, 0x64, 0x44, 0x44, 0x6e, 0x3b, 0x00, 0x00, 0x20, 0x64, 0x44, - 0x44, 0x6e, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x03, 0x01, 0x00, 0x00, 0x00, 0x08, 0x14, - 0x23, 0x14, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x07, 0x07, - 0x0f, 0xfe, 0x1e, 0x1c, 0x1c, 0x1c, 0xff, 0x1c, 0x1c, 0x1c, 0x1e, 0xfe, 0x0f, 0x07, 0x03, 0x03, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0a, 0x11, 0x0a, 0x04, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x28, 0x44, 0x28, 0x10, 0x10, 0x10, 0x10, 0x10, - 0x10, 0x1f, 0x00, 0x00, 0x10, 0x28, 0x47, 0x28, 0x10, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, - 0x10, 0x10, 0x28, 0x44, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }; + static const char PROGMEM raw_logo[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 1, 2, 4, 2, 1, 1, 1, 1, 1, 1,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 1, 1, 1, 1, 1, 2, 4, 2, 1, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 5,248, 5, 2, 0, 0, 0, 0, 0, 0,128,192,192,224,224,112,120, 56, 63, 28, 14, 14, 14,254, 14, 14, 30, 28, 63, 56,120,112,224,224,192,128, 0, 0, 0, 0, 0, 0, 0, 2, 5,248, 5, 2, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,160, 19,162, 66, 66, 66, 66, 66, 66, 66,255,255,255, 0, 0, 0,252,254,254,192,192,192,192,255, 0, 0, 0, 62, 62, 60, 60, 0, 0, 1,255,255,255, 66, 66, 66, 66, 66, 66, 66,162, 19,160, 64, 0, + 0, 0, 0,128, 64, 64, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,192, 64, 64,192,128, 0, 0,192, 64, 64,192,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 64,192, 0, 0, 0, 0, 0,128,192, 64, 64,192,128, 0, 0,128,192, 64, 64,192,128, 0, 0, 64, 64, 64, 64, 64,192, 0, 0, 0, 0, 0,249, 8, 8, 8, 8, 8, 8, 8, 8,127,255,255,192,128,128, 15, 31, 31, 1, 1, 1, 1,255, 0, 0, 0, 30, 30, 14, 14,128,192,192,255,255,127, 8, 8, 8, 8, 8, 8, 8, 8,249, 0, 0, 0, + 0, 0, 31, 49, 64, 78, 64, 49, 31, 0, 0, 97, 22, 8, 22, 97, 0, 0, 31, 49, 96, 64, 64, 96, 32, 0, 0,127, 68, 68,100, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64,127, 64, 64, 0, 0, 0, 32,100, 68, 68,110, 59, 0, 0, 32,100, 68, 68,110, 59, 0, 0, 0, 0, 0,126, 3, 1, 0, 0, 0, 8, 20, 35, 20, 8, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 7, 7, 15,254, 30, 28, 28, 28,255, 28, 28, 28, 30,254, 15, 7, 3, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 10, 17, 10, 4, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 40, 68, 40, 16, 16, 16, 16, 16, 16, 31, 0, 0, 16, 40, 71, 40, 16, 0, 0, 31, 16, 16, 16, 16, 16, 16, 40, 68, 40, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }; + oled_write_raw_P(raw_logo, sizeof(raw_logo)); +} +static void render_logo_font(void) { + static const char PROGMEM qmk_logo[] = { + 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xCB, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0xCB, 0xCB, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, + 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xCB, 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xCB, 0xCB, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, + 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xCB, 0x88, 0x89, 0x8A, 0x8B, 0x8A, 0x8B, 0x8C, 0x8D, 0xCB, 0xCB, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, + 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xCB, 0xA8, 0xA9, 0xAA, 0xAB, 0xAA, 0xAB, 0xAC, 0xAD, 0xCB, 0xCB, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0x00 + }; - oled_write_raw_P(logo, sizeof(logo)); + oled_write_P(qmk_logo, false); } /* Shows the name of the current layer and locks for the host (CAPS etc.) */ static void render_info(void) { @@ -174,16 +130,39 @@ static void render_info(void) { led_t led_state = host_keyboard_led_state(); oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); - oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); + oled_write_ln_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); +} +static void render_rgbled_status(bool full) { +#ifdef RGBLIGHT_ENABLE + char buf[30]; + if (RGBLIGHT_MODES > 1 && rgblight_is_enabled() && get_highest_layer(layer_state) == _RGB) { + if (full) { + snprintf(buf, sizeof(buf), "RGB mode %2d: %d,%d,%d \n", + rgblight_get_mode(), + rgblight_get_hue()/RGBLIGHT_HUE_STEP, + rgblight_get_sat()/RGBLIGHT_SAT_STEP, + rgblight_get_val()/RGBLIGHT_VAL_STEP); + } else { + snprintf(buf, sizeof(buf), "[%2d] ", rgblight_get_mode()); + } + oled_write(buf, false); + } else { + oled_write_ln_P(PSTR("\n"), false); + } +#endif } - void oled_task_user(void) { static bool finished_timer = false; - if ((timer_elapsed(startup_timer) < 3000) && !finished_timer) { + if (!finished_timer && (timer_elapsed(startup_timer) < 1000)) { render_logo(); } else { - finished_timer = true; + if (!finished_timer) { + oled_clear(); + finished_timer = true; + } render_info(); + render_rgbled_status(true); + render_logo_font(); } } #endif From 94d9d2bb31993f484096e7e4cfc9149611840233 Mon Sep 17 00:00:00 2001 From: Eric Wood Date: Mon, 19 Apr 2021 00:04:16 -0600 Subject: [PATCH 232/613] [Keyboard] Add handwired/frankie_macropad (#12349) Co-authored-by: Ryan --- keyboards/handwired/frankie_macropad/config.h | 155 ++++++++++++++++++ .../frankie_macropad/frankie_macropad.c | 17 ++ .../frankie_macropad/frankie_macropad.h | 39 +++++ .../handwired/frankie_macropad/info.json | 25 +++ .../frankie_macropad/keymaps/default/keymap.c | 40 +++++ .../keymaps/default/readme.md | 1 + .../handwired/frankie_macropad/readme.md | 21 +++ keyboards/handwired/frankie_macropad/rules.mk | 24 +++ 8 files changed, 322 insertions(+) create mode 100644 keyboards/handwired/frankie_macropad/config.h create mode 100644 keyboards/handwired/frankie_macropad/frankie_macropad.c create mode 100644 keyboards/handwired/frankie_macropad/frankie_macropad.h create mode 100644 keyboards/handwired/frankie_macropad/info.json create mode 100644 keyboards/handwired/frankie_macropad/keymaps/default/keymap.c create mode 100644 keyboards/handwired/frankie_macropad/keymaps/default/readme.md create mode 100644 keyboards/handwired/frankie_macropad/readme.md create mode 100644 keyboards/handwired/frankie_macropad/rules.mk diff --git a/keyboards/handwired/frankie_macropad/config.h b/keyboards/handwired/frankie_macropad/config.h new file mode 100644 index 0000000000..5047972d18 --- /dev/null +++ b/keyboards/handwired/frankie_macropad/config.h @@ -0,0 +1,155 @@ +/* +Copyright 2021 Eric Wood + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xF00D +#define PRODUCT_ID 0x0000 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Eric Wood +#define PRODUCT frankie_macropad + +/* key matrix size */ +#define MATRIX_ROWS 3 +#define MATRIX_COLS 4 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ +#define MATRIX_ROW_PINS { B0, B1, B2 } +#define MATRIX_COL_PINS { B3, B4, B5, B6 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 + +//#define LED_NUM_LOCK_PIN B0 +//#define LED_CAPS_LOCK_PIN B1 +//#define LED_SCROLL_LOCK_PIN B2 +//#define LED_COMPOSE_PIN B3 +//#define LED_KANA_PIN B4 + +//#define BACKLIGHT_PIN B7 +//#define BACKLIGHT_LEVELS 3 +//#define BACKLIGHT_BREATHING + +//#define RGB_DI_PIN E2 +//#ifdef RGB_DI_PIN +//# define RGBLED_NUM 16 +//# define RGBLIGHT_HUE_STEP 8 +//# define RGBLIGHT_SAT_STEP 8 +//# define RGBLIGHT_VAL_STEP 8 +//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +//# define RGBLIGHT_ANIMATIONS +/*== or choose animations ==*/ +//# define RGBLIGHT_EFFECT_BREATHING +//# define RGBLIGHT_EFFECT_RAINBOW_MOOD +//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +//# define RGBLIGHT_EFFECT_SNAKE +//# define RGBLIGHT_EFFECT_KNIGHT +//# define RGBLIGHT_EFFECT_CHRISTMAS +//# define RGBLIGHT_EFFECT_STATIC_GRADIENT +//# define RGBLIGHT_EFFECT_RGB_TEST +//# define RGBLIGHT_EFFECT_ALTERNATING +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +//#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +// #define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +// #define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +#define NO_ACTION_ONESHOT + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +#define BOOTMAGIC_LITE_ROW 2 +#define BOOTMAGIC_LITE_COLUMN 0 + +#define ENCODERS_PAD_A { D0, D2 } +#define ENCODERS_PAD_B { D1, D3 } diff --git a/keyboards/handwired/frankie_macropad/frankie_macropad.c b/keyboards/handwired/frankie_macropad/frankie_macropad.c new file mode 100644 index 0000000000..5f89811e7a --- /dev/null +++ b/keyboards/handwired/frankie_macropad/frankie_macropad.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Eric Wood + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "frankie_macropad.h" diff --git a/keyboards/handwired/frankie_macropad/frankie_macropad.h b/keyboards/handwired/frankie_macropad/frankie_macropad.h new file mode 100644 index 0000000000..cfd3124ba1 --- /dev/null +++ b/keyboards/handwired/frankie_macropad/frankie_macropad.h @@ -0,0 +1,39 @@ +/* Copyright 2021 Eric Wood + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define ___ KC_NO + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT( \ + k02, k03, \ + k10, k11, k12, k13, \ + k20, k21, k22, k23 \ +) { \ + { ___, ___, k02, k03 }, \ + { k10, k11, k12, k13 }, \ + { k20, k21, k22, k23 } \ +} diff --git a/keyboards/handwired/frankie_macropad/info.json b/keyboards/handwired/frankie_macropad/info.json new file mode 100644 index 0000000000..ac8b65e28e --- /dev/null +++ b/keyboards/handwired/frankie_macropad/info.json @@ -0,0 +1,25 @@ +{ + "keyboard_name": "frankie_macropad", + "url": "https://github.com/eric-wood/macro-pad", + "maintainer": "eric-wood", + "width": 3, + "height": 2, + "layouts": { + "LAYOUT": { + "layout": [ + {"label": "k02", "x": 2, "y": 0}, + {"label": "k03", "x": 3, "y": 0}, + + {"label": "k10", "x": 0, "y": 1}, + {"label": "k11", "x": 1, "y": 1}, + {"label": "k12", "x": 2, "y": 1}, + {"label": "k13", "x": 3, "y": 1}, + + {"label": "k20", "x": 0, "y": 2}, + {"label": "k21", "x": 1, "y": 2}, + {"label": "k22", "x": 2, "y": 2}, + {"label": "k23", "x": 3, "y": 2} + ] + } + } +} diff --git a/keyboards/handwired/frankie_macropad/keymaps/default/keymap.c b/keyboards/handwired/frankie_macropad/keymaps/default/keymap.c new file mode 100644 index 0000000000..02c1002aff --- /dev/null +++ b/keyboards/handwired/frankie_macropad/keymaps/default/keymap.c @@ -0,0 +1,40 @@ +/* Copyright 2021 Eric Wood + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + LAYOUT( + KC_HOME, KC_MUTE, + KC_BRID, KC_BRIU, KC_NO, KC_NO, + KC_MPRV, KC_MPLY, KC_MNXT, KC_NO + ), +}; + +void encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { /* First encoder */ + if (clockwise) { + tap_code(KC_PGUP); + } else { + tap_code(KC_PGDN); + } + } else if (index == 1) { /* Second encoder */ + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } +} diff --git a/keyboards/handwired/frankie_macropad/keymaps/default/readme.md b/keyboards/handwired/frankie_macropad/keymaps/default/readme.md new file mode 100644 index 0000000000..f29affb872 --- /dev/null +++ b/keyboards/handwired/frankie_macropad/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for handwired/frankie_macropad diff --git a/keyboards/handwired/frankie_macropad/readme.md b/keyboards/handwired/frankie_macropad/readme.md new file mode 100644 index 0000000000..edd6965b51 --- /dev/null +++ b/keyboards/handwired/frankie_macropad/readme.md @@ -0,0 +1,21 @@ +# frankie_macropad + +![frankie_macropad](https://i.imgur.com/X46CSH7h.jpg) + +A simple 8-key macropad with two rotary encoders. + +* Keyboard Maintainer: [Eric Wood](https://github.com/eric-wood) +* Hardware Supported: atmega16u2 +* Hardware Availability: https://github.com/eric-wood/macro-pad + +Make example for this keyboard (after setting up your build environment): + + make handwired/frankie_macropad:default + +To switch to bootloader mode, unplug the keyboard and plug it back in while holding down the bottom left key. + +Flashing example for this keyboard: + + make handwired/frankie_macropad:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/handwired/frankie_macropad/rules.mk b/keyboards/handwired/frankie_macropad/rules.mk new file mode 100644 index 0000000000..b5b6e39779 --- /dev/null +++ b/keyboards/handwired/frankie_macropad/rules.mk @@ -0,0 +1,24 @@ +# MCU name +MCU = atmega16u2 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +ENCODER_ENABLE = yes +LTO_ENABLE = yes From c7214e1d139bd492b86d87d49620a99415ee6218 Mon Sep 17 00:00:00 2001 From: Wilba Date: Mon, 19 Apr 2021 16:12:05 +1000 Subject: [PATCH 233/613] [Keyboard] Add wilba.tech WT65-F (#12393) --- keyboards/wilba_tech/wt65_f/config.h | 55 +++++++++++++++++++ keyboards/wilba_tech/wt65_f/info.json | 12 ++++ .../wt65_f/keymaps/default/keymap.c | 52 ++++++++++++++++++ .../wilba_tech/wt65_f/keymaps/via/keymap.c | 1 + .../wilba_tech/wt65_f/keymaps/via/rules.mk | 1 + keyboards/wilba_tech/wt65_f/readme.md | 17 ++++++ keyboards/wilba_tech/wt65_f/rules.mk | 22 ++++++++ keyboards/wilba_tech/wt65_f/wt65_f.c | 17 ++++++ keyboards/wilba_tech/wt65_f/wt65_f.h | 36 ++++++++++++ 9 files changed, 213 insertions(+) create mode 100644 keyboards/wilba_tech/wt65_f/config.h create mode 100644 keyboards/wilba_tech/wt65_f/info.json create mode 100644 keyboards/wilba_tech/wt65_f/keymaps/default/keymap.c create mode 100644 keyboards/wilba_tech/wt65_f/keymaps/via/keymap.c create mode 100644 keyboards/wilba_tech/wt65_f/keymaps/via/rules.mk create mode 100644 keyboards/wilba_tech/wt65_f/readme.md create mode 100644 keyboards/wilba_tech/wt65_f/rules.mk create mode 100644 keyboards/wilba_tech/wt65_f/wt65_f.c create mode 100644 keyboards/wilba_tech/wt65_f/wt65_f.h diff --git a/keyboards/wilba_tech/wt65_f/config.h b/keyboards/wilba_tech/wt65_f/config.h new file mode 100644 index 0000000000..04c19489f8 --- /dev/null +++ b/keyboards/wilba_tech/wt65_f/config.h @@ -0,0 +1,55 @@ +/* Copyright 2021 Jason Williams (Wilba) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x6582 // wilba.tech +#define PRODUCT_ID 0x002D // PCB #45 +#define DEVICE_VER 0x0001 +#define MANUFACTURER wilba.tech +#define PRODUCT wilba.tech WT65-F + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +#define MATRIX_ROW_PINS { F0, F1, F4, F6, F7 } +#define MATRIX_COL_PINS { F5, D5, B1, B2, B3, D3, D2, C7, C6, B6, B5, B4, D7, D6, D4 } // B7, B0 +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE diff --git a/keyboards/wilba_tech/wt65_f/info.json b/keyboards/wilba_tech/wt65_f/info.json new file mode 100644 index 0000000000..c319b0f86b --- /dev/null +++ b/keyboards/wilba_tech/wt65_f/info.json @@ -0,0 +1,12 @@ +{ + "keyboard_name": "wilba.tech WT65-F", + "url": "https://wilba.tech", + "maintainer": "Wilba", + "width": 16, + "height": 5, + "layouts": { + "LAYOUT_all": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":15, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":15, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":15, "y":2}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":15, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}] + } + } +} diff --git a/keyboards/wilba_tech/wt65_f/keymaps/default/keymap.c b/keyboards/wilba_tech/wt65_f/keymaps/default/keymap.c new file mode 100644 index 0000000000..bc5e3084e1 --- /dev/null +++ b/keyboards/wilba_tech/wt65_f/keymaps/default/keymap.c @@ -0,0 +1,52 @@ +/* Copyright 2021 Jason Williams (Wilba) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +// Default layout for WT65-F +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + // Default layer + [0] = LAYOUT_all( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT), + + // Fn1 Layer + [1] = LAYOUT_all( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_EJCT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + // Fn2 Layer + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + // Fn3 Layer + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +}; \ No newline at end of file diff --git a/keyboards/wilba_tech/wt65_f/keymaps/via/keymap.c b/keyboards/wilba_tech/wt65_f/keymaps/via/keymap.c new file mode 100644 index 0000000000..1f9d213f05 --- /dev/null +++ b/keyboards/wilba_tech/wt65_f/keymaps/via/keymap.c @@ -0,0 +1 @@ +#include "../default/keymap.c" \ No newline at end of file diff --git a/keyboards/wilba_tech/wt65_f/keymaps/via/rules.mk b/keyboards/wilba_tech/wt65_f/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/wilba_tech/wt65_f/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/wilba_tech/wt65_f/readme.md b/keyboards/wilba_tech/wt65_f/readme.md new file mode 100644 index 0000000000..1dc7417517 --- /dev/null +++ b/keyboards/wilba_tech/wt65_f/readme.md @@ -0,0 +1,17 @@ +# wilba.tech WT65-F + +WT65-F is a keyboard PCB supporting 65% layout and daughterboard USB-C. [More info at wilba.tech](https://wilba.tech/) + +* Keyboard Maintainer: [Wilba6582](https://github.com/Wilba6582) +* Hardware Supported: wilba.tech WT65-F +* Hardware Availability: [wilba.tech](https://wilba.tech/) + +Make example for this keyboard (after setting up your build environment): + + make wilba_tech/wt65_f:default + +Flashing example for this keyboard: + + make wilba_tech/wt65_f:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/wilba_tech/wt65_f/rules.mk b/keyboards/wilba_tech/wt65_f/rules.mk new file mode 100644 index 0000000000..04e644cbc9 --- /dev/null +++ b/keyboards/wilba_tech/wt65_f/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output \ No newline at end of file diff --git a/keyboards/wilba_tech/wt65_f/wt65_f.c b/keyboards/wilba_tech/wt65_f/wt65_f.c new file mode 100644 index 0000000000..18d29a5eed --- /dev/null +++ b/keyboards/wilba_tech/wt65_f/wt65_f.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Jason Williams (Wilba) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "wt65_f.h" diff --git a/keyboards/wilba_tech/wt65_f/wt65_f.h b/keyboards/wilba_tech/wt65_f/wt65_f.h new file mode 100644 index 0000000000..9c173d011e --- /dev/null +++ b/keyboards/wilba_tech/wt65_f/wt65_f.h @@ -0,0 +1,36 @@ +/* Copyright 2021 Jason Williams (Wilba) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define ____ KC_NO + +#define LAYOUT_all( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, \ + K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, \ + K400, K401, K402, K406, K410, K411, K412, K413, K414 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, ____, K214 }, \ + { K300, ____, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314 }, \ + { K400, K401, K402, ____, ____, ____, K406, ____, ____, ____, K410, K411, K412, K413, K414 } \ +} + From 10dfc8d92f5da47f8cd88ecfbfc5e3801e13a3fd Mon Sep 17 00:00:00 2001 From: Wilba Date: Mon, 19 Apr 2021 16:12:26 +1000 Subject: [PATCH 234/613] [Keyboard] Add wilba.tech WT65-FX (#12394) --- keyboards/wilba_tech/wt65_fx/config.h | 55 +++++++++++++++++++ keyboards/wilba_tech/wt65_fx/info.json | 12 ++++ .../wt65_fx/keymaps/default/keymap.c | 52 ++++++++++++++++++ .../wilba_tech/wt65_fx/keymaps/via/keymap.c | 1 + .../wilba_tech/wt65_fx/keymaps/via/rules.mk | 1 + keyboards/wilba_tech/wt65_fx/readme.md | 17 ++++++ keyboards/wilba_tech/wt65_fx/rules.mk | 22 ++++++++ keyboards/wilba_tech/wt65_fx/wt65_fx.c | 17 ++++++ keyboards/wilba_tech/wt65_fx/wt65_fx.h | 36 ++++++++++++ 9 files changed, 213 insertions(+) create mode 100644 keyboards/wilba_tech/wt65_fx/config.h create mode 100644 keyboards/wilba_tech/wt65_fx/info.json create mode 100644 keyboards/wilba_tech/wt65_fx/keymaps/default/keymap.c create mode 100644 keyboards/wilba_tech/wt65_fx/keymaps/via/keymap.c create mode 100644 keyboards/wilba_tech/wt65_fx/keymaps/via/rules.mk create mode 100644 keyboards/wilba_tech/wt65_fx/readme.md create mode 100644 keyboards/wilba_tech/wt65_fx/rules.mk create mode 100644 keyboards/wilba_tech/wt65_fx/wt65_fx.c create mode 100644 keyboards/wilba_tech/wt65_fx/wt65_fx.h diff --git a/keyboards/wilba_tech/wt65_fx/config.h b/keyboards/wilba_tech/wt65_fx/config.h new file mode 100644 index 0000000000..a84deb0689 --- /dev/null +++ b/keyboards/wilba_tech/wt65_fx/config.h @@ -0,0 +1,55 @@ +/* Copyright 2021 Jason Williams (Wilba) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x6582 // wilba.tech +#define PRODUCT_ID 0x002E // PCB #46 +#define DEVICE_VER 0x0001 +#define MANUFACTURER wilba.tech +#define PRODUCT wilba.tech WT65-FX + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +#define MATRIX_ROW_PINS { F0, F1, F4, F6, F7 } +#define MATRIX_COL_PINS { F5, D5, B1, B2, B3, D3, D2, C7, C6, B6, B5, B4, D7, D6, D4 } // B7, B0 +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE diff --git a/keyboards/wilba_tech/wt65_fx/info.json b/keyboards/wilba_tech/wt65_fx/info.json new file mode 100644 index 0000000000..af2ec54a36 --- /dev/null +++ b/keyboards/wilba_tech/wt65_fx/info.json @@ -0,0 +1,12 @@ +{ + "keyboard_name": "wilba.tech WT65-FX", + "url": "https://wilba.tech", + "maintainer": "Wilba", + "width": 16, + "height": 5, + "layouts": { + "LAYOUT_all": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":15, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":15, "y":2}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":15, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}] + } + } +} \ No newline at end of file diff --git a/keyboards/wilba_tech/wt65_fx/keymaps/default/keymap.c b/keyboards/wilba_tech/wt65_fx/keymaps/default/keymap.c new file mode 100644 index 0000000000..83dc126f4e --- /dev/null +++ b/keyboards/wilba_tech/wt65_fx/keymaps/default/keymap.c @@ -0,0 +1,52 @@ +/* Copyright 2021 Jason Williams (Wilba) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +// Default layout for WT65-FX +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + // Default layer + [0] = LAYOUT_all( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT), + + // Fn1 Layer + [1] = LAYOUT_all( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_DEL, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_EJCT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + // Fn2 Layer + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + // Fn3 Layer + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +}; \ No newline at end of file diff --git a/keyboards/wilba_tech/wt65_fx/keymaps/via/keymap.c b/keyboards/wilba_tech/wt65_fx/keymaps/via/keymap.c new file mode 100644 index 0000000000..1f9d213f05 --- /dev/null +++ b/keyboards/wilba_tech/wt65_fx/keymaps/via/keymap.c @@ -0,0 +1 @@ +#include "../default/keymap.c" \ No newline at end of file diff --git a/keyboards/wilba_tech/wt65_fx/keymaps/via/rules.mk b/keyboards/wilba_tech/wt65_fx/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/wilba_tech/wt65_fx/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/wilba_tech/wt65_fx/readme.md b/keyboards/wilba_tech/wt65_fx/readme.md new file mode 100644 index 0000000000..01ad0a949e --- /dev/null +++ b/keyboards/wilba_tech/wt65_fx/readme.md @@ -0,0 +1,17 @@ +# wilba.tech WT65-FX + +WT65-FX is a keyboard PCB supporting 65% layout and daughterboard USB-C. [More info at wilba.tech](https://wilba.tech/) + +* Keyboard Maintainer: [Wilba6582](https://github.com/Wilba6582) +* Hardware Supported: wilba.tech WT65-FX +* Hardware Availability: [wilba.tech](https://wilba.tech/) + +Make example for this keyboard (after setting up your build environment): + + make wilba_tech/wt65_fx:default + +Flashing example for this keyboard: + + make wilba_tech/wt65_fx:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/wilba_tech/wt65_fx/rules.mk b/keyboards/wilba_tech/wt65_fx/rules.mk new file mode 100644 index 0000000000..04e644cbc9 --- /dev/null +++ b/keyboards/wilba_tech/wt65_fx/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output \ No newline at end of file diff --git a/keyboards/wilba_tech/wt65_fx/wt65_fx.c b/keyboards/wilba_tech/wt65_fx/wt65_fx.c new file mode 100644 index 0000000000..136adb8ba9 --- /dev/null +++ b/keyboards/wilba_tech/wt65_fx/wt65_fx.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Jason Williams (Wilba) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "wt65_fx.h" diff --git a/keyboards/wilba_tech/wt65_fx/wt65_fx.h b/keyboards/wilba_tech/wt65_fx/wt65_fx.h new file mode 100644 index 0000000000..b31068e83b --- /dev/null +++ b/keyboards/wilba_tech/wt65_fx/wt65_fx.h @@ -0,0 +1,36 @@ +/* Copyright 2021 Jason Williams (Wilba) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define ____ KC_NO + +#define LAYOUT_all( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K213, K014, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, \ + K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, \ + K400, K401, K402, K406, K410, K411, K412, K413, K414 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214 }, \ + { K300, ____, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314 }, \ + { K400, K401, K402, ____, ____, ____, K406, ____, ____, ____, K410, K411, K412, K413, K414 } \ +} + From c7adb7a352c50704401efdbceb46ead12c4de2e2 Mon Sep 17 00:00:00 2001 From: Wilba Date: Mon, 19 Apr 2021 16:12:48 +1000 Subject: [PATCH 235/613] [Keyboard] Add wilba.tech WT60-G2 (#12395) --- keyboards/wilba_tech/wt60_g2/config.h | 55 +++++++++++++++++++ keyboards/wilba_tech/wt60_g2/info.json | 12 ++++ .../wt60_g2/keymaps/default/keymap.c | 52 ++++++++++++++++++ .../wilba_tech/wt60_g2/keymaps/via/keymap.c | 1 + .../wilba_tech/wt60_g2/keymaps/via/rules.mk | 1 + keyboards/wilba_tech/wt60_g2/readme.md | 17 ++++++ keyboards/wilba_tech/wt60_g2/rules.mk | 22 ++++++++ keyboards/wilba_tech/wt60_g2/wt60_g2.c | 17 ++++++ keyboards/wilba_tech/wt60_g2/wt60_g2.h | 36 ++++++++++++ 9 files changed, 213 insertions(+) create mode 100644 keyboards/wilba_tech/wt60_g2/config.h create mode 100644 keyboards/wilba_tech/wt60_g2/info.json create mode 100644 keyboards/wilba_tech/wt60_g2/keymaps/default/keymap.c create mode 100644 keyboards/wilba_tech/wt60_g2/keymaps/via/keymap.c create mode 100644 keyboards/wilba_tech/wt60_g2/keymaps/via/rules.mk create mode 100644 keyboards/wilba_tech/wt60_g2/readme.md create mode 100644 keyboards/wilba_tech/wt60_g2/rules.mk create mode 100644 keyboards/wilba_tech/wt60_g2/wt60_g2.c create mode 100644 keyboards/wilba_tech/wt60_g2/wt60_g2.h diff --git a/keyboards/wilba_tech/wt60_g2/config.h b/keyboards/wilba_tech/wt60_g2/config.h new file mode 100644 index 0000000000..d26e0a7138 --- /dev/null +++ b/keyboards/wilba_tech/wt60_g2/config.h @@ -0,0 +1,55 @@ +/* Copyright 2021 Jason Williams (Wilba) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x6582 // wilba.tech +#define PRODUCT_ID 0x002f // PCB #47 +#define DEVICE_VER 0x0001 +#define MANUFACTURER wilba.tech +#define PRODUCT wilba.tech WT60-G2 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +#define MATRIX_ROW_PINS { F0, F1, F4, F6, F7 } +#define MATRIX_COL_PINS { F5, D5, B1, B2, B3, D3, D2, C7, C6, B6, B5, B4, D7, D6 } // D4, B7, B0 +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE diff --git a/keyboards/wilba_tech/wt60_g2/info.json b/keyboards/wilba_tech/wt60_g2/info.json new file mode 100644 index 0000000000..4a43cd2067 --- /dev/null +++ b/keyboards/wilba_tech/wt60_g2/info.json @@ -0,0 +1,12 @@ +{ + "keyboard_name": "wilba.tech WT60-G2", + "url": "https://wilba.tech", + "maintainer": "Wilba", + "width": 15, + "height": 5, + "layouts": { + "LAYOUT_all": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.5}, {"x":1.5, "y":4}, {"x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"x":11, "y":4, "w":1.5}, {"x":12.5, "y":4}, {"x":13.5, "y":4, "w":1.5}] + } + } +} diff --git a/keyboards/wilba_tech/wt60_g2/keymaps/default/keymap.c b/keyboards/wilba_tech/wt60_g2/keymaps/default/keymap.c new file mode 100644 index 0000000000..8ea701f74d --- /dev/null +++ b/keyboards/wilba_tech/wt60_g2/keymaps/default/keymap.c @@ -0,0 +1,52 @@ +/* Copyright 2021 Jason Williams (Wilba) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +// Default layout for WT60-G2 +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + // Default layer + [0] = LAYOUT_all( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL), + + // Fn1 Layer + [1] = LAYOUT_all( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, + KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS, + KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_EJCT, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + // Fn2 Layer + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + // Fn3 Layer + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +}; \ No newline at end of file diff --git a/keyboards/wilba_tech/wt60_g2/keymaps/via/keymap.c b/keyboards/wilba_tech/wt60_g2/keymaps/via/keymap.c new file mode 100644 index 0000000000..1f9d213f05 --- /dev/null +++ b/keyboards/wilba_tech/wt60_g2/keymaps/via/keymap.c @@ -0,0 +1 @@ +#include "../default/keymap.c" \ No newline at end of file diff --git a/keyboards/wilba_tech/wt60_g2/keymaps/via/rules.mk b/keyboards/wilba_tech/wt60_g2/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/wilba_tech/wt60_g2/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/wilba_tech/wt60_g2/readme.md b/keyboards/wilba_tech/wt60_g2/readme.md new file mode 100644 index 0000000000..068af452ea --- /dev/null +++ b/keyboards/wilba_tech/wt60_g2/readme.md @@ -0,0 +1,17 @@ +# wilba.tech WT60-G2 + +WT60-G2 is a keyboard PCB supporting 60% layout and daughterboard USB-C. [More info at wilba.tech](https://wilba.tech/) + +* Keyboard Maintainer: [Wilba6582](https://github.com/Wilba6582) +* Hardware Supported: wilba.tech WT60-G2 +* Hardware Availability: [wilba.tech](https://wilba.tech/) + +Make example for this keyboard (after setting up your build environment): + + make wilba_tech/wt60_g2:default + +Flashing example for this keyboard: + + make wilba_tech/wt60_g2:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/wilba_tech/wt60_g2/rules.mk b/keyboards/wilba_tech/wt60_g2/rules.mk new file mode 100644 index 0000000000..04e644cbc9 --- /dev/null +++ b/keyboards/wilba_tech/wt60_g2/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output \ No newline at end of file diff --git a/keyboards/wilba_tech/wt60_g2/wt60_g2.c b/keyboards/wilba_tech/wt60_g2/wt60_g2.c new file mode 100644 index 0000000000..ac7b7151d0 --- /dev/null +++ b/keyboards/wilba_tech/wt60_g2/wt60_g2.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Jason Williams (Wilba) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "wt60_g2.h" diff --git a/keyboards/wilba_tech/wt60_g2/wt60_g2.h b/keyboards/wilba_tech/wt60_g2/wt60_g2.h new file mode 100644 index 0000000000..24cf6fba9e --- /dev/null +++ b/keyboards/wilba_tech/wt60_g2/wt60_g2.h @@ -0,0 +1,36 @@ +/* Copyright 2021 Jason Williams (Wilba) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define ____ KC_NO + +#define LAYOUT_all( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K213, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, \ + K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, \ + K400, K401, K402, K406, K411, K412, K413 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213 }, \ + { K300, ____, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313 }, \ + { K400, K401, K402, ____, ____, ____, K406, ____, ____, ____, ____, K411, K412, K413 } \ +} + From ef6802ca604eb6e011498fe0bbbb69a3915e0580 Mon Sep 17 00:00:00 2001 From: Alexander Kagno Date: Mon, 19 Apr 2021 06:17:34 +0000 Subject: [PATCH 236/613] New keyboard keymap, small keymap updates to mm2 keymap (#12310) Co-authored-by: Drashna Jaelre Co-authored-by: Alex --- keyboards/mechmini/v2/keymaps/arkag/config.h | 16 +++ keyboards/mechmini/v2/keymaps/arkag/keymap.c | 17 ++- keyboards/mechmini/v2/keymaps/arkag/rules.mk | 3 - keyboards/preonic/keymaps/arkag/config.h | 30 ++++ keyboards/preonic/keymaps/arkag/keymap.c | 77 ++++++++++ keyboards/preonic/keymaps/arkag/readme.md | 1 + keyboards/preonic/keymaps/arkag/rules.mk | 17 +++ users/arkag/arkag.c | 144 +++++++++++-------- users/arkag/arkag.h | 16 ++- users/arkag/config.h | 16 +++ users/arkag/rules.mk | 5 +- 11 files changed, 272 insertions(+), 70 deletions(-) create mode 100644 keyboards/preonic/keymaps/arkag/config.h create mode 100644 keyboards/preonic/keymaps/arkag/keymap.c create mode 100644 keyboards/preonic/keymaps/arkag/readme.md create mode 100644 keyboards/preonic/keymaps/arkag/rules.mk diff --git a/keyboards/mechmini/v2/keymaps/arkag/config.h b/keyboards/mechmini/v2/keymaps/arkag/config.h index e89adc0978..966289459b 100644 --- a/keyboards/mechmini/v2/keymaps/arkag/config.h +++ b/keyboards/mechmini/v2/keymaps/arkag/config.h @@ -1,3 +1,19 @@ +/* Copyright 2021 Alex Kagno + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . +*/ + #pragma once // save me space! diff --git a/keyboards/mechmini/v2/keymaps/arkag/keymap.c b/keyboards/mechmini/v2/keymaps/arkag/keymap.c index ee1afff055..2c64c5aac0 100644 --- a/keyboards/mechmini/v2/keymaps/arkag/keymap.c +++ b/keyboards/mechmini/v2/keymaps/arkag/keymap.c @@ -1,4 +1,19 @@ -#include QMK_KEYBOARD_H +/* Copyright 2021 Alex Kagno + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . +*/ + #include "arkag.h" /* diff --git a/keyboards/mechmini/v2/keymaps/arkag/rules.mk b/keyboards/mechmini/v2/keymaps/arkag/rules.mk index d46e72f751..c4ee1a7d76 100644 --- a/keyboards/mechmini/v2/keymaps/arkag/rules.mk +++ b/keyboards/mechmini/v2/keymaps/arkag/rules.mk @@ -12,6 +12,3 @@ RGBLIGHT_ENABLE = yes TAP_DANCE_ENABLE = no UNICODE_ENABLE = yes LEADER_ENABLE = yes - -# save me space! -EXTRAFLAGS += -flto diff --git a/keyboards/preonic/keymaps/arkag/config.h b/keyboards/preonic/keymaps/arkag/config.h new file mode 100644 index 0000000000..1b42e6ef9e --- /dev/null +++ b/keyboards/preonic/keymaps/arkag/config.h @@ -0,0 +1,30 @@ +/* Copyright 2021 Alex Kagno + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . +*/ + +#pragma once + +#ifdef AUDIO_ENABLE +# define STARTUP_SONG SONG(STARTUP_SOUND) +# define GOODBYE_SONG SONG(GOODBYE_SOUND) +# define AUDIO_CLICKY +# define AUDIO_CLICKY_FREQ_RANDOMNESS 1.0f +# define MIDI_BASIC +# define MUSIC_MASK keycode != KC_NO +#endif + +// save me space! +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION diff --git a/keyboards/preonic/keymaps/arkag/keymap.c b/keyboards/preonic/keymaps/arkag/keymap.c new file mode 100644 index 0000000000..42b875d677 --- /dev/null +++ b/keyboards/preonic/keymaps/arkag/keymap.c @@ -0,0 +1,77 @@ +/* Copyright 2021 Alex Kagno + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . +*/ + +#include "arkag.h" +#include "muse.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_QWERTY] = LAYOUT_preonic_grid( + M_EHYPR, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, M_EHYPR, + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_LCTL, KC_LGUI, KC_LALT, MEDIA, SYMBOL, KC_SPC, M_LMHYP, ARROW, FUNCT, XXXXXXX, KC_RALT, KC_LEAD), + + [_SYMBOL] = LAYOUT_preonic_grid( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + KC_GRV, KC_LPRN, KC_RPRN, KC_PLUS, KC_UNDS, KC_CIRC, KC_AMPR, KC_7, KC_8, KC_9, _______, _______, + KC_LCBR, KC_LBRC, KC_RBRC, KC_EQL, KC_MINS, KC_ASTR, KC_PIPE, KC_4, KC_5, KC_6, _______, KC_NLCK, + KC_RCBR, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_PDOT, KC_1, KC_2, KC_3, KC_BSLS, KC_PENT, + M_DASH, KC_TILD, _______, KEEB, _______, _______, _______, KC_0, KC_PSLS, KC_PMNS, KC_PPLS, KC_PAST), + + [_MEDIA] = LAYOUT_preonic_grid( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, KC_VOLU, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, KC_MPRV, KC_VOLD, KC_MNXT, _______, _______, _______, _______, _______, _______, _______, + KC_MPLY, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + KC_MUTE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + + [_ARROW] = LAYOUT_preonic_grid( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + + [_FUNCT] = LAYOUT_preonic_grid( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + _______, _______, _______, KC_END, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, KC_HOME, _______, _______, _______, _______, _______, + M_SFTY, _______, _______, KC_CALC, _______, _______, _______, _______, _______, _______, _______, KC_CAPS, + _______, _______, _______, _______, _______, _______, M_AEST, _______, _______, _______, _______, M_OS ), + + [_KEEB] = LAYOUT_preonic_grid( + CK_TOGG, AU_TOG, MU_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, + M_USSR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, BL_TOGG, BL_STEP, BL_INC, BL_DEC, BL_BRTG, _______, _______, _______, _______, _______, _______, + RGB_M_P, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, _______, _______, _______, + RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + +}; + +#ifdef AUDIO_ENABLE +bool music_mask_user(uint16_t keycode) { + switch (keycode) { + case MU_TOG: + case SYMBOL: + case KEEB: + return false; + default: + return true; + } +} +#endif diff --git a/keyboards/preonic/keymaps/arkag/readme.md b/keyboards/preonic/keymaps/arkag/readme.md new file mode 100644 index 0000000000..e911968dd9 --- /dev/null +++ b/keyboards/preonic/keymaps/arkag/readme.md @@ -0,0 +1 @@ +# The default Preonic layout - largely based on the Planck's \ No newline at end of file diff --git a/keyboards/preonic/keymaps/arkag/rules.mk b/keyboards/preonic/keymaps/arkag/rules.mk new file mode 100644 index 0000000000..8b04cf2aaf --- /dev/null +++ b/keyboards/preonic/keymaps/arkag/rules.mk @@ -0,0 +1,17 @@ +BOOTMAGIC_ENABLE = lite +MOUSEKEY_ENABLE = no +STENO_ENABLE = no +EXTRAKEY_ENABLE = yes +CONSOLE_ENABLE = no +COMMAND_ENABLE = no +SLEEP_LED_ENABLE = yes +NKRO_ENABLE = yes +BACKLIGHT_ENABLE = no +AUDIO_ENABLE = yes +RGBLIGHT_ENABLE = yes +TAP_DANCE_ENABLE = no +UNICODE_ENABLE = yes +LEADER_ENABLE = yes + +# from default +SRC += muse.c diff --git a/users/arkag/arkag.c b/users/arkag/arkag.c index 97f84d8f02..564c234c39 100644 --- a/users/arkag/arkag.c +++ b/users/arkag/arkag.c @@ -1,4 +1,5 @@ #include "arkag.h" +#include "eeprom.h" /* Current Layout and Keeb: @@ -40,6 +41,7 @@ uint8_t velocikey_match_speed(uint8_t minValue, uint8_t maxValue) { } // End: Written by Chris Lewis +static int shift_int = 0; uint8_t current_os, mod_primary_mask, fade_interval, @@ -54,6 +56,8 @@ activityState state = boot; bool aesthetic = false, shifty = false; +float song_ussr[][2] = SONG(USSR_ANTHEM); + void set_color (Color new, bool update) { rgblight_sethsv_eeprom_helper(new.h, new.s, new.v, update); } @@ -188,21 +192,17 @@ void set_os (uint8_t os, bool update) { case OS_MAC: set_unicode_input_mode(UC_OSX); underglow = (Color){ 213, 255, 255 }; - mod_primary_mask = MOD_GUI_MASK; break; case OS_WIN: set_unicode_input_mode(UC_WINC); underglow = (Color){ 128, 255, 255 }; - mod_primary_mask = MOD_CTL_MASK; break; case OS_NIX: set_unicode_input_mode(UC_LNX); underglow = (Color){ 43, 255, 255 }; - mod_primary_mask = MOD_CTL_MASK; break; default: underglow = (Color){ 0, 0, 255 }; - mod_primary_mask = MOD_CTL_MASK; } set_color(underglow, update); flash_color = underglow; @@ -245,6 +245,17 @@ void sec_mod(bool press) { } } +// register Meh if Win or Hyper if other +// KC_MEH/HYPR registers both sides, causes issues with some apps +// I'll do it myself, then +void meh_hyper(bool press) { + if (current_os == OS_WIN) { + (press) ? register_mods(L_BIT_MEH) : unregister_mods(L_BIT_MEH); + } else { + (press) ? register_mods(L_BIT_HYPR) : unregister_mods(L_BIT_HYPR); + } +} + void multi_tap(uint8_t num_of_chars, uint16_t keycode, bool use_shift) { if (use_shift) { register_code(KC_LSFT); @@ -257,21 +268,25 @@ void multi_tap(uint8_t num_of_chars, uint16_t keycode, bool use_shift) { } } -void surround_type(uint8_t num_of_chars, uint16_t keycode, bool use_shift) { - if (use_shift) { - register_code(KC_LSFT); - } +void pair_surround_type(uint8_t num_of_chars, uint16_t keycode, bool use_shift) { for (int i = 0; i < num_of_chars; i++) { + (use_shift) ? register_mods(MOD_BIT( KC_LSFT)) : NULL; tap_code(keycode); - } - if (use_shift) { - unregister_code(KC_LSFT); - } - for (int i = 0; i < (num_of_chars/2); i++) { + tap_code((keycode == KC_LCBR) ? KC_RCBR : (keycode == KC_LBRC) ? KC_RBRC : (keycode == KC_LPRN) ? KC_RPRN : KC_NO); + (use_shift) ? unregister_mods(MOD_BIT( KC_LSFT)) : NULL; tap_code(KC_LEFT); } } +void surround_type(uint8_t num_of_chars, uint16_t keycode, bool use_shift) { + for (int i = 0; i < num_of_chars; i++) { + (use_shift) ? register_mods(MOD_BIT( KC_LSFT)) : NULL; + tap_code(keycode); + (use_shift) ? unregister_mods(MOD_BIT( KC_LSFT)) : NULL; + } + multi_tap(num_of_chars / 2, KC_LEFT, false); +} + void long_keystroke(size_t num_of_keys, uint16_t keys[]) { for (int i = 0; i < num_of_keys-1; i++) { register_code(keys[i]); @@ -282,6 +297,12 @@ void long_keystroke(size_t num_of_keys, uint16_t keys[]) { } } +void pri_mod_keystroke(uint16_t key) { + pri_mod(true); + tap_code(key); + pri_mod(false); +} + void matrix_init_user(void) { current_os = eeprom_read_byte(EECONFIG_USERSPACE); set_os(current_os, false); @@ -326,27 +347,14 @@ void matrix_scan_user(void) { } else { } } - SEQ_THREE_KEYS(KC_C, KC_S, KC_E) { - if (current_os == OS_WIN) { - long_keystroke(3, (uint16_t[]){KC_LCTL, KC_LSFT, KC_ESC}); - } else { - } - } - SEQ_FOUR_KEYS(KC_C, KC_A, KC_L, KC_C) { - if (current_os == OS_WIN) { - SEND_STRING(SS_TAP(X_CALCULATOR)); - } else if (current_os == OS_MAC) { - SEND_STRING(SS_DOWN(X_LGUI) SS_TAP(X_SPACE) SS_UP(X_LGUI) "calculator" SS_TAP(X_ENTER)); - } - } // end OS functions // begin format functions SEQ_ONE_KEY(KC_B) { - surround_type(4, KC_8, true); + surround_type(2, KC_8, true); } SEQ_ONE_KEY(KC_I) { - surround_type(2, KC_8, true); + surround_type(2, KC_MINS, true); } SEQ_ONE_KEY(KC_U) { surround_type(4, KC_MINS, true); @@ -357,6 +365,18 @@ void matrix_scan_user(void) { SEQ_ONE_KEY(KC_C) { send_unicode_hex_string("00E7"); } + SEQ_TWO_KEYS(KC_A, KC_V) { + surround_type(2, KC_QUOT, true); + pair_surround_type(2, KC_LCBR, true); + surround_type(2, KC_SPC, false); + } + SEQ_TWO_KEYS(KC_M, KC_L) { + pair_surround_type(1, KC_LBRC, false); + SEND_STRING("LINK_NAME"); + tap_code(KC_RGHT); + pair_surround_type(1, KC_LPRN, true); + pri_mod_keystroke(KC_V); + } SEQ_TWO_KEYS(KC_C, KC_C) { surround_type(2, KC_GRAVE, false); } @@ -369,28 +389,18 @@ void matrix_scan_user(void) { SEQ_TWO_KEYS(KC_E, KC_E) { send_unicode_hex_string("00E9"); } - SEQ_TWO_KEYS(KC_T, KC_I) { - surround_type(4, KC_MINS, true); - } - SEQ_TWO_KEYS(KC_T, KC_B) { - surround_type(4, KC_8, true); - } // end format functions // start fancy functions SEQ_THREE_KEYS(KC_C, KC_C, KC_ENT) { surround_type(6, KC_GRAVE, false); - pri_mod(true); - tap_code(KC_V); - pri_mod(false); + pri_mod_keystroke(KC_V); multi_tap(3, KC_RGHT, false); tap_code(KC_ENTER); } SEQ_THREE_KEYS(KC_T, KC_C, KC_ENT) { multi_tap(3, KC_GRAVE, false); - pri_mod(true); - tap_code(KC_V); - pri_mod(false); + pri_mod_keystroke(KC_V); multi_tap(2, KC_ENTER, false); } // end fancy functions @@ -406,9 +416,7 @@ void matrix_scan_user(void) { SEQ_THREE_KEYS(KC_D, KC_D, KC_D) { SEND_STRING(".\\Administrator"); tap_code(KC_TAB); - pri_mod(true); - tap_code(KC_V); - pri_mod(false); + pri_mod_keystroke(KC_V); tap_code(KC_ENTER); } SEQ_THREE_KEYS(KC_L, KC_O, KC_D) { @@ -426,7 +434,7 @@ void matrix_scan_user(void) { // ┬─┬ノ( º _ º ノ) send_unicode_hex_string("252C 2500 252C 30CE 0028 0020 00BA 0020 005F 0020 00BA 0020 30CE 0029"); } - SEQ_THREE_KEYS(KC_L, KC_E, KC_N) { + SEQ_THREE_KEYS(KC_L, KC_O, KC_L) { // ( ͡° ͜ʖ ͡°) send_unicode_hex_string("0028 0020 0361 00B0 0020 035C 0296 0020 0361 00B0 0029"); } @@ -469,18 +477,13 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case KC_A ... KC_Z: if (record->event.pressed) { - static int shift_int = 1; - int shift = shift_int % 2; - shift_int++; + shift_int += (rand() % 5); + int shift = ((shift_int % 2) == 1) ? true : false; state = active; velocikey_accelerate(); - if (shift == 1){ - register_code(KC_LSFT); - } + (shift) ? register_code(KC_LSFT) : NULL; tap_code(keycode); - if (shift == 1){ - unregister_code(KC_LSFT); - } + (shift) ? unregister_code(KC_LSFT) : NULL; } return false; case KC_SPC: @@ -496,13 +499,11 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } switch (keycode) { - case M_PMOD: - pri_mod(record->event.pressed); - return false; - - case M_SMOD: - sec_mod(record->event.pressed); - return false; + #ifdef AUDIO_ENABLE + case M_USSR: + PLAY_SONG(song_ussr); + return false; + #endif case M_OS: if (record->event.pressed){ @@ -515,6 +516,29 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { send_unicode_hex_string("2014"); } return false; + case M_LMHYP: + case M_EHYPR: + (keycode = M_LMHYP) ? (record->event.pressed) ? layer_on(_ARROW) : layer_off(_ARROW) : NULL; + meh_hyper(record->event.pressed); + return false; + + case M_SFTY: + if(record->event.pressed){ + num_extra_flashes_off = (shifty) ? 1 : 0; + shifty = !shifty; + flash_color = underglow; + flash_state = flash_off; + return false; + } + + case M_AEST: + if(record->event.pressed){ + num_extra_flashes_off = (aesthetic) ? 1 : 0; + aesthetic = !aesthetic; + flash_color = underglow; + flash_state = flash_off; + return false; + } default: if (record->event.pressed) { diff --git a/users/arkag/arkag.h b/users/arkag/arkag.h index b78234ca93..d4bec6598f 100644 --- a/users/arkag/arkag.h +++ b/users/arkag/arkag.h @@ -1,7 +1,6 @@ #pragma once -#include "quantum.h" -#include "process_keycode/process_tap_dance.h" +#include QMK_KEYBOARD_H #define EECONFIG_USERSPACE (uint8_t *)20 @@ -11,9 +10,8 @@ #define FUNCT MO(4) #define KEEB MO(5) -#define MOD_CTL_MASK (MOD_BIT(KC_LCTL) | MOD_BIT(KC_RCTL)) -#define MOD_GUI_MASK (MOD_BIT(KC_LGUI) | MOD_BIT(KC_RGUI)) -#define MOD_SFT_MASK (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)) +#define L_BIT_MEH MOD_BIT(KC_LCTL) | MOD_BIT(KC_LALT) | MOD_BIT(KC_LSFT) +#define L_BIT_HYPR MOD_BIT(KC_LCTL) | MOD_BIT(KC_LGUI) | MOD_BIT(KC_LALT) | MOD_BIT(KC_LSFT) #define LED_FLASH_DELAY 150 @@ -69,6 +67,11 @@ enum custom_keycodes { M_SMOD, M_OS, M_DASH, + M_USSR, + M_EHYPR, + M_LMHYP, + M_SFTY, + M_AEST, }; void velocikey_accelerate(void); @@ -97,8 +100,11 @@ void pri_mod(bool press); void sec_mod(bool press); +void meh_hyper(bool press); + void multi_tap(uint8_t num_of_chars, uint16_t keycode, bool use_shift); void surround_type(uint8_t num_of_chars, uint16_t keycode, bool use_shift); +void pair_surround_type(uint8_t num_of_chars, uint16_t keycode, bool use_shift); void long_keystroke(size_t num_of_keys, uint16_t keys[]); diff --git a/users/arkag/config.h b/users/arkag/config.h index 5a89a18f60..7dccac7a85 100644 --- a/users/arkag/config.h +++ b/users/arkag/config.h @@ -1,3 +1,19 @@ +/* Copyright 2021 Alex Kagno + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . +*/ + #pragma once #define TAPPING_TERM 200 diff --git a/users/arkag/rules.mk b/users/arkag/rules.mk index 3513f0ea6c..14d60970b3 100644 --- a/users/arkag/rules.mk +++ b/users/arkag/rules.mk @@ -1 +1,4 @@ - SRC += arkag.c +SRC += arkag.c + +# save me space! +LTO_ENABLE = yes \ No newline at end of file From 17c880b076ba3bea394f3443a842c98958982a52 Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Mon, 19 Apr 2021 08:42:40 +0200 Subject: [PATCH 237/613] [Keymap] add kinesis/keymaps/stapelberg (#12430) --- keyboards/kinesis/keymaps/stapelberg/keymap.c | 69 +++++++++++++++++++ .../kinesis/keymaps/stapelberg/readme.md | 27 ++++++++ keyboards/kinesis/keymaps/stapelberg/rules.mk | 3 + 3 files changed, 99 insertions(+) create mode 100644 keyboards/kinesis/keymaps/stapelberg/keymap.c create mode 100644 keyboards/kinesis/keymaps/stapelberg/readme.md create mode 100644 keyboards/kinesis/keymaps/stapelberg/rules.mk diff --git a/keyboards/kinesis/keymaps/stapelberg/keymap.c b/keyboards/kinesis/keymaps/stapelberg/keymap.c new file mode 100644 index 0000000000..c62ffbbccf --- /dev/null +++ b/keyboards/kinesis/keymaps/stapelberg/keymap.c @@ -0,0 +1,69 @@ +/* Copyright 2021 Michael Stapelberg + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +#define QWERTY 0 // Base qwerty + + +/**************************************************************************************************** +* +* Keymap: Default Layer in Qwerty +* +* ,-------------------------------------------------------------------------------------------------------------------. +* | Esc | F1 | F2 | F3 | F4 | F5 | F6 | F8 | F9 | F10 | F12 | PSCR | SLCK | PAUS | FN0 | BOOT | +* |--------+------+------+------+------+------+---------------------------+------+------+------+------+------+--------| +* | =+ | 1! | 2@ | 3# | 4$ | 5% | | 6^ | 7& | 8* | 9( | 0) | -_ | +* |--------+------+------+------+------+------| +------+------+------+------+------+--------| +* | Tab | Q | W | E | R | T | | Y | U | I | O | P | \| | +* |--------+------+------+------+------+------| |------+------+------+------+------+--------| +* | Caps | A | S | D | F | G | | H | J | K | L | ;: | '" | +* |--------+------+------+------+------+------| |------+------+------+------+------+--------| +* | Shift | Z | X | C | V | B | | N | M | ,. | .> | /? | Shift | +* `--------+------+------+------+------+------- `------+------+------+------+------+--------' +* | `~ | INS | Left | Right| | Up | Down | [{ | ]} | +* `---------------------------' `---------------------------' +* ,-------------. ,-------------. +* | Ctrl | Alt | | Gui | Ctrl | +* ,------|------|------| |------+------+------. +* | | | Home | | PgUp | | | +* | BkSp | Del |------| |------|Return| Space| +* | | | End | | PgDn | | | +* `--------------------' `--------------------' +*/ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[QWERTY] = LAYOUT( + KC_DEL, KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 ,KC_F7 ,KC_F8, + KC_EQL, KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 , + KC_TAB, KC_Q ,KC_W ,KC_E ,KC_R ,KC_T , + KC_CAPS,KC_A ,KC_S ,KC_D ,KC_F ,KC_G , + KC_LSFT,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B , + KC_GRV ,KC_INS ,KC_LEFT,KC_RGHT, + KC_LCTL,KC_LALT, + KC_LGUI, + KC_BSPC,KC_ESC ,KC_END , + KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,KC_PSCR ,KC_SLCK ,KC_PAUS, KC_FN0, RESET, + KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_MINS, + KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_BSLS, + KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN,KC_QUOT, + KC_N ,KC_M ,KC_COMM,KC_DOT ,KC_SLSH,KC_RSFT, + KC_UP ,KC_DOWN,KC_LBRC,KC_RBRC, + KC_RALT,KC_RCTL, + KC_PGUP, + KC_PGDN,KC_ENTER ,KC_SPC + ) +}; diff --git a/keyboards/kinesis/keymaps/stapelberg/readme.md b/keyboards/kinesis/keymaps/stapelberg/readme.md new file mode 100644 index 0000000000..16bf8c379f --- /dev/null +++ b/keyboards/kinesis/keymaps/stapelberg/readme.md @@ -0,0 +1,27 @@ +# Michael Stapelberg’s keymap for the Kinesis Advantage + +I adjust the thumb block mapping slightly to have a standard set of modifiers +(Control, Alt, GUI/Windows, Right Alt) and Escape available conveniently. + +Specifically, my keymap makes the following changes: + +* Left thumb block: + * Swap `Delete` with `Escape` (top left), from my Vim days :) + * The `Home` key on the left thumb block is replaced by `Left GUI/Windows`. +* Right thumb block: + * The top left key on the right thumb block produces `Right Alt`. + +## Corresponding Kinesis configuration + +My keymap corresponds to the following Kinesis configuration tool settings: + +``` +[escape]>[delete] +[rwin]>[ralt] +[delete]>[escape] +[home]>[lwin] +[intl-\]>[kp-insert] +``` + +Note: the last line makes the international key (labeled `|`, `\` and `Insert`) +produce `Insert`, which is default with QMK, but not default Kinesis. diff --git a/keyboards/kinesis/keymaps/stapelberg/rules.mk b/keyboards/kinesis/keymaps/stapelberg/rules.mk new file mode 100644 index 0000000000..f5557c73b5 --- /dev/null +++ b/keyboards/kinesis/keymaps/stapelberg/rules.mk @@ -0,0 +1,3 @@ +BOOTMAGIC_ENABLE = no +COMMAND_ENABLE = yes +NKRO_ENABLE = yes From fe9bd0afb9a45dbad9ca06bd496e2cf72a080dac Mon Sep 17 00:00:00 2001 From: Sergey Vlasov Date: Mon, 19 Apr 2021 10:32:14 +0300 Subject: [PATCH 238/613] Fix F303 audio output on A4 with the dac_basic driver (#12480) The dac_basic driver did not work properly with `#define AUDIO_PIN A4` (instead of configuring the A4 pin, the driver actually was switching the A5 pin to analog mode, breaking any other usage of that pin in addition to emitting a distorted signal on the improperly configured A4 pin). Fix the code to configure the A4 pin as intended. --- quantum/audio/driver_chibios_dac_basic.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quantum/audio/driver_chibios_dac_basic.c b/quantum/audio/driver_chibios_dac_basic.c index b8cec5ff1b..fac6513506 100644 --- a/quantum/audio/driver_chibios_dac_basic.c +++ b/quantum/audio/driver_chibios_dac_basic.c @@ -101,7 +101,7 @@ static const DACConversionGroup dac_conv_grp_ch2 = {.num_channels = 1U, .trigger void channel_1_start(void) { gptStart(&GPTD6, &gpt6cfg1); gptStartContinuous(&GPTD6, 2U); - palSetPadMode(GPIOA, 5, PAL_MODE_INPUT_ANALOG); + palSetPadMode(GPIOA, 4, PAL_MODE_INPUT_ANALOG); } void channel_1_stop(void) { From 5581ea8809b8881d68b523509fd7c496c8251a7b Mon Sep 17 00:00:00 2001 From: Benedict Tan Date: Mon, 19 Apr 2021 16:20:51 +0800 Subject: [PATCH 239/613] [Keyboard] Update dz60rgb default keymap (#12488) The keymap for this PCB as of April 5, 2020 has a 4rth, largely superfluous layer, creating a total of 5 layers. When ported to VIA, this results in a layer that users can access but cannot edit. I propose removing this layer completely along with it's access from the default. --- keyboards/dztech/dz60rgb/keymaps/default/keymap.c | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/keyboards/dztech/dz60rgb/keymaps/default/keymap.c b/keyboards/dztech/dz60rgb/keymaps/default/keymap.c index 4bffe50db8..99b3c6c286 100644 --- a/keyboards/dztech/dz60rgb/keymaps/default/keymap.c +++ b/keyboards/dztech/dz60rgb/keymaps/default/keymap.c @@ -13,7 +13,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, KC_UP, _______, _______, _______, KC_CALC, _______, KC_INS, _______, KC_PSCR, KC_SLCK, KC_PAUS, RESET, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, EEP_RST, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, KC_END, KC_PGDN, KC_VOLU, KC_MUTE, - _______, _______, _______, TO(4), _______, _______, KC_MPRV, KC_VOLD, KC_MNXT + _______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT ), [2] = LAYOUT( _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, @@ -28,12 +28,5 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, KC_P4, KC_P5, KC_P6, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, KC_PENT, _______, KC_P1, KC_P2, KC_P3, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, _______, _______, KC_P0, KC_PDOT, KC_PENT, KC_P0, KC_PDOT, _______, _______, _______ - ), - [4] = LAYOUT( - KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, - CTL_T(KC_CAPS), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), KC_UP, LT(2, KC_DEL), - KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RALT, TO(0), KC_LEFT, KC_DOWN, KC_RGHT ) }; From cfbd9ba0e7cb268a92ce0d212ec0477555729fa3 Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Mon, 19 Apr 2021 11:20:17 +0200 Subject: [PATCH 240/613] eclipse: recommend changing the default project make target (#12447) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is required for example for quickly iterating with a debugger, where Eclipse will build the project automatically. It’s also shorter than the previous steps, which I think might not have been updated since https://qmk.fm/changes/2017-09-08-making-from-root-and-no-more-makefiles --- docs/other_eclipse.md | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/docs/other_eclipse.md b/docs/other_eclipse.md index cb3ceb540b..91557d07d7 100644 --- a/docs/other_eclipse.md +++ b/docs/other_eclipse.md @@ -50,7 +50,7 @@ This is the most important plugin as it will allow Eclipse to _understand_ AVR C ### [ANSI Escape in Console](https://marketplace.eclipse.org/content/ansi-escape-console) This plugin is necessary to properly display the colored build output generated by the QMK makefile. -1. Open Help > Eclipse Marketplace… +1. Open Help > Eclipse Marketplace… 2. Search for _ANSI Escape in Console_ 3. Click the Install button of the plugin 4. Follow the instructions and agree again with the security warning for unsigned content. @@ -59,7 +59,7 @@ Once both plugins are installed, restart Eclipse as prompted. # Configure Eclipse for QMK ## Importing the Project -1. Click File > New > Makefile Project with Existing Code +1. Click File > New > Makefile Project with Existing Code 2. On the next screen: * Select the directory where you cloned the repository as _Existing Code Location_; * (Optional) Give a different name to the project¹, e.g. _QMK_ or _Quantum_; @@ -73,16 +73,18 @@ Once both plugins are installed, restart Eclipse as prompted. ¹ There might be issues for importing the project with a custom name. If it does not work properly, try leaving the default project name (i.e. the name of the directory, probably `qmk_firmware`). ## Build Your Keyboard -We will now configure a make target that cleans the project and builds the keymap of your choice. -1. On the right side of the screen, select the Make Target tab -2. Expand the folder structure to the keyboard of your choice, e.g. `qmk_firmware/keyboards/ergodox` -3. Right-click on the keyboard folder and select New… (or select the folder and click the New Make Target icon above the tree) -4. Choose a name for your build target, e.g. _clean \_ -5. Make Target: this is the arguments that you give to `make` when building from the command line. If your target name does not match these arguments, uncheck Same as target name and input the correct arguments, e.g. `clean ` -6. Leave the other options checked and click OK. Your make target will now appear under the selected keyboard. -7. (Optional) Toggle the Hide Empty Folders icon button above the targets tree to only show your build target. -8. Double-click the build target you created to trigger a build. -9. Select the Console view at the bottom to view the running build. +We will now change the default make target of the the project from `all` to the +specific keyboard and keymap combination we are working on, +e.g. `kinesis/kint36:stapelberg`. This way, project-wide actions like cleaning +and building the project will complete quickly, instead of taking a long time or +outright locking up Eclipse. + +1. Focus an editor tab within the project +2. Open the `Project` > `Properties` window, then select the `C/C++ Build` list + entry and switch to the `Behavior` tab. +3. Change the default `Make build target` text fields for all enabled builds + from `all` to e.g. `kinesis/kint41:stapelberg`. +4. Verify your setup works by selecting `Project` > `Clean...`. [1]: https://en.wikipedia.org/wiki/Eclipse_(software) From 53a35c0d0cd37e2c0e97c8e8205a2c3939076210 Mon Sep 17 00:00:00 2001 From: Wilba Date: Mon, 19 Apr 2021 19:21:27 +1000 Subject: [PATCH 241/613] [Keyboard] Update RAMA WORKS M50-A (#12459) --- .../wilba_tech/rama_works_m50_a/info.json | 2 +- .../rama_works_m50_a/keymaps/default/keymap.c | 10 +- .../rama_works_m50_a/keymaps/via/keymap.c | 94 +------------------ .../rama_works_m50_a/rama_works_m50_a.h | 6 +- 4 files changed, 10 insertions(+), 102 deletions(-) diff --git a/keyboards/wilba_tech/rama_works_m50_a/info.json b/keyboards/wilba_tech/rama_works_m50_a/info.json index 5b8031c7fb..af32a6943f 100644 --- a/keyboards/wilba_tech/rama_works_m50_a/info.json +++ b/keyboards/wilba_tech/rama_works_m50_a/info.json @@ -6,7 +6,7 @@ "height": 4, "layouts": { "LAYOUT": { - "layout": [{"label":"0,0", "x":0, "y":0}, {"label":"0,1", "x":1.25, "y":0}, {"label":"0,2", "x":2.25, "y":0}, {"label":"0,3", "x":3.25, "y":0}, {"label":"0,4", "x":4.25, "y":0}, {"label":"0,5", "x":5.25, "y":0}, {"label":"0,6", "x":6.25, "y":0}, {"label":"0,7", "x":7.25, "y":0}, {"label":"0,8", "x":8.25, "y":0}, {"label":"0,9", "x":9.25, "y":0}, {"label":"0,10", "x":10.25, "y":0}, {"label":"0,11", "x":11.25, "y":0}, {"label":"0,12", "x":12.25, "y":0}, {"label":"1,0", "x":0, "y":1}, {"label":"1,1", "x":1.25, "y":1}, {"label":"1,2", "x":2.25, "y":1}, {"label":"1,3", "x":3.25, "y":1}, {"label":"1,4", "x":4.25, "y":1}, {"label":"1,5", "x":5.25, "y":1}, {"label":"1,6", "x":6.25, "y":1}, {"label":"1,7", "x":7.25, "y":1}, {"label":"1,8", "x":8.25, "y":1}, {"label":"1,9", "x":9.25, "y":1}, {"label":"1,10", "x":10.25, "y":1}, {"label":"1,11", "x":11.25, "y":1}, {"label":"1,12", "x":12.25, "y":1}, {"label":"2,0", "x":0, "y":2}, {"label":"2,1", "x":1.25, "y":2}, {"label":"2,2", "x":2.25, "y":2}, {"label":"2,3", "x":3.25, "y":2}, {"label":"2,4", "x":4.25, "y":2}, {"label":"2,5", "x":5.25, "y":2}, {"label":"2,6", "x":6.25, "y":2}, {"label":"2,7", "x":7.25, "y":2}, {"label":"2,8", "x":8.25, "y":2}, {"label":"2,9", "x":9.25, "y":2}, {"label":"2,10", "x":10.25, "y":2}, {"label":"2,11", "x":11.25, "y":2}, {"label":"2,12", "x":12.25, "y":2}, {"label":"3,0", "x":0, "y":3}, {"label":"3,1", "x":1.25, "y":3}, {"label":"3,2", "x":2.25, "y":3}, {"label":"3,3", "x":3.25, "y":3}, {"label":"3,4", "x":4.25, "y":3}, {"label":"3,5", "x":5.25, "y":3}, {"label":"3,6", "x":6.25, "y":3}, {"label":"3,7", "x":7.25, "y":3}, {"label":"3,8", "x":8.25, "y":3}, {"label":"3,9", "x":9.25, "y":3}, {"label":"3,10", "x":10.25, "y":3}, {"label":"3,11", "x":11.25, "y":3}, {"label":"3,12", "x":12.25, "y":3}] + "layout": [{"x":0, "y":0}, {"x":1.25, "y":0}, {"x":2.25, "y":0}, {"x":3.25, "y":0}, {"x":4.25, "y":0}, {"x":5.25, "y":0}, {"x":6.25, "y":0}, {"x":7.25, "y":0}, {"x":8.25, "y":0}, {"x":9.25, "y":0}, {"x":10.25, "y":0}, {"x":11.25, "y":0}, {"x":12.25, "y":0}, {"x":0, "y":1}, {"x":1.25, "y":1}, {"x":2.25, "y":1}, {"x":3.25, "y":1}, {"x":4.25, "y":1}, {"x":5.25, "y":1}, {"x":6.25, "y":1}, {"x":7.25, "y":1}, {"x":8.25, "y":1}, {"x":9.25, "y":1}, {"x":10.25, "y":1}, {"x":11.25, "y":1}, {"x":12.25, "y":1}, {"x":0, "y":2}, {"x":1.25, "y":2}, {"x":2.25, "y":2}, {"x":3.25, "y":2}, {"x":4.25, "y":2}, {"x":5.25, "y":2}, {"x":6.25, "y":2}, {"x":7.25, "y":2}, {"x":8.25, "y":2}, {"x":9.25, "y":2}, {"x":10.25, "y":2}, {"x":11.25, "y":2}, {"x":12.25, "y":2}, {"x":0, "y":3}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3, "w":2}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3}] } } } \ No newline at end of file diff --git a/keyboards/wilba_tech/rama_works_m50_a/keymaps/default/keymap.c b/keyboards/wilba_tech/rama_works_m50_a/keymaps/default/keymap.c index 491ac55b6a..5316207f44 100644 --- a/keyboards/wilba_tech/rama_works_m50_a/keymaps/default/keymap.c +++ b/keyboards/wilba_tech/rama_works_m50_a/keymaps/default/keymap.c @@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, _______, KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, _______, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, - _______, _______, KC_LCTL, KC_LALT, KC_LGUI, FN_MO13, KC_SPC, KC_SPC, FN_MO23, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + _______, _______, KC_LCTL, KC_LALT, KC_LGUI, FN_MO13, KC_SPC, FN_MO23, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT ), @@ -51,7 +51,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, _______, KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, _______, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY ), /* Raise @@ -69,7 +69,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, _______, KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, _______, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY ), /* Adjust (Lower + Raise) @@ -83,13 +83,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | | | | | * `------------------------------------------------------------------------------------------' */ -/* [3] = LAYOUT( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ) -*/ }; diff --git a/keyboards/wilba_tech/rama_works_m50_a/keymaps/via/keymap.c b/keyboards/wilba_tech/rama_works_m50_a/keymaps/via/keymap.c index 37f9bc94db..1f9d213f05 100644 --- a/keyboards/wilba_tech/rama_works_m50_a/keymaps/via/keymap.c +++ b/keyboards/wilba_tech/rama_works_m50_a/keymaps/via/keymap.c @@ -1,93 +1 @@ -/* Copyright 2020 Jason Williams (Wilba) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include QMK_KEYBOARD_H - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - -/* Qwerty - * ,------------------------------------------------------------------------------------------. - * | | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | - * |------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | Esc | A | S | D | F | G | H | J | K | L | ; | " | - * |------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | - * `------------------------------------------------------------------------------------------' - */ -[0] = LAYOUT( - _______, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, - _______, KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, - _______, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, - _______, _______, KC_LCTL, KC_LALT, KC_LGUI, FN_MO13, KC_SPC, KC_SPC, FN_MO23, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT -), - - -/* Lower - * ,------------------------------------------------------------------------------------------. - * | | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | - * |------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | Home | End | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | Next | Vol- | Vol+ | Play | - * `------------------------------------------------------------------------------------------' - */ -[1] = LAYOUT( - _______, KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, - _______, KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, - _______, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY -), - -/* Raise - * ,------------------------------------------------------------------------------------------. - * | | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | - * |------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | - * |------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / |Pg Up |Pg Dn | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | Next | Vol- | Vol+ | Play | - * `------------------------------------------------------------------------------------------' - */ -[2] = LAYOUT( - _______, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, - _______, KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, - _______, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY -), - -/* Adjust (Lower + Raise) - * ,------------------------------------------------------------------------------------------. - * | | | | | | | | | | | | | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | | | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | | | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | | | - * `------------------------------------------------------------------------------------------' - */ -[3] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ -) - -}; +#include "../default/keymap.c" \ No newline at end of file diff --git a/keyboards/wilba_tech/rama_works_m50_a/rama_works_m50_a.h b/keyboards/wilba_tech/rama_works_m50_a/rama_works_m50_a.h index bd92ea3cf8..25759acfbd 100644 --- a/keyboards/wilba_tech/rama_works_m50_a/rama_works_m50_a.h +++ b/keyboards/wilba_tech/rama_works_m50_a/rama_works_m50_a.h @@ -19,6 +19,8 @@ #include "keyboards/wilba_tech/wt_rgb_backlight_keycodes.h" #include "via.h" +#define ___ KC_NO + /* This is a shortcut to help you visually see your layout. * * The first section contains all of the arguments representing the physical @@ -31,11 +33,11 @@ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, \ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, \ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \ - K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C \ + K30, K31, K32, K33, K34, K35, K36, K38, K39, K3A, K3B, K3C \ ) { \ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C }, \ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C }, \ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C }, \ - { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C } \ + { K30, K31, K32, K33, K34, K35, K36, ___, K38, K39, K3A, K3B, K3C } \ } From 81be065fa538c5978363d379302b069ba23860aa Mon Sep 17 00:00:00 2001 From: jack <59737601+ItsWaffIe@users.noreply.github.com> Date: Mon, 19 Apr 2021 03:22:18 -0600 Subject: [PATCH 242/613] [Keyboard] VIA Support for LCK75 (#12402) --- keyboards/lck75/keymaps/via/keymap.c | 53 ++++++++++++++++++++++++++++ keyboards/lck75/keymaps/via/rules.mk | 2 ++ keyboards/lck75/lck75.c | 10 +++--- 3 files changed, 60 insertions(+), 5 deletions(-) create mode 100644 keyboards/lck75/keymaps/via/keymap.c create mode 100644 keyboards/lck75/keymaps/via/rules.mk diff --git a/keyboards/lck75/keymaps/via/keymap.c b/keyboards/lck75/keymaps/via/keymap.c new file mode 100644 index 0000000000..697de925b5 --- /dev/null +++ b/keyboards/lck75/keymaps/via/keymap.c @@ -0,0 +1,53 @@ +/* Copyright 2021 ItsWaffle/waffle#6666 + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_lck75_ansi( + KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_MUTE, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_NO, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT + ), + + [1] = LAYOUT_lck75_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LGUI, KC_TRNS, KC_TRNS, KC_RALT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [2] = LAYOUT_lck75_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [3] = LAYOUT_lck75_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/lck75/keymaps/via/rules.mk b/keyboards/lck75/keymaps/via/rules.mk new file mode 100644 index 0000000000..541a15608a --- /dev/null +++ b/keyboards/lck75/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = no diff --git a/keyboards/lck75/lck75.c b/keyboards/lck75/lck75.c index 3bcf350a19..8fc674d03f 100644 --- a/keyboards/lck75/lck75.c +++ b/keyboards/lck75/lck75.c @@ -36,10 +36,10 @@ __attribute__((weak)) oled_rotation_t oled_init_user(oled_rotation_t rotation) { } __attribute__((weak)) void oled_task_user(void) { -uint32_t anim_timer = 0; -uint32_t anim_sleep = 0; -uint8_t current_idle_frame = 0; -uint8_t current_tap_frame = 0; +static uint32_t anim_timer = 0; +static uint32_t anim_sleep = 0; +static uint8_t current_idle_frame = 0; +static uint8_t current_tap_frame = 0; static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = { @@ -140,4 +140,4 @@ uint8_t current_tap_frame = 0; } } -#endif \ No newline at end of file +#endif From 2274631c8fd4fb6b20f6dc9e571dfb43625f629e Mon Sep 17 00:00:00 2001 From: Robert Verst Date: Mon, 19 Apr 2021 11:22:49 +0200 Subject: [PATCH 243/613] [Keymap] Fix handling of RV_LOCK and RV_SNAP for windows (#12498) Co-authored-by: Robert Verst --- users/rverst/rverst.c | 39 +++++++-------------------------------- 1 file changed, 7 insertions(+), 32 deletions(-) diff --git a/users/rverst/rverst.c b/users/rverst/rverst.c index 0524c6011d..23391caa6a 100644 --- a/users/rverst/rverst.c +++ b/users/rverst/rverst.c @@ -197,15 +197,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { // Lock computer case RV_LOCK: if (mode == MAC || mode == MAC_UNI) { - register_code(KC_LGUI); - register_code(KC_LCTL); - tap_code(KC_Q); - unregister_code(KC_LCTL); - unregister_code(KC_LGUI); + tap_code16(G(C(KC_Q))); } else if (mode == WINDOWS || mode == WINDOWS_UNI) { - register_code(KC_LGUI); - tap_code(KC_L); - register_code(KC_LGUI); + tap_code16(G(KC_L)); } return false; @@ -215,23 +209,12 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { if (ls) unregister_code(KC_LSFT); if (rs) unregister_code(KC_RSFT); - register_code(KC_LGUI); - register_code(KC_LSFT); - if (as) - tap_code(KC_5); - else - tap_code(KC_4); - unregister_code(KC_LSFT); - unregister_code(KC_LGUI); + tap_code16(G(S(as ? KC_4 : KC_5))); if (ls) register_code(KC_LSFT); if (rs) register_code(KC_RSFT); } else if (mode == WINDOWS || mode == WINDOWS_UNI) { - register_code(KC_LGUI); - register_code(KC_LSFT); - tap_code(KC_S); - register_code(KC_LSFT); - register_code(KC_LGUI); + tap_code16(G(S(KC_S))); } return false; @@ -260,9 +243,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { if (ls) unregister_code(KC_LSFT); if (rs) unregister_code(KC_RSFT); - register_code(KC_LALT); - tap_code(KC_U); - unregister_code(KC_LALT); + tap_code16(A(KC_U)); if (as) register_code(KC_LSFT); if (keycode == RV_AUML) { @@ -318,11 +299,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { if (is_unicode(mode)) { send_unicode_string("€"); } else if (mode == MAC) { - register_code(KC_LALT); - register_code(KC_LSFT); - tap_code(KC_2); - unregister_code(KC_LSFT); - unregister_code(KC_LALT); + tap_code16(S(A(KC_2))); } else if (mode == WINDOWS) { register_code(KC_RALT); tap_code(KC_0); @@ -343,9 +320,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { send_unicode_string("ß"); } } else if (mode == MAC) { - register_code(KC_LALT); - tap_code(KC_S); - unregister_code(KC_LALT); + tap_code16(A(KC_S)); } else if (mode == WINDOWS) { register_code(KC_RALT); tap_code(KC_2); From 00eea387fcbd8ec3c37f029594891672f4889720 Mon Sep 17 00:00:00 2001 From: AaronVerDow <2530548+AaronVerDow@users.noreply.github.com> Date: Mon, 19 Apr 2021 04:23:20 -0500 Subject: [PATCH 244/613] [Keymap] Iracing replay keymap (#12461) Co-authored-by: Aaron VerDow --- .../keymaps/iracing_replay/keymap.c | 156 ++++++++++++++++++ .../keymaps/iracing_replay/readme.md | 17 ++ .../keymaps/iracing_replay/rules.mk | 1 + 3 files changed, 174 insertions(+) create mode 100644 keyboards/kbdfans/kbdpad_mk2/keymaps/iracing_replay/keymap.c create mode 100644 keyboards/kbdfans/kbdpad_mk2/keymaps/iracing_replay/readme.md create mode 100644 keyboards/kbdfans/kbdpad_mk2/keymaps/iracing_replay/rules.mk diff --git a/keyboards/kbdfans/kbdpad_mk2/keymaps/iracing_replay/keymap.c b/keyboards/kbdfans/kbdpad_mk2/keymaps/iracing_replay/keymap.c new file mode 100644 index 0000000000..39ebb77ff8 --- /dev/null +++ b/keyboards/kbdfans/kbdpad_mk2/keymaps/iracing_replay/keymap.c @@ -0,0 +1,156 @@ +/* Copyright 2021 Aaron VerDow + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// Layer declarations +enum { + DEF_LAYER, + MOD_LAYER, +}; + +// Tap Dance declarations +enum { + TD_CAR, + TD_PRINT, + TD_CAM_UP, + TD_CAM_DN +}; + +void camera_number(uint16_t tens, uint16_t ones) { +/* Switch to a specific camera number + * + * I haven't been able to find official docs for this. + * + * To determine the number click the dropdown in UI and + * count from the top. The list can change with updates. + * + * Shift must be held between both * presses or the combo + * won't be recognized. + */ + + register_code16(KC_LSFT); + tap_code(KC_8); + tap_code(KC_8); + unregister_code16(KC_LSFT); + tap_code(tens); + tap_code(ones); + tap_code(KC_ENT); +} + +void cam_up(qk_tap_dance_state_t *state, void *user_data) { + switch (state->count) { + case 1: + tap_code(KC_C); // tap once for next cam + break; + case 2: + camera_number(KC_2,KC_0); // tap twice for reverse chase cam + break; + } +} + +void cam_down(qk_tap_dance_state_t *state, void *user_data) { + switch (state->count) { + case 1: + tap_code16(LSFT(KC_C)); // tap once for prev cam + break; + case 2: + camera_number(KC_1,KC_8); // tap twice for chase cam + break; + } +} + +// Tap Dance definitions +qk_tap_dance_action_t tap_dance_actions[] = { + [TD_CAR] = ACTION_TAP_DANCE_DOUBLE( + LSFT(KC_V), // tap once for prev car + LCTL(KC_V) // tap twice for my car + ), + [TD_PRINT] = ACTION_TAP_DANCE_DOUBLE( + LCTL(LALT(LSFT(KC_S))), // tap once for iRacing screenshot (must be enabled in options) + LGUI(KC_PSCR) // tap twice for Windows print screen and save to file + ), + [TD_CAM_UP] = ACTION_TAP_DANCE_FN(cam_up), + [TD_CAM_DN] = ACTION_TAP_DANCE_FN(cam_down) +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [DEF_LAYER] = LAYOUT_ortho_6x4( /* Base */ + + TD(TD_CAM_UP), // next cam, double tap for reverse chase cam + KC_V, // next car + LSFT(KC_P3), // next lap + LCTL(KC_P3), // next inc + + TD(TD_CAM_DN), // prev cam, double tap for chase cam + TD(TD_CAR), // prev car, double tap for my car + LSFT(KC_P1), // prev lap + LCTL(KC_P1), // prev inc + + LSFT(KC_P4), // rewind + KC_P5, // play/pause + LSFT(KC_P6), // fast forward + KC_P8, // slow mo + + KC_P4, // prev frame + KC_W, // up + KC_P6, // next frame + TD(TD_PRINT), // print screen + + KC_A, // left + KC_S, // down + KC_D, // right + LALT(KC_K), // toggle click and drag ui elements (in car) + + KC_LCTL, // ctrl + KC_LALT, // alt + LCTL(KC_F12), // camera tool + LT(MOD_LAYER, KC_SPACE) // press once for UI, hold for MOD layer + ), + + [MOD_LAYER] = LAYOUT_ortho_6x4( /* Base */ + + KC_B, // next sub cam + KC_PGUP, // next driver cam + LCTL(KC_P6), // next session + KC_P7, // start + + LSFT(KC_B), // prev sub cam + KC_PGDOWN, // prev driver cam + LCTL(KC_P4), // prev session + KC_P1, // end + + KC_RBRC, // FOV up + KC_EQL, // step factor up + _______, + _______, + + KC_LBRC, // FOV down + KC_MINS, // step factor down + _______, + _______, + + _______, + _______, + _______, + _______, + + _______, + LALT(KC_M), // cycle aim + RALT(KC_ENTER), // fullscreen (unreliable) + _______ + ), +}; diff --git a/keyboards/kbdfans/kbdpad_mk2/keymaps/iracing_replay/readme.md b/keyboards/kbdfans/kbdpad_mk2/keymaps/iracing_replay/readme.md new file mode 100644 index 0000000000..a574499c6b --- /dev/null +++ b/keyboards/kbdfans/kbdpad_mk2/keymaps/iracing_replay/readme.md @@ -0,0 +1,17 @@ +# iRacing Replay Tool + +![](https://imgur.com/0948eBGh.jpg) + +Replay/camera tool for iRacing. This uses the default keybindings for the game so nothing should need to be mapped. This makes replays much easier to view in VR and makes waiting through heats a lot more enjoyable. + +To make full use of the arrow keys open the camera tool (you can close the UI after) and optionally switch the AIM to static. + +The code to generate stl files for the keycap set are ![available here.](https://github.com/AaronVerDow/KeyV2/blob/numpad/src/layouts/numpad/iracing.scad) + +Other notes: +* Hold MOD (UI key) to access features on the front of +* Double tap car down is a shortcut for your car +* Double tap cam down is a shortcut for chase cam +* Double tap cam up is a shortcut for reverse chase cam +* The record button takes a screenshot using iRacing. Double tap record button to auto save a screenshot using Windows. +* The key above UI is unassigned diff --git a/keyboards/kbdfans/kbdpad_mk2/keymaps/iracing_replay/rules.mk b/keyboards/kbdfans/kbdpad_mk2/keymaps/iracing_replay/rules.mk new file mode 100644 index 0000000000..e5ddcae8d9 --- /dev/null +++ b/keyboards/kbdfans/kbdpad_mk2/keymaps/iracing_replay/rules.mk @@ -0,0 +1 @@ +TAP_DANCE_ENABLE = yes From 20f35afd53d6a8851d5809e082344134c0e79470 Mon Sep 17 00:00:00 2001 From: peepeetee <43021794+peepeetee@users.noreply.github.com> Date: Mon, 19 Apr 2021 05:15:23 -0500 Subject: [PATCH 245/613] Fix bm68rgb led map (#12503) --- keyboards/bm68rgb/bm68rgb.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/bm68rgb/bm68rgb.c b/keyboards/bm68rgb/bm68rgb.c index e16292498d..f3d2cc7b4f 100644 --- a/keyboards/bm68rgb/bm68rgb.c +++ b/keyboards/bm68rgb/bm68rgb.c @@ -29,7 +29,7 @@ led_config_t g_led_config = { { { 0, 0}, { 15, 0}, { 30, 0}, { 45, 0}, { 60, 0}, { 75, 0}, { 90, 0}, {105, 0}, {120, 0}, {135, 0}, {150, 0}, {165, 0}, {180, 0}, {202, 0}, {225, 0}, // Esc, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, =, Backspace, Delete { 4, 16}, { 22, 16}, { 37, 16}, { 52, 16}, { 67, 16}, { 82, 16}, { 97, 16}, {112, 16}, {127, 16}, {142, 16}, {157, 16}, {172, 16}, {187, 16}, {206, 16}, {225, 16}, // Tab, Q, W, E, R, T, Y, U, I, O, P, [, ], backslash , Home { 6, 32}, { 26, 32}, { 41, 32}, { 56, 32}, { 71, 32}, { 86, 32}, {101, 32}, {116, 32}, {131, 32}, {146, 32}, {161, 32}, {176, 32}, {201, 32}, {225, 32}, // Capslock, A, S, D, F, G, H, J, K, L, ;, ', Enter, Page up - { 9, 48}, { 34, 48}, { 49, 48}, { 64, 48}, { 79, 48}, { 94, 48}, {109, 48}, {124, 48}, {139, 48}, {154, 48}, {169, 48}, {189, 48}, { 10, 48}, {225, 48}, // LShift, Z, X, C, V, B, N, M, ,, ., /, Shift, Up, Page Down + { 9, 48}, { 34, 48}, { 49, 48}, { 64, 48}, { 79, 48}, { 94, 48}, {109, 48}, {124, 48}, {139, 48}, {154, 48}, {169, 48}, {189, 48}, {208, 48}, {225, 48}, // LShift, Z, X, C, V, B, N, M, ,, ., /, Shift, Up, Page Down { 2, 64}, { 21, 64}, { 39, 64}, { 94, 64}, {148, 64}, {163, 64}, {178, 64}, {193, 64}, {208, 64}, {225, 64}, // Ctrl, GUI, Alt, Space, RAlt, FN, Ctrl, Left, Down, Right {185, 45}, {160, 45}, {125, 45}, { 95, 45}, { 60, 45}, { 25, 45} // UNDERGLOW }, { From 3990c0f43d9048b10097487595e969bfeb5bc859 Mon Sep 17 00:00:00 2001 From: Jaehee Date: Tue, 20 Apr 2021 01:39:54 +0900 Subject: [PATCH 246/613] [Keyboard] Add jkdlab/binary_monkey (#12374) Co-authored-by: Ryan --- .../jkdlab/binary_monkey/binary_monkey.c | 19 +++++ .../jkdlab/binary_monkey/binary_monkey.h | 28 ++++++++ keyboards/jkdlab/binary_monkey/config.h | 42 +++++++++++ keyboards/jkdlab/binary_monkey/info.json | 16 +++++ .../binary_monkey/keymaps/ascii/keymap.c | 70 +++++++++++++++++++ .../binary_monkey/keymaps/default/keymap.c | 30 ++++++++ keyboards/jkdlab/binary_monkey/readme.md | 21 ++++++ keyboards/jkdlab/binary_monkey/rules.mk | 22 ++++++ 8 files changed, 248 insertions(+) create mode 100644 keyboards/jkdlab/binary_monkey/binary_monkey.c create mode 100644 keyboards/jkdlab/binary_monkey/binary_monkey.h create mode 100644 keyboards/jkdlab/binary_monkey/config.h create mode 100644 keyboards/jkdlab/binary_monkey/info.json create mode 100644 keyboards/jkdlab/binary_monkey/keymaps/ascii/keymap.c create mode 100644 keyboards/jkdlab/binary_monkey/keymaps/default/keymap.c create mode 100644 keyboards/jkdlab/binary_monkey/readme.md create mode 100644 keyboards/jkdlab/binary_monkey/rules.mk diff --git a/keyboards/jkdlab/binary_monkey/binary_monkey.c b/keyboards/jkdlab/binary_monkey/binary_monkey.c new file mode 100644 index 0000000000..bdbcac18ee --- /dev/null +++ b/keyboards/jkdlab/binary_monkey/binary_monkey.c @@ -0,0 +1,19 @@ +/* + * Copyright 2021 JKDLAB. + * Copyright 2021 Jaehee + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, + * or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see https://www.gnu.org/licenses/. + */ + +#include "binary_monkey.h" diff --git a/keyboards/jkdlab/binary_monkey/binary_monkey.h b/keyboards/jkdlab/binary_monkey/binary_monkey.h new file mode 100644 index 0000000000..598886b781 --- /dev/null +++ b/keyboards/jkdlab/binary_monkey/binary_monkey.h @@ -0,0 +1,28 @@ +/* + * Copyright 2021 JKDLAB. + * Copyright 2021 Jaehee + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, + * or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see https://www.gnu.org/licenses/. + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT( \ + K00, K01, \ + K10 \ +) { \ + { K10, K00, K01 } \ +} diff --git a/keyboards/jkdlab/binary_monkey/config.h b/keyboards/jkdlab/binary_monkey/config.h new file mode 100644 index 0000000000..ba8bfcd8d1 --- /dev/null +++ b/keyboards/jkdlab/binary_monkey/config.h @@ -0,0 +1,42 @@ +/* + * Copyright 2021 JKDLAB. + * Copyright 2021 Jaehee + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, + * or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see https://www.gnu.org/licenses/. + */ + +#pragma once + +#include "config_common.h" + +#define VENDOR_ID 0x4934 +#define PRODUCT_ID 0x0101 +#define DEVICE_VER 0x0001 +#define MANUFACTURER JKDLAB. +#define PRODUCT Binary_Monkey + +#define MATRIX_ROWS 1 +#define MATRIX_COLS 3 +#define MATRIX_ROW_PINS { D0 } +#define MATRIX_COL_PINS { D1, D2, D3 } + +#define DIODE_DIRECTION COL2ROW + +#define DEBOUNCE 5 + +#define USB_MAX_POWER_CONSUMPTION 100 + +/* Bootmagic Lite key configuration */ +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 2 diff --git a/keyboards/jkdlab/binary_monkey/info.json b/keyboards/jkdlab/binary_monkey/info.json new file mode 100644 index 0000000000..e15b43e70c --- /dev/null +++ b/keyboards/jkdlab/binary_monkey/info.json @@ -0,0 +1,16 @@ +{ + "keyboard_name": "Binary_Monkey", + "url": "https://gumroad.com/jkdlab", + "maintainer": "JKDLAB.", + "width": 3, + "height": 1, + "layouts": { + "LAYOUT": { + "layout": [ + {"label": "0", "x": 0, "y": 0}, + {"label": "1", "x": 1, "y": 0}, + {"label": "ENTER", "x": 0, "y": 1, "w" : 2} + ] + } + } +} diff --git a/keyboards/jkdlab/binary_monkey/keymaps/ascii/keymap.c b/keyboards/jkdlab/binary_monkey/keymaps/ascii/keymap.c new file mode 100644 index 0000000000..e10df7ce08 --- /dev/null +++ b/keyboards/jkdlab/binary_monkey/keymaps/ascii/keymap.c @@ -0,0 +1,70 @@ +/* + * Copyright 2021 JKDLAB. + * Copyright 2021 Jaehee + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, + * or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see https://www.gnu.org/licenses/. + */ + +#include QMK_KEYBOARD_H + +char ascii = 0; + +enum custom_keycodes { + BIN_0 = SAFE_RANGE, + BIN_1, + BIN_RETURN +}; + +enum layers { + _BASE = 0 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT( + BIN_0, BIN_1, + BIN_RETURN + ) +}; + +bool process_record_user(uint16_t keycode, keyrecord_t* record) { + switch (keycode) { + case BIN_0: + if (record->event.pressed) { + ascii = ascii << 1; + } + + return true; + case BIN_1: + if (record->event.pressed) { + ascii = ascii << 1; + ++ascii; + } + + return true; + case BIN_RETURN: + if (record->event.pressed) { + char str[2] = { ascii & 127, '\0' }; + + send_string(str); + + ascii = 0; + } + + return true; + default: + return true; + } + + return true; +} diff --git a/keyboards/jkdlab/binary_monkey/keymaps/default/keymap.c b/keyboards/jkdlab/binary_monkey/keymaps/default/keymap.c new file mode 100644 index 0000000000..629dfd3b2f --- /dev/null +++ b/keyboards/jkdlab/binary_monkey/keymaps/default/keymap.c @@ -0,0 +1,30 @@ +/* + * Copyright 2021 JKDLAB. + * Copyright 2021 Jaehee + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, + * or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see https://www.gnu.org/licenses/. + */ + +#include QMK_KEYBOARD_H + +enum layers { + _BASE = 0 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT( + KC_0, KC_1, + KC_ENTER + ) +}; diff --git a/keyboards/jkdlab/binary_monkey/readme.md b/keyboards/jkdlab/binary_monkey/readme.md new file mode 100644 index 0000000000..7a787c76d9 --- /dev/null +++ b/keyboards/jkdlab/binary_monkey/readme.md @@ -0,0 +1,21 @@ +# Binary_Monkey + +![Binary_Monkey](https://i.imgur.com/0meBVKTh.png) + +It is 3-Key macropad, inspired by a monkey. 🵠+ +* Keyboard Maintainer: [JKDLAB.](https://github.com/jkdlab) [yikolden](https://github.com/LDobac) +* Hardware Supported: atmega32u4 +* Hardware Availability: [Gumroad](https://gumroad.com/jkdlab) + +Make example for this keyboard (after setting up your build environment): + + make jkdlab/binary_monkey:default + +If you want switch to bootloader, unplug the keyboard and plug it back while pressing right upper key(Key 1). + +Flashing example for this keyboard (You need to keyboard has in bootloader mode) : + + make jkdlab/binary_monkey:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/jkdlab/binary_monkey/rules.mk b/keyboards/jkdlab/binary_monkey/rules.mk new file mode 100644 index 0000000000..a90eef1fc6 --- /dev/null +++ b/keyboards/jkdlab/binary_monkey/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output From dffa0891736ef8aeec54285f6ceb732eb7aaadf7 Mon Sep 17 00:00:00 2001 From: kiwikey <75843996+kiwikey@users.noreply.github.com> Date: Tue, 20 Apr 2021 01:04:03 +0700 Subject: [PATCH 247/613] [Keyboard] Add Wanderland - An Alice-layout keyboard (#12516) Co-authored-by: Ryan --- keyboards/kiwikey/wanderland/config.h | 146 +++++++++++++++++ keyboards/kiwikey/wanderland/info.json | 150 ++++++++++++++++++ .../wanderland/keymaps/default/keymap.c | 39 +++++ .../wanderland/keymaps/default/readme.md | 3 + .../kiwikey/wanderland/keymaps/via/keymap.c | 47 ++++++ .../kiwikey/wanderland/keymaps/via/readme.md | 3 + .../kiwikey/wanderland/keymaps/via/rules.mk | 1 + keyboards/kiwikey/wanderland/readme.md | 17 ++ keyboards/kiwikey/wanderland/rules.mk | 22 +++ keyboards/kiwikey/wanderland/wanderland.c | 17 ++ keyboards/kiwikey/wanderland/wanderland.h | 77 +++++++++ 11 files changed, 522 insertions(+) create mode 100644 keyboards/kiwikey/wanderland/config.h create mode 100644 keyboards/kiwikey/wanderland/info.json create mode 100644 keyboards/kiwikey/wanderland/keymaps/default/keymap.c create mode 100644 keyboards/kiwikey/wanderland/keymaps/default/readme.md create mode 100644 keyboards/kiwikey/wanderland/keymaps/via/keymap.c create mode 100644 keyboards/kiwikey/wanderland/keymaps/via/readme.md create mode 100644 keyboards/kiwikey/wanderland/keymaps/via/rules.mk create mode 100644 keyboards/kiwikey/wanderland/readme.md create mode 100644 keyboards/kiwikey/wanderland/rules.mk create mode 100644 keyboards/kiwikey/wanderland/wanderland.c create mode 100644 keyboards/kiwikey/wanderland/wanderland.h diff --git a/keyboards/kiwikey/wanderland/config.h b/keyboards/kiwikey/wanderland/config.h new file mode 100644 index 0000000000..546a03aa30 --- /dev/null +++ b/keyboards/kiwikey/wanderland/config.h @@ -0,0 +1,146 @@ +/* +Copyright 2021 KiwiKey + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4B57 // KW - KiwiKey +#define PRODUCT_ID 0x574C // WL - Wanderland +#define DEVICE_VER 0x0001 +#define MANUFACTURER KiwiKey +#define PRODUCT Wanderland + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 13 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ +#define MATRIX_ROW_PINS { F4, F1, E6, E2, C7, D4 } +#define MATRIX_COL_PINS { F5, F6, B4, D7, D6, D5, D2, D3, B0, F0, B1, B2, B3 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Indicator LEDs Assignments */ +#define LED_NUM_LOCK_PIN C6 +#define LED_CAPS_LOCK_PIN B6 +#define LED_SCROLL_LOCK_PIN B5 + +#define BACKLIGHT_PIN B7 +#define BACKLIGHT_LEVELS 3 +#define BACKLIGHT_BREATHING + +#define RGB_DI_PIN F7 +//#ifdef RGB_DI_PIN +#define RGBLED_NUM 18 +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 +#define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +#define RGBLIGHT_ANIMATIONS +/*== or choose animations ==*/ +//# define RGBLIGHT_EFFECT_BREATHING +//# define RGBLIGHT_EFFECT_RAINBOW_MOOD +//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +//# define RGBLIGHT_EFFECT_SNAKE +//# define RGBLIGHT_EFFECT_KNIGHT +//# define RGBLIGHT_EFFECT_CHRISTMAS +//# define RGBLIGHT_EFFECT_STATIC_GRADIENT +//# define RGBLIGHT_EFFECT_RGB_TEST +//# define RGBLIGHT_EFFECT_ALTERNATING +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +//#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/kiwikey/wanderland/info.json b/keyboards/kiwikey/wanderland/info.json new file mode 100644 index 0000000000..4afd456137 --- /dev/null +++ b/keyboards/kiwikey/wanderland/info.json @@ -0,0 +1,150 @@ +{ + "keyboard_name": "Wanderland", + "url": "http://kiwikey.vn/wanderland", + "maintainer": "KiwiKey", + "width": 18.25, + "height": 5, + "layouts": { + "LAYOUT_alice_split_bs": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"~", "x":1.25, "y":0}, + {"label":"!", "x":2.25, "y":0}, + {"label":"@", "x":3.25, "y":0}, + {"label":"#", "x":4.25, "y":0}, + {"label":"$", "x":5.25, "y":0}, + {"label":"%", "x":6.25, "y":0}, + {"label":"^", "x":7.25, "y":0}, + {"label":"&", "x":10.25, "y":0}, + {"label":"*", "x":11.25, "y":0}, + {"label":"(", "x":12.25, "y":0}, + {"label":")", "x":13.25, "y":0}, + {"label":"_", "x":14.25, "y":0}, + {"label":"+", "x":15.25, "y":0}, + {"label":"Backspace", "x":16.25, "y":0}, + {"label":"Del", "x":17.25, "y":0}, + {"label":"Mute", "x":0, "y":1}, + {"label":"Tab", "x":1.25, "y":1, "w":1.5}, + {"label":"Q", "x":2.75, "y":1}, + {"label":"W", "x":3.75, "y":1}, + {"label":"E", "x":4.75, "y":1}, + {"label":"R", "x":5.75, "y":1}, + {"label":"T", "x":6.75, "y":1}, + {"label":"Y", "x":9.75, "y":1}, + {"label":"U", "x":10.75, "y":1}, + {"label":"I", "x":11.75, "y":1}, + {"label":"O", "x":12.75, "y":1}, + {"label":"P", "x":13.75, "y":1}, + {"label":"{", "x":14.75, "y":1}, + {"label":"}", "x":15.75, "y":1}, + {"label":"|", "x":16.75, "y":1, "w":1.5}, + {"label":"Vol-", "x":0, "y":2}, + {"label":"Caps Lock", "x":1.25, "y":2, "w":1.75}, + {"label":"A", "x":3, "y":2}, + {"label":"S", "x":4, "y":2}, + {"label":"D", "x":5, "y":2}, + {"label":"F", "x":6, "y":2}, + {"label":"G", "x":7, "y":2}, + {"label":"H", "x":10, "y":2}, + {"label":"J", "x":11, "y":2}, + {"label":"K", "x":12, "y":2}, + {"label":"L", "x":13, "y":2}, + {"label":":", "x":14, "y":2}, + {"label":"\"", "x":15, "y":2}, + {"label":"Enter", "x":16, "y":2, "w":2.25}, + {"label":"Vol+", "x":0, "y":3}, + {"label":"Shift", "x":1.25, "y":3, "w":2.25}, + {"label":"Z", "x":3.5, "y":3}, + {"label":"X", "x":4.5, "y":3}, + {"label":"C", "x":5.5, "y":3}, + {"label":"V", "x":6.5, "y":3}, + {"label":"B", "x":7.5, "y":3}, + {"label":"B", "x":9.5, "y":3}, + {"label":"N", "x":10.5, "y":3}, + {"label":"M", "x":11.5, "y":3}, + {"label":"<", "x":12.5, "y":3}, + {"label":">", "x":13.5, "y":3}, + {"label":"?", "x":14.5, "y":3}, + {"label":"Shift", "x":15.5, "y":3, "w":1.75}, + {"label":"Win", "x":17.25, "y":3}, + {"label":"Ctrl", "x":1.25, "y":4, "w":1.5}, + {"label":"Alt", "x":4.25, "y":4, "w":1.25}, + {"label":"Space", "x":5.5, "y":4, "w":2.25}, + {"label":"FN", "x":7.75, "y":4, "w":1.25}, + {"label":"Space", "x":9.5, "y":4, "w":2.75}, + {"label":"Alt", "x":12.25, "y":4, "w":1.5}, + {"label":"Ctrl", "x":16.75, "y":4, "w":1.5} + ] + }, + "LAYOUT_alice": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"~", "x":1.25, "y":0}, + {"label":"!", "x":2.25, "y":0}, + {"label":"@", "x":3.25, "y":0}, + {"label":"#", "x":4.25, "y":0}, + {"label":"$", "x":5.25, "y":0}, + {"label":"%", "x":6.25, "y":0}, + {"label":"^", "x":7.25, "y":0}, + {"label":"&", "x":10.25, "y":0}, + {"label":"*", "x":11.25, "y":0}, + {"label":"(", "x":12.25, "y":0}, + {"label":")", "x":13.25, "y":0}, + {"label":"_", "x":14.25, "y":0}, + {"label":"+", "x":15.25, "y":0}, + {"label":"Backspace", "x":16.25, "y":0, "w":2}, + {"label":"Mute", "x":0, "y":1}, + {"label":"Tab", "x":1.25, "y":1, "w":1.5}, + {"label":"Q", "x":2.75, "y":1}, + {"label":"W", "x":3.75, "y":1}, + {"label":"E", "x":4.75, "y":1}, + {"label":"R", "x":5.75, "y":1}, + {"label":"T", "x":6.75, "y":1}, + {"label":"Y", "x":9.75, "y":1}, + {"label":"U", "x":10.75, "y":1}, + {"label":"I", "x":11.75, "y":1}, + {"label":"O", "x":12.75, "y":1}, + {"label":"P", "x":13.75, "y":1}, + {"label":"{", "x":14.75, "y":1}, + {"label":"}", "x":15.75, "y":1}, + {"label":"|", "x":16.75, "y":1, "w":1.5}, + {"label":"Vol-", "x":0, "y":2}, + {"label":"Caps Lock", "x":1.25, "y":2, "w":1.75}, + {"label":"A", "x":3, "y":2}, + {"label":"S", "x":4, "y":2}, + {"label":"D", "x":5, "y":2}, + {"label":"F", "x":6, "y":2}, + {"label":"G", "x":7, "y":2}, + {"label":"H", "x":10, "y":2}, + {"label":"J", "x":11, "y":2}, + {"label":"K", "x":12, "y":2}, + {"label":"L", "x":13, "y":2}, + {"label":":", "x":14, "y":2}, + {"label":"\"", "x":15, "y":2}, + {"label":"Enter", "x":16, "y":2, "w":2.25}, + {"label":"Vol+", "x":0, "y":3}, + {"label":"Shift", "x":1.25, "y":3, "w":2.25}, + {"label":"Z", "x":3.5, "y":3}, + {"label":"X", "x":4.5, "y":3}, + {"label":"C", "x":5.5, "y":3}, + {"label":"V", "x":6.5, "y":3}, + {"label":"B", "x":7.5, "y":3}, + {"label":"B", "x":9.5, "y":3}, + {"label":"N", "x":10.5, "y":3}, + {"label":"M", "x":11.5, "y":3}, + {"label":"<", "x":12.5, "y":3}, + {"label":">", "x":13.5, "y":3}, + {"label":"?", "x":14.5, "y":3}, + {"label":"Shift", "x":15.5, "y":3, "w":1.75}, + {"label":"Win", "x":17.25, "y":3}, + {"label":"Ctrl", "x":1.25, "y":4, "w":1.5}, + {"label":"Alt", "x":4.25, "y":4, "w":1.25}, + {"label":"Space", "x":5.5, "y":4, "w":2.25}, + {"label":"FN", "x":7.75, "y":4, "w":1.25}, + {"label":"Space", "x":9.5, "y":4, "w":2.75}, + {"label":"Alt", "x":12.25, "y":4, "w":1.5}, + {"label":"Ctrl", "x":16.75, "y":4, "w":1.5} + ] + } + } +} diff --git a/keyboards/kiwikey/wanderland/keymaps/default/keymap.c b/keyboards/kiwikey/wanderland/keymaps/default/keymap.c new file mode 100644 index 0000000000..bb8a9bc0c0 --- /dev/null +++ b/keyboards/kiwikey/wanderland/keymaps/default/keymap.c @@ -0,0 +1,39 @@ +/* Copyright 2021 KiwiKey + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_alice_split_bs( + KC_ESC, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_MUTE, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_VOLD, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_VOLU, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RGUI, + KC_LCTL, KC_LALT, KC_SPC, MO(_FN), KC_SPC, KC_MENU, KC_RCTRL + ), + [_FN] = LAYOUT_alice_split_bs( + _______, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, + _______, RGB_TOG, RGB_MOD, RGB_RMOD,_______, _______, _______, BL_TOGG, BL_STEP, BL_BRTG, KC_UP, _______, _______, _______, _______, + _______, _______, RGB_HUD, RGB_HUI, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, + RESET, _______, RGB_VAD, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/kiwikey/wanderland/keymaps/default/readme.md b/keyboards/kiwikey/wanderland/keymaps/default/readme.md new file mode 100644 index 0000000000..02cf58d641 --- /dev/null +++ b/keyboards/kiwikey/wanderland/keymaps/default/readme.md @@ -0,0 +1,3 @@ +# Default keymap for KiwiKey Wanderland + +With NO installation of OLED LCD. \ No newline at end of file diff --git a/keyboards/kiwikey/wanderland/keymaps/via/keymap.c b/keyboards/kiwikey/wanderland/keymaps/via/keymap.c new file mode 100644 index 0000000000..7ada22d02a --- /dev/null +++ b/keyboards/kiwikey/wanderland/keymaps/via/keymap.c @@ -0,0 +1,47 @@ +/* Copyright 2021 KiwiKey + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_alice_split_bs( + KC_ESC, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_MUTE, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_VOLD, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_VOLU, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RGUI, + KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_MENU, KC_RCTRL + ), + [1] = LAYOUT_alice_split_bs( + _______, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, + _______, RGB_TOG, RGB_MOD, RGB_RMOD,_______, _______, _______, BL_TOGG, BL_STEP, BL_BRTG, KC_UP, _______, _______, _______, _______, + _______, _______, RGB_HUD, RGB_HUI, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, + RESET, _______, RGB_VAD, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT_alice_split_bs( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT_alice_split_bs( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/kiwikey/wanderland/keymaps/via/readme.md b/keyboards/kiwikey/wanderland/keymaps/via/readme.md new file mode 100644 index 0000000000..1278f6ea73 --- /dev/null +++ b/keyboards/kiwikey/wanderland/keymaps/via/readme.md @@ -0,0 +1,3 @@ +# VIA keymap for KiwiKey Wanderland + +With NO installation of OLED LCD. \ No newline at end of file diff --git a/keyboards/kiwikey/wanderland/keymaps/via/rules.mk b/keyboards/kiwikey/wanderland/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/kiwikey/wanderland/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/kiwikey/wanderland/readme.md b/keyboards/kiwikey/wanderland/readme.md new file mode 100644 index 0000000000..1d06f7a309 --- /dev/null +++ b/keyboards/kiwikey/wanderland/readme.md @@ -0,0 +1,17 @@ +# KiwiKey Wanderland + +![KiwiKey Wanderland](http://kiwikey.vn/media/Wanderland/Wanderland_TOP.png) + +Wanderland is an Alice-compatible PCB, comes with USB Type-C and OLED LCD 0.91". More pictures and information can be found at http://kiwikey.vn/wanderland/ + +* Keyboard Maintainer: [KiwiKey](https://github.com/kiwikey) +* Hardware Supported: Wanderland PCB +* Hardware Availability: Abasic Keyboard Kit Group-buy, fulfilled by [Mechkey.store](https://mechkey.store/products/abasic-keyboard-kit), will be available on [KiwiKey Shop](http://shop.kiwikey.vn/) also + +Make example for this keyboard (after setting up your build environment): + + make kiwikey/wanderland:default + +To reset the board into bootloader mode, press the reset button on the backside of PCB. + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/kiwikey/wanderland/rules.mk b/keyboards/kiwikey/wanderland/rules.mk new file mode 100644 index 0000000000..a48a691a91 --- /dev/null +++ b/keyboards/kiwikey/wanderland/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/kiwikey/wanderland/wanderland.c b/keyboards/kiwikey/wanderland/wanderland.c new file mode 100644 index 0000000000..33575e17a6 --- /dev/null +++ b/keyboards/kiwikey/wanderland/wanderland.c @@ -0,0 +1,17 @@ +/* Copyright 2021 KiwiKey + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "wanderland.h" diff --git a/keyboards/kiwikey/wanderland/wanderland.h b/keyboards/kiwikey/wanderland/wanderland.h new file mode 100644 index 0000000000..f207d01d6c --- /dev/null +++ b/keyboards/kiwikey/wanderland/wanderland.h @@ -0,0 +1,77 @@ +/* Copyright 2021 KiwiKey + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* Layout Alice split-backspace + * ┌───┠┌───┬───┬───┬───┬───┬───┬───┠┌───┬───┬───┬───┬───┬───┬───┬───┠+ * │02 │ │10 │11 │12 │13 │14 │15 │05 │ │06 │16 │17 │18 │19 │1A │1B │1C │ + * ├───┤ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┘ ┌─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ + * │01 │ │ 20 │21 │22 │23 │24 │25 │ │07 │26 │27 │28 │29 │2A │2B │ 2C │ + * ├───┤ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┠└┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ + * │00 │ │ 30 │31 │32 │33 │34 │35 │ │36 │37 │38 │39 │3A │3B │ 3C │ + * ├───┤ ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┠┌─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ + * │03 │ │ 40 │41 │42 │43 │44 │45 │ │46 │47 │48 │49 │4A │4B │ 5B │4C │ + * └───┘ ├──────┬─┴──┬┴───┴┬──┴───┴┬──┴─┠├───┴───┴──┬┴───┴┬──┴───┴────┬─┴───┤ + * │ 50 │ │ 52 │ 53 │ 55 │ │ 57 │ 59 │ │ 5C │ + * └──────┘ └─────┴───────┴────┘ └──────────┴─────┘ └─────┘ + */ +#define LAYOUT_alice_split_bs( \ + k02, k10, k11, k12, k13, k14, k15, k05, k06, k16, k17, k18, k19, k1A, k1B, k1C, \ + k01, k20, k21, k22, k23, k24, k25, k07, k26, k27, k28, k29, k2A, k2B, k2C, \ + k00, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, \ + k03, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k5B, k4C, \ + k50, k52, k53, k55, k57, k59, k5C \ +) \ +{ \ + { k00, k01, k02, k03, KC_NO, k05, k06, k07, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C }, \ + { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C }, \ + { k50, KC_NO, k52, k53, KC_NO, k55, KC_NO, k57, KC_NO, k59, KC_NO, k5B, k5C } \ +} + +/* Layout Alice + * ┌───┠┌───┬───┬───┬───┬───┬───┬───┠┌───┬───┬───┬───┬───┬───┬───────┠+ * │02 │ │10 │11 │12 │13 │14 │15 │05 │ │06 │16 │17 │18 │19 │1A │ 1B │ + * ├───┤ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┘ ┌─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ + * │01 │ │ 20 │21 │22 │23 │24 │25 │ │07 │26 │27 │28 │29 │2A │2B │ 2C │ + * ├───┤ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┠└┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ + * │00 │ │ 30 │31 │32 │33 │34 │35 │ │36 │37 │38 │39 │3A │3B │ 3C │ + * ├───┤ ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┠┌─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ + * │03 │ │ 40 │41 │42 │43 │44 │45 │ │46 │47 │48 │49 │4A │4B │ 5B │4C │ + * └───┘ ├──────┬─┴──┬┴───┴┬──┴───┴┬──┴─┠├───┴───┴──┬┴───┴┬──┴───┴────┬─┴───┤ + * │ 50 │ │ 52 │ 53 │ 55 │ │ 57 │ 59 │ │ 5C │ + * └──────┘ └─────┴───────┴────┘ └──────────┴─────┘ └─────┘ + */ +#define LAYOUT_alice( \ + k02, k10, k11, k12, k13, k14, k15, k05, k06, k16, k17, k18, k19, k1A, k1B, \ + k01, k20, k21, k22, k23, k24, k25, k07, k26, k27, k28, k29, k2A, k2B, k2C, \ + k00, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, \ + k03, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k5B, k4C, \ + k50, k52, k53, k55, k57, k59, k5C \ +) \ +{ \ + { k00, k01, k02, k03, KC_NO, k05, k06, k07, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, KC_NO }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C }, \ + { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C }, \ + { k50, KC_NO, k52, k53, KC_NO, k55, KC_NO, k57, KC_NO, k59, KC_NO, k5B, k5C } \ +} From f93ad79f413fc7dd4b7db72fe333ce1908a517f5 Mon Sep 17 00:00:00 2001 From: Jos Boersema <56587694+josjoha@users.noreply.github.com> Date: Tue, 20 Apr 2021 04:40:18 +0200 Subject: [PATCH 248/613] [Keymap] Minifan minor issues (#12592) --- .../minivan/keymaps/josjoha/base_colemak.c | 28 +-- .../minivan/keymaps/josjoha/base_colemak.md | 6 +- .../minivan/keymaps/josjoha/base_dvorak.c | 28 +-- .../minivan/keymaps/josjoha/base_dvorak.md | 8 +- .../keymaps/josjoha/base_dvorak_descramble.c | 28 +-- .../keymaps/josjoha/base_dvorak_descramble.md | 8 +- .../minivan/keymaps/josjoha/base_qwerty.c | 30 +-- .../minivan/keymaps/josjoha/base_qwerty.md | 39 +++- .../keymaps/josjoha/base_qwerty_basearrow.c | 52 +++-- .../keymaps/josjoha/base_qwerty_basearrow.h | 11 +- .../keymaps/josjoha/base_qwerty_basearrow.md | 26 ++- .../minivan/keymaps/josjoha/base_workman.c | 28 +-- .../minivan/keymaps/josjoha/base_workman.md | 6 +- .../minivan/keymaps/josjoha/config.h | 11 +- .../minivan/keymaps/josjoha/keymap.c | 61 +++-- .../keymaps/josjoha/minifan_config_compact.h | 8 +- .../minivan/keymaps/josjoha/readme.md | 209 +++++++++++------- .../minivan/keymaps/josjoha/unicode_macros.c | 181 ++++++++++----- .../minivan/keymaps/josjoha/user_config.h | 54 +++-- 19 files changed, 507 insertions(+), 315 deletions(-) diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_colemak.c b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_colemak.c index d4fe348268..38b4c37138 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_colemak.c +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_colemak.c @@ -106,25 +106,25 @@ along with this program. If not, see . # else , CHOLTAP_ACCE , DUO_HOLD # endif - , LT__MOV__KC_ENT + , LEFTCENTER_THUMB # ifdef TRANSMINIVAN_MIDLEFT , TRANS_MIDLEFT # endif - , KC_SPC , DUO_HOLD , KC__YGUI + , RIGHTCENTER_THUMB , DUO_HOLD , KC__YGUI # ifdef TRANSMINIVAN_RIGHTSIDE - , MO ( _FUN ) -# endif - -# ifdef MORE_KEY__ARROW - , MORE_key2 -# endif - - , CHOLTAP_LAYR -// , , , <|,> , , , -// <1 ± ± , <2 , <3 , <4 |, 4> , 3> , 2> , ± ± 1> + , MO ( _FUN ) +# endif + +# ifdef MORE_KEY__ARROW + , MORE_key2 +# endif + + , CHOLTAP_LAYR +// , , , <|,> , , , +// <1 ± ± , <2 , <3 , <4 |, 4> , 3> , 2> , ± ± 1> ), @@ -149,7 +149,7 @@ along with this program. If not, see . -*- <|> //(toggle) Access on _FUN BASE ! @ # $ % | ^ & * ( ) Del Tab+LCtl 1! 2@ 3# 4$ 5% | 6^ 7& 8* 9( 0) `~+RCtl - -+LSht [{ ]} -_ \| =+ | + | _ { } `~+RSht // limitation prevents ~ + -+LSht [{ ]} -_ \| =+ | + | _ { } ~+RSht ^^ ^ // Only differences with normal version _..._NSY --------------------------------------------------------------------------- Left+LAlt ___ ___ Ent | . ___ LGUI Right+RAlt @@ -164,7 +164,7 @@ along with this program. If not, see . // , -*- , , , , <|,> , , , , , , CTO_BASE , KC_EXLM , KC_AT , KC_HASH , KC_DLR , KC_PERC , KC_CIRC , KC_AMPR , KC_ASTR , KC_LPRN , KC_RPRN , KC_DEL , LCTL_T ( KC_TAB ) , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , RCTL_T ( KC_GRV ) , - LSFT_T ( KC_MINS ) , KC_LBRC , KC_RBRC , KC_MINS , KC_BSLS , KC_EQL , KC_PLUS , KC_PIPE , KC_UNDS , KC_LCBR , KC_RCBR , RSFT_T ( KC_TILD ) , + LSFT_DASH , KC_LBRC , KC_RBRC , KC_MINS , KC_BSLS , KC_EQL , KC_PLUS , KC_PIPE , KC_UNDS , KC_LCBR , KC_RCBR , RSFT_TILDE , // --------------------------------------------------------------------------------------------------------------------------------------------- LALT_T ( KC_LEFT ) diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_colemak.md b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_colemak.md index 1cafd7ddf1..e09532babd 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_colemak.md +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_colemak.md @@ -16,7 +16,7 @@ Colemak keymaps ![Minivan layout Image BASEdef](http://socialism.nl/misc/minivan/minivan_base_layer_colemak_ve.jpg) Layer: `..._BASE` -![Minivan layout Image BASEdef](http://socialism.nl/misc/minivan/minivan_nsy_layer_qwerty_vb.jpg) +![Minivan layout Image BASEdef](http://socialism.nl/misc/minivan/minivan_nsy_layer_qwerty_vc.jpg) Layer: `..._NSY` ──────────in common──────────── @@ -25,7 +25,7 @@ Layer: `..._NSY` For more about the other layers, see âž¡ ![readme.md](./readme.md) ⬅ -![Minivan illustration Overview layers by key, Colemak](http://socialism.nl/misc/minivan/minivan-all-layers-clear-visualization-by-key_colemak_2000_vh.jpg) +![Minivan illustration Overview layers by key, Colemak](http://socialism.nl/misc/minivan/minivan-all-layers-clear-visualization-by-key_colemak_2000_vi.jpg) Layers (text) ============= @@ -79,7 +79,7 @@ Holding either one of the just above mentioned `_DEF_NSY` layer keys (<3 and 3>) -*- <|> //(toggle) Access on _FUN BASE ! @ # $ % | ^ & * ( ) Del Tab+LCtl 1! 2@ 3# 4$ 5% | 6^ 7& 8* 9( 0) `~+RCtl - -+LSht [{ ]} -_ \| =+ | + | _ { } `~+RSht // limitation prevents ~ + -+LSht [{ ]} -_ \| =+ | + | _ { } ~+RSht ^^ ^ // Only differences with Dvorak version _DEF_NSY --------------------------------------------------------------------------- Left+LAlt ___ ___ Ent | . ___ RGUI Right+RAlt diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_dvorak.c b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_dvorak.c index be9685632c..22f62cc831 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_dvorak.c +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_dvorak.c @@ -107,25 +107,25 @@ along with this program. If not, see . , CHOLTAP_ACCE , DUO_HOLD # endif - , LT__MOV__KC_ENT + , LEFTCENTER_THUMB # ifdef TRANSMINIVAN_MIDLEFT , TRANS_MIDLEFT # endif - , KC_SPC , DUO_HOLD , KC__YGUI + , RIGHTCENTER_THUMB , DUO_HOLD , KC__YGUI # ifdef TRANSMINIVAN_RIGHTSIDE - , MO ( _FUN ) -# endif - -# ifdef MORE_KEY__ARROW - , MORE_key2 -# endif - - , CHOLTAP_LAYR -// , , , <|,> , , , -// <1 ± ± , <2 , <3 , <4 |, 4> , 3> , 2> , ± ± 1> + , MO ( _FUN ) +# endif + +# ifdef MORE_KEY__ARROW + , MORE_key2 +# endif + + , CHOLTAP_LAYR +// , , , <|,> , , , +// <1 ± ± , <2 , <3 , <4 |, 4> , 3> , 2> , ± ± 1> ), @@ -150,7 +150,7 @@ along with this program. If not, see . -*- <|> //(toggle) Access on _FUN BASE ! @ # $ % | ^ & * ( ) Del Tab+LCtl 1! 2@ 3# 4$ 5% | 6^ 7& 8* 9( 0) `~+RCtl - -+LSht [{ ]} /? \| =+ | + | ? { } `~+RSht // limitation prevents ~ + -+LSht [{ ]} /? \| =+ | + | ? { } ~+RSht --------------------------------------------------------------------------- Left+LAlt ___ ___ Ent | . ___ LGUI Right+RAlt -*- <|> -*- //(hold) Access on _..._BASE @@ -163,7 +163,7 @@ along with this program. If not, see . // , -*- , , , , <|,> , , , , , , CTO_BASE , KC_EXLM , KC_AT , KC_HASH , KC_DLR , KC_PERC , KC_CIRC , KC_AMPR , KC_ASTR , KC_LPRN , KC_RPRN , KC_DEL , LCTL_T ( KC_TAB ) , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , RCTL_T ( KC_GRV ) , - LSFT_T ( KC_MINS ) , KC_LBRC , KC_RBRC , KC_SLSH , KC_BSLS , KC_EQL , KC_PLUS , KC_PIPE , KC_QUES , KC_LCBR , KC_RCBR , RSFT_T ( KC_TILD ) , + LSFT_DASH , KC_LBRC , KC_RBRC , KC_SLSH , KC_BSLS , KC_EQL , KC_PLUS , KC_PIPE , KC_QUES , KC_LCBR , KC_RCBR , RSFT_TILDE , // --------------------------------------------------------------------------------------------------------------------------------------------- LALT_T ( KC_LEFT ) diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_dvorak.md b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_dvorak.md index 0dabcc7ade..fb2c48b869 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_dvorak.md +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_dvorak.md @@ -14,7 +14,7 @@ Dvorak keymaps ![Minivan layout Image BASEdef-alt](http://socialism.nl/misc/minivan/minivan_base_layer_dvorak_ve.jpg) Layer: `..._BASE` -![Minivan layout Image NSYdef-alt](http://socialism.nl/misc/minivan/minivan_nsy_layer_dvorak_vb.jpg) +![Minivan layout Image NSYdef-alt](http://socialism.nl/misc/minivan/minivan_nsy_layer_dvorak_vc.jpg) Layer: `..._NSY` ──────────in common──────────── @@ -23,7 +23,7 @@ Layer: `..._NSY` For more about the other layers, see âž¡ ![readme.md](./readme.md) ⬅ -![Minivan illustration Overview layers by key, Dvorak](http://socialism.nl/misc/minivan/minivan-all-layers-clear-visualization-by-key_dvorak_2000_vh.jpg) +![Minivan illustration Overview layers by key, Dvorak](http://socialism.nl/misc/minivan/minivan-all-layers-clear-visualization-by-key_dvorak_2000_vi.jpg) Layers (text) ============= @@ -74,7 +74,7 @@ Holding either one of the just above mentioned `_DEF_NSY` layer keys (<3 and 3>) -*- <|> //(toggle) Access on _FUN BASE ! @ # $ % | ^ & * ( ) Del Tab+LCtl 1! 2@ 3# 4$ 5% | 6^ 7& 8* 9( 0) `~+RCtl - -+LSht [{ ]} /? \| =+ | + | ? { } `~+RSht // limitation prevents ~ + -+LSht [{ ]} /? \| =+ | + | ? { } ~+RSht --------------------------------------------------------------------------- Left+LAlt ___ ___ Ent | . ___ RGUI Right+RAlt -*- <|> -*- //(hold) Access on _DEF_BASE @@ -88,5 +88,5 @@ Key associations ---------------- Key placement associations between layers for Dvorak. -![Minivan layout Image associations](http://socialism.nl/misc/minivan/minivan-relationships_dvorak_1500_vd.jpg) +![Minivan layout Image associations](http://socialism.nl/misc/minivan/minivan-relationships_dvorak_1500_ve.jpg) diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_dvorak_descramble.c b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_dvorak_descramble.c index 78ad63ca64..c686704a4b 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_dvorak_descramble.c +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_dvorak_descramble.c @@ -149,25 +149,25 @@ along with this program. If not, see . , CHOLTAP_ACCE , DUO_HOLD # endif - , LT__MOV__KC_ENT + , LEFTCENTER_THUMB # ifdef TRANSMINIVAN_MIDLEFT , TRANS_MIDLEFT # endif - , KC_SPC , DUO_HOLD , KC__YGUI + , RIGHTCENTER_THUMB , DUO_HOLD , KC__YGUI # ifdef TRANSMINIVAN_RIGHTSIDE - , MO ( _FUN ) -# endif - -# ifdef MORE_KEY__ARROW - , MORE_key2 -# endif - - , CHOLTAP_LAYR -// , , , <|,> , , , -// <1 ± ± , <2 , <3 , <4 |, 4> , 3> , 2> , ± ± 1> + , MO ( _FUN ) +# endif + +# ifdef MORE_KEY__ARROW + , MORE_key2 +# endif + + , CHOLTAP_LAYR +// , , , <|,> , , , +// <1 ± ± , <2 , <3 , <4 |, 4> , 3> , 2> , ± ± 1> ), @@ -188,7 +188,7 @@ along with this program. If not, see . -*- <|> //(toggle) Access on _FUN BASE ! @ # $ % | ^ & * ( ) Del Tab+LCtl 1! 2@ 3# 4$ 5% | 6^ 7& 8* 9( 0) `~+RCtl - -+LSht -_ =+ [{ \| ]} | } | { _ + `~+RSht // row 2, raw + -+LSht -_ =+ [{ \| ]} | } | { _ + ~+RSht // row 2, raw --------------------------------------------------------------------------- Left+LAlt ___ ___ Ent | . ___ LGUI Right+RAlt -*- <|> -*- //(hold) Access on _DEF_BASE @@ -205,7 +205,7 @@ along with this program. If not, see . // , -*- , , , , <|,> , , , , -*- , , CTO_BASE , KC_EXLM , KC_AT , KC_HASH , KC_DLR , KC_PERC , KC_CIRC , KC_AMPR , KC_ASTR , KC_LPRN , KC_RPRN , KC_DEL , LCTL_T ( KC_TAB ) , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , RCTL_T ( KC_GRV ) , - LSFT_T ( KC_MINS ) , KC_MINS , KC_EQL , KC_LBRC , KC_BSLS , KC_RBRC , KC_RCBR , KC_PIPE , KC_LCBR , KC_UNDS , KC_PLUS , RSFT_T ( KC_TILD ) , + LSFT_DASH , KC_MINS , KC_EQL , KC_LBRC , KC_BSLS , KC_RBRC , KC_RCBR , KC_PIPE , KC_LCBR , KC_UNDS , KC_PLUS , RSFT_TILDE , // -------------------------------------------------------------------------------------------------------------------------------------------- LALT_T ( KC_LEFT ) diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_dvorak_descramble.md b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_dvorak_descramble.md index 74b69f7ed6..c9a81fc082 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_dvorak_descramble.md +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_dvorak_descramble.md @@ -18,7 +18,7 @@ Dvorak² keymaps ![Minivan layout Image BASEdef-alt](http://socialism.nl/misc/minivan/minivan_base_layer_dvorak_ve.jpg) Layer: `..._BASE` -![Minivan layout Image NSYdef-alt](http://socialism.nl/misc/minivan/minivan_nsy_layer_dvorak_vb.jpg) +![Minivan layout Image NSYdef-alt](http://socialism.nl/misc/minivan/minivan_nsy_layer_dvorak_vc.jpg) Layer: `..._NSY` ──────────in common──────────── @@ -27,7 +27,7 @@ Layer: `..._NSY` For more about the other layers, see âž¡ ![readme.md](./readme.md) ⬅ -![Minivan illustration Overview layers by key, Dvorak](http://socialism.nl/misc/minivan/minivan-all-layers-clear-visualization-by-key_dvorak_2000_vh.jpg) +![Minivan illustration Overview layers by key, Dvorak](http://socialism.nl/misc/minivan/minivan-all-layers-clear-visualization-by-key_dvorak_2000_vi.jpg) Layers (text) ============= @@ -78,7 +78,7 @@ Layers (text) -*- <|> //(toggle) Access on _FUN BASE ! @ # $ % | ^ & * ( ) Del Tab+LCtl 1! 2@ 3# 4$ 5% | 6^ 7& 8* 9( 0) `~+RCtl - -+LSht -_ =+ [{ \| ]} | } | { _ + `~+RSht // row 2, raw + -+LSht -_ =+ [{ \| ]} | } | { _ + ~+RSht // row 2, raw --------------------------------------------------------------------------- Left+LAlt ___ ___ Ent | . ___ RGUI Right+RAlt -*- <|> -*- //(hold) Access on _DEF_BASE @@ -131,5 +131,5 @@ Key associations ---------------- Key placement associations between layers for Dvorak. -![Minivan layout Image associations](http://socialism.nl/misc/minivan/minivan-relationships_dvorak-descramble_1500_vd.jpg) +![Minivan layout Image associations](http://socialism.nl/misc/minivan/minivan-relationships_dvorak-descramble_1500_ve.jpg) diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_qwerty.c b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_qwerty.c index 472233073f..0814070f3d 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_qwerty.c +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_qwerty.c @@ -107,25 +107,25 @@ along with this program. If not, see . , CHOLTAP_ACCE , DUO_HOLD # endif - , LT__MOV__KC_ENT + , LEFTCENTER_THUMB # ifdef TRANSMINIVAN_MIDLEFT , TRANS_MIDLEFT # endif - , KC_SPC , DUO_HOLD , KC__YGUI + , RIGHTCENTER_THUMB , DUO_HOLD , KC__YGUI # ifdef TRANSMINIVAN_RIGHTSIDE - , MO ( _FUN ) -# endif - -# ifdef MORE_KEY__ARROW - , MORE_key2 -# endif - - , CHOLTAP_LAYR -// , , , <|,> , , , -// <1 ± ± , <2 , <3 , <4 |, 4> , 3> , 2> , ± ± 1> + , MO ( _FUN ) +# endif + +# ifdef MORE_KEY__ARROW + , MORE_key2 +# endif + + , CHOLTAP_LAYR +// , , , <|,> , , , +// <1 ± ± , <2 , <3 , <4 |, 4> , 3> , 2> , ± ± 1> ), @@ -150,7 +150,7 @@ along with this program. If not, see . -*- <|> //(toggle) Access on _FUN BASE ! @ # $ % | ^ & * ( ) Del Tab+LCtl 1! 2@ 3# 4$ 5% | 6^ 7& 8* 9( 0) `~+RCtl - -+LSht [{ ]} -_ \| =+ | + | _ { } `~+RSht // limitation prevents ~ + -+LSht [{ ]} -_ \| =+ | + | _ { } ~+RSht ^^ ^ // Only differences with normal version _..._NSY --------------------------------------------------------------------------- Left+LAlt ___ ___ Ent | . ___ LGUI Right+RAlt @@ -168,11 +168,11 @@ along with this program. If not, see . // Harmonizes with ‛Qwerty Base Arrow’, so that if both are compiled, the user isn't // messing up this key on this Qwerty layout, which has to be different in the other Qwerty. # ifdef QWERTY_BASEARROW_HARMONIZE - , KC_SLSH , // Same as in ‛Qwerty Base Arrow’ + , KC_SLSH , // Same as in ‛Qwerty Base Arrow’. A ‛`’ exists on _BON also. # else , RCTL_T ( KC_GRV ) , // Default # endif - LSFT_T ( KC_MINS ) , KC_LBRC , KC_RBRC , KC_MINS , KC_BSLS , KC_EQL , KC_PLUS , KC_PIPE , KC_UNDS , KC_LCBR , KC_RCBR , RSFT_T ( KC_TILD ) , + LSFT_DASH , KC_LBRC , KC_RBRC , KC_MINS , KC_BSLS , KC_EQL , KC_PLUS , KC_PIPE , KC_UNDS , KC_LCBR , KC_RCBR , RSFT_TILDE , // --------------------------------------------------------------------------------------------------------------------------------------------- LALT_T ( KC_LEFT ) diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_qwerty.md b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_qwerty.md index b140981ec3..6eda191754 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_qwerty.md +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_qwerty.md @@ -6,6 +6,34 @@ Compiled for: Qwerty This file details the compile version `#define BASE_QWERTY__DEF_BASE, BASE_QWERTY__ALT_BASE`. This is a Qwerty layout. +Dual layout combination with Qwerty Base Arrow +============================================== +âš  If you also compile `base_qwerty_basearrow`, the key for `/?` on `_NSY` layer in that +`base_qwerty_basearrow` layout, will be replicated in _this_ Qwerty layout on the `_NSY` +layer. It will displace the key `RCTL_T ( KC_GRV )`. Right Control, unless tapped for +‛\`’ or tapped with shift for ‛~’ âž¡ becomes `/?` (slash/questionmark). + +The reason for this is that when you switch from one or the other Qwerty variation +(with or without arrows on ‛Base’ layer), it will likely be confusing to type ‛/?’ +on that key in one version of Qwerty, and suddenly get a ‛\`~’ in the other. The reason +it is not in the normal position on ‛Qwerty Base Arrow’, is because it gets displaced +by ‛Up Arrow’. + +You will likely switch from the Base Arrow variation to the regular version, due to a need +for the row of keys displaced by the arrow cluster, or the other way around to get Base +access to the arrows, rather than a need for this side effect: ‛/?’ being substituted for +‛\`~’. + +This means you will loose `_NSY` layer access to ‛\`’, in both versions of Qwerty. You will + have to use the key for ‛\`~’ on the `_BON` layer, which is an uncluttered version of this +key (it repeats). It also means that you have two keys toward ‛/?’ in standard Qwerty: the +default position for Qwerty, and this additional one to harmonize with ‛Qwerty Base Arrow’. + +This harmonization can be disabled in ![./base_qwerty_basearrow.h](./base_qwerty_basearrow.h), +with `QWERTY_BASEARROW_HARMONIZE`. + +See also: ![./base_qwerty_basearrow.md](./base_qwerty_basearrow.md) + Qwerty keymaps -------------- @@ -14,7 +42,7 @@ Qwerty keymaps ![Minivan layout Image BASEdef](http://socialism.nl/misc/minivan/minivan_base_layer_qwerty_ve.jpg) Layer: `..._BASE` -![Minivan layout Image BASEdef](http://socialism.nl/misc/minivan/minivan_nsy_layer_qwerty_vb.jpg) +![Minivan layout Image BASEdef](http://socialism.nl/misc/minivan/minivan_nsy_layer_qwerty_vc.jpg) Layer: `..._NSY` ──────────in common──────────── @@ -23,7 +51,7 @@ Layer: `..._NSY` For more about the other layers, see âž¡ ![readme.md](./readme.md) ⬅ -![Minivan illustration Overview layers by key, Qwerty](http://socialism.nl/misc/minivan/minivan-all-layers-clear-visualization-by-key_qwerty_2000_vh.jpg) +![Minivan illustration Overview layers by key, Qwerty](http://socialism.nl/misc/minivan/minivan-all-layers-clear-visualization-by-key_qwerty_2000_vi.jpg) Layers (text) ============= @@ -77,9 +105,8 @@ Holding either one of the just above mentioned `_DEF_NSY` layer keys (<3 and 3>) index>middl>ring>pin>pink2> -*- <|> //(toggle) Access on _FUN BASE ! @ # $ % | ^ & * ( ) Del - Tab+LCtl 1! 2@ 3# 4$ 5% | 6^ 7& 8* 9( 0) `~+RCtl - -+LSht [{ ]} -_ \| =+ | + | _ { } `~+RSht // limitation prevents ~ - ^^ ^ // Only differences with Dvorak version _DEF_NSY + Tab+LCtl 1! 2@ 3# 4$ 5% | 6^ 7& 8* 9( 0) `~+RCtl // `~+RCtl becomes /? in dual … + -+LSht [{ ]} -_ \| =+ | + | _ { } ~+RSht // … layout with Qwerty Base Arrow --------------------------------------------------------------------------- Left+LAlt ___ ___ Ent | . ___ RGUI Right+RAlt -*- <|> -*- u //(hold) Access on _DEF_BASE @@ -95,6 +122,6 @@ Key associations ---------------- Key placement associations between layers for Qwerty. -![Minivan layout Image associations](http://socialism.nl/misc/minivan/minivan-relationships_qwerty_1500_vd.jpg) +![Minivan layout Image associations](http://socialism.nl/misc/minivan/minivan-relationships_qwerty_1500_ve.jpg) diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_qwerty_basearrow.c b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_qwerty_basearrow.c index 10ef88b4d3..674f16c85a 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_qwerty_basearrow.c +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_qwerty_basearrow.c @@ -141,30 +141,30 @@ along with this program. If not, see . , CHOLTAP_ACCE , DUO_HOLD # endif - , LT__MOV__KC_ENT + , LEFTCENTER_THUMB # ifdef TRANSMINIVAN_MIDLEFT , TRANS_MIDLEFT # endif - , KC_SPC , DUO_HOLD + , RIGHTCENTER_THUMB , DUO_HOLD # ifdef TRANSMINIVAN_RIGHTSIDE - , MO ( _FUN ) -# endif - - , KC_LEFT - // , KC__YGUI - -# ifdef MORE_KEY__ARROW - , KC_DOWN - // , MORE_key2 -# endif - - , KC_RIGHT - // , CHOLTAP_LAYR -// , , , <|,> , , , -// <1 ± ± , <2 , <3 , <4 |, 4> , 3> , 2> , ± ± 1> + , MO ( _FUN ) +# endif + + , KC_LEFT + // , KC__YGUI + +# ifdef MORE_KEY__ARROW + , KC_DOWN + // , MORE_key2 +# endif + + , KC_RIGHT + // , CHOLTAP_LAYR +// , , , <|,> , , , +// <1 ± ± , <2 , <3 , <4 |, 4> , 3> , 2> , ± ± 1> ), @@ -189,7 +189,7 @@ along with this program. If not, see . -*- <|> //(toggle) Access on _FUN BASE ! @ # $ % | ^ & * ( ) Del Tab+LCtl 1! 2@ 3# 4$ 5% | 6^ 7& 8* 9( 0) /? - -+LSht [{ ]} -_ \| =+ | + | _ { } `~+RSht + -+LSht [{ ]} -_ \| =+ | + | _ { } ~+RSht // `~ on _BON ^^ ^ // Only differences with normal version _..._NSY --------------------------------------------------------------------------- Left+LAlt ___ ___ Ent | . ___ LGUI Right+RAlt @@ -203,10 +203,8 @@ along with this program. If not, see . // , index> , middl> , ring> , pinky> , pink2> , // , -*- , , , , <|,> , , , , , , CTO_BASE , KC_EXLM , KC_AT , KC_HASH , KC_DLR , KC_PERC , KC_CIRC , KC_AMPR , KC_ASTR , KC_LPRN , KC_RPRN , KC_DEL , - LCTL_T ( KC_TAB ) , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_SLSH , // Sacrificing RCTL, because these are major symbols, which seem to warrant being uncluttered. - // RCTL_T ( KC_GRV ) , - LSFT_T ( KC_MINS ) , KC_LBRC , KC_RBRC , KC_MINS , KC_BSLS , KC_EQL , KC_PLUS , KC_PIPE , KC_UNDS , KC_LCBR , KC_RCBR , RSFT_T ( KC_GRV ) , // ` and ~ are often on a diminutive key on mini keyboards, therefore not sacrificing this Shift key. - // RSFT_T ( KC_TILD ) , + LCTL_T ( KC_TAB ) , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_SLSH , + LSFT_DASH , KC_LBRC , KC_RBRC , KC_MINS , KC_BSLS , KC_EQL , KC_PLUS , KC_PIPE , KC_UNDS , KC_LCBR , KC_RCBR , RSFT_TILDE , // note¹ // --------------------------------------------------------------------------------------------------------------------------------------------- LALT_T ( KC_LEFT ) @@ -238,6 +236,16 @@ along with this program. If not, see . // , , -*- , <|,> , -*- , , // <1 ± ± , <2 , <3 , <4 |, 4> , 3> , 2> , ± ± 1> +// note¹ +// Sacrificing RCTL, because ‛/’ is a major much used symbol, +// which seem to warrant being uncluttered. ‛`’ exists also on _BON +// (uncluttered). This breaks the logic that all these standard symbols +// exist on this layer _NSY. However, ` and ~ are often in a diminutive +// placement on mini keyboards, and ‛arrows on top’ was always going to +// be a stretch for a keyboard like this. The other option is to have a +// special macro to put tilde ‛~’ and accent grave ‛`’ both on Shift, +// but it doesn't seem to make much difference, and makes the firmware +// even larger. ), /* ⬆⬇ */ diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_qwerty_basearrow.h b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_qwerty_basearrow.h index bb5ab5ae2f..74aa563b42 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_qwerty_basearrow.h +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_qwerty_basearrow.h @@ -25,16 +25,11 @@ along with this program. If not, see . /* • Harmonize regular Qwerty * * If compiling this ‛Qwerty Base Arrow’ base pair with regular Qwerty on - * the other base pair (dual layout), the key ‛/?’ is on a different key - * in these two layouts. This is bound to cause typing errors. With this - * option you can cause the regular Qwerty to also have a ‛/?’ in the same - * spot as ‛Qwerty Base Arrow’ has it, sacrificing Right Control/‛`~’ there. + * the other base pair (dual layout), the key ‛/?’ on the _NSY layer in + * Qwerty Base Arrow, will be replicated in the same spot in regular Qwerty. * * Regular Qwerty will still also have a ‛/?’ key in the normal Qwerty location. - * - * The key ‛`~’ can be reached through other means: just below on numbers & - * symbols _NSY layer, or on the bonus Unicode layer _BON (on the far left, home row). - * This is so by default, it remains unchanged. + * See ./base_qwerty_basearrow.md and ./base_qwerty.md for details. */ #define QWERTY_BASEARROW_HARMONIZE // _Activate_ to harmonize the ‛/?’ key in the regular Qwerty layout. // _Remove_ leave regular Qwerty layout unchanged from default. diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_qwerty_basearrow.md b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_qwerty_basearrow.md index f90ba309cc..889633714a 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_qwerty_basearrow.md +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_qwerty_basearrow.md @@ -2,23 +2,17 @@ Compiled for: Qwerty with arrows on Base ======================================== - This version of Qwerty puts arrows on Base, and assumes the 'arrow' hardware key. You have to manually set *#define `MORE_KEY__ARROW`* in `./user_config.h`, +to let compilation know you have that additional hardware key. + If not compiled with ‛Arrow’ hardware key, Base will not contain ‛Down arrow’. You do not have to worry about what to set the additional hardware key to, on the Base layer. This will be set to Down Arrow, to complete that arrow cluster. -The option `QWERTY_BASEARROW_HARMONIZE` in `./base_qwerty_basearrow.h` is set -by default, causing the key ‛/?’ in the _regular_ Qwerty layout to _also_ be -located in the same spot as in this ‛Qwerty with Arrows on Base’ layout. See -the header file `./base_qwerty_basearrow.h` for more details. - - Is arrows on Base efficient ? ============================= - This variation of Qwerty is not necessarily the recommended version of Qwerty for a board with the additional ‛Arrow’ hardware key. The regular Qwerty compile option can provide good arrow access. @@ -39,12 +33,20 @@ GUI, and ‛/?’. Have it both ways ================= - You could compile regular Qwerty on one of the Base pairs (‛Default’ or ‛Alternate’), and Qwerty _with Arrows on Base_ on the other. That way you can switch to see what works for you. You could leave it like that, and choose what you want depending on what you are doing. +Dual layout combination with Qwerty Base Arrow +============================================== +The option `QWERTY_BASEARROW_HARMONIZE` in `./base_qwerty_basearrow.h` is set +by default, causing the key ‛/?’ in the _regular_ Qwerty layout to _also_ be +located in the same spot as in this ‛Qwerty with Arrows on Base’ layout. + +See also: ![./base_qwerty_basearrow.h](./base_qwerty_basearrow.h). +See also: ![./base_qwerty.md](./base_qwerty.md) for the reason behind this. + Qwerty keymaps -------------- @@ -54,7 +56,7 @@ Qwerty keymaps ![Minivan layout Image BASEdef](http://socialism.nl/misc/minivan/minivan_base_layer_qwerty_basearrow_va.jpg) Layer: `..._BASE` -![Minivan layout Image BASEdef](http://socialism.nl/misc/minivan/minivan_nsy_layer_qwerty_basearrow_va.jpg) +![Minivan layout Image BASEdef](http://socialism.nl/misc/minivan/minivan_nsy_layer_qwerty_basearrow_vb.jpg) Layer: `..._NSY` ──────────in common──────────── @@ -63,7 +65,7 @@ Layer: `..._NSY` For more about the other layers, see âž¡ ![readme.md](./readme.md) ⬅ -![Minivan illustration Overview layers by key, Qwerty arrows on Base](http://socialism.nl/misc/minivan/minivan-all-layers-clear-visualization-by-key_qwerty_basearrow_2000_vi.jpg) +![Minivan illustration Overview layers by key, Qwerty arrows on Base](http://socialism.nl/misc/minivan/minivan-all-layers-clear-visualization-by-key_qwerty_basearrow_2000_vj.jpg) Layers (text) ============= @@ -118,7 +120,7 @@ Holding either one of the just above mentioned `_DEF_NSY` layer keys (<3 and 3>) -*- <|> //(toggle) Access on _FUN BASE ! @ # $ % | ^ & * ( ) Del Tab+LCtl 1! 2@ 3# 4$ 5% | 6^ 7& 8* 9( 0) /? - -+LSht [{ ]} -_ \| =+ | + | _ { } `~+RSht + -+LSht [{ ]} -_ \| =+ | + | _ { } ~+RSht // See _BON for ‛`’ ^^ ^ // Only differences with normal version _..._NSY --------------------------------------------------------------------------- Left+LAlt ___ ___ Ent | . ___ LGUI Right+RAlt diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_workman.c b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_workman.c index bc157d69e8..3a2f4eaa4f 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_workman.c +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_workman.c @@ -108,25 +108,25 @@ along with this program. If not, see . , CHOLTAP_ACCE , DUO_HOLD # endif - , LT__MOV__KC_ENT + , LEFTCENTER_THUMB # ifdef TRANSMINIVAN_MIDLEFT , TRANS_MIDLEFT # endif - , KC_SPC , DUO_HOLD , KC__YGUI + , RIGHTCENTER_THUMB , DUO_HOLD , KC__YGUI # ifdef TRANSMINIVAN_RIGHTSIDE - , MO ( _FUN ) -# endif - -# ifdef MORE_KEY__ARROW - , MORE_key2 -# endif - - , CHOLTAP_LAYR -// , , , <|,> , , , -// <1 ± ± , <2 , <3 , <4 |, 4> , 3> , 2> , ± ± 1> + , MO ( _FUN ) +# endif + +# ifdef MORE_KEY__ARROW + , MORE_key2 +# endif + + , CHOLTAP_LAYR +// , , , <|,> , , , +// <1 ± ± , <2 , <3 , <4 |, 4> , 3> , 2> , ± ± 1> ), @@ -151,7 +151,7 @@ along with this program. If not, see . -*- <|> //(toggle) Access on _FUN BASE ! @ # $ % | ^ & * ( ) Del Tab+LCtl 1! 2@ 3# 4$ 5% | 6^ 7& 8* 9( 0) `~+RCtl - -+LSht [{ ]} -_ \| =+ | + | _ { } `~+RSht // limitation prevents ~ + -+LSht [{ ]} -_ \| =+ | + | _ { } ~+RSht ^^ ^ // Only differences with normal version _..._NSY --------------------------------------------------------------------------- Left+LAlt ___ ___ Ent | . ___ LGUI Right+RAlt @@ -166,7 +166,7 @@ along with this program. If not, see . // , -*- , , , , <|,> , , , , , , CTO_BASE , KC_EXLM , KC_AT , KC_HASH , KC_DLR , KC_PERC , KC_CIRC , KC_AMPR , KC_ASTR , KC_LPRN , KC_RPRN , KC_DEL , LCTL_T ( KC_TAB ) , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , RCTL_T ( KC_GRV ) , - LSFT_T ( KC_MINS ) , KC_LBRC , KC_RBRC , KC_MINS , KC_BSLS , KC_EQL , KC_PLUS , KC_PIPE , KC_UNDS , KC_LCBR , KC_RCBR , RSFT_T ( KC_TILD ) , + LSFT_DASH , KC_LBRC , KC_RBRC , KC_MINS , KC_BSLS , KC_EQL , KC_PLUS , KC_PIPE , KC_UNDS , KC_LCBR , KC_RCBR , RSFT_TILDE , // --------------------------------------------------------------------------------------------------------------------------------------------- LALT_T ( KC_LEFT ) diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_workman.md b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_workman.md index 66e7a21bb8..2d68e2ea06 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_workman.md +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_workman.md @@ -16,7 +16,7 @@ Workman keymaps ![Minivan layout Image BASEdef](http://socialism.nl/misc/minivan/minivan_base_layer_workman_va.jpg) Layer: `..._BASE` -![Minivan layout Image BASEdef](http://socialism.nl/misc/minivan/minivan_nsy_layer_qwerty_vb.jpg) +![Minivan layout Image BASEdef](http://socialism.nl/misc/minivan/minivan_nsy_layer_qwerty_vc.jpg) Layer: `..._NSY` ──────────in common──────────── @@ -25,7 +25,7 @@ Layer: `..._NSY` For more about the other layers, see âž¡ ![readme.md](./readme.md) ⬅ -![Minivan illustration Overview layers by key, Workman](http://socialism.nl/misc/minivan/minivan-all-layers-clear-visualization-by-key_workman_2000_vh.jpg) +![Minivan illustration Overview layers by key, Workman](http://socialism.nl/misc/minivan/minivan-all-layers-clear-visualization-by-key_workman_2000_vi.jpg) Layers (text) ============= @@ -80,7 +80,7 @@ Holding either one of the just above mentioned `_DEF_NSY` layer keys (<3 and 3>) -*- <|> //(toggle) Access on _FUN BASE ! @ # $ % | ^ & * ( ) Del Tab+LCtl 1! 2@ 3# 4$ 5% | 6^ 7& 8* 9( 0) `~+RCtl - -+LSht [{ ]} -_ \| =+ | + | _ { } `~+RSht // limitation prevents ~ + -+LSht [{ ]} -_ \| =+ | + | _ { } ~+RSht ^^ ^ // Only differences with Dvorak version _DEF_NSY --------------------------------------------------------------------------- Left+LAlt ___ ___ Ent | . ___ RGUI Right+RAlt diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/config.h b/keyboards/thevankeyboards/minivan/keymaps/josjoha/config.h index eff0c2fa69..8098422784 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/josjoha/config.h +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/config.h @@ -19,20 +19,21 @@ along with this program. If not, see . #pragma once +#define LAYER_STATE_16BIT // This saves more than 400 bytes on the hex file // place overrides here // Some defines meant to decrease the firmware size. The firmware is otherwise over the maximum (atmega32u4) -# ifndef LINK_TIME_OPTIMIZATION_ENABLE +//# ifndef LINK_TIME_OPTIMIZATION_ENABLE //Disable old style macro handling: MACRO() & action_get_macro -# define NO_ACTION_MACRO // This saves 320 bytes +//# define NO_ACTION_MACRO // This saves 320 bytes //disable calling of action_function() from the fn_actions array (deprecated) -# define NO_ACTION_FUNCTION // This saves 96 bytes -# endif +//# define NO_ACTION_FUNCTION // This saves 96 bytes +//# endif #define PERMISSIVE_HOLD -#define RGBLIGHT_EFFECT_BREATHING #define RGBLIGHT_SLEEP // QMK docs: "If defined, the RGB lighting will be switched off when the host goes to sleep" +#define RGBLIGHT_EFFECT_BREATHING // Layer switch TT(layer) tapping amount to make it toggle #define TAPPING_TERM_HOLTAP 225 // 175 ms proved unreliable, 225 ms seems ok (personal preference) diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/keymap.c b/keyboards/thevankeyboards/minivan/keymaps/josjoha/keymap.c index 035cdfdb3b..09a9b7d93d 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/josjoha/keymap.c +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/keymap.c @@ -118,8 +118,8 @@ enum { enum { _NORMAL_, // BASE layer is _DEF_BASE _FULL_, // BASE layer is _ALT_BASE -# ifdef DVORAK_DESCRAMBLE_HALF // not used with other keymaps - _HALF_, // BASE layer is _ALT_BASE For DVORAK_DESCRAMBLE_HALF keymap: does *not* re-compute letters in Unicode +# ifdef DVORAK_DESCRAMBLE // not used with other keymaps + _HALF_, // BASE layer is _ALT_BASE For DVORAK_DESCRAMBLE keymap: does *not* re-compute letters in Unicode // This is for different Unicode encodings than “Control+U+HEX†(Linux). It will go through what is set on _RAR # endif }; @@ -350,7 +350,8 @@ void indicate_base (void) { led2r = 100; // purple led2b = 100; } -# ifdef DVORAK_DESCRAMBLE_HALF // not used with other keymaps + +# ifdef DVORAK_DESCRAMBLE // not used with other keymaps else if (_HALF_ == alternate) { // alternate mode, 1 (normal unicode) led0r = 100; // purple led0b = 100; @@ -359,6 +360,7 @@ void indicate_base (void) { led2b = 100; } # endif + else if (_FULL_ == alternate) { // alternate mode, 1 (recomputed unicode for DVORAK_DESCRAMBLE) led0r = 100; // purple led0b = 100; @@ -471,7 +473,13 @@ void set_led_colors_ (layer_state_t state) { // Alternate BASE layer (alternate) else if (layer_state_cmp (state, _ALT_BASE)) { -# if !defined(BASE_NUMPAD__ALT_BASE) // Normal led colors for ‛regular’ base layers like Dvorak, Qwerty. +# ifdef LEDS_OFF_BASE_ALT // Alternative Base leds off (always) + + rgblight_disable_noeeprom (); + +# else // do use leds on Alternative Base layer + +# if !defined(BASE_NUMPAD__ALT_BASE) // Normal led colors for ‛regular’ base layers like Dvorak, Qwerty. if (capslock) { led2r = 255; // Brighter version to indicate capslock @@ -482,32 +490,34 @@ void set_led_colors_ (layer_state_t state) { led2g = color_ddl; // led2b = color_ddl; // } + middle_led_control (HSV_TEAL); // seems to be the same as CYAN/AZURE, conflicts with _ACC -# else // BASE_NUMPAD__ALT_BASE: numpad on Alternate Base, which should show the state of NumLock +# else // Numpad configured on Alternate Base, which should show the state of NumLock // This is a copy of the _PAD led colors, but less bright if (numlock) { led0b = 80; // Blue for the numbers part led2g = 80; // Green for the navigation part }else{ - led0g = 80; // reversed - led2b = 80; // + led2b = 80; // reversed + led0g = 80; // } - middle_led_control (60, 20, 100); // yellow (low saturation) + middle_led_control (60, 20, 100); // light-blue -# endif +# endif // BASE_NUMPAD__ALT_BASE + +# endif // LEDS_OFF_BASE_ALT - middle_led_control (HSV_TEAL); // seems to be the same as CYAN/AZURE, conflicts with _ACC } // Default layer (generally), normal BASE layer else if (layer_state_cmp (state, _DEF_BASE)) { // letters -# ifdef LEDS_OFF_BASE_DEF - led0r = 0; // All leds off when in Default Base - led0g = 0; // - led0b = 0; // +# ifdef LEDS_OFF_BASE_DEF // Default Base leds off (always) + rgblight_disable_noeeprom (); -# else + +# else // Do use leds on Default Base + if (capslock) { led0r = 255; // Brighter version to indicate capslock led0g = 255; // @@ -517,16 +527,18 @@ void set_led_colors_ (layer_state_t state) { led0g = 28; // led0b = 28; // } - middle_led_control (HSV_TEAL); + # endif // LEDS_OFF_BASE_DEF + } //--- + // pushes the configuration setrgb (led0r, led0g, led0b, (LED_TYPE *)&led[0]); // Led 0 setrgb (led2r, led2g, led2b, (LED_TYPE *)&led[2]); // Led 2 - isolate_rgblight_set (); + isolate_rgblight_set (); // Activates the led color change, after on/off check. # endif //RGBLIGHT_ENABLE } @@ -1090,13 +1102,26 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { , MORE_key1 # endif - , KC_DEL , KC_ENT , _______ + , KC_DEL , KC_ENT + +# ifndef SPACE_LEFT__ENTER_RIGHT // standard, layer switch on Base + , _______ +# else // reversed + , KC_PGUP +# endif + # ifdef TRANSMINIVAN_MIDLEFT , TRANS_MIDLEFT # endif + +# ifndef SPACE_LEFT__ENTER_RIGHT // standard , KC_PGUP +# else // reversed, layer switch on Base + , _______ +# endif + # ifdef TRANSMINIVAN_RIGHTSIDE , TRANS_RIGHT diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/minifan_config_compact.h b/keyboards/thevankeyboards/minivan/keymaps/josjoha/minifan_config_compact.h index a48095f513..89d426b140 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/josjoha/minifan_config_compact.h +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/minifan_config_compact.h @@ -27,12 +27,12 @@ along with this program. If not, see . //#define BASE_QWERTY_BASEARROW__ALT_BASE #define BASE_DVORAK__DEF_BASE //#define BASE_DVORAK__ALT_BASE -//#define BASE_DVORAK_DESCRAMBLE__ALT_BASE + #define BASE_DVORAK_DESCRAMBLE__ALT_BASE //#define BASE_COLEMAK__DEF_BASE //#define BASE_COLEMAK__ALT_BASE //#define BASE_WORKMAN__DEF_BASE //#define BASE_WORKMAN__ALT_BASE - #define BASE_NUMPAD__ALT_BASE +//#define BASE_NUMPAD__ALT_BASE //#define MINIFAN_SINGLE_LAYOUT @@ -74,13 +74,14 @@ along with this program. If not, see . #define WORDS_PER_MINUTE //#define BASE_RIGHT_ALT - #define SWITCH_GUIS +//#define SWITCH_GUIS //#define UNICODE_CURRENCY 0x20ac //#define POINT_ON_CHECKBOXES //#define SWITCH_BASE_ROW1_23 //#define SWITCH_HOLD_ACC_NSY #define SWITCH_LSHIFT_PAD_MOV #define SWITCH_RSHIFT_FUN_RAR +//#define SPACE_LEFT__ENTER_RIGHT //#define REMOVE_PAD //#define REMOVE_ACC @@ -100,3 +101,4 @@ along with this program. If not, see . #define FULL_BON_4THROW #define LEDS_OFF_BASE_DEF + #define LEDS_OFF_BASE_ALT diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/readme.md b/keyboards/thevankeyboards/minivan/keymaps/josjoha/readme.md index 534f8b30ca..1d2ad90fea 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/josjoha/readme.md +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/readme.md @@ -1,4 +1,4 @@ -# Minivan +# Minivan keyboard layout _Minifan_ A 40% keyboard made first by TheVan Keyboards _https://thevankeyboards.com_ now taken over by TKC _https://thekey.company_ @@ -23,12 +23,11 @@ Table of Contents 3.2 Special layouts 3.2.1 Numbers pad 4 The common system - 4.1 Main features - 4.2 Layer access - 4.3 Layout in graphics - 4.4 Layout in text - 4.5 Movement layer options - 4.6 Numbers pad layer options + 4.1 Layer access + 4.2 Layout in graphics + 4.3 Layout in text + 4.4 Movement layer options + 4.5 Numbers pad layer options 5 Led colors for layers 6 Compile options 7 Language support @@ -39,8 +38,9 @@ Table of Contents 9 Text size measuring 9.1 Text size Usage 10 Making your own base layer(s) - 11 Eviscerations + 11 Evisceration 12 Key associations + 12.1 Compared to regular keyboard 13 Trouble shooting • Compiling • Unicode @@ -54,19 +54,33 @@ Table of Contents 1 Overview ========== -_A layout for the demanding keyboard user (10 fingers / blind)._ -Designed for intuitive key placement, more symbols than standard English -keyboard, speed and text size measuring. -*400%* _the capability in_ *40%* _the size_ (by key function count). -For some ‛common layers’ (numbers pad, movement), different versions -can be chosen than shown just below in this by layer view: +☑ _Intuitive:_ Key placement follows what a 10 finger typist is used + to on a regular keyboard. Similar keys meanings are on the same + key in different layers, or the same finger, etc. See also chapter + 12, _Key associations._ Thumbs control the most used layer access. -![Minivan illustration Overview layers](http://socialism.nl/misc/minivan/minivan-all-layers-clear-visualization_1500_vf.jpg) +☑ _Feature rich:_ Dual layout, with several standard layouts to choose + from. Expanded character set. Measure typing speed and/or amount of text + typed. Mouse control, media control, power control, Unicode encoding for + several platforms. In total there are about 4 times as many key functions + than on a regular keyboard. + +☑ _Configurable:_ Choose between standard layouts (Qwerty, Dvorak, etc); + additional hardware keys ‛command/south-paw’ and/or ‛arrow’; movement + layer WASD or flat arrows/mouse; numbers pad similar to regular numbers + and/or like a regular numbers pad; and other settings. Easy to add your + own layers. See ![./user_config.h](./user_config.h) + +☒ What it does *not* do: work on a computer set to a non-English language, + such as German or French. (To add such functionality requires some work, + but it seems it should be possible. See ![./todo.md](./todo.md).) + +![Minivan illustration Overview layers](http://socialism.nl/misc/minivan/minivan-all-layers-clear-visualization_1500_vg.jpg) By key view: -![Minivan illustration Overview layers by key](http://socialism.nl/misc/minivan/minivan-all-layers-clear-visualization-by-key_2000_vh.jpg) +![Minivan illustration Overview layers by key](http://socialism.nl/misc/minivan/minivan-all-layers-clear-visualization-by-key_2000_vi.jpg) 1.1 Hardware compatibility ========================== @@ -99,7 +113,7 @@ See also chapter 6 _Language support_. 2 'make' example ================ … Download the repository, resolve software dependencies etc.. - … To change compile options: edit user_config.h (or `minifan_config_compact.h`) + … To change compile options: edit ./user_config.h (or `./minifan_config_compact.h`) > cd […]/qmk_firmware > make thevankeyboards/minivan:josjoha > su @@ -112,11 +126,11 @@ links to the others files in this readme. The common system is explained in this readme.md file. The options for the letters and number/symbol layer pairs (two pairs in the dual layout) are explained in their separate readme file, see immediately below. Compile options are detailed -in `./user_config.h`. +in ![./user_config.h](./user_config.h) 3 Base layouts ============== -Layouts are presented here in a sort of simplified keycaps view. If a +Layouts are presented here in a sort of simplified key caps view. If a base layer pair has its own user configuration options, they are located in `./base_NAME.h`. @@ -134,7 +148,7 @@ For the readme about the Qwerty version, see âž¡ ![base_qwerty.md](./base_qwerty 3.1.2 Qwerty with arrows on Base -------------------------------- -![Minivan layout impression](http://socialism.nl/misc/minivan/minivan_keycapview_qwerty_basearrow_vd.jpg) +![Minivan layout impression](http://socialism.nl/misc/minivan/minivan_keycapview_qwerty_basearrow_ve.jpg) For the readme about this Qwerty variation, see âž¡ ![base_qwerty_basearrow.md](./base_qwerty_basearrow.md) ⬅ @@ -186,33 +200,23 @@ For the readme about the Numpad version, see âž¡ ![base_numpad.md](./base_numpad ![Minivan layout impression](http://socialism.nl/misc/minivan/minivan_keycapview_common_vc.jpg) -4.1 Main features ------------------ - • Dual layout. Several layouts to choose from (example: Qwerty - and Dvorak dual layout). Easy to add more layouts. - • Expanded character set with western European accented characters - (ëøßœç…); sub- super-script numbers (¹₂…) quite a few additional - symbols such as 《 ± • ☑ ⦠√ ┣ ≠ 》… - • Typing speed measuring. Led changes color with your speed. You can - ask for a report on your current and average typing speeds. - • Text size measuring. If you want to type some amount of words or - characters, the middle led will go from green to red as you go, - and prevent you going over the limit. - -4.2 Layer access +4.1 Layer access ---------------- -This graphic shows how layers are reached from the ‛Default base’ layer. +The graphic below shows how layers are reached from the ‛Default base’ layer. -![Minivan layout Image associations](http://socialism.nl/misc/minivan/minivan-default-base-layer-activation_1500_vf.jpg) +This seems to be the place where one is supposed to say: “This is simpleâ€. +It may look more confusing than it is. If you write down an alphabet A,B, âž¡ Z, +made arrows from every key on a keyboard picture to one of the letters, it could +look just as confusing. When switching to a layer, you only think about where you +want to go. -You can switch between the default base layer (typically letters), and -another base layer, the alternate base layer (also typically letters), -on the `_RAR` layer with key ‛Other Base’. Each base layer comes -with its own second layer, typically numbers-symbols. The other -layers are used common between the default and alternate base layers. +![Minivan layout Image associations](http://socialism.nl/misc/minivan/minivan-default-base-layer-activation_2000_vi.jpg) -The Base layers and their numbers layer are detailed in files beginning -with `./base_…` (links below). +Each of the two base layers comes with its own second layer, typically +numbers-symbols. The other layers are used common between the default and +alternate base layers. You can switch between the default base layer +(typically letters), and another base layer, the alternate base layer +(also typically letters), on the `_RAR` layer with key ‛Other Base’. Layer overview: Defined in: @@ -230,23 +234,19 @@ with `./base_…` (links below). • Function keys / layer toggles ┃ • Power, media, Speed, Text size, etc. â”› -There are some additional layer switching keys due to key transparency -artefacts, allowing for example to go back to ‛Base’ from a toggled `_MOV` -layer with what is the ‛Enter’ key on Base. - -4.3 Layout in graphics +4.2 Layout in graphics ---------------------- ![Minivan layout Image BASEdef](http://socialism.nl/misc/minivan/minivan_base_layer_hide_def_base_ve.jpg) Layer: `DEF_BASE` -![Minivan layout Image NSYdef](http://socialism.nl/misc/minivan/minivan_nsy_layer_hide_def_base_vb.jpg) +![Minivan layout Image NSYdef](http://socialism.nl/misc/minivan/minivan_nsy_layer_hide_def_base_vc.jpg) Layer: `DEF_NSY` ![Minivan layout Image BASEalt](http://socialism.nl/misc/minivan/minivan_base_layer_hide_alt_base_ve.jpg) Layer: `ALT_BASE` -![Minivan layout Image NSYalt](http://socialism.nl/misc/minivan/minivan_nsy_layer_hide_alt_base_vb.jpg) +![Minivan layout Image NSYalt](http://socialism.nl/misc/minivan/minivan_nsy_layer_hide_alt_base_vc.jpg) Layer: `ALT_NSY` ![Minivan layout Image PAD](http://socialism.nl/misc/minivan/minivan_pad_layer_vc.jpg) @@ -275,8 +275,10 @@ and options to compile with the 'arrow' hardware layout. ![Minivan layout Image RAR](http://socialism.nl/misc/minivan/minivan_rar_layer_vc.jpg) Layer: `_RAR` -4.4 Layout in text +4.3 Layout in text ------------------ + What comes on “___†is to be defined by the Base layers choice. + Layer _DEF_BASE (Letters layer, see ./base* files for what comes on ‛__’) | Right hand index>middl>ring> pinky>pinky2> // Keys by finger @@ -596,7 +598,7 @@ Remarks. ☠☒ ☑ 🗹 or ⮘ â®™ ⮚ â®› - - - -4.5 Movement layer options +4.4 Movement layer options -------------------------- The movement layer (`_MOV`) has several configuration options. You can either have _triangle_ configuration arrows on the _left_ hand @@ -640,7 +642,7 @@ can compile this second arrow cluster to be completed with navigation keys ^ `#define` \[`MORE_KEY__ARROW`, `MOREKEY2_ARROW_CLUSTER`\] `VI_SWITCHERYDOO`, `#undef ARROWS_TRIANGLE` -4.6 Numbers pad layer options +4.5 Numbers pad layer options ----------------------------- This concerns the numbers pad layer, the one that is part of the common layers. @@ -669,7 +671,7 @@ This concerns the numbers pad layer, the one that is part of the common layers. show the color of the last layer that was active. • â½Â²â¾ The colors are reversed blue/low-white/green when numlock is on. Left led color memory aid: same as either numbers or movement layer for numlock on/off. - • â½Â³â¾ The colors are reversed to orange/red/red when set to de-activate after one F-key press. + • â½Â³â¾ The colors are reversed to orange/red/red when set to deactivate after one F-key press. • â½â´â¾ The colors are reversed purple/purple/white, indicating which of the two base layers is active (see below). • Middle led: Breathing effect. When not breathing, keyboard is not working normally with the computer. @@ -726,7 +728,7 @@ This concerns the numbers pad layer, the one that is part of the common layers. • Reduce firmware size/bloat: remove or eviscerate Unicode layer(s). - For the complete list, see `./user_config.h`. + For the complete list, see ![./user_config.h](./user_config.h) 7 Language support ================== @@ -770,7 +772,7 @@ The following quotation marks are available, which seems it would cover these la ¹) Left side is a basic comma. -See the `_ACC` _accented characters_ layer for all characters with diacretic markings. +See the `_ACC` _accented characters_ layer for all characters with diacritic markings. If you miss a symbol, you could replace one you don't use and add it yourself (by reprogramming the source code). @@ -784,7 +786,7 @@ reprogramming the source code). when a maximum is set, over layer colors or speed measurement. With the key ‛Speed’ on the `_RAR` layer, the speed of your latest -completed batch of 25 keypresses is computed, as well as the average of +completed batch of 25 key presses is computed, as well as the average of all your batches of 25 keys. The speed is displayed as the color of the middle led, which otherwise shows the layer color. A bright white middle led indicates ‛Speed’ has just been activated. @@ -949,7 +951,7 @@ Now you have integrated your base layers alternative. To compile it: _Remove_ any other base layers from being defined on the same spot _DEF_BASE or _ALT_BASE to prevent a conflict. - ⑤ Check Pre-processing with: + ⑤ Check Preprocessing with: > gcc -E keymap.c | less â‘¥ Compile and flash to your keyboard. @@ -979,7 +981,7 @@ You can re-define `_ACC` in your own file. ⑨ Compile and flash to your keyboard. Now we will look at a more complicated keymap, where you are also altering -preprocessor constants defined in `./user_config.h`. (Warning, perhaps this +preprocessor constants defined in ![./user_config.h](./user_config.h) (Warning, perhaps this is overkill … ;-) Example: the `./base_numpad.c` has an option to entirely eviscerate the @@ -998,7 +1000,7 @@ need to reverse Left GUI and Right GUI. â‘  ⓪ Write the necessary code to set and unset the constant `SWITCH_GUIS` in your `./base_YOUR_KEYMAP.h` file You are encouraged - to write code which overrides any setting in `./user_config.h, for + to write code which overrides any setting in `./user_config.h,` for those constants which you choose to affect, for simplicity sake. (This is not a C programming manual, so it won't get into this.) @@ -1017,14 +1019,14 @@ need to reverse Left GUI and Right GUI. * âš  Note: ./base_YOUR_KEYMAP.h can overrides this setting, if compiled with that ‛Base’ layer. */ -Putting your `*.h` header file in `./user_config.h` isn't strictly +Putting your `*.h` header file in ![./user_config.h](./user_config.h) isn't strictly necessary, unless you alter “general preprocessor constants†-defined in `./user_config` (not local constants for your keymap only). +defined in ![./user_config.h](./user_config.h) (not local constants for your keymap only). Perhaps a separate header file is overkill. On the other hand, whatever preprocessor logic is necessary after user configuration has been given, can be handled in one place, if #included as suggested. It allows you -to override the settings in `./user_config.h` from your header file +to override the settings in ![./user_config.h](./user_config.h) from your header file (because it is #included immediately below those). If a user is playing with keymaps Base compile choices, it could be convenient to play with `./base_YOUR_KEYMAP.h` settings, have everything that could be relevant @@ -1036,18 +1038,18 @@ You can also just #include your header file at the top of your `./base_YOUR_KEYMAP.h` file, if it does not touch anything else but your local keymap. -11 Eviscerations -================ +11 Evisceration +=============== Cutting down the keymap reduces the firmware size, and helps reducing mental clutter from having masses of symbols you might never want to use. You can compile as a single layout. Define only a ‛Default’ base pair, -and set `MINIFAN_SINGLE_LAYOUT` (`./user_config.h`). The leds for the +and set `MINIFAN_SINGLE_LAYOUT` (![./user_config.h](./user_config.h)). The leds for the base layers letters and numbers&symbols, will show up as they would for the ‛Alternate’ layer in a dual layout compilation. You can remove the layers `_ACC`, `_DRA` and/or `_BON` (see -`./user_config.h` around `REMOVE_ACC`). +![./user_config.h](./user_config.h) around `REMOVE_ACC`). You can remove a set of symbols from one or more of Unicode layers, such as not having box drawing characters on `_BON`, or no sub-script @@ -1061,7 +1063,43 @@ what finger is used, and/or on what row. For example the symbol ‛(’ on the numbers-symbols layer (`_NSY`), becomes the symbol ‛â½â€™ on another layer. -![Minivan layout Image associations](http://socialism.nl/misc/minivan/minivan-relationships_common_1500_vd.jpg) +![Minivan layout Image associations](http://socialism.nl/misc/minivan/minivan-relationships_common_1500_ve.jpg) + +12.1 Compared to regular keyboard +================================= +The main advantage compared to a regular keyboard is to never have to +leave the homerow. + +Basic trade-off examples are: (â‘ ) on a regular keyboard you need to +reach two rows up to press a number like ‛4’; (â‘¡) three rows up to reach +an F-key like ‛F4’; (â‘¢) or move your hand entirely to reach the navigation +cluster for ‛Up-Arrow’. On this Minivan 40% keyboard with this ‛Minifan’ +layout you (â‘ ) move either thumb sideways a little to hold down the +number/symbols layer key, and then press down left index finger for ‛4’; +(â‘¡) press and let go ‛Right-Shift’ to toggle the F-keys layer and then +press down left index finger for ‛F4’; (â‘¢) press down left thumb on where +it probably is resting, and then move left ring finger one row up to reach +‛Up-Arrow’. + +A downside is that you would be typing a non-standard keyboard, making +it harder to adapt to regular keyboards. On the upside, this keyboard is +small enough to take it with you. Plugging it into some other computer +is only going to work, if that other computer is not using a language +setting which changes too many keycodes, or if changing the language +setting is not a problem. + +In total the differences are probably marginal. It can be worth it if +you are doing a lot of 10 finger typing. The change in efficiency might +be similar to changing from Qwerty to Dvorak or another such optimized +layout, although incomparably much easier to learn than changing from +Qwerty to Dvorak (in author's personal experience). If the latter can +take years, the former could take weeks to months. Keep in mind that +you have the whole standard letters keymap where it used to be, plus the +numbers with their shifted symbols are in predictable locations. + +The hardest to learn out of the standard symbols, will be: /\=+|?, and +to a lesser degree {}[]. These are now evenly spread out, rather than this +mess you have under right little finger on regular keyboards. 13 Trouble shooting =================== @@ -1100,7 +1138,11 @@ another layer. 14 Why you want this layout =========================== -☞ This layout seems easy to learn and predictable. +☞ This layout seems easy to learn and predictable. It is not personalized + or idiosyncratic, but rather based on existing keyboards, typewriters + and commonly used symbols in the supported languages. The key placement + is as close to a regular keyboard as possible, unless there are clearly + better placement choices. ☞ The normally most used layer after letters is “numbers & symbols†(123…, !@#…, []/…, called `_NSY`). This layer you can access by either @@ -1145,39 +1187,37 @@ another layer. ┇ â‘£ ☞ Speed and text size measuring, including to set a maximum on your text input. - These are features not part off regular keyboards. + These are features not part of regular keyboards. ☞ Easy to create your own dual layout for letters / numbers. ☞ If you do want to reprogram the code, it has a lot of comments to make - it easier to follow. - + it easier to follow, and over the top much documentation as you can see. 15 BUGS ======= No real bugs known currently. Just some minor issues … - The tilde ~ on the numbers-symbols layer should logically be reached on the second - row without the need for _shift,_ however there seems to be a QMK limitation - with this. No work around has been attempted as of yet. (It seems to be a minor issue; - using shift for once seems OK.) - `LCTL_T` `( KC_TAB )` is not seen as a blank by word counting, use as Control is not ignored in character counting. (This minor issue is ignored for now. Tab is not normally used in text writing.) - The eviscerations may not have been worked out yet into the ultimate scrubbing of - everything that may have become redundent, because it does complicate the code with + The evisceration may not have been worked out yet into the ultimate scrubbing of + everything that may have become redundant, because it does complicate the code with a lot of #defines. Perhaps it should be done eventually, if there is an actual need. + âž¡ You can send bug reports to what seem useful channels, and/or contact e-mail. Thanks 16 Resources ============ -This links to an external file, with some development resources like -Gimp .xcf files, pre-compiled hex files, … - +This links to an external file, with some additional resources. [Resources](http://socialism.nl/misc/minivan/ "Additional resources") + ☞ Gimp .xcf files. + ☞ Some precompiled hex files. + ☞ Documentation in other formats. + … + 17 Author(s) ============ This keymap.c was edited from the Minivan default, original LED @@ -1187,11 +1227,10 @@ Gimp .xcf files, pre-compiled hex files, … _Personal note:_ This keymap came about because of a sudden need for a replacement keyboard. It took over a year to make (≈ 1.5 h/day). The goal became to make a good keymap for everyone without the time to - make one, in the best keyboard format: “40%â€. - -![Keycaps blanks](http://socialism.nl/misc/minivan/keycaps_blanks_va.jpg) + make one. Written on the Minivan: Jos Boersema. [contact](https://market.socialism.nl/author/ "get e-mail address there") + If anyone forks this or whatever, feel free to drop me a note. Contributions to this key map: - … diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/unicode_macros.c b/keyboards/thevankeyboards/minivan/keymaps/josjoha/unicode_macros.c index f213792484..d711c86f9b 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/josjoha/unicode_macros.c +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/unicode_macros.c @@ -38,74 +38,70 @@ along with this program. If not, see . #define DIV10POINT TRUE // suggest to function write_number, to divide by 10 and print as a fraction: N.N -// Converts integer value to Unicode. Also handles 'descramble' Unicode mode for DVORAK_DESCRAMBLE_HALF. -// Unicode is a hexadecimal string (character) representation of the value, with a pre- and post-fix. +// Gives Unicode code points to the relevant QMK functions. +// Handles Dvorak 'descramble' Unicode mode, if compiled (only tested on Linux). void unicode_hex2output (long unsigned int unshifted, long unsigned int shifted) { long unsigned int input; // which argument to work on - char output[10] ; // will hold the ascii for output + +# ifdef DVORAK_DESCRAMBLE // Do the letter descramble if needed. + + char output[10]; // will hold the ascii for output int index; // count backwards 'to left' in the string long unsigned int bitmove; // move computation to next digit. long unsigned int work; // temporary value for computation +# endif // What to work on if(shift_ison) input = shifted; // Trying to get everything possible here in this function, to reduce firmware size. else input = unshifted; - //if (input < 0) input *= -1; // positive value +# ifndef DVORAK_DESCRAMBLE // Only normal mode - // Take the hex value 4 bits at a time, starting with the least significant, convert to ascii, store - index = 9; - output[index] = '\0'; // terminator - bitmove = 0x1; - while ((work = (input / bitmove)) && (index >= 0)) { - index --; - work &= 0xF; - if (work < 0xA){ // numbers - output[index] = work + 0x30; // pad to ASCII - }else{ // alphas -# ifdef DVORAK_DESCRAMBLE_HALF // Do the letter descramble if needed. - if(_FULL_ == alternate){ // 0-9=0-9, a=a, b=n, c=i, d=h, e=d, f=y + register_unicode ( (uint32_t) input ) ; + +# else + + if(_FULL_ != alternate){ + + register_unicode ( (uint32_t) input ) ; // normal Unicode mode + + }else{ // Special Dvorak-descramble mode: 0-9=0-9, a=a, b=n, c=i, d=h, e=d, f=y + + // Take the hex value 4 bits at a time, starting with the least significant, convert to ascii, store + index = 9; + output[index] = '\0'; // terminator + bitmove = 0x1; + while ((work = (input / bitmove)) && (index >= 0)) { + index --; + work &= 0xF; + if (work < 0xA){ // numbers + output[index] = work + 0x30; // pad to ASCII + }else{ // alphas if (0xA == work) output[index] = 'a'; if (0xB == work) output[index] = 'n'; if (0xC == work) output[index] = 'i'; if (0xD == work) output[index] = 'h'; if (0xE == work) output[index] = 'd'; if (0xF == work) output[index] = 'y'; - }else{ - output[index] = work - 9 + 0x40; // normal mode } -# else // The above is not relevant for anything else. - output[index] = work - 9 + 0x40; // normal mode -# endif + bitmove *= 0x10; // next digit } - bitmove *= 0x10; // next digit - } - - // Put character(s) out in correct mode -# ifdef DVORAK_DESCRAMBLE_HALF // Do the letter descramble if needed. - if (_FULL_ == alternate) { // This is the special 'descramble' output mode for a computer already set to Dvorak - - SEND_STRING ( SS_DOWN(X_LCTRL) SS_DOWN(X_LSHIFT) "f" SS_UP(X_LSHIFT) SS_UP(X_LCTRL) ) ; // lead-in for Unicode on Linux, 'descramble' mode + + SEND_STRING ( SS_DOWN(X_LCTRL) SS_DOWN(X_LSHIFT) "f" SS_UP(X_LSHIFT) SS_UP(X_LCTRL) ); // lead-in for Unicode on Linux, 'descramble' mode send_string (output + index); // pointer to argument with formatted string - SEND_STRING ( " " ) ; // Ends the Unicode numerical input mode, replacing input with desired character (Linux) - - }else{ - // normal QMK Unicode output mode - send_unicode_hex_string (output + index); // pointer argument + SEND_STRING ( " " ); // Ends the Unicode numerical input mode } -# else - send_unicode_hex_string (output + index); // pointer argument -# endif +# endif // DVORAK_DESCRAMBLE mode for that Base layer & mode setting is compiled in } // Wrapper for unicode keys that do have the same on shift. void unicode_hex2output_single (long unsigned int either) { - unicode_hex2output (either, either) ; + unicode_hex2output (either, either); } @@ -144,6 +140,11 @@ enum custom_keycodes { CHOLTAP_LSHFT, // Go to layer, or shift modifier. CHOLTAP_LAYR, // Go to _RAR layer, or right arrow +// Shifts which on tap produce a key + + RSFT_TILDE, + LSFT_DASH, + // Special macro to make F-keys one-shot or not. _FUN_STAY, @@ -378,7 +379,12 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { && (keycode != CHOLTAP_ACCE) // _ACC layer (and others) && - (keycode != CHOLTAP_LAYR)) { // _RAR layer, or RAlt/Alt-Gr + (keycode != RSFT_TILDE) // Shift on _NSY + && + (keycode != LSFT_DASH) // Shift on _NSY + && + (keycode != CHOLTAP_LAYR)) + { // _RAR layer, or RAlt/Alt-Gr isolate_trigger = FALSE; // another key was pressed } } @@ -437,7 +443,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { added += write_number ((long int)((speed*12)/10), FALSE); // writes the speed send_string ("wpm"); // +3 character written if (0 != speed_batches) { - long int average_times_ten ; + long int average_times_ten; average_times_ten =(long int) ((speed_add * 12) / speed_batches); // *12 converts k/s to wpm send_string (";"); // +â‘  '' @@ -458,7 +464,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { added += write_number ((long int)(speed/10), FALSE); // writes the speed send_string ("k/s"); // +3 character written if (0 != speed_batches) { - long int average_times_ten ; + long int average_times_ten; average_times_ten =(long int) (speed_add / speed_batches); send_string (";"); // +â‘  '' @@ -625,7 +631,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { }else{ // key up // Cycles through the modes -# ifdef DVORAK_DESCRAMBLE_HALF // version Dvorak+Dvorak-descramble has 3 modes +# ifdef DVORAK_DESCRAMBLE // version Dvorak+Dvorak-descramble has 3 modes if (_NORMAL_ == alternate) { alternate = _FULL_;// alternate layers default_layer_set (_ALT_BASE_MASK); // This is needed only for a rare case, @@ -662,7 +668,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { }else{ // key up // Cycles through the modes -# ifdef DVORAK_DESCRAMBLE_HALF // version Dvorak+Dvorak-descramble has 3 modes +# ifdef DVORAK_DESCRAMBLE // version Dvorak+Dvorak-descramble has 3 modes if (_NORMAL_ == alternate) { alternate = _FULL_;// alternate layers default_layer_set (_ALT_BASE_MASK); @@ -701,8 +707,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { // On BASE itself, that key is . if (record->event.pressed) { // key down ; - } - else { // key up + }else{ // key up if (alternate) { // go to the alternate version (bit of a hack maybe, but all alternate // ... modes are non-zero) layer_move (_ALT_BASE); @@ -715,8 +720,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { case CTO_NUMS: // activates number-symbols layer if (record->event.pressed) { // key down ; - } - else { // key up, so that upon key down the target layer isn't already activated, triggering that key on up + }else{ // key up, so that upon key down the target layer isn't already activated, triggering that key on up if (alternate) { // go to the alternate version layer_move (_ALT_NSY); }else{ @@ -728,8 +732,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { case CTO_ACCE: // Unicode layer if (record->event.pressed) { // key down ; - } - else { // key up + }else{ // key up # ifndef REMOVE_ACC // This cuts out the whole _ACC layer. layer_move (_ACC); // activates normal accented layer @@ -745,8 +748,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { case CTO_DRAW: // Unicode layer if (record->event.pressed) { // key down ; - } - else { // key up + }else{ // key up # ifndef REMOVE_DRA // This cuts out the whole _DRA layer. layer_move (_DRA); // activates normal accented layer @@ -1011,7 +1013,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { // Held medium long: _PAD, long: _MOV. // The reason to have a switch to _MOV on the left hand, is to be able to reach arrows on a toggle, // all by the left hand, when the right hand is on the mouse. - if ((timer_elapsed (key_timer) <= 200)) { // tapped medium-long (milliseconds) + if ((timer_elapsed (key_timer) <= 200)) { // tapped short (milliseconds) # ifndef SWITCH_RSHIFT_FUN_RAR // user config to reverse what this key its timing toggles to @@ -1100,6 +1102,81 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } break; +/* + case RSFT_TILDE: + + if (record->event.pressed) { // key down + + SEND_STRING (SS_DOWN (X_RSFT)); + shift_ison = 1; // shift depressed + + key_timer = timer_read (); + isolate_trigger = TRUE; // keep track of whether another key gets pressed until key-up + + }else{ // key up + + SEND_STRING (SS_UP (X_RSFT)); + shift_ison = 0; // shift released + + if (isolate_trigger) { // no other key was hit since key down + + + // Held medium long: _PAD, long: _MOV. + // The reason to have a switch to _MOV on the left hand, is to be able to reach arrows on a toggle, + // all by the left hand, when the right hand is on the mouse. + if ((timer_elapsed (key_timer) <= 200)) { // tapped short (milliseconds) + + SEND_STRING ("~"); + + } + } + } + break; +*/ + + case RSFT_TILDE: // firmware size optimization, saves 36 bytes + case LSFT_DASH: + + if (record->event.pressed) { // key down + + if (RSFT_TILDE == keycode) { // this is probably not needed, both can be left or right shift + SEND_STRING (SS_DOWN (X_RSFT)); + }else{ + SEND_STRING (SS_DOWN (X_LSFT)); + } + shift_ison = 1; // shift depressed + + key_timer = timer_read (); + isolate_trigger = TRUE; // keep track of whether another key gets pressed until key-up + + }else{ // key up + + if (RSFT_TILDE == keycode) { + SEND_STRING (SS_UP (X_RSFT)); + }else{ + SEND_STRING (SS_UP (X_LSFT)); + } + + shift_ison = 0; // shift released + + if (isolate_trigger) { // no other key was hit since key down + + + // Held medium long: _PAD, long: _MOV. + // The reason to have a switch to _MOV on the left hand, is to be able to reach arrows on a toggle, + // all by the left hand, when the right hand is on the mouse. + if ((timer_elapsed (key_timer) <= 200)) { // tapped short (milliseconds) + + if (RSFT_TILDE == keycode) { + SEND_STRING ("~"); + }else{ + SEND_STRING ("-"); + } + } + } + } + break; + case _FUN_STAY: // toggles if the f-keys return _FUN layer to BASE after one press if (record->event.pressed) { // key down diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/user_config.h b/keyboards/thevankeyboards/minivan/keymaps/josjoha/user_config.h index aad9ec2339..293fd15a06 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/josjoha/user_config.h +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/user_config.h @@ -23,11 +23,12 @@ along with this program. If not, see . // Configuration: // ------------------------------------- ⬇ -------------------------------------- - // (For the non-coders: “_Remove_†means to place ‛//’ in front of a line. The rest of the line becomes a comment. - // Placing ‛//’ in front of a line, means whatever follows it will be ignored during compilation. - // “_Activate_†means to *delete* the two ‛//’ in front. Now the rest of the line *will* be compiled - // /* ... */ is another a way to turn “...†into being a comment which is ignored during compilation. - // (The documentation here is geared toward people who have no understanding about programming.) + // (For the non-coders: + // “_Remove_†means to place ‛//’ in front of a line. The rest of the line becomes a comment. + // Placing ‛//’ in front of a line, means whatever follows it will be ignored during compilation. + // “_Activate_†means to *delete* the two ‛//’ in front. Now the rest of the line *will* be compiled + // /* ... */ is another a way to turn “...†into being a comment which is ignored during compilation. + // (The documentation here is geared toward people who have no understanding about programming.) /* -------------------------------------------------------------------------------------- @@ -77,9 +78,10 @@ along with this program. If not, see . • GUI left/right • Alternate currency symbol • Check boxes or Pointers - • Switch _ACC/_BON and *left* side _NSY/_DRA hold keys - • Switch _PAD and _MOV on Left Shift toggle - • Switch _FUN and _RAR on Right Shift toggle + • Switch _ACC/_BON ⬅➡ *left* side _NSY/_DRA hold keys + • Switch _PAD ⬅➡ _MOV on Left Shift toggle + • Switch _FUN ⬅➡ _RAR on Right Shift toggle + • “Switch spacebarsâ€: ‛Space-bar’ ⬅➡ “‛Enter’ + ‛layer-hold _MOV’†-11- âž¡ Eviscerations ( â‘¡ / â‘¡ ) ⬅ • Removing the numbers pad _PAD layer @@ -104,7 +106,7 @@ along with this program. If not, see . * when uploaded to QMK, so that it gives the most commonly used layout: Qwerty with Numpad, * basic 44 Minivan keys. The compact version its state is whatever it is.) */ - #define MINIFAN_CONFIG_COMPACT // _Activate_ this, to load the configuration in ./minifan_config_compact.h (note: mini‛f’an). +//#define MINIFAN_CONFIG_COMPACT // _Activate_ this, to load the configuration in ./minifan_config_compact.h (note: mini‛f’an). #ifndef MINIFAN_CONFIG_COMPACT // (don't alter this) @@ -444,6 +446,13 @@ along with this program. If not, see . * Recommended if you use _RAR more than _FUN */ //#define SWITCH_RSHIFT_FUN_RAR // _Activate_ to make _RAR layer be on the fast tap, and _FUN on a short hold toggle + /* + * • “Switch spacebarsâ€: ‛Space-bar’ ⬅➡ “‛Enter’ + ‛layer-hold _MOV’†+ * + * Recommended if you usually type ‛Space-bar’ with your left hand. + * These keys also switch on _MOV (movement) layer. Page-Up goes one spot to the left. + */ +//#define SPACE_LEFT__ENTER_RIGHT // _Activate_ for ‛Space bar’ left, ‛Enter’ and ‛_MOV hold’ right hand. /* -11- âž¡ Eviscerations ( â‘¡ / â‘¡ ) ⬅ @@ -521,11 +530,14 @@ along with this program. If not, see . /* -12- âž¡ Leds ⬅ * - * Leds off for the Default Base Layer. - * Implies: no indication on Default Base for: Caps-lock, typing speed, typing amount done of a limit. - * Speed / typing amount will be visible by going to another layer. + * Leds off for the Default or Alternative Base Layer. + * Implies: no indication on Default Base for: Caps-lock, typing speed, + * typing amount done of a limit. + * Speed / typing amount indicated by led will be visible by going to another layer. */ //#define LEDS_OFF_BASE_DEF // _Activate_ to make leds dark when in ‛Default Base’ layer. + // +//#define LEDS_OFF_BASE_ALT // _Activate_ to make leds dark when in ‛Alternative Base’ layer. // ------------------------------------- ⬆ -------------------------------------- // Below here no more comfortable configuration options..... @@ -581,11 +593,9 @@ along with this program. If not, see . # define _ALT_NSY _DEF_NSY # endif -// This triggers the compilation of special _HALF_ descramble mode, where you access -// the Unicode layers without passing them through the descramble system (middle led -// lit on _RAR_ when cycling through the base layers with ‛Other Base’ key). +// This triggers the compilation of Dvorak descramble mode. # ifdef BASE_DVORAK_DESCRAMBLE__ALT_BASE -# define DVORAK_DESCRAMBLE_HALF +# define DVORAK_DESCRAMBLE # endif // Prevent likely erroneous configuration. If no 'Arrow' hardware layout, then not patching in an arrow cluster. @@ -611,13 +621,19 @@ along with this program. If not, see . # ifndef SWITCH_GUIS # define KC__XGUI KC_LGUI // Name logic is alphabetic order left to right …X (…) …Y in layout definitions.. # define KC__YGUI KC_RGUI // .. meaning KC__XGUI is left on the keymap, KC__YGUI is right. -# endif - -# ifdef SWITCH_GUIS +# else # define KC__XGUI KC_RGUI # define KC__YGUI KC_LGUI # endif +// Switch “spacebarsâ€: +# ifndef SPACE_LEFT__ENTER_RIGHT // standard +# define LEFTCENTER_THUMB LT__MOV__KC_ENT +# define RIGHTCENTER_THUMB KC_SPC +# else +# define LEFTCENTER_THUMB KC_SPC // reversed +# define RIGHTCENTER_THUMB LT__MOV__KC_ENT +# endif // Define the layout macro for the amount of hardware keys. // These for Minivan are defined up in the code tree. From 8405d28670c7c8235d0bc4f48b8ab63e472e128e Mon Sep 17 00:00:00 2001 From: yiancar Date: Tue, 20 Apr 2021 05:12:48 +0100 Subject: [PATCH 249/613] [Keyboard] Carbo65 (#12406) Co-authored-by: Ryan --- keyboards/carbo65/carbo65.c | 21 ++++++ keyboards/carbo65/carbo65.h | 34 +++++++++ keyboards/carbo65/config.h | 80 +++++++++++++++++++++ keyboards/carbo65/info.json | 12 ++++ keyboards/carbo65/keymaps/default/keymap.c | 32 +++++++++ keyboards/carbo65/keymaps/default/readme.md | 5 ++ keyboards/carbo65/keymaps/via/keymap.c | 46 ++++++++++++ keyboards/carbo65/keymaps/via/readme.md | 5 ++ keyboards/carbo65/keymaps/via/rules.mk | 1 + keyboards/carbo65/readme.md | 32 +++++++++ keyboards/carbo65/rules.mk | 24 +++++++ 11 files changed, 292 insertions(+) create mode 100644 keyboards/carbo65/carbo65.c create mode 100644 keyboards/carbo65/carbo65.h create mode 100644 keyboards/carbo65/config.h create mode 100644 keyboards/carbo65/info.json create mode 100644 keyboards/carbo65/keymaps/default/keymap.c create mode 100644 keyboards/carbo65/keymaps/default/readme.md create mode 100644 keyboards/carbo65/keymaps/via/keymap.c create mode 100644 keyboards/carbo65/keymaps/via/readme.md create mode 100644 keyboards/carbo65/keymaps/via/rules.mk create mode 100644 keyboards/carbo65/readme.md create mode 100644 keyboards/carbo65/rules.mk diff --git a/keyboards/carbo65/carbo65.c b/keyboards/carbo65/carbo65.c new file mode 100644 index 0000000000..1d04b48221 --- /dev/null +++ b/keyboards/carbo65/carbo65.c @@ -0,0 +1,21 @@ +/* Copyright 2021 Yiancar-Designs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #include "carbo65.h" + +void led_init_ports(void) { + // Set our LED pins as open drain outputs + palSetLineMode(LED_CAPS_LOCK_PIN, PAL_MODE_OUTPUT_OPENDRAIN); +} diff --git a/keyboards/carbo65/carbo65.h b/keyboards/carbo65/carbo65.h new file mode 100644 index 0000000000..7613c8aa57 --- /dev/null +++ b/keyboards/carbo65/carbo65.h @@ -0,0 +1,34 @@ +/* Copyright 2021 Yiancar-Designs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#define XXX KC_NO + +#include "quantum.h" + +#define LAYOUT_all( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K2E, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ + K40, K41, K42, K46, K4A, K4B, K4C, K4D, K4E \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, XXX, K2D, K2E }, \ + { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \ + { K40, K41, K42, XXX, XXX, XXX, K46, XXX, XXX, XXX, K4A, K4B, K4C, K4D, K4E } \ +} diff --git a/keyboards/carbo65/config.h b/keyboards/carbo65/config.h new file mode 100644 index 0000000000..8475b3b1bb --- /dev/null +++ b/keyboards/carbo65/config.h @@ -0,0 +1,80 @@ +/* +Copyright 2021 Yiancar-Designs + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published byß +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x8968 +#define PRODUCT_ID 0x4336 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Yiancar-Designs +#define PRODUCT Carbo65 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +#define MATRIX_ROW_PINS { A2, B9, B8, B5, B4 } +#define MATRIX_COL_PINS { A1, B1, B0, A7, A6, A5, A4, A3, B2, B10, B11, B12, B13, B14, B15 } + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* Ensure we jump to bootloader if the RESET keycode was pressed */ +#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE + +/* Indicator LEDs */ +#define LED_CAPS_LOCK_PIN B6 +#define LED_PIN_ON_STATE 0 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is userful for the Windows task manager shortcut (ctrl+shift+esc). + */ +// #define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* Bootmagic Lite key configuration */ +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/carbo65/info.json b/keyboards/carbo65/info.json new file mode 100644 index 0000000000..27b44b9529 --- /dev/null +++ b/keyboards/carbo65/info.json @@ -0,0 +1,12 @@ +{ + "keyboard_name": "Carbo65", + "url": "https://yiancar-designs.com", + "maintainer": "Yiancar-Designs", + "width": 16, + "height": 5, + "layouts": { + "LAYOUT_all": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":15, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":15, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":15, "y":2}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":15, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}] + } + } +} diff --git a/keyboards/carbo65/keymaps/default/keymap.c b/keyboards/carbo65/keymaps/default/keymap.c new file mode 100644 index 0000000000..d8a7cb5504 --- /dev/null +++ b/keyboards/carbo65/keymaps/default/keymap.c @@ -0,0 +1,32 @@ +/* Copyright 2021 Yiancar-Designs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT_all( /* Base */ + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + [1] = LAYOUT_all( /* FN */ + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; diff --git a/keyboards/carbo65/keymaps/default/readme.md b/keyboards/carbo65/keymaps/default/readme.md new file mode 100644 index 0000000000..93da5395f2 --- /dev/null +++ b/keyboards/carbo65/keymaps/default/readme.md @@ -0,0 +1,5 @@ +# The default keymap for Carbo 65. VIA support disabled. + +![Layer 0](https://i.imgur.com/3UZuHOl.png) + +![Layer 1](https://i.imgur.com/SmFQQ4c.png) diff --git a/keyboards/carbo65/keymaps/via/keymap.c b/keyboards/carbo65/keymaps/via/keymap.c new file mode 100644 index 0000000000..74005be77b --- /dev/null +++ b/keyboards/carbo65/keymaps/via/keymap.c @@ -0,0 +1,46 @@ +/* Copyright 2021 Yiancar-Designs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT_all( /* Base */ + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + +[1] = LAYOUT_all( /* FN */ + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +[2] = LAYOUT_all( /* Empty for dynamic keymaps */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +[3] = LAYOUT_all( /* Empty for dynamic keymaps */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; diff --git a/keyboards/carbo65/keymaps/via/readme.md b/keyboards/carbo65/keymaps/via/readme.md new file mode 100644 index 0000000000..2cac263648 --- /dev/null +++ b/keyboards/carbo65/keymaps/via/readme.md @@ -0,0 +1,5 @@ +# The default keymap for Carbo 65. VIA support enabled. + +![Layer 0](https://i.imgur.com/3UZuHOl.png) + +![Layer 1](https://i.imgur.com/SmFQQ4c.png) diff --git a/keyboards/carbo65/keymaps/via/rules.mk b/keyboards/carbo65/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/carbo65/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/carbo65/readme.md b/keyboards/carbo65/readme.md new file mode 100644 index 0000000000..039976b3e8 --- /dev/null +++ b/keyboards/carbo65/readme.md @@ -0,0 +1,32 @@ +# Carbo 65 + +This is a standard 65% layout PCB. It supports VIA. + +* Keyboard Maintainer: [Yiancar](http://yiancar-designs.com/) and on [GitHub](https://github.com/yiancar) +* Hardware Supported: A TKL keyboard with STM32F072CB +* Hardware Availability: https://www.tantsim.com + +## Instructions + +### Build + +Make example for this keyboard (after setting up your build environment): + + make carbo65:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +### Reset + +- Unplug +- Hold Escape +- Plug In +- Unplug +- Release Escape + +### Flash + +- Unplug +- Hold Escape +- Plug In +- Flash using QMK Toolbox or CLI (`make carbo65::flash`) diff --git a/keyboards/carbo65/rules.mk b/keyboards/carbo65/rules.mk new file mode 100644 index 0000000000..51aaf0e365 --- /dev/null +++ b/keyboards/carbo65/rules.mk @@ -0,0 +1,24 @@ +# MCU name +MCU = STM32F072 + +# Do not put the microcontroller into power saving mode +# when we get USB suspend event. We want it to keep updating +# backlight effects. +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output From f778ede8bd2c175a5f4a119d9321740d16047dcf Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Tue, 20 Apr 2021 16:17:47 +0100 Subject: [PATCH 250/613] Initial firmware for Forever65 (#12572) --- keyboards/forever65/config.h | 71 ++++++++ keyboards/forever65/forever65.c | 16 ++ keyboards/forever65/forever65.h | 18 ++ keyboards/forever65/info.json | 169 +++++++++++++++++++ keyboards/forever65/keymaps/default/keymap.c | 27 +++ keyboards/forever65/keymaps/via/keymap.c | 48 ++++++ keyboards/forever65/keymaps/via/rules.mk | 1 + keyboards/forever65/readme.md | 15 ++ keyboards/forever65/rules.mk | 1 + 9 files changed, 366 insertions(+) create mode 100644 keyboards/forever65/config.h create mode 100644 keyboards/forever65/forever65.c create mode 100644 keyboards/forever65/forever65.h create mode 100644 keyboards/forever65/info.json create mode 100644 keyboards/forever65/keymaps/default/keymap.c create mode 100644 keyboards/forever65/keymaps/via/keymap.c create mode 100644 keyboards/forever65/keymaps/via/rules.mk create mode 100644 keyboards/forever65/readme.md create mode 100644 keyboards/forever65/rules.mk diff --git a/keyboards/forever65/config.h b/keyboards/forever65/config.h new file mode 100644 index 0000000000..4ea906b5a7 --- /dev/null +++ b/keyboards/forever65/config.h @@ -0,0 +1,71 @@ +/* Copyright 2021 zvecr + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "config_common.h" + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE diff --git a/keyboards/forever65/forever65.c b/keyboards/forever65/forever65.c new file mode 100644 index 0000000000..940f3300f1 --- /dev/null +++ b/keyboards/forever65/forever65.c @@ -0,0 +1,16 @@ +/* Copyright 2021 zvecr + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "forever65.h" diff --git a/keyboards/forever65/forever65.h b/keyboards/forever65/forever65.h new file mode 100644 index 0000000000..0edfd0b456 --- /dev/null +++ b/keyboards/forever65/forever65.h @@ -0,0 +1,18 @@ +/* Copyright 2021 zvecr + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" \ No newline at end of file diff --git a/keyboards/forever65/info.json b/keyboards/forever65/info.json new file mode 100644 index 0000000000..3615a39310 --- /dev/null +++ b/keyboards/forever65/info.json @@ -0,0 +1,169 @@ +{ + "keyboard_name": "forever65", + "manufacturer": "Nightingale Studios", + "maintainer": "zvecr", + "processor": "STM32F072", + "diode_direction": "COL2ROW", + "matrix_pins": { + "cols": ["A3", "F1", "F0", "C15", "C14", "C13", "B11", "B10", "B2", "B1", "B0", "A7", "A5", "A6", "A4", "B5"], + "rows": ["B15", "B14", "B13", "B12", "B6"] + }, + "usb": { + "vid": "0x4E53", + "pid": "0x0F65", + "device_ver": "0x0001" + }, + "features": { + "bootmagic_lite": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "width": 16, + "height": 5, + "layouts": { + "LAYOUT": { + "layout": [ + { "matrix": [0, 0], "label": "Esc", "x": 0, "y": 0 }, + { "matrix": [0, 1], "label": "!", "x": 1, "y": 0 }, + { "matrix": [0, 2], "label": "@", "x": 2, "y": 0 }, + { "matrix": [0, 3], "label": "#", "x": 3, "y": 0 }, + { "matrix": [0, 4], "label": "$", "x": 4, "y": 0 }, + { "matrix": [0, 5], "label": "%", "x": 5, "y": 0 }, + { "matrix": [0, 6], "label": "^", "x": 6, "y": 0 }, + { "matrix": [0, 7], "label": "&", "x": 7, "y": 0 }, + { "matrix": [0, 8], "label": "*", "x": 8, "y": 0 }, + { "matrix": [0, 9], "label": "(", "x": 9, "y": 0 }, + { "matrix": [0, 10], "label": ")", "x": 10, "y": 0 }, + { "matrix": [0, 11], "label": "_", "x": 11, "y": 0 }, + { "matrix": [0, 12], "label": "+", "x": 12, "y": 0 }, + { "matrix": [0, 13], "label": "Backspace", "w": 2, "x": 13, "y": 0 }, + { "matrix": [1, 0], "label": "Tab", "w": 1.5, "x": 0, "y": 1 }, + { "matrix": [1, 1], "label": "Q", "x": 1.5, "y": 1 }, + { "matrix": [1, 2], "label": "W", "x": 2.5, "y": 1 }, + { "matrix": [1, 3], "label": "E", "x": 3.5, "y": 1 }, + { "matrix": [1, 4], "label": "R", "x": 4.5, "y": 1 }, + { "matrix": [1, 5], "label": "T", "x": 5.5, "y": 1 }, + { "matrix": [1, 6], "label": "Y", "x": 6.5, "y": 1 }, + { "matrix": [1, 7], "label": "U", "x": 7.5, "y": 1 }, + { "matrix": [1, 8], "label": "I", "x": 8.5, "y": 1 }, + { "matrix": [1, 9], "label": "O", "x": 9.5, "y": 1 }, + { "matrix": [1, 10], "label": "P", "x": 10.5, "y": 1 }, + { "matrix": [1, 11], "label": "{", "x": 11.5, "y": 1 }, + { "matrix": [1, 12], "label": "}", "x": 12.5, "y": 1 }, + { "matrix": [1, 13], "label": "|", "w": 1.5, "x": 13.5, "y": 1 }, + { "matrix": [1, 15], "label": "Delete", "x": 15, "y": 1 }, + { "matrix": [2, 0], "label": "Caps Lock", "w": 1.75, "x": 0, "y": 2 }, + { "matrix": [2, 1], "label": "A", "x": 1.75, "y": 2 }, + { "matrix": [2, 2], "label": "S", "x": 2.75, "y": 2 }, + { "matrix": [2, 3], "label": "D", "x": 3.75, "y": 2 }, + { "matrix": [2, 4], "label": "F", "x": 4.75, "y": 2 }, + { "matrix": [2, 5], "label": "G", "x": 5.75, "y": 2 }, + { "matrix": [2, 6], "label": "H", "x": 6.75, "y": 2 }, + { "matrix": [2, 7], "label": "J", "x": 7.75, "y": 2 }, + { "matrix": [2, 8], "label": "K", "x": 8.75, "y": 2 }, + { "matrix": [2, 9], "label": "L", "x": 9.75, "y": 2 }, + { "matrix": [2, 10], "label": ":", "x": 10.75, "y": 2 }, + { "matrix": [2, 11], "label": "\"", "x": 11.75, "y": 2 }, + { "matrix": [2, 12], "label": "Enter", "w": 2.25, "x": 12.75, "y": 2 }, + { "matrix": [2, 15], "label": "PgUp", "x": 15, "y": 2 }, + { "matrix": [3, 0], "label": "Shift", "w": 2.25, "x": 0, "y": 3 }, + { "matrix": [3, 1], "label": "Z", "x": 2.25, "y": 3 }, + { "matrix": [3, 2], "label": "X", "x": 3.25, "y": 3 }, + { "matrix": [3, 3], "label": "C", "x": 4.25, "y": 3 }, + { "matrix": [3, 4], "label": "V", "x": 5.25, "y": 3 }, + { "matrix": [3, 5], "label": "B", "x": 6.25, "y": 3 }, + { "matrix": [3, 6], "label": "N", "x": 7.25, "y": 3 }, + { "matrix": [3, 7], "label": "M", "x": 8.25, "y": 3 }, + { "matrix": [3, 8], "label": "<", "x": 9.25, "y": 3 }, + { "matrix": [3, 9], "label": ">", "x": 10.25, "y": 3 }, + { "matrix": [3, 10], "label": "?", "x": 11.25, "y": 3 }, + { "matrix": [3, 11], "label": "Shift", "w": 1.75, "x": 12.25, "y": 3 }, + { "matrix": [3, 13], "label": "Up", "x": 14, "y": 3 }, + { "matrix": [3, 15], "label": "PgDn", "x": 15, "y": 3 }, + { "matrix": [4, 0], "label": "Ctrl", "w": 1.25, "x": 0, "y": 4 }, + { "matrix": [4, 1], "label": "Win", "w": 1.25, "x": 1.25, "y": 4 }, + { "matrix": [4, 2], "label": "Alt", "w": 1.25, "x": 2.5, "y": 4 }, + { "matrix": [4, 4], "w": 6.25, "x": 3.75, "y": 4 }, + { "matrix": [4, 9], "label": "Alt", "w": 1.25, "x": 10, "y": 4 }, + { "matrix": [4, 10], "label": "Ctrl", "w": 1.25, "x": 11.25, "y": 4 }, + { "matrix": [4, 11], "label": "Left", "x": 13, "y": 4 }, + { "matrix": [4, 13], "label": "Down", "x": 14, "y": 4 }, + { "matrix": [4, 15], "label": "Right", "x": 15, "y": 4 } + ] + }, + "LAYOUT_all": { + "layout": [ + { "matrix": [0, 0], "label": "Esc", "x": 0, "y": 0 }, + { "matrix": [0, 1], "label": "!", "x": 1, "y": 0 }, + { "matrix": [0, 2], "label": "@", "x": 2, "y": 0 }, + { "matrix": [0, 3], "label": "#", "x": 3, "y": 0 }, + { "matrix": [0, 4], "label": "$", "x": 4, "y": 0 }, + { "matrix": [0, 5], "label": "%", "x": 5, "y": 0 }, + { "matrix": [0, 6], "label": "^", "x": 6, "y": 0 }, + { "matrix": [0, 7], "label": "&", "x": 7, "y": 0 }, + { "matrix": [0, 8], "label": "*", "x": 8, "y": 0 }, + { "matrix": [0, 9], "label": "(", "x": 9, "y": 0 }, + { "matrix": [0, 10], "label": ")", "x": 10, "y": 0 }, + { "matrix": [0, 11], "label": "_", "x": 11, "y": 0 }, + { "matrix": [0, 12], "label": "+", "x": 12, "y": 0 }, + { "matrix": [0, 13], "label": "Backspace", "x": 13, "y": 0 }, + { "matrix": [0, 14], "label": "Backspace", "x": 14, "y": 0 }, + { "matrix": [1, 0], "label": "Tab", "w": 1.5, "x": 0, "y": 1 }, + { "matrix": [1, 1], "label": "Q", "x": 1.5, "y": 1 }, + { "matrix": [1, 2], "label": "W", "x": 2.5, "y": 1 }, + { "matrix": [1, 3], "label": "E", "x": 3.5, "y": 1 }, + { "matrix": [1, 4], "label": "R", "x": 4.5, "y": 1 }, + { "matrix": [1, 5], "label": "T", "x": 5.5, "y": 1 }, + { "matrix": [1, 6], "label": "Y", "x": 6.5, "y": 1 }, + { "matrix": [1, 7], "label": "U", "x": 7.5, "y": 1 }, + { "matrix": [1, 8], "label": "I", "x": 8.5, "y": 1 }, + { "matrix": [1, 9], "label": "O", "x": 9.5, "y": 1 }, + { "matrix": [1, 10], "label": "P", "x": 10.5, "y": 1 }, + { "matrix": [1, 11], "label": "{", "x": 11.5, "y": 1 }, + { "matrix": [1, 12], "label": "}", "x": 12.5, "y": 1 }, + { "matrix": [1, 13], "label": "|", "w": 1.5, "x": 13.5, "y": 1 }, + { "matrix": [1, 15], "label": "Delete", "x": 15, "y": 1 }, + { "matrix": [2, 0], "label": "Caps Lock", "w": 1.75, "x": 0, "y": 2 }, + { "matrix": [2, 1], "label": "A", "x": 1.75, "y": 2 }, + { "matrix": [2, 2], "label": "S", "x": 2.75, "y": 2 }, + { "matrix": [2, 3], "label": "D", "x": 3.75, "y": 2 }, + { "matrix": [2, 4], "label": "F", "x": 4.75, "y": 2 }, + { "matrix": [2, 5], "label": "G", "x": 5.75, "y": 2 }, + { "matrix": [2, 6], "label": "H", "x": 6.75, "y": 2 }, + { "matrix": [2, 7], "label": "J", "x": 7.75, "y": 2 }, + { "matrix": [2, 8], "label": "K", "x": 8.75, "y": 2 }, + { "matrix": [2, 9], "label": "L", "x": 9.75, "y": 2 }, + { "matrix": [2, 10], "label": ":", "x": 10.75, "y": 2 }, + { "matrix": [2, 11], "label": "\"", "x": 11.75, "y": 2 }, + { "matrix": [2, 12], "label": "Enter", "w": 2.25, "x": 12.75, "y": 2 }, + { "matrix": [2, 15], "label": "PgUp", "x": 15, "y": 2 }, + { "matrix": [3, 0], "label": "Shift", "w": 2.25, "x": 0, "y": 3 }, + { "matrix": [3, 1], "label": "Z", "x": 2.25, "y": 3 }, + { "matrix": [3, 2], "label": "X", "x": 3.25, "y": 3 }, + { "matrix": [3, 3], "label": "C", "x": 4.25, "y": 3 }, + { "matrix": [3, 4], "label": "V", "x": 5.25, "y": 3 }, + { "matrix": [3, 5], "label": "B", "x": 6.25, "y": 3 }, + { "matrix": [3, 6], "label": "N", "x": 7.25, "y": 3 }, + { "matrix": [3, 7], "label": "M", "x": 8.25, "y": 3 }, + { "matrix": [3, 8], "label": "<", "x": 9.25, "y": 3 }, + { "matrix": [3, 9], "label": ">", "x": 10.25, "y": 3 }, + { "matrix": [3, 10], "label": "?", "x": 11.25, "y": 3 }, + { "matrix": [3, 11], "label": "Shift", "w": 1.75, "x": 12.25, "y": 3 }, + { "matrix": [3, 13], "label": "Up", "x": 14, "y": 3 }, + { "matrix": [3, 15], "label": "PgDn", "x": 15, "y": 3 }, + { "matrix": [4, 0], "label": "Ctrl", "w": 1.25, "x": 0, "y": 4 }, + { "matrix": [4, 1], "label": "Win", "w": 1.25, "x": 1.25, "y": 4 }, + { "matrix": [4, 2], "label": "Alt", "w": 1.25, "x": 2.5, "y": 4 }, + { "matrix": [4, 4], "w": 6.25, "x": 3.75, "y": 4 }, + { "matrix": [4, 9], "label": "Alt", "w": 1.25, "x": 10, "y": 4 }, + { "matrix": [4, 10], "label": "Ctrl", "w": 1.25, "x": 11.25, "y": 4 }, + { "matrix": [4, 11], "label": "Left", "x": 13, "y": 4 }, + { "matrix": [4, 13], "label": "Down", "x": 14, "y": 4 }, + { "matrix": [4, 15], "label": "Right", "x": 15, "y": 4 } + ] + } + } +} diff --git a/keyboards/forever65/keymaps/default/keymap.c b/keyboards/forever65/keymaps/default/keymap.c new file mode 100644 index 0000000000..0cb7fcb821 --- /dev/null +++ b/keyboards/forever65/keymaps/default/keymap.c @@ -0,0 +1,27 @@ +/* Copyright 2021 zvecr + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RCTRL, KC_LEFT, KC_DOWN, KC_RGHT + ), +}; diff --git a/keyboards/forever65/keymaps/via/keymap.c b/keyboards/forever65/keymaps/via/keymap.c new file mode 100644 index 0000000000..3ced93f3e0 --- /dev/null +++ b/keyboards/forever65/keymaps/via/keymap.c @@ -0,0 +1,48 @@ +/* Copyright 2021 zvecr + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_all( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RCTRL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_all( + RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/forever65/keymaps/via/rules.mk b/keyboards/forever65/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/forever65/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/forever65/readme.md b/keyboards/forever65/readme.md new file mode 100644 index 0000000000..0809b0145c --- /dev/null +++ b/keyboards/forever65/readme.md @@ -0,0 +1,15 @@ +# Forever65 + +![Forever65](https://static.wixstatic.com/media/7c76e8_827c433e51c84744a3b505df557ad5f7~mv2.jpg) + +Gasket Mount 65% keyboard + +* Keyboard Maintainer: [zvecr](https://github.com/zvecr) +* Hardware Supported: Forever65 PCB +* Hardware Availability: [Group-Buy](https://geekhack.org/index.php?topic=108809.0) + +Make example for this keyboard (after setting up your build environment): + + make forever65:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/forever65/rules.mk b/keyboards/forever65/rules.mk new file mode 100644 index 0000000000..6e7633bfe0 --- /dev/null +++ b/keyboards/forever65/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From 3d37afd495da35e30961969de27190e9e3a4d7e7 Mon Sep 17 00:00:00 2001 From: Xelus22 <17491233+Xelus22@users.noreply.github.com> Date: Tue, 20 Apr 2021 16:11:48 +0000 Subject: [PATCH 251/613] [Keyboard] Pachi Mini 32u4 (#12533) Co-authored-by: Ryan --- keyboards/xelus/pachi/mini_32u4/config.h | 43 +++++++++++++++++++++ keyboards/xelus/pachi/mini_32u4/mini_32u4.c | 18 +++++++++ keyboards/xelus/pachi/mini_32u4/mini_32u4.h | 36 +++++++++++++++++ keyboards/xelus/pachi/mini_32u4/rules.mk | 22 +++++++++++ keyboards/xelus/pachi/pachi.h | 2 + keyboards/xelus/pachi/readme.md | 1 + 6 files changed, 122 insertions(+) create mode 100644 keyboards/xelus/pachi/mini_32u4/config.h create mode 100644 keyboards/xelus/pachi/mini_32u4/mini_32u4.c create mode 100644 keyboards/xelus/pachi/mini_32u4/mini_32u4.h create mode 100644 keyboards/xelus/pachi/mini_32u4/rules.mk diff --git a/keyboards/xelus/pachi/mini_32u4/config.h b/keyboards/xelus/pachi/mini_32u4/config.h new file mode 100644 index 0000000000..cf15d57cfc --- /dev/null +++ b/keyboards/xelus/pachi/mini_32u4/config.h @@ -0,0 +1,43 @@ +/* Copyright 2021 Harrison Chan (Xelus) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x5845 // XE +#define PRODUCT_ID 0x5041 // PA +#define DEVICE_VER 0x0001 +#define MANUFACTURER Xelus +#define PRODUCT Xelus Pachi Mini + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 17 + +#define MATRIX_ROW_PINS { B0, B1, B2, F0, D2, D1 } +#define MATRIX_COL_PINS { F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, E6, B7, D0 } +#define DIODE_DIRECTION COL2ROW + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +#define LED_CAPS_LOCK_PIN F1 +#define LED_SCROLL_LOCK_PIN B3 diff --git a/keyboards/xelus/pachi/mini_32u4/mini_32u4.c b/keyboards/xelus/pachi/mini_32u4/mini_32u4.c new file mode 100644 index 0000000000..98d2a80963 --- /dev/null +++ b/keyboards/xelus/pachi/mini_32u4/mini_32u4.c @@ -0,0 +1,18 @@ +/* Copyright 2021 Harrison Chan (Xelus) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "mini_32u4.h" + diff --git a/keyboards/xelus/pachi/mini_32u4/mini_32u4.h b/keyboards/xelus/pachi/mini_32u4/mini_32u4.h new file mode 100644 index 0000000000..a63062b965 --- /dev/null +++ b/keyboards/xelus/pachi/mini_32u4/mini_32u4.h @@ -0,0 +1,36 @@ +/* Copyright 2020 Harrison Chan (Xelus) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#define ____ KC_NO + +#define LAYOUT_all( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K313, K114, K115, K116, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, \ + K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, K415, \ + K500, K501, K502, K506, K510, K511, K512, K513, K514, K515, K516 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, ____, ____, ____ }, \ + { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, ____, K415, ____ }, \ + { K500, K501, K502, ____, ____, ____, K506, ____, ____, ____, K510, K511, K512, K513, K514, K515, K516 } \ +} diff --git a/keyboards/xelus/pachi/mini_32u4/rules.mk b/keyboards/xelus/pachi/mini_32u4/rules.mk new file mode 100644 index 0000000000..32981133b2 --- /dev/null +++ b/keyboards/xelus/pachi/mini_32u4/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/xelus/pachi/pachi.h b/keyboards/xelus/pachi/pachi.h index d4d9a59335..7f33f2c088 100644 --- a/keyboards/xelus/pachi/pachi.h +++ b/keyboards/xelus/pachi/pachi.h @@ -20,4 +20,6 @@ #if defined(KEYBOARD_xelus_pachi_rev1) #include "rev1.h" +#elif defined(KEYBOARD_xelus_pachi_mini_32u4) + #include "mini_32u4.h" #endif diff --git a/keyboards/xelus/pachi/readme.md b/keyboards/xelus/pachi/readme.md index 10c07078b8..537a2c689a 100644 --- a/keyboards/xelus/pachi/readme.md +++ b/keyboards/xelus/pachi/readme.md @@ -8,5 +8,6 @@ Pachi TKL Keyboard that supports both 87 and 88 layouts. Make example for this keyboard (after setting up your build environment): make xelus/pachi/rev1:default + make xelus/pachi/mini_32u4:default See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). From 666944df2e2172614f9bdeef227b2d89ed511a36 Mon Sep 17 00:00:00 2001 From: GLozares <49708169+GLozares@users.noreply.github.com> Date: Tue, 20 Apr 2021 09:15:21 -0700 Subject: [PATCH 252/613] [Keyboard] Add millipad keypad and default keymap (#12522) --- keyboards/millipad/config.h | 94 ++++++++++++++++++++ keyboards/millipad/info.json | 26 ++++++ keyboards/millipad/keymaps/default/keymap.c | 41 +++++++++ keyboards/millipad/keymaps/default/readme.md | 1 + keyboards/millipad/millipad.c | 17 ++++ keyboards/millipad/millipad.h | 35 ++++++++ keyboards/millipad/readme.md | 29 ++++++ keyboards/millipad/rules.mk | 23 +++++ 8 files changed, 266 insertions(+) create mode 100644 keyboards/millipad/config.h create mode 100644 keyboards/millipad/info.json create mode 100644 keyboards/millipad/keymaps/default/keymap.c create mode 100644 keyboards/millipad/keymaps/default/readme.md create mode 100644 keyboards/millipad/millipad.c create mode 100644 keyboards/millipad/millipad.h create mode 100644 keyboards/millipad/readme.md create mode 100644 keyboards/millipad/rules.mk diff --git a/keyboards/millipad/config.h b/keyboards/millipad/config.h new file mode 100644 index 0000000000..c15d433a4c --- /dev/null +++ b/keyboards/millipad/config.h @@ -0,0 +1,94 @@ +/* +Copyright 2021 Jirou + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x1A1B +#define DEVICE_VER 0x0001 +#define MANUFACTURER Jirou +#define PRODUCT millipad + +/* key matrix size */ +#define MATRIX_ROWS 2 +#define MATRIX_COLS 6 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ +#define MATRIX_ROW_PINS { C6, C7 } +#define MATRIX_COL_PINS { F0, F1, F4, D7, D6, D4 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + + + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + + +#define LOCKING_RESYNC_ENABLE + + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +#define FORCE_NKRO + + + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 + +/* Encoder Definitions */ + +#define ENCODERS_PAD_A { D3 } +#define ENCODERS_PAD_B { D2 } +#define ENCODER_RESOLUTION 4 \ No newline at end of file diff --git a/keyboards/millipad/info.json b/keyboards/millipad/info.json new file mode 100644 index 0000000000..565ec71365 --- /dev/null +++ b/keyboards/millipad/info.json @@ -0,0 +1,26 @@ +{ + "keyboard_name": "millipad", + "url": "https://github.com/GLozares/millipad", + "maintainer": "Jirou", + "width": 6, + "height": 2, + "layouts": { + "LAYOUT": { + "layout": [ + {"label": "k00", "x": 0, "y": 0}, + {"label": "k01", "x": 1, "y": 0}, + {"label": "k02", "x": 2, "y": 0}, + {"label": "k03", "x": 3, "y": 0}, + {"label": "k04", "x": 4, "y": 0}, + {"label": "k05", "x": 5, "y": 0}, + + {"label": "k10", "x": 0, "y": 1}, + {"label": "k11", "x": 1, "y": 1}, + {"label": "k12", "x": 2, "y": 1}, + {"label": "k13", "x": 3, "y": 1}, + {"label": "k14", "x": 4, "y": 1}, + {"label": "k15", "x": 5, "y": 1} + ] + } + } +} diff --git a/keyboards/millipad/keymaps/default/keymap.c b/keyboards/millipad/keymaps/default/keymap.c new file mode 100644 index 0000000000..0fd145dd09 --- /dev/null +++ b/keyboards/millipad/keymaps/default/keymap.c @@ -0,0 +1,41 @@ +/* Copyright 2021 Jirou + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE +}; + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_BASE] = LAYOUT( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11, + KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F12 + ) +}; + + +void encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { /* First encoder */ + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } +} \ No newline at end of file diff --git a/keyboards/millipad/keymaps/default/readme.md b/keyboards/millipad/keymaps/default/readme.md new file mode 100644 index 0000000000..effc205a24 --- /dev/null +++ b/keyboards/millipad/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for millipad diff --git a/keyboards/millipad/millipad.c b/keyboards/millipad/millipad.c new file mode 100644 index 0000000000..5b6b668289 --- /dev/null +++ b/keyboards/millipad/millipad.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Jirou + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "millipad.h" diff --git a/keyboards/millipad/millipad.h b/keyboards/millipad/millipad.h new file mode 100644 index 0000000000..35eb843d6f --- /dev/null +++ b/keyboards/millipad/millipad.h @@ -0,0 +1,35 @@ +/* Copyright 2021 Jirou + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT( \ + k00, k01, k02, k03, k04, k05, \ + k10, k11, k12, k13, k14, k15 \ +) { \ + { k00, k01, k02, k03, k04, k05 }, \ + { k10, k11, k12, k13, k14, k15 } \ +} diff --git a/keyboards/millipad/readme.md b/keyboards/millipad/readme.md new file mode 100644 index 0000000000..8cabc8a962 --- /dev/null +++ b/keyboards/millipad/readme.md @@ -0,0 +1,29 @@ +# millipad + +![millipad](https://i.imgur.com/ZM2qel5h.jpg) + +An open source 2x6 macropad with rotary encoder. Designed to be cheap and simple. + + +## More Pictures: +![PCB Layout](https://i.imgur.com/ilhfBfQ.png) +![Front of PCB](https://i.imgur.com/UiQkmuvh.jpg) +![Back of PCB](https://i.imgur.com/Inh6UTLh.jpg) + + +* Keyboard Maintainer: [Jirou](https://github.com/GLozares) +* Hardware Supported: Jirou.Design Millipad +* Hardware Availability: Open Source at https://github.com/GLozares/millipad + +## Bootloader Mode (Flashing Hex Files): +To flash a new hex file, press the hardware reset button located to the left of the rotary encoder to enter Bootloader mode. + +Make example for this keyboard (after setting up your build environment): + + make millipad:default + +Flashing example for this keyboard: + + make millipad:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/millipad/rules.mk b/keyboards/millipad/rules.mk new file mode 100644 index 0000000000..57daefea4e --- /dev/null +++ b/keyboards/millipad/rules.mk @@ -0,0 +1,23 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +ENCODER_ENABLE = yes \ No newline at end of file From b6c353db0c0275b626a00fc0e078777fe438227d Mon Sep 17 00:00:00 2001 From: obosob Date: Tue, 20 Apr 2021 17:23:48 +0100 Subject: [PATCH 253/613] [Keyboard] Set OLED_DISPLAY_128X64 for Arch-36 (#12609) Co-authored-by: Ryan --- keyboards/arch_36/config.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/keyboards/arch_36/config.h b/keyboards/arch_36/config.h index 3950c4b9a1..be4a0a9830 100644 --- a/keyboards/arch_36/config.h +++ b/keyboards/arch_36/config.h @@ -55,4 +55,6 @@ along with this program. If not, see . 11, 10, 9, 8, 7, 6 } #endif +#define OLED_DISPLAY_128X64 + #define EE_HANDS From 752f5d6eb699d9c9582c84e2ed578aa6f46b2d70 Mon Sep 17 00:00:00 2001 From: tszaboo <74186529+tszaboo@users.noreply.github.com> Date: Tue, 20 Apr 2021 18:32:20 +0200 Subject: [PATCH 254/613] [Keyboard] Fixing files for Orto4exent (#12607) Co-authored-by: Joel Challis Co-authored-by: Drashna Jaelre Co-authored-by: Ryan --- keyboards/tszaboo/ortho4exent/config.h | 5 +++-- keyboards/tszaboo/ortho4exent/info.json | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/keyboards/tszaboo/ortho4exent/config.h b/keyboards/tszaboo/ortho4exent/config.h index a88a9c183a..dec9cdd7ee 100644 --- a/keyboards/tszaboo/ortho4exent/config.h +++ b/keyboards/tszaboo/ortho4exent/config.h @@ -47,7 +47,7 @@ along with this program. If not, see . #define LED_CAPS_LOCK_PIN E6 /* COL2ROW, ROW2COL*/ -#define DIODE_DIRECTION COL2ROW +#define DIODE_DIRECTION ROW2COL /* * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. @@ -60,7 +60,8 @@ along with this program. If not, see . #define RGB_DI_PIN B6 #ifdef RGB_DI_PIN - #define RGBLED_NUM 16 + #define RGBLED_NUM 18 + #define RGBLIGHT_HUE_STEP 8 #define RGBLIGHT_SAT_STEP 8 #define RGBLIGHT_VAL_STEP 8 diff --git a/keyboards/tszaboo/ortho4exent/info.json b/keyboards/tszaboo/ortho4exent/info.json index a34b997cae..a0c69526d7 100644 --- a/keyboards/tszaboo/ortho4exent/info.json +++ b/keyboards/tszaboo/ortho4exent/info.json @@ -37,7 +37,7 @@ {"label":"k1C","x":12.5,"y":1}, {"label":"k1D","x":13.5,"y":1}, {"label":"k1E","x":14.5,"y":1,"w":1.5}, - {"label":"k20","x":0,"y":2}, + {"label":"k20","x":0,"y":2,"w":1.5}, {"label":"k21","x":1.5,"y":2}, {"label":"k22","x":2.5,"y":2}, {"label":"k23","x":3.5,"y":2}, @@ -51,7 +51,7 @@ {"label":"k2B","x":11.5,"y":2}, {"label":"k2C","x":12.5,"y":2}, {"label":"k2D","x":13.5,"y":2}, - {"label":"k2E","x":14.5,"y":2}, + {"label":"k2E","x":14.5,"y":2,"w":1.5}, {"label":"k30","x":0,"y":3,"w":1.5}, {"label":"k31","x":1.5,"y":3}, {"label":"k32","x":2.5,"y":3}, From 21c147c11b23aad7a9335fee309531eac22ecf6b Mon Sep 17 00:00:00 2001 From: mechlovin <57231893+mechlovin@users.noreply.github.com> Date: Tue, 20 Apr 2021 23:56:32 +0700 Subject: [PATCH 255/613] [Keyboard] Refactor IF87_rev1 (#12574) --- keyboards/mechlovin/infinity87/rev1/rev1.h | 10 +++++++++- keyboards/mechlovin/infinity87/rev1/rules.mk | 2 -- keyboards/mechlovin/infinity87/rules.mk | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/keyboards/mechlovin/infinity87/rev1/rev1.h b/keyboards/mechlovin/infinity87/rev1/rev1.h index 16cdf9ed85..de623a1cdd 100644 --- a/keyboards/mechlovin/infinity87/rev1/rev1.h +++ b/keyboards/mechlovin/infinity87/rev1/rev1.h @@ -1,4 +1,4 @@ -/* Copyright 2020 Team Mechlovin +/* Copyright 2021 Mechlovin' Studio * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -17,3 +17,11 @@ #pragma once #include "quantum.h" + +#ifdef KEYBOARD_mechlovin_infinity87_rev1_rogue87 + #include "rogue87.h" +#elif KEYBOARD_mechlovin_infinity87_rev1_rouge87 + #include "rouge87.h" +#elif KEYBOARD_mechlovin_infinity87_rev1_standard + #include "infinity87.h" +#endif diff --git a/keyboards/mechlovin/infinity87/rev1/rules.mk b/keyboards/mechlovin/infinity87/rev1/rules.mk index cb04a558f2..2f2d27fb2f 100644 --- a/keyboards/mechlovin/infinity87/rev1/rules.mk +++ b/keyboards/mechlovin/infinity87/rev1/rules.mk @@ -2,5 +2,3 @@ MCU = STM32F303 BOARD = QMK_PROTON_C BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality - -DEFAULT_FOLDER = mechlovin/infinity87/rev1/standard \ No newline at end of file diff --git a/keyboards/mechlovin/infinity87/rules.mk b/keyboards/mechlovin/infinity87/rules.mk index 1222987996..e0858aff0f 100644 --- a/keyboards/mechlovin/infinity87/rules.mk +++ b/keyboards/mechlovin/infinity87/rules.mk @@ -16,4 +16,4 @@ RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output -DEFAULT_FOLDER = mechlovin/infinity87/rev1/standard +DEFAULT_FOLDER = mechlovin/infinity87/rgb_rev1 From 4ff16fe73e0850beeca446d53902527c2cbabe8a Mon Sep 17 00:00:00 2001 From: AlisGraveNil <63020540+AlisGraveNil@users.noreply.github.com> Date: Tue, 20 Apr 2021 10:59:05 -0600 Subject: [PATCH 256/613] [Keyboard] doodle macropad - 03/14 (#12243) Co-authored-by: Ryan Co-authored-by: Drashna Jaelre --- keyboards/clawsome/doodle/config.h | 45 +++++++++++++++++++ keyboards/clawsome/doodle/doodle.c | 17 +++++++ keyboards/clawsome/doodle/doodle.h | 27 +++++++++++ keyboards/clawsome/doodle/info.json | 20 +++++++++ .../clawsome/doodle/keymaps/default/keymap.c | 25 +++++++++++ keyboards/clawsome/doodle/rules.mk | 22 +++++++++ 6 files changed, 156 insertions(+) create mode 100644 keyboards/clawsome/doodle/config.h create mode 100644 keyboards/clawsome/doodle/doodle.c create mode 100644 keyboards/clawsome/doodle/doodle.h create mode 100644 keyboards/clawsome/doodle/info.json create mode 100644 keyboards/clawsome/doodle/keymaps/default/keymap.c create mode 100644 keyboards/clawsome/doodle/rules.mk diff --git a/keyboards/clawsome/doodle/config.h b/keyboards/clawsome/doodle/config.h new file mode 100644 index 0000000000..df33e6d84c --- /dev/null +++ b/keyboards/clawsome/doodle/config.h @@ -0,0 +1,45 @@ +/* Copyright 2021 AAClawson (AlisGraveNil) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7767 +#define PRODUCT_ID 0x0000 +#define DEVICE_VER 0x0001 +#define MANUFACTURER AlisGraveNil +#define PRODUCT doodle + +/* key matrix size */ +#define MATRIX_ROWS 2 +#define MATRIX_COLS 3 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ +#define MATRIX_ROW_PINS { D4, C6 } +#define MATRIX_COL_PINS { D7, F4, E6 } + +#define DIODE_DIRECTION COL2ROW diff --git a/keyboards/clawsome/doodle/doodle.c b/keyboards/clawsome/doodle/doodle.c new file mode 100644 index 0000000000..4f1b773512 --- /dev/null +++ b/keyboards/clawsome/doodle/doodle.c @@ -0,0 +1,17 @@ +/* Copyright 2021 AAClawson (AlisGraveNil) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "doodle.h" \ No newline at end of file diff --git a/keyboards/clawsome/doodle/doodle.h b/keyboards/clawsome/doodle/doodle.h new file mode 100644 index 0000000000..131d50ad26 --- /dev/null +++ b/keyboards/clawsome/doodle/doodle.h @@ -0,0 +1,27 @@ +/* Copyright 2021 AAClawson (AlisGraveNil) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT( \ + K00, K01, K02, \ + K10, K11, K12 \ +) { \ + { K00, K01, K02 }, \ + { K10, K11, K12 } \ +} diff --git a/keyboards/clawsome/doodle/info.json b/keyboards/clawsome/doodle/info.json new file mode 100644 index 0000000000..aa1b657d7a --- /dev/null +++ b/keyboards/clawsome/doodle/info.json @@ -0,0 +1,20 @@ +{ + "keyboard_name": "doodle", + "url": "www.clawboards.xyz", + "maintainer": "AAClawson (AlisGraveNil)", + "width": 3, + "height": 2, + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"K00 (D4,D7)", "x":0, "y":0}, + {"label":"K01 (D4,F4)", "x":1, "y":0}, + {"label":"K02 (D4,E6)", "x":2, "y":0}, + {"label":"K10 (C6,D7)", "x":0, "y":1}, + {"label":"K11 (C6,F4)", "x":1, "y":1}, + {"label":"K12 (C6,E6)", "x":2, "y":1} + ] + } + } +} + diff --git a/keyboards/clawsome/doodle/keymaps/default/keymap.c b/keyboards/clawsome/doodle/keymaps/default/keymap.c new file mode 100644 index 0000000000..e3bcc955bc --- /dev/null +++ b/keyboards/clawsome/doodle/keymaps/default/keymap.c @@ -0,0 +1,25 @@ +/* Copyright 2021 AAClawson (AlisGraveNil) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_1, KC_2, KC_3, + KC_4, KC_5, KC_6 + ), + +}; diff --git a/keyboards/clawsome/doodle/rules.mk b/keyboards/clawsome/doodle/rules.mk new file mode 100644 index 0000000000..64d67049f9 --- /dev/null +++ b/keyboards/clawsome/doodle/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output \ No newline at end of file From bd07120d3303ee38498e01bbef9052d4d50f77f5 Mon Sep 17 00:00:00 2001 From: Dimitris Papavasiliou Date: Tue, 20 Apr 2021 20:17:39 +0300 Subject: [PATCH 257/613] [Keyboard] Fix and improve SPI transport in the Lagrange (#12606) Co-authored-by: Dimitris Papavasiliou --- keyboards/handwired/lagrange/transport.c | 81 +++++++++++++++++------- 1 file changed, 57 insertions(+), 24 deletions(-) diff --git a/keyboards/handwired/lagrange/transport.c b/keyboards/handwired/lagrange/transport.c index 2a567f24b9..8f6973925f 100644 --- a/keyboards/handwired/lagrange/transport.c +++ b/keyboards/handwired/lagrange/transport.c @@ -18,6 +18,7 @@ #include "quantum.h" #include "split_util.h" +#include "transport.h" #include "timer.h" #include "lagrange.h" @@ -32,15 +33,16 @@ uint8_t transceive(uint8_t b) { return SPDR; } -/* The SPI bus, doens't have any form of protocol built in, so when +/* The SPI bus, doesn't have any form of protocol built in, so when * the other side isn't present, any old noise on the line will appear * as matrix data. To avoid interpreting data as keystrokes, we do a * simple n-way (8-way here) handshake before each scan, where each * side sends a prearranged sequence of bytes. */ -void shake_hands(bool master) { +bool shake_hands(bool master) { const uint8_t m = master ? 0xf8 : 0; const uint8_t a = 0xa8 ^ m, b = 0x50 ^ m; + bool synchronized = true; uint8_t i; @@ -48,7 +50,7 @@ void shake_hands(bool master) { i = SPDR; do { - /* Cylcling the SS pin on each attempt is necessary, as it + /* Cycling the SS pin on each attempt is necessary, as it * resets the AVR's SPI core and guarantees proper * alignment. */ @@ -58,6 +60,7 @@ void shake_hands(bool master) { for (i = 0 ; i < 8 ; i += 1) { if (transceive(a + i) != b + i) { + synchronized = false; break; } } @@ -66,9 +69,11 @@ void shake_hands(bool master) { writePinHigh(SPI_SS_PIN); } } while (i < 8); + + return synchronized; } -bool transport_master(matrix_row_t matrix[]) { +bool transport_master(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { const struct led_context context = { host_keyboard_led_state(), layer_state @@ -76,32 +81,58 @@ bool transport_master(matrix_row_t matrix[]) { uint8_t i; - /* Shake hands and then receive the matrix from the other side, - * while transmitting LED and layer states. */ + /* We shake hands both before and after transmitting the matrix. + * Doing it before transmitting is necessary to ensure + * synchronization: Due to the master-slave nature of the SPI bus, + * the master calls the shots. If we just go ahead and start + * clocking bits, the slave side might be otherwise engaged at + * that moment, so we'll initially read zeros, or garbage. Then + * when the slave gets around to transmitting its matrix, we'll + * misinterpret the keys it sends, leading to spurious + * keypresses. */ - shake_hands(true); + /* The handshake forces the master to wait for the slave to be + * ready to start transmitting. */ - spi_start(SPI_SS_PIN, 0, 0, 4); + do { + shake_hands(true); - for (i = 0 ; i < sizeof(matrix_row_t[MATRIX_ROWS / 2]) ; i += 1) { - spi_status_t x; + /* Receive the matrix from the other side, while transmitting + * LED and layer states. */ - x = spi_write(i < sizeof(struct led_context) ? - ((uint8_t *)&context)[i] : 0); + spi_start(SPI_SS_PIN, 0, 0, 4); - if (x == SPI_STATUS_TIMEOUT) { - return false; + for (i = 0 ; i < sizeof(matrix_row_t[MATRIX_ROWS / 2]) ; i += 1) { + spi_status_t x; + + x = spi_write(i < sizeof(struct led_context) ? + ((uint8_t *)&context)[i] : 0); + + if (x == SPI_STATUS_TIMEOUT) { + return false; + } + + ((uint8_t *)slave_matrix)[i] = (uint8_t)x; } - ((uint8_t *)matrix)[i] = (uint8_t)x; - } + spi_stop(); - spi_stop(); + /* In case of errors during the transmission, e.g. if the + * cable was disconnected and since there is no inherent + * error-checking protocol, we would simply interpret noise as + * data. */ + + /* To avoid this, both sides shake hands after transmitting. + * If synchronization was lost during transmission, the (first) + * handshake will fail. In that case we go around and + * re-transmit. */ + + } while (!shake_hands(true)); return true; } -void transport_slave(matrix_row_t matrix[]) { +void transport_slave(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { static struct led_context context; struct led_context new_context; @@ -113,15 +144,17 @@ void transport_slave(matrix_row_t matrix[]) { cli(); shake_hands(false); - for (i = 0 ; i < sizeof(matrix_row_t[MATRIX_ROWS / 2]) ; i += 1) { - uint8_t b; + do { + for (i = 0 ; i < sizeof(matrix_row_t[MATRIX_ROWS / 2]) ; i += 1) { + uint8_t b; - b = transceive(((uint8_t *)matrix)[i]); + b = transceive(((uint8_t *)slave_matrix)[i]); - if (i < sizeof(struct led_context)) { - ((uint8_t *)&new_context)[i] = b; + if (i < sizeof(struct led_context)) { + ((uint8_t *)&new_context)[i] = b; + } } - } + } while (!shake_hands(false)); sei(); From 5f670fbdc417a3db0163d233b6f3a0d508c0f464 Mon Sep 17 00:00:00 2001 From: yynmt <45400583+yynmt@users.noreply.github.com> Date: Wed, 21 Apr 2021 02:21:39 +0900 Subject: [PATCH 258/613] [Keyboard] Add Acperience12 macropad (#12573) Co-authored-by: yynmt --- keyboards/yynmt/acperience12/acperience12.c | 17 +++ keyboards/yynmt/acperience12/acperience12.h | 23 ++++ keyboards/yynmt/acperience12/config.h | 19 +++ keyboards/yynmt/acperience12/info.json | 19 +++ .../acperience12/keymaps/default/keymap.c | 34 +++++ .../acperience12/keymaps/default/readme.md | 25 ++++ .../yynmt/acperience12/keymaps/via/config.h | 19 +++ .../yynmt/acperience12/keymaps/via/keymap.c | 116 ++++++++++++++++++ .../yynmt/acperience12/keymaps/via/rules.mk | 1 + keyboards/yynmt/acperience12/readme.md | 21 ++++ keyboards/yynmt/acperience12/rev1/config.h | 50 ++++++++ keyboards/yynmt/acperience12/rev1/readme.md | 21 ++++ keyboards/yynmt/acperience12/rev1/rev1.c | 17 +++ keyboards/yynmt/acperience12/rev1/rev1.h | 37 ++++++ keyboards/yynmt/acperience12/rev1/rules.mk | 5 + keyboards/yynmt/acperience12/rules.mk | 18 +++ 16 files changed, 442 insertions(+) create mode 100644 keyboards/yynmt/acperience12/acperience12.c create mode 100644 keyboards/yynmt/acperience12/acperience12.h create mode 100644 keyboards/yynmt/acperience12/config.h create mode 100644 keyboards/yynmt/acperience12/info.json create mode 100644 keyboards/yynmt/acperience12/keymaps/default/keymap.c create mode 100644 keyboards/yynmt/acperience12/keymaps/default/readme.md create mode 100644 keyboards/yynmt/acperience12/keymaps/via/config.h create mode 100644 keyboards/yynmt/acperience12/keymaps/via/keymap.c create mode 100644 keyboards/yynmt/acperience12/keymaps/via/rules.mk create mode 100644 keyboards/yynmt/acperience12/readme.md create mode 100644 keyboards/yynmt/acperience12/rev1/config.h create mode 100644 keyboards/yynmt/acperience12/rev1/readme.md create mode 100644 keyboards/yynmt/acperience12/rev1/rev1.c create mode 100644 keyboards/yynmt/acperience12/rev1/rev1.h create mode 100644 keyboards/yynmt/acperience12/rev1/rules.mk create mode 100644 keyboards/yynmt/acperience12/rules.mk diff --git a/keyboards/yynmt/acperience12/acperience12.c b/keyboards/yynmt/acperience12/acperience12.c new file mode 100644 index 0000000000..783f87b094 --- /dev/null +++ b/keyboards/yynmt/acperience12/acperience12.c @@ -0,0 +1,17 @@ +/* Copyright 2021 yynmt + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "acperience12.h" diff --git a/keyboards/yynmt/acperience12/acperience12.h b/keyboards/yynmt/acperience12/acperience12.h new file mode 100644 index 0000000000..62102249e1 --- /dev/null +++ b/keyboards/yynmt/acperience12/acperience12.h @@ -0,0 +1,23 @@ +/* Copyright 2021 yynmt + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#ifdef KEYBOARD_yynmt_acperience12_rev1 +# include "rev1.h" +#endif + +#include "quantum.h" diff --git a/keyboards/yynmt/acperience12/config.h b/keyboards/yynmt/acperience12/config.h new file mode 100644 index 0000000000..b725cd2458 --- /dev/null +++ b/keyboards/yynmt/acperience12/config.h @@ -0,0 +1,19 @@ +/* Copyright 2021 yynmt + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" diff --git a/keyboards/yynmt/acperience12/info.json b/keyboards/yynmt/acperience12/info.json new file mode 100644 index 0000000000..034ed82488 --- /dev/null +++ b/keyboards/yynmt/acperience12/info.json @@ -0,0 +1,19 @@ +{ + "keyboard_name": "Acperience12", + "url": "http://yynmt.com", + "maintainer": "yynmt", + "width": 2, + "height": 6, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, {"x":1, "y":0}, + {"x":0, "y":1}, {"x":1, "y":1}, + {"x":0, "y":2}, {"x":1, "y":2}, + {"x":0, "y":3}, {"x":1, "y":3}, + {"x":0, "y":4}, {"x":1, "y":4}, + {"x":0, "y":5}, {"x":1, "y":5} + ] + } + } +} diff --git a/keyboards/yynmt/acperience12/keymaps/default/keymap.c b/keyboards/yynmt/acperience12/keymaps/default/keymap.c new file mode 100644 index 0000000000..c806ef525f --- /dev/null +++ b/keyboards/yynmt/acperience12/keymaps/default/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2021 yynmt + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [_BASE] = LAYOUT( + KC_1, KC_2, + KC_3, KC_4, + KC_5, KC_6, + KC_7, KC_8, + KC_9, KC_A, + KC_B, KC_C + ), +}; diff --git a/keyboards/yynmt/acperience12/keymaps/default/readme.md b/keyboards/yynmt/acperience12/keymaps/default/readme.md new file mode 100644 index 0000000000..d820d9dbce --- /dev/null +++ b/keyboards/yynmt/acperience12/keymaps/default/readme.md @@ -0,0 +1,25 @@ +# The default keymap for Acperience12 + +This keymap is for operation verification. + +``` +,-------------. +| 1 | 2 | +| | | +|------+------| +| 4 | 3 | +| | | +|------+------| +| 5 | 6 | +| | | +|------+------| +| 7 | 8 | +| | | +|------+------| +| 9 | a | +| | | +|------+------| +| b | c | +| | | +`-------------' +``` diff --git a/keyboards/yynmt/acperience12/keymaps/via/config.h b/keyboards/yynmt/acperience12/keymaps/via/config.h new file mode 100644 index 0000000000..3754895422 --- /dev/null +++ b/keyboards/yynmt/acperience12/keymaps/via/config.h @@ -0,0 +1,19 @@ +/* Copyright 2021 yynmt + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define DYNAMIC_KEYMAP_LAYER_COUNT 12 diff --git a/keyboards/yynmt/acperience12/keymaps/via/keymap.c b/keyboards/yynmt/acperience12/keymaps/via/keymap.c new file mode 100644 index 0000000000..01230a0e4d --- /dev/null +++ b/keyboards/yynmt/acperience12/keymaps/via/keymap.c @@ -0,0 +1,116 @@ +/* Copyright 2021 yynmt + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_1, KC_2, + KC_3, KC_4, + KC_5, KC_6, + KC_7, KC_8, + KC_9, KC_A, + KC_B, KC_C + ), + [1] = LAYOUT( + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS + ), + [2] = LAYOUT( + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS + ), + [3] = LAYOUT( + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS + ), + [4] = LAYOUT( + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS + ), + [5] = LAYOUT( + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS + ), + [6] = LAYOUT( + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS + ), + [7] = LAYOUT( + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS + ), + [8] = LAYOUT( + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS + ), + [9] = LAYOUT( + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS + ), + [10] = LAYOUT( + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS + ), + [11] = LAYOUT( + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/yynmt/acperience12/keymaps/via/rules.mk b/keyboards/yynmt/acperience12/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/yynmt/acperience12/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/yynmt/acperience12/readme.md b/keyboards/yynmt/acperience12/readme.md new file mode 100644 index 0000000000..b08369ff02 --- /dev/null +++ b/keyboards/yynmt/acperience12/readme.md @@ -0,0 +1,21 @@ +# Acperience12 + +![Acperience12](https://raw.githubusercontent.com/yynmt/Acperience12/main/images/main_image.jpg) + +Acperience12 is 12 keys macropad. + +* Keyboard Maintainer: [yynmt](https://github.com/yynmt) +* Hardware Supported: The A12 PCB +* Hardware Availability: [This repository](https://github.com/yynmt/Acperience12) has the plate files and other files. + +Enter the bootloader: Press the reset button. The reset button is located on the top side of the PCB between SW9,10 and SW11,12. Insert a long thin stick (e.g. SIM eject tool or paper clip) into the hole on the top plate. + +Make example for this macropad (after setting up your build environment): + + make yynmt/acperience12:default + +Flashing example for this macropad: + + make yynmt/acperience12:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/yynmt/acperience12/rev1/config.h b/keyboards/yynmt/acperience12/rev1/config.h new file mode 100644 index 0000000000..7281f9bf7f --- /dev/null +++ b/keyboards/yynmt/acperience12/rev1/config.h @@ -0,0 +1,50 @@ +/* Copyright 2021 yynmt + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x04D8 //Sublicense from Microchip Technology +#define PRODUCT_ID 0xEA51 //Sublicense from Microchip Technology +#define DEVICE_VER 0x0001 +#define MANUFACTURER yynmt +#define PRODUCT Acperience12 + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 2 + +#define DIRECT_PINS { { B5, D0 }, { B4, D1 }, { B3, D2 }, { B2, D3 }, { B1, D4 }, { B0, D5 } } + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION diff --git a/keyboards/yynmt/acperience12/rev1/readme.md b/keyboards/yynmt/acperience12/rev1/readme.md new file mode 100644 index 0000000000..b08369ff02 --- /dev/null +++ b/keyboards/yynmt/acperience12/rev1/readme.md @@ -0,0 +1,21 @@ +# Acperience12 + +![Acperience12](https://raw.githubusercontent.com/yynmt/Acperience12/main/images/main_image.jpg) + +Acperience12 is 12 keys macropad. + +* Keyboard Maintainer: [yynmt](https://github.com/yynmt) +* Hardware Supported: The A12 PCB +* Hardware Availability: [This repository](https://github.com/yynmt/Acperience12) has the plate files and other files. + +Enter the bootloader: Press the reset button. The reset button is located on the top side of the PCB between SW9,10 and SW11,12. Insert a long thin stick (e.g. SIM eject tool or paper clip) into the hole on the top plate. + +Make example for this macropad (after setting up your build environment): + + make yynmt/acperience12:default + +Flashing example for this macropad: + + make yynmt/acperience12:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/yynmt/acperience12/rev1/rev1.c b/keyboards/yynmt/acperience12/rev1/rev1.c new file mode 100644 index 0000000000..f58e4a2b18 --- /dev/null +++ b/keyboards/yynmt/acperience12/rev1/rev1.c @@ -0,0 +1,17 @@ +/* Copyright 2021 yynmt + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "rev1.h" diff --git a/keyboards/yynmt/acperience12/rev1/rev1.h b/keyboards/yynmt/acperience12/rev1/rev1.h new file mode 100644 index 0000000000..78c6c0c8ca --- /dev/null +++ b/keyboards/yynmt/acperience12/rev1/rev1.h @@ -0,0 +1,37 @@ +/* Copyright 2021 yynmt + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "acperience12.h" + + +#define LAYOUT( \ + K00, K01, \ + K02, K03, \ + K04, K05, \ + K06, K07, \ + K08, K09, \ + K10, K11 \ +) \ +{ \ + { K00, K01 }, \ + { K02, K03 }, \ + { K04, K05 }, \ + { K06, K07 }, \ + { K08, K09 }, \ + { K10, K11 }, \ +} diff --git a/keyboards/yynmt/acperience12/rev1/rules.mk b/keyboards/yynmt/acperience12/rev1/rules.mk new file mode 100644 index 0000000000..6ab81f6b12 --- /dev/null +++ b/keyboards/yynmt/acperience12/rev1/rules.mk @@ -0,0 +1,5 @@ +# MCU name +MCU = atmega32u2 + +# Bootloader selection +BOOTLOADER = atmel-dfu diff --git a/keyboards/yynmt/acperience12/rules.mk b/keyboards/yynmt/acperience12/rules.mk new file mode 100644 index 0000000000..bb8f6496c5 --- /dev/null +++ b/keyboards/yynmt/acperience12/rules.mk @@ -0,0 +1,18 @@ +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output + +DEFAULT_FOLDER = yynmt/acperience12/rev1 From 9a3ba6874c5ccd42304e5ea956c86fe54bcf41fa Mon Sep 17 00:00:00 2001 From: kb-elmo Date: Tue, 20 Apr 2021 19:21:59 +0200 Subject: [PATCH 259/613] [Keyboard] fix bella debounce (#12568) --- keyboards/kbdfans/bella/rgb/config.h | 2 +- keyboards/kbdfans/bella/rgb_iso/config.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/kbdfans/bella/rgb/config.h b/keyboards/kbdfans/bella/rgb/config.h index c4eae659e9..f56049690b 100644 --- a/keyboards/kbdfans/bella/rgb/config.h +++ b/keyboards/kbdfans/bella/rgb/config.h @@ -32,7 +32,7 @@ #define DIODE_DIRECTION COL2ROW -#define DEBOUNCE 3 +#define DEBOUNCE 5 /* disable these deprecated features by default */ #ifdef RGB_MATRIX_ENABLE diff --git a/keyboards/kbdfans/bella/rgb_iso/config.h b/keyboards/kbdfans/bella/rgb_iso/config.h index c37a57a5c7..fc7a9d7c08 100644 --- a/keyboards/kbdfans/bella/rgb_iso/config.h +++ b/keyboards/kbdfans/bella/rgb_iso/config.h @@ -32,7 +32,7 @@ #define DIODE_DIRECTION COL2ROW -#define DEBOUNCE 3 +#define DEBOUNCE 5 /* disable these deprecated features by default */ #ifdef RGB_MATRIX_ENABLE From 54bad99e0e94060edfad16e0a293e5feac2a478e Mon Sep 17 00:00:00 2001 From: duoshock <33636898+duoshock@users.noreply.github.com> Date: Tue, 20 Apr 2021 18:22:29 +0100 Subject: [PATCH 260/613] [Keyboard] Update ISO Macro vendor ID to meet VIA requirement (#12564) Co-authored-by: online <33636898+online@users.noreply.github.com> --- keyboards/merge/iso_macro/config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/merge/iso_macro/config.h b/keyboards/merge/iso_macro/config.h index 5ad63c134d..05ca6f05f7 100644 --- a/keyboards/merge/iso_macro/config.h +++ b/keyboards/merge/iso_macro/config.h @@ -18,7 +18,7 @@ #include "config_common.h" -#define VENDOR_ID 0xFEED +#define VENDOR_ID 0x4D65 #define PRODUCT_ID 0x1200 #define DEVICE_VER 0x0001 #define MANUFACTURER Merge From 271c7d4923f58d6e4548ff2124de2c6af11e6fb6 Mon Sep 17 00:00:00 2001 From: Mikkel Jeppesen <2756925+Duckle29@users.noreply.github.com> Date: Tue, 20 Apr 2021 19:23:00 +0200 Subject: [PATCH 261/613] [Keyboard] Added support for the older no_led revision (#12563) --- keyboards/infinity60/config.h | 14 -------------- keyboards/infinity60/led/config.h | 23 +++++++++++++++++++++++ keyboards/infinity60/led/readme.md | 3 +++ keyboards/infinity60/led/rules.mk | 3 +++ keyboards/infinity60/rev1/config.h | 25 +++++++++++++++++++++++++ keyboards/infinity60/rev1/readme.md | 2 ++ keyboards/infinity60/rev1/rules.mk | 0 keyboards/infinity60/rules.mk | 4 +--- 8 files changed, 57 insertions(+), 17 deletions(-) create mode 100644 keyboards/infinity60/led/config.h create mode 100644 keyboards/infinity60/led/readme.md create mode 100644 keyboards/infinity60/led/rules.mk create mode 100644 keyboards/infinity60/rev1/config.h create mode 100644 keyboards/infinity60/rev1/readme.md create mode 100644 keyboards/infinity60/rev1/rules.mk diff --git a/keyboards/infinity60/config.h b/keyboards/infinity60/config.h index 7cc5b3f91b..e73a663b39 100644 --- a/keyboards/infinity60/config.h +++ b/keyboards/infinity60/config.h @@ -28,20 +28,6 @@ along with this program. If not, see . #define MATRIX_ROWS 7 #define MATRIX_COLS 9 -/* - * Keyboard Matrix Assignments - * - * Change this to how you wired your keyboard - * COLS: AVR pins used for columns, left to right - * ROWS: AVR pins used for rows, top to bottom - * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) - * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) - * - */ -#define MATRIX_ROW_PINS { D1, D2, D3, D4, D5, D6, D7 } -#define MATRIX_COL_PINS { C0, C1, C2, C3, C4, C5, C6, C7, D0 } -#define UNUSED_PINS - /* COL2ROW, ROW2COL */ #define DIODE_DIRECTION COL2ROW diff --git a/keyboards/infinity60/led/config.h b/keyboards/infinity60/led/config.h new file mode 100644 index 0000000000..5bd3b590b9 --- /dev/null +++ b/keyboards/infinity60/led/config.h @@ -0,0 +1,23 @@ +/* +Copyright 2015 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +// Keyboard Matrix Assignments +#define MATRIX_ROW_PINS { D1, D2, D3, D4, D5, D6, D7 } +#define MATRIX_COL_PINS { C0, C1, C2, C3, C4, C5, C6, C7, D0 } +#define UNUSED_PINS diff --git a/keyboards/infinity60/led/readme.md b/keyboards/infinity60/led/readme.md new file mode 100644 index 0000000000..d31335031f --- /dev/null +++ b/keyboards/infinity60/led/readme.md @@ -0,0 +1,3 @@ +## Infinity 60% LED + +This revision is for the version of the infinity 60 with LEDs (rev 1.1a) diff --git a/keyboards/infinity60/led/rules.mk b/keyboards/infinity60/led/rules.mk new file mode 100644 index 0000000000..d48f3b73a5 --- /dev/null +++ b/keyboards/infinity60/led/rules.mk @@ -0,0 +1,3 @@ +# project specific files +SRC += led.c \ + led_controller.c \ No newline at end of file diff --git a/keyboards/infinity60/rev1/config.h b/keyboards/infinity60/rev1/config.h new file mode 100644 index 0000000000..d4ab34bccc --- /dev/null +++ b/keyboards/infinity60/rev1/config.h @@ -0,0 +1,25 @@ +/* +Copyright 2015 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +// Keyboard Matrix Assignments +#define MATRIX_ROW_PINS { D1, D2, D3, D4, D5, D6, D7 } +#define MATRIX_COL_PINS { B0, B1, B2, B3, B16, B17, C4, C5, D0 } +#define UNUSED_PINS + + diff --git a/keyboards/infinity60/rev1/readme.md b/keyboards/infinity60/rev1/readme.md new file mode 100644 index 0000000000..5df5cf5336 --- /dev/null +++ b/keyboards/infinity60/rev1/readme.md @@ -0,0 +1,2 @@ +## Infinity 60, initial massdrop release +This is for the initial massdrop PCBs that don't support LEDs (rev 1.03a) diff --git a/keyboards/infinity60/rev1/rules.mk b/keyboards/infinity60/rev1/rules.mk new file mode 100644 index 0000000000..e69de29bb2 diff --git a/keyboards/infinity60/rules.mk b/keyboards/infinity60/rules.mk index 595b7bfb92..f4100174da 100644 --- a/keyboards/infinity60/rules.mk +++ b/keyboards/infinity60/rules.mk @@ -30,9 +30,7 @@ RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output -# project specific files -SRC += led.c \ - led_controller.c +DEFAULT_FOLDER = infinity60/led LAYOUTS = 60_ansi_split_bs_rshift From 45a557641d89330fb8b3777c02606413374931bd Mon Sep 17 00:00:00 2001 From: kb-elmo Date: Tue, 20 Apr 2021 19:24:36 +0200 Subject: [PATCH 262/613] [Keyboard] Matrix 1.2og AVR PCB - VIA support (#12534) --- keyboards/matrix/m12og/config.h | 3 +- keyboards/matrix/m12og/keymaps/via/keymap.c | 57 +++++++++++++++++++++ keyboards/matrix/m12og/keymaps/via/rules.mk | 1 + keyboards/matrix/m12og/m12og.h | 49 ++++++++++++------ 4 files changed, 92 insertions(+), 18 deletions(-) create mode 100644 keyboards/matrix/m12og/keymaps/via/keymap.c create mode 100644 keyboards/matrix/m12og/keymaps/via/rules.mk diff --git a/keyboards/matrix/m12og/config.h b/keyboards/matrix/m12og/config.h index 7cd82e05b6..fae5192a33 100644 --- a/keyboards/matrix/m12og/config.h +++ b/keyboards/matrix/m12og/config.h @@ -26,12 +26,13 @@ #define DIODE_DIRECTION COL2ROW #define RGB_DI_PIN B3 + #ifdef RGB_DI_PIN #define RGBLIGHT_ANIMATIONS - #define RGBLED_NUM 16 #define RGBLIGHT_HUE_STEP 8 #define RGBLIGHT_SAT_STEP 8 #define RGBLIGHT_VAL_STEP 8 #define RGBLIGHT_SLEEP +#define WS2812_BYTE_ORDER WS2812_BYTE_ORDER_RGB #endif diff --git a/keyboards/matrix/m12og/keymaps/via/keymap.c b/keyboards/matrix/m12og/keymaps/via/keymap.c new file mode 100644 index 0000000000..1ae1400fe9 --- /dev/null +++ b/keyboards/matrix/m12og/keymaps/via/keymap.c @@ -0,0 +1,57 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0]=LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1]=LAYOUT_all( + KC_MUTE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + KC_NLCK, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, + RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, + _______, _______, _______, KC_MPLY, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT + ), + [2]=LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3]=LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/matrix/m12og/keymaps/via/rules.mk b/keyboards/matrix/m12og/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/matrix/m12og/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/matrix/m12og/m12og.h b/keyboards/matrix/m12og/m12og.h index f632016f12..17ab151da1 100644 --- a/keyboards/matrix/m12og/m12og.h +++ b/keyboards/matrix/m12og/m12og.h @@ -5,38 +5,53 @@ #include "quantum.h" +#define LAYOUT_all( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K500, K501, K502,\ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K013, K503, K504, K505,\ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K506, K507, K508,\ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, \ + K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, K610, \ + K600, K601, K602, K603, K604, K605, K606, K607, K608, K609 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313 }, \ + { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413 }, \ + { K500, K501, K502, K503, K504, K505, K506, K507, K508, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ + { K600, K601, K602, K603, K604, K605, K606, K607, K608, K609, K610, KC_NO, KC_NO, KC_NO } \ +} + #define LAYOUT_tkl_iso( \ - K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K500, K501, K502, \ - \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K500, K501, K502, \ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K013, K503, K504, K505, \ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K506, K507, K508, \ - K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, \ - K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K610, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, \ + K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K610, \ K600, K601, K602, K603, K604, K605, K606, K607, K608, K609 \ ) { \ - { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013 }, \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013 }, \ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, KC_NO }, \ - { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, KC_NO}, \ - { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313 }, \ - { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, KC_NO}, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, KC_NO }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313 }, \ + { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, KC_NO }, \ { K500, K501, K502, K503, K504, K505, K506, K507, K508, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ { K600, K601, K602, K603, K604, K605, K606, K607, K608, K609, K610, KC_NO, KC_NO, KC_NO } \ } #define LAYOUT_tkl_ansi( \ - K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K500, K501, K502,\ - \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K500, K501, K502,\ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K013, K503, K504, K505,\ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K506, K507, K508,\ - K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, \ - K400, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K610,\ - K600, K601, K602, K603, K604, K605, K606, K607, K608, K609\ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, \ + K400, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K610, \ + K600, K601, K602, K603, K604, K605, K606, K607, K608, K609 \ ) { \ - { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013 }, \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013 }, \ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, KC_NO }, \ - { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213 }, \ - { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313 }, \ - { K400, KC_NO, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, KC_NO }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313 }, \ + { K400, KC_NO, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, KC_NO }, \ { K500, K501, K502, K503, K504, K505, K506, K507, K508, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ { K600, K601, K602, K603, K604, K605, K606, K607, K608, K609, K610, KC_NO, KC_NO, KC_NO } \ } From d330203486d077e52742ee523c67b261e9daa4b8 Mon Sep 17 00:00:00 2001 From: Christiano Haesbaert Date: Tue, 20 Apr 2021 19:46:19 +0200 Subject: [PATCH 263/613] [Keyboard] Add amigopunk, a handwired 75% ALPS (#12489) Co-authored-by: Drashna Jaelre Co-authored-by: Ryan --- keyboards/handwired/amigopunk/amigopunk.c | 17 ++++ keyboards/handwired/amigopunk/amigopunk.h | 35 +++++++ keyboards/handwired/amigopunk/config.h | 57 ++++++++++++ keyboards/handwired/amigopunk/info.json | 93 +++++++++++++++++++ .../amigopunk/keymaps/default/keymap.c | 91 ++++++++++++++++++ keyboards/handwired/amigopunk/readme.md | 19 ++++ keyboards/handwired/amigopunk/rules.mk | 24 +++++ 7 files changed, 336 insertions(+) create mode 100644 keyboards/handwired/amigopunk/amigopunk.c create mode 100644 keyboards/handwired/amigopunk/amigopunk.h create mode 100644 keyboards/handwired/amigopunk/config.h create mode 100644 keyboards/handwired/amigopunk/info.json create mode 100644 keyboards/handwired/amigopunk/keymaps/default/keymap.c create mode 100644 keyboards/handwired/amigopunk/readme.md create mode 100644 keyboards/handwired/amigopunk/rules.mk diff --git a/keyboards/handwired/amigopunk/amigopunk.c b/keyboards/handwired/amigopunk/amigopunk.c new file mode 100644 index 0000000000..dbb70415ac --- /dev/null +++ b/keyboards/handwired/amigopunk/amigopunk.c @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2021 Christiano Haesbaert + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include "amigopunk.h" diff --git a/keyboards/handwired/amigopunk/amigopunk.h b/keyboards/handwired/amigopunk/amigopunk.h new file mode 100644 index 0000000000..273cd09e3f --- /dev/null +++ b/keyboards/handwired/amigopunk/amigopunk.h @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2021 Christiano Haesbaert + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0G, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E, K1F, \ + K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \ + K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4D, K4F, \ + K51, K53, K57, K5B, K5D, K5E, K5F, K5G \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, KC_NO, K0G }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, KC_NO, K1E, K1F, KC_NO }, \ + { K20, KC_NO, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, KC_NO }, \ + { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, KC_NO, KC_NO, KC_NO }, \ + { KC_NO, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, KC_NO, K4D, KC_NO, K4F, KC_NO }, \ + { KC_NO, K51, KC_NO, K53, KC_NO, KC_NO, KC_NO, K57, KC_NO, KC_NO, KC_NO, K5B, KC_NO, K5D, K5E, K5F, K5G }, \ +} diff --git a/keyboards/handwired/amigopunk/config.h b/keyboards/handwired/amigopunk/config.h new file mode 100644 index 0000000000..29141234d4 --- /dev/null +++ b/keyboards/handwired/amigopunk/config.h @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2021 Christiano Haesbaert + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x1805 +#define DEVICE_VER 0x0001 +#define MANUFACTURER haesbaert +#define PRODUCT amigopunk + +/* Key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 17 + +/* Key matrix pins */ +#define MATRIX_ROW_PINS { C0, C1, C2, C3, C4, C5 } +#define MATRIX_COL_PINS { B6, B5, B4, B3, B2, B1, B0, E7, E6, F0, F1, F2, F3, F4, F5, F6, F7 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Encoder setup */ +#ifdef ENCODER_ENABLE +#define ENCODERS_PAD_A { E0 } +#define ENCODERS_PAD_B { E1 } +#endif + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE + +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION diff --git a/keyboards/handwired/amigopunk/info.json b/keyboards/handwired/amigopunk/info.json new file mode 100644 index 0000000000..ac9aec8f56 --- /dev/null +++ b/keyboards/handwired/amigopunk/info.json @@ -0,0 +1,93 @@ +{ + "keyboard_name": "amigopunk", + "url": "www.haesbaert.org", + "maintainer": "haesbaert", + "width": 17, + "height": 6, + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"K00 (C0,B6)", "x":0, "y":0.25}, + {"label":"K01 (C0,B5)", "x":1, "y":0.25}, + {"label":"K02 (C0,B4)", "x":2, "y":0.25}, + {"label":"K03 (C0,B3)", "x":3, "y":0.25}, + {"label":"K04 (C0,B2)", "x":4, "y":0.25}, + {"label":"K05 (C0,B1)", "x":5, "y":0.25}, + {"label":"K06 (C0,B0)", "x":6, "y":0.25}, + {"label":"K07 (C0,E7)", "x":7, "y":0.25}, + {"label":"K08 (C0,E6)", "x":8, "y":0.25}, + {"label":"K09 (C0,F0)", "x":9, "y":0.25}, + {"label":"K0A (C0,F1)", "x":10, "y":0.25}, + {"label":"K0B (C0,F2)", "x":11, "y":0.25}, + {"label":"K0C (C0,F3)", "x":12, "y":0.25}, + {"label":"K0D (C0,F4)", "x":13, "y":0.25}, + {"label":"K0E (C0,F5)", "x":14, "y":0.25}, + {"label":"K0G (C0,F7)", "x":16, "y":0.25}, + {"label":"K10 (C1,B6)", "x":0, "y":1.25}, + {"label":"K11 (C1,B5)", "x":1, "y":1.25}, + {"label":"K12 (C1,B4)", "x":2, "y":1.25}, + {"label":"K13 (C1,B3)", "x":3, "y":1.25}, + {"label":"K14 (C1,B2)", "x":4, "y":1.25}, + {"label":"K15 (C1,B1)", "x":5, "y":1.25}, + {"label":"K16 (C1,B0)", "x":6, "y":1.25}, + {"label":"K17 (C1,E7)", "x":7, "y":1.25}, + {"label":"K18 (C1,E6)", "x":8, "y":1.25}, + {"label":"K19 (C1,F0)", "x":9, "y":1.25}, + {"label":"K1A (C1,F1)", "x":10, "y":1.25}, + {"label":"K1B (C1,F2)", "x":11, "y":1.25}, + {"label":"K1C (C1,F3)", "x":12, "y":1.25}, + {"label":"K1E (C1,F5)", "x":13, "y":1.25, "w":2}, + {"label":"K1F (C1,F6)", "x":15, "y":1.25}, + {"label":"K20 (C2,B6)", "x":0, "y":2.25, "w":1.5}, + {"label":"K22 (C2,B4)", "x":1.5, "y":2.25}, + {"label":"K23 (C2,B3)", "x":2.5, "y":2.25}, + {"label":"K24 (C2,B2)", "x":3.5, "y":2.25}, + {"label":"K25 (C2,B1)", "x":4.5, "y":2.25}, + {"label":"K26 (C2,B0)", "x":5.5, "y":2.25}, + {"label":"K27 (C2,E7)", "x":6.5, "y":2.25}, + {"label":"K28 (C2,E6)", "x":7.5, "y":2.25}, + {"label":"K29 (C2,F0)", "x":8.5, "y":2.25}, + {"label":"K2A (C2,F1)", "x":9.5, "y":2.25}, + {"label":"K2B (C2,F2)", "x":10.5, "y":2.25}, + {"label":"K2C (C2,F3)", "x":11.5, "y":2.25}, + {"label":"K2D (C2,F4)", "x":12.5, "y":2.25}, + {"label":"K2E (C2,F5)", "x":13.5, "y":2.25, "w":1.5}, + {"label":"K2F (C2,F6)", "x":15, "y":2.25}, + {"label":"K30 (C3,B6)", "x":0, "y":3.25, "w":1.75}, + {"label":"K32 (C3,B4)", "x":1.75, "y":3.25}, + {"label":"K33 (C3,B3)", "x":2.75, "y":3.25}, + {"label":"K34 (C3,B2)", "x":3.75, "y":3.25}, + {"label":"K35 (C3,B1)", "x":4.75, "y":3.25}, + {"label":"K36 (C3,B0)", "x":5.75, "y":3.25}, + {"label":"K37 (C3,E7)", "x":6.75, "y":3.25}, + {"label":"K38 (C3,E6)", "x":7.75, "y":3.25}, + {"label":"K39 (C3,F0)", "x":8.75, "y":3.25}, + {"label":"K3A (C3,F1)", "x":9.75, "y":3.25}, + {"label":"K3B (C3,F2)", "x":10.75, "y":3.25}, + {"label":"K3C (C3,F3)", "x":11.75, "y":3.25}, + {"label":"K3D (C3,F4)", "x":12.75, "y":3.25, "w":2.25}, + {"label":"K41 (C4,B5)", "x":0, "y":4.25, "w":2.25}, + {"label":"K42 (C4,B4)", "x":2.25, "y":4.25}, + {"label":"K43 (C4,B3)", "x":3.25, "y":4.25}, + {"label":"K44 (C4,B2)", "x":4.25, "y":4.25}, + {"label":"K45 (C4,B1)", "x":5.25, "y":4.25}, + {"label":"K46 (C4,B0)", "x":6.25, "y":4.25}, + {"label":"K47 (C4,E7)", "x":7.25, "y":4.25}, + {"label":"K48 (C4,E6)", "x":8.25, "y":4.25}, + {"label":"K49 (C4,F0)", "x":9.25, "y":4.25}, + {"label":"K4A (C4,F1)", "x":10.25, "y":4.25}, + {"label":"K4B (C4,F2)", "x":11.25, "y":4.25}, + {"label":"K4D (C4,F4)", "x":12.25, "y":4.25, "w":2.75}, + {"label":"K4F (C4,F6)", "x":15, "y":4.25}, + {"label":"K51 (C5,B5)", "x":1, "y":5.25, "w":1.5}, + {"label":"K53 (C5,B3)", "x":2.5, "y":5.25, "w":1.5}, + {"label":"K57 (C5,E7)", "x":4, "y":5.25, "w":7}, + {"label":"K5B (C5,F2)", "x":11, "y":5.25, "w":1.5}, + {"label":"K5D (C5,F4)", "x":12.5, "y":5.25, "w":1.5}, + {"label":"K5E (C5,F5)", "x":14, "y":5.25}, + {"label":"K5F (C5,F6)", "x":15, "y":5.25}, + {"label":"K5G (C5,F7)", "x":16, "y":5.25} + ] + } + } +} diff --git a/keyboards/handwired/amigopunk/keymaps/default/keymap.c b/keyboards/handwired/amigopunk/keymaps/default/keymap.c new file mode 100644 index 0000000000..7aed2a61cf --- /dev/null +++ b/keyboards/handwired/amigopunk/keymaps/default/keymap.c @@ -0,0 +1,91 @@ +/* + * Copyright (c) 2021 Christiano Haesbaert + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, KC_MUTE, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, + KC_LGUI, KC_LALT, KC_SPC, XXXXXXX, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, _______, _______, KC_PSCR, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END, + KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLU, + _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT + ), + +}; + +#ifdef ENCODER_ENABLE +void encoder_update_user(uint8_t index, bool clockwise) { + if (index != 0) + return; + + tap_code(clockwise ? KC_VOLU : KC_VOLD); +} +#endif + +#ifdef OLED_DRIVER_ENABLE + +static void render_amigopunk_logo(void) { + static const char PROGMEM amigopunk_logo[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x0f, 0x03, 0xff, 0xfc, 0x80, 0x00, 0x00, + 0x00, 0xf8, 0xf8, 0x60, 0x30, 0xf8, 0xf0, 0x20, 0x30, 0xf8, 0xf0, 0x00, 0x00, 0x00, 0x38, 0x38, + 0x38, 0xf9, 0xf9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xf0, 0x38, 0x18, 0x18, 0xf8, + 0xf8, 0x98, 0x18, 0x00, 0x00, 0x00, 0xe0, 0xf0, 0xf0, 0x38, 0x38, 0x78, 0xf0, 0xe0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x03, 0x03, 0x03, 0x03, 0xff, 0xff, 0x78, 0x00, 0x00, 0x00, 0xf8, 0xf8, 0x00, 0x00, 0x00, 0x00, + 0xf8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xf8, 0xf0, 0x20, 0x30, 0x78, 0xf8, 0xf0, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0xc0, 0xf0, 0xf8, 0x38, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xfe, 0x7f, 0x0f, 0x0e, 0x0e, 0x0e, 0x7f, 0xff, 0xf0, 0x00, + 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0xe0, 0xe0, + 0xe0, 0xff, 0xff, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xbc, 0xfd, 0xe7, 0xe6, 0xe6, 0xe3, + 0xe3, 0xc1, 0x80, 0x00, 0x00, 0x00, 0x3f, 0x7f, 0x78, 0xe0, 0xe0, 0xf0, 0x7f, 0x3f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xf0, 0x60, 0x20, 0x30, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0x07, 0x1f, 0x7f, 0xf8, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0f, 0x0c, 0x0c, 0x0c, 0x0c, + 0x0c, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + oled_write_raw_P(amigopunk_logo, sizeof(amigopunk_logo)); +} +void oled_task_user(void) { + render_amigopunk_logo(); + /* oled_write_P(PSTR("Amigo Punk\n"), false); */ +} +#endif diff --git a/keyboards/handwired/amigopunk/readme.md b/keyboards/handwired/amigopunk/readme.md new file mode 100644 index 0000000000..bad49bd53f --- /dev/null +++ b/keyboards/handwired/amigopunk/readme.md @@ -0,0 +1,19 @@ +# amigopunk + +![amigopunk](https://i.imgur.com/7uVsX1vh.jpeg) + +A 75% handwired with rotary encoder and OLED using matias clicky ALPS. + +* Keyboard Maintainer: [haesbaert](https://github.com/haesbaert) +* Hardware Supported: Teensy 2.0++ +* Hardware Availability: haesbaert@haesbaert.org + +Make example for this keyboard (after setting up your build environment): + + make handwired/amigopunk:default + +Flashing example for this keyboard: + + make handwired/amigopunk:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/handwired/amigopunk/rules.mk b/keyboards/handwired/amigopunk/rules.mk new file mode 100644 index 0000000000..d62975bc9f --- /dev/null +++ b/keyboards/handwired/amigopunk/rules.mk @@ -0,0 +1,24 @@ +# MCU name +MCU = at90usb1286 + +# Bootloader selection +BOOTLOADER = halfkay + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +ENCODER_ENABLE = yes +OLED_DRIVER_ENABLE = yes From cce9ddff80fe7808bf0a8005a4fc3eb51c6e1bdb Mon Sep 17 00:00:00 2001 From: Felix Jen Date: Tue, 20 Apr 2021 12:47:31 -0500 Subject: [PATCH 264/613] [Keyboard] Added BKS65 Solder PCB (#12451) Co-authored-by: Ryan --- keyboards/fjlabs/bks65solder/bks65solder.c | 14 +++ keyboards/fjlabs/bks65solder/bks65solder.h | 32 ++++++ keyboards/fjlabs/bks65solder/config.h | 108 ++++++++++++++++++ keyboards/fjlabs/bks65solder/info.json | 89 +++++++++++++++ .../bks65solder/keymaps/default/keymap.c | 39 +++++++ .../fjlabs/bks65solder/keymaps/via/keymap.c | 58 ++++++++++ .../fjlabs/bks65solder/keymaps/via/rules.mk | 1 + keyboards/fjlabs/bks65solder/readme.md | 19 +++ keyboards/fjlabs/bks65solder/rules.mk | 28 +++++ 9 files changed, 388 insertions(+) create mode 100644 keyboards/fjlabs/bks65solder/bks65solder.c create mode 100644 keyboards/fjlabs/bks65solder/bks65solder.h create mode 100644 keyboards/fjlabs/bks65solder/config.h create mode 100644 keyboards/fjlabs/bks65solder/info.json create mode 100644 keyboards/fjlabs/bks65solder/keymaps/default/keymap.c create mode 100644 keyboards/fjlabs/bks65solder/keymaps/via/keymap.c create mode 100644 keyboards/fjlabs/bks65solder/keymaps/via/rules.mk create mode 100644 keyboards/fjlabs/bks65solder/readme.md create mode 100644 keyboards/fjlabs/bks65solder/rules.mk diff --git a/keyboards/fjlabs/bks65solder/bks65solder.c b/keyboards/fjlabs/bks65solder/bks65solder.c new file mode 100644 index 0000000000..0ebf9000df --- /dev/null +++ b/keyboards/fjlabs/bks65solder/bks65solder.c @@ -0,0 +1,14 @@ +/* +Copyright 2020 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "bks65solder.h" diff --git a/keyboards/fjlabs/bks65solder/bks65solder.h b/keyboards/fjlabs/bks65solder/bks65solder.h new file mode 100644 index 0000000000..1a238c50da --- /dev/null +++ b/keyboards/fjlabs/bks65solder/bks65solder.h @@ -0,0 +1,32 @@ +/* +Copyright 2020 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +/* BKS65 Solder Solder Keymap Definitions */ +#define LAYOUT_65_ansi( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ + K40, K41, K42, K45, K46, K48, K49, K4A, K4B, K4C, K4D, K4E \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \ + { K40, K41, K42, KC_NO, KC_NO, K45, K46, KC_NO, K48, K49, K4A, K4B, K4C, K4D, K4E } \ +} diff --git a/keyboards/fjlabs/bks65solder/config.h b/keyboards/fjlabs/bks65solder/config.h new file mode 100644 index 0000000000..94bb5157e6 --- /dev/null +++ b/keyboards/fjlabs/bks65solder/config.h @@ -0,0 +1,108 @@ +/* +Copyright 2020 + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7074 // FJLabs +#define PRODUCT_ID 0x0099 // BKS65 Solder +#define DEVICE_VER 0x0001 // Version 1 +#define MANUFACTURER FJLabs +#define PRODUCT BKS65 Solder + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ + +// Checked with Eagle Schematic +#define MATRIX_ROW_PINS { F4, F1, F7, F6, F5 } +#define MATRIX_COL_PINS { F0, B1, B2, B3, B7, D0, D1, D2, D3, D5, D7, B4, B5, B6, C6 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* Define RGB Underglow */ +#define RGB_DI_PIN B0 +#define RGBLED_NUM 24 +#define RGBLIGHT_ANIMATIONS +/* #define RGBLIGHT_LAYER_BLINK*/ + +/* Define less important options */ + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION diff --git a/keyboards/fjlabs/bks65solder/info.json b/keyboards/fjlabs/bks65solder/info.json new file mode 100644 index 0000000000..3dc952347c --- /dev/null +++ b/keyboards/fjlabs/bks65solder/info.json @@ -0,0 +1,89 @@ +{ + "keyboard_name": "BKS65 Solder", + "url": "https://www.bolsakeyboardsupply.com", + "maintainer": "FJLabs", + "width": 16, + "height": 5, + "layouts": { + "LAYOUT_65_ansi": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + {"x": 15, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + {"x": 13.5, "y": 1, "w": 1.5}, + {"x": 15, "y": 1}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2, "w": 2.25}, + {"x": 15, "y": 2}, + + {"x": 0, "y": 3, "w": 1.25}, + {"x": 1, "y": 3}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3}, + {"x": 12.25, "y": 3, "w": 1.75}, + {"x": 14, "y": 3}, + {"x": 15, "y": 3}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 2.25}, + {"x": 6, "y": 4, "w": 1.25}, + {"x": 7.25, "y": 4, "w": 2.75}, + {"x": 10, "y": 4}, + {"x": 11, "y": 4}, + {"x": 12, "y": 4}, + {"x": 13, "y": 4}, + {"x": 14, "y": 4}, + {"x": 15, "y": 4} + ] + } + } +} diff --git a/keyboards/fjlabs/bks65solder/keymaps/default/keymap.c b/keyboards/fjlabs/bks65solder/keymaps/default/keymap.c new file mode 100644 index 0000000000..15133a2eed --- /dev/null +++ b/keyboards/fjlabs/bks65solder/keymaps/default/keymap.c @@ -0,0 +1,39 @@ +/* +Copyright 2020 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layers { + _LAYER0, + _LAYER1, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_LAYER0] = LAYOUT_65_ansi( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_DEL, KC_PGDN, + KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_LAYER1] = LAYOUT_65_ansi( + KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_HOME, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUSE, RESET, KC_PGUP, + KC_TRNS, RGB_SPI, RGB_SPD, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/fjlabs/bks65solder/keymaps/via/keymap.c b/keyboards/fjlabs/bks65solder/keymaps/via/keymap.c new file mode 100644 index 0000000000..032e879b0a --- /dev/null +++ b/keyboards/fjlabs/bks65solder/keymaps/via/keymap.c @@ -0,0 +1,58 @@ +/* +Copyright 2020 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layers { + _LAYER0, + _LAYER1, + _LAYER2, + _LAYER3, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_LAYER0] = LAYOUT_65_ansi( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_DEL, KC_PGDN, + KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_LAYER1] = LAYOUT_65_ansi( + KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_HOME, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUSE, RESET, KC_PGUP, + KC_TRNS, RGB_SPI, RGB_SPD, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [_LAYER2] = LAYOUT_65_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [_LAYER3] = LAYOUT_65_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + +}; diff --git a/keyboards/fjlabs/bks65solder/keymaps/via/rules.mk b/keyboards/fjlabs/bks65solder/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/fjlabs/bks65solder/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/fjlabs/bks65solder/readme.md b/keyboards/fjlabs/bks65solder/readme.md new file mode 100644 index 0000000000..736a6ba3c3 --- /dev/null +++ b/keyboards/fjlabs/bks65solder/readme.md @@ -0,0 +1,19 @@ +# BKS65 Solder + +The following is the QMK Firmware for the [BolsaKeyboardSupply](https://www.bolsakeyboardsupply.com) BKS65 Solder PCB, a universal, tray mount 65% solder PCB. + +The PCB will feature: +* QMK & VIA compatibility +* Underglow +* Some cool bolsa branding + +--- + +* Keyboard Maintainer: FJLabs +* Hardware Supported: BKS65 Solder + +Make example for this keyboard (after setting up your build environment): + + make fjlabs/bks65solder:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/fjlabs/bks65solder/rules.mk b/keyboards/fjlabs/bks65solder/rules.mk new file mode 100644 index 0000000000..5f75863ba6 --- /dev/null +++ b/keyboards/fjlabs/bks65solder/rules.mk @@ -0,0 +1,28 @@ +# MCU name +MCU = atmega32u4 + +# Processor frequency +F_CPU = 8000000 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +KEYBOARD_LOCK_ENABLE = yes + +LAYOUTS = 65_ansi From 0d5458a7ad4fa8a36692711160d558b0522bc66a Mon Sep 17 00:00:00 2001 From: mechlovin <57231893+mechlovin@users.noreply.github.com> Date: Wed, 21 Apr 2021 00:47:58 +0700 Subject: [PATCH 265/613] [Keyboard] add adelais rev4 (#12443) --- keyboards/mechlovin/adelais/rgb_led/readme.md | 16 +++++++++ .../mechlovin/adelais/standard_led/config.h | 17 +++++++++ .../mechlovin/adelais/standard_led/halconf.h | 27 ++++++++++++++ .../mechlovin/adelais/standard_led/mcuconf.h | 36 +++++++++++++++++++ .../mechlovin/adelais/standard_led/readme.md | 16 +++++++++ .../adelais/standard_led/rev4/config.h | 25 +++++++++++++ .../adelais/standard_led/rev4/readme.md | 16 +++++++++ .../adelais/standard_led/rev4/rules.mk | 1 + .../mechlovin/adelais/standard_led/rules.mk | 1 + 9 files changed, 155 insertions(+) create mode 100644 keyboards/mechlovin/adelais/rgb_led/readme.md create mode 100644 keyboards/mechlovin/adelais/standard_led/halconf.h create mode 100644 keyboards/mechlovin/adelais/standard_led/mcuconf.h create mode 100644 keyboards/mechlovin/adelais/standard_led/readme.md create mode 100644 keyboards/mechlovin/adelais/standard_led/rev4/config.h create mode 100644 keyboards/mechlovin/adelais/standard_led/rev4/readme.md create mode 100644 keyboards/mechlovin/adelais/standard_led/rev4/rules.mk diff --git a/keyboards/mechlovin/adelais/rgb_led/readme.md b/keyboards/mechlovin/adelais/rgb_led/readme.md new file mode 100644 index 0000000000..f58ca7aa29 --- /dev/null +++ b/keyboards/mechlovin/adelais/rgb_led/readme.md @@ -0,0 +1,16 @@ +# Adelais En Ciel + +![adelais](https://i.imgur.com/6U1IfZe.png) + +Compatible with TGR Alice and all clone variants. +`rgb_led` (Adelais En Ciel) comes with per-key RGB LEDs pre-soldered, rev.2 and rev.3 support a rotary encoder. + +* Keyboard Maintainer: [Team Mechlovin'](https://github.com/mechlovin) +* Hardware Supported: Adelais En Ciel +* Hardware Availability: [Mechlovin.studio](https://mechlovin.studio/collections/pcb/products/adelais-en-ciel-alice-compatible-rgb-pcb?variant=33937050828939) + +Make example for this keyboard (after setting up your build environment): + + make mechlovin/adelais/rgb_led:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/mechlovin/adelais/standard_led/config.h b/keyboards/mechlovin/adelais/standard_led/config.h index 064cf3d2c5..4580e56d5a 100644 --- a/keyboards/mechlovin/adelais/standard_led/config.h +++ b/keyboards/mechlovin/adelais/standard_led/config.h @@ -1,3 +1,20 @@ +/* +Copyright 2020 Team Mechlovin' + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + #pragma once #define PRODUCT Adelais diff --git a/keyboards/mechlovin/adelais/standard_led/halconf.h b/keyboards/mechlovin/adelais/standard_led/halconf.h new file mode 100644 index 0000000000..01d02f71c3 --- /dev/null +++ b/keyboards/mechlovin/adelais/standard_led/halconf.h @@ -0,0 +1,27 @@ +/* Copyright 2020 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + + +#pragma once + +#define HAL_USE_I2C TRUE + +#define PAL_USE_CALLBACKS FALSE + +#define PAL_USE_WAIT FALSE + +#include_next + diff --git a/keyboards/mechlovin/adelais/standard_led/mcuconf.h b/keyboards/mechlovin/adelais/standard_led/mcuconf.h new file mode 100644 index 0000000000..b7ecee0204 --- /dev/null +++ b/keyboards/mechlovin/adelais/standard_led/mcuconf.h @@ -0,0 +1,36 @@ +/* Copyright 2020 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + + +#pragma once + +#include_next + +#undef STM32_GPT_USE_TIM15 +#define STM32_GPT_USE_TIM15 FALSE + +#undef STM32_I2C_USE_I2C1 +#define STM32_I2C_USE_I2C1 TRUE + +#undef STM32_PWM_USE_TIM3 +#define STM32_PWM_USE_TIM3 FALSE + +#undef STM32_SPI_USE_SPI1 +#define STM32_SPI_USE_SPI1 TRUE + +#undef STM32_SPI_USE_SPI2 +#define STM32_SPI_USE_SPI2 FALSE + diff --git a/keyboards/mechlovin/adelais/standard_led/readme.md b/keyboards/mechlovin/adelais/standard_led/readme.md new file mode 100644 index 0000000000..a7c76beb49 --- /dev/null +++ b/keyboards/mechlovin/adelais/standard_led/readme.md @@ -0,0 +1,16 @@ +# Adelais + +![adelais](https://i.imgur.com/6U1IfZe.png) + +Compatible with TGR Alice and all clone variants. +`standard_led` (Adelais) comes with backlight and RGB underglow LEDs pre-soldered. Adelais rev.3 & rev.4 support 3 rotary encoder, USB TypeC both side and reset footprint. + +* Keyboard Maintainer: [Team Mechlovin'](https://github.com/mechlovin) +* Hardware Supported: Adelais +* Hardware Availability: [Mechlovin.studio](https://mechlovin.studio/collections/pcb/products/adelais-tgr-alice-clones-compatible-pcb?variant=34140335472779) + +Make example for this keyboard (after setting up your build environment): + + make mechlovin/adelais/standard_led:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/mechlovin/adelais/standard_led/rev4/config.h b/keyboards/mechlovin/adelais/standard_led/rev4/config.h new file mode 100644 index 0000000000..ca793f1fec --- /dev/null +++ b/keyboards/mechlovin/adelais/standard_led/rev4/config.h @@ -0,0 +1,25 @@ +/* +Copyright 2021 Mechlovin' Studio + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#define PRODUCT_ID 0xAD03 + +#define ENCODERS_PAD_A { A6, A4, B7 } +#define ENCODERS_PAD_B { A5, A3, B6 } +#define ENCODER_RESOLUTION 4 + +#define TAP_CODE_DELAY 10 \ No newline at end of file diff --git a/keyboards/mechlovin/adelais/standard_led/rev4/readme.md b/keyboards/mechlovin/adelais/standard_led/rev4/readme.md new file mode 100644 index 0000000000..333efbacdb --- /dev/null +++ b/keyboards/mechlovin/adelais/standard_led/rev4/readme.md @@ -0,0 +1,16 @@ +# Adelais rev.4 + +![adelais](https://i.imgur.com/6U1IfZe.png) + +Compatible with TGR Alice and all clone variants. +`standard_led` (Adelais) comes with backlight and RGB underglow LEDs pre-soldered. Adelais rev.4 support 3 rotary encoder, USB TypeC both side and reset footprint. + +* Keyboard Maintainer: [Team Mechlovin'](https://github.com/mechlovin) +* Hardware Supported: Adelais +* Hardware Availability: [Mechlovin.studio](https://mechlovin.studio/collections/pcb/products/adelais-tgr-alice-clones-compatible-pcb?variant=34140335472779) + +Make example for this keyboard (after setting up your build environment): + + make mechlovin/adelais/standard_led:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/mechlovin/adelais/standard_led/rev4/rules.mk b/keyboards/mechlovin/adelais/standard_led/rev4/rules.mk new file mode 100644 index 0000000000..5af1ba8536 --- /dev/null +++ b/keyboards/mechlovin/adelais/standard_led/rev4/rules.mk @@ -0,0 +1 @@ +ENCODER_ENABLE = yes diff --git a/keyboards/mechlovin/adelais/standard_led/rules.mk b/keyboards/mechlovin/adelais/standard_led/rules.mk index a66d19314a..b4523dbf37 100644 --- a/keyboards/mechlovin/adelais/standard_led/rules.mk +++ b/keyboards/mechlovin/adelais/standard_led/rules.mk @@ -1,2 +1,3 @@ RGBLIGHT_ENABLE = yes +WS2812_DRIVER = spi DEFAULT_FOLDER = mechlovin/adelais/standard_led/rev2 \ No newline at end of file From 2bccb7132da24fa9d3a3a74a6c9e578b6d1960c8 Mon Sep 17 00:00:00 2001 From: Brandon Claveria <48102030+swiftrax@users.noreply.github.com> Date: Tue, 20 Apr 2021 10:50:06 -0700 Subject: [PATCH 266/613] [Keyboard] Siris (#12415) Co-authored-by: Ryan Co-authored-by: Swiftrax --- keyboards/ffkeebs/siris/config.h | 48 +++ keyboards/ffkeebs/siris/info.json | 293 ++++++++++++++++++ .../ffkeebs/siris/keymaps/default/keymap.c | 61 ++++ keyboards/ffkeebs/siris/keymaps/via/keymap.c | 61 ++++ keyboards/ffkeebs/siris/keymaps/via/rules.mk | 1 + keyboards/ffkeebs/siris/readme.md | 13 + keyboards/ffkeebs/siris/rules.mk | 23 ++ keyboards/ffkeebs/siris/siris.c | 17 + keyboards/ffkeebs/siris/siris.h | 37 +++ 9 files changed, 554 insertions(+) create mode 100644 keyboards/ffkeebs/siris/config.h create mode 100644 keyboards/ffkeebs/siris/info.json create mode 100644 keyboards/ffkeebs/siris/keymaps/default/keymap.c create mode 100644 keyboards/ffkeebs/siris/keymaps/via/keymap.c create mode 100644 keyboards/ffkeebs/siris/keymaps/via/rules.mk create mode 100644 keyboards/ffkeebs/siris/readme.md create mode 100644 keyboards/ffkeebs/siris/rules.mk create mode 100644 keyboards/ffkeebs/siris/siris.c create mode 100644 keyboards/ffkeebs/siris/siris.h diff --git a/keyboards/ffkeebs/siris/config.h b/keyboards/ffkeebs/siris/config.h new file mode 100644 index 0000000000..6b7733b361 --- /dev/null +++ b/keyboards/ffkeebs/siris/config.h @@ -0,0 +1,48 @@ +/* +Copyright 2021 Swiftrax + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x04D8 +#define PRODUCT_ID 0xE96C +#define DEVICE_VER 0x0001 +#define MANUFACTURER Swiftrax +#define PRODUCT Siris + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 12 + +// ROWS: Top to bottom, COLS: Left to right + +#define MATRIX_ROW_PINS { B5, B4, D7, D6, D4 } +#define MATRIX_COL_PINS { D2, D1, D0, B7, B3, B2, F0, F1, F4, F5, F6, F7 } + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +#define ENCODERS_PAD_A { D3, C6 } +#define ENCODERS_PAD_B { D5, B6 } + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 diff --git a/keyboards/ffkeebs/siris/info.json b/keyboards/ffkeebs/siris/info.json new file mode 100644 index 0000000000..f81d216ad2 --- /dev/null +++ b/keyboards/ffkeebs/siris/info.json @@ -0,0 +1,293 @@ +{ + "keyboard_name":"Siris", + "url":"https://github.com/swiftrax", + "maintainer":"Swiftrax", + "width":17.75, + "height":5.5, + "layouts":{ + "LAYOUT":{ + "layout":[ + { + "label":"0,3", + "x":3.5, + "y":0 + }, + { + "label":"0,8", + "x":13.75, + "y":0 + }, + { + "label":"0,2", + "x":2.5, + "y":0.125 + }, + { + "label":"0,4", + "x":4.5, + "y":0.125 + }, + { + "label":"0,7", + "x":12.75, + "y":0.13 + }, + { + "label":"0,9", + "x":14.75, + "y":0.13 + }, + { + "label":"0,5", + "x":5.5, + "y":0.25 + }, + { + "label":"0,6", + "x":11.75, + "y":0.25 + }, + { + "label":"0,1", + "x":1.5, + "y":0.375 + }, + { + "label":"0,0", + "x":0.5, + "y":0.38 + }, + { + "label":"0,10", + "x":15.75, + "y":0.38 + }, + { + "label":"0,11", + "x":16.75, + "y":0.38 + }, + { + "label":"1,3", + "x":3.5, + "y":1.0 + }, + { + "label":"1,8", + "x":13.75, + "y":1.0 + }, + { + "label":"1,2", + "x":2.5, + "y":1.125 + }, + { + "label":"1,4", + "x":4.5, + "y":1.125 + }, + { + "label":"1,7", + "x":12.75, + "y":1.13 + }, + { + "label":"1,9", + "x":14.75, + "y":1.13 + }, + { + "label":"1,5", + "x":5.5, + "y":1.25 + }, + { + "label":"1,6", + "x":11.75, + "y":1.25 + }, + { + "label":"1,1", + "x":1.5, + "y":1.375 + }, + { + "label":"1,0", + "x":0.5, + "y":1.38 + }, + { + "label":"1,10", + "x":15.75, + "y":1.38 + }, + { + "label":"1,11", + "x":16.75, + "y":1.38 + }, + { + "label":"2,3", + "x":3.5, + "y":2 + }, + { + "label":"2,8", + "x":13.75, + "y":2 + }, + { + "label":"2,2", + "x":2.5, + "y":2.125 + }, + { + "label":"2,4", + "x":4.5, + "y":2.125 + }, + { + "label":"2,7", + "x":12.75, + "y":2.13 + }, + { + "label":"2,9", + "x":14.75, + "y":2.13 + }, + { + "label":"2,5", + "x":5.5, + "y":2.25 + }, + { + "label":"2,6", + "x":11.75, + "y":2.25 + }, + { + "label":"2,1", + "x":1.5, + "y":2.375 + }, + { + "label":"2,0", + "x":0.5, + "y":2.38 + }, + { + "label":"2,10", + "x":15.75, + "y":2.38 + }, + { + "label":"2,11", + "x":16.75, + "y":2.38 + }, + { + "label":"4,5", + "x":6.75, + "y":2.63 + }, + { + "label":"4,6", + "x":10.5, + "y":2.63 + }, + { + "label":"3,3", + "x":3.5, + "y":3 + }, + { + "label":"3,8", + "x":13.75, + "y":3 + }, + { + "label":"3,2", + "x":2.5, + "y":3.125 + }, + { + "label":"3,4", + "x":4.5, + "y":3.125 + }, + { + "label":"3,7", + "x":12.75, + "y":3.13 + }, + { + "label":"3,9", + "x":14.75, + "y":3.13 + }, + { + "label":"3,5", + "x":5.5, + "y":3.25 + }, + { + "label":"3,6", + "x":11.75, + "y":3.25 + }, + { + "label":"3,1", + "x":1.5, + "y":3.375 + }, + { + "label":"3,0", + "x":0.5, + "y":3.38 + }, + { + "label":"3,10", + "x":15.75, + "y":3.38 + }, + { + "label":"3,11", + "x":16.75, + "y":3.38 + }, + { + "label":"4,2", + "x":4.25, + "y":4.15 + }, + { + "label":"4,0", + "x":13, + "y":4.15 + }, + { + "label":"4,3", + "x":5.25, + "y":4.25 + }, + { + "label":"4,8", + "x":12, + "y":4.25 + }, + { + "x":6.5, + "y":4.5, + "w":1.5 + }, + { + "x":10.25, + "y":4.5, + "w":1.5 + } + ] + } + } +} diff --git a/keyboards/ffkeebs/siris/keymaps/default/keymap.c b/keyboards/ffkeebs/siris/keymaps/default/keymap.c new file mode 100644 index 0000000000..2096f812b9 --- /dev/null +++ b/keyboards/ffkeebs/siris/keymaps/default/keymap.c @@ -0,0 +1,61 @@ +/* +Copyright 2021 Swiftrax + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[0] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_GRV, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_BSLS, + KC_LGUI, MO(1), KC_SPC, KC_LBRC, KC_RBRC, KC_ENT, MO(2), KC_BSPC), +[1] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______), +[2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______), +[3] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______), +}; + +void encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { /* First encoder */ + if (clockwise) { + tap_code(KC_PGDN); + } else { + tap_code(KC_PGUP); + } + } else if (index == 1) { /* Second encoder */ + if (clockwise) { + tap_code(KC_DOWN); + } else { + tap_code(KC_UP); + } + } +} \ No newline at end of file diff --git a/keyboards/ffkeebs/siris/keymaps/via/keymap.c b/keyboards/ffkeebs/siris/keymaps/via/keymap.c new file mode 100644 index 0000000000..2096f812b9 --- /dev/null +++ b/keyboards/ffkeebs/siris/keymaps/via/keymap.c @@ -0,0 +1,61 @@ +/* +Copyright 2021 Swiftrax + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[0] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_GRV, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_BSLS, + KC_LGUI, MO(1), KC_SPC, KC_LBRC, KC_RBRC, KC_ENT, MO(2), KC_BSPC), +[1] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______), +[2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______), +[3] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______), +}; + +void encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { /* First encoder */ + if (clockwise) { + tap_code(KC_PGDN); + } else { + tap_code(KC_PGUP); + } + } else if (index == 1) { /* Second encoder */ + if (clockwise) { + tap_code(KC_DOWN); + } else { + tap_code(KC_UP); + } + } +} \ No newline at end of file diff --git a/keyboards/ffkeebs/siris/keymaps/via/rules.mk b/keyboards/ffkeebs/siris/keymaps/via/rules.mk new file mode 100644 index 0000000000..036bd6d1c3 --- /dev/null +++ b/keyboards/ffkeebs/siris/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/ffkeebs/siris/readme.md b/keyboards/ffkeebs/siris/readme.md new file mode 100644 index 0000000000..355dc591a5 --- /dev/null +++ b/keyboards/ffkeebs/siris/readme.md @@ -0,0 +1,13 @@ +# Siris + +Hotswap fixed split keyboard + +* Keyboard Maintainer: Swiftrax +* Hardware Supported: Siris +* Hardware Availability: https://ffkeebs.com/ + +Make example for this keyboard (after setting up your build environment): + + make ffkeebs/siris:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/ffkeebs/siris/rules.mk b/keyboards/ffkeebs/siris/rules.mk new file mode 100644 index 0000000000..912413f26c --- /dev/null +++ b/keyboards/ffkeebs/siris/rules.mk @@ -0,0 +1,23 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +ENCODER_ENABLE = yes # Rotary Encoder \ No newline at end of file diff --git a/keyboards/ffkeebs/siris/siris.c b/keyboards/ffkeebs/siris/siris.c new file mode 100644 index 0000000000..cfd505773a --- /dev/null +++ b/keyboards/ffkeebs/siris/siris.c @@ -0,0 +1,17 @@ +/* +Copyright 2021 Swiftrax + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "siris.h" diff --git a/keyboards/ffkeebs/siris/siris.h b/keyboards/ffkeebs/siris/siris.h new file mode 100644 index 0000000000..1c355e8a55 --- /dev/null +++ b/keyboards/ffkeebs/siris/siris.h @@ -0,0 +1,37 @@ +/* +Copyright 2021 Swiftrax + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +// readability +#define XXX KC_NO + +#define LAYOUT( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, \ + K42, K43, K44, K45, K46, K47, K48, K49 \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B }, \ + { XXX, XXX, K42, K43, K44, K45, K46, K47, K48, K49, XXX, XXX } \ +} From 1cecd593c81e1dca225919614b6f3f8f3f1d4bf7 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Tue, 20 Apr 2021 18:51:55 +0100 Subject: [PATCH 267/613] Fix for gcc10 teensy_lc eeprom build warning (#12587) --- tmk_core/common/chibios/eeprom_teensy.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tmk_core/common/chibios/eeprom_teensy.c b/tmk_core/common/chibios/eeprom_teensy.c index e135e19a21..4aaf665269 100644 --- a/tmk_core/common/chibios/eeprom_teensy.c +++ b/tmk_core/common/chibios/eeprom_teensy.c @@ -363,7 +363,7 @@ void eeprom_initialize(void) { return; } } while (p < (uint16_t *)SYMVAL(__eeprom_workarea_end__)); - flashend = (uint32_t)((uint16_t *)SYMVAL(__eeprom_workarea_end__) - 1); + flashend = (uint32_t)(p - 1); } uint8_t eeprom_read_byte(const uint8_t *addr) { From 6b5e349d7e3c3684c1baa543972dd0504217c7ba Mon Sep 17 00:00:00 2001 From: Drashna Jaelre Date: Tue, 20 Apr 2021 11:12:57 -0700 Subject: [PATCH 268/613] Add additional info to PR Checklist (#12630) Co-authored-by: Nick Brassel --- docs/pr_checklist.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docs/pr_checklist.md b/docs/pr_checklist.md index e0dd0770cb..58df153031 100644 --- a/docs/pr_checklist.md +++ b/docs/pr_checklist.md @@ -68,6 +68,7 @@ https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard - bare minimum required code for a board to boot into QMK should be present - initialisation code for the matrix and critical devices - mirroring existing functionality of a commercial board (like custom keycodes and special animations etc.) should be handled through non-`default` keymaps + - VIAL-related files or changes will not be accepted, as they are not used by QMK firmware (no VIAL-specific core code has been submitted or merged) - `keyboard.c` - empty `xxxx_xxxx_kb()` or other weak-defined default implemented functions removed - commented-out functions removed too @@ -94,6 +95,8 @@ https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard - standard layouts preferred in these keymaps, if possible - submitters can have a personal (or bells-and-whistles) keymap showcasing capabilities in the same PR but it shouldn't be embedded in the 'default' keymap - submitters can also have a "manufacturer-matching" keymap that mirrors existing functionality of the commercial product, if porting an existing board +- Do not include VIA json files in the PR. These do not belong in the QMK repository as they are not used by QMK firmware -- they belong in the [VIA Keyboard Repo](https://github.com/the-via/keyboards) + Also, specific to ChibiOS: - **strong** preference to using existing ChibiOS board definitions. @@ -127,3 +130,9 @@ There are instructions on how to keep your fork updated here: Thanks for contributing! ``` + +## Review Process + +In general, we want to see two (or more) approvals that are meaningful (e.g. that have inspected code) before a PR will be considered for merge. These reviews are not limited to collaborators -- any community member willing to put in the time is welcomed (and encouraged). The only difference is that your checkmark won't be green, and that's fine! + +Additionally, PR reviews are something that is done in our free time. We are not paid nor compensated for the time we spend reviewing, as it is a labor of love. As such, this means that it can take time for us to get to your Pull Request. Things like family, or life can get in the way of us getting to PRs, and burnout is a serious concern. The QMK firmware repository averages 200 PRs opened and 200 PRs merged every month, so please have patience. From 054adbaf1e1e819f1dcd881bb6278b47d20cfe3d Mon Sep 17 00:00:00 2001 From: Joshua Coffey <31978203+JoshEvCoffey@users.noreply.github.com> Date: Tue, 20 Apr 2021 15:01:54 -0400 Subject: [PATCH 269/613] Update for the dodger keymap for the Planck (#12456) --- keyboards/planck/keymaps/dodger/config.h | 4 + keyboards/planck/keymaps/dodger/keymap.c | 237 +++++++---------------- keyboards/planck/keymaps/dodger/rules.mk | 1 + 3 files changed, 74 insertions(+), 168 deletions(-) diff --git a/keyboards/planck/keymaps/dodger/config.h b/keyboards/planck/keymaps/dodger/config.h index e0a83f7cbe..e9e778f85b 100644 --- a/keyboards/planck/keymaps/dodger/config.h +++ b/keyboards/planck/keymaps/dodger/config.h @@ -19,3 +19,7 @@ along with this program. If not, see . #undef BACKLIGHT_LEVELS #define BACKLIGHT_LEVELS 15 + +#define RGBLIGHT_ANIMATIONS + +#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_SWIRL+5 \ No newline at end of file diff --git a/keyboards/planck/keymaps/dodger/keymap.c b/keyboards/planck/keymaps/dodger/keymap.c index 421c719c25..80f8445cc6 100644 --- a/keyboards/planck/keymaps/dodger/keymap.c +++ b/keyboards/planck/keymaps/dodger/keymap.c @@ -18,35 +18,25 @@ extern keymap_config_t keymap_config; bool isGame = false; -bool isMusic = false; +bool qwertGame = false; enum planck_layers { _COLEMAK, _GAME, - _MUSIC, + _QWERTGAME, _LOWER, _RAISE, - _ADJUST, + _ADJUST }; enum planck_keycodes { COLEMAK = SAFE_RANGE, GCTOGG, - MCTOGG, + QGCTOGG, LOWER, RAISE, - LENNY, - COMMENTHEAD, - RICKANDMORT, - MARIO, - MARIOE, - OVERWATCH, - DOOM, - DISNEY, - NUMBERONE, - CABBAGE, - OLDSPICE, + PAREN }; enum { @@ -69,14 +59,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+------|------+------+------+------+------+------| * | Shift| Z | X | C | V | B | K | M | , | . | / | - | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Ctrl | GUI | Alt |lenny |Lower | shift|space |Raise | macro|macro2|macro3|QWERTY| + * | Ctrl | GUI | Alt |PAREN |Lower | shift|space |Raise | Left | Down | Up | Right| * `-----------------------------------------------------------------------------------' */ [_COLEMAK] = LAYOUT_planck_grid( KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_EQL, KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_MINS, - KC_LCTL, KC_LGUI, KC_LALT, LENNY, LOWER, RSFT_T(KC_BSPC), TD(TD_SPC_ENT), RAISE, COMMENTHEAD, RICKANDMORT, KC_LEFT, KC_RGHT + KC_LCTL, KC_LGUI, KC_LALT, PAREN, LOWER, RSFT_T(KC_BSPC), TD(TD_SPC_ENT), RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT ), /* Lower @@ -93,8 +83,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_LOWER] = LAYOUT_planck_grid( _______, _______, _______, KC_LBRC, KC_RBRC, _______, KC_LPRN, KC_RPRN, KC_LCBR, KC_RCBR, _______, S(KC_EQL), KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_PIPE, - _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, KC_UNDS, - _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_MPRV, KC_MNXT, _______, KC_UNDS, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MPLY ), /* Raise @@ -105,30 +95,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+------|------+------+------+------+------+------| * | | | | | | | | | | | | | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | bl- | bl+ | GCTG | + * | | | | | | | | | | | GCTG | * `-----------------------------------------------------------------------------------' */ [_RAISE] = LAYOUT_planck_grid( KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, KC_TILD, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_DEC, MCTOGG, GCTOGG + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, GCTOGG ), /* Adjust (Lower + Raise) * ,-----------------------------------------------------------------------------------. - * | | Reset| | | | | | | | | | Del | + * |EEPRst| Reset| | | | | | | | | | Del | * |------+------+------+------+------+-------------+------+------+------+------+------| - * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover| | + * | | | |Aud on|Audoff|AGnorm|AGswap| | | | | | * |------+------+------+------+------+------|------+------+------+------+------+------| - * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | | + * | |Voice-|Voice+|Mus on|Musoff| | | | | | | | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | | | | | | | | * `-----------------------------------------------------------------------------------' */ [_ADJUST] = LAYOUT_planck_grid( - _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL , - _______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, _______, COLEMAK, _______, _______, _______, + EEP_RST, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL , + _______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, _______, _______, _______, _______, _______, _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, _______, _______, TERM_ON, TERM_OFF, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), @@ -137,102 +127,54 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_EQL, KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_MINS, - KC_LCTL, RAISE, KC_LALT, LOWER, KC_SPC, RSFT_T(KC_BSPC), TD(TD_SPC_ENT), RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT + KC_LCTL, QGCTOGG, KC_LALT, LOWER, KC_SPC, RSFT_T(KC_BSPC), TD(TD_SPC_ENT), RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT ), -[_MUSIC] = LAYOUT_planck_grid( - MARIO, MARIOE, OVERWATCH, DOOM, DISNEY, NUMBERONE, CABBAGE, OLDSPICE, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +[_QWERTGAME] = LAYOUT_planck_grid( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_EQL, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_MINS, + KC_LCTL, QGCTOGG, KC_LALT, LOWER, KC_SPC, RSFT_T(KC_BSPC), TD(TD_SPC_ENT), RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT ) - }; -#ifdef AUDIO_ENABLE - float guitar[][2] = SONG(GUITAR_SOUND); - float mario[][2] = SONG(MARIO_THEME); - float marioe[][2] = SONG(MARIO_GAMEOVER); - float overwatch[][2] = SONG(OVERWATCH_THEME); - float doom[][2] = SONG(E1M1_DOOM); - float disney[][2] = SONG(DISNEY_SONG); - float numberone[][2] = SONG(NUMBER_ONE); - float cabbage[][2] = SONG(CABBAGE_SONG); - float oldspice[][2] = SONG(OLD_SPICE); -#endif - -void setLayer(int layer) { - if (layer == _COLEMAK) { - #ifdef AUDIO_ENABLE - stop_all_notes(); - PLAY_SONG(marioe); - #endif - set_single_persistent_default_layer(_COLEMAK); - #ifdef BACKLIGHT_ENABLE - backlight_set(0); - #endif - } else if (layer == _GAME) { - #ifdef AUDIO_ENABLE - stop_all_notes(); - PLAY_SONG(mario); - #endif - set_single_persistent_default_layer(_GAME); - #ifdef BACKLIGHT_ENABLE - backlight_set(15); - #endif - } else if (layer == _MUSIC) { - #ifdef AUDIO_ENABLE - stop_all_notes(); - PLAY_SONG(guitar); - #endif - set_single_persistent_default_layer(_MUSIC); - #ifdef BACKLIGHT_ENABLE - backlight_set(1); - #endif - } -} - bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case COLEMAK: if (record->event.pressed) { set_single_persistent_default_layer(_COLEMAK); #ifdef BACKLIGHT_ENABLE - backlight_set(0); + backlight_set(0); #endif } return false; break; case GCTOGG: if (record->event.pressed) { - if (isGame) { - if (isMusic) - setLayer(_MUSIC); - else - setLayer(_COLEMAK); - isGame = false; - } else { - setLayer(_GAME); - isGame = true; - } + if (!isGame) { + set_single_persistent_default_layer(_GAME); + isGame = true; + } + else { + set_single_persistent_default_layer(_COLEMAK); + isGame = false; + qwertGame = false; + } } return false; break; - case MCTOGG: - if (record->event.pressed) { - if (isMusic) { - if (isGame) - setLayer(_GAME); - else - setLayer(_COLEMAK); - isMusic = false; - } else { - setLayer(_MUSIC); - isMusic = true; - } + case QGCTOGG: + if (record->event.pressed) { + if (!qwertGame) { + set_single_persistent_default_layer(_QWERTGAME); + qwertGame = true; + } else { + set_single_persistent_default_layer(_GAME); + qwertGame = false; } - return false; - break; + } + return false; + break; case LOWER: if (record->event.pressed) { layer_on(_LOWER); @@ -253,85 +195,44 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return false; break; - case LENNY: + case PAREN: if (record->event.pressed) { SEND_STRING("()"); } return false; break; - case COMMENTHEAD: - if (record->event.pressed) { - SEND_STRING("// ---------------------------------------------------------------"); - } - return false; break; - case RICKANDMORT: - if (record->event.pressed) { - SEND_STRING("// ***************************************************************"); - } - return false; break; - case MARIO: - if(record->event.pressed) { - #ifdef AUDIO_ENABLE - PLAY_SONG(mario); - #endif - } - return false; break; - case MARIOE: - if(record->event.pressed) { - #ifdef AUDIO_ENABLE - PLAY_SONG(marioe); - #endif - } - return false; break; - case OVERWATCH: - if(record->event.pressed) { - #ifdef AUDIO_ENABLE - PLAY_SONG(overwatch); - #endif - } - return false; break; - case DOOM: - if(record->event.pressed) { - #ifdef AUDIO_ENABLE - PLAY_SONG(doom); - #endif - } - return false; break; - case DISNEY: - if(record->event.pressed) { - #ifdef AUDIO_ENABLE - PLAY_SONG(disney); - #endif - } - return false; break; - case NUMBERONE: - if(record->event.pressed) { - #ifdef AUDIO_ENABLE - PLAY_SONG(numberone); - #endif - } - return false; break; - case CABBAGE: - if(record->event.pressed) { - #ifdef AUDIO_ENABLE - PLAY_SONG(cabbage); - #endif - } - return false; break; - case OLDSPICE: - if(record->event.pressed) { - #ifdef AUDIO_ENABLE - PLAY_SONG(oldspice); - #endif - } - return false; break; } return true; } +layer_state_t default_layer_state_set_user(layer_state_t state) { + switch (get_highest_layer(state)) { + case _GAME: + rgblight_sethsv_noeeprom(0, UINT8_MAX, RGBLIGHT_LIMIT_VAL); + rgblight_mode_noeeprom(RGBLIGHT_MODE_RAINBOW_SWIRL+5); + break; + case _QWERTGAME: + rgblight_mode_noeeprom(RGBLIGHT_MODE_RAINBOW_MOOD+2); + break; + case _COLEMAK: + rgblight_sethsv_noeeprom(0, 0, 0); + rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); + break; + default: + break; + } + return state; +} + void matrix_init_user(void) { set_single_persistent_default_layer(_COLEMAK); isGame = false; + qwertGame = false; #ifdef BACKLIGHT_ENABLE backlight_level(0); #endif } + +void keyboard_post_init_user(void) { + rgblight_sethsv_noeeprom(0, 0, 0); + rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); +} \ No newline at end of file diff --git a/keyboards/planck/keymaps/dodger/rules.mk b/keyboards/planck/keymaps/dodger/rules.mk index 1246db7432..f5d20511e2 100644 --- a/keyboards/planck/keymaps/dodger/rules.mk +++ b/keyboards/planck/keymaps/dodger/rules.mk @@ -1,3 +1,4 @@ CONSOLE_ENABLE = no BACKLIGHT_ENABLE = yes TAP_DANCE_ENABLE = yes +RGBLIGHT_ENABLE = yes From 0b6d8150e4a30deb01d3eef4eca72a4eea365355 Mon Sep 17 00:00:00 2001 From: MechMaster48 Date: Wed, 21 Apr 2021 16:50:26 -0700 Subject: [PATCH 270/613] Personal keymap for dztech DZ60RGB plus README.md (#12485) * Personal keymap and README to go along with it. * Noticed typo in README and removed name from comment in keymap * Added GPL copyright notice --- .../dz60rgb/keymaps/mechmaster48/README.md | 15 ++++ .../dz60rgb/keymaps/mechmaster48/keymap.c | 79 +++++++++++++++++++ 2 files changed, 94 insertions(+) create mode 100644 keyboards/dztech/dz60rgb/keymaps/mechmaster48/README.md create mode 100644 keyboards/dztech/dz60rgb/keymaps/mechmaster48/keymap.c diff --git a/keyboards/dztech/dz60rgb/keymaps/mechmaster48/README.md b/keyboards/dztech/dz60rgb/keymaps/mechmaster48/README.md new file mode 100644 index 0000000000..cda042db06 --- /dev/null +++ b/keyboards/dztech/dz60rgb/keymaps/mechmaster48/README.md @@ -0,0 +1,15 @@ +# Mechmaster48 keymap + +-Personal keyboard layout +-Mainly following the default layout. +-Picture of the map below with 3 total layers 0-2 +-More to come as I figure QMK out + +## Layer 0 +![alt text](https://i.imgur.com/yi8BCCf.gif) + +## Layer 1 +![alt text](https://i.imgur.com/aG2cCn9.gif) + +## Layer 2 +![alt text](https://i.imgur.com/79RAh1G.gif) \ No newline at end of file diff --git a/keyboards/dztech/dz60rgb/keymaps/mechmaster48/keymap.c b/keyboards/dztech/dz60rgb/keymaps/mechmaster48/keymap.c new file mode 100644 index 0000000000..84cc76b112 --- /dev/null +++ b/keyboards/dztech/dz60rgb/keymaps/mechmaster48/keymap.c @@ -0,0 +1,79 @@ +/* +Copyright 2021 MechMaster48 admin@mechbox.net + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +/* + +-This is just a diagram that makes it easier for me to see what keys I have bound and where. +-The README has a better image to see the exact keymap. + +--Layer 0-- + _________________________________________________________________________________________________ + |[esc] [1!]-[2@]-[3#]-[4$]-[5%]-[6^]-[7&]-[8*]-[9(]-[0)]-[-_]-[+=] [ BackSpace ]| + |[ Tab ] [Q]-[W]-[E]-[R]-[T]-[Y]-[U]-[I]-[O]-[P]-[[{]-[]}] [ |\ ]| + |[CapsLock] [A]-[S]-[D]-[F]-[G]-[H]-[J]-[K]-[L]-[;/:]-['/"] [Enter]| + |[ Shift ] [Z]-[X]-[C]-[V]-[B]-[N]-[M]-[/.]-[?//] [↑][del]| + |[ctrl][win][alt] [____________________SPACE__________________][fn/OSL(1)][ctrl][â†][↓][→] | + |_________________________________________________________________________________________________| + + + + +--Layer 1-- + _____________________________________________________________________________________ + |[TO(2)] [F1]-[F2]-[F3]-[F4]-[F5]-[F6]-[F7]-[F8]-[F9]-[F10]-[F11]-[F12] [ â–¼ ]| + |[ â–¼ ] [~]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[PS]-[â–¼]-[â–¼]-[â–¼]-[play/pause]-[â–¼] [ RESET ]| + |[ â–¼ ] [â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[PU]-[â–¼]-[â–¼] [ â–¼ ]| + |[ Shift ] [â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[PD]-[â–¼] [vol↑] [ â–¼ ]| + |[ctrl][ â–¼ ][alt] [_________________â–¼________________] [â–¼][ â–¼ ][â†prvs][vol↓][next→]| + |_____________________________________________________________________________________| + + + +--Layer 2-- + _________________________________________________________________________________________________ + |[ â–¼ ] [â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼] [ â–¼ ]| + |[ â–¼ ] [RGBTgg]-[â–¼]-[Hue+]-[Hue-]-[Sat+]-[Sat-]-[Brt+]-[Brt-]-[RGBmd]-[â–¼]-[â–¼]-[â–¼] [ RESET ]| + |[ â–¼ ] [â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼] [ â–¼ ]| + |[ â–¼ ] [â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼] [ â–¼ ][ â–¼ ]| + |[ â–¼ ][ â–¼ ][â–¼] [_______________TO(0)________________] [â–¼][ â–¼ ] [ â–¼ ][ â–¼ ][ â–¼ ]| + |_________________________________________________________________________________________________| + +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + CTL_T(KC_CAPS), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), KC_UP, LT(2, KC_DEL), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, OSL(1), KC_RCTRL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT( + TO(2), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + _______, KC_GRV, _______, _______, _______, _______, _______, KC_PSCR, _______, _______, _______, KC_MPLY, _______, RESET, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, _______, _______, EEP_RST, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGDN, _______, KC_VOLU, KC_MUTE, + KC_LCTL, _______, KC_LALT, TO(0), _______, _______, KC_MPRV, KC_VOLD, KC_MNXT + ), + [2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_TOG, _______, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_MOD, _______, _______, _______, RESET, + _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPI, RGB_SPD, _______, _______, EEP_RST, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, TO(0), _______, _______, _______, _______, _______ + ) +}; \ No newline at end of file From 4f2afaa6fbb184e7f22bec1a1df0aad55922d85e Mon Sep 17 00:00:00 2001 From: rainkeebs <44819800+rainkeebs@users.noreply.github.com> Date: Thu, 22 Apr 2021 07:58:09 -0700 Subject: [PATCH 271/613] Delilah keyboard added (#12638) * Delilah keyboard added * Apply suggestions from code review Co-authored-by: Drashna Jaelre * removed unnecessary lines as per review * removed unnecessary lines as per review Co-authored-by: Drashna Jaelre --- keyboards/delilah/config.h | 56 ++++++++++++++++++++++ keyboards/delilah/delilah.c | 16 +++++++ keyboards/delilah/delilah.h | 28 +++++++++++ keyboards/delilah/info.json | 12 +++++ keyboards/delilah/keymaps/default/keymap.c | 43 +++++++++++++++++ keyboards/delilah/keymaps/via/keymap.c | 43 +++++++++++++++++ keyboards/delilah/keymaps/via/rules.mk | 1 + keyboards/delilah/readme.md | 22 +++++++++ keyboards/delilah/rules.mk | 19 ++++++++ 9 files changed, 240 insertions(+) create mode 100644 keyboards/delilah/config.h create mode 100644 keyboards/delilah/delilah.c create mode 100644 keyboards/delilah/delilah.h create mode 100644 keyboards/delilah/info.json create mode 100644 keyboards/delilah/keymaps/default/keymap.c create mode 100644 keyboards/delilah/keymaps/via/keymap.c create mode 100644 keyboards/delilah/keymaps/via/rules.mk create mode 100644 keyboards/delilah/readme.md create mode 100644 keyboards/delilah/rules.mk diff --git a/keyboards/delilah/config.h b/keyboards/delilah/config.h new file mode 100644 index 0000000000..d07366a51d --- /dev/null +++ b/keyboards/delilah/config.h @@ -0,0 +1,56 @@ +/* Copyright 2021 Regan Palmer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x726B +#define PRODUCT_ID 0x645C +#define DEVICE_VER 0x0001 +#define MANUFACTURER rainkeebs +#define PRODUCT Delilah + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 12 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { B5, B6, C6, C7 } +#define MATRIX_COL_PINS { F7, F6, F5, F4, F0, E6, D5, D3, D4, D6, D7, B4 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE + +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + + +#define RGB_DI_PIN B3 +#ifdef RGB_DI_PIN +#define RGBLIGHT_ANIMATIONS +#define RGBLED_NUM 8 +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 +#endif diff --git a/keyboards/delilah/delilah.c b/keyboards/delilah/delilah.c new file mode 100644 index 0000000000..b2e98b60fa --- /dev/null +++ b/keyboards/delilah/delilah.c @@ -0,0 +1,16 @@ +/* Copyright 2021 Regan Palmer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "delilah.h" diff --git a/keyboards/delilah/delilah.h b/keyboards/delilah/delilah.h new file mode 100644 index 0000000000..64b25351b1 --- /dev/null +++ b/keyboards/delilah/delilah.h @@ -0,0 +1,28 @@ +/* Copyright 2021 Regan Palmer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "quantum.h" + +#define LAYOUT( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K211, \ + K300, K301, K302, K303, K306, K308, K309, K311 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, KC_NO, K211 }, \ + { K300, K301, K302, K303, KC_NO, KC_NO, K306, KC_NO, K308, K309, KC_NO, K311 } \ +} diff --git a/keyboards/delilah/info.json b/keyboards/delilah/info.json new file mode 100644 index 0000000000..343a100a2d --- /dev/null +++ b/keyboards/delilah/info.json @@ -0,0 +1,12 @@ +{ + "keyboard_name": "Delilah", + "url": "https://www.rainkeebs.mx/product/delilah-keyboard-group-buy", + "maintainer": "rainkeebs", + "width": 12.25, + "height": 4, + "layouts": { + "LAYOUT": { + "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"Back
Space", "x":11, "y":0, "w":1.25}, {"label":"Tab", "x":0, "y":1, "w":1.25}, {"label":"A", "x":1.25, "y":1}, {"label":"S", "x":2.25, "y":1}, {"label":"D", "x":3.25, "y":1}, {"label":"F", "x":4.25, "y":1}, {"label":"G", "x":5.25, "y":1}, {"label":"H", "x":6.25, "y":1}, {"label":"J", "x":7.25, "y":1}, {"label":"K", "x":8.25, "y":1}, {"label":"L", "x":9.25, "y":1}, {"label":":", "x":10.25, "y":1}, {"label":"Enter", "x":11.25, "y":1}, {"label":"Shift", "x":0, "y":2, "w":1.75}, {"label":"Z", "x":1.75, "y":2}, {"label":"X", "x":2.75, "y":2}, {"label":"C", "x":3.75, "y":2}, {"label":"V", "x":4.75, "y":2}, {"label":"B", "x":5.75, "y":2}, {"label":"N", "x":6.75, "y":2}, {"label":"M", "x":7.75, "y":2}, {"label":"<", "x":8.75, "y":2}, {"label":">", "x":9.75, "y":2}, {"label":"Shift", "x":10.75, "y":2, "w":1.5}, {"label":"Ctrl", "x":0, "y":3, "w":1.25}, {"label":"Win", "x":1.25, "y":3}, {"label":"Alt", "x":2.25, "y":3}, {"label":"225", "x":3.25, "y":3, "w":2.25}, {"label":"275", "x":5.5, "y":3, "w":2.75}, {"label":"Alt", "x":9.0, "y":3}, {"label":"Win", "x":10.0, "y":3}, {"label":"Ctrl", "x":11.0, "y":3, "w":1.25}] + } + } +} diff --git a/keyboards/delilah/keymaps/default/keymap.c b/keyboards/delilah/keymaps/default/keymap.c new file mode 100644 index 0000000000..ae00beadf5 --- /dev/null +++ b/keyboards/delilah/keymaps/default/keymap.c @@ -0,0 +1,43 @@ +/* Copyright 2021 Regan Palmer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, MO(2), + KC_LCTL, KC_LGUI, KC_LALT, MO(1), KC_SPC, KC_RALT, KC_RGUI, KC_RCTL), + + LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; diff --git a/keyboards/delilah/keymaps/via/keymap.c b/keyboards/delilah/keymaps/via/keymap.c new file mode 100644 index 0000000000..3a29b0c033 --- /dev/null +++ b/keyboards/delilah/keymaps/via/keymap.c @@ -0,0 +1,43 @@ +/* Copyright 2021 Regan Palmer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_FN13, + KC_LCTL, KC_LGUI, KC_LALT, KC_FN23, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL), + + LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; diff --git a/keyboards/delilah/keymaps/via/rules.mk b/keyboards/delilah/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/delilah/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/delilah/readme.md b/keyboards/delilah/readme.md new file mode 100644 index 0000000000..8ba9d83188 --- /dev/null +++ b/keyboards/delilah/readme.md @@ -0,0 +1,22 @@ +# Delilah + +![Delilah](https://i.imgur.com/TqBZycx.png) + +A 12.25u, traditional stagger, 40% keyboard. Designed to keep another punctuation key on base layer while still being compact. + +* Keyboard Maintainer: Rain +* Hardware Supported: Delilah PCB v1.0, v1.1 +* Hardware Availability: [rainkeebs](https://www.rainkeebs.mx/) + + +Make example for this keyboard (after setting up your build environment): + + qmk compile -kb delilah -kb default + +To reset the keyboard, hold the top left key while plugging in, or hit the reset button near the USB port + +Install example for this keyboard: + + qmk flash -kb delilah -km default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/delilah/rules.mk b/keyboards/delilah/rules.mk new file mode 100644 index 0000000000..41a0abee9b --- /dev/null +++ b/keyboards/delilah/rules.mk @@ -0,0 +1,19 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# comment out to disable the options. +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no +RGBLIGHT_ENABLE = yes From ffa1507c2c27cf9d1e6fcceeb5a7810a8d2eae19 Mon Sep 17 00:00:00 2001 From: George Wietor Date: Thu, 22 Apr 2021 13:13:44 -0400 Subject: [PATCH 272/613] VIA support for Planck Rev6 (#9144) Co-authored-by: Joel Challis Co-authored-by: George Wietor Co-authored-by: Jack Humbert --- keyboards/planck/config.h | 3 +- keyboards/planck/keymaps/via/keymap.c | 97 ++++++++++++++++++++++++++ keyboards/planck/keymaps/via/readme.md | 8 +++ keyboards/planck/keymaps/via/rules.mk | 2 + keyboards/planck/light/config.h | 3 +- keyboards/planck/rev1/config.h | 1 + keyboards/planck/rev2/config.h | 1 + keyboards/planck/rev3/config.h | 1 + keyboards/planck/rev4/config.h | 1 + keyboards/planck/rev5/config.h | 1 + keyboards/planck/rev6/config.h | 1 + 11 files changed, 115 insertions(+), 4 deletions(-) create mode 100644 keyboards/planck/keymaps/via/keymap.c create mode 100644 keyboards/planck/keymaps/via/readme.md create mode 100644 keyboards/planck/keymaps/via/rules.mk diff --git a/keyboards/planck/config.h b/keyboards/planck/config.h index f7dce70207..71111eca21 100644 --- a/keyboards/planck/config.h +++ b/keyboards/planck/config.h @@ -21,8 +21,7 @@ along with this program. If not, see . #include "config_common.h" /* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x6060 +#define VENDOR_ID 0x03A8 #define MANUFACTURER OLKB #define PRODUCT Planck diff --git a/keyboards/planck/keymaps/via/keymap.c b/keyboards/planck/keymaps/via/keymap.c new file mode 100644 index 0000000000..d469cd6aec --- /dev/null +++ b/keyboards/planck/keymaps/via/keymap.c @@ -0,0 +1,97 @@ +/* Copyright 2015-2017 Jack Humbert + * Updated 2020 mixedfeelings + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +#define LOWER FN_MO13 +#define RAISE FN_MO23 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* Qwerty + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Esc | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ + [0] = LAYOUT_ortho_4x12 ( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_SFTENT, + KC_NO, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + + /* Lower + * ,-----------------------------------------------------------------------------------. + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | Home | End | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ + [1] = LAYOUT_ortho_4x12 ( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, + KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ), + + /* Raise + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / |Pg Up |Pg Dn | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ + [2] = LAYOUT_ortho_4x12 ( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, + KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ), + + /* Utility + * ,-----------------------------------------------------------------------------------. + * | |RESET |DEBUG | | | | | | | | |Del | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ + [3] = LAYOUT_ortho_4x12 ( + KC_TRNS, RESET, DEBUG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) + +}; diff --git a/keyboards/planck/keymaps/via/readme.md b/keyboards/planck/keymaps/via/readme.md new file mode 100644 index 0000000000..a3cd80f1db --- /dev/null +++ b/keyboards/planck/keymaps/via/readme.md @@ -0,0 +1,8 @@ +# VIA QWERTY layout for Planck Rev6 +A heavily simplified version of the Planck Layout that deals with VIA layer limit by stripping out Dvorak, Colemak, and Plover layouts as well as all internal audio, lighting, and mod switching keys. + +Predefined Layers: +- 0 - Default Planck QWERTY keymap (minus lighting control, plus SHIFT ENTER) +- 1 - Default Planck LOWER keymap +- 2 - Default Planck RAISE keymap +- 3 - UTILITY keymap (RESET, DEBUG) diff --git a/keyboards/planck/keymaps/via/rules.mk b/keyboards/planck/keymaps/via/rules.mk new file mode 100644 index 0000000000..36b7ba9cbc --- /dev/null +++ b/keyboards/planck/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/planck/light/config.h b/keyboards/planck/light/config.h index c570ec7667..ccf9f09843 100644 --- a/keyboards/planck/light/config.h +++ b/keyboards/planck/light/config.h @@ -5,8 +5,7 @@ #undef PRODUCT #define PRODUCT Planck Light -#undef PRODUCT_ID -#define PRODUCT_ID 0x6065 +#define PRODUCT_ID 0xBEA2 #define DEVICE_VER 0x0001 #undef MATRIX_ROW_PINS diff --git a/keyboards/planck/rev1/config.h b/keyboards/planck/rev1/config.h index 397887a73f..82f9acd8f9 100644 --- a/keyboards/planck/rev1/config.h +++ b/keyboards/planck/rev1/config.h @@ -1,3 +1,4 @@ #pragma once +#define PRODUCT_ID 0xAE01 #define DEVICE_VER 0x0001 diff --git a/keyboards/planck/rev2/config.h b/keyboards/planck/rev2/config.h index bed78bca3f..09ec6c4470 100644 --- a/keyboards/planck/rev2/config.h +++ b/keyboards/planck/rev2/config.h @@ -1,3 +1,4 @@ #pragma once +#define PRODUCT_ID 0xAE01 #define DEVICE_VER 0x0002 diff --git a/keyboards/planck/rev3/config.h b/keyboards/planck/rev3/config.h index fd6f0460e5..a57e42dfbc 100644 --- a/keyboards/planck/rev3/config.h +++ b/keyboards/planck/rev3/config.h @@ -1,3 +1,4 @@ #pragma once +#define PRODUCT_ID 0xAE01 #define DEVICE_VER 0x0003 diff --git a/keyboards/planck/rev4/config.h b/keyboards/planck/rev4/config.h index 572852bbf0..c802efa8d4 100644 --- a/keyboards/planck/rev4/config.h +++ b/keyboards/planck/rev4/config.h @@ -1,3 +1,4 @@ #pragma once +#define PRODUCT_ID 0xAE01 #define DEVICE_VER 0x0004 diff --git a/keyboards/planck/rev5/config.h b/keyboards/planck/rev5/config.h index 9369220780..c2ff086f33 100644 --- a/keyboards/planck/rev5/config.h +++ b/keyboards/planck/rev5/config.h @@ -1,3 +1,4 @@ #pragma once +#define PRODUCT_ID 0xAE01 #define DEVICE_VER 0x0005 diff --git a/keyboards/planck/rev6/config.h b/keyboards/planck/rev6/config.h index 055610c699..63c44001f6 100644 --- a/keyboards/planck/rev6/config.h +++ b/keyboards/planck/rev6/config.h @@ -19,6 +19,7 @@ #define REV6_CONFIG_H /* USB Device descriptor parameter */ +#define PRODUCT_ID 0xA4F9 #define DEVICE_VER 0x0006 #undef MATRIX_ROWS From 54dc6b7bf28051a44db9c5e1d2fabdfa345b5cdf Mon Sep 17 00:00:00 2001 From: SonOfAres <80911120+SonOfAres@users.noreply.github.com> Date: Thu, 22 Apr 2021 17:15:28 -0400 Subject: [PATCH 273/613] adding keyboard (#12414) * adding keyboard * Update keyboards/iriskeyboards/readme.md - picture size Co-authored-by: Ryan * Delete iriskeyboards.json, it belongs in VIA repo * Update info.json * Update readme.md * Update keyboards/iriskeyboards/keymaps/default/keymap.c Removing unnecessary layers Co-authored-by: Ryan Co-authored-by: Ryan --- keyboards/iriskeyboards/config.h | 154 ++++++++++++++++++ keyboards/iriskeyboards/info.json | 17 ++ keyboards/iriskeyboards/iriskeyboards.c | 17 ++ keyboards/iriskeyboards/iriskeyboards.h | 45 +++++ .../iriskeyboards/keymaps/default/keymap.c | 48 ++++++ .../iriskeyboards/keymaps/default/readme.md | 1 + keyboards/iriskeyboards/keymaps/via/keymap.c | 65 ++++++++ keyboards/iriskeyboards/keymaps/via/readme.md | 1 + keyboards/iriskeyboards/keymaps/via/rules.mk | 2 + keyboards/iriskeyboards/readme.md | 21 +++ keyboards/iriskeyboards/rules.mk | 22 +++ 11 files changed, 393 insertions(+) create mode 100644 keyboards/iriskeyboards/config.h create mode 100644 keyboards/iriskeyboards/info.json create mode 100644 keyboards/iriskeyboards/iriskeyboards.c create mode 100644 keyboards/iriskeyboards/iriskeyboards.h create mode 100644 keyboards/iriskeyboards/keymaps/default/keymap.c create mode 100644 keyboards/iriskeyboards/keymaps/default/readme.md create mode 100644 keyboards/iriskeyboards/keymaps/via/keymap.c create mode 100644 keyboards/iriskeyboards/keymaps/via/readme.md create mode 100644 keyboards/iriskeyboards/keymaps/via/rules.mk create mode 100644 keyboards/iriskeyboards/readme.md create mode 100644 keyboards/iriskeyboards/rules.mk diff --git a/keyboards/iriskeyboards/config.h b/keyboards/iriskeyboards/config.h new file mode 100644 index 0000000000..77aedd69f1 --- /dev/null +++ b/keyboards/iriskeyboards/config.h @@ -0,0 +1,154 @@ +/* +Copyright 2021 SonOfAres + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x494B // IK (IrisKeyboards) +#define PRODUCT_ID 0x3031 // 01 (PCB no.01) +#define DEVICE_VER 0x0001 +#define MANUFACTURER SonOfAres +#define PRODUCT IrisRev0 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ + +// 0 1 2 3 4 5 6 7 8 9 A B C D +#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 } +#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, D4, D6, D7, B4, B5, B6, C6, C7, F7 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 + +//#define LED_NUM_LOCK_PIN B0 +//#define LED_CAPS_LOCK_PIN B1 +//#define LED_SCROLL_LOCK_PIN B2 +//#define LED_COMPOSE_PIN B3 +//#define LED_KANA_PIN B4 + +//#define BACKLIGHT_PIN B7 +//#define BACKLIGHT_LEVELS 3 +//#define BACKLIGHT_BREATHING + +//#define RGB_DI_PIN E2 +//#ifdef RGB_DI_PIN +//# define RGBLED_NUM 16 +//# define RGBLIGHT_HUE_STEP 8 +//# define RGBLIGHT_SAT_STEP 8 +//# define RGBLIGHT_VAL_STEP 8 +//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +//# define RGBLIGHT_ANIMATIONS +/*== or choose animations ==*/ +//# define RGBLIGHT_EFFECT_BREATHING +//# define RGBLIGHT_EFFECT_RAINBOW_MOOD +//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +//# define RGBLIGHT_EFFECT_SNAKE +//# define RGBLIGHT_EFFECT_KNIGHT +//# define RGBLIGHT_EFFECT_CHRISTMAS +//# define RGBLIGHT_EFFECT_STATIC_GRADIENT +//# define RGBLIGHT_EFFECT_RGB_TEST +//# define RGBLIGHT_EFFECT_ALTERNATING +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +//#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/iriskeyboards/info.json b/keyboards/iriskeyboards/info.json new file mode 100644 index 0000000000..2d64cb071f --- /dev/null +++ b/keyboards/iriskeyboards/info.json @@ -0,0 +1,17 @@ +{ + "keyboard_name": "iriskeyboards", + "url": "", + "maintainer": "SonOfAres", + "width": 14, + "height": 5, + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"~", "x":13, "y":0}, {"label":"Del", "x":14, "y":0}, + {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, + {"label":"Shift", "x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"Fn", "x":14, "y":3}, + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Win", "x":11.25, "y":4, "w":1.25}, {"label":"Menu", "x":12.5, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}] + } + } +} diff --git a/keyboards/iriskeyboards/iriskeyboards.c b/keyboards/iriskeyboards/iriskeyboards.c new file mode 100644 index 0000000000..bee4488664 --- /dev/null +++ b/keyboards/iriskeyboards/iriskeyboards.c @@ -0,0 +1,17 @@ +/* Copyright 2021 SonOfAres + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "iriskeyboards.h" diff --git a/keyboards/iriskeyboards/iriskeyboards.h b/keyboards/iriskeyboards/iriskeyboards.h new file mode 100644 index 0000000000..6aea39edca --- /dev/null +++ b/keyboards/iriskeyboards/iriskeyboards.h @@ -0,0 +1,45 @@ +/* Copyright 2021 SonOfAres + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define ___ KC_NO + +#define LAYOUT_all( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k2d, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \ + k40, k41, k42, k46, k4a, k4b, k4c, k4d \ +) \ +{ \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d }, \ + { k40, k41, k42, ___, ___, ___, k46, ___, ___, ___, k4a, k4b, k4c, k4d } \ +} + diff --git a/keyboards/iriskeyboards/keymaps/default/keymap.c b/keyboards/iriskeyboards/keymaps/default/keymap.c new file mode 100644 index 0000000000..918fb6f181 --- /dev/null +++ b/keyboards/iriskeyboards/keymaps/default/keymap.c @@ -0,0 +1,48 @@ +/* Copyright 2021 SonOfAres + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬────┬───┠+ * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Bspc│del│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬──┴───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │  \   │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴──────┤ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │  Enter  │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬────┤ + * │LSft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │RSft │ fn │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴────┤ + * │Ctrl│GUI │Alt │                        │ Alt│ GUI│Menu│Ctrl │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴─────┘ + */ + + [0] = LAYOUT_all( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DELETE, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL + ), + + [1] = LAYOUT_all( + RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; diff --git a/keyboards/iriskeyboards/keymaps/default/readme.md b/keyboards/iriskeyboards/keymaps/default/readme.md new file mode 100644 index 0000000000..fe7026dbe3 --- /dev/null +++ b/keyboards/iriskeyboards/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for iriskeyboards diff --git a/keyboards/iriskeyboards/keymaps/via/keymap.c b/keyboards/iriskeyboards/keymaps/via/keymap.c new file mode 100644 index 0000000000..c23af9a9be --- /dev/null +++ b/keyboards/iriskeyboards/keymaps/via/keymap.c @@ -0,0 +1,65 @@ +/* Copyright 2021 SonOfAres + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬────┬───┠+ * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Bspc│del│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬──┴───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │  \   │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴──────┤ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │  Enter  │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬────┤ + * │LSft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │RSft │ fn │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴────┤ + * │Ctrl│GUI │Alt │                        │ Alt│ GUI│Menu│Ctrl │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴─────┘ + */ + + [0] = LAYOUT_all( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DELETE, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL + ), + + [1] = LAYOUT_all( + RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + +}; \ No newline at end of file diff --git a/keyboards/iriskeyboards/keymaps/via/readme.md b/keyboards/iriskeyboards/keymaps/via/readme.md new file mode 100644 index 0000000000..fe7026dbe3 --- /dev/null +++ b/keyboards/iriskeyboards/keymaps/via/readme.md @@ -0,0 +1 @@ +# The default keymap for iriskeyboards diff --git a/keyboards/iriskeyboards/keymaps/via/rules.mk b/keyboards/iriskeyboards/keymaps/via/rules.mk new file mode 100644 index 0000000000..43061db1dd --- /dev/null +++ b/keyboards/iriskeyboards/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/iriskeyboards/readme.md b/keyboards/iriskeyboards/readme.md new file mode 100644 index 0000000000..615978f25d --- /dev/null +++ b/keyboards/iriskeyboards/readme.md @@ -0,0 +1,21 @@ +# iriskeyboards + +![IrisRev0](https://i.imgur.com/sCrZ43rh.jpg) + +Iris Rev0 is an experimental keyboard with a unique gasket-style mounting option which offers a different kind of feel, as typical PORON and rubber gaskets are much harder. + +A few different layouts are supported such as 7u bottom row, ISO support, split backspace and right-shift. + +* Keyboard Maintainer: [SonOfAres](https://github.com/SonOfAres) +* Hardware Supported: All Iris Rev0.XX PCBs +* Hardware Availability: [iriskeyboards.com](https://www.iriskeyboards.com/en) Currently unavailable - still in testing + +Make example for this keyboard (after setting up your build environment): + + make iriskeyboards:default + +Flashing example for this keyboard: + + make iriskeyboards:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/iriskeyboards/rules.mk b/keyboards/iriskeyboards/rules.mk new file mode 100644 index 0000000000..5c0d8f307c --- /dev/null +++ b/keyboards/iriskeyboards/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output From b2b075c12357eab8f286a6e103a588b38c538547 Mon Sep 17 00:00:00 2001 From: Pavlos Vinieratos Date: Sun, 25 Apr 2021 02:00:12 +0100 Subject: [PATCH 274/613] not accessible and not needed anyway for a test keymap (#12366) --- keyboards/keebio/bdn9/keymaps/test/keymap.c | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/keyboards/keebio/bdn9/keymaps/test/keymap.c b/keyboards/keebio/bdn9/keymaps/test/keymap.c index 244b5f7cb3..c42100ddf8 100644 --- a/keyboards/keebio/bdn9/keymaps/test/keymap.c +++ b/keyboards/keebio/bdn9/keymaps/test/keymap.c @@ -12,16 +12,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_D, KC_E, KC_F, KC_G, KC_H, RGB_MOD ), - /* - | RESET | N/A | Media Stop | - | Held: Layer 2 | Home | RGB Mode | - | Media Previous | End | Media Next | - */ - [1] = LAYOUT( - RESET , BL_STEP, KC_STOP, - _______, KC_HOME, RGB_MOD, - KC_MPRV, KC_END , KC_MNXT - ), }; void encoder_update_user(uint8_t index, bool clockwise) { From 06f8cb1b8a1f891d7d3b00a41a73ff2293115479 Mon Sep 17 00:00:00 2001 From: Christian Fehmer Date: Sun, 25 Apr 2021 03:00:56 +0200 Subject: [PATCH 275/613] Add VIA support for Filco Majestouch 2 /w The Tiger Lily (#12401) --- keyboards/bpiphany/tiger_lily/config.h | 4 +- .../bpiphany/tiger_lily/keymaps/via/config.h | 18 +++++++++ .../bpiphany/tiger_lily/keymaps/via/keymap.c | 40 +++++++++++++++++++ .../bpiphany/tiger_lily/keymaps/via/rules.mk | 14 +++++++ 4 files changed, 74 insertions(+), 2 deletions(-) create mode 100644 keyboards/bpiphany/tiger_lily/keymaps/via/config.h create mode 100644 keyboards/bpiphany/tiger_lily/keymaps/via/keymap.c create mode 100644 keyboards/bpiphany/tiger_lily/keymaps/via/rules.mk diff --git a/keyboards/bpiphany/tiger_lily/config.h b/keyboards/bpiphany/tiger_lily/config.h index cc619a5b8e..a86cffd16b 100644 --- a/keyboards/bpiphany/tiger_lily/config.h +++ b/keyboards/bpiphany/tiger_lily/config.h @@ -21,8 +21,8 @@ along with this program. If not, see . #include "config_common.h" /* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x6060 +#define VENDOR_ID 0x4245 //BE +#define PRODUCT_ID 0x544C //TL #define DEVICE_VER 0x0001 #define MANUFACTURER Bathroom Epiphanies #define PRODUCT tiger_lily diff --git a/keyboards/bpiphany/tiger_lily/keymaps/via/config.h b/keyboards/bpiphany/tiger_lily/keymaps/via/config.h new file mode 100644 index 0000000000..356dc9fdb4 --- /dev/null +++ b/keyboards/bpiphany/tiger_lily/keymaps/via/config.h @@ -0,0 +1,18 @@ +/* Copyright 2021 Fehmer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#define DYNAMIC_KEYMAP_LAYER_COUNT 3 \ No newline at end of file diff --git a/keyboards/bpiphany/tiger_lily/keymaps/via/keymap.c b/keyboards/bpiphany/tiger_lily/keymaps/via/keymap.c new file mode 100644 index 0000000000..0765160522 --- /dev/null +++ b/keyboards/bpiphany/tiger_lily/keymaps/via/keymap.c @@ -0,0 +1,40 @@ +/* Copyright 2021 Fehmer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,KC_SLCK,KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL,KC_BSPC, KC_INS,KC_HOME,KC_PGUP, KC_NLCK,KC_PSLS,KC_PAST,KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC,KC_RBRC,KC_BSLS, KC_DEL, KC_END,KC_PGDN, KC_P7, KC_P8, KC_P9,KC_PPLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, + KC_LSFT,KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3,KC_PENT, + KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI, KC_APP,KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT, KC_P0,KC_PDOT), +[1] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS), +[2] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS) +}; \ No newline at end of file diff --git a/keyboards/bpiphany/tiger_lily/keymaps/via/rules.mk b/keyboards/bpiphany/tiger_lily/keymaps/via/rules.mk new file mode 100644 index 0000000000..d68fae9b2c --- /dev/null +++ b/keyboards/bpiphany/tiger_lily/keymaps/via/rules.mk @@ -0,0 +1,14 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes +MOUSEKEY_ENABLE = yes +EXTRAKEY_ENABLE = yes +CONSOLE_ENABLE = no +COMMAND_ENABLE = yes +NKRO_ENABLE = yes +BACKLIGHT_ENABLE = no +MIDI_ENABLE = no +AUDIO_ENABLE = no +UNICODE_ENABLE = no +BLUETOOTH_ENABLE = no +RGBLIGHT_ENABLE = no +SLEEP_LED_ENABLE = no \ No newline at end of file From 2a45d99059c84e37da4f16a07b324adbe30ddebc Mon Sep 17 00:00:00 2001 From: Matthew Dias Date: Sat, 24 Apr 2021 20:02:00 -0500 Subject: [PATCH 276/613] Add m3n3van rev2 (#12405) * Add m3n3van rev2 * Add via support --- keyboards/m3n3van/config.h | 65 +++++++++++++++++++ keyboards/m3n3van/info.json | 57 ++++++++++++++++ keyboards/m3n3van/keymaps/default/keymap.json | 25 +++++++ .../m3n3van/keymaps/matthewdias/keymap.c | 51 +++++++++++++++ keyboards/m3n3van/keymaps/via/keymap.c | 58 +++++++++++++++++ keyboards/m3n3van/keymaps/via/rules.mk | 1 + keyboards/m3n3van/m3n3van.c | 18 +++++ keyboards/m3n3van/m3n3van.h | 48 ++++++++++++++ keyboards/m3n3van/readme.md | 21 ++++++ keyboards/m3n3van/rules.mk | 23 +++++++ 10 files changed, 367 insertions(+) create mode 100644 keyboards/m3n3van/config.h create mode 100644 keyboards/m3n3van/info.json create mode 100644 keyboards/m3n3van/keymaps/default/keymap.json create mode 100644 keyboards/m3n3van/keymaps/matthewdias/keymap.c create mode 100644 keyboards/m3n3van/keymaps/via/keymap.c create mode 100644 keyboards/m3n3van/keymaps/via/rules.mk create mode 100644 keyboards/m3n3van/m3n3van.c create mode 100644 keyboards/m3n3van/m3n3van.h create mode 100644 keyboards/m3n3van/readme.md create mode 100644 keyboards/m3n3van/rules.mk diff --git a/keyboards/m3n3van/config.h b/keyboards/m3n3van/config.h new file mode 100644 index 0000000000..15f62cecfd --- /dev/null +++ b/keyboards/m3n3van/config.h @@ -0,0 +1,65 @@ +/* +Copyright 2021 Matthew Dias + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x6D64 +#define PRODUCT_ID 0x2323 +#define DEVICE_VER 0x0002 +#define MANUFACTURER Matthew Dias +#define PRODUCT m3n3van + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 13 + +/* m3n3van PCB default pin-out */ +#define MATRIX_ROW_PINS { B5, B6, C6, C7 } +#define MATRIX_COL_PINS { F4, F5, F6, F1, F7, F0, E6, D3, D0, D1, D2, D4, D6 } +#define ENCODERS_PAD_A { B4 } +#define ENCODERS_PAD_B { D7 } +#define UNUSED_PINS { B0, B1, B2, B3, B7, D5 } + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION diff --git a/keyboards/m3n3van/info.json b/keyboards/m3n3van/info.json new file mode 100644 index 0000000000..b9c5a89a86 --- /dev/null +++ b/keyboards/m3n3van/info.json @@ -0,0 +1,57 @@ +{ + "keyboard_name": "m3n3van", + "url": "https://github.com/matthewdias/m3n3van/tree/main/rev2", + "maintainer": "matthewdias", + "width": 12.75, + "height": 4, + "layouts": { + "LAYOUT": { + "layout": [ + { "label": "Esc", "x": 0, "y": 0 }, + { "label": "Q", "x": 1, "y": 0 }, + { "label": "W", "x": 2, "y": 0 }, + { "label": "E", "x": 3, "y": 0 }, + { "label": "R", "x": 4, "y": 0 }, + { "label": "T", "x": 5, "y": 0 }, + { "label": "Y", "x": 6, "y": 0 }, + { "label": "U", "x": 7, "y": 0 }, + { "label": "I", "x": 8, "y": 0 }, + { "label": "O", "x": 9, "y": 0 }, + { "label": "P", "x": 10, "y": 0 }, + { "label": "Backspace", "x": 11, "y": 0, "w": 1.75 }, + { "label": "Tab", "x": 0, "y": 1, "w": 1.25 }, + { "label": "A", "x": 1.25, "y": 1 }, + { "label": "S", "x": 2.25, "y": 1 }, + { "label": "D", "x": 3.25, "y": 1 }, + { "label": "F", "x": 4.25, "y": 1 }, + { "label": "G", "x": 5.25, "y": 1 }, + { "label": "H", "x": 6.25, "y": 1 }, + { "label": "J", "x": 7.25, "y": 1 }, + { "label": "K", "x": 8.25, "y": 1 }, + { "label": "L", "x": 9.25, "y": 1 }, + { "label": ";", "x": 10.25, "y": 1 }, + { "label": "Enter", "x": 11.25, "y": 1, "w": 1.5 }, + { "label": "Shift", "x": 0, "y": 2, "w": 1.75 }, + { "label": "Z", "x": 1.75, "y": 2 }, + { "label": "X", "x": 2.75, "y": 2 }, + { "label": "C", "x": 3.75, "y": 2 }, + { "label": "V", "x": 4.75, "y": 2 }, + { "label": "B", "x": 5.75, "y": 2 }, + { "label": "N", "x": 6.75, "y": 2 }, + { "label": "M", "x": 7.75, "y": 2 }, + { "label": "<", "x": 8.75, "y": 2 }, + { "label": ">", "x": 9.75, "y": 2 }, + { "label": "/", "x": 10.75, "y": 2 }, + { "label": "Shift", "x": 11.75, "y": 2 }, + { "label": "Ctrl", "x": 0, "y": 3 }, + { "label": "Alt", "x": 1, "y": 3, "w": 1.25 }, + { "label": "Meta", "x": 2.25, "y": 3 }, + { "x": 3.25, "y": 3, "w": 3 }, + { "x": 6.25, "y": 3, "w": 3 }, + { "label": "Meta", "x": 9.25, "y": 3, "w": 1.25 }, + { "label": "Alt", "x": 10.5, "y": 3 }, + { "label": "Ctrl", "x": 11.5, "y": 3, "w": 1.25 } + ] + } + } +} diff --git a/keyboards/m3n3van/keymaps/default/keymap.json b/keyboards/m3n3van/keymaps/default/keymap.json new file mode 100644 index 0000000000..bb8c7fbb83 --- /dev/null +++ b/keyboards/m3n3van/keymaps/default/keymap.json @@ -0,0 +1,25 @@ +{ + "keyboard": "m3n3van", + "keymap": "default", + "layout": "LAYOUT", + "layers": [ + [ + "KC_ESC", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_BSPC", + "KC_TAB", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "KC_ENT", + "KC_LSFT", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_RSFT", + "KC_LCTL", "KC_LGUI", "KC_LALT", "LT(2, KC_SPC)", "LT(1, KC_SPC)", "KC_RALT", "KC_RGUI", "KC_RCTL" + ], + [ + "KC_GRV", "KC_MPRV", "KC_MPLY", "KC_MNXT", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_UP", "KC_LBRC", "KC_RBRC", "KC_TRNS", + "KC_TRNS", "KC_VOLD", "KC_VOLU", "KC_MUTE", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_LEFT", "KC_DOWN", "KC_RGHT", "KC_TRNS", "KC_QUPT", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_MINS", "KC_EQL", "KC_SLSH", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS" + ], + [ + "KC_TRNS", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_BSLS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS" + ] + ] +} diff --git a/keyboards/m3n3van/keymaps/matthewdias/keymap.c b/keyboards/m3n3van/keymaps/matthewdias/keymap.c new file mode 100644 index 0000000000..83d7265b09 --- /dev/null +++ b/keyboards/m3n3van/keymaps/matthewdias/keymap.c @@ -0,0 +1,51 @@ +/* +Copyright 2021 Matthew Dias + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_encoder( \ + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_MUTE, \ + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, \ + KC_RSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, \ + KC_LCTL, KC_LALT, KC_LGUI, LT(2, KC_SPC), LT(1, KC_SPC), KC_RGUI, KC_RALT, KC_RCTL \ + ), + + [1] = LAYOUT_encoder( \ + KC_GRV, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_LBRC, KC_RBRC, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_QUOT, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_SLSH, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS \ + ), + + [2] = LAYOUT_encoder( \ + KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSLS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS \ + ) +}; + +void encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } +} diff --git a/keyboards/m3n3van/keymaps/via/keymap.c b/keyboards/m3n3van/keymaps/via/keymap.c new file mode 100644 index 0000000000..2ef9af90e7 --- /dev/null +++ b/keyboards/m3n3van/keymaps/via/keymap.c @@ -0,0 +1,58 @@ +/* +Copyright 2021 Matthew Dias + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_encoder( \ + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_MUTE, \ + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \ + KC_LCTL, KC_LALT, KC_LGUI, LT(2, KC_SPC), LT(1, KC_SPC), KC_RGUI, KC_RALT, KC_RCTL \ + ), + + [1] = LAYOUT_encoder( \ + KC_GRV, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_LBRC, KC_RBRC, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_QUOT, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_SLSH, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS \ + ), + + [2] = LAYOUT_encoder( \ + KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSLS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS \ + ), + + [3] = LAYOUT_encoder( \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSLS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS \ + ) +}; + +void encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } +} diff --git a/keyboards/m3n3van/keymaps/via/rules.mk b/keyboards/m3n3van/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/m3n3van/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/m3n3van/m3n3van.c b/keyboards/m3n3van/m3n3van.c new file mode 100644 index 0000000000..5032a02c3c --- /dev/null +++ b/keyboards/m3n3van/m3n3van.c @@ -0,0 +1,18 @@ +/* +Copyright 2021 Matthew Dias + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "m3n3van.h" diff --git a/keyboards/m3n3van/m3n3van.h b/keyboards/m3n3van/m3n3van.h new file mode 100644 index 0000000000..be9efe7e54 --- /dev/null +++ b/keyboards/m3n3van/m3n3van.h @@ -0,0 +1,48 @@ +/* +Copyright 2021 Matthew Dias + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + +#define LAYOUT( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0C, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1C, \ + K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \ + K30, K31, K32, K34, K37, K39, K3B, K3C \ +) \ +{ \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, XXX, K0C }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, XXX, K1C }, \ + { K20, XXX, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C }, \ + { K30, K31, K32, XXX, K34, XXX, XXX, K37, XXX, K39, XXX, K3B, K3C } \ +} + +#define LAYOUT_encoder( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1C, \ + K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \ + K30, K31, K32, K34, K37, K39, K3B, K3C \ +) \ +{ \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, XXX, K1C }, \ + { K20, XXX, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C }, \ + { K30, K31, K32, XXX, K34, XXX, XXX, K37, XXX, K39, XXX, K3B, K3C } \ +} diff --git a/keyboards/m3n3van/readme.md b/keyboards/m3n3van/readme.md new file mode 100644 index 0000000000..66f9d08042 --- /dev/null +++ b/keyboards/m3n3van/readme.md @@ -0,0 +1,21 @@ +# m3n3van + +![](https://raw.githubusercontent.com/matthewdias/m3n3van/f642037703cfac5deba284ef7671c0564fdd8d4d/rev2/bottom.svg) + +A minivan case compatible PCB with 2x3u split space. + +- Keyboard Maintainer: matthewdias +- Hardware Supported: m3n3van rev2 PCB +- Hardware Availability: [GitHub](https://github.com/matthewdias/m3n3van/tree/main/rev2) + +To reset the keyboard into bootloader mode, press the reset switch on the underside. + +Make example for this keyboard (after setting up your build environment): + + make m3n3van:default + +Flashing example for this keyboard ([using the command line](https://docs.qmk.fm/#/newbs_flashing?id=flash-your-keyboard-from-the-command-line)): + + make m3n3van:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/m3n3van/rules.mk b/keyboards/m3n3van/rules.mk new file mode 100644 index 0000000000..831de6dc5c --- /dev/null +++ b/keyboards/m3n3van/rules.mk @@ -0,0 +1,23 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +ENCODER_ENABLE = yes From 35944df7b0a119ed8d72a686c1e75899572aa82b Mon Sep 17 00:00:00 2001 From: gkeyboard Date: Sun, 25 Apr 2021 08:04:38 +0700 Subject: [PATCH 277/613] Add lm60n keyboard (#12408) Add lm60n keyboard --- keyboards/lm_keyboard/lm60n/config.h | 152 +++++ keyboards/lm_keyboard/lm60n/info.json | 542 ++++++++++++++++++ .../lm60n/keymaps/default/keymap.c | 35 ++ .../lm60n/keymaps/default/readme.md | 1 + .../lm_keyboard/lm60n/keymaps/via/keymap.c | 51 ++ .../lm_keyboard/lm60n/keymaps/via/readme.md | 1 + .../lm_keyboard/lm60n/keymaps/via/rules.mk | 2 + keyboards/lm_keyboard/lm60n/lm60n.c | 17 + keyboards/lm_keyboard/lm60n/lm60n.h | 204 +++++++ keyboards/lm_keyboard/lm60n/readme.md | 18 + keyboards/lm_keyboard/lm60n/rules.mk | 22 + 11 files changed, 1045 insertions(+) create mode 100644 keyboards/lm_keyboard/lm60n/config.h create mode 100644 keyboards/lm_keyboard/lm60n/info.json create mode 100644 keyboards/lm_keyboard/lm60n/keymaps/default/keymap.c create mode 100644 keyboards/lm_keyboard/lm60n/keymaps/default/readme.md create mode 100644 keyboards/lm_keyboard/lm60n/keymaps/via/keymap.c create mode 100644 keyboards/lm_keyboard/lm60n/keymaps/via/readme.md create mode 100644 keyboards/lm_keyboard/lm60n/keymaps/via/rules.mk create mode 100644 keyboards/lm_keyboard/lm60n/lm60n.c create mode 100644 keyboards/lm_keyboard/lm60n/lm60n.h create mode 100644 keyboards/lm_keyboard/lm60n/readme.md create mode 100644 keyboards/lm_keyboard/lm60n/rules.mk diff --git a/keyboards/lm_keyboard/lm60n/config.h b/keyboards/lm_keyboard/lm60n/config.h new file mode 100644 index 0000000000..3515f4432b --- /dev/null +++ b/keyboards/lm_keyboard/lm60n/config.h @@ -0,0 +1,152 @@ +/* +Copyright 2021 gkeyboard + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4C4D // "LM" +#define PRODUCT_ID 0x4B01 // "K01" +#define DEVICE_VER 0x0001 +#define MANUFACTURER L+M Keyboard +#define PRODUCT L+M 60N + +/* key matrix size */ +#define MATRIX_ROWS 7 +#define MATRIX_COLS 15 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ +#define MATRIX_ROW_PINS { F1, F5, F6, F7, B3, B2, B1 } +#define MATRIX_COL_PINS { B4, D7, D6, D4, D5, D3, D2, D1, D0, C6, B6, B5, F4, F0, E6 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +//#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 + +#define LED_NUM_LOCK_PIN B7 +#define LED_CAPS_LOCK_PIN C7 +//#define LED_SCROLL_LOCK_PIN B2 +//#define LED_COMPOSE_PIN B3 +//#define LED_KANA_PIN B4 + +//#define BACKLIGHT_PIN B7 +//#define BACKLIGHT_LEVELS 3 +//#define BACKLIGHT_BREATHING + +#define RGB_DI_PIN B0 +#ifdef RGB_DI_PIN + #define RGBLED_NUM 41 + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 + #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ + #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ + #define RGBLIGHT_ANIMATIONS +/*== or choose animations ==*/ +//# define RGBLIGHT_EFFECT_BREATHING +//# define RGBLIGHT_EFFECT_RAINBOW_MOOD +//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +//# define RGBLIGHT_EFFECT_SNAKE +//# define RGBLIGHT_EFFECT_KNIGHT +//# define RGBLIGHT_EFFECT_CHRISTMAS +//# define RGBLIGHT_EFFECT_STATIC_GRADIENT +//# define RGBLIGHT_EFFECT_RGB_TEST +//# define RGBLIGHT_EFFECT_ALTERNATING +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/lm_keyboard/lm60n/info.json b/keyboards/lm_keyboard/lm60n/info.json new file mode 100644 index 0000000000..5ceb9e88fc --- /dev/null +++ b/keyboards/lm_keyboard/lm60n/info.json @@ -0,0 +1,542 @@ +{ + "keyboard_name": "lm60n", + "url": "", + "maintainer": "gkeyboard", + "width": 19.5, + "height": 5, + "layouts": { + "LAYOUT_ansi": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + {"x":15.5, "y":0}, + {"x":16.5, "y":0}, + {"x":17.5, "y":0}, + {"x":18.5, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.5, "y":1, "w":1.5}, + {"x":15.5, "y":1}, + {"x":16.5, "y":1}, + {"x":17.5, "y":1}, + {"x":18.5, "y":1, "h":2}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + {"x":15.5, "y":2}, + {"x":16.5, "y":2}, + {"x":17.5, "y":2}, + + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":2.75}, + {"x":15.5, "y":3}, + {"x":16.5, "y":3}, + {"x":17.5, "y":3}, + {"x":18.5, "y":3, "h":2}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":12.5, "y":4, "w":1.25}, + {"x":13.75, "y":4, "w":1.25}, + {"x":15.5, "y":4, "w":2}, + {"x":17.5, "y":4} + ] + }, + + "LAYOUT_tsangan": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + {"x":15.5, "y":0}, + {"x":16.5, "y":0}, + {"x":17.5, "y":0}, + {"x":18.5, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.5, "y":1, "w":1.5}, + {"x":15.5, "y":1}, + {"x":16.5, "y":1}, + {"x":17.5, "y":1}, + {"x":18.5, "y":1, "h":2}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + {"x":15.5, "y":2}, + {"x":16.5, "y":2}, + {"x":17.5, "y":2}, + + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3}, + {"x":13.25, "y":3, "w":1.75}, + {"x":15.5, "y":3}, + {"x":16.5, "y":3}, + {"x":17.5, "y":3}, + {"x":18.5, "y":3, "h":2}, + + {"x":0, "y":4, "w":1.5}, + {"x":1.5, "y":4}, + {"x":2.5, "y":4, "w":1.5}, + {"x":4, "y":4, "w":7}, + {"x":11, "y":4, "w":1.5}, + {"x":12.5, "y":4}, + {"x":13.5, "y":4, "w":1.5}, + {"x":15.5, "y":4, "w":2}, + {"x":17.5, "y":4} + ] + }, + + "LAYOUT_all_ansi": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15.5, "y":0}, + {"x":16.5, "y":0}, + {"x":17.5, "y":0}, + {"x":18.5, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.5, "y":1, "w":1.5}, + {"x":15.5, "y":1}, + {"x":16.5, "y":1}, + {"x":17.5, "y":1}, + {"x":18.5, "y":1, "h":2}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2}, + {"x":13.75, "y":2, "w":1.25}, + {"x":15.5, "y":2}, + {"x":16.5, "y":2}, + {"x":17.5, "y":2}, + + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3}, + {"x":13.25, "y":3, "w":1.75}, + {"x":15.5, "y":3}, + {"x":16.5, "y":3}, + {"x":17.5, "y":3}, + {"x":18.5, "y":3, "h":2}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":12.5, "y":4, "w":1.25}, + {"x":13.75, "y":4, "w":1.25}, + {"x":15.5, "y":4, "w":2}, + {"x":17.5, "y":4} + ] + }, + + "LAYOUT_all_tsangan": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15.5, "y":0}, + {"x":16.5, "y":0}, + {"x":17.5, "y":0}, + {"x":18.5, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.5, "y":1, "w":1.5}, + {"x":15.5, "y":1}, + {"x":16.5, "y":1}, + {"x":17.5, "y":1}, + {"x":18.5, "y":1, "h":2}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2}, + {"x":13.75, "y":2, "w":1.25}, + {"x":15.5, "y":2}, + {"x":16.5, "y":2}, + {"x":17.5, "y":2}, + + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3}, + {"x":13.25, "y":3, "w":1.75}, + {"x":15.5, "y":3}, + {"x":16.5, "y":3}, + {"x":17.5, "y":3}, + {"x":18.5, "y":3, "h":2}, + + {"x":0, "y":4, "w":1.5}, + {"x":1.5, "y":4}, + {"x":2.5, "y":4, "w":1.5}, + {"x":4, "y":4, "w":7}, + {"x":11, "y":4, "w":1.5}, + {"x":12.5, "y":4}, + {"x":13.5, "y":4, "w":1.5}, + {"x":15.5, "y":4, "w":2}, + {"x":17.5, "y":4} + ] + }, + + "LAYOUT_all_iso_6_25": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15.5, "y":0}, + {"x":16.5, "y":0}, + {"x":17.5, "y":0}, + {"x":18.5, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.75, "y":1, "w":1.25, "h":2}, + {"x":15.5, "y":1}, + {"x":16.5, "y":1}, + {"x":17.5, "y":1}, + {"x":18.5, "y":1, "h":2}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2}, + {"x":15.5, "y":2}, + {"x":16.5, "y":2}, + {"x":17.5, "y":2}, + + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3}, + {"x":13.25, "y":3, "w":1.75}, + {"x":15.5, "y":3}, + {"x":16.5, "y":3}, + {"x":17.5, "y":3}, + {"x":18.5, "y":3, "h":2}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":12.5, "y":4, "w":1.25}, + {"x":13.75, "y":4, "w":1.25}, + {"x":15.5, "y":4, "w":2}, + {"x":17.5, "y":4} + ] + }, + + "LAYOUT_all_iso_7": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15.5, "y":0}, + {"x":16.5, "y":0}, + {"x":17.5, "y":0}, + {"x":18.5, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.75, "y":1, "w":1.25, "h":2}, + {"x":15.5, "y":1}, + {"x":16.5, "y":1}, + {"x":17.5, "y":1}, + {"x":18.5, "y":1, "h":2}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2}, + {"x":15.5, "y":2}, + {"x":16.5, "y":2}, + {"x":17.5, "y":2}, + + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3}, + {"x":13.25, "y":3, "w":1.75}, + {"x":15.5, "y":3}, + {"x":16.5, "y":3}, + {"x":17.5, "y":3}, + {"x":18.5, "y":3, "h":2}, + + {"x":0, "y":4, "w":1.5}, + {"x":1.5, "y":4}, + {"x":2.5, "y":4, "w":1.5}, + {"x":4, "y":4, "w":7}, + {"x":11, "y":4, "w":1.5}, + {"x":12.5, "y":4}, + {"x":13.5, "y":4, "w":1.5}, + {"x":15.5, "y":4, "w":2}, + {"x":17.5, "y":4} + ] + } + } +} diff --git a/keyboards/lm_keyboard/lm60n/keymaps/default/keymap.c b/keyboards/lm_keyboard/lm60n/keymaps/default/keymap.c new file mode 100644 index 0000000000..655cc7ac03 --- /dev/null +++ b/keyboards/lm_keyboard/lm60n/keymaps/default/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2021 gkeyboard + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_ansi( /* Base */ + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_P0, KC_PDOT + ), + + [1] = LAYOUT_ansi( /* FN */ + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, RGB_TOG, RGB_RMOD,RGB_MOD, RGB_VAD, RGB_VAI, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; diff --git a/keyboards/lm_keyboard/lm60n/keymaps/default/readme.md b/keyboards/lm_keyboard/lm60n/keymaps/default/readme.md new file mode 100644 index 0000000000..a2a10509b2 --- /dev/null +++ b/keyboards/lm_keyboard/lm60n/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for lm60n diff --git a/keyboards/lm_keyboard/lm60n/keymaps/via/keymap.c b/keyboards/lm_keyboard/lm60n/keymaps/via/keymap.c new file mode 100644 index 0000000000..04c7c09603 --- /dev/null +++ b/keyboards/lm_keyboard/lm60n/keymaps/via/keymap.c @@ -0,0 +1,51 @@ +/* Copyright 2021 gkeyboard + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_all_ansi( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_P0, KC_PDOT + ), + + [1] = LAYOUT_all_ansi( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_DEL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [2] = LAYOUT_all_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [3] = LAYOUT_all_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; diff --git a/keyboards/lm_keyboard/lm60n/keymaps/via/readme.md b/keyboards/lm_keyboard/lm60n/keymaps/via/readme.md new file mode 100644 index 0000000000..1e517bfa0f --- /dev/null +++ b/keyboards/lm_keyboard/lm60n/keymaps/via/readme.md @@ -0,0 +1 @@ +# The via keymap for lm60n diff --git a/keyboards/lm_keyboard/lm60n/keymaps/via/rules.mk b/keyboards/lm_keyboard/lm60n/keymaps/via/rules.mk new file mode 100644 index 0000000000..36b7ba9cbc --- /dev/null +++ b/keyboards/lm_keyboard/lm60n/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/lm_keyboard/lm60n/lm60n.c b/keyboards/lm_keyboard/lm60n/lm60n.c new file mode 100644 index 0000000000..91b010c6bd --- /dev/null +++ b/keyboards/lm_keyboard/lm60n/lm60n.c @@ -0,0 +1,17 @@ +/* Copyright 2021 gkeyboard + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "lm60n.h" diff --git a/keyboards/lm_keyboard/lm60n/lm60n.h b/keyboards/lm_keyboard/lm60n/lm60n.h new file mode 100644 index 0000000000..31ac7b177a --- /dev/null +++ b/keyboards/lm_keyboard/lm60n/lm60n.h @@ -0,0 +1,204 @@ +/* Copyright 2021 gkeyboard + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ + +/* LAYOUT_ansi + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┠┌───┬───┬───┬───┠+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0e │ |68 |69 |6a |6b | + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┼───┤ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │ |58 |59 |5a |5b | + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ├───┼───┼───┤ | + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2d │ |5c |5d |5e | | + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ├───┼───┼───┼───┤ + * │30 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3d | |48 |49 |4a |4b | + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ├───┴───┼───┤ | + * │40 │41 │42 │43 │44 │45 │46 │47 │ |4c |4d | | + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───────┴───┴───┘ +*/ +#define LAYOUT_ansi( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0e, k68, k69, k6a, k6b, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k58, k59, k5a, k5b, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, k5c, k5d, k5e, \ + k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k48, k49, k4a, k4b, \ + k40, k41, k42, k43, k44, k45, k46, k47, k4c, k4d \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, XXX, k0e }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, XXX }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d, XXX }, \ + { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d, XXX }, \ + { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, XXX }, \ + { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, k58, k59, k5a, k5b, k5c, k5d, k5e }, \ + { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, k68, k69, k6a, k6b, XXX, XXX, XXX } \ +} + +/* LAYOUT_tsangan + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┠┌───┬───┬───┬───┠+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0e │ |68 |69 |6a |6b | + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┼───┤ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │ |58 |59 |5a |5b | + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ├───┼───┼───┤ | + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2d │ |5c |5d |5e | | + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬──────┤ ├───┼───┼───┼───┤ + * │30 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c |3d │ |48 |49 |4a |4b | + * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬──┴┬─────┤ ├───┴───┼───┤ | + * │40 │41 │42 │43 (7u) │45 │46 │47 │ |4c |4d | | + * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───────┴───┴───┘ +*/ +#define LAYOUT_tsangan( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0e, k68, k69, k6a, k6b, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k58, k59, k5a, k5b, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, k5c, k5d, k5e, \ + k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k48, k49, k4a, k4b, \ + k40, k41, k42, k43, k45, k46, k47, k4c, k4d \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, XXX, k0e }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, XXX }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d, XXX }, \ + { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, XXX }, \ + { k40, k41, k42, k43, XXX, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, XXX }, \ + { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, k58, k59, k5a, k5b, k5c, k5d, k5e }, \ + { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, k68, k69, k6a, k6b, XXX, XXX, XXX } \ +} + +/* LAYOUT_all_ansi + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┠┌───┬───┬───┬───┠+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │0e │ |68 |69 |6a |6b | + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┼───┤ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │ |58 |59 |5a |5b │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬────┤ ├───┼───┼───┤ | + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c |2d │ |5c |5d |5e | | + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┤ ├───┼───┼───┼───┤ + * │30 |31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c |3d │ |48 |49 |4a |4b | + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬──┴─┬────┤ ├───┴───┼───┤ | + * │40 │41 │42 │43 │44 │45 │46 │47 │ |4c |4d | | + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───────┴───┴───┘ +*/ +#define LAYOUT_all_ansi( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k68, k69, k6a, k6b, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k58, k59, k5a, k5b, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k5c, k5d, k5e, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k48, k49, k4a, k4b, \ + k40, k41, k42, k43, k44, k45, k46, k47, k4c, k4d \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, XXX }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, XXX }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, XXX }, \ + { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, XXX }, \ + { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, k58, k59, k5a, k5b, k5c, k5d, k5e }, \ + { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, k68, k69, k6a, k6b, XXX, XXX, XXX } \ +} + +/* LAYOUT_all_tsangan + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┠┌───┬───┬───┬───┠+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d |0e │ |68 |69 |6a |6b | + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┼───┤ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │ |58 |59 |5a |5b | + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬────┤ ├───┼───┼───┤ | + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c |2d │ |5c |5d |5e | | + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┤ ├───┼───┼───┼───┤ + * │30 |31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c |3d │ |48 |49 |4a |4b | + * ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬──┴┬─────┤ ├───┴───┼───┤ | + * │40 │41 │42 │43 (7u) │45 │46 │47 │ |4c |4d | | + * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───────┴───┴───┘ +*/ +#define LAYOUT_all_tsangan( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k68, k69, k6a, k6b, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k58, k59, k5a, k5b, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k5c, k5d, k5e, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k48, k49, k4a, k4b, \ + k40, k41, k42, k43, k45, k46, k47, k4c, k4d \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, XXX }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, XXX }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, XXX }, \ + { k40, k41, k42, k43, XXX, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, XXX }, \ + { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, k58, k59, k5a, k5b, k5c, k5d, k5e }, \ + { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, k68, k69, k6a, k6b, XXX, XXX, XXX } \ +} + +/* LAYOUT_all__iso_6_25 + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┠┌───┬───┬───┬───┠+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │0e │ |68 |69 |6a |6b | + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┼───┤ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │ │ |58 |59 |5a |5b | + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┠| ├───┼───┼───┤ | + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c |2d │ |5c |5d |5e | | + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┤ ├───┼───┼───┼───┤ + * │30 |31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c |3d │ |48 |49 |4a |4b | + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬──┴─┬────┤ ├───┴───┼───┤ | + * │40 │41 │42 │43 │44 │45 │46 │47 │ |4c |4d | | + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───────┴───┴───┘ +*/ +#define LAYOUT_all_iso_6_25( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k68, k69, k6a, k6b, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k58, k59, k5a, k5b, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k5c, k5d, k5e, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k48, k49, k4a, k4b, \ + k40, k41, k42, k43, k44, k45, k46, k47, k4c, k4d \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, XXX, XXX }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, XXX }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, XXX }, \ + { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, XXX }, \ + { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, k58, k59, k5a, k5b, k5c, k5d, k5e }, \ + { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, k68, k69, k6a, k6b, XXX, XXX, XXX } \ +} + +/* LAYOUT_all__iso_7 + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┠┌───┬───┬───┬───┠+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d |0e │ |68 |69 |6a |6b | + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┼───┤ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │ │ |58 |59 |5a |5b | + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┠| ├───┼───┼───┤ | + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c |2d │ |5c |5d |5e | | + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┤ ├───┼───┼───┼───┤ + * │30 |31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c |3d │ |48 |49 |4a |4b | + * ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬──┴┬─────┤ ├───┴───┼───┤ | + * │40 │41 │42 │43 (7u) │45 │46 │47 │ |4c |4d | | + * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───────┴───┴───┘ +*/ +#define LAYOUT_all_iso_7( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k68, k69, k6a, k6b, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k58, k59, k5a, k5b, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k5c, k5d, k5e, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k48, k49, k4a, k4b, \ + k40, k41, k42, k43, k45, k46, k47, k4c, k4d \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, XXX, XXX }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, XXX }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, XXX }, \ + { k40, k41, k42, k43, XXX, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, XXX }, \ + { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, k58, k59, k5a, k5b, k5c, k5d, k5e }, \ + { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, k68, k69, k6a, k6b, XXX, XXX, XXX } \ +} diff --git a/keyboards/lm_keyboard/lm60n/readme.md b/keyboards/lm_keyboard/lm60n/readme.md new file mode 100644 index 0000000000..2fffc9e66e --- /dev/null +++ b/keyboards/lm_keyboard/lm60n/readme.md @@ -0,0 +1,18 @@ +# L+M 60N + + +60% keyboard with numpad and RGB underglow. + +* Keyboard Maintainer: [gkeyboard](https://github.com/gkeyboard) +* Hardware Supported: L+M 60N PCB +* Hardware Availability: https://www.facebook.com/LMKeyboard + +Make example for this keyboard (after setting up your build environment): + + make lm_keyboard/lm60n:default + +Flashing example for this keyboard: + + make lm_keyboard/lm60n:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/lm_keyboard/lm60n/rules.mk b/keyboards/lm_keyboard/lm60n/rules.mk new file mode 100644 index 0000000000..f49426d513 --- /dev/null +++ b/keyboards/lm_keyboard/lm60n/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output From 0c50a9eae9a7e1773130686b60237ad9e899cd14 Mon Sep 17 00:00:00 2001 From: Leon Anavi Date: Sun, 25 Apr 2021 04:14:28 +0300 Subject: [PATCH 278/613] [Keymap] Add Git keymap for ANAVI Macro Pad 8 (#12436) Git keymap for ANAVI Macro Pad 8 with the following shortcuts. On the first row from left to right: - git status - git log - git pull - git push On the second row from left to right: - git diff - git add - git commit - FN key to switch to the 2nd layout and control lights Reduce the number of supported RGB animations and effects in config.h to shrink the firmware size and fit it on the device. Signed-off-by: Leon Anavi --- .../anavi/macropad8/keymaps/git/config.h | 23 +++ .../anavi/macropad8/keymaps/git/keymap.c | 144 ++++++++++++++++++ 2 files changed, 167 insertions(+) create mode 100644 keyboards/anavi/macropad8/keymaps/git/config.h create mode 100644 keyboards/anavi/macropad8/keymaps/git/keymap.c diff --git a/keyboards/anavi/macropad8/keymaps/git/config.h b/keyboards/anavi/macropad8/keymaps/git/config.h new file mode 100644 index 0000000000..3fe0304ffc --- /dev/null +++ b/keyboards/anavi/macropad8/keymaps/git/config.h @@ -0,0 +1,23 @@ +/* Copyright 2021 Leon Anavi + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#undef RGBLIGHT_ANIMATIONS +#define RGBLIGHT_EFFECT_BREATHING +#define RGBLIGHT_EFFECT_CHRISTMAS +#define RGBLIGHT_EFFECT_RAINBOW_MOOD +#define RGBLIGHT_EFFECT_SNAKE diff --git a/keyboards/anavi/macropad8/keymaps/git/keymap.c b/keyboards/anavi/macropad8/keymaps/git/keymap.c new file mode 100644 index 0000000000..0b0099fd52 --- /dev/null +++ b/keyboards/anavi/macropad8/keymaps/git/keymap.c @@ -0,0 +1,144 @@ +/* Copyright 2021 Leon Anavi + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +#define _MAIN 0 +#define _FN 1 + +/* + * This keymap contains the following shortcuts for Git. On the + * first row from left to right: + * + * git status + * git log + * git pull + * git push + * + * On the second row from left to right: + * + * git diff + * git add + * git commit + * FN key to switch to the 2nd layout and control lights + * + */ + +enum custom_keycodes { + GITCOMMIT = SAFE_RANGE, + GITPUSH, + GITPULL, + GITSTATUS, + GITDIFF, + GITLOG, + GITADD +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case GITCOMMIT: + if (record->event.pressed) { + SEND_STRING("git commit -s\n"); + } + break; + case GITPUSH: + if (record->event.pressed) { + SEND_STRING("git push\n"); + } + break; + case GITPULL: + if (record->event.pressed) { + SEND_STRING("git pull\n"); + } + break; + case GITSTATUS: + if (record->event.pressed) { + SEND_STRING("git status\n"); + } + break; + case GITDIFF: + if (record->event.pressed) { + SEND_STRING("git diff "); + } + break; + case GITLOG: + if (record->event.pressed) { + SEND_STRING("git log\n"); + } + break; + case GITADD: + if (record->event.pressed) { + SEND_STRING("git add "); + } + break; + } + return true; +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_MAIN] = LAYOUT_ortho_2x4( + GITSTATUS, GITLOG, GITPULL, GITPUSH, + GITDIFF, GITADD, GITCOMMIT, MO(_FN) + ), + + [_FN] = LAYOUT_ortho_2x4( + RGB_TOG, RGB_MOD, RGB_M_R, RGB_M_SN, + BL_TOGG, BL_STEP, BL_BRTG, _______ + ) +}; + +#ifdef OLED_DRIVER_ENABLE +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + return OLED_ROTATION_180; // flips the display 180 degrees if offhand +} + +void oled_task_user(void) { + // Host Keyboard Layer Status + oled_write_ln_P(PSTR("ANAVI Macro Pad 8"), false); + oled_write_P(PSTR("Active layer: "), false); + + switch (get_highest_layer(layer_state)) { + case _MAIN: + oled_write_ln_P(PSTR("Git"), false); + break; + case _FN: + oled_write_ln_P(PSTR("FN"), false); + break; + default: + // Or use the write_ln shortcut over adding '\n' to the end of your string + oled_write_ln_P(PSTR("N/A"), false); + } + + // Host Keyboard LED Status + led_t led_state = host_keyboard_led_state(); + oled_write_P(PSTR("Num Lock: "), false); + oled_write_ln_P(led_state.num_lock ? PSTR("On") : PSTR("Off"), false); + oled_write_P(PSTR("Caps Lock: "), false); + oled_write_ln_P(led_state.caps_lock ? PSTR("On") : PSTR("Off"), false); + oled_write_P(PSTR("Scroll Lock: "), false); + oled_write_ln_P(led_state.scroll_lock ? PSTR("On") : PSTR("Off"), false); + oled_write_P(PSTR("Backlit: "), false); + oled_write_ln_P(is_backlight_enabled() ? PSTR("On") : PSTR("Off"), false); +#ifdef RGBLIGHT_ENABLE + static char rgbStatusLine1[26] = {0}; + snprintf(rgbStatusLine1, sizeof(rgbStatusLine1), "RGB Mode: %d", rgblight_get_mode()); + oled_write_ln(rgbStatusLine1, false); + static char rgbStatusLine2[26] = {0}; + snprintf(rgbStatusLine2, sizeof(rgbStatusLine2), "h:%d s:%d v:%d", rgblight_get_hue(), rgblight_get_sat(), rgblight_get_val()); + oled_write_ln(rgbStatusLine2, false); +#endif +} +#endif From b88498ba85aaf2fdd955ee9cbae6cffb327497de Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Sun, 25 Apr 2021 11:15:54 +1000 Subject: [PATCH 279/613] Fix CLI incorrectly following `DEFAULT_FOLDER` (#12529) * Attempt to sort out incorrectly following DEFAULT_FOLDER. * Fix CI checks. * qmk pyformat --- lib/python/qmk/keyboard.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/lib/python/qmk/keyboard.py b/lib/python/qmk/keyboard.py index 0168d17ef3..e457685567 100644 --- a/lib/python/qmk/keyboard.py +++ b/lib/python/qmk/keyboard.py @@ -92,7 +92,16 @@ def list_keyboards(): kb_wildcard = os.path.join(base_path, "**", "rules.mk") paths = [path for path in glob(kb_wildcard, recursive=True) if 'keymaps' not in path] - return sorted(map(_find_name, paths)) + return sorted(set(map(resolve_keyboard, map(_find_name, paths)))) + + +def resolve_keyboard(keyboard): + cur_dir = Path('keyboards') + rules = parse_rules_mk_file(cur_dir / keyboard / 'rules.mk') + while 'DEFAULT_FOLDER' in rules and keyboard != rules['DEFAULT_FOLDER']: + keyboard = rules['DEFAULT_FOLDER'] + rules = parse_rules_mk_file(cur_dir / keyboard / 'rules.mk') + return keyboard def config_h(keyboard): @@ -106,8 +115,7 @@ def config_h(keyboard): """ config = {} cur_dir = Path('keyboards') - rules = rules_mk(keyboard) - keyboard = Path(rules['DEFAULT_FOLDER'] if 'DEFAULT_FOLDER' in rules else keyboard) + keyboard = Path(resolve_keyboard(keyboard)) for dir in keyboard.parts: cur_dir = cur_dir / dir @@ -125,13 +133,10 @@ def rules_mk(keyboard): Returns: a dictionary representing the content of the entire rules.mk tree for a keyboard """ - keyboard = Path(keyboard) cur_dir = Path('keyboards') + keyboard = Path(resolve_keyboard(keyboard)) rules = parse_rules_mk_file(cur_dir / keyboard / 'rules.mk') - if 'DEFAULT_FOLDER' in rules: - keyboard = Path(rules['DEFAULT_FOLDER']) - for i, dir in enumerate(keyboard.parts): cur_dir = cur_dir / dir rules = parse_rules_mk_file(cur_dir / 'rules.mk', rules) From c7ca67a036e9e4cd87ff203cf3c3d1922cb79e6d Mon Sep 17 00:00:00 2001 From: Albert Y <76888457+filterpaper@users.noreply.github.com> Date: Sun, 25 Apr 2021 09:47:43 +0800 Subject: [PATCH 280/613] Add RGB matrix suspend wake function for Planck/rev6 (#12290) * Add RGB matrix suspend wake function for Planck/rev6 * Update suggested definition to allow user override. Co-authored-by: Nick Brassel Co-authored-by: filterpaper Co-authored-by: Nick Brassel --- keyboards/planck/rev6/config.h | 4 ++++ keyboards/planck/rev6/rev6.c | 10 ++++++++++ 2 files changed, 14 insertions(+) diff --git a/keyboards/planck/rev6/config.h b/keyboards/planck/rev6/config.h index 63c44001f6..4bc8a509f6 100644 --- a/keyboards/planck/rev6/config.h +++ b/keyboards/planck/rev6/config.h @@ -140,4 +140,8 @@ #define WS2812_DMA_STREAM STM32_DMA1_STREAM2 #define WS2812_DMA_CHANNEL 2 +#ifndef RGB_DISABLE_WHEN_USB_SUSPENDED +# define RGB_DISABLE_WHEN_USB_SUSPENDED true +#endif + #endif diff --git a/keyboards/planck/rev6/rev6.c b/keyboards/planck/rev6/rev6.c index 3074f8c20f..4f2ff86812 100644 --- a/keyboards/planck/rev6/rev6.c +++ b/keyboards/planck/rev6/rev6.c @@ -39,6 +39,16 @@ led_config_t g_led_config = { { // 6 5 4 3 // 0 // 7 8 1 2 + +void suspend_power_down_kb(void) { + rgb_matrix_set_suspend_state(true); + suspend_power_down_user(); +} + +void suspend_wakeup_init_kb(void) { + rgb_matrix_set_suspend_state(false); + suspend_wakeup_init_user(); +} #endif void matrix_init_kb(void) { From dbd65d01b656e0e43511da4b144dc3408f3046d1 Mon Sep 17 00:00:00 2001 From: Purdea Andrei Date: Sun, 25 Apr 2021 06:11:41 +0300 Subject: [PATCH 281/613] Fix how USB queue overflow is handled in chibios. (#12576) * Fix how USB queue overflow is handled in chibios. This commit reverts PR 12472 (commit c823fe2d3f23ed090e36ce39beed4c448298bd2f), and it implements the original intent of the commit in a better way. The original intent of the above mentioned commit was to not deadlock the keyboard when console is enabled, and hid_listen is not started. The above mentioned commit had a few drawbacks: 1) When a lot of data was printed to the console, the queue would get full, and drop data, even if hid_listen was running. (For example having matrix debug enabled just didn't work right at all) 2) I believe the function in which this was implemented is used by all other USB endpoints, so with the above change, overflow, and data loss could happen in other important functions of QMK as well. This commit implements deadlock prevention in a slightly similar way to how it's done on AVR. There is an additional static local variable, that memorizes whether the console has timeouted before. If we are in the timeouted=false state, then we send the character normally with a 5ms timeout. If it does time out, then hid_listen is likely not running, and future characters should not be sent with a timeout, but those characters should still be sent if there is space in the queue. The difference between the AVR implementation and this one is that the AVR implementation checks the queue state directly, but this implementation instead attempts to write the character with a zero timeout. If it fails, then we remain in the timeouted=true state, if it succeeds, then hid_listen started removing data from the queue, so we can go out of the timeouted=true state. * Added comment explaining the timeouted logic to console flow control. * Console flow control: refactor chibios flowcontrol code to make it more readable, and rename the timeouted variable to timed_out on both chibios and lufa. Changed comments to says timed_out is an approximation of listener_disconnected, to make it clear that it's not the same thing * fix typo --- tmk_core/protocol/chibios/usb_driver.c | 14 +------------ tmk_core/protocol/chibios/usb_main.c | 29 +++++++++++++++++++++++--- tmk_core/protocol/lufa/lufa.c | 11 +++++----- 3 files changed, 33 insertions(+), 21 deletions(-) diff --git a/tmk_core/protocol/chibios/usb_driver.c b/tmk_core/protocol/chibios/usb_driver.c index 40bfb8eb2b..cc0ce7600f 100644 --- a/tmk_core/protocol/chibios/usb_driver.c +++ b/tmk_core/protocol/chibios/usb_driver.c @@ -80,19 +80,7 @@ static bool qmkusb_start_receive(QMKUSBDriver *qmkusbp) { * Interface implementation. */ -static size_t _write(void *ip, const uint8_t *bp, size_t n) { - output_buffers_queue_t *obqueue = &((QMKUSBDriver *)ip)->obqueue; - chSysLock(); - const bool full = obqIsFullI(obqueue); - chSysUnlock(); - if (full || bqIsSuspendedX(obqueue)) { - /* Discard any writes while the queue is suspended or full, i.e. the hidraw - interface is not open. If we tried to send with an infinite timeout, we - would deadlock the keyboard otherwise. */ - return -1; - } - return obqWriteTimeout(obqueue, bp, n, TIME_INFINITE); -} +static size_t _write(void *ip, const uint8_t *bp, size_t n) { return obqWriteTimeout(&((QMKUSBDriver *)ip)->obqueue, bp, n, TIME_INFINITE); } static size_t _read(void *ip, uint8_t *bp, size_t n) { return ibqReadTimeout(&((QMKUSBDriver *)ip)->ibqueue, bp, n, TIME_INFINITE); } diff --git a/tmk_core/protocol/chibios/usb_main.c b/tmk_core/protocol/chibios/usb_main.c index 8adecfa719..0703cdc718 100644 --- a/tmk_core/protocol/chibios/usb_main.c +++ b/tmk_core/protocol/chibios/usb_main.c @@ -930,9 +930,32 @@ void send_consumer(uint16_t data) { #ifdef CONSOLE_ENABLE int8_t sendchar(uint8_t c) { - // The previous implmentation had timeouts, but I think it's better to just slow down - // and make sure that everything is transferred, rather than dropping stuff - return chnWrite(&drivers.console_driver.driver, &c, 1); + static bool timed_out = false; + /* The `timed_out` state is an approximation of the ideal `is_listener_disconnected?` state. + * + * When a 5ms timeout write has timed out, hid_listen is most likely not running, or not + * listening to this keyboard, so we go into the timed_out state. In this state we assume + * that hid_listen is most likely not gonna be connected to us any time soon, so it would + * be wasteful to write follow-up characters with a 5ms timeout, it would all add up and + * unncecessarily slow down the firmware. However instead of just dropping the characters, + * we write them with a TIME_IMMEDIATE timeout, which is a zero timeout, + * and this will succeed only if hid_listen gets connected again. When a write with + * TIME_IMMEDIATE timeout succeeds, we know that hid_listen is listening to us again, and + * we can go back to the timed_out = false state, and following writes will be executed + * with a 5ms timeout. The reason we don't just send all characters with the TIME_IMMEDIATE + * timeout is that this could cause bytes to be lost even if hid_listen is running, if there + * is a lot of data being sent over the console. + * + * This logic will work correctly as long as hid_listen is able to receive at least 200 + * bytes per second. On a heavily overloaded machine that's so overloaded that it's + * unusable, and constantly swapping, hid_listen might have trouble receiving 200 bytes per + * second, so some bytes might be lost on the console. + */ + + const sysinterval_t timeout = timed_out ? TIME_IMMEDIATE : TIME_MS2I(5); + const size_t result = chnWriteTimeout(&drivers.console_driver.driver, &c, 1, timeout); + timed_out = (result == 0); + return result; } // Just a dummy function for now, this could be exposed as a weak function diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c index f1908b3d07..85d71d0835 100644 --- a/tmk_core/protocol/lufa/lufa.c +++ b/tmk_core/protocol/lufa/lufa.c @@ -829,9 +829,10 @@ static void send_consumer(uint16_t data) { * FIXME: Needs doc */ int8_t sendchar(uint8_t c) { - // Not wait once timeouted. + // Do not wait if the previous write has timed_out. // Because sendchar() is called so many times, waiting each call causes big lag. - static bool timeouted = false; + // The `timed_out` state is an approximation of the ideal `is_listener_disconnected?` state. + static bool timed_out = false; // prevents Console_Task() from running during sendchar() runs. // or char will be lost. These two function is mutually exclusive. @@ -845,11 +846,11 @@ int8_t sendchar(uint8_t c) { goto ERROR_EXIT; } - if (timeouted && !Endpoint_IsReadWriteAllowed()) { + if (timed_out && !Endpoint_IsReadWriteAllowed()) { goto ERROR_EXIT; } - timeouted = false; + timed_out = false; uint8_t timeout = SEND_TIMEOUT; while (!Endpoint_IsReadWriteAllowed()) { @@ -860,7 +861,7 @@ int8_t sendchar(uint8_t c) { goto ERROR_EXIT; } if (!(timeout--)) { - timeouted = true; + timed_out = true; goto ERROR_EXIT; } _delay_ms(1); From d3bf3d3b1cfa9bd6d60ef605cf767e1fb1957c07 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 25 Apr 2021 13:15:48 +1000 Subject: [PATCH 282/613] Format code according to conventions (#12681) Co-authored-by: QMK Bot --- tmk_core/protocol/chibios/usb_main.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tmk_core/protocol/chibios/usb_main.c b/tmk_core/protocol/chibios/usb_main.c index 0703cdc718..d04302acae 100644 --- a/tmk_core/protocol/chibios/usb_main.c +++ b/tmk_core/protocol/chibios/usb_main.c @@ -953,8 +953,8 @@ int8_t sendchar(uint8_t c) { */ const sysinterval_t timeout = timed_out ? TIME_IMMEDIATE : TIME_MS2I(5); - const size_t result = chnWriteTimeout(&drivers.console_driver.driver, &c, 1, timeout); - timed_out = (result == 0); + const size_t result = chnWriteTimeout(&drivers.console_driver.driver, &c, 1, timeout); + timed_out = (result == 0); return result; } From da6e888a32a6d9c09a1506e9ae4a59a36f8a5354 Mon Sep 17 00:00:00 2001 From: Sergey Vlasov Date: Sun, 25 Apr 2021 06:41:37 +0300 Subject: [PATCH 283/613] Do not leak weak mods from tap dance to the interrupting keypress (#12471) Tap dance callbacks may register weak mods; one case when it happens is when a tap dance registers a key with modifiers. When the tap dance is interrupted by pressing another key, these weak mods could affect the interrupting key (normally any stale weak mods are cleared at the start of action_exec() when handling a keypress event, but the tap dance interrupt check code is called later, and the weak mods left by that code were not cleared). Add another clear_weak_mods() call to preprocess_tap_dance() to make sure that the interrupting keypress is not affected by unrelated weak mods from the previous tap dance. Fixes #12445. --- quantum/process_keycode/process_tap_dance.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/quantum/process_keycode/process_tap_dance.c b/quantum/process_keycode/process_tap_dance.c index 138de0eba2..17dc540a64 100644 --- a/quantum/process_keycode/process_tap_dance.c +++ b/quantum/process_keycode/process_tap_dance.c @@ -117,6 +117,10 @@ void preprocess_tap_dance(uint16_t keycode, keyrecord_t *record) { action->state.interrupting_keycode = keycode; process_tap_dance_action_on_dance_finished(action); reset_tap_dance(&action->state); + + // Tap dance actions can leave some weak mods active (e.g., if the tap dance is mapped to a keycode with + // modifiers), but these weak mods should not affect the keypress which interrupted the tap dance. + clear_weak_mods(); } } } From 5b394e82c9da068dfed83ea6bdc40ba5182d7419 Mon Sep 17 00:00:00 2001 From: calebchongc Date: Sun, 25 Apr 2021 04:59:37 +0100 Subject: [PATCH 284/613] Update checking board master function (#12493) changed is_master to is_keyboard_master() --- users/ninjonas/oled.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/users/ninjonas/oled.c b/users/ninjonas/oled.c index ffb9eecbcb..a3514f54f6 100644 --- a/users/ninjonas/oled.c +++ b/users/ninjonas/oled.c @@ -5,10 +5,10 @@ #if defined(OLED_DRIVER_ENABLE) & !defined(KEYBOARD_kyria_rev1) static uint32_t oled_timer = 0; -extern uint8_t is_master; + oled_rotation_t oled_init_user(oled_rotation_t rotation) { - if (is_master) { + if (is_keyboard_master()) { return OLED_ROTATION_0; } return OLED_ROTATION_180; @@ -99,7 +99,7 @@ void oled_task_user(void) { else { oled_on(); } #endif - if (is_master) { + if (is_keyboard_master()) { render_status(); } else { render_logo(); @@ -108,4 +108,4 @@ void oled_task_user(void) { } } -#endif \ No newline at end of file +#endif From 89bd04b9eba72c93e6e9227179aa4a1236f3061b Mon Sep 17 00:00:00 2001 From: peepeetee <43021794+peepeetee@users.noreply.github.com> Date: Sat, 24 Apr 2021 23:02:42 -0500 Subject: [PATCH 285/613] peepeetee's *very janky* hub16 keymap (#12506) * peepeetee's bodged hub16 keymap * add layer 3 lighting * actually adds layer 3 lighting * fixes layer 0; behavior is that layor 0 is unaltered from base pattern, while other states have distinct solid colors --- keyboards/hub16/keymaps/peepeetee/config.h | 57 ++++++ keyboards/hub16/keymaps/peepeetee/keymap.c | 208 +++++++++++++++++++++ keyboards/hub16/keymaps/peepeetee/rules.mk | 1 + 3 files changed, 266 insertions(+) create mode 100644 keyboards/hub16/keymaps/peepeetee/config.h create mode 100644 keyboards/hub16/keymaps/peepeetee/keymap.c create mode 100644 keyboards/hub16/keymaps/peepeetee/rules.mk diff --git a/keyboards/hub16/keymaps/peepeetee/config.h b/keyboards/hub16/keymaps/peepeetee/config.h new file mode 100644 index 0000000000..aa9e081c75 --- /dev/null +++ b/keyboards/hub16/keymaps/peepeetee/config.h @@ -0,0 +1,57 @@ +/* +Copyright 2019 Josh Johnson + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +// /*== all animations enable ==*/ +// #define RGBLIGHT_ANIMATIONS +// /*== or choose animations ==*/ +// #define RGBLIGHT_EFFECT_BREATHING +// #define RGBLIGHT_EFFECT_RAINBOW_MOOD +// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL +// #define RGBLIGHT_EFFECT_SNAKE +// #define RGBLIGHT_EFFECT_KNIGHT +// #define RGBLIGHT_EFFECT_CHRISTMAS +// #define RGBLIGHT_EFFECT_STATIC_GRADIENT +// #define RGBLIGHT_EFFECT_RGB_TEST +// #define RGBLIGHT_EFFECT_ALTERNATING +// /*== customize breathing effect ==*/ +// /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +// #define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +// /*==== use exp() and sin() ====*/ +// #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +// #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +// #endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 20 + +// Time out one shot layers after 3 seconds +#define ONESHOT_TIMEOUT 3000 + +// Undef and redefine default brightness to half of 255 +#undef RGBLIGHT_LIMIT_VAL +#define RGBLIGHT_LIMIT_VAL 255 + +//Define a preview timeout for RGB reviews +#define PREVIEW_TIMEOUT 5000 + +// Enable Light Layers implementation +#define RGBLIGHT_LAYERS +// Allow Light Layers to override RGB off configuration +#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF diff --git a/keyboards/hub16/keymaps/peepeetee/keymap.c b/keyboards/hub16/keymaps/peepeetee/keymap.c new file mode 100644 index 0000000000..f0e393b262 --- /dev/null +++ b/keyboards/hub16/keymaps/peepeetee/keymap.c @@ -0,0 +1,208 @@ +/* +Copyright 2019 Josh Johnson 2021 peepeetee + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +#if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_LAYERS) +static uint32_t rgb_preview_timer = 0; +#endif + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + + // Layer 0 - Base Layer (F13 to F24, and One Shot Layer 1,2,3 or Toggle Layer 4) + [0] = LAYOUT( + KC_MPLY, KC_MUTE, + TG(3), TG(2), TG(1), TG(0), + KC_PSCR, KC_SLCK, KC_PAUS, A(KC_F4), + KC_INS, KC_HOME, KC_PGUP, KC_F12, //Transparent to let you go between layers + KC_DEL, A(KC_F4), KC_PGDN, KC_CALCULATOR + + ), + + [1] = LAYOUT( + KC_MPLY, KC_MUTE, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_F7, KC_F8, KC_F9, KC_F10, + KC_F4, KC_F5, KC_F6, KC_F11, + KC_F1, KC_F2, KC_F3, KC_F12 //Transparent to let you go between layers + ), + + + //Layer 5 - Keyboard Lights, Programming and Special Functions + [2] = LAYOUT( + KC_MPLY, KC_MUTE, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, //Transparent to let you go between layers + RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, + RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, + RGB_TOG, EEP_RST, RESET, KC_TRNS + ), + + [3] = LAYOUT( + KC_MPLY, KC_MUTE, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, //Transparent to let you go between layers + RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, + RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, + RGB_TOG, EEP_RST, RESET, KC_TRNS + ) + + + //Layer 0 - Base Layer (F13 to F24, and One Shot Layer 1,2,3 or Toggle Layer 4) + // [0] = LAYOUT( + // KC_MPLY, KC_MUTE, + // KC_F13, KC_F14, KC_F15, KC_F16, + // KC_F17, KC_F18, KC_F19, KC_F20, + // KC_F21, KC_F22, KC_F23, KC_F24, + // OSL(1), OSL(2), OSL(3), TG(4) //Transparent to let you go between layers + // ), + + // [1] = LAYOUT( + // KC_MPLY, KC_MUTE, + // LALT(KC_F13), LALT(KC_F14), LALT(KC_F15), LALT(KC_F16), + // LALT(KC_F17), LALT(KC_F18), LALT(KC_F19), LALT(KC_F20), + // LALT(KC_F21), LALT(KC_F22), LALT(KC_F23), LALT(KC_F24), + // KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS //Transparent to let you go between layers + // ), + + //Layer 2 - Shift + Function Key Layer + // [2] = LAYOUT( + // KC_MPLY, KC_MUTE, + // LSFT(KC_F13), LSFT(KC_F14), LSFT(KC_F15), LSFT(KC_F16), + // LSFT(KC_F17), LSFT(KC_F18), LSFT(KC_F19), LSFT(KC_F20), + // LSFT(KC_F21), LSFT(KC_F22), LSFT(KC_F23), LSFT(KC_F24), + // KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS //Transparent to let you go between layers + // ), + + // //Layer 3 - Control + Function Key + // [3] = LAYOUT( + // KC_MPLY, KC_MUTE, + // LCTL(KC_F13), LCTL(KC_F14), LCTL(KC_F15), LCTL(KC_F16), + // LCTL(KC_F17), LCTL(KC_F18), LCTL(KC_F19), LCTL(KC_F20), + // LCTL(KC_F21), LCTL(KC_F22), LCTL(KC_F23), LCTL(KC_F24), + // KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS //Transparent to let you go between layers + // ), + + // //Layer 4 - Multimedia + // [4] = LAYOUT( + // KC_MPLY, KC_MUTE, + // KC_MPRV, KC_MPLY, KC_U, KC_K, + // KC_NO, KC_NO, KC_ENT, KC_X, + // KC_NO, RESET, LSFT(KC_HASH), KC_J, + // TG(5), KC_TRNS, KC_TRNS, KC_TRNS //Transparent to let you go between layers + // ), + + // //Layer 5 - Keyboard Lights, Programming and Special Functions + // [5] = LAYOUT( + // KC_MPLY, KC_MUTE, + // RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, + // RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, + // RGB_TOG, EEP_RST, RESET, KC_LSHIFT, + // KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS //Transparent to let you go between layers + // ), +}; + +const rgblight_segment_t PROGMEM my_layer0_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {0,16,HSV_WHITE} + ); +const rgblight_segment_t PROGMEM my_layer1_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {0,16,HSV_ORANGE} + ); + const rgblight_segment_t PROGMEM my_layer2_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {0,16,HSV_RED} + ); + const rgblight_segment_t PROGMEM my_layer3_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {0,16,HSV_BLUE} + ); +// const rgblight_segment_t PROGMEM my_layer4_layer[] = RGBLIGHT_LAYER_SEGMENTS( +// {0,16,HSV_WHITE} +// ); +// const rgblight_segment_t PROGMEM my_layer5_layer[] = RGBLIGHT_LAYER_SEGMENTS( +// {0,16,HSV_TEAL} +// ); +const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST( + my_layer0_layer, + my_layer1_layer, + my_layer2_layer, + my_layer3_layer//, + // my_layer4_layer, + // my_layer5_layer + ); + +void encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { /* Left Encoder */ + if (clockwise) { + tap_code(KC_MPRV); + } else { + tap_code(KC_MNXT); + } + } else if (index == 1) { /* Right Encoder */ + if (clockwise) { + tap_code(KC_VOLD); + } else { + tap_code(KC_VOLU); + } + } +} +void post_process_record_user(uint16_t keycode, keyrecord_t *record) { + // Allow for a preview of changes when modifying RGB +# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_LAYERS) + switch (keycode) { + case RGB_TOG ... VLK_TOG: + for (uint8_t i = 0; i < RGBLIGHT_MAX_LAYERS; i++) { + rgblight_set_layer_state(i, false); + } + rgb_preview_timer = timer_read32(); + break; + } +# endif + return; +} + +//Set the appropriate layer color +layer_state_t layer_state_set_user(layer_state_t state) { + rgblight_set_layer_state(0, false); + rgblight_set_layer_state(1, layer_state_cmp(state, 1)); + rgblight_set_layer_state(2, layer_state_cmp(state, 2)); + rgblight_set_layer_state(3, layer_state_cmp(state, 3)); + // rgblight_set_layer_state(4, layer_state_cmp(state, 4)); + // rgblight_set_layer_state(5, layer_state_cmp(state, 5)); + return state; +} + +void keyboard_post_init_user(void) { + //Enable the LED layers + rgblight_layers = my_rgb_layers; + layer_state_set_user(layer_state); +} + +void matrix_scan_user(void) { +# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_LAYERS) + // Allow preview for + if (rgb_preview_timer && TIMER_DIFF_32(timer_read32(), rgb_preview_timer) > PREVIEW_TIMEOUT) { + rgb_preview_timer = 0; + default_layer_state_set_user(default_layer_state); + layer_state_set_user(layer_state); + led_update_user((led_t) host_keyboard_leds()); + } +# endif +} + +//EEPROM Reset Function +void eeconfig_init_user(void) { + rgblight_enable(); // Enable RGB by default + rgblight_sethsv_orange(); // Set it to orange by default +} diff --git a/keyboards/hub16/keymaps/peepeetee/rules.mk b/keyboards/hub16/keymaps/peepeetee/rules.mk new file mode 100644 index 0000000000..384d149ae2 --- /dev/null +++ b/keyboards/hub16/keymaps/peepeetee/rules.mk @@ -0,0 +1 @@ +BOOTMAGIC_ENABLE = lite \ No newline at end of file From 611cd80861b1bd8ad57ef5b78f11a349e74b1949 Mon Sep 17 00:00:00 2001 From: Xelus22 <17491233+Xelus22@users.noreply.github.com> Date: Sun, 25 Apr 2021 08:57:22 +0000 Subject: [PATCH 286/613] [Keyboard] Ninjin (#12496) * ninjin init * put in gpl thing * underglow * update to latest chibios * fix gpl headers * remove other files * fix header * Update keyboards/xelus/ninjin/readme.md Co-authored-by: Nick Brassel * Update keyboards/xelus/ninjin/mcuconf.h Co-authored-by: Nick Brassel * Update keyboards/xelus/ninjin/halconf.h Co-authored-by: Nick Brassel Co-authored-by: Nick Brassel --- keyboards/xelus/ninjin/config.h | 60 +++++++++++++++++++ keyboards/xelus/ninjin/halconf.h | 21 +++++++ .../xelus/ninjin/keymaps/default/keymap.c | 35 +++++++++++ keyboards/xelus/ninjin/keymaps/via/keymap.c | 44 ++++++++++++++ keyboards/xelus/ninjin/keymaps/via/rules.mk | 1 + keyboards/xelus/ninjin/mcuconf.h | 22 +++++++ keyboards/xelus/ninjin/ninjin.c | 28 +++++++++ keyboards/xelus/ninjin/ninjin.h | 37 ++++++++++++ keyboards/xelus/ninjin/readme.md | 16 +++++ keyboards/xelus/ninjin/rules.mk | 24 ++++++++ 10 files changed, 288 insertions(+) create mode 100644 keyboards/xelus/ninjin/config.h create mode 100644 keyboards/xelus/ninjin/halconf.h create mode 100644 keyboards/xelus/ninjin/keymaps/default/keymap.c create mode 100644 keyboards/xelus/ninjin/keymaps/via/keymap.c create mode 100644 keyboards/xelus/ninjin/keymaps/via/rules.mk create mode 100644 keyboards/xelus/ninjin/mcuconf.h create mode 100644 keyboards/xelus/ninjin/ninjin.c create mode 100644 keyboards/xelus/ninjin/ninjin.h create mode 100644 keyboards/xelus/ninjin/readme.md create mode 100644 keyboards/xelus/ninjin/rules.mk diff --git a/keyboards/xelus/ninjin/config.h b/keyboards/xelus/ninjin/config.h new file mode 100644 index 0000000000..cbaca37b5e --- /dev/null +++ b/keyboards/xelus/ninjin/config.h @@ -0,0 +1,60 @@ +/* Copyright 2021 Harrison Chan (Xelus) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x5845 // XE +#define PRODUCT_ID 0x4E4A // NJ +#define DEVICE_VER 0x0001 +#define MANUFACTURER Xelus +#define PRODUCT Ninjin +#define DESCRIPTION Ninjin + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 17 + +#define MATRIX_COL_PINS { A9, A8, B15, B14, B13, B12, B11, B10, B2, B1, B0, A7, A6, A5, A4, B6, B5 } +#define MATRIX_ROW_PINS { B4, B3, A15, A3, B9, B8 } +#define DIODE_DIRECTION COL2ROW + +/* RGB Underglow */ +#define RGB_DI_PIN A10 +#define RGBLED_NUM 26 +#define RGBLIGHT_ANIMATIONS +#define RGBLIGHT_LIMIT_VAL 200 + +// PWM RGB Underglow Defines +#define WS2812_PWM_DRIVER PWMD1 +#define WS2812_PWM_CHANNEL 3 +#define WS2812_PWM_PAL_MODE 2 +#define WS2812_DMA_STREAM STM32_DMA1_STREAM5 +#define WS2812_DMA_CHANNEL 3 +#define WS2812_EXTERNAL_PULLUP + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE + +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +#define LED_CAPS_LOCK_PIN A2 +#define LED_SCROLL_LOCK_PIN A13 +#define LED_PIN_ON_STATE 1 \ No newline at end of file diff --git a/keyboards/xelus/ninjin/halconf.h b/keyboards/xelus/ninjin/halconf.h new file mode 100644 index 0000000000..ee41dd8b93 --- /dev/null +++ b/keyboards/xelus/ninjin/halconf.h @@ -0,0 +1,21 @@ +/* Copyright 2021 Harrison Chan (Xelus) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define HAL_USE_PWM TRUE + +#include_next diff --git a/keyboards/xelus/ninjin/keymaps/default/keymap.c b/keyboards/xelus/ninjin/keymaps/default/keymap.c new file mode 100644 index 0000000000..9a3f4896ed --- /dev/null +++ b/keyboards/xelus/ninjin/keymaps/default/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2021 Harrison Chan (Xelus) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + [1] = LAYOUT_all( + RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; diff --git a/keyboards/xelus/ninjin/keymaps/via/keymap.c b/keyboards/xelus/ninjin/keymaps/via/keymap.c new file mode 100644 index 0000000000..4422a59958 --- /dev/null +++ b/keyboards/xelus/ninjin/keymaps/via/keymap.c @@ -0,0 +1,44 @@ +/* Copyright 2021 Harrison Chan (Xelus) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + [1] = LAYOUT_all( + RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) + +}; diff --git a/keyboards/xelus/ninjin/keymaps/via/rules.mk b/keyboards/xelus/ninjin/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/xelus/ninjin/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/xelus/ninjin/mcuconf.h b/keyboards/xelus/ninjin/mcuconf.h new file mode 100644 index 0000000000..83ff8e2dbc --- /dev/null +++ b/keyboards/xelus/ninjin/mcuconf.h @@ -0,0 +1,22 @@ +/* Copyright 2021 Harrison Chan (Xelus) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include_next + +#undef STM32_PWM_USE_TIM1 +#define STM32_PWM_USE_TIM1 TRUE diff --git a/keyboards/xelus/ninjin/ninjin.c b/keyboards/xelus/ninjin/ninjin.c new file mode 100644 index 0000000000..a474e4b406 --- /dev/null +++ b/keyboards/xelus/ninjin/ninjin.c @@ -0,0 +1,28 @@ +/* Copyright 2021 Harrison Chan (Xelus) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "ninjin.h" + +void eeconfig_init_kb(void) { // EEPROM is getting reset! + rgblight_enable(); // Enable RGB by default + rgblight_mode(RGBLIGHT_MODE_RGB_TEST); // set to RGBLIGHT_MODE_RGB_TEST by default + + eeconfig_update_kb(0); + eeconfig_init_user(); +} + +// Tested and verified working on Ninjin +void matrix_io_delay(void) { __asm__ volatile("nop\nnop\nnop\n"); } diff --git a/keyboards/xelus/ninjin/ninjin.h b/keyboards/xelus/ninjin/ninjin.h new file mode 100644 index 0000000000..40a01ea5aa --- /dev/null +++ b/keyboards/xelus/ninjin/ninjin.h @@ -0,0 +1,37 @@ +/* Copyright 2021 Harrison Chan (Xelus) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define ____ KC_NO + +#define LAYOUT_all( \ + K000, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, \ + K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K412, K415, \ + K500, K501, K502, K505, K510, K512, K513, K514, K515, K516 \ +) { \ + { K000, ____, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, ____, K313, ____, ____, ____ }, \ + { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, ____, K412, ____, ____, K415, ____ }, \ + { K500, K501, K502, ____, ____, K505, ____, ____, ____, ____, K510, ____, K512, K513, K514, K515, K516 } \ +} diff --git a/keyboards/xelus/ninjin/readme.md b/keyboards/xelus/ninjin/readme.md new file mode 100644 index 0000000000..d84c2c7a95 --- /dev/null +++ b/keyboards/xelus/ninjin/readme.md @@ -0,0 +1,16 @@ +# Ninjin + +Ninjin is a USB-C, hotswap and underglow TKL PCB. + +* Keyboard Maintainer: [Xelus22](https://github.com/Xelus22) +* Hardware Supported: STM32F072CBT6 + +Make example for this keyboard (after setting up your build environment): + + make xelus/ninjin:default + +Flashing example for this keyboard: + + make xelus/ninjin:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/xelus/ninjin/rules.mk b/keyboards/xelus/ninjin/rules.mk new file mode 100644 index 0000000000..bb7ad5260d --- /dev/null +++ b/keyboards/xelus/ninjin/rules.mk @@ -0,0 +1,24 @@ +# MCU name +MCU = STM32F072 + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output + +WS2812_DRIVER = pwm + +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE From 417a07c22db39dc544f00f9a8b71a7fe1479981e Mon Sep 17 00:00:00 2001 From: Luis Moreno Date: Sun, 25 Apr 2021 22:46:28 +0200 Subject: [PATCH 287/613] [Config] Add VSCode workspace files to .gitignore (#12469) --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index d6846cf63b..90f3d67527 100644 --- a/.gitignore +++ b/.gitignore @@ -50,6 +50,7 @@ doxygen/ .browse.VC.db* *.stackdump # Let these ones be user specific, since we have so many different configurations +*.code-workspace .vscode/c_cpp_properties.json .vscode/launch.json .vscode/tasks.json From 2f47bafd6a9c648daa4cfc11d5b1f15e32be3fc8 Mon Sep 17 00:00:00 2001 From: Xelus22 <17491233+Xelus22@users.noreply.github.com> Date: Mon, 26 Apr 2021 02:52:00 +0000 Subject: [PATCH 288/613] fix configs (#12631) --- keyboards/melgeek/mj61/rev2/rules.mk | 1 + keyboards/monarch/halconf.h | 27 +++++++++++++++++++++++++++ keyboards/monarch/mcuconf.h | 28 ++++++++++++++++++++++++++++ keyboards/monarch/rules.mk | 2 ++ 4 files changed, 58 insertions(+) create mode 100644 keyboards/monarch/halconf.h create mode 100644 keyboards/monarch/mcuconf.h diff --git a/keyboards/melgeek/mj61/rev2/rules.mk b/keyboards/melgeek/mj61/rev2/rules.mk index a4c0558052..31a770cfbb 100644 --- a/keyboards/melgeek/mj61/rev2/rules.mk +++ b/keyboards/melgeek/mj61/rev2/rules.mk @@ -1,5 +1,6 @@ # MCU name MCU = STM32F303 +BOARD = QMK_PROTON_C # Build Options # change yes to no to disable diff --git a/keyboards/monarch/halconf.h b/keyboards/monarch/halconf.h new file mode 100644 index 0000000000..c4a89408af --- /dev/null +++ b/keyboards/monarch/halconf.h @@ -0,0 +1,27 @@ +/* Copyright 2020 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/xelus/valor_frl_tkl/halconf.h -r platforms/chibios/common/configs/halconf.h` + */ + +#pragma once + +#define HAL_USE_PWM TRUE + +#include_next + diff --git a/keyboards/monarch/mcuconf.h b/keyboards/monarch/mcuconf.h new file mode 100644 index 0000000000..c16c3889a6 --- /dev/null +++ b/keyboards/monarch/mcuconf.h @@ -0,0 +1,28 @@ +/* Copyright 2020 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/xelus/valor_frl_tkl/mcuconf.h -r platforms/chibios/GENERIC_STM32_F072XB/configs/mcuconf.h` + */ + +#pragma once + +#include_next + +#undef STM32_PWM_USE_TIM3 +#define STM32_PWM_USE_TIM3 TRUE + diff --git a/keyboards/monarch/rules.mk b/keyboards/monarch/rules.mk index 5536d53345..22ec091e74 100644 --- a/keyboards/monarch/rules.mk +++ b/keyboards/monarch/rules.mk @@ -19,5 +19,7 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes +BACKLIGHT_DRIVER = pwm + # Enter lower-power sleep mode when on the ChibiOS idle thread OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE From 8f660ca1e652b3b53580442d321642165adbc7d0 Mon Sep 17 00:00:00 2001 From: Xelus22 <17491233+Xelus22@users.noreply.github.com> Date: Mon, 26 Apr 2021 17:24:19 +0000 Subject: [PATCH 289/613] [Keyboard] fix planck light via endpoints (#12701) --- keyboards/planck/keymaps/via/rules.mk | 3 +++ 1 file changed, 3 insertions(+) diff --git a/keyboards/planck/keymaps/via/rules.mk b/keyboards/planck/keymaps/via/rules.mk index 36b7ba9cbc..d055143e79 100644 --- a/keyboards/planck/keymaps/via/rules.mk +++ b/keyboards/planck/keymaps/via/rules.mk @@ -1,2 +1,5 @@ VIA_ENABLE = yes LTO_ENABLE = yes + +# Not enough USB endpoints +CONSOLE_ENABLE = no From b5419bd574600565bf4b2479bf07c7cc39dbfeea Mon Sep 17 00:00:00 2001 From: Andrew Kannan Date: Mon, 26 Apr 2021 15:18:17 -0400 Subject: [PATCH 290/613] Add python-version to gitignore (#12678) --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 90f3d67527..da74bdec83 100644 --- a/.gitignore +++ b/.gitignore @@ -72,6 +72,7 @@ id_rsa_* # python things __pycache__ +.python-version # prerequisites for updating ChibiOS /util/fmpp* From f9fb52951de60e9428a6c397bf167a6e7e9433f3 Mon Sep 17 00:00:00 2001 From: James Young <18669334+noroadsleft@users.noreply.github.com> Date: Mon, 26 Apr 2021 23:44:45 -0700 Subject: [PATCH 291/613] Update noroadsleft userspace and keymaps (2021-04-26) (#12711) * Update noroadsleft userspace and keymaps (2021-04-26) - add Discipline keymap - move Emulated Non-US Backslash, Numeric Keypad and F13-F24 code fully to userspace - re-add some custom keycode handling I accidentally deleted - update VRSN keycode - update KC60 and userspace readmes * remove Git readme from kc60 keymap * update kc60:noroadsleft readme Concatenates this readme into one file, and updates the image links. --- .../discipline/keymaps/noroadsleft/keymap.c | 73 ++++++++++ .../kbd75/keymaps/noroadsleft/keymap.c | 42 +----- keyboards/kc60/keymaps/noroadsleft/keymap.c | 62 +------- keyboards/kc60/keymaps/noroadsleft/readme.md | 132 ++++++++++++++++-- .../kc60/keymaps/noroadsleft/readme_ch1.md | 48 ------- .../kc60/keymaps/noroadsleft/readme_ch2.md | 36 ----- .../kc60/keymaps/noroadsleft/readme_ch3.md | 40 ------ .../kc60/keymaps/noroadsleft/readme_ch4.md | 110 --------------- .../kc60/keymaps/noroadsleft/readme_git.md | 79 ----------- users/noroadsleft/noroadsleft.c | 46 +++++- users/noroadsleft/noroadsleft.h | 2 +- users/noroadsleft/readme.md | 65 +++++++-- 12 files changed, 296 insertions(+), 439 deletions(-) create mode 100644 keyboards/coseyfannitutti/discipline/keymaps/noroadsleft/keymap.c delete mode 100644 keyboards/kc60/keymaps/noroadsleft/readme_ch1.md delete mode 100644 keyboards/kc60/keymaps/noroadsleft/readme_ch2.md delete mode 100644 keyboards/kc60/keymaps/noroadsleft/readme_ch3.md delete mode 100644 keyboards/kc60/keymaps/noroadsleft/readme_ch4.md delete mode 100644 keyboards/kc60/keymaps/noroadsleft/readme_git.md diff --git a/keyboards/coseyfannitutti/discipline/keymaps/noroadsleft/keymap.c b/keyboards/coseyfannitutti/discipline/keymaps/noroadsleft/keymap.c new file mode 100644 index 0000000000..6ad9dd1d38 --- /dev/null +++ b/keyboards/coseyfannitutti/discipline/keymaps/noroadsleft/keymap.c @@ -0,0 +1,73 @@ +/* Copyright 2021 James Young (@noroadsleft) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "noroadsleft.h" +#include "sendstring_dvorak.h" + +enum layer_names { + _QW, + _DV, + _NP, + _FN, + _SY +}; + +#define FN_CAPS LT(_FN, KC_CAPS) +#define CTL_GRV MT(MOD_LCTL, KC_GRV) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_QW] = LAYOUT_65_ansi( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + FN_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + CTL_GRV, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_DV] = LAYOUT_65_ansi( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, KC_BSPC, KC_HOME, + KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_EQL, KC_BSLS, KC_PGUP, + FN_CAPS, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, KC_ENT, KC_PGDN, + KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, KC_UP, KC_END, + CTL_GRV, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_NP] = LAYOUT_65_ansi( + _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, _______, _______, _______, _______, _______, + _______, _______, _______, _______, KC_E, KC_F, _______, KC_P4, KC_P5, KC_P6, KC_PAST, KC_PSLS, KC_PEQL, _______, _______, + _______, _______, _______, _______, KC_C, KC_D, _______, KC_P1, KC_P2, KC_P3, KC_PPLS, KC_PMNS, KC_PENT, _______, + _______, _______, _______, _______, KC_A, KC_B, _______, KC_P0, _______, KC_PDOT, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_FN] = LAYOUT_65_ansi( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_PSCR, + _______, KC_CALC, KC_APP, _______, _______, _______, KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_PSCR, KC_SLCK, KC_PAUS, _______, + _______, M_SALL, _______, _______, _______, _______, KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, _______, _______, + _______, M_UNDO, M_CUT, M_COPY, M_PASTE, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, TO(_SY), _______, _______, _______, + _______, _______, _______, TG(_NP), _______, _______, _______, _______, _______, _______ + ), + + [_SY] = LAYOUT_65_ansi( + TG(_SY), TO(_QW), TO(_DV), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX, DEBUG, XXXXXXX, VRSN, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, M_MDSWP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, TG(_NP), XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + ) + +}; diff --git a/keyboards/kbdfans/kbd75/keymaps/noroadsleft/keymap.c b/keyboards/kbdfans/kbd75/keymaps/noroadsleft/keymap.c index c08e513a7d..1648224fdf 100644 --- a/keyboards/kbdfans/kbd75/keymaps/noroadsleft/keymap.c +++ b/keyboards/kbdfans/kbd75/keymaps/noroadsleft/keymap.c @@ -1,4 +1,4 @@ -/* Copyright 2020 James Young (@noroadsleft) +/* Copyright 2020-2021 James Young (@noroadsleft) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -114,31 +114,6 @@ bool led_update_user(led_t led_state) { bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { switch (keycode) { - case G_PUSH: - if (record->event.pressed) { - SEND_STRING("git push origin "); - }; - return false; - case G_FTCH: - if (record->event.pressed) { - if ( get_mods() & MOD_MASK_SHIFT ) { - clear_mods(); - SEND_STRING("git pull upstream "); - } else { - SEND_STRING("git fetch upstream "); - } - }; - return false; - case G_BRCH: - if (record->event.pressed) { - if ( get_mods() & MOD_MASK_SHIFT ) { - clear_mods(); - SEND_STRING("master"); - } else { - SEND_STRING("$(git branch-name)"); - } - }; - return false; case GO_Q2: if (record->event.pressed) { layer_move(_QW); @@ -191,21 +166,6 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { } }; return true; - case KC_Z: - if (record->event.pressed) { - if ( get_mods() & MOD_MASK_RALT ) { - register_code(KC_NUBS); - } else { - register_code(KC_Z); - } - } else { - if ( get_mods() & MOD_MASK_RALT ) { - unregister_code(KC_NUBS); - } else { - unregister_code(KC_Z); - } - }; - return false; default: return true; } diff --git a/keyboards/kc60/keymaps/noroadsleft/keymap.c b/keyboards/kc60/keymaps/noroadsleft/keymap.c index 5ad100e0e7..f69371061e 100644 --- a/keyboards/kc60/keymaps/noroadsleft/keymap.c +++ b/keyboards/kc60/keymaps/noroadsleft/keymap.c @@ -1,4 +1,4 @@ -/* Copyright 2018-2020 James Young (@noroadsleft) +/* Copyright 2018-2021 James Young (@noroadsleft) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -40,11 +40,7 @@ enum layer_names { // KEYCODE DEFINITIONS -#define NO_CHNG KC_TRNS // Note for me for keys I need to leave as Pass-through - #define FN_CAPS LT(_FN, KC_CAPS) // Function Layer when held, Caps Lock when tapped -#define Q2_CAPS LT(_FQ, KC_CAPS) // Quake 2 Function Layer when held, Caps Lock when tapped - #define CTL_GRV MT(MOD_LCTL, KC_GRV) // Left Control when held, Grave accent when tapped @@ -58,7 +54,6 @@ enum custom_keycodes { /******************* ** MODIFIER MASKS ** *******************/ -#define MOD_MASK_RALT (MOD_BIT(KC_RALT)) unsigned char q2InputMode = 0; @@ -118,51 +113,6 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { } }; return false; - case KC_Z: - if (record->event.pressed) { - if ( get_mods() & MOD_MASK_RALT ) { - register_code(KC_NUBS); - } else { - register_code(KC_Z); - } - } else { - if ( get_mods() & MOD_MASK_RALT ) { - unregister_code(KC_NUBS); - } else { - unregister_code(KC_Z); - } - }; - return false; - case KC_1 ... KC_0: - if (record->event.pressed) { - if ( get_mods() & MOD_MASK_RALT ) { - register_code( keycode + 0x3B ); - } else { - register_code( keycode ); - } - } else { - if ( get_mods() & MOD_MASK_RALT ) { - unregister_code( keycode + 0x3B ); - } else { - unregister_code( keycode ); - } - } - return false; - case KC_F1 ... KC_F12: - if (record->event.pressed) { - if ( get_mods() & MOD_MASK_RALT ) { - register_code( keycode + 0x2E ); - } else { - register_code( keycode ); - } - } else { - if ( get_mods() & MOD_MASK_RALT ) { - unregister_code( keycode + 0x2E ); - } else { - unregister_code( keycode ); - } - } - return false; } // switch() return true; }; @@ -223,9 +173,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_FN] = LAYOUT_60_ansi( KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, KC_CALC, KC_APP, _______, _______, _______, KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_PSCR, KC_SLCK, KC_PAUS, - NO_CHNG, M_SALL, _______, _______, _______, _______, KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, KC_PENT, + _______, M_SALL, _______, _______, _______, _______, KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, KC_PENT, _______, M_UNDO, M_CUT, M_COPY, M_PASTE, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, TG(_SY), _______, - _______, _______, _______, TG(_NP), _______, _______, NO_CHNG, _______ + _______, _______, _______, TG(_NP), _______, _______, _______, _______ ), /***************** @@ -238,7 +188,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, KC_E, KC_F, _______, KC_P4, KC_P5, KC_P6, KC_PAST, KC_PSLS, KC_PEQL, _______, _______, _______, _______, _______, KC_C, KC_D, _______, KC_P1, KC_P2, KC_P3, KC_PPLS, KC_PMNS, KC_PENT, _______, _______, _______, _______, KC_A, KC_B, _______, KC_P0, _______, KC_PDOT, _______, _______, - _______, _______, _______, TG(_NP), _______, _______, NO_CHNG, _______ + _______, _______, _______, TG(_NP), _______, _______, _______, _______ ), /* Macro layer */ @@ -247,7 +197,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, G_PUSH, _______, _______, _______, _______, _______, _______, _______, DM_PLY1, DM_PLY2, DM_RSTP, _______, _______, _______, G_FTCH, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, G_BRCH, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, NO_CHNG, _______ + _______, _______, _______, _______, _______, _______, _______, _______ ), /* System layer */ @@ -256,7 +206,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { XXXXXXX, XXXXXXX, M_MDSWP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, BL_TOGG, BL_INC, BL_BRTG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, NO_CHNG, XXXXXXX + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX ), }; diff --git a/keyboards/kc60/keymaps/noroadsleft/readme.md b/keyboards/kc60/keymaps/noroadsleft/readme.md index 59f4386ee3..8d0c6547a4 100644 --- a/keyboards/kc60/keymaps/noroadsleft/readme.md +++ b/keyboards/kc60/keymaps/noroadsleft/readme.md @@ -1,15 +1,15 @@ # @noroadsleft's KC60 keymap -### Last updated: November 5, 2019, 12:07 AM UTC-0800 +### Last updated: April 26, 2021 13:33 (-0700) -![](https://i.imgur.com/tzhXQYI.jpg) +![](https://i.imgur.com/tzhXQYIl.jpg) I am a full-time Dvorak typist, and occasional semi-serious FPS gamer. The layers are oriented towards a mix of typing and gaming. ---- -# Preface +## Preface Images in this readme follow the following format: @@ -21,18 +21,122 @@ Descriptions of the physical locations of keys will use the key's function in a ---- -# Outline +## Outline -- [Base Layers](./readme_ch1.md) +- [Base Layers](#base-layers) - Layer 0: QWERTY `_QW` - Layer 1: Hardware Dvorak `_DV` - Layer 2: Hardware Colemak `_CM` -- [Quake 2 Overlays](./readme_ch2.md) - - Layers 3, 4 and 5: Quake 2 `_Q2`, Quake 2 Dvorak `_QD`, and Quake 2 Console `_QC` -- [Function Layers](./readme_ch3.md) - - Layer 6: Fn layer `_FN` - - Layer 7: Quake 2 Fn layer `_FQ` -- [Other Layers](./readme_ch4.md) - - Layer 8: Numpad layer `_NP` - - Layer 9: Macro layer `_MA` - - Layer 10: System layer `_SY` +- [Quake 2 Layer](#quake-2-layer) + - Layer 3: Quake 2 `_Q2` +- [Function Layer](#function-layer) + - Layer 4: Fn layer `_FN` +- [Other Layers](#other-layers) + - Layer 5: Numpad layer `_NP` + - Layer 6: Macro layer `_MA` + - Layer 7: System layer `_SY` + + +---- + +## Base Layers + +### Layer 0: QWERTY - `_QW` + +Standard QWERTY layout, with four QMK features: + +- The `Menu` key has been replaced by `MO(_FW)`, which moves to my Windows Fn layer when held. +- The Right `GUI` key has been replaced with a `MO(_MA)` key, which moves to the Macro layer when held. +- The `Caps Lock` key has been replaced with a dual function `LT()` key, which opens the Windows Fn layer when held, and is `Caps Lock` when tapped +- The Left `Control` key has been replaced with a `MT(MOD_CTRL, KC_GRV)` key, which is ` ~ when tapped and `Ctrl` when held. + +![QWERTY layer](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/kc60/keymaps/noroadsleft/qwerty.png) + + +---- + +### Layer 1: Hardware Dvorak - `_DV` + +- Accessed by holding either `Fn` and tapping `/?` key, then tapping `2@`. + +A hardware-based Dvorak Simplified layout. At my weekend job, I use a shared computer that runs MacOS Sierra, in US QWERTY layout. In this layer, I can leave the system in QWERTY, plug my keyboard in, and still type in Dvorak. + +![Hardware Dvorak layer](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/kc60/keymaps/noroadsleft/dvorak.png) + + +---- + +### Layer 2: Hardware Colemak `_CM` + +- Accessed by holding either `Fn` and tapping `/?` key, then tapping `3#`. + +A hardware-based Colemak layout. Been thinking of trying it, so it's here. + +![Hardware Colemak layer](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/kc60/keymaps/noroadsleft/colemak.png) + + +---- + +## Quake 2 Layer + +### Layer 3: Quake 2 `_Q2` + +- Accessed by holding either `Fn` key and tapping the `/?` key, then tapping `4$` + +These layers were born out of the confusion I have had trying to use the in-game chat and the console in [Quake 2](https://en.wikipedia.org/wiki/Quake_II). When Quake 2 came out, alternate keyboard layouts weren't really a thing. As a result, all in-game text input is hard-locked to US QWERTY, regardless of what the operating system is using for its input method. + +I have solved this by writing a custom QMK macro. The keycode in the System layer that enables these layers, [`GO_Q2`](./keymap.c#L205), is a [macro](./keymap.c#L63-L70) that sets the default layer to the QWERTY layer, then turns the Quake 2 layer `_Q2` on. The result is a partially-overwritten QWERTY layer, that changes the dual-function Left Control/Grave key to a standard Left Control, and the Enter key into a special Enter key specific to Quake 2. + +When I hit the `Enter` key (bound in-game to text chat), the [macro keycode](./keymap.c#L71-L86) I've created sends the keycode for `Enter`, then follows with flipping an internal boolean variable and enabling the Hardware Dvorak layer. Now the game is in text chat mode, and my keyboard is in Dvorak. When I hit `Enter` again, another `Enter` key is sent, which sends the message, then the macro flips the boolean back to false and disables the Hardware Dvorak layer, which brings me back to the standard QWERTY+Quake 2 setup. Hitting `Escape` instead runs a [macro](./keymap.c#L87-L97) that cancels the sending of the message, and undoes the layers. + +![Quake 2](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/kc60/keymaps/noroadsleft/quake2.png) + + +---- + +## Function Layer + +### Layer 4: Fn layer - `_FN` + +- Accessed by holding either `Fn` key from any base layer + +Arrows, Navigation keys (Insert, Home, Page Up, etc.), and Function keys are here. Also has keys for Calculator, Menu, Volume Control, and shortcuts for Select All, Undo, Cut, Copy, and Paste. Numpad Enter for when I'm working in Adobe Photoshop, because it treats Numpad Enter differently from the regular Enter key. + +![Fn layer](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/kc60/keymaps/noroadsleft/function.png) + + +---- + +## Other Layers + +### Layer 5: Numpad layer - `_NP` + +- Accessed by holding either `Fn` key and tapping `Space`, from any of the Base Layers + +Puts a Numpad on the right-hand side of the keyboard. A through F included for hexadecimal input. Tapping `Space` returns to the previous Base Layer. + +![Numpad layer](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/kc60/keymaps/noroadsleft/numpad.png) + + +---- + +### Layer 6: Macro layer - `_MA` + +- Accessed by holding the right-side `Win` key + +Has some macros that I use in Git, and keys for use with the [Dynamic Macros feature](https://docs.qmk.fm/#/feature_dynamic_macros). + +For macro documentation, see [my userspace readme](../../../../users/noroadsleft/readme.md). + +![Macro layer](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/kc60/keymaps/noroadsleft/macros.png) + + +---- + +### Layer 7: System layer - `_SY` + +- Accessed by holding either `Fn` key and tapping the `/?` key + +This is where I change my keyboard function. Base layer select on `1` through `4`, Backlight controls on `C` through `N`, Reset on `8*`, Debug on `0)`. Hitting `Esc` exits the layer. + +![System layer](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/kc60/keymaps/noroadsleft/system.png) diff --git a/keyboards/kc60/keymaps/noroadsleft/readme_ch1.md b/keyboards/kc60/keymaps/noroadsleft/readme_ch1.md deleted file mode 100644 index 87fe99c655..0000000000 --- a/keyboards/kc60/keymaps/noroadsleft/readme_ch1.md +++ /dev/null @@ -1,48 +0,0 @@ -# @noroadsleft's KC60 keymap - -- [Table of Contents](./readme.md) - 1. **Base Layers** - 2. [Quake 2 Overlays](./readme_ch2.md) - 3. [Function Layers](./readme_ch3.md) - 4. [Other Layers](./readme_ch4.md) - - ----- - -## Layer 0: QWERTY - `_QW` - -Standard QWERTY layout, with four QMK features: - -- The `Menu` key has been replaced by `MO(_FW)`, which moves to my Windows Fn layer when held. -- The Right `GUI` key has been replaced with a `MO(_MA)` key, which moves to the Macro layer when held. -- The `Caps Lock` key has been replaced with a dual function `LT()` key, which opens the Windows Fn layer when held, and is `Caps Lock` when tapped -- The Left `Control` key has been replaced with a `MT(MOD_CTRL, KC_GRV)` key, which is ` ~ when tapped and `Ctrl` when held. - -![QWERTY layer](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/kc60/keymaps/noroadsleft/QWERTY.png) - - ----- - -## Layer 1: Hardware Dvorak - `_DV` - -### Accessed by holding either `Fn` and tapping `/?` key, then tapping `2@`. - -A hardware-based Dvorak Simplified layout. At my weekend job, I use a shared computer that runs MacOS Sierra, in US QWERTY layout. In this layer, I can leave the system in QWERTY, plug my keyboard in, and still type in Dvorak. - -![Hardware Dvorak layer](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/kc60/keymaps/noroadsleft/Dvorak.png) - - ----- - -## Layer 2: Hardware Colemak `_CM` - -### Accessed by holding either `Fn` and tapping `/?` key, then tapping `3#`. - -A hardware-based Colemak layout. Been thinking of trying it, so it's here. - -![Hardware Colemak layer](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/kc60/keymaps/noroadsleft/Colemak.png) - - ----- - -Next Chapter: [Quake 2 Overlays](./readme_ch2.md) diff --git a/keyboards/kc60/keymaps/noroadsleft/readme_ch2.md b/keyboards/kc60/keymaps/noroadsleft/readme_ch2.md deleted file mode 100644 index 427bebb9a1..0000000000 --- a/keyboards/kc60/keymaps/noroadsleft/readme_ch2.md +++ /dev/null @@ -1,36 +0,0 @@ -# @noroadsleft's KC60 keymap - -- [Table of Contents](./readme.md) - 1. [Base Layers](./readme_ch1.md) - 2. **Quake 2 Overlays** - 3. [Function Layers](./readme_ch3.md) - 4. [Other Layers](./readme_ch4.md) - - ----- - -## Layers 3, 4 and 5: Quake 2 `_Q2`, Quake 2 Dvorak `_QD`, and Quake 2 Console `_QC` - -### Accessed by holding either `Fn` key and tapping the `/?` key, then tapping `4$` - -These layers were born out of the confusion I have had trying to use the in-game chat and the console in [Quake 2](https://en.wikipedia.org/wiki/Quake_II). When Quake 2 came out, alternate keyboard layouts weren't really a thing. As a result, all in-game text input is hard-locked to US QWERTY, regardless of what the operating system is using for its input method. - -I'm attempting to solve this by some creative use of QMK's macro feature. The keycode in the System layer that enables these layers, [`GO_Q2`](./keymap.c#L387), is a [macro](./keymap.c#L101-L108) that sets the default layer to the QWERTY layer, then turns the Quake 2 layer `_Q2` on. The result is a partially-overwritten QWERTY layer, that has some keycodes with some creative layer switching. - -When I hit the `Enter` key (bound in-game to text chat), the [macro keycode](./keymap.c#L109-L115) I've created sends the keycode for `Enter`, then follows with enabling the Hardware Dvorak layer and its corresponding overlay. Now the game is in text chat mode, and my keyboard is in Dvorak. When I hit `Enter` again, another `Enter` [keycode macro](./keymap.c#L116-L122) is sent, which sends the message, then the macro brings me back to the standard QWERTY+Quake 2 setup. Hitting `Escape` instead runs a [macro](./keymap.c#L123-L129) that cancels the sending of the message, and undoes the layers. - -I have been testing this configuration for a few months. Sometimes I end up still in Dvorak mode without any text input systems (in-game chat or the console) running, but it pretty much always happens when I'm focused on the game, so I don't know the cause yet. - -### Layer 3: Quake 2 -![Quake 2](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/kc60/keymaps/noroadsleft/Quake%202.png) - -### Layer 4: Quake 2 Dvorak -![Quake 2 Dvorak](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/kc60/keymaps/noroadsleft/Quake%202%20Dvorak.png) - -### Layer 5: Quake 2 Console -![Quake 2 Console](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/kc60/keymaps/noroadsleft/Quake%202%20Console.png) - - ----- - -Next Chapter: [Function Layers](./readme_ch3.md) diff --git a/keyboards/kc60/keymaps/noroadsleft/readme_ch3.md b/keyboards/kc60/keymaps/noroadsleft/readme_ch3.md deleted file mode 100644 index 57c0bd4900..0000000000 --- a/keyboards/kc60/keymaps/noroadsleft/readme_ch3.md +++ /dev/null @@ -1,40 +0,0 @@ -# @noroadsleft's KC60 keymap - -- [Table of Contents](./readme.md) - 1. [Base Layers](./readme_ch1.md) - 2. [Quake 2 Overlays](./readme_ch2.md) - 3. **Function Layers** - 4. [Other Layers](./readme_ch4.md) - - ----- - -## Layer 6: Fn layer - `_FN` - -### Accessed by holding either `Fn` key from any base layer - -Arrows, Navigation keys (Insert, Home, Page Up, etc.), and Function keys are here. Also has keys for Calculator, Menu, Volume Control, and shortcuts for Select All, Undo, Cut, Copy, and Paste. Numpad Enter for when I'm working in Adobe Photoshop, because it treats Numpad Enter differently from the regular Enter key. - -![Windows Fn layer](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/kc60/keymaps/noroadsleft/Fn.png) - - ----- - -## Layer 7: Quake 2 Fn layer - `_FQ` - -### Accessed by holding either `Fn` key while either Quake 2 overlay is active. - -Based on the Windows function layer, but removes some functions that are pointless to have while in the game. - -![Quake 2 Fn layer](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/kc60/keymaps/noroadsleft/Quake%202%20Fn.png) - -Keycode(s) Sent | Notes -:-------------------------------- | :---- -[`Q2_GRV`](./keymap.c#L130-L137) | Sends `KC_GRV`, then enables the Dvorak, Quake 2 Dvorak, and Quake 2 Console layers. - - - - ----- - -Next Chapter: [Other Layers](./readme_ch4.md) diff --git a/keyboards/kc60/keymaps/noroadsleft/readme_ch4.md b/keyboards/kc60/keymaps/noroadsleft/readme_ch4.md deleted file mode 100644 index 97fa675a9d..0000000000 --- a/keyboards/kc60/keymaps/noroadsleft/readme_ch4.md +++ /dev/null @@ -1,110 +0,0 @@ -# @noroadsleft's KC60 keymap - -- [Table of Contents](./readme.md) - 1. [Base Layers](./readme_ch1.md) - 2. [Quake 2 Overlays](./readme_ch2.md) - 3. [Function Layers](./readme_ch3.md) - 4. **Other Layers** - - ----- - -## Layer 8: Numpad layer - `_NP` - -### Accessed by holding either `Fn` key and tapping `Space`, from any of the Base Layers - -Puts a Numpad on the right-hand side of the keyboard. A through F included for hexadecimal input. Tapping `Space` returns to the previous Base Layer. - -![Numpad layer](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/kc60/keymaps/noroadsleft/Numpad.png) - - ----- - -## Layer 9: Macro layer - `_MA` - -### Accessed by holding the right-side `Win` key - -Has some macros that I use in Git, some frequently-typed strings, and keys for use with the [Dynamic Macros feature](https://docs.qmk.fm/#/feature_dynamic_macros). - -Tapping `Esc` exits the Macro layer, if the macro used doesn't do it automatically. - -![Macro layer](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/kc60/keymaps/noroadsleft/Macro.png) - - -### Macros - -#### [G_PUSH](./keymap.c#L71-L75) - -Output: `git push origin ` - -Everything from here down is related to Git or GitHub. - -#### [G_FTCH](./keymap.c#L76-L85) - -| Condition | Output | -| :-------- | :----- | -| If Shift is active | `git pull upstream ` | -| Otherwise | `git fetch upstream ` | - -#### [G_BRCH](./keymap.c#L86-L95) - -| Condition | Output | -| :-------- | :----- | -| If Shift is active | `master` | -| Otherwise | `$(git branch-name)` | - -`$(git branch-name)` is a [git alias](./readme_git.md) that returns the name of the current branch. - -#### [SIGNA](./keymap.c#L96-L100) - -Output: `\- @noroadsleft` Enter - -Sometimes on GitHub, I sign my comments. Types my GitHub name in Markdown syntax, and then taps the `Enter` key. - -#### "Macro Mode" Macros and Customized Keycodes - -Some of my macros and keycodes do different things depending on the value of the [`macroMode` variable](./keymap.c#L65), which is toggled between `0` and `1` by the [`M_MDSWP` custom keycode](./keymap.c#L238-L242). This is mainly at attempt to make various shortcuts the same key combinations between Windows/Linux and MacOS (which I use at home and work, respectively). - -| Keycode | `macroMode == 0` | `macroMode == 1` | `macroMode == 1` with Shift | -| :------------------------------ | :--------------- | :--------------- | :--------------------------- | -| [M_SALL](./keymap.c#L138-L146) | `Ctrl+A` | `Cmd+A` | `Cmd+A` | -| [M_UNDO](./keymap.c#L147-L159) | `Ctrl+Z` | `Cmd+Z` | `Cmd+Shift+Z` | -| [M_CUT](./keymap.c#L160-L168) | `Ctrl+X` | `Cmd+X` | `Cmd+X` | -| [M_COPY](./keymap.c#L169-L177) | `Ctrl+C` | `Cmd+C` | `Cmd+C` | -| [M_PASTE](./keymap.c#L178-L190) | `Ctrl+V` | `Cmd+V` | `Cmd+Shift+Opt+V` | -| `KC_HOME` | `KC_HOME` | `Cmd+Left` | `Cmd+Left` | -| `KC_END` | `KC_END` | `Cmd+Right` | `Cmd+Right` | -| `KC_PSCR` | `KC_PSCR` | `Cmd+Shift+3` | `Cmd+Shift+3` | - -#### [Emulated Non-US Backslash](./keymap.c#L218-L232) - -Sometimes I type in languages from countries that use ISO layout, but my keyboard is ANSI, so I have one key fewer. This macro simulates the Non-US Backslash key if I use Right Alt + Z. - -#### [VRSN](./keymap.c#L233-L237) - -Outputs a string that tells me the Git commit from which my flashed firmware was built. Looks something like: - - kc60/noroadsleft @ 0.6.326-6-gae6d7b-dirty - -#### [Emulated Numeric Keypad](./keymap.c#L243-L257) - -If I hold the Right Alt key, the number row (`KC_1` through `KC_0`) will output numpad keycodes instead of number row keycodes, enabling quicker access to characters like â„¢ and °. - -#### [Emulated Extended Function Keys](./keymap.c#L258-L272) - -Similar to the emulated numpad, if I hold the Right Alt key with the Fn key, the function row (`KC_F1` through `KC_F12`) will output keycodes `KC_F13` throught `KC_F24`. - ----- - -### Layer 10: System layer - `_SY` - -#### Accessed by holding either `Fn` key and tapping the `/?` key - -This is where I change my keyboard function. Base layer select on `1` through `3`, Backlight controls on `C` through `N`, Reset on `8*`, Debug on `0)`. - -![System layer](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/kc60/keymaps/noroadsleft/System.png) - - ----- - -[Back to the index.](./) diff --git a/keyboards/kc60/keymaps/noroadsleft/readme_git.md b/keyboards/kc60/keymaps/noroadsleft/readme_git.md deleted file mode 100644 index a8564703fc..0000000000 --- a/keyboards/kc60/keymaps/noroadsleft/readme_git.md +++ /dev/null @@ -1,79 +0,0 @@ -# @noroadsleft's Git aliases - -[Return to the directory index.](./) - -``` -[alias] - # Change branches - co = checkout - cob = checkout -b - - # Cherry Pick - cp = cherry-pick - - # Check out a Pull Request locally - # e.g. `git cop 351` fetches the commits from Pull Request #351 and saves it to local branch 'pr/351'. - cop = "!f() { git fetch upstream pull/$1/head:pr/$1; git checkout pr/$1; }; f" - - # Sync master branch - sync = !git checkout master && git fetch upstream 2> /dev/null && git pull -n upstream master && git push origin master - - # Return the abbreviated SHA-1 of the last three commits, oldest to newest - rl = rev-list -n 3 --abbrev-commit --reverse HEAD - - # Add remote repo (for sending PRs to other forks, or checking out someone else's developments) - ar = "!f() { git remote add $1 https://github.com/$2/qmk_firmware.git; }; f" - - # Return the last five commits on the branch, in a more compact format - hist = log --pretty=format:\"%C(yellow)%h%Creset %Cgreen%ad%Creset %Cblue[%an%Cgreen% GK%Cblue]%C(yellow)%d%Creset%n %w(100,0,2)%s%n\" --graph --date=iso-local -n 5 - histt = log --pretty=format:\"* %C(yellow)%h%Creset %<(58,trunc)%s %Cblue%>(18,trunc)%an%Cgreen% G?%Creset @ %Cgreen%ad%Creset\" --date=iso-local -n 5 - histb = log --reverse --pretty=format:\"- %Cblue%>(20,trunc)%an %Creset%<(97,trunc)%s\" --date=iso-local -n 5 - - # Follow a file's filename history - follow = log --follow --name-only --pretty=format:\"%C(yellow)commit %H%Creset%d\nAuthor: %an <%ae>\nDate: %ad%n%n %s%n\" --date=iso-local - - # compact diff - df = "diff --compact-summary" - - # List all the files changed in a commit - dt = "diff-tree --no-commit-id --name-only -r" - - # Short-form status - st = "!git status --short --untracked-files=no" - stu = "!git ls-files --others -x '*/*'" - - # Returns the name of the current branch - branch-name = "!git rev-parse --abbrev-ref HEAD" - bn = "!git branch-name" # short-form of the above - # List branches by the date of their last commit, newest to oldest - bbd = "for-each-ref --count=30 --sort=-committerdate refs/heads/ --format='\e[33m%(objectname)\e[0m %(objecttype) \e[32m%(refname:short)\e[0m (%(authordate))'" - - # Compare commit counts between current branch and QMK master - # e.g. `git cc dev_branch upstream/master` returns how many commits are on `dev_branch` and not on `upstream/master`, and vice versa. - cc = "!f() { git fetch upstream; echo \"\e[0;32m$(git branch-name)\e[0m vs. \e[0;31m$2\e[0m\"; git rev-list --left-right --count $1...$2; }; f" - - # Push to origin repo - po = "push origin $(git branch-name)" - - # List the stashes - sl = "stash list" - - # Unstage a file - unstage = "reset HEAD" - - # Restore a file to the state it was in when checked out - restore = "checkout --" - - # Compare local master repo to its upstream branch. If anything is returned, local branch has diverged from upstream. - cm = "!f() { git fetch upstream master; git diff $(git branch-name) upstream/master --compact-summary; }; f" - cml = "!f() { git fetch upstream master; git diff $(git branch-name) upstream/master; }; f" - - # Delete a branch from local and remote - del-branch = "!f() { git branch -d $1; git push origin :$1; git fetch -p origin; }; f" - - # Rebase with signatures - rbv = rebase --exec 'git commit --amend --no-edit -n -S' -i - - # Force push without overwriting established history - pushf = push --force-with-lease -``` diff --git a/users/noroadsleft/noroadsleft.c b/users/noroadsleft/noroadsleft.c index 6fb223f9ec..ac63427256 100644 --- a/users/noroadsleft/noroadsleft.c +++ b/users/noroadsleft/noroadsleft.c @@ -1,4 +1,4 @@ -/* Copyright 2020 James Young (@noroadsleft) +/* Copyright 2020-2021 James Young (@noroadsleft) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -32,7 +32,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case VRSN: if (record->event.pressed) { - SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); + SEND_STRING(QMK_KEYBOARD ":" QMK_KEYMAP " @ " QMK_VERSION); } return false; case G_PUSH: @@ -118,6 +118,21 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { macroMode ^= 1; } return false; + case KC_Z: + if (record->event.pressed) { + if ( get_mods() & MOD_MASK_RALT ) { + register_code(KC_NUBS); + } else { + register_code(KC_Z); + } + } else { + if ( get_mods() & MOD_MASK_RALT ) { + unregister_code(KC_NUBS); + } else { + unregister_code(KC_Z); + } + }; + return false; case KC_1 ... KC_0: if (record->event.pressed) { if (get_mods() & MOD_MASK_RALT) { @@ -148,6 +163,33 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } } return false; + case KC_PSCR: + if (record->event.pressed) { + if ( macroMode == 1 ) { + tap_code16(G(S(KC_3))); + } else { + tap_code(KC_PSCR); + } + } + return false; + case KC_HOME: + if (record->event.pressed) { + if ( macroMode == 1 ) { + tap_code16(G(KC_LEFT)); + } else { + tap_code(KC_HOME); + } + } + return false; + case KC_END: + if (record->event.pressed) { + if ( macroMode == 1 ) { + tap_code16(G(KC_RGHT)); + } else { + tap_code(KC_END); + } + } + return false; } // switch() return true; }; diff --git a/users/noroadsleft/noroadsleft.h b/users/noroadsleft/noroadsleft.h index 2d597219f5..52bcec0abd 100644 --- a/users/noroadsleft/noroadsleft.h +++ b/users/noroadsleft/noroadsleft.h @@ -1,4 +1,4 @@ -/* Copyright 2020 James Young (@noroadsleft) +/* Copyright 2020-2021 James Young (@noroadsleft) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/users/noroadsleft/readme.md b/users/noroadsleft/readme.md index f018a42271..6a454b7c74 100644 --- a/users/noroadsleft/readme.md +++ b/users/noroadsleft/readme.md @@ -2,29 +2,62 @@ This directory holds the code that's the same for every keyboard I use in QMK, which is currently: -| Status | Keyboard | -| :----------------- | :------- | -| :heavy_check_mark: | `kc60` -| :heavy_check_mark: | `kbdfans/kbd75/rev1` +- `kc60` +- `kbdfans/kbd75/rev1` +- `coseyfannitutti/discipline` -## Features -### Emulated Non-US Backslash +## Macro Features and Custom Keycodes -Sends `KC_NUBS` when the Z key is tapped while the Right Alt key is being held. +### [VRSN](./noroadsleft.c#L33-L37) -### Emulated Numeric Keypad +Outputs a string that tells me the Git commit from which my flashed firmware was built. Looks something like: -Turns number row keycodes into their numeric keypad equivalents while the Right Alt key is being held. + kc60:noroadsleft @ 0.6.326-6-gae6d7b-dirty -### Emulated F13-F24 +### Git Macros -Turns F1-F12 into F13-F24 while the Right Alt key is being held. +Some frequently used Git commands. + +| Keycode | Output | Output with Shift | +| :---------------------------------- | :--------------------- | :--------------------------- | +| [`G_PUSH`](./noroadsleft.c#L38-L42) | `git push origin ` | `git push origin ` | +| [`G_FTCH`](./noroadsleft.c#L43-L52) | `git fetch upstream ` | `git pull upstream ` | +| [`G_BRCH`](./noroadsleft.c#L53-L62) | `master` | `$(git branch-name)` | + +`$(git branch-name)` is an alias for `git rev-parse --abbrev-ref HEAD`, which normally return the name of the current branch. + +### "Macro Mode" Macros and Customized Keycodes + +Some of my macros and keycodes do different things depending on the value of the [`macroMode` variable](./noroadsleft.c#L23), which is [toggled between `0` and `1`](./noroadsleft.c#L116-L120) by the `M_MDSWP` custom keycode.[1](#footnotes) This is mainly at attempt to make various shortcuts use the same physical key combinations between Windows/Linux and MacOS (which I use at home and work, respectively). + +| Keycode | `macroMode == 0` | `macroMode == 1` | `macroMode == 1` with Shift | +| :------------------------------------- | :--------------- | :--------------- | :------------------------------------- | +| [`M_SALL`](./noroadsleft.c#L63-L71) | `Ctrl+A` | `Cmd+A` | `Cmd+A` | +| [`M_UNDO`](./noroadsleft.c#L72-L84) | `Ctrl+Z` | `Cmd+Z` | `Cmd+Shift+Z` | +| [`M_CUT`](./noroadsleft.c#L85-L93) | `Ctrl+X` | `Cmd+X` | `Cmd+X` | +| [`M_COPY`](./noroadsleft.c#L94-L102) | `Ctrl+C` | `Cmd+C` | `Cmd+C` | +| [`M_PASTE`](./noroadsleft.c#L103-L115) | `Ctrl+V` | `Cmd+V` | `Cmd+Shift+Opt+V` | +| [`KC_PSCR`](./noroadsleft.c#L166-L174) | `KC_PSCR` | `Cmd+Shift+3` | `Cmd+Shift+3` | +| [`KC_HOME`](./noroadsleft.c#L175-L183) | `KC_HOME` | `Cmd+Left` | `Cmd+Left` | +| [`KC_END`](./noroadsleft.c#L184-L192) | `KC_END` | `Cmd+Right` | `Cmd+Right` | + +### [Emulated Non-US Backslash](./noroadsleft.c#L121-L135) + +Sometimes I type in languages from countries that use ISO layout, but my keyboard is ANSI, so I have one key fewer. This macro simulates the Non-US Backslash key if I use Right Alt + `KC_Z`. + +### [Emulated Numeric Keypad](./noroadsleft.c#L136-L150) + +If I hold the Right Alt key, the number row (`KC_1` through `KC_0`) will output numpad keycodes instead of number row keycodes, enabling quicker access to characters like â„¢ and °. + +### [Emulated Extended Function Keys](./noroadsleft.c#L151-L165) + +Similar to the emulated numpad, if I hold the Right Alt key with the Fn key, the function row (`KC_F1` through `KC_F12`) will output keycodes `KC_F13` throught `KC_F24`. ## License -Copyright 2020 noroadsleft +Copyright 2020-2021 James Young (@noroadsleft) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -38,3 +71,11 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . + + +## Footnotes + +- 1: [^](#macro-mode-macros-and-customized-keycodes) The `M_MDSWP` keycode is used in my keymaps in the following locations: + - [KC60](../../keyboards/kc60/keymaps/noroadsleft/keymap.c#L206) + - [KBDfans KBD75 rev1](../../keyboards/kbdfans/kbd75/keymaps/noroadsleft/keymap.c#L102) + - [CoseyFannitutti Discipline](../../keyboards/coseyfannitutti/discipline/keymaps/noroadsleft/keymap.c#L67) From b95231c1e3bdc2bb617112f87d8dc6026d0d3ee8 Mon Sep 17 00:00:00 2001 From: Ryan Mitchell Date: Tue, 27 Apr 2021 12:23:41 -0500 Subject: [PATCH 292/613] GMMK Pro: add RESET binding, fix layout macro bug (#12684) * add RESET binding, fix layout mod key bug (fixes #12683) * remove underscore #define and use core's instead --- keyboards/gmmk/pro/keymaps/default/keymap.c | 21 +++++++++++++++++++-- keyboards/gmmk/pro/pro.h | 2 +- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/keyboards/gmmk/pro/keymaps/default/keymap.c b/keyboards/gmmk/pro/keymaps/default/keymap.c index 38e9a35665..9e5796ac18 100644 --- a/keyboards/gmmk/pro/keymaps/default/keymap.c +++ b/keyboards/gmmk/pro/keymaps/default/keymap.c @@ -26,14 +26,31 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right + // The FN key by default maps to a momentary toggle to layer 1 to provide access to the RESET key (to put the board into bootloader mode). Without + // this mapping, you have to open the case to hit the button on the bottom of the PCB (near the USB cable attachment) while plugging in the USB + // cable to get the board into bootloader mode - definitely not fun when you're working on your QMK builds. Remove this and put it back to KC_RGUI + // if that's your preference. + // + // To put the keyboard in bootloader mode, use FN+backslash. If you accidentally put it into bootloader, you can just unplug the USB cable and + // it'll be back to normal when you plug it back in. [0] = LAYOUT( KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_MUTE, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ) + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + }; diff --git a/keyboards/gmmk/pro/pro.h b/keyboards/gmmk/pro/pro.h index cea259065d..ddce60241b 100644 --- a/keyboards/gmmk/pro/pro.h +++ b/keyboards/gmmk/pro/pro.h @@ -33,7 +33,7 @@ along with this program. If not, see . k11, k10, k20, k30, k40, k41, k51, k50, k60, k70, k80, k81, k61, ka2, k15, \ k21, k12, k22, k32, k42, k43, k53, k52, k62, k72, k82, k83, ka4, k25, \ k00, k14, k24, k34, k44, k45, k55, k54, k64, k74, k85, k91, k35, k75, \ - k06, k90, k93, k94, k92, k95, k04, k03, k73, k05 \ + k06, k90, k93, k94, k95, k92, k04, k03, k73, k05 \ ) \ { \ { k00, k01, ___, k03, k04, k05, k06, k07}, \ From 3fe356e65c65f725e94f3ad32fd65cc24befb531 Mon Sep 17 00:00:00 2001 From: Mango The Fourth <40720523+MangoIV@users.noreply.github.com> Date: Tue, 27 Apr 2021 19:41:11 +0200 Subject: [PATCH 293/613] Add Draculad keyboard (#12604) Co-authored-by: Drashna Jaelre Co-authored-by: Ryan Co-authored-by: Erovia Co-authored-by: mangoiv --- keyboards/draculad/config.h | 67 ++++ keyboards/draculad/draculad.c | 18 + keyboards/draculad/draculad.h | 39 +++ keyboards/draculad/keymaps/default/keymap.c | 220 ++++++++++++ keyboards/draculad/keymaps/pimoroni/config.h | 25 ++ keyboards/draculad/keymaps/pimoroni/keymap.c | 318 ++++++++++++++++++ .../keymaps/pimoroni/pimoroni_trackball.c | 177 ++++++++++ .../keymaps/pimoroni/pimoroni_trackball.h | 35 ++ keyboards/draculad/keymaps/pimoroni/rules.mk | 6 + keyboards/draculad/readme.md | 33 ++ keyboards/draculad/rules.mk | 27 ++ 11 files changed, 965 insertions(+) create mode 100644 keyboards/draculad/config.h create mode 100644 keyboards/draculad/draculad.c create mode 100644 keyboards/draculad/draculad.h create mode 100644 keyboards/draculad/keymaps/default/keymap.c create mode 100644 keyboards/draculad/keymaps/pimoroni/config.h create mode 100644 keyboards/draculad/keymaps/pimoroni/keymap.c create mode 100644 keyboards/draculad/keymaps/pimoroni/pimoroni_trackball.c create mode 100644 keyboards/draculad/keymaps/pimoroni/pimoroni_trackball.h create mode 100644 keyboards/draculad/keymaps/pimoroni/rules.mk create mode 100644 keyboards/draculad/readme.md create mode 100644 keyboards/draculad/rules.mk diff --git a/keyboards/draculad/config.h b/keyboards/draculad/config.h new file mode 100644 index 0000000000..8a27fdea4d --- /dev/null +++ b/keyboards/draculad/config.h @@ -0,0 +1,67 @@ +/* +Copyright 2021 @mangoiv + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x1B1E +#define DEVICE_VER 0x0001 +#define MANUFACTURER mangoiv +#define PRODUCT draculad + +#define MATRIX_ROWS 8 +#define MATRIX_COLS 5 + +#define MATRIX_ROW_PINS {D4, C6, D7, E6} +#define MATRIX_COL_PINS {F4, F5,F6, F7, B1} + +#define DIODE_DIRECTION COL2ROW + +#define DEBOUNCE 5 + + +#define USE_SERIAL +#define SOFT_SERIAL_PIN D2 + +#ifdef OLED_DRIVER_ENABLE + #define OLED_DISPLAY_128X64 + #define OLED_TIMEOUT 30000 +#endif + +#define RGB_DI_PIN D3 +#ifdef RGB_DI_PIN +#define RGBLIGHT_EFFECT_RAINBOW_SWIRL +#define RGBLIGHT_EFFECT_RAINBOW_MOOD +#define RGBLIGHT_EFFECT_STATIC_GRADIENT +#define RGBLIGHT_EFFECT_BREATHING +#define RGBLED_NUM 10 +#define RGBLIGHT_SPLIT +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 +#define RGBLIGHT_SLEEP +#endif + +#define ENCODERS_PAD_A {B2 , B4} +#define ENCODERS_PAD_B {B6 , B5} + +#define ENCODER_RESOLUTIONS { 4, 4, 4, 1} +#define UNUSED_PINS + +#define EE_HANDS diff --git a/keyboards/draculad/draculad.c b/keyboards/draculad/draculad.c new file mode 100644 index 0000000000..04a83ef2e3 --- /dev/null +++ b/keyboards/draculad/draculad.c @@ -0,0 +1,18 @@ +/* +Copyright 2021 @mangoiv + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "draculad.h" \ No newline at end of file diff --git a/keyboards/draculad/draculad.h b/keyboards/draculad/draculad.h new file mode 100644 index 0000000000..47d4b21435 --- /dev/null +++ b/keyboards/draculad/draculad.h @@ -0,0 +1,39 @@ +/* +Copyright 2021 @mangoiv + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + +#define LAYOUT( \ + L00, L01, L02, L03, L04, R00, R01, R02, R03, R04, \ + L10, L11, L12, L13, L14, R10, R11, R12, R13, R14, \ + L20, L21, L22, L23, L24, R20, R21, R22, R23, R24, \ + L30, L31, L32, L33, R30, R31, R32, R33 \ + ) \ + { \ + { L00, L01, L02, L03, L04 }, \ + { L10, L11, L12, L13, L14 }, \ + { L20, L21, L22, L23, L24 }, \ + { XXX, L30, L31, L32, L33 }, \ + { R04, R03, R02, R01, R00 }, \ + { R14, R13, R12, R11, R10 }, \ + { R24, R23, R22, R21, R20 }, \ + { XXX, R33, R32, R31, R30 } \ + } diff --git a/keyboards/draculad/keymaps/default/keymap.c b/keyboards/draculad/keymaps/default/keymap.c new file mode 100644 index 0000000000..b24cca9327 --- /dev/null +++ b/keyboards/draculad/keymaps/default/keymap.c @@ -0,0 +1,220 @@ +/* +Copyright 2021 @mangoiv + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + + +enum layer_number { + _BASE, + _NUM, + _SYMB, + _MUS, + _ADJ +}; + + +char wpm_as_str[8]; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT( + 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, + LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), + KC_MUTE, KC_LCTL, LALT_T(KC_BSPC), LT(_MUS, KC_SPC), LT(_NUM,KC_DEL), LT(_SYMB, KC_ENT), KC_CAPS, TG(_ADJ) + ), + [_NUM] = LAYOUT( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_TAB, XXXXXXX, KC_VOLD, KC_VOLU, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP , KC_RIGHT , KC_QUOT, + KC_LSFT, XXXXXXX, XXXXXXX, KC_MUTE, RESET, KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_RSFT, + XXXXXXX, XXXXXXX, KC_LALT, XXXXXXX, _______, KC_ENT, KC_NO, KC_NO + ), + [_SYMB] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, XXXXXXX, XXXXXXX, KC_EQL, KC_MINS, + XXXXXXX, KC_F5, KC_F6, KC_F7, KC_F8, KC_LBRC, KC_RBRC, XXXXXXX , KC_GRV , KC_BSLS, + KC_LSFT, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_RSFT, + XXXXXXX, KC_LALT, XXXXXXX, XXXXXXX, XXXXXXX, _______, KC_NO, KC_NO + ), + [_MUS] = LAYOUT( + KC_LCTL, XXXXXXX, XXXXXXX, XXXXXXX,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + KC_LALT, KC_BTN3, KC_BTN2, KC_BTN1 , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX , XXXXXXX , XXXXXXX, + KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + ), + [_ADJ] = LAYOUT( + RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + EEP_RST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_MOD, RGB_HUI, RGB_SAI , RGB_VAI , RGB_TOG, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______ + ) +}; + +#ifdef OLED_DRIVER_ENABLE + + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + + if (is_keyboard_master()) { + if(is_keyboard_left()){ + return OLED_ROTATION_270; + } + else { + return OLED_ROTATION_90; + } + } else { + return OLED_ROTATION_0; + } +} +static void render_logo(void) { + static const char PROGMEM drac_logo[] = { + // drac_logo, 128x64px + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x0c, 0x18, 0x78, 0xf0, 0xf0, 0xe0, 0xe0, 0xc0, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0xff, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x07, 0x3e, 0xfc, 0xf0, 0x00, 0x00, 0x00, + 0xf0, 0xf0, 0x60, 0x30, 0x30, 0x30, 0x00, 0x00, 0xe0, 0xe0, 0x30, 0x30, 0x30, 0x30, 0x30, 0xe0, + 0xe0, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0x70, 0x30, 0x30, 0x30, 0x70, 0xe0, 0xc0, 0x00, 0x00, + 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, + 0x80, 0x00, 0x00, 0x00, 0x80, 0xe0, 0xf8, 0xf0, 0x80, 0xc0, 0xe0, 0xf0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x3f, 0xff, 0xff, + 0xff, 0xff, 0xfe, 0xfc, 0xf8, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0xff, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, 0xe0, 0x7c, 0x3f, 0x0f, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xf8, 0xcc, 0x8c, 0x84, 0x86, 0x86, 0xc6, 0xff, + 0xff, 0x80, 0x80, 0x00, 0x3f, 0x7f, 0xe0, 0xc0, 0x80, 0x80, 0x80, 0xc0, 0xf0, 0x71, 0x00, 0x00, + 0x1f, 0xff, 0xff, 0x80, 0x80, 0x80, 0x80, 0xc0, 0xf8, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0x03, 0x03, 0x07, 0x0f, 0x0f, 0x0f, 0x1f, + 0x7f, 0x7f, 0x3e, 0x3e, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xf8, 0xf8, 0xfc, + 0xfc, 0xfe, 0xfe, 0x7e, 0x7c, 0x78, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfe, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0x60, 0x60, + 0x60, 0x60, 0x60, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xe0, 0x60, 0x60, 0x60, 0xc0, + 0xc0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, + 0x0f, 0x3e, 0x7c, 0xfc, 0xf8, 0xf8, 0xf8, 0xf8, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf8, + 0xf8, 0xf8, 0xfc, 0xfc, 0xfc, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x7f, 0x3f, 0x1f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xf1, 0x99, 0x18, 0x08, + 0x0c, 0x0c, 0x8c, 0xff, 0xff, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xc1, 0x80, 0x00, 0x00, 0x00, 0x80, + 0xc3, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x0f, 0x0f, 0x0f, 0x1f, 0x1f, 0x1f, 0x1f, + 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x0f, 0x0f, 0x07, 0x07, 0x03, 0x03, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x01, 0x01, 0x03, 0x03, 0x03, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x01, + 0x01, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + oled_write_raw_P(drac_logo, sizeof(drac_logo)); +} + +static void render_status(void) { + oled_write_P(PSTR("This is\n~~~~~~~~~\nDracu\nLad\n~~~~~~~~~\nv1.0\n~~~~~~~~~\n"), false); + sprintf(wpm_as_str, "WPM %03d", get_current_wpm()); + oled_write(wpm_as_str,false); + led_t led_state = host_keyboard_led_state(); + oled_write_P(PSTR("\nCaps: "), false); + oled_write_P(led_state.caps_lock ? PSTR("on ") : PSTR("off"), false); + oled_write_P(PSTR("\n"),false); + switch (get_highest_layer(layer_state)) { + case _BASE: + oled_write_P(PSTR("Base "), false); + break; + case _NUM: + oled_write_P(PSTR("Numbers"), false); + break; + case _SYMB: + oled_write_P(PSTR("Symbols"), false); + break; + case _ADJ: + oled_write_P(PSTR("Adjust "), false); + break; + case _MUS: + oled_write_P(PSTR("Mouse "), false); + break; + default: + oled_write_P(PSTR("Unkn "), false); + break; + } +} + +void oled_task_user(void) { + if (is_keyboard_master()) { + render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc) + } else { + render_logo(); + } +} + +#endif + +#ifdef ENCODER_ENABLE +void encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + // Volume control + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } + else if (index == 2) { + if(clockwise) { + tap_code(KC_PGUP); + } + else{ + tap_code(KC_PGDN); + } + } + else if (index == 3 ) { + // Page up/Page down + if (clockwise) { + tap_code(KC_WH_U); + } else { + tap_code(KC_WH_D); + } + } + +} +#endif diff --git a/keyboards/draculad/keymaps/pimoroni/config.h b/keyboards/draculad/keymaps/pimoroni/config.h new file mode 100644 index 0000000000..c5f9df6f99 --- /dev/null +++ b/keyboards/draculad/keymaps/pimoroni/config.h @@ -0,0 +1,25 @@ +/* +Copyright 2021 @mangoiv + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +//comment that out if your trackball is on the left side +#define TRACKBALL_RIGHT + +#ifdef TRACKBALL_RIGHT + #define PIMORONI_TRACKBALL_INVERT_X + #define PIMORONI_TRACKBALL_INVERT_Y +#endif + diff --git a/keyboards/draculad/keymaps/pimoroni/keymap.c b/keyboards/draculad/keymaps/pimoroni/keymap.c new file mode 100644 index 0000000000..d3a8e1f79f --- /dev/null +++ b/keyboards/draculad/keymaps/pimoroni/keymap.c @@ -0,0 +1,318 @@ +/* +Copyright 2021 @mangoiv + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H +#include "pimoroni_trackball.h" +#include "pointing_device.h" + + +enum layer_number { + _BASE, + _NUM, + _SYMB, + _MUS, + _ADJ +}; + +enum custom_keycodes { + BALL_HUI,//cycles hue + BALL_WHT,//cycles white + BALL_DEC,//decreased color + BALL_SCR,//scrolls + BALL_NCL,//left click + BALL_RCL,//right click + BALL_MCL,//middle click +}; + + +char wpm_as_str[8]; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT( + 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, + LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), + KC_MUTE, KC_LCTL, LALT_T(KC_BSPC), LT(_MUS, KC_SPC), KC_NO, LT(_NUM,KC_ENT), LT(_SYMB, KC_DEL), TG(_ADJ) + ), + [_NUM] = LAYOUT( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_TAB, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP , KC_RIGHT , KC_QUOT, + KC_LSFT, XXXXXXX, KC_MPRV, KC_MNXT, RESET, KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_RSFT, + XXXXXXX, KC_LCTL, KC_LALT, XXXXXXX, KC_NO, _______, KC_ENT, KC_NO + ), + [_SYMB] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, XXXXXXX, XXXXXXX, KC_EQL, KC_MINS, + XXXXXXX, KC_F5, KC_F6, KC_F7, KC_F8, KC_LBRC, KC_RBRC, XXXXXXX , KC_GRV , KC_BSLS, + KC_LSFT, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_RSFT, + XXXXXXX, KC_LALT, XXXXXXX, XXXXXXX, XXXXXXX, KC_NO, _______, KC_NO + ), + [_MUS] = LAYOUT( + KC_LCTL, XXXXXXX, XXXXXXX, XXXXXXX,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + KC_LALT, KC_BTN3, KC_BTN2, KC_BTN1 , BALL_SCR, XXXXXXX, XXXXXXX, XXXXXXX , XXXXXXX , XXXXXXX, + KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + ), + [_ADJ] = LAYOUT( + RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BALL_HUI, BALL_WHT, BALL_DEC, XXXXXXX, XXXXXXX, + EEP_RST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_MOD, RGB_HUI, RGB_SAI , RGB_VAI , RGB_TOG, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______ + ) +}; + + +#ifdef OLED_DRIVER_ENABLE + + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + + if (is_keyboard_master()) { + if(is_keyboard_left()){ + return OLED_ROTATION_270; + } + else { + return OLED_ROTATION_90; + } + } else { + return OLED_ROTATION_0; + } +} +static void render_logo(void) { + static const char PROGMEM drac_logo[] = { + // drac_logo, 128x64px + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x0c, 0x18, 0x78, 0xf0, 0xf0, 0xe0, 0xe0, 0xc0, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0xff, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x07, 0x3e, 0xfc, 0xf0, 0x00, 0x00, 0x00, + 0xf0, 0xf0, 0x60, 0x30, 0x30, 0x30, 0x00, 0x00, 0xe0, 0xe0, 0x30, 0x30, 0x30, 0x30, 0x30, 0xe0, + 0xe0, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0x70, 0x30, 0x30, 0x30, 0x70, 0xe0, 0xc0, 0x00, 0x00, + 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, + 0x80, 0x00, 0x00, 0x00, 0x80, 0xe0, 0xf8, 0xf0, 0x80, 0xc0, 0xe0, 0xf0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x3f, 0xff, 0xff, + 0xff, 0xff, 0xfe, 0xfc, 0xf8, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0xff, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, 0xe0, 0x7c, 0x3f, 0x0f, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xf8, 0xcc, 0x8c, 0x84, 0x86, 0x86, 0xc6, 0xff, + 0xff, 0x80, 0x80, 0x00, 0x3f, 0x7f, 0xe0, 0xc0, 0x80, 0x80, 0x80, 0xc0, 0xf0, 0x71, 0x00, 0x00, + 0x1f, 0xff, 0xff, 0x80, 0x80, 0x80, 0x80, 0xc0, 0xf8, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0x03, 0x03, 0x07, 0x0f, 0x0f, 0x0f, 0x1f, + 0x7f, 0x7f, 0x3e, 0x3e, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xf8, 0xf8, 0xfc, + 0xfc, 0xfe, 0xfe, 0x7e, 0x7c, 0x78, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfe, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0x60, 0x60, + 0x60, 0x60, 0x60, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xe0, 0x60, 0x60, 0x60, 0xc0, + 0xc0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, + 0x0f, 0x3e, 0x7c, 0xfc, 0xf8, 0xf8, 0xf8, 0xf8, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf8, + 0xf8, 0xf8, 0xfc, 0xfc, 0xfc, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x7f, 0x3f, 0x1f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xf1, 0x99, 0x18, 0x08, + 0x0c, 0x0c, 0x8c, 0xff, 0xff, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xc1, 0x80, 0x00, 0x00, 0x00, 0x80, + 0xc3, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x0f, 0x0f, 0x0f, 0x1f, 0x1f, 0x1f, 0x1f, + 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x0f, 0x0f, 0x07, 0x07, 0x03, 0x03, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x01, 0x01, 0x03, 0x03, 0x03, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x01, + 0x01, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + oled_write_raw_P(drac_logo, sizeof(drac_logo)); +} + +static void render_status(void) { + oled_write_P(PSTR("This is\n~~~~~~~~~\nDracu\nLad\n~~~~~~~~~\nv1.0\n~~~~~~~~~\n"), false); + sprintf(wpm_as_str, "WPM %03d", get_current_wpm()); + oled_write(wpm_as_str,false); + led_t led_state = host_keyboard_led_state(); + oled_write_P(PSTR("\nCaps: "), false); + oled_write_P(led_state.caps_lock ? PSTR("on ") : PSTR("off"), false); + oled_write_P(PSTR("\n"),false); + switch (get_highest_layer(layer_state)) { + case _BASE: + oled_write_P(PSTR("Base "), false); + break; + case _NUM: + oled_write_P(PSTR("Numbers"), false); + break; + case _SYMB: + oled_write_P(PSTR("Symbols"), false); + break; + case _ADJ: + oled_write_P(PSTR("Adjust "), false); + break; + case _MUS: + oled_write_P(PSTR("Mouse "), false); + break; + default: + oled_write_P(PSTR("Unkn "), false); + break; + } +} + +void oled_task_user(void) { + if (is_keyboard_master()) { + render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc) + } else { + render_logo(); + } +} + +#endif + +uint8_t white = 0; +uint8_t red = 255; +uint8_t green = 0; +uint8_t blue = 0; + +void ball_increase_hue(void){ + if(red!=255&&green!=255&&blue!=255){ + red =255; + } + if (red==255&&green<255&&blue==0){ + green += 15; + } else if(green==255&&blue==0&&red>0){ + red-=15; + } else if(red==0&&blue<255&&green==255){ + blue+=15; + } else if(blue==255&&green>0&&red==0){ + green -= 15; + } else if(green == 0&&blue==255&&red<255){ + red +=15; + } else if(green ==0&&blue>0&&red==255){ + blue -=15; + } + trackball_set_rgbw(red,green,blue,white); +} + +void decrease_color(void){ + if (green>0){ + green-=15; + } + if (red>0){ + red-=15; + } + if (blue>0){ + blue-=15; + } + trackball_set_rgbw(red,green,blue,white); +} + +void cycle_white(void){ + if (white<255){ + white +=15; + } else{ + white=0; + } + trackball_set_rgbw(red,green,blue,white); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record){ + switch (keycode){ + case BALL_HUI: + if(record->event.pressed){ + ball_increase_hue(); + } + break; + + case BALL_WHT: + if(record-> event.pressed){ + cycle_white(); + } + break; + + case BALL_DEC: + if(record-> event.pressed){ + decrease_color(); + } + break; + + case BALL_SCR: + if(record->event.pressed){ + trackball_set_scrolling(true); + } else{ + trackball_set_scrolling(false); + } + break; + + case BALL_NCL: + record->event.pressed?register_code(KC_BTN1):unregister_code(KC_BTN1); + break; + case BALL_RCL: + record->event.pressed?register_code(KC_BTN2):unregister_code(KC_BTN2); + break; + case BALL_MCL: + record->event.pressed?register_code(KC_BTN3):unregister_code(KC_BTN3); + break; + } + return true; +} +#ifdef ENCODER_ENABLE +void encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + // Volume control + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } + else if (index == 2) { + switch (get_highest_layer(layer_state)) { + case _ADJ: + clockwise?ball_increase_hue():cycle_white(); + break; + case _MUS: + clockwise?tap_code(KC_WH_U):tap_code(KC_WH_D); + break; + default: + clockwise?tap_code(KC_PGUP):tap_code(KC_PGDN); + break; + } + } + // I only have 2 encoders on the the pimoroni example board, just add else ifs for your other encoders... + // the missing ones are encoder 1 on the right side and encoder 3 on the left side +} +#endif diff --git a/keyboards/draculad/keymaps/pimoroni/pimoroni_trackball.c b/keyboards/draculad/keymaps/pimoroni/pimoroni_trackball.c new file mode 100644 index 0000000000..c4f4a0441a --- /dev/null +++ b/keyboards/draculad/keymaps/pimoroni/pimoroni_trackball.c @@ -0,0 +1,177 @@ +/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "pimoroni_trackball.h" +#include "i2c_master.h" + +static uint8_t scrolling = 0; +static int16_t x_offset = 0; +static int16_t y_offset = 0; +static int16_t h_offset = 0; +static int16_t v_offset = 0; +static float precisionSpeed = 1; + +static uint16_t i2c_timeout_timer; + +#ifndef I2C_TIMEOUT +# define I2C_TIMEOUT 100 +#endif +#ifndef I2C_WAITCHECK +# define I2C_WAITCHECK 1000 +#endif +#ifndef MOUSE_DEBOUNCE +# define MOUSE_DEBOUNCE 5 +#endif + +void trackball_set_rgbw(uint8_t red, uint8_t green, uint8_t blue, uint8_t white) { + uint8_t data[] = {0x00, red, green, blue, white}; + i2c_transmit(TRACKBALL_WRITE, data, sizeof(data), I2C_TIMEOUT); +} + +int16_t mouse_offset(uint8_t positive, uint8_t negative, int16_t scale) { + int16_t offset = (int16_t)positive - (int16_t)negative; + int16_t magnitude = (int16_t)(scale * offset * offset * precisionSpeed); + return offset < 0 ? -magnitude : magnitude; +} + +void update_member(int8_t* member, int16_t* offset) { + if (*offset > 127) { + *member = 127; + *offset -= 127; + } else if (*offset < -127) { + *member = -127; + *offset += 127; + } else { + *member = *offset; + *offset = 0; + } +} + +__attribute__((weak)) void trackball_check_click(bool pressed, report_mouse_t* mouse) { + if (pressed) { + mouse->buttons |= MOUSE_BTN1; + } else { + mouse->buttons &= ~MOUSE_BTN1; + } +} + +bool process_record_kb(uint16_t keycode, keyrecord_t* record) { + if (true) { + xprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed); + } + + + if (!process_record_user(keycode, record)) { return false; } + +/* If Mousekeys is disabled, then use handle the mouse button + * keycodes. This makes things simpler, and allows usage of + * the keycodes in a consistent manner. But only do this if + * Mousekeys is not enable, so it's not handled twice. + */ +#ifndef MOUSEKEY_ENABLE + if (IS_MOUSEKEY_BUTTON(keycode)) { + report_mouse_t currentReport = pointing_device_get_report(); + if (record->event.pressed) { + currentReport.buttons |= 1 << (keycode - KC_MS_BTN1); + } else { + currentReport.buttons &= ~(1 << (keycode - KC_MS_BTN1)); + } + pointing_device_set_report(currentReport); + pointing_device_send(); + } +#endif + + return true; +} + +void trackball_register_button(bool pressed, enum mouse_buttons button) { + report_mouse_t currentReport = pointing_device_get_report(); + if (pressed) { + currentReport.buttons |= button; + } else { + currentReport.buttons &= ~button; + } + pointing_device_set_report(currentReport); +} + +float trackball_get_precision(void) { return precisionSpeed; } +void trackball_set_precision(float precision) { precisionSpeed = precision; } +bool trackball_is_scrolling(void) { return scrolling; } +void trackball_set_scrolling(bool scroll) { scrolling = scroll; } + + +__attribute__((weak)) void pointing_device_init(void) { trackball_set_rgbw(0x80, 0x00, 0x00, 0x00); } + +void pointing_device_task(void) { + static bool debounce; + static uint16_t debounce_timer; + uint8_t state[5] = {}; + if (timer_elapsed(i2c_timeout_timer) > I2C_WAITCHECK) { + if (i2c_readReg(TRACKBALL_WRITE, 0x04, state, 5, I2C_TIMEOUT) == I2C_STATUS_SUCCESS) { + if (!state[4] && !debounce) { + if (scrolling) { +#ifdef PIMORONI_TRACKBALL_INVERT_X + h_offset += mouse_offset(state[2], state[3], 1); +#else + h_offset -= mouse_offset(state[2], state[3], 1); +#endif +#ifdef PIMORONI_TRACKBALL_INVERT_Y + v_offset += mouse_offset(state[1], state[0], 1); +#else + v_offset -= mouse_offset(state[1], state[0], 1); +#endif + } else { +#ifdef PIMORONI_TRACKBALL_INVERT_X + x_offset -= mouse_offset(state[2], state[3], 5); +#else + x_offset += mouse_offset(state[2], state[3], 5); +#endif +#ifdef PIMORONI_TRACKBALL_INVERT_Y + y_offset -= mouse_offset(state[1], state[0], 5); +#else + y_offset += mouse_offset(state[1], state[0], 5); +#endif + } + } else { + if (state[4]) { + debounce = true; + debounce_timer = timer_read(); + } + } + } else { + i2c_timeout_timer = timer_read(); + } + } + + if (timer_elapsed(debounce_timer) > MOUSE_DEBOUNCE) debounce = false; + + report_mouse_t mouse = pointing_device_get_report(); + // trackball_check_click(state[4] & (1 << 7), &mouse); + +#ifndef PIMORONI_TRACKBALL_ROTATE + update_member(&mouse.x, &x_offset); + update_member(&mouse.y, &y_offset); + update_member(&mouse.h, &h_offset); + update_member(&mouse.v, &v_offset); +#else + update_member(&mouse.x, &y_offset); + update_member(&mouse.y, &x_offset); + update_member(&mouse.h, &v_offset); + update_member(&mouse.v, &h_offset); +#endif + pointing_device_set_report(mouse); + pointing_device_send(); +} diff --git a/keyboards/draculad/keymaps/pimoroni/pimoroni_trackball.h b/keyboards/draculad/keymaps/pimoroni/pimoroni_trackball.h new file mode 100644 index 0000000000..cfcd5a47a1 --- /dev/null +++ b/keyboards/draculad/keymaps/pimoroni/pimoroni_trackball.h @@ -0,0 +1,35 @@ +/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" +#include "pointing_device.h" + +#ifndef TRACKBALL_ADDRESS +# define TRACKBALL_ADDRESS 0x0A +#endif +#define TRACKBALL_WRITE ((TRACKBALL_ADDRESS << 1) | I2C_WRITE) +#define TRACKBALL_READ ((TRACKBALL_ADDRESS << 1) | I2C_READ) + +void trackball_set_rgbw(uint8_t red, uint8_t green, uint8_t blue, uint8_t white); +void trackball_check_click(bool pressed, report_mouse_t *mouse); +void trackball_register_button(bool pressed, enum mouse_buttons button); + +float trackball_get_precision(void); +void trackball_set_precision(float precision); +bool trackball_is_scrolling(void); +void trackball_set_scrolling(bool scroll); \ No newline at end of file diff --git a/keyboards/draculad/keymaps/pimoroni/rules.mk b/keyboards/draculad/keymaps/pimoroni/rules.mk new file mode 100644 index 0000000000..547a02f26f --- /dev/null +++ b/keyboards/draculad/keymaps/pimoroni/rules.mk @@ -0,0 +1,6 @@ +# only uncomment on the side you have your trackball on +POINTING_DEVICE_ENABLE = yes +SRC += pimoroni_trackball.c +QUANTUM_LIB_SRC += i2c_master.c +OLED_DRIVER_ENABLE = yes +MOUSEKEY_ENABLE = no diff --git a/keyboards/draculad/readme.md b/keyboards/draculad/readme.md new file mode 100644 index 0000000000..f1fd546cd2 --- /dev/null +++ b/keyboards/draculad/readme.md @@ -0,0 +1,33 @@ +# DracuLad + +![DracuLad](https://github.com/mangoiv/draculad/blob/master/pictures/rev1/both_sides_showcase.jpg?raw=true) + +*A 34-36 key split keyboard* +- 36 keys, two of them can be replaced by rotary encoders making it support 34-36 keys and 2-4 encoders. +- bright RGB Underglow with ws2812b LEDs +- one ssd1306 OLED per side +- aggressive pinky stagger similar to the kyria but with an alternative thumb cluster to raise comfort for large hands +- support for mx and choc switches + +* keyboard Maintainer: [MangoIV](https://github.com/MangoIV) +* Hardware Supported: [DracuLad PCBs and cases](https://github.com/MangoIV/dracuLad), [the pimoroni trackball](https://shop.pimoroni.com/products/trackball-breakout) +* Hardware availability: [check my github](https://github.com/MangoIV) + +Make example for this keyboard (after setting up your build env): + + make draculad:default + +or for the version using the pimoroni trackball + + make draculad:pimoroni + +Flashing example for dfu and catarina respectively (replace default with the name of your keymap) + + make draculad:default:dfu + + make draculad:default:flash + + +When flashing the first time using handedness by eeprom, use the [qmk guide for that topic](https://docs.qmk.fm/#/feature_split_keyboard?id=handedness-by-eeprom) + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/draculad/rules.mk b/keyboards/draculad/rules.mk new file mode 100644 index 0000000000..d8596006c3 --- /dev/null +++ b/keyboards/draculad/rules.mk @@ -0,0 +1,27 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +SPLIT_KEYBOARD = yes +OLED_DRIVER_ENABLE = yes +WPM_ENABLE = yes +ENCODER_ENABLE = yes +LTO_ENABLE = yes From 7be4047df033cd1833ed3fa073d0c7954c063554 Mon Sep 17 00:00:00 2001 From: "W. Ducky" <82298089+WholesomeDucky@users.noreply.github.com> Date: Tue, 27 Apr 2021 14:37:11 -0400 Subject: [PATCH 294/613] GMMK Pro: Fixed Bootmagic Lite support; personal keymap; VIA support (#12554) * Added WholesomeDucky keymap for GMMK Pro * Finalized keymap & added 1000hz polling for GMMK Pro * Corrected for RAlt and Fn being swapped * Fixed RAlt and Fn being swapped in the layout definition. Updated personal keymap to reflect fixed layout. * Removed an old comment from personal keymap for GMMK Pro * added VIA support * Defined bootmagic row and column for GMMK Pro Esc key * Update keyboards/gmmk/pro/config.h * Update keyboards/gmmk/pro/keymaps/via/keymap.c * Update keyboards/gmmk/pro/keymaps/via/keymap.c --- keyboards/gmmk/pro/config.h | 2 + keyboards/gmmk/pro/keymaps/via/keymap.c | 74 +++++++++++++++++++ keyboards/gmmk/pro/keymaps/via/rules.mk | 1 + .../gmmk/pro/keymaps/wholesomeducky/keymap.c | 56 ++++++++++++++ 4 files changed, 133 insertions(+) create mode 100644 keyboards/gmmk/pro/keymaps/via/keymap.c create mode 100644 keyboards/gmmk/pro/keymaps/via/rules.mk create mode 100644 keyboards/gmmk/pro/keymaps/wholesomeducky/keymap.c diff --git a/keyboards/gmmk/pro/config.h b/keyboards/gmmk/pro/config.h index 014651599d..ab3c7a7a21 100644 --- a/keyboards/gmmk/pro/config.h +++ b/keyboards/gmmk/pro/config.h @@ -35,6 +35,8 @@ /* COL2ROW or ROW2COL */ #define DIODE_DIRECTION COL2ROW +#define BOOTMAGIC_LITE_ROW 1 +#define BOOTMAGIC_LITE_COLUMN 3 #define TAP_CODE_DELAY 10 #define ENCODERS_PAD_A { C15 } diff --git a/keyboards/gmmk/pro/keymaps/via/keymap.c b/keyboards/gmmk/pro/keymaps/via/keymap.c new file mode 100644 index 0000000000..927bf8fdf2 --- /dev/null +++ b/keyboards/gmmk/pro/keymaps/via/keymap.c @@ -0,0 +1,74 @@ +/* Copyright 2021 Glorious, LLC + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt Rotary(Mute) +// ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Del +// Tab Q W E R T Y U I O P [ ] \ PgUp +// Caps A S D F G H J K L ; " Enter PgDn +// Sh_L Z X C V B N M , . ? Sh_R Up End +// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right + + + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_MUTE, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [3] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +}; + + +void encoder_update_user(uint8_t index, bool clockwise) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } +} diff --git a/keyboards/gmmk/pro/keymaps/via/rules.mk b/keyboards/gmmk/pro/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/gmmk/pro/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/gmmk/pro/keymaps/wholesomeducky/keymap.c b/keyboards/gmmk/pro/keymaps/wholesomeducky/keymap.c new file mode 100644 index 0000000000..90fdec73b7 --- /dev/null +++ b/keyboards/gmmk/pro/keymaps/wholesomeducky/keymap.c @@ -0,0 +1,56 @@ +/* Copyright 2021 Glorious, LLC + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt Rotary +// ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Del +// Tab Q W E R T Y U I O P [ ] \ PgUp +// Ct_L A S D F G H J K L ; " Enter PgDn +// Sh_L Z X C V B N M , . ? Sh_R Up Win_R +// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right + + + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_MEDIA_PLAY_PAUSE, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_RGUI, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_TRNS, KC_TRNS, KC_END, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, RESET, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_TRNS, KC_END + ), + +}; + + +void encoder_update_user(uint8_t index, bool clockwise) { + if (clockwise) { + tap_code(KC_MS_WH_RIGHT); + } else { + tap_code(KC_MS_WH_LEFT); + } +} From e5cde191e117be8f56e6c34fb37e9fb56c715116 Mon Sep 17 00:00:00 2001 From: James Young <18669334+noroadsleft@users.noreply.github.com> Date: Tue, 27 Apr 2021 12:36:53 -0700 Subject: [PATCH 295/613] Add flashing instructions to GMMK Pro readme (#12719) --- keyboards/gmmk/pro/readme.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/keyboards/gmmk/pro/readme.md b/keyboards/gmmk/pro/readme.md index 32510a7ff8..2307a525ca 100644 --- a/keyboards/gmmk/pro/readme.md +++ b/keyboards/gmmk/pro/readme.md @@ -2,7 +2,7 @@ A tenkeyless 75% keyboard made and sold by Glorious LLC. Equipped with the STM32 ARM Cortex-M4 microcontroller, with support for rotary encoders and three additional layouts. [More info at Glorious](https://www.pcgamingrace.com/products/glorious-gmmk-pro-75-barebone-black-reservation) -* Keyboard Maintainer: [GloriousThrall](https://github.com/GloriousThrall) +* Keyboard Maintainer: [GloriousThrall](https://github.com/GloriousThrall) * Hardware Supported: GMMK Pro * Hardware Availability: [GloriousPCGaming.com](https://www.pcgamingrace.com/products/glorious-gmmk-pro-75-barebone-black-reservation) @@ -10,4 +10,14 @@ Make example for this keyboard (after setting up your build environment): make gmmk/pro:default +Flashing example for this keyboard: + + make gmmk/pro:default:flash + +To reset the board into bootloader mode, do one of the following: + +* Hold the Reset switch mounted on the bottom side of the PCB while connecting the USB cable +* Hold the Escape key while connecting the USB cable (also erases persistent settings) +* Fn+Backslash will reset the board to bootloader mode if you have flashed the default QMK keymap + See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). From 2af86cec3d85c304ecb83086b6c1929b7277c659 Mon Sep 17 00:00:00 2001 From: alittlepeace Date: Tue, 27 Apr 2021 15:54:34 -0500 Subject: [PATCH 296/613] YMDK Wings: Update config.h (#12718) Adds Caps Lock LED indicator configuration. --- keyboards/ymdk/wings/config.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/keyboards/ymdk/wings/config.h b/keyboards/ymdk/wings/config.h index 107fc072f9..3524ded278 100644 --- a/keyboards/ymdk/wings/config.h +++ b/keyboards/ymdk/wings/config.h @@ -49,6 +49,9 @@ along with this program. If not, see . #define BACKLIGHT_BREATHING #define BACKLIGHT_LEVELS 3 +#define LED_CAPS_LOCK_PIN C7 +#define LED_PIN_ON_STATE 0 + #define RGB_DI_PIN E2 #ifdef RGB_DI_PIN #define RGBLED_NUM 14 From 63cdf80885ad8407583bba521b00e7f613dca2f1 Mon Sep 17 00:00:00 2001 From: Xelus22 <17491233+Xelus22@users.noreply.github.com> Date: Wed, 28 Apr 2021 01:39:14 +0000 Subject: [PATCH 297/613] add default folder to standard (#12712) --- keyboards/mechlovin/infinity87/rev1/rules.mk | 2 ++ 1 file changed, 2 insertions(+) diff --git a/keyboards/mechlovin/infinity87/rev1/rules.mk b/keyboards/mechlovin/infinity87/rev1/rules.mk index 2f2d27fb2f..19be0ad838 100644 --- a/keyboards/mechlovin/infinity87/rev1/rules.mk +++ b/keyboards/mechlovin/infinity87/rev1/rules.mk @@ -2,3 +2,5 @@ MCU = STM32F303 BOARD = QMK_PROTON_C BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality + +DEFAULT_FOLDER = mechlovin/infinity87/rev1/standard From 54e8dd08857b04c1bdf28e2eaa6cc7aefd72f70f Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Wed, 28 Apr 2021 20:46:13 +1000 Subject: [PATCH 298/613] Fix up bad keycode in #12405. (#12722) --- keyboards/m3n3van/keymaps/default/keymap.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/m3n3van/keymaps/default/keymap.json b/keyboards/m3n3van/keymaps/default/keymap.json index bb8c7fbb83..d59debdaf1 100644 --- a/keyboards/m3n3van/keymaps/default/keymap.json +++ b/keyboards/m3n3van/keymaps/default/keymap.json @@ -11,7 +11,7 @@ ], [ "KC_GRV", "KC_MPRV", "KC_MPLY", "KC_MNXT", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_UP", "KC_LBRC", "KC_RBRC", "KC_TRNS", - "KC_TRNS", "KC_VOLD", "KC_VOLU", "KC_MUTE", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_LEFT", "KC_DOWN", "KC_RGHT", "KC_TRNS", "KC_QUPT", + "KC_TRNS", "KC_VOLD", "KC_VOLU", "KC_MUTE", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_LEFT", "KC_DOWN", "KC_RGHT", "KC_TRNS", "KC_QUOT", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_MINS", "KC_EQL", "KC_SLSH", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS" ], From 05ee0afd5443d856b1adf2fd4ddea50797919f65 Mon Sep 17 00:00:00 2001 From: Wilba Date: Thu, 29 Apr 2021 20:39:14 +1000 Subject: [PATCH 299/613] Fix F13 LED issue for WT75-B, WT75-C (#12729) --- keyboards/wilba_tech/wt75_b/config.h | 3 --- keyboards/wilba_tech/wt75_c/config.h | 3 --- 2 files changed, 6 deletions(-) diff --git a/keyboards/wilba_tech/wt75_b/config.h b/keyboards/wilba_tech/wt75_b/config.h index 995363a41a..f703d7e0cf 100644 --- a/keyboards/wilba_tech/wt75_b/config.h +++ b/keyboards/wilba_tech/wt75_b/config.h @@ -178,9 +178,6 @@ // enable the mono backlight #define MONO_BACKLIGHT_ENABLED 1 -// enable the RGB indicator for WT75-A -#define MONO_BACKLIGHT_WT75_A - // disable backlight when USB suspended (PC sleep/hibernate/shutdown) #define MONO_BACKLIGHT_DISABLE_WHEN_USB_SUSPENDED 0 diff --git a/keyboards/wilba_tech/wt75_c/config.h b/keyboards/wilba_tech/wt75_c/config.h index 954e11249d..00fbfbd8ad 100644 --- a/keyboards/wilba_tech/wt75_c/config.h +++ b/keyboards/wilba_tech/wt75_c/config.h @@ -178,9 +178,6 @@ // enable the mono backlight #define MONO_BACKLIGHT_ENABLED 1 -// enable the RGB indicator for WT75-A -#define MONO_BACKLIGHT_WT75_A - // disable backlight when USB suspended (PC sleep/hibernate/shutdown) #define MONO_BACKLIGHT_DISABLE_WHEN_USB_SUSPENDED 0 From 4abc3ceb4be6f4d6c84458e22baee675560eb562 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Thu, 29 Apr 2021 17:48:34 +0100 Subject: [PATCH 300/613] Align drivers.txt with toolbox (#12741) --- util/drivers.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/util/drivers.txt b/util/drivers.txt index a41192571f..1f6c67c4c5 100644 --- a/util/drivers.txt +++ b/util/drivers.txt @@ -4,6 +4,8 @@ # Driver can be one of winusb,libusb,libusbk # Use Windows Powershell and type [guid]::NewGuid() to generate guids winusb,STM32 Bootloader,0483,DF11,6d98a87f-4ecf-464d-89ed-8c684d857a75 +winusb,APM32 Bootloader,314B,0106,9ff3cc31-6772-4a3f-a492-a80d91f7a853 +winusb,STM32duino Bootloader,1EAF,0003,746915ec-99d8-4a90-a722-3c85ba31e4fe libusbk,USBaspLoader,16C0,05DC,e69affdc-0ef0-427c-aefb-4e593c9d2724 winusb,Kiibohd DFU Bootloader,1C11,B007,aa5a3f86-b81e-4416-89ad-0c1ea1ed63af libusb,ATmega16U2,03EB,2FEF,007274da-b75f-492e-a288-8fc0aff8339f From d3963a61cb9209efce1d8f052d5d8e7aaa2be48b Mon Sep 17 00:00:00 2001 From: Paul Ewing Date: Thu, 29 Apr 2021 09:55:01 -0700 Subject: [PATCH 301/613] Add firmware for CozyKeys Bloomer keyboard (#12639) Co-authored-by: Ryan Co-authored-by: Erovia --- keyboards/cozykeys/bloomer/bloomer.c | 17 +++ keyboards/cozykeys/bloomer/bloomer.h | 23 ++++ keyboards/cozykeys/bloomer/config.h | 53 +++++++++ keyboards/cozykeys/bloomer/readme.md | 23 ++++ keyboards/cozykeys/bloomer/v2/config.h | 29 +++++ keyboards/cozykeys/bloomer/v2/info.json | 100 +++++++++++++++++ .../bloomer/v2/keymaps/default/keymap.c | 48 ++++++++ .../bloomer/v2/keymaps/default/readme.md | 10 ++ keyboards/cozykeys/bloomer/v2/readme.md | 5 + keyboards/cozykeys/bloomer/v2/rules.mk | 22 ++++ keyboards/cozykeys/bloomer/v2/v2.c | 17 +++ keyboards/cozykeys/bloomer/v2/v2.h | 38 +++++++ keyboards/cozykeys/bloomer/v3/config.h | 29 +++++ keyboards/cozykeys/bloomer/v3/info.json | 103 ++++++++++++++++++ .../bloomer/v3/keymaps/default/keymap.c | 48 ++++++++ .../bloomer/v3/keymaps/default/readme.md | 10 ++ keyboards/cozykeys/bloomer/v3/readme.md | 5 + keyboards/cozykeys/bloomer/v3/rules.mk | 22 ++++ keyboards/cozykeys/bloomer/v3/v3.c | 17 +++ keyboards/cozykeys/bloomer/v3/v3.h | 36 ++++++ 20 files changed, 655 insertions(+) create mode 100644 keyboards/cozykeys/bloomer/bloomer.c create mode 100644 keyboards/cozykeys/bloomer/bloomer.h create mode 100644 keyboards/cozykeys/bloomer/config.h create mode 100644 keyboards/cozykeys/bloomer/readme.md create mode 100644 keyboards/cozykeys/bloomer/v2/config.h create mode 100644 keyboards/cozykeys/bloomer/v2/info.json create mode 100644 keyboards/cozykeys/bloomer/v2/keymaps/default/keymap.c create mode 100644 keyboards/cozykeys/bloomer/v2/keymaps/default/readme.md create mode 100644 keyboards/cozykeys/bloomer/v2/readme.md create mode 100644 keyboards/cozykeys/bloomer/v2/rules.mk create mode 100644 keyboards/cozykeys/bloomer/v2/v2.c create mode 100644 keyboards/cozykeys/bloomer/v2/v2.h create mode 100644 keyboards/cozykeys/bloomer/v3/config.h create mode 100644 keyboards/cozykeys/bloomer/v3/info.json create mode 100644 keyboards/cozykeys/bloomer/v3/keymaps/default/keymap.c create mode 100644 keyboards/cozykeys/bloomer/v3/keymaps/default/readme.md create mode 100644 keyboards/cozykeys/bloomer/v3/readme.md create mode 100644 keyboards/cozykeys/bloomer/v3/rules.mk create mode 100644 keyboards/cozykeys/bloomer/v3/v3.c create mode 100644 keyboards/cozykeys/bloomer/v3/v3.h diff --git a/keyboards/cozykeys/bloomer/bloomer.c b/keyboards/cozykeys/bloomer/bloomer.c new file mode 100644 index 0000000000..b8612504b1 --- /dev/null +++ b/keyboards/cozykeys/bloomer/bloomer.c @@ -0,0 +1,17 @@ +/* +Copyright 2021 Paul Ewing + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "bloomer.h" diff --git a/keyboards/cozykeys/bloomer/bloomer.h b/keyboards/cozykeys/bloomer/bloomer.h new file mode 100644 index 0000000000..f85b80889f --- /dev/null +++ b/keyboards/cozykeys/bloomer/bloomer.h @@ -0,0 +1,23 @@ +/* +Copyright 2021 Paul Ewing + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#if defined(KEYBOARD_cozykeys_bloomer_v2) + #include "v2.h" +#elif defined(KEYBOARD_cozykeys_bloomer_v3) + #include "v3.h" +#endif diff --git a/keyboards/cozykeys/bloomer/config.h b/keyboards/cozykeys/bloomer/config.h new file mode 100644 index 0000000000..0f285b4d0e --- /dev/null +++ b/keyboards/cozykeys/bloomer/config.h @@ -0,0 +1,53 @@ +/* +Copyright 2021 Paul Ewing + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#include "config_common.h" + +// USB Device descriptor parameter +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x1191 +#define MANUFACTURER CozyKeys +#define PRODUCT Bloomer + +// Key matrix size +#define MATRIX_ROWS 6 +#define MATRIX_COLS 15 + +// Enable RGB backlight +#ifdef RGBLIGHT_ENABLE +#define RGB_DI_PIN D7 +#define RGBLED_NUM 12 +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 +#define RGBLIGHT_LIMIT_VAL 255 +#define RGBLIGHT_SLEEP +#define RGBLIGHT_ANIMATIONS +#define RGBLIGHT_BREATHE_TABLE_SIZE 256 +#define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 +#define RGBLIGHT_EFFECT_BREATHE_MAX 255 +#endif + +// Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed +#define DEBOUNCE 5 + +// Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap +#define LOCKING_SUPPORT_ENABLE +// Locking resynchronize hack +#define LOCKING_RESYNC_ENABLE + diff --git a/keyboards/cozykeys/bloomer/readme.md b/keyboards/cozykeys/bloomer/readme.md new file mode 100644 index 0000000000..0232dff1a5 --- /dev/null +++ b/keyboards/cozykeys/bloomer/readme.md @@ -0,0 +1,23 @@ +# Bloomer + +![Bloomer](http://assets.cozykeys.xyz/images/keyboards/bloomer/bloomer-angle-2_800x800.jpg) + +- Keyboard Maintainer: [Paul Ewing](https://github.com/pcewing) +- Hardware Supported: ItsyBitsy 32u4 5V 16MHz +- Hardware Availability: [Bloomer Repository](https://github.com/cozykeys/bloomer) + +Make example for this keyboard (after setting up your build environment): + + make cozykeys/bloomer/v2:default # for Bloomer v2 + make cozykeys/bloomer/v3:default # for Bloomer v3 + +Flashing example for this keyboard: + + make cozykeys/bloomer/v2:default:flash # for Bloomer v2 + make cozykeys/bloomer/v3:default:flash # for Bloomer v3 + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Flashing the Firmware + +See the QMK docs for handwiring a keyboard; there is a section with instructions on how to flash the *.hex* file to the Teensy 2.0 controller. diff --git a/keyboards/cozykeys/bloomer/v2/config.h b/keyboards/cozykeys/bloomer/v2/config.h new file mode 100644 index 0000000000..49fac4d254 --- /dev/null +++ b/keyboards/cozykeys/bloomer/v2/config.h @@ -0,0 +1,29 @@ +/* +Copyright 2021 Paul Ewing + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#include "config_common.h" + +// USB Device descriptor parameter +#define DEVICE_VER 0x0002 + +// Keyboard Matrix Assignments +#define MATRIX_ROW_PINS { D0, D1, D3, D2, D4, B2 } +#define MATRIX_COL_PINS { F7, F6, F5, F4, F1, F0, B1, B4, C6, E6, B5, B6, B7, D6, C7 } +#define UNUSED_PINS +#define DIODE_DIRECTION COL2ROW + diff --git a/keyboards/cozykeys/bloomer/v2/info.json b/keyboards/cozykeys/bloomer/v2/info.json new file mode 100644 index 0000000000..1135158117 --- /dev/null +++ b/keyboards/cozykeys/bloomer/v2/info.json @@ -0,0 +1,100 @@ +{ + "keyboard_name": "Bloomer", + "url": "https://github.com/cozykeys/bloomer", + "maintainer": "pcewing", + "width": 15, + "height": 6, + "layouts": { + "LAYOUT": { + "layout": [ + { "label": "k00", "x": 0.868, "y": 0.0, "r": 10 }, + { "label": "k01", "x": 1.853, "y": 0.174, "r": 10 }, + { "label": "k02", "x": 2.856, "y": 0.244, "r": 10 }, + { "label": "k03", "x": 3.896, "y": 0.107, "r": 10 }, + { "label": "k04", "x": 4.826, "y": 0.591, "r": 10 }, + { "label": "k05", "x": 5.765, "y": 1.023, "r": 10 }, + { "label": "k06", "x": 7.031, "y": 0.724, "r": 0 }, + { "label": "k07", "x": 8.031, "y": 0.46, "r": 0 }, + { "label": "k08", "x": 9.031, "y": 0.724, "r": 0 }, + { "label": "k09", "x": 10.297, "y": 1.023, "r": -10 }, + { "label": "k10", "x": 11.236, "y": 0.591, "r": -10 }, + { "label": "k11", "x": 12.166, "y": 0.107, "r": -10 }, + { "label": "k12", "x": 13.196, "y": 0.192, "r": -10 }, + { "label": "k13", "x": 14.208, "y": 0.174, "r": -10 }, + { "label": "k14", "x": 15.193, "y": 0.0, "r": -10 }, + { "label": "k15", "x": 0.695, "y": 0.985, "r": 10 }, + { "label": "k16", "x": 1.679, "y": 1.158, "r": 10 }, + { "label": "k17", "x": 2.682, "y": 1.229, "r": 10 }, + { "label": "k18", "x": 3.722, "y": 1.092, "r": 10 }, + { "label": "k19", "x": 4.652, "y": 1.576, "r": 10 }, + { "label": "k20", "x": 5.591, "y": 2.008, "r": 10 }, + { "label": "k21", "x": 7.031, "y": 2.249, "r": 0 }, + { "label": "k22", "x": 8.031, "y": 1.985, "r": 0 }, + { "label": "k23", "x": 9.031, "y": 2.249, "r": 0 }, + { "label": "k24", "x": 10.47, "y": 2.008, "r": -10 }, + { "label": "k25", "x": 11.409, "y": 1.576, "r": -10 }, + { "label": "k26", "x": 12.34, "y": 1.092, "r": -10 }, + { "label": "k27", "x": 13.37, "y": 1.177, "r": -10 }, + { "label": "k28", "x": 14.382, "y": 1.158, "r": -10 }, + { "label": "k29", "x": 15.367, "y": 0.985, "r": -10 }, + { "label": "k30", "x": 0.521, "y": 1.97, "r": 10 }, + { "label": "k31", "x": 1.506, "y": 2.143, "r": 10 }, + { "label": "k32", "x": 2.509, "y": 2.214, "r": 10 }, + { "label": "k33", "x": 3.548, "y": 2.077, "r": 10 }, + { "label": "k34", "x": 4.478, "y": 2.561, "r": 10 }, + { "label": "k35", "x": 5.418, "y": 2.993, "r": 10 }, + { "label": "k36", "x": 7.031, "y": 3.249, "r": 0 }, + { "label": "k37", "x": 8.031, "y": 2.985, "r": 0 }, + { "label": "k38", "x": 9.031, "y": 3.249, "r": 0 }, + { "label": "k39", "x": 10.644, "y": 2.993, "r": -10 }, + { "label": "k40", "x": 11.583, "y": 2.561, "r": -10 }, + { "label": "k41", "x": 12.513, "y": 2.077, "r": -10 }, + { "label": "k42", "x": 13.544, "y": 2.162, "r": -10 }, + { "label": "k43", "x": 14.556, "y": 2.143, "r": -10 }, + { "label": "k44", "x": 15.541, "y": 1.97, "r": -10 }, + { "label": "k45", "x": 0.347, "y": 2.954, "r": 10 }, + { "label": "k46", "x": 1.332, "y": 3.128, "r": 10 }, + { "label": "k47", "x": 2.335, "y": 3.198, "r": 10 }, + { "label": "k48", "x": 3.375, "y": 3.062, "r": 10 }, + { "label": "k49", "x": 4.305, "y": 3.546, "r": 10 }, + { "label": "k50", "x": 5.244, "y": 3.978, "r": 10 }, + { "label": "k51", "x": 10.818, "y": 3.978, "r": -10 }, + { "label": "k52", "x": 11.757, "y": 3.546, "r": -10 }, + { "label": "k53", "x": 12.687, "y": 3.062, "r": -10 }, + { "label": "k54", "x": 13.717, "y": 3.147, "r": -10 }, + { "label": "k55", "x": 14.729, "y": 3.128, "r": -10 }, + { "label": "k56", "x": 15.714, "y": 2.954, "r": -10 }, + { "label": "k57", "x": 0.174, "y": 3.939, "r": 10 }, + { "label": "k58", "x": 1.158, "y": 4.113, "r": 10 }, + { "label": "k59", "x": 2.161, "y": 4.183, "r": 10 }, + { "label": "k60", "x": 3.201, "y": 4.047, "r": 10 }, + { "label": "k61", "x": 4.131, "y": 4.53, "r": 10 }, + { "label": "k62", "x": 5.07, "y": 4.963, "r": 10 }, + { "label": "k63", "x": 7.031, "y": 4.984, "r": 0 }, + { "label": "k64", "x": 8.031, "y": 4.51, "r": 0 }, + { "label": "k65", "x": 9.031, "y": 4.984, "r": 0 }, + { "label": "k66", "x": 10.991, "y": 4.963, "r": -10 }, + { "label": "k67", "x": 11.93, "y": 4.53, "r": -10 }, + { "label": "k68", "x": 12.861, "y": 4.047, "r": -10 }, + { "label": "k69", "x": 13.891, "y": 4.131, "r": -10 }, + { "label": "k70", "x": 14.903, "y": 4.113, "r": -10 }, + { "label": "k71", "x": 15.888, "y": 3.939, "r": -10 }, + { "label": "k72", "x": 0.0, "y": 4.924, "r": 10 }, + { "label": "k73", "x": 0.985, "y": 5.098, "r": 10 }, + { "label": "k74", "x": 1.988, "y": 5.168, "r": 10 }, + { "label": "k75", "x": 3.027, "y": 5.031, "r": 10 }, + { "label": "k76", "x": 3.957, "y": 5.515, "r": 10 }, + { "label": "k77", "x": 4.897, "y": 5.947, "r": 10 }, + { "label": "k78", "x": 5.883, "y": 6.115, "r": 10 }, + { "label": "k79", "x": 8.031, "y": 5.51, "r": 0 }, + { "label": "k80", "x": 10.179, "y": 6.115, "r": -10 }, + { "label": "k81", "x": 11.165, "y": 5.947, "r": -10 }, + { "label": "k82", "x": 12.104, "y": 5.515, "r": -10 }, + { "label": "k83", "x": 13.034, "y": 5.031, "r": -10 }, + { "label": "k84", "x": 14.065, "y": 5.116, "r": -10 }, + { "label": "k85", "x": 15.077, "y": 5.098, "r": -10 }, + { "label": "k86", "x": 16.062, "y": 4.924, "r": -10 } + ] + } + } +} diff --git a/keyboards/cozykeys/bloomer/v2/keymaps/default/keymap.c b/keyboards/cozykeys/bloomer/v2/keymaps/default/keymap.c new file mode 100644 index 0000000000..e5eeaa8530 --- /dev/null +++ b/keyboards/cozykeys/bloomer/v2/keymaps/default/keymap.c @@ -0,0 +1,48 @@ +/* +Copyright 2021 Paul Ewing + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +enum bloomer_layers { + DEFAULT, + FN +}; + +#define RGB_N RGB_MOD // Rotate to next RGB mode +#define RGB_P RGB_RMOD // Rotate to next RGB mode + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[DEFAULT] = LAYOUT( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_PSCR, KC_SLCK, KC_PAUS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_INS, KC_HOME, KC_PGUP, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_CAPS, KC_END, KC_PGDN, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LEFT, KC_UP, KC_RGHT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_GRV, MO(FN), KC_BSPC, KC_DEL, KC_DOWN, KC_ENT, KC_SPC, KC_LBRC, KC_RBRC, KC_RALT, KC_RGUI, KC_RCTL +), + +[FN] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, + _______, _______, _______, _______, _______, _______, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, + _______, KC_F9, KC_F10, KC_F11, KC_F12, _______, RGB_HUD, RGB_SAD, RGB_VAD, _______, KC_GRV, KC_LBRC, KC_RBRC, _______, _______, + _______, KC_F5, KC_F6, KC_F7, KC_F8, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, + _______, KC_F1, KC_F2, KC_F3, KC_F4, _______, RGB_P, RGB_TOG, RGB_N, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______, _______, + _______, _______, _______, _______, _______, _______, _______, RGB_M_P, _______, _______, _______, _______, _______, _______, _______ +) + +}; + diff --git a/keyboards/cozykeys/bloomer/v2/keymaps/default/readme.md b/keyboards/cozykeys/bloomer/v2/keymaps/default/readme.md new file mode 100644 index 0000000000..7595b5aa35 --- /dev/null +++ b/keyboards/cozykeys/bloomer/v2/keymaps/default/readme.md @@ -0,0 +1,10 @@ +# CozyKeys Bloomer v2 Default Keymap + +## Default Layer + +![Default Layer](https://raw.githubusercontent.com/cozykeys/bloomer/master/keymaps/v2/default/bloomer_layer_default.svg) + +## Function Layer + +![Function Layer](https://raw.githubusercontent.com/cozykeys/bloomer/master/keymaps/v2/default/bloomer_layer_fn.svg) + diff --git a/keyboards/cozykeys/bloomer/v2/readme.md b/keyboards/cozykeys/bloomer/v2/readme.md new file mode 100644 index 0000000000..ac4ab9c93e --- /dev/null +++ b/keyboards/cozykeys/bloomer/v2/readme.md @@ -0,0 +1,5 @@ +# CozyKeys Bloomer v2 + +![Bloomer](http://assets.cozykeys.xyz/images/keyboards/bloomer/bloomer-angle-2_800x800.jpg) + +For more information on the Bloomer and how to build/flash the firmware, see the [readme.md](../readme.md) in the parent directory. diff --git a/keyboards/cozykeys/bloomer/v2/rules.mk b/keyboards/cozykeys/bloomer/v2/rules.mk new file mode 100644 index 0000000000..d23e955126 --- /dev/null +++ b/keyboards/cozykeys/bloomer/v2/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/cozykeys/bloomer/v2/v2.c b/keyboards/cozykeys/bloomer/v2/v2.c new file mode 100644 index 0000000000..47dd093734 --- /dev/null +++ b/keyboards/cozykeys/bloomer/v2/v2.c @@ -0,0 +1,17 @@ +/* +Copyright 2021 Paul Ewing + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "v2.h" diff --git a/keyboards/cozykeys/bloomer/v2/v2.h b/keyboards/cozykeys/bloomer/v2/v2.h new file mode 100644 index 0000000000..c6575cd4e6 --- /dev/null +++ b/keyboards/cozykeys/bloomer/v2/v2.h @@ -0,0 +1,38 @@ +/* +Copyright 2021 Paul Ewing + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#include "quantum.h" + +#define ___ KC_NO + +#define LAYOUT( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, k12, k13, k14, \ + k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, \ + k45, k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, k56, \ + k57, k58, k59, k60, k61, k62, k63, k64, k65, k66, k67, k68, k69, k70, k71, \ + k72, k73, k74, k75, k76, k77, k78, k79, k80, k81, k82, k83, k84, k85, k86 \ +) \ +{ /* c00 c01 c02 c03 c04 c05 c06 c07 c08 c09 c10 c11 c12 c13 c14 */ \ +/* r0 */ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, k12, k13, k14 }, \ +/* r1 */ { k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29 }, \ +/* r2 */ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44 }, \ +/* r3 */ { k45, k46, k47, k48, k49, k50, ___, ___, ___, k51, k52, k53, k54, k55, k56 }, \ +/* r4 */ { k57, k58, k59, k60, k61, k62, k63, k64, k65, k66, k67, k68, k69, k70, k71 }, \ +/* r5 */ { k72, k73, k74, k75, k76, k77, k78, k79, k80, k81, k82, k83, k84, k85, k86 }, \ +} diff --git a/keyboards/cozykeys/bloomer/v3/config.h b/keyboards/cozykeys/bloomer/v3/config.h new file mode 100644 index 0000000000..4bb291be56 --- /dev/null +++ b/keyboards/cozykeys/bloomer/v3/config.h @@ -0,0 +1,29 @@ +/* +Copyright 2021 Paul Ewing + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#include "config_common.h" + +// USB Device descriptor parameter +#define DEVICE_VER 0x0003 + +// Keyboard Matrix Assignments +#define MATRIX_ROW_PINS { D0, D1, D3, D2, D4, B2 } +#define MATRIX_COL_PINS { F7, F6, F5, F4, F1, F0, B1, B4, C6, E6, B5, B6, B7, D6, C7 } +#define UNUSED_PINS +#define DIODE_DIRECTION COL2ROW + diff --git a/keyboards/cozykeys/bloomer/v3/info.json b/keyboards/cozykeys/bloomer/v3/info.json new file mode 100644 index 0000000000..6d547acf1f --- /dev/null +++ b/keyboards/cozykeys/bloomer/v3/info.json @@ -0,0 +1,103 @@ +{ + "keyboard_name": "Bloomer", + "url": "https://github.com/cozykeys/bloomer", + "maintainer": "pcewing", + "width": 15, + "height": 6, + "layouts": { + "LAYOUT": { + "layout": [ + { "label": "k00", "x": 0.868, "y": 0.0, "r": 10 }, + { "label": "k01", "x": 1.853, "y": 0.174, "r": 10 }, + { "label": "k02", "x": 2.856, "y": 0.244, "r": 10 }, + { "label": "k03", "x": 3.896, "y": 0.107, "r": 10 }, + { "label": "k04", "x": 4.826, "y": 0.591, "r": 10 }, + { "label": "k05", "x": 5.765, "y": 1.023, "r": 10 }, + { "label": "k06", "x": 10.507, "y": 1.023, "r": -10 }, + { "label": "k07", "x": 11.446, "y": 0.591, "r": -10 }, + { "label": "k08", "x": 12.376, "y": 0.107, "r": -10 }, + { "label": "k09", "x": 13.406, "y": 0.192, "r": -10 }, + { "label": "k10", "x": 14.418, "y": 0.174, "r": -10 }, + { "label": "k11", "x": 15.403, "y": 0.0, "r": -10 }, + { "label": "k12", "x": 0.695, "y": 0.985, "r": 10 }, + { "label": "k13", "x": 1.679, "y": 1.158, "r": 10 }, + { "label": "k14", "x": 2.682, "y": 1.229, "r": 10 }, + { "label": "k15", "x": 3.722, "y": 1.092, "r": 10 }, + { "label": "k16", "x": 4.652, "y": 1.576, "r": 10 }, + { "label": "k17", "x": 5.591, "y": 2.008, "r": 10 }, + { "label": "k18", "x": 10.68, "y": 2.008, "r": -10 }, + { "label": "k19", "x": 11.619, "y": 1.576, "r": -10 }, + { "label": "k20", "x": 12.55, "y": 1.092, "r": -10 }, + { "label": "k21", "x": 13.58, "y": 1.177, "r": -10 }, + { "label": "k22", "x": 14.592, "y": 1.158, "r": -10 }, + { "label": "k23", "x": 15.577, "y": 0.985, "r": -10 }, + { "label": "k24", "x": 0.521, "y": 1.97, "r": 10 }, + { "label": "k25", "x": 1.506, "y": 2.143, "r": 10 }, + { "label": "k26", "x": 2.509, "y": 2.214, "r": 10 }, + { "label": "k27", "x": 3.548, "y": 2.077, "r": 10 }, + { "label": "k28", "x": 4.478, "y": 2.561, "r": 10 }, + { "label": "k29", "x": 5.418, "y": 2.993, "r": 10 }, + { "label": "k30", "x": 6.402, "y": 3.167, "r": 10 }, + { "label": "k31", "x": 7.636, "y": 3.217, "r": 0 }, + { "label": "k32", "x": 8.636, "y": 3.217, "r": 0 }, + { "label": "k33", "x": 9.869, "y": 3.167, "r": -10 }, + { "label": "k34", "x": 10.854, "y": 2.993, "r": -10 }, + { "label": "k35", "x": 11.793, "y": 2.561, "r": -10 }, + { "label": "k36", "x": 12.723, "y": 2.077, "r": -10 }, + { "label": "k37", "x": 13.754, "y": 2.162, "r": -10 }, + { "label": "k38", "x": 14.766, "y": 2.143, "r": -10 }, + { "label": "k39", "x": 15.75, "y": 1.97, "r": -10 }, + { "label": "k40", "x": 0.347, "y": 2.954, "r": 10 }, + { "label": "k41", "x": 1.332, "y": 3.128, "r": 10 }, + { "label": "k42", "x": 2.335, "y": 3.198, "r": 10 }, + { "label": "k43", "x": 3.375, "y": 3.062, "r": 10 }, + { "label": "k44", "x": 4.305, "y": 3.546, "r": 10 }, + { "label": "k45", "x": 5.244, "y": 3.978, "r": 10 }, + { "label": "k46", "x": 6.229, "y": 4.151, "r": 10 }, + { "label": "k47", "x": 7.636, "y": 4.217, "r": 0 }, + { "label": "k48", "x": 8.636, "y": 4.217, "r": 0 }, + { "label": "k49", "x": 10.043, "y": 4.151, "r": -10 }, + { "label": "k50", "x": 11.027, "y": 3.978, "r": -10 }, + { "label": "k51", "x": 11.967, "y": 3.546, "r": -10 }, + { "label": "k52", "x": 12.897, "y": 3.062, "r": -10 }, + { "label": "k53", "x": 13.927, "y": 3.147, "r": -10 }, + { "label": "k54", "x": 14.939, "y": 3.128, "r": -10 }, + { "label": "k55", "x": 15.924, "y": 2.954, "r": -10 }, + { "label": "k56", "x": 0.174, "y": 3.939, "r": 10 }, + { "label": "k57", "x": 1.158, "y": 4.113, "r": 10 }, + { "label": "k58", "x": 2.161, "y": 4.183, "r": 10 }, + { "label": "k59", "x": 3.201, "y": 4.047, "r": 10 }, + { "label": "k60", "x": 4.131, "y": 4.53, "r": 10 }, + { "label": "k61", "x": 5.07, "y": 4.963, "r": 10 }, + { "label": "k62", "x": 6.055, "y": 5.136, "r": 10 }, + { "label": "k63", "x": 7.136, "y": 5.217, "r": 0 }, + { "label": "k64", "x": 8.136, "y": 5.217, "r": 0 }, + { "label": "k65", "x": 9.136, "y": 5.217, "r": 0 }, + { "label": "k66", "x": 10.216, "y": 5.136, "r": -10 }, + { "label": "k67", "x": 11.201, "y": 4.963, "r": -10 }, + { "label": "k68", "x": 12.14, "y": 4.53, "r": -10 }, + { "label": "k69", "x": 13.07, "y": 4.047, "r": -10 }, + { "label": "k70", "x": 14.101, "y": 4.131, "r": -10 }, + { "label": "k71", "x": 15.113, "y": 4.113, "r": -10 }, + { "label": "k72", "x": 16.098, "y": 3.939, "r": -10 }, + { "label": "k73", "x": 0.0, "y": 4.924, "r": 10 }, + { "label": "k74", "x": 0.985, "y": 5.098, "r": 10 }, + { "label": "k75", "x": 1.988, "y": 5.168, "r": 10 }, + { "label": "k76", "x": 3.027, "y": 5.031, "r": 10 }, + { "label": "k77", "x": 3.957, "y": 5.515, "r": 10 }, + { "label": "k78", "x": 4.897, "y": 5.947, "r": 10 }, + { "label": "k79", "x": 5.881, "y": 6.121, "r": 10 }, + { "label": "k80", "x": 7.136, "y": 6.217, "r": 0 }, + { "label": "k81", "x": 8.136, "y": 6.217, "r": 0 }, + { "label": "k82", "x": 9.136, "y": 6.217, "r": 0 }, + { "label": "k83", "x": 10.39, "y": 6.121, "r": -10 }, + { "label": "k84", "x": 11.375, "y": 5.947, "r": -10 }, + { "label": "k85", "x": 12.314, "y": 5.515, "r": -10 }, + { "label": "k86", "x": 13.244, "y": 5.031, "r": -10 }, + { "label": "k87", "x": 14.274, "y": 5.116, "r": -10 }, + { "label": "k88", "x": 15.287, "y": 5.098, "r": -10 }, + { "label": "k89", "x": 16.271, "y": 4.924, "r": -10 } + ] + } + } +} diff --git a/keyboards/cozykeys/bloomer/v3/keymaps/default/keymap.c b/keyboards/cozykeys/bloomer/v3/keymaps/default/keymap.c new file mode 100644 index 0000000000..7aad9cec61 --- /dev/null +++ b/keyboards/cozykeys/bloomer/v3/keymaps/default/keymap.c @@ -0,0 +1,48 @@ +/* +Copyright 2021 Paul Ewing + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +enum bloomer_layers { + DEFAULT, + FN, +}; + +#define RGB_N RGB_MOD // Rotate to next RGB mode +#define RGB_P RGB_RMOD // Rotate to next RGB mode + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[DEFAULT] = LAYOUT( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_PSCR, KC_PAUS, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_PGUP, KC_SLCK, KC_NLCK, KC_HOME, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_PGDN, KC_CAPS, KC_UP, KC_INS, KC_END, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_GRV, MO(FN), KC_BSPC, KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, KC_ENT, KC_SPC, KC_LBRC, KC_RBRC, KC_RALT, KC_RGUI, KC_RCTL +), + +[FN] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, RGB_TOG, RGB_M_P, _______, _______, KC_GRV, KC_LBRC, KC_RBRC, _______, _______, + _______, KC_F5, KC_F6, KC_F7, KC_F8, _______, _______, RGB_P, RGB_N, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, + _______, KC_F1, KC_F2, KC_F3, KC_F4, _______, _______, RGB_HUI, RGB_SAI, RGB_VAI, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______, _______, + _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______ +), + +}; + diff --git a/keyboards/cozykeys/bloomer/v3/keymaps/default/readme.md b/keyboards/cozykeys/bloomer/v3/keymaps/default/readme.md new file mode 100644 index 0000000000..b8a37f24c5 --- /dev/null +++ b/keyboards/cozykeys/bloomer/v3/keymaps/default/readme.md @@ -0,0 +1,10 @@ +# CozyKeys Bloomer v3 Default Keymap + +## Default Layer + +![Default Layer](https://raw.githubusercontent.com/cozykeys/bloomer/master/keymaps/v3/default/bloomer_layer_default.svg) + +## Function Layer + +![Function Layer](https://raw.githubusercontent.com/cozykeys/bloomer/master/keymaps/v3/default/bloomer_layer_fn.svg) + diff --git a/keyboards/cozykeys/bloomer/v3/readme.md b/keyboards/cozykeys/bloomer/v3/readme.md new file mode 100644 index 0000000000..b056b321d2 --- /dev/null +++ b/keyboards/cozykeys/bloomer/v3/readme.md @@ -0,0 +1,5 @@ +# CozyKeys Bloomer v3 + +![Bloomer](http://assets.cozykeys.xyz/images/keyboards/bloomer-v3/bloomer-v3-angle_800x800.jpg) + +For more information on the Bloomer and how to build/flash the firmware, see the [readme.md](../readme.md) in the parent directory. diff --git a/keyboards/cozykeys/bloomer/v3/rules.mk b/keyboards/cozykeys/bloomer/v3/rules.mk new file mode 100644 index 0000000000..806a19af38 --- /dev/null +++ b/keyboards/cozykeys/bloomer/v3/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/cozykeys/bloomer/v3/v3.c b/keyboards/cozykeys/bloomer/v3/v3.c new file mode 100644 index 0000000000..080cacd791 --- /dev/null +++ b/keyboards/cozykeys/bloomer/v3/v3.c @@ -0,0 +1,17 @@ +/* +Copyright 2021 Paul Ewing + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "v3.h" diff --git a/keyboards/cozykeys/bloomer/v3/v3.h b/keyboards/cozykeys/bloomer/v3/v3.h new file mode 100644 index 0000000000..3515ef84ce --- /dev/null +++ b/keyboards/cozykeys/bloomer/v3/v3.h @@ -0,0 +1,36 @@ +/* +Copyright 2021 Paul Ewing + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#include "quantum.h" + +#define LAYOUT( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, \ + k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, \ + k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, \ + k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, \ + k56, k57, k58, k59, k60, k61, k62, k63, k64, k65, k66, k67, k68, k69, k70, k71, k72, \ + k73, k74, k75, k76, k77, k78, k79, k80, k81, k82, k83, k84, k85, k86, k87, k88, k89 \ +) \ +{ /* c00 c01 c02 c03 c04 c05 c06 c07 c08 c09 c10 c11 c12 c13 c14 */ \ +/* r0 */ { k00, k01, k02, k03, k04, k05, k31, k63, k32, k06, k07, k08, k09, k10, k11 }, \ +/* r1 */ { k12, k13, k14, k15, k16, k17, k47, k80, k48, k18, k19, k20, k21, k22, k23 }, \ +/* r2 */ { k24, k25, k26, k27, k28, k29, k30, k64, k33, k34, k35, k36, k37, k38, k39 }, \ +/* r3 */ { k40, k41, k42, k43, k44, k45, k46, k81, k49, k50, k51, k52, k53, k54, k55 }, \ +/* r4 */ { k56, k57, k58, k59, k60, k61, k62, k65, k66, k67, k68, k69, k70, k71, k72 }, \ +/* r5 */ { k73, k74, k75, k76, k77, k78, k79, k82, k83, k84, k85, k86, k87, k88, k89 } \ +} From 8190a795ed3133ccab69b71f01104996080411bc Mon Sep 17 00:00:00 2001 From: James Young <18669334+noroadsleft@users.noreply.github.com> Date: Thu, 29 Apr 2021 11:25:30 -0700 Subject: [PATCH 302/613] DracuLad: add Configurator data and rework layout macro (#12727) * add info.json file * refactor keymaps for readability * rework layout macro Arranges the layout macro and keycodes to resemble the physical layout. * readme touch-up Corrections to capitalization and spelling, and removal of extra white space. --- keyboards/draculad/draculad.h | 3 +- keyboards/draculad/info.json | 59 ++++++++++++++++++++ keyboards/draculad/keymaps/default/keymap.c | 57 ++++++++++--------- keyboards/draculad/keymaps/pimoroni/keymap.c | 53 ++++++++++-------- keyboards/draculad/readme.md | 36 ++++++------ 5 files changed, 138 insertions(+), 70 deletions(-) create mode 100644 keyboards/draculad/info.json diff --git a/keyboards/draculad/draculad.h b/keyboards/draculad/draculad.h index 47d4b21435..b98bb0d2c4 100644 --- a/keyboards/draculad/draculad.h +++ b/keyboards/draculad/draculad.h @@ -25,7 +25,8 @@ along with this program. If not, see . L00, L01, L02, L03, L04, R00, R01, R02, R03, R04, \ L10, L11, L12, L13, L14, R10, R11, R12, R13, R14, \ L20, L21, L22, L23, L24, R20, R21, R22, R23, R24, \ - L30, L31, L32, L33, R30, R31, R32, R33 \ + L30, R33, \ + L31, L32, L33, R30, R31, R32 \ ) \ { \ { L00, L01, L02, L03, L04 }, \ diff --git a/keyboards/draculad/info.json b/keyboards/draculad/info.json new file mode 100644 index 0000000000..c0f37771b9 --- /dev/null +++ b/keyboards/draculad/info.json @@ -0,0 +1,59 @@ +{ + "keyboard_name": "DracuLad", + "url": "", + "maintainer": "MangoIV", + "width": 13, + "height": 5.5, + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"L00", "x":0, "y":1}, + {"label":"L01", "x":1, "y":0.35}, + {"label":"L02", "x":2, "y":0}, + {"label":"L03", "x":3, "y":0.35}, + {"label":"L04", "x":4, "y":0.5}, + + {"label":"R00", "x":8, "y":0.5}, + {"label":"R01", "x":9, "y":0.35}, + {"label":"R02", "x":10, "y":0}, + {"label":"R03", "x":11, "y":0.35}, + {"label":"R04", "x":12, "y":1}, + + {"label":"L10", "x":0, "y":2}, + {"label":"L11", "x":1, "y":1.35}, + {"label":"L12", "x":2, "y":1}, + {"label":"L13", "x":3, "y":1.35}, + {"label":"L14", "x":4, "y":1.5}, + + {"label":"R10", "x":8, "y":1.5}, + {"label":"R11", "x":9, "y":1.35}, + {"label":"R12", "x":10, "y":1}, + {"label":"R13", "x":11, "y":1.35}, + {"label":"R14", "x":12, "y":2}, + + {"label":"L20", "x":0, "y":3}, + {"label":"L21", "x":1, "y":2.35}, + {"label":"L22", "x":2, "y":2}, + {"label":"L23", "x":3, "y":2.35}, + {"label":"L24", "x":4, "y":2.5}, + + {"label":"R20", "x":8, "y":2.5}, + {"label":"R21", "x":9, "y":2.35}, + {"label":"R22", "x":10, "y":2}, + {"label":"R23", "x":11, "y":2.35}, + {"label":"R24", "x":12, "y":3}, + + {"label":"L30", "x":4.25, "y":3.5}, + {"label":"R33", "x":7.75, "y":3.5}, + + {"label":"L31", "x":3, "y":4.5}, + {"label":"L32", "x":4, "y":4.5}, + {"label":"L33", "x":5, "y":4.5}, + + {"label":"R30", "x":7, "y":4.5}, + {"label":"R31", "x":8, "y":4.5}, + {"label":"R32", "x":9, "y":4.5} + ] + } + } +} diff --git a/keyboards/draculad/keymaps/default/keymap.c b/keyboards/draculad/keymaps/default/keymap.c index b24cca9327..f9432c992f 100644 --- a/keyboards/draculad/keymaps/default/keymap.c +++ b/keyboards/draculad/keymaps/default/keymap.c @@ -30,35 +30,40 @@ enum layer_number { char wpm_as_str[8]; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_BASE] = LAYOUT( - 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, - LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), - KC_MUTE, KC_LCTL, LALT_T(KC_BSPC), LT(_MUS, KC_SPC), LT(_NUM,KC_DEL), LT(_SYMB, KC_ENT), KC_CAPS, TG(_ADJ) - ), - [_NUM] = LAYOUT( - KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, - KC_TAB, XXXXXXX, KC_VOLD, KC_VOLU, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP , KC_RIGHT , KC_QUOT, - KC_LSFT, XXXXXXX, XXXXXXX, KC_MUTE, RESET, KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_RSFT, - XXXXXXX, XXXXXXX, KC_LALT, XXXXXXX, _______, KC_ENT, KC_NO, KC_NO - ), - [_SYMB] = LAYOUT( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, XXXXXXX, XXXXXXX, KC_EQL, KC_MINS, - XXXXXXX, KC_F5, KC_F6, KC_F7, KC_F8, KC_LBRC, KC_RBRC, XXXXXXX , KC_GRV , KC_BSLS, - KC_LSFT, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_RSFT, - XXXXXXX, KC_LALT, XXXXXXX, XXXXXXX, XXXXXXX, _______, KC_NO, KC_NO + [_BASE] = LAYOUT( + 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, + LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), + KC_MUTE, TG(_ADJ), + KC_LCTL, LALT_T(KC_BSPC), LT(_MUS,KC_SPC), LT(_NUM,KC_DEL), LT(_SYMB,KC_ENT), KC_CAPS + ), + [_NUM] = LAYOUT( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_TAB, XXXXXXX, KC_VOLD, KC_VOLU, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_QUOT, + KC_LSFT, XXXXXXX, XXXXXXX, KC_MUTE, RESET, KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_RSFT, + XXXXXXX, KC_NO, + XXXXXXX, KC_LALT, XXXXXXX, _______, KC_ENT, KC_NO + ), + [_SYMB] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, XXXXXXX, XXXXXXX, KC_EQL, KC_MINS, + XXXXXXX, KC_F5, KC_F6, KC_F7, KC_F8, KC_LBRC, KC_RBRC, XXXXXXX, KC_GRV, KC_BSLS, + KC_LSFT, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_RSFT, + XXXXXXX, KC_NO, + KC_LALT, XXXXXXX, XXXXXXX, XXXXXXX, _______, KC_NO ), [_MUS] = LAYOUT( - KC_LCTL, XXXXXXX, XXXXXXX, XXXXXXX,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - KC_LALT, KC_BTN3, KC_BTN2, KC_BTN1 , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX , XXXXXXX , XXXXXXX, - KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX - ), + KC_LCTL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + KC_LALT, KC_BTN3, KC_BTN2, KC_BTN1, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + ), [_ADJ] = LAYOUT( - RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - EEP_RST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_MOD, RGB_HUI, RGB_SAI , RGB_VAI , RGB_TOG, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______ + RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + EEP_RST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, + XXXXXXX, _______, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX ) }; diff --git a/keyboards/draculad/keymaps/pimoroni/keymap.c b/keyboards/draculad/keymaps/pimoroni/keymap.c index d3a8e1f79f..1f57efb5d5 100644 --- a/keyboards/draculad/keymaps/pimoroni/keymap.c +++ b/keyboards/draculad/keymaps/pimoroni/keymap.c @@ -42,35 +42,40 @@ enum custom_keycodes { char wpm_as_str[8]; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_BASE] = LAYOUT( - 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, - LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), - KC_MUTE, KC_LCTL, LALT_T(KC_BSPC), LT(_MUS, KC_SPC), KC_NO, LT(_NUM,KC_ENT), LT(_SYMB, KC_DEL), TG(_ADJ) - ), - [_NUM] = LAYOUT( - KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, - KC_TAB, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP , KC_RIGHT , KC_QUOT, - KC_LSFT, XXXXXXX, KC_MPRV, KC_MNXT, RESET, KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_RSFT, - XXXXXXX, KC_LCTL, KC_LALT, XXXXXXX, KC_NO, _______, KC_ENT, KC_NO + [_BASE] = LAYOUT( + 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, + LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), + KC_MUTE, TG(_ADJ), + KC_LCTL, LALT_T(KC_BSPC), LT(_MUS,KC_SPC), KC_NO, LT(_NUM,KC_ENT), LT(_SYMB,KC_DEL) ), - [_SYMB] = LAYOUT( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, XXXXXXX, XXXXXXX, KC_EQL, KC_MINS, - XXXXXXX, KC_F5, KC_F6, KC_F7, KC_F8, KC_LBRC, KC_RBRC, XXXXXXX , KC_GRV , KC_BSLS, - KC_LSFT, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_RSFT, - XXXXXXX, KC_LALT, XXXXXXX, XXXXXXX, XXXXXXX, KC_NO, _______, KC_NO + [_NUM] = LAYOUT( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_TAB, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_QUOT, + KC_LSFT, XXXXXXX, KC_MPRV, KC_MNXT, RESET, KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_RSFT, + XXXXXXX, KC_NO, + KC_LCTL, KC_LALT, XXXXXXX, KC_NO, _______, KC_ENT + ), + [_SYMB] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, XXXXXXX, XXXXXXX, KC_EQL, KC_MINS, + XXXXXXX, KC_F5, KC_F6, KC_F7, KC_F8, KC_LBRC, KC_RBRC, XXXXXXX, KC_GRV, KC_BSLS, + KC_LSFT, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_RSFT, + XXXXXXX, KC_NO, + KC_LALT, XXXXXXX, XXXXXXX, XXXXXXX, KC_NO, _______ ), [_MUS] = LAYOUT( - KC_LCTL, XXXXXXX, XXXXXXX, XXXXXXX,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - KC_LALT, KC_BTN3, KC_BTN2, KC_BTN1 , BALL_SCR, XXXXXXX, XXXXXXX, XXXXXXX , XXXXXXX , XXXXXXX, - KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + KC_LCTL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + KC_LALT, KC_BTN3, KC_BTN2, KC_BTN1, BALL_SCR, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX ), [_ADJ] = LAYOUT( - RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BALL_HUI, BALL_WHT, BALL_DEC, XXXXXXX, XXXXXXX, - EEP_RST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_MOD, RGB_HUI, RGB_SAI , RGB_VAI , RGB_TOG, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______ + RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BALL_HUI, BALL_WHT, BALL_DEC, XXXXXXX, XXXXXXX, + EEP_RST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, + XXXXXXX, _______, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX ) }; diff --git a/keyboards/draculad/readme.md b/keyboards/draculad/readme.md index f1fd546cd2..585d6cb5fc 100644 --- a/keyboards/draculad/readme.md +++ b/keyboards/draculad/readme.md @@ -3,31 +3,29 @@ ![DracuLad](https://github.com/mangoiv/draculad/blob/master/pictures/rev1/both_sides_showcase.jpg?raw=true) *A 34-36 key split keyboard* -- 36 keys, two of them can be replaced by rotary encoders making it support 34-36 keys and 2-4 encoders. -- bright RGB Underglow with ws2812b LEDs -- one ssd1306 OLED per side -- aggressive pinky stagger similar to the kyria but with an alternative thumb cluster to raise comfort for large hands -- support for mx and choc switches +- 36 keys, two of them can be replaced by rotary encoders making it support 34-36 keys and 2-4 encoders. +- bright RGB Underglow with WS2812B LEDs +- one SSD1306 OLED per side +- aggressive pinky stagger similar to the Kyria but with an alternative thumb cluster to raise comfort for large hands +- support for MX and Choc switches -* keyboard Maintainer: [MangoIV](https://github.com/MangoIV) -* Hardware Supported: [DracuLad PCBs and cases](https://github.com/MangoIV/dracuLad), [the pimoroni trackball](https://shop.pimoroni.com/products/trackball-breakout) -* Hardware availability: [check my github](https://github.com/MangoIV) +* Keyboard Maintainer: [MangoIV](https://github.com/MangoIV) +* Hardware Supported: [DracuLad PCBs and cases](https://github.com/MangoIV/dracuLad), [the Pimoroni trackball](https://shop.pimoroni.com/products/trackball-breakout) +* Hardware Availability: [MangoIV's GitHub](https://github.com/MangoIV/dracuLad) Make example for this keyboard (after setting up your build env): - + make draculad:default - -or for the version using the pimoroni trackball + +or for the version using the Pimoroni trackball: make draculad:pimoroni - -Flashing example for dfu and catarina respectively (replace default with the name of your keymap) - - make draculad:default:dfu - - make draculad:default:flash - -When flashing the first time using handedness by eeprom, use the [qmk guide for that topic](https://docs.qmk.fm/#/feature_split_keyboard?id=handedness-by-eeprom) +Flashing example for DFU and Caterina respectively (replace `default` with the name of your keymap): + + make draculad:default:dfu + make draculad:default:flash + +When flashing the first time using handedness by EEPROM, use the [QMK guide for that topic](https://docs.qmk.fm/#/feature_split_keyboard?id=handedness-by-eeprom). See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). From 489c814a485cf3165927a93b6d29ad6c1eeac017 Mon Sep 17 00:00:00 2001 From: David Fryer Date: Fri, 30 Apr 2021 13:45:36 -0400 Subject: [PATCH 303/613] Add breeze variants (#12596) Co-authored-by: Drashna Jaelre Co-authored-by: Ryan Co-authored-by: Adrian <42110361+xSteins@users.noreply.github.com> --- .../breeze/keymaps/eithanshavit/keymap.c | 2 +- keyboards/afternoonlabs/breeze/rev1/config.h | 2 +- .../afternoonlabs/southern_breeze/config.h | 22 +++++ .../southern_breeze/keymaps/default/keymap.c | 72 ++++++++++++++ .../southern_breeze/keymaps/default/readme.md | 3 + .../southern_breeze/keymaps/default/rules.mk | 9 ++ .../southern_breeze/keymaps/via/keymap.c | 86 +++++++++++++++++ .../southern_breeze/keymaps/via/readme.md | 3 + .../southern_breeze/keymaps/via/rules.mk | 10 ++ .../southern_breeze/rev1/config.h | 49 ++++++++++ .../southern_breeze/rev1/info.json | 84 +++++++++++++++++ .../southern_breeze/rev1/readme.md | 15 +++ .../afternoonlabs/southern_breeze/rev1/rev1.c | 17 ++++ .../afternoonlabs/southern_breeze/rev1/rev1.h | 41 ++++++++ .../southern_breeze/rev1/rules.mk | 23 +++++ .../southern_breeze/southern_breeze.c | 17 ++++ .../southern_breeze/southern_breeze.h | 21 +++++ .../afternoonlabs/summer_breeze/config.h | 22 +++++ .../summer_breeze/keymaps/default/keymap.c | 71 ++++++++++++++ .../summer_breeze/keymaps/default/readme.md | 3 + .../summer_breeze/keymaps/default/rules.mk | 9 ++ .../summer_breeze/keymaps/via/keymap.c | 86 +++++++++++++++++ .../summer_breeze/keymaps/via/readme.md | 3 + .../summer_breeze/keymaps/via/rules.mk | 10 ++ .../afternoonlabs/summer_breeze/rev1/config.h | 49 ++++++++++ .../summer_breeze/rev1/info.json | 94 +++++++++++++++++++ .../summer_breeze/rev1/readme.md | 15 +++ .../afternoonlabs/summer_breeze/rev1/rev1.c | 17 ++++ .../afternoonlabs/summer_breeze/rev1/rev1.h | 41 ++++++++ .../afternoonlabs/summer_breeze/rev1/rules.mk | 23 +++++ .../summer_breeze/summer_breeze.c | 17 ++++ .../summer_breeze/summer_breeze.h | 21 +++++ 32 files changed, 955 insertions(+), 2 deletions(-) create mode 100644 keyboards/afternoonlabs/southern_breeze/config.h create mode 100644 keyboards/afternoonlabs/southern_breeze/keymaps/default/keymap.c create mode 100644 keyboards/afternoonlabs/southern_breeze/keymaps/default/readme.md create mode 100644 keyboards/afternoonlabs/southern_breeze/keymaps/default/rules.mk create mode 100644 keyboards/afternoonlabs/southern_breeze/keymaps/via/keymap.c create mode 100644 keyboards/afternoonlabs/southern_breeze/keymaps/via/readme.md create mode 100644 keyboards/afternoonlabs/southern_breeze/keymaps/via/rules.mk create mode 100644 keyboards/afternoonlabs/southern_breeze/rev1/config.h create mode 100644 keyboards/afternoonlabs/southern_breeze/rev1/info.json create mode 100644 keyboards/afternoonlabs/southern_breeze/rev1/readme.md create mode 100644 keyboards/afternoonlabs/southern_breeze/rev1/rev1.c create mode 100644 keyboards/afternoonlabs/southern_breeze/rev1/rev1.h create mode 100644 keyboards/afternoonlabs/southern_breeze/rev1/rules.mk create mode 100644 keyboards/afternoonlabs/southern_breeze/southern_breeze.c create mode 100644 keyboards/afternoonlabs/southern_breeze/southern_breeze.h create mode 100644 keyboards/afternoonlabs/summer_breeze/config.h create mode 100644 keyboards/afternoonlabs/summer_breeze/keymaps/default/keymap.c create mode 100644 keyboards/afternoonlabs/summer_breeze/keymaps/default/readme.md create mode 100644 keyboards/afternoonlabs/summer_breeze/keymaps/default/rules.mk create mode 100644 keyboards/afternoonlabs/summer_breeze/keymaps/via/keymap.c create mode 100644 keyboards/afternoonlabs/summer_breeze/keymaps/via/readme.md create mode 100644 keyboards/afternoonlabs/summer_breeze/keymaps/via/rules.mk create mode 100644 keyboards/afternoonlabs/summer_breeze/rev1/config.h create mode 100644 keyboards/afternoonlabs/summer_breeze/rev1/info.json create mode 100644 keyboards/afternoonlabs/summer_breeze/rev1/readme.md create mode 100644 keyboards/afternoonlabs/summer_breeze/rev1/rev1.c create mode 100644 keyboards/afternoonlabs/summer_breeze/rev1/rev1.h create mode 100644 keyboards/afternoonlabs/summer_breeze/rev1/rules.mk create mode 100644 keyboards/afternoonlabs/summer_breeze/summer_breeze.c create mode 100644 keyboards/afternoonlabs/summer_breeze/summer_breeze.h diff --git a/keyboards/afternoonlabs/breeze/keymaps/eithanshavit/keymap.c b/keyboards/afternoonlabs/breeze/keymaps/eithanshavit/keymap.c index 099d9b1ab3..61db52392e 100644 --- a/keyboards/afternoonlabs/breeze/keymaps/eithanshavit/keymap.c +++ b/keyboards/afternoonlabs/breeze/keymaps/eithanshavit/keymap.c @@ -70,4 +70,4 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘ ) -}; \ No newline at end of file +}; diff --git a/keyboards/afternoonlabs/breeze/rev1/config.h b/keyboards/afternoonlabs/breeze/rev1/config.h index c3b9b9063f..383a16d455 100644 --- a/keyboards/afternoonlabs/breeze/rev1/config.h +++ b/keyboards/afternoonlabs/breeze/rev1/config.h @@ -1,4 +1,4 @@ -/* Copyright 2021 eithanshavit +/* Copyright 2021 Afternoon Labs * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/keyboards/afternoonlabs/southern_breeze/config.h b/keyboards/afternoonlabs/southern_breeze/config.h new file mode 100644 index 0000000000..1197fa2257 --- /dev/null +++ b/keyboards/afternoonlabs/southern_breeze/config.h @@ -0,0 +1,22 @@ +/* Copyright 2021 Afternoon Labs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION diff --git a/keyboards/afternoonlabs/southern_breeze/keymaps/default/keymap.c b/keyboards/afternoonlabs/southern_breeze/keymaps/default/keymap.c new file mode 100644 index 0000000000..5dbc6139a5 --- /dev/null +++ b/keyboards/afternoonlabs/southern_breeze/keymaps/default/keymap.c @@ -0,0 +1,72 @@ +/* Copyright 2021 Afternoon Labs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum layer_names { + _MAIN, + _LOWER, + _RAISE, +}; + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_MAIN] = LAYOUT( + //┌────────┬────────┬────────â”┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┠+ KC_MINS, KC_EQL, KC_GRV, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + KC_LBRC, KC_RBRC, KC_BSLS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + KC_UP, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + KC_LEFT, KC_DOWN, KC_RIGHT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + //└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘ + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_ENT, RAISE, LOWER, XXXXXXX + // └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘ + ), + + [_LOWER] = LAYOUT( + //┌────────┬────────┬────────â”┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┠+ KC_MUTE, KC_VOLD, KC_VOLU, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘ + _______, _______, _______, _______, _______, _______, _______, _______ + // └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘ + ), + + [_RAISE] = LAYOUT( + //┌────────┬────────┬────────â”┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┠+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PEQL, KC_PSLS, KC_PAST, KC_PMNS, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PPLS, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, _______, + //└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘ + _______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT + // └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘ + ), + +}; diff --git a/keyboards/afternoonlabs/southern_breeze/keymaps/default/readme.md b/keyboards/afternoonlabs/southern_breeze/keymaps/default/readme.md new file mode 100644 index 0000000000..1a9ec11fdc --- /dev/null +++ b/keyboards/afternoonlabs/southern_breeze/keymaps/default/readme.md @@ -0,0 +1,3 @@ +# Default Southern Breeze Layout + +This is the default suggested layout for the Southern Breeze Split Keyboard (with the arrow cluster on the left half). diff --git a/keyboards/afternoonlabs/southern_breeze/keymaps/default/rules.mk b/keyboards/afternoonlabs/southern_breeze/keymaps/default/rules.mk new file mode 100644 index 0000000000..51cdf0b040 --- /dev/null +++ b/keyboards/afternoonlabs/southern_breeze/keymaps/default/rules.mk @@ -0,0 +1,9 @@ +# LTO: link time optimization makes the build take slightly longer +# but makes the resulting .hex file smaller, which allows you to +# fit more features into smaller MCUs: +LTO_ENABLE = yes +# Support for these features make the hex file larger, but we want 'em: +MOUSEKEY_ENABLE = yes # Allow mapping of mouse control keys +EXTRAKEY_ENABLE = yes # Allow audio & system control keys +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = yes # Support USB N-key roll over. diff --git a/keyboards/afternoonlabs/southern_breeze/keymaps/via/keymap.c b/keyboards/afternoonlabs/southern_breeze/keymaps/via/keymap.c new file mode 100644 index 0000000000..691d52315c --- /dev/null +++ b/keyboards/afternoonlabs/southern_breeze/keymaps/via/keymap.c @@ -0,0 +1,86 @@ +/* Copyright 2021 Afternoon Labs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum layer_names { + _MAIN, + _LOWER, + _RAISE, +}; + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_MAIN] = LAYOUT( + //┌────────┬────────┬────────â”┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┠+ KC_MINS, KC_EQL, KC_GRV, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + KC_LBRC, KC_RBRC, KC_BSLS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + KC_UP, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + KC_LEFT, KC_DOWN, KC_RIGHT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + //└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘ + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_ENT, RAISE, LOWER, XXXXXXX + // └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘ + ), + + [_LOWER] = LAYOUT( + //┌────────┬────────┬────────â”┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┠+ KC_MUTE, KC_VOLD, KC_VOLU, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘ + _______, _______, _______, _______, _______, _______, _______, _______ + // └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘ + ), + + [_RAISE] = LAYOUT( + //┌────────┬────────┬────────â”┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┠+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PEQL, KC_PSLS, KC_PAST, KC_PMNS, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PPLS, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, _______, + //└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘ + _______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT + // └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘ + ), + + [3] = LAYOUT( + //┌────────┬────────┬────────â”┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┠+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘ + _______, _______, _______, _______, _______, _______, _______, _______ + // └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘ + ) + +}; diff --git a/keyboards/afternoonlabs/southern_breeze/keymaps/via/readme.md b/keyboards/afternoonlabs/southern_breeze/keymaps/via/readme.md new file mode 100644 index 0000000000..1a9ec11fdc --- /dev/null +++ b/keyboards/afternoonlabs/southern_breeze/keymaps/via/readme.md @@ -0,0 +1,3 @@ +# Default Southern Breeze Layout + +This is the default suggested layout for the Southern Breeze Split Keyboard (with the arrow cluster on the left half). diff --git a/keyboards/afternoonlabs/southern_breeze/keymaps/via/rules.mk b/keyboards/afternoonlabs/southern_breeze/keymaps/via/rules.mk new file mode 100644 index 0000000000..5b5de19eed --- /dev/null +++ b/keyboards/afternoonlabs/southern_breeze/keymaps/via/rules.mk @@ -0,0 +1,10 @@ +VIA_ENABLE = yes +# LTO: link time optimization makes the build take slightly longer +# but makes the resulting .hex file smaller, which allows you to +# fit more features into smaller MCUs: +LTO_ENABLE = yes +# Support for these features make the hex file larger, but we want 'em: +MOUSEKEY_ENABLE = yes # Allow mapping of mouse control keys +EXTRAKEY_ENABLE = yes # Allow audio & system control keys +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = yes # Support USB N-key roll over. diff --git a/keyboards/afternoonlabs/southern_breeze/rev1/config.h b/keyboards/afternoonlabs/southern_breeze/rev1/config.h new file mode 100644 index 0000000000..e1533a6fa0 --- /dev/null +++ b/keyboards/afternoonlabs/southern_breeze/rev1/config.h @@ -0,0 +1,49 @@ +/* Copyright 2021 Afternoon Labs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x616C +#define PRODUCT_ID 0x0005 +#define DEVICE_VER 0x0001 +#define MANUFACTURER AfternoonLabs +#define PRODUCT Southern Breeze + +/* key matrix size */ +// Rows are doubled-up +#define MATRIX_ROWS 10 +#define MATRIX_COLS 9 + +// wiring of each half +#define MATRIX_ROW_PINS \ + { F4, F5, F6, F7, B1 } +#define MATRIX_COL_PINS \ + { B2, D1, D0, D4, C6, D7, E6, B4, B5 } + +#define SPLIT_HAND_PIN B3 + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +#define SOFT_SERIAL_PIN D2 + +#define DIODE_DIRECTION COL2ROW + +#define BOOTMAGIC_LITE_ROW_RIGHT 0 +#define BOOTMAGIC_LITE_COLUMN_RIGHT 5 +#define BOOTMAGIC_LITE_ROW_LEFT 0 +#define BOOTMAGIC_LITE_COLUMN_LEFT 5 diff --git a/keyboards/afternoonlabs/southern_breeze/rev1/info.json b/keyboards/afternoonlabs/southern_breeze/rev1/info.json new file mode 100644 index 0000000000..2e88c27867 --- /dev/null +++ b/keyboards/afternoonlabs/southern_breeze/rev1/info.json @@ -0,0 +1,84 @@ +{ + "keyboard_name": "Southern Breeze", + "url": "afternoonlabs.com/breeze", + "productId": "0x0005", + "maintainer": "eithanshavit", + "width": 19, + "height": 6, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0.375}, + {"x":1, "y":0.375}, + {"x":2, "y":0.375}, + {"x":3.25, "y":0.375}, + {"x":4.25, "y":0.375}, + {"x":5.25, "y":0.125}, + {"x":6.25, "y":0}, + {"x":7.25, "y":0.125}, + {"x":8.25, "y":0.25}, + {"x":13, "y":0.25}, + {"x":14, "y":0.125}, + {"x":15, "y":0}, + {"x":16, "y":0.125}, + {"x":17, "y":0.375}, + {"x":18, "y":0.375}, + + {"x":0, "y":1.375}, + {"x":1, "y":1.375}, + {"x":2, "y":1.375}, + {"x":3.25, "y":1.375}, + {"x":4.25, "y":1.375}, + {"x":5.25, "y":1.125}, + {"x":6.25, "y":1}, + {"x":7.25, "y":1.125}, + {"x":8.25, "y":1.25}, + {"x":13, "y":1.25}, + {"x":14, "y":1.125}, + {"x":15, "y":1}, + {"x":16, "y":1.125}, + {"x":17, "y":1.375}, + {"x":18, "y":1.375}, + + {"x":1, "y":2.375}, + {"x":3.25, "y":2.375}, + {"x":4.25, "y":2.375}, + {"x":5.25, "y":2.125}, + {"x":6.25, "y":2}, + {"x":7.25, "y":2.125}, + {"x":8.25, "y":2.25}, + {"x":13, "y":2.25}, + {"x":14, "y":2.125}, + {"x":15, "y":2}, + {"x":16, "y":2.125}, + {"x":17, "y":2.375}, + {"x":18, "y":2.375}, + + {"x":0, "y":3.375}, + {"x":1, "y":3.375}, + {"x":2, "y":3.375}, + {"x":3.25, "y":3.375}, + {"x":4.25, "y":3.375}, + {"x":5.25, "y":3.125}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3.125}, + {"x":8.25, "y":3.25}, + {"x":13, "y":3.25}, + {"x":14, "y":3.125}, + {"x":15, "y":3}, + {"x":16, "y":3.125}, + {"x":17, "y":3.375}, + {"x":18, "y":3.375}, + + {"x":5.75, "y":4.25}, + {"x":6.75, "y":4.25}, + {"x":7.75, "y":4.5}, + {"x":9.5, "y":3.75, "h":2, "r":30}, + {"x":11.75, "y":3.75, "h":2, "r":-30}, + {"x":13.5, "y":4.5}, + {"x":14.5, "y":4.25}, + {"x":15.5, "y":4.25} + ] + } + } +} diff --git a/keyboards/afternoonlabs/southern_breeze/rev1/readme.md b/keyboards/afternoonlabs/southern_breeze/rev1/readme.md new file mode 100644 index 0000000000..bb81a2a441 --- /dev/null +++ b/keyboards/afternoonlabs/southern_breeze/rev1/readme.md @@ -0,0 +1,15 @@ +# Southern Breeze + +![Breeze](https://i.imgur.com/O8FJWD6.jpeg) + +Split ergonomics meets productivity. Southern Breeze Rev1 is a split keyboard with 6×4 keys, 4 key thumb cluster, arrow keys, and a 6 key macro cluster, with ortholinear column-staggered. + +* Keyboard Maintainer: [Eithan Shavit](https://github.com/eithanshavit) +* Hardware Supported: Breeze Rev1 PCB +* Hardware Availability: Coming soon + +Make example for this keyboard (after setting up your build environment): + + make afternoonlabs/southern_breeze/rev1:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/afternoonlabs/southern_breeze/rev1/rev1.c b/keyboards/afternoonlabs/southern_breeze/rev1/rev1.c new file mode 100644 index 0000000000..65597253e4 --- /dev/null +++ b/keyboards/afternoonlabs/southern_breeze/rev1/rev1.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Afternoon Labs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "rev1.h" diff --git a/keyboards/afternoonlabs/southern_breeze/rev1/rev1.h b/keyboards/afternoonlabs/southern_breeze/rev1/rev1.h new file mode 100644 index 0000000000..eeecc06308 --- /dev/null +++ b/keyboards/afternoonlabs/southern_breeze/rev1/rev1.h @@ -0,0 +1,41 @@ +/* Copyright 2021 Afternoon Labs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "southern_breeze.h" + +#include "quantum.h" + +#define LAYOUT( \ + LW00, LW01, LW02, L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \ + LW10, LW11, LW12, L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ + LWUP, L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \ + LWLT, LWDN, LWRT, L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, \ + LT0, LT1, LT2, LT3, RT0, RT1, RT2, RT3 \ +) \ +{ \ + { L05, L04, L03, L02, L01, L00, LW02, LW01, LW00 }, \ + { L15, L14, L13, L12, L11, L10, LW12, LW11, LW10 }, \ + { L25, L24, L23, L22, L21, L20, KC_NO, LWUP, KC_NO }, \ + { L35, L34, L33, L32, L31, L30, LWRT, LWDN, LWLT }, \ + { LT3, LT2, LT1, LT0, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ + { R00, R01, R02, R03, R04, R05, KC_NO, KC_NO, KC_NO }, \ + { R10, R11, R12, R13, R14, R15, KC_NO, KC_NO, KC_NO }, \ + { R20, R21, R22, R23, R24, R25, KC_NO, KC_NO, KC_NO }, \ + { R30, R31, R32, R33, R34, R35, KC_NO, KC_NO, KC_NO }, \ + { RT0, RT1, RT2, RT3, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ +} diff --git a/keyboards/afternoonlabs/southern_breeze/rev1/rules.mk b/keyboards/afternoonlabs/southern_breeze/rev1/rules.mk new file mode 100644 index 0000000000..f73350f589 --- /dev/null +++ b/keyboards/afternoonlabs/southern_breeze/rev1/rules.mk @@ -0,0 +1,23 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = no # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +SPLIT_KEYBOARD = yes diff --git a/keyboards/afternoonlabs/southern_breeze/southern_breeze.c b/keyboards/afternoonlabs/southern_breeze/southern_breeze.c new file mode 100644 index 0000000000..cac867cafa --- /dev/null +++ b/keyboards/afternoonlabs/southern_breeze/southern_breeze.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Afternoon Labs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "southern_breeze.h" diff --git a/keyboards/afternoonlabs/southern_breeze/southern_breeze.h b/keyboards/afternoonlabs/southern_breeze/southern_breeze.h new file mode 100644 index 0000000000..a6923d6b1e --- /dev/null +++ b/keyboards/afternoonlabs/southern_breeze/southern_breeze.h @@ -0,0 +1,21 @@ +/* Copyright 2021 Afternoon Labs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#ifdef KEYBOARD_afternoonlabs_southern_breeze_rev1 +# include "rev1.h" +#endif diff --git a/keyboards/afternoonlabs/summer_breeze/config.h b/keyboards/afternoonlabs/summer_breeze/config.h new file mode 100644 index 0000000000..1197fa2257 --- /dev/null +++ b/keyboards/afternoonlabs/summer_breeze/config.h @@ -0,0 +1,22 @@ +/* Copyright 2021 Afternoon Labs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION diff --git a/keyboards/afternoonlabs/summer_breeze/keymaps/default/keymap.c b/keyboards/afternoonlabs/summer_breeze/keymaps/default/keymap.c new file mode 100644 index 0000000000..481c6c01d6 --- /dev/null +++ b/keyboards/afternoonlabs/summer_breeze/keymaps/default/keymap.c @@ -0,0 +1,71 @@ +/* Copyright 2021 Afternoon Labs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum layer_names { + _MAIN, + _LOWER, + _RAISE, +}; + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_MAIN] = LAYOUT( + //┌────────┬────────┬────────â”┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”┌────────┬────────┬────────┠+ _______, KC_WH_U, _______, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_MINS, KC_EQL, KC_GRV, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + KC_BTN1, KC_WH_D, KC_BTN2, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_LBRC, KC_RBRC, KC_BSLS, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + KC_MS_U, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_UP, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + KC_MS_L, KC_MS_D, KC_MS_R, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_LEFT, KC_DOWN, KC_RIGHT, + //└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘ + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_ENT, RAISE, LOWER, XXXXXXX + // └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘ + ), + + [_LOWER] = LAYOUT( + //┌────────┬────────┬────────â”┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”┌────────┬────────┬────────┠+ _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, KC_BTN3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘ + _______, _______, _______, _______, _______, _______, _______, _______ + // └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘ + ), + + [_RAISE] = LAYOUT( + //┌────────┬────────┬────────â”┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”┌────────┬────────┬────────┠+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PEQL, KC_PSLS, KC_PAST, KC_PMNS, _______, _______, _______, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PPLS, _______, _______, _______, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, _______, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, _______, _______, _______, _______, + //└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘ + _______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT + // └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘ + ), +}; diff --git a/keyboards/afternoonlabs/summer_breeze/keymaps/default/readme.md b/keyboards/afternoonlabs/summer_breeze/keymaps/default/readme.md new file mode 100644 index 0000000000..88c49403de --- /dev/null +++ b/keyboards/afternoonlabs/summer_breeze/keymaps/default/readme.md @@ -0,0 +1,3 @@ +# Default Summer Breeze Layout + +This is the default suggested layout for the Summer Breeze Split Keyboard (with both arrow clusters). diff --git a/keyboards/afternoonlabs/summer_breeze/keymaps/default/rules.mk b/keyboards/afternoonlabs/summer_breeze/keymaps/default/rules.mk new file mode 100644 index 0000000000..51cdf0b040 --- /dev/null +++ b/keyboards/afternoonlabs/summer_breeze/keymaps/default/rules.mk @@ -0,0 +1,9 @@ +# LTO: link time optimization makes the build take slightly longer +# but makes the resulting .hex file smaller, which allows you to +# fit more features into smaller MCUs: +LTO_ENABLE = yes +# Support for these features make the hex file larger, but we want 'em: +MOUSEKEY_ENABLE = yes # Allow mapping of mouse control keys +EXTRAKEY_ENABLE = yes # Allow audio & system control keys +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = yes # Support USB N-key roll over. diff --git a/keyboards/afternoonlabs/summer_breeze/keymaps/via/keymap.c b/keyboards/afternoonlabs/summer_breeze/keymaps/via/keymap.c new file mode 100644 index 0000000000..3fe1a033fd --- /dev/null +++ b/keyboards/afternoonlabs/summer_breeze/keymaps/via/keymap.c @@ -0,0 +1,86 @@ +/* Copyright 2021 Afternoon Labs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum layer_names { + _MAIN, + _LOWER, + _RAISE, +}; + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_MAIN] = LAYOUT( + //┌────────┬────────┬────────â”┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”┌────────┬────────┬────────┠+ _______, KC_WH_U, _______, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_MINS, KC_EQL, KC_GRV, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + KC_BTN1, KC_WH_D, KC_BTN2, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_LBRC, KC_RBRC, KC_BSLS, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + KC_MS_U, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_UP, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + KC_MS_L, KC_MS_D, KC_MS_R, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_LEFT, KC_DOWN, KC_RIGHT, + //└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘ + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_ENT, RAISE, LOWER, XXXXXXX + // └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘ + ), + + [_LOWER] = LAYOUT( + //┌────────┬────────┬────────â”┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”┌────────┬────────┬────────┠+ _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, KC_BTN3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘ + _______, _______, _______, _______, _______, _______, _______, _______ + // └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘ + ), + + [_RAISE] = LAYOUT( + //┌────────┬────────┬────────â”┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”┌────────┬────────┬────────┠+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PEQL, KC_PSLS, KC_PAST, KC_PMNS, _______, _______, _______, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PPLS, _______, _______, _______, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, _______, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, _______, _______, _______, _______, + //└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘ + _______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT + // └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘ + ), + + [3] = LAYOUT( + //┌────────┬────────┬────────â”┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”┌────────┬────────┬────────┠+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘ + _______, _______, _______, _______, _______, _______, _______, _______ + // └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘ + ) + +}; diff --git a/keyboards/afternoonlabs/summer_breeze/keymaps/via/readme.md b/keyboards/afternoonlabs/summer_breeze/keymaps/via/readme.md new file mode 100644 index 0000000000..88c49403de --- /dev/null +++ b/keyboards/afternoonlabs/summer_breeze/keymaps/via/readme.md @@ -0,0 +1,3 @@ +# Default Summer Breeze Layout + +This is the default suggested layout for the Summer Breeze Split Keyboard (with both arrow clusters). diff --git a/keyboards/afternoonlabs/summer_breeze/keymaps/via/rules.mk b/keyboards/afternoonlabs/summer_breeze/keymaps/via/rules.mk new file mode 100644 index 0000000000..5b5de19eed --- /dev/null +++ b/keyboards/afternoonlabs/summer_breeze/keymaps/via/rules.mk @@ -0,0 +1,10 @@ +VIA_ENABLE = yes +# LTO: link time optimization makes the build take slightly longer +# but makes the resulting .hex file smaller, which allows you to +# fit more features into smaller MCUs: +LTO_ENABLE = yes +# Support for these features make the hex file larger, but we want 'em: +MOUSEKEY_ENABLE = yes # Allow mapping of mouse control keys +EXTRAKEY_ENABLE = yes # Allow audio & system control keys +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = yes # Support USB N-key roll over. diff --git a/keyboards/afternoonlabs/summer_breeze/rev1/config.h b/keyboards/afternoonlabs/summer_breeze/rev1/config.h new file mode 100644 index 0000000000..86c40389aa --- /dev/null +++ b/keyboards/afternoonlabs/summer_breeze/rev1/config.h @@ -0,0 +1,49 @@ +/* Copyright 2021 Afternoon Labs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x616C +#define PRODUCT_ID 0x0004 +#define DEVICE_VER 0x0001 +#define MANUFACTURER AfternoonLabs +#define PRODUCT Summer Breeze + +/* key matrix size */ +// Rows are doubled-up +#define MATRIX_ROWS 10 +#define MATRIX_COLS 9 + +// wiring of each half +#define MATRIX_ROW_PINS \ + { F4, F5, F6, F7, B1 } +#define MATRIX_COL_PINS \ + { B2, D1, D0, D4, C6, D7, E6, B4, B5 } + +#define SPLIT_HAND_PIN B3 + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +#define SOFT_SERIAL_PIN D2 + +#define DIODE_DIRECTION COL2ROW + +#define BOOTMAGIC_LITE_ROW_RIGHT 0 +#define BOOTMAGIC_LITE_COLUMN_RIGHT 5 +#define BOOTMAGIC_LITE_ROW_LEFT 0 +#define BOOTMAGIC_LITE_COLUMN_LEFT 5 diff --git a/keyboards/afternoonlabs/summer_breeze/rev1/info.json b/keyboards/afternoonlabs/summer_breeze/rev1/info.json new file mode 100644 index 0000000000..8a8c3de477 --- /dev/null +++ b/keyboards/afternoonlabs/summer_breeze/rev1/info.json @@ -0,0 +1,94 @@ +{ + "keyboard_name": "Summer Breeze", + "url": "afternoonlabs.com/breeze", + "productId": "0x0004", + "maintainer": "eithanshavit", + "width": 19, + "height": 6, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0.375}, + {"x":1, "y":0.375}, + {"x":2, "y":0.375}, + {"x":3.25, "y":0.375}, + {"x":4.25, "y":0.375}, + {"x":5.25, "y":0.125}, + {"x":6.25, "y":0}, + {"x":7.25, "y":0.125}, + {"x":8.25, "y":0.25}, + {"x":13, "y":0.25}, + {"x":14, "y":0.125}, + {"x":15, "y":0}, + {"x":16, "y":0.125}, + {"x":17, "y":0.375}, + {"x":18, "y":0.375}, + {"x":19.25, "y":0.375}, + {"x":20.25, "y":0.375}, + {"x":21.25, "y":0.375}, + + {"x":0, "y":1.375}, + {"x":1, "y":1.375}, + {"x":2, "y":1.375}, + {"x":3.25, "y":1.375}, + {"x":4.25, "y":1.375}, + {"x":5.25, "y":1.125}, + {"x":6.25, "y":1}, + {"x":7.25, "y":1.125}, + {"x":8.25, "y":1.25}, + {"x":13, "y":1.25}, + {"x":14, "y":1.125}, + {"x":15, "y":1}, + {"x":16, "y":1.125}, + {"x":17, "y":1.375}, + {"x":18, "y":1.375}, + {"x":19.25, "y":1.375}, + {"x":20.25, "y":1.375}, + {"x":21.25, "y":1.375}, + + {"x":1, "y":2.375}, + {"x":3.25, "y":2.375}, + {"x":4.25, "y":2.375}, + {"x":5.25, "y":2.125}, + {"x":6.25, "y":2}, + {"x":7.25, "y":2.125}, + {"x":8.25, "y":2.25}, + {"x":13, "y":2.25}, + {"x":14, "y":2.125}, + {"x":15, "y":2}, + {"x":16, "y":2.125}, + {"x":17, "y":2.375}, + {"x":18, "y":2.375}, + {"x":20.25, "y":2.375}, + + {"x":0, "y":3.375}, + {"x":1, "y":3.375}, + {"x":2, "y":3.375}, + {"x":3.25, "y":3.375}, + {"x":4.25, "y":3.375}, + {"x":5.25, "y":3.125}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3.125}, + {"x":8.25, "y":3.25}, + {"x":13, "y":3.25}, + {"x":14, "y":3.125}, + {"x":15, "y":3}, + {"x":16, "y":3.125}, + {"x":17, "y":3.375}, + {"x":18, "y":3.375}, + {"x":19.25, "y":3.375}, + {"x":20.25, "y":3.375}, + {"x":21.25, "y":3.375}, + + {"x":5.75, "y":4.25}, + {"x":6.75, "y":4.25}, + {"x":7.75, "y":4.5}, + {"x":9.5, "y":3.75, "h":2, "r":30}, + {"x":11.75, "y":3.75, "h":2, "r":-30}, + {"x":13.5, "y":4.5}, + {"x":14.5, "y":4.25}, + {"x":15.5, "y":4.25} + ] + } + } +} diff --git a/keyboards/afternoonlabs/summer_breeze/rev1/readme.md b/keyboards/afternoonlabs/summer_breeze/rev1/readme.md new file mode 100644 index 0000000000..5eedb8dd46 --- /dev/null +++ b/keyboards/afternoonlabs/summer_breeze/rev1/readme.md @@ -0,0 +1,15 @@ +# Summer Breeze + +![Breeze](https://i.imgur.com/O8FJWD6.jpeg) + +Split ergonomics meets productivity. Breeze Rev1 is a split keyboard with 6×4 keys, 4 key thumb clusters, arrow keys, and two 6 key macro clusters, with ortholinear column-staggered. + +* Keyboard Maintainer: [Eithan Shavit](https://github.com/eithanshavit) +* Hardware Supported: Breeze Rev1 PCB +* Hardware Availability: Coming soon + +Make example for this keyboard (after setting up your build environment): + + make afternoonlabs/summer_breeze/rev1:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/afternoonlabs/summer_breeze/rev1/rev1.c b/keyboards/afternoonlabs/summer_breeze/rev1/rev1.c new file mode 100644 index 0000000000..65597253e4 --- /dev/null +++ b/keyboards/afternoonlabs/summer_breeze/rev1/rev1.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Afternoon Labs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "rev1.h" diff --git a/keyboards/afternoonlabs/summer_breeze/rev1/rev1.h b/keyboards/afternoonlabs/summer_breeze/rev1/rev1.h new file mode 100644 index 0000000000..d4704638d9 --- /dev/null +++ b/keyboards/afternoonlabs/summer_breeze/rev1/rev1.h @@ -0,0 +1,41 @@ +/* Copyright 2021 Afternoon Labs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "summer_breeze.h" + +#include "quantum.h" + +#define LAYOUT( \ + LW00, LW01, LW02, L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, MC0, MC1, MC2, \ + LW10, LW11, LW12, L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, MC3, MC4, MC5, \ + LW21, L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, AUP, \ + LW30, LW31, LW32, L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, ALT, ADN, ART, \ + LT0, LT1, LT2, LT3, RT0, RT1, RT2, RT3 \ +) \ +{ \ + { L05, L04, L03, L02, L01, L00, LW02, LW01, LW00 }, \ + { L15, L14, L13, L12, L11, L10, LW12, LW11, LW10 }, \ + { L25, L24, L23, L22, L21, L20, KC_NO, LW01, KC_NO }, \ + { L35, L34, L33, L32, L31, L30, LW32, LW31, LW30 }, \ + { LT3, LT2, LT1, LT0, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ + { R00, R01, R02, R03, R04, R05, MC0, MC1, MC2 }, \ + { R10, R11, R12, R13, R14, R15, MC3, MC4, MC5 }, \ + { R20, R21, R22, R23, R24, R25, KC_NO, AUP, KC_NO }, \ + { R30, R31, R32, R33, R34, R35, ALT, ADN, ART }, \ + { RT0, RT1, RT2, RT3, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ +} diff --git a/keyboards/afternoonlabs/summer_breeze/rev1/rules.mk b/keyboards/afternoonlabs/summer_breeze/rev1/rules.mk new file mode 100644 index 0000000000..f73350f589 --- /dev/null +++ b/keyboards/afternoonlabs/summer_breeze/rev1/rules.mk @@ -0,0 +1,23 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = no # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +SPLIT_KEYBOARD = yes diff --git a/keyboards/afternoonlabs/summer_breeze/summer_breeze.c b/keyboards/afternoonlabs/summer_breeze/summer_breeze.c new file mode 100644 index 0000000000..844b8c33a3 --- /dev/null +++ b/keyboards/afternoonlabs/summer_breeze/summer_breeze.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Afternoon Labs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "summer_breeze.h" diff --git a/keyboards/afternoonlabs/summer_breeze/summer_breeze.h b/keyboards/afternoonlabs/summer_breeze/summer_breeze.h new file mode 100644 index 0000000000..0f3776b832 --- /dev/null +++ b/keyboards/afternoonlabs/summer_breeze/summer_breeze.h @@ -0,0 +1,21 @@ +/* Copyright 2021 Afternoon Labs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#ifdef KEYBOARD_afternoonlabs_summer_breeze_rev1 +# include "rev1.h" +#endif From 18dc12cd78448bffe4ad54aa15aa715ee959e64c Mon Sep 17 00:00:00 2001 From: "k.bigwheel" Date: Sat, 1 May 2021 05:23:39 +0900 Subject: [PATCH 304/613] [Keyboard] Fix bootloader rule for meishi2 keyboard (#12740) --- keyboards/meishi2/rules.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/meishi2/rules.mk b/keyboards/meishi2/rules.mk index f1d011ad6a..b828d7c361 100644 --- a/keyboards/meishi2/rules.mk +++ b/keyboards/meishi2/rules.mk @@ -9,7 +9,7 @@ MCU = atmega32u4 # QMK DFU qmk-dfu # ATmega32A bootloadHID # ATmega328P USBasp -BOOTLOADER = atmel-dfu +BOOTLOADER = caterina # Build Options # change yes to no to disable From fc2b51194c58140b096b4c953c703b7f3f6f1fbc Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Sat, 1 May 2021 02:00:04 +0100 Subject: [PATCH 305/613] Allow .h to be optional when going data driven (#12706) * Allow .h to be optional when going data driven * Remove stub files as no longer required * Rename function * Remove include of layouts.h for now * Take advantage of type=keyboard_folder * Take advantage of type=keyboard_folder - kb should still be mandatory --- build_keyboard.mk | 6 ++- keyboards/forever65/forever65.c | 16 ------ keyboards/forever65/forever65.h | 18 ------- lib/python/qmk/cli/generate/__init__.py | 1 + lib/python/qmk/cli/generate/keyboard_h.py | 60 +++++++++++++++++++++++ 5 files changed, 66 insertions(+), 35 deletions(-) delete mode 100644 keyboards/forever65/forever65.c delete mode 100644 keyboards/forever65/forever65.h create mode 100755 lib/python/qmk/cli/generate/keyboard_h.py diff --git a/build_keyboard.mk b/build_keyboard.mk index 366d1f5d2f..ec6b026c50 100644 --- a/build_keyboard.mk +++ b/build_keyboard.mk @@ -205,6 +205,7 @@ endif # # https://docs.qmk.fm/#/feature_layouts?id=tips-for-making-layouts-keyboard-agnostic # +QMK_KEYBOARD_H = $(KEYBOARD_OUTPUT)/src/default_keyboard.h ifneq ("$(wildcard $(KEYBOARD_PATH_1)/$(KEYBOARD_FOLDER_1).h)","") QMK_KEYBOARD_H = $(KEYBOARD_FOLDER_1).h endif @@ -296,10 +297,13 @@ CONFIG_H += $(KEYBOARD_OUTPUT)/src/info_config.h $(KEYBOARD_OUTPUT)/src/layouts. $(KEYBOARD_OUTPUT)/src/info_config.h: $(INFO_JSON_FILES) bin/qmk generate-config-h --quiet --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/info_config.h +$(KEYBOARD_OUTPUT)/src/default_keyboard.h: $(INFO_JSON_FILES) + bin/qmk generate-keyboard-h --quiet --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/default_keyboard.h + $(KEYBOARD_OUTPUT)/src/layouts.h: $(INFO_JSON_FILES) bin/qmk generate-layouts --quiet --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/layouts.h -generated-files: $(KEYBOARD_OUTPUT)/src/info_config.h $(KEYBOARD_OUTPUT)/src/layouts.h +generated-files: $(KEYBOARD_OUTPUT)/src/info_config.h $(KEYBOARD_OUTPUT)/src/default_keyboard.h $(KEYBOARD_OUTPUT)/src/layouts.h .INTERMEDIATE : generated-files diff --git a/keyboards/forever65/forever65.c b/keyboards/forever65/forever65.c deleted file mode 100644 index 940f3300f1..0000000000 --- a/keyboards/forever65/forever65.c +++ /dev/null @@ -1,16 +0,0 @@ -/* Copyright 2021 zvecr - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include "forever65.h" diff --git a/keyboards/forever65/forever65.h b/keyboards/forever65/forever65.h deleted file mode 100644 index 0edfd0b456..0000000000 --- a/keyboards/forever65/forever65.h +++ /dev/null @@ -1,18 +0,0 @@ -/* Copyright 2021 zvecr - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#pragma once - -#include "quantum.h" \ No newline at end of file diff --git a/lib/python/qmk/cli/generate/__init__.py b/lib/python/qmk/cli/generate/__init__.py index f064649ac7..0efca0022d 100644 --- a/lib/python/qmk/cli/generate/__init__.py +++ b/lib/python/qmk/cli/generate/__init__.py @@ -3,6 +3,7 @@ from . import config_h from . import dfu_header from . import docs from . import info_json +from . import keyboard_h from . import layouts from . import rgb_breathe_table from . import rules_mk diff --git a/lib/python/qmk/cli/generate/keyboard_h.py b/lib/python/qmk/cli/generate/keyboard_h.py new file mode 100755 index 0000000000..5a2b3656ec --- /dev/null +++ b/lib/python/qmk/cli/generate/keyboard_h.py @@ -0,0 +1,60 @@ +"""Used by the make system to generate keyboard.h from info.json. +""" +from milc import cli + +from qmk.decorators import automagic_keyboard, automagic_keymap +from qmk.info import info_json +from qmk.keyboard import keyboard_completer, keyboard_folder +from qmk.path import is_keyboard, normpath + + +def would_populate_layout_h(keyboard): + """Detect if a given keyboard is doing data driven layouts + """ + # Build the info.json file + kb_info_json = info_json(keyboard) + + for layout_name in kb_info_json['layouts']: + if kb_info_json['layouts'][layout_name]['c_macro']: + continue + + if 'matrix' not in kb_info_json['layouts'][layout_name]['layout'][0]: + cli.log.debug('%s/%s: No matrix data!', keyboard, layout_name) + continue + + return True + + return False + + +@cli.argument('-o', '--output', arg_only=True, type=normpath, help='File to write to') +@cli.argument('-q', '--quiet', arg_only=True, action='store_true', help="Quiet mode, only output error messages") +@cli.argument('-kb', '--keyboard', type=keyboard_folder, completer=keyboard_completer, required=True, help='Keyboard to generate keyboard.h for.') +@cli.subcommand('Used by the make system to generate keyboard.h from info.json', hidden=True) +@automagic_keyboard +@automagic_keymap +def generate_keyboard_h(cli): + """Generates the keyboard.h file. + """ + has_layout_h = would_populate_layout_h(cli.config.generate_keyboard_h.keyboard) + + # Build the layouts.h file. + keyboard_h_lines = ['/* This file was generated by `qmk generate-keyboard-h`. Do not edit or copy.' ' */', '', '#pragma once', '#include "quantum.h"'] + + if not has_layout_h: + keyboard_h_lines.append('#pragma error(".h is only optional for data driven keyboards - kb.h == bad times")') + + # Show the results + keyboard_h = '\n'.join(keyboard_h_lines) + '\n' + + if cli.args.output: + cli.args.output.parent.mkdir(parents=True, exist_ok=True) + if cli.args.output.exists(): + cli.args.output.replace(cli.args.output.parent / (cli.args.output.name + '.bak')) + cli.args.output.write_text(keyboard_h) + + if not cli.args.quiet: + cli.log.info('Wrote keyboard_h to %s.', cli.args.output) + + else: + print(keyboard_h) From 0fd8faa1adc9d46c17bb54402c5edbacf396c08f Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Sun, 2 May 2021 16:43:40 +0100 Subject: [PATCH 306/613] Fix unused import in recent generation code (#12781) --- lib/python/qmk/cli/generate/keyboard_h.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/python/qmk/cli/generate/keyboard_h.py b/lib/python/qmk/cli/generate/keyboard_h.py index 5a2b3656ec..22500dbc91 100755 --- a/lib/python/qmk/cli/generate/keyboard_h.py +++ b/lib/python/qmk/cli/generate/keyboard_h.py @@ -5,7 +5,7 @@ from milc import cli from qmk.decorators import automagic_keyboard, automagic_keymap from qmk.info import info_json from qmk.keyboard import keyboard_completer, keyboard_folder -from qmk.path import is_keyboard, normpath +from qmk.path import normpath def would_populate_layout_h(keyboard): From 25c97e0019aff7c529b09d177f23fd1271a120dc Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Sun, 2 May 2021 16:59:10 +0100 Subject: [PATCH 307/613] Shim cli to new keyboard script (#12780) * Shim cli to new keyboard script * Shim cli to new keyboard script * Add docs --- docs/cli_commands.md | 12 ++++++++++++ lib/python/qmk/cli/new/__init__.py | 1 + lib/python/qmk/cli/new/keyboard.py | 11 +++++++++++ 3 files changed, 24 insertions(+) create mode 100644 lib/python/qmk/cli/new/keyboard.py diff --git a/docs/cli_commands.md b/docs/cli_commands.md index 6498b28b88..05e9306070 100644 --- a/docs/cli_commands.md +++ b/docs/cli_commands.md @@ -228,6 +228,18 @@ This command is directory aware. It will automatically fill in KEYBOARD if you a qmk list-keymaps -kb planck/ez ``` +## `qmk new-keyboard` + +This command creates a new keyboard based on available templates. + +This command will prompt for input to guide you though the generation process. + +**Usage**: + +``` +qmk new-keyboard +``` + ## `qmk new-keymap` This command creates a new keymap based on a keyboard's existing default keymap. diff --git a/lib/python/qmk/cli/new/__init__.py b/lib/python/qmk/cli/new/__init__.py index c6a26939b8..fe5d6fe483 100644 --- a/lib/python/qmk/cli/new/__init__.py +++ b/lib/python/qmk/cli/new/__init__.py @@ -1 +1,2 @@ +from . import keyboard from . import keymap diff --git a/lib/python/qmk/cli/new/keyboard.py b/lib/python/qmk/cli/new/keyboard.py new file mode 100644 index 0000000000..cab0198fb7 --- /dev/null +++ b/lib/python/qmk/cli/new/keyboard.py @@ -0,0 +1,11 @@ +"""This script automates the creation of keyboards. +""" +from milc import cli + + +@cli.subcommand('Creates a new keyboard') +def new_keyboard(cli): + """Creates a new keyboard + """ + # TODO: replace this bodge to the existing script + cli.run(['util/new_keyboard.sh'], capture_output=False) From 8ed1addd1e3ab783d86ba5d0a0935e2e7ec400f2 Mon Sep 17 00:00:00 2001 From: James Young <18669334+noroadsleft@users.noreply.github.com> Date: Mon, 3 May 2021 17:31:36 -0700 Subject: [PATCH 308/613] Update noroadsleft userspace and keymaps (2021-05-03) (#12796) * Set Dvorak as the standard base layer * Remove unneeded includes * Remove custom handling for Quake 2 Have now rewritten my in-game configuration to use Dvorak mapping instead of QWERTY, which means I don't need any of this stuff. * Clean up comments in KC60 keymap --- .../discipline/keymaps/noroadsleft/keymap.c | 21 ++- .../kbd75/keymaps/noroadsleft/keymap.c | 92 ++---------- keyboards/kc60/keymaps/noroadsleft/keymap.c | 141 +++--------------- keyboards/kc60/keymaps/noroadsleft/readme.md | 48 +++--- users/noroadsleft/readme.md | 8 +- 5 files changed, 68 insertions(+), 242 deletions(-) diff --git a/keyboards/coseyfannitutti/discipline/keymaps/noroadsleft/keymap.c b/keyboards/coseyfannitutti/discipline/keymaps/noroadsleft/keymap.c index 6ad9dd1d38..ed8e98a05d 100644 --- a/keyboards/coseyfannitutti/discipline/keymaps/noroadsleft/keymap.c +++ b/keyboards/coseyfannitutti/discipline/keymaps/noroadsleft/keymap.c @@ -15,11 +15,10 @@ */ #include "noroadsleft.h" -#include "sendstring_dvorak.h" enum layer_names { - _QW, _DV, + _QW, _NP, _FN, _SY @@ -30,14 +29,6 @@ enum layer_names { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QW] = LAYOUT_65_ansi( - KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, - FN_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, - CTL_GRV, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ), - [_DV] = LAYOUT_65_ansi( KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, KC_BSPC, KC_HOME, KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_EQL, KC_BSLS, KC_PGUP, @@ -46,6 +37,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { CTL_GRV, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), + [_QW] = LAYOUT_65_ansi( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + FN_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + CTL_GRV, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [_NP] = LAYOUT_65_ansi( _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_E, KC_F, _______, KC_P4, KC_P5, KC_P6, KC_PAST, KC_PSLS, KC_PEQL, _______, _______, @@ -63,7 +62,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [_SY] = LAYOUT_65_ansi( - TG(_SY), TO(_QW), TO(_DV), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX, DEBUG, XXXXXXX, VRSN, XXXXXXX, XXXXXXX, + TG(_SY), TO(_DV), TO(_QW), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX, DEBUG, XXXXXXX, VRSN, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, M_MDSWP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, diff --git a/keyboards/kbdfans/kbd75/keymaps/noroadsleft/keymap.c b/keyboards/kbdfans/kbd75/keymaps/noroadsleft/keymap.c index 1648224fdf..6a961f1716 100644 --- a/keyboards/kbdfans/kbd75/keymaps/noroadsleft/keymap.c +++ b/keyboards/kbdfans/kbd75/keymaps/noroadsleft/keymap.c @@ -15,8 +15,6 @@ */ #include "noroadsleft.h" -//#include "version.h" -#include "sendstring_dvorak.h" #define LAYOUT_75_ansi_wkl( \ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, \ @@ -35,20 +33,13 @@ } enum layer_names { - _QW, _DV, + _QW, _Q2, _FN, _SY }; -enum custom_keycodes { - GO_Q2 = KEYMAP_SAFE_RANGE, - Q2_ENT -}; - -unsigned char q2InputMode = 0; - // Tap Dance declarations enum tap_dances { LAG, @@ -65,14 +56,6 @@ qk_tap_dance_action_t tap_dance_actions[] = { #define FN_CAPS LT(_FN,KC_CAPS) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QW] = LAYOUT_75_ansi_wkl( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, MO(_SY), - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, - FN_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, - KC_LCTL, TD(LAG), KC_SPC, TD(RAG), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ), [_DV] = LAYOUT_75_ansi_wkl( KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, MO(_SY), KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, KC_BSPC, KC_HOME, @@ -81,11 +64,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, KC_UP, KC_END, KC_LCTL, TD(LAG), KC_SPC, TD(RAG), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), + [_QW] = LAYOUT_75_ansi_wkl( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, MO(_SY), + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + FN_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, TD(LAG), KC_SPC, TD(RAG), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), [_Q2] = LAYOUT_75_ansi_wkl( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - KC_GRV, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, Q2_ENT, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LALT, _______, KC_RALT, _______, _______, _______, _______ ), @@ -98,7 +89,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______ ), [_SY] = LAYOUT_75_ansi_wkl( - _______, TO(_QW), TO(_DV), _______, GO_Q2, _______, _______, _______, RESET, EEP_RST, DEBUG, _______, VRSN, _______, _______, _______, + _______, TO(_DV), TO(_QW), _______, TG(_Q2), _______, _______, _______, RESET, EEP_RST, DEBUG, _______, VRSN, _______, _______, _______, _______, _______, M_MDSWP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, _______, _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -111,62 +102,3 @@ bool led_update_user(led_t led_state) { writePin(B2, !led_state.caps_lock); return false; } - -bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case GO_Q2: - if (record->event.pressed) { - layer_move(_QW); - layer_on(_Q2); - }; - return false; - case Q2_ENT: - if (record->event.pressed) { - if (q2InputMode == 0) { - tap_code(KC_ENT); - q2InputMode = 1; - layer_on(_DV); - //layer_on(_Q2); - } else if (q2InputMode == 1) { - tap_code(KC_ENT); - q2InputMode = 0; - layer_off(_DV); - } else { - tap_code(KC_ENT); - } - }; - return false; - case KC_ESC: - if (record->event.pressed) { - if (q2InputMode > 0) { - tap_code(KC_ESC); - q2InputMode = 0; - layer_off(_DV); - } else { - tap_code(KC_ESC); - } - }; - return false; - case KC_GRV: - if (IS_LAYER_ON(_Q2) == true) { - if (record->event.pressed) { - if (q2InputMode == 0) { - tap_code(KC_GRV); - q2InputMode = 2; - layer_on(_DV); - } else if (q2InputMode == 1) { - tap_code(KC_GRV); - q2InputMode = 2; - } else { - tap_code(KC_GRV); - q2InputMode = 0; - layer_off(_DV); - } - return false; - } - }; - return true; - default: - return true; - } -} diff --git a/keyboards/kc60/keymaps/noroadsleft/keymap.c b/keyboards/kc60/keymaps/noroadsleft/keymap.c index f69371061e..fc56ea54ff 100644 --- a/keyboards/kc60/keymaps/noroadsleft/keymap.c +++ b/keyboards/kc60/keymaps/noroadsleft/keymap.c @@ -15,27 +15,22 @@ */ #include "noroadsleft.h" -#include "sendstring_dvorak.h" -//#include "sendstring_colemak.h" -#include "print.h" -/********************** -** LAYER DEFINITIONS ** -**********************/ +// LAYER DEFINITIONS enum layer_names { // BASE LAYERS - _QW, // QWERTY - _DV, // Dvorak - _CM, // Colemak + _DV, + _QW, + _CM, // QUAKE 2 OVERLAY - _Q2, // Quake 2 + _Q2, // FUNCTION LAYER - _FN, // Function + _FN, // OTHER LAYERS - _NP, // Numpad - _MA, // Macros - _SY, // System + _NP, + _MA, + _SY, }; @@ -44,97 +39,11 @@ enum layer_names { #define CTL_GRV MT(MOD_LCTL, KC_GRV) // Left Control when held, Grave accent when tapped -// MACRO DEFINITIONS -enum custom_keycodes { - GO_Q2 = KEYMAP_SAFE_RANGE, - Q2_ENT -}; - - -/******************* -** MODIFIER MASKS ** -*******************/ -unsigned char q2InputMode = 0; - - -bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { - switch(keycode) { - // these are our macros! - case GO_Q2: - if (record->event.pressed) { - //default_layer_set(_QW); - layer_move(_QW); // TO(_QW); - layer_on(_Q2); - //layer_off(_SY); - }; - return false; - case Q2_ENT: - if (record->event.pressed) { - if (q2InputMode == 0) { - tap_code(KC_ENT); - q2InputMode = 1; - layer_on(_DV); - //layer_on(_Q2); - } else if (q2InputMode == 1) { - tap_code(KC_ENT); - q2InputMode = 0; - layer_off(_DV); - } else { - tap_code(KC_ENT); - } - }; - return false; - case KC_ESC: - if (record->event.pressed) { - if (q2InputMode > 0) { - tap_code(KC_ESC); - q2InputMode = 0; - layer_off(_DV); - } else { - tap_code(KC_ESC); - } - }; - return false; - case KC_GRV: - if (IS_LAYER_ON(_Q2) == true) { - if (record->event.pressed) { - if (q2InputMode == 0) { - tap_code(KC_GRV); - q2InputMode = 2; - layer_on(_DV); - } else if (q2InputMode == 1) { - tap_code(KC_GRV); - q2InputMode = 2; - } else { - tap_code(KC_GRV); - q2InputMode = 0; - layer_off(_DV); - } - } - }; - return false; - } // switch() - return true; -}; - - // KEYMAPS const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /**************** - ** BASE LAYERS ** - ****************/ + // BASE LAYERS - /* QWERTY */ - [_QW] = LAYOUT_60_ansi( - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, - FN_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, - CTL_GRV, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_MA), MO(_FN), KC_RCTL - ), - - /* Dvorak */ [_DV] = LAYOUT_60_ansi( KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, KC_BSPC, KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_EQL, KC_BSLS, @@ -143,7 +52,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { CTL_GRV, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_MA), MO(_FN), KC_RCTL ), - /* Colemak */ + [_QW] = LAYOUT_60_ansi( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + FN_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + CTL_GRV, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_MA), MO(_FN), KC_RCTL + ), + [_CM] = LAYOUT_60_ansi( KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, @@ -152,24 +68,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { CTL_GRV, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_MA), MO(_FN), KC_RCTL ), - /********************* - ** QUAKE 2 OVERLAYS ** - *********************/ + // QUAKE 2 OVERLAYS - /* Quake 2 */ [_Q2] = LAYOUT_60_ansi( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, Q2_ENT, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_GRV, _______, _______, _______, _______, _______, _______, _______ ), - /******************** - ** FUNCTION LAYERS ** - ********************/ + // FUNCTION LAYER - /* Fn layer */ [_FN] = LAYOUT_60_ansi( KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, KC_CALC, KC_APP, _______, _______, _______, KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_PSCR, KC_SLCK, KC_PAUS, @@ -178,11 +88,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, TG(_NP), _______, _______, _______, _______ ), - /***************** - ** OTHER LAYERS ** - *****************/ + // OTHER LAYERS - /* Numpad layer */ [_NP] = LAYOUT_60_ansi( _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, _______, _______, _______, _______, _______, _______, _______, _______, KC_E, KC_F, _______, KC_P4, KC_P5, KC_P6, KC_PAST, KC_PSLS, KC_PEQL, _______, @@ -191,7 +98,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, TG(_NP), _______, _______, _______, _______ ), - /* Macro layer */ [_MA] = LAYOUT_60_ansi( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, DM_REC1, DM_REC2, _______, _______, _______, _______, G_PUSH, _______, _______, _______, _______, _______, _______, _______, DM_PLY1, DM_PLY2, DM_RSTP, @@ -200,9 +106,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______ ), - /* System layer */ [_SY] = LAYOUT_60_ansi( - TG(_SY), TO(_QW), TO(_DV), TO(_CM), GO_Q2, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX, DEBUG, XXXXXXX, VRSN, XXXXXXX, + TG(_SY), TO(_QW), TO(_DV), TO(_CM), TG(_Q2), XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX, DEBUG, XXXXXXX, VRSN, XXXXXXX, XXXXXXX, XXXXXXX, M_MDSWP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, BL_TOGG, BL_INC, BL_BRTG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, diff --git a/keyboards/kc60/keymaps/noroadsleft/readme.md b/keyboards/kc60/keymaps/noroadsleft/readme.md index 8d0c6547a4..dbab96d022 100644 --- a/keyboards/kc60/keymaps/noroadsleft/readme.md +++ b/keyboards/kc60/keymaps/noroadsleft/readme.md @@ -1,6 +1,6 @@ # @noroadsleft's KC60 keymap -### Last updated: April 26, 2021 13:33 (-0700) +### Last updated: May 3, 2021 16:42 (-0700) ![](https://i.imgur.com/tzhXQYIl.jpg) @@ -24,9 +24,9 @@ Descriptions of the physical locations of keys will use the key's function in a ## Outline - [Base Layers](#base-layers) - - Layer 0: QWERTY `_QW` - - Layer 1: Hardware Dvorak `_DV` - - Layer 2: Hardware Colemak `_CM` + - Layer 0: Dvorak `_DV` + - Layer 1: QWERTY `_QW` + - Layer 2: Colemak `_CM` - [Quake 2 Layer](#quake-2-layer) - Layer 3: Quake 2 `_Q2` - [Function Layer](#function-layer) @@ -41,38 +41,36 @@ Descriptions of the physical locations of keys will use the key's function in a ## Base Layers -### Layer 0: QWERTY - `_QW` +My base layers are pretty standard for a 60%, with the following changes: -Standard QWERTY layout, with four QMK features: - -- The `Menu` key has been replaced by `MO(_FW)`, which moves to my Windows Fn layer when held. +- The `Menu` key has been replaced by `MO(_FN)`, which moves to my Function layer when held. - The Right `GUI` key has been replaced with a `MO(_MA)` key, which moves to the Macro layer when held. -- The `Caps Lock` key has been replaced with a dual function `LT()` key, which opens the Windows Fn layer when held, and is `Caps Lock` when tapped -- The Left `Control` key has been replaced with a `MT(MOD_CTRL, KC_GRV)` key, which is ` ~ when tapped and `Ctrl` when held. +- The `Caps Lock` key has been replaced with a dual function `LT()` key, which opens the Function layer when held, and is `Caps Lock` when tapped. +- The Left `Control` key has been replaced with a `MT(MOD_CTRL, KC_GRV)` key, which is `Ctrl` when held and ` ~ when tapped. -![QWERTY layer](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/kc60/keymaps/noroadsleft/qwerty.png) +### Layer 0: Dvorak - `_DV` + +A hardware-based Dvorak Simplified layout. In this layer, I can leave the host system in QWERTY, plug my keyboard in, and still type in Dvorak. + +![Dvorak layer](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/kc60/keymaps/noroadsleft/dvorak.png) ----- - -### Layer 1: Hardware Dvorak - `_DV` +### Layer 1: QWERTY - `_QW` - Accessed by holding either `Fn` and tapping `/?` key, then tapping `2@`. -A hardware-based Dvorak Simplified layout. At my weekend job, I use a shared computer that runs MacOS Sierra, in US QWERTY layout. In this layer, I can leave the system in QWERTY, plug my keyboard in, and still type in Dvorak. +For when other people need to use my keyboard. :) -![Hardware Dvorak layer](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/kc60/keymaps/noroadsleft/dvorak.png) +![QWERTY layer](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/kc60/keymaps/noroadsleft/qwerty.png) ----- - ### Layer 2: Hardware Colemak `_CM` - Accessed by holding either `Fn` and tapping `/?` key, then tapping `3#`. A hardware-based Colemak layout. Been thinking of trying it, so it's here. -![Hardware Colemak layer](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/kc60/keymaps/noroadsleft/colemak.png) +![Colemak layer](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/kc60/keymaps/noroadsleft/colemak.png) ---- @@ -83,11 +81,7 @@ A hardware-based Colemak layout. Been thinking of trying it, so it's here. - Accessed by holding either `Fn` key and tapping the `/?` key, then tapping `4$` -These layers were born out of the confusion I have had trying to use the in-game chat and the console in [Quake 2](https://en.wikipedia.org/wiki/Quake_II). When Quake 2 came out, alternate keyboard layouts weren't really a thing. As a result, all in-game text input is hard-locked to US QWERTY, regardless of what the operating system is using for its input method. - -I have solved this by writing a custom QMK macro. The keycode in the System layer that enables these layers, [`GO_Q2`](./keymap.c#L205), is a [macro](./keymap.c#L63-L70) that sets the default layer to the QWERTY layer, then turns the Quake 2 layer `_Q2` on. The result is a partially-overwritten QWERTY layer, that changes the dual-function Left Control/Grave key to a standard Left Control, and the Enter key into a special Enter key specific to Quake 2. - -When I hit the `Enter` key (bound in-game to text chat), the [macro keycode](./keymap.c#L71-L86) I've created sends the keycode for `Enter`, then follows with flipping an internal boolean variable and enabling the Hardware Dvorak layer. Now the game is in text chat mode, and my keyboard is in Dvorak. When I hit `Enter` again, another `Enter` key is sent, which sends the message, then the macro flips the boolean back to false and disables the Hardware Dvorak layer, which brings me back to the standard QWERTY+Quake 2 setup. Hitting `Escape` instead runs a [macro](./keymap.c#L87-L97) that cancels the sending of the message, and undoes the layers. +I used to have some macro craziness here. I've now switched to leaving my main system in QWERTY and having the Dvorak stuff happen on the keyboard, and setting my in-game key assignments to the Dvorak mapping (`.OEU` instead of `ESDF`). ![Quake 2](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/kc60/keymaps/noroadsleft/quake2.png) @@ -96,7 +90,7 @@ When I hit the `Enter` key (bound in-game to text chat), the [macro keycode](./k ## Function Layer -### Layer 4: Fn layer - `_FN` +### Layer 4: Function layer - `_FN` - Accessed by holding either `Fn` key from any base layer @@ -118,8 +112,6 @@ Puts a Numpad on the right-hand side of the keyboard. A through F included for h ![Numpad layer](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/kc60/keymaps/noroadsleft/numpad.png) ----- - ### Layer 6: Macro layer - `_MA` - Accessed by holding the right-side `Win` key @@ -131,8 +123,6 @@ For macro documentation, see [my userspace readme](../../../../users/noroadsleft ![Macro layer](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/kc60/keymaps/noroadsleft/macros.png) ----- - ### Layer 7: System layer - `_SY` - Accessed by holding either `Fn` key and tapping the `/?` key diff --git a/users/noroadsleft/readme.md b/users/noroadsleft/readme.md index 6a454b7c74..0a2153471b 100644 --- a/users/noroadsleft/readme.md +++ b/users/noroadsleft/readme.md @@ -25,7 +25,7 @@ Some frequently used Git commands. | [`G_FTCH`](./noroadsleft.c#L43-L52) | `git fetch upstream ` | `git pull upstream ` | | [`G_BRCH`](./noroadsleft.c#L53-L62) | `master` | `$(git branch-name)` | -`$(git branch-name)` is an alias for `git rev-parse --abbrev-ref HEAD`, which normally return the name of the current branch. +`$(git branch-name)` is an alias for `git rev-parse --abbrev-ref HEAD`, which normally returns the name of the current branch. ### "Macro Mode" Macros and Customized Keycodes @@ -76,6 +76,6 @@ along with this program. If not, see . ## Footnotes - 1: [^](#macro-mode-macros-and-customized-keycodes) The `M_MDSWP` keycode is used in my keymaps in the following locations: - - [KC60](../../keyboards/kc60/keymaps/noroadsleft/keymap.c#L206) - - [KBDfans KBD75 rev1](../../keyboards/kbdfans/kbd75/keymaps/noroadsleft/keymap.c#L102) - - [CoseyFannitutti Discipline](../../keyboards/coseyfannitutti/discipline/keymaps/noroadsleft/keymap.c#L67) + - [KC60](../../keyboards/kc60/keymaps/noroadsleft/keymap.c#L111) + - [KBDfans KBD75 rev1](../../keyboards/kbdfans/kbd75/keymaps/noroadsleft/keymap.c#L93) + - [CoseyFannitutti Discipline](../../keyboards/coseyfannitutti/discipline/keymaps/noroadsleft/keymap.c#L66) From c27a4587993c014bff3c0e0145a156b0f5d308c9 Mon Sep 17 00:00:00 2001 From: Matrix Zou Date: Tue, 4 May 2021 12:40:26 +0400 Subject: [PATCH 309/613] [Keyboard] added Time 80 Reforged by Fox Lab (#11996) * [Keyboard] added Time 80 Reforged by Fox Lab * added Time 80 Reforged by Fox Lab * split to two sub directories for universal and hotswap pcb * Apply suggestions from code review * Modified codes as suggested * update code as suggested * rgb log light keymaps added * update code as suggested * enable rgblight right to TIME logo, and add keymaps for it's control * Apply suggestions from code review * enable built-in switch LED support * Apply suggestions from code review * Apply suggestions from code review * Apply suggestions from code review * Apply suggestions from code review --- keyboards/foxlab/time_re/hotswap/config.h | 64 +++++++++++ keyboards/foxlab/time_re/hotswap/hotswap.c | 17 +++ keyboards/foxlab/time_re/hotswap/hotswap.h | 34 ++++++ keyboards/foxlab/time_re/hotswap/info.json | 103 ++++++++++++++++++ .../time_re/hotswap/keymaps/default/keymap.c | 36 ++++++ .../time_re/hotswap/keymaps/via/keymap.c | 52 +++++++++ .../time_re/hotswap/keymaps/via/rules.mk | 1 + keyboards/foxlab/time_re/hotswap/readme.md | 19 ++++ keyboards/foxlab/time_re/hotswap/rules.mk | 22 ++++ keyboards/foxlab/time_re/universal/config.h | 64 +++++++++++ keyboards/foxlab/time_re/universal/info.json | 103 ++++++++++++++++++ .../universal/keymaps/default/keymap.c | 36 ++++++ .../time_re/universal/keymaps/via/keymap.c | 52 +++++++++ .../time_re/universal/keymaps/via/rules.mk | 1 + keyboards/foxlab/time_re/universal/readme.md | 19 ++++ keyboards/foxlab/time_re/universal/rules.mk | 22 ++++ .../foxlab/time_re/universal/universal.c | 17 +++ .../foxlab/time_re/universal/universal.h | 34 ++++++ 18 files changed, 696 insertions(+) create mode 100644 keyboards/foxlab/time_re/hotswap/config.h create mode 100644 keyboards/foxlab/time_re/hotswap/hotswap.c create mode 100644 keyboards/foxlab/time_re/hotswap/hotswap.h create mode 100644 keyboards/foxlab/time_re/hotswap/info.json create mode 100644 keyboards/foxlab/time_re/hotswap/keymaps/default/keymap.c create mode 100644 keyboards/foxlab/time_re/hotswap/keymaps/via/keymap.c create mode 100644 keyboards/foxlab/time_re/hotswap/keymaps/via/rules.mk create mode 100644 keyboards/foxlab/time_re/hotswap/readme.md create mode 100644 keyboards/foxlab/time_re/hotswap/rules.mk create mode 100644 keyboards/foxlab/time_re/universal/config.h create mode 100644 keyboards/foxlab/time_re/universal/info.json create mode 100644 keyboards/foxlab/time_re/universal/keymaps/default/keymap.c create mode 100644 keyboards/foxlab/time_re/universal/keymaps/via/keymap.c create mode 100644 keyboards/foxlab/time_re/universal/keymaps/via/rules.mk create mode 100644 keyboards/foxlab/time_re/universal/readme.md create mode 100644 keyboards/foxlab/time_re/universal/rules.mk create mode 100644 keyboards/foxlab/time_re/universal/universal.c create mode 100644 keyboards/foxlab/time_re/universal/universal.h diff --git a/keyboards/foxlab/time_re/hotswap/config.h b/keyboards/foxlab/time_re/hotswap/config.h new file mode 100644 index 0000000000..8ca58e4341 --- /dev/null +++ b/keyboards/foxlab/time_re/hotswap/config.h @@ -0,0 +1,64 @@ +/* +Copyright 2021 DongXing + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x464C // "FL" +#define PRODUCT_ID 0x0006 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Fox Lab +#define PRODUCT Time 80 Reforged + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 17 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ +#define MATRIX_ROW_PINS { D1, D0, B3, B0, B2, B1 } +#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D4, D6, D2, D3, D5 } + +#define DIODE_DIRECTION COL2ROW + +#define BACKLIGHT_PIN B7 +#define BACKLIGHT_LEVELS 3 + +#define LED_CAPS_LOCK_PIN E6 +#define LED_PIN_ON_STATE 0 + +#define RGB_DI_PIN E2 + +#ifdef RGB_DI_PIN + #define RGBLED_NUM 5 + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 + #define RGBLIGHT_LIMIT_VAL 200 /* The maximum brightness level */ + #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ + #define RGBLIGHT_ANIMATIONS +#endif diff --git a/keyboards/foxlab/time_re/hotswap/hotswap.c b/keyboards/foxlab/time_re/hotswap/hotswap.c new file mode 100644 index 0000000000..b3acfe7b4e --- /dev/null +++ b/keyboards/foxlab/time_re/hotswap/hotswap.c @@ -0,0 +1,17 @@ +/* Copyright 2021 DongXing + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "hotswap.h" + diff --git a/keyboards/foxlab/time_re/hotswap/hotswap.h b/keyboards/foxlab/time_re/hotswap/hotswap.h new file mode 100644 index 0000000000..6f7dda6dfd --- /dev/null +++ b/keyboards/foxlab/time_re/hotswap/hotswap.h @@ -0,0 +1,34 @@ +/* Copyright 2021 DongXing + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#define LAYOUT( \ + K00, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K3E, K1E, K1F, K1G, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \ + K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4F, \ + K50, K51, K52, K56, K5A, K5B, K5C, K5D, K5E, K5F, K5G \ +) { \ + { K00, KC_NO, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, K3E, KC_NO, KC_NO }, \ + { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, KC_NO, K4F, KC_NO }, \ + { K50, K51, K52, KC_NO, KC_NO, KC_NO, K56, KC_NO, KC_NO, KC_NO, K5A, K5B, K5C, K5D, K5E, K5F, K5G }, \ +} diff --git a/keyboards/foxlab/time_re/hotswap/info.json b/keyboards/foxlab/time_re/hotswap/info.json new file mode 100644 index 0000000000..64678e03c1 --- /dev/null +++ b/keyboards/foxlab/time_re/hotswap/info.json @@ -0,0 +1,103 @@ +{ + "keyboard_name": "Time RE Hotswap", + "url": "", + "maintainer": "qmk", + "width": 18.25, + "height": 6.5, + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"K00 (D1,F0)", "x":0, "y":0}, + {"label":"K02 (D1,F4)", "x":2, "y":0}, + {"label":"K03 (D1,F5)", "x":3, "y":0}, + {"label":"K04 (D1,F6)", "x":4, "y":0}, + {"label":"K05 (D1,F7)", "x":5, "y":0}, + {"label":"K06 (D1,C7)", "x":6.5, "y":0}, + {"label":"K07 (D1,C6)", "x":7.5, "y":0}, + {"label":"K08 (D1,B6)", "x":8.5, "y":0}, + {"label":"K09 (D1,B5)", "x":9.5, "y":0}, + {"label":"K0A (D1,B4)", "x":11, "y":0}, + {"label":"K0B (D1,D7)", "x":12, "y":0}, + {"label":"K0C (D1,D4)", "x":13, "y":0}, + {"label":"K0D (D1,D6)", "x":14, "y":0}, + {"label":"K0E (D1,D2)", "x":15.25, "y":0}, + {"label":"K0F (D1,D3)", "x":16.25, "y":0}, + {"label":"K0G (D1,D5)", "x":17.25, "y":0}, + {"label":"K10 (D0,F0)", "x":0, "y":1.5}, + {"label":"K11 (D0,F1)", "x":1, "y":1.5}, + {"label":"K12 (D0,F4)", "x":2, "y":1.5}, + {"label":"K13 (D0,F5)", "x":3, "y":1.5}, + {"label":"K14 (D0,F6)", "x":4, "y":1.5}, + {"label":"K15 (D0,F7)", "x":5, "y":1.5}, + {"label":"K16 (D0,C7)", "x":6, "y":1.5}, + {"label":"K17 (D0,C6)", "x":7, "y":1.5}, + {"label":"K18 (D0,B6)", "x":8, "y":1.5}, + {"label":"K19 (D0,B5)", "x":9, "y":1.5}, + {"label":"K1A (D0,B4)", "x":10, "y":1.5}, + {"label":"K1B (D0,D7)", "x":11, "y":1.5}, + {"label":"K1C (D0,D4)", "x":12, "y":1.5}, + {"label":"K1D (D0,D6)", "x":13, "y":1.5}, + {"label":"K3E (B0,D2)", "x":14, "y":1.5}, + {"label":"K1E (D0,D2)", "x":15.25, "y":1.5}, + {"label":"K1F (D0,D3)", "x":16.25, "y":1.5}, + {"label":"K1G (D0,D5)", "x":17.25, "y":1.5}, + {"label":"K20 (B3,F0)", "x":0, "y":2.5, "w":1.5}, + {"label":"K21 (B3,F1)", "x":1.5, "y":2.5}, + {"label":"K22 (B3,F4)", "x":2.5, "y":2.5}, + {"label":"K23 (B3,F5)", "x":3.5, "y":2.5}, + {"label":"K24 (B3,F6)", "x":4.5, "y":2.5}, + {"label":"K25 (B3,F7)", "x":5.5, "y":2.5}, + {"label":"K26 (B3,C7)", "x":6.5, "y":2.5}, + {"label":"K27 (B3,C6)", "x":7.5, "y":2.5}, + {"label":"K28 (B3,B6)", "x":8.5, "y":2.5}, + {"label":"K29 (B3,B5)", "x":9.5, "y":2.5}, + {"label":"K2A (B3,B4)", "x":10.5, "y":2.5}, + {"label":"K2B (B3,D7)", "x":11.5, "y":2.5}, + {"label":"K2C (B3,D4)", "x":12.5, "y":2.5}, + {"label":"K2D (B3,D6)", "x":13.5, "y":2.5, "w":1.5}, + {"label":"K2E (B3,D2)", "x":15.25, "y":2.5}, + {"label":"K2F (B3,D3)", "x":16.25, "y":2.5}, + {"label":"K2G (B3,D5)", "x":17.25, "y":2.5}, + {"label":"K30 (B0,F0)", "x":0, "y":3.5, "w":1.75}, + {"label":"K31 (B0,F1)", "x":1.75, "y":3.5}, + {"label":"K32 (B0,F4)", "x":2.75, "y":3.5}, + {"label":"K33 (B0,F5)", "x":3.75, "y":3.5}, + {"label":"K34 (B0,F6)", "x":4.75, "y":3.5}, + {"label":"K35 (B0,F7)", "x":5.75, "y":3.5}, + {"label":"K36 (B0,C7)", "x":6.75, "y":3.5}, + {"label":"K37 (B0,C6)", "x":7.75, "y":3.5}, + {"label":"K38 (B0,B6)", "x":8.75, "y":3.5}, + {"label":"K39 (B0,B5)", "x":9.75, "y":3.5}, + {"label":"K3A (B0,B4)", "x":10.75, "y":3.5}, + {"label":"K3B (B0,D7)", "x":11.75, "y":3.5}, + {"label":"K3D (B0,D6)", "x":12.75, "y":3.5, "w":2.25}, + {"label":"K40 (B2,F0)", "x":0, "y":4.5, "w":1.25}, + {"label":"K41 (B2,F1)", "x":1.25, "y":4.5}, + {"label":"K42 (B2,F4)", "x":2.25, "y":4.5}, + {"label":"K43 (B2,F5)", "x":3.25, "y":4.5}, + {"label":"K44 (B2,F6)", "x":4.25, "y":4.5}, + {"label":"K45 (B2,F7)", "x":5.25, "y":4.5}, + {"label":"K46 (B2,C7)", "x":6.25, "y":4.5}, + {"label":"K47 (B2,C6)", "x":7.25, "y":4.5}, + {"label":"K48 (B2,B6)", "x":8.25, "y":4.5}, + {"label":"K49 (B2,B5)", "x":9.25, "y":4.5}, + {"label":"K4A (B2,B4)", "x":10.25, "y":4.5}, + {"label":"K4B (B2,D7)", "x":11.25, "y":4.5}, + {"label":"K4C (B2,D4)", "x":12.25, "y":4.5, "w":1.75}, + {"label":"K4D (B2,D6)", "x":14, "y":4.5}, + {"label":"K4F (B2,D3)", "x":16.25, "y":4.5}, + {"label":"K50 (B1,F0)", "x":0, "y":5.5, "w":1.25}, + {"label":"K51 (B1,F1)", "x":1.25, "y":5.5, "w":1.25}, + {"label":"K52 (B1,F4)", "x":2.5, "y":5.5, "w":1.25}, + {"label":"K56 (B1,C7)", "x":3.75, "y":5.5, "w":6.25}, + {"label":"K5A (B1,B4)", "x":10, "y":5.5, "w":1.25}, + {"label":"K5B (B1,D7)", "x":11.25, "y":5.5, "w":1.25}, + {"label":"K5C (B1,D4)", "x":12.5, "y":5.5, "w":1.25}, + {"label":"K5D (B1,D6)", "x":13.75, "y":5.5, "w":1.25}, + {"label":"K5E (B1,D2)", "x":15.25, "y":5.5}, + {"label":"K5F (B1,D3)", "x":16.25, "y":5.5}, + {"label":"K5G (B1,D5)", "x":17.25, "y":5.5} + ] + } + } +} diff --git a/keyboards/foxlab/time_re/hotswap/keymaps/default/keymap.c b/keyboards/foxlab/time_re/hotswap/keymaps/default/keymap.c new file mode 100644 index 0000000000..b9250fac4b --- /dev/null +++ b/keyboards/foxlab/time_re/hotswap/keymaps/default/keymap.c @@ -0,0 +1,36 @@ +/* Copyright 2021 matrixzj + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, _______, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_SPC, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, _______, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), _______, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT( + RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +}; diff --git a/keyboards/foxlab/time_re/hotswap/keymaps/via/keymap.c b/keyboards/foxlab/time_re/hotswap/keymaps/via/keymap.c new file mode 100644 index 0000000000..a6236d1942 --- /dev/null +++ b/keyboards/foxlab/time_re/hotswap/keymaps/via/keymap.c @@ -0,0 +1,52 @@ +/* Copyright 2021 matrixzj + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, _______, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_SPC, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, _______, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), _______, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT( + RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +}; diff --git a/keyboards/foxlab/time_re/hotswap/keymaps/via/rules.mk b/keyboards/foxlab/time_re/hotswap/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/foxlab/time_re/hotswap/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/foxlab/time_re/hotswap/readme.md b/keyboards/foxlab/time_re/hotswap/readme.md new file mode 100644 index 0000000000..f9d987f08c --- /dev/null +++ b/keyboards/foxlab/time_re/hotswap/readme.md @@ -0,0 +1,19 @@ +# Foxlab Time 80 Reforged Hotswap + +![Time 80 Reforged](https://i.imgur.com/BXOM9sQh.jpg) + +Time 80 Reforged was the second design of Fox Lab back in 2017. It has also become an iconic keyboard design of Fox Lab. Time80RE kept most of the original weight design. The clock has become thinner now and has a tempered glass cover. The front height of the keyboard has been greatly reduced for optimizing for comfort. The ratio between the top and bottom cases has been adjusted for a cleaner side view. + +* Keyboard Maintainer: QMK +* Hardware Supported: Time 80 Reforged Hotswap PCB +* Hardware Availability: [Group Buy](https://geekhack.org/index.php?topic=108410.msg2952330) + +This version is for the hotswap variant with the layouts below available: +![PCB Layout](https://imgur.com/D8cQCwb.png) +![Plate Layout](https://imgur.com/aR1UnhK.png) + +Make example for this keyboard (after setting up your build environment): + + make foxlab/time_re/hotswap:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/foxlab/time_re/hotswap/rules.mk b/keyboards/foxlab/time_re/hotswap/rules.mk new file mode 100644 index 0000000000..77b7c43fff --- /dev/null +++ b/keyboards/foxlab/time_re/hotswap/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/foxlab/time_re/universal/config.h b/keyboards/foxlab/time_re/universal/config.h new file mode 100644 index 0000000000..8ca58e4341 --- /dev/null +++ b/keyboards/foxlab/time_re/universal/config.h @@ -0,0 +1,64 @@ +/* +Copyright 2021 DongXing + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x464C // "FL" +#define PRODUCT_ID 0x0006 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Fox Lab +#define PRODUCT Time 80 Reforged + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 17 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ +#define MATRIX_ROW_PINS { D1, D0, B3, B0, B2, B1 } +#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D4, D6, D2, D3, D5 } + +#define DIODE_DIRECTION COL2ROW + +#define BACKLIGHT_PIN B7 +#define BACKLIGHT_LEVELS 3 + +#define LED_CAPS_LOCK_PIN E6 +#define LED_PIN_ON_STATE 0 + +#define RGB_DI_PIN E2 + +#ifdef RGB_DI_PIN + #define RGBLED_NUM 5 + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 + #define RGBLIGHT_LIMIT_VAL 200 /* The maximum brightness level */ + #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ + #define RGBLIGHT_ANIMATIONS +#endif diff --git a/keyboards/foxlab/time_re/universal/info.json b/keyboards/foxlab/time_re/universal/info.json new file mode 100644 index 0000000000..77bb4a7694 --- /dev/null +++ b/keyboards/foxlab/time_re/universal/info.json @@ -0,0 +1,103 @@ +{ + "keyboard_name": "Time RE Universal", + "url": "", + "maintainer": "qmk", + "width": 18.25, + "height": 6.5, + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"K00 (D1,F0)", "x":0, "y":0}, + {"label":"K02 (D1,F4)", "x":2, "y":0}, + {"label":"K03 (D1,F5)", "x":3, "y":0}, + {"label":"K04 (D1,F6)", "x":4, "y":0}, + {"label":"K05 (D1,F7)", "x":5, "y":0}, + {"label":"K06 (D1,C7)", "x":6.5, "y":0}, + {"label":"K07 (D1,C6)", "x":7.5, "y":0}, + {"label":"K08 (D1,B6)", "x":8.5, "y":0}, + {"label":"K09 (D1,B5)", "x":9.5, "y":0}, + {"label":"K0A (D1,B4)", "x":11, "y":0}, + {"label":"K0B (D1,D7)", "x":12, "y":0}, + {"label":"K0C (D1,D4)", "x":13, "y":0}, + {"label":"K0D (D1,D6)", "x":14, "y":0}, + {"label":"K0E (D1,D2)", "x":15.25, "y":0}, + {"label":"K0F (D1,D3)", "x":16.25, "y":0}, + {"label":"K0G (D1,D5)", "x":17.25, "y":0}, + {"label":"K10 (D0,F0)", "x":0, "y":1.5}, + {"label":"K11 (D0,F1)", "x":1, "y":1.5}, + {"label":"K12 (D0,F4)", "x":2, "y":1.5}, + {"label":"K13 (D0,F5)", "x":3, "y":1.5}, + {"label":"K14 (D0,F6)", "x":4, "y":1.5}, + {"label":"K15 (D0,F7)", "x":5, "y":1.5}, + {"label":"K16 (D0,C7)", "x":6, "y":1.5}, + {"label":"K17 (D0,C6)", "x":7, "y":1.5}, + {"label":"K18 (D0,B6)", "x":8, "y":1.5}, + {"label":"K19 (D0,B5)", "x":9, "y":1.5}, + {"label":"K1A (D0,B4)", "x":10, "y":1.5}, + {"label":"K1B (D0,D7)", "x":11, "y":1.5}, + {"label":"K1C (D0,D4)", "x":12, "y":1.5}, + {"label":"K1D (D0,D6)", "x":13, "y":1.5}, + {"label":"K3E (B0,D2)", "x":14, "y":1.5}, + {"label":"K1E (D0,D2)", "x":15.25, "y":1.5}, + {"label":"K1F (D0,D3)", "x":16.25, "y":1.5}, + {"label":"K1G (D0,D5)", "x":17.25, "y":1.5}, + {"label":"K20 (B3,F0)", "x":0, "y":2.5, "w":1.5}, + {"label":"K21 (B3,F1)", "x":1.5, "y":2.5}, + {"label":"K22 (B3,F4)", "x":2.5, "y":2.5}, + {"label":"K23 (B3,F5)", "x":3.5, "y":2.5}, + {"label":"K24 (B3,F6)", "x":4.5, "y":2.5}, + {"label":"K25 (B3,F7)", "x":5.5, "y":2.5}, + {"label":"K26 (B3,C7)", "x":6.5, "y":2.5}, + {"label":"K27 (B3,C6)", "x":7.5, "y":2.5}, + {"label":"K28 (B3,B6)", "x":8.5, "y":2.5}, + {"label":"K29 (B3,B5)", "x":9.5, "y":2.5}, + {"label":"K2A (B3,B4)", "x":10.5, "y":2.5}, + {"label":"K2B (B3,D7)", "x":11.5, "y":2.5}, + {"label":"K2C (B3,D4)", "x":12.5, "y":2.5}, + {"label":"K2D (B3,D6)", "x":13.5, "y":2.5, "w":1.5}, + {"label":"K2E (B3,D2)", "x":15.25, "y":2.5}, + {"label":"K2F (B3,D3)", "x":16.25, "y":2.5}, + {"label":"K2G (B3,D5)", "x":17.25, "y":2.5}, + {"label":"K30 (B0,F0)", "x":0, "y":3.5, "w":1.75}, + {"label":"K31 (B0,F1)", "x":1.75, "y":3.5}, + {"label":"K32 (B0,F4)", "x":2.75, "y":3.5}, + {"label":"K33 (B0,F5)", "x":3.75, "y":3.5}, + {"label":"K34 (B0,F6)", "x":4.75, "y":3.5}, + {"label":"K35 (B0,F7)", "x":5.75, "y":3.5}, + {"label":"K36 (B0,C7)", "x":6.75, "y":3.5}, + {"label":"K37 (B0,C6)", "x":7.75, "y":3.5}, + {"label":"K38 (B0,B6)", "x":8.75, "y":3.5}, + {"label":"K39 (B0,B5)", "x":9.75, "y":3.5}, + {"label":"K3A (B0,B4)", "x":10.75, "y":3.5}, + {"label":"K3B (B0,D7)", "x":11.75, "y":3.5}, + {"label":"K3D (B0,D6)", "x":12.75, "y":3.5, "w":2.25}, + {"label":"K40 (B2,F0)", "x":0, "y":4.5, "w":1.25}, + {"label":"K41 (B2,F1)", "x":1.25, "y":4.5}, + {"label":"K42 (B2,F4)", "x":2.25, "y":4.5}, + {"label":"K43 (B2,F5)", "x":3.25, "y":4.5}, + {"label":"K44 (B2,F6)", "x":4.25, "y":4.5}, + {"label":"K45 (B2,F7)", "x":5.25, "y":4.5}, + {"label":"K46 (B2,C7)", "x":6.25, "y":4.5}, + {"label":"K47 (B2,C6)", "x":7.25, "y":4.5}, + {"label":"K48 (B2,B6)", "x":8.25, "y":4.5}, + {"label":"K49 (B2,B5)", "x":9.25, "y":4.5}, + {"label":"K4A (B2,B4)", "x":10.25, "y":4.5}, + {"label":"K4B (B2,D7)", "x":11.25, "y":4.5}, + {"label":"K4C (B2,D4)", "x":12.25, "y":4.5, "w":1.75}, + {"label":"K4D (B2,D6)", "x":14, "y":4.5}, + {"label":"K4F (B2,D3)", "x":16.25, "y":4.5}, + {"label":"K50 (B1,F0)", "x":0, "y":5.5, "w":1.25}, + {"label":"K51 (B1,F1)", "x":1.25, "y":5.5, "w":1.25}, + {"label":"K52 (B1,F4)", "x":2.5, "y":5.5, "w":1.25}, + {"label":"K56 (B1,C7)", "x":3.75, "y":5.5, "w":6.25}, + {"label":"K5A (B1,B4)", "x":10, "y":5.5, "w":1.25}, + {"label":"K5B (B1,D7)", "x":11.25, "y":5.5, "w":1.25}, + {"label":"K5C (B1,D4)", "x":12.5, "y":5.5, "w":1.25}, + {"label":"K5D (B1,D6)", "x":13.75, "y":5.5, "w":1.25}, + {"label":"K5E (B1,D2)", "x":15.25, "y":5.5}, + {"label":"K5F (B1,D3)", "x":16.25, "y":5.5}, + {"label":"K5G (B1,D5)", "x":17.25, "y":5.5} + ] + } + } +} diff --git a/keyboards/foxlab/time_re/universal/keymaps/default/keymap.c b/keyboards/foxlab/time_re/universal/keymaps/default/keymap.c new file mode 100644 index 0000000000..d6d3d8e72c --- /dev/null +++ b/keyboards/foxlab/time_re/universal/keymaps/default/keymap.c @@ -0,0 +1,36 @@ +/* Copyright 2021 matrixzj + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, _______, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_SPC, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, _______, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT( + RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +}; diff --git a/keyboards/foxlab/time_re/universal/keymaps/via/keymap.c b/keyboards/foxlab/time_re/universal/keymaps/via/keymap.c new file mode 100644 index 0000000000..046225536f --- /dev/null +++ b/keyboards/foxlab/time_re/universal/keymaps/via/keymap.c @@ -0,0 +1,52 @@ +/* Copyright 2021 matrixzj + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, _______, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_SPC, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, _______, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT( + RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +}; diff --git a/keyboards/foxlab/time_re/universal/keymaps/via/rules.mk b/keyboards/foxlab/time_re/universal/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/foxlab/time_re/universal/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/foxlab/time_re/universal/readme.md b/keyboards/foxlab/time_re/universal/readme.md new file mode 100644 index 0000000000..385078585f --- /dev/null +++ b/keyboards/foxlab/time_re/universal/readme.md @@ -0,0 +1,19 @@ +# Foxlab Time 80 Reforged Universal + +![Time 80 Reforged](https://i.imgur.com/BXOM9sQh.jpg) + +Time 80 Reforged was the second design of Fox Lab back in 2017. It has also become an iconic keyboard design of Fox Lab. Time80RE kept most of the original weight design. The clock has become thinner now and has a tempered glass cover. The front height of the keyboard has been greatly reduced for optimizing for comfort. The ratio between the top and bottom cases has been adjusted for a cleaner side view. + +* Keyboard Maintainer: QMK +* Hardware Supported: Time 80 Reforged Universal PCB +* Hardware Availability: [Group Buy](https://geekhack.org/index.php?topic=108410.msg2952330) + +This version is for the universal variant with the layouts below available: +![PCB Layout](https://imgur.com/D8cQCwb.png) +![Plate Layout](https://imgur.com/RzeVma5.png) + +Make example for this keyboard (after setting up your build environment): + + make foxlab/time_re/universal:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/foxlab/time_re/universal/rules.mk b/keyboards/foxlab/time_re/universal/rules.mk new file mode 100644 index 0000000000..8d3f342f57 --- /dev/null +++ b/keyboards/foxlab/time_re/universal/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/foxlab/time_re/universal/universal.c b/keyboards/foxlab/time_re/universal/universal.c new file mode 100644 index 0000000000..286104854b --- /dev/null +++ b/keyboards/foxlab/time_re/universal/universal.c @@ -0,0 +1,17 @@ +/* Copyright 2021 DongXing + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "universal.h" + diff --git a/keyboards/foxlab/time_re/universal/universal.h b/keyboards/foxlab/time_re/universal/universal.h new file mode 100644 index 0000000000..6f7dda6dfd --- /dev/null +++ b/keyboards/foxlab/time_re/universal/universal.h @@ -0,0 +1,34 @@ +/* Copyright 2021 DongXing + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#define LAYOUT( \ + K00, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K3E, K1E, K1F, K1G, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \ + K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4F, \ + K50, K51, K52, K56, K5A, K5B, K5C, K5D, K5E, K5F, K5G \ +) { \ + { K00, KC_NO, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, K3E, KC_NO, KC_NO }, \ + { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, KC_NO, K4F, KC_NO }, \ + { K50, K51, K52, KC_NO, KC_NO, KC_NO, K56, KC_NO, KC_NO, KC_NO, K5A, K5B, K5C, K5D, K5E, K5F, K5G }, \ +} From c6778dde825d6e7eeb63b51e12fc23baa02188ba Mon Sep 17 00:00:00 2001 From: Andrew Kannan Date: Tue, 4 May 2021 15:38:38 -0400 Subject: [PATCH 310/613] [Keyboard] ai03 Andromeda (#12676) * Add andromeda to qmk * Fix * Another fix * Fix via map * Update andromeda * Update confs for new qmk master * Apply suggestions from code review * Remove the ch hal and mcu conf as the andromeda does not need extra peripherals * Update keyboards/ai03/andromeda/rules.mk * Apply suggestions from code review * Add bootloader note to readme --- keyboards/ai03/andromeda/andromeda.c | 17 +++++ keyboards/ai03/andromeda/andromeda.h | 35 ++++++++++ keyboards/ai03/andromeda/config.h | 43 ++++++++++++ keyboards/ai03/andromeda/info.json | 12 ++++ .../ai03/andromeda/keymaps/default/keymap.c | 33 ++++++++++ keyboards/ai03/andromeda/keymaps/via/keymap.c | 65 +++++++++++++++++++ keyboards/ai03/andromeda/keymaps/via/rules.mk | 1 + keyboards/ai03/andromeda/readme.md | 12 ++++ keyboards/ai03/andromeda/rules.mk | 22 +++++++ 9 files changed, 240 insertions(+) create mode 100644 keyboards/ai03/andromeda/andromeda.c create mode 100644 keyboards/ai03/andromeda/andromeda.h create mode 100644 keyboards/ai03/andromeda/config.h create mode 100644 keyboards/ai03/andromeda/info.json create mode 100644 keyboards/ai03/andromeda/keymaps/default/keymap.c create mode 100644 keyboards/ai03/andromeda/keymaps/via/keymap.c create mode 100644 keyboards/ai03/andromeda/keymaps/via/rules.mk create mode 100644 keyboards/ai03/andromeda/readme.md create mode 100644 keyboards/ai03/andromeda/rules.mk diff --git a/keyboards/ai03/andromeda/andromeda.c b/keyboards/ai03/andromeda/andromeda.c new file mode 100644 index 0000000000..5dd580effd --- /dev/null +++ b/keyboards/ai03/andromeda/andromeda.c @@ -0,0 +1,17 @@ +/* +Copyright 2021 Andrew Kannan + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "andromeda.h" diff --git a/keyboards/ai03/andromeda/andromeda.h b/keyboards/ai03/andromeda/andromeda.h new file mode 100644 index 0000000000..1fcae4d772 --- /dev/null +++ b/keyboards/ai03/andromeda/andromeda.h @@ -0,0 +1,35 @@ +/* +Copyright 2021 Andrew Kannan + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#include "quantum.h" + +#define LAYOUT_tkl_ansi_wkl( \ + K000, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, \ + K400, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K413, K415, \ + K500, K502, K507, K511, K513, K514, K515, K516 \ +) { \ + { K000, KC_NO, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213 , K214, K215, K216 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313, KC_NO, KC_NO, KC_NO }, \ + { K400, KC_NO, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, KC_NO, K413, KC_NO, K415, KC_NO }, \ + { K500, KC_NO, K502, KC_NO, KC_NO, KC_NO, KC_NO, K507, KC_NO, KC_NO, KC_NO, K511, KC_NO, K513, K514, K515, K516 } \ +} diff --git a/keyboards/ai03/andromeda/config.h b/keyboards/ai03/andromeda/config.h new file mode 100644 index 0000000000..e04fb8a56f --- /dev/null +++ b/keyboards/ai03/andromeda/config.h @@ -0,0 +1,43 @@ +/* +Copyright 2021 Andrew Kannan + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xA103 +#define PRODUCT_ID 0x000A +#define DEVICE_VER 0x0001 +#define MANUFACTURER ai03 Design Studio +#define PRODUCT Andromeda + +#define MATRIX_ROWS 6 +#define MATRIX_COLS 17 + +#define MATRIX_COL_PINS { A10, A9, A8, B15, B14, B13, B12, B11, B10, B2, B1, B0, A7, A6, B5, B8, B9 } +#define MATRIX_ROW_PINS { B4, B3, A15, A3, A4, A5 } +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE diff --git a/keyboards/ai03/andromeda/info.json b/keyboards/ai03/andromeda/info.json new file mode 100644 index 0000000000..200d3fbd78 --- /dev/null +++ b/keyboards/ai03/andromeda/info.json @@ -0,0 +1,12 @@ +{ + "keyboard_name": "Andromeda", + "url": "", + "maintainer": "ai03", + "width": 18.25, + "height": 6.25, + "layouts": { + "LAYOUT_tkl_ansi_wkl": { + "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "x":0, "y":1.25}, {"label":"!", "x":1, "y":1.25}, {"label":"@", "x":2, "y":1.25}, {"label":"#", "x":3, "y":1.25}, {"label":"$", "x":4, "y":1.25}, {"label":"%", "x":5, "y":1.25}, {"label":"^", "x":6, "y":1.25}, {"label":"&", "x":7, "y":1.25}, {"label":"*", "x":8, "y":1.25}, {"label":"(", "x":9, "y":1.25}, {"label":")", "x":10, "y":1.25}, {"label":"_", "x":11, "y":1.25}, {"label":"+", "x":12, "y":1.25}, {"label":"Backspace", "x":13, "y":1.25, "w":2}, {"label":"Insert", "x":15.25, "y":1.25}, {"label":"Home", "x":16.25, "y":1.25}, {"label":"PgUp", "x":17.25, "y":1.25}, {"label":"Tab", "x":0, "y":2.25, "w":1.5}, {"label":"Q", "x":1.5, "y":2.25}, {"label":"W", "x":2.5, "y":2.25}, {"label":"E", "x":3.5, "y":2.25}, {"label":"R", "x":4.5, "y":2.25}, {"label":"T", "x":5.5, "y":2.25}, {"label":"Y", "x":6.5, "y":2.25}, {"label":"U", "x":7.5, "y":2.25}, {"label":"I", "x":8.5, "y":2.25}, {"label":"O", "x":9.5, "y":2.25}, {"label":"P", "x":10.5, "y":2.25}, {"label":"{", "x":11.5, "y":2.25}, {"label":"}", "x":12.5, "y":2.25}, {"label":"|", "x":13.5, "y":2.25, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.25}, {"label":"End", "x":16.25, "y":2.25}, {"label":"PgDn", "x":17.25, "y":2.25}, {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, {"label":"A", "x":1.75, "y":3.25}, {"label":"S", "x":2.75, "y":3.25}, {"label":"D", "x":3.75, "y":3.25}, {"label":"F", "x":4.75, "y":3.25}, {"label":"G", "x":5.75, "y":3.25}, {"label":"H", "x":6.75, "y":3.25}, {"label":"J", "x":7.75, "y":3.25}, {"label":"K", "x":8.75, "y":3.25}, {"label":"L", "x":9.75, "y":3.25}, {"label":":", "x":10.75, "y":3.25}, {"label":"\"", "x":11.75, "y":3.25}, {"label":"Enter", "x":12.75, "y":3.25, "w":2.25}, {"label":"Shift", "x":0, "y":4.25, "w":2.25}, {"label":"Z", "x":2.25, "y":4.25}, {"label":"X", "x":3.25, "y":4.25}, {"label":"C", "x":4.25, "y":4.25}, {"label":"V", "x":5.25, "y":4.25}, {"label":"B", "x":6.25, "y":4.25}, {"label":"N", "x":7.25, "y":4.25}, {"label":"M", "x":8.25, "y":4.25}, {"label":"<", "x":9.25, "y":4.25}, {"label":">", "x":10.25, "y":4.25}, {"label":"?", "x":11.25, "y":4.25}, {"label":"Shift", "x":12.25, "y":4.25, "w":2.75}, {"label":"\u2191", "x":16.25, "y":4.25}, {"label":"Ctrl", "x":0, "y":5.25, "w":1.5}, {"label":"Alt", "x":2.5, "y":5.25, "w":1.5}, {"x":4, "y":5.25, "w":7}, {"label":"Alt", "x":11, "y":5.25, "w":1.5}, {"label":"Ctrl", "x":13.5, "y":5.25, "w":1.5}, {"label":"\u2190", "x":15.25, "y":5.25}, {"label":"\u2193", "x":16.25, "y":5.25}, {"label":"\u2192", "x":17.25, "y":5.25}] + } + } +} diff --git a/keyboards/ai03/andromeda/keymaps/default/keymap.c b/keyboards/ai03/andromeda/keymaps/default/keymap.c new file mode 100644 index 0000000000..41db12fc51 --- /dev/null +++ b/keyboards/ai03/andromeda/keymaps/default/keymap.c @@ -0,0 +1,33 @@ +/* +Copyright 2012,2013 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H +enum layer_names { + _BASE, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_BASE] = LAYOUT_tkl_ansi_wkl( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT +) + +}; diff --git a/keyboards/ai03/andromeda/keymaps/via/keymap.c b/keyboards/ai03/andromeda/keymaps/via/keymap.c new file mode 100644 index 0000000000..967bfdf2bd --- /dev/null +++ b/keyboards/ai03/andromeda/keymaps/via/keymap.c @@ -0,0 +1,65 @@ +/* +Copyright 2012,2013 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H +enum layer_names { + _BASE, + _FN1, + _FN2, + _FN3 +}; + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_BASE] = LAYOUT_tkl_ansi_wkl( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_FN1] = LAYOUT_tkl_ansi_wkl( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + + [_FN2] = LAYOUT_tkl_ansi_wkl( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + + [_FN3] = LAYOUT_tkl_ansi_wkl( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/ai03/andromeda/keymaps/via/rules.mk b/keyboards/ai03/andromeda/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/ai03/andromeda/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/ai03/andromeda/readme.md b/keyboards/ai03/andromeda/readme.md new file mode 100644 index 0000000000..2ac3b5c1c4 --- /dev/null +++ b/keyboards/ai03/andromeda/readme.md @@ -0,0 +1,12 @@ +# ai03 Andromeda + +* Keyboard Maintainer: [ai03](https://github.com/ai03-2725) +* Hardware Supported: Andromeda PCB + +Make example for this keyboard (after setting up your build environment): + + make ai03/andromeda:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +Press and hold the reset button for at least 5 seconds before releasing to enter the bootloader mode. diff --git a/keyboards/ai03/andromeda/rules.mk b/keyboards/ai03/andromeda/rules.mk new file mode 100644 index 0000000000..b5330c8e7e --- /dev/null +++ b/keyboards/ai03/andromeda/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = STM32F072 + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output + +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE From 38b9f67c3b874ff33383ec2eb18aba58e4e9dfa1 Mon Sep 17 00:00:00 2001 From: Mateusz Piotrowski Date: Thu, 6 May 2021 01:26:50 +0200 Subject: [PATCH 311/613] Fix qmk flash on FreeBSD (#12085) When the USB device is connected, FreeBSD creates not one, but three device nodes in /dev, e.g.: /dev/ttyU0, /dev/ttyU0.init, and /dev/ttyU0.lock. As a result, this leads to the USB variable containing 3 paths (and therefore, whitespace) and messages like this one: Device /dev/ttyU0 /dev/ttyU0.init /dev/ttyU0.lock has appeared; assuming it is the controller. This changes fixes the use of the -z flag of "[" (see test(1)). Also, it removes undesired paths from the USB variable, leaving only one path there (i.e., "/dev/ttyU0"). --- tmk_core/avr.mk | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tmk_core/avr.mk b/tmk_core/avr.mk index c1d3f6b39e..2bc7cc9553 100644 --- a/tmk_core/avr.mk +++ b/tmk_core/avr.mk @@ -160,6 +160,8 @@ define EXEC_AVRDUDE list_devices() { \ if $(GREP) -q -s icrosoft /proc/version; then \ wmic.exe path Win32_SerialPort get DeviceID 2>/dev/null | LANG=C perl -pne 's/COM(\d+)/COM.($$1-1)/e' | sed 's!COM!/dev/ttyS!' | xargs echo -n | sort; \ + elif [ "`uname`" = "FreeBSD" ]; then \ + ls /dev/tty* | grep -v '\.lock$$' | grep -v '\.init$$'; \ else \ ls /dev/tty*; \ fi; \ @@ -169,7 +171,7 @@ define EXEC_AVRDUDE TMP1=`mktemp`; \ TMP2=`mktemp`; \ list_devices > $$TMP1; \ - while [ -z $$USB ]; do \ + while [ -z "$$USB" ]; do \ sleep 0.5; \ printf "."; \ list_devices > $$TMP2; \ From 3d922e6257752b54885b7dd28648eed7126b6024 Mon Sep 17 00:00:00 2001 From: Ryan Date: Fri, 7 May 2021 02:16:07 +1000 Subject: [PATCH 312/613] Add a handful of consumer/gendesk page usages (#12811) --- tmk_core/common/report.h | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/tmk_core/common/report.h b/tmk_core/common/report.h index 606a259643..db6370657d 100644 --- a/tmk_core/common/report.h +++ b/tmk_core/common/report.h @@ -80,7 +80,21 @@ enum consumer_usages { AL_ASSISTANT = 0x1CB, AL_KEYBOARD_LAYOUT = 0x1AE, // 15.16 Generic GUI Application Controls + AC_NEW = 0x201, + AC_OPEN = 0x202, + AC_CLOSE = 0x203, + AC_EXIT = 0x204, + AC_MAXIMIZE = 0x205, AC_MINIMIZE = 0x206, + AC_SAVE = 0x207, + AC_PRINT = 0x208, + AC_PROPERTIES = 0x209, + AC_UNDO = 0x21A, + AC_COPY = 0x21B, + AC_CUT = 0x21C, + AC_PASTE = 0x21D, + AC_SELECT_ALL = 0x21E, + AC_FIND = 0x21F, AC_SEARCH = 0x221, AC_HOME = 0x223, AC_BACK = 0x224, @@ -96,9 +110,12 @@ enum consumer_usages { */ enum desktop_usages { // 4.5.1 System Controls - Power Controls - SYSTEM_POWER_DOWN = 0x81, - SYSTEM_SLEEP = 0x82, - SYSTEM_WAKE_UP = 0x83 + SYSTEM_POWER_DOWN = 0x81, + SYSTEM_SLEEP = 0x82, + SYSTEM_WAKE_UP = 0x83, + SYSTEM_RESTART = 0x8F, + // 4.10 System Display Controls + SYSTEM_DISPLAY_TOGGLE_INT_EXT = 0xB5 }; // clang-format on From f3a162946934807e134883f4fe80400300ec127f Mon Sep 17 00:00:00 2001 From: timothynsheehan Date: Fri, 7 May 2021 03:47:10 +0930 Subject: [PATCH 313/613] Add docs on multiple encoders sharing pins (#11678) Added explanation of how multiple encoders can share pins and the limitations of this configuration --- docs/feature_encoders.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/docs/feature_encoders.md b/docs/feature_encoders.md index e2cafdac48..4338c85e84 100644 --- a/docs/feature_encoders.md +++ b/docs/feature_encoders.md @@ -81,3 +81,20 @@ void encoder_update_user(uint8_t index, bool clockwise) { ## Hardware The A an B lines of the encoders should be wired directly to the MCU, and the C/common lines should be wired to ground. + +## Multiple Encoders + +Multiple encoders may share pins so long as each encoder has a distinct pair of pins. + +For example you can support two encoders using only 3 pins like this +``` +#define ENCODERS_PAD_A { B1, B1 } +#define ENCODERS_PAD_B { B2, B3 } +``` + +You could even support three encoders using only three pins (one per encoder) however in this configuration, rotating two encoders which share pins simultaneously will often generate incorrect output. For example: +``` +#define ENCODERS_PAD_A { B1, B1, B2 } +#define ENCODERS_PAD_B { B2, B3, B3 } +``` +Here rotating Encoder 0 `B1 B2` and Encoder 1 `B1 B3` could be interpreted as rotating Encoder 2 `B2 B3` or `B3 B2` depending on the timing. This may still be a useful configuration depending on your use case From 34f39182447fe14487dc33e8a310b17caa1ca779 Mon Sep 17 00:00:00 2001 From: kb-elmo Date: Thu, 6 May 2021 23:07:51 +0200 Subject: [PATCH 314/613] Fix DZ60 64 key layout (#12551) * add gk64 layout * Apply suggestions from code review * fix dz60 gk64 layout --- keyboards/dz60/dz60.h | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/keyboards/dz60/dz60.h b/keyboards/dz60/dz60.h index 0f30390c1a..cccc9b62f3 100644 --- a/keyboards/dz60/dz60.h +++ b/keyboards/dz60/dz60.h @@ -711,7 +711,7 @@ /* LAYOUT_64_ansi * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┠- * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0e │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ * │10 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │1e │ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ @@ -723,15 +723,15 @@ * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘ */ #define LAYOUT_64_ansi( \ - k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0e, \ k10, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, \ k20, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \ k40, k41, k43, k46, k4a, k4b, k4c, k4d, k4e \ ) { \ - { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, KC_NO }, \ - { k10, KC_NO, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e }, \ - { k20, KC_NO, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, KC_NO }, \ - { k30, KC_NO, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e }, \ - { k40, k41, KC_NO, k43, KC_NO, KC_NO, k46, KC_NO, KC_NO, KC_NO, k4a, k4b, k4c, k4d, k4e } \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, KC_NO, k0e }, \ + { k10, KC_NO, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e }, \ + { k20, KC_NO, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, KC_NO }, \ + { k30, KC_NO, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e }, \ + { k40, k41, KC_NO, k43, KC_NO, KC_NO, k46, KC_NO, KC_NO, KC_NO, k4a, k4b, k4c, k4d, k4e } \ } From 56e5a83e682a862673f9b127ad6a2b5626198a7f Mon Sep 17 00:00:00 2001 From: stanrc85 <47038504+stanrc85@users.noreply.github.com> Date: Fri, 7 May 2021 05:51:47 -0400 Subject: [PATCH 315/613] [Keymap] My Arisu layout setup (#12647) --- keyboards/arisu/keymaps/stanrc85/keymap.c | 50 +++++++++++++++++++++++ keyboards/arisu/keymaps/stanrc85/rules.mk | 1 + 2 files changed, 51 insertions(+) create mode 100644 keyboards/arisu/keymaps/stanrc85/keymap.c create mode 100644 keyboards/arisu/keymaps/stanrc85/rules.mk diff --git a/keyboards/arisu/keymaps/stanrc85/keymap.c b/keyboards/arisu/keymaps/stanrc85/keymap.c new file mode 100644 index 0000000000..a8430b9a33 --- /dev/null +++ b/keyboards/arisu/keymaps/stanrc85/keymap.c @@ -0,0 +1,50 @@ +/* Copyright 2021 Stanrc85 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H +#include "stanrc85.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_QWERTY] = LAYOUT( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN, + KC_CTLE, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, MO(_FN2_60), + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LALT, LT_BPCF, KC_LGUI, LT_SPCF, TD_TWIN, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_DEFAULT] = LAYOUT( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, MO(_FN2_60), + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LALT, KC_SPC, MO(_FN1_60), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_FN1_60] = LAYOUT( + KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_DEL, _______, + _______, _______, CA_QUOT, _______, CA_SCLN, KC_VOLU, KC_PGUP, KC_BSPC, KC_UP, KC_DEL, KC_PSCR, _______, _______, KC_INS, _______, + KC_CAPS, _______, _______, KC_LCTL, KC_LSFT, KC_VOLD, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, + _______, KC_RDP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [_FN2_60] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MAKE, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, TG(_DEFAULT) + ) +}; diff --git a/keyboards/arisu/keymaps/stanrc85/rules.mk b/keyboards/arisu/keymaps/stanrc85/rules.mk new file mode 100644 index 0000000000..9db643c8e6 --- /dev/null +++ b/keyboards/arisu/keymaps/stanrc85/rules.mk @@ -0,0 +1 @@ +USER_NAME := stanrc85 \ No newline at end of file From 189e0d5b983088342aee58e9e1d5dd76c0ace384 Mon Sep 17 00:00:00 2001 From: Mateusz Piotrowski Date: Fri, 7 May 2021 19:22:05 +0200 Subject: [PATCH 316/613] Update FreeBSD install method (#12815) The easiest way to install QMK CLI and all the necessary dependencies on FreeBSD is to use the packages from the official FreeBSD Ports Collection. This is possible since QMK CLI has been added to the Ports Collection: https://www.freshports.org/sysutils/py-qmk/ --- docs/newbs_getting_started.md | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/docs/newbs_getting_started.md b/docs/newbs_getting_started.md index ff8337f382..b434a04bbe 100644 --- a/docs/newbs_getting_started.md +++ b/docs/newbs_getting_started.md @@ -104,19 +104,13 @@ You can also try the `qmk-git` package from AUR: ### ** FreeBSD ** -#### Prerequisites - -You will need to install Git and Python. It's possible that you already have both, but if not, run the following commands to install them: - - pkg install git python3 - -Make sure that `$HOME/.local/bin` is added to your `$PATH` so that locally installed Python packages are available. - #### Installation -Install the QMK CLI by running: +Install the FreeBSD package for QMK CLI by running: - python3 -m pip install --user qmk + pkg install -g "py*-qmk" + +NOTE: remember to follow the instructions printed at the end of installation (use `pkg info -Dg "py*-qmk"` to show them again). @@ -162,12 +156,6 @@ After installing QMK you can set it up with this command: In most situations you will want to answer `y` to all of the prompts. -?>**Note on FreeBSD**: -It is suggested to run `qmk setup` as a non-`root` user to start with, but this will likely identify packages that need to be installed to your -base system using `pkg`. However the installation will probably fail when run as an unprivileged user. -To manually install the base dependencies, run `./util/qmk_install.sh` either as `root`, or with `sudo`. -Once that completes, re-run `qmk setup` to complete the setup and checks. - ?> The qmk home folder can be specified at setup with `qmk setup -H `, and modified afterwards using the [cli configuration](cli_configuration.md?id=single-key-example) and the variable `user.qmk_home`. For all available options run `qmk setup --help`. From 067a6f017477938f965b1c4af4dace288d906730 Mon Sep 17 00:00:00 2001 From: "Hilary B. Brenum" Date: Sat, 8 May 2021 09:35:32 -0700 Subject: [PATCH 317/613] Hbbisenieks keymap update to remove kc_ keymaps (#12391) * hbbisenieks keymap * change from kc_ keymap * Apply suggestions from code review Co-authored-by: Takeshi ISHII <2170248+mtei@users.noreply.github.com> Co-authored-by: Hilary Brenum Co-authored-by: Zach White Co-authored-by: Takeshi ISHII <2170248+mtei@users.noreply.github.com> --- .../keebio/iris/keymaps/hbbisenieks/config.h | 3 + .../keebio/iris/keymaps/hbbisenieks/keymap.c | 75 +++++++++---------- 2 files changed, 40 insertions(+), 38 deletions(-) diff --git a/keyboards/keebio/iris/keymaps/hbbisenieks/config.h b/keyboards/keebio/iris/keymaps/hbbisenieks/config.h index 48f448fa22..bb3fe25085 100644 --- a/keyboards/keebio/iris/keymaps/hbbisenieks/config.h +++ b/keyboards/keebio/iris/keymaps/hbbisenieks/config.h @@ -17,6 +17,9 @@ along with this program. If not, see . #pragma once +#include "config_common.h" + + /* Use I2C or Serial, not both */ #define USE_SERIAL diff --git a/keyboards/keebio/iris/keymaps/hbbisenieks/keymap.c b/keyboards/keebio/iris/keymaps/hbbisenieks/keymap.c index 9916fc5ee5..a886bf7a30 100644 --- a/keyboards/keebio/iris/keymaps/hbbisenieks/keymap.c +++ b/keyboards/keebio/iris/keymaps/hbbisenieks/keymap.c @@ -16,8 +16,6 @@ enum custom_keycodes { CHUS, }; -#define KC_ KC_TRNS - #define KC_CAPW LGUI(LSFT(KC_3)) // Capture whole screen #define KC_CPYW LGUI(LSFT(LCTL(KC_3))) // Copy whole screen #define KC_CAPP LGUI(LSFT(KC_4)) // Capture portion of screen @@ -49,46 +47,47 @@ enum custom_keycodes { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QWERTY] = LAYOUT_kc( - //,----+----+----+----+----+----. ,----+----+----+----+----+----. - GRV , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 ,BSPC, - //|----+----+----+----+----+----| |----+----+----+----+----+----| - TAB , Q , W , E , R , T , Y , U , I , O , P ,BSLS, - //|----+----+----+----+----+----| |----+----+----+----+----+----| - ESC , A , S , D , F , G , H , J , K , L ,SCLN,QUOT, - //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----| - LSBR, Z , X , C , V , B ,TT_L, TT_R, N , M ,COMM,DOT ,SLSH,RSBR, - //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----' - LCTL,SMIN,LGUI, ENT ,SPC ,LALT - // `----+----+----' `----+----+----' + [_QWERTY] = LAYOUT( + //,-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------. + KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 ,KC_BSPC, + //|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------| + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,KC_BSLS, + //|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------| + KC_ESC , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L ,KC_SCLN,KC_QUOT, + //|-------+-------+-------+-------+-------+-------+-------. ,-------|-------+-------+-------+-------+-------+-------| + KC_LSBR, KC_Z , KC_X , KC_C , KC_V , KC_B ,KC_TT_L, KC_TT_R, KC_N , KC_M ,KC_COMM,KC_DOT ,KC_SLSH,KC_RSBR, + //`-------+-------+-------+---+---+-------+-------+-------/ \-------+-------+-------+---+---+-------+-------+-------' + KC_LCTL,KC_SMIN,KC_LGUI, KC_ENT ,KC_SPC ,KC_LALT + // `-------+-------+-------' `-------+-------+-------' ), - [_LOWER] = LAYOUT_kc( - //,----+----+----+----+----+----. ,----+----+----+----+----+----. - TILD,EXLM, AT ,HASH,DLR ,PERC, CIRC,AMPR,ASTR,MINS,EQL , , - //|----+----+----+----+----+----| |----+----+----+----+----+----| - ,SLOK, , UP , ,RGBT, P7 , P8 , P9 , E , F ,LPRN, - //|----+----+----+----+----+----| |----+----+----+----+----+----| - DEL , ,LEFT,DOWN,RGHT,GUSR, P4 , P5 , P6 , C , D ,RPRN, - //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----| - BL_S, , , ,HGRP,CHUS, , , P1 , P2 , P3 , A , B , , - //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----' - , , , DOT , P0 ,COLN - // `----+----+----' `----+----+----' + [_LOWER] = LAYOUT( + //,-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------. + KC_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_MINS,KC_EQL ,_______, + //|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------| + _______,KC_SLOK,_______, KC_UP ,_______,KC_RGBT, KC_P7 , KC_P8 , KC_P9 , KC_E , KC_F ,KC_LPRN, + //|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------| + KC_DEL ,_______,KC_LEFT,KC_DOWN,KC_RGHT,KC_GUSR, KC_P4 , KC_P5 , KC_P6 , KC_C , KC_D ,KC_RPRN, + //|-------+-------+-------+-------+-------+-------+-------. ,-------|-------+-------+-------+-------+-------+-------| + KC_BL_S,_______,_______,_______,KC_HGRP,KC_CHUS,_______, _______, KC_P1 , KC_P2 , KC_P3 , KC_A , KC_B ,_______, + //`-------+-------+-------+---+---+-------+-------+-------/ \-------+-------+-------+---+---+-------+-------+-------' + _______,_______,_______, KC_DOT , KC_P0 ,KC_COLN + // `-------+-------+-------' `-------+-------+-------' ), - [_RAISE] = LAYOUT_kc( - //,----+----+----+----+----+----. ,----+----+----+----+----+----. - F12 , F1 , F2 , F3 , F4 , F5 , F6 , F7 , F8 , F9 ,F10 ,F11 , - //|----+----+----+----+----+----| |----+----+----+----+----+----| - ,RGBT,RGBM, , , , ,AMPR,MUTE, , , , - //|----+----+----+----+----+----| |----+----+----+----+----+----| - ,CAPW,CPYW,CAPP,CPYP,PGUP, EQL ,HOME,VOLU,MRWD,MFFD, , - //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----| - , , , , ,PGDN, , ,PLUS,END ,VOLD,MPLY,MSTP, , - //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----' - , , , , , - // `----+----+----' `----+----+----' + [_RAISE] = LAYOUT( + //,-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------. + KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 , + //|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------| + _______,KC_RGBT,KC_RGBM,_______,_______,_______, _______,KC_AMPR,KC_MUTE,_______,_______,_______, + //|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------| + _______,KC_CAPW,KC_CPYW,KC_CAPP,KC_CPYP,KC_PGUP, KC_EQL ,KC_HOME,KC_VOLU,KC_MRWD,KC_MFFD,_______, + //|-------+-------+-------+-------+-------+-------+-------. ,-------|-------+-------+-------+-------+-------+-------| + _______,_______,_______,_______,_______,KC_PGDN,_______, _______,KC_PLUS,KC_END ,KC_VOLD,KC_MPLY,KC_MSTP,_______, + //`-------+-------+-------+---+---+-------+-------+-------/ \-------+-------+-------+---+---+-------+-------+-------' + _______,_______,_______, _______,_______,_______ + // `-------+-------+-------' `-------+-------+-------' + ), [_ADJUST] = LAYOUT( From b7fe24923e29218b15233163d9fe0ac5f332d3fc Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Sat, 8 May 2021 10:26:51 -0700 Subject: [PATCH 318/613] Update sethBarberee Userspace (#12620) * update for LTO and guard RGBLED_SPLIT * Revert "update for LTO and guard RGBLED_SPLIT" This reverts commit ce81177cbe330ae3e1e14c264dc0cb0946f08d70. * Revert "Revert "update for LTO and guard RGBLED_SPLIT"" This reverts commit 67da0ce9f38777064ad094c1ecba7ce17a40994f. * update iris keymap for keymap_kc removal and overhaul userspace * add licenses * fix tap_dance error when rgblight is disabled and update/clean iris/sinc maps --- .../keebio/iris/keymaps/sethBarberee/config.h | 30 +-- .../keebio/iris/keymaps/sethBarberee/keymap.c | 181 +++++------------- .../keebio/iris/keymaps/sethBarberee/rules.mk | 6 +- .../keebio/sinc/keymaps/sethBarberee/config.h | 30 +++ .../keebio/sinc/keymaps/sethBarberee/keymap.c | 71 +++++++ .../keebio/sinc/keymaps/sethBarberee/rules.mk | 3 + .../zeal60/keymaps/sethBarberee/rules.mk | 1 + users/sethBarberee/config.h | 73 ++++++- users/sethBarberee/rgb_light.c | 52 +++++ users/sethBarberee/rgb_light.h | 21 ++ users/sethBarberee/rules.mk | 9 + users/sethBarberee/sethBarberee.c | 118 ++++++++---- users/sethBarberee/sethBarberee.h | 56 ++++-- users/sethBarberee/tap_dance.c | 89 +++++++++ users/sethBarberee/tap_dance.h | 43 +++++ users/sethBarberee/wrappers.h | 55 ++++++ 16 files changed, 609 insertions(+), 229 deletions(-) create mode 100644 keyboards/keebio/sinc/keymaps/sethBarberee/config.h create mode 100644 keyboards/keebio/sinc/keymaps/sethBarberee/keymap.c create mode 100644 keyboards/keebio/sinc/keymaps/sethBarberee/rules.mk create mode 100644 users/sethBarberee/rgb_light.c create mode 100644 users/sethBarberee/rgb_light.h create mode 100644 users/sethBarberee/tap_dance.c create mode 100644 users/sethBarberee/tap_dance.h create mode 100644 users/sethBarberee/wrappers.h diff --git a/keyboards/keebio/iris/keymaps/sethBarberee/config.h b/keyboards/keebio/iris/keymaps/sethBarberee/config.h index c031c03261..bd2ec41210 100644 --- a/keyboards/keebio/iris/keymaps/sethBarberee/config.h +++ b/keyboards/keebio/iris/keymaps/sethBarberee/config.h @@ -30,32 +30,6 @@ along with this program. If not, see . #undef RGBLED_NUM #define RGBLED_NUM 8 -#define RGBLIGHT_ANIMATIONS -#define RGBLIGHT_SLEEP -#define RGBLIGHT_HUE_STEP 8 -#define RGBLIGHT_SAT_STEP 8 -#define RGBLIGHT_VAL_STEP 8 + #undef RGBLED_SPLIT -#define RGBLED_SPLIT { RGBLED_NUM, 0} // defined to sync animations - -#define FORCE_NKRO // force NKRO on by default - -#undef TAPPING_TERM -#define TAPPING_TERM 200 - - -#if !defined(NO_DEBUG) && !defined(CONSOLE_ENABLE) -#define NO_DEBUG -#endif // !NO_DEBUG -#if !defined(NO_PRINT) && !defined(CONSOLE_ENABLE) -#define NO_PRINT -#endif // !NO_PRINT - -#define NO_MUSIC_MODE - -// Override caps lock indication from my userspace -//#undef NORMAL_MODE -//#define NORMAL_MODE 1 - -//#undef CAPS_LOCK_MODE -//#define CAPS_LOCK_MODE 28 +#define RGBLED_SPLIT { RGBLED_NUM, 0} diff --git a/keyboards/keebio/iris/keymaps/sethBarberee/keymap.c b/keyboards/keebio/iris/keymaps/sethBarberee/keymap.c index 1e39c33d18..269350403f 100644 --- a/keyboards/keebio/iris/keymaps/sethBarberee/keymap.c +++ b/keyboards/keebio/iris/keymaps/sethBarberee/keymap.c @@ -1,26 +1,24 @@ -#include QMK_KEYBOARD_H + /* Copyright 2021 SethBarberee + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ #include "sethBarberee.h" extern backlight_config_t backlight_config; -enum layers { - _QWERTY, - _LOWER, - _RAISE, - _ADJUST -}; - -enum custom_keycodes { - QWERTY = SAFE_RANGE, - LOWER, - RAISE, - ADJUST, -}; - #define KC_ KC_TRNS -#define KC_LOWR LOWER -#define KC_RASE RAISE #define KC_RST RESET #define KC_BL_S BL_STEP #define KC_RTOG RGB_TOG @@ -33,147 +31,54 @@ enum custom_keycodes { #define KC_RVAD RGB_VAD #define KC_VK VLK_TOG +#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__) + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QWERTY] = LAYOUT_kc( - //,----+----+----+----+----+----. ,----+----+----+----+----+----. - ECAP, 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 ,MINS, - //|----+----+----+----+----+----| |----+----+----+----+----+----| - TAB , Q , W , E , R , T , Y , U , I , O , P ,DEL , - //|----+----+----+----+----+----| |----+----+----+----+----+----| - LSFT, A , S , D , F , G , H , J , K , L ,SCLN,QUOT, - //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----| - LCTL, Z , X , C , V , B , SPC, RASE, N , M ,COMM,DOT ,SLSH,RSFT, - //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----' - LGUI,LOWR, SPC, BSPC ,ENT,LALT - // `----+----+----' `----+----+----' + [_QWERTY] = LAYOUT_wrapper( + KC_ECAP, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, KC_MINS, + KC_TAB , _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, KC_DEL , + KC_LSFT, _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, + KC_LCTL, _________________QWERTY_L3_________________, KC_SPC, KC_RASE, _________________QWERTY_R3_________________,KC_RSFT, + KC_LGUI, KC_LOWR, KC_SPC, KC_BSPC , KC_ENT, KC_LALT ), - [_LOWER] = LAYOUT_kc( - //,----+----+----+----+----+----. ,----+----+----+----+----+----. - TILD,EXLM, AT ,HASH,DLR ,PERC, CIRC,AMPR,ASTR,LPRN,RPRN,BSPC, - //|----+----+----+----+----+----| |----+----+----+----+----+----| - RST , , , UP , , , GRV , P7 , P8 , P9 , , , - //|----+----+----+----+----+----| |----+----+----+----+----+----| - DEL , ,LEFT,DOWN,RGHT,LBRC, RBRC, P4 , P5 , P6 ,PLUS,PIPE, - //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----| - BL_S, , , , ,LCBR,LPRN, RPRN,RCBR, P1 , P2 , P3 ,MINS, , - //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----' - , ,LPRN , DEL , , P0 - // `----+----+----' `----+----+----' + [_LOWER] = LAYOUT( + KC_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_BSPC, + KC_RST ,_______,_______, KC_UP ,_______,_______, KC_GRV , KC_P7 , KC_P8 , KC_P9 ,_______,_______, + KC_DEL ,_______,KC_LEFT,KC_DOWN,KC_RGHT,KC_LBRC, KC_RBRC, KC_P4 , KC_P5 , KC_P6 ,KC_PLUS,KC_PIPE, + KC_BL_S,_______,_______,_______,_______,KC_LCBR,KC_LPRN, KC_RPRN,KC_RCBR, KC_P1 , KC_P2 , KC_P3 ,KC_MINS,_______, + _______,_______,KC_LPRN, KC_DEL ,_______, KC_P0 ), - [_RAISE] = LAYOUT_kc( - //,----+----+----+----+----+----. ,----+----+----+----+----+----. - F12 , F1 , F2 , F3 , F4 , F5 , F6 , F7 , F8 , F9 ,F10 ,F11 , - //|----+----+----+----+----+----| |----+----+----+----+----+----| - , , , , , , , , , , , , - //|----+----+----+----+----+----| |----+----+----+----+----+----| - ,MPRV,MNXT,VOLU,PGUP,UNDS, EQL ,HOME, , , ,BSLS, - //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----| - MUTE,MSTP,MPLY,VOLD,PGDN,MINS, , ,PLUS,END , , , , , - //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----' - , , , , , - // `----+----+----' `----+----+----' + [_RAISE] = LAYOUT( + KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 , + _______,_______,_______,_______,_______,_______, _______, _______,_______,_______,_______,_______, + _______,KC_MPRV,KC_MNXT,KC_VOLU,KC_PGUP,KC_UNDS, KC_EQL ,KC_HOME,_______,_______,_______,KC_BSLS, + KC_MUTE,KC_MSTP,KC_MPLY,KC_VOLD,KC_PGDN,KC_MINS,_______, _______,KC_PLUS,KC_END ,_______,_______,_______,_______, + _______,_______,_______, _______,_______, _______ ), - [_ADJUST] = LAYOUT_kc( + [_ADJUST] = LAYOUT( //,----+----+----+----+----+----. ,----+----+----+----+----+----. - , , , , , , , , , , , , + _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______, //|----+----+----+----+----+----| |----+----+----+----+----+----| - RTOG,RMOD,RHUI,RSAI,RVAI, , , , , , , , + KC_RTOG,KC_RMOD,KC_RHUI,KC_RSAI,KC_RVAI,_______, _______,_______,_______,_______,_______,_______, //|----+----+----+----+----+----| |----+----+----+----+----+----| - VK, ,RHUD,RSAD,RVAD, , , , , , , , + KC_VK, _______,KC_RHUD,KC_RSAD,KC_RVAD,_______, _______,_______,_______,_______,_______,_______, //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----| - BL_S,RST , , , , , , , , , , , , , + KC_BL_S,KC_RST ,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______, //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----' - , , , , , + _______,_______,_______, _______,_______, _______ // `----+----+----' `----+----+----' ) }; -void keyboard_pre_init_user(void) { - // Make sure the red LEDs don't light - setPinOutput(D5); - writePinHigh(D5); - - setPinOutput(B0); - writePinHigh(B0); -} - -void keyboard_post_init_user(void){ - rgblight_enable_noeeprom(); // enable the RGBs - rgblight_sethsv_noeeprom_red(); // set to red - rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3); // set to breathing -} - -void suspend_power_down_user(void){ +void suspend_power_down_keymap(void){ backlight_config.enable = false; // disable LED backlight } -void suspend_wakeup_init_user(void){ +void suspend_wakeup_init_keymap(void){ backlight_config.enable = true; // enable LED backlight } - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case QWERTY: - if (record->event.pressed) { - set_single_persistent_default_layer(_QWERTY); - } - return false; - break; - case LOWER: - if (record->event.pressed) { - layer_on(_LOWER); - update_tri_layer(_LOWER, _RAISE, _ADJUST); - } else { - layer_off(_LOWER); - update_tri_layer(_LOWER, _RAISE, _ADJUST); - } - return false; - break; - case RAISE: - if (record->event.pressed) { - layer_on(_RAISE); - update_tri_layer(_LOWER, _RAISE, _ADJUST); - } else { - layer_off(_RAISE); - update_tri_layer(_LOWER, _RAISE, _ADJUST); - } - return false; - break; - case ADJUST: - if (record->event.pressed) { - layer_on(_ADJUST); - } else { - layer_off(_ADJUST); - } - return false; - break; - } - return true; -} - -uint32_t layer_state_set_user(uint32_t state){ - switch(biton32(state)) { - case _QWERTY: - rgblight_sethsv_noeeprom(HSV_RED); - break; - case _LOWER: - rgblight_sethsv_noeeprom(HSV_GREEN); - break; - case _RAISE: - rgblight_sethsv_noeeprom(HSV_BLUE); - break; - case _ADJUST: - rgblight_sethsv_noeeprom(HSV_ORANGE); - break; - default: - rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_GRADIENT + 3); - break; - - } - return state; -} diff --git a/keyboards/keebio/iris/keymaps/sethBarberee/rules.mk b/keyboards/keebio/iris/keymaps/sethBarberee/rules.mk index 5df198b7bc..b282b1aa4c 100644 --- a/keyboards/keebio/iris/keymaps/sethBarberee/rules.mk +++ b/keyboards/keebio/iris/keymaps/sethBarberee/rules.mk @@ -1,9 +1,5 @@ -BOOTMAGIC_ENABLE = no CONSOLE_ENABLE = no -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -BACKLIGHT_ENABLE = yes # Enable my Red LEDS -RGBLIGHT_ENABLE = yes # Enable my RGBS +NKRO_ENABLE = yes VELOCIKEY_ENABLE = yes # I like RGB TAP_DANCE_ENABLE = yes # fancy fancy Caps LTO_ENABLE = yes # Enable link time optimization diff --git a/keyboards/keebio/sinc/keymaps/sethBarberee/config.h b/keyboards/keebio/sinc/keymaps/sethBarberee/config.h new file mode 100644 index 0000000000..2d66aefc3e --- /dev/null +++ b/keyboards/keebio/sinc/keymaps/sethBarberee/config.h @@ -0,0 +1,30 @@ +/* +Copyright 2017 Danny Nguyen + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +/* Use I2C or Serial, not both */ +// +//#define USE_SERIAL +//#define USE_I2C + +//#ifdef RGBLIGHT_ENABLE +//# ifdef NORMAL_MODE +//# undef NORMAL_MODE +//# define NORMAL_MODE RGBLIGHT_MODE_TWINKLE + 4 +//# endif +//#endif diff --git a/keyboards/keebio/sinc/keymaps/sethBarberee/keymap.c b/keyboards/keebio/sinc/keymaps/sethBarberee/keymap.c new file mode 100644 index 0000000000..3d55f2c093 --- /dev/null +++ b/keyboards/keebio/sinc/keymaps/sethBarberee/keymap.c @@ -0,0 +1,71 @@ + /* Copyright 2021 SethBarberee + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "sethBarberee.h" + +#define LAYOUT_80_with_macro_wrapper(...) LAYOUT_80_with_macro(__VA_ARGS__) + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_QWERTY] = LAYOUT_80_with_macro_wrapper( + KC_MUTE, KC_ECAP, _________________FUNC_LEFT_________________, _________________FUNC_RIGHT________________, KC_F11, KC_F12, KC_DEL, KC_MUTE, + KC_F1, KC_F2, KC_GRV, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________,KC_MINS, KC_EQL, _______, KC_BSPC, KC_HOME, + KC_F3, KC_F4, KC_TAB, _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, KC_LBRC, KC_RBRC, KC_BSLS, KC_END, + KC_F5, KC_F6, KC_LSFT, _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, KC_ENT, KC_PGUP, + KC_F7, KC_F8, KC_LSFT, _________________QWERTY_L3_________________, _________________QWERTY_R3_________________, KC_RSFT, KC_UP, KC_PGDN, + KC_F9, KC_F10, KC_LCTL, KC_LALT, KC_LGUI, KC_LOWR, _______, KC_SPC, KC_RASE, KC_BSPC, KC_RALT, KC_RCTL, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT + ), + [_LOWER] = LAYOUT_80_with_macro_wrapper( + RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, + RGB_HUI, RGB_HUD, KC_GESC, _________________FUNC_LEFT_________________, _________________FUNC_RIGHT________________, KC_F11, KC_F12, _______, _______, KC_MPRV, + RGB_SAI, RGB_SAD, RGB_TOG, _______, _______, _______, _______, KC_LPRN, KC_RPRN, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, + RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, KC_LCBR, KC_RCBR, _______, _______, _______, _______, _______, _______, KC_VOLU, + RGB_MOD, RGB_RMOD, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, _______, _______, _______, _______, _______, _______, KC_VOLD, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_RAISE] = LAYOUT_80_with_macro_wrapper( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + RESET, KC_VRSN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [_ADJUST] = LAYOUT_80_with_macro_wrapper( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; + +void encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + if (clockwise) { + tap_code(KC_PGDN); + } else { + tap_code(KC_PGUP); + } + } else if (index == 1) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } +} diff --git a/keyboards/keebio/sinc/keymaps/sethBarberee/rules.mk b/keyboards/keebio/sinc/keymaps/sethBarberee/rules.mk new file mode 100644 index 0000000000..049c5ae9b5 --- /dev/null +++ b/keyboards/keebio/sinc/keymaps/sethBarberee/rules.mk @@ -0,0 +1,3 @@ +BACKLIGHT_ENABLE=no +CONSOLE_ENABLE=no +TAP_DANCE_ENABLE=yes diff --git a/keyboards/wilba_tech/zeal60/keymaps/sethBarberee/rules.mk b/keyboards/wilba_tech/zeal60/keymaps/sethBarberee/rules.mk index fcf3767e16..21b93c5954 100644 --- a/keyboards/wilba_tech/zeal60/keymaps/sethBarberee/rules.mk +++ b/keyboards/wilba_tech/zeal60/keymaps/sethBarberee/rules.mk @@ -1 +1,2 @@ BOOTMAGIC_ENABLE = lite +VIA_ENABLE = yes diff --git a/users/sethBarberee/config.h b/users/sethBarberee/config.h index a849ac0e77..785c7bc88d 100644 --- a/users/sethBarberee/config.h +++ b/users/sethBarberee/config.h @@ -1,8 +1,69 @@ + /* Copyright 2021 SethBarberee + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + #ifdef RGBLIGHT_ENABLE -# ifndef CAPS_LOCK_MODE -# define CAPS_LOCK_MODE 1 -# endif -# ifndef NORMAL_MODE -# define NORMAL_MODE 4 -# endif +# define RGBLIGHT_SLEEP +# ifndef RGBLIGHT_HUE_STEP +# define RGBLIGHT_HUE_STEP 8 +#endif +# ifndef RGBLIGHT_SAT_STEPT +# define RGBLIGHT_SAT_STEP 8 +#endif +# ifndef RGBLIGHT_VAL_STEP +# define RGBLIGHT_VAL_STEP 8 +#endif +// Trim animations I don't use/like +# ifdef RGBLIGHT_ANIMATIONS +# undef RGBLIGHT_ANIMATIONS +# endif +# define RGBLIGHT_EFFECT_BREATHING +# define RGBLIGHT_EFFECT_STATIC_GRADIENT +# define RGBLIGHT_EFFECT_TWINKLE +# ifndef CAPS_LOCK_MODE +# define CAPS_LOCK_MODE RGBLIGHT_MODE_STATIC_LIGHT +# endif +#endif // RGBLIGHT_ENABLE + +#ifndef AUDIO_ENABLE +# define NO_MUSIC_MODE +#endif // AUDIO_ENABLE + +#define FORCE_NKRO // Force NKRO on by default + +// Totally taken from @drashna's userspace +#ifdef TAPPING_TERM +# undef TAPPING_TERM +#endif // TAPPING_TERM +// +// Keeping these commented for examples when I want to tweak per keyboard +// but setting a default across my boards for now +// +//#if defined(KEYBOARD_ergodox_ez) +//# define TAPPING_TERM 185 +#if defined(KEYBOARD_crkbd) +# define TAPPING_TERM 185 +#else +# define TAPPING_TERM 200 +#endif + +/* Disable unused and unneeded features to reduce on firmware size */ +#ifdef LOCKING_SUPPORT_ENABLE +# undef LOCKING_SUPPORT_ENABLE +#endif +#ifdef LOCKING_RESYNC_ENABLE +# undef LOCKING_RESYNC_ENABLE #endif diff --git a/users/sethBarberee/rgb_light.c b/users/sethBarberee/rgb_light.c new file mode 100644 index 0000000000..51cc938c52 --- /dev/null +++ b/users/sethBarberee/rgb_light.c @@ -0,0 +1,52 @@ + /* Copyright 2021 SethBarberee + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "rgb_light.h" + +#if defined(RGBLIGHT_ENABLE) +layer_state_t layer_state_set_rgb_light(layer_state_t state){ + switch(get_highest_layer(state)) { + case _QWERTY: + rgblight_set_hsv_and_mode(HSV_RED, RGBLIGHT_MODE_BREATHING + 3); + break; + case _LOWER: + rgblight_set_hsv_and_mode(HSV_GREEN, RGBLIGHT_MODE_BREATHING + 3); + break; + case _RAISE: + rgblight_set_hsv_and_mode(HSV_BLUE, RGBLIGHT_MODE_BREATHING + 3); + break; + case _ADJUST: + rgblight_set_hsv_and_mode(HSV_GOLDENROD, RGBLIGHT_MODE_BREATHING + 3); + break; + default: + rgblight_set_hsv_and_mode(HSV_PINK, RGBLIGHT_MODE_TWINKLE + 3); + break; + + } + return state; +} + +void rgblight_set_hsv_and_mode(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode) { + rgblight_sethsv_noeeprom(hue, sat, val); + // wait_us(175); // Add a slight delay between color and mode to ensure it's processed correctly + rgblight_mode_noeeprom(mode); +} + +void keyboard_post_init_rgb_light(void) +{ + layer_state_set_rgb_light(layer_state); +} +#endif + diff --git a/users/sethBarberee/rgb_light.h b/users/sethBarberee/rgb_light.h new file mode 100644 index 0000000000..2e0477ce59 --- /dev/null +++ b/users/sethBarberee/rgb_light.h @@ -0,0 +1,21 @@ + /* Copyright 2021 SethBarberee + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once +#include "sethBarberee.h" + +layer_state_t layer_state_set_rgb_light(layer_state_t state); +void keyboard_post_init_rgb_light(void); +void rgblight_set_hsv_and_mode(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode); diff --git a/users/sethBarberee/rules.mk b/users/sethBarberee/rules.mk index d8aef60523..f1bc3325fe 100644 --- a/users/sethBarberee/rules.mk +++ b/users/sethBarberee/rules.mk @@ -1 +1,10 @@ SRC += sethBarberee.c + +# Add in custom tap dances when tap dance is enabled +ifeq ($(strip $(TAP_DANCE_ENABLE)), yes) + SRC += tap_dance.c +endif + +ifeq ($(strip $(RGBLIGHT_ENABLE)), yes) + SRC += rgb_light.c +endif diff --git a/users/sethBarberee/sethBarberee.c b/users/sethBarberee/sethBarberee.c index 10f78f63b5..536f3f921b 100644 --- a/users/sethBarberee/sethBarberee.c +++ b/users/sethBarberee/sethBarberee.c @@ -1,45 +1,85 @@ + /* Copyright 2021 SethBarberee + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ #include "sethBarberee.h" -#ifdef RGBLIGHT_ENABLE -#ifdef TAP_DANCE_ENABLE +#include "version.h" -// Initialize it now -tap caps_status = { - .toggled = false, - .toggle_mode = CAPS_LOCK_MODE, - .normal_mode = NORMAL_MODE -}; +__attribute__ ((weak)) void keyboard_pre_init_keymap(void) {} -void dance_ecap_finished (qk_tap_dance_state_t *state, void *user_data){ - if(state->count == 1){ - register_code(KC_ESC); - } else { - register_code(KC_CAPS); - if(!caps_status.toggled){ - // Toggling caps so indicate - caps_status.toggled = true; - rgblight_mode_noeeprom(caps_status.toggle_mode); - } else { - // Turning off so return to normal mode - caps_status.toggled = false; - rgblight_mode_noeeprom(caps_status.normal_mode); +void keyboard_pre_init_user(void){ +#if defined(BOOTLOADER_CATERINA) + // Make sure the red LEDs don't light + setPinOutput(D5); + writePinHigh(D5); + + setPinOutput(B0); + writePinHigh(B0); +#endif + keyboard_pre_init_keymap(); +} + +__attribute__ ((weak)) layer_state_t layer_state_set_keymap (layer_state_t state) { return state; } + +layer_state_t layer_state_set_user(layer_state_t state){ + + if (!is_keyboard_master()) { + return state; + } + + state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST); +#if defined(RGBLIGHT_ENABLE) + state = layer_state_set_rgb_light(state); +#endif + return layer_state_set_keymap(state); +} + +__attribute__ ((weak)) void keyboard_post_init_keymap(void) {} + +void keyboard_post_init_user(void) +{ +#if defined(RGBLIGHT_ENABLE) + keyboard_post_init_rgb_light(); +#endif + keyboard_post_init_keymap(); +} + +__attribute__((weak)) void suspend_power_down_keymap(void) {} + +void suspend_power_down_user(void) { +#ifdef OLED_DRIVER_ENABLE + oled_off(); +#endif + suspend_power_down_keymap(); +} + +__attribute__((weak)) void suspend_wakeup_init_keymap(void) {} + +void suspend_wakeup_init_user(void) { suspend_wakeup_init_keymap(); } + +__attribute__ ((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true;} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + if (process_record_keymap(keycode, record)) + { + switch (keycode) { + case KC_VRSN: // Prints firmware version + if (record->event.pressed) { + SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION ", Built on: " QMK_BUILDDATE); + } + break; } } + return true; } - -void dance_ecap_reset (qk_tap_dance_state_t *state, void *user_data){ - if(state->count == 1){ - unregister_code(KC_ESC); - } else { - unregister_code(KC_CAPS); - } -} - -//Tap Dance Definitions -qk_tap_dance_action_t tap_dance_actions[] = { - //Tap once for Esc, twice for Caps Lock - [TD_ECAP] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_ecap_finished, dance_ecap_reset), -// Other declarations would go here, separated by commas, if you have them -}; - -#endif -#endif diff --git a/users/sethBarberee/sethBarberee.h b/users/sethBarberee/sethBarberee.h index 23774ba4eb..1da79e1a63 100644 --- a/users/sethBarberee/sethBarberee.h +++ b/users/sethBarberee/sethBarberee.h @@ -1,20 +1,50 @@ -#ifndef USERSPACE -#define USERSPACE + /* Copyright 2021 SethBarberee + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once -#include "quantum.h" +#include QMK_KEYBOARD_H -#ifdef TAP_DANCE_ENABLE // only enable for tap dances - enum { - TD_ECAP = 0, - }; +#include "wrappers.h" - #define KC_ECAP TD(TD_ECAP) +enum layers { + _QWERTY, + _LOWER, + _RAISE, + _ADJUST +}; - typedef struct { - bool toggled; // store whether we have toggled caps lock - int toggle_mode; // idk why but maybe do something with this.. - int normal_mode; - } tap; +enum userspace_keycodes { + KC_VRSN = SAFE_RANGE, + NEW_SAFE_RANGE +}; + +#define KC_LOWR MO(_LOWER) +#define KC_RASE MO(_RAISE) + +#ifdef TAP_DANCE_ENABLE +# include "tap_dance.h" #endif +#ifdef RGBLIGHT_ENABLE +# include "rgb_light.h" #endif + +void keyboard_pre_init_keymap(void); +void keyboard_post_init_keymap(void); +void suspend_power_down_keymap(void); +void suspend_wakeup_init_keymap(void); +layer_state_t layer_state_set_keymap (layer_state_t state); +bool process_record_keymap(uint16_t keycode, keyrecord_t *record); diff --git a/users/sethBarberee/tap_dance.c b/users/sethBarberee/tap_dance.c new file mode 100644 index 0000000000..588ac9be66 --- /dev/null +++ b/users/sethBarberee/tap_dance.c @@ -0,0 +1,89 @@ + /* Copyright 2021 SethBarberee + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "tap_dance.h" + +// Shamelessly stolen from QMK Docs +int cur_dance (qk_tap_dance_state_t *state) { + if (state->count == 1) { + if (state->interrupted || !state->pressed) { + return SINGLE_TAP; + } else { + return SINGLE_HOLD; + } + } + else if (state->count == 2) { + if (state->interrupted) return DOUBLE_SINGLE_TAP; + else if (state->pressed) return DOUBLE_HOLD; + else return DOUBLE_TAP; + } + if (state->count == 3) { + if (state->interrupted || !state->pressed) return TRIPLE_TAP; + else return TRIPLE_HOLD; + } + else return 8; +} + + +// Initialize it now +tap caps_status = { + .toggled = false, + .state = 0 +}; + + +void dance_ecap_finished (qk_tap_dance_state_t *state, void *user_data){ + caps_status.state = cur_dance(state); + switch(caps_status.state){ + case SINGLE_TAP: + tap_code(KC_ESC); + break; + case SINGLE_HOLD: + register_code(KC_LCTRL); + break; + case DOUBLE_TAP: + tap_code(KC_CAPS); + if(!caps_status.toggled){ + // Toggling caps so indicate + caps_status.toggled = true; +#ifdef RGBLIGHT_ENABLE + // Save mode we can from + caps_status.normal_mode = rgblight_get_mode(); + rgblight_mode_noeeprom(CAPS_LOCK_MODE); +#endif + } else { + // Turning off so return to normal mode + caps_status.toggled = false; +#ifdef RGBLIGHT_ENABLE + rgblight_mode_noeeprom(caps_status.normal_mode); +#endif + } + break; + } +} + +void dance_ecap_reset (qk_tap_dance_state_t *state, void *user_data){ + if(caps_status.state == SINGLE_HOLD){ + unregister_code(KC_LCTRL); + } + caps_status.state = 0; +} + +//Tap Dance Definitions +qk_tap_dance_action_t tap_dance_actions[] = { + //Tap once for Esc, twice for Caps Lock + [TD_ECAP] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_ecap_finished, dance_ecap_reset), +// Other declarations would go here, separated by commas, if you have them +}; diff --git a/users/sethBarberee/tap_dance.h b/users/sethBarberee/tap_dance.h new file mode 100644 index 0000000000..709185b39a --- /dev/null +++ b/users/sethBarberee/tap_dance.h @@ -0,0 +1,43 @@ + /* Copyright 2021 SethBarberee + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once +#include "sethBarberee.h" + +//Define a type for as many tap dance states as you need +enum { + SINGLE_TAP = 1, + SINGLE_HOLD = 2, + DOUBLE_TAP = 3, + DOUBLE_HOLD = 4, + DOUBLE_SINGLE_TAP = 5, //send two single taps + TRIPLE_TAP = 6, + TRIPLE_HOLD = 7 +}; + + +enum { + TD_ECAP = 0, +}; + +#define KC_ECAP TD(TD_ECAP) + +typedef struct { + bool toggled; // store whether we have toggled caps lock +#ifdef RGBLIGHT_ENABLE + int normal_mode; +#endif // RGBLIGHT_ENABLE + int state; +} tap; diff --git a/users/sethBarberee/wrappers.h b/users/sethBarberee/wrappers.h new file mode 100644 index 0000000000..b24f52b332 --- /dev/null +++ b/users/sethBarberee/wrappers.h @@ -0,0 +1,55 @@ + /* Copyright 2021 SethBarberee + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "sethBarberee.h" + +/* + Since our quirky block definitions are basically a list of comma separated + arguments, we need a wrapper in order for these definitions to be + expanded before being used as arguments to the LAYOUT_xxx macro. +*/ + +/* + Blocks for each of the four major keyboard layouts + Organized so we can quickly adapt and modify all of them + at once, rather than for each keyboard, one at a time. + And this allows for much cleaner blocks in the keymaps. + For instance Tap/Hold for Control on all of the layouts + + NOTE: These are all the same length. If you do a search/replace + then you need to add/remove underscores to keep the + lengths consistent. +*/ + +// clang-format off +#define _________________QWERTY_L1_________________ KC_Q, KC_W, KC_E, KC_R, KC_T +#define _________________QWERTY_L2_________________ KC_A, KC_S, KC_D, KC_F, KC_G +#define _________________QWERTY_L3_________________ KC_Z, KC_X, KC_C, KC_V, KC_B + +#define _________________QWERTY_R1_________________ KC_Y, KC_U, KC_I, KC_O, KC_P +#define _________________QWERTY_R2_________________ KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT +#define _________________QWERTY_R3_________________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH + +#define ________________NUMBER_LEFT________________ KC_1, KC_2, KC_3, KC_4, KC_5 +#define ________________NUMBER_RIGHT_______________ KC_6, KC_7, KC_8, KC_9, KC_0 +#define _________________FUNC_LEFT_________________ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5 +#define _________________FUNC_RIGHT________________ KC_F6, KC_F7, KC_F8, KC_F9, KC_F10 + +#define ___________________BLANK___________________ _______, _______, _______, _______, _______ + +// clang-format on + From df57590ec64f1fc6d3c4163ba60be96305339113 Mon Sep 17 00:00:00 2001 From: Sean Johnson Date: Sat, 8 May 2021 22:00:11 -0500 Subject: [PATCH 319/613] add ttys0's planck and preonic keymaps (#10560) * resynced with upstream, and adjusted keymap layout for planck * updated keyboard layout Signed-off-by: Sean Johnson * swapped out bspc for del on symb layer Signed-off-by: Sean Johnson * fixed typo with brightness media keys * turns out my brightness config was correct, it was macOS that had gone sideways * updated to bring in line with requirements for merging into upstream * removed redundant config from rules.mk moved media controls to FUNC layer for Planck layout * added GPL2+ compatible license header Signed-off-by: Sean Johnson * removed unused MIDI comment Signed-off-by: Sean Johnson * removed extraneous MIDI comments * removed extraneous comments --- keyboards/planck/keymaps/ttys0/config.h | 24 ++ keyboards/planck/keymaps/ttys0/keymap.c | 280 +++++++++++++++++++++ keyboards/planck/keymaps/ttys0/readme.md | 5 + keyboards/planck/keymaps/ttys0/rules.mk | 4 + keyboards/preonic/keymaps/ttys0/config.h | 29 +++ keyboards/preonic/keymaps/ttys0/keymap.c | 283 ++++++++++++++++++++++ keyboards/preonic/keymaps/ttys0/readme.md | 3 + keyboards/preonic/keymaps/ttys0/rules.mk | 2 + 8 files changed, 630 insertions(+) create mode 100644 keyboards/planck/keymaps/ttys0/config.h create mode 100644 keyboards/planck/keymaps/ttys0/keymap.c create mode 100644 keyboards/planck/keymaps/ttys0/readme.md create mode 100644 keyboards/planck/keymaps/ttys0/rules.mk create mode 100644 keyboards/preonic/keymaps/ttys0/config.h create mode 100644 keyboards/preonic/keymaps/ttys0/keymap.c create mode 100644 keyboards/preonic/keymaps/ttys0/readme.md create mode 100644 keyboards/preonic/keymaps/ttys0/rules.mk diff --git a/keyboards/planck/keymaps/ttys0/config.h b/keyboards/planck/keymaps/ttys0/config.h new file mode 100644 index 0000000000..2c7d3aeecd --- /dev/null +++ b/keyboards/planck/keymaps/ttys0/config.h @@ -0,0 +1,24 @@ +/* Copyright 2021 Sean Johnson + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . +*/ + +#pragma once + +#ifdef AUDIO_ENABLE + #define STARTUP_SONG SONG(COLEMAK_SOUND) +#endif + +// Most tactile encoders have detents every 4 stages +#define ENCODER_RESOLUTION 4 diff --git a/keyboards/planck/keymaps/ttys0/keymap.c b/keyboards/planck/keymaps/ttys0/keymap.c new file mode 100644 index 0000000000..ed392bfb93 --- /dev/null +++ b/keyboards/planck/keymaps/ttys0/keymap.c @@ -0,0 +1,280 @@ +/* Copyright 2021 Sean Johnson + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H +#include "muse.h" + +#define a KC_A +#define b KC_B +#define c KC_C +#define d KC_D +#define e KC_E +#define f KC_F +#define g KC_G +#define h KC_H +#define i KC_I +#define j KC_J +#define k KC_K +#define l KC_L +#define m KC_M +#define n KC_N +#define o KC_O +#define p KC_P +#define q KC_Q +#define r KC_R +#define s KC_S +#define t KC_T +#define u KC_U +#define v KC_V +#define w KC_W +#define x KC_X +#define y KC_Y +#define z KC_Z + +#define lopt KC_LALT +#define lctl KC_LCTL +#define lsft KC_LSFT +#define ropt KC_RALT +#define rctl KC_RCTL +#define rsft KC_RSFT + +#define n0 KC_0 +#define n1 KC_1 +#define n2 KC_2 +#define n3 KC_3 +#define n4 KC_4 +#define n5 KC_5 +#define n6 KC_6 +#define n7 KC_7 +#define n8 KC_8 +#define n9 KC_9 + +#define bspc KC_BSPC +#define caps KC_CAPS +#define comm KC_COMM +#define dash A(KC_MINS) +#define scln KC_SCLN +#define slsh KC_SLSH +#define spc KC_SPC +#define tab KC_TAB +#define del KC_DEL +#define dot KC_DOT +#define ent KC_ENT +#define mins KC_MINS +#define quot KC_QUOT +#define esc KC_ESC +#define escg KC_GESC + +#define down KC_DOWN +#define home G(KC_LEFT) +#define end G(KC_RGHT) +#define up KC_UP +#define pgdn KC_PGDN +#define pgup KC_PGUP +#define left KC_LEFT +#define rght KC_RGHT + +#define tabl G(S(KC_LBRC)) +#define tabr G(S(KC_RBRC)) +#define fwd G(KC_RBRC) +#define back G(KC_LBRC) +#define dtl C(KC_LEFT) +#define dtr C(KC_RGHT) +#define slup S(A(KC_UP)) +#define sldn S(A(KC_DOWN)) + +#define f1 KC_F1 +#define f2 KC_F2 +#define f3 KC_F3 +#define f4 KC_F4 +#define f5 KC_F5 +#define f6 KC_F6 +#define f7 KC_F7 +#define f8 KC_F8 +#define f9 KC_F9 +#define f10 KC_F10 +#define f11 KC_F11 +#define f12 KC_F12 +#define f13 KC_F13 +#define f14 KC_F14 +#define f15 KC_F15 +#define f16 KC_F16 +#define f17 KC_F17 +#define f18 KC_F18 +#define f19 KC_F19 +#define f20 KC_F20 + +#define mute KC_MUTE +#define next KC_MNXT +#define play KC_MPLY +#define prev KC_MPRV +#define vold KC_VOLD +#define volu KC_VOLU + +#define symb MO(SYMB) +#define move MO(MOVE) +#define func MO(FUNC) + +#define rset RESET +#define powr KC_POWER + +#define ____ KC_TRNS +#define xxxx KC_NO + +#define emji LCMD(LCTL(KC_SPC)) +#define hypr OSM(MOD_HYPR) +#define brup KC_BRMU +#define brdn KC_BRMD +#define escf LT(FUNC,KC_ESC) + +enum planck_layers { + BASE, + SYMB, + MOVE, + FUNC, +}; + +enum planck_keycodes { + ampr = SAFE_RANGE, + astr, + at, + bsls, + circ, + dlr, + eql, + exlm, + grv, + hash, + lbrc, + lcbr, + lprn, + perc, + pipe, + plus, + rbrc, + rcbr, + rprn, + tild, + cmd, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [BASE] = LAYOUT_planck_grid( + tab, q, w, f, p, g, j, l, u, y, scln, mins, + bspc, a, r, s, t, d, h, n, e, i, o, quot, + lsft, z, x, c, v, b, k, m, comm, dot, slsh, rsft, + hypr, lctl, lopt, cmd, move, ent, spc, symb, cmd, ropt, rctl, func + ), + + [SYMB] = LAYOUT_planck_grid( + esc, n7, n5, n3, n1, n9, n8, n0, n2, n4, n6, dash, + bspc, lbrc, lcbr, lprn, hash, pipe, astr, dlr, rprn, rcbr, rbrc, at, + ____, grv, exlm, circ, tild, perc, ampr, plus, mins, eql, bsls, ____, + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____ + ), + + [MOVE] = LAYOUT_planck_grid( + esc, xxxx, slup, dtl, dtr, xxxx, xxxx, home, up, end, xxxx, ____, + del, xxxx, sldn, tabl, tabr, xxxx, xxxx, left, down, rght, xxxx, ____, + ____, xxxx, xxxx, back, fwd, xxxx, xxxx, pgdn, pgup, xxxx, xxxx, ____, + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____ + ), + + [FUNC] = LAYOUT_planck_grid( + rset, f7, f5, f3, f1, f9, f8, f10, f2, f4, f6, volu, + powr, f17, f15, f13, f11, f19, f18, f20, f12, f14, f16, vold, + brup, ____, xxxx, xxxx, xxxx, xxxx, xxxx, xxxx, xxxx, xxxx, xxxx, mute, + brdn, caps, ____, ____, ____, ____, ____, ____, prev, next, play, ____ + ), +}; + + +bool send_string_if_keydown(keyrecord_t *record, const char *s) { + if (record->event.pressed) { + send_string(s); + } + return true; +} + +int cmd_keys_down = 0; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + // Override the default auto shifted symbols to use SEND_STRING See + // https://github.com/qmk/qmk_firmware/issues/4072 + case ampr: + return send_string_if_keydown(record, "&"); + case astr: + return send_string_if_keydown(record, "*"); + case at: + return send_string_if_keydown(record, "@"); + case bsls: + return send_string_if_keydown(record, "\\"); + case circ: + return send_string_if_keydown(record, "^"); + case dlr: + return send_string_if_keydown(record, "$"); + case eql: + return send_string_if_keydown(record, "="); + case exlm: + return send_string_if_keydown(record, "!"); + case grv: + return send_string_if_keydown(record, "`"); + case hash: + return send_string_if_keydown(record, "#"); + case lbrc: + return send_string_if_keydown(record, "["); + case lcbr: + return send_string_if_keydown(record, "{"); + case lprn: + return send_string_if_keydown(record, "("); + case perc: + return send_string_if_keydown(record, "%"); + case pipe: + return send_string_if_keydown(record, "|"); + case plus: + return send_string_if_keydown(record, "+"); + case rbrc: + return send_string_if_keydown(record, "]"); + case rcbr: + return send_string_if_keydown(record, "}"); + case rprn: + return send_string_if_keydown(record, ")"); + case tild: + return send_string_if_keydown(record, "~"); + + // cmd + cmd -> cmd + ctl + case cmd: + if (record->event.pressed) { + if (cmd_keys_down == 0) { + register_code(KC_LCMD); + } else { + register_code(KC_LCTL); + } + cmd_keys_down++; + } else { + if (cmd_keys_down == 1) { + unregister_code(KC_LCMD); + } else { + unregister_code(KC_LCTL); + } + cmd_keys_down--; + } + return true; + } + return true; +} + diff --git a/keyboards/planck/keymaps/ttys0/readme.md b/keyboards/planck/keymaps/ttys0/readme.md new file mode 100644 index 0000000000..9684d1042d --- /dev/null +++ b/keyboards/planck/keymaps/ttys0/readme.md @@ -0,0 +1,5 @@ +# Sean's Planck Config + +This is basically a copy of the `callum` layout with a few minor adjustments to better fit my style. + +[Keyboard Layout Editor](http://www.keyboard-layout-editor.com/#/gists/7fef3554143712e2317b466c09a73a27) diff --git a/keyboards/planck/keymaps/ttys0/rules.mk b/keyboards/planck/keymaps/ttys0/rules.mk new file mode 100644 index 0000000000..faa09801be --- /dev/null +++ b/keyboards/planck/keymaps/ttys0/rules.mk @@ -0,0 +1,4 @@ +# Make some noise +SRC += muse.c + + diff --git a/keyboards/preonic/keymaps/ttys0/config.h b/keyboards/preonic/keymaps/ttys0/config.h new file mode 100644 index 0000000000..f846d1477e --- /dev/null +++ b/keyboards/preonic/keymaps/ttys0/config.h @@ -0,0 +1,29 @@ +/* Copyright 2021 Sean Johnson + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . +*/ + +#pragma once + +#ifdef AUDIO_ENABLE + #define STARTUP_SONG SONG(PREONIC_SOUND) + + #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \ + SONG(COLEMAK_SOUND), \ + SONG(DVORAK_SOUND) \ + } +#endif + +// Most tactile encoders have detents every 4 stages +#define ENCODER_RESOLUTION 4 diff --git a/keyboards/preonic/keymaps/ttys0/keymap.c b/keyboards/preonic/keymaps/ttys0/keymap.c new file mode 100644 index 0000000000..577e69e741 --- /dev/null +++ b/keyboards/preonic/keymaps/ttys0/keymap.c @@ -0,0 +1,283 @@ +/* Copyright 2021 Sean Johnson + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H +#include "muse.h" + +#define a KC_A +#define b KC_B +#define c KC_C +#define d KC_D +#define e KC_E +#define f KC_F +#define g KC_G +#define h KC_H +#define i KC_I +#define j KC_J +#define k KC_K +#define l KC_L +#define m KC_M +#define n KC_N +#define o KC_O +#define p KC_P +#define q KC_Q +#define r KC_R +#define s KC_S +#define t KC_T +#define u KC_U +#define v KC_V +#define w KC_W +#define x KC_X +#define y KC_Y +#define z KC_Z + +#define lopt KC_LALT +#define lctl KC_LCTL +#define lsft KC_LSFT +#define ropt KC_RALT +#define rctl KC_RCTL +#define rsft KC_RSFT + +#define n0 KC_0 +#define n1 KC_1 +#define n2 KC_2 +#define n3 KC_3 +#define n4 KC_4 +#define n5 KC_5 +#define n6 KC_6 +#define n7 KC_7 +#define n8 KC_8 +#define n9 KC_9 + +#define bspc KC_BSPC +#define caps KC_CAPS +#define comm KC_COMM +#define dash A(KC_MINS) +#define scln KC_SCLN +#define slsh KC_SLSH +#define spc KC_SPC +#define tab KC_TAB +#define del KC_DEL +#define dot KC_DOT +#define ent KC_ENT +#define mins KC_MINS +#define quot KC_QUOT +#define esc KC_ESC + +#define down KC_DOWN +#define home G(KC_LEFT) +#define end G(KC_RGHT) +#define up KC_UP +#define pgdn KC_PGDN +#define pgup KC_PGUP +#define left KC_LEFT +#define rght KC_RGHT + +#define tabl G(S(KC_LBRC)) +#define tabr G(S(KC_RBRC)) +#define fwd G(KC_RBRC) +#define back G(KC_LBRC) +#define dtl C(KC_LEFT) +#define dtr C(KC_RGHT) +#define slup S(A(KC_UP)) +#define sldn S(A(KC_DOWN)) + +#define f1 KC_F1 +#define f2 KC_F2 +#define f3 KC_F3 +#define f4 KC_F4 +#define f5 KC_F5 +#define f6 KC_F6 +#define f7 KC_F7 +#define f8 KC_F8 +#define f9 KC_F9 +#define f10 KC_F10 +#define f11 KC_F11 +#define f12 KC_F12 +#define f13 KC_F13 +#define f14 KC_F14 +#define f15 KC_F15 +#define f16 KC_F16 +#define f17 KC_F17 +#define f18 KC_F18 +#define f19 KC_F19 +#define f20 KC_F20 + +#define mute KC_MUTE +#define next KC_MNXT +#define play KC_MPLY +#define prev KC_MPRV +#define vold KC_VOLD +#define volu KC_VOLU + +#define symb MO(SYMB) +#define move MO(MOVE) +#define func MO(FUNC) + +#define rset RESET +#define powr KC_POWER + +#define ____ KC_TRNS +#define xxxx KC_NO + +#define emji LCMD(LCTL(KC_SPC)) +#define hypr OSM(MOD_HYPR) +#define brup KC_BRMU +#define brdn KC_BRMD +#define escf LT(FUNC,KC_ESC) + +enum preonic_layers { + BASE, + SYMB, + MOVE, + FUNC, +}; + +enum preonic_keycodes { + ampr = SAFE_RANGE, + astr, + at, + bsls, + circ, + dlr, + eql, + exlm, + grv, + hash, + lbrc, + lcbr, + lprn, + perc, + pipe, + plus, + rbrc, + rcbr, + rprn, + tild, + cmd, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [BASE] = LAYOUT_preonic_grid( + tild, n7, n5, n3, n1, n9, n8, n0, n2, n4, n6, mins, + tab, q, w, f, p, g, j, l, u, y, scln, pipe, + bspc, a, r, s, t, d, h, n, e, i, o, quot, + lsft, z, x, c, v, b, k, m, comm, dot, slsh, rsft, + hypr, lctl, lopt, cmd, move, ent, spc, symb, cmd, ropt, rctl, escf + ), + + [SYMB] = LAYOUT_preonic_grid( + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, + tild, n7, n5, n3, n1, n9, n8, n0, n2, n4, n6, dash, + bspc, lbrc, lcbr, lprn, hash, pipe, astr, dlr, rprn, rcbr, rbrc, at, + ____, grv, exlm, circ, ampr, ____, ____, plus, mins, eql, bsls, perc, + caps, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____ + ), + + [MOVE] = LAYOUT_preonic_grid( + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, + ____, xxxx, slup, dtl, dtr, xxxx, xxxx, home, up, end, xxxx, xxxx, + del, xxxx, sldn, tabl, tabr, xxxx, xxxx, left, down, rght, xxxx, xxxx, + ____, xxxx, xxxx, back, fwd, xxxx, xxxx, pgdn, pgup, xxxx, xxxx, ____, + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____ + ), + + [FUNC] = LAYOUT_preonic_grid( + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, + rset, f7, f5, f3, f1, f9, f8, f10, f2, f4, f6, volu, + powr, f17, f15, f13, f11, f19, f18, f20, f12, f14, f16, vold, + brup, brdn, xxxx, xxxx, xxxx, xxxx, xxxx, xxxx, xxxx, xxxx, xxxx, ____, + ____, ____, ____, ____, ____, ____, ____, mute, play, prev, next, ____ + ), +}; + + +bool send_string_if_keydown(keyrecord_t *record, const char *s) { + if (record->event.pressed) { + send_string(s); + } + return true; +} + +int cmd_keys_down = 0; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + // Override the default auto shifted symbols to use SEND_STRING See + // https://github.com/qmk/qmk_firmware/issues/4072 + case ampr: + return send_string_if_keydown(record, "&"); + case astr: + return send_string_if_keydown(record, "*"); + case at: + return send_string_if_keydown(record, "@"); + case bsls: + return send_string_if_keydown(record, "\\"); + case circ: + return send_string_if_keydown(record, "^"); + case dlr: + return send_string_if_keydown(record, "$"); + case eql: + return send_string_if_keydown(record, "="); + case exlm: + return send_string_if_keydown(record, "!"); + case grv: + return send_string_if_keydown(record, "`"); + case hash: + return send_string_if_keydown(record, "#"); + case lbrc: + return send_string_if_keydown(record, "["); + case lcbr: + return send_string_if_keydown(record, "{"); + case lprn: + return send_string_if_keydown(record, "("); + case perc: + return send_string_if_keydown(record, "%"); + case pipe: + return send_string_if_keydown(record, "|"); + case plus: + return send_string_if_keydown(record, "+"); + case rbrc: + return send_string_if_keydown(record, "]"); + case rcbr: + return send_string_if_keydown(record, "}"); + case rprn: + return send_string_if_keydown(record, ")"); + case tild: + return send_string_if_keydown(record, "~"); + + // cmd + cmd -> cmd + ctl + case cmd: + if (record->event.pressed) { + if (cmd_keys_down == 0) { + register_code(KC_LCMD); + } else { + register_code(KC_LCTL); + } + cmd_keys_down++; + } else { + if (cmd_keys_down == 1) { + unregister_code(KC_LCMD); + } else { + unregister_code(KC_LCTL); + } + cmd_keys_down--; + } + return true; + } + return true; +} + diff --git a/keyboards/preonic/keymaps/ttys0/readme.md b/keyboards/preonic/keymaps/ttys0/readme.md new file mode 100644 index 0000000000..e39a8ba5a0 --- /dev/null +++ b/keyboards/preonic/keymaps/ttys0/readme.md @@ -0,0 +1,3 @@ +# Sean's Preonic Config + +This is basically a copy of the `callum` Planck layout adjusted to the Preonic layout with a few minor adjustments. diff --git a/keyboards/preonic/keymaps/ttys0/rules.mk b/keyboards/preonic/keymaps/ttys0/rules.mk new file mode 100644 index 0000000000..22df9b39f3 --- /dev/null +++ b/keyboards/preonic/keymaps/ttys0/rules.mk @@ -0,0 +1,2 @@ +# Make some noise +SRC += muse.c From 60a39f4f5d192625ea03daf8cd26bc89aa1a91c2 Mon Sep 17 00:00:00 2001 From: Purdea Andrei Date: Sun, 9 May 2021 06:45:41 +0300 Subject: [PATCH 320/613] haptic: correct size of reserved field in the haptic structure. This saves 1 byte of wasted SRAM. (#12483) Co-authored-by: Drashna Jaelre --- drivers/haptic/haptic.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/haptic/haptic.h b/drivers/haptic/haptic.h index 5d3bd1c310..9223ad1c81 100644 --- a/drivers/haptic/haptic.h +++ b/drivers/haptic/haptic.h @@ -41,7 +41,7 @@ typedef union { uint8_t dwell : 7; bool cont : 1; uint8_t amplitude : 8; - uint16_t reserved : 7; + uint8_t reserved : 5; }; } haptic_config_t; From 7725d813c9cf1a47863e325457b13a4542984eda Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Sun, 9 May 2021 11:57:49 +0100 Subject: [PATCH 321/613] Allow MAKE environment override for 'qmk clean' (#12473) --- lib/python/qmk/cli/clean.py | 8 ++------ lib/python/qmk/commands.py | 34 ++++++++++++++++++++++++++++------ 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/lib/python/qmk/cli/clean.py b/lib/python/qmk/cli/clean.py index ec6501b760..9096529fde 100644 --- a/lib/python/qmk/cli/clean.py +++ b/lib/python/qmk/cli/clean.py @@ -1,16 +1,12 @@ """Clean the QMK firmware folder of build artifacts. """ -from qmk.commands import run +from qmk.commands import run, create_make_target from milc import cli -import shutil - @cli.argument('-a', '--all', arg_only=True, action='store_true', help='Remove *.hex and *.bin files in the QMK root as well.') @cli.subcommand('Clean the QMK firmware folder of build artifacts.') def clean(cli): """Runs `make clean` (or `make distclean` if --all is passed) """ - make_cmd = 'gmake' if shutil.which('gmake') else 'make' - - run([make_cmd, 'distclean' if cli.args.all else 'clean']) + run(create_make_target('distclean' if cli.args.all else 'clean')) diff --git a/lib/python/qmk/commands.py b/lib/python/qmk/commands.py index d742f67560..97774001a3 100644 --- a/lib/python/qmk/commands.py +++ b/lib/python/qmk/commands.py @@ -29,6 +29,33 @@ def _find_make(): return make_cmd +def create_make_target(target, parallel=1, **env_vars): + """Create a make command + + Args: + + target + Usually a make rule, such as 'clean' or 'all'. + + parallel + The number of make jobs to run in parallel + + **env_vars + Environment variables to be passed to make. + + Returns: + + A command that can be run to make the specified keyboard and keymap + """ + env = [] + make_cmd = _find_make() + + for key, value in env_vars.items(): + env.append(f'{key}={value}') + + return [make_cmd, '-j', str(parallel), *env, target] + + def create_make_command(keyboard, keymap, target=None, parallel=1, **env_vars): """Create a make compile command @@ -53,17 +80,12 @@ def create_make_command(keyboard, keymap, target=None, parallel=1, **env_vars): A command that can be run to make the specified keyboard and keymap """ - env = [] make_args = [keyboard, keymap] - make_cmd = _find_make() if target: make_args.append(target) - for key, value in env_vars.items(): - env.append(f'{key}={value}') - - return [make_cmd, '-j', str(parallel), *env, ':'.join(make_args)] + return create_make_target(':'.join(make_args), parallel, **env_vars) def get_git_version(repo_dir='.', check_dir='.'): From f544b60aaa60eea3349eb5fbbae8ba3fd3c1b755 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Sun, 9 May 2021 14:53:18 +0100 Subject: [PATCH 322/613] Align qmk info ascii logic with milc logging (#11627) --- lib/python/qmk/cli/info.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/python/qmk/cli/info.py b/lib/python/qmk/cli/info.py index 572b305cac..6115e8f87d 100755 --- a/lib/python/qmk/cli/info.py +++ b/lib/python/qmk/cli/info.py @@ -2,8 +2,8 @@ Compile an info.json for a particular keyboard and pretty-print it. """ +import sys import json -import platform from milc import cli @@ -15,7 +15,7 @@ from qmk.keymap import locate_keymap from qmk.info import info_json from qmk.path import is_keyboard -platform_id = platform.platform().lower() +UNICODE_SUPPORT = sys.stdout.encoding.lower().startswith('utf') def show_keymap(kb_info_json, title_caps=True): @@ -129,7 +129,7 @@ def print_text_output(kb_info_json): @cli.argument('-l', '--layouts', action='store_true', help='Render the layouts.') @cli.argument('-m', '--matrix', action='store_true', help='Render the layouts with matrix information.') @cli.argument('-f', '--format', default='friendly', arg_only=True, help='Format to display the data in (friendly, text, json) (Default: friendly).') -@cli.argument('--ascii', action='store_true', default='windows' in platform_id, help='Render layout box drawings in ASCII only.') +@cli.argument('--ascii', action='store_true', default=not UNICODE_SUPPORT, help='Render layout box drawings in ASCII only.') @cli.subcommand('Keyboard information.') @automagic_keyboard @automagic_keymap From 1426ffc0ee64c1d6de072ffc9d7fd9d1291f4f86 Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Mon, 10 May 2021 01:06:44 +1000 Subject: [PATCH 323/613] Add script to perform parallel builds. (#12497) Co-authored-by: Erovia --- lib/python/qmk/cli/__init__.py | 1 + lib/python/qmk/cli/info.py | 14 +++++- lib/python/qmk/cli/multibuild.py | 75 ++++++++++++++++++++++++++++++++ 3 files changed, 89 insertions(+), 1 deletion(-) create mode 100755 lib/python/qmk/cli/multibuild.py diff --git a/lib/python/qmk/cli/__init__.py b/lib/python/qmk/cli/__init__.py index f7df908119..008e57f762 100644 --- a/lib/python/qmk/cli/__init__.py +++ b/lib/python/qmk/cli/__init__.py @@ -24,6 +24,7 @@ from . import json2c from . import lint from . import list from . import kle2json +from . import multibuild from . import new from . import pyformat from . import pytest diff --git a/lib/python/qmk/cli/info.py b/lib/python/qmk/cli/info.py index 6115e8f87d..0d08d242cd 100755 --- a/lib/python/qmk/cli/info.py +++ b/lib/python/qmk/cli/info.py @@ -10,7 +10,7 @@ from milc import cli from qmk.json_encoders import InfoJSONEncoder from qmk.constants import COL_LETTERS, ROW_LETTERS from qmk.decorators import automagic_keyboard, automagic_keymap -from qmk.keyboard import keyboard_completer, keyboard_folder, render_layouts, render_layout +from qmk.keyboard import keyboard_completer, keyboard_folder, render_layouts, render_layout, rules_mk from qmk.keymap import locate_keymap from qmk.info import info_json from qmk.path import is_keyboard @@ -124,12 +124,20 @@ def print_text_output(kb_info_json): show_keymap(kb_info_json, False) +def print_parsed_rules_mk(keyboard_name): + rules = rules_mk(keyboard_name) + for k in sorted(rules.keys()): + print('%s = %s' % (k, rules[k])) + return + + @cli.argument('-kb', '--keyboard', type=keyboard_folder, completer=keyboard_completer, help='Keyboard to show info for.') @cli.argument('-km', '--keymap', help='Show the layers for a JSON keymap too.') @cli.argument('-l', '--layouts', action='store_true', help='Render the layouts.') @cli.argument('-m', '--matrix', action='store_true', help='Render the layouts with matrix information.') @cli.argument('-f', '--format', default='friendly', arg_only=True, help='Format to display the data in (friendly, text, json) (Default: friendly).') @cli.argument('--ascii', action='store_true', default=not UNICODE_SUPPORT, help='Render layout box drawings in ASCII only.') +@cli.argument('-r', '--rules-mk', action='store_true', help='Render the parsed values of the keyboard\'s rules.mk file.') @cli.subcommand('Keyboard information.') @automagic_keyboard @automagic_keymap @@ -146,6 +154,10 @@ def info(cli): cli.log.error('Invalid keyboard: "%s"', cli.config.info.keyboard) return False + if bool(cli.args.rules_mk): + print_parsed_rules_mk(cli.config.info.keyboard) + return False + # Build the info.json file kb_info_json = info_json(cli.config.info.keyboard) diff --git a/lib/python/qmk/cli/multibuild.py b/lib/python/qmk/cli/multibuild.py new file mode 100755 index 0000000000..1f3a097704 --- /dev/null +++ b/lib/python/qmk/cli/multibuild.py @@ -0,0 +1,75 @@ +"""Compile all keyboards. + +This will compile everything in parallel, for testing purposes. +""" +import re +from pathlib import Path + +from milc import cli + +from qmk.constants import QMK_FIRMWARE +from qmk.commands import _find_make +import qmk.keyboard + + +def _make_rules_mk_filter(key, value): + def _rules_mk_filter(keyboard_name): + rules_mk = qmk.keyboard.rules_mk(keyboard_name) + return True if key in rules_mk and rules_mk[key].lower() == str(value).lower() else False + return _rules_mk_filter + + +def _is_split(keyboard_name): + rules_mk = qmk.keyboard.rules_mk(keyboard_name) + return True if 'SPLIT_KEYBOARD' in rules_mk and rules_mk['SPLIT_KEYBOARD'].lower() == 'yes' else False + + +@cli.argument('-j', '--parallel', type=int, default=1, help="Set the number of parallel make jobs to run.") +@cli.argument('-c', '--clean', arg_only=True, action='store_true', help="Remove object files before compiling.") +@cli.argument('-f', '--filter', arg_only=True, action='append', default=[], help="Filter the list of keyboards based on the supplied value in rules.mk. Supported format is 'SPLIT_KEYBOARD=yes'. May be passed multiple times.") +@cli.subcommand('Compile QMK Firmware for all keyboards.', hidden=False if cli.config.user.developer else True) +def multibuild(cli): + """Compile QMK Firmware against all keyboards. + """ + + make_cmd = _find_make() + if cli.args.clean: + cli.run([make_cmd, 'clean'], capture_output=False, text=False) + + builddir = Path(QMK_FIRMWARE) / '.build' + makefile = builddir / 'parallel_kb_builds.mk' + + keyboard_list = qmk.keyboard.list_keyboards() + + filter_re = re.compile(r'^(?P[A-Z0-9_]+)\s*=\s*(?P[^#]+)$') + for filter_txt in cli.args.filter: + f = filter_re.match(filter_txt) + if f is not None: + keyboard_list = filter(_make_rules_mk_filter(f.group('key'), f.group('value')), keyboard_list) + + keyboard_list = list(sorted(keyboard_list)) + + if len(keyboard_list) == 0: + return + + builddir.mkdir(parents=True, exist_ok=True) + with open(makefile, "w") as f: + for keyboard_name in keyboard_list: + keyboard_safe = keyboard_name.replace('/', '_') + f.write( + f"""\ +all: {keyboard_safe}_binary +{keyboard_safe}_binary: + @rm -f "{QMK_FIRMWARE}/.build/failed.log.{keyboard_safe}" || true + +@$(MAKE) -C "{QMK_FIRMWARE}" -f "{QMK_FIRMWARE}/build_keyboard.mk" KEYBOARD="{keyboard_name}" KEYMAP="default" REQUIRE_PLATFORM_KEY= COLOR=true SILENT=false \\ + >>"{QMK_FIRMWARE}/.build/build.log.{keyboard_safe}" 2>&1 \\ + || cp "{QMK_FIRMWARE}/.build/build.log.{keyboard_safe}" "{QMK_FIRMWARE}/.build/failed.log.{keyboard_safe}" + @{{ grep '\[ERRORS\]' "{QMK_FIRMWARE}/.build/build.log.{keyboard_safe}" >/dev/null 2>&1 && printf "Build %-64s \e[1;31m[ERRORS]\e[0m\\n" "{keyboard_name}:default" ; }} \\ + || {{ grep '\[WARNINGS\]' "{QMK_FIRMWARE}/.build/build.log.{keyboard_safe}" >/dev/null 2>&1 && printf "Build %-64s \e[1;33m[WARNINGS]\e[0m\\n" "{keyboard_name}:default" ; }} \\ + || printf "Build %-64s \e[1;32m[OK]\e[0m\\n" "{keyboard_name}:default" + @rm -f "{QMK_FIRMWARE}/.build/build.log.{keyboard_safe}" || true + +""" # noqa: yapf should not care about the formatting of the Makefile + ) + + cli.run([make_cmd, '-j', str(cli.args.parallel), '-f', makefile, 'all'], capture_output=False, text=False) From 6c5e94061c05c94a2404d4edcca4882cdfca844e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 10 May 2021 03:15:00 +1000 Subject: [PATCH 324/613] [CI] Format code according to conventions (#12838) Co-authored-by: QMK Bot --- drivers/haptic/haptic.h | 14 +++++++------- lib/python/qmk/cli/multibuild.py | 5 ++++- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/drivers/haptic/haptic.h b/drivers/haptic/haptic.h index 9223ad1c81..ba8e0d20be 100644 --- a/drivers/haptic/haptic.h +++ b/drivers/haptic/haptic.h @@ -34,13 +34,13 @@ typedef union { uint32_t raw; struct { - bool enable : 1; - uint8_t feedback : 2; - uint8_t mode : 7; - bool buzz : 1; - uint8_t dwell : 7; - bool cont : 1; - uint8_t amplitude : 8; + bool enable : 1; + uint8_t feedback : 2; + uint8_t mode : 7; + bool buzz : 1; + uint8_t dwell : 7; + bool cont : 1; + uint8_t amplitude : 8; uint8_t reserved : 5; }; } haptic_config_t; diff --git a/lib/python/qmk/cli/multibuild.py b/lib/python/qmk/cli/multibuild.py index 1f3a097704..517513fc66 100755 --- a/lib/python/qmk/cli/multibuild.py +++ b/lib/python/qmk/cli/multibuild.py @@ -16,6 +16,7 @@ def _make_rules_mk_filter(key, value): def _rules_mk_filter(keyboard_name): rules_mk = qmk.keyboard.rules_mk(keyboard_name) return True if key in rules_mk and rules_mk[key].lower() == str(value).lower() else False + return _rules_mk_filter @@ -69,7 +70,9 @@ all: {keyboard_safe}_binary || printf "Build %-64s \e[1;32m[OK]\e[0m\\n" "{keyboard_name}:default" @rm -f "{QMK_FIRMWARE}/.build/build.log.{keyboard_safe}" || true -""" # noqa: yapf should not care about the formatting of the Makefile +""" + + # noqa: yapf should not care about the formatting of the Makefile ) cli.run([make_cmd, '-j', str(cli.args.parallel), '-f', makefile, 'all'], capture_output=False, text=False) From 30aae6298bb9f31a172dbc36817965bc415519b8 Mon Sep 17 00:00:00 2001 From: Erovia Date: Sun, 9 May 2021 19:19:42 +0200 Subject: [PATCH 325/613] CLI: Use BASH if SHELL variable is not set (Windows) (#12847) --- lib/python/qmk/commands.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/python/qmk/commands.py b/lib/python/qmk/commands.py index 97774001a3..8c3f95ea21 100644 --- a/lib/python/qmk/commands.py +++ b/lib/python/qmk/commands.py @@ -238,6 +238,6 @@ def run(command, *args, **kwargs): safecmd = map(str, command) safecmd = map(shlex.quote, safecmd) safecmd = ' '.join(safecmd) - command = [os.environ['SHELL'], '-c', safecmd] + command = [os.environ.get('SHELL', '/usr/bin/bash'), '-c', safecmd] return subprocess.run(command, *args, **kwargs) From 5c924efa04c072d0d40c172ede86d5a7a68456ab Mon Sep 17 00:00:00 2001 From: Zach White Date: Sun, 9 May 2021 11:30:17 -0700 Subject: [PATCH 326/613] fix the makefile snippet so flake8 and yapf don't fight (#12849) --- lib/python/qmk/cli/multibuild.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/python/qmk/cli/multibuild.py b/lib/python/qmk/cli/multibuild.py index 517513fc66..a4f0a0cc03 100755 --- a/lib/python/qmk/cli/multibuild.py +++ b/lib/python/qmk/cli/multibuild.py @@ -57,6 +57,7 @@ def multibuild(cli): with open(makefile, "w") as f: for keyboard_name in keyboard_list: keyboard_safe = keyboard_name.replace('/', '_') + # yapf: disable f.write( f"""\ all: {keyboard_safe}_binary @@ -70,9 +71,8 @@ all: {keyboard_safe}_binary || printf "Build %-64s \e[1;32m[OK]\e[0m\\n" "{keyboard_name}:default" @rm -f "{QMK_FIRMWARE}/.build/build.log.{keyboard_safe}" || true -""" - - # noqa: yapf should not care about the formatting of the Makefile +"""# noqa ) + # yapf: enable cli.run([make_cmd, '-j', str(cli.args.parallel), '-f', makefile, 'all'], capture_output=False, text=False) From 4fa32f0f042eecdb662d6d56d508e03cb6ff83c9 Mon Sep 17 00:00:00 2001 From: Ryan Date: Mon, 10 May 2021 05:16:29 +1000 Subject: [PATCH 327/613] KBDMini refactor (#12850) --- keyboards/kbdfans/kbdmini/config.h | 29 +++- keyboards/kbdfans/kbdmini/info.json | 68 ++++++++ keyboards/kbdfans/kbdmini/kbdmini.c | 156 +++++++++--------- keyboards/kbdfans/kbdmini/kbdmini.h | 10 +- .../kbdfans/kbdmini/keymaps/default/keymap.c | 13 +- keyboards/kbdfans/kbdmini/readme.md | 6 +- keyboards/kbdfans/kbdmini/rules.mk | 23 +-- 7 files changed, 188 insertions(+), 117 deletions(-) create mode 100644 keyboards/kbdfans/kbdmini/info.json diff --git a/keyboards/kbdfans/kbdmini/config.h b/keyboards/kbdfans/kbdmini/config.h index d240507833..5a36e983d1 100644 --- a/keyboards/kbdfans/kbdmini/config.h +++ b/keyboards/kbdfans/kbdmini/config.h @@ -7,23 +7,38 @@ #define PRODUCT_ID 0x2001 #define DEVICE_VER 0x0001 #define MANUFACTURER DZTECH - #define PRODUCT KBDMINI + +/* key matrix size */ #define MATRIX_ROWS 4 #define MATRIX_COLS 13 -#define MATRIX_ROW_PINS {B7, E6, F5, F4} -#define MATRIX_COL_PINS {B3, B2, B1, B0, F1, F0, C6, B6, B5, B4, D7, D6, D4} +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ +#define MATRIX_ROW_PINS { B7, E6, F5, F4 } +#define MATRIX_COL_PINS { B3, B2, B1, B0, F1, F0, C6, B6, B5, B4, D7, D6, D4 } #define UNUSED_PINS + +/* COL2ROW, ROW2COL */ #define DIODE_DIRECTION COL2ROW +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ #define DEBOUNCE 3 + #ifdef RGB_MATRIX_ENABLE #define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects #define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended #define RGB_MATRIX_KEYPRESSES #define RGB_MATRIX_FRAMEBUFFER_EFFECTS -#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN #define DISABLE_RGB_MATRIX_BAND_SAT #define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT #define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT @@ -43,4 +58,8 @@ #define DRIVER_COUNT 2 #define DRIVER_1_LED_TOTAL 52 #define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL -#endif \ No newline at end of file +#endif + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION diff --git a/keyboards/kbdfans/kbdmini/info.json b/keyboards/kbdfans/kbdmini/info.json new file mode 100644 index 0000000000..fd4ac4a1ef --- /dev/null +++ b/keyboards/kbdfans/kbdmini/info.json @@ -0,0 +1,68 @@ +{ + "keyboard_name": "KBDMini", + "url": "", + "maintainer": "KBDFans", + "width": 13, + "height": 4, + "layouts": { + "LAYOUT": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + + {"x": 0, "y": 1}, + {"x": 1, "y": 1}, + {"x": 2, "y": 1}, + {"x": 3, "y": 1}, + {"x": 4, "y": 1}, + {"x": 5, "y": 1}, + {"x": 6, "y": 1}, + {"x": 7, "y": 1}, + {"x": 8, "y": 1}, + {"x": 9, "y": 1}, + {"x": 10, "y": 1}, + {"x": 11, "y": 1}, + {"x": 12, "y": 1}, + + {"x": 0, "y": 2}, + {"x": 1, "y": 2}, + {"x": 2, "y": 2}, + {"x": 3, "y": 2}, + {"x": 4, "y": 2}, + {"x": 5, "y": 2}, + {"x": 6, "y": 2}, + {"x": 7, "y": 2}, + {"x": 8, "y": 2}, + {"x": 9, "y": 2}, + {"x": 10, "y": 2}, + {"x": 11, "y": 2}, + {"x": 12, "y": 2}, + + {"x": 0, "y": 3}, + {"x": 1, "y": 3}, + {"x": 2, "y": 3}, + {"x": 3, "y": 3}, + {"x": 4, "y": 3}, + {"x": 5, "y": 3}, + {"x": 6, "y": 3}, + {"x": 7, "y": 3}, + {"x": 8, "y": 3}, + {"x": 9, "y": 3}, + {"x": 10, "y": 3}, + {"x": 11, "y": 3}, + {"x": 12, "y": 3} + ] + } + } +} diff --git a/keyboards/kbdfans/kbdmini/kbdmini.c b/keyboards/kbdfans/kbdmini/kbdmini.c index b402eed64f..0e0df2f9af 100644 --- a/keyboards/kbdfans/kbdmini/kbdmini.c +++ b/keyboards/kbdfans/kbdmini/kbdmini.c @@ -1,96 +1,88 @@ #include "kbdmini.h" -#include "config.h" + const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { - {0, B_9, A_9, C_9}, //LA33 - {0, B_10, A_10, C_10}, //LA37 - {0, B_11, A_11, C_11}, //LA41 - {0, B_12, A_12, C_12}, //LA45 - {0, B_13, A_13, C_13}, //LA49 - {0, B_14, A_14, C_14}, //LA53 - {0, B_15, A_15, C_15}, //LA57 - {0, B_6, A_6, C_6}, //LA21 - {0, B_5, A_5, C_5}, //LA17 - {0, B_4, A_4, C_4}, //LA13 - {0, B_3, A_3, C_3}, //LA9 - {0, B_2, A_2, C_2}, //LA5 - {0, B_1, A_1, C_1}, //LA1 + { 0, B_9, A_9, C_9 }, //LA33 + { 0, B_10, A_10, C_10 }, //LA37 + { 0, B_11, A_11, C_11 }, //LA41 + { 0, B_12, A_12, C_12 }, //LA45 + { 0, B_13, A_13, C_13 }, //LA49 + { 0, B_14, A_14, C_14 }, //LA53 + { 0, B_15, A_15, C_15 }, //LA57 + { 0, B_6, A_6, C_6 }, //LA21 + { 0, B_5, A_5, C_5 }, //LA17 + { 0, B_4, A_4, C_4 }, //LA13 + { 0, B_3, A_3, C_3 }, //LA9 + { 0, B_2, A_2, C_2 }, //LA5 + { 0, B_1, A_1, C_1 }, //LA1 - {0, E_9, D_9, F_9}, //LA34 - {0, E_10, D_10, F_10}, //LA38 - {0, E_11, D_11, F_11}, //LA42 - {0, E_12, D_12, F_12}, //LA46 - {0, E_13, D_13, F_13}, //LA50 - {0, E_14, D_14, F_14}, //LA54 - {0, E_15, D_15, F_15}, //LA58 - {0, E_6, D_6, F_6}, //LA22 - {0, E_5, D_5, F_5}, //LA18 - {0, E_4, D_4, F_4}, //LA14 - {0, E_3, D_3, F_3}, //LA10 - {0, E_2, D_2, F_2}, //LA6 - {0, E_1, D_1, F_1}, //LA2 + { 0, E_9, D_9, F_9 }, //LA34 + { 0, E_10, D_10, F_10 }, //LA38 + { 0, E_11, D_11, F_11 }, //LA42 + { 0, E_12, D_12, F_12 }, //LA46 + { 0, E_13, D_13, F_13 }, //LA50 + { 0, E_14, D_14, F_14 }, //LA54 + { 0, E_15, D_15, F_15 }, //LA58 + { 0, E_6, D_6, F_6 }, //LA22 + { 0, E_5, D_5, F_5 }, //LA18 + { 0, E_4, D_4, F_4 }, //LA14 + { 0, E_3, D_3, F_3 }, //LA10 + { 0, E_2, D_2, F_2 }, //LA6 + { 0, E_1, D_1, F_1 }, //LA2 - {0, H_9, G_9, I_9}, //LA35 - {0, H_10, G_10, I_10}, //LA39 - {0, H_11, G_11, I_11}, //LA43 - {0, H_12, G_12, I_12}, //LA47 - {0, H_13, G_13, I_13}, //LA51 - {0, H_14, G_14, I_14}, //LA55 - {0, H_15, G_15, I_15}, //LA59 - {0, H_6, G_6, I_6}, //LA23 - {0, H_5, G_5, I_5}, //LA19 - {0, H_4, G_4, I_4}, //LA15 - {0, H_3, G_3, I_3}, //LA11 - {0, H_2, G_2, I_2}, //LA7 - {0, H_1, G_1, I_1}, //LA3 + { 0, H_9, G_9, I_9 }, //LA35 + { 0, H_10, G_10, I_10 }, //LA39 + { 0, H_11, G_11, I_11 }, //LA43 + { 0, H_12, G_12, I_12 }, //LA47 + { 0, H_13, G_13, I_13 }, //LA51 + { 0, H_14, G_14, I_14 }, //LA55 + { 0, H_15, G_15, I_15 }, //LA59 + { 0, H_6, G_6, I_6 }, //LA23 + { 0, H_5, G_5, I_5 }, //LA19 + { 0, H_4, G_4, I_4 }, //LA15 + { 0, H_3, G_3, I_3 }, //LA11 + { 0, H_2, G_2, I_2 }, //LA7 + { 0, H_1, G_1, I_1 }, //LA3 - {0, K_9, J_9, L_9}, //LA36 - {0, K_10, J_10, L_10}, //LA40 - {0, K_11, J_11, L_11}, //LA44 - {0, K_12, J_12, L_12}, //LA48 - {0, K_13, J_13, L_13}, //LA52 - {0, K_14, J_14, L_14}, //LA56 - {0, K_15, J_15, L_15}, //LA60 - {0, K_6, J_6, L_6}, //LA24 - {0, K_5, J_5, L_5}, //LA20 - {0, K_4, J_4, L_4}, //LA16 - {0, K_3, J_3, L_3}, //LA12 - {0, K_2, J_2, L_2}, //LA8 - {0, K_1, J_1, L_1}//LA4 + { 0, K_9, J_9, L_9 }, //LA36 + { 0, K_10, J_10, L_10 }, //LA40 + { 0, K_11, J_11, L_11 }, //LA44 + { 0, K_12, J_12, L_12 }, //LA48 + { 0, K_13, J_13, L_13 }, //LA52 + { 0, K_14, J_14, L_14 }, //LA56 + { 0, K_15, J_15, L_15 }, //LA60 + { 0, K_6, J_6, L_6 }, //LA24 + { 0, K_5, J_5, L_5 }, //LA20 + { 0, K_4, J_4, L_4 }, //LA16 + { 0, K_3, J_3, L_3 }, //LA12 + { 0, K_2, J_2, L_2 }, //LA8 + { 0, K_1, J_1, L_1 } //LA4 }; -led_config_t g_led_config = { { - { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}, - { 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25}, - { 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38}, - { 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51} -}, { - { 0, 0 }, { 19, 0 }, { 38, 0 }, { 57, 0 }, { 76, 0 }, { 95, 0 }, { 114, 0 }, { 133, 0 }, { 152, 0 }, { 171, 0 }, { 190, 0 }, { 209, 0 }, { 224, 0 }, - { 0, 21 }, { 19, 21 }, { 38, 21 }, { 57, 21 }, { 76, 21 }, { 95, 21 }, { 114, 21 }, { 133, 21 }, { 152, 21 }, { 171, 21 }, { 190, 21 }, { 209, 21 }, { 224, 21 }, - { 0, 42 }, { 19, 42 }, { 38, 42 }, { 57, 42 }, { 76, 42 }, { 95, 42 }, { 114, 42 }, { 133, 42 }, { 152, 42 }, { 171, 42 }, { 190, 42 }, { 209, 42 }, { 224, 42 }, - { 0, 64 }, { 19, 64 }, { 38, 64 }, { 57, 64 }, { 76, 64 }, { 95, 64 }, { 114, 64 }, { 133, 64 }, { 152, 64 }, { 171, 64 }, { 190, 64 }, { 209, 64 }, { 224, 64 } -}, { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, - 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 -} }; -void matrix_init_kb(void) { - matrix_init_user(); -} -void matrix_scan_kb(void) { - matrix_scan_user(); -} -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - return process_record_user(keycode, record); -} -void suspend_power_down_kb(void) -{ +led_config_t g_led_config = { + { + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }, + { 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 }, + { 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38 }, + { 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51 } + }, { + { 0, 0 }, { 19, 0 }, { 38, 0 }, { 57, 0 }, { 76, 0 }, { 95, 0 }, { 114, 0 }, { 133, 0 }, { 152, 0 }, { 171, 0 }, { 190, 0 }, { 209, 0 }, { 224, 0 }, + { 0, 21 }, { 19, 21 }, { 38, 21 }, { 57, 21 }, { 76, 21 }, { 95, 21 }, { 114, 21 }, { 133, 21 }, { 152, 21 }, { 171, 21 }, { 190, 21 }, { 209, 21 }, { 224, 21 }, + { 0, 42 }, { 19, 42 }, { 38, 42 }, { 57, 42 }, { 76, 42 }, { 95, 42 }, { 114, 42 }, { 133, 42 }, { 152, 42 }, { 171, 42 }, { 190, 42 }, { 209, 42 }, { 224, 42 }, + { 0, 64 }, { 19, 64 }, { 38, 64 }, { 57, 64 }, { 76, 64 }, { 95, 64 }, { 114, 64 }, { 133, 64 }, { 152, 64 }, { 171, 64 }, { 190, 64 }, { 209, 64 }, { 224, 64 } + }, { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 + } +}; + +void suspend_power_down_kb(void) { rgb_matrix_set_suspend_state(true); suspend_power_down_user(); } -void suspend_wakeup_init_kb(void) -{ +void suspend_wakeup_init_kb(void) { rgb_matrix_set_suspend_state(false); suspend_wakeup_init_user(); } diff --git a/keyboards/kbdfans/kbdmini/kbdmini.h b/keyboards/kbdfans/kbdmini/kbdmini.h index 38596a569e..b97da57080 100644 --- a/keyboards/kbdfans/kbdmini/kbdmini.h +++ b/keyboards/kbdfans/kbdmini/kbdmini.h @@ -1,15 +1,15 @@ #pragma once + #include "quantum.h" #define LAYOUT( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C,\ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C,\ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C,\ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C \ ) { \ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C }, \ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C }, \ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C }, \ - { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C } \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C } \ } - diff --git a/keyboards/kbdfans/kbdmini/keymaps/default/keymap.c b/keyboards/kbdfans/kbdmini/keymaps/default/keymap.c index 9c8267147c..4cf8fcd65b 100644 --- a/keyboards/kbdfans/kbdmini/keymaps/default/keymap.c +++ b/keyboards/kbdfans/kbdmini/keymaps/default/keymap.c @@ -1,9 +1,10 @@ #include QMK_KEYBOARD_H -#define _LAYER0 0 + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_LAYER0] = LAYOUT( - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, - KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSPC, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_ENT, - KC_F5, KC_CAPS, KC_LCTL, KC_LGUI, KC_F1, KC_SPC,KC_F2, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + [0] = LAYOUT( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSPC, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_ENT, + KC_F5, KC_CAPS, KC_LCTL, KC_LGUI, KC_F1, KC_SPC, KC_F2, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ) }; diff --git a/keyboards/kbdfans/kbdmini/readme.md b/keyboards/kbdfans/kbdmini/readme.md index e01684f138..5d5ebe2a7a 100644 --- a/keyboards/kbdfans/kbdmini/readme.md +++ b/keyboards/kbdfans/kbdmini/readme.md @@ -2,9 +2,9 @@ ![KBDMINI](imgur.com image replace me!) -Keyboard Maintainer: [DZTECH](https://github.com/moyi4681) -Hardware Supported: KBDMINI -Hardware Availability: [KBDFans](https://kbdfans.cn/) +* Keyboard Maintainer: [DZTECH](https://github.com/moyi4681) +* Hardware Supported: KBDMINI +* Hardware Availability: [KBDFans](https://kbdfans.cn/) Make example for this keyboard (after setting up your build environment): diff --git a/keyboards/kbdfans/kbdmini/rules.mk b/keyboards/kbdfans/kbdmini/rules.mk index f83bbdcea4..aaab18afc7 100644 --- a/keyboards/kbdfans/kbdmini/rules.mk +++ b/keyboards/kbdfans/kbdmini/rules.mk @@ -2,13 +2,6 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options @@ -18,16 +11,14 @@ BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration +COMMAND_ENABLE = no # Commands for debug and configuration # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -NKRO_ENABLE = yes # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 -RGB_MATRIX_ENABLE = yes # Use RGB matrix +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +RGB_MATRIX_ENABLE = yes RGB_MATRIX_DRIVER = IS31FL3733 -NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in From 3f854e16acc880b9c9ccab2244dc585705dfac1e Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Sun, 9 May 2021 21:39:48 +0100 Subject: [PATCH 328/613] Catch 'LAYOUTS = all' in lint (#12848) Co-authored-by: Zach White --- lib/python/qmk/info.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/lib/python/qmk/info.py b/lib/python/qmk/info.py index e2350b7f72..47c8bff7a8 100644 --- a/lib/python/qmk/info.py +++ b/lib/python/qmk/info.py @@ -19,6 +19,12 @@ true_values = ['1', 'on', 'yes'] false_values = ['0', 'off', 'no'] +def _valid_community_layout(layout): + """Validate that a declared community list exists + """ + return (Path('layouts/default') / layout).exists() + + def info_json(keyboard): """Generate the info.json data for a specific keyboard. """ @@ -71,6 +77,13 @@ def info_json(keyboard): if not info_data.get('layouts'): _log_error(info_data, 'No LAYOUTs defined! Need at least one layout defined in the keyboard.h or info.json.') + # Filter out any non-existing community layouts + for layout in info_data.get('community_layouts', []): + if not _valid_community_layout(layout): + # Ignore layout from future checks + info_data['community_layouts'].remove(layout) + _log_error(info_data, 'Claims to support a community layout that does not exist: %s' % (layout)) + # Make sure we supply layout macros for the community layouts we claim to support for layout in info_data.get('community_layouts', []): layout_name = 'LAYOUT_' + layout From 66ed80ad3a0edecd9d7abbef71fc2a6e3e59b541 Mon Sep 17 00:00:00 2001 From: James Young <18669334+noroadsleft@users.noreply.github.com> Date: Mon, 10 May 2021 10:37:05 -0700 Subject: [PATCH 329/613] Lagrange handwired Configurator bugfix (#12854) * use human-friendly formatting * correct key object order --- keyboards/handwired/lagrange/info.json | 104 ++++++++++++++++++++----- 1 file changed, 86 insertions(+), 18 deletions(-) diff --git a/keyboards/handwired/lagrange/info.json b/keyboards/handwired/lagrange/info.json index 29ee0a5e6d..1c94d32019 100644 --- a/keyboards/handwired/lagrange/info.json +++ b/keyboards/handwired/lagrange/info.json @@ -1,21 +1,89 @@ { - "keyboard_name": "Lagrange", - "url": "https://github.com/dpapavas/lagrange-keyboard", - "maintainer": "dpapavas", - "width": 19, - "height": 8.5, - "layouts": { - "LAYOUT": { - "layout": [ - {"x":0, "y":0.75, "w":1.5}, {"x":1.5, "y":0.75}, {"x":2.5, "y":0.375}, {"x":3.5, "y":0}, {"x":4.5, "y":0.5}, {"x":5.5, "y":0.5}, {"x":12.5, "y":0.5}, {"x":13.5, "y":0.5}, {"x":14.5, "y":0}, {"x":15.5, "y":0.375}, {"x":16.5, "y":0.75}, {"x":17.5, "y":0.75, "w":1.5}, - {"x":0, "y":1.75, "w":1.5}, {"x":1.5, "y":1.75}, {"x":2.5, "y":1.375}, {"x":3.5, "y":1}, {"x":4.5, "y":1.5}, {"x":5.5, "y":1.5}, {"x":12.5, "y":1.5}, {"x":13.5, "y":1.5}, {"x":14.5, "y":1}, {"x":15.5, "y":1.375}, {"x":16.5, "y":1.75}, {"x":17.5, "y":1.75, "w":1.5}, - {"x":0, "y":2.75, "w":1.5}, {"x":1.5, "y":2.75}, {"x":2.5, "y":2.375}, {"x":3.5, "y":2}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5}, {"x":14.5, "y":2}, {"x":15.5, "y":2.375}, {"x":16.5, "y":2.75}, {"x":17.5, "y":2.75, "w":1.5}, - {"x":0, "y":3.75, "w":1.5}, {"x":1.5, "y":3.75}, {"x":2.5, "y":3.375}, {"x":3.5, "y":3}, {"x":4.5, "y":3.5}, {"x":5.5, "y":3.5}, {"x":12.5, "y":3.5}, {"x":13.5, "y":3.5}, {"x":14.5, "y":3}, {"x":15.5, "y":3.375}, {"x":16.5, "y":3.75}, {"x":17.5, "y":3.75, "w":1.5}, - {"x":0, "y":4.75, "w":1.5}, {"x":2.5, "y":4.375}, {"x":3.5, "y":4}, {"x":14.5, "y":4}, {"x":15.5, "y":4.5}, {"x":17.5, "y":4.75, "w":1.5}, - {"x":5, "y":5, "h":1.25}, {"x":6, "y":5, "h":1.5}, {"x":7, "y":5, "h":1.5}, {"x":8, "y":5.5}, {"x":10, "y":5.5}, {"x":11, "y":5, "h":1.5}, {"x":12, "y":5, "h":1.5}, {"x":13, "y":5, "h":1.25}, - {"x":5, "y":7}, {"x":6, "y":6.5}, {"x":7, "y":7}, {"x":11, "y":7}, {"x":12, "y":6.5}, {"x":13, "y":7}, - {"x":6, "y":7.5}, {"x":12, "y":7.5} - ] + "keyboard_name": "Lagrange", + "url": "https://github.com/dpapavas/lagrange-keyboard", + "maintainer": "dpapavas", + "width": 19, + "height": 8.5, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0.75, "w":1.5}, + {"x":1.5, "y":0.75}, + {"x":2.5, "y":0.375}, + {"x":3.5, "y":0}, + {"x":4.5, "y":0.5}, + {"x":5.5, "y":0.5}, + {"x":12.5, "y":0.5}, + {"x":13.5, "y":0.5}, + {"x":14.5, "y":0}, + {"x":15.5, "y":0.375}, + {"x":16.5, "y":0.75}, + {"x":17.5, "y":0.75, "w":1.5}, + + {"x":0, "y":1.75, "w":1.5}, + {"x":1.5, "y":1.75}, + {"x":2.5, "y":1.375}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1.5}, + {"x":5.5, "y":1.5}, + {"x":12.5, "y":1.5}, + {"x":13.5, "y":1.5}, + {"x":14.5, "y":1}, + {"x":15.5, "y":1.375}, + {"x":16.5, "y":1.75}, + {"x":17.5, "y":1.75, "w":1.5}, + + {"x":0, "y":2.75, "w":1.5}, + {"x":1.5, "y":2.75}, + {"x":2.5, "y":2.375}, + {"x":3.5, "y":2}, + {"x":4.5, "y":2.5}, + {"x":5.5, "y":2.5}, + {"x":12.5, "y":2.5}, + {"x":13.5, "y":2.5}, + {"x":14.5, "y":2}, + {"x":15.5, "y":2.375}, + {"x":16.5, "y":2.75}, + {"x":17.5, "y":2.75, "w":1.5}, + + {"x":0, "y":3.75, "w":1.5}, + {"x":1.5, "y":3.75}, + {"x":2.5, "y":3.375}, + {"x":3.5, "y":3}, + {"x":4.5, "y":3.5}, + {"x":5.5, "y":3.5}, + {"x":12.5, "y":3.5}, + {"x":13.5, "y":3.5}, + {"x":14.5, "y":3}, + {"x":15.5, "y":3.375}, + {"x":16.5, "y":3.75}, + {"x":17.5, "y":3.75, "w":1.5}, + + {"x":0, "y":4.75, "w":1.5}, + {"x":2.5, "y":4.375}, + {"x":3.5, "y":4}, + {"x":5, "y":5, "h":1.25}, + {"x":6, "y":5, "h":1.5}, + {"x":7, "y":5, "h":1.5}, + {"x":8, "y":5.5}, + {"x":10, "y":5.5}, + {"x":11, "y":5, "h":1.5}, + {"x":12, "y":5, "h":1.5}, + {"x":13, "y":5, "h":1.25}, + {"x":14.5, "y":4}, + {"x":15.5, "y":4.5}, + {"x":17.5, "y":4.75, "w":1.5}, + + {"x":5, "y":7}, + {"x":6, "y":6.5}, + {"x":7, "y":7}, + {"x":11, "y":7}, + {"x":12, "y":6.5}, + {"x":13, "y":7}, + + {"x":6, "y":7.5}, + {"x":12, "y":7.5} + ] + } } - } } From a3e7f3e7c58ee98596ead5c213f3a9ed8340cd80 Mon Sep 17 00:00:00 2001 From: Zach White Date: Mon, 10 May 2021 11:18:44 -0700 Subject: [PATCH 330/613] Improve our CI tests (#11476) * add a test and dry-run to qmk generate-api * add a dry-run to qmk pyformat * Add a --dry-run to qmk cformat * reverse the order of nose2 and flake8 tests * run CI test against cformat and pyformat * fix programming errors * tweak job name * fix argument * refine the files we select * fix stack trace in --ci * make cformat exit clean * fix c file extensions * decouple CI from pyformat * remove --ci arg * make ci happy * use the environment var instead * change output to text * fix log message * replace tabs --- .github/workflows/format.yaml | 61 +++++------ lib/python/qmk/cli/cformat.py | 123 ++++++++++++++++------ lib/python/qmk/cli/generate/api.py | 35 +++--- lib/python/qmk/cli/pyformat.py | 15 ++- lib/python/qmk/cli/pytest.py | 3 +- lib/python/qmk/tests/test_cli_commands.py | 16 ++- 6 files changed, 170 insertions(+), 83 deletions(-) diff --git a/.github/workflows/format.yaml b/.github/workflows/format.yaml index 201f3c230f..6d13e78945 100644 --- a/.github/workflows/format.yaml +++ b/.github/workflows/format.yaml @@ -1,47 +1,42 @@ -name: Format Codebase +name: PR Lint Format on: - push: - branches: - - master - - develop + pull_request: + paths: + - 'drivers/**' + - 'lib/arm_atsam/**' + - 'lib/lib8tion/**' + - 'lib/python/**' + - 'platforms/**' + - 'quantum/**' + - 'tests/**' + - 'tmk_core/**' jobs: - format: + lint: runs-on: ubuntu-latest - container: qmkfm/base_container - # protect against those who develop with their fork on master - if: github.repository == 'qmk/qmk_firmware' + container: qmkfm/base_container steps: - uses: rlespinasse/github-slug-action@v3.x - uses: actions/checkout@v2 with: - token: ${{ secrets.API_TOKEN_GITHUB }} + fetch-depth: 0 - - name: Install dependencies - run: | - apt-get update && apt-get install -y dos2unix - - - name: Format files - run: | - bin/qmk cformat -a - bin/qmk pyformat - bin/qmk fileformat - - - name: Become QMK Bot - run: | - git config user.name 'QMK Bot' - git config user.email 'hello@qmk.fm' - - - name: Create Pull Request - uses: peter-evans/create-pull-request@v3 + - uses: trilom/file-changes-action@v1.2.4 + id: file_changes with: - delete-branch: true - branch: bugfix/format_${{ env.GITHUB_REF_SLUG }} - author: QMK Bot - committer: QMK Bot - commit-message: Format code according to conventions - title: '[CI] Format code according to conventions' + output: ' ' + fileOutput: ' ' + + - name: Run qmk cformat and qmk pyformat + shell: 'bash {0}' + run: | + qmk cformat -n $(< ~/files.txt) + cformat_exit=$? + qmk pyformat -n + pyformat_exit=$? + + exit $((cformat_exit + pyformat_exit)) diff --git a/lib/python/qmk/cli/cformat.py b/lib/python/qmk/cli/cformat.py index d0d3b3b0a3..9333aaec4b 100644 --- a/lib/python/qmk/cli/cformat.py +++ b/lib/python/qmk/cli/cformat.py @@ -1,6 +1,7 @@ """Format C code according to QMK's style. """ import subprocess +from os import path from shutil import which from argcomplete.completers import FilesCompleter @@ -9,58 +10,118 @@ from milc import cli from qmk.path import normpath from qmk.c_parse import c_source_files +c_file_suffixes = ('c', 'h', 'cpp') +core_dirs = ('drivers', 'quantum', 'tests', 'tmk_core', 'platforms') +ignored = ('tmk_core/protocol/usb_hid', 'quantum/template', 'platforms/chibios') -def cformat_run(files, all_files): + +def find_clang_format(): + """Returns the path to clang-format. + """ + for clang_version in range(20, 6, -1): + binary = f'clang-format-{clang_version}' + + if which(binary): + return binary + + return 'clang-format' + + +def find_diffs(files): + """Run clang-format and diff it against a file. + """ + found_diffs = False + + for file in files: + cli.log.debug('Checking for changes in %s', file) + clang_format = subprocess.Popen([find_clang_format(), file], stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True) + diff = cli.run(['diff', '-u', f'--label=a/{file}', f'--label=b/{file}', str(file), '-'], stdin=clang_format.stdout, capture_output=True) + + if diff.returncode != 0: + print(diff.stdout) + found_diffs = True + + return found_diffs + + +def cformat_run(files): """Spawn clang-format subprocess with proper arguments """ # Determine which version of clang-format to use - clang_format = ['clang-format', '-i'] - for clang_version in range(20, 6, -1): - binary = 'clang-format-%d' % clang_version - if which(binary): - clang_format[0] = binary - break - try: - if not files: - cli.log.warn('No changes detected. Use "qmk cformat -a" to format all files') - return False - subprocess.run(clang_format + [file for file in files], check=True) - cli.log.info('Successfully formatted the C code.') + clang_format = [find_clang_format(), '-i'] - except subprocess.CalledProcessError: + try: + cli.run(clang_format + list(map(str, files)), check=True, capture_output=False) + cli.log.info('Successfully formatted the C code.') + return True + + except subprocess.CalledProcessError as e: cli.log.error('Error formatting C code!') + cli.log.debug('%s exited with returncode %s', e.cmd, e.returncode) + cli.log.debug('STDOUT:') + cli.log.debug(e.stdout) + cli.log.debug('STDERR:') + cli.log.debug(e.stderr) return False -@cli.argument('-a', '--all-files', arg_only=True, action='store_true', help='Format all core files.') +def filter_files(files): + """Yield only files to be formatted and skip the rest + """ + for file in files: + if file.name.split('.')[-1] in c_file_suffixes: + yield file + else: + cli.log.debug('Skipping file %s', file) + + +@cli.argument('-n', '--dry-run', arg_only=True, action='store_true', help="Flag only, don't automatically format.") @cli.argument('-b', '--base-branch', default='origin/master', help='Branch to compare to diffs to.') -@cli.argument('files', nargs='*', arg_only=True, completer=FilesCompleter('.c'), help='Filename(s) to format.') +@cli.argument('-a', '--all-files', arg_only=True, action='store_true', help='Format all core files.') +@cli.argument('files', nargs='*', arg_only=True, type=normpath, completer=FilesCompleter('.c'), help='Filename(s) to format.') @cli.subcommand("Format C code according to QMK's style.", hidden=False if cli.config.user.developer else True) def cformat(cli): """Format C code according to QMK's style. """ - # Empty array for files - files = [] - # Core directories for formatting - core_dirs = ['drivers', 'quantum', 'tests', 'tmk_core', 'platforms'] - ignores = ['tmk_core/protocol/usb_hid', 'quantum/template', 'platforms/chibios'] # Find the list of files to format if cli.args.files: - files.extend(normpath(file) for file in cli.args.files) + files = list(filter_files(cli.args.files)) + + if not files: + cli.log.error('No C files in filelist: %s', ', '.join(map(str, cli.args.files))) + exit(0) + if cli.args.all_files: cli.log.warning('Filenames passed with -a, only formatting: %s', ','.join(map(str, files))) - # If -a is specified + elif cli.args.all_files: all_files = c_source_files(core_dirs) # The following statement checks each file to see if the file path is in the ignored directories. - files.extend(file for file in all_files if not any(i in str(file) for i in ignores)) - # No files specified & no -a flag + files = [file for file in all_files if not any(i in str(file) for i in ignored)] + else: - base_args = ['git', 'diff', '--name-only', cli.args.base_branch] - out = subprocess.run(base_args + core_dirs, check=True, stdout=subprocess.PIPE) - changed_files = filter(None, out.stdout.decode('UTF-8').split('\n')) - filtered_files = [normpath(file) for file in changed_files if not any(i in file for i in ignores)] - files.extend(file for file in filtered_files if file.exists() and file.suffix in ['.c', '.h', '.cpp']) + git_diff_cmd = ['git', 'diff', '--name-only', cli.args.base_branch, *core_dirs] + git_diff = cli.run(git_diff_cmd) + + if git_diff.returncode != 0: + cli.log.error("Error running %s", git_diff_cmd) + print(git_diff.stderr) + return git_diff.returncode + + files = [] + + for file in git_diff.stdout.strip().split('\n'): + if not any([file.startswith(ignore) for ignore in ignored]): + if path.exists(file) and file.split('.')[-1] in c_file_suffixes: + files.append(file) + + # Sanity check + if not files: + cli.log.error('No changed files detected. Use "qmk cformat -a" to format all files') + return False # Run clang-format on the files we've found - cformat_run(files, cli.args.all_files) + if cli.args.dry_run: + return not find_diffs(files) + else: + return cformat_run(files) diff --git a/lib/python/qmk/cli/generate/api.py b/lib/python/qmk/cli/generate/api.py index 70019428f0..8ab7522a76 100755 --- a/lib/python/qmk/cli/generate/api.py +++ b/lib/python/qmk/cli/generate/api.py @@ -13,6 +13,7 @@ from qmk.json_schema import json_load from qmk.keyboard import list_keyboards +@cli.argument('-n', '--dry-run', arg_only=True, action='store_true', help="Don't write the data to disk.") @cli.subcommand('Creates a new keymap for the keyboard of your choosing', hidden=False if cli.config.user.developer else True) def generate_api(cli): """Generates the QMK API data. @@ -40,10 +41,14 @@ def generate_api(cli): keyboard_readme_src = Path('keyboards') / keyboard_name / 'readme.md' keyboard_dir.mkdir(parents=True, exist_ok=True) - keyboard_info.write_text(json.dumps({'last_updated': current_datetime(), 'keyboards': {keyboard_name: kb_all[keyboard_name]}})) + keyboard_json = json.dumps({'last_updated': current_datetime(), 'keyboards': {keyboard_name: kb_all[keyboard_name]}}) + if not cli.args.dry_run: + keyboard_info.write_text(keyboard_json) + cli.log.debug('Wrote file %s', keyboard_info) - if keyboard_readme_src.exists(): - copyfile(keyboard_readme_src, keyboard_readme) + if keyboard_readme_src.exists(): + copyfile(keyboard_readme_src, keyboard_readme) + cli.log.debug('Copied %s -> %s', keyboard_readme_src, keyboard_readme) if 'usb' in kb_all[keyboard_name]: usb = kb_all[keyboard_name]['usb'] @@ -57,20 +62,26 @@ def generate_api(cli): if 'vid' in usb and 'pid' in usb: usb_list[usb['vid']][usb['pid']][keyboard_name] = usb - # Write the global JSON files - keyboard_all_file.write_text(json.dumps({'last_updated': current_datetime(), 'keyboards': kb_all}, cls=InfoJSONEncoder)) - usb_file.write_text(json.dumps({'last_updated': current_datetime(), 'usb': usb_list}, cls=InfoJSONEncoder)) - + # Generate data for the global files keyboard_list = sorted(kb_all) - keyboard_list_file.write_text(json.dumps({'last_updated': current_datetime(), 'keyboards': keyboard_list}, cls=InfoJSONEncoder)) - keyboard_aliases = json_load(Path('data/mappings/keyboard_aliases.json')) - keyboard_aliases_file.write_text(json.dumps({'last_updated': current_datetime(), 'keyboard_aliases': keyboard_aliases}, cls=InfoJSONEncoder)) - keyboard_metadata = { 'last_updated': current_datetime(), 'keyboards': keyboard_list, 'keyboard_aliases': keyboard_aliases, 'usb': usb_list, } - keyboard_metadata_file.write_text(json.dumps(keyboard_metadata, cls=InfoJSONEncoder)) + + # Write the global JSON files + keyboard_all_json = json.dumps({'last_updated': current_datetime(), 'keyboards': kb_all}, cls=InfoJSONEncoder) + usb_json = json.dumps({'last_updated': current_datetime(), 'usb': usb_list}, cls=InfoJSONEncoder) + keyboard_list_json = json.dumps({'last_updated': current_datetime(), 'keyboards': keyboard_list}, cls=InfoJSONEncoder) + keyboard_aliases_json = json.dumps({'last_updated': current_datetime(), 'keyboard_aliases': keyboard_aliases}, cls=InfoJSONEncoder) + keyboard_metadata_json = json.dumps(keyboard_metadata, cls=InfoJSONEncoder) + + if not cli.args.dry_run: + keyboard_all_file.write_text(keyboard_all_json) + usb_file.write_text(usb_json) + keyboard_list_file.write_text(keyboard_list_json) + keyboard_aliases_file.write_text(keyboard_aliases_json) + keyboard_metadata_file.write_text(keyboard_metadata_json) diff --git a/lib/python/qmk/cli/pyformat.py b/lib/python/qmk/cli/pyformat.py index 1464443804..02581f0d85 100755 --- a/lib/python/qmk/cli/pyformat.py +++ b/lib/python/qmk/cli/pyformat.py @@ -5,13 +5,22 @@ from milc import cli import subprocess +@cli.argument('-n', '--dry-run', arg_only=True, action='store_true', help="Flag only, don't automatically format.") @cli.subcommand("Format python code according to QMK's style.", hidden=False if cli.config.user.developer else True) def pyformat(cli): """Format python code according to QMK's style. """ + edit = '--diff' if cli.args.dry_run else '--in-place' + yapf_cmd = ['yapf', '-vv', '--recursive', edit, 'bin/qmk', 'lib/python'] try: - subprocess.run(['yapf', '-vv', '-ri', 'bin/qmk', 'lib/python'], check=True) - cli.log.info('Successfully formatted the python code in `bin/qmk` and `lib/python`.') + cli.run(yapf_cmd, check=True, capture_output=False) + cli.log.info('Python code in `bin/qmk` and `lib/python` is correctly formatted.') + return True except subprocess.CalledProcessError: - cli.log.error('Error formatting python code!') + if cli.args.dry_run: + cli.log.error('Python code in `bin/qmk` and `lib/python` incorrectly formatted!') + else: + cli.log.error('Error formatting python code!') + + return False diff --git a/lib/python/qmk/cli/pytest.py b/lib/python/qmk/cli/pytest.py index 5417a9cb34..50a1d70a4f 100644 --- a/lib/python/qmk/cli/pytest.py +++ b/lib/python/qmk/cli/pytest.py @@ -11,6 +11,7 @@ from milc import cli def pytest(cli): """Run several linting/testing commands. """ - flake8 = subprocess.run(['flake8', 'lib/python', 'bin/qmk']) nose2 = subprocess.run(['nose2', '-v']) + flake8 = subprocess.run(['flake8', 'lib/python', 'bin/qmk']) + return flake8.returncode | nose2.returncode diff --git a/lib/python/qmk/tests/test_cli_commands.py b/lib/python/qmk/tests/test_cli_commands.py index c57d2b7fc7..741551e5ec 100644 --- a/lib/python/qmk/tests/test_cli_commands.py +++ b/lib/python/qmk/tests/test_cli_commands.py @@ -33,10 +33,15 @@ def check_returncode(result, expected=[0]): def test_cformat(): - result = check_subcommand('cformat', 'quantum/matrix.c') + result = check_subcommand('cformat', '-n', 'quantum/matrix.c') check_returncode(result) +def test_cformat_all(): + result = check_subcommand('cformat', '-n', '-a') + check_returncode(result, [0, 1]) + + def test_compile(): result = check_subcommand('compile', '-kb', 'handwired/pytest/basic', '-km', 'default', '-n') check_returncode(result) @@ -83,9 +88,9 @@ def test_hello(): def test_pyformat(): - result = check_subcommand('pyformat') + result = check_subcommand('pyformat', '--dry-run') check_returncode(result) - assert 'Successfully formatted the python code' in result.stdout + assert 'Python code in `bin/qmk` and `lib/python` is correctly formatted.' in result.stdout def test_list_keyboards(): @@ -225,6 +230,11 @@ def test_clean(): assert result.stdout.count('done') == 2 +def test_generate_api(): + result = check_subcommand('generate-api', '--dry-run') + check_returncode(result) + + def test_generate_rgb_breathe_table(): result = check_subcommand("generate-rgb-breathe-table", "-c", "1.2", "-m", "127") check_returncode(result) From bc38c38f8c25dcbe759bc4d9d707a0069b3c6c59 Mon Sep 17 00:00:00 2001 From: Zach White Date: Mon, 10 May 2021 12:00:52 -0700 Subject: [PATCH 331/613] Move the module checking and updating to lib/python (#12416) * move the module checking and updating to lib/python * make flake8 happy * Update lib/python/qmk/cli/__init__.py Co-authored-by: Erovia * prompt the user to disable developer mode * pyformat * flake8 Co-authored-by: Erovia --- bin/qmk | 44 ---------- lib/python/qmk/cli/__init__.py | 145 +++++++++++++++++++++++++++------ 2 files changed, 121 insertions(+), 68 deletions(-) diff --git a/bin/qmk b/bin/qmk index a3c1be328a..47b50f83b3 100755 --- a/bin/qmk +++ b/bin/qmk @@ -3,7 +3,6 @@ """ import os import sys -from importlib.util import find_spec from pathlib import Path # Add the QMK python libs to our path @@ -12,52 +11,9 @@ qmk_dir = script_dir.parent python_lib_dir = Path(qmk_dir / 'lib' / 'python').resolve() sys.path.append(str(python_lib_dir)) - -def _check_modules(requirements): - """ Check if the modules in the given requirements.txt are available. - """ - with Path(qmk_dir / requirements).open() as fd: - for line in fd.readlines(): - line = line.strip().replace('<', '=').replace('>', '=') - - if len(line) == 0 or line[0] == '#' or line.startswith('-r'): - continue - - if '#' in line: - line = line.split('#')[0] - - module = dict() - module['name'] = line.split('=')[0] if '=' in line else line - module['import'] = module['name'].replace('-', '_') - - # Not every module is importable by its own name. - if module['name'] == "pep8-naming": - module['import'] = "pep8ext_naming" - - if not find_spec(module['import']): - print('Could not find module %s!' % module['name']) - print('Please run `python3 -m pip install -r %s` to install required python dependencies.' % (qmk_dir / requirements,)) - if developer: - print('You can also turn off developer mode: qmk config user.developer=None') - print() - exit(255) - - -developer = False -# Make sure our modules have been setup -_check_modules('requirements.txt') - # Setup the CLI import milc # noqa -# For developers additional modules are needed -if milc.cli.config.user.developer: - # Do not run the check for 'config', - # so users can turn off developer mode - if len(sys.argv) == 1 or (len(sys.argv) > 1 and 'config' != sys.argv[1]): - developer = True - _check_modules('requirements-dev.txt') - milc.EMOJI_LOGLEVELS['INFO'] = '{fg_blue}Ψ{style_reset_all}' diff --git a/lib/python/qmk/cli/__init__.py b/lib/python/qmk/cli/__init__.py index 008e57f762..6fe769fe7b 100644 --- a/lib/python/qmk/cli/__init__.py +++ b/lib/python/qmk/cli/__init__.py @@ -2,33 +2,79 @@ We list each subcommand here explicitly because all the reliable ways of searching for modules are slow and delay startup. """ +import os +import shlex import sys +from importlib.util import find_spec +from pathlib import Path +from subprocess import run from milc import cli, __VERSION__ +from milc.questions import yesno -from . import c2json -from . import cformat -from . import chibios -from . import clean -from . import compile -from . import config -from . import docs -from . import doctor -from . import fileformat -from . import flash -from . import format -from . import generate -from . import hello -from . import info -from . import json2c -from . import lint -from . import list -from . import kle2json -from . import multibuild -from . import new -from . import pyformat -from . import pytest +def _run_cmd(*command): + """Run a command in a subshell. + """ + if 'windows' in cli.platform.lower(): + safecmd = map(shlex.quote, command) + safecmd = ' '.join(safecmd) + command = [os.environ['SHELL'], '-c', safecmd] + + return run(command) + + +def _find_broken_requirements(requirements): + """ Check if the modules in the given requirements.txt are available. + + Args: + + requirements + The path to a requirements.txt file + + Returns a list of modules that couldn't be imported + """ + with Path(requirements).open() as fd: + broken_modules = [] + + for line in fd.readlines(): + line = line.strip().replace('<', '=').replace('>', '=') + + if len(line) == 0 or line[0] == '#' or line.startswith('-r'): + continue + + if '#' in line: + line = line.split('#')[0] + + module_name = line.split('=')[0] if '=' in line else line + module_import = module_name.replace('-', '_') + + # Not every module is importable by its own name. + if module_name == "pep8-naming": + module_import = "pep8ext_naming" + + if not find_spec(module_import): + broken_modules.append(module_name) + + return broken_modules + + +def _broken_module_imports(requirements): + """Make sure we can import all the python modules. + """ + broken_modules = _find_broken_requirements(requirements) + + for module in broken_modules: + print('Could not find module %s!' % module) + + if broken_modules: + return True + + return False + + +# Make sure our python is new enough +# # Supported version information # # Based on the OSes we support these are the minimum python version available by default. @@ -54,9 +100,60 @@ if sys.version_info[0] != 3 or sys.version_info[1] < 7: milc_version = __VERSION__.split('.') if int(milc_version[0]) < 2 and int(milc_version[1]) < 3: - from pathlib import Path - requirements = Path('requirements.txt').resolve() print(f'Your MILC library is too old! Please upgrade: python3 -m pip install -U -r {str(requirements)}') exit(127) + +# Check to make sure we have all our dependencies +msg_install = 'Please run `python3 -m pip install -r %s` to install required python dependencies.' + +if _broken_module_imports('requirements.txt'): + if yesno('Would you like to install the required Python modules?'): + _run_cmd(sys.executable, '-m', 'pip', 'install', '-r', 'requirements.txt') + else: + print() + print(msg_install % (str(Path('requirements.txt').resolve()),)) + print() + exit(1) + +if cli.config.user.developer: + args = sys.argv[1:] + while args and args[0][0] == '-': + del args[0] + if not args or args[0] != 'config': + if _broken_module_imports('requirements-dev.txt'): + if yesno('Would you like to install the required developer Python modules?'): + _run_cmd(sys.executable, '-m', 'pip', 'install', '-r', 'requirements-dev.txt') + elif yesno('Would you like to disable developer mode?'): + _run_cmd(sys.argv[0], 'config', 'user.developer=None') + else: + print() + print(msg_install % (str(Path('requirements-dev.txt').resolve()),)) + print('You can also turn off developer mode: qmk config user.developer=None') + print() + exit(1) + +# Import our subcommands +from . import c2json # noqa +from . import cformat # noqa +from . import chibios # noqa +from . import clean # noqa +from . import compile # noqa +from . import config # noqa +from . import docs # noqa +from . import doctor # noqa +from . import fileformat # noqa +from . import flash # noqa +from . import format # noqa +from . import generate # noqa +from . import hello # noqa +from . import info # noqa +from . import json2c # noqa +from . import lint # noqa +from . import list # noqa +from . import kle2json # noqa +from . import multibuild # noqa +from . import new # noqa +from . import pyformat # noqa +from . import pytest # noqa From a116b3f1ae4e6dbd09c450bfc74dd2a64f66b7b1 Mon Sep 17 00:00:00 2001 From: Drashna Jaelre Date: Mon, 10 May 2021 15:37:36 -0700 Subject: [PATCH 332/613] Improve EEPROM defaults for Dynamic Keymaps (#12853) --- quantum/dynamic_keymap.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/quantum/dynamic_keymap.c b/quantum/dynamic_keymap.c index a860b94979..b7a9f2662c 100644 --- a/quantum/dynamic_keymap.c +++ b/quantum/dynamic_keymap.c @@ -35,9 +35,11 @@ // Explicitly override it if the keyboard uses a microcontroller with // more EEPROM *and* it makes sense to increase it. #ifndef DYNAMIC_KEYMAP_EEPROM_MAX_ADDR -# if defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__) || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__) +# if defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__) # define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 2047 -# elif defined(__AVR_AT90USB162__) +# elif defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__) +# define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 4095 +# elif defined(__AVR_ATmega16U2__) || defined(__AVR_ATmega16U4__) || defined(__AVR_AT90USB162__) || defined(__AVR_ATtiny85__) # define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 511 # else # define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 1023 From 1ab2167ff90ac9de6e21d20e226881699bc385ef Mon Sep 17 00:00:00 2001 From: George Wietor Date: Mon, 10 May 2021 18:43:05 -0400 Subject: [PATCH 333/613] [Keyboard] VIA support for Preonic Rev3 (#11344) Co-authored-by: Ryan Co-authored-by: Jack Humbert --- keyboards/preonic/config.h | 3 +- keyboards/preonic/keymaps/via/config.h | 33 ++++ keyboards/preonic/keymaps/via/keymap.c | 197 ++++++++++++++++++++++++ keyboards/preonic/keymaps/via/readme.md | 1 + keyboards/preonic/keymaps/via/rules.mk | 4 + keyboards/preonic/rev1/config.h | 1 + keyboards/preonic/rev2/config.h | 1 + keyboards/preonic/rev3/config.h | 1 + 8 files changed, 239 insertions(+), 2 deletions(-) create mode 100644 keyboards/preonic/keymaps/via/config.h create mode 100644 keyboards/preonic/keymaps/via/keymap.c create mode 100644 keyboards/preonic/keymaps/via/readme.md create mode 100644 keyboards/preonic/keymaps/via/rules.mk diff --git a/keyboards/preonic/config.h b/keyboards/preonic/config.h index f08be58c68..dfd0a8439a 100644 --- a/keyboards/preonic/config.h +++ b/keyboards/preonic/config.h @@ -21,8 +21,7 @@ along with this program. If not, see . #include "config_common.h" /* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x6061 +#define VENDOR_ID 0x03A8 #define MANUFACTURER OLKB #define PRODUCT Preonic diff --git a/keyboards/preonic/keymaps/via/config.h b/keyboards/preonic/keymaps/via/config.h new file mode 100644 index 0000000000..80d19d265a --- /dev/null +++ b/keyboards/preonic/keymaps/via/config.h @@ -0,0 +1,33 @@ +#pragma once + +#define DYNAMIC_KEYMAP_LAYER_COUNT 4 + +#ifdef AUDIO_ENABLE + #define STARTUP_SONG SONG(PREONIC_SOUND) + // #define STARTUP_SONG SONG(NO_SOUND) + + #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND) } +#endif + +#define MUSIC_MASK (keycode != KC_NO) + +/* + * MIDI options + */ + +/* enable basic MIDI features: + - MIDI notes can be sent when in Music mode is on +*/ + +#define MIDI_BASIC + +/* enable advanced MIDI features: + - MIDI notes can be added to the keymap + - Octave shift and transpose + - Virtual sustain, portamento, and modulation wheel + - etc. +*/ +//#define MIDI_ADVANCED + +/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ +//#define MIDI_TONE_KEYCODE_OCTAVES 2 diff --git a/keyboards/preonic/keymaps/via/keymap.c b/keyboards/preonic/keymaps/via/keymap.c new file mode 100644 index 0000000000..04f20b316d --- /dev/null +++ b/keyboards/preonic/keymaps/via/keymap.c @@ -0,0 +1,197 @@ +/* Copyright 2015-2017 Jack Humbert + * Updated for VIA 2021 George Wietor + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +#include "muse.h" + +enum preonic_layers { + _QWERTY, + _LOWER, + _RAISE, + _ADJUST +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Qwerty + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_QWERTY] = LAYOUT_preonic_grid( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + _______, KC_LCTL, KC_LALT, KC_LGUI, FN_MO13, KC_SPC, KC_SPC, FN_MO23, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT +), + +/* Lower + * ,-----------------------------------------------------------------------------------. + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_LOWER] = LAYOUT_preonic_grid( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + 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_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),KC_HOME, KC_END, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY +), + +/* Raise + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_RAISE] = LAYOUT_preonic_grid( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY +), + +/* Adjust (Lower + Raise) + * ,-----------------------------------------------------------------------------------. + * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | Reset| Debug| | | | | | | | | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | |Mu Mod|Aud on|AudOff| | | | | | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | | |Mus on|MusOff| | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_ADJUST] = LAYOUT_preonic_grid( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + _______, RESET, DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, + _______, _______, MU_MOD, AU_ON, AU_OFF, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, MU_ON, MU_OFF, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +) + + +}; + +bool muse_mode = false; +uint8_t last_muse_note = 0; +uint16_t muse_counter = 0; +uint8_t muse_offset = 70; +uint16_t muse_tempo = 50; + +void encoder_update_user(uint8_t index, bool clockwise) { + if (muse_mode) { + if (IS_LAYER_ON(_RAISE)) { + if (clockwise) { + muse_offset++; + } else { + muse_offset--; + } + } else { + if (clockwise) { + muse_tempo+=1; + } else { + muse_tempo-=1; + } + } + } else { + if (clockwise) { + register_code(KC_PGDN); + unregister_code(KC_PGDN); + } else { + register_code(KC_PGUP); + unregister_code(KC_PGUP); + } + } +} + +void dip_switch_update_user(uint8_t index, bool active) { + switch (index) { + case 0: + if (active) { + layer_on(_ADJUST); + } else { + layer_off(_ADJUST); + } + break; + case 1: + if (active) { + muse_mode = true; + } else { + muse_mode = false; + } + } +} + + +void matrix_scan_user(void) { +#ifdef AUDIO_ENABLE + if (muse_mode) { + if (muse_counter == 0) { + uint8_t muse_note = muse_offset + SCALE[muse_clock_pulse()]; + if (muse_note != last_muse_note) { + stop_note(compute_freq_for_midi_note(last_muse_note)); + play_note(compute_freq_for_midi_note(muse_note), 0xF); + last_muse_note = muse_note; + } + } + muse_counter = (muse_counter + 1) % muse_tempo; + } else { + if (muse_counter) { + stop_all_notes(); + muse_counter = 0; + } + } +#endif +} + +bool music_mask_user(uint16_t keycode) { + switch (keycode) { + case FN_MO13: + case FN_MO23: + return false; + default: + return true; + } +} diff --git a/keyboards/preonic/keymaps/via/readme.md b/keyboards/preonic/keymaps/via/readme.md new file mode 100644 index 0000000000..e911968dd9 --- /dev/null +++ b/keyboards/preonic/keymaps/via/readme.md @@ -0,0 +1 @@ +# The default Preonic layout - largely based on the Planck's \ No newline at end of file diff --git a/keyboards/preonic/keymaps/via/rules.mk b/keyboards/preonic/keymaps/via/rules.mk new file mode 100644 index 0000000000..ed6f2029b7 --- /dev/null +++ b/keyboards/preonic/keymaps/via/rules.mk @@ -0,0 +1,4 @@ +SRC += muse.c + +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/preonic/rev1/config.h b/keyboards/preonic/rev1/config.h index 56dfedd457..76b6465909 100644 --- a/keyboards/preonic/rev1/config.h +++ b/keyboards/preonic/rev1/config.h @@ -21,5 +21,6 @@ along with this program. If not, see . #include "config_common.h" #define DEVICE_VER 0x0001 +#define PRODUCT_ID 0x67F3 #endif \ No newline at end of file diff --git a/keyboards/preonic/rev2/config.h b/keyboards/preonic/rev2/config.h index 20f11066be..29fc091848 100644 --- a/keyboards/preonic/rev2/config.h +++ b/keyboards/preonic/rev2/config.h @@ -21,5 +21,6 @@ along with this program. If not, see . #include "config_common.h" #define DEVICE_VER 0x0002 +#define PRODUCT_ID 0x67F3 #endif \ No newline at end of file diff --git a/keyboards/preonic/rev3/config.h b/keyboards/preonic/rev3/config.h index b336477a32..d37f300b07 100644 --- a/keyboards/preonic/rev3/config.h +++ b/keyboards/preonic/rev3/config.h @@ -20,6 +20,7 @@ /* USB Device descriptor parameter */ #define DEVICE_VER 0x0003 +#define PRODUCT_ID 0xA649 #undef MATRIX_ROWS #undef MATRIX_COLS From 77875e89eca07b2681ead5759d6e635823b24895 Mon Sep 17 00:00:00 2001 From: peepeetee <43021794+peepeetee@users.noreply.github.com> Date: Mon, 10 May 2021 19:32:26 -0500 Subject: [PATCH 334/613] peepeetee's custom keymap for bm68rgb (#12232) * add custom keymaps for BM68rgb * add user keymap for bm68rgb * fix grammar * add custom hub16 keymap * Apply suggestions from code review * fix errorenously included hub16 file * add GPL headers * revert defining dfa_state in keymap.h * Update keyboards/bm68rgb/keymaps/peepeetee/keymap.h * enable tap dance, add tap dance to left alt --- keyboards/bm68rgb/keymaps/peepeetee/config.h | 132 ++++++++ keyboards/bm68rgb/keymaps/peepeetee/keymap.c | 303 ++++++++++++++++++ keyboards/bm68rgb/keymaps/peepeetee/keymap.h | 63 ++++ keyboards/bm68rgb/keymaps/peepeetee/readme.md | 1 + 4 files changed, 499 insertions(+) create mode 100644 keyboards/bm68rgb/keymaps/peepeetee/config.h create mode 100644 keyboards/bm68rgb/keymaps/peepeetee/keymap.c create mode 100644 keyboards/bm68rgb/keymaps/peepeetee/keymap.h create mode 100644 keyboards/bm68rgb/keymaps/peepeetee/readme.md diff --git a/keyboards/bm68rgb/keymaps/peepeetee/config.h b/keyboards/bm68rgb/keymaps/peepeetee/config.h new file mode 100644 index 0000000000..53eebce7f2 --- /dev/null +++ b/keyboards/bm68rgb/keymaps/peepeetee/config.h @@ -0,0 +1,132 @@ +/* Copyright 2021 peepeetee + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + + +// #define MODS_SHIFT (get_mods() & MOD_MASK_SHIFT) +// #define MODS_CTRL (get_mods() & MOD_MASK_CTRL) +// #define MODS_ALT (get_mods() & MOD_MASK_ALT) + +// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) // Key combination that allows the use of magic commands (useful for debugging) + +// #define NO_DEBUG // Disable debugging +// #define NO_PRINT // Disable printing/debugging using hid_listen +// #define NO_ACTION_LAYER // Disable layers +// #define NO_ACTION_TAPPING // Disable tap dance and other tapping features +// #define NO_ACTION_ONESHOT // Disable one-shot modifiers +// #define NO_ACTION_MACRO // Disable old style macro handling: MACRO() & action_get_macro +// #define TERMINAL_HELP +// #define MOUSEKEY_INTERVAL 20 +// #define MOUSEKEY_DELAY 0 +// #define MOUSEKEY_TIME_TO_MAX 60 +// #define MOUSEKEY_MAX_SPEED 10 +// #define MOUSEKEY_WHEEL_DELAY 0 +#define FORCE_NKRO // NKRO by default requires to be turned on, this forces it on during keyboard startup regardless of EEPROM setting. NKRO can still be turned off but will be turned on again if the keyboard reboots. +// #define QMK_KEYS_PER_SCAN 4 // Allows sending more than one key per scan. By default, only one key event gets sent via process_record() per scan. This has little impact on most typing, but if you're doing a lot of chords, or your scan rate is slow to begin with, you can have some delay in processing key events. Each press and release is a separate event. For a keyboard with 1ms or so scan times, even a very fast typist isn't going to produce the 500 keystrokes a second needed to actually get more than a few ms of delay from this. But if you're doing chording on something with 3-4ms scan times? You probably want this. +// #define STRICT_LAYER_RELEASE // Force a key release to be evaluated using the current layer stack instead of remembering which layer it came from (used for advanced cases) +// #define LOCKING_SUPPORT_ENABLE // Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap +// #define LOCKING_RESYNC_ENABLE // Tries to keep switch state consistent with keyboard LED state + #define TAPPING_TERM 200 // How long before a tap becomes a hold, if set above 500, a key tapped during the tapping term will turn it into a hold too +// #define TAPPING_TERM_PER_KEY // Enables handling for per key TAPPING_TERM settings +// #define RETRO_TAPPING // Tap anyway, even after TAPPING_TERM, if there was no other key interruption between press and release +// #define TAPPING_TOGGLE 2 // How many taps before triggering the toggle +// #define PERMISSIVE_HOLD // Makes tap and hold keys trigger the hold if another key is pressed before releasing, even if it hasn't hit the TAPPING_TERM. See Permissive Hold for details +// #define IGNORE_MOD_TAP_INTERRUPT // Makes it possible to do rolling combos (zx) with keys that convert to other keys on hold, by enforcing the TAPPING_TERM for both keys. See Mod tap interrupt for details +// #define TAPPING_FORCE_HOLD // Makes it possible to use a dual role key as modifier shortly after having been tapped. See Hold after tap. Breaks any Tap Toggle functionality (TT or the One Shot Tap Toggle) +// #define LEADER_TIMEOUT 300 // How long before the leader key times out. If you're having issues finishing the sequence before it times out, you may need to increase the timeout setting. Or you may want to enable the LEADER_PER_KEY_TIMING option, which resets the timeout after each key is tapped. +// #define LEADER_PER_KEY_TIMING // Sets the timer for leader key chords to run on each key press rather than overall +// #define LEADER_KEY_STRICT_KEY_PROCESSING // Disables keycode filtering for Mod-Tap and Layer-Tap keycodes. Eg, if you enable this, you would need to specify MT(MOD_CTL, KC_A) if you want to use KC_A. +// #define ONESHOT_TIMEOUT 300 // How long before oneshot times out +// #define ONESHOT_TAP_TOGGLE 2 // How many taps before oneshot toggle is triggered +// #define COMBO_COUNT 2 // Set this to the number of combos that you're using in the Combo feature. +// #define COMBO_TERM 200 // How long for the Combo keys to be detected. Defaults to TAPPING_TERM if not defined. +// #define TAP_CODE_DELAY 100 // Sets the delay between register_code and unregister_code, if you're having issues with it registering properly (common on VUSB boards). The value is in milliseconds. +// #define TAP_HOLD_CAPS_DELAY 80 // Sets the delay for Tap Hold keys (LT, MT) when using KC_CAPSLOCK keycode, as this has some special handling on MacOS. The value is in milliseconds, and defaults to 80 ms if not defined. For macOS, you may want to set this to 200 or higher. + +#define RGB_MATRIX_FRAMEBUFFER_EFFECTS +#define RGB_MATRIX_KEYPRESSES // reacts to keypresses +// #define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses) +#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_ALPHAS_MODS // Sets the default mode, if none has been set +// #define RGBLIGHT_HUE_STEP 12 // Units to step when in/decreasing hue +// #define RGBLIGHT_SAT_STEP 25 // Units to step when in/decreasing saturation +// #define RGBLIGHT_VAL_STEP 12 // Units to step when in/decreasing value (brightness) +// #define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects +// #define RGB_DISABLE_WHEN_USB_SUSPENDED false // turn off effects when suspended +// #define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness) +// #define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness) +// #define RGBLIGHT_ANIMATIONS // Run RGB animations +// #define RGBLIGHT_ANIMATIONS // Enable all additional animation modes. +// #define RGBLIGHT_EFFECT_ALTERNATING // Enable alternating animation mode. +// #define RGBLIGHT_EFFECT_BREATHING // Enable breathing animation mode. +// #define RGBLIGHT_EFFECT_CHRISTMAS // Enable christmas animation mode. +// #define RGBLIGHT_EFFECT_KNIGHT // Enable knight animation mode. +// #define RGBLIGHT_EFFECT_RAINBOW_MOOD // Enable rainbow mood animation mode. +// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL // Enable rainbow swirl animation mode. +// #define RGBLIGHT_EFFECT_RGB_TEST // Enable RGB test animation mode. +// #define RGBLIGHT_EFFECT_SNAKE // Enable snake animation mode. +// #define RGBLIGHT_EFFECT_STATIC_GRADIENT // Enable static gradient mode. + +// #define RGBLIGHT_EFFECT_BREATHE_CENTER // If defined, used to calculate the curve for the breathing animation. Valid values are 1.0 to 2.7 +// #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // The maximum brightness for the breathing mode. Valid values are 1 to 255 +// #define RGBLIGHT_EFFECT_CHRISTMAS_INTERVAL 1000 // How long to wait between light changes for the "Christmas" animation, in milliseconds +// #define RGBLIGHT_EFFECT_CHRISTMAS_STEP 2 // The number of LEDs to group the red/green colors by for the "Christmas" animation +// #define RGBLIGHT_EFFECT_KNIGHT_LED_NUM RGBLED_NUM // The number of LEDs to have the "Knight" animation travel +// #define RGBLIGHT_EFFECT_KNIGHT_LENGTH 3 // The number of LEDs to light up for the "Knight" animation +// #define RGBLIGHT_EFFECT_KNIGHT_OFFSET 0 // The number of LEDs to start the "Knight" animation from the start of the strip by +// #define RGBLIGHT_RAINBOW_SWIRL_RANGE 255 // Range adjustment for the rainbow swirl effect to get different swirls +// #define RGBLIGHT_EFFECT_SNAKE_LENGTH 4 // The number of LEDs to light up for the "Snake" animation + +// This list in in the correct mode order. Next mode is the following line, previous mode is previous line. Loops around. +// #define DISABLE_RGB_MATRIX_SOLID_COLOR // Static single hue, no speed support +// #define DISABLE_RGB_MATRIX_ALPHAS_MODS // Static dual hue, speed is hue for secondary hue +#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static gradient top to bottom, speed controls how much gradient changes +#define DISABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT // Static gradient top to bottom, speed controls how much gradient changes +#define DISABLE_RGB_MATRIX_BREATHING // Single hue brightness cycling animation +#define DISABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right +#define DISABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right +#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades saturation +#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // Single hue 3 blade spinning pinwheel fades brightness +#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT // Single hue spinning spiral fades saturation +#define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness +#define DISABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient +//#define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right +#define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom +#define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradent Chevron shapped scrolling left to right +#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in +#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in +#define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard +#define DISABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard +#define DISABLE_RGB_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard +#define DISABLE_RGB_MATRIX_RAINBOW_BEACON // Full tighter gradient spinning around center of keyboard +#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard + #define DISABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue + #define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Randomly changes a single key's hue and saturation +// =================================================== Requires RGB_MATRIX_FRAMEBUFFER_EFFECTS ============================================================= +// #define DISABLE_RGB_MATRIX_TYPING_HEATMAP // How hot is your WPM! +#define DISABLE_RGB_MATRIX_DIGITAL_RAIN // That famous computer simulation +// =================================================== RGB_MATRIX_KEYPRESSES OR RGB_MATRIX_KEYRELEASES ===================================================== + #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit to hue & value then fades value out +#define DISABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue, pulses keys hit to shifted hue then fades to current hue +#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out +#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // Hue & value pulse near multiple key hits then fades value out +#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out +#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Hue & value pulse the same column and row of multiple key hits then fades value out +#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of a single key hit then fades value out +#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multiple key hits then fades value out +#define DISABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out +#define DISABLE_RGB_MATRIX_MULTISPLASH // Full gradient & value pulse away from multiple key hits then fades value out +#define DISABLE_RGB_MATRIX_SOLID_SPLASH // Hue & value pulse away from a single key hit then fades value out +#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out diff --git a/keyboards/bm68rgb/keymaps/peepeetee/keymap.c b/keyboards/bm68rgb/keymaps/peepeetee/keymap.c new file mode 100644 index 0000000000..934463b11f --- /dev/null +++ b/keyboards/bm68rgb/keymaps/peepeetee/keymap.c @@ -0,0 +1,303 @@ +/* Copyright 2019 ash0x0 2021 peepeetee + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H +#include "keymap.h" +// // Defines names for use in layer keycodes and the keymap +// enum layer_names { +// _BASE, +// _FN +// }; + + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_ansi( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDOWN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI,LT(1, KC_LALT), KC_SPC, KC_RALT, MO(1),KC_RCTRL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_65_ansi( + KC_GRAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DELETE, + RGB_MOD, RGB_HUI, RGB_VAI, RGB_SAI, RGB_SPI, _______, KC_KP_7, KC_KP_8, KC_KP_9, _______, _______, _______, _______, _______, KC_PGUP, + RGB_TOG, RGB_HUD, RGB_VAD, RGB_SAD, RGB_SPD, _______, KC_KP_4, KC_KP_5, KC_KP_6, _______, _______, _______, _______, KC_PGDOWN, + BL_TOGG, _______, _______, _______, _______, RESET, KC_KP_1, KC_KP_2, KC_KP_3, _______, _______, _______, KC_AUDIO_VOL_UP, KC_END, + _______, _______, _______, _______, _______, _______, _______, KC_BRIGHTNESS_DOWN, KC_AUDIO_VOL_DOWN, KC_BRIGHTNESS_UP + ), + +}; + +/* +Templete + [ ] = LAYOUT_65_ansi( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +*/ + +#ifdef _______ +#undef _______ +#define _______ {0, 0, 0} + +const uint8_t PROGMEM ledmap[][DRIVER_LED_TOTAL][3] = { + [1] = { + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + GREEN, BLUE, {0, 0, 255}, PURPLE, AZURE, _______, {0, 0, 255}, {0, 0, 255}, {0, 0, 255}, _______, _______, _______, _______, _______, _______, + RED, BLUE, {0, 0, 1}, PURPLE, AZURE, _______, {0, 0, 255}, {0, 0, 255}, {0, 0, 255}, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, RED, {0, 0, 255}, {0, 0, 255}, {0, 0, 255}, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + } + +}; + +#undef _______ +#define _______ KC_TRNS +#endif + + + +void keyboard_post_init_user(void) { + // Call the post init code. + dfa_state = 0; // ENGLISH +} + + + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case KC_DELETE: + if (record->event.pressed) { + dfa_state = 0; + } else { + // Do something else when release + } + return false; // Skip all further processing of this key + case KC_SPC: + if (record->event.pressed) { + if ((get_mods() & MOD_BIT(KC_LGUI)) == MOD_BIT(KC_LGUI)){ + if(dfa_state == 3){ + dfa_state = 0; + } else { + dfa_state = dfa_state + 1; + } + } + } else { + // Do something else when release + } + return true; // Continue execution + + + case KC_HOME: + if (record->event.pressed) { + switch(dfa_state){ + case 0 :{ + return false; + } + case 1 :{ + tap_code16(G(KC_SPC)); + wait_ms(100); + tap_code16(G(KC_SPC)); + wait_ms(100); + tap_code16(G(KC_SPC)); + dfa_state = 0; + return false; + } + case 2 :{ + tap_code16(G(KC_SPC)); + wait_ms(100); + tap_code16(G(KC_SPC)); + dfa_state = 0; + return false; + } + case 3 :{ + tap_code16(G(KC_SPC)); + dfa_state = 0; + return false; + } + } + + // Do something when pressed + } else { + // Do something else when release + } + return false; // Skip all further processing of this key + // case KC_PGUP: + // if (record->event.pressed) { + // switch(dfa_state){ + // case 0 :{ + // tap_code16(G(KC_SPC)); + // dfa_state = 1; + // return false; + // } + // case 1 :{ + // return false; + // } + // case 2 :{ + // tap_code16(G(KC_SPC)); + // wait_ms(100); + // tap_code16(G(KC_SPC)); + // wait_ms(100); + // tap_code16(G(KC_SPC)); + // dfa_state = 1; + // return false; + // } + // case 3 :{ + // tap_code16(G(KC_SPC)); + // wait_ms(100); + // tap_code16(G(KC_SPC)); + // dfa_state = 1; + // return false; + // } + // } + // // Do something when pressed + // } else { + // // Do something else when release + // } + // return false; // Skip all further processing of this key + // case KC_PGDOWN: + // if (record->event.pressed) { + // switch(dfa_state){ + // case 0 :{ + // tap_code16(G(KC_SPC)); + // wait_ms(100); + // tap_code16(G(KC_SPC)); + // dfa_state = 2; + // return false; + // } + // case 1 :{ + // tap_code16(G(KC_SPC)); + // dfa_state = 2; + // return false; + // } + // case 2 :{ + // return false; + // } + // case 3 :{ + // tap_code16(G(KC_SPC)); + // wait_ms(100); + // tap_code16(G(KC_SPC)); + // wait_ms(100); + // tap_code16(G(KC_SPC)); + // dfa_state = 2; + // return false; + // } + // } + // // Do something when pressed + // } else { + // // Do something else when release + // } + // return false; // Skip all further processing of this key + // case KC_END: + // if (record->event.pressed) { + // switch(dfa_state){ + // case 0 :{ + // tap_code16(G(KC_SPC)); + // wait_ms(100); + // tap_code16(G(KC_SPC)); + // wait_ms(100); + // tap_code16(G(KC_SPC)); + // dfa_state = 3; + // return false; + // } + // case 1 :{ + // tap_code16(G(KC_SPC)); + // wait_ms(100); + // tap_code16(G(KC_SPC)); + // dfa_state = 3; + // return false; + // } + // case 2 :{ + // tap_code16(G(KC_SPC)); + // dfa_state = 3; + // return false; + // } + // case 3 :{ + // return false; + // } + // } + // // Do something when pressed + // } else { + // // Do something else when release + // } + // return false; // Skip all further processing of this key + case RGB_TOG: + if (record->event.pressed) { + switch (rgb_matrix_get_flags()) { + case LED_FLAG_ALL: { + rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR); + rgb_matrix_set_color_all(0, 0, 0); + } + break; + case (LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR): { + rgb_matrix_set_flags(LED_FLAG_UNDERGLOW); + rgb_matrix_set_color_all(0, 0, 0); + } + break; + case LED_FLAG_UNDERGLOW: { + rgb_matrix_set_flags(LED_FLAG_NONE); + rgb_matrix_disable_noeeprom(); + } + break; + default: { + rgb_matrix_set_flags(LED_FLAG_ALL); + rgb_matrix_enable_noeeprom(); + } + break; + } + } + return false; + default: + return true; // Process all other keycodes normally + } +} + +void set_layer_color(int layer) { + if (layer == 0) { return; } + for (int i = 0; i < DRIVER_LED_TOTAL; i++) { + HSV hsv = { + .h = pgm_read_byte(&ledmap[layer][i][0]), + .s = pgm_read_byte(&ledmap[layer][i][1]), + .v = pgm_read_byte(&ledmap[layer][i][2]), + }; + if (hsv.h || hsv.s || hsv.v) { + RGB rgb = hsv_to_rgb(hsv); + float f = (float)rgb_matrix_config.hsv.v / UINT8_MAX; + rgb_matrix_set_color(i, f * rgb.r, f * rgb.g, f * rgb.b); + } else if (layer != 1) { + // Only deactivate non-defined key LEDs at layers other than FN. Because at FN we have RGB adjustments and need to see them live. + // If the values are all false then it's a transparent key and deactivate LED at this layer + rgb_matrix_set_color(i, 0, 0, 0); + } + } +} + +void rgb_matrix_indicators_user(void) { + + led_t host_leds = host_keyboard_led_state(); + if (host_leds.caps_lock) { + //rgb_matrix_set_color(30, 0xFF, 0xFF, 0xFF); + rgb_matrix_set_color(30, 0x0, 0x0, 0x0); + + } else { + //rgb_matrix_set_color(30, 0x0, 0x0, 0x0); + } + set_layer_color(get_highest_layer(layer_state)); + +} diff --git a/keyboards/bm68rgb/keymaps/peepeetee/keymap.h b/keyboards/bm68rgb/keymaps/peepeetee/keymap.h new file mode 100644 index 0000000000..e8d0170d4d --- /dev/null +++ b/keyboards/bm68rgb/keymaps/peepeetee/keymap.h @@ -0,0 +1,63 @@ +/* Copyright 2019 ash0x0 2021 peepeetee + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +#include "print.h" +#include +// HID has not yet been implemented for this keyboard +// #include "raw_hid.h" + +#define MILLISECONDS_IN_SECOND 1000 + +// These are just to make it neater to use builtin HSV values in the keymap +#define RED {HSV_RED} +#define CORAL {HSV_CORAL} +#define ORANGE {HSV_ORANGE} +#define GOLDEN {HSV_GOLDENROD} +#define GOLD {HSV_GOLD} +#define YELLOW {HSV_YELLOW} +#define CHART {HSV_CHARTREUSE} +#define GREEN {HSV_GREEN} +#define SPRING {HSV_SPRINGGREEN} +#define TURQ {HSV_TURQUOISE} +#define TEAL {HSV_TEAL} +#define CYAN {HSV_CYAN} +#define AZURE {HSV_AZURE} +#define BLUE {HSV_BLUE} +#define PURPLE {HSV_PURPLE} +#define MAGENT {HSV_MAGENTA} +#define PINK {HSV_PINK} + +//========================================================== CONFIGURABLE DEFAULTS ========================================================== +#define RGB_DEFAULT_TIME_OUT 30 +#define RGB_FAST_MODE_TIME_OUT 3 +#define RGB_TIME_OUT_MAX 600 +#define RGB_TIME_OUT_MIN 10 +#define RGB_TIME_OUT_STEP 10 + +extern bool g_suspend_state; +bool disable_layer_color; + +uint8_t dfa_state; //state for my language switching DFA + + +bool rgb_enabled_flag; // Current LED state flag. If false then LED is off. +bool rgb_time_out_enable; // Idle LED toggle enable. If false then LED will not turn off after idle timeout. +bool rgb_time_out_fast_mode_enabled; // Enable flag for RGB timeout fast mode +bool rgb_time_out_user_value; // This holds the toggle value set by user with ROUT_TG. It's necessary as RGB_TOG changes timeout enable. +uint16_t rgb_time_out_seconds; // Idle LED timeout value, in seconds not milliseconds +uint16_t rgb_time_out_saved_seconds; // The saved user config for RGB timeout period +led_flags_t rgb_time_out_saved_flag; // Store LED flag before timeout so it can be restored when LED is turned on again. diff --git a/keyboards/bm68rgb/keymaps/peepeetee/readme.md b/keyboards/bm68rgb/keymaps/peepeetee/readme.md new file mode 100644 index 0000000000..47899c27e1 --- /dev/null +++ b/keyboards/bm68rgb/keymaps/peepeetee/readme.md @@ -0,0 +1 @@ +# peepeetee's keymap for the bm68rgb. Includes a DFA to set the windows system language back to English by pressing the top right button. Said DFA will only work with 4 languages(for now). \ No newline at end of file From e9aee3bfd04920150b96208bd81877e1c962fe27 Mon Sep 17 00:00:00 2001 From: coarse Date: Wed, 12 May 2021 02:42:56 +0800 Subject: [PATCH 335/613] [Keyboard] Add Charue Design's Sunsetter (#12547) --- keyboards/charue/sunsetter/chconf.h | 31 +++++++++++++ keyboards/charue/sunsetter/config.h | 38 ++++++++++++++++ keyboards/charue/sunsetter/info.json | 12 +++++ .../charue/sunsetter/keymaps/default/keymap.c | 26 +++++++++++ .../charue/sunsetter/keymaps/via/keymap.c | 44 +++++++++++++++++++ .../charue/sunsetter/keymaps/via/rules.mk | 1 + keyboards/charue/sunsetter/mcuconf.h | 28 ++++++++++++ keyboards/charue/sunsetter/readme.md | 19 ++++++++ keyboards/charue/sunsetter/rules.mk | 22 ++++++++++ keyboards/charue/sunsetter/sunsetter.c | 18 ++++++++ keyboards/charue/sunsetter/sunsetter.h | 36 +++++++++++++++ 11 files changed, 275 insertions(+) create mode 100644 keyboards/charue/sunsetter/chconf.h create mode 100644 keyboards/charue/sunsetter/config.h create mode 100644 keyboards/charue/sunsetter/info.json create mode 100755 keyboards/charue/sunsetter/keymaps/default/keymap.c create mode 100644 keyboards/charue/sunsetter/keymaps/via/keymap.c create mode 100644 keyboards/charue/sunsetter/keymaps/via/rules.mk create mode 100644 keyboards/charue/sunsetter/mcuconf.h create mode 100644 keyboards/charue/sunsetter/readme.md create mode 100644 keyboards/charue/sunsetter/rules.mk create mode 100644 keyboards/charue/sunsetter/sunsetter.c create mode 100644 keyboards/charue/sunsetter/sunsetter.h diff --git a/keyboards/charue/sunsetter/chconf.h b/keyboards/charue/sunsetter/chconf.h new file mode 100644 index 0000000000..c0f309c8dc --- /dev/null +++ b/keyboards/charue/sunsetter/chconf.h @@ -0,0 +1,31 @@ +/* Copyright 2020 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/charue/sunsetter/chconf.h -r platforms/chibios/common/configs/chconf.h` + */ + +#pragma once + +#define CH_CFG_ST_FREQUENCY 10000 + +#define CH_CFG_OPTIMIZE_SPEED FALSE + +#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE + +#include_next + diff --git a/keyboards/charue/sunsetter/config.h b/keyboards/charue/sunsetter/config.h new file mode 100644 index 0000000000..ac7746fa72 --- /dev/null +++ b/keyboards/charue/sunsetter/config.h @@ -0,0 +1,38 @@ +/* +Copyright 2020 Michael Pio "Coarse" Mayol + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4344 // CD for CharueDesign +#define PRODUCT_ID 0x5353 // SS for Sunsetter +#define DEVICE_VER 0x0001 // Revision prototype +#define MANUFACTURER CharueDesign +#define PRODUCT Sunsetter + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 18 + +#define MATRIX_COL_PINS { B13, B12, B1, B0, A7, A6, A5, A4, A3, B9, B8, B7, B6, B5, B4, F0, B3, A15 } +#define MATRIX_ROW_PINS { A8, B14, B11, B10, B2 } +#define DIODE_DIRECTION COL2ROW +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +#define LED_CAPS_LOCK_PIN F1 +#define LED_PIN_ON_STATE 0 diff --git a/keyboards/charue/sunsetter/info.json b/keyboards/charue/sunsetter/info.json new file mode 100644 index 0000000000..cd9c2a01db --- /dev/null +++ b/keyboards/charue/sunsetter/info.json @@ -0,0 +1,12 @@ +{ + "keyboard_name": "Sunsetter", + "url": "https://charue-design.com/products/sunsetter", + "maintainer": "coarse", + "width": 18.25, + "height": 5, + "layouts": { + "LAYOUT_1065_ansi": { + "layout": [{"label":"F1", "x":0, "y":0}, {"label":"F2", "x":1, "y":0}, {"label":"~", "x":2.25, "y":0}, {"label":"!", "x":3.25, "y":0}, {"label":"@", "x":4.25, "y":0}, {"label":"#", "x":5.25, "y":0}, {"label":"$", "x":6.25, "y":0}, {"label":"%", "x":7.25, "y":0}, {"label":"^", "x":8.25, "y":0}, {"label":"&", "x":9.25, "y":0}, {"label":"*", "x":10.25, "y":0}, {"label":"(", "x":11.25, "y":0}, {"label":")", "x":12.25, "y":0}, {"label":"_", "x":13.25, "y":0}, {"label":"+", "x":14.25, "y":0}, {"label":"Backspace", "x":15.25, "y":0, "w":2}, {"label":"", "x":17.25, "y":0}, {"label":"F3", "x":0, "y":1}, {"label":"F4", "x":1, "y":1}, {"label":"Tab", "x":2.25, "y":1, "w":1.5}, {"label":"Q", "x":3.75, "y":1}, {"label":"W", "x":4.75, "y":1}, {"label":"E", "x":5.75, "y":1}, {"label":"R", "x":6.75, "y":1}, {"label":"T", "x":7.75, "y":1}, {"label":"Y", "x":8.75, "y":1}, {"label":"U", "x":9.75, "y":1}, {"label":"I", "x":10.75, "y":1}, {"label":"O", "x":11.75, "y":1}, {"label":"P", "x":12.75, "y":1}, {"label":"{", "x":13.75, "y":1}, {"label":"}", "x":14.75, "y":1}, {"label":"|", "x":15.75, "y":1, "w":1.5}, {"label":"", "x":17.25, "y":1}, {"label":"F5", "x":0, "y":2}, {"label":"F6", "x":1, "y":2}, {"label":"Caps Lock", "x":2.25, "y":2, "w":1.25}, {"label":"A", "x":4, "y":2}, {"label":"S", "x":5, "y":2}, {"label":"D", "x":6, "y":2}, {"label":"F", "x":7, "y":2}, {"label":"G", "x":8, "y":2}, {"label":"H", "x":9, "y":2}, {"label":"J", "x":10, "y":2}, {"label":"K", "x":11, "y":2}, {"label":"L", "x":12, "y":2}, {"label":":", "x":13, "y":2}, {"label":"\"", "x":14, "y":2}, {"label":"Enter", "x":15, "y":2, "w":2.25}, {"label":"", "x":17.25, "y":2}, {"label":"F7", "x":0, "y":3}, {"label":"F8", "x":1, "y":3}, {"label":"Shift", "x":2.25, "y":3, "w":2.25}, {"label":"Z", "x":4.5, "y":3}, {"label":"X", "x":5.5, "y":3}, {"label":"C", "x":6.5, "y":3}, {"label":"V", "x":7.5, "y":3}, {"label":"B", "x":8.5, "y":3}, {"label":"N", "x":9.5, "y":3}, {"label":"M", "x":10.5, "y":3}, {"label":"<", "x":11.5, "y":3}, {"label":">", "x":12.5, "y":3}, {"label":"?", "x":13.5, "y":3}, {"label":"Shift", "x":14.5, "y":3, "w":1.75}, {"label":"", "x":16.25, "y":3}, {"label":"", "x":17.25, "y":3}, {"label":"F9/11", "x":0, "y":4}, {"label":"F10/12", "x":1, "y":4}, {"label":"Ctrl", "x":2.25, "y":4, "w":1.25}, {"label":"Win", "x":3.5, "y":4, "w":1.25}, {"label":"Alt", "x":4.75, "y":4, "w":1.25}, {"label":"6.25", "x":6, "y":4, "w":6.25}, {"label":"Fn", "x":12.25, "y":4}, {"label":"", "x":15.25, "y":4}, {"label":"", "x":16.25, "y":4}, {"label":"", "x":17.25, "y":4}] + } + } +} diff --git a/keyboards/charue/sunsetter/keymaps/default/keymap.c b/keyboards/charue/sunsetter/keymaps/default/keymap.c new file mode 100755 index 0000000000..1af121ea2e --- /dev/null +++ b/keyboards/charue/sunsetter/keymaps/default/keymap.c @@ -0,0 +1,26 @@ +/* +Copyright 2012,2013 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_1065_ansi( + KC_F1, KC_F2, KC_GESC, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_VOLU, + KC_F3, KC_F4, KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_VOLD, + KC_F5, KC_F6, KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_ENT , KC_MUTE, + KC_F7, KC_F8, KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_MNXT, + KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT), +}; diff --git a/keyboards/charue/sunsetter/keymaps/via/keymap.c b/keyboards/charue/sunsetter/keymaps/via/keymap.c new file mode 100644 index 0000000000..53d5ced2d6 --- /dev/null +++ b/keyboards/charue/sunsetter/keymaps/via/keymap.c @@ -0,0 +1,44 @@ +/* +Copyright 2012,2013 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_1065_ansi( + KC_F1, KC_F2, KC_GESC, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_VOLU, + KC_F3, KC_F4, KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_VOLD, + KC_F5, KC_F6, KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_ENT , KC_MUTE, + KC_F7, KC_F8, KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_MNXT, + KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT), + [1] = LAYOUT_1065_ansi( + KC_F1, KC_F2, KC_GESC, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_VOLU, + KC_F3, KC_F4, KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_VOLD, + KC_F5, KC_F6, KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_ENT , KC_MUTE, + KC_F7, KC_F8, KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_MNXT, + KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT), + [2] = LAYOUT_1065_ansi( + KC_F1, KC_F2, KC_GESC, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_VOLU, + KC_F3, KC_F4, KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_VOLD, + KC_F5, KC_F6, KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_ENT , KC_MUTE, + KC_F7, KC_F8, KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_MNXT, + KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT), + [3] = LAYOUT_1065_ansi( + KC_F1, KC_F2, KC_GESC, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_VOLU, + KC_F3, KC_F4, KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_VOLD, + KC_F5, KC_F6, KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_ENT , KC_MUTE, + KC_F7, KC_F8, KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_MNXT, + KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT), +}; diff --git a/keyboards/charue/sunsetter/keymaps/via/rules.mk b/keyboards/charue/sunsetter/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/charue/sunsetter/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/charue/sunsetter/mcuconf.h b/keyboards/charue/sunsetter/mcuconf.h new file mode 100644 index 0000000000..ba981e4c05 --- /dev/null +++ b/keyboards/charue/sunsetter/mcuconf.h @@ -0,0 +1,28 @@ +/* Copyright 2020 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/charue/sunsetter/mcuconf.h -r platforms/chibios/GENERIC_STM32_F072XB/configs/mcuconf.h` + */ + +#pragma once + +#include_next + +#undef STM32_I2C_USE_DMA +#define STM32_I2C_USE_DMA FALSE + diff --git a/keyboards/charue/sunsetter/readme.md b/keyboards/charue/sunsetter/readme.md new file mode 100644 index 0000000000..84c0f3ed79 --- /dev/null +++ b/keyboards/charue/sunsetter/readme.md @@ -0,0 +1,19 @@ +# Sunsetter + +![Sunsetter](https://i.imgur.com/tJRg8zt.png) + +A 65 + 10% F-Key Column Keyboard kit made and sold by Charue Design. [More info on charue-design.com](https://charue-design.com/) + +* Keyboard Maintainer: [Coarse](https://github.com/coarse) +* Hardware Supported: [Sunsetter PCB](https://charue-design.com/collections/sunsetter/products/sunsetter-pcb-extra) +* Hardware Availability: [Charue Design](https://charue-design.com/) + +#### Jumping to Bootloader + +To enter the bootloader, you may use bootmagic by holding `Space+B` or by holding the reset button located at the back of the PCB, right beside the left shift key, for a few seconds. + +Make example for this keyboard (after setting up your build environment): + + make charue/sunsetter:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/charue/sunsetter/rules.mk b/keyboards/charue/sunsetter/rules.mk new file mode 100644 index 0000000000..85952f1a9c --- /dev/null +++ b/keyboards/charue/sunsetter/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = STM32F072 + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output + +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/keyboards/charue/sunsetter/sunsetter.c b/keyboards/charue/sunsetter/sunsetter.c new file mode 100644 index 0000000000..4d1cdf4e80 --- /dev/null +++ b/keyboards/charue/sunsetter/sunsetter.c @@ -0,0 +1,18 @@ +/* +Copyright 2020 Michael Pio "Coarse" Mayol + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "sunsetter.h" diff --git a/keyboards/charue/sunsetter/sunsetter.h b/keyboards/charue/sunsetter/sunsetter.h new file mode 100644 index 0000000000..47089ad261 --- /dev/null +++ b/keyboards/charue/sunsetter/sunsetter.h @@ -0,0 +1,36 @@ +/* +Copyright 2020 Michael Pio "Coarse" Mayol + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +#define ____ KC_NO + +#define LAYOUT_1065_ansi( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K016, K017, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K116, K117, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K217, \ + K300, K301, K302, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K316, K317, \ + K400, K401, K402, K403, K404, K408, K412, K415, K416, K417 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, ____, K016, K017 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, ____, K116, K117 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, ____, K217 }, \ + { K300, K301, K302, ____, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, ____, K316, K317 }, \ + { K400, K401, K402, K403, K404, ____, ____, ____, K408, ____, ____, ____, K412, ____, ____, K415, K416, K417 } \ +} From 9a3f4f8f8a3090b3783dfd60a75cd8120ec30e65 Mon Sep 17 00:00:00 2001 From: Andrew Kannan Date: Tue, 11 May 2021 20:52:15 -0400 Subject: [PATCH 336/613] Some fixes for the Bakeneko variant DB60s (#12662) * Some fixes for the Bakeneko variant DB60s * Add copyright to header * Add .python-version to gitignore for people who use pyenv or similar * update readme * Add more readmes * Add more readmes * Update the versions to have different product IDs * Update readme * Add missing rules.mk * Fix matrix on hotswap * remove iso from hotswap * Fix hotswap spacebar * Revert gitignore changes * Fix layouts * Apply suggestions from code review Co-authored-by: Ryan * Add split configs * Apply suggestions from code review Co-authored-by: Ryan * Add license to config * or equivalent Co-authored-by: Ryan --- keyboards/cannonkeys/db60/config.h | 2 - keyboards/cannonkeys/db60/db60.h | 82 +++++-------------- keyboards/cannonkeys/db60/hotswap/config.h | 21 +++++ keyboards/cannonkeys/db60/hotswap/hotswap.h | 63 ++++++++++++++ keyboards/cannonkeys/db60/hotswap/readme.md | 12 +++ keyboards/cannonkeys/db60/hotswap/rules.mk | 1 + keyboards/cannonkeys/db60/j02/config.h | 21 +++++ keyboards/cannonkeys/db60/j02/j02.h | 77 +++++++++++++++++ keyboards/cannonkeys/db60/j02/readme.md | 12 +++ keyboards/cannonkeys/db60/j02/rules.mk | 1 + .../cannonkeys/db60/keymaps/via/keymap.c | 4 +- keyboards/cannonkeys/db60/readme.md | 17 +++- keyboards/cannonkeys/db60/rev2/config.h | 21 +++++ keyboards/cannonkeys/db60/rev2/readme.md | 12 +++ keyboards/cannonkeys/db60/rev2/rev2.h | 77 +++++++++++++++++ keyboards/cannonkeys/db60/rev2/rules.mk | 1 + keyboards/cannonkeys/db60/rules.mk | 6 +- 17 files changed, 361 insertions(+), 69 deletions(-) create mode 100644 keyboards/cannonkeys/db60/hotswap/config.h create mode 100644 keyboards/cannonkeys/db60/hotswap/hotswap.h create mode 100644 keyboards/cannonkeys/db60/hotswap/readme.md create mode 100644 keyboards/cannonkeys/db60/hotswap/rules.mk create mode 100644 keyboards/cannonkeys/db60/j02/config.h create mode 100644 keyboards/cannonkeys/db60/j02/j02.h create mode 100644 keyboards/cannonkeys/db60/j02/readme.md create mode 100644 keyboards/cannonkeys/db60/j02/rules.mk create mode 100644 keyboards/cannonkeys/db60/rev2/config.h create mode 100644 keyboards/cannonkeys/db60/rev2/readme.md create mode 100644 keyboards/cannonkeys/db60/rev2/rev2.h create mode 100644 keyboards/cannonkeys/db60/rev2/rules.mk diff --git a/keyboards/cannonkeys/db60/config.h b/keyboards/cannonkeys/db60/config.h index 449aa14575..db7269071c 100644 --- a/keyboards/cannonkeys/db60/config.h +++ b/keyboards/cannonkeys/db60/config.h @@ -19,11 +19,9 @@ along with this program. If not, see . /* USB Device descriptor parameter */ #define VENDOR_ID 0xCA04 -#define PRODUCT_ID 0xDB60 #define DEVICE_VER 0x0001 #define MANUFACTURER CannonKeys -#define PRODUCT DB60 #define MATRIX_ROWS 5 #define MATRIX_COLS 15 diff --git a/keyboards/cannonkeys/db60/db60.h b/keyboards/cannonkeys/db60/db60.h index 741ab7d0ed..b0d5105e9f 100644 --- a/keyboards/cannonkeys/db60/db60.h +++ b/keyboards/cannonkeys/db60/db60.h @@ -1,61 +1,23 @@ -#pragma once + /* Copyright 2021 Andrew Kannan + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ -#include "quantum.h" - -#define KNO KC_NO - -#define LAYOUT_60_ansi( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E, \ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2E, \ - K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \ - K40, K41, K42, K45, K4A, K4B, K4C, K4E \ -) { \ - { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, KNO}, \ - { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, KNO, K1E }, \ - { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KNO, KNO, K2E }, \ - { K30, KNO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KNO, KNO }, \ - { K40, K41, K42, KNO, KNO, K45, KNO, KNO, KNO, KNO, K4A, K4B, K4C, KNO, K4E } \ -} - -#define LAYOUT_60_tsangan_hhkb( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E, \ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2E, \ - K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E,\ - K40, K41, K42, K45, K4B, K4C, K4E \ -) { \ - { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E}, \ - { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, KNO, K1E }, \ - { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KNO, KNO, K2E }, \ - { K30, KNO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KNO, K3E }, \ - { K40, K41, K42, KNO, KNO, K45, KNO, KNO, KNO, KNO, KNO, K4B, K4C, KNO, K4E } \ -} - -#define LAYOUT_60_iso( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, \ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, \ - K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \ - K40, K41, K42, K45, K4A, K4B, K4C, K4E \ -) { \ - { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, KNO}, \ - { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, KNO, KNO }, \ - { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KNO, K2E }, \ - { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KNO, KNO }, \ - { K40, K41, K42, KNO, KNO, K45, KNO, KNO, KNO, KNO, K4A, K4B, K4C, KNO, K4E } \ -} - -#define LAYOUT_all( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E,\ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E, \ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, \ - K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E,\ - K40, K41, K42, K45, K4A, K4B, K4C, K4E \ -) { \ - { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E}, \ - { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, KNO, K1E }, \ - { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KNO, K2E }, \ - { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KNO, K3E }, \ - { K40, K41, K42, KNO, KNO, K45, KNO, KNO, KNO, KNO, K4A, K4B, K4C, KNO, K4E } \ -} +#if defined(KEYBOARD_cannonkeys_db60_j02) + #include "j02.h" +#elif defined(KEYBOARD_cannonkeys_db60_hotswap) + #include "hotswap.h" +#else + #include "rev2.h" +#endif diff --git a/keyboards/cannonkeys/db60/hotswap/config.h b/keyboards/cannonkeys/db60/hotswap/config.h new file mode 100644 index 0000000000..3ea9693404 --- /dev/null +++ b/keyboards/cannonkeys/db60/hotswap/config.h @@ -0,0 +1,21 @@ +/* +Copyright 2021 Andrew Kannan + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#define PRODUCT_ID 0xDB62 +#define PRODUCT DB60 Hotswap diff --git a/keyboards/cannonkeys/db60/hotswap/hotswap.h b/keyboards/cannonkeys/db60/hotswap/hotswap.h new file mode 100644 index 0000000000..84e3528fd0 --- /dev/null +++ b/keyboards/cannonkeys/db60/hotswap/hotswap.h @@ -0,0 +1,63 @@ + /* Copyright 2021 Andrew Kannan + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define KNO KC_NO + +#define LAYOUT_60_ansi( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2E, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \ + K40, K41, K42, K46, K4A, K4B, K4C, K4E \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, KNO, K0E}, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, KNO, K1E }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KNO, KNO, K2E }, \ + { K30, KNO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KNO, KNO }, \ + { K40, K41, K42, KNO, KNO, KNO, K46, KNO, KNO, KNO, K4A, K4B, K4C, KNO, K4E } \ +} + +#define LAYOUT_60_tsangan_hhkb( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2E, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E,\ + K40, K41, K42, K46, K4B, K4C, K4E \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E}, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, KNO, K1E }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KNO, KNO, K2E }, \ + { K30, KNO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KNO, K3E }, \ + { K40, K41, K42, KNO, KNO, KNO, K46, KNO, KNO, KNO, KNO, K4B, K4C, KNO, K4E } \ +} + +#define LAYOUT_all( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E,\ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E,\ + K40, K41, K42, K46, K4A, K4B, K4C, K4E \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E}, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, KNO, K1E }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KNO, K2E }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KNO, K3E }, \ + { K40, K41, K42, KNO, KNO, KNO, K46, KNO, KNO, KNO, K4A, K4B, K4C, KNO, K4E } \ +} diff --git a/keyboards/cannonkeys/db60/hotswap/readme.md b/keyboards/cannonkeys/db60/hotswap/readme.md new file mode 100644 index 0000000000..818d02d060 --- /dev/null +++ b/keyboards/cannonkeys/db60/hotswap/readme.md @@ -0,0 +1,12 @@ +# CannonKeys DB60 + +DB60 "Daughterboard 60" Keyboard + +* Keyboard Maintainer: [Andrew Kannan](https://github.com/awkannan) +* Hardware Supported: STM32F072CBT6 (or equivalent) + +Make example for this keyboard (after setting up your build environment): + + make cannonkeys/db60/j02:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/cannonkeys/db60/hotswap/rules.mk b/keyboards/cannonkeys/db60/hotswap/rules.mk new file mode 100644 index 0000000000..b6e5c668f8 --- /dev/null +++ b/keyboards/cannonkeys/db60/hotswap/rules.mk @@ -0,0 +1 @@ +LAYOUTS = 60_ansi 60_tsangan_hhkb diff --git a/keyboards/cannonkeys/db60/j02/config.h b/keyboards/cannonkeys/db60/j02/config.h new file mode 100644 index 0000000000..392cec3a55 --- /dev/null +++ b/keyboards/cannonkeys/db60/j02/config.h @@ -0,0 +1,21 @@ +/* +Copyright 2021 Andrew Kannan + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#define PRODUCT_ID 0xDB60 +#define PRODUCT DB60 diff --git a/keyboards/cannonkeys/db60/j02/j02.h b/keyboards/cannonkeys/db60/j02/j02.h new file mode 100644 index 0000000000..0b85456086 --- /dev/null +++ b/keyboards/cannonkeys/db60/j02/j02.h @@ -0,0 +1,77 @@ + /* Copyright 2021 Andrew Kannan + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define KNO KC_NO + +#define LAYOUT_60_ansi( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2E, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \ + K40, K41, K42, K45, K4A, K4B, K4C, K4E \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, KNO}, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, KNO, K1E }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KNO, KNO, K2E }, \ + { K30, KNO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KNO, KNO }, \ + { K40, K41, K42, KNO, KNO, K45, KNO, KNO, KNO, KNO, K4A, K4B, K4C, KNO, K4E } \ +} + +#define LAYOUT_60_tsangan_hhkb( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2E, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E,\ + K40, K41, K42, K45, K4B, K4C, K4E \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E}, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, KNO, K1E }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KNO, KNO, K2E }, \ + { K30, KNO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KNO, K3E }, \ + { K40, K41, K42, KNO, KNO, K45, KNO, KNO, KNO, KNO, KNO, K4B, K4C, KNO, K4E } \ +} + +#define LAYOUT_60_iso( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \ + K40, K41, K42, K45, K4A, K4B, K4C, K4E \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, KNO}, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, KNO, KNO }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KNO, K2E }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KNO, KNO }, \ + { K40, K41, K42, KNO, KNO, K45, KNO, KNO, KNO, KNO, K4A, K4B, K4C, KNO, K4E } \ +} + +#define LAYOUT_all( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E,\ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E,\ + K40, K41, K42, K45, K4A, K4B, K4C, K4E \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E}, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, KNO, K1E }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KNO, K2E }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KNO, K3E }, \ + { K40, K41, K42, KNO, KNO, K45, KNO, KNO, KNO, KNO, K4A, K4B, K4C, KNO, K4E } \ +} diff --git a/keyboards/cannonkeys/db60/j02/readme.md b/keyboards/cannonkeys/db60/j02/readme.md new file mode 100644 index 0000000000..818d02d060 --- /dev/null +++ b/keyboards/cannonkeys/db60/j02/readme.md @@ -0,0 +1,12 @@ +# CannonKeys DB60 + +DB60 "Daughterboard 60" Keyboard + +* Keyboard Maintainer: [Andrew Kannan](https://github.com/awkannan) +* Hardware Supported: STM32F072CBT6 (or equivalent) + +Make example for this keyboard (after setting up your build environment): + + make cannonkeys/db60/j02:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/cannonkeys/db60/j02/rules.mk b/keyboards/cannonkeys/db60/j02/rules.mk new file mode 100644 index 0000000000..f53da9b051 --- /dev/null +++ b/keyboards/cannonkeys/db60/j02/rules.mk @@ -0,0 +1 @@ +LAYOUTS = 60_ansi 60_tsangan_hhkb 60_iso diff --git a/keyboards/cannonkeys/db60/keymaps/via/keymap.c b/keyboards/cannonkeys/db60/keymaps/via/keymap.c index 47af39164f..b25d36a9c2 100644 --- a/keyboards/cannonkeys/db60/keymaps/via/keymap.c +++ b/keyboards/cannonkeys/db60/keymaps/via/keymap.c @@ -30,7 +30,7 @@ enum layer_names { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_BASE] = LAYOUT_all( - KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FN1), @@ -38,7 +38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [_FN1] = LAYOUT_all( - KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_DEL, RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_BRTG, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_INC, BL_DEC, BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, diff --git a/keyboards/cannonkeys/db60/readme.md b/keyboards/cannonkeys/db60/readme.md index c1000ae2ca..54f4a8b935 100644 --- a/keyboards/cannonkeys/db60/readme.md +++ b/keyboards/cannonkeys/db60/readme.md @@ -3,10 +3,23 @@ DB60 "Daughterboard 60" Keyboard * Keyboard Maintainer: [Andrew Kannan](https://github.com/awkannan) -* Hardware Supported: STM32F072CBT6 +* Hardware Supported: STM32F072CBT6 (or equivalent) Make example for this keyboard (after setting up your build environment): - make cannonkeys/db60:default + make cannonkeys/db60/rev2:default See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +Some notes about the versions: +The original DB60 was shipped with the J-02. To build that, you will need to use the following command: + + make cannonkeys/db60/j02:default + +Solderable DB60s were shipped with keyboards after the J-02. This variant has cutouts along the top and bottom to support O-ring gasket mounting. To build these, you can use this command: + + make cannonkeys/db60/rev2:default + +Hotswap ANSI DB60s were shipped with the Bakeneko keyboards from CannonKeys. These also have the o-ring gasket mounting points. To build this: + + make cannonkeys/db60/hotswap:default diff --git a/keyboards/cannonkeys/db60/rev2/config.h b/keyboards/cannonkeys/db60/rev2/config.h new file mode 100644 index 0000000000..df3527b705 --- /dev/null +++ b/keyboards/cannonkeys/db60/rev2/config.h @@ -0,0 +1,21 @@ +/* +Copyright 2021 Andrew Kannan + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#define PRODUCT_ID 0xDB61 +#define PRODUCT DB60v2 diff --git a/keyboards/cannonkeys/db60/rev2/readme.md b/keyboards/cannonkeys/db60/rev2/readme.md new file mode 100644 index 0000000000..b52f38f9a0 --- /dev/null +++ b/keyboards/cannonkeys/db60/rev2/readme.md @@ -0,0 +1,12 @@ +# CannonKeys DB60 + +DB60 "Daughterboard 60" Keyboard + +* Keyboard Maintainer: [Andrew Kannan](https://github.com/awkannan) +* Hardware Supported: STM32F072CBT6 (or equivalent) + +Make example for this keyboard (after setting up your build environment): + + make cannonkeys/db60/rev2:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/cannonkeys/db60/rev2/rev2.h b/keyboards/cannonkeys/db60/rev2/rev2.h new file mode 100644 index 0000000000..6740e70ee3 --- /dev/null +++ b/keyboards/cannonkeys/db60/rev2/rev2.h @@ -0,0 +1,77 @@ + /* Copyright 2021 Andrew Kannan + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define KNO KC_NO + +#define LAYOUT_60_ansi( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2E, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \ + K40, K41, K42, K46, K4A, K4B, K4C, K4E \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, KNO}, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, KNO, K1E }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KNO, KNO, K2E }, \ + { K30, KNO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KNO, KNO }, \ + { K40, K41, K42, KNO, KNO, KNO, K46, KNO, KNO, KNO, K4A, K4B, K4C, KNO, K4E } \ +} + +#define LAYOUT_60_tsangan_hhkb( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2E, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E,\ + K40, K41, K42, K46, K4B, K4C, K4E \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E}, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, KNO, K1E }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KNO, KNO, K2E }, \ + { K30, KNO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KNO, K3E }, \ + { K40, K41, K42, KNO, KNO, KNO, K46, KNO, KNO, KNO, KNO, K4B, K4C, KNO, K4E } \ +} + +#define LAYOUT_60_iso( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \ + K40, K41, K42, K46, K4A, K4B, K4C, K4E \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, KNO}, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, KNO, KNO }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KNO, K2E }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KNO, KNO }, \ + { K40, K41, K42, KNO, KNO, KNO, K46, KNO, KNO, KNO, K4A, K4B, K4C, KNO, K4E } \ +} + +#define LAYOUT_all( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E,\ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E,\ + K40, K41, K42, K46, K4A, K4B, K4C, K4E \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E}, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, KNO, K1E }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KNO, K2E }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KNO, K3E }, \ + { K40, K41, K42, KNO, KNO, KNO, K46, KNO, KNO, KNO, K4A, K4B, K4C, KNO, K4E } \ +} diff --git a/keyboards/cannonkeys/db60/rev2/rules.mk b/keyboards/cannonkeys/db60/rev2/rules.mk new file mode 100644 index 0000000000..f53da9b051 --- /dev/null +++ b/keyboards/cannonkeys/db60/rev2/rules.mk @@ -0,0 +1 @@ +LAYOUTS = 60_ansi 60_tsangan_hhkb 60_iso diff --git a/keyboards/cannonkeys/db60/rules.mk b/keyboards/cannonkeys/db60/rules.mk index 2338508167..3221f8a4b1 100644 --- a/keyboards/cannonkeys/db60/rules.mk +++ b/keyboards/cannonkeys/db60/rules.mk @@ -15,10 +15,10 @@ BACKLIGHT_ENABLE = yes RGBLIGHT_ENABLE = yes WS2812_DRIVER = spi -LAYOUTS = 60_ansi 60_tsangan_hhkb 60_iso - -# Wildcard to allow APM32 MCU +# Wildcard to allow APM32 MCU DFU_SUFFIX_ARGS = -p FFFF -v FFFF +DEFAULT_FOLDER = cannonkeys/db60/rev2 + # Enter lower-power sleep mode when on the ChibiOS idle thread OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE From c305edc6800d30e676119cdef19dbe2e3310493a Mon Sep 17 00:00:00 2001 From: Brandon Claveria <48102030+swiftrax@users.noreply.github.com> Date: Wed, 12 May 2021 09:49:30 -0700 Subject: [PATCH 337/613] add handwired/swiftrax/walter (#12428) * init commit of walter * finalize keyboard * fix walter.h * fix config.h * fix rgblight animations * fix config.h Co-authored-by: Swiftrax --- keyboards/handwired/swiftrax/walter/config.h | 51 +++ keyboards/handwired/swiftrax/walter/info.json | 317 ++++++++++++++++++ .../swiftrax/walter/keymaps/default/keymap.c | 42 +++ .../swiftrax/walter/keymaps/via/keymap.c | 57 ++++ .../swiftrax/walter/keymaps/via/rules.mk | 1 + keyboards/handwired/swiftrax/walter/readme.md | 13 + keyboards/handwired/swiftrax/walter/rules.mk | 23 ++ keyboards/handwired/swiftrax/walter/walter.c | 17 + keyboards/handwired/swiftrax/walter/walter.h | 78 +++++ 9 files changed, 599 insertions(+) create mode 100644 keyboards/handwired/swiftrax/walter/config.h create mode 100644 keyboards/handwired/swiftrax/walter/info.json create mode 100644 keyboards/handwired/swiftrax/walter/keymaps/default/keymap.c create mode 100644 keyboards/handwired/swiftrax/walter/keymaps/via/keymap.c create mode 100644 keyboards/handwired/swiftrax/walter/keymaps/via/rules.mk create mode 100644 keyboards/handwired/swiftrax/walter/readme.md create mode 100644 keyboards/handwired/swiftrax/walter/rules.mk create mode 100644 keyboards/handwired/swiftrax/walter/walter.c create mode 100644 keyboards/handwired/swiftrax/walter/walter.h diff --git a/keyboards/handwired/swiftrax/walter/config.h b/keyboards/handwired/swiftrax/walter/config.h new file mode 100644 index 0000000000..8cf2d0d833 --- /dev/null +++ b/keyboards/handwired/swiftrax/walter/config.h @@ -0,0 +1,51 @@ +/* +Copyright 2021 Swiftrax + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x04D8 +#define PRODUCT_ID 0xE964 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Swiftrax +#define PRODUCT Walter +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 16 + +// ROWS: Top to bottom, COLS: Left to right + +#define MATRIX_ROW_PINS { B2, B1, F4, F1, F0 } +#define MATRIX_COL_PINS { F5, C6, F6, F7, C7, B6, B5, B4, D7, D6, D4, D5, D3, D2, D1, D0 } + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +#define ENCODERS_PAD_A { B3 } +#define ENCODERS_PAD_B { B7 } + +#define RGB_DI_PIN E6 +#define RGBLED_NUM 24 +#define RGBLIGHT_ANIMATIONS \ No newline at end of file diff --git a/keyboards/handwired/swiftrax/walter/info.json b/keyboards/handwired/swiftrax/walter/info.json new file mode 100644 index 0000000000..b13fbcc867 --- /dev/null +++ b/keyboards/handwired/swiftrax/walter/info.json @@ -0,0 +1,317 @@ +{ + "keyboard_name": "walter", + "url": "https://github.com/swiftrax", + "maintainer": "swiftrax", + "width": 16, + "height": 5, + "layouts": { + "LAYOUT_65_ansi": { + "layout": [ + {"label": "r1_01", "x": 0, "y": 0}, + {"label": "r1_02", "x": 1, "y": 0}, + {"label": "r1_03", "x": 2, "y": 0}, + {"label": "r1_04", "x": 3, "y": 0}, + {"label": "r1_05", "x": 4, "y": 0}, + {"label": "r1_06", "x": 5, "y": 0}, + {"label": "r1_07", "x": 6, "y": 0}, + {"label": "r1_08", "x": 7, "y": 0}, + {"label": "r1_09", "x": 8, "y": 0}, + {"label": "r1_10", "x": 9, "y": 0}, + {"label": "r1_11", "x": 10, "y": 0}, + {"label": "r1_12", "x": 11, "y": 0}, + {"label": "r1_13", "x": 12, "y": 0}, + {"label": "r1_14", "x": 13, "y": 0, "w":2}, + {"label": "r1_15", "x": 15, "y": 0}, + + {"label": "r2_01", "x": 0, "y": 1, "w": 1.5}, + {"label": "r2_02", "x": 1.5, "y": 1}, + {"label": "r2_03", "x": 2.5, "y": 1}, + {"label": "r2_04", "x": 3.5, "y": 1}, + {"label": "r2_05", "x": 4.5, "y": 1}, + {"label": "r2_06", "x": 5.5, "y": 1}, + {"label": "r2_07", "x": 6.5, "y": 1}, + {"label": "r2_08", "x": 7.5, "y": 1}, + {"label": "r2_09", "x": 8.5, "y": 1}, + {"label": "r2_10", "x": 9.5, "y": 1}, + {"label": "r2_11", "x": 10.5, "y": 1}, + {"label": "r2_12", "x": 11.5, "y": 1}, + {"label": "r2_13", "x": 12.5, "y": 1}, + {"label": "r2_14", "x": 13.5, "y": 1, "w": 1.5}, + {"label": "r2_15", "x": 15, "y": 1}, + + {"label": "r3_01", "x": 0, "y": 2, "w": 1.75}, + {"label": "r3_02", "x": 1.75, "y": 2}, + {"label": "r3_03", "x": 2.75, "y": 2}, + {"label": "r3_04", "x": 3.75, "y": 2}, + {"label": "r3_05", "x": 4.75, "y": 2}, + {"label": "r3_06", "x": 5.75, "y": 2}, + {"label": "r3_07", "x": 6.75, "y": 2}, + {"label": "r3_08", "x": 7.75, "y": 2}, + {"label": "r3_09", "x": 8.75, "y": 2}, + {"label": "r3_10", "x": 9.75, "y": 2}, + {"label": "r3_11", "x": 10.75, "y": 2}, + {"label": "r3_12", "x": 11.75, "y": 2}, + {"label": "r3_13", "x": 12.75, "y": 2, "w": 2.25}, + {"label": "r3_14", "x": 15, "y": 2}, + + {"label": "r4_01", "x": 0, "y": 3, "w": 2.25}, + {"label": "r4_02", "x": 2.25, "y": 3}, + {"label": "r4_03", "x": 3.25, "y": 3}, + {"label": "r4_04", "x": 4.25, "y": 3}, + {"label": "r4_05", "x": 5.25, "y": 3}, + {"label": "r4_06", "x": 6.25, "y": 3}, + {"label": "r4_07", "x": 7.25, "y": 3}, + {"label": "r4_08", "x": 8.25, "y": 3}, + {"label": "r4_09", "x": 9.25, "y": 3}, + {"label": "r4_10", "x": 10.25, "y": 3}, + {"label": "r4_11", "x": 11.25, "y": 3}, + {"label": "r4_12", "x": 12.25, "y": 3, "w": 1.75}, + {"label": "r4_13", "x": 14, "y": 3}, + {"label": "r4_14", "x": 15, "y": 3}, + + {"label": "r5_01", "x": 0, "y": 4, "w": 1.25}, + {"label": "r5_02", "x": 1.25, "y": 4, "w": 1.25}, + {"label": "r5_03", "x": 2.50, "y": 4, "w": 1.25}, + {"label": "r5_04", "x": 3.75, "y": 4, "w": 6.25}, + {"label": "r5_05", "x": 10, "y": 4, "w": 1.25}, + {"label": "r5_06", "x": 11.25, "y": 4, "w": 1.25}, + {"label": "r4_07", "x": 13, "y": 4}, + {"label": "r4_08", "x": 14, "y": 4}, + {"label": "r4_09", "x": 15, "y": 4} + ] + }, + "LAYOUT_65_iso": { + "layout": [ + {"label": "r1_01", "x": 0, "y": 0}, + {"label": "r1_02", "x": 1, "y": 0}, + {"label": "r1_03", "x": 2, "y": 0}, + {"label": "r1_04", "x": 3, "y": 0}, + {"label": "r1_05", "x": 4, "y": 0}, + {"label": "r1_06", "x": 5, "y": 0}, + {"label": "r1_07", "x": 6, "y": 0}, + {"label": "r1_08", "x": 7, "y": 0}, + {"label": "r1_09", "x": 8, "y": 0}, + {"label": "r1_10", "x": 9, "y": 0}, + {"label": "r1_11", "x": 10, "y": 0}, + {"label": "r1_12", "x": 11, "y": 0}, + {"label": "r1_13", "x": 12, "y": 0}, + {"label": "r1_14", "x": 13, "y": 0, "w":2}, + {"label": "r1_15", "x": 15, "y": 0}, + + {"label": "r2_01", "x": 0, "y": 1, "w": 1.5}, + {"label": "r2_02", "x": 1.5, "y": 1}, + {"label": "r2_03", "x": 2.5, "y": 1}, + {"label": "r2_04", "x": 3.5, "y": 1}, + {"label": "r2_05", "x": 4.5, "y": 1}, + {"label": "r2_06", "x": 5.5, "y": 1}, + {"label": "r2_07", "x": 6.5, "y": 1}, + {"label": "r2_08", "x": 7.5, "y": 1}, + {"label": "r2_09", "x": 8.5, "y": 1}, + {"label": "r2_10", "x": 9.5, "y": 1}, + {"label": "r2_11", "x": 10.5, "y": 1}, + {"label": "r2_12", "x": 11.5, "y": 1}, + {"label": "r2_13", "x": 12.5, "y": 1}, + {"label": "r2_14", "x": 13.5, "y": 1}, + {"label": "r2_15", "x": 15, "y": 1}, + + {"label": "r3_01", "x": 0, "y": 2, "w": 1.75}, + {"label": "r3_02", "x": 1.75, "y": 2}, + {"label": "r3_03", "x": 2.75, "y": 2}, + {"label": "r3_04", "x": 3.75, "y": 2}, + {"label": "r3_05", "x": 4.75, "y": 2}, + {"label": "r3_06", "x": 5.75, "y": 2}, + {"label": "r3_07", "x": 6.75, "y": 2}, + {"label": "r3_08", "x": 7.75, "y": 2}, + {"label": "r3_09", "x": 8.75, "y": 2}, + {"label": "r3_10", "x": 9.75, "y": 2}, + {"label": "r3_11", "x": 10.75, "y": 2}, + {"label": "r3_12", "x": 11.75, "y": 2}, + {"label": "r3_13", "x": 12.75, "y": 2}, + {"label": "r3_14", "x": 13.75, "y": 1, "w":1.25, "h":2}, + {"label": "r3_15", "x": 15, "y": 2}, + + + {"label": "r4_01", "x": 0, "y": 3, "w": 1.25}, + {"label": "r4_02", "x": 1.25, "y": 3}, + {"label": "r4_03", "x": 2.25, "y": 3}, + {"label": "r4_04", "x": 3.25, "y": 3}, + {"label": "r4_05", "x": 4.25, "y": 3}, + {"label": "r4_06", "x": 5.25, "y": 3}, + {"label": "r4_07", "x": 6.25, "y": 3}, + {"label": "r4_08", "x": 7.25, "y": 3}, + {"label": "r4_09", "x": 8.25, "y": 3}, + {"label": "r4_10", "x": 9.25, "y": 3}, + {"label": "r4_11", "x": 10.25, "y": 3}, + {"label": "r4_11", "x": 11.25, "y": 3}, + {"label": "r4_12", "x": 12.25, "y": 3, "w": 1.75}, + {"label": "r4_13", "x": 14, "y": 3}, + {"label": "r4_14", "x": 15, "y": 3}, + + {"label": "r5_01", "x": 0, "y": 4, "w": 1.25}, + {"label": "r5_02", "x": 1.25, "y": 4, "w": 1.25}, + {"label": "r5_03", "x": 2.50, "y": 4, "w": 1.25}, + {"label": "r5_04", "x": 3.75, "y": 4, "w": 6.25}, + {"label": "r5_05", "x": 10, "y": 4, "w": 1.25}, + {"label": "r5_06", "x": 11.25, "y": 4, "w": 1.25}, + {"label": "r4_07", "x": 13, "y": 4}, + {"label": "r4_08", "x": 14, "y": 4}, + {"label": "r4_09", "x": 15, "y": 4} + ] + }, + "LAYOUT_65_ansi_splitbs": { + "layout": [ + {"label": "r1_01", "x": 0, "y": 0}, + {"label": "r1_02", "x": 1, "y": 0}, + {"label": "r1_03", "x": 2, "y": 0}, + {"label": "r1_04", "x": 3, "y": 0}, + {"label": "r1_05", "x": 4, "y": 0}, + {"label": "r1_06", "x": 5, "y": 0}, + {"label": "r1_07", "x": 6, "y": 0}, + {"label": "r1_08", "x": 7, "y": 0}, + {"label": "r1_09", "x": 8, "y": 0}, + {"label": "r1_10", "x": 9, "y": 0}, + {"label": "r1_11", "x": 10, "y": 0}, + {"label": "r1_12", "x": 11, "y": 0}, + {"label": "r1_13", "x": 12, "y": 0}, + {"label": "r1_14", "x": 13, "y": 0}, + {"label": "r1_15", "x": 14, "y": 0}, + {"label": "r1_16", "x": 15, "y": 0}, + + {"label": "r2_01", "x": 0, "y": 1, "w": 1.5}, + {"label": "r2_02", "x": 1.5, "y": 1}, + {"label": "r2_03", "x": 2.5, "y": 1}, + {"label": "r2_04", "x": 3.5, "y": 1}, + {"label": "r2_05", "x": 4.5, "y": 1}, + {"label": "r2_06", "x": 5.5, "y": 1}, + {"label": "r2_07", "x": 6.5, "y": 1}, + {"label": "r2_08", "x": 7.5, "y": 1}, + {"label": "r2_09", "x": 8.5, "y": 1}, + {"label": "r2_10", "x": 9.5, "y": 1}, + {"label": "r2_11", "x": 10.5, "y": 1}, + {"label": "r2_12", "x": 11.5, "y": 1}, + {"label": "r2_13", "x": 12.5, "y": 1}, + {"label": "r2_14", "x": 13.5, "y": 1, "w": 1.5}, + {"label": "r2_15", "x": 15, "y": 1}, + + {"label": "r3_01", "x": 0, "y": 2, "w": 1.75}, + {"label": "r3_02", "x": 1.75, "y": 2}, + {"label": "r3_03", "x": 2.75, "y": 2}, + {"label": "r3_04", "x": 3.75, "y": 2}, + {"label": "r3_05", "x": 4.75, "y": 2}, + {"label": "r3_06", "x": 5.75, "y": 2}, + {"label": "r3_07", "x": 6.75, "y": 2}, + {"label": "r3_08", "x": 7.75, "y": 2}, + {"label": "r3_09", "x": 8.75, "y": 2}, + {"label": "r3_10", "x": 9.75, "y": 2}, + {"label": "r3_11", "x": 10.75, "y": 2}, + {"label": "r3_12", "x": 11.75, "y": 2}, + {"label": "r3_13", "x": 12.75, "y": 2, "w": 2.25}, + {"label": "r3_14", "x": 15, "y": 2}, + + {"label": "r4_01", "x": 0, "y": 3, "w": 2.25}, + {"label": "r4_02", "x": 2.25, "y": 3}, + {"label": "r4_03", "x": 3.25, "y": 3}, + {"label": "r4_04", "x": 4.25, "y": 3}, + {"label": "r4_05", "x": 5.25, "y": 3}, + {"label": "r4_06", "x": 6.25, "y": 3}, + {"label": "r4_07", "x": 7.25, "y": 3}, + {"label": "r4_08", "x": 8.25, "y": 3}, + {"label": "r4_09", "x": 9.25, "y": 3}, + {"label": "r4_10", "x": 10.25, "y": 3}, + {"label": "r4_11", "x": 11.25, "y": 3}, + {"label": "r4_12", "x": 12.25, "y": 3, "w": 1.75}, + {"label": "r4_13", "x": 14, "y": 3}, + {"label": "r4_14", "x": 15, "y": 3}, + + {"label": "r5_01", "x": 0, "y": 4, "w": 1.25}, + {"label": "r5_02", "x": 1.25, "y": 4, "w": 1.25}, + {"label": "r5_03", "x": 2.50, "y": 4, "w": 1.25}, + {"label": "r5_04", "x": 3.75, "y": 4, "w": 6.25}, + {"label": "r5_05", "x": 10, "y": 4, "w": 1.25}, + {"label": "r5_06", "x": 11.25, "y": 4, "w": 1.25}, + {"label": "r4_07", "x": 13, "y": 4}, + {"label": "r4_08", "x": 14, "y": 4}, + {"label": "r4_09", "x": 15, "y": 4} + ] + }, + "LAYOUT_65_iso_splitbs": { + "layout": [ + {"label": "r1_01", "x": 0, "y": 0}, + {"label": "r1_02", "x": 1, "y": 0}, + {"label": "r1_03", "x": 2, "y": 0}, + {"label": "r1_04", "x": 3, "y": 0}, + {"label": "r1_05", "x": 4, "y": 0}, + {"label": "r1_06", "x": 5, "y": 0}, + {"label": "r1_07", "x": 6, "y": 0}, + {"label": "r1_08", "x": 7, "y": 0}, + {"label": "r1_09", "x": 8, "y": 0}, + {"label": "r1_10", "x": 9, "y": 0}, + {"label": "r1_11", "x": 10, "y": 0}, + {"label": "r1_12", "x": 11, "y": 0}, + {"label": "r1_13", "x": 12, "y": 0}, + {"label": "r1_14", "x": 13, "y": 0}, + {"label": "r1_15", "x": 14, "y": 0}, + {"label": "r1_16", "x": 15, "y": 0}, + + {"label": "r2_01", "x": 0, "y": 1, "w": 1.5}, + {"label": "r2_02", "x": 1.5, "y": 1}, + {"label": "r2_03", "x": 2.5, "y": 1}, + {"label": "r2_04", "x": 3.5, "y": 1}, + {"label": "r2_05", "x": 4.5, "y": 1}, + {"label": "r2_06", "x": 5.5, "y": 1}, + {"label": "r2_07", "x": 6.5, "y": 1}, + {"label": "r2_08", "x": 7.5, "y": 1}, + {"label": "r2_09", "x": 8.5, "y": 1}, + {"label": "r2_10", "x": 9.5, "y": 1}, + {"label": "r2_11", "x": 10.5, "y": 1}, + {"label": "r2_12", "x": 11.5, "y": 1}, + {"label": "r2_13", "x": 12.5, "y": 1}, + {"label": "r2_14", "x": 13.5, "y": 1}, + {"label": "r2_15", "x": 15, "y": 1}, + + {"label": "r3_01", "x": 0, "y": 2, "w": 1.75}, + {"label": "r3_02", "x": 1.75, "y": 2}, + {"label": "r3_03", "x": 2.75, "y": 2}, + {"label": "r3_04", "x": 3.75, "y": 2}, + {"label": "r3_05", "x": 4.75, "y": 2}, + {"label": "r3_06", "x": 5.75, "y": 2}, + {"label": "r3_07", "x": 6.75, "y": 2}, + {"label": "r3_08", "x": 7.75, "y": 2}, + {"label": "r3_09", "x": 8.75, "y": 2}, + {"label": "r3_10", "x": 9.75, "y": 2}, + {"label": "r3_11", "x": 10.75, "y": 2}, + {"label": "r3_12", "x": 11.75, "y": 2}, + {"label": "r3_13", "x": 12.75, "y": 2}, + {"label": "r3_14", "x": 13.75, "y": 1, "w":1.25, "h":2}, + {"label": "r3_15", "x": 15, "y": 2}, + + + {"label": "r4_01", "x": 0, "y": 3, "w": 1.25}, + {"label": "r4_02", "x": 1.25, "y": 3}, + {"label": "r4_03", "x": 2.25, "y": 3}, + {"label": "r4_04", "x": 3.25, "y": 3}, + {"label": "r4_05", "x": 4.25, "y": 3}, + {"label": "r4_06", "x": 5.25, "y": 3}, + {"label": "r4_07", "x": 6.25, "y": 3}, + {"label": "r4_08", "x": 7.25, "y": 3}, + {"label": "r4_09", "x": 8.25, "y": 3}, + {"label": "r4_10", "x": 9.25, "y": 3}, + {"label": "r4_11", "x": 10.25, "y": 3}, + {"label": "r4_11", "x": 11.25, "y": 3}, + {"label": "r4_12", "x": 12.25, "y": 3, "w": 1.75}, + {"label": "r4_13", "x": 14, "y": 3}, + {"label": "r4_14", "x": 15, "y": 3}, + + {"label": "r5_01", "x": 0, "y": 4, "w": 1.25}, + {"label": "r5_02", "x": 1.25, "y": 4, "w": 1.25}, + {"label": "r5_03", "x": 2.50, "y": 4, "w": 1.25}, + {"label": "r5_04", "x": 3.75, "y": 4, "w": 6.25}, + {"label": "r5_05", "x": 10, "y": 4, "w": 1.25}, + {"label": "r5_06", "x": 11.25, "y": 4, "w": 1.25}, + {"label": "r4_07", "x": 13, "y": 4}, + {"label": "r4_08", "x": 14, "y": 4}, + {"label": "r4_09", "x": 15, "y": 4} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/handwired/swiftrax/walter/keymaps/default/keymap.c b/keyboards/handwired/swiftrax/walter/keymaps/default/keymap.c new file mode 100644 index 0000000000..fb35e695e2 --- /dev/null +++ b/keyboards/handwired/swiftrax/walter/keymaps/default/keymap.c @@ -0,0 +1,42 @@ +/* +Copyright 2021 Swiftrax + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_ansi( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_65_ansi( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_INS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, + RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END + ), + [2] = LAYOUT_65_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; diff --git a/keyboards/handwired/swiftrax/walter/keymaps/via/keymap.c b/keyboards/handwired/swiftrax/walter/keymaps/via/keymap.c new file mode 100644 index 0000000000..cfa69d0c84 --- /dev/null +++ b/keyboards/handwired/swiftrax/walter/keymaps/via/keymap.c @@ -0,0 +1,57 @@ +/* +Copyright 2021 Swiftrax + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_ansi( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_65_ansi( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_INS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, + RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END + ), + [2] = LAYOUT_65_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_65_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; + +void encoder_update_user(uint8_t index, bool clockwise) { + if (clockwise) + tap_code16(KC_VOLU); + else + tap_code16(KC_VOLD); + +} \ No newline at end of file diff --git a/keyboards/handwired/swiftrax/walter/keymaps/via/rules.mk b/keyboards/handwired/swiftrax/walter/keymaps/via/rules.mk new file mode 100644 index 0000000000..036bd6d1c3 --- /dev/null +++ b/keyboards/handwired/swiftrax/walter/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/handwired/swiftrax/walter/readme.md b/keyboards/handwired/swiftrax/walter/readme.md new file mode 100644 index 0000000000..e151b44d1b --- /dev/null +++ b/keyboards/handwired/swiftrax/walter/readme.md @@ -0,0 +1,13 @@ +# Walter + +A 65% keyboard + +* Keyboard Maintainer: Swiftrax +* Hardware Supported: Walter +* Hardware Availability: https://github.com/swiftrax + +Make example for this keyboard (after setting up your build environment): + + make handwired/swiftrax/walter:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/handwired/swiftrax/walter/rules.mk b/keyboards/handwired/swiftrax/walter/rules.mk new file mode 100644 index 0000000000..89bd1be0ae --- /dev/null +++ b/keyboards/handwired/swiftrax/walter/rules.mk @@ -0,0 +1,23 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +ENCODER_ENABLE = yes # Rotary Encder diff --git a/keyboards/handwired/swiftrax/walter/walter.c b/keyboards/handwired/swiftrax/walter/walter.c new file mode 100644 index 0000000000..43d328fa11 --- /dev/null +++ b/keyboards/handwired/swiftrax/walter/walter.c @@ -0,0 +1,17 @@ +/* +Copyright 2021 Swiftrax + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "walter.h" diff --git a/keyboards/handwired/swiftrax/walter/walter.h b/keyboards/handwired/swiftrax/walter/walter.h new file mode 100644 index 0000000000..e761797866 --- /dev/null +++ b/keyboards/handwired/swiftrax/walter/walter.h @@ -0,0 +1,78 @@ +/* +Copyright 2021 Swiftrax + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#include "quantum.h" + + + #define LAYOUT_65_ansi( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, K0F, \ + K10, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, \ + K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2F, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, K3F, \ + K40, K41, K42, K46, K4A, K4B, K4C, K4D, K4E, K4F \ + ) \ + { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, KC_NO, K0E, K0F }, \ + { K10, KC_NO, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \ + { K20, KC_NO, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D,KC_NO,K2F }, \ + { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, K3E, K3F }, \ + { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E, K4F }, \ + } + + #define LAYOUT_65_iso( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, K0F, \ + K10, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1F, \ + K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, K3F, \ + K40, K41, K42, K46, K4A, K4B, K4C, K4D, K4E, K4F \ + ) \ + { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, KC_NO, K0E, K0F }, \ + { K10, KC_NO, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K2D, K1F }, \ + { K20, KC_NO, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KC_NO, K2E, K2F }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, K3E, K3F }, \ + { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E, K4F }, \ + } + #define LAYOUT_65_ansi_splitbs( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, \ + K10, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, \ + K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, K2F, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, K3F, \ + K40, K41, K42, K46, K4A, K4B, K4C, K4D, K4E, K4F \ + ) \ + { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \ + { K10, KC_NO, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \ + { K20, KC_NO, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KC_NO, K2E, K2F }, \ + { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, K3E, K3F }, \ + { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E, K4F }, \ + } +#define LAYOUT_65_iso_splitbs( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, \ + K10, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1F, \ + K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, K3F, \ + K40, K41, K42, K46, K4A, K4B, K4C, K4D, K4E, K4F \ + ) \ + { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \ + { K10, KC_NO, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K2D, K1F }, \ + { K20, KC_NO, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KC_NO, K2E, K2F }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, K3E, K3F }, \ + { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E, K4F }, \ + } From d471a691f70cb51b46fc98c229be8fa97ac86ffb Mon Sep 17 00:00:00 2001 From: coarse Date: Thu, 13 May 2021 07:24:20 +0800 Subject: [PATCH 338/613] Fix Cordillera LED states config (#12646) --- keyboards/coarse/cordillera/config.h | 1 + 1 file changed, 1 insertion(+) diff --git a/keyboards/coarse/cordillera/config.h b/keyboards/coarse/cordillera/config.h index 33b0d7944a..1d8c9e294c 100644 --- a/keyboards/coarse/cordillera/config.h +++ b/keyboards/coarse/cordillera/config.h @@ -35,6 +35,7 @@ along with this program. If not, see . #define LED_NUM_LOCK_PIN B0 #define LED_CAPS_LOCK_PIN A1 #define LED_SCROLL_LOCK_PIN A0 +#define LED_PIN_ON_STATE 0 #define BACKLIGHT_PIN A8 #define BACKLIGHT_PWM_DRIVER PWMD1 From 9ada2f30eac43586e9a597c71fae0a42c84bf5d4 Mon Sep 17 00:00:00 2001 From: Albert Y <76888457+filterpaper@users.noreply.github.com> Date: Thu, 13 May 2021 07:25:21 +0800 Subject: [PATCH 339/613] USB suspend option and LED position change for The Mark 65 (#12725) Co-authored-by: filterpaper --- keyboards/boardsource/the_mark/config.h | 4 +++- keyboards/boardsource/the_mark/the_mark.c | 10 +++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/keyboards/boardsource/the_mark/config.h b/keyboards/boardsource/the_mark/config.h index 7af2c302fb..5888452ce4 100644 --- a/keyboards/boardsource/the_mark/config.h +++ b/keyboards/boardsource/the_mark/config.h @@ -58,7 +58,9 @@ along with this program. If not, see . #ifdef RGB_MATRIX_ENABLE #define DRIVER_LED_TOTAL 24 // Number of LEDs #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 -#define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended +# ifndef RGB_DISABLE_WHEN_USB_SUSPENDED +# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended +# endif #endif /* diff --git a/keyboards/boardsource/the_mark/the_mark.c b/keyboards/boardsource/the_mark/the_mark.c index 9bc1f5b461..59aff7f9ac 100644 --- a/keyboards/boardsource/the_mark/the_mark.c +++ b/keyboards/boardsource/the_mark/the_mark.c @@ -20,11 +20,11 @@ #ifdef RGB_MATRIX_ENABLE led_config_t g_led_config = { { // Key Matrix to LED Index - { NO_LED, 10 , 9 , NO_LED, 8 , 7 , NO_LED, 6 , 5 , NO_LED, 4 , 3 , NO_LED, 2 , 1 , NO_LED }, - { NO_LED, 11 , NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 0 , NO_LED }, - { NO_LED, 12 , NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 23 , NO_LED }, - { NO_LED, 13 , 14 , NO_LED, 15 , 16 , NO_LED, 17 , 18 , NO_LED, 19 , 20 , NO_LED, 21 , 22 , NO_LED }, - { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED }, + { 10 , NO_LED, 9 , NO_LED, 8 , 7 , NO_LED, 6 , 5 , NO_LED, 4 , 3 , NO_LED, 2 , NO_LED, 1 }, + { 11 , NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 0 }, + { 12 , NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 23 }, + { 13 , NO_LED, 14 , NO_LED, 15 , 16 , NO_LED, 17 , 18 , NO_LED, 19 , 20 , NO_LED, 21 , NO_LED, NO_LED }, + { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 22 }, }, { // LED Index to Physical Position {224, 42}, {224, 21}, {209, 21}, {179, 21}, {164, 21}, {134, 21}, {119, 21}, {89, 21}, {74, 21}, {45, 21}, {30, 21}, {30, 42}, From 7d21ce367d1f2c7019d0c9e9931995ce1f3623df Mon Sep 17 00:00:00 2001 From: thompson-ele Date: Wed, 12 May 2021 17:02:09 -0700 Subject: [PATCH 340/613] [Keyboard] Titan60 LED and keymap updates (#12558) Co-authored-by: Ryan --- keyboards/acekeyboard/titan60/config.h | 6 +- keyboards/acekeyboard/titan60/info.json | 60 ++++--- .../titan60/keymaps/default/keymap.c | 42 ++--- .../acekeyboard/titan60/keymaps/iso/keymap.c | 35 ++++ .../titan60/keymaps/tsangan/keymap.c | 35 ++++ .../titan60/keymaps/utilitarian/keymap.c | 35 ++++ .../acekeyboard/titan60/keymaps/via/keymap.c | 60 +++---- keyboards/acekeyboard/titan60/readme.md | 5 +- keyboards/acekeyboard/titan60/titan60.h | 167 +++++++++++------- 9 files changed, 301 insertions(+), 144 deletions(-) create mode 100644 keyboards/acekeyboard/titan60/keymaps/iso/keymap.c create mode 100644 keyboards/acekeyboard/titan60/keymaps/tsangan/keymap.c create mode 100644 keyboards/acekeyboard/titan60/keymaps/utilitarian/keymap.c diff --git a/keyboards/acekeyboard/titan60/config.h b/keyboards/acekeyboard/titan60/config.h index d34622b250..67d02c98ea 100644 --- a/keyboards/acekeyboard/titan60/config.h +++ b/keyboards/acekeyboard/titan60/config.h @@ -53,15 +53,15 @@ along with this program. If not, see . /* * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. */ -#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 +// #define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 #define BACKLIGHT_PIN B7 #define BACKLIGHT_LEVELS 3 #define BACKLIGHT_BREATHING -#define RGB_DI_PIN D2 +#define RGB_DI_PIN D0 #ifdef RGB_DI_PIN -# define RGBLED_NUM 14 +# define RGBLED_NUM 6 # define RGBLIGHT_HUE_STEP 8 # define RGBLIGHT_SAT_STEP 8 # define RGBLIGHT_VAL_STEP 8 diff --git a/keyboards/acekeyboard/titan60/info.json b/keyboards/acekeyboard/titan60/info.json index 0839c7fb36..f6e79f0ead 100644 --- a/keyboards/acekeyboard/titan60/info.json +++ b/keyboards/acekeyboard/titan60/info.json @@ -1,32 +1,36 @@ { - "keyboard_name": "Titan60", - "url": "", - "maintainer": "qmk", - "width": 15, - "height": 5, + "keyboard_name": "Titan60", + "url": "https://acekeyboard.co/", + "maintainer": "keebnewb", + "width": 14, + "height": 5, "layouts": { - "LAYOUT_all_ansi_std": { - "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":2.75}, {"x":6.5, "y":4, "w":1.25}, {"x":7.75, "y":4, "w":2.25}, {"x":10, "y":4}, {"x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}] - }, - - "LAYOUT_all_ansi_2u_lshift": { - "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":2}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":6, "y":3}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}, {"x":12, "y":3}, {"x":13, "y":3}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":2.75}, {"x":6.5, "y":4, "w":1.25}, {"x":7.75, "y":4, "w":2.25}, {"x":10, "y":4}, {"x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}] - }, - - "LAYOUT_60_ansi": { - "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":2.75}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":12.5, "y":4, "w":1.25}, {"x":13.75, "y":4, "w":1.25}] - }, - - "LAYOUT_60_ansi_tsangan": { - "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.5}, {"x":1.5, "y":4}, {"x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"x":11, "y":4, "w":1.5}, {"x":12.5, "y":4}, {"x":13.5, "y":4, "w":1.5}] - }, - - "LAYOUT_60_ansi_split_bs_rshift": { - "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":12.5, "y":4, "w":1.25}, {"x":13.75, "y":4, "w":1.25}] - }, - - "LAYOUT_60_ansi_split_spacebar": { - "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":2.75}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":2.75}, {"x":6.5, "y":4, "w":1.25}, {"x":7.75, "y":4, "w":2.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":12.5, "y":4, "w":1.25}, {"x":13.75, "y":4, "w":1.25}] - } + "LAYOUT_60_ansi": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":2.75}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":12.5, "y":4, "w":1.25}, {"x":13.75, "y":4, "w":1.25}] + }, + "LAYOUT_60_ansi_split": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":12.5, "y":4, "w":1.25}, {"x":13.75, "y":4, "w":1.25}] + }, + "LAYOUT_60_iso": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.75, "y":1, "w":1.25, "h":2}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":2.75}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":12.5, "y":4, "w":1.25}, {"x":13.75, "y":4, "w":1.25}] + }, + "LAYOUT_60_iso_split": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.75, "y":1, "w":1.25, "h":2}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":12.5, "y":4, "w":1.25}, {"x":13.75, "y":4, "w":1.25}] + }, + "LAYOUT_60_tsangan": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.5}, {"x":1.5, "y":4}, {"x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"x":11, "y":4, "w":1.5}, {"x":12.5, "y":4}, {"x":13.5, "y":4, "w":1.5}] + }, + "LAYOUT_60_tsangan_split": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.5}, {"x":1.5, "y":4}, {"x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"x":11, "y":4, "w":1.5}, {"x":12.5, "y":4}, {"x":13.5, "y":4, "w":1.5}] + }, + "LAYOUT_60_utilitarian": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":2}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":6, "y":3}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}, {"x":12, "y":3}, {"x":13, "y":3}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4}, {"x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}] + }, + "LAYOUT_60_utilitarian_split": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":2}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":6, "y":3}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}, {"x":12, "y":3}, {"x":13, "y":3}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":2.75}, {"x":6.5, "y":4, "w":1.25}, {"x":7.75, "y":4, "w":2.25}, {"x":10, "y":4}, {"x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}] + }, + "LAYOUT_60_utilitarian_iso_split": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.75, "y":1, "w":1.25, "h":2}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2}, {"x":0, "y":3, "w":2}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":6, "y":3}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}, {"x":12, "y":3}, {"x":13, "y":3}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":2.75}, {"x":6.5, "y":4, "w":1.25}, {"x":7.75, "y":4, "w":2.25}, {"x":10, "y":4}, {"x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}] + } } } diff --git a/keyboards/acekeyboard/titan60/keymaps/default/keymap.c b/keyboards/acekeyboard/titan60/keymaps/default/keymap.c index be3ed10bbc..f631bff3f0 100644 --- a/keyboards/acekeyboard/titan60/keymaps/default/keymap.c +++ b/keyboards/acekeyboard/titan60/keymaps/default/keymap.c @@ -1,5 +1,5 @@ /* -Copyright 2020 MechMerlin +Copyright 2021 keebnewb This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -18,31 +18,31 @@ along with this program. If not, see . const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* - * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┠- * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│ - * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ - * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │ - * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ - * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ - * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │Ctrl│GUI │Alt │ │ Alt│ GUI│Menu│Ctrl│ - * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ + * ┌─────┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┠+ * │ Esc │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│ + * ├─────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │ + * ├───────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │ + * ├────────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ + * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ + * ├─────┬────┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ + * │Ctrl │ GUI │Alt │ │ Alt│ GUI│Menu│Ctrl│ + * └─────┴─────┴────┴────────────────────────┴────┴────┴────┴────┘ */ [0] = LAYOUT_60_ansi( - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_B, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RALT, KC_RGUI, KC_RCTL + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTRL ), [1] = LAYOUT_60_ansi( - KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + RGB_TOG, RGB_RMOD,KC_UP, RGB_MOD, RGB_M_R, RGB_M_T, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, BS_SWAP, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, + BL_TOGG, BL_DEC, BL_INC, KC_CALC, KC_MPLY, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_END, KC_PGDN, KC_TRNS, + KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), -}; \ No newline at end of file +}; diff --git a/keyboards/acekeyboard/titan60/keymaps/iso/keymap.c b/keyboards/acekeyboard/titan60/keymaps/iso/keymap.c new file mode 100644 index 0000000000..6f56d2d420 --- /dev/null +++ b/keyboards/acekeyboard/titan60/keymaps/iso/keymap.c @@ -0,0 +1,35 @@ +/* +Copyright 2021 keebnewb + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_60_iso( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTRL + ), + + [1] = LAYOUT_60_iso( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + RGB_TOG, RGB_RMOD,KC_UP, RGB_MOD, RGB_M_R, RGB_M_T, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, BS_SWAP, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, + BL_TOGG, BL_DEC, BL_INC, KC_CALC, KC_MPLY, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, + KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; diff --git a/keyboards/acekeyboard/titan60/keymaps/tsangan/keymap.c b/keyboards/acekeyboard/titan60/keymaps/tsangan/keymap.c new file mode 100644 index 0000000000..4c18f99f55 --- /dev/null +++ b/keyboards/acekeyboard/titan60/keymaps/tsangan/keymap.c @@ -0,0 +1,35 @@ +/* +Copyright 2021 keebnewb + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_60_tsangan( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_CAPS, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTRL + ), + + [1] = LAYOUT_60_tsangan( + KC_SLEP, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, + RGB_TOG, RGB_RMOD, RGB_MOD, RGB_M_R, RGB_M_T, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_CLR, + KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_EJCT, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, KC_TRNS, + BL_TOGG, BL_DEC, BL_INC, KC_CALC, KC_MPLY, KC_MNXT, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, + KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_STOP, KC_TRNS, KC_TRNS + ), +}; diff --git a/keyboards/acekeyboard/titan60/keymaps/utilitarian/keymap.c b/keyboards/acekeyboard/titan60/keymaps/utilitarian/keymap.c new file mode 100644 index 0000000000..c7358d7170 --- /dev/null +++ b/keyboards/acekeyboard/titan60/keymaps/utilitarian/keymap.c @@ -0,0 +1,35 @@ +/* +Copyright 2021 keebnewb + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_60_utilitarian( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTRL,KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_60_utilitarian( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + RGB_TOG, RGB_RMOD,KC_UP, RGB_MOD, RGB_M_R, RGB_M_T, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, BS_SWAP, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, + BL_TOGG, BL_DEC, BL_INC, KC_CALC, KC_MPLY, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; diff --git a/keyboards/acekeyboard/titan60/keymaps/via/keymap.c b/keyboards/acekeyboard/titan60/keymaps/via/keymap.c index c78d8f0b17..f6296cc823 100644 --- a/keyboards/acekeyboard/titan60/keymaps/via/keymap.c +++ b/keyboards/acekeyboard/titan60/keymaps/via/keymap.c @@ -27,38 +27,38 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │Ctrl│GUI │Alt │ │ Alt│ GUI│Menu│Ctrl│ + * │Ctrl│GUI │Alt │ │ Alt│ GUI│Fn │Ctrl│ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ - [0] = LAYOUT_60_ansi( - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RALT, KC_RGUI, KC_RCTL - ), + [0] = LAYOUT_60_ansi( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTRL + ), - [1] = LAYOUT_60_ansi( - KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - ), + [1] = LAYOUT_60_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), - [2] = LAYOUT_60_ansi( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - ), + [2] = LAYOUT_60_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), - [3] = LAYOUT_60_ansi( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - ) -}; \ No newline at end of file + [3] = LAYOUT_60_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/acekeyboard/titan60/readme.md b/keyboards/acekeyboard/titan60/readme.md index f977b4b89f..810d9b5a10 100644 --- a/keyboards/acekeyboard/titan60/readme.md +++ b/keyboards/acekeyboard/titan60/readme.md @@ -1,8 +1,11 @@ # titan60 +![Front of the Titan60 PCB](https://i.imgur.com/LaPzdRl.png) +![Back of the Titan60 PCB](https://i.imgur.com/nbineBj.png) + 60% custom keyboard originally meant for the Saturn 60 -* Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin) +* Keyboard Maintainer: [keebnewb](https://github.com/thompson-ele) * Hardware Supported: Titan 60 PCB * Hardware Availability: [Acekeyboard](https://acekeyboard.co/) diff --git a/keyboards/acekeyboard/titan60/titan60.h b/keyboards/acekeyboard/titan60/titan60.h index 219a28a8b4..99b42fe190 100644 --- a/keyboards/acekeyboard/titan60/titan60.h +++ b/keyboards/acekeyboard/titan60/titan60.h @@ -1,5 +1,5 @@ /* -Copyright 2020 MechMerlin +Copyright 2021 keebnewb This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -21,89 +21,134 @@ along with this program. If not, see . #define ___ KC_NO - -#define LAYOUT_all_ansi_std( \ - k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k2c, \ - k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \ - k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \ - k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k43, \ - k40, k41, k42, k44, k46, k48, k4a, k4d, k4b, k4c, k49 \ -){ \ - { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \ - { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d }, \ - { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d }, \ - { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, ___, ___ }, \ - { k40, k41, k42, k43, k44, ___, k46, ___, k48, k49, k4a, k4b, k4c, k4d } \ -} - -#define LAYOUT_all_ansi_2u_lshift( \ - k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k2c, \ - k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \ - k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \ - k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k47, k3c, k43, \ - k40, k41, k42, k44, k46, k48, k4a, k4d, k4b, k4c, k49 \ -){ \ - { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \ - { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d }, \ - { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d }, \ - { k30, ___, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, ___, ___ }, \ - { k40, k41, k42, k43, k44, ___, k46, k47, k48, k49, k4a, k4b, k4c, k4d } \ -} - #define LAYOUT_60_ansi( \ - k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \ - k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \ - k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \ - k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \ - k40, k41, k42, k46, k4a, k4b, k4c, k4d \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \ + k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \ + k40, k41, k42, k46, k4a, k4b, k4c, k4d \ ){ \ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d }, \ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, ___, k2d }, \ - { k30, ___, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, ___, ___ }, \ + { k30, ___, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, ___ }, \ { k40, k41, k42, ___, ___, ___, k46, ___, ___, ___, k4a, k4b, k4c, k4d } \ } -#define LAYOUT_60_ansi_tsangan( \ - k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k2c, \ - k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \ - k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \ - k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k43, \ - k40, k41, k42, k46, k4b, k4c, k4d \ -){ \ - { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \ - { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d }, \ - { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d }, \ - { k30, ___, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, ___, ___ }, \ - { k40, k41, k42, k43, ___, ___, k46, ___, ___, ___, ___, k4b, k4c, k4d } \ -} - -#define LAYOUT_60_ansi_split_bs_rshift( \ +// ANSI with all split options +#define LAYOUT_60_ansi_split( \ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k2c, \ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \ - k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k43, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k43, \ k40, k41, k42, k46, k4a, k4b, k4c, k4d \ ){ \ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d }, \ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d }, \ - { k30, ___, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, ___, ___ }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, ___ }, \ { k40, k41, k42, k43, ___, ___, k46, ___, ___, ___, k4a, k4b, k4c, k4d } \ } -#define LAYOUT_60_ansi_split_spacebar( \ - k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \ - k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \ - k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \ - k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \ - k40, k41, k42, k44, k46, k48, k4a, k4b, k4c, k4d \ +#define LAYOUT_60_iso( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k2d, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k1d, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \ + k40, k41, k42, k46, k4a, k4b, k4c, k4d \ ){ \ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d }, \ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, ___, k2d }, \ - { k30, ___, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, ___, ___ }, \ - { k40, k41, k42, ___, k44, ___, k46, ___, k48, ___, k4a, k4b, k4c, k4d } \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, ___ }, \ + { k40, k41, k42, ___, ___, ___, k46, ___, ___, ___, k4a, k4b, k4c, k4d } \ } +// ISO with all split options +#define LAYOUT_60_iso_split( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k2c, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k2d, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k1d, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k43, \ + k40, k41, k42, k46, k4a, k4b, k4c, k4d \ +){ \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, ___ }, \ + { k40, k41, k42, k43, ___, ___, k46, ___, ___, ___, k4a, k4b, k4c, k4d } \ +} +// Tsangan +#define LAYOUT_60_tsangan( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k2c, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \ + k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k43, \ + k40, k41, k42, k46, k4b, k4c, k4d \ +){ \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d }, \ + { k30, ___, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, ___ }, \ + { k40, k41, k42, k43, ___, ___, k46, ___, ___, ___, ___, k4b, k4c, k4d } \ +} + +// Tsangan with split left shift +#define LAYOUT_60_tsangan_split( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k2c, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k43, \ + k40, k41, k42, k46, k4b, k4c, k4d \ +){ \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, ___ }, \ + { k40, k41, k42, k43, ___, ___, k46, ___, ___, ___, ___, k4b, k4c, k4d } \ +} + +#define LAYOUT_60_utilitarian( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \ + k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3c, k43, \ + k40, k41, k42, k46, k4a, k4b, k49, k4c, k4d \ +){ \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, ___, k2d }, \ + { k30, ___, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d }, \ + { k40, k41, k42, k43, ___, ___, k46, ___, ___, k49, k4a, k4b, k4c, k4d } \ +} + +// Utilitarian with split spacebar and split backspace +#define LAYOUT_60_utilitarian_split( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k2c, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \ + k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3c, k43, \ + k40, k41, k42, k44, k46, k48, k4a, k4b, k49, k4c, k4d \ +){ \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d }, \ + { k30, ___, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d }, \ + { k40, k41, k42, k43, k44, ___, k46, ___, k48, k49, k4a, k4b, k4c, k4d } \ +} + +// Utilitarian with ISO enter, split spacebar and split backspace +#define LAYOUT_60_utilitarian_iso_split( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k2c, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k2d, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k1d, \ + k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3c, k43, \ + k40, k41, k42, k44, k46, k48, k4a, k4b, k49, k4c, k4d \ +){ \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d }, \ + { k30, ___, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d }, \ + { k40, k41, k42, k43, k44, ___, k46, ___, k48, k49, k4a, k4b, k4c, k4d } \ +} From fc52b43592abd0f6b82e54474adb59adb893b858 Mon Sep 17 00:00:00 2001 From: Juno Nguyen Date: Thu, 13 May 2021 08:18:09 +0800 Subject: [PATCH 341/613] [Keymap] Update: layout/community/ortho_4x12/junonum (#12643) --- layouts/community/ortho_4x12/junonum/keymap.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/layouts/community/ortho_4x12/junonum/keymap.c b/layouts/community/ortho_4x12/junonum/keymap.c index 76e40326b9..67f7efde45 100644 --- a/layouts/community/ortho_4x12/junonum/keymap.c +++ b/layouts/community/ortho_4x12/junonum/keymap.c @@ -97,15 +97,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_ENT , - XXXXXXX, KC_LCTL, KC_LALT, KC_LGUI, DPADNUM, KC_SPC, KC_SPC, LOWER, DP_OFF, KC_LEFT, KC_DOWN, KC_RGHT + XXXXXXX, KC_LCTL, KC_LALT, KC_LGUI, DPADNUM, KC_SPC, KC_SPC, DPADNUM, DP_OFF, KC_LEFT, KC_DOWN, KC_RGHT ), // Extended numeric layer for FPS weapon switching and StarCraft group control [_DPADNUM] = LAYOUT_ortho_4x12( - KC_LGUI, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, XXXXXXX, XXXXXXX, DP_OFF, XXXXXXX, - KC_LCTL, _______, KC_8, KC_9, KC_0, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_SLSH, - KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, - _______, _______, _______, _______, DPADNUM, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + KC_LGUI, KC_1, KC_2, KC_3, KC_4, KC_5, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DP_OFF, XXXXXXX, + KC_LCTL, _______, KC_6, KC_7, KC_8, KC_9, KC_0, XXXXXXX, KC_F10, KC_F11, KC_F12, XXXXXXX, + KC_LSFT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_SLSH, XXXXXXX, + _______, _______, _______, _______, DPADNUM, XXXXXXX, XXXXXXX, DPADNUM, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX ) }; From 0bada398dfba61c93ee5dbec0aeb92b8af0f45a4 Mon Sep 17 00:00:00 2001 From: nut1414 Date: Thu, 13 May 2021 08:27:16 +0700 Subject: [PATCH 342/613] [Keyboard] Add np12 (#12703) Co-authored-by: Ryan --- keyboards/np12/config.h | 45 ++++++++++++++++++ keyboards/np12/info.json | 26 ++++++++++ keyboards/np12/keymaps/default/keymap.c | 60 ++++++++++++++++++++++++ keyboards/np12/keymaps/default/readme.md | 6 +++ keyboards/np12/keymaps/via/keymap.c | 60 ++++++++++++++++++++++++ keyboards/np12/keymaps/via/rules.mk | 1 + keyboards/np12/np12.c | 17 +++++++ keyboards/np12/np12.h | 31 ++++++++++++ keyboards/np12/readme.md | 24 ++++++++++ keyboards/np12/rules.mk | 23 +++++++++ 10 files changed, 293 insertions(+) create mode 100644 keyboards/np12/config.h create mode 100644 keyboards/np12/info.json create mode 100644 keyboards/np12/keymaps/default/keymap.c create mode 100644 keyboards/np12/keymaps/default/readme.md create mode 100644 keyboards/np12/keymaps/via/keymap.c create mode 100644 keyboards/np12/keymaps/via/rules.mk create mode 100644 keyboards/np12/np12.c create mode 100644 keyboards/np12/np12.h create mode 100644 keyboards/np12/readme.md create mode 100644 keyboards/np12/rules.mk diff --git a/keyboards/np12/config.h b/keyboards/np12/config.h new file mode 100644 index 0000000000..b330c29feb --- /dev/null +++ b/keyboards/np12/config.h @@ -0,0 +1,45 @@ + /* Copyright 2021 nut1414 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + + + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xA4A4 +#define PRODUCT_ID 0x4401 +#define DEVICE_VER 0x0001 +#define MANUFACTURER nut1414 +#define PRODUCT np12 + + + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 5 + +#define MATRIX_ROW_PINS { D7, E6, B4, F7 } +#define MATRIX_COL_PINS { D1, D0, D4, C6, F6 } +#define UNUSED_PINS + + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +#define ENCODERS_PAD_A { F4 } +#define ENCODERS_PAD_B { F5 } + + diff --git a/keyboards/np12/info.json b/keyboards/np12/info.json new file mode 100644 index 0000000000..2bb513d845 --- /dev/null +++ b/keyboards/np12/info.json @@ -0,0 +1,26 @@ +{ + "keyboard_name": "np12", + "url": "https://github.com/nut1414/np12", + "maintainer": "nut1414", + "width": 4, + "height": 4, + "layouts": { + "LAYOUT": { + "layout": [ + { "label": "k34", "x": 3, "y": 0 }, + { "label": "k00", "x": 0, "y": 1 }, + { "label": "k01", "x": 1, "y": 1 }, + { "label": "k02", "x": 2, "y": 1 }, + { "label": "k03", "x": 3, "y": 1 }, + { "label": "k10", "x": 0, "y": 2 }, + { "label": "k11", "x": 1, "y": 2 }, + { "label": "k12", "x": 2, "y": 2 }, + { "label": "k13", "x": 3, "y": 2 }, + { "label": "k20", "x": 0, "y": 3 }, + { "label": "k21", "x": 1, "y": 3 }, + { "label": "k22", "x": 2, "y": 3 }, + { "label": "k23", "x": 3, "y": 3 } + ] + } + } +} \ No newline at end of file diff --git a/keyboards/np12/keymaps/default/keymap.c b/keyboards/np12/keymaps/default/keymap.c new file mode 100644 index 0000000000..4a02b1d3ad --- /dev/null +++ b/keyboards/np12/keymaps/default/keymap.c @@ -0,0 +1,60 @@ + /* Copyright 2021 nut1414 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + + [0] = LAYOUT( + KC_MPLY, + KC_9, KC_6, KC_3, KC_PENT, + KC_8, KC_5, KC_2, KC_BSPC, + KC_7, KC_4, KC_1, KC_0), + + [1] = LAYOUT( + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + [2] = LAYOUT( + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + [3] = LAYOUT( + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + + +}; + +void encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + if (clockwise) { + tap_code(KC_AUDIO_VOL_UP); + } else { + tap_code(KC_AUDIO_VOL_DOWN); + } + } +} + + diff --git a/keyboards/np12/keymaps/default/readme.md b/keyboards/np12/keymaps/default/readme.md new file mode 100644 index 0000000000..d8c4c20f9e --- /dev/null +++ b/keyboards/np12/keymaps/default/readme.md @@ -0,0 +1,6 @@ +# np12 Layout +![np12 layout](https://i.imgur.com/pxOYYil.png) + +This is the default layout for np12. The top-right key is for the encoder pushbutton. + + diff --git a/keyboards/np12/keymaps/via/keymap.c b/keyboards/np12/keymaps/via/keymap.c new file mode 100644 index 0000000000..4a02b1d3ad --- /dev/null +++ b/keyboards/np12/keymaps/via/keymap.c @@ -0,0 +1,60 @@ + /* Copyright 2021 nut1414 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + + [0] = LAYOUT( + KC_MPLY, + KC_9, KC_6, KC_3, KC_PENT, + KC_8, KC_5, KC_2, KC_BSPC, + KC_7, KC_4, KC_1, KC_0), + + [1] = LAYOUT( + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + [2] = LAYOUT( + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + [3] = LAYOUT( + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + + +}; + +void encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + if (clockwise) { + tap_code(KC_AUDIO_VOL_UP); + } else { + tap_code(KC_AUDIO_VOL_DOWN); + } + } +} + + diff --git a/keyboards/np12/keymaps/via/rules.mk b/keyboards/np12/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/np12/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/np12/np12.c b/keyboards/np12/np12.c new file mode 100644 index 0000000000..062bd9a833 --- /dev/null +++ b/keyboards/np12/np12.c @@ -0,0 +1,17 @@ + /* Copyright 2021 nut1414 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "np12.h" diff --git a/keyboards/np12/np12.h b/keyboards/np12/np12.h new file mode 100644 index 0000000000..ee82786d83 --- /dev/null +++ b/keyboards/np12/np12.h @@ -0,0 +1,31 @@ + /* Copyright 2021 nut1414 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT( \ + k34, \ + k00, k01, k02, k03, \ + k10, k11, k12, k13, \ + k20, k21, k22, k23 \ +) { \ + { k00, k01, k02, k03, KC_NO}, \ + { k10, k11, k12, k13, KC_NO}, \ + { k20, k21, k22, k23, KC_NO}, \ + { KC_NO, KC_NO, KC_NO, KC_NO, k34 } \ +} diff --git a/keyboards/np12/readme.md b/keyboards/np12/readme.md new file mode 100644 index 0000000000..2b33920a61 --- /dev/null +++ b/keyboards/np12/readme.md @@ -0,0 +1,24 @@ +# np12 + +![np12](https://i.imgur.com/gci7qqZh.jpg) + +![np12 pcb](https://i.imgur.com/DIIvW95h.jpg) + +Square-shaped 12 keys keypad with an encoder. + +* Keyboard Maintainer: [nut1414](https://github.com/nut1414) +* Hardware Supported: np12 keypad +* Hardware Availability: Open Source https://github.com/nut1414/np12 + + +Make example for this keypad (after setting up your build environment): + + make np12:default + +Flashing example for this keyboard: + + make np12:default:flash + +To enter bootloader mode, press the reset button located on the left of the encoder. + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/np12/rules.mk b/keyboards/np12/rules.mk new file mode 100644 index 0000000000..8b8bacdcf5 --- /dev/null +++ b/keyboards/np12/rules.mk @@ -0,0 +1,23 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +ENCODER_ENABLE = yes From 17864b249fbbc1e72bce6ef7115b5cb2e3a81d7c Mon Sep 17 00:00:00 2001 From: yiancar Date: Thu, 13 May 2021 02:31:53 +0100 Subject: [PATCH 343/613] [Keyboard] Seigaiha (#12791) Co-authored-by: Ryan --- keyboards/barleycorn/readme.md | 2 +- keyboards/seigaiha/config.h | 105 ++++++++++++++++ keyboards/seigaiha/info.json | 83 +++++++++++++ keyboards/seigaiha/keymaps/default/keymap.c | 32 +++++ keyboards/seigaiha/keymaps/default/readme.md | 5 + keyboards/seigaiha/keymaps/via/keymap.c | 48 ++++++++ keyboards/seigaiha/keymaps/via/readme.md | 5 + keyboards/seigaiha/keymaps/via/rules.mk | 1 + keyboards/seigaiha/matrix.c | 123 +++++++++++++++++++ keyboards/seigaiha/readme.md | 23 ++++ keyboards/seigaiha/rules.mk | 29 +++++ keyboards/seigaiha/seigaiha.c | 45 +++++++ keyboards/seigaiha/seigaiha.h | 35 ++++++ 13 files changed, 535 insertions(+), 1 deletion(-) create mode 100644 keyboards/seigaiha/config.h create mode 100644 keyboards/seigaiha/info.json create mode 100644 keyboards/seigaiha/keymaps/default/keymap.c create mode 100644 keyboards/seigaiha/keymaps/default/readme.md create mode 100644 keyboards/seigaiha/keymaps/via/keymap.c create mode 100644 keyboards/seigaiha/keymaps/via/readme.md create mode 100644 keyboards/seigaiha/keymaps/via/rules.mk create mode 100644 keyboards/seigaiha/matrix.c create mode 100644 keyboards/seigaiha/readme.md create mode 100644 keyboards/seigaiha/rules.mk create mode 100644 keyboards/seigaiha/seigaiha.c create mode 100644 keyboards/seigaiha/seigaiha.h diff --git a/keyboards/barleycorn/readme.md b/keyboards/barleycorn/readme.md index 775d259681..dd96c69e9a 100644 --- a/keyboards/barleycorn/readme.md +++ b/keyboards/barleycorn/readme.md @@ -5,7 +5,7 @@ An f-row less compact 1800 kit with only through hole components. * Keyboard Maintainer: [Yiancar](http://yiancar-designs.com/) and on [GitHub](https://github.com/yiancar) -* Hardware Supported: ATMEGA328p with vusb [PCB](https://github.com/yiancar/gingham_pcb) +* Hardware Supported: ATMEGA328p with vusb [PCB](https://github.com/yiancar/barleycorn_pcb) * Hardware Availability: https://mykeyboard.eu/, https://novelkeys.xyz Make example for this keyboard (after setting up your build environment): diff --git a/keyboards/seigaiha/config.h b/keyboards/seigaiha/config.h new file mode 100644 index 0000000000..5e87bd6f83 --- /dev/null +++ b/keyboards/seigaiha/config.h @@ -0,0 +1,105 @@ +/* +Copyright 2021 Yiancar-Designs + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +#define VENDOR_ID 0x8968 +#define PRODUCT_ID 0x4750 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Yiancar-Designs +#define PRODUCT Seigaiha + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ + +/* A Custom matrix.c is used to poll the port expander D5 shows that the pins are hardwired there */ +#define MATRIX_ROW_PINS { C0, B4, B3, B2, B5 } +#define MATRIX_COL_PINS { B0, D7, D6, D4, B1, C1, C2, D1, C3, D0, D5, D5, D5, D5, D5 } +#define UNUSED_PINS +#define PORT_EXPANDER_ADDRESS 0x20 + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +#define USB_MAX_POWER_CONSUMPTION 100 + +#define BOOTMAGIC_LITE_ROW 1 +#define BOOTMAGIC_LITE_COLUMN 0 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is userful for the Windows task manager shortcut (ctrl+shift+esc). + */ +// #define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION diff --git a/keyboards/seigaiha/info.json b/keyboards/seigaiha/info.json new file mode 100644 index 0000000000..bd313313e0 --- /dev/null +++ b/keyboards/seigaiha/info.json @@ -0,0 +1,83 @@ +{ + "keyboard_name": "Seigaiha", + "url": "www.yiancar-designs.com", + "maintainer": "Yiancar-Designs", + "width": 18.25, + "height": 5, + "layouts": { + "LAYOUT_alice_split_bs": { + "layout": [ + {"x":0, "y":0}, + {"x":1.25, "y":0}, + {"x":2.25, "y":0}, + {"x":3.25, "y":0}, + {"x":4.25, "y":0}, + {"x":5.25, "y":0}, + {"x":6.25, "y":0}, + {"x":7.25, "y":0}, + {"x":10.25, "y":0}, + {"x":11.25, "y":0}, + {"x":12.25, "y":0}, + {"x":13.25, "y":0}, + {"x":14.25, "y":0}, + {"x":15.25, "y":0}, + {"x":16.25, "y":0}, + {"x":17.25, "y":0}, + + {"x":0, "y":1}, + {"x":1.25, "y":1, "w":1.5}, + {"x":2.75, "y":1}, + {"x":3.75, "y":1}, + {"x":4.75, "y":1}, + {"x":5.75, "y":1}, + {"x":6.75, "y":1}, + {"x":9.75, "y":1}, + {"x":10.75, "y":1}, + {"x":11.75, "y":1}, + {"x":12.75, "y":1}, + {"x":13.75, "y":1}, + {"x":14.75, "y":1}, + {"x":15.75, "y":1}, + {"x":16.75, "y":1, "w":1.5}, + + {"x":0, "y":2}, + {"x":1.25, "y":2, "w":1.75}, + {"x":3, "y":2}, + {"x":4, "y":2}, + {"x":5, "y":2}, + {"x":6, "y":2}, + {"x":7, "y":2}, + {"x":10, "y":2}, + {"x":11, "y":2}, + {"x":12, "y":2}, + {"x":13, "y":2}, + {"x":14, "y":2}, + {"x":15, "y":2}, + {"x":16, "y":2, "w":2.25}, + + {"x":1.25, "y":3, "w":2.25}, + {"x":3.5, "y":3}, + {"x":4.5, "y":3}, + {"x":5.5, "y":3}, + {"x":6.5, "y":3}, + {"x":7.5, "y":3}, + {"x":9.5, "y":3}, + {"x":10.5, "y":3}, + {"x":11.5, "y":3}, + {"x":12.5, "y":3}, + {"x":13.5, "y":3}, + {"x":14.5, "y":3}, + {"x":15.5, "y":3, "w":1.75}, + {"x":17.25, "y":3}, + + {"x":1.25, "y":4, "w":1.5}, + {"x":4.25, "y":4, "w":1.5}, + {"x":5.75, "y":4, "w":2}, + {"x":7.75, "y":4, "w":1.25}, + {"x":9.5, "y":4, "w":2.75}, + {"x":12.25, "y":4, "w":1.5}, + {"x":16.75, "y":4, "w":1.5} + ] + } + } +} diff --git a/keyboards/seigaiha/keymaps/default/keymap.c b/keyboards/seigaiha/keymaps/default/keymap.c new file mode 100644 index 0000000000..607d85a132 --- /dev/null +++ b/keyboards/seigaiha/keymaps/default/keymap.c @@ -0,0 +1,32 @@ +/* Copyright 2021 Yiancar-Designs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT_alice_split_bs( /* Base */ + KC_ESC, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL, KC_BSPC, + KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_PGDN, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LALT, KC_SPC, KC_LGUI, KC_SPC, KC_RALT, KC_RCTL), + +[1] = LAYOUT_alice_split_bs( /* FN */ + KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_LEFT, KC_RGHT, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_DOWN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; diff --git a/keyboards/seigaiha/keymaps/default/readme.md b/keyboards/seigaiha/keymaps/default/readme.md new file mode 100644 index 0000000000..dceb6080e4 --- /dev/null +++ b/keyboards/seigaiha/keymaps/default/readme.md @@ -0,0 +1,5 @@ +# The default keymap for Seigaiha with VIA disabled + +![Layer 0](https://i.imgur.com/wO8lfpih.png) + +![Layer 1](https://i.imgur.com/4Q0Rk2Vh.png) diff --git a/keyboards/seigaiha/keymaps/via/keymap.c b/keyboards/seigaiha/keymaps/via/keymap.c new file mode 100644 index 0000000000..00f1b01501 --- /dev/null +++ b/keyboards/seigaiha/keymaps/via/keymap.c @@ -0,0 +1,48 @@ +/* Copyright 2021 Yiancar-Designs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// This keymaps is used for VIA, it reflects the default keymap. + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT_alice_split_bs( /* Base */ + KC_ESC, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL, KC_BSPC, + KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_PGDN, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LALT, KC_SPC, KC_LGUI, KC_SPC, KC_RALT, KC_RCTL), + +[1] = LAYOUT_alice_split_bs( /* FN */ + KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_LEFT, KC_RGHT, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_DOWN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +[2] = LAYOUT_alice_split_bs( /* Empty for dynamic keymaps */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +[3] = LAYOUT_alice_split_bs( /* Empty for dynamic keymaps */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; diff --git a/keyboards/seigaiha/keymaps/via/readme.md b/keyboards/seigaiha/keymaps/via/readme.md new file mode 100644 index 0000000000..8f626d49e3 --- /dev/null +++ b/keyboards/seigaiha/keymaps/via/readme.md @@ -0,0 +1,5 @@ +# The default keymap for Seigaiha with VIA enabled + +![Layer 0](https://i.imgur.com/wO8lfpih.png) + +![Layer 1](https://i.imgur.com/4Q0Rk2Vh.png) diff --git a/keyboards/seigaiha/keymaps/via/rules.mk b/keyboards/seigaiha/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/seigaiha/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/seigaiha/matrix.c b/keyboards/seigaiha/matrix.c new file mode 100644 index 0000000000..212b8015f0 --- /dev/null +++ b/keyboards/seigaiha/matrix.c @@ -0,0 +1,123 @@ +/* +Copyright 2012-2020 Jun Wako, Jack Humbert, Yiancar-Designs + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include +#include +#include "wait.h" +#include "quantum.h" +#include "i2c_master.h" + +static const pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS; +static const pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS; + +static void unselect_rows(void) { + for(uint8_t x = 0; x < MATRIX_ROWS; x++) { + setPinInputHigh(row_pins[x]); + } +} + +static void select_row(uint8_t row) { + setPinOutput(row_pins[row]); + writePinLow(row_pins[row]); +} + +static void unselect_row(uint8_t row) { + setPinInputHigh(row_pins[row]); +} + +static void init_pins(void) { + unselect_rows(); + // Set I/O + uint8_t send_data = 0x1F; + i2c_writeReg((PORT_EXPANDER_ADDRESS << 1), 0x00, &send_data, 1, 20); + // Set Pull-up + i2c_writeReg((PORT_EXPANDER_ADDRESS << 1), 0x06, &send_data, 1, 20); + + for (uint8_t x = 0; x < MATRIX_COLS; x++) { + if ( x < 10 ) { + setPinInputHigh(col_pins[x]); + } + } +} + +void matrix_init_custom(void) { + // TODO: initialize hardware here + // Initialize I2C + i2c_init(); + + // initialize key pins + init_pins(); + wait_ms(50); +} + +static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) { + // Store last value of row prior to reading + matrix_row_t last_row_value = current_matrix[current_row]; + + // Clear data in matrix row + current_matrix[current_row] = 0; + + // Select row and wait for row selecton to stabilize + select_row(current_row); + matrix_io_delay(); + + uint8_t port_expander_col_buffer; + i2c_readReg((PORT_EXPANDER_ADDRESS << 1), 0x09, &port_expander_col_buffer, 1, 20); + + // For each col... + for(uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) { + uint8_t pin_state; + // Select the col pin to read (active low) + switch (col_index) { + case 10 : + pin_state = port_expander_col_buffer & (1 << 0); + break; + case 11 : + pin_state = port_expander_col_buffer & (1 << 1); + break; + case 12 : + pin_state = port_expander_col_buffer & (1 << 2); + break; + case 13 : + pin_state = port_expander_col_buffer & (1 << 3); + break; + case 14 : + pin_state = port_expander_col_buffer & (1 << 4); + break; + default : + pin_state = readPin(col_pins[col_index]); + } + + // Populate the matrix row with the state of the col pin + current_matrix[current_row] |= pin_state ? 0 : (MATRIX_ROW_SHIFTER << col_index); + } + + // Unselect row + unselect_row(current_row); + + return (last_row_value != current_matrix[current_row]); +} + +bool matrix_scan_custom(matrix_row_t current_matrix[]) { + bool matrix_has_changed = false; + + // Set row, read cols + for (uint8_t current_row = 0; current_row < MATRIX_ROWS; current_row++) { + matrix_has_changed |= read_cols_on_row(current_matrix, current_row); + } + + return matrix_has_changed; +} diff --git a/keyboards/seigaiha/readme.md b/keyboards/seigaiha/readme.md new file mode 100644 index 0000000000..fb0e8571ae --- /dev/null +++ b/keyboards/seigaiha/readme.md @@ -0,0 +1,23 @@ +# Seigaiha + +![Seigaiha](https://i.imgur.com/GCGyOmph.jpg) + +An alice layout kit with only through hole components. + +* Keyboard Maintainer: [Yiancar](http://yiancar-designs.com/) and on [GitHub](https://github.com/yiancar) +* Hardware Supported: ATMEGA328p with vusb [PCB](https://github.com/yiancar/seigaiha_pcb) +* Hardware Availability: https://mykeyboard.eu/, https://novelkeys.xyz + +Make example for this keyboard (after setting up your build environment): + + make seigaiha:default + +Flashing example for this keyboard: + + make seigaiha:default:flash + +Bootloader: +use usbasploader from HSGW's repository. +https://github.com/hsgw/USBaspLoader/tree/plaid + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/seigaiha/rules.mk b/keyboards/seigaiha/rules.mk new file mode 100644 index 0000000000..f19a8ec12e --- /dev/null +++ b/keyboards/seigaiha/rules.mk @@ -0,0 +1,29 @@ +# MCU name +MCU = atmega328p + +# Bootloader selection +BOOTLOADER = USBasp + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output + +CUSTOM_MATRIX = lite + +LAYOUTS = alice_split_bs + +SRC += matrix.c +QUANTUM_LIB_SRC += i2c_master.c diff --git a/keyboards/seigaiha/seigaiha.c b/keyboards/seigaiha/seigaiha.c new file mode 100644 index 0000000000..911034eb56 --- /dev/null +++ b/keyboards/seigaiha/seigaiha.c @@ -0,0 +1,45 @@ +/* Copyright 2021 Yiancar-Designs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "seigaiha.h" +#include "i2c_master.h" + +// There is no need to initialize the I/O it is done in matrix.c + +uint8_t send_data = 0x00; + +bool led_update_kb(led_t led_state) { + bool res = led_update_user(led_state); + if(res) { + if (led_state.caps_lock){ + send_data |= 1 << 5; + } else { + send_data &= ~(1 << 5); + } + i2c_writeReg((PORT_EXPANDER_ADDRESS << 1), 0x0A, &send_data, 1, 20); + } + return res; +} + +__attribute__((weak)) layer_state_t layer_state_set_user(layer_state_t state) { + if (IS_LAYER_ON_STATE(state, 1)) { + send_data |= 1 << 6; + } + if (IS_LAYER_OFF_STATE(state, 1)) { + send_data &= ~(1 << 6); + } + // Data is send to the port expander during led_update_kb as it runs continuously. + return state; +} diff --git a/keyboards/seigaiha/seigaiha.h b/keyboards/seigaiha/seigaiha.h new file mode 100644 index 0000000000..e05c6f5242 --- /dev/null +++ b/keyboards/seigaiha/seigaiha.h @@ -0,0 +1,35 @@ +/* Copyright 2021 Yiancar-Designs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define XXX KC_NO + +#include "quantum.h" + +#define LAYOUT_alice_split_bs( \ + K10, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \ + K20, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \ + K30, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, \ + K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ + K41, K43, K45, K46, K48, K4A, K4E \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, XXX, K2E }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \ + { XXX, K41, XXX, K43, XXX, K45, K46, XXX, K48, XXX, K4A, XXX, XXX, XXX, K4E } \ +} From 9633f9a60f9b987c09edf28517a093a640a25d03 Mon Sep 17 00:00:00 2001 From: Dmitry Mikhirev Date: Thu, 13 May 2021 04:54:15 +0300 Subject: [PATCH 344/613] [Keyboard] x-bows nature: fix led order and colors (#12871) --- keyboards/xbows/nature/nature.c | 174 ++++++++++++++++---------------- 1 file changed, 87 insertions(+), 87 deletions(-) diff --git a/keyboards/xbows/nature/nature.c b/keyboards/xbows/nature/nature.c index 911d892ce8..4d2573a559 100644 --- a/keyboards/xbows/nature/nature.c +++ b/keyboards/xbows/nature/nature.c @@ -17,99 +17,99 @@ #ifdef RGB_MATRIX_ENABLE const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { - {0, C3_3, C2_3, C1_3}, // L01 - {0, C3_4, C2_4, C1_4}, // L02 - {0, C3_5, C2_5, C1_5}, // L03 - {0, C3_6, C2_6, C1_6}, // L04 - {0, C3_7, C2_7, C1_7}, // L05 - {0, C3_8, C2_8, C1_8}, // L06 - {1, C3_3, C2_3, C1_3}, // L07 - {1, C3_4, C2_4, C1_4}, // L08 - {1, C3_5, C2_5, C1_5}, // L09 - {1, C3_6, C2_6, C1_6}, // L10 - {1, C3_7, C2_7, C1_7}, // L11 - {1, C3_8, C2_8, C1_8}, // L12 - {2, C3_3, C2_3, C1_3}, // L13 - {2, C3_4, C2_4, C1_4}, // L14 - {2, C3_5, C2_5, C1_5}, // L15 + {0, C1_3, C2_3, C3_3}, // L01 + {0, C1_4, C2_4, C3_4}, // L02 + {0, C1_5, C2_5, C3_5}, // L03 + {0, C1_6, C2_6, C3_6}, // L04 + {0, C1_7, C2_7, C3_7}, // L05 + {0, C1_8, C2_8, C3_8}, // L06 + {1, C1_3, C2_3, C3_3}, // L07 + {1, C1_4, C2_4, C3_4}, // L08 + {1, C1_5, C2_5, C3_5}, // L09 + {1, C1_6, C2_6, C3_6}, // L10 + {1, C1_7, C2_7, C3_7}, // L11 + {1, C1_8, C2_8, C3_8}, // L12 + {2, C1_3, C2_3, C3_3}, // L13 + {2, C1_4, C2_4, C3_4}, // L14 + {2, C1_5, C2_5, C3_5}, // L15 - {0, C4_1, C5_1, C6_1}, // L16 - {0, C4_2, C5_2, C6_2}, // L17 - {0, C4_3, C5_3, C6_3}, // L18 - {0, C4_6, C5_6, C6_6}, // L19 - {0, C4_7, C5_7, C6_7}, // L20 - {0, C4_8, C5_8, C6_8}, // L21 - {1, C4_1, C5_1, C6_1}, // L87 - {1, C4_2, C5_2, C6_2}, // L22 - {1, C4_3, C5_3, C6_3}, // L23 - {1, C4_6, C5_6, C6_6}, // L24 - {1, C4_7, C5_7, C6_7}, // L25 - {1, C4_8, C5_8, C6_8}, // L26 - {2, C4_1, C5_1, C6_1}, // L27 - {2, C4_2, C5_2, C6_2}, // L28 - {2, C4_3, C5_3, C6_3}, // L29 + {0, C6_1, C5_1, C4_1}, // L16 + {0, C6_2, C5_2, C4_2}, // L17 + {0, C6_3, C5_3, C4_3}, // L18 + {0, C6_6, C5_6, C4_6}, // L19 + {0, C6_7, C5_7, C4_7}, // L20 + {0, C6_8, C5_8, C4_8}, // L21 + {1, C6_1, C5_1, C4_1}, // L87 + {1, C6_2, C5_2, C4_2}, // L22 + {1, C6_3, C5_3, C4_3}, // L23 + {1, C6_6, C5_6, C4_6}, // L24 + {1, C6_7, C5_7, C4_7}, // L25 + {1, C6_8, C5_8, C4_8}, // L26 + {2, C6_1, C5_1, C4_1}, // L27 + {2, C6_2, C5_2, C4_2}, // L28 + {2, C6_3, C5_3, C4_3}, // L29 - {0, C7_1, C8_1, C9_1}, // L30 - {0, C7_2, C8_2, C9_2}, // L31 - {0, C7_3, C8_3, C9_3}, // L32 - {0, C7_4, C8_4, C9_4}, // L33 - {0, C7_5, C8_5, C9_5}, // L34 - {0, C7_6, C8_6, C9_6}, // L35 - {2, C4_8, C5_8, C6_8}, // L44 - {1, C7_1, C8_1, C9_1}, // L36 - {1, C7_2, C8_2, C9_2}, // L37 - {1, C7_3, C8_3, C9_3}, // L38 - {1, C7_4, C8_4, C9_4}, // L39 - {1, C7_5, C8_5, C9_5}, // L40 - {1, C7_6, C8_6, C9_6}, // L41 - {2, C4_6, C5_6, C6_6}, // L42 - {2, C4_7, C5_7, C6_7}, // L43 + {0, C9_1, C8_1, C7_1}, // L30 + {0, C9_2, C8_2, C7_2}, // L31 + {0, C9_3, C8_3, C7_3}, // L32 + {0, C9_4, C8_4, C7_4}, // L33 + {0, C9_5, C8_5, C7_5}, // L34 + {0, C9_6, C8_6, C7_6}, // L35 + {1, C9_1, C8_1, C7_1}, // L36 + {1, C9_2, C8_2, C7_2}, // L37 + {1, C9_3, C8_3, C7_3}, // L38 + {1, C9_4, C8_4, C7_4}, // L39 + {1, C9_5, C8_5, C7_5}, // L40 + {1, C9_6, C8_6, C7_6}, // L41 + {2, C6_6, C5_6, C4_6}, // L42 + {2, C6_7, C5_7, C4_7}, // L43 + {2, C6_8, C5_8, C4_8}, // L44 - {0, C3_11, C2_11, C1_11}, // L45 - {0, C3_12, C2_12, C1_12}, // L46 - {0, C3_13, C2_13, C1_13}, // L47 - {0, C3_14, C2_14, C1_14}, // L48 - {0, C3_15, C2_15, C1_15}, // L49 - {0, C3_16, C2_16, C1_16}, // L50 - {1, C7_9, C8_9, C9_9}, // L51 - {1, C3_11, C2_11, C1_11}, // L52 - {1, C3_12, C2_12, C1_12}, // L53 - {1, C3_13, C2_13, C1_13}, // L54 - {1, C3_14, C2_14, C1_14}, // L55 - {1, C3_15, C2_15, C1_15}, // L56 - {1, C3_16, C2_16, C1_16}, // L57 - {2, C7_4, C8_4, C9_4}, // L58 - {2, C7_5, C8_5, C9_5}, // L59 + {0, C1_11, C2_11, C3_11}, // L45 + {0, C1_12, C2_12, C3_12}, // L46 + {0, C1_13, C2_13, C3_13}, // L47 + {0, C1_14, C2_14, C3_14}, // L48 + {0, C1_15, C2_15, C3_15}, // L49 + {0, C1_16, C2_16, C3_16}, // L50 + {1, C9_9, C8_9, C7_9}, // L51 + {1, C1_11, C2_11, C3_11}, // L52 + {1, C1_12, C2_12, C3_12}, // L53 + {1, C1_13, C2_13, C3_13}, // L54 + {1, C1_14, C2_14, C3_14}, // L55 + {1, C1_15, C2_15, C3_15}, // L56 + {1, C1_16, C2_16, C3_16}, // L57 + {2, C9_4, C8_4, C7_4}, // L58 + {2, C9_5, C8_5, C7_5}, // L59 - {0, C4_9, C5_9, C6_9}, // L60 - {0, C4_10, C5_10, C6_10}, // L61 - {0, C4_11, C5_11, C6_11}, // L62 - {0, C4_14, C5_14, C6_14}, // L63 - {0, C4_15, C5_15, C6_15}, // L64 - {0, C4_16, C5_16, C6_16}, // L65 - {1, C7_10, C8_10, C9_10}, // L66 - {1, C4_9, C5_9, C6_9}, // L67 - {1, C4_10, C5_10, C6_10}, // L68 - {1, C4_11, C5_11, C6_11}, // L69 - {1, C4_14, C5_14, C6_14}, // L70 - {1, C4_15, C5_15, C6_15}, // L71 - {1, C4_16, C5_16, C6_16}, // L72 - {2, C7_6, C8_6, C9_6}, // L73 + {0, C6_9, C5_9, C4_9}, // L60 + {0, C6_10, C5_10, C4_10}, // L61 + {0, C6_11, C5_11, C4_11}, // L62 + {0, C6_14, C5_14, C4_14}, // L63 + {0, C6_15, C5_15, C4_15}, // L64 + {0, C6_16, C5_16, C4_16}, // L65 + {1, C9_10, C8_10, C7_10}, // L66 + {1, C6_9, C5_9, C4_9}, // L67 + {1, C6_10, C5_10, C4_10}, // L68 + {1, C6_11, C5_11, C4_11}, // L69 + {1, C6_14, C5_14, C4_14}, // L70 + {1, C6_15, C5_15, C4_15}, // L71 + {1, C6_16, C5_16, C4_16}, // L72 + {2, C9_6, C8_6, C7_6}, // L73 - {0, C7_9, C8_9, C9_9}, // L74 - {0, C7_10, C8_10, C9_10}, // L75 - {0, C7_11, C8_11, C9_11}, // L76 - {0, C7_12, C8_12, C9_12}, // L77 - {0, C7_13, C8_13, C9_13}, // L78 - {0, C7_14, C8_14, C9_14}, // L79 - {1, C7_11, C8_11, C9_11}, // L80 - {1, C7_12, C8_12, C9_12}, // L81 - {1, C7_13, C8_13, C9_13}, // L82 - {1, C7_14, C8_14, C9_14}, // L83 - {2, C3_6, C2_6, C1_6}, // L84 - {2, C3_7, C2_7, C1_7}, // L85 - {2, C3_8, C2_8, C1_8}, // L86 + {0, C9_9, C8_9, C7_9}, // L74 + {0, C9_10, C8_10, C7_10}, // L75 + {0, C9_11, C8_11, C7_11}, // L76 + {0, C9_12, C8_12, C7_12}, // L77 + {0, C9_13, C8_13, C7_13}, // L78 + {0, C9_14, C8_14, C7_14}, // L79 + {1, C9_11, C8_11, C7_11}, // L80 + {1, C9_12, C8_12, C7_12}, // L81 + {1, C9_13, C8_13, C7_13}, // L82 + {1, C9_14, C8_14, C7_14}, // L83 + {2, C1_6, C2_6, C3_6}, // L84 + {2, C1_7, C2_7, C3_7}, // L85 + {2, C1_8, C2_8, C3_8}, // L86 }; led_config_t g_led_config = { { From a2412e3f4c3b17778d4eb72d9fcfcbffa04d1c7b Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Thu, 13 May 2021 12:29:28 +1000 Subject: [PATCH 345/613] Allow for overriding clocks on F4xx. (#12886) --- platforms/chibios/BLACKPILL_STM32_F401/configs/config.h | 9 +++++++-- platforms/chibios/BLACKPILL_STM32_F411/configs/config.h | 9 +++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/platforms/chibios/BLACKPILL_STM32_F401/configs/config.h b/platforms/chibios/BLACKPILL_STM32_F401/configs/config.h index 1c9d9c6126..e181422eba 100644 --- a/platforms/chibios/BLACKPILL_STM32_F401/configs/config.h +++ b/platforms/chibios/BLACKPILL_STM32_F401/configs/config.h @@ -17,8 +17,13 @@ #define BOARD_OTG_NOVBUSSENS 1 -#define STM32_LSECLK 32768U -#define STM32_HSECLK 25000000U +#ifndef STM32_LSECLK +# define STM32_LSECLK 32768U +#endif // STM32_LSECLK + +#ifndef STM32_HSECLK +# define STM32_HSECLK 25000000U +#endif // STM32_HSECLK #ifndef EARLY_INIT_PERFORM_BOOTLOADER_JUMP # define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE diff --git a/platforms/chibios/BLACKPILL_STM32_F411/configs/config.h b/platforms/chibios/BLACKPILL_STM32_F411/configs/config.h index 1c9d9c6126..e181422eba 100644 --- a/platforms/chibios/BLACKPILL_STM32_F411/configs/config.h +++ b/platforms/chibios/BLACKPILL_STM32_F411/configs/config.h @@ -17,8 +17,13 @@ #define BOARD_OTG_NOVBUSSENS 1 -#define STM32_LSECLK 32768U -#define STM32_HSECLK 25000000U +#ifndef STM32_LSECLK +# define STM32_LSECLK 32768U +#endif // STM32_LSECLK + +#ifndef STM32_HSECLK +# define STM32_HSECLK 25000000U +#endif // STM32_HSECLK #ifndef EARLY_INIT_PERFORM_BOOTLOADER_JUMP # define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE From 32b697f5f164528fc8c3e3222f3b81f176d52b39 Mon Sep 17 00:00:00 2001 From: Leon Anavi Date: Thu, 13 May 2021 05:35:55 +0300 Subject: [PATCH 346/613] [Keyboard] ANAVI Macro Pad 2 update readme.md (#12827) Add more details about ANAVI Macro Pad 2 to readme.md. Signed-off-by: Leon Anavi --- keyboards/anavi/macropad2/readme.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/keyboards/anavi/macropad2/readme.md b/keyboards/anavi/macropad2/readme.md index 0ef2fede47..00d96cf8a7 100644 --- a/keyboards/anavi/macropad2/readme.md +++ b/keyboards/anavi/macropad2/readme.md @@ -1,10 +1,16 @@ -# ANAVI Macro Pad 8 +# ANAVI Macro Pad 2 -ANAVI Macro Pad 2 is an open source mini mechanical keyboard with 2 keys and backlit. Powered by ATtiny 85 microcontroller and with microUSB connector. Designed with KiCad. + +ANAVI Macro Pad 2 is an open source, custom programmable, tiny 2% mechanical keyboard/keypad with backlit. Each of the two keys allows you to reprogram and use it as macro keypad or even dedicated shortcut keys. + +ANAVI Macro Pad 2 can be customized for multiple use cases across various industries. It is the perfect fit for copy and paste as well as video conferencing applications. You can easily turn the camera or microphone on or off. Various keymaps are available, including for Zoom, Jitsi, Skype, Microsoft Teams, Google Meet, and Git. + +Powered by Microchip ATtiny 85 microcontroller and with microUSB connector. Only free and open source software tools like KiCad, OpenSCAD, and Inkscape were used to design ANAVI Macro Pad 2. ANAVI Macro Pad 2 relies on QMK firmware, Micronucleus and V-USB. * Keyboard Maintainer: [Leon Anavi](https://github.com/leon-anavi) * Hardware Supported: ANAVI Macro Pad 2 * Hardware Availability: [PCB Files](https://github.com/AnaviTechnology/anavi-macro-pad-2) +* [User's Manual](https://github.com/AnaviTechnology/anavi-docs/blob/master/anavi-macro-pad-2/anavi-macro-pad-2.md) **Note**: Due to limited firmware space, a _**lot**_ of features have to be disabled to get a functioning QMK based keyboard. From 4ccba9e3ac630bbca00bf90aaa27425fed9afd86 Mon Sep 17 00:00:00 2001 From: Ivan Organista Date: Thu, 13 May 2021 06:15:08 +0200 Subject: [PATCH 347/613] [Keyboard] Added via keymap for crbn keyboard (#12765) --- keyboards/crbn/keymaps/via/keymap.c | 45 +++++++++++++++++++++++++++++ keyboards/crbn/keymaps/via/rules.mk | 2 ++ 2 files changed, 47 insertions(+) create mode 100644 keyboards/crbn/keymaps/via/keymap.c create mode 100644 keyboards/crbn/keymaps/via/rules.mk diff --git a/keyboards/crbn/keymaps/via/keymap.c b/keyboards/crbn/keymaps/via/keymap.c new file mode 100644 index 0000000000..91880d93e8 --- /dev/null +++ b/keyboards/crbn/keymaps/via/keymap.c @@ -0,0 +1,45 @@ +/* Copyright 2021 Ivan Organista + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_crbn_1x2u( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + MO(3), KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT), + + LAYOUT_crbn_1x2u( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TRNS, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, + KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, LSFT(KC_NUHS), LSFT(KC_NUBS), KC_HOME, KC_END, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY), + + LAYOUT_crbn_1x2u( + 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_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, + KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY), + + LAYOUT_crbn_1x2u( + RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +}; diff --git a/keyboards/crbn/keymaps/via/rules.mk b/keyboards/crbn/keymaps/via/rules.mk new file mode 100644 index 0000000000..43061db1dd --- /dev/null +++ b/keyboards/crbn/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes \ No newline at end of file From ad0e6b6291a51252603124c9b85fea631aa10ee8 Mon Sep 17 00:00:00 2001 From: Mattia Righetti Date: Thu, 13 May 2021 07:37:30 +0200 Subject: [PATCH 348/613] mattrighetti Whitefox keymap (#12582) * Initial configuration with led and three layers + First layer contains classic keys + Second layer contains F keys and media keys + Third layer contains numbers in the top portion of the letter keys + Default LEDs configuration * RGB toggle * Documentation and minor changes * Added LGUI key and remapped layer 2 on layer 1 * Removed backlight and led keys * Updated keymap graphical representation * Switched LGui with Lalt to emulate macOS layout * Updated keymap with GNU License --- .../whitefox/keymaps/mattrighetti/keymap.c | 81 +++++++++++++++++++ .../whitefox/keymaps/mattrighetti/rules.mk | 10 +++ 2 files changed, 91 insertions(+) create mode 100644 keyboards/whitefox/keymaps/mattrighetti/keymap.c create mode 100644 keyboards/whitefox/keymaps/mattrighetti/rules.mk diff --git a/keyboards/whitefox/keymaps/mattrighetti/keymap.c b/keyboards/whitefox/keymaps/mattrighetti/keymap.c new file mode 100644 index 0000000000..67aed537dd --- /dev/null +++ b/keyboards/whitefox/keymaps/mattrighetti/keymap.c @@ -0,0 +1,81 @@ + + /* + Copyright 2021 Mattia Righetti + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base layer + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┠+ * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ \ │ ` │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │Bspc │Del│ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ + * │Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │PgU│ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ + * │ LShift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │RSfRCt│ ↑ │PgD│ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ + * │LCtl│LAlt│LGUI│ Space │RAlt│Lay1│ │ ↠│ ↓ │ → │ + * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ + */ + [0] = LAYOUT_truefox( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSLS, _______, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + /* Function layer + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┠+ * │ │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│ │ │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼─────┤ + * │ │ │ ↑ │ │ │ │ │ │ │ │ │ │ │Reset│ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼─────┤ + * │ │ ↠│ ↓ │ → │ │ │ │ │ │ │ │ │ │ │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼─────┤ + * │ │VoU│VoD│VoM│ │ │ │ │ │ │ │ │ │ │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼─────┤ + * │ │ │ │ │Lay2│ │ │ │ │ │ + * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴─────┘ + */ + [1] = LAYOUT_truefox( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, + _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, MO(2), KC_TRNS, _______, _______, _______ + ), + /* Third layer + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┠+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ + * │ │1 │2 │3 │4 │5 │6 │7 │8 │9 │0 │ │ │ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ + * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ + */ + [2] = LAYOUT_truefox( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/whitefox/keymaps/mattrighetti/rules.mk b/keyboards/whitefox/keymaps/mattrighetti/rules.mk new file mode 100644 index 0000000000..ceb1c92ec3 --- /dev/null +++ b/keyboards/whitefox/keymaps/mattrighetti/rules.mk @@ -0,0 +1,10 @@ +BOOTMAGIC_ENABLE = no + +# Keyboard-specific features +BACKLIGHT_ENABLE = no +VISUALIZER_ENABLE = no + +# Firmware size reduction +GRAVE_ESC_ENABLE = no +MAGIC_ENABLE = no +SPACE_CADET_ENABLE = no From 3efd94014ff363f107c563da623259286dedad1c Mon Sep 17 00:00:00 2001 From: Victor Pivert <76471338+piv3rt@users.noreply.github.com> Date: Thu, 13 May 2021 08:52:55 +0200 Subject: [PATCH 349/613] piv3rt keymap for dztech/dz60rgb (#12591) * Create piv3rt's keymap * Use tabs's LED as a caps lock indicator * Fix indentation (tabs -> spaces) * Set inital LED matrix color & mode * Rename layers and add an RGBRST keycode * Disable unused RGB effects * Add RGB profiles * Use ESC's LED as a num lock indicator * Light up the keypad when _NUM layer is active * Realign layers * Remove legacy layer * Fix CAPS key macro * Reduce TAPPING_TERM to 100 * Change the caps LED to red and display the numlock one on special layers * Add french accentuated caps + minor improvements on layers * Remove left numpad * Add french quotation marks * Add key KC_NUBS * Add terminal copy/paste * Disable led profile on wakeup * Change the default color * Add AMD replay and record keys * Add a MacOS layer * Move Numpad * Add GPLv2 license information * Optimise custom RGB matrix * Move keypad toggle and disable MAC led indicator * Remove unnecessary check for RGB matrix --- .../dztech/dz60rgb/keymaps/piv3rt/config.h | 56 +++++ .../dztech/dz60rgb/keymaps/piv3rt/keymap.c | 230 ++++++++++++++++++ .../dztech/dz60rgb/keymaps/piv3rt/rules.mk | 1 + 3 files changed, 287 insertions(+) create mode 100644 keyboards/dztech/dz60rgb/keymaps/piv3rt/config.h create mode 100644 keyboards/dztech/dz60rgb/keymaps/piv3rt/keymap.c create mode 100644 keyboards/dztech/dz60rgb/keymaps/piv3rt/rules.mk diff --git a/keyboards/dztech/dz60rgb/keymaps/piv3rt/config.h b/keyboards/dztech/dz60rgb/keymaps/piv3rt/config.h new file mode 100644 index 0000000000..a2b29c03be --- /dev/null +++ b/keyboards/dztech/dz60rgb/keymaps/piv3rt/config.h @@ -0,0 +1,56 @@ +/* +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#define FORCE_NKRO +#define TAPPING_TERM 100 + +#define DISABLE_RGB_MATRIX_ALPHAS_MODS +#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define DISABLE_RGB_MATRIX_BREATHING +#define DISABLE_RGB_MATRIX_BAND_SAT +#define DISABLE_RGB_MATRIX_BAND_VAL +#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define DISABLE_RGB_MATRIX_CYCLE_ALL +//#define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN +#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define DISABLE_RGB_MATRIX_DUAL_BEACON +#define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define DISABLE_RGB_MATRIX_CYCLE_SPIRAL +#define DISABLE_RGB_MATRIX_RAINBOW_BEACON +#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define DISABLE_RGB_MATRIX_RAINDROPS +#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define DISABLE_RGB_MATRIX_TYPING_HEATMAP +#define DISABLE_RGB_MATRIX_DIGITAL_RAIN +#define DISABLE_RGB_MATRIX_SOLID_REACTIVE +#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define DISABLE_RGB_MATRIX_SPLASH +#define DISABLE_RGB_MATRIX_MULTISPLASH +#define DISABLE_RGB_MATRIX_SOLID_SPLASH +#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH diff --git a/keyboards/dztech/dz60rgb/keymaps/piv3rt/keymap.c b/keyboards/dztech/dz60rgb/keymaps/piv3rt/keymap.c new file mode 100644 index 0000000000..b4b77b392d --- /dev/null +++ b/keyboards/dztech/dz60rgb/keymaps/piv3rt/keymap.c @@ -0,0 +1,230 @@ +/* +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +#define LT_DEL LT(_RGB, KC_DEL) +#define LT_CAPS LT(_FNC, KC_CAPS) +#define LM_LALT LM(_FNC, MOD_LALT) +#define LM_NALT LM(_NUM, MOD_LALT) +#define RSFT_SL RSFT_T(KC_SLSH) +#define RALT_F6 RALT_T(KC_F6) +#define CTLINS LCTL(KC_INS) // Ctrl + Insert (terminal copy) +#define SFTINS LSFT(KC_INS) // Shift + Insert (terminal paste) +#define AMDREP LCTL(LSFT(KC_S)) // AMD Replay +#define AMDREC LCTL(LSFT(KC_E)) // AMD Record + +enum piv3rt_layers { + _DEF, + _MAC, + _FNC, + _RGB, + _NUM, +}; + +enum piv3rt_keycodes { + RGB_RST = SAFE_RANGE, + RGB_PCY, // Cycle through RGB profiles + RGB_000, // Turn everything off except profiles + EACUTE, // French É for Windows + CCED, // French Ç for Windows + AGRAVE, // French À for Windows + FRQLT, // French ≪ for Windows + FRQGT, // French ≫ for Windows +}; + +enum piv3rt_rgbprofiles { + CSGO, + TEXT, + OFF, // Should be the last item +}; + +enum piv3rt_rgbprofiles current_profile = OFF; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_DEF] = LAYOUT( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + LT_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_SL, KC_UP, LT_DEL, + KC_LCTL, KC_LGUI, LM_LALT, KC_SPC, RALT_F6, MO(_FNC), KC_LEFT, KC_DOWN, KC_RGHT + ), + [_MAC] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + KC_LGUI, KC_LCTL, KC_LGUI, _______, _______, _______, _______, _______, _______ + ), + [_FNC] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + _______, AGRAVE, KC_UP, EACUTE, _______, KC_INS, _______, _______, KC_UP, KC_UP, KC_PGUP, KC_HOME, KC_PSCR, KC_NUBS, + _______, KC_HOME, KC_DOWN, KC_END, CTLINS, SFTINS, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_END, KC_F8, + _______, _______, KC_CALC, CCED, _______, _______, _______, _______, FRQLT, FRQGT, TG(_NUM), KC_VOLU, KC_MUTE, + _______, TG(_MAC), LM_NALT, _______, KC_MPLY, _______, KC_MPRV, KC_VOLD, KC_MNXT + ), + [_RGB] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + _______, RGB_TOG, _______, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_MOD, _______, _______, _______, RESET, + _______, _______, _______, _______, _______, RGB_PCY, _______, _______, RGB_SPI, RGB_SPD, _______, _______, EEP_RST, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_000, _______, + _______, _______, _______, RGB_RST, _______, _______, KC_PWR, AMDREC, AMDREP + ), + [_NUM] = LAYOUT( + KC_NLCK, _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, KC_PENT, KC_PENT, + _______, _______, _______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT, TG(_NUM), _______, _______, + _______, _______, _______, KC_PENT, _______, _______, _______, _______, _______ + ), +}; + +void reset_leds(void) { + current_profile = OFF; + rgblight_enable(); + rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT); + rgb_matrix_sethsv(0x6a, 0x33, 0xff); +} + +void suspend_wakeup_init_user(void) { + current_profile = OFF; +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case RGB_RST: + if (record->event.pressed) { + reset_leds(); + } + return false; + break; + case RGB_PCY: + if (record->event.pressed) { + // Cycle through RGB profiles + current_profile = current_profile == OFF ? 0 : current_profile + 1; + } + return false; + break; + case RGB_000: + if (record->event.pressed) { + rgb_matrix_sethsv(0, 0, 0); + } + return false; + break; + case EACUTE: + if (record->event.pressed) { + SEND_STRING(SS_DOWN(X_LALT) SS_TAP(X_P0) SS_TAP(X_P2) SS_TAP(X_P0) SS_TAP(X_P1) SS_UP(X_LALT)); + } + return false; + break; + case CCED: + if (record->event.pressed) { + SEND_STRING(SS_DOWN(X_LALT) SS_TAP(X_P0) SS_TAP(X_P1) SS_TAP(X_P9) SS_TAP(X_P9) SS_UP(X_LALT)); + } + return false; + break; + case AGRAVE: + if (record->event.pressed) { + SEND_STRING(SS_DOWN(X_LALT) SS_TAP(X_P0) SS_TAP(X_P1) SS_TAP(X_P9) SS_TAP(X_P2) SS_UP(X_LALT)); + } + return false; + break; + case FRQLT: + if (record->event.pressed) { + SEND_STRING(SS_DOWN(X_LALT) SS_TAP(X_P1) SS_TAP(X_P7) SS_TAP(X_P4) SS_UP(X_LALT)); + } + return false; + break; + case FRQGT: + if (record->event.pressed) { + SEND_STRING(SS_DOWN(X_LALT) SS_TAP(X_P1) SS_TAP(X_P7) SS_TAP(X_P5) SS_UP(X_LALT)); + } + return false; + break; + } + return true; +}; + +void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { + led_t led_state = host_keyboard_led_state(); + + if (led_state.caps_lock) { + // Tab key = 27 + RGB_MATRIX_INDICATOR_SET_COLOR(27, 0xff, 0x00, 0x00); + } + + if (led_state.num_lock && (layer_state_is(_FNC) || layer_state_is(_NUM))) { + // ESC key = 13 + RGB_MATRIX_INDICATOR_SET_COLOR(13, 0xff, 0x55, 0x55); + } + + if (layer_state_is(_NUM)) { + // Num pad + for (int i=0; i<3; i++) { + RGB_MATRIX_INDICATOR_SET_COLOR(3 + i, 0xff, 0x55, 0x55); + RGB_MATRIX_INDICATOR_SET_COLOR(17 + i, 0xff, 0x55, 0x55); + RGB_MATRIX_INDICATOR_SET_COLOR(30 + i, 0xff, 0x55, 0x55); + } + RGB_MATRIX_INDICATOR_SET_COLOR(43, 0xff, 0x00, 0x00); + return; + } + + if (layer_state_is(_RGB)) { + // AMD record and replay + RGB_MATRIX_INDICATOR_SET_COLOR(54, 0x00, 0xff, 0x00); + RGB_MATRIX_INDICATOR_SET_COLOR(55, 0xff, 0x00, 0x00); + } + + if (current_profile == CSGO) { + // Moves + RGB_MATRIX_INDICATOR_SET_COLOR(25, 0xff, 0x00, 0x00); + RGB_MATRIX_INDICATOR_SET_COLOR(39, 0xff, 0x00, 0x00); + RGB_MATRIX_INDICATOR_SET_COLOR(38, 0xff, 0x00, 0x00); + RGB_MATRIX_INDICATOR_SET_COLOR(37, 0xff, 0x00, 0x00); + + // Grenades + RGB_MATRIX_INDICATOR_SET_COLOR(4, 0x00, 0xff, 0x00); + RGB_MATRIX_INDICATOR_SET_COLOR(3, 0xff, 0x66, 0x00); + RGB_MATRIX_INDICATOR_SET_COLOR(2, 0x66, 0x66, 0x22); + RGB_MATRIX_INDICATOR_SET_COLOR(1, 0xff, 0xff, 0xff); + + // Primary + RGB_MATRIX_INDICATOR_SET_COLOR(18, 0xff, 0x00, 0x00); + RGB_MATRIX_INDICATOR_SET_COLOR(17, 0x99, 0x33, 0x00); + RGB_MATRIX_INDICATOR_SET_COLOR(16, 0x00, 0xff, 0x00); + + // Secondary + RGB_MATRIX_INDICATOR_SET_COLOR(32, 0x66, 0x66, 0x22); + RGB_MATRIX_INDICATOR_SET_COLOR(31, 0x00, 0x00, 0xff); + + // Equipment + RGB_MATRIX_INDICATOR_SET_COLOR(30, 0xff, 0x00, 0xff); + RGB_MATRIX_INDICATOR_SET_COLOR(29, 0x00, 0x00, 0xff); + RGB_MATRIX_INDICATOR_SET_COLOR(28, 0x33, 0x66, 0x99); + RGB_MATRIX_INDICATOR_SET_COLOR(0, 0x33, 0x66, 0x99); + } else if (current_profile == TEXT) { + // Letters + for (int i=0; i<7; i++) { + RGB_MATRIX_INDICATOR_SET_COLOR(17 + i, 0x33, 0x66, 0x99); + RGB_MATRIX_INDICATOR_SET_COLOR(31 + i, 0x33, 0x66, 0x99); + RGB_MATRIX_INDICATOR_SET_COLOR(46 + i, 0x33, 0x66, 0x99); + } + RGB_MATRIX_INDICATOR_SET_COLOR(38, 0x33, 0x66, 0x99); + RGB_MATRIX_INDICATOR_SET_COLOR(39, 0x33, 0x66, 0x99); + RGB_MATRIX_INDICATOR_SET_COLOR(24, 0x33, 0x66, 0x99); + RGB_MATRIX_INDICATOR_SET_COLOR(25, 0x33, 0x66, 0x99); + RGB_MATRIX_INDICATOR_SET_COLOR(26, 0x33, 0x66, 0x99); + } +} diff --git a/keyboards/dztech/dz60rgb/keymaps/piv3rt/rules.mk b/keyboards/dztech/dz60rgb/keymaps/piv3rt/rules.mk new file mode 100644 index 0000000000..23a7632433 --- /dev/null +++ b/keyboards/dztech/dz60rgb/keymaps/piv3rt/rules.mk @@ -0,0 +1 @@ +NKRO_ENABLE = yes From 6e5e34662bb83964d3d580a22cd16828fd37cfd5 Mon Sep 17 00:00:00 2001 From: Jeremy Herve Date: Thu, 13 May 2021 18:29:04 +0200 Subject: [PATCH 350/613] Redox custom keymap (jeherve): updates to deprecated code and bugfixes (#12738) Co-authored-by: Drashna Jael're --- keyboards/redox/keymaps/jeherve/config.h | 10 +- keyboards/redox/keymaps/jeherve/keymap.c | 295 +++++++++++----------- keyboards/redox/keymaps/jeherve/readme.md | 5 +- 3 files changed, 165 insertions(+), 145 deletions(-) diff --git a/keyboards/redox/keymaps/jeherve/config.h b/keyboards/redox/keymaps/jeherve/config.h index b9b67c999f..e3ed839f44 100644 --- a/keyboards/redox/keymaps/jeherve/config.h +++ b/keyboards/redox/keymaps/jeherve/config.h @@ -1,5 +1,5 @@ /* -Copyright 2018 Jeremy Herve +Copyright 2021 Jeremy Herve This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -36,3 +36,11 @@ along with this program. If not, see . #define RGBLIGHT_SAT_STEP 8 #define RGBLIGHT_VAL_STEP 8 #define RGBLIGHT_SLEEP + +/* Set Unicode mode by default */ +#define UNICODE_SELECTED_MODES UC_MAC + +/* Custom startup sound */ +#ifdef AUDIO_ENABLE +# define STARTUP_SONG SONG(ZELDA_PUZZLE) +#endif diff --git a/keyboards/redox/keymaps/jeherve/keymap.c b/keyboards/redox/keymaps/jeherve/keymap.c index f39b5a438a..226d14aae1 100644 --- a/keyboards/redox/keymaps/jeherve/keymap.c +++ b/keyboards/redox/keymaps/jeherve/keymap.c @@ -1,6 +1,21 @@ -#include QMK_KEYBOARD_H +/* +Copyright 2021 Jeremy Herve -extern keymap_config_t keymap_config; +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#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. @@ -12,126 +27,127 @@ extern keymap_config_t keymap_config; #define _INTER 3 #define _ADJUST 4 +// Define song. +#ifdef AUDIO_ENABLE +float tone_zelda[][2] = SONG(ZELDA_TREASURE); +#endif + enum custom_keycodes { - COLEMAK = SAFE_RANGE, - SYMB, - NAV, - INTER, - ADJUST, - // These use process_record_user() - M_BRACKET_LEFT, - M_BRACKET_RIGHT, - SHRUG, - WAVE, - YOSHI, - THUMB_UP, - NBSP, - INV_1P, - ALFRED + COLEMAK = SAFE_RANGE, + SYMB, + NAV, + INTER, + ADJUST, + // These use process_record_user() + M_BRACKET_LEFT, + M_BRACKET_RIGHT, + SHRUG, + WAVE, + YOSHI, + THUMB_UP, + INV_1P, + ALFRED }; // Is shift being held? Let's store this in a bool. static bool shift_held = false; bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch(keycode) { - case SHRUG: - if (record->event.pressed) { - send_unicode_hex_string("00AF 005C 005F 0028 30C4 0029 005F 002F 00AF"); - } - return false; - break; - case INV_1P: - if (record->event.pressed) { - SEND_STRING(SS_DOWN(X_LGUI)SS_DOWN(X_LALT)SS_TAP(X_BSLASH)SS_UP(X_LGUI)SS_UP(X_LALT)); - } - return false; - break; - case ALFRED: - if (record->event.pressed) { - SEND_STRING(SS_DOWN(X_LALT)SS_TAP(X_SPACE)SS_UP(X_LALT)); - } - return false; - break; - case YOSHI: - if (record->event.pressed) { - SEND_STRING(":yellow_yoshi:"); - } - return false; - break; - case THUMB_UP: - if (record->event.pressed) { - SEND_STRING(SS_LALT("D83D+DC4D")); - } - return false; - break; - case WAVE: - if (record->event.pressed) { - SEND_STRING(SS_LALT("D83D+DC4B")); - } - return false; - break; - case NBSP: - if (record->event.pressed) { - SEND_STRING(" "); - } - return false; - break; - case KC_LSFT: - shift_held = record->event.pressed; - return true; - break; - case KC_RSFT: - shift_held = record->event.pressed; - return true; - break; - case M_BRACKET_LEFT: { - if (record->event.pressed) { - if (shift_held) { - unregister_code(KC_LSFT); - unregister_code(KC_RSFT); - register_code(KC_LBRC); - } else { - register_code(KC_LSFT); - register_code(KC_9); - } - } else { // Release the key - unregister_code(KC_LBRC); - unregister_code(KC_LSFT); - unregister_code(KC_RSFT); - unregister_code(KC_9); - } - return false; - break; - } - case M_BRACKET_RIGHT: { - if (record->event.pressed) { - if (shift_held) { - unregister_code(KC_LSFT); - unregister_code(KC_RSFT); - register_code(KC_RBRC); - } else { - register_code(KC_LSFT); - register_code(KC_0); - } - } else { // Release the key - unregister_code(KC_RBRC); - unregister_code(KC_LSFT); - unregister_code(KC_RSFT); - unregister_code(KC_0); - } - return false; - break; - } - } - return true; + switch (keycode) { + case SHRUG: + if (record->event.pressed) { + send_unicode_string("¯\\_(ツ)_/¯"); + } + return false; + break; + case INV_1P: + if (record->event.pressed) { + SEND_STRING(SS_DOWN(X_LGUI) SS_DOWN(X_LALT) SS_TAP(X_BSLASH) SS_UP(X_LGUI) SS_UP(X_LALT)); + } + return false; + break; + case ALFRED: + if (record->event.pressed) { + SEND_STRING(SS_DOWN(X_LALT) SS_TAP(X_SPACE) SS_UP(X_LALT)); + } + return false; + break; + case YOSHI: + if (record->event.pressed) { +#ifdef AUDIO_ENABLE + PLAY_SONG(tone_zelda); +#endif + SEND_STRING(":yellow_yoshi:"); + } + return false; + break; + case THUMB_UP: + if (record->event.pressed) { + register_unicode(0x1F44D); + } + return false; + break; + case WAVE: + if (record->event.pressed) { + register_unicode(0x1F44B); + } + return false; + break; + case KC_LSFT: + shift_held = record->event.pressed; + return true; + break; + case KC_RSFT: + shift_held = record->event.pressed; + return true; + break; + case M_BRACKET_LEFT: { + if (record->event.pressed) { + if (shift_held) { + unregister_code(KC_LSFT); + unregister_code(KC_RSFT); + register_code(KC_LBRC); + } else { + register_code(KC_LSFT); + register_code(KC_9); + } + } else { // Release the key + unregister_code(KC_LBRC); + unregister_code(KC_LSFT); + unregister_code(KC_RSFT); + unregister_code(KC_9); + } + return false; + break; + } + case M_BRACKET_RIGHT: { + if (record->event.pressed) { + if (shift_held) { + unregister_code(KC_LSFT); + unregister_code(KC_RSFT); + register_code(KC_RBRC); + } else { + register_code(KC_LSFT); + register_code(KC_0); + } + } else { // Release the key + unregister_code(KC_RBRC); + unregister_code(KC_LSFT); + unregister_code(KC_RSFT); + unregister_code(KC_0); + } + return false; + break; + } + } + return true; }; // Shortcut to make keymap more readable -#define KC_SYQT LT(_SYMB,KC_QUOT) -#define SYM_L MO(_SYMB) -#define MO_INTR MO(_INTER) -#define TT_ADJ TT(_ADJUST) +#define KC_SYQT LT(_SYMB, KC_QUOT) +#define SYM_L MO(_SYMB) +#define MO_INTR MO(_INTER) +#define TT_ADJ TT(_ADJUST) #define UC_00E0 UC(0x00E0) #define UC_00FC UC(0x00FC) @@ -147,6 +163,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { #define UC_0171 UC(0x0171) #define UC_00EA UC(0x00EA) #define UC_0151 UC(0x0151) +// Non-breaking space. +#define UC_00A0 UC(0x00a0) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { @@ -202,7 +220,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤ XXXXXXX ,UC_00E2 ,XXXXXXX ,UC_00E7 ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ , _______ ,XXXXXXX ,XXXXXXX ,UC_0171 ,UC_00EA ,XXXXXXX ,UC_0151 ,XXXXXXX , //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤ - _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX , XXXXXXX ,_______ , _______ ,NBSP , XXXXXXX , _______ ,XXXXXXX ,XXXXXXX ,_______ + _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX , XXXXXXX ,_______ , _______ ,UC_00A0 , XXXXXXX , _______ ,XXXXXXX ,XXXXXXX ,_______ //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘ ), @@ -222,38 +240,29 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; -#ifdef AUDIO_ENABLE -float tone_colemak[][2] = SONG(ZELDA_TREASURE); -#endif - void persistent_default_layer_set(uint16_t default_layer) { - eeconfig_update_default_layer(default_layer); - default_layer_set(default_layer); + eeconfig_update_default_layer(default_layer); + default_layer_set(default_layer); } -// Set unicode in Mac OS. -void eeconfig_init_user(void) { - set_unicode_input_mode(UC_OSX); -}; - // Change LED colors depending on the layer. -uint32_t layer_state_set_user(uint32_t state) { - switch (biton32(state)) { - case _SYMB: - rgblight_setrgb_orange(); - break; - case _NAV: - rgblight_setrgb_springgreen(); - break; - case _INTER: - rgblight_setrgb_teal(); - break; - case _ADJUST: - rgblight_setrgb_red(); - break; - default: // for any other layers, or the default layer - rgblight_setrgb_yellow(); - break; - } - return state; +layer_state_t layer_state_set_user(layer_state_t state) { + switch (get_highest_layer(state)) { + case _SYMB: + rgblight_setrgb_orange(); + break; + case _NAV: + rgblight_setrgb_springgreen(); + break; + case _INTER: + rgblight_setrgb_teal(); + break; + case _ADJUST: + rgblight_setrgb_red(); + break; + default: // for any other layers, or the default layer + rgblight_setrgb_yellow(); + break; + } + return state; }; diff --git a/keyboards/redox/keymaps/jeherve/readme.md b/keyboards/redox/keymaps/jeherve/readme.md index 515dcbd622..72ed31919b 100644 --- a/keyboards/redox/keymaps/jeherve/readme.md +++ b/keyboards/redox/keymaps/jeherve/readme.md @@ -1,7 +1,7 @@ # A Colemak keymap for the Redox keyboard ---- -![jeherve-redox-layout-4](https://user-images.githubusercontent.com/426388/50276398-2664be80-0442-11e9-86b9-fbd0f4275354.png) +![jeherve-redox-layout-5](https://user-images.githubusercontent.com/426388/116534030-56f67600-a8e2-11eb-9bf3-3ce5362d717a.png) ---- @@ -25,6 +25,9 @@ My keymap uses 5 layers: ## Changelog +- 2021.04.29 + - Update code to replace deprecated code. + - Fix non-breaking space key. - 2018.12.20 - 2 new Macro keys, to invoke [Alfred](https://www.alfredapp.com/) and [1Password](https://1password.com/). - No more Right Command key or Expose key, I didn't use those much. From 54e788364aebd30d9c6b86feb823a88db4bd2604 Mon Sep 17 00:00:00 2001 From: npspears <40127181+npspears@users.noreply.github.com> Date: Thu, 13 May 2021 11:36:12 -0500 Subject: [PATCH 351/613] [Keyboard] add ortho Candybar and NOP60 PCBs (#12807) Co-authored-by: Ryan --- .../candybar_ortho/candybar_ortho.c | 17 +++ .../candybar_ortho/candybar_ortho.h | 67 ++++++++++++ .../checkerboards/candybar_ortho/config.h | 55 ++++++++++ .../checkerboards/candybar_ortho/info.json | 18 ++++ .../candybar_ortho/keymaps/2x3u/config.h | 20 ++++ .../candybar_ortho/keymaps/2x3u/keymap.c | 83 +++++++++++++++ .../candybar_ortho/keymaps/7u/config.h | 20 ++++ .../candybar_ortho/keymaps/7u/keymap.c | 83 +++++++++++++++ .../candybar_ortho/keymaps/default/config.h | 20 ++++ .../candybar_ortho/keymaps/default/keymap.c | 83 +++++++++++++++ .../candybar_ortho/keymaps/default/readme.md | 2 + .../candybar_ortho/keymaps/via/config.h | 20 ++++ .../candybar_ortho/keymaps/via/keymap.c | 83 +++++++++++++++ .../candybar_ortho/keymaps/via/readme.md | 2 + .../candybar_ortho/keymaps/via/rules.mk | 2 + .../checkerboards/candybar_ortho/readme.md | 13 +++ .../checkerboards/candybar_ortho/rules.mk | 22 ++++ keyboards/checkerboards/nop60/config.h | 64 +++++++++++ keyboards/checkerboards/nop60/info.json | 15 +++ .../checkerboards/nop60/keymaps/2x3u/config.h | 23 ++++ .../checkerboards/nop60/keymaps/2x3u/keymap.c | 83 +++++++++++++++ .../checkerboards/nop60/keymaps/7u/config.h | 25 +++++ .../checkerboards/nop60/keymaps/7u/keymap.c | 85 +++++++++++++++ .../checkerboards/nop60/keymaps/via/config.h | 22 ++++ .../checkerboards/nop60/keymaps/via/keymap.c | 100 ++++++++++++++++++ .../checkerboards/nop60/keymaps/via/rules.mk | 1 + keyboards/checkerboards/nop60/nop60.c | 18 ++++ keyboards/checkerboards/nop60/nop60.h | 49 +++++++++ keyboards/checkerboards/nop60/readme.md | 13 +++ keyboards/checkerboards/nop60/rules.mk | 22 ++++ 30 files changed, 1130 insertions(+) create mode 100644 keyboards/checkerboards/candybar_ortho/candybar_ortho.c create mode 100644 keyboards/checkerboards/candybar_ortho/candybar_ortho.h create mode 100644 keyboards/checkerboards/candybar_ortho/config.h create mode 100644 keyboards/checkerboards/candybar_ortho/info.json create mode 100644 keyboards/checkerboards/candybar_ortho/keymaps/2x3u/config.h create mode 100644 keyboards/checkerboards/candybar_ortho/keymaps/2x3u/keymap.c create mode 100644 keyboards/checkerboards/candybar_ortho/keymaps/7u/config.h create mode 100644 keyboards/checkerboards/candybar_ortho/keymaps/7u/keymap.c create mode 100644 keyboards/checkerboards/candybar_ortho/keymaps/default/config.h create mode 100644 keyboards/checkerboards/candybar_ortho/keymaps/default/keymap.c create mode 100644 keyboards/checkerboards/candybar_ortho/keymaps/default/readme.md create mode 100644 keyboards/checkerboards/candybar_ortho/keymaps/via/config.h create mode 100644 keyboards/checkerboards/candybar_ortho/keymaps/via/keymap.c create mode 100644 keyboards/checkerboards/candybar_ortho/keymaps/via/readme.md create mode 100644 keyboards/checkerboards/candybar_ortho/keymaps/via/rules.mk create mode 100644 keyboards/checkerboards/candybar_ortho/readme.md create mode 100644 keyboards/checkerboards/candybar_ortho/rules.mk create mode 100644 keyboards/checkerboards/nop60/config.h create mode 100644 keyboards/checkerboards/nop60/info.json create mode 100644 keyboards/checkerboards/nop60/keymaps/2x3u/config.h create mode 100644 keyboards/checkerboards/nop60/keymaps/2x3u/keymap.c create mode 100644 keyboards/checkerboards/nop60/keymaps/7u/config.h create mode 100644 keyboards/checkerboards/nop60/keymaps/7u/keymap.c create mode 100644 keyboards/checkerboards/nop60/keymaps/via/config.h create mode 100644 keyboards/checkerboards/nop60/keymaps/via/keymap.c create mode 100644 keyboards/checkerboards/nop60/keymaps/via/rules.mk create mode 100644 keyboards/checkerboards/nop60/nop60.c create mode 100644 keyboards/checkerboards/nop60/nop60.h create mode 100644 keyboards/checkerboards/nop60/readme.md create mode 100644 keyboards/checkerboards/nop60/rules.mk diff --git a/keyboards/checkerboards/candybar_ortho/candybar_ortho.c b/keyboards/checkerboards/candybar_ortho/candybar_ortho.c new file mode 100644 index 0000000000..8f127cd36e --- /dev/null +++ b/keyboards/checkerboards/candybar_ortho/candybar_ortho.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Nathan Spears +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 2 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*/ + +#include "candybar_ortho.h" diff --git a/keyboards/checkerboards/candybar_ortho/candybar_ortho.h b/keyboards/checkerboards/candybar_ortho/candybar_ortho.h new file mode 100644 index 0000000000..692024ff20 --- /dev/null +++ b/keyboards/checkerboards/candybar_ortho/candybar_ortho.h @@ -0,0 +1,67 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + +#define LAYOUT_grid( \ + k00, k10, k01, k11, k02, k12, k03, k13, k04, k14, k05, k15, k06, k16, k07, k17, k08, \ + k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k36, k27, k37, k28, \ + k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k46, k56, k47, k57, k48, \ + k60, k70, k61, k71, k62, k72, k63, k73, k64, k74, k65, k75, k66, k76, k67, k77, k68 \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, XXX }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k08 }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, XXX }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k28 }, \ + { k40, k41, k42, k43, k44, k45, k46, k47, XXX }, \ + { k50, k51, k52, k53, k54, k55, k56, k57, k48 }, \ + { k60, k61, k62, k63, k64, k65, k66, k67, XXX }, \ + { k70, k71, k72, k73, k74, k75, k76, k77, k68 } \ +} +#define LAYOUT_2x3u( \ + k00, k10, k01, k11, k02, k12, k03, k13, k04, k14, k05, k15, k06, k16, k07, k17, k08, \ + k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k36, k27, k37, k28, \ + k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k46, k56, k47, k57, k48, \ + k60, k70, k61, k71, k72, k73, k64, k74, k75, k76, k67, k77, k68 \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, XXX }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k08 }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, XXX }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k28 }, \ + { k40, k41, k42, k43, k44, k45, k46, k47, XXX }, \ + { k50, k51, k52, k53, k54, k55, k56, k57, k48 }, \ + { k60, k61, XXX, XXX, k64, XXX, XXX, k67, XXX }, \ + { k70, k71, k72, k73, k74, k75, k76, k77, k68 } \ +} +#define LAYOUT_7u( \ + k00, k10, k01, k11, k02, k12, k03, k13, k04, k14, k05, k15, k06, k16, k07, k17, k08, \ + k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k36, k27, k37, k28, \ + k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k46, k56, k47, k57, k48, \ + k60, k70, k61, k71, k62, k64, k66, k76, k67, k77, k68 \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, XXX }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k08 }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, XXX }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k28 }, \ + { k40, k41, k42, k43, k44, k45, k46, k47, XXX }, \ + { k50, k51, k52, k53, k54, k55, k56, k57, k48 }, \ + { k60, k61, k62, XXX, k64, XXX, k66, k67, XXX }, \ + { k70, k71, XXX, XXX, XXX, XXX, k76, k77, k68 } \ +} diff --git a/keyboards/checkerboards/candybar_ortho/config.h b/keyboards/checkerboards/candybar_ortho/config.h new file mode 100644 index 0000000000..df83da61df --- /dev/null +++ b/keyboards/checkerboards/candybar_ortho/config.h @@ -0,0 +1,55 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + + #pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7070 +#define PRODUCT_ID 0x3215 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Nasp +#define PRODUCT CandyBar Ortho + +/* key matrix size */ +#define MATRIX_ROWS 8 +#define MATRIX_COLS 9 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { B4, D4, D7, D6, B5, B6, C7, C6 } +#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, D0, D1, D2 } + +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE + +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +#define RGB_DI_PIN B7 +#define RGBLIGHT_ANIMATIONS +#define RGBLED_NUM 18 +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 diff --git a/keyboards/checkerboards/candybar_ortho/info.json b/keyboards/checkerboards/candybar_ortho/info.json new file mode 100644 index 0000000000..2ec898cbb0 --- /dev/null +++ b/keyboards/checkerboards/candybar_ortho/info.json @@ -0,0 +1,18 @@ +{ + "keyboard_name": "CandyBar_Ortho", + "url": "", + "maintainer": "nasp", + "width": 17, + "height": 4, + "layouts": { + "LAYOUT_grid": { + "layout": [{"label":"Tab", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"label":"Y", "x":11, "y":0}, {"label":"U", "x":12, "y":0}, {"label":"I", "x":13, "y":0}, {"label":"O", "x":14, "y":0}, {"label":"P", "x":15, "y":0}, {"label":"Back Space", "x":16, "y":0}, {"label":"Esc", "x":0, "y":1}, {"label":"A", "x":1, "y":1}, {"label":"S", "x":2, "y":1}, {"label":"D", "x":3, "y":1}, {"label":"F", "x":4, "y":1}, {"label":"G", "x":5, "y":1}, {"x":6, "y":1}, {"label":"7", "x":7, "y":1}, {"label":"8", "x":8, "y":1}, {"label":"9", "x":9, "y":1}, {"x":10, "y":1}, {"label":"H", "x":11, "y":1}, {"label":"J", "x":12, "y":1}, {"label":"K", "x":13, "y":1}, {"label":"L", "x":14, "y":1}, {"label":";", "x":15, "y":1}, {"label":"'", "x":16, "y":1}, {"label":"Shift", "x":0, "y":2}, {"label":"Z", "x":1, "y":2}, {"label":"X", "x":2, "y":2}, {"label":"C", "x":3, "y":2}, {"label":"V", "x":4, "y":2}, {"label":"B", "x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"label":"N", "x":11, "y":2}, {"label":"M", "x":12, "y":2}, {"label":",", "x":13, "y":2}, {"label":".", "x":14, "y":2}, {"label":"/", "x":15, "y":2}, {"label":"Return", "x":16, "y":2}, {"x":0, "y":3}, {"label":"Ctrl", "x":1, "y":3}, {"label":"Alt", "x":2, "y":3}, {"label":"Super", "x":3, "y":3}, {"label":"⇓", "x":4, "y":3}, {"x":5, "y":3}, {"x":6, "y":3}, {"label":"8", "x":7, "y":3}, {"x":8, "y":3}, {"label":"10", "x":9, "y":3}, {"label":"11", "x":10, "y":3}, {"label":"12", "x":11, "y":3}, {"label":"⇑", "x":12, "y":3}, {"label":"←", "x":13, "y":3}, {"label":"15", "x":14, "y":3}, {"label":"↑", "x":15, "y":3}, {"label":"→", "x":16, "y":3}] + }, + "LAYOUT_2x3u": { + "layout": [{"label":"Tab", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"label":"Y", "x":11, "y":0}, {"label":"U", "x":12, "y":0}, {"label":"I", "x":13, "y":0}, {"label":"O", "x":14, "y":0}, {"label":"P", "x":15, "y":0}, {"label":"Back Space", "x":16, "y":0}, {"label":"Esc", "x":0, "y":1}, {"label":"A", "x":1, "y":1}, {"label":"S", "x":2, "y":1}, {"label":"D", "x":3, "y":1}, {"label":"F", "x":4, "y":1}, {"label":"G", "x":5, "y":1}, {"x":6, "y":1}, {"label":"7", "x":7, "y":1}, {"label":"8", "x":8, "y":1}, {"label":"9", "x":9, "y":1}, {"x":10, "y":1}, {"label":"H", "x":11, "y":1}, {"label":"J", "x":12, "y":1}, {"label":"K", "x":13, "y":1}, {"label":"L", "x":14, "y":1}, {"label":";", "x":15, "y":1}, {"label":"'", "x":16, "y":1}, {"label":"Shift", "x":0, "y":2}, {"label":"Z", "x":1, "y":2}, {"label":"X", "x":2, "y":2}, {"label":"C", "x":3, "y":2}, {"label":"V", "x":4, "y":2}, {"label":"B", "x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"label":"N", "x":11, "y":2}, {"label":"M", "x":12, "y":2}, {"label":",", "x":13, "y":2}, {"label":".", "x":14, "y":2}, {"label":"/", "x":15, "y":2}, {"label":"Return", "x":16, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3, "w":3}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":10, "y":3, "w":3}, {"x":13, "y":3}, {"x":14, "y":3}, {"x":15, "y":3}, {"x":16, "y":3}] + }, + "LAYOUT_7u": { + "layout": [{"label":"Tab", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"label":"Y", "x":11, "y":0}, {"label":"U", "x":12, "y":0}, {"label":"I", "x":13, "y":0}, {"label":"O", "x":14, "y":0}, {"label":"P", "x":15, "y":0}, {"label":"Back Space", "x":16, "y":0}, {"label":"Esc", "x":0, "y":1}, {"label":"A", "x":1, "y":1}, {"label":"S", "x":2, "y":1}, {"label":"D", "x":3, "y":1}, {"label":"F", "x":4, "y":1}, {"label":"G", "x":5, "y":1}, {"x":6, "y":1}, {"label":"7", "x":7, "y":1}, {"label":"8", "x":8, "y":1}, {"label":"9", "x":9, "y":1}, {"x":10, "y":1}, {"label":"H", "x":11, "y":1}, {"label":"J", "x":12, "y":1}, {"label":"K", "x":13, "y":1}, {"label":"L", "x":14, "y":1}, {"label":";", "x":15, "y":1}, {"label":"'", "x":16, "y":1}, {"label":"Shift", "x":0, "y":2}, {"label":"Z", "x":1, "y":2}, {"label":"X", "x":2, "y":2}, {"label":"C", "x":3, "y":2}, {"label":"V", "x":4, "y":2}, {"label":"B", "x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"label":"N", "x":11, "y":2}, {"label":"M", "x":12, "y":2}, {"label":",", "x":13, "y":2}, {"label":".", "x":14, "y":2}, {"label":"/", "x":15, "y":2}, {"label":"Return", "x":16, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3, "w":7}, {"x":12, "y":3}, {"x":13, "y":3}, {"x":14, "y":3}, {"x":15, "y":3}, {"x":16, "y":3}] + } + } +} diff --git a/keyboards/checkerboards/candybar_ortho/keymaps/2x3u/config.h b/keyboards/checkerboards/candybar_ortho/keymaps/2x3u/config.h new file mode 100644 index 0000000000..6d6bb8ea39 --- /dev/null +++ b/keyboards/checkerboards/candybar_ortho/keymaps/2x3u/config.h @@ -0,0 +1,20 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define TAPPING_TOGGLE 2 +#define TAPPING_TERM 200 diff --git a/keyboards/checkerboards/candybar_ortho/keymaps/2x3u/keymap.c b/keyboards/checkerboards/candybar_ortho/keymaps/2x3u/keymap.c new file mode 100644 index 0000000000..615257c882 --- /dev/null +++ b/keyboards/checkerboards/candybar_ortho/keymaps/2x3u/keymap.c @@ -0,0 +1,83 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details.s + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + + +// Defines for task manager and such +#define CALTDEL LCTL(LALT(KC_DEL)) +#define TSKMGR LCTL(LSFT(KC_ESC)) + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* 0 + * .----------------------------------------------------------------------------------------------------------------------. + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * | Home | Tab | Q | W | E | R | T | N7 | N8 | N9 | NLCK | Y | U | I | O | P | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * | PgUp |C(ESC)| A | S | D | F | G | N4 | N5 | N6 | + | H | J | K | L | '" | ;: | + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * | PgDn |Shift | Z | X | C | V | B | N1 | N2 | N3 | - | N | M | , | . | ? | Ent | + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * | Grv | L-OS | LAlt | RGB | Lay1-TT | NO | Dot | / | Spac(Lay2) | RALT |RCTRL |C.A.D.| Caps | + * '----------------------------------------------------------------------------------------------------------------------' + */ +[0] = LAYOUT_2x3u( + KC_HOME, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P7, KC_P8, KC_P9, KC_NLCK, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_PGUP, CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_PGDN, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_P1, KC_P2, KC_P3, KC_PMNS, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_GRV, KC_LGUI, KC_LALT, RGB_TOG, TT(1), KC_P0, KC_PDOT, KC_BSLS, LT(2, KC_SPC), KC_RALT, KC_RCTRL, CALTDEL, KC_CAPS +), + +/* 1 + * .----------------------------------------------------------------------------------------------------------------------. + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * | ~ | | ! | @ | # | $ | % | | | | | ^ | & | * | ( | ) | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * | \ | | 1 | 2 | 3 | 4 | 5 | | | | | 6 | 7 | 8 | 9 | 0 | / | + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | + | = | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * |C.A.D.| TMGR | | | | | | | | | SPC | | | ` | + * '----------------------------------------------------------------------------------------------------------------------' + */ +[1] = LAYOUT_2x3u( + KC_TILD, _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, _______, _______, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_SLSH, _______, KC_1, KC_2, KC_3, KC_4, KC_5, _______, _______, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PPLS, KC_EQL, _______, _______, _______, + CALTDEL, TSKMGR, _______, _______, _______, _______, _______, _______, _______, _______, KC_SPC, KC_NUBS, KC_GRV +), + +/* 2 + * .----------------------------------------------------------------------------------------------------------------------. + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * | RHUI | RSAI | | | UP | | | | | | | | _ | | ( | ) | RVAI | + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * | RHUD | RSAD | | LEFT | DOWN |RIGHT | | | | | | | - | | [ | ] | RVAD | + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * | | | F1 | F2 | F3 | F4 | F5 | | | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * |RESET | RTOG | | | | | | | | | | RMOD |RRMOD | + * '----------------------------------------------------------------------------------------------------------------------' + */ +[2] = LAYOUT_2x3u( + RGB_HUI, RGB_SAI, _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, KC_UNDS, _______, KC_LBRC, KC_RBRC, RGB_VAI, + RGB_HUD, RGB_SAD, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, KC_MINS, _______, KC_LCBR, KC_RCBR, RGB_VAD, + _______, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, + RESET, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD, RGB_RMOD +), +}; diff --git a/keyboards/checkerboards/candybar_ortho/keymaps/7u/config.h b/keyboards/checkerboards/candybar_ortho/keymaps/7u/config.h new file mode 100644 index 0000000000..6d6bb8ea39 --- /dev/null +++ b/keyboards/checkerboards/candybar_ortho/keymaps/7u/config.h @@ -0,0 +1,20 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define TAPPING_TOGGLE 2 +#define TAPPING_TERM 200 diff --git a/keyboards/checkerboards/candybar_ortho/keymaps/7u/keymap.c b/keyboards/checkerboards/candybar_ortho/keymaps/7u/keymap.c new file mode 100644 index 0000000000..e76ffa1c3c --- /dev/null +++ b/keyboards/checkerboards/candybar_ortho/keymaps/7u/keymap.c @@ -0,0 +1,83 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + + +// Defines for task manager and such +#define CALTDEL LCTL(LALT(KC_DEL)) +#define TSKMGR LCTL(LSFT(KC_ESC)) + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* 0 +* .----------------------------------------------------------------------------------------------------------------------. +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| +* | Tab | Q | W | E | R | T | NLCK | N7 | N8 | N9 | HOME | Y | U | I | O | P | Bksp | +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| +* |C(ESC)| A | S | D | F | G | INS | N4 | N5 | N6 | PgUp | H | J | K | L | '" | ;: | +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| +* |Shift | Z | X | C | V | B | DEL | N1 | N2 | N3 | PgDn | N | M | , | . | ? | Ent | +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| +* | LCTRL| LOS | LALT | / | ` | Spac(Lay2) | = | RALT |RCTRL | Caps |RESET | +* '----------------------------------------------------------------------------------------------------------------------' +*/ +[0] = LAYOUT_7u( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_NLCK, KC_P7, KC_P8, KC_P9, KC_HOME, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_INS, KC_P4, KC_P5, KC_P6, KC_PGUP, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_DEL, KC_P1, KC_P2, KC_P3, KC_PGDN, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_LCTRL, KC_LGUI, KC_LALT, KC_BSLS, KC_GRV, LT(2, KC_SPC), KC_EQL, KC_RALT, KC_RCTRL, KC_CAPS, RESET +), + +/* 1 + * .----------------------------------------------------------------------------------------------------------------------. + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * | ~ | ! | @ | # | $ | % | | | | | | ^ | & | * | ( | ) | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * | \ | 1 | 2 | 3 | 4 | 5 | | | | | 6 | 7 | 8 | 9 | 0 | / | | + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | + | = | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * |C.A.D.|TSMGR | | | | | | | SPC | | | ` | + * '----------------------------------------------------------------------------------------------------------------------' + */ +[1] = LAYOUT_7u( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, _______, _______, _______, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_SLSH, KC_1, KC_2, KC_3, KC_4, KC_5, _______, _______, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PPLS, KC_EQL, _______, + CALTDEL, TSKMGR, _______, _______, _______, _______, _______, _______, KC_SPC, KC_NUBS, KC_GRV +), + +/* 2 +* .----------------------------------------------------------------------------------------------------------------------. +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| +* | RHUI | RSAI | | | UP | | | | | | | | _ | | ( | ) | RVAI | +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| +* | RHUD | RSAD | | LEFT | DOWN |RIGHT | | | | | | | - | | [ | ] | RVAD | +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| +* | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | F12 | | +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| +* |RESET | RTOG | | | | | | | | RMOD |RRMOD | +* '----------------------------------------------------------------------------------------------------------------------' +*/ +[2] = LAYOUT_7u( + RGB_HUI, RGB_SAI, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, KC_UNDS, _______, KC_LBRC, KC_RBRC, RGB_VAI, + RGB_HUD, RGB_SAD, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, KC_MINS, _______, KC_LCBR, KC_RCBR, RGB_VAD, + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, + RESET, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, RGB_MOD, RGB_RMOD +), +}; diff --git a/keyboards/checkerboards/candybar_ortho/keymaps/default/config.h b/keyboards/checkerboards/candybar_ortho/keymaps/default/config.h new file mode 100644 index 0000000000..6d6bb8ea39 --- /dev/null +++ b/keyboards/checkerboards/candybar_ortho/keymaps/default/config.h @@ -0,0 +1,20 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define TAPPING_TOGGLE 2 +#define TAPPING_TERM 200 diff --git a/keyboards/checkerboards/candybar_ortho/keymaps/default/keymap.c b/keyboards/checkerboards/candybar_ortho/keymaps/default/keymap.c new file mode 100644 index 0000000000..ff3d6afe6c --- /dev/null +++ b/keyboards/checkerboards/candybar_ortho/keymaps/default/keymap.c @@ -0,0 +1,83 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + + +// Defines for task manager and such +#define CALTDEL LCTL(LALT(KC_DEL)) +#define TSKMGR LCTL(LSFT(KC_ESC)) + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Qwerty +* .-----------------------------------------------------------------------------------------------------------------------. +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+-------| +* | Tab | Q | W | E | R | T | NLCK | N7 | N8 | N9 | HOME | Y | U | I | O | P | Bksp | +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+-------| +* |C(ESC)| A | S | D | F | G | INS | N4 | N5 | N6 | PgUp | H | J | K | L | '" | ;: | +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+-------| +* |Shift | Z | X | C | V | B | DEL | N1 | N2 | N3 | PgDn | N | M | , | . | ? | Ent | +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+-------| +* | LCTRL| LOS | LALT | / | ` | - | = | [ |TT(1) |LT(SPC)| ] | MENU | RALT | ROS |RCTRL | CAPS |RESET | +* '-----------------------------------------------------------------------------------------------------------------------' +*/ +[0] = LAYOUT_grid( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_NLCK, KC_P7, KC_P8, KC_P9, KC_HOME, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_INS, KC_P4, KC_P5, KC_P6, KC_PGUP, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_DEL, KC_P1, KC_P2, KC_P3, KC_PGDN, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_LCTRL, KC_LGUI, KC_LALT, KC_BSLS, KC_GRV, KC_MINS, KC_EQL, KC_LBRC, TT(1), LT(2, KC_SPC), KC_RBRC, KC_MENU, KC_RALT, KC_RGUI, KC_RCTRL, KC_CAPS, RESET +), + +/* 1 +* .-----------------------------------------------------------------------------------------------------------------------. +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+-------| +* | ~ | ! | @ | # | $ | % | | | | | | ^ | & | * | ( | ) | Bksp | +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+-------| +* | \ | 1 | 2 | 3 | 4 | 5 | | | | | 6 | 7 | 8 | 9 | 0 | / | | +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+-------| +* | | | | | | | | | | | | | | | + | = | | +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+-------| +* |C.A.D.|TSKMGR| | | | | | | | | | | | | SPC | | | ` | +* '-----------------------------------------------------------------------------------------------------------------------' +*/ +[1] = LAYOUT_grid( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, _______, _______, _______, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_SLSH, KC_1, KC_2, KC_3, KC_4, KC_5, _______, _______, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PPLS, KC_EQL, _______, + CALTDEL, TSKMGR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_SPC, KC_NUBS, KC_GRV +), + +/* 2 +* .----------------------------------------------------------------------------------------------------------------------. +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| +* | RHUI | RSAI | | | UP | | | | | | | | _ | | ( | ) | RVAI | +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| +* | RHUD | RSAD | | LEFT | DOWN |RIGHT | | | | | | | - | | [ | ] | RVAD | +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| +* | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | F12 | | +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| +* |RESET | RTOG | | | | | | | | | | | | | | RMOD |RRMOD | +* '----------------------------------------------------------------------------------------------------------------------' +*/ +[2] = LAYOUT_grid( + RGB_HUI, RGB_SAI, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, KC_UNDS, _______, KC_LBRC, KC_RBRC, RGB_VAI, + RGB_HUD, RGB_SAD, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, KC_MINS, _______, KC_LCBR, KC_RCBR, RGB_VAD, + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, + RESET, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD, RGB_RMOD +), +}; diff --git a/keyboards/checkerboards/candybar_ortho/keymaps/default/readme.md b/keyboards/checkerboards/candybar_ortho/keymaps/default/readme.md new file mode 100644 index 0000000000..9ee103b709 --- /dev/null +++ b/keyboards/checkerboards/candybar_ortho/keymaps/default/readme.md @@ -0,0 +1,2 @@ +# The Default Candybar_Ortho Layout + diff --git a/keyboards/checkerboards/candybar_ortho/keymaps/via/config.h b/keyboards/checkerboards/candybar_ortho/keymaps/via/config.h new file mode 100644 index 0000000000..6d6bb8ea39 --- /dev/null +++ b/keyboards/checkerboards/candybar_ortho/keymaps/via/config.h @@ -0,0 +1,20 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define TAPPING_TOGGLE 2 +#define TAPPING_TERM 200 diff --git a/keyboards/checkerboards/candybar_ortho/keymaps/via/keymap.c b/keyboards/checkerboards/candybar_ortho/keymaps/via/keymap.c new file mode 100644 index 0000000000..ff3d6afe6c --- /dev/null +++ b/keyboards/checkerboards/candybar_ortho/keymaps/via/keymap.c @@ -0,0 +1,83 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + + +// Defines for task manager and such +#define CALTDEL LCTL(LALT(KC_DEL)) +#define TSKMGR LCTL(LSFT(KC_ESC)) + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Qwerty +* .-----------------------------------------------------------------------------------------------------------------------. +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+-------| +* | Tab | Q | W | E | R | T | NLCK | N7 | N8 | N9 | HOME | Y | U | I | O | P | Bksp | +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+-------| +* |C(ESC)| A | S | D | F | G | INS | N4 | N5 | N6 | PgUp | H | J | K | L | '" | ;: | +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+-------| +* |Shift | Z | X | C | V | B | DEL | N1 | N2 | N3 | PgDn | N | M | , | . | ? | Ent | +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+-------| +* | LCTRL| LOS | LALT | / | ` | - | = | [ |TT(1) |LT(SPC)| ] | MENU | RALT | ROS |RCTRL | CAPS |RESET | +* '-----------------------------------------------------------------------------------------------------------------------' +*/ +[0] = LAYOUT_grid( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_NLCK, KC_P7, KC_P8, KC_P9, KC_HOME, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_INS, KC_P4, KC_P5, KC_P6, KC_PGUP, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_DEL, KC_P1, KC_P2, KC_P3, KC_PGDN, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_LCTRL, KC_LGUI, KC_LALT, KC_BSLS, KC_GRV, KC_MINS, KC_EQL, KC_LBRC, TT(1), LT(2, KC_SPC), KC_RBRC, KC_MENU, KC_RALT, KC_RGUI, KC_RCTRL, KC_CAPS, RESET +), + +/* 1 +* .-----------------------------------------------------------------------------------------------------------------------. +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+-------| +* | ~ | ! | @ | # | $ | % | | | | | | ^ | & | * | ( | ) | Bksp | +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+-------| +* | \ | 1 | 2 | 3 | 4 | 5 | | | | | 6 | 7 | 8 | 9 | 0 | / | | +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+-------| +* | | | | | | | | | | | | | | | + | = | | +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+-------| +* |C.A.D.|TSKMGR| | | | | | | | | | | | | SPC | | | ` | +* '-----------------------------------------------------------------------------------------------------------------------' +*/ +[1] = LAYOUT_grid( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, _______, _______, _______, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_SLSH, KC_1, KC_2, KC_3, KC_4, KC_5, _______, _______, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PPLS, KC_EQL, _______, + CALTDEL, TSKMGR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_SPC, KC_NUBS, KC_GRV +), + +/* 2 +* .----------------------------------------------------------------------------------------------------------------------. +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| +* | RHUI | RSAI | | | UP | | | | | | | | _ | | ( | ) | RVAI | +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| +* | RHUD | RSAD | | LEFT | DOWN |RIGHT | | | | | | | - | | [ | ] | RVAD | +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| +* | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | F12 | | +* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| +* |RESET | RTOG | | | | | | | | | | | | | | RMOD |RRMOD | +* '----------------------------------------------------------------------------------------------------------------------' +*/ +[2] = LAYOUT_grid( + RGB_HUI, RGB_SAI, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, KC_UNDS, _______, KC_LBRC, KC_RBRC, RGB_VAI, + RGB_HUD, RGB_SAD, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, KC_MINS, _______, KC_LCBR, KC_RCBR, RGB_VAD, + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, + RESET, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD, RGB_RMOD +), +}; diff --git a/keyboards/checkerboards/candybar_ortho/keymaps/via/readme.md b/keyboards/checkerboards/candybar_ortho/keymaps/via/readme.md new file mode 100644 index 0000000000..16ffb72e72 --- /dev/null +++ b/keyboards/checkerboards/candybar_ortho/keymaps/via/readme.md @@ -0,0 +1,2 @@ +# Keymap for VIA + diff --git a/keyboards/checkerboards/candybar_ortho/keymaps/via/rules.mk b/keyboards/checkerboards/candybar_ortho/keymaps/via/rules.mk new file mode 100644 index 0000000000..16d33cd89f --- /dev/null +++ b/keyboards/checkerboards/candybar_ortho/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes + diff --git a/keyboards/checkerboards/candybar_ortho/readme.md b/keyboards/checkerboards/candybar_ortho/readme.md new file mode 100644 index 0000000000..c92db47055 --- /dev/null +++ b/keyboards/checkerboards/candybar_ortho/readme.md @@ -0,0 +1,13 @@ +# CandyBar_Ortho + +The CandyBar Ortho PCB is a drop-in replacement PCB with an ortho layout for the CandyBar by TheKey.Company. + +* Keyboard Maintainer: Nasp +* Hardware Supported: CandyBar +* Hardware Availability: https://www.checkerboards.xyz/candybar-ortho-prototype-pcb-and-fr4-plate.html + +Make example for this keyboard (after setting up your build environment): + + make checkerboards/candybar_ortho:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/checkerboards/candybar_ortho/rules.mk b/keyboards/checkerboards/candybar_ortho/rules.mk new file mode 100644 index 0000000000..8f0f91d057 --- /dev/null +++ b/keyboards/checkerboards/candybar_ortho/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/checkerboards/nop60/config.h b/keyboards/checkerboards/nop60/config.h new file mode 100644 index 0000000000..784594df7c --- /dev/null +++ b/keyboards/checkerboards/nop60/config.h @@ -0,0 +1,64 @@ + /* +Copyright 2021 Nathan Spears + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7070 +#define PRODUCT_ID 0x1416 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Nasp +#define PRODUCT NOP60 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { F0, F1, E6, B7, C6 } +#define MATRIX_COL_PINS { F6, F5, F4, D0, D7, D3, D4, D5, D6, F7, C7, B4, B6, B5 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Switch LED Backlighting */ +#define BACKLIGHT_PIN D1 +#define BACKLIGHT_PWM_DRIVER PWMD3 +#define BACKLIGHT_LEVELS 6 +#define BACKLIGHT_BREATHING +#define BREATHING_PERIOD 6 + +// ws2812 options +#define RGB_DI_PIN D2 // pin the DI on the ws2812 is hooked-up to +#define RGBLIGHT_ANIMATIONS // run RGB animations +#define RGBLED_NUM 14 // number of LEDs +#define RGBLIGHT_HUE_STEP 12 // units to step when in/decreasing hue +#define RGBLIGHT_SAT_STEP 12 // units to step when in/decresing saturation +#define RGBLIGHT_VAL_STEP 12 // units to step when in/decreasing value (brightness) + + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE + +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE diff --git a/keyboards/checkerboards/nop60/info.json b/keyboards/checkerboards/nop60/info.json new file mode 100644 index 0000000000..82ff7229fa --- /dev/null +++ b/keyboards/checkerboards/nop60/info.json @@ -0,0 +1,15 @@ +{ + "keyboard_name": "nop60", + "url": "", + "maintainer": "nasp", + "width": 15, + "height": 5, + "layouts": { + "LAYOUT": { + "2x3u": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"~", "x":13, "y":0}, {"label":"Bksp", "x":14, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"Fn", "x":14, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Win", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":3}, {"x":7, "y":4}, {"x":8, "y":4, "w":3}, {"label":"Alt", "x":11, "y":4, "w":1.5}, {"label":"Win", "x":12.5, "y":4}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}] + }, + "LAYOUT": { + "7u": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"~", "x":13, "y":0}, {"label":"Bksp", "x":14, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"Fn", "x":14, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Win", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"label":"Alt", "x":11, "y":4, "w":1.5}, {"label":"Win", "x":12.5, "y":4}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}] + } + } +} diff --git a/keyboards/checkerboards/nop60/keymaps/2x3u/config.h b/keyboards/checkerboards/nop60/keymaps/2x3u/config.h new file mode 100644 index 0000000000..598074ad2c --- /dev/null +++ b/keyboards/checkerboards/nop60/keymaps/2x3u/config.h @@ -0,0 +1,23 @@ + /* + Copyright 2020 Alec Penland + Copyright 2020 Garret Gartner + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ + +#pragma once + +#define TAPPING_TERM 175 + +#define TAPPING_TOGGLE 2 diff --git a/keyboards/checkerboards/nop60/keymaps/2x3u/keymap.c b/keyboards/checkerboards/nop60/keymaps/2x3u/keymap.c new file mode 100644 index 0000000000..eb05ab1364 --- /dev/null +++ b/keyboards/checkerboards/nop60/keymaps/2x3u/keymap.c @@ -0,0 +1,83 @@ + /* + Copyright 2021 Nathan Spears + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Default QWERTY layer + * ,-------------------------------------------------------------. + * |Esc| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ |Del| + * |-------------------------------------------------------------| + * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Bksp | + * |-------------------------------------------------------------| + * | Caps | A | S | D | F | G | H | J | K | L | ; | ' | Enter | + * |-------------------------------------------------------------| + * | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | FN | + * |-------------------------------------------------------------| + * |Ctrl |GUI |Alt |Space |BLTOG |Space |Alt |GUI |Ctrl | + * `-------------------------------------------------------------' + */ + [0] = LAYOUT_2x3u( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_SPC, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, BL_TOGG, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL + ), + /* Main Numbers, Symbols & Function Layer (MOMENTARY) + * ,------------------------------------------------------------------------------. + * | `~ | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |Del | | + * |------------------------------------------------------------------------------| + * |RTOG |RMOD| UP | | | | | | | | | | | | | + * |------------------------------------------------------------------------------| + * |BRTHE |LFT|DWN|RGHT| | | | | | | | | | | + * |------------------------------------------------------------------------------| + * |BINC |BDEC|BTOG| | | | | | | | | | | | + * |------------------------------------------------------------------------------| + * | | | | | | | | |RESET | + * `------------------------------------------------------------------------------' + */ + [1] = LAYOUT_2x3u( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, + RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + BL_INC, BL_DEC, BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, RESET + ), + + /* ALTERNATE Function layer (MOMENTARY) + * ,------------------------------------------------------------------------------. + * | `~ | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |Del | | + * |------------------------------------------------------------------------------| + * |RTOG |RMOD| UP | | | | | | | | | | | | | + * |------------------------------------------------------------------------------| + * |BRTHE |LFT|DWN|RGHT| | | | | | | | | | | + * |------------------------------------------------------------------------------| + * |BINC |BDEC|BTOG| | | | | | | | | | | | + * |------------------------------------------------------------------------------| + * | | | | | | | | |RESET | + * `------------------------------------------------------------------------------' + */ + [2] = LAYOUT_2x3u( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, + RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + BL_INC, BL_DEC, BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, RESET + ) +}; diff --git a/keyboards/checkerboards/nop60/keymaps/7u/config.h b/keyboards/checkerboards/nop60/keymaps/7u/config.h new file mode 100644 index 0000000000..faba80d278 --- /dev/null +++ b/keyboards/checkerboards/nop60/keymaps/7u/config.h @@ -0,0 +1,25 @@ + /* + Copyright 2020 Alec Penland + Copyright 2020 Garret Gartner + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ + +#pragma once + +#define TAPPING_TERM 175 + +#define PERMISSIVE_HOLD + +#define MOD_TAP_INTERUPT diff --git a/keyboards/checkerboards/nop60/keymaps/7u/keymap.c b/keyboards/checkerboards/nop60/keymaps/7u/keymap.c new file mode 100644 index 0000000000..1d230c3632 --- /dev/null +++ b/keyboards/checkerboards/nop60/keymaps/7u/keymap.c @@ -0,0 +1,85 @@ + /* + Copyright 2021 Nathan Spears + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + + +#define RS_SLS RSFT_T(KC_SLSH) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Default QWERTY layer + * ,-------------------------------------------------------------. + * |Esc| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ |Del| + * |-------------------------------------------------------------| + * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Bksp | + * |-------------------------------------------------------------| + * | Caps | A | S | D | F | G | H | J | K | L | ; | ' | Enter | + * |-------------------------------------------------------------| + * | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | FN | + * |-------------------------------------------------------------| + * |Ctrl |GUI |Alt | Space |Alt |GUI |Ctrl | + * `-------------------------------------------------------------' + */ + [0] = LAYOUT_7u( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, TT(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL + ), + /* Main Numbers, Symbols & Function Layer + * ,------------------------------------------------------------------------------. + * | `~ | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |Del | | + * |------------------------------------------------------------------------------| + * |RTOG |RMOD| UP | | | | | | | | | | | | | + * |------------------------------------------------------------------------------| + * |BRTHE |LFT|DWN|RGHT| | | | | | | | | | | + * |------------------------------------------------------------------------------| + * |BINC |BDEC|BTOG| | | | | | | | | | | | + * |------------------------------------------------------------------------------| + * | | | | | | |RESET | + * `------------------------------------------------------------------------------' + */ + [1] = LAYOUT_7u( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, + RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + BL_INC, BL_DEC, BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, RESET + ), + + /* Main Numbers, Symbols & Function Layer + * ,------------------------------------------------------------------------------. + * | `~ | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |Del | | + * |------------------------------------------------------------------------------| + * |RTOG |RMOD| UP | | | | | | | | | | | | | + * |------------------------------------------------------------------------------| + * |BRTHE |LFT|DWN|RGHT| | | | | | | | | | | + * |------------------------------------------------------------------------------| + * |BINC |BDEC|BTOG| | | | | | | | | | | | + * |------------------------------------------------------------------------------| + * | | | | | | |RESET | + * `------------------------------------------------------------------------------' + */ + [2] = LAYOUT_7u( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, + RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + BL_INC, BL_DEC, BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, RESET + ) +}; diff --git a/keyboards/checkerboards/nop60/keymaps/via/config.h b/keyboards/checkerboards/nop60/keymaps/via/config.h new file mode 100644 index 0000000000..e862c25483 --- /dev/null +++ b/keyboards/checkerboards/nop60/keymaps/via/config.h @@ -0,0 +1,22 @@ + /* + Copyright 2021 Nathan Spears + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ + +#pragma once + +#define TAPPING_TERM 175 + +#define TAPPING_TOGGLE 2 diff --git a/keyboards/checkerboards/nop60/keymaps/via/keymap.c b/keyboards/checkerboards/nop60/keymaps/via/keymap.c new file mode 100644 index 0000000000..06714115f5 --- /dev/null +++ b/keyboards/checkerboards/nop60/keymaps/via/keymap.c @@ -0,0 +1,100 @@ + /* + Copyright 2021 Nathan Spears + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// Layer names +enum nop60_layers{ + // - Base layer: + _BASE, + // - Symbols, numbers, and functions: + _FN1, + // - Alternate Function layer: + _FN2, + // - VIA Layer: + _VIA +}; + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Default QWERTY layer + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┠┌───┠+ * │Esc│ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │Del│BkS│ │PgU│ + * ├───┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤ ├───┤ + * │Tab │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ' │Enter │ │PgD│ + * ├────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──┬───┘ ├───┤ + * │LShift│ Z │ X │ C │ V │ B │ N │ M │ , │ . │Sft/│ ┌───┠│CAP│ + * ├────┬─┴─┬─┴──┬┴───┴───┴─┬─┴───┴──┬┴───┼───┴┬───┘ │ ↑ │ └───┘ + * │LCtl│OS │LAlt│ Fn │ Space │RAlt│ Ln │ ┌───┼───┼───┠+ * └────┴───┴────┴──────────┴────────┴────┴────┘ │ ↠│ ↓ │ → │ + * └───┴───┴───┘ + */ + [_BASE] = LAYOUT_2x3u( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_SPC, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, BL_TOGG, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL + ), + /* Main Numbers, Symbols & Function Layer (MOMENTARY) + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┠┌───┠+ * │ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ [ │ ] │ \ │ │ │Hme│ + * ├───┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤ ├───┤ + * │ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ │ │End│ + * ├────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──┬───┘ ├───┤ + * │ │ ( │ ) │ ; │ . │ │ - │ + │ * │ / │ = │ ┌───┠│ │ + * ├────┬─┴─┬─┴──┬┴───┴───┴─┬─┴───┴──┬┴───┼───┴┬───┘ │ │ └───┘ + * │ │ │ │ │ │ │ │ ┌───┼───┼───┠+ * └────┴───┴────┴──────────┴────────┴────┴────┘ │ │ │ │ + * └───┴───┴───┘ + */ + [_FN1] = LAYOUT_2x3u( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, + RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + BL_INC, BL_DEC, BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, RESET + ), + + /* ALTERNATE Function layer (MOMENTARY) + * ┌────┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┠┌───┠+ * │ PWR│F1 │F2 │F3 │F4 │F5 │F6 │ │ │ │ │PRV│NXT│ │VL+│ + * ├────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤ ├───┤ + * │ SLP │F7 │F8 │F9 │F10│F11│F12│ │ │ │ │ PLAY │ │VL-│ + * ├─────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──┬───┘ ├───┤ + * │ WAKE │ │ │ │ │ │ │ │ │ │ │ ┌───┠│ │ + * ├────┬──┴─┬─┴──┬┴───┴───┴─┬─┴───┴──┬┴───┼───┴┬───┘ │ │ └───┘ + * │RSET│ │ │ │ │ │ │ ┌───┼───┼───┠+ * └────┴────┴────┴──────────┴────────┴────┴────┘ │ │ │ │ + * └───┴───┴───┘ + */ + [_FN2] = LAYOUT_2x3u( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, + RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + BL_INC, BL_DEC, BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, RESET + ), + + [_VIA] = LAYOUT_2x3u( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, + RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + BL_INC, BL_DEC, BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, RESET + ) +}; diff --git a/keyboards/checkerboards/nop60/keymaps/via/rules.mk b/keyboards/checkerboards/nop60/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/checkerboards/nop60/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/checkerboards/nop60/nop60.c b/keyboards/checkerboards/nop60/nop60.c new file mode 100644 index 0000000000..b8a67e87df --- /dev/null +++ b/keyboards/checkerboards/nop60/nop60.c @@ -0,0 +1,18 @@ + /* + Copyright 2021 Nathan Spears + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ + +#include "nop60.h" diff --git a/keyboards/checkerboards/nop60/nop60.h b/keyboards/checkerboards/nop60/nop60.h new file mode 100644 index 0000000000..57da9d51ed --- /dev/null +++ b/keyboards/checkerboards/nop60/nop60.h @@ -0,0 +1,49 @@ + /* + Copyright 2021 Nathan Spears + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define xxx KC_NO + +#define LAYOUT_2x3u( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k4D, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3D, \ + k40, k41, k42, k44, k46, k48, k4A, k4B, k4C \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, xxx }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, xxx, k3D }, \ + { k40, k41, k42, xxx, k44, xxx, k46, xxx, k48, xxx, k4A, k4B, k4C, k4D } \ +} +#define LAYOUT_7u( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k4D, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3D, \ + k40, k41, k42, k46, k4A, k4B, k4C \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, xxx }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, xxx, k3D }, \ + { k40, k41, k42, xxx, xxx, xxx, k46, xxx, xxx, xxx, k4A, k4B, k4C, k4D } \ +} diff --git a/keyboards/checkerboards/nop60/readme.md b/keyboards/checkerboards/nop60/readme.md new file mode 100644 index 0000000000..fc5fecbfa0 --- /dev/null +++ b/keyboards/checkerboards/nop60/readme.md @@ -0,0 +1,13 @@ +# NOP60 + +60% Universal PCB feauturing Tsangan bottom row, 2x3u bar support, backlighting, and RGB underglow. + +- Keyboard Maintainer: [Nasp](https://github.com/npspears) +- Hardware Supported: NOP60 PCB +- Hardware Availability: www.checkerboards.xyz + +Make example for this keyboard (after setting up your build environment): + + make checkerboards/nop60:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/checkerboards/nop60/rules.mk b/keyboards/checkerboards/nop60/rules.mk new file mode 100644 index 0000000000..b78caef5e1 --- /dev/null +++ b/keyboards/checkerboards/nop60/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output From c6cc6ec7f648ef955582f972e5fb3459f0ff8a84 Mon Sep 17 00:00:00 2001 From: Robin Liu Date: Thu, 13 May 2021 13:12:45 -0400 Subject: [PATCH 352/613] [Keyboard] Add Axon (#12879) Co-authored-by: Ryan Co-authored-by: Ryan --- keyboards/handwired/axon/axon.c | 18 ++ keyboards/handwired/axon/axon.h | 85 ++++++++ keyboards/handwired/axon/config.h | 48 +++++ keyboards/handwired/axon/info.json | 192 ++++++++++++++++++ .../handwired/axon/keymaps/default/keymap.c | 43 ++++ keyboards/handwired/axon/readme.md | 23 +++ keyboards/handwired/axon/rules.mk | 22 ++ 7 files changed, 431 insertions(+) create mode 100644 keyboards/handwired/axon/axon.c create mode 100644 keyboards/handwired/axon/axon.h create mode 100644 keyboards/handwired/axon/config.h create mode 100644 keyboards/handwired/axon/info.json create mode 100644 keyboards/handwired/axon/keymaps/default/keymap.c create mode 100644 keyboards/handwired/axon/readme.md create mode 100644 keyboards/handwired/axon/rules.mk diff --git a/keyboards/handwired/axon/axon.c b/keyboards/handwired/axon/axon.c new file mode 100644 index 0000000000..e5d7122138 --- /dev/null +++ b/keyboards/handwired/axon/axon.c @@ -0,0 +1,18 @@ +/* +Copyright 2021 Robin Liu + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "axon.h" diff --git a/keyboards/handwired/axon/axon.h b/keyboards/handwired/axon/axon.h new file mode 100644 index 0000000000..0d3a5c90b7 --- /dev/null +++ b/keyboards/handwired/axon/axon.h @@ -0,0 +1,85 @@ +/* +Copyright 2021 Robin Liu + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +/* +* Default layout: +* 2.75u - 2.25u spacebar +*/ +#define LAYOUT_default( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K310, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, \ + K301, K302, K304, K306, K308, K309 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210 }, \ + { KC_NO, K301, K302, KC_NO, K304, KC_NO, K306, KC_NO, K308, K309, K310 } \ +} + +/* +* Spaceswap layout: +* Electrically identical to default +* 2.25u - 2.75u spacebar +*/ +#define LAYOUT_spaceswap( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K310, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, \ + K301, K302, K304, K306, K308, K309 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210 }, \ + { KC_NO, K301, K302, KC_NO, K304, KC_NO, K306, KC_NO, K308, K309, K310 } \ +} + +/* +* 6.25u spacebar layout: +* 6.25u spacebar +*/ +#define LAYOUT_space6p25u( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K310, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, \ + K301, K302, K306, K309 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210 }, \ + { KC_NO, K301, K302, KC_NO, KC_NO, KC_NO, K306, KC_NO, KC_NO, K309, K310 } \ +} + +/* +* 7u spacebar layout: +* 7u spacebar +*/ +#define LAYOUT_space7u( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K310, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, \ + K301, K304, K309 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210 }, \ + { KC_NO, K301, KC_NO, KC_NO, K304, KC_NO, KC_NO, KC_NO, KC_NO, K309, K310 } \ +} diff --git a/keyboards/handwired/axon/config.h b/keyboards/handwired/axon/config.h new file mode 100644 index 0000000000..ef015194e8 --- /dev/null +++ b/keyboards/handwired/axon/config.h @@ -0,0 +1,48 @@ +/* +Copyright 2021 Robin Liu + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x6060 +#define DEVICE_VER 0x0001 +#define MANUFACTURER RobinL +#define PRODUCT Axon + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 11 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { D5, D6, D4, D0 } +#define MATRIX_COL_PINS { B0, D7, B1, B2, C0, C1, C2, C3, C4, C5, D1 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE + +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE diff --git a/keyboards/handwired/axon/info.json b/keyboards/handwired/axon/info.json new file mode 100644 index 0000000000..70048a8640 --- /dev/null +++ b/keyboards/handwired/axon/info.json @@ -0,0 +1,192 @@ +{ + "keyboard_name": "Axon", + "url": "https://github.com/thatfellarobin/axon", + "maintainer": "Robin L.", + "width": 12, + "height": 4, + "layouts": { + "LAYOUT_default": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + + {"x": 0, "y": 1, "w": 1.25}, + {"x": 1.25, "y": 1}, + {"x": 2.25, "y": 1}, + {"x": 3.25, "y": 1}, + {"x": 4.25, "y": 1}, + {"x": 5.25, "y": 1}, + {"x": 6.25, "y": 1}, + {"x": 7.25, "y": 1}, + {"x": 8.25, "y": 1}, + {"x": 9.25, "y": 1}, + {"x": 10.25, "y": 1, "w": 1.75}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2, "w": 1.25}, + + {"x": 1.25, "y": 3, "w": 1.25}, + {"x": 2.5, "y": 3, "w": 1.25}, + {"x": 3.75, "y": 3, "w": 2.75}, + {"x": 6.5, "y": 3, "w": 2.25}, + {"x": 8.75, "y": 3}, + {"x": 9.75, "y": 3} + ] + }, + "LAYOUT_spaceswap": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + + {"x": 0, "y": 1, "w": 1.25}, + {"x": 1.25, "y": 1}, + {"x": 2.25, "y": 1}, + {"x": 3.25, "y": 1}, + {"x": 4.25, "y": 1}, + {"x": 5.25, "y": 1}, + {"x": 6.25, "y": 1}, + {"x": 7.25, "y": 1}, + {"x": 8.25, "y": 1}, + {"x": 9.25, "y": 1}, + {"x": 10.25, "y": 1, "w": 1.75}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2, "w": 1.25}, + + {"x": 1.25, "y": 3, "w": 1.25}, + {"x": 2.5, "y": 3, "w": 1.25}, + {"x": 3.75, "y": 3, "w": 2.25}, + {"x": 6, "y": 3, "w": 2.75}, + {"x": 8.75, "y": 3}, + {"x": 9.75, "y": 3} + ] + }, + "LAYOUT_space6p25u": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + + {"x": 0, "y": 1, "w": 1.25}, + {"x": 1.25, "y": 1}, + {"x": 2.25, "y": 1}, + {"x": 3.25, "y": 1}, + {"x": 4.25, "y": 1}, + {"x": 5.25, "y": 1}, + {"x": 6.25, "y": 1}, + {"x": 7.25, "y": 1}, + {"x": 8.25, "y": 1}, + {"x": 9.25, "y": 1}, + {"x": 10.25, "y": 1, "w": 1.75}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2, "w": 1.25}, + + {"x": 1.25, "y": 3, "w": 1.25}, + {"x": 2.5, "y": 3}, + {"x": 3.5, "y": 3, "w": 6.25}, + {"x": 9.75, "y": 3} + ] + }, + "LAYOUT_space7u": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + + {"x": 0, "y": 1, "w": 1.25}, + {"x": 1.25, "y": 1}, + {"x": 2.25, "y": 1}, + {"x": 3.25, "y": 1}, + {"x": 4.25, "y": 1}, + {"x": 5.25, "y": 1}, + {"x": 6.25, "y": 1}, + {"x": 7.25, "y": 1}, + {"x": 8.25, "y": 1}, + {"x": 9.25, "y": 1}, + {"x": 10.25, "y": 1, "w": 1.75}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2, "w": 1.25}, + + {"x": 1.25, "y": 3, "w": 1.25}, + {"x": 2.5, "y": 3, "w": 7}, + {"x": 9.5, "y": 3, "w": 1.25} + ] + } + } +} diff --git a/keyboards/handwired/axon/keymaps/default/keymap.c b/keyboards/handwired/axon/keymaps/default/keymap.c new file mode 100644 index 0000000000..2afa56ef3c --- /dev/null +++ b/keyboards/handwired/axon/keymaps/default/keymap.c @@ -0,0 +1,43 @@ +/* +Copyright 2021 Robin Liu + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_default(//Layer 0 + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, MO(2), + KC_LALT, KC_LCTL, KC_SPACE, MO(1), KC_RCTL, KC_RALT + ), + + LAYOUT_default(//Layer 1 + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, + KC_TAB, KC_MINS, KC_EQL, KC_SCLN, KC_QUOT, KC_HOME, KC_END, KC_NO, KC_UP, KC_TRNS, KC_ENTER, + KC_LSFT, KC_LBRC, KC_RBRC, KC_SLSH, KC_NUBS, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, + KC_LALT, KC_LGUI, KC_SPACE, KC_TRNS, KC_RGUI, KC_RALT + ), + + LAYOUT_default(//Layer 2 + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_VOLU, KC_TRNS, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_VOLD + ), + +}; diff --git a/keyboards/handwired/axon/readme.md b/keyboards/handwired/axon/readme.md new file mode 100644 index 0000000000..ca422130ef --- /dev/null +++ b/keyboards/handwired/axon/readme.md @@ -0,0 +1,23 @@ +# Axon + +![Axon](https://i.imgur.com/VRVv9i9h.jpeg) + +Axon v1.0 built with Durock T1 and GMK Bento + +Axon is a compact 40% which uses through-hole components. Hardware repo can be found at https://github.com/thatfellarobin/axon. + +* Keyboard Maintainer: [Robin Liu](https://github.com/thatfellarobin) + +Make example for this keyboard (after setting up your build environment): + + make handwired/axon:default + +## To reset into bootloader mode: + +1. While plugged in, press and hold `BOOT` switch +2. While holding `BOOT`, press `RESET` and hold it for a second or two +3. Release `RESET` +4. Release `BOOT` +5. The keyboard should now be recognized as a USBasp programmer device. + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/handwired/axon/rules.mk b/keyboards/handwired/axon/rules.mk new file mode 100644 index 0000000000..e9a5cac276 --- /dev/null +++ b/keyboards/handwired/axon/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega328p + +# Bootloader selection +BOOTLOADER = USBasp + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output From 737fe8d76399e88767d1e3325cef39549623caee Mon Sep 17 00:00:00 2001 From: Ian G Canino Date: Thu, 13 May 2021 13:19:42 -0400 Subject: [PATCH 353/613] [Keyboard] update planck aliases (#12867) Co-authored-by: Ryan --- keyboards/planck/info.json | 196 ++++++++++++++++++------------------- 1 file changed, 97 insertions(+), 99 deletions(-) diff --git a/keyboards/planck/info.json b/keyboards/planck/info.json index dc5160021c..7e51595209 100644 --- a/keyboards/planck/info.json +++ b/keyboards/planck/info.json @@ -5,107 +5,105 @@ "width": 12, "height": 4, "layouts": { - "LAYOUT_planck_mit": { - "key_count": 47, - "layout": [ - { "w": 1, "x": 0, "y": 0 }, - { "w": 1, "x": 1, "y": 0 }, - { "w": 1, "x": 2, "y": 0 }, - { "w": 1, "x": 3, "y": 0 }, - { "w": 1, "x": 4, "y": 0 }, - { "w": 1, "x": 5, "y": 0 }, - { "w": 1, "x": 6, "y": 0 }, - { "w": 1, "x": 7, "y": 0 }, - { "w": 1, "x": 8, "y": 0 }, - { "w": 1, "x": 9, "y": 0 }, - { "w": 1, "x": 10, "y": 0 }, - { "w": 1, "x": 11, "y": 0 }, - { "w": 1, "x": 0, "y": 1 }, - { "w": 1, "x": 1, "y": 1 }, - { "w": 1, "x": 2, "y": 1 }, - { "w": 1, "x": 3, "y": 1 }, - { "w": 1, "x": 4, "y": 1 }, - { "w": 1, "x": 5, "y": 1 }, - { "w": 1, "x": 6, "y": 1 }, - { "w": 1, "x": 7, "y": 1 }, - { "w": 1, "x": 8, "y": 1 }, - { "w": 1, "x": 9, "y": 1 }, - { "w": 1, "x": 10, "y": 1 }, - { "w": 1, "x": 11, "y": 1 }, - { "w": 1, "x": 0, "y": 2 }, - { "w": 1, "x": 1, "y": 2 }, - { "w": 1, "x": 2, "y": 2 }, - { "w": 1, "x": 3, "y": 2 }, - { "w": 1, "x": 4, "y": 2 }, - { "w": 1, "x": 5, "y": 2 }, - { "w": 1, "x": 6, "y": 2 }, - { "w": 1, "x": 7, "y": 2 }, - { "w": 1, "x": 8, "y": 2 }, - { "w": 1, "x": 9, "y": 2 }, - { "w": 1, "x": 10, "y": 2 }, - { "w": 1, "x": 11, "y": 2 }, - { "w": 1, "x": 0, "y": 3 }, - { "w": 1, "x": 1, "y": 3 }, - { "w": 1, "x": 2, "y": 3 }, - { "w": 1, "x": 3, "y": 3 }, - { "w": 1, "x": 4, "y": 3 }, - { "w": 2, "x": 5, "y": 3 }, - { "w": 1, "x": 7, "y": 3 }, - { "w": 1, "x": 8, "y": 3 }, - { "w": 1, "x": 9, "y": 3 }, - { "w": 1, "x": 10, "y": 3 }, + "LAYOUT_planck_1x2uC": { + "layout": [ + { "w": 1, "x": 0, "y": 0 }, + { "w": 1, "x": 1, "y": 0 }, + { "w": 1, "x": 2, "y": 0 }, + { "w": 1, "x": 3, "y": 0 }, + { "w": 1, "x": 4, "y": 0 }, + { "w": 1, "x": 5, "y": 0 }, + { "w": 1, "x": 6, "y": 0 }, + { "w": 1, "x": 7, "y": 0 }, + { "w": 1, "x": 8, "y": 0 }, + { "w": 1, "x": 9, "y": 0 }, + { "w": 1, "x": 10, "y": 0 }, + { "w": 1, "x": 11, "y": 0 }, + { "w": 1, "x": 0, "y": 1 }, + { "w": 1, "x": 1, "y": 1 }, + { "w": 1, "x": 2, "y": 1 }, + { "w": 1, "x": 3, "y": 1 }, + { "w": 1, "x": 4, "y": 1 }, + { "w": 1, "x": 5, "y": 1 }, + { "w": 1, "x": 6, "y": 1 }, + { "w": 1, "x": 7, "y": 1 }, + { "w": 1, "x": 8, "y": 1 }, + { "w": 1, "x": 9, "y": 1 }, + { "w": 1, "x": 10, "y": 1 }, + { "w": 1, "x": 11, "y": 1 }, + { "w": 1, "x": 0, "y": 2 }, + { "w": 1, "x": 1, "y": 2 }, + { "w": 1, "x": 2, "y": 2 }, + { "w": 1, "x": 3, "y": 2 }, + { "w": 1, "x": 4, "y": 2 }, + { "w": 1, "x": 5, "y": 2 }, + { "w": 1, "x": 6, "y": 2 }, + { "w": 1, "x": 7, "y": 2 }, + { "w": 1, "x": 8, "y": 2 }, + { "w": 1, "x": 9, "y": 2 }, + { "w": 1, "x": 10, "y": 2 }, + { "w": 1, "x": 11, "y": 2 }, + { "w": 1, "x": 0, "y": 3 }, + { "w": 1, "x": 1, "y": 3 }, + { "w": 1, "x": 2, "y": 3 }, + { "w": 1, "x": 3, "y": 3 }, + { "w": 1, "x": 4, "y": 3 }, + { "w": 2, "x": 5, "y": 3 }, + { "w": 1, "x": 7, "y": 3 }, + { "w": 1, "x": 8, "y": 3 }, + { "w": 1, "x": 9, "y": 3 }, + { "w": 1, "x": 10, "y": 3 }, { "w": 1, "x": 11, "y": 3 } ] }, - "LAYOUT_planck_grid": { - "key_count": 48, - "layout": [ - { "w": 1, "x": 0, "y": 0 }, - { "w": 1, "x": 1, "y": 0 }, - { "w": 1, "x": 2, "y": 0 }, - { "w": 1, "x": 3, "y": 0 }, - { "w": 1, "x": 4, "y": 0 }, - { "w": 1, "x": 5, "y": 0 }, - { "w": 1, "x": 6, "y": 0 }, - { "w": 1, "x": 7, "y": 0 }, - { "w": 1, "x": 8, "y": 0 }, - { "w": 1, "x": 9, "y": 0 }, - { "w": 1, "x": 10, "y": 0 }, - { "w": 1, "x": 11, "y": 0 }, - { "w": 1, "x": 0, "y": 1 }, - { "w": 1, "x": 1, "y": 1 }, - { "w": 1, "x": 2, "y": 1 }, - { "w": 1, "x": 3, "y": 1 }, - { "w": 1, "x": 4, "y": 1 }, - { "w": 1, "x": 5, "y": 1 }, - { "w": 1, "x": 6, "y": 1 }, - { "w": 1, "x": 7, "y": 1 }, - { "w": 1, "x": 8, "y": 1 }, - { "w": 1, "x": 9, "y": 1 }, - { "w": 1, "x": 10, "y": 1 }, - { "w": 1, "x": 11, "y": 1 }, - { "w": 1, "x": 0, "y": 2 }, - { "w": 1, "x": 1, "y": 2 }, - { "w": 1, "x": 2, "y": 2 }, - { "w": 1, "x": 3, "y": 2 }, - { "w": 1, "x": 4, "y": 2 }, - { "w": 1, "x": 5, "y": 2 }, - { "w": 1, "x": 6, "y": 2 }, - { "w": 1, "x": 7, "y": 2 }, - { "w": 1, "x": 8, "y": 2 }, - { "w": 1, "x": 9, "y": 2 }, - { "w": 1, "x": 10, "y": 2 }, - { "w": 1, "x": 11, "y": 2 }, - { "w": 1, "x": 0, "y": 3 }, - { "w": 1, "x": 1, "y": 3 }, - { "w": 1, "x": 2, "y": 3 }, - { "w": 1, "x": 3, "y": 3 }, - { "w": 1, "x": 4, "y": 3 }, - { "w": 1, "x": 5, "y": 3 }, - { "w": 1, "x": 6, "y": 3 }, - { "w": 1, "x": 7, "y": 3 }, - { "w": 1, "x": 8, "y": 3 }, - { "w": 1, "x": 9, "y": 3 }, - { "w": 1, "x": 10, "y": 3 }, + "LAYOUT_ortho_4x12": { + "layout": [ + { "w": 1, "x": 0, "y": 0 }, + { "w": 1, "x": 1, "y": 0 }, + { "w": 1, "x": 2, "y": 0 }, + { "w": 1, "x": 3, "y": 0 }, + { "w": 1, "x": 4, "y": 0 }, + { "w": 1, "x": 5, "y": 0 }, + { "w": 1, "x": 6, "y": 0 }, + { "w": 1, "x": 7, "y": 0 }, + { "w": 1, "x": 8, "y": 0 }, + { "w": 1, "x": 9, "y": 0 }, + { "w": 1, "x": 10, "y": 0 }, + { "w": 1, "x": 11, "y": 0 }, + { "w": 1, "x": 0, "y": 1 }, + { "w": 1, "x": 1, "y": 1 }, + { "w": 1, "x": 2, "y": 1 }, + { "w": 1, "x": 3, "y": 1 }, + { "w": 1, "x": 4, "y": 1 }, + { "w": 1, "x": 5, "y": 1 }, + { "w": 1, "x": 6, "y": 1 }, + { "w": 1, "x": 7, "y": 1 }, + { "w": 1, "x": 8, "y": 1 }, + { "w": 1, "x": 9, "y": 1 }, + { "w": 1, "x": 10, "y": 1 }, + { "w": 1, "x": 11, "y": 1 }, + { "w": 1, "x": 0, "y": 2 }, + { "w": 1, "x": 1, "y": 2 }, + { "w": 1, "x": 2, "y": 2 }, + { "w": 1, "x": 3, "y": 2 }, + { "w": 1, "x": 4, "y": 2 }, + { "w": 1, "x": 5, "y": 2 }, + { "w": 1, "x": 6, "y": 2 }, + { "w": 1, "x": 7, "y": 2 }, + { "w": 1, "x": 8, "y": 2 }, + { "w": 1, "x": 9, "y": 2 }, + { "w": 1, "x": 10, "y": 2 }, + { "w": 1, "x": 11, "y": 2 }, + { "w": 1, "x": 0, "y": 3 }, + { "w": 1, "x": 1, "y": 3 }, + { "w": 1, "x": 2, "y": 3 }, + { "w": 1, "x": 3, "y": 3 }, + { "w": 1, "x": 4, "y": 3 }, + { "w": 1, "x": 5, "y": 3 }, + { "w": 1, "x": 6, "y": 3 }, + { "w": 1, "x": 7, "y": 3 }, + { "w": 1, "x": 8, "y": 3 }, + { "w": 1, "x": 9, "y": 3 }, + { "w": 1, "x": 10, "y": 3 }, { "w": 1, "x": 11, "y": 3 } ] } } From 10a3e3a34190fc8292356db9b5de021f1c734e6f Mon Sep 17 00:00:00 2001 From: Maxime Coirault Date: Thu, 13 May 2021 20:22:08 +0300 Subject: [PATCH 354/613] [Keyboard] Add Ky01 (#12844) Co-authored-by: KnoblesseOblige --- keyboards/ky01/config.h | 146 ++++++++ keyboards/ky01/info.json | 437 ++++++++++++++++++++++++ keyboards/ky01/keymaps/default/keymap.c | 41 +++ keyboards/ky01/keymaps/via/keymap.c | 60 ++++ keyboards/ky01/keymaps/via/rules.mk | 2 + keyboards/ky01/ky01.c | 17 + keyboards/ky01/ky01.h | 38 +++ keyboards/ky01/readme.md | 22 ++ keyboards/ky01/rules.mk | 22 ++ 9 files changed, 785 insertions(+) create mode 100644 keyboards/ky01/config.h create mode 100644 keyboards/ky01/info.json create mode 100644 keyboards/ky01/keymaps/default/keymap.c create mode 100644 keyboards/ky01/keymaps/via/keymap.c create mode 100644 keyboards/ky01/keymaps/via/rules.mk create mode 100644 keyboards/ky01/ky01.c create mode 100644 keyboards/ky01/ky01.h create mode 100644 keyboards/ky01/readme.md create mode 100644 keyboards/ky01/rules.mk diff --git a/keyboards/ky01/config.h b/keyboards/ky01/config.h new file mode 100644 index 0000000000..22c211dace --- /dev/null +++ b/keyboards/ky01/config.h @@ -0,0 +1,146 @@ +/* +Copyright 2020 KnoblesseOblige + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4B4F /* "KO" */ +#define PRODUCT_ID 0x4B59 /* "KY" */ +#define DEVICE_VER 0x0001 +#define MANUFACTURER KnoblesseOblige +#define PRODUCT KY-01 + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 16 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ +#define MATRIX_ROW_PINS { E6, B5, B4, D7, D4, D6 } +#define MATRIX_COL_PINS { B3, B7, D0, D1, D2, D3, D5, F0, F1, F4, F5, F6, F7, C7, C6, B6 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +// #define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 + +// #define BACKLIGHT_PIN B7 +// #define BACKLIGHT_BREATHING +// #define BACKLIGHT_LEVELS 3 + +// #define RGB_DI_PIN E2 +// #ifdef RGB_DI_PIN +// #define RGBLED_NUM 16 +// #define RGBLIGHT_HUE_STEP 8 +// #define RGBLIGHT_SAT_STEP 8 +// #define RGBLIGHT_VAL_STEP 8 +// #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +// #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +// /*== all animations enable ==*/ +// #define RGBLIGHT_ANIMATIONS +// /*== or choose animations ==*/ +// #define RGBLIGHT_EFFECT_BREATHING +// #define RGBLIGHT_EFFECT_RAINBOW_MOOD +// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL +// #define RGBLIGHT_EFFECT_SNAKE +// #define RGBLIGHT_EFFECT_KNIGHT +// #define RGBLIGHT_EFFECT_CHRISTMAS +// #define RGBLIGHT_EFFECT_STATIC_GRADIENT +// #define RGBLIGHT_EFFECT_RGB_TEST +// #define RGBLIGHT_EFFECT_ALTERNATING +// /*== customize breathing effect ==*/ +// /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +// #define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +// /*==== use exp() and sin() ====*/ +// #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +// #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +// #endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is userful for the Windows task manager shortcut (ctrl+shift+esc). + */ +// #define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +// #define BOOTMAGIC_LITE_ROW 0 +// #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/ky01/info.json b/keyboards/ky01/info.json new file mode 100644 index 0000000000..8099759318 --- /dev/null +++ b/keyboards/ky01/info.json @@ -0,0 +1,437 @@ +{ + "keyboard_name": "ky01", + "url": "https://geekhack.org/index.php?topic=107809.0", + "maintainer": "KnoblesseOblige", + "width": 16.25, + "height": 6.5, + "layouts": { + "LAYOUT": { + "layout": [ + { + "label": "Esc", + "x": 0, + "y": 0 + }, + { + "label": "F1", + "x": 2, + "y": 0 + }, + { + "label": "F2", + "x": 3, + "y": 0 + }, + { + "label": "F3", + "x": 4, + "y": 0 + }, + { + "label": "F4", + "x": 5, + "y": 0 + }, + { + "label": "F5", + "x": 6.5, + "y": 0 + }, + { + "label": "F6", + "x": 7.5, + "y": 0 + }, + { + "label": "F7", + "x": 8.5, + "y": 0 + }, + { + "label": "F8", + "x": 9.5, + "y": 0 + }, + { + "label": "F9", + "x": 11, + "y": 0 + }, + { + "label": "F10", + "x": 12, + "y": 0 + }, + { + "label": "F11", + "x": 13, + "y": 0 + }, + { + "label": "F12", + "x": 14, + "y": 0 + }, + { + "label": "PrtSc", + "x": 15.25, + "y": 0 + }, + { + "label": "\\u00ac", + "x": 0, + "y": 1.5 + }, + { + "label": "!", + "x": 1, + "y": 1.5 + }, + { + "label": "\"", + "x": 2, + "y": 1.5 + }, + { + "label": "\\u00a3", + "x": 3, + "y": 1.5 + }, + { + "label": "$", + "x": 4, + "y": 1.5 + }, + { + "label": "%", + "x": 5, + "y": 1.5 + }, + { + "label": "^", + "x": 6, + "y": 1.5 + }, + { + "label": "&", + "x": 7, + "y": 1.5 + }, + { + "label": "*", + "x": 8, + "y": 1.5 + }, + { + "label": "(", + "x": 9, + "y": 1.5 + }, + { + "label": ")", + "x": 10, + "y": 1.5 + }, + { + "label": "_", + "x": 11, + "y": 1.5 + }, + { + "label": "+", + "x": 12, + "y": 1.5 + }, + { + "label": "Backspace", + "x": 13, + "y": 1.5 + }, + { + "label": "Delete", + "x": 14, + "y": 1.5 + }, + { + "label": "Insert", + "x": 15.25, + "y": 1.5 + }, + { + "label": "Tab", + "x": 0, + "y": 2.5, + "w": 1.5 + }, + { + "label": "Q", + "x": 1.5, + "y": 2.5 + }, + { + "label": "W", + "x": 2.5, + "y": 2.5 + }, + { + "label": "E", + "x": 3.5, + "y": 2.5 + }, + { + "label": "R", + "x": 4.5, + "y": 2.5 + }, + { + "label": "T", + "x": 5.5, + "y": 2.5 + }, + { + "label": "Y", + "x": 6.5, + "y": 2.5 + }, + { + "label": "U", + "x": 7.5, + "y": 2.5 + }, + { + "label": "I", + "x": 8.5, + "y": 2.5 + }, + { + "label": "O", + "x": 9.5, + "y": 2.5 + }, + { + "label": "P", + "x": 10.5, + "y": 2.5 + }, + { + "label": "{", + "x": 11.5, + "y": 2.5 + }, + { + "label": "}", + "x": 12.5, + "y": 2.5 + }, + { + "label": "Enter", + "x": 13.75, + "y": 2.5, + "w": 1.25, + "h": 2 + }, + { + "label": "Delete", + "x": 15.25, + "y": 2.5 + }, + { + "label": "Caps Lock", + "x": 0, + "y": 3.5, + "w": 1.75 + }, + { + "label": "A", + "x": 1.75, + "y": 3.5 + }, + { + "label": "S", + "x": 2.75, + "y": 3.5 + }, + { + "label": "D", + "x": 3.75, + "y": 3.5 + }, + { + "label": "F", + "x": 4.75, + "y": 3.5 + }, + { + "label": "G", + "x": 5.75, + "y": 3.5 + }, + { + "label": "H", + "x": 6.75, + "y": 3.5 + }, + { + "label": "J", + "x": 7.75, + "y": 3.5 + }, + { + "label": "K", + "x": 8.75, + "y": 3.5 + }, + { + "label": "L", + "x": 9.75, + "y": 3.5 + }, + { + "label": ":", + "x": 10.75, + "y": 3.5 + }, + { + "label": "@", + "x": 11.75, + "y": 3.5 + }, + { + "label": "~", + "x": 12.75, + "y": 3.5 + }, + { + "label": "PgDn", + "x": 15.25, + "y": 3.5 + }, + { + "label": "Shift", + "x": 0, + "y": 4.5, + "w": 1.25 + }, + { + "label": "|", + "x": 1.25, + "y": 4.5 + }, + { + "label": "Z", + "x": 2.25, + "y": 4.5 + }, + { + "label": "X", + "x": 3.25, + "y": 4.5 + }, + { + "label": "C", + "x": 4.25, + "y": 4.5 + }, + { + "label": "V", + "x": 5.25, + "y": 4.5 + }, + { + "label": "B", + "x": 6.25, + "y": 4.5 + }, + { + "label": "N", + "x": 7.25, + "y": 4.5 + }, + { + "label": "M", + "x": 8.25, + "y": 4.5 + }, + { + "label": "<", + "x": 9.25, + "y": 4.5 + }, + { + "label": ">", + "x": 10.25, + "y": 4.5 + }, + { + "label": "?", + "x": 11.25, + "y": 4.5 + }, + { + "label": "Shift", + "x": 12.25, + "y": 4.5, + "w": 1.75 + }, + { + "label": "\\u2191", + "x": 14.25, + "y": 4.5 + }, + { + "label": "Ctrl", + "x": 0, + "y": 5.5, + "w": 1.25 + }, + { + "label": "Win", + "x": 1.25, + "y": 5.5, + "w": 1.25 + }, + { + "label": "Alt", + "x": 2.5, + "y": 5.5, + "w": 1.25 + }, + { + "x": 3.75, + "y": 5.5, + "w": 6.25 + }, + { + "label": "AltGr", + "x": 10, + "y": 5.5 + }, + { + "label": "Win", + "x": 11, + "y": 5.5 + }, + { + "label": "Ctrl", + "x": 12, + "y": 5.5 + }, + { + "label": "\\u2190", + "x": 13.25, + "y": 5.5 + }, + { + "label": "\\u2193", + "x": 14.25, + "y": 5.5 + }, + { + "label": "\\u2192", + "x": 15.25, + "y": 5.5 + } + ] + } + } +} diff --git a/keyboards/ky01/keymaps/default/keymap.c b/keyboards/ky01/keymaps/default/keymap.c new file mode 100644 index 0000000000..fc08c14a87 --- /dev/null +++ b/keyboards/ky01/keymaps/default/keymap.c @@ -0,0 +1,41 @@ +/* Copyright 2020 KnoblesseOblige + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layer_names { + QWERTY, + L1 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [QWERTY] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, LT(L1, KC_PSCR), + KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQUAL, KC_BSPC, KC_DELETE, KC_INS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DELETE, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENTER, KC_PGDN, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, KC_RGUI, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT + ), + [L1] = LAYOUT( + RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/ky01/keymaps/via/keymap.c b/keyboards/ky01/keymaps/via/keymap.c new file mode 100644 index 0000000000..b28f467d02 --- /dev/null +++ b/keyboards/ky01/keymaps/via/keymap.c @@ -0,0 +1,60 @@ +/* Copyright 2020 KnoblesseOblige + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layer_names { + QWERTY, + L1, + L2, + L3 +}; + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [QWERTY] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, + KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQUAL, KC_BSPC, KC_DELETE, KC_INS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DELETE, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENTER, KC_PGDN, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, KC_RGUI, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT + ), + [L1] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [L2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [L3] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/ky01/keymaps/via/rules.mk b/keyboards/ky01/keymaps/via/rules.mk new file mode 100644 index 0000000000..36b7ba9cbc --- /dev/null +++ b/keyboards/ky01/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/ky01/ky01.c b/keyboards/ky01/ky01.c new file mode 100644 index 0000000000..7ddffc01d9 --- /dev/null +++ b/keyboards/ky01/ky01.c @@ -0,0 +1,17 @@ +/* Copyright 2020 KnoblesseOblige + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "ky01.h" diff --git a/keyboards/ky01/ky01.h b/keyboards/ky01/ky01.h new file mode 100644 index 0000000000..e5280bd244 --- /dev/null +++ b/keyboards/ky01/ky01.h @@ -0,0 +1,38 @@ +/* Copyright 2020 KnoblesseOblige + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + +#define LAYOUT( \ + k00, k02, k03, k04, k05, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2f, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3f, \ + k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, \ + k50, k51, k52, k56, k59, k5a, k5b, k5c, k5d, k5e \ +) \ +{ \ + { k00, XXX, k02, k03, k04, k05, XXX, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, XXX, k2f }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, XXX, k3f }, \ + { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, XXX, XXX }, \ + { k50, k51, k52, XXX, XXX, XXX, k56, XXX, XXX, k59, k5a, k5b, k5c, k5d, k5e, XXX } \ +} diff --git a/keyboards/ky01/readme.md b/keyboards/ky01/readme.md new file mode 100644 index 0000000000..8bbab45733 --- /dev/null +++ b/keyboards/ky01/readme.md @@ -0,0 +1,22 @@ +# ky01 + +![ky01](https://i.imgur.com/Un24BUs.png) + +A 75% Top-Mount Keyboard By KCK. + +* Keyboard Maintainer: [KnoblesseOblige](https://github.com/KnoblesseOblige) +* Hardware Supported: KY01 +* Hardware Availability: limited [Group Buy](https://geekhack.org/index.php?topic=107809.0) finished + +Make example for this keyboard (after setting up your build environment): + + make ky01:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +# How to enter bootloader + +* hold left shift + right shift + B +* OR hold escape + F13 (top right most key) +* OR short the reset pins on the pcb, then plug the usb +* OR (if you already flashed via) hold escape and then plug the usb diff --git a/keyboards/ky01/rules.mk b/keyboards/ky01/rules.mk new file mode 100644 index 0000000000..000f55911a --- /dev/null +++ b/keyboards/ky01/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output From 542918d073c36550b9332f2c99d5cda28507f0f4 Mon Sep 17 00:00:00 2001 From: Leon Anavi Date: Thu, 13 May 2021 20:22:54 +0300 Subject: [PATCH 355/613] [Keymap] ANAVI Macro Pad 2 add MS Teams keymap (#12779) This keymap contains the following shortcuts for Microsoft Teams on MS Windows and GNU/Linux distributions: - Ctrl+Shift+M: Toggle mute - Ctrl+Shift+O: Toggle video (doesn't work in a web browser) NOTE: Mac users should replace Ctrl with Command in all shortcuts Signed-off-by: Leon Anavi --- .../anavi/macropad2/keymaps/msteams/keymap.c | 41 +++++++++++++++++++ .../anavi/macropad2/keymaps/msteams/rules.mk | 1 + 2 files changed, 42 insertions(+) create mode 100644 keyboards/anavi/macropad2/keymaps/msteams/keymap.c create mode 100644 keyboards/anavi/macropad2/keymaps/msteams/rules.mk diff --git a/keyboards/anavi/macropad2/keymaps/msteams/keymap.c b/keyboards/anavi/macropad2/keymaps/msteams/keymap.c new file mode 100644 index 0000000000..977b4e65fb --- /dev/null +++ b/keyboards/anavi/macropad2/keymaps/msteams/keymap.c @@ -0,0 +1,41 @@ +/* Copyright 2021 Leon Anavi + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +/* + * This keymap contains the following shortcuts for Microsoft Teams + * on MS Windows and GNU/Linux distributions: + * + * Ctrl+Shift+M: Toggle mute + * Ctrl+Shift+O: Toggle video (doesn't work in a web browser) + * + * NOTE: Mac users should replace Ctrl with Command in all + * shortcuts + */ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + LCTL(LSFT(KC_M)), LCTL(LSFT(KC_O)) + ) +}; + +const uint16_t PROGMEM test_combo[] = {LCTL(LSFT(KC_M)), LCTL(LSFT(KC_O)), COMBO_END}; +combo_t key_combos[COMBO_COUNT] = {COMBO_ACTION(test_combo)}; + +void process_combo_event(uint16_t combo_index, bool pressed) { + backlight_step(); +} diff --git a/keyboards/anavi/macropad2/keymaps/msteams/rules.mk b/keyboards/anavi/macropad2/keymaps/msteams/rules.mk new file mode 100644 index 0000000000..ab1e438182 --- /dev/null +++ b/keyboards/anavi/macropad2/keymaps/msteams/rules.mk @@ -0,0 +1 @@ +COMBO_ENABLE = yes From 5db0a8e2ccdf5b43f5010ef5d3e764d5aa26f64e Mon Sep 17 00:00:00 2001 From: klausweiss Date: Thu, 13 May 2021 19:46:05 +0200 Subject: [PATCH 356/613] [Keyboard][handwired/bolek] Add PERMISSIVE_HOLD and IGNORE_MOD_TAP_INTERRUPT (#12661) --- keyboards/handwired/bolek/config.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/keyboards/handwired/bolek/config.h b/keyboards/handwired/bolek/config.h index 4d2adc81e0..ecf0b0de36 100644 --- a/keyboards/handwired/bolek/config.h +++ b/keyboards/handwired/bolek/config.h @@ -145,3 +145,6 @@ along with this program. If not, see . /* Bootmagic Lite key configuration */ //#define BOOTMAGIC_LITE_ROW 0 //#define BOOTMAGIC_LITE_COLUMN 0 + +#define PERMISSIVE_HOLD +#define IGNORE_MOD_TAP_INTERRUPT From 2f6618d6991a3cce81be10baba1e9feba3fa3b3c Mon Sep 17 00:00:00 2001 From: Boo <32691832+BanchouBoo@users.noreply.github.com> Date: Thu, 13 May 2021 13:51:57 -0400 Subject: [PATCH 357/613] [Keymap] Add iris keymap 'boo' (#12749) --- keyboards/keebio/iris/keymaps/boo/config.h | 26 +++ keyboards/keebio/iris/keymaps/boo/keymap.c | 250 +++++++++++++++++++++ keyboards/keebio/iris/keymaps/boo/rules.mk | 3 + 3 files changed, 279 insertions(+) create mode 100644 keyboards/keebio/iris/keymaps/boo/config.h create mode 100644 keyboards/keebio/iris/keymaps/boo/keymap.c create mode 100644 keyboards/keebio/iris/keymaps/boo/rules.mk diff --git a/keyboards/keebio/iris/keymaps/boo/config.h b/keyboards/keebio/iris/keymaps/boo/config.h new file mode 100644 index 0000000000..6af7d40852 --- /dev/null +++ b/keyboards/keebio/iris/keymaps/boo/config.h @@ -0,0 +1,26 @@ +/* +Copyright 2017 Danny Nguyen + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +/* Use I2C or Serial, not both */ +#define USE_SERIAL + +/* Select hand configuration */ +#define MASTER_LEFT + +#define TAPPING_TERM 200 diff --git a/keyboards/keebio/iris/keymaps/boo/keymap.c b/keyboards/keebio/iris/keymaps/boo/keymap.c new file mode 100644 index 0000000000..27cbc5daf2 --- /dev/null +++ b/keyboards/keebio/iris/keymaps/boo/keymap.c @@ -0,0 +1,250 @@ +/* +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to +*/ + +#include QMK_KEYBOARD_H + +enum layers { + _DVORAK, + _QWERTY, + _CODE, +}; + +// work in progress simulation of kakoune behavior +bool kak_mode = false; + +enum tapdances { + _LCTLGUI, +}; + +enum keycodes { + KC_KAK = SAFE_RANGE, +}; + +qk_tap_dance_action_t tap_dance_actions[] = { + [_LCTLGUI] = ACTION_TAP_DANCE_DOUBLE(KC_LCTL, KC_LGUI), +}; + +// Layers +#define DVORAK DF(_DVORAK) +#define QWERTY DF(_QWERTY) +#define CODE MO(_CODE) + +// Modifiers +#define COPY LCTL(KC_C) +#define PASTE LCTL(KC_V) + +// Tapdances +#define LCTLGUI TD(_LCTLGUI) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_DVORAK] = LAYOUT( +// ┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┠+ KC_PSCR, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, QWERTY, +// ├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, +// ├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, +// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ + KC_LGUI, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_PGUP, KC_PGDN, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT, +// └────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘ + LCTLGUI, KC_LALT, KC_LSFT, KC_BSPC, KC_SPC, CODE +// └────────┴────────┴────────┘ └────────┴────────┴────────┘ + ), + + [_QWERTY] = LAYOUT( +// ┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┠+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, DVORAK, +// ├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + _______, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, +// ├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + _______, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, +// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ + _______, KC_Z, KC_X, KC_C, KC_V, KC_B, _______, _______, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, _______, +// └────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘ + _______, _______, _______, _______, _______, _______ +// └────────┴────────┴────────┘ └────────┴────────┴────────┘ + ), + + + [_CODE] = LAYOUT( +// ┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┠+ KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, +// ├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + _______, KC_LABK, KC_LCBR, KC_LBRC, KC_LPRN, KC_AMPR, KC_AT, KC_MINS, KC_SLSH, KC_DLR, KC_EXLM, KC_BSLS, +// ├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + KC_GRAVE,KC_RABK, KC_RCBR, KC_RBRC, KC_RPRN, KC_PIPE, KC_CIRC, KC_PLUS, KC_ASTR, KC_PERC, KC_UP, KC_EQL, +// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ + RESET, _______, _______, _______, _______, _______, KC_HOME, KC_END, KC_KAK, COPY, PASTE, KC_LEFT, KC_DOWN, KC_RIGHT, +// └────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘ + _______, _______, _______, KC_DEL, _______, _______ +// └────────┴────────┴────────┘ └────────┴────────┴────────┘ + ), +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case KC_KAK: { + if (record->event.pressed) { + kak_mode = !kak_mode; + return false; + } + } break; + } + + if (kak_mode) { + switch (keycode) { + case KC_ESC: { + if (record->event.pressed) { + kak_mode = false; + return false; + } + } break; + case KC_I: { + if (record->event.pressed) { + kak_mode = false; + tap_code(KC_LEFT); + return false; + } + } break; + case KC_A: { + if (record->event.pressed) { + kak_mode = false; + tap_code(KC_RIGHT); + return false; + } + } break; + case KC_W: { + if (record->event.pressed) { + uint8_t mods = get_mods(); + if ((mods & MOD_MASK_SHIFT) == 0) + tap_code(KC_RIGHT); + set_mods(MOD_MASK_CS); + tap_code(KC_RIGHT); + set_mods(mods); + return false; + } + } break; + case KC_B: { + if (record->event.pressed) { + uint8_t mods = get_mods(); + if ((mods & MOD_MASK_SHIFT) == 0) + tap_code(KC_LEFT); + set_mods(MOD_MASK_CS); + tap_code(KC_LEFT); + set_mods(mods); + return false; + } + } break; + case KC_H: { + if (record->event.pressed) { + if ((get_mods() & MOD_MASK_ALT) == 0) + tap_code(KC_LEFT); + else + tap_code(KC_HOME); + return false; + } + } break; + case KC_J: { + if (record->event.pressed) { + tap_code(KC_DOWN); + return false; + } + } break; + case KC_K: { + if (record->event.pressed) { + tap_code(KC_UP); + return false; + } + } break; + case KC_L: { + if (record->event.pressed) { + if ((get_mods() & MOD_MASK_ALT) == 0) + tap_code(KC_RIGHT); + else + tap_code(KC_END); + return false; + } + } break; + case KC_X: { + if (record->event.pressed) { + uint8_t mods = get_mods(); + tap_code(KC_HOME); + set_mods(MOD_MASK_SHIFT); + tap_code(KC_END); + set_mods(mods); + return false; + } + } break; + case KC_Y: { + if (record->event.pressed) { + tap_code16(KC_COPY); + return false; + } + } break; + case KC_D: { + if (record->event.pressed) { + tap_code16(KC_COPY); + tap_code(KC_BSPC); + return false; + } + } break; + case KC_C: { + if (record->event.pressed) { + tap_code(KC_BSPC); + kak_mode = false; + return false; + } + } break; + case KC_P: { + if (record->event.pressed) { + if ((get_mods() & MOD_MASK_SHIFT) == 0) + tap_code(KC_RIGHT); + else + tap_code(KC_LEFT); + tap_code16(KC_PSTE); + return false; + } + } break; + case KC_R: { + if (record->event.pressed) { + tap_code16(KC_PSTE); + return false; + } + } break; + case KC_U: { + if (record->event.pressed) { + if ((get_mods() & MOD_MASK_SHIFT) == 0) + tap_code16(LCTL(KC_Z)); + else + tap_code16(LCTL(KC_Y)); + return false; + } + } break; + } + } + return true; +} diff --git a/keyboards/keebio/iris/keymaps/boo/rules.mk b/keyboards/keebio/iris/keymaps/boo/rules.mk new file mode 100644 index 0000000000..1cd3a2ea25 --- /dev/null +++ b/keyboards/keebio/iris/keymaps/boo/rules.mk @@ -0,0 +1,3 @@ +RGBLIGHT_ENABLE = no +BACKLIGHT_ENABLE = no +TAP_DANCE_ENABLE = yes From 37ca66f6cf44c33600d7191da7c2725805670eeb Mon Sep 17 00:00:00 2001 From: Gvalch-ca <78301272+Gvalch-ca@users.noreply.github.com> Date: Thu, 13 May 2021 20:54:13 +0300 Subject: [PATCH 358/613] Add Gvalchca SpaccBoard (#12876) Co-authored-by: Ryan --- keyboards/gvalchca/spaccboard/config.h | 48 ++++ keyboards/gvalchca/spaccboard/info.json | 214 ++++++++++++++++++ .../spaccboard/keymaps/default/keymap.c | 39 ++++ .../spaccboard/keymaps/default/readme.md | 1 + .../gvalchca/spaccboard/keymaps/via/keymap.c | 48 ++++ .../gvalchca/spaccboard/keymaps/via/rules.mk | 1 + keyboards/gvalchca/spaccboard/readme.md | 14 ++ keyboards/gvalchca/spaccboard/rules.mk | 24 ++ keyboards/gvalchca/spaccboard/spaccboard.c | 17 ++ keyboards/gvalchca/spaccboard/spaccboard.h | 66 ++++++ 10 files changed, 472 insertions(+) create mode 100644 keyboards/gvalchca/spaccboard/config.h create mode 100644 keyboards/gvalchca/spaccboard/info.json create mode 100644 keyboards/gvalchca/spaccboard/keymaps/default/keymap.c create mode 100644 keyboards/gvalchca/spaccboard/keymaps/default/readme.md create mode 100644 keyboards/gvalchca/spaccboard/keymaps/via/keymap.c create mode 100644 keyboards/gvalchca/spaccboard/keymaps/via/rules.mk create mode 100644 keyboards/gvalchca/spaccboard/readme.md create mode 100644 keyboards/gvalchca/spaccboard/rules.mk create mode 100644 keyboards/gvalchca/spaccboard/spaccboard.c create mode 100644 keyboards/gvalchca/spaccboard/spaccboard.h diff --git a/keyboards/gvalchca/spaccboard/config.h b/keyboards/gvalchca/spaccboard/config.h new file mode 100644 index 0000000000..64b13bd9bc --- /dev/null +++ b/keyboards/gvalchca/spaccboard/config.h @@ -0,0 +1,48 @@ +/* +Copyright 2021 Kirill Shkuretskiy + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x6776 +#define PRODUCT_ID 0x5342 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Gvalchca +#define PRODUCT SpaccBoard + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +// ROWS: Top to bottom, COLS: Left to right + +#define MATRIX_ROW_PINS {B1,B2,B3,C7,F0} +#define MATRIX_COL_PINS {E6,B7,D5,D6,D7,B4,B5,B6,C6,F7,F6,F5,F4,F1,D3} + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +#define QMK_ESC_OUTPUT E6 // usually COL +#define QMK_ESC_INPUT B1 // usually ROW diff --git a/keyboards/gvalchca/spaccboard/info.json b/keyboards/gvalchca/spaccboard/info.json new file mode 100644 index 0000000000..051b5e0a20 --- /dev/null +++ b/keyboards/gvalchca/spaccboard/info.json @@ -0,0 +1,214 @@ +{ + "keyboard_name": "SpaccBoard", + "url": "https://keebmeup.com", + "maintainer": "Gvalchca", + "width": 15, + "height": 5, + "layouts": { + "LAYOUT": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + {"x": 13.5, "y": 1, "w": 1.5}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2, "w": 2.25}, + + {"x": 0, "y": 3, "w": 2.25}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3}, + {"x": 12.25, "y": 3, "w": 2.75}, + + {"x": 0, "y": 4, "w": 1.5}, + {"x": 1.5, "y": 4}, + {"x": 2.5, "y": 4, "w": 1.5}, + {"x": 4, "y": 4, "w": 7}, + {"x": 11, "y": 4, "w": 1.5}, + {"x": 12.5, "y": 4}, + {"x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_ansi": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0, "w": 2}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + {"x": 13.5, "y": 1, "w": 1.5}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2, "w": 2.25}, + + {"x": 0, "y": 3, "w": 2.25}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3}, + {"x": 12.25, "y": 3, "w": 2.75}, + + {"x": 0, "y": 4, "w": 1.5}, + {"x": 1.5, "y": 4}, + {"x": 2.5, "y": 4, "w": 1.5}, + {"x": 4, "y": 4, "w": 7}, + {"x": 11, "y": 4, "w": 1.5}, + {"x": 12.5, "y": 4}, + {"x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_bae": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 1, "w": 2.25, "h": 2}, + + {"x": 0, "y": 3, "w": 2.25}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3}, + {"x": 12.25, "y": 3, "w": 2.75}, + + {"x": 0, "y": 4, "w": 1.5}, + {"x": 1.5, "y": 4}, + {"x": 2.5, "y": 4, "w": 1.5}, + {"x": 4, "y": 4, "w": 7}, + {"x": 11, "y": 4, "w": 1.5}, + {"x": 12.5, "y": 4}, + {"x": 13.5, "y": 4, "w": 1.5} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/gvalchca/spaccboard/keymaps/default/keymap.c b/keyboards/gvalchca/spaccboard/keymaps/default/keymap.c new file mode 100644 index 0000000000..e700e25fbf --- /dev/null +++ b/keyboards/gvalchca/spaccboard/keymaps/default/keymap.c @@ -0,0 +1,39 @@ + /* Copyright 2021 Kirill Shkuretskiy + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum _layer { + _MAIN, + _FUNC +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[_MAIN] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTRL), + +[_FUNC] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______) +}; diff --git a/keyboards/gvalchca/spaccboard/keymaps/default/readme.md b/keyboards/gvalchca/spaccboard/keymaps/default/readme.md new file mode 100644 index 0000000000..80a375dc05 --- /dev/null +++ b/keyboards/gvalchca/spaccboard/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for SpaccBoard \ No newline at end of file diff --git a/keyboards/gvalchca/spaccboard/keymaps/via/keymap.c b/keyboards/gvalchca/spaccboard/keymaps/via/keymap.c new file mode 100644 index 0000000000..ba289f7ed0 --- /dev/null +++ b/keyboards/gvalchca/spaccboard/keymaps/via/keymap.c @@ -0,0 +1,48 @@ + /* Copyright 2021 Kirill Shkuretskiy + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[0] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, _______, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI, MO(1), KC_RCTRL), + +[1] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______), + +[2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______), + +[3] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______) +}; diff --git a/keyboards/gvalchca/spaccboard/keymaps/via/rules.mk b/keyboards/gvalchca/spaccboard/keymaps/via/rules.mk new file mode 100644 index 0000000000..036bd6d1c3 --- /dev/null +++ b/keyboards/gvalchca/spaccboard/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/gvalchca/spaccboard/readme.md b/keyboards/gvalchca/spaccboard/readme.md new file mode 100644 index 0000000000..09eaf9314d --- /dev/null +++ b/keyboards/gvalchca/spaccboard/readme.md @@ -0,0 +1,14 @@ +# Gvalchca x Jugizafupe SpaccBoard + +Space Invaders 60% PCB with ANSI and Big Ass Enter support. To update the firmware connect the PCB to your computer and press Reset button. +![SpaccBoard image](https://i.imgur.com/ZYSrQTr.jpeg) + +* Keyboard Maintainer: [Gvalchca](https://github.com/Gvalch-ca) +* Hardware Supported: Gvalchca x Jugizafupe SpaccBoard +* Hardware Availability: [KeebMeUp](https://keebmeup.com) + +Make example for this keyboard (after setting up your build environment): + + make gvalchca/spaccboard:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/gvalchca/spaccboard/rules.mk b/keyboards/gvalchca/spaccboard/rules.mk new file mode 100644 index 0000000000..acd5fbc293 --- /dev/null +++ b/keyboards/gvalchca/spaccboard/rules.mk @@ -0,0 +1,24 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = qmk-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +UNICODE_ENABLE = yes # Unicode +LTO_ENABLE = yes diff --git a/keyboards/gvalchca/spaccboard/spaccboard.c b/keyboards/gvalchca/spaccboard/spaccboard.c new file mode 100644 index 0000000000..57d512cc2b --- /dev/null +++ b/keyboards/gvalchca/spaccboard/spaccboard.c @@ -0,0 +1,17 @@ + /* Copyright 2021 Kirill Shkuretskiy + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "spaccboard.h" \ No newline at end of file diff --git a/keyboards/gvalchca/spaccboard/spaccboard.h b/keyboards/gvalchca/spaccboard/spaccboard.h new file mode 100644 index 0000000000..49afca436e --- /dev/null +++ b/keyboards/gvalchca/spaccboard/spaccboard.h @@ -0,0 +1,66 @@ + /* Copyright 2021 Kirill Shkuretskiy + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define ___ KC_NO + +#define LAYOUT( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \ + k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \ + k40, k42, k43, k47, k4b, k4c, k4d \ +) \ +{ \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, ___ }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, ___, k2d, ___ }, \ + { k30, ___, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, ___, ___ }, \ + { k40, ___, k42, k43, ___, ___, ___, k47, ___, ___, ___, k4b, k4c, k4d, ___ } \ +} + +#define LAYOUT_ansi( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0e, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \ + k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \ + k40, k42, k43, k47, k4b, k4c, k4d \ +) \ +{ \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, ___, k0e }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, ___ }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, ___, k2d, ___ }, \ + { k30, ___, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, ___, ___ }, \ + { k40, ___, k42, k43, ___, ___, ___, k47, ___, ___, ___, k4b, k4c, k4d, ___ } \ +} + +#define LAYOUT_bae( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \ + k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \ + k40, k42, k43, k47, k4b, k4c, k4d \ +) \ +{ \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, ___, ___ }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, ___, k2d, ___ }, \ + { k30, ___, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, ___, ___ }, \ + { k40, ___, k42, k43, ___, ___, ___, k47, ___, ___, ___, k4b, k4c, k4d, ___ } \ +} From cef1d19a6ceb2ce6adad1b336946bf357dbb487f Mon Sep 17 00:00:00 2001 From: Christian Eiden Date: Thu, 13 May 2021 20:07:42 +0200 Subject: [PATCH 359/613] [Keymap] Own/dactyl (#12624) --- .../5x6_5/keymaps/cykedev/config.h | 59 +++++++ .../5x6_5/keymaps/cykedev/keymap.c | 153 ++++++++++++++++++ .../5x6_5/keymaps/cykedev/rules.mk | 6 + 3 files changed, 218 insertions(+) create mode 100644 keyboards/handwired/dactyl_manuform/5x6_5/keymaps/cykedev/config.h create mode 100644 keyboards/handwired/dactyl_manuform/5x6_5/keymaps/cykedev/keymap.c create mode 100644 keyboards/handwired/dactyl_manuform/5x6_5/keymaps/cykedev/rules.mk diff --git a/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/cykedev/config.h b/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/cykedev/config.h new file mode 100644 index 0000000000..0a38c8aefb --- /dev/null +++ b/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/cykedev/config.h @@ -0,0 +1,59 @@ +// Copyright 2021 Christian Eiden, cykedev +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +#pragma once + +#undef SOFT_SERIAL_PIN +#undef DIODE_DIRECTION +#undef MATRIX_ROW_PINS +#undef MATRIX_COL_PINS +#undef BOOTMAGIC_LITE_ROW +#undef BOOTMAGIC_LITE_COLUMN +#undef BOOTMAGIC_LITE_ROW_RIGHT +#undef BOOTMAGIC_LITE_COLUMN_RIGHT + + +#define USE_SERIAL +#define SOFT_SERIAL_PIN D2 +#define EE_HANDS +#define SPLIT_USB_DETECT + +// wiring of each half +// ../../../../docs/proton_c_conversion.md +#define MATRIX_ROW_PINS { B6, B2, B3, B1, F7, F6, F5 } +#define MATRIX_COL_PINS { B5, B4, E6, D7, C6, D4 } + +#define DIODE_DIRECTION ROW2COL + +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 0 + +#define BOOTMAGIC_LITE_ROW_RIGHT 0 +#define BOOTMAGIC_LITE_COLUMN_RIGHT 5 + +#define TAPPING_TERM 200 + +// Prevent normal rollover on alphas from accidentally triggering mods. +// #define IGNORE_MOD_TAP_INTERRUPT + +// Enable rapid switch from tap to hold, disables double tap hold auto-repeat. +// #define TAPPING_FORCE_HOLD + +// Apply the modifier on keys that are tapped during a short hold of a modtap +// #define PERMISSIVE_HOLD + +#define IGNORE_MOD_TAP_INTERRUPT_PER_KEY + +#define FORCE_NKRO diff --git a/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/cykedev/keymap.c b/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/cykedev/keymap.c new file mode 100644 index 0000000000..0d8fd05425 --- /dev/null +++ b/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/cykedev/keymap.c @@ -0,0 +1,153 @@ +// Copyright 2021 Christian Eiden, cykedev +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +#include QMK_KEYBOARD_H + +#define CM_SPAL LGUI_T(KC_SPC) +#define CM_SPAR RGUI_T(KC_SPC) + +#define SH_ENL LSFT_T(KC_ENT) +#define SH_ENR RSFT_T(KC_ENT) + +#define SYM MO(_SYMBOL) +#define ADJ MO(_ADJUST) + +#define QWERT DF(_QWERTY) +#define COLEM DF(_COLEMAK) + +enum layer_names { + _QWERTY, + _COLEMAK, + _SYMBOL, + _ADJUST +}; + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_QWERTY] = LAYOUT_5x6_5( + /* QWERTY + * .-----------------------------------------. .-----------------------------------------. + * | Esc | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Bsp | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Tab | Q | W | E | R | T | | Y | U | I | O | P | \ | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Ctrl | A | S | D | F | G | | H | J | K | L | ; | ' | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Shft | Z | X | C | V | B | | N | M | , | . | / | Shft | + * '-----------------------------------------/ \-----------------------------------------' + * | ADJ | - | / SYM /---------------. .---------------\ SYM \ | + | ADJ | + * | | | / / Cmd / Shift / \ Shift \ Cmd \ \ | | | + * '-------------' '-------/ Space / Enter / \ Enter \ Space \-------' '-------------' + * /---------------/ \---------------\ + * / Alt / Ctrl / \ Ctrl \ Alt \ + * / / / \ \ \ + * '---------------' '---------------' + */ + KC_GESC, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_BSPC, + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_BSLS, + KC_LCTL, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, + ADJ , KC_MINS, SYM , CM_SPAL, SH_ENL , SH_ENR , CM_SPAR, SYM , KC_EQL , ADJ , + KC_LALT, KC_LCTL, KC_RCTL, KC_RALT + ), + [_COLEMAK] = LAYOUT_5x6_5( + /* COLEMAK + * .-----------------------------------------. .-----------------------------------------. + * | Esc | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Bsp | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Tab | Q | W | F | P | G | | J | L | U | Y | ; | \ | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Ctrl | A | R | S | T | D | | H | N | E | I | O | ' | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Shft | Z | X | C | V | B | | K | M | , | . | / | Shft | + * '-----------------------------------------/ \-----------------------------------------' + * | ADJ | - | / SYM /---------------. .---------------\ SYM \ | + | ADJ | + * | | | / / Cmd / Shift / \ Shift \ Cmd \ \ | | | + * '-------------' '-------/ Space / Enter / \ Enter \ Space \-------' '-------------' + * /---------------/ \---------------\ + * / Alt / Ctrl / \ Ctrl \ Alt \ + * / / / \ \ \ + * '---------------' '---------------' + */ + KC_GESC, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_BSPC, + KC_TAB , KC_Q , KC_W , KC_F , KC_P , KC_G , KC_J , KC_L , KC_U , KC_Y , KC_SCLN, KC_BSLS, + KC_LCTL, KC_A , KC_R , KC_S , KC_T , KC_D , KC_H , KC_N , KC_E , KC_I , KC_O , KC_QUOT, + KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_K , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, + ADJ , KC_MINS, SYM , CM_SPAL, SH_ENL , SH_ENR , CM_SPAR, SYM , KC_EQL , ADJ , + KC_LALT, KC_LCTL, KC_RCTL, KC_RALT + ), + [_SYMBOL] = LAYOUT_5x6_5( + /* SYMBOL + * .-----------------------------------------. .-----------------------------------------. + * | ` | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | ! | @ | [ | ] | + | | | | up | | | F12 | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | & | | | ( | ) | - | | | left | down | right| ? | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | * | / | { | } | = | | | | | | | | + * '-----------------------------------------/ \-----------------------------------------' + * | | | / /---------------. .---------------\ \ | | | + * | | | / / / / \ \ \ \ | | | + * '-------------' '-------/ / / \ \ \-------' '-------------' + * /---------------/ \---------------\ + * / / / \ \ \ + * / / / \ \ \ + * '---------------' '---------------' + */ + KC_GRV , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , + XXXXXXX, KC_EXLM, KC_AT , KC_LBRC, KC_RBRC, KC_PPLS, XXXXXXX, XXXXXXX, KC_UP , XXXXXXX, XXXXXXX, KC_F12 , + _______, KC_AMPR, KC_PIPE, KC_LPRN, KC_RPRN, KC_MINS, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, KC_QUES, XXXXXXX, + _______, KC_ASTR, KC_SLSH, KC_LCBR, KC_RCBR, KC_PEQL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, + XXXXXXX, XXXXXXX, _______, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, + _______, _______, _______, _______ + ), + [_ADJUST] = LAYOUT_5x6_5( + /* ADJUST + * .-----------------------------------------. .-----------------------------------------. + * | RST | | | | | QWERT| |COLEM | | | | | RST | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | | | + | | B + | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | | | - | | B - | << | play | >> | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | | | = | | | | | | | | + * '-----------------------------------------/ \-----------------------------------------' + * | | | / /---------------. .---------------\ \ | | | + * | | | / / / / \ \ \ \ | | | + * '-------------' '-------/ / / \ \ \-------' '-------------' + * /---------------/ \---------------\ + * / / / \ \ \ + * / / / \ \ \ + * '---------------' '---------------' + */ + RESET , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QWERT , COLEM , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET , + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLU, KC_BRIU, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLD, KC_BRID, KC_MRWD, KC_MPLY, KC_MFFD, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MUTE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + ) +}; + +bool get_ignore_mod_tap_interrupt(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case CM_SPAR: + return true; + default: + return false; + } +} diff --git a/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/cykedev/rules.mk b/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/cykedev/rules.mk new file mode 100644 index 0000000000..5a8c85453a --- /dev/null +++ b/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/cykedev/rules.mk @@ -0,0 +1,6 @@ +BOOTMAGIC_ENABLE = lite +EXTRAKEY_ENABLE = yes +COMMAND_ENABLE = yes +MOUSEKEY_ENABLE = no +LTO_ENABLE = no +NKRO_ENABLE = yes From 0aaddf697fb977c8457f3b0231c2f007ac1e0fb9 Mon Sep 17 00:00:00 2001 From: Daveyr <26368709+Daveyr@users.noreply.github.com> Date: Fri, 14 May 2021 03:00:25 +0100 Subject: [PATCH 360/613] [Keyboard] added yampad configuration to keyboard subfolder (#10112) * added yampad configuration to keyboard subfolder * Update keyboards/yampad/config.h Co-authored-by: Drashna Jaelre * Update keyboards/yampad/config.h Co-authored-by: Drashna Jaelre * Update keyboards/yampad/config.h Co-authored-by: Drashna Jaelre * Update keyboards/yampad/keymaps/default/keymap.c Co-authored-by: Drashna Jaelre * Update keyboards/yampad/keymaps/default/keymap.c Co-authored-by: Drashna Jaelre * Update keyboards/yampad/rules.mk Co-authored-by: Drashna Jaelre * Update keyboards/yampad/rules.mk Co-authored-by: Drashna Jaelre * Update keyboards/yampad/rules.mk Co-authored-by: Drashna Jaelre * Update keyboards/yampad/keymaps/default/keymap.c Co-authored-by: Drashna Jaelre * Update keyboards/yampad/keymaps/default/keymap.c Co-authored-by: Drashna Jaelre * Update keyboards/yampad/config.h Co-authored-by: Drashna Jaelre * Update keyboards/yampad/keymaps/default/keymap.c Co-authored-by: Ryan * Update keyboards/yampad/config.h Co-authored-by: Drashna Jaelre * Update keyboards/yampad/keymaps/default/keymap.c Co-authored-by: Ryan * Update keyboards/yampad/keymaps/default/keymap.c Co-authored-by: Ryan * Update keyboards/yampad/keymaps/default/keymap.c Co-authored-by: Ryan * Update keyboards/yampad/readme.md Co-authored-by: Ryan * Update keyboards/yampad/rules.mk Co-authored-by: Ryan * added debouncing algorithm, delay and a traditional layout * added link to readme * some missed conflicts resolved in readme and rule * Update readme.md * Update keyboards/yampad/keymaps/traditional/keymap.c Co-authored-by: Ryan * Update keyboards/yampad/keymaps/traditional/keymap.c Co-authored-by: Ryan * Update keyboards/yampad/keymaps/traditional/keymap.c Co-authored-by: Ryan * Update keyboards/yampad/keymaps/traditional/keymap.c Co-authored-by: Ryan * Update keyboards/yampad/readme.md Co-authored-by: Ryan * Update keyboards/yampad/keymaps/traditional/keymap.c Co-authored-by: Ryan * Update keyboards/yampad/keymaps/traditional/keymap.c Co-authored-by: Ryan * Update keyboards/yampad/keymaps/default/keymap.c Co-authored-by: Ryan * Update keyboards/yampad/keymaps/traditional/keymap.c Co-authored-by: Drashna Jaelre * Update keyboards/yampad/keymaps/traditional/keymap.c Co-authored-by: Drashna Jaelre * Update keyboards/yampad/keymaps/default/keymap.c Co-authored-by: Drashna Jaelre * Update keyboards/yampad/keymaps/traditional/keymap.c Co-authored-by: Ryan * Update keyboards/yampad/yampad.c As suggested Co-authored-by: Drashna Jaelre * Update readme.md Updated per suggestion * Update keymap.c Add MIT licence * Update keymap.c Added MIT licence to the traditional layout. * Update keyboards/yampad/readme.md Co-authored-by: Ryan * Update keyboards/yampad/readme.md Co-authored-by: Ryan * Update keyboards/yampad/yampad.c Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com> * Update keyboards/yampad/yampad.c Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com> * make cases numerical in .c file * corrected the bootloader in rules.mk * Update keyboards/yampad/rules.mk Co-authored-by: Ryan Co-authored-by: Richard Co-authored-by: Drashna Jaelre Co-authored-by: Ryan Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com> --- keyboards/yampad/config.h | 85 +++++++++ keyboards/yampad/keymaps/default/keymap.c | 163 ++++++++++++++++++ keyboards/yampad/keymaps/traditional/keymap.c | 163 ++++++++++++++++++ keyboards/yampad/readme.md | 19 ++ keyboards/yampad/rules.mk | 24 +++ keyboards/yampad/yampad.c | 64 +++++++ keyboards/yampad/yampad.h | 57 ++++++ 7 files changed, 575 insertions(+) create mode 100644 keyboards/yampad/config.h create mode 100644 keyboards/yampad/keymaps/default/keymap.c create mode 100644 keyboards/yampad/keymaps/traditional/keymap.c create mode 100644 keyboards/yampad/readme.md create mode 100644 keyboards/yampad/rules.mk create mode 100644 keyboards/yampad/yampad.c create mode 100644 keyboards/yampad/yampad.h diff --git a/keyboards/yampad/config.h b/keyboards/yampad/config.h new file mode 100644 index 0000000000..d04ae37d5a --- /dev/null +++ b/keyboards/yampad/config.h @@ -0,0 +1,85 @@ +/* +Copyright 2012 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x8369 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Mattia Dal Ben +#define PRODUCT Yampad + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 4 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +#define MATRIX_ROW_PINS { C6, D7, E6, B4, B5 } +#define MATRIX_COL_PINS { B1, B3, B2, B6 } + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Underlight configuration */ +#define RGB_DI_PIN F4 +#define RGBLED_NUM 9 +#define RGBLIGHT_ANIMATIONS + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 2 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +//#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +//#define LOCKING_RESYNC_ENABLE + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +// #define BOOTMAGIC_LITE_ROW 0 +// #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/yampad/keymaps/default/keymap.c b/keyboards/yampad/keymaps/default/keymap.c new file mode 100644 index 0000000000..dfecab17eb --- /dev/null +++ b/keyboards/yampad/keymaps/default/keymap.c @@ -0,0 +1,163 @@ +/* MIT License + +Copyright (c) 2019 Mattia Dal Ben + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +#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 layers { + _BL, + _NV, + _FN +}; + +enum custom_keycodes { + KC_DBL0 = SAFE_RANGE, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Keymap _BL: (Base Layer) Default Layer + * ,-------------------. + * | NV | / | * |-/FN| + * |----|----|----|----| + * | 7 | 8 | 9 | | + * |----|----|----| + | + * | 4 | 5 | 6 | | + * |----|----|----|----| + * | 1 | 2 | 3 | | + * |----|----|----| En | + * | 0 | 00 | . | | + * `-------------------' + */ + [_BL] = LAYOUT( + TG(_NV), KC_PSLS, KC_PAST, LT(_FN, KC_PMNS), + KC_P7, KC_P8, KC_P9, + KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_P1, KC_P2, KC_P3, + KC_P0, KC_DBL0, KC_PDOT, KC_PENT + ), + +/* Keymap _NV: Navigation layer + * ,-------------------. + * |INS |HOME|PGUP| | + * |----|----|----|----| + * |DEL |END |PGDN| | + * |----|----|----| | + * | | | | | + * |----|----|----|----| + * | | UP | | | + * |----|----|----| | + * |LEFT|DOWN|RIGH| | + * `-------------------' + */ + [_NV] = LAYOUT( + KC_INS, KC_HOME, KC_PGUP, TG(_NV), + KC_DEL, KC_END, KC_PGDN, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, KC_UP, XXXXXXX, + KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX + ), + +/* Keymap _FN: RGB Function Layer + * ,-------------------. + * |RMOD|RGBP|RTOG| FN | + * |----|----|----|----| + * |HUD |HUI | | | + * |----|----|----| | + * |SAD |SAI | | | + * |----|----|----|----| + * |VAD |VAS | | | + * |----|----|----| | + * |RST | | | | + * `-------------------' + */ + [_FN] = LAYOUT( + RGB_MOD, RGB_M_P, RGB_TOG, _______, + RGB_HUD, RGB_HUI, XXXXXXX, + RGB_SAD, RGB_SAI, XXXXXXX, XXXXXXX, + RGB_VAD, RGB_VAI, XXXXXXX, + RESET, XXXXXXX, XXXXXXX, XXXXXXX + ), +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case KC_DBL0: + if (record->event.pressed) { + SEND_STRING("00"); + } else { + // when keycode KC_DBL0 is released + } + break; + + } + return true; +}; + +#ifdef OLED_DRIVER_ENABLE + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + return OLED_ROTATION_270; // flips the display 270 degrees +} + +void oled_task_user(void) { + // Host Keyboard Layer Status + oled_write_P(PSTR("Layer"), false); + switch (get_highest_layer(layer_state)) { + case _BL: + oled_write_ln_P(PSTR(" BAS"), false); + break; + case _NV: + oled_write_ln_P(PSTR(" NAV"), false); + break; + case _FN: + oled_write_ln_P(PSTR(" RGB"), false); + break; + default: + // Or use the write_ln shortcut over adding '\n' to the end of your string + oled_write_ln_P(PSTR(" UND"), false); + } + + // Host Keyboard LED Status + led_t led_state = host_keyboard_led_state(); + oled_write_P(PSTR("-----"), false); + oled_write_P(PSTR("Stats"), false); + oled_write_P(led_state.num_lock ? PSTR("num:*") : PSTR("num:."), false); + oled_write_P(led_state.caps_lock ? PSTR("cap:*") : PSTR("cap:."), false); + oled_write_P(led_state.scroll_lock ? PSTR("scr:*") : PSTR("scr:."), false); + + // Host Keyboard RGB backlight status + oled_write_P(PSTR("-----"), false); + oled_write_P(PSTR("Light"), false); + + static char led_buf[30]; + snprintf(led_buf, sizeof(led_buf) - 1, "RGB:%cM: %2d\nh: %2ds: %2dv: %2d\n", + rgblight_is_enabled() ? '*' : '.', (uint8_t)rgblight_get_mode(), + (uint8_t)(rgblight_get_hue() / RGBLIGHT_HUE_STEP), + (uint8_t)(rgblight_get_sat() / RGBLIGHT_SAT_STEP), + (uint8_t)(rgblight_get_val() / RGBLIGHT_VAL_STEP)); + oled_write(led_buf, false); +} +#endif diff --git a/keyboards/yampad/keymaps/traditional/keymap.c b/keyboards/yampad/keymaps/traditional/keymap.c new file mode 100644 index 0000000000..e9fd2b8ae1 --- /dev/null +++ b/keyboards/yampad/keymaps/traditional/keymap.c @@ -0,0 +1,163 @@ +/* MIT License + +Copyright (c) 2020 Richard Davey (Daveyr) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +#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 layers { + _BL = 0, + _NV, + _FN +}; + +enum custom_keycodes { + KC_DBL0 = SAFE_RANGE, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Keymap _BL: (Base Layer) Default Layer + * ,-------------------. + * | NV | / | * |-/FN| + * |----|----|----|----| + * | 7 | 8 | 9 | | + * |----|----|----| + | + * | 4 | 5 | 6 | | + * |----|----|----|----| + * | 1 | 2 | 3 | | + * |----|----|----| En | + * | 0 | 00 | . | | + * `-------------------' + */ + [_BL] = LAYOUT( + TG(_NV), KC_PSLS, KC_PAST, LT(_FN, KC_PMNS), + KC_P7, KC_P8, KC_P9, + KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_P1, KC_P2, KC_P3, + KC_P0, KC_DBL0, KC_PDOT, KC_PENT + ), + +/* Keymap _NV: Navigation layer + * ,-------------------. + * |INS |BSPC| | | + * |----|----|----|----| + * |HOME| UP |PGUP| | + * |----|----|----| | + * |LEFT|DEL |RGHT| | + * |----|----|----|----| + * |END |DOWN|PGDN| | + * |----|----|----| | + * | | | | | + * `-------------------' + */ + [_NV] = LAYOUT( + KC_INS, KC_BSPACE, XXXXXXX, TG(_NV), + KC_HOME, KC_UP, KC_PGUP, + KC_LEFT, KC_DEL, KC_RGHT, XXXXXXX, + KC_END, KC_DOWN, KC_PGDN, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + ), + +/* Keymap _FN: RGB Function Layer + * ,-------------------. + * |RMOD|RGBP|RTOG| FN | + * |----|----|----|----| + * |HUD |HUI | | | + * |----|----|----| | + * |SAD |SAI | | | + * |----|----|----|----| + * |VAD |VAS | | | + * |----|----|----| | + * |RST | | | | + * `-------------------' + */ + [_FN] = LAYOUT( + RGB_MOD, RGB_M_P, RGB_TOG, _______, + RGB_HUD, RGB_HUI, XXXXXXX, + RGB_SAD, RGB_SAI, XXXXXXX, XXXXXXX, + RGB_VAD, RGB_VAI, XXXXXXX, + RESET, XXXXXXX, XXXXXXX, XXXXXXX + ), +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case KC_DBL0: + if (record->event.pressed) { + SEND_STRING("00"); + } else { + // when keycode KC_DBL0 is released + } + break; + + } + return true; +}; + +#ifdef OLED_DRIVER_ENABLE + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + return OLED_ROTATION_270; // flips the display 270 degrees +} + +void oled_task_user(void) { + // Host Keyboard Layer Status + oled_write_P(PSTR("Layer"), false); + switch (get_highest_layer(layer_state)) { + case _BL: + oled_write_ln_P(PSTR(" BAS"), false); + break; + case _NV: + oled_write_ln_P(PSTR(" NAV"), false); + break; + case _FN: + oled_write_ln_P(PSTR(" RGB"), false); + break; + default: + // Or use the write_ln shortcut over adding '\n' to the end of your string + oled_write_ln_P(PSTR(" UND"), false); + } + + // Host Keyboard LED Status + led_t led_state = host_keyboard_led_state(); + oled_write_P(PSTR("-----"), false); + oled_write_P(PSTR("Stats"), false); + oled_write_P(led_state.num_lock ? PSTR("num:*") : PSTR("num:."), false); + oled_write_P(led_state.caps_lock ? PSTR("cap:*") : PSTR("cap:."), false); + oled_write_P(led_state.scroll_lock ? PSTR("scr:*") : PSTR("scr:."), false); + + // Host Keyboard RGB backlight status + oled_write_P(PSTR("-----"), false); + oled_write_P(PSTR("Light"), false); + + static char led_buf[30]; + snprintf(led_buf, sizeof(led_buf) - 1, "RGB:%cM: %2d\nh: %2ds: %2dv: %2d\n", + rgblight_is_enabled() ? '*' : '.', (uint8_t)rgblight_get_mode(), + (uint8_t)(rgblight_get_hue() / RGBLIGHT_HUE_STEP), + (uint8_t)(rgblight_get_sat() / RGBLIGHT_SAT_STEP), + (uint8_t)(rgblight_get_val() / RGBLIGHT_VAL_STEP)); + oled_write(led_buf, false); +} +#endif diff --git a/keyboards/yampad/readme.md b/keyboards/yampad/readme.md new file mode 100644 index 0000000000..e6cc03d60d --- /dev/null +++ b/keyboards/yampad/readme.md @@ -0,0 +1,19 @@ +# Yampad + +![yampad](https://github.com/mattdibi/yampad/blob/master/img/yampad.jpg) + +The Yampad project is an open-source, QMK (Quantum Mechanical Keyboard Firmware) powered, hot-swappable, RGB-backlighted, OLED featured, mechanical numpad. This repository will be used to share information about the project and instruction on how to use and assemble the Yampad. + +* Keyboard Maintainer: [mattdibi](https://github.com/mattdibi) +* Hardware Supported: Pro Micro, (ATmega32u4) +* Hardware Availability: https://github.com/mattdibi/yampad + +Make example for this keyboard (after setting up your build environment): + + make yampad:default + +Flashing example for this keyboard: + + make yampad:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/yampad/rules.mk b/keyboards/yampad/rules.mk new file mode 100644 index 0000000000..db0a8b5da5 --- /dev/null +++ b/keyboards/yampad/rules.mk @@ -0,0 +1,24 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = no # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +OLED_DRIVER_ENABLE = yes +DEBOUNCE_TYPE = eager_pk diff --git a/keyboards/yampad/yampad.c b/keyboards/yampad/yampad.c new file mode 100644 index 0000000000..764f48404d --- /dev/null +++ b/keyboards/yampad/yampad.c @@ -0,0 +1,64 @@ + +/* Copyright 2019 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "yampad.h" + +#if defined(OLED_DRIVER_ENABLE) +__attribute__((weak)) +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + return OLED_ROTATION_270; // flips the display 270 degrees +} + +__attribute__((weak)) +void oled_task_user(void) { + // Host Keyboard Layer Status + oled_write_P(PSTR("Layer"), false); + switch (get_highest_layer(layer_state)) { + case 0: + oled_write_ln_P(PSTR(" BAS"), false); + break; + case 1: + oled_write_ln_P(PSTR(" NAV"), false); + break; + case 2: + oled_write_ln_P(PSTR(" RGB"), false); + break; + default: + // Or use the write_ln shortcut over adding '\n' to the end of your string + oled_write_ln_P(PSTR(" UND"), false); + } + + // Host Keyboard LED Status + led_t led_state = host_keyboard_led_state(); + oled_write_P(PSTR("-----"), false); + oled_write_P(PSTR("Stats"), false); + oled_write_P(led_state.num_lock ? PSTR("num:*") : PSTR("num:."), false); + oled_write_P(led_state.caps_lock ? PSTR("cap:*") : PSTR("cap:."), false); + oled_write_P(led_state.scroll_lock ? PSTR("scr:*") : PSTR("scr:."), false); + + // Host Keyboard RGB backlight status + oled_write_P(PSTR("-----"), false); + oled_write_P(PSTR("Light"), false); + + static char led_buf[30]; + snprintf(led_buf, sizeof(led_buf) - 1, "RGB:%cM: %2d\nh: %2ds: %2dv: %2d\n", + rgblight_is_enabled() ? '*' : '.', (uint8_t)rgblight_get_mode(), + (uint8_t)(rgblight_get_hue() / RGBLIGHT_HUE_STEP), + (uint8_t)(rgblight_get_sat() / RGBLIGHT_SAT_STEP), + (uint8_t)(rgblight_get_val() / RGBLIGHT_VAL_STEP)); + oled_write(led_buf, false); +} +#endif diff --git a/keyboards/yampad/yampad.h b/keyboards/yampad/yampad.h new file mode 100644 index 0000000000..68ec98ffdd --- /dev/null +++ b/keyboards/yampad/yampad.h @@ -0,0 +1,57 @@ + +/* Copyright 2019 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" +#define ___ KC_NO + +/* This a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ + +/* COSPAD numpad matrix layout + * ,-------------------. + * | 00 | 01 | 02 | 03 | + * |----|----|----|----| + * | 10 | 11 | 12 | | + * |----|----|----| 13 | + * | 20 | 21 | 22 | | + * |----|----|----|----| + * | 30 | 31 | 32 | | + * |----|----|----| 43 | + * | 40 | 41 | 42 | | + * `-------------------' + */ +#define LAYOUT( \ + k00, k01, k02, k03, \ + k10, k11, k12, \ + k20, k21, k22, k13, \ + k30, k31, k32, \ + k40, k41, k42, k43 \ +) \ +{ \ + {k00, k01, k02, k03}, \ + {k10, k11, k12, k13}, \ + {k20, k21, k22, ___}, \ + {k30, k31, k32, ___}, \ + {k40, k41, k42, k43} \ +} From f594b22332dfb9bc0ead6b4604a050bf8674a800 Mon Sep 17 00:00:00 2001 From: wangyifu <18438880@qq.com> Date: Fri, 14 May 2021 10:00:45 +0800 Subject: [PATCH 361/613] [Keyboard] 60% keyboard with ISSI3733RGB IC (#11559) Co-authored-by: Joel Challis Co-authored-by: Drashna Jaelre Co-authored-by: Ryan Co-authored-by: Nick Brassel --- keyboards/latin60rgb/config.h | 80 +++++++++++ keyboards/latin60rgb/info.json | 73 +++++++++++ keyboards/latin60rgb/keymaps/default/keymap.c | 40 ++++++ keyboards/latin60rgb/keymaps/via/keymap.c | 40 ++++++ keyboards/latin60rgb/keymaps/via/rules.mk | 2 + keyboards/latin60rgb/latin60rgb.c | 124 ++++++++++++++++++ keyboards/latin60rgb/latin60rgb.h | 34 +++++ keyboards/latin60rgb/readme.md | 14 ++ keyboards/latin60rgb/rules.mk | 25 ++++ 9 files changed, 432 insertions(+) create mode 100644 keyboards/latin60rgb/config.h create mode 100644 keyboards/latin60rgb/info.json create mode 100644 keyboards/latin60rgb/keymaps/default/keymap.c create mode 100644 keyboards/latin60rgb/keymaps/via/keymap.c create mode 100644 keyboards/latin60rgb/keymaps/via/rules.mk create mode 100644 keyboards/latin60rgb/latin60rgb.c create mode 100644 keyboards/latin60rgb/latin60rgb.h create mode 100644 keyboards/latin60rgb/readme.md create mode 100644 keyboards/latin60rgb/rules.mk diff --git a/keyboards/latin60rgb/config.h b/keyboards/latin60rgb/config.h new file mode 100644 index 0000000000..bbe502054a --- /dev/null +++ b/keyboards/latin60rgb/config.h @@ -0,0 +1,80 @@ + /* Copyright 2021 latincompass + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +/* USB Device descriptor parameter */ +#include "config_common.h" +#define VENDOR_ID 0x6C63 // "lc" = latincompass +#define PRODUCT_ID 0x6C69 // "lp" = latin60RGB +#define DEVICE_VER 0x0001 +#define MANUFACTURER latincompass +#define PRODUCT Latin60RGB + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ +#define MATRIX_ROW_PINS {C7, C6, B6, B5, B4 } +#define MATRIX_COL_PINS {F7, F6, F5, F4, F1, F0, E6, B0, B1, B2, B3, D6, D4, D3} +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION ROW2COL + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 3 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +#ifdef RGB_MATRIX_ENABLE +# define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects +# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended +# define RGB_MATRIX_KEYPRESSES +# define RGB_MATRIX_FRAMEBUFFER_EFFECTS +# define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define DISABLE_RGB_MATRIX_BAND_SAT +# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# define DISABLE_RGB_MATRIX_SPLASH +# define DISABLE_RGB_MATRIX_MULTISPLASH +# define DISABLE_RGB_MATRIX_SOLID_SPLASH +# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH +# define DISABLE_RGB_MATRIX_DIGITAL_RAIN +# define DRIVER_ADDR_1 0b1010000 +# define DRIVER_ADDR_2 0b1010000 // this is here for compliancy reasons. +# define DRIVER_COUNT 2 +# define DRIVER_1_LED_TOTAL 60 +# define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL +#endif + diff --git a/keyboards/latin60rgb/info.json b/keyboards/latin60rgb/info.json new file mode 100644 index 0000000000..5f4a0d8452 --- /dev/null +++ b/keyboards/latin60rgb/info.json @@ -0,0 +1,73 @@ +{ + "keyboard_name": "latin60rgb", + "url": "", + "maintainer": "latincompass", + "width": 14, + "height": 5, + "layouts": { + "LAYOUT_60_latin_hhkb": { + "layout": [ + { "label": "Esc", "x": 0, "y": 0 }, + { "label": "!", "x": 1, "y": 0 }, + { "label": "@", "x": 2, "y": 0 }, + { "label": "#", "x": 3, "y": 0 }, + { "label": "$", "x": 4, "y": 0 }, + { "label": "%", "x": 5, "y": 0 }, + { "label": "^", "x": 6, "y": 0 }, + { "label": "&", "x": 7, "y": 0 }, + { "label": "*", "x": 8, "y": 0 }, + { "label": "(", "x": 9, "y": 0 }, + { "label": ")", "x": 10, "y": 0 }, + { "label": "_", "x": 11, "y": 0 }, + { "label": "+", "x": 12, "y": 0 }, + { "label": "|", "x": 13, "y": 0 , "w": 2.0}, + { "label": "Tab", "x": 0, "y": 1, "w": 1.5 }, + { "label": "Q", "x": 1.5, "y": 1 }, + { "label": "W", "x": 2.5, "y": 1 }, + { "label": "E", "x": 3.5, "y": 1 }, + { "label": "R", "x": 4.5, "y": 1 }, + { "label": "T", "x": 5.5, "y": 1 }, + { "label": "Y", "x": 6.5, "y": 1 }, + { "label": "U", "x": 7.5, "y": 1 }, + { "label": "I", "x": 8.5, "y": 1 }, + { "label": "O", "x": 9.5, "y": 1 }, + { "label": "P", "x": 10.5, "y": 1 }, + { "label": "{", "x": 11.5, "y": 1 }, + { "label": "}", "x": 12.5, "y": 1 }, + { "label": "Delete", "x": 13.5, "y": 1, "w": 1.5 }, + { "label": "Control", "x": 0, "y": 2, "w": 1.75 }, + { "label": "A", "x": 1.75, "y": 2 }, + { "label": "S", "x": 2.75, "y": 2 }, + { "label": "D", "x": 3.75, "y": 2 }, + { "label": "F", "x": 4.75, "y": 2 }, + { "label": "G", "x": 5.75, "y": 2 }, + { "label": "H", "x": 6.75, "y": 2 }, + { "label": "J", "x": 7.75, "y": 2 }, + { "label": "K", "x": 8.75, "y": 2 }, + { "label": "L", "x": 9.75, "y": 2 }, + { "label": ":", "x": 10.75, "y": 2 }, + { "label": "\"", "x": 11.75, "y": 2 }, + { "label": "Return", "x": 12.75, "y": 2, "w": 2.25 }, + { "label": "Shift", "x": 0, "y": 3, "w": 2.0 }, + { "label": "Z", "x": 2.0, "y": 3 }, + { "label": "X", "x": 3.0, "y": 3 }, + { "label": "C", "x": 4.0, "y": 3 }, + { "label": "V", "x": 5.0, "y": 3 }, + { "label": "B", "x": 6.0, "y": 3 }, + { "label": "N", "x": 7.0, "y": 3 }, + { "label": "M", "x": 8.0, "y": 3 }, + { "label": "<", "x": 9.0, "y": 3 }, + { "label": ">", "x": 10.0, "y": 3 }, + { "label": "?", "x": 11.0, "y": 3 }, + { "label": "Shift", "x": 12.0, "y": 3, "w": 1.0 }, + { "label": "Shift", "x": 13.0, "y": 3, "w": 1.0 }, + { "label": "Fn", "x": 14.0, "y": 3, "w": 1.0 }, + { "label": "L", "x": 1.25, "y": 4 , "w": 1.25}, + { "label": "L", "x": 2.5, "y": 4, "w": 1.25 }, + { "x": 3.75, "y": 4, "w": 6.25 }, + { "label": "L", "x": 10, "y": 4, "w": 1.25 }, + { "label": "L", "x": 11.25, "y": 4 } + ] + } + } +} diff --git a/keyboards/latin60rgb/keymaps/default/keymap.c b/keyboards/latin60rgb/keymaps/default/keymap.c new file mode 100644 index 0000000000..a44bbf660e --- /dev/null +++ b/keyboards/latin60rgb/keymaps/default/keymap.c @@ -0,0 +1,40 @@ + /* Copyright 2021 latincompass + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_60_latin_hhkb( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), MO(2), + KC_LCTRL, KC_LGUI, KC_SPC, KC_PGUP, KC_PGDOWN + ), + [1] = LAYOUT_60_latin_hhkb( + RGB_TOG, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, + _______, _______, KC_UP, _______, _______, _______, KC_CALC, _______, KC_INS, _______, KC_PSCR, KC_SLCK, KC_PAUS, RESET, + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, KC_HOME, KC_UP, _______, + KC_MPRV, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, NK_TOGG, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______,_______, + KC_LALT, _______, _______, _______, _______ + ), + [2] = LAYOUT_60_latin_hhkb( + RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_MOD, RGB_SPI, RGB_SPD, KC_F11, KC_F12, KC_DEL, + _______, RGB_TOG, _______, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_MOD, _______, _______, _______, RESET, + _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPI, RGB_SPD, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,_______, + _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/latin60rgb/keymaps/via/keymap.c b/keyboards/latin60rgb/keymaps/via/keymap.c new file mode 100644 index 0000000000..a44bbf660e --- /dev/null +++ b/keyboards/latin60rgb/keymaps/via/keymap.c @@ -0,0 +1,40 @@ + /* Copyright 2021 latincompass + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_60_latin_hhkb( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), MO(2), + KC_LCTRL, KC_LGUI, KC_SPC, KC_PGUP, KC_PGDOWN + ), + [1] = LAYOUT_60_latin_hhkb( + RGB_TOG, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, + _______, _______, KC_UP, _______, _______, _______, KC_CALC, _______, KC_INS, _______, KC_PSCR, KC_SLCK, KC_PAUS, RESET, + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, KC_HOME, KC_UP, _______, + KC_MPRV, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, NK_TOGG, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______,_______, + KC_LALT, _______, _______, _______, _______ + ), + [2] = LAYOUT_60_latin_hhkb( + RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_MOD, RGB_SPI, RGB_SPD, KC_F11, KC_F12, KC_DEL, + _______, RGB_TOG, _______, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_MOD, _______, _______, _______, RESET, + _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPI, RGB_SPD, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,_______, + _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/latin60rgb/keymaps/via/rules.mk b/keyboards/latin60rgb/keymaps/via/rules.mk new file mode 100644 index 0000000000..36b7ba9cbc --- /dev/null +++ b/keyboards/latin60rgb/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/latin60rgb/latin60rgb.c b/keyboards/latin60rgb/latin60rgb.c new file mode 100644 index 0000000000..cdd6fed44d --- /dev/null +++ b/keyboards/latin60rgb/latin60rgb.c @@ -0,0 +1,124 @@ + /* Copyright 2021 latincompass + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "latin60rgb.h" + +#ifdef RGB_MATRIX_ENABLE +const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { + { 0, K_13, J_13, L_13 }, + { 0, K_12, J_12, L_12 }, + { 0, K_11, J_11, L_11 }, + { 0, K_10, J_10, L_10 }, + { 0, K_9, J_9, L_9 }, + { 0, K_8, J_8, L_8 }, + { 0, K_7, J_7, L_7 }, + { 0, K_6, J_6, L_6 }, + { 0, K_5, J_5, L_5 }, + { 0, K_4, J_4, L_4 }, + { 0, K_3, J_3, L_3 }, + { 0, K_2, J_2, L_2 }, + { 0, K_1, J_1, L_1 }, + + { 0, H_16, G_16, I_16 }, + { 0, H_15, G_15, I_15 }, + { 0, H_14, G_14, I_14 }, + { 0, H_13, G_13, I_13 }, + { 0, H_12, G_12, I_12 }, + { 0, H_11, G_11, I_11 }, + { 0, H_10, G_10, I_10 }, + { 0, H_9, G_9, I_9 }, + { 0, H_8, G_8, I_8 }, + { 0, H_7, G_7, I_7 }, + { 0, H_6, G_6, I_6 }, + { 0, H_5, G_5, I_5 }, + { 0, H_4, G_4, I_4 }, + { 0, H_3, G_3, I_3 }, + { 0, H_2, G_2, I_2 }, + { 0, H_1, G_1, I_1 }, + + { 0, E_16, D_16, F_16 }, + { 0, E_15, D_15, F_15 }, + { 0, E_14, D_14, F_14 }, + { 0, E_13, D_13, F_13 }, + { 0, E_12, D_12, F_12 }, + { 0, E_11, D_11, F_11 }, + { 0, E_10, D_10, F_10 }, + { 0, E_9, D_9, F_9 }, + { 0, E_8, D_8, F_8 }, + { 0, E_7, D_7, F_7 }, + { 0, E_6, D_6, F_6 }, + { 0, E_5, D_5, F_5 }, + { 0, E_4, D_4, F_4 }, + { 0, E_3, D_3, F_3 }, + { 0, E_2, D_2, F_2 }, + { 0, E_1, D_1, F_1 }, + + { 0, B_16, A_16, C_16 }, + { 0, B_14, A_14, C_14 }, + { 0, B_13, A_13, C_13 }, + { 0, B_12, A_12, C_12 }, + { 0, B_11, A_11, C_11 }, + { 0, B_10, A_10, C_10 }, + { 0, B_9, A_9, C_9 }, + { 0, B_8, A_8, C_8 }, + { 0, B_7, A_7, C_7 }, + { 0, B_6, A_6, C_6 }, + { 0, B_5, A_5, C_5 }, + { 0, B_4, A_4, C_4 }, + { 0, B_3, A_3, C_3 }, + { 0, B_2, A_2, C_2 }, + { 0, B_1, A_1, C_1 } + +}; + +led_config_t g_led_config = { + { + { 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46 }, + { 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32 }, + { 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19 }, + { 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5 }, + { 4, 3, 2, 1 ,0 } + }, { + { 224, 0 }, { 208, 0 }, { 192, 0 }, { 176, 0 }, { 160, 0 }, { 144, 0 }, { 128, 0 }, { 112, 0 }, { 96, 0 }, { 80, 0 }, { 64, 0 }, { 48, 0 }, { 32, 0 }, { 16, 0 }, + { 220, 16 }, { 200, 16 }, { 184, 16 }, { 168, 16 }, { 152, 16 }, { 136, 16 }, { 120, 16 }, { 104, 16 }, { 88, 16 }, { 72, 16 }, { 56, 16 }, { 40, 16 }, { 24, 16 }, { 4, 16 }, + { 204, 32 }, { 188, 32 }, { 172, 32 }, { 156, 32 }, { 140, 32 }, { 124, 32 }, { 108, 32 }, { 92, 32 }, { 76, 32 }, { 60, 32 }, { 44, 32 }, { 28, 32 }, { 6, 32 }, + { 224, 48 }, { 198, 64 }, { 202, 48 }, { 180, 48 }, { 164, 48 }, { 148, 48 }, { 132, 48 }, { 116, 48 }, { 100, 48 }, { 84, 48 }, { 68, 48 }, { 52, 48 }, { 20, 48 }, { 10, 48 }, + { 218, 64 }, { 178, 64 }, { 112, 64 }, { 46, 64 }, { 26, 64 } + }, { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + 1, 1, 4, 1, 1 + } +}; + +void suspend_power_down_kb(void) { + rgb_matrix_set_suspend_state(true); + suspend_power_down_user(); +} + +void suspend_wakeup_init_kb(void) { + rgb_matrix_set_suspend_state(false); + suspend_wakeup_init_user(); +} + +__attribute__ ((weak)) +void rgb_matrix_indicators_user(void) { + if (host_keyboard_led_state().caps_lock) { + rgb_matrix_set_color(41, 0xFF, 0xFF, 0xFF); + } +} +#endif diff --git a/keyboards/latin60rgb/latin60rgb.h b/keyboards/latin60rgb/latin60rgb.h new file mode 100644 index 0000000000..fb1ecb66a9 --- /dev/null +++ b/keyboards/latin60rgb/latin60rgb.h @@ -0,0 +1,34 @@ + /* Copyright 2021 latincompass + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + +#define LAYOUT_60_latin_hhkb( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \ + K40, K41, K42, K4A, K4B \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \ + { K40, K41, K42, K4A, K4B, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX } \ +} diff --git a/keyboards/latin60rgb/readme.md b/keyboards/latin60rgb/readme.md new file mode 100644 index 0000000000..3b5715c2da --- /dev/null +++ b/keyboards/latin60rgb/readme.md @@ -0,0 +1,14 @@ +# Latin60RGB + +![Latin60rgb](https://github.com/latincompass/latin62RGB-keyboard/blob/main/PCB-%20(1).png) + + 60% RGB keyboard use IS31FL3733 IC like HHKB + +* Keyboard Maintainer: [latincompass](https://github.com/latincompass) +* Hardware Availability: https://github.com/latincompass/latin62RGB-keyboard/blob/main/PCB-%20(1).png + +Make example for this keyboard (after setting up your build environment): + + make latin60rgb:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/latin60rgb/rules.mk b/keyboards/latin60rgb/rules.mk new file mode 100644 index 0000000000..64df3bfe2a --- /dev/null +++ b/keyboards/latin60rgb/rules.mk @@ -0,0 +1,25 @@ + +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +RGB_MATRIX_ENABLE = yes # Use RGB matrix +RGB_MATRIX_DRIVER = IS31FL3733 From a6807d18222295a9a8016d21466f1ec71d73a34a Mon Sep 17 00:00:00 2001 From: Drashna Jaelre Date: Thu, 13 May 2021 19:20:31 -0700 Subject: [PATCH 362/613] [Keyboard][PloopyCo] Fix code for Mini and Nano Trackballs (#12889) --- .../ploopyco/trackball_mini/trackball_mini.c | 30 ++++++-------- .../ploopyco/trackball_nano/trackball_nano.c | 41 ++++++------------- .../ploopyco/trackball_nano/trackball_nano.h | 2 - 3 files changed, 26 insertions(+), 47 deletions(-) diff --git a/keyboards/ploopyco/trackball_mini/trackball_mini.c b/keyboards/ploopyco/trackball_mini/trackball_mini.c index 4ae5df0837..d6eb61a2b2 100644 --- a/keyboards/ploopyco/trackball_mini/trackball_mini.c +++ b/keyboards/ploopyco/trackball_mini/trackball_mini.c @@ -105,22 +105,8 @@ __attribute__((weak)) void process_wheel(report_mouse_t* mouse_report) { } __attribute__((weak)) void process_mouse_user(report_mouse_t* mouse_report, int16_t x, int16_t y) { - // x and y are swapped - // the sensor is rotated - // by 90 degrees - int16_t temp = x; - x = y; - y = temp; - - // Apply delta-X and delta-Y transformations. - float xt = (float) x * ADNS_X_TRANSFORM; - float yt = (float) y * ADNS_Y_TRANSFORM; - - int16_t xti = xt; - int16_t yti = yt; - - mouse_report->x = xti; - mouse_report->y = yti; + mouse_report->x = x; + mouse_report->y = y; } __attribute__((weak)) void process_mouse(report_mouse_t* mouse_report) { @@ -130,7 +116,17 @@ __attribute__((weak)) void process_mouse(report_mouse_t* mouse_report) { if (debug_mouse) dprintf("Raw ] X: %d, Y: %d\n", data.dx, data.dy); - process_mouse_user(mouse_report, data.dx, data.dy); + // Apply delta-X and delta-Y transformations. + // x and y are swapped + // the sensor is rotated + // by 90 degrees + float xt = (float) data.dy * ADNS_X_TRANSFORM; + float yt = (float) data.dx * ADNS_Y_TRANSFORM; + + int16_t xti = (int16_t)xt; + int16_t yti = (int16_t)yt; + + process_mouse_user(mouse_report, xti, yti); } } diff --git a/keyboards/ploopyco/trackball_nano/trackball_nano.c b/keyboards/ploopyco/trackball_nano/trackball_nano.c index 93cb60bd4b..17cdedac7a 100644 --- a/keyboards/ploopyco/trackball_nano/trackball_nano.c +++ b/keyboards/ploopyco/trackball_nano/trackball_nano.c @@ -70,33 +70,9 @@ uint16_t lastMidClick = 0; // Stops scrollwheel from being read if it was press uint8_t OptLowPin = OPT_ENC1; bool debug_encoder = false; -__attribute__((weak)) void process_wheel_user(report_mouse_t* mouse_report, int16_t h, int16_t v) { - // There's no scroller on this device. - return; -} - -__attribute__((weak)) void process_wheel(report_mouse_t* mouse_report) { - // There's no scroller on this device. - return; -} - __attribute__((weak)) void process_mouse_user(report_mouse_t* mouse_report, int16_t x, int16_t y) { - // x and y are swapped - // the sensor is rotated - // by 90 degrees - int16_t temp = x; - x = y; - y = temp; - - // Apply delta-X and delta-Y transformations. - float xt = (float) x * ADNS_X_TRANSFORM; - float yt = (float) y * ADNS_Y_TRANSFORM; - - int16_t xti = xt; - int16_t yti = yt; - - mouse_report->x = xti; - mouse_report->y = yti; + mouse_report->x = x; + mouse_report->y = y; } __attribute__((weak)) void process_mouse(report_mouse_t* mouse_report) { @@ -106,7 +82,17 @@ __attribute__((weak)) void process_mouse(report_mouse_t* mouse_report) { if (debug_mouse) dprintf("Raw ] X: %d, Y: %d\n", data.dx, data.dy); - process_mouse_user(mouse_report, data.dx, data.dy); + // Apply delta-X and delta-Y transformations. + // x and y are swapped + // the sensor is rotated + // by 90 degrees + float xt = (float) data.dy * ADNS_X_TRANSFORM; + float yt = (float) data.dx * ADNS_Y_TRANSFORM; + + int16_t xti = (int16_t)xt; + int16_t yti = (int16_t)yt; + + process_mouse_user(mouse_report, xti, yti); } } @@ -182,7 +168,6 @@ void pointing_device_init(void) { void pointing_device_task(void) { report_mouse_t mouse_report = pointing_device_get_report(); - process_wheel(&mouse_report); process_mouse(&mouse_report); pointing_device_set_report(mouse_report); pointing_device_send(); diff --git a/keyboards/ploopyco/trackball_nano/trackball_nano.h b/keyboards/ploopyco/trackball_nano/trackball_nano.h index 4bffb04607..5692383b1e 100644 --- a/keyboards/ploopyco/trackball_nano/trackball_nano.h +++ b/keyboards/ploopyco/trackball_nano/trackball_nano.h @@ -33,8 +33,6 @@ void process_mouse(report_mouse_t* mouse_report); void process_mouse_user(report_mouse_t* mouse_report, int16_t x, int16_t y); -void process_wheel(report_mouse_t* mouse_report); -void process_wheel_user(report_mouse_t* mouse_report, int16_t h, int16_t v); #define LAYOUT(k00) {{ KC_NO }} From bfbbb21197bec32079dbb4147ca75770c947cad4 Mon Sep 17 00:00:00 2001 From: knaruo Date: Fri, 14 May 2021 11:21:49 +0900 Subject: [PATCH 363/613] [Keyboard] Add pisces keyboard (#12287) Co-authored-by: Nick Brassel --- keyboards/pisces/config.h | 70 ++++++++++++++++++++++ keyboards/pisces/info.json | 16 +++++ keyboards/pisces/keymaps/default/config.h | 20 +++++++ keyboards/pisces/keymaps/default/keymap.c | 62 +++++++++++++++++++ keyboards/pisces/keymaps/default/readme.md | 1 + keyboards/pisces/keymaps/via/config.h | 20 +++++++ keyboards/pisces/keymaps/via/keymap.c | 62 +++++++++++++++++++ keyboards/pisces/keymaps/via/readme.md | 1 + keyboards/pisces/keymaps/via/rules.mk | 1 + keyboards/pisces/pisces.c | 27 +++++++++ keyboards/pisces/pisces.h | 41 +++++++++++++ keyboards/pisces/readme.md | 24 ++++++++ keyboards/pisces/rules.mk | 27 +++++++++ 13 files changed, 372 insertions(+) create mode 100644 keyboards/pisces/config.h create mode 100644 keyboards/pisces/info.json create mode 100644 keyboards/pisces/keymaps/default/config.h create mode 100644 keyboards/pisces/keymaps/default/keymap.c create mode 100644 keyboards/pisces/keymaps/default/readme.md create mode 100644 keyboards/pisces/keymaps/via/config.h create mode 100644 keyboards/pisces/keymaps/via/keymap.c create mode 100644 keyboards/pisces/keymaps/via/readme.md create mode 100644 keyboards/pisces/keymaps/via/rules.mk create mode 100644 keyboards/pisces/pisces.c create mode 100644 keyboards/pisces/pisces.h create mode 100644 keyboards/pisces/readme.md create mode 100644 keyboards/pisces/rules.mk diff --git a/keyboards/pisces/config.h b/keyboards/pisces/config.h new file mode 100644 index 0000000000..7c6c65f247 --- /dev/null +++ b/keyboards/pisces/config.h @@ -0,0 +1,70 @@ +/* Copyright 2021 knaruo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x6B6E +#define PRODUCT_ID 0x0000 +#define DEVICE_VER 0x0001 +#define MANUFACTURER knaruo +#define PRODUCT pisces + +#define USE_SERIAL + +/* serial.c configuration for split keyboard */ +#define SOFT_SERIAL_PIN D2 + +/* Select hand configuration */ +#define SPLIT_HAND_MATRIX_GRID B0,B7 +#define MATRIX_MASKED +#define SPLIT_USB_DETECT + +/* key matrix size */ +// Rows are doubled-up +#define MATRIX_ROWS (3*2) +#define MATRIX_COLS 7 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ +#define MATRIX_ROW_PINS { C4, B0, C7 } +#define MATRIX_COL_PINS { B1, B2, B3, B4, B5, B6, B7 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION diff --git a/keyboards/pisces/info.json b/keyboards/pisces/info.json new file mode 100644 index 0000000000..3e295e83e1 --- /dev/null +++ b/keyboards/pisces/info.json @@ -0,0 +1,16 @@ +{ + "keyboard_name": "pisces", + "url": "https://github.com/knaruo/pisces", + "maintainer": "knaruo", + "width": 15, + "height": 3, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, + {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":12, "y":1}, {"x":13, "y":1}, {"x":14, "y":1}, + {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":12, "y":2}, {"x":13, "y":2}, {"x":14, "y":2} + ] + } + } +} diff --git a/keyboards/pisces/keymaps/default/config.h b/keyboards/pisces/keymaps/default/config.h new file mode 100644 index 0000000000..810b6546db --- /dev/null +++ b/keyboards/pisces/keymaps/default/config.h @@ -0,0 +1,20 @@ +/* Copyright 2021 knaruo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define TAPPING_TERM 175 // milliseconds +#define IGNORE_MOD_TAP_INTERRUPT diff --git a/keyboards/pisces/keymaps/default/keymap.c b/keyboards/pisces/keymaps/default/keymap.c new file mode 100644 index 0000000000..39226d2f05 --- /dev/null +++ b/keyboards/pisces/keymaps/default/keymap.c @@ -0,0 +1,62 @@ +/* Copyright 2021 knaruo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +#include "keymap_jp.h" + +/* keymap layers */ +enum _layers { + _BASE = 0, + _NUM, + _FN, + _RESERVED, // reserved for VIA + _END, // end of supported layers +}; + +/* Keycode alias */ +#define KC_CTBS RCTL_T(KC_BSPC) // Backspace + Ctrl +#define KC_SPF1 LT(_NUM, KC_SPC) // Space + NUM layer +#define KC_DLF2 LT(_FN, KC_DEL) // Del + FN key layer +#define KC_SFEN RSFT_T(KC_ENT) // Enter + Shift +#define KC_CAD LALT(LCTL(KC_DEL)) // Ctrl + Alt + Del + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* Base QWERTY key map */ + [_BASE] = LAYOUT_split_3x6_1( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, /*_____, _____,*/ KC_Y, KC_U, KC_I, KC_O, KC_P, KC_ESC, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, /*_____, _____,*/ KC_H, KC_J, KC_K, KC_L, KC_CTBS, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_SPF1, KC_LWIN, KC_LALT, KC_DLF2, KC_B, KC_N, KC_M, KC_SFEN, KC_PGDN + ), + + [_NUM] = LAYOUT_split_3x6_1( + _______, KC_1, KC_2, KC_3, KC_4, KC_5, /*_____, _____,*/ KC_6, KC_7, KC_8, KC_9, KC_0, _______, + _______, KC_TAB, JP_MINS, JP_CIRC, JP_YEN, JP_AT, /*_____, _____,*/ JP_SCLN, JP_COLN, JP_LBRC, JP_RBRC, _______, _______, + _______, _______, JP_ZKHK, KC_LALT, JP_COMM, _______, _______, _______, _______, JP_DOT, JP_SLSH, JP_BSLS, _______, _______ + ), + + [_FN] = LAYOUT_split_3x6_1( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, /*_____, _____,*/ KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, + _______, KC_F11, KC_F12, _______, _______, _______, /*_____, _____,*/ KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_CAD, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______ + ), + + [_RESERVED] = LAYOUT_split_3x6_1( + _______, _______, _______, _______, _______, _______, /*_____, _____,*/ _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, /*_____, _____,*/ _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/pisces/keymaps/default/readme.md b/keyboards/pisces/keymaps/default/readme.md new file mode 100644 index 0000000000..4a55a35e4b --- /dev/null +++ b/keyboards/pisces/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap diff --git a/keyboards/pisces/keymaps/via/config.h b/keyboards/pisces/keymaps/via/config.h new file mode 100644 index 0000000000..810b6546db --- /dev/null +++ b/keyboards/pisces/keymaps/via/config.h @@ -0,0 +1,20 @@ +/* Copyright 2021 knaruo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define TAPPING_TERM 175 // milliseconds +#define IGNORE_MOD_TAP_INTERRUPT diff --git a/keyboards/pisces/keymaps/via/keymap.c b/keyboards/pisces/keymaps/via/keymap.c new file mode 100644 index 0000000000..39226d2f05 --- /dev/null +++ b/keyboards/pisces/keymaps/via/keymap.c @@ -0,0 +1,62 @@ +/* Copyright 2021 knaruo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +#include "keymap_jp.h" + +/* keymap layers */ +enum _layers { + _BASE = 0, + _NUM, + _FN, + _RESERVED, // reserved for VIA + _END, // end of supported layers +}; + +/* Keycode alias */ +#define KC_CTBS RCTL_T(KC_BSPC) // Backspace + Ctrl +#define KC_SPF1 LT(_NUM, KC_SPC) // Space + NUM layer +#define KC_DLF2 LT(_FN, KC_DEL) // Del + FN key layer +#define KC_SFEN RSFT_T(KC_ENT) // Enter + Shift +#define KC_CAD LALT(LCTL(KC_DEL)) // Ctrl + Alt + Del + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* Base QWERTY key map */ + [_BASE] = LAYOUT_split_3x6_1( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, /*_____, _____,*/ KC_Y, KC_U, KC_I, KC_O, KC_P, KC_ESC, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, /*_____, _____,*/ KC_H, KC_J, KC_K, KC_L, KC_CTBS, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_SPF1, KC_LWIN, KC_LALT, KC_DLF2, KC_B, KC_N, KC_M, KC_SFEN, KC_PGDN + ), + + [_NUM] = LAYOUT_split_3x6_1( + _______, KC_1, KC_2, KC_3, KC_4, KC_5, /*_____, _____,*/ KC_6, KC_7, KC_8, KC_9, KC_0, _______, + _______, KC_TAB, JP_MINS, JP_CIRC, JP_YEN, JP_AT, /*_____, _____,*/ JP_SCLN, JP_COLN, JP_LBRC, JP_RBRC, _______, _______, + _______, _______, JP_ZKHK, KC_LALT, JP_COMM, _______, _______, _______, _______, JP_DOT, JP_SLSH, JP_BSLS, _______, _______ + ), + + [_FN] = LAYOUT_split_3x6_1( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, /*_____, _____,*/ KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, + _______, KC_F11, KC_F12, _______, _______, _______, /*_____, _____,*/ KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_CAD, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______ + ), + + [_RESERVED] = LAYOUT_split_3x6_1( + _______, _______, _______, _______, _______, _______, /*_____, _____,*/ _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, /*_____, _____,*/ _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/pisces/keymaps/via/readme.md b/keyboards/pisces/keymaps/via/readme.md new file mode 100644 index 0000000000..5b3ff232e6 --- /dev/null +++ b/keyboards/pisces/keymaps/via/readme.md @@ -0,0 +1 @@ +# VIA enabled keymap diff --git a/keyboards/pisces/keymaps/via/rules.mk b/keyboards/pisces/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/pisces/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/pisces/pisces.c b/keyboards/pisces/pisces.c new file mode 100644 index 0000000000..18814c4744 --- /dev/null +++ b/keyboards/pisces/pisces.c @@ -0,0 +1,27 @@ +/* Copyright 2021 knaruo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "pisces.h" + +const matrix_row_t matrix_mask[MATRIX_ROWS] = { +// 87654321 + 0b00111111, + 0b00111111, + 0b01111111, + 0b00111111, + 0b00111111, + 0b01111111 +}; \ No newline at end of file diff --git a/keyboards/pisces/pisces.h b/keyboards/pisces/pisces.h new file mode 100644 index 0000000000..b2d61c17c3 --- /dev/null +++ b/keyboards/pisces/pisces.h @@ -0,0 +1,41 @@ +/* Copyright 2021 knaruo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ + +#define LAYOUT_split_3x6_1( \ + L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \ + L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ + L20, L21, L22, L23, L24, L25, L26, R26, R20, R21, R22, R23, R24, R25 \ +) { \ + { L00, L01, L02, L03, L04, L05, KC_NO }, \ + { L10, L11, L12, L13, L14, L15, KC_NO }, \ + { L20, L21, L22, L23, L24, L25, L26 }, \ + { R05, R04, R03, R02, R01, R00, KC_NO }, \ + { R15, R14, R13, R12, R11, R10, KC_NO }, \ + { R25, R24, R23, R22, R21, R20, R26 } \ +} diff --git a/keyboards/pisces/readme.md b/keyboards/pisces/readme.md new file mode 100644 index 0000000000..8464696626 --- /dev/null +++ b/keyboards/pisces/readme.md @@ -0,0 +1,24 @@ +# pisces + +![pisces](https://i.imgur.com/rzIhYLZ.png) + +(Less than) 40% Ortholinear split keyboard + +* Keyboard Maintainer: [knaruo](https://github.com/knaruo) +* Hardware Supported: pisces PCB, ATmega32U2 +* Hardware Availability: [PCB and Plate](https://github.com/knaruo/pisces) + +Getting the board into bootloader mode: + +To be able to flash firmware onto this board, you'll need to bring the micro controller into bootloader mode. Press the reset button (RSTSW1) on the top side of the PCB to enable the bootloader mode. + + +Make example for this keyboard (after setting up your build environment): + + make pisces:default + +Flashing example for this keyboard: + + make pisces:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/pisces/rules.mk b/keyboards/pisces/rules.mk new file mode 100644 index 0000000000..156ace1ff0 --- /dev/null +++ b/keyboards/pisces/rules.mk @@ -0,0 +1,27 @@ +# MCU name +MCU = atmega32u2 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output + +# Enable generic behavior for split boards +SPLIT_KEYBOARD = yes + +LAYOUTS = split_3x6_1 # total 38 From 8f4603dd734f5d70e9a89a5150821acd0dc77f7c Mon Sep 17 00:00:00 2001 From: Ben Date: Fri, 14 May 2021 04:33:36 +0200 Subject: [PATCH 364/613] [Keyboard] Add Plaid-Pad Rev3 and oled keymap (#12464) Co-authored-by: Erovia --- keyboards/keycapsss/plaid_pad/config.h | 7 +- .../plaid_pad/keymaps/default/keymap.c | 20 +- .../keycapsss/plaid_pad/keymaps/oled/config.h | 22 ++ .../plaid_pad/keymaps/oled/glcdfont.c | 250 ++++++++++++++++++ .../keycapsss/plaid_pad/keymaps/oled/keymap.c | 228 ++++++++++++++++ .../plaid_pad/keymaps/oled/readme.md | 29 ++ .../keycapsss/plaid_pad/keymaps/oled/rules.mk | 2 + .../keycapsss/plaid_pad/keymaps/via/keymap.c | 18 +- keyboards/keycapsss/plaid_pad/plaid_pad.h | 3 - keyboards/keycapsss/plaid_pad/readme.md | 19 +- keyboards/keycapsss/plaid_pad/rev1/config.h | 3 + keyboards/keycapsss/plaid_pad/rev2/config.h | 3 + keyboards/keycapsss/plaid_pad/rev3/config.h | 25 ++ keyboards/keycapsss/plaid_pad/rev3/rev3.c | 17 ++ keyboards/keycapsss/plaid_pad/rev3/rev3.h | 20 ++ keyboards/keycapsss/plaid_pad/rev3/rules.mk | 2 + 16 files changed, 654 insertions(+), 14 deletions(-) create mode 100644 keyboards/keycapsss/plaid_pad/keymaps/oled/config.h create mode 100644 keyboards/keycapsss/plaid_pad/keymaps/oled/glcdfont.c create mode 100644 keyboards/keycapsss/plaid_pad/keymaps/oled/keymap.c create mode 100644 keyboards/keycapsss/plaid_pad/keymaps/oled/readme.md create mode 100644 keyboards/keycapsss/plaid_pad/keymaps/oled/rules.mk create mode 100644 keyboards/keycapsss/plaid_pad/rev3/config.h create mode 100644 keyboards/keycapsss/plaid_pad/rev3/rev3.c create mode 100644 keyboards/keycapsss/plaid_pad/rev3/rev3.h create mode 100644 keyboards/keycapsss/plaid_pad/rev3/rules.mk diff --git a/keyboards/keycapsss/plaid_pad/config.h b/keyboards/keycapsss/plaid_pad/config.h index d52a51ccdc..373d3de14f 100644 --- a/keyboards/keycapsss/plaid_pad/config.h +++ b/keyboards/keycapsss/plaid_pad/config.h @@ -40,8 +40,5 @@ /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ #define DEBOUNCE 5 -/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ -#define LOCKING_SUPPORT_ENABLE - -/* Locking resynchronize hack */ -#define LOCKING_RESYNC_ENABLE +// Fix for volume controll with encoder (steadily in/decrease) +#define TAP_CODE_DELAY 60 diff --git a/keyboards/keycapsss/plaid_pad/keymaps/default/keymap.c b/keyboards/keycapsss/plaid_pad/keymaps/default/keymap.c index 59031c91d2..18f0ac49a0 100644 --- a/keyboards/keycapsss/plaid_pad/keymaps/default/keymap.c +++ b/keyboards/keycapsss/plaid_pad/keymaps/default/keymap.c @@ -22,10 +22,26 @@ LAYOUT_ortho_4x4( }; -// Set led state during powerup + +// Set led state during power-up +// There is also a LED_GREEN +// Only for Rev1 & Rev2 +#ifdef LED_RED void keyboard_post_init_user(void) { writePinHigh(LED_RED); } +#endif + + +// Rev3 and above only +#ifdef OLED_DRIVER_ENABLE +void oled_task_user(void) { + oled_write_ln_P(PSTR("Plaid-Pad ///////////"), false); +} +#endif + + +#ifdef ENCODER_ENABLE void encoder_update_user(uint8_t index, bool clockwise) { /* @@ -71,3 +87,5 @@ Rev1.1 Rev1 } } } + +#endif diff --git a/keyboards/keycapsss/plaid_pad/keymaps/oled/config.h b/keyboards/keycapsss/plaid_pad/keymaps/oled/config.h new file mode 100644 index 0000000000..902e9052b7 --- /dev/null +++ b/keyboards/keycapsss/plaid_pad/keymaps/oled/config.h @@ -0,0 +1,22 @@ +/* Copyright 2021 Ben Roesner (keycapsss.com) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +// place overrides here +#define OLED_FONT_H "keyboards/keycapsss/plaid_pad/keymaps/oled/glcdfont.c" + +#define COMBO_COUNT 3 diff --git a/keyboards/keycapsss/plaid_pad/keymaps/oled/glcdfont.c b/keyboards/keycapsss/plaid_pad/keymaps/oled/glcdfont.c new file mode 100644 index 0000000000..9fef5067f4 --- /dev/null +++ b/keyboards/keycapsss/plaid_pad/keymaps/oled/glcdfont.c @@ -0,0 +1,250 @@ +/* Copyright 2019 Leo Batyuk (soundmonster) + * Copyright 2021 Ben Roesner (keycapsss.com) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "progmem.h" + +// Corne 8x6 font +// Online editor: https://helixfonteditor.netlify.com +// or https://joric.github.io/qle/ +// See also: https://github.com/soundmonster/glcdfont_converter + +const unsigned char font[] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00, + 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00, + 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00, + 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00, + 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00, + 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00, + 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00, + 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00, + 0x00, 0x18, 0x24, 0x18, 0x00, 0x00, + 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00, + 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00, + 0x26, 0x29, 0x79, 0x29, 0x26, 0x00, + 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00, + 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00, + 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00, + 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00, + 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00, + 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00, + 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00, + 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00, + 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, + 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00, + 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00, + 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00, + 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00, + 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00, + 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00, + 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00, + 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00, + 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, + 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, + 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00, + 0x23, 0x13, 0x08, 0x64, 0x62, 0x00, + 0x36, 0x49, 0x56, 0x20, 0x50, 0x00, + 0x00, 0x08, 0x07, 0x03, 0x00, 0x00, + 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, + 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00, + 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, + 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, + 0x00, 0x80, 0x70, 0x30, 0x00, 0x00, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, + 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, + 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, + 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, + 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00, + 0x72, 0x49, 0x49, 0x49, 0x46, 0x00, + 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00, + 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00, + 0x27, 0x45, 0x45, 0x45, 0x39, 0x00, + 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00, + 0x41, 0x21, 0x11, 0x09, 0x07, 0x00, + 0x36, 0x49, 0x49, 0x49, 0x36, 0x00, + 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00, + 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x34, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x14, 0x22, 0x41, 0x00, + 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, + 0x00, 0x41, 0x22, 0x14, 0x08, 0x00, + 0x02, 0x01, 0x59, 0x09, 0x06, 0x00, + 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00, + 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00, + 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00, + 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00, + 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00, + 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00, + 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00, + 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00, + 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, + 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00, + 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00, + 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00, + 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00, + 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00, + 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00, + 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00, + 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00, + 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00, + 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00, + 0x26, 0x49, 0x49, 0x49, 0x32, 0x00, + 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00, + 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00, + 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00, + 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00, + 0x63, 0x14, 0x08, 0x14, 0x63, 0x00, + 0x03, 0x04, 0x78, 0x04, 0x03, 0x00, + 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00, + 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00, + 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, + 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00, + 0x04, 0x02, 0x01, 0x02, 0x04, 0x00, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, + 0x00, 0x13, 0x07, 0x08, 0x00, 0x00, + 0x20, 0x54, 0x54, 0x78, 0x40, 0x00, + 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00, + 0x38, 0x44, 0x44, 0x44, 0x28, 0x00, + 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00, + 0x38, 0x54, 0x54, 0x54, 0x18, 0x00, + 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00, + 0x18, 0x24, 0x24, 0x1C, 0x78, 0x00, + 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00, + 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00, + 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00, + 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00, + 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00, + 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00, + 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00, + 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, + 0x7C, 0x18, 0x24, 0x24, 0x18, 0x00, + 0x18, 0x24, 0x24, 0x18, 0x7C, 0x00, + 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00, + 0x48, 0x54, 0x54, 0x54, 0x24, 0x00, + 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00, + 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00, + 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00, + 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00, + 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, + 0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00, + 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, + 0x00, 0x08, 0x36, 0x41, 0x00, 0x00, + 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, + 0x00, 0x41, 0x36, 0x08, 0x00, 0x00, + 0x02, 0x01, 0x02, 0x04, 0x02, 0x00, + 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xF8, 0x04, 0x22, 0x52, 0xE2, + 0x42, 0x42, 0x42, 0xE2, 0x52, 0x22, + 0x22, 0x22, 0x42, 0x82, 0x02, 0x02, + 0x22, 0x22, 0x02, 0x04, 0xF8, 0x00, + 0x00, 0xF8, 0x04, 0x02, 0x02, 0x82, + 0x42, 0x22, 0x42, 0x82, 0x02, 0x02, + 0x02, 0x82, 0x42, 0x22, 0x12, 0x22, + 0x42, 0x82, 0x02, 0x04, 0xF8, 0x00, + 0x00, 0xF8, 0xFC, 0xDE, 0xAE, 0x1E, + 0xBE, 0xBE, 0xBE, 0x1E, 0xAE, 0xDE, + 0xDE, 0xDE, 0xBE, 0x7E, 0xFE, 0xFE, + 0xDE, 0xDE, 0xFE, 0xFC, 0xF8, 0x00, + 0x00, 0xF8, 0xFC, 0xFE, 0xFE, 0x7E, + 0xBE, 0xDE, 0xBE, 0x7E, 0xFE, 0xFE, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, + 0x10, 0x10, 0x08, 0x08, 0x10, 0x10, + 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, + 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, + 0xF0, 0xF0, 0xF8, 0xF8, 0xF0, 0xF0, + 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x80, + 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, + 0x10, 0x10, 0x08, 0x08, 0x10, 0x10, + 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, + 0x80, 0x80, 0x40, 0xC0, 0x60, 0xA0, + 0x50, 0xB0, 0x58, 0xA8, 0x50, 0xB0, + 0x60, 0xA0, 0x40, 0xC0, 0x80, 0x80, + 0x1F, 0x1F, 0x0E, 0x1B, 0x11, 0xC0, + 0x1F, 0x1F, 0x00, 0x1F, 0x1F, 0x06, + 0x0C, 0xC6, 0x1F, 0x1F, 0x80, 0x5F, + 0x1F, 0x00, 0x1F, 0x1F, 0x8E, 0x9B, + 0x91, 0x80, 0x9F, 0x9F, 0x91, 0x1F, + 0x00, 0x1F, 0x20, 0x44, 0x4A, 0x47, + 0x42, 0x42, 0x42, 0x47, 0x4A, 0x44, + 0x40, 0x40, 0x40, 0x40, 0x41, 0x42, + 0x44, 0x44, 0x40, 0x20, 0x1F, 0x00, + 0x00, 0x1F, 0x20, 0x40, 0x41, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x41, 0x40, + 0x41, 0x41, 0x4F, 0x48, 0x48, 0x48, + 0x4F, 0x41, 0x41, 0x20, 0x1F, 0x00, + 0x00, 0x1F, 0x3F, 0x7B, 0x75, 0x78, + 0x7D, 0x7D, 0x7D, 0x78, 0x75, 0x7B, + 0x7F, 0x7F, 0x7F, 0x7F, 0x7E, 0x7D, + 0x7B, 0x7B, 0x7F, 0x3F, 0x1F, 0x00, + 0x00, 0x1F, 0x3F, 0x7F, 0x7E, 0x7F, + 0x7F, 0x7F, 0x7F, 0x7F, 0x7E, 0x7F, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x88, 0x88, 0x5D, 0x5D, 0x3E, 0x3E, + 0x7C, 0x7C, 0xF8, 0xF8, 0x7C, 0x7C, + 0x3E, 0x3E, 0x5D, 0x5D, 0x88, 0x88, + 0x88, 0x88, 0x55, 0x55, 0x23, 0x23, + 0x47, 0x47, 0x8F, 0x8F, 0x47, 0x47, + 0x23, 0x23, 0x55, 0x55, 0x88, 0x88, + 0x88, 0x88, 0xD5, 0xD5, 0xE2, 0xE2, + 0xC4, 0xC4, 0x88, 0x88, 0xC4, 0xC4, + 0xE2, 0xE2, 0xD5, 0xD5, 0x88, 0x88, + 0x88, 0x88, 0x5D, 0xD5, 0x6B, 0xB6, + 0x6D, 0xD6, 0xAD, 0xDA, 0x6D, 0xD6, + 0x6B, 0xB6, 0x5D, 0xD5, 0x88, 0x88, + 0x00, 0x84, 0x87, 0x7D, 0x55, 0x57, + 0x55, 0x7D, 0x87, 0x84, 0x00, 0x91, + 0x95, 0x55, 0x55, 0x3F, 0x55, 0x55, + 0x95, 0x91, 0x00, 0x08, 0x08, 0x08, + 0x88, 0xFC, 0x0A, 0x09, 0x08, 0x08, + 0x04, 0xF8, 0x00, 0x00, 0xF8, 0x04, + 0x20, 0x1F, 0x00, 0x00, 0x1F, 0x20, + 0xFC, 0xF8, 0x00, 0x00, 0xF8, 0x04, + 0x3F, 0x1F, 0x00, 0x00, 0x1F, 0x20, + 0x04, 0xF8, 0x00, 0x00, 0xF8, 0xFC, + 0x20, 0x1F, 0x00, 0x00, 0x1F, 0x3F, + 0xFC, 0xF8, 0x00, 0x00, 0xF8, 0xFC, + 0x3F, 0x1F, 0x00, 0x00, 0x1F, 0x3F, + 0xFE, 0x7E, 0xBE, 0xDE, 0xEE, 0xDE, + 0xBE, 0x7E, 0xFE, 0xFC, 0xF8, 0x00, + 0x7E, 0x7E, 0x70, 0x77, 0x77, 0x77, + 0x70, 0x7E, 0x7E, 0x3F, 0x1F, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, + 0x04, 0x04, 0x08, 0x08, 0x04, 0x04, + 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, + 0x04, 0x04, 0x08, 0x08, 0x04, 0x04, + 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, + 0x07, 0x07, 0x0F, 0x0F, 0x07, 0x07, + 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x03, 0x02, + 0x05, 0x06, 0x0D, 0x0A, 0x05, 0x06, + 0x03, 0x02, 0x01, 0x01, 0x00, 0x00, +}; diff --git a/keyboards/keycapsss/plaid_pad/keymaps/oled/keymap.c b/keyboards/keycapsss/plaid_pad/keymaps/oled/keymap.c new file mode 100644 index 0000000000..e665138f6a --- /dev/null +++ b/keyboards/keycapsss/plaid_pad/keymaps/oled/keymap.c @@ -0,0 +1,228 @@ +/* Copyright 2021 Ben Roesner (keycapsss.com) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +#include + +enum layers { + _NUMPAD, + _NAVIGATION, + _MEDIA +}; + +enum combos { + COMBO1, + COMBO2, + COMBO3 +}; + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* NUMPAD layer + * ,-----------------------, + * | 7 | 8 | 9 | / | + * |-----+-----+-----+-----| + * | 4 | 5 | 6 | * | + * |-----+-----+-----+-----| + * | 1 | 2 | 3 | - | + * |-----+-----+-----+-----| + * | 0 | . | = | + | + * `-----------------------' + */ + [_NUMPAD] = LAYOUT_ortho_4x4( + KC_P7, KC_P8, KC_P9, KC_PSLS, + KC_P4, KC_P5, KC_P6, KC_PAST, + KC_P1, KC_P2, KC_P3, KC_PMNS, + KC_P0, KC_PDOT, KC_PEQL, KC_PPLS + ), + /* Navigation layer + */ + [_NAVIGATION] = LAYOUT_ortho_4x4( + KC_BTN1, KC_MS_U, KC_BTN2, XXXXXXX, + KC_MS_L, KC_MS_D, KC_MS_R, XXXXXXX, + XXXXXXX, KC_UP, XXXXXXX, XXXXXXX, + KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX + ), + /* MEDIA layer + */ + [_MEDIA] = LAYOUT_ortho_4x4( + KC_SYSTEM_SLEEP, XXXXXXX, XXXXXXX, KC_AUDIO_MUTE, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + KC_AUDIO_VOL_DOWN, KC_AUDIO_MUTE, KC_AUDIO_VOL_UP, XXXXXXX, + KC_MEDIA_PREV_TRACK, KC_MEDIA_PLAY_PAUSE, KC_MEDIA_NEXT_TRACK, XXXXXXX + ), + +}; + +// Combos for switching layers +const uint16_t PROGMEM zeroDot_combo[] = {KC_P0, KC_PDOT, COMBO_END}; +const uint16_t PROGMEM leftDown_combo[] = {KC_LEFT, KC_DOWN, COMBO_END}; +const uint16_t PROGMEM prevPlay_combo[] = {KC_MEDIA_PREV_TRACK, KC_MEDIA_PLAY_PAUSE, COMBO_END}; + +combo_t key_combos[COMBO_COUNT] = { + [COMBO1] = COMBO_ACTION(zeroDot_combo), + [COMBO2] = COMBO_ACTION(leftDown_combo), + [COMBO3] = COMBO_ACTION(prevPlay_combo), +}; + +void process_combo_event(uint16_t combo_index, bool pressed) { + switch(combo_index) { + case COMBO1: + if (pressed) { + layer_move(_NAVIGATION); + } + break; + case COMBO2: + if (pressed) { + layer_move(_MEDIA); + } + break; + case COMBO3: + if (pressed) { + layer_move(_NUMPAD); + } + break; + } +} + +#ifdef OLED_DRIVER_ENABLE + +void render_space(void) { + oled_write_P(PSTR(" "), false); +} + + +void oled_render_layer_state(void) { + oled_write_P(PSTR("Layer: "), false); + if(layer_state_is(_MEDIA)) { + oled_write_ln_P(PSTR("MEDIA"), false); + } else if(layer_state_is(_NAVIGATION)) { + oled_write_ln_P(PSTR("NAVIGATION"), false); + } else { + oled_write_ln_P(PSTR("NUMPAD"), false); + } +} + + +void oled_task_user(void) { + oled_write_ln_P(PSTR("Plaid-Pad ///////////"), false); + oled_render_layer_state(); +} + +#endif + +#ifdef ENCODER_ENABLE +void encoder_update_user(uint8_t index, bool clockwise) { +/* + ,-----------------------, + | E1 | E2 | E3 | E4 | + |-----+-----+-----+-----| + | | | | E3 | + |-----+-----+-----+-----| + | | | | E2 | + |-----+-----+-----+-----| + | | | | E1 | + `-----------------------' + */ + + // First encoder (E1) + if (index == 0) { + switch (get_highest_layer(layer_state)) { + case _NAVIGATION: + // Browser tab switching + if (clockwise) { + tap_code16(LCTL(KC_TAB)); + } else { + tap_code16(LCTL(LSFT(KC_TAB))); + } + break; + default: + if (clockwise) { + tap_code(KC_F17); + } else { + tap_code(KC_F18); + } + break; + } + // Second encoder (E2) + } else if (index == 1) { + switch (get_highest_layer(layer_state)) { + case _NAVIGATION: + // Page Down/Up + if (clockwise) { + tap_code16(KC_PGDOWN); + } else { + tap_code16(KC_PGUP); + } + break; + default: + if (clockwise) { + tap_code(KC_F19); + } else { + tap_code(KC_F20); + } + break; + } + // Third encoder (E3) + } else if (index == 2) { + switch (get_highest_layer(layer_state)) { + case _NAVIGATION: + // Mouse wheel up/down + if (clockwise) { + tap_code(KC_MS_WH_DOWN); + } else { + tap_code(KC_MS_WH_UP); + } + break; + case _MEDIA: + // BRIGHTNESS Up/Down + if (clockwise) { + tap_code16(KC_BRIGHTNESS_UP); + } else { + tap_code16(KC_BRIGHTNESS_DOWN); + } + break; + default: + if (clockwise) { + tap_code(KC_F21); + } else { + tap_code(KC_F22); + } + break; + } + // Forth encoder (E4) + } else if (index == 3) { + switch (get_highest_layer(layer_state)) { + case _NAVIGATION: + case _MEDIA: + // Volume Up/Down + if (clockwise) { + tap_code16(KC_AUDIO_VOL_UP); + } else { + tap_code16(KC_AUDIO_VOL_DOWN); + } + break; + default: + if (clockwise) { + tap_code(KC_F23); + } else { + tap_code(KC_F24); + } + break; + } + } +} +#endif diff --git a/keyboards/keycapsss/plaid_pad/keymaps/oled/readme.md b/keyboards/keycapsss/plaid_pad/keymaps/oled/readme.md new file mode 100644 index 0000000000..0e2493266d --- /dev/null +++ b/keyboards/keycapsss/plaid_pad/keymaps/oled/readme.md @@ -0,0 +1,29 @@ + +# Oled keymap for Rev3 and higher + +- 3 layers Numpad/Navigation/Media +- Switch layer with the combo 0+. (bottom row, first plus second key) + +Plaid-Pad Oled Keymap + +Below you can see the possible positions for the 4 rotary encoder (Rev1 only 2). +*If you place a encoder in the top left corner (E1), you can't use another encoder in the lower right corner.* +``` +Rev1.1 and higher Rev1 +,-----------------------, ,-----------------------, +| E1 | E2 | E3 | E4 | | E1 | | | E2 | +|-----+-----+-----+-----| |-----+-----+-----+-----| +| | | | E3 | | | | | | +|-----+-----+-----+-----| |-----+-----+-----+-----| +| | | | E2 | | | | | | +|-----+-----+-----+-----| |-----+-----+-----+-----| +| | | | E1 | | | | | | +`-----------------------' `-----------------------' +``` + +- Encoder E1 performs a tap on `KC_F17` and `KC_F18`. +- Encoder E2 performs a tap on `KC_F19` and `KC_F20`. +- Encoder E3 performs a tap on `KC_F21` and `KC_F22`. +- Encoder E4 performs a tap on `KC_F23` and `KC_F24`. + +*The F17-F24 keys are intended to be customized via [Karabiner-Elements (OSX)](https://github.com/pqrs-org/Karabiner-Elements), or [AutoHotkey](https://github.com/Lexikos/AutoHotkey_L) (WIN)* diff --git a/keyboards/keycapsss/plaid_pad/keymaps/oled/rules.mk b/keyboards/keycapsss/plaid_pad/keymaps/oled/rules.mk new file mode 100644 index 0000000000..a95ca8d778 --- /dev/null +++ b/keyboards/keycapsss/plaid_pad/keymaps/oled/rules.mk @@ -0,0 +1,2 @@ +OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays +COMBO_ENABLE = yes diff --git a/keyboards/keycapsss/plaid_pad/keymaps/via/keymap.c b/keyboards/keycapsss/plaid_pad/keymaps/via/keymap.c index 1b1d59e3e9..0593d419b5 100644 --- a/keyboards/keycapsss/plaid_pad/keymaps/via/keymap.c +++ b/keyboards/keycapsss/plaid_pad/keymaps/via/keymap.c @@ -49,11 +49,26 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), }; -// Set LED1 state during powerup + +// Set led state during power-up +// There is also a LED_GREEN +// Only for Rev1 & Rev2 +#ifdef LED_RED void keyboard_post_init_user(void) { writePinHigh(LED_RED); } +#endif + +// Rev3 and above only +#ifdef OLED_DRIVER_ENABLE +void oled_task_user(void) { + oled_write_ln_P(PSTR("Plaid-Pad ///////////"), false); +} +#endif + + +#ifdef ENCODER_ENABLE void encoder_update_user(uint8_t index, bool clockwise) { /* Rev1.1 Rev1 @@ -98,3 +113,4 @@ Rev1.1 Rev1 } } } +#endif diff --git a/keyboards/keycapsss/plaid_pad/plaid_pad.h b/keyboards/keycapsss/plaid_pad/plaid_pad.h index 4ac26bf45c..3115392163 100644 --- a/keyboards/keycapsss/plaid_pad/plaid_pad.h +++ b/keyboards/keycapsss/plaid_pad/plaid_pad.h @@ -29,6 +29,3 @@ { K20, K21, K22, K23 }, \ { K30, K31, K32, K33 } \ } - -#define LED_RED C5 // LED1 -#define LED_GREEN C4 // LED2 diff --git a/keyboards/keycapsss/plaid_pad/readme.md b/keyboards/keycapsss/plaid_pad/readme.md index e8a8044a2a..7afebba5aa 100644 --- a/keyboards/keycapsss/plaid_pad/readme.md +++ b/keyboards/keycapsss/plaid_pad/readme.md @@ -1,5 +1,10 @@ # Plaid-Pad - +Rev1.1 +Plaid-Pad Rev1.1 +Rev3 +Plaid-Pad Rev3 with Oled + +Default Keymap A 4x4 numpad/macro pad with only through hole components. It supports up to 4 rotary encoder. The positions for the encoder are interchangeable with keyboard switches. @@ -7,7 +12,7 @@ A 4x4 numpad/macro pad with only through hole components. It supports up to 4 ro Below you can see the possible positions for the 4 rotary encoder (Rev1 only 2). *If you place a encoder in the top left corner (E1), you can't use another encoder in the lower right corner.* ``` -Rev1.1 Rev1 +Rev1.1 and higher Rev1 ,-----------------------, ,-----------------------, | E1 | E2 | E3 | E4 | | E1 | | | E2 | |-----+-----+-----+-----| |-----+-----+-----+-----| @@ -58,10 +63,16 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to - Release RESET switch - Release BOOT switch -or an alternative method: +alternative method: - Unplug the USB cable - Hold down the BOOT switch - Plug in the USB cable - Release the BOOT switch -If you succeed to enter bootloader mode, you can see usbasp in device manager, or `*** USBAsp device connected` in [QMK Toolbox](https://github.com/qmk/qmk_toolbox). +alternative method ([Bootmagic Lite](https://docs.qmk.fm/#/feature_bootmagic?id=bootmagic-lite)): +- Unplug the USB cable +- Hold down the most top left key +- Plug in the USB cable +- Release the most top left key + +If you succeed to enter bootloader mode, you can see usbasp in device manager, or `*** USBAsp device connected ...` in [QMK Toolbox](https://github.com/qmk/qmk_toolbox). diff --git a/keyboards/keycapsss/plaid_pad/rev1/config.h b/keyboards/keycapsss/plaid_pad/rev1/config.h index eeb56503af..fee25316dd 100644 --- a/keyboards/keycapsss/plaid_pad/rev1/config.h +++ b/keyboards/keycapsss/plaid_pad/rev1/config.h @@ -23,3 +23,6 @@ #define ENCODERS_PAD_A { D1, B2 } #define ENCODERS_PAD_B { D0, B1 } + +#define LED_RED C5 // LED1 +#define LED_GREEN C4 // LED2 diff --git a/keyboards/keycapsss/plaid_pad/rev2/config.h b/keyboards/keycapsss/plaid_pad/rev2/config.h index 1f12777119..f3646dd575 100644 --- a/keyboards/keycapsss/plaid_pad/rev2/config.h +++ b/keyboards/keycapsss/plaid_pad/rev2/config.h @@ -23,3 +23,6 @@ #define ENCODERS_PAD_A { D1, B2, B4, D4 } #define ENCODERS_PAD_B { D0, B1, B3, B5 } + +#define LED_RED C5 // LED1 +#define LED_GREEN C4 // LED2 diff --git a/keyboards/keycapsss/plaid_pad/rev3/config.h b/keyboards/keycapsss/plaid_pad/rev3/config.h new file mode 100644 index 0000000000..40f96cd5c8 --- /dev/null +++ b/keyboards/keycapsss/plaid_pad/rev3/config.h @@ -0,0 +1,25 @@ +/* Copyright 2020 Ben Roesner (keycapsss.com) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define PRODUCT Plaid-Pad Rev3 +#define DEVICE_VER 0x0003 + +#define UNUSED_PINS { } + +#define ENCODERS_PAD_A { D1, B2, B4, D4 } +#define ENCODERS_PAD_B { D0, B1, B3, B5 } diff --git a/keyboards/keycapsss/plaid_pad/rev3/rev3.c b/keyboards/keycapsss/plaid_pad/rev3/rev3.c new file mode 100644 index 0000000000..bfe1934b3f --- /dev/null +++ b/keyboards/keycapsss/plaid_pad/rev3/rev3.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Ben Roesner (keycapsss.com) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "rev3.h" diff --git a/keyboards/keycapsss/plaid_pad/rev3/rev3.h b/keyboards/keycapsss/plaid_pad/rev3/rev3.h new file mode 100644 index 0000000000..d38fe6a5bb --- /dev/null +++ b/keyboards/keycapsss/plaid_pad/rev3/rev3.h @@ -0,0 +1,20 @@ +/* Copyright 2021 Ben Roesner (keycapsss.com) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "plaid_pad.h" + diff --git a/keyboards/keycapsss/plaid_pad/rev3/rules.mk b/keyboards/keycapsss/plaid_pad/rev3/rules.mk new file mode 100644 index 0000000000..9cc93aab4a --- /dev/null +++ b/keyboards/keycapsss/plaid_pad/rev3/rules.mk @@ -0,0 +1,2 @@ +ENCODER_ENABLE = yes +OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays From b2a63b42a533a9cb7db38554e0634140dede1f83 Mon Sep 17 00:00:00 2001 From: Brandon Claveria <48102030+swiftrax@users.noreply.github.com> Date: Thu, 13 May 2021 19:39:56 -0700 Subject: [PATCH 365/613] [Keyboard] add feels/feels65 (#12426) Co-authored-by: Drashna Jaelre Co-authored-by: Ryan Co-authored-by: Swiftrax --- keyboards/feels/feels65/config.h | 36 +++++++++++++ keyboards/feels/feels65/feels65.c | 16 ++++++ keyboards/feels/feels65/feels65.h | 50 +++++++++++++++++++ keyboards/feels/feels65/info.json | 26 ++++++++++ .../feels/feels65/keymaps/default/keymap.c | 34 +++++++++++++ keyboards/feels/feels65/keymaps/via/keymap.c | 48 ++++++++++++++++++ keyboards/feels/feels65/keymaps/via/rules.mk | 1 + keyboards/feels/feels65/readme.md | 13 +++++ keyboards/feels/feels65/rules.mk | 22 ++++++++ 9 files changed, 246 insertions(+) create mode 100644 keyboards/feels/feels65/config.h create mode 100644 keyboards/feels/feels65/feels65.c create mode 100644 keyboards/feels/feels65/feels65.h create mode 100644 keyboards/feels/feels65/info.json create mode 100644 keyboards/feels/feels65/keymaps/default/keymap.c create mode 100644 keyboards/feels/feels65/keymaps/via/keymap.c create mode 100644 keyboards/feels/feels65/keymaps/via/rules.mk create mode 100644 keyboards/feels/feels65/readme.md create mode 100644 keyboards/feels/feels65/rules.mk diff --git a/keyboards/feels/feels65/config.h b/keyboards/feels/feels65/config.h new file mode 100644 index 0000000000..f311a44834 --- /dev/null +++ b/keyboards/feels/feels65/config.h @@ -0,0 +1,36 @@ +/* Copyright 2021 Swiftrax + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x04D8 +#define PRODUCT_ID 0xE965 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Swiftrax +#define PRODUCT Feels65 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 16 + +/* default pinout */ +#define MATRIX_ROW_PINS { D5, D3, D2, D1, D0 } +#define MATRIX_COL_PINS { B4, B5, B6, C6, C7, F7, F6, F5, F4, F1, F0, E6, B0, B1, B2, B3 } +#define UNUSED_PINS + +#define DIODE_DIRECTION COL2ROW diff --git a/keyboards/feels/feels65/feels65.c b/keyboards/feels/feels65/feels65.c new file mode 100644 index 0000000000..dc8b7664ab --- /dev/null +++ b/keyboards/feels/feels65/feels65.c @@ -0,0 +1,16 @@ +/* Copyright 2021 Swiftrax + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "feels65.h" diff --git a/keyboards/feels/feels65/feels65.h b/keyboards/feels/feels65/feels65.h new file mode 100644 index 0000000000..be11e22ccd --- /dev/null +++ b/keyboards/feels/feels65/feels65.h @@ -0,0 +1,50 @@ +/* Copyright 2021 Swiftrax + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + +#define LAYOUT_65_iso_blocker( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \ + k10, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1F, \ + k20, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3D, k3E, k3F, \ + k40, k42, k43, k46, k4A, k4B, k4D, k4E, k4F \ +) \ +{ \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \ + { k10, XXX, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, XXX, k1F }, \ + { k20, XXX, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, XXX, k3D, k3E, k3F }, \ + { k40, XXX, k42, k43, XXX, XXX, k46, XXX, XXX, XXX, k4A, k4B, XXX, k4D, k4E, k4F } \ +} + +#define LAYOUT_65_ansi_blocker( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \ + k10, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, \ + k20, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2E, k2F, \ + k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3D, k3E, k3F, \ + k40, k42, k43, k46, k4A, k4B, k4D, k4E, k4F \ +) \ +{ \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \ + { k10, XXX, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F }, \ + { k20, XXX, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, XXX, k2E, k2F }, \ + { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, XXX, k3D, k3E, k3F }, \ + { k40, XXX, k42, k43, XXX, XXX, k46, XXX, XXX, XXX, k4A, k4B, XXX, k4D, k4E, k4F } \ +} diff --git a/keyboards/feels/feels65/info.json b/keyboards/feels/feels65/info.json new file mode 100644 index 0000000000..29692c4c07 --- /dev/null +++ b/keyboards/feels/feels65/info.json @@ -0,0 +1,26 @@ +{ + "keyboard_name": "Feels65", + "url": "https://github.com/swiftrax", + "maintainer": "Swiftrax", + "width": 16, + "height": 6, + "layouts": { + "LAYOUT_65_iso_blocker": { + "layout": [ + {"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15, "y":0}, + {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"x":13.75, "y":1, "w":1.25, "h":2}, {"x":15, "y":1}, + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"x":12.75, "y":2}, {"x":15, "y":2}, + {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"\u2191", "x":14, "y":3}, {"x":15, "y":3}, + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Ctrl", "x":11.25, "y":4, "w":1.25}, {"label":"\u2190", "x":13, "y":4}, {"label":"\u2193", "x":14, "y":4}, {"label":"\u2192", "x":15, "y":4} + ] + }, + "LAYOUT_65_ansi_blocker": { + "layout": [ + {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"x":15, "y":1}, + {"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15, "y":0}, + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"x":12.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"\u2191", "x":14, "y":3}, {"x":15, "y":3}, + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Ctrl", "x":11.25, "y":4, "w":1.25}, {"label":"\u2190", "x":13, "y":4}, {"label":"\u2193", "x":14, "y":4}, {"label":"\u2192", "x":15, "y":4} + ] + } + } +} diff --git a/keyboards/feels/feels65/keymaps/default/keymap.c b/keyboards/feels/feels65/keymaps/default/keymap.c new file mode 100644 index 0000000000..480173ee17 --- /dev/null +++ b/keyboards/feels/feels65/keymaps/default/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2021 Swiftrax + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_ansi_blocker( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_65_ansi_blocker( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_DEL, KC_INS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, + RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END + ), +}; \ No newline at end of file diff --git a/keyboards/feels/feels65/keymaps/via/keymap.c b/keyboards/feels/feels65/keymaps/via/keymap.c new file mode 100644 index 0000000000..144cf061a6 --- /dev/null +++ b/keyboards/feels/feels65/keymaps/via/keymap.c @@ -0,0 +1,48 @@ +/* Copyright 2021 Swiftrax + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_ansi_blocker( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_65_ansi_blocker( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_BSPC, KC_INS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, + RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END + ), + [2] = LAYOUT_65_ansi_blocker( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_65_ansi_blocker( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; \ No newline at end of file diff --git a/keyboards/feels/feels65/keymaps/via/rules.mk b/keyboards/feels/feels65/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/feels/feels65/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/feels/feels65/readme.md b/keyboards/feels/feels65/readme.md new file mode 100644 index 0000000000..c7eecc5e73 --- /dev/null +++ b/keyboards/feels/feels65/readme.md @@ -0,0 +1,13 @@ +# Feels65 + +65% Keyboard. Physical Reset button on PCB and bootmagic to enter bootloader + +* Keyboard Maintainer: Swiftrax +* Hardware Supported: Feels65 PCB +* Hardware Availability: https://github.com/swiftrax + +Make example for this keyboard (after setting up your build environment): + + make feels/feels65:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/feels/feels65/rules.mk b/keyboards/feels/feels65/rules.mk new file mode 100644 index 0000000000..cb34a6b405 --- /dev/null +++ b/keyboards/feels/feels65/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output From eddd6aa1130ac71b3aeeed7a311a275f27dc2de0 Mon Sep 17 00:00:00 2001 From: Ross Nelson Date: Thu, 13 May 2021 21:45:37 -0500 Subject: [PATCH 366/613] [Keyboard] Fix Alix40 layout (#12398) --- keyboards/tokyokeyboard/alix40/info.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/keyboards/tokyokeyboard/alix40/info.json b/keyboards/tokyokeyboard/alix40/info.json index dbc0f5cbfd..d2f3ccb91b 100644 --- a/keyboards/tokyokeyboard/alix40/info.json +++ b/keyboards/tokyokeyboard/alix40/info.json @@ -163,27 +163,27 @@ }, { "label": "N", - "x": 7.25, + "x": 8.25, "y": 2 }, { "label": "M", - "x": 7.25, + "x": 9.25, "y": 2 }, { "label": ",", - "x": 7.25, + "x": 10.25, "y": 2 }, { "label": ".", - "x": 7.25, + "x": 11.25, "y": 2 }, { "label": "/", - "x": 7.25, + "x": 12.25, "y": 2 }, { From ba66b63fe583b505cdbcbe290a8efdbd3e6067b2 Mon Sep 17 00:00:00 2001 From: cccywj <33842880+cccywj@users.noreply.github.com> Date: Thu, 13 May 2021 19:48:04 -0700 Subject: [PATCH 367/613] [Keyboard] Add fluxlab zplit keyboard (#12396) Co-authored-by: Drashna Jaelre Co-authored-by: Ryan --- keyboards/flxlb/zplit/config.h | 90 ++++++++++++++++++++++ keyboards/flxlb/zplit/info.json | 12 +++ keyboards/flxlb/zplit/keymaps/via/config.h | 28 +++++++ keyboards/flxlb/zplit/keymaps/via/keymap.c | 80 +++++++++++++++++++ keyboards/flxlb/zplit/readme.md | 13 ++++ keyboards/flxlb/zplit/rules.mk | 24 ++++++ keyboards/flxlb/zplit/zplit.c | 17 ++++ keyboards/flxlb/zplit/zplit.h | 37 +++++++++ 8 files changed, 301 insertions(+) create mode 100644 keyboards/flxlb/zplit/config.h create mode 100644 keyboards/flxlb/zplit/info.json create mode 100644 keyboards/flxlb/zplit/keymaps/via/config.h create mode 100644 keyboards/flxlb/zplit/keymaps/via/keymap.c create mode 100644 keyboards/flxlb/zplit/readme.md create mode 100644 keyboards/flxlb/zplit/rules.mk create mode 100644 keyboards/flxlb/zplit/zplit.c create mode 100644 keyboards/flxlb/zplit/zplit.h diff --git a/keyboards/flxlb/zplit/config.h b/keyboards/flxlb/zplit/config.h new file mode 100644 index 0000000000..83fe084844 --- /dev/null +++ b/keyboards/flxlb/zplit/config.h @@ -0,0 +1,90 @@ +/* +Copyright 2021 fluxlab +Copyright 2015 Jack Humbert + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7076 +#define PRODUCT_ID 0x0001 +#define DEVICE_VER 0x0001 +#define MANUFACTURER fluxlab +#define PRODUCT zplit + +/* key matrix size */ +// Rows are doubled-up +#define MATRIX_ROWS 8 +#define MATRIX_COLS 6 + +// wiring of each half +#define MATRIX_ROW_PINS { D4, F5, F4, F1 } +#define MATRIX_COL_PINS { B2, B3, D6, D7, B4, B5 } +// #define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6 } //uncomment this line and comment line above if you need to reverse left-to-right key order + +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ +// #define BACKLIGHT_LEVELS 3 + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +/* configuration for split keyboard */ +#define SOFT_SERIAL_PIN D0 +#define SELECT_SOFT_SERIAL_SPEED 1 +// #define USE_I2C +#define SPLIT_USB_DETECT +#define SPLIT_USB_TIMEOUT 500 + +#define ENCODERS_PAD_A { B0 } +#define ENCODERS_PAD_B { D2 } + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* ws2812 RGB LED */ +#define RGB_DI_PIN D3 +#define RGBLED_NUM 16 +#define RGBLIGHT_LED_MAP { 0, 1, 2, 3, 4, 5, 6, 7, 15, 14, 13, 12, 11, 10, 9, 8} +#define RGBLED_SPLIT { 8, 8 } +#define RGBLIGHT_SPLIT +#define RGBLIGHT_ANIMATIONS + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +// #define NO_DEBUG + +/* disable print */ +// #define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION diff --git a/keyboards/flxlb/zplit/info.json b/keyboards/flxlb/zplit/info.json new file mode 100644 index 0000000000..7cf3f0078a --- /dev/null +++ b/keyboards/flxlb/zplit/info.json @@ -0,0 +1,12 @@ +{ + "keyboard_name": "zplit", + "url": "https://github.com/cccywj/qmk_firmware", + "maintainer": "flxlb", + "width": 13, + "height": 4, + "layouts": { + "LAYOUT": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":12, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":12, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}, {"x":12, "y":3}] + } + } +} diff --git a/keyboards/flxlb/zplit/keymaps/via/config.h b/keyboards/flxlb/zplit/keymaps/via/config.h new file mode 100644 index 0000000000..a157047f7a --- /dev/null +++ b/keyboards/flxlb/zplit/keymaps/via/config.h @@ -0,0 +1,28 @@ +/* +This is the c configuration file for the keymap + +Copyright 2012 Jun Wako +Copyright 2015 Jack Humbert + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +//#define USE_I2C + +/* Select hand configuration */ +#define MASTER_LEFT +// #define MASTER_RIGHT +// #define EE_HANDS diff --git a/keyboards/flxlb/zplit/keymaps/via/keymap.c b/keyboards/flxlb/zplit/keymaps/via/keymap.c new file mode 100644 index 0000000000..7f92c80e29 --- /dev/null +++ b/keyboards/flxlb/zplit/keymaps/via/keymap.c @@ -0,0 +1,80 @@ +/* Copyright 2021 FluxLab + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#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 custom_layers { + _QWERTY, + _LOWER, + _RAISE, + _ADJUST, +}; + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) +#define ADJUST MO(_ADJUST) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Qwerty */ +[_QWERTY] = LAYOUT( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MUTE, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT , + KC_LCTL, KC_LGUI, KC_LALT, KC_DEL, LOWER, KC_SPC, KC_BSPC, RAISE, KC_LBRC, KC_RBRC, KC_QUOT, KC_MINS +), + +/* Lower */ +[_LOWER] = LAYOUT( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, + _______, _______, _______, KC_UP, _______, _______, _______, KC_4, KC_5, KC_6, _______, _______, + _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______,KC_1,KC_2,KC_3, KC_BSLS, _______, + _______, _______, _______, _______, LOWER, _______, _______, KC_0,KC_0, KC_DOT, KC_BSLS,KC_EQL +), + +/* Raise */ +[_RAISE] = LAYOUT( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, _______, RGB_TOG, _______, _______, _______, _______, _______, _______, + RGB_HUD, RGB_SAD, RGB_VAD, RGB_RMOD, _______, RGB_TOG, _______, _______, _______, _______, KC_UP, _______, + _______, _______, _______, _______, _______, _______, _______, RAISE, _______, KC_LEFT, KC_DOWN, KC_RGHT +), + +/* Adjust (Lower + Raise) */ +[_ADJUST] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +) + + +}; + +layer_state_t layer_state_set_user(layer_state_t state) { + return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); +} + +void encoder_update_user(uint8_t index, bool clockwise) { + if (clockwise) { + tap_code(KC_VOLD); + } else { + tap_code(KC_VOLU); + } +} diff --git a/keyboards/flxlb/zplit/readme.md b/keyboards/flxlb/zplit/readme.md new file mode 100644 index 0000000000..e5f88c9df5 --- /dev/null +++ b/keyboards/flxlb/zplit/readme.md @@ -0,0 +1,13 @@ +# fluxlab zplit + +![zplit](https://i.imgur.com/eN4aSG1l.png) + +Zplit is a 40% split keyboard inspired by the Zlant and similar to Zinc. It has a symmetrical layout to provide a more natural typing experience. + +* Keyboard Maintainer: [flxlb](https://flxlb.ca) + +Make example for this keyboard (after setting up your build environment): + + make flxlb/zplit:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/flxlb/zplit/rules.mk b/keyboards/flxlb/zplit/rules.mk new file mode 100644 index 0000000000..121bba1dfc --- /dev/null +++ b/keyboards/flxlb/zplit/rules.mk @@ -0,0 +1,24 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +ENCODER_ENABLE = yes +SPLIT_KEYBOARD = yes diff --git a/keyboards/flxlb/zplit/zplit.c b/keyboards/flxlb/zplit/zplit.c new file mode 100644 index 0000000000..25956640a7 --- /dev/null +++ b/keyboards/flxlb/zplit/zplit.c @@ -0,0 +1,17 @@ +/* Copyright 2021 FluxLab + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "zplit.h" diff --git a/keyboards/flxlb/zplit/zplit.h b/keyboards/flxlb/zplit/zplit.h new file mode 100644 index 0000000000..6a90efa8af --- /dev/null +++ b/keyboards/flxlb/zplit/zplit.h @@ -0,0 +1,37 @@ + /* Copyright 2021 FluxLab + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + + +#define LAYOUT( \ + L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \ + L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ + L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \ + L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35 \ + ) \ + { \ + { L00, L01, L02, L03, L04, L05 }, \ + { L10, L11, L12, L13, L14, L15 }, \ + { L20, L21, L22, L23, L24, L25 }, \ + { L30, L31, L32, L33, L34, L35 }, \ + { R05, R04, R03, R02, R01, R00 }, \ + { R15, R14, R13, R12, R11, R10 }, \ + { R25, R24, R23, R22, R21, R20 }, \ + { R35, R34, R33, R32, R31, R30 } \ + } From 7262d5cc93ca9248181a7e4493ad99aea7f6081d Mon Sep 17 00:00:00 2001 From: Nathaniel <314009+nathanielks@users.noreply.github.com> Date: Thu, 13 May 2021 22:10:26 -0500 Subject: [PATCH 368/613] [Keyboard] update dactyl manuform 4x5 thumb cluster wiring(#12545) --- keyboards/handwired/dactyl_manuform/4x5/4x5.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/handwired/dactyl_manuform/4x5/4x5.h b/keyboards/handwired/dactyl_manuform/4x5/4x5.h index a70f52f3e1..3d2d986bbc 100644 --- a/keyboards/handwired/dactyl_manuform/4x5/4x5.h +++ b/keyboards/handwired/dactyl_manuform/4x5/4x5.h @@ -45,8 +45,8 @@ L20, L21, L22, L23, L24, R20, R21, R22, R23, R24, \ L31, L32, R32, R33, \ L33, L34, R30, R31, \ - L44, L43, R41, R40, \ - L42, L41, R43, R42 \ + L43, L44, R40, R41, \ + L41, L42, R42, R43 \ ) \ { \ { R04, R03, R02, R01, R00 }, \ From 5195f97d356ee76a7206112ae0cb62c4d3c532d8 Mon Sep 17 00:00:00 2001 From: Brandon Date: Thu, 13 May 2021 22:11:36 -0500 Subject: [PATCH 369/613] [Keyboard] Added smAllice (#12543) Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com> --- keyboards/smallice/config.h | 90 ++++++++++++++++++++ keyboards/smallice/info.json | 12 +++ keyboards/smallice/keymaps/default/keymap.c | 32 +++++++ keyboards/smallice/keymaps/default/readme.md | 3 + keyboards/smallice/keymaps/via/keymap.c | 44 ++++++++++ keyboards/smallice/keymaps/via/readme.md | 3 + keyboards/smallice/keymaps/via/rules.mk | 2 + keyboards/smallice/readme.md | 21 +++++ keyboards/smallice/rules.mk | 22 +++++ keyboards/smallice/smallice.c | 17 ++++ keyboards/smallice/smallice.h | 40 +++++++++ 11 files changed, 286 insertions(+) create mode 100644 keyboards/smallice/config.h create mode 100644 keyboards/smallice/info.json create mode 100644 keyboards/smallice/keymaps/default/keymap.c create mode 100644 keyboards/smallice/keymaps/default/readme.md create mode 100644 keyboards/smallice/keymaps/via/keymap.c create mode 100644 keyboards/smallice/keymaps/via/readme.md create mode 100644 keyboards/smallice/keymaps/via/rules.mk create mode 100644 keyboards/smallice/readme.md create mode 100644 keyboards/smallice/rules.mk create mode 100644 keyboards/smallice/smallice.c create mode 100644 keyboards/smallice/smallice.h diff --git a/keyboards/smallice/config.h b/keyboards/smallice/config.h new file mode 100644 index 0000000000..551c3cefd2 --- /dev/null +++ b/keyboards/smallice/config.h @@ -0,0 +1,90 @@ +/* +Copyright 2020 quark + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x514B // QK Quark +#define PRODUCT_ID 0x5341 // SA smAllice +#define DEVICE_VER 0x0001 +#define MANUFACTURER quark +#define PRODUCT smAllice + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 15 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ +#define MATRIX_ROW_PINS { B0, B6, B5, B4 } +#define MATRIX_COL_PINS { C7, C6, F7, F6, F5, F4, F1, D4, D6, D7, D0, D1, D2, D3, D5 } +#define UNUSED_PINS { E6, F0 } + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +#define RGB_DI_PIN B7 +#ifdef RGB_DI_PIN +# define RGBLED_NUM 12 +# define RGBLIGHT_HUE_STEP 8 +# define RGBLIGHT_SAT_STEP 8 +# define RGBLIGHT_VAL_STEP 8 +# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +# define RGBLIGHT_ANIMATIONS +/*== or choose animations ==*/ +//# define RGBLIGHT_EFFECT_BREATHING +//# define RGBLIGHT_EFFECT_RAINBOW_MOOD +//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +//# define RGBLIGHT_EFFECT_SNAKE +//# define RGBLIGHT_EFFECT_KNIGHT +//# define RGBLIGHT_EFFECT_CHRISTMAS +//# define RGBLIGHT_EFFECT_STATIC_GRADIENT +//# define RGBLIGHT_EFFECT_RGB_TEST +//# define RGBLIGHT_EFFECT_ALTERNATING +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/smallice/info.json b/keyboards/smallice/info.json new file mode 100644 index 0000000000..979791db2b --- /dev/null +++ b/keyboards/smallice/info.json @@ -0,0 +1,12 @@ +{ + "keyboard_name": "smAllice", + "url": "https://keyhive.xyz/shop/smallice", + "maintainer": "https://github.com/Armastardo", + "width": 16.75, + "height": 4, + "layouts": { + "LAYOUT": { + "layout": [{"label":"V+", "x":0.5, "y":0}, {"label":"Tab", "x":1.75, "y":0}, {"label":"Q", "x":2.75, "y":0}, {"label":"W", "x":3.75, "y":0}, {"label":"E", "x":4.75, "y":0}, {"label":"R", "x":5.75, "y":0}, {"label":"T", "x":6.75, "y":0}, {"label":"Y", "x":8.25, "y":0}, {"label":"U", "x":9.25, "y":0}, {"label":"I", "x":10.25, "y":0}, {"label":"O", "x":11.25, "y":0}, {"label":"P", "x":12.25, "y":0}, {"label":"[ {", "x":13.25, "y":0}, {"label":"] }", "x":14.25, "y":0}, {"label":"Bcsp", "x":15.25, "y":0}, {"label":"V-", "x":0.25, "y":1}, {"label":"Caps", "x":1.5, "y":1, "w":1.25}, {"label":"A", "x":2.75, "y":1}, {"label":"S", "x":3.75, "y":1}, {"label":"D", "x":4.75, "y":1}, {"label":"F", "x":5.75, "y":1}, {"label":"G", "x":6.75, "y":1}, {"label":"H", "x":8.75, "y":1}, {"label":"J", "x":9.75, "y":1}, {"label":"K", "x":10.75, "y":1}, {"label":"L", "x":11.75, "y":1}, {"label":": ;", "x":12.75, "y":1}, {"label":", \"", "x":13.75, "y":1}, {"label":"Enter", "x":14.75, "y":1, "w":1.75}, {"label":"V-", "x":0, "y":2}, {"label":"Shift", "x":1.25, "y":2, "w":1.75}, {"label":"Z", "x":3, "y":2}, {"label":"X", "x":4, "y":2}, {"label":"C", "x":5, "y":2}, {"label":"V", "x":6, "y":2}, {"label":"B", "x":7, "y":2}, {"label":"B", "x":8.5, "y":2}, {"label":"N", "x":9.5, "y":2}, {"label":"M", "x":10.5, "y":2}, {"label":"<", "x":11.5, "y":2}, {"label":">", "x":12.5, "y":2}, {"label":"Shift", "x":13.5, "y":2, "w":1.25}, {"label":"Up", "x":14.75, "y":2}, {"label":"?", "x":15.75, "y":2}, {"label":"Ctrl", "x":1.25, "y":3}, {"label":"Alt", "x":3, "y":3, "w":1.25}, {"x":4.25, "y":3, "w":2}, {"label":"Win", "x":6.25, "y":3}, {"x":9.5, "y":3, "w":2.75}, {"label":"Fn", "x":12.25, "y":3}, {"label":"left", "x":13.75, "y":3}, {"label":"down", "x":14.75, "y":3}, {"label":"right", "x":15.75, "y":3}] + } + } +} \ No newline at end of file diff --git a/keyboards/smallice/keymaps/default/keymap.c b/keyboards/smallice/keymaps/default/keymap.c new file mode 100644 index 0000000000..d4a5fad42b --- /dev/null +++ b/keyboards/smallice/keymaps/default/keymap.c @@ -0,0 +1,32 @@ +/* Copyright 2020 quark + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [0] = LAYOUT( + KC_ESC, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, + KC_VOLU, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, + KC_VOLD, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_SLSH, + KC_LCTRL, KC_LALT, KC_SPC, KC_LWIN, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT + ), + [1] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/smallice/keymaps/default/readme.md b/keyboards/smallice/keymaps/default/readme.md new file mode 100644 index 0000000000..e0c573662c --- /dev/null +++ b/keyboards/smallice/keymaps/default/readme.md @@ -0,0 +1,3 @@ +# The default keymap for smAllice + +![smAllice](https://i.imgur.com/OngGf9n.png) \ No newline at end of file diff --git a/keyboards/smallice/keymaps/via/keymap.c b/keyboards/smallice/keymaps/via/keymap.c new file mode 100644 index 0000000000..d9f5d58d65 --- /dev/null +++ b/keyboards/smallice/keymaps/via/keymap.c @@ -0,0 +1,44 @@ +/* Copyright 2020 quark + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [0] = LAYOUT( + KC_ESC, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, + KC_VOLU, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, + KC_VOLD, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_SLSH, + KC_LCTRL, KC_LALT, KC_SPC, KC_LWIN, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT + ), + [1] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/smallice/keymaps/via/readme.md b/keyboards/smallice/keymaps/via/readme.md new file mode 100644 index 0000000000..af98163f94 --- /dev/null +++ b/keyboards/smallice/keymaps/via/readme.md @@ -0,0 +1,3 @@ +# VIA keymap for smAllice + +![smAllice](https://i.imgur.com/OngGf9n.png) \ No newline at end of file diff --git a/keyboards/smallice/keymaps/via/rules.mk b/keyboards/smallice/keymaps/via/rules.mk new file mode 100644 index 0000000000..43061db1dd --- /dev/null +++ b/keyboards/smallice/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/smallice/readme.md b/keyboards/smallice/readme.md new file mode 100644 index 0000000000..70ac44cf74 --- /dev/null +++ b/keyboards/smallice/readme.md @@ -0,0 +1,21 @@ +# smAllice + +![smAllice](https://i.imgur.com/HAiJnnK.png) + +A 40% alice-like keyboard with an arrow cluster. + +* Keyboard Maintainer: [Brandon Beltran](https://github.com/armastardo) +* Hardware Supported: smAllice PCB +* Hardware Availability: [KeyHive](http://keyhive.xyz/) + +Make example for this keyboard (after setting up your build environment): + + make smallice:default + +### Flash + +- Plug in +- Press reset button +- Flash using QMK Toolbox or dfu-util (`make smallice::flash`) + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/smallice/rules.mk b/keyboards/smallice/rules.mk new file mode 100644 index 0000000000..ef4ccf32fb --- /dev/null +++ b/keyboards/smallice/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/smallice/smallice.c b/keyboards/smallice/smallice.c new file mode 100644 index 0000000000..c7d65e27ab --- /dev/null +++ b/keyboards/smallice/smallice.c @@ -0,0 +1,17 @@ +/* Copyright 2020 armastardo / quark + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "smallice.h" diff --git a/keyboards/smallice/smallice.h b/keyboards/smallice/smallice.h new file mode 100644 index 0000000000..12d4356795 --- /dev/null +++ b/keyboards/smallice/smallice.h @@ -0,0 +1,40 @@ +/* Copyright 2020 armastardo / quark + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K114, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, \ + K301, K303, K305, K306, K308, K310, K312, K313, K314 \ +) \ +{ \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, KC_NO, K114 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214 }, \ + { KC_NO, K301, KC_NO, K303, KC_NO, K305, K306, KC_NO, K308, KC_NO, K310, KC_NO, K312, K313, K314 } \ +} From 3d6d4bd94928e147c4f0aefb53083347c2a40019 Mon Sep 17 00:00:00 2001 From: KnoblesseOblige <63174954+KnoblesseOblige@users.noreply.github.com> Date: Thu, 13 May 2021 22:20:51 -0500 Subject: [PATCH 370/613] [Keyboard] Add Training Wheel 40 (#12542) --- keyboards/tw40/config.h | 49 + keyboards/tw40/info.json | 4478 ++++++++++++++++++++++ keyboards/tw40/keymaps/default/keymap.c | 39 + keyboards/tw40/keymaps/default/readme.md | 1 + keyboards/tw40/readme.md | 20 + keyboards/tw40/rules.mk | 22 + keyboards/tw40/tw40.c | 17 + keyboards/tw40/tw40.h | 233 ++ 8 files changed, 4859 insertions(+) create mode 100644 keyboards/tw40/config.h create mode 100644 keyboards/tw40/info.json create mode 100644 keyboards/tw40/keymaps/default/keymap.c create mode 100644 keyboards/tw40/keymaps/default/readme.md create mode 100644 keyboards/tw40/readme.md create mode 100644 keyboards/tw40/rules.mk create mode 100644 keyboards/tw40/tw40.c create mode 100644 keyboards/tw40/tw40.h diff --git a/keyboards/tw40/config.h b/keyboards/tw40/config.h new file mode 100644 index 0000000000..839babb920 --- /dev/null +++ b/keyboards/tw40/config.h @@ -0,0 +1,49 @@ +/* +Copyright 2020 KnoblesseOblige + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x503D /* "P3D" */ +#define PRODUCT_ID 0x5457 /* "TW" */ +#define DEVICE_VER 0x0001 +#define MANUFACTURER KnoblesseOblige +#define PRODUCT TW40 + +#define MATRIX_ROWS 4 +#define MATRIX_COLS 14 + +#define MATRIX_ROW_PINS { B0, D5, D3, D2 } +#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4 } +#define UNUSED_PINS + +#define DIODE_DIRECTION COL2ROW + +#define RGB_DI_PIN E6 +#define RGBLED_NUM 15 +#define RGBLIGHT_ANIMATIONS + +#define DEBOUNCE 5 + +#define LOCKING_SUPPORT_ENABLE + +#define LOCKING_RESYNC_ENABLE + +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION diff --git a/keyboards/tw40/info.json b/keyboards/tw40/info.json new file mode 100644 index 0000000000..1162928362 --- /dev/null +++ b/keyboards/tw40/info.json @@ -0,0 +1,4478 @@ +{ + "keyboard_name": "Training Wheel 40", + "url": "https://p3dstore.com/products/tw40-gb", + "maintainer": "KnoblesseOblige", + "width": 14, + "height": 4, + "layouts": { + "LAYOUT_all": { + "layout": [ + { + "label": "k00", + "x": 0, + "y": 0, + "w": 1.5 + }, + { + "label": "k01", + "x": 1.5, + "y": 0 + }, + { + "label": "k02", + "x": 2.5, + "y": 0 + }, + { + "label": "k03", + "x": 3.5, + "y": 0 + }, + { + "label": "k04", + "x": 4.5, + "y": 0 + }, + { + "label": "k05", + "x": 5.5, + "y": 0 + }, + { + "label": "k06", + "x": 6.5, + "y": 0 + }, + { + "label": "k07", + "x": 7.5, + "y": 0 + }, + { + "label": "k08", + "x": 8.5, + "y": 0 + }, + { + "label": "k09", + "x": 9.5, + "y": 0 + }, + { + "label": "k0a", + "x": 10.5, + "y": 0 + }, + { + "label": "k0b", + "x": 11.5, + "y": 0 + }, + { + "label": "k0c", + "x": 12.5, + "y": 0 + }, + { + "label": "k0d", + "x": 13.5, + "y": 0, + "w": 1.5 + }, + { + "label": "k10", + "x": 0, + "y": 1, + "w": 1.75 + }, + { + "label": "k11", + "x": 1.75, + "y": 1 + }, + { + "label": "k12", + "x": 2.75, + "y": 1 + }, + { + "label": "k13", + "x": 3.75, + "y": 1 + }, + { + "label": "k14", + "x": 4.75, + "y": 1 + }, + { + "label": "k15", + "x": 5.75, + "y": 1 + }, + { + "label": "k16", + "x": 6.75, + "y": 1 + }, + { + "label": "k17", + "x": 7.75, + "y": 1 + }, + { + "label": "k18", + "x": 8.75, + "y": 1 + }, + { + "label": "k19", + "x": 9.75, + "y": 1 + }, + { + "label": "k1a", + "x": 10.75, + "y": 1 + }, + { + "label": "k1b", + "x": 11.75, + "y": 1 + }, + { + "label": "k1c", + "x": 12.75, + "y": 1, + "w": 2.25 + }, + { + "label": "k20", + "x": 0, + "y": 2, + "w": 2.25 + }, + { + "label": "k21", + "x": 2.25, + "y": 2 + }, + { + "label": "k22", + "x": 3.25, + "y": 2 + }, + { + "label": "k23", + "x": 4.25, + "y": 2 + }, + { + "label": "k24", + "x": 5.25, + "y": 2 + }, + { + "label": "k25", + "x": 6.25, + "y": 2 + }, + { + "label": "k26", + "x": 7.25, + "y": 2 + }, + { + "label": "k27", + "x": 8.25, + "y": 2 + }, + { + "label": "k28", + "x": 9.25, + "y": 2 + }, + { + "label": "k29", + "x": 10.25, + "y": 2 + }, + { + "label": "k2b", + "x": 11.25, + "y": 2, + "w": 1.75 + }, + { + "label": "k2c", + "x": 13, + "y": 2 + }, + { + "label": "k2d", + "x": 14, + "y": 2 + }, + { + "label": "k30", + "x": 0, + "y": 3, + "w": 1.25 + }, + { + "label": "k31", + "x": 1.25, + "y": 3, + "w": 1.25 + }, + { + "label": "k32", + "x": 2.5, + "y": 3, + "w": 1.25 + }, + { + "label": "k33", + "x": 3.75, + "y": 3, + "w": 1.25 + }, + { + "label": "k34", + "x": 5, + "y": 3, + "w": 2.25 + }, + { + "label": "k35", + "x": 7.25, + "y": 3, + "w": 1.25 + }, + { + "label": "k36", + "x": 8.5, + "y": 3, + "w": 1.5 + }, + { + "label": "k39", + "x": 10, + "y": 3 + }, + { + "label": "k3a", + "x": 11, + "y": 3 + }, + { + "label": "k3b", + "x": 12, + "y": 3 + }, + { + "label": "k3c", + "x": 13, + "y": 3 + }, + { + "label": "k3d", + "x": 14, + "y": 3 + } + ] + }, + "LAYOUT_3_split_space_standard_rshift_4x_125": { + "layout": [ + { + "label": "k00", + "x": 0, + "y": 0, + "w": 1.5 + }, + { + "label": "k01", + "x": 1.5, + "y": 0 + }, + { + "label": "k02", + "x": 2.5, + "y": 0 + }, + { + "label": "k03", + "x": 3.5, + "y": 0 + }, + { + "label": "k04", + "x": 4.5, + "y": 0 + }, + { + "label": "k05", + "x": 5.5, + "y": 0 + }, + { + "label": "k06", + "x": 6.5, + "y": 0 + }, + { + "label": "k07", + "x": 7.5, + "y": 0 + }, + { + "label": "k08", + "x": 8.5, + "y": 0 + }, + { + "label": "k09", + "x": 9.5, + "y": 0 + }, + { + "label": "k0a", + "x": 10.5, + "y": 0 + }, + { + "label": "k0b", + "x": 11.5, + "y": 0 + }, + { + "label": "k0c", + "x": 12.5, + "y": 0 + }, + { + "label": "k0d", + "x": 13.5, + "y": 0, + "w": 1.5 + }, + { + "label": "k10", + "x": 0, + "y": 1, + "w": 1.75 + }, + { + "label": "k11", + "x": 1.75, + "y": 1 + }, + { + "label": "k12", + "x": 2.75, + "y": 1 + }, + { + "label": "k13", + "x": 3.75, + "y": 1 + }, + { + "label": "k14", + "x": 4.75, + "y": 1 + }, + { + "label": "k15", + "x": 5.75, + "y": 1 + }, + { + "label": "k16", + "x": 6.75, + "y": 1 + }, + { + "label": "k17", + "x": 7.75, + "y": 1 + }, + { + "label": "k18", + "x": 8.75, + "y": 1 + }, + { + "label": "k19", + "x": 9.75, + "y": 1 + }, + { + "label": "k1a", + "x": 10.75, + "y": 1 + }, + { + "label": "k1b", + "x": 11.75, + "y": 1 + }, + { + "label": "k1c", + "x": 12.75, + "y": 1, + "w": 2.25 + }, + { + "label": "k20", + "x": 0, + "y": 2, + "w": 2.25 + }, + { + "label": "k21", + "x": 2.25, + "y": 2 + }, + { + "label": "k22", + "x": 3.25, + "y": 2 + }, + { + "label": "k23", + "x": 4.25, + "y": 2 + }, + { + "label": "k24", + "x": 5.25, + "y": 2 + }, + { + "label": "k25", + "x": 6.25, + "y": 2 + }, + { + "label": "k26", + "x": 7.25, + "y": 2 + }, + { + "label": "k27", + "x": 8.25, + "y": 2 + }, + { + "label": "k28", + "x": 9.25, + "y": 2 + }, + { + "label": "k29", + "x": 10.25, + "y": 2 + }, + { + "label": "k2b", + "x": 11.25, + "y": 2 + }, + { + "label": "k2c", + "x": 12.25, + "y": 2, + "w": 2.75 + }, + { + "label": "k30", + "x": 0, + "y": 3, + "w": 1.25 + }, + { + "label": "k31", + "x": 1.25, + "y": 3, + "w": 1.25 + }, + { + "label": "k32", + "x": 2.5, + "y": 3, + "w": 1.25 + }, + { + "label": "k33", + "x": 3.75, + "y": 3, + "w": 2.25 + }, + { + "label": "k34", + "x": 6, + "y": 3, + "w": 1.25 + }, + { + "label": "k36", + "x": 7.25, + "y": 3, + "w": 2.75 + }, + { + "label": "k39", + "x": 10, + "y": 3, + "w": 1.25 + }, + { + "label": "k3b", + "x": 11.25, + "y": 3, + "w": 1.25 + }, + { + "label": "k3c", + "x": 12.5, + "y": 3, + "w": 1.25 + }, + { + "label": "k3d", + "x": 13.75, + "y": 3, + "w": 1.25 + } + ] + }, + "LAYOUT_3_split_space_standard_rshift_5x_100": { + "layout": [ + { + "label": "k00", + "x": 0, + "y": 0, + "w": 1.5 + }, + { + "label": "k01", + "x": 1.5, + "y": 0 + }, + { + "label": "k02", + "x": 2.5, + "y": 0 + }, + { + "label": "k03", + "x": 3.5, + "y": 0 + }, + { + "label": "k04", + "x": 4.5, + "y": 0 + }, + { + "label": "k05", + "x": 5.5, + "y": 0 + }, + { + "label": "k06", + "x": 6.5, + "y": 0 + }, + { + "label": "k07", + "x": 7.5, + "y": 0 + }, + { + "label": "k08", + "x": 8.5, + "y": 0 + }, + { + "label": "k09", + "x": 9.5, + "y": 0 + }, + { + "label": "k0a", + "x": 10.5, + "y": 0 + }, + { + "label": "k0b", + "x": 11.5, + "y": 0 + }, + { + "label": "k0c", + "x": 12.5, + "y": 0 + }, + { + "label": "k0d", + "x": 13.5, + "y": 0, + "w": 1.5 + }, + { + "label": "k10", + "x": 0, + "y": 1, + "w": 1.75 + }, + { + "label": "k11", + "x": 1.75, + "y": 1 + }, + { + "label": "k12", + "x": 2.75, + "y": 1 + }, + { + "label": "k13", + "x": 3.75, + "y": 1 + }, + { + "label": "k14", + "x": 4.75, + "y": 1 + }, + { + "label": "k15", + "x": 5.75, + "y": 1 + }, + { + "label": "k16", + "x": 6.75, + "y": 1 + }, + { + "label": "k17", + "x": 7.75, + "y": 1 + }, + { + "label": "k18", + "x": 8.75, + "y": 1 + }, + { + "label": "k19", + "x": 9.75, + "y": 1 + }, + { + "label": "k1a", + "x": 10.75, + "y": 1 + }, + { + "label": "k1b", + "x": 11.75, + "y": 1 + }, + { + "label": "k1c", + "x": 12.75, + "y": 1, + "w": 2.25 + }, + { + "label": "k20", + "x": 0, + "y": 2, + "w": 2.25 + }, + { + "label": "k21", + "x": 2.25, + "y": 2 + }, + { + "label": "k22", + "x": 3.25, + "y": 2 + }, + { + "label": "k23", + "x": 4.25, + "y": 2 + }, + { + "label": "k24", + "x": 5.25, + "y": 2 + }, + { + "label": "k25", + "x": 6.25, + "y": 2 + }, + { + "label": "k26", + "x": 7.25, + "y": 2 + }, + { + "label": "k27", + "x": 8.25, + "y": 2 + }, + { + "label": "k28", + "x": 9.25, + "y": 2 + }, + { + "label": "k29", + "x": 10.25, + "y": 2 + }, + { + "label": "k2b", + "x": 11.25, + "y": 2 + }, + { + "label": "k2c", + "x": 12.25, + "y": 2, + "w": 2.75 + }, + { + "label": "k30", + "x": 0, + "y": 3, + "w": 1.25 + }, + { + "label": "k31", + "x": 1.25, + "y": 3, + "w": 1.25 + }, + { + "label": "k32", + "x": 2.5, + "y": 3, + "w": 1.25 + }, + { + "label": "k33", + "x": 3.75, + "y": 3, + "w": 2.25 + }, + { + "label": "k34", + "x": 6, + "y": 3, + "w": 1.25 + }, + { + "label": "k36", + "x": 7.25, + "y": 3, + "w": 2.75 + }, + { + "label": "k39", + "x": 10, + "y": 3 + }, + { + "label": "k3a", + "x": 11, + "y": 3 + }, + { + "label": "k3b", + "x": 12, + "y": 3 + }, + { + "label": "k3c", + "x": 13, + "y": 3 + }, + { + "label": "k3d", + "x": 14, + "y": 3 + } + ] + }, + "LAYOUT_3_split_space_split_rshift_4x_125": { + "layout": [ + { + "label": "k00", + "x": 0, + "y": 0, + "w": 1.5 + }, + { + "label": "k01", + "x": 1.5, + "y": 0 + }, + { + "label": "k02", + "x": 2.5, + "y": 0 + }, + { + "label": "k03", + "x": 3.5, + "y": 0 + }, + { + "label": "k04", + "x": 4.5, + "y": 0 + }, + { + "label": "k05", + "x": 5.5, + "y": 0 + }, + { + "label": "k06", + "x": 6.5, + "y": 0 + }, + { + "label": "k07", + "x": 7.5, + "y": 0 + }, + { + "label": "k08", + "x": 8.5, + "y": 0 + }, + { + "label": "k09", + "x": 9.5, + "y": 0 + }, + { + "label": "k0a", + "x": 10.5, + "y": 0 + }, + { + "label": "k0b", + "x": 11.5, + "y": 0 + }, + { + "label": "k0c", + "x": 12.5, + "y": 0 + }, + { + "label": "k0d", + "x": 13.5, + "y": 0, + "w": 1.5 + }, + { + "label": "k10", + "x": 0, + "y": 1, + "w": 1.75 + }, + { + "label": "k11", + "x": 1.75, + "y": 1 + }, + { + "label": "k12", + "x": 2.75, + "y": 1 + }, + { + "label": "k13", + "x": 3.75, + "y": 1 + }, + { + "label": "k14", + "x": 4.75, + "y": 1 + }, + { + "label": "k15", + "x": 5.75, + "y": 1 + }, + { + "label": "k16", + "x": 6.75, + "y": 1 + }, + { + "label": "k17", + "x": 7.75, + "y": 1 + }, + { + "label": "k18", + "x": 8.75, + "y": 1 + }, + { + "label": "k19", + "x": 9.75, + "y": 1 + }, + { + "label": "k1a", + "x": 10.75, + "y": 1 + }, + { + "label": "k1b", + "x": 11.75, + "y": 1 + }, + { + "label": "k1c", + "x": 12.75, + "y": 1, + "w": 2.25 + }, + { + "label": "k20", + "x": 0, + "y": 2, + "w": 2.25 + }, + { + "label": "k21", + "x": 2.25, + "y": 2 + }, + { + "label": "k22", + "x": 3.25, + "y": 2 + }, + { + "label": "k23", + "x": 4.25, + "y": 2 + }, + { + "label": "k24", + "x": 5.25, + "y": 2 + }, + { + "label": "k25", + "x": 6.25, + "y": 2 + }, + { + "label": "k26", + "x": 7.25, + "y": 2 + }, + { + "label": "k27", + "x": 8.25, + "y": 2 + }, + { + "label": "k28", + "x": 9.25, + "y": 2 + }, + { + "label": "k29", + "x": 10.25, + "y": 2 + }, + { + "label": "k2b", + "x": 11.25, + "y": 2, + "w": 1.75 + }, + { + "label": "k2c", + "x": 13, + "y": 2 + }, + { + "label": "k2d", + "x": 14, + "y": 2 + }, + { + "label": "k30", + "x": 0, + "y": 3, + "w": 1.25 + }, + { + "label": "k31", + "x": 1.25, + "y": 3, + "w": 1.25 + }, + { + "label": "k32", + "x": 2.5, + "y": 3, + "w": 1.25 + }, + { + "label": "k33", + "x": 3.75, + "y": 3, + "w": 2.25 + }, + { + "label": "k34", + "x": 6, + "y": 3, + "w": 1.25 + }, + { + "label": "k36", + "x": 7.25, + "y": 3, + "w": 2.75 + }, + { + "label": "k39", + "x": 10, + "y": 3, + "w": 1.25 + }, + { + "label": "k3b", + "x": 11.25, + "y": 3, + "w": 1.25 + }, + { + "label": "k3c", + "x": 12.5, + "y": 3, + "w": 1.25 + }, + { + "label": "k3d", + "x": 13.75, + "y": 3, + "w": 1.25 + } + ] + }, + "LAYOUT_3_split_space_split_rshift_5x_100": { + "layout": [ + { + "label": "k00", + "x": 0, + "y": 0, + "w": 1.5 + }, + { + "label": "k01", + "x": 1.5, + "y": 0 + }, + { + "label": "k02", + "x": 2.5, + "y": 0 + }, + { + "label": "k03", + "x": 3.5, + "y": 0 + }, + { + "label": "k04", + "x": 4.5, + "y": 0 + }, + { + "label": "k05", + "x": 5.5, + "y": 0 + }, + { + "label": "k06", + "x": 6.5, + "y": 0 + }, + { + "label": "k07", + "x": 7.5, + "y": 0 + }, + { + "label": "k08", + "x": 8.5, + "y": 0 + }, + { + "label": "k09", + "x": 9.5, + "y": 0 + }, + { + "label": "k0a", + "x": 10.5, + "y": 0 + }, + { + "label": "k0b", + "x": 11.5, + "y": 0 + }, + { + "label": "k0c", + "x": 12.5, + "y": 0 + }, + { + "label": "k0d", + "x": 13.5, + "y": 0, + "w": 1.5 + }, + { + "label": "k10", + "x": 0, + "y": 1, + "w": 1.75 + }, + { + "label": "k11", + "x": 1.75, + "y": 1 + }, + { + "label": "k12", + "x": 2.75, + "y": 1 + }, + { + "label": "k13", + "x": 3.75, + "y": 1 + }, + { + "label": "k14", + "x": 4.75, + "y": 1 + }, + { + "label": "k15", + "x": 5.75, + "y": 1 + }, + { + "label": "k16", + "x": 6.75, + "y": 1 + }, + { + "label": "k17", + "x": 7.75, + "y": 1 + }, + { + "label": "k18", + "x": 8.75, + "y": 1 + }, + { + "label": "k19", + "x": 9.75, + "y": 1 + }, + { + "label": "k1a", + "x": 10.75, + "y": 1 + }, + { + "label": "k1b", + "x": 11.75, + "y": 1 + }, + { + "label": "k1c", + "x": 12.75, + "y": 1, + "w": 2.25 + }, + { + "label": "k20", + "x": 0, + "y": 2, + "w": 2.25 + }, + { + "label": "k21", + "x": 2.25, + "y": 2 + }, + { + "label": "k22", + "x": 3.25, + "y": 2 + }, + { + "label": "k23", + "x": 4.25, + "y": 2 + }, + { + "label": "k24", + "x": 5.25, + "y": 2 + }, + { + "label": "k25", + "x": 6.25, + "y": 2 + }, + { + "label": "k26", + "x": 7.25, + "y": 2 + }, + { + "label": "k27", + "x": 8.25, + "y": 2 + }, + { + "label": "k28", + "x": 9.25, + "y": 2 + }, + { + "label": "k29", + "x": 10.25, + "y": 2 + }, + { + "label": "k2b", + "x": 11.25, + "y": 2, + "w": 1.75 + }, + { + "label": "k2c", + "x": 13, + "y": 2 + }, + { + "label": "k2d", + "x": 14, + "y": 2 + }, + { + "label": "k30", + "x": 0, + "y": 3, + "w": 1.25 + }, + { + "label": "k31", + "x": 1.25, + "y": 3, + "w": 1.25 + }, + { + "label": "k32", + "x": 2.5, + "y": 3, + "w": 1.25 + }, + { + "label": "k33", + "x": 3.75, + "y": 3, + "w": 2.25 + }, + { + "label": "k34", + "x": 6, + "y": 3, + "w": 1.25 + }, + { + "label": "k36", + "x": 7.25, + "y": 3, + "w": 2.75 + }, + { + "label": "k39", + "x": 10, + "y": 3 + }, + { + "label": "k3a", + "x": 11, + "y": 3 + }, + { + "label": "k3b", + "x": 12, + "y": 3 + }, + { + "label": "k3c", + "x": 13, + "y": 3 + }, + { + "label": "k3d", + "x": 14, + "y": 3 + } + ] + }, + "LAYOUT_4_split_space_standard_rshift_4x_125": { + "layout": [ + { + "label": "k00", + "x": 0, + "y": 0, + "w": 1.5 + }, + { + "label": "k01", + "x": 1.5, + "y": 0 + }, + { + "label": "k02", + "x": 2.5, + "y": 0 + }, + { + "label": "k03", + "x": 3.5, + "y": 0 + }, + { + "label": "k04", + "x": 4.5, + "y": 0 + }, + { + "label": "k05", + "x": 5.5, + "y": 0 + }, + { + "label": "k06", + "x": 6.5, + "y": 0 + }, + { + "label": "k07", + "x": 7.5, + "y": 0 + }, + { + "label": "k08", + "x": 8.5, + "y": 0 + }, + { + "label": "k09", + "x": 9.5, + "y": 0 + }, + { + "label": "k0a", + "x": 10.5, + "y": 0 + }, + { + "label": "k0b", + "x": 11.5, + "y": 0 + }, + { + "label": "k0c", + "x": 12.5, + "y": 0 + }, + { + "label": "k0d", + "x": 13.5, + "y": 0, + "w": 1.5 + }, + { + "label": "k10", + "x": 0, + "y": 1, + "w": 1.75 + }, + { + "label": "k11", + "x": 1.75, + "y": 1 + }, + { + "label": "k12", + "x": 2.75, + "y": 1 + }, + { + "label": "k13", + "x": 3.75, + "y": 1 + }, + { + "label": "k14", + "x": 4.75, + "y": 1 + }, + { + "label": "k15", + "x": 5.75, + "y": 1 + }, + { + "label": "k16", + "x": 6.75, + "y": 1 + }, + { + "label": "k17", + "x": 7.75, + "y": 1 + }, + { + "label": "k18", + "x": 8.75, + "y": 1 + }, + { + "label": "k19", + "x": 9.75, + "y": 1 + }, + { + "label": "k1a", + "x": 10.75, + "y": 1 + }, + { + "label": "k1b", + "x": 11.75, + "y": 1 + }, + { + "label": "k1c", + "x": 12.75, + "y": 1, + "w": 2.25 + }, + { + "label": "k20", + "x": 0, + "y": 2, + "w": 2.25 + }, + { + "label": "k21", + "x": 2.25, + "y": 2 + }, + { + "label": "k22", + "x": 3.25, + "y": 2 + }, + { + "label": "k23", + "x": 4.25, + "y": 2 + }, + { + "label": "k24", + "x": 5.25, + "y": 2 + }, + { + "label": "k25", + "x": 6.25, + "y": 2 + }, + { + "label": "k26", + "x": 7.25, + "y": 2 + }, + { + "label": "k27", + "x": 8.25, + "y": 2 + }, + { + "label": "k28", + "x": 9.25, + "y": 2 + }, + { + "label": "k29", + "x": 10.25, + "y": 2 + }, + { + "label": "k2b", + "x": 11.25, + "y": 2 + }, + { + "label": "k2c", + "x": 12.25, + "y": 2, + "w": 2.75 + }, + { + "label": "k30", + "x": 0, + "y": 3, + "w": 1.25 + }, + { + "label": "k31", + "x": 1.25, + "y": 3, + "w": 1.25 + }, + { + "label": "k32", + "x": 2.5, + "y": 3, + "w": 1.25 + }, + { + "label": "k33", + "x": 3.75, + "y": 3, + "w": 1.25 + }, + { + "label": "k34", + "x": 5, + "y": 3, + "w": 2.25 + }, + { + "label": "k35", + "x": 7.25, + "y": 3, + "w": 1.25 + }, + { + "label": "k36", + "x": 8.5, + "y": 3, + "w": 1.5 + }, + { + "label": "k39", + "x": 10, + "y": 3, + "w": 1.25 + }, + { + "label": "k3b", + "x": 11.25, + "y": 3, + "w": 1.25 + }, + { + "label": "k3c", + "x": 12.5, + "y": 3, + "w": 1.25 + }, + { + "label": "k3d", + "x": 13.75, + "y": 3, + "w": 1.25 + } + ] + }, + "LAYOUT_4_split_space_standard_rshift_5x_100": { + "layout": [ + { + "label": "k00", + "x": 0, + "y": 0, + "w": 1.5 + }, + { + "label": "k01", + "x": 1.5, + "y": 0 + }, + { + "label": "k02", + "x": 2.5, + "y": 0 + }, + { + "label": "k03", + "x": 3.5, + "y": 0 + }, + { + "label": "k04", + "x": 4.5, + "y": 0 + }, + { + "label": "k05", + "x": 5.5, + "y": 0 + }, + { + "label": "k06", + "x": 6.5, + "y": 0 + }, + { + "label": "k07", + "x": 7.5, + "y": 0 + }, + { + "label": "k08", + "x": 8.5, + "y": 0 + }, + { + "label": "k09", + "x": 9.5, + "y": 0 + }, + { + "label": "k0a", + "x": 10.5, + "y": 0 + }, + { + "label": "k0b", + "x": 11.5, + "y": 0 + }, + { + "label": "k0c", + "x": 12.5, + "y": 0 + }, + { + "label": "k0d", + "x": 13.5, + "y": 0, + "w": 1.5 + }, + { + "label": "k10", + "x": 0, + "y": 1, + "w": 1.75 + }, + { + "label": "k11", + "x": 1.75, + "y": 1 + }, + { + "label": "k12", + "x": 2.75, + "y": 1 + }, + { + "label": "k13", + "x": 3.75, + "y": 1 + }, + { + "label": "k14", + "x": 4.75, + "y": 1 + }, + { + "label": "k15", + "x": 5.75, + "y": 1 + }, + { + "label": "k16", + "x": 6.75, + "y": 1 + }, + { + "label": "k17", + "x": 7.75, + "y": 1 + }, + { + "label": "k18", + "x": 8.75, + "y": 1 + }, + { + "label": "k19", + "x": 9.75, + "y": 1 + }, + { + "label": "k1a", + "x": 10.75, + "y": 1 + }, + { + "label": "k1b", + "x": 11.75, + "y": 1 + }, + { + "label": "k1c", + "x": 12.75, + "y": 1, + "w": 2.25 + }, + { + "label": "k20", + "x": 0, + "y": 2, + "w": 2.25 + }, + { + "label": "k21", + "x": 2.25, + "y": 2 + }, + { + "label": "k22", + "x": 3.25, + "y": 2 + }, + { + "label": "k23", + "x": 4.25, + "y": 2 + }, + { + "label": "k24", + "x": 5.25, + "y": 2 + }, + { + "label": "k25", + "x": 6.25, + "y": 2 + }, + { + "label": "k26", + "x": 7.25, + "y": 2 + }, + { + "label": "k27", + "x": 8.25, + "y": 2 + }, + { + "label": "k28", + "x": 9.25, + "y": 2 + }, + { + "label": "k29", + "x": 10.25, + "y": 2 + }, + { + "label": "k2b", + "x": 11.25, + "y": 2 + }, + { + "label": "k2c", + "x": 12.25, + "y": 2, + "w": 2.75 + }, + { + "label": "k30", + "x": 0, + "y": 3, + "w": 1.25 + }, + { + "label": "k31", + "x": 1.25, + "y": 3, + "w": 1.25 + }, + { + "label": "k32", + "x": 2.5, + "y": 3, + "w": 1.25 + }, + { + "label": "k33", + "x": 3.75, + "y": 3, + "w": 1.25 + }, + { + "label": "k34", + "x": 5, + "y": 3, + "w": 2.25 + }, + { + "label": "k35", + "x": 7.25, + "y": 3, + "w": 1.25 + }, + { + "label": "k36", + "x": 8.5, + "y": 3, + "w": 1.5 + }, + { + "label": "k39", + "x": 10, + "y": 3 + }, + { + "label": "k3a", + "x": 11, + "y": 3 + }, + { + "label": "k3b", + "x": 12, + "y": 3 + }, + { + "label": "k3c", + "x": 13, + "y": 3 + }, + { + "label": "k3d", + "x": 14, + "y": 3 + } + ] + }, + "LAYOUT_4_split_space_split_rshift_4x_125": { + "layout": [ + { + "label": "k00", + "x": 0, + "y": 0, + "w": 1.5 + }, + { + "label": "k01", + "x": 1.5, + "y": 0 + }, + { + "label": "k02", + "x": 2.5, + "y": 0 + }, + { + "label": "k03", + "x": 3.5, + "y": 0 + }, + { + "label": "k04", + "x": 4.5, + "y": 0 + }, + { + "label": "k05", + "x": 5.5, + "y": 0 + }, + { + "label": "k06", + "x": 6.5, + "y": 0 + }, + { + "label": "k07", + "x": 7.5, + "y": 0 + }, + { + "label": "k08", + "x": 8.5, + "y": 0 + }, + { + "label": "k09", + "x": 9.5, + "y": 0 + }, + { + "label": "k0a", + "x": 10.5, + "y": 0 + }, + { + "label": "k0b", + "x": 11.5, + "y": 0 + }, + { + "label": "k0c", + "x": 12.5, + "y": 0 + }, + { + "label": "k0d", + "x": 13.5, + "y": 0, + "w": 1.5 + }, + { + "label": "k10", + "x": 0, + "y": 1, + "w": 1.75 + }, + { + "label": "k11", + "x": 1.75, + "y": 1 + }, + { + "label": "k12", + "x": 2.75, + "y": 1 + }, + { + "label": "k13", + "x": 3.75, + "y": 1 + }, + { + "label": "k14", + "x": 4.75, + "y": 1 + }, + { + "label": "k15", + "x": 5.75, + "y": 1 + }, + { + "label": "k16", + "x": 6.75, + "y": 1 + }, + { + "label": "k17", + "x": 7.75, + "y": 1 + }, + { + "label": "k18", + "x": 8.75, + "y": 1 + }, + { + "label": "k19", + "x": 9.75, + "y": 1 + }, + { + "label": "k1a", + "x": 10.75, + "y": 1 + }, + { + "label": "k1b", + "x": 11.75, + "y": 1 + }, + { + "label": "k1c", + "x": 12.75, + "y": 1, + "w": 2.25 + }, + { + "label": "k20", + "x": 0, + "y": 2, + "w": 2.25 + }, + { + "label": "k21", + "x": 2.25, + "y": 2 + }, + { + "label": "k22", + "x": 3.25, + "y": 2 + }, + { + "label": "k23", + "x": 4.25, + "y": 2 + }, + { + "label": "k24", + "x": 5.25, + "y": 2 + }, + { + "label": "k25", + "x": 6.25, + "y": 2 + }, + { + "label": "k26", + "x": 7.25, + "y": 2 + }, + { + "label": "k27", + "x": 8.25, + "y": 2 + }, + { + "label": "k28", + "x": 9.25, + "y": 2 + }, + { + "label": "k29", + "x": 10.25, + "y": 2 + }, + { + "label": "k2b", + "x": 11.25, + "y": 2, + "w": 1.75 + }, + { + "label": "k2c", + "x": 13, + "y": 2 + }, + { + "label": "k2d", + "x": 14, + "y": 2 + }, + { + "label": "k30", + "x": 0, + "y": 3, + "w": 1.25 + }, + { + "label": "k31", + "x": 1.25, + "y": 3, + "w": 1.25 + }, + { + "label": "k32", + "x": 2.5, + "y": 3, + "w": 1.25 + }, + { + "label": "k33", + "x": 3.75, + "y": 3, + "w": 1.25 + }, + { + "label": "k34", + "x": 5, + "y": 3, + "w": 2.25 + }, + { + "label": "k35", + "x": 7.25, + "y": 3, + "w": 1.25 + }, + { + "label": "k36", + "x": 8.5, + "y": 3, + "w": 1.5 + }, + { + "label": "k39", + "x": 10, + "y": 3, + "w": 1.25 + }, + { + "label": "k3b", + "x": 11.25, + "y": 3, + "w": 1.25 + }, + { + "label": "k3c", + "x": 12.5, + "y": 3, + "w": 1.25 + }, + { + "label": "k3d", + "x": 13.75, + "y": 3, + "w": 1.25 + } + ] + }, + "LAYOUT_4_split_space_split_rshift_5x_100": { + "layout": [ + { + "label": "k00", + "x": 0, + "y": 0, + "w": 1.5 + }, + { + "label": "k01", + "x": 1.5, + "y": 0 + }, + { + "label": "k02", + "x": 2.5, + "y": 0 + }, + { + "label": "k03", + "x": 3.5, + "y": 0 + }, + { + "label": "k04", + "x": 4.5, + "y": 0 + }, + { + "label": "k05", + "x": 5.5, + "y": 0 + }, + { + "label": "k06", + "x": 6.5, + "y": 0 + }, + { + "label": "k07", + "x": 7.5, + "y": 0 + }, + { + "label": "k08", + "x": 8.5, + "y": 0 + }, + { + "label": "k09", + "x": 9.5, + "y": 0 + }, + { + "label": "k0a", + "x": 10.5, + "y": 0 + }, + { + "label": "k0b", + "x": 11.5, + "y": 0 + }, + { + "label": "k0c", + "x": 12.5, + "y": 0 + }, + { + "label": "k0d", + "x": 13.5, + "y": 0, + "w": 1.5 + }, + { + "label": "k10", + "x": 0, + "y": 1, + "w": 1.75 + }, + { + "label": "k11", + "x": 1.75, + "y": 1 + }, + { + "label": "k12", + "x": 2.75, + "y": 1 + }, + { + "label": "k13", + "x": 3.75, + "y": 1 + }, + { + "label": "k14", + "x": 4.75, + "y": 1 + }, + { + "label": "k15", + "x": 5.75, + "y": 1 + }, + { + "label": "k16", + "x": 6.75, + "y": 1 + }, + { + "label": "k17", + "x": 7.75, + "y": 1 + }, + { + "label": "k18", + "x": 8.75, + "y": 1 + }, + { + "label": "k19", + "x": 9.75, + "y": 1 + }, + { + "label": "k1a", + "x": 10.75, + "y": 1 + }, + { + "label": "k1b", + "x": 11.75, + "y": 1 + }, + { + "label": "k1c", + "x": 12.75, + "y": 1, + "w": 2.25 + }, + { + "label": "k20", + "x": 0, + "y": 2, + "w": 2.25 + }, + { + "label": "k21", + "x": 2.25, + "y": 2 + }, + { + "label": "k22", + "x": 3.25, + "y": 2 + }, + { + "label": "k23", + "x": 4.25, + "y": 2 + }, + { + "label": "k24", + "x": 5.25, + "y": 2 + }, + { + "label": "k25", + "x": 6.25, + "y": 2 + }, + { + "label": "k26", + "x": 7.25, + "y": 2 + }, + { + "label": "k27", + "x": 8.25, + "y": 2 + }, + { + "label": "k28", + "x": 9.25, + "y": 2 + }, + { + "label": "k29", + "x": 10.25, + "y": 2 + }, + { + "label": "k2b", + "x": 11.25, + "y": 2, + "w": 1.75 + }, + { + "label": "k2c", + "x": 13, + "y": 2 + }, + { + "label": "k2d", + "x": 14, + "y": 2 + }, + { + "label": "k30", + "x": 0, + "y": 3, + "w": 1.25 + }, + { + "label": "k31", + "x": 1.25, + "y": 3, + "w": 1.25 + }, + { + "label": "k32", + "x": 2.5, + "y": 3, + "w": 1.25 + }, + { + "label": "k33", + "x": 3.75, + "y": 3, + "w": 1.25 + }, + { + "label": "k34", + "x": 5, + "y": 3, + "w": 2.25 + }, + { + "label": "k35", + "x": 7.25, + "y": 3, + "w": 1.25 + }, + { + "label": "k36", + "x": 8.5, + "y": 3, + "w": 1.5 + }, + { + "label": "k39", + "x": 10, + "y": 3 + }, + { + "label": "k3a", + "x": 11, + "y": 3 + }, + { + "label": "k3b", + "x": 12, + "y": 3 + }, + { + "label": "k3c", + "x": 13, + "y": 3 + }, + { + "label": "k3d", + "x": 14, + "y": 3 + } + ] + }, + "LAYOUT_625_standard_rshift_4x_125": { + "layout": [ + { + "label": "k00", + "x": 0, + "y": 0, + "w": 1.5 + }, + { + "label": "k01", + "x": 1.5, + "y": 0 + }, + { + "label": "k02", + "x": 2.5, + "y": 0 + }, + { + "label": "k03", + "x": 3.5, + "y": 0 + }, + { + "label": "k04", + "x": 4.5, + "y": 0 + }, + { + "label": "k05", + "x": 5.5, + "y": 0 + }, + { + "label": "k06", + "x": 6.5, + "y": 0 + }, + { + "label": "k07", + "x": 7.5, + "y": 0 + }, + { + "label": "k08", + "x": 8.5, + "y": 0 + }, + { + "label": "k09", + "x": 9.5, + "y": 0 + }, + { + "label": "k0a", + "x": 10.5, + "y": 0 + }, + { + "label": "k0b", + "x": 11.5, + "y": 0 + }, + { + "label": "k0c", + "x": 12.5, + "y": 0 + }, + { + "label": "k0d", + "x": 13.5, + "y": 0, + "w": 1.5 + }, + { + "label": "k10", + "x": 0, + "y": 1, + "w": 1.75 + }, + { + "label": "k11", + "x": 1.75, + "y": 1 + }, + { + "label": "k12", + "x": 2.75, + "y": 1 + }, + { + "label": "k13", + "x": 3.75, + "y": 1 + }, + { + "label": "k14", + "x": 4.75, + "y": 1 + }, + { + "label": "k15", + "x": 5.75, + "y": 1 + }, + { + "label": "k16", + "x": 6.75, + "y": 1 + }, + { + "label": "k17", + "x": 7.75, + "y": 1 + }, + { + "label": "k18", + "x": 8.75, + "y": 1 + }, + { + "label": "k19", + "x": 9.75, + "y": 1 + }, + { + "label": "k1a", + "x": 10.75, + "y": 1 + }, + { + "label": "k1b", + "x": 11.75, + "y": 1 + }, + { + "label": "k1c", + "x": 12.75, + "y": 1, + "w": 2.25 + }, + { + "label": "k20", + "x": 0, + "y": 2, + "w": 2.25 + }, + { + "label": "k21", + "x": 2.25, + "y": 2 + }, + { + "label": "k22", + "x": 3.25, + "y": 2 + }, + { + "label": "k23", + "x": 4.25, + "y": 2 + }, + { + "label": "k24", + "x": 5.25, + "y": 2 + }, + { + "label": "k25", + "x": 6.25, + "y": 2 + }, + { + "label": "k26", + "x": 7.25, + "y": 2 + }, + { + "label": "k27", + "x": 8.25, + "y": 2 + }, + { + "label": "k28", + "x": 9.25, + "y": 2 + }, + { + "label": "k29", + "x": 10.25, + "y": 2 + }, + { + "label": "k2b", + "x": 11.25, + "y": 2 + }, + { + "label": "k2c", + "x": 12.25, + "y": 2, + "w": 2.75 + }, + { + "label": "k30", + "x": 0, + "y": 3, + "w": 1.25 + }, + { + "label": "k31", + "x": 1.25, + "y": 3, + "w": 1.25 + }, + { + "label": "k32", + "x": 2.5, + "y": 3, + "w": 1.25 + }, + { + "label": "k34", + "x": 3.75, + "y": 3, + "w": 6.25 + }, + { + "label": "k39", + "x": 10, + "y": 3, + "w": 1.25 + }, + { + "label": "k3b", + "x": 11.25, + "y": 3, + "w": 1.25 + }, + { + "label": "k3c", + "x": 12.5, + "y": 3, + "w": 1.25 + }, + { + "label": "k3d", + "x": 13.75, + "y": 3, + "w": 1.25 + } + ] + }, + "LAYOUT_625_standard_rshift_5x_100": { + "layout": [ + { + "label": "k00", + "x": 0, + "y": 0, + "w": 1.5 + }, + { + "label": "k01", + "x": 1.5, + "y": 0 + }, + { + "label": "k02", + "x": 2.5, + "y": 0 + }, + { + "label": "k03", + "x": 3.5, + "y": 0 + }, + { + "label": "k04", + "x": 4.5, + "y": 0 + }, + { + "label": "k05", + "x": 5.5, + "y": 0 + }, + { + "label": "k06", + "x": 6.5, + "y": 0 + }, + { + "label": "k07", + "x": 7.5, + "y": 0 + }, + { + "label": "k08", + "x": 8.5, + "y": 0 + }, + { + "label": "k09", + "x": 9.5, + "y": 0 + }, + { + "label": "k0a", + "x": 10.5, + "y": 0 + }, + { + "label": "k0b", + "x": 11.5, + "y": 0 + }, + { + "label": "k0c", + "x": 12.5, + "y": 0 + }, + { + "label": "k0d", + "x": 13.5, + "y": 0, + "w": 1.5 + }, + { + "label": "k10", + "x": 0, + "y": 1, + "w": 1.75 + }, + { + "label": "k11", + "x": 1.75, + "y": 1 + }, + { + "label": "k12", + "x": 2.75, + "y": 1 + }, + { + "label": "k13", + "x": 3.75, + "y": 1 + }, + { + "label": "k14", + "x": 4.75, + "y": 1 + }, + { + "label": "k15", + "x": 5.75, + "y": 1 + }, + { + "label": "k16", + "x": 6.75, + "y": 1 + }, + { + "label": "k17", + "x": 7.75, + "y": 1 + }, + { + "label": "k18", + "x": 8.75, + "y": 1 + }, + { + "label": "k19", + "x": 9.75, + "y": 1 + }, + { + "label": "k1a", + "x": 10.75, + "y": 1 + }, + { + "label": "k1b", + "x": 11.75, + "y": 1 + }, + { + "label": "k1c", + "x": 12.75, + "y": 1, + "w": 2.25 + }, + { + "label": "k20", + "x": 0, + "y": 2, + "w": 2.25 + }, + { + "label": "k21", + "x": 2.25, + "y": 2 + }, + { + "label": "k22", + "x": 3.25, + "y": 2 + }, + { + "label": "k23", + "x": 4.25, + "y": 2 + }, + { + "label": "k24", + "x": 5.25, + "y": 2 + }, + { + "label": "k25", + "x": 6.25, + "y": 2 + }, + { + "label": "k26", + "x": 7.25, + "y": 2 + }, + { + "label": "k27", + "x": 8.25, + "y": 2 + }, + { + "label": "k28", + "x": 9.25, + "y": 2 + }, + { + "label": "k29", + "x": 10.25, + "y": 2 + }, + { + "label": "k2b", + "x": 11.25, + "y": 2 + }, + { + "label": "k2c", + "x": 12.25, + "y": 2, + "w": 2.75 + }, + { + "label": "k30", + "x": 0, + "y": 3, + "w": 1.25 + }, + { + "label": "k31", + "x": 1.25, + "y": 3, + "w": 1.25 + }, + { + "label": "k32", + "x": 2.5, + "y": 3, + "w": 1.25 + }, + { + "label": "k34", + "x": 3.75, + "y": 3, + "w": 6.25 + }, + { + "label": "k39", + "x": 10, + "y": 3 + }, + { + "label": "k3a", + "x": 11, + "y": 3 + }, + { + "label": "k3b", + "x": 12, + "y": 3 + }, + { + "label": "k3c", + "x": 13, + "y": 3 + }, + { + "label": "k3d", + "x": 14, + "y": 3 + } + ] + }, + "LAYOUT_625_split_rshift_4x_125": { + "layout": [ + { + "label": "k00", + "x": 0, + "y": 0, + "w": 1.5 + }, + { + "label": "k01", + "x": 1.5, + "y": 0 + }, + { + "label": "k02", + "x": 2.5, + "y": 0 + }, + { + "label": "k03", + "x": 3.5, + "y": 0 + }, + { + "label": "k04", + "x": 4.5, + "y": 0 + }, + { + "label": "k05", + "x": 5.5, + "y": 0 + }, + { + "label": "k06", + "x": 6.5, + "y": 0 + }, + { + "label": "k07", + "x": 7.5, + "y": 0 + }, + { + "label": "k08", + "x": 8.5, + "y": 0 + }, + { + "label": "k09", + "x": 9.5, + "y": 0 + }, + { + "label": "k0a", + "x": 10.5, + "y": 0 + }, + { + "label": "k0b", + "x": 11.5, + "y": 0 + }, + { + "label": "k0c", + "x": 12.5, + "y": 0 + }, + { + "label": "k0d", + "x": 13.5, + "y": 0, + "w": 1.5 + }, + { + "label": "k10", + "x": 0, + "y": 1, + "w": 1.75 + }, + { + "label": "k11", + "x": 1.75, + "y": 1 + }, + { + "label": "k12", + "x": 2.75, + "y": 1 + }, + { + "label": "k13", + "x": 3.75, + "y": 1 + }, + { + "label": "k14", + "x": 4.75, + "y": 1 + }, + { + "label": "k15", + "x": 5.75, + "y": 1 + }, + { + "label": "k16", + "x": 6.75, + "y": 1 + }, + { + "label": "k17", + "x": 7.75, + "y": 1 + }, + { + "label": "k18", + "x": 8.75, + "y": 1 + }, + { + "label": "k19", + "x": 9.75, + "y": 1 + }, + { + "label": "k1a", + "x": 10.75, + "y": 1 + }, + { + "label": "k1b", + "x": 11.75, + "y": 1 + }, + { + "label": "k1c", + "x": 12.75, + "y": 1, + "w": 2.25 + }, + { + "label": "k20", + "x": 0, + "y": 2, + "w": 2.25 + }, + { + "label": "k21", + "x": 2.25, + "y": 2 + }, + { + "label": "k22", + "x": 3.25, + "y": 2 + }, + { + "label": "k23", + "x": 4.25, + "y": 2 + }, + { + "label": "k24", + "x": 5.25, + "y": 2 + }, + { + "label": "k25", + "x": 6.25, + "y": 2 + }, + { + "label": "k26", + "x": 7.25, + "y": 2 + }, + { + "label": "k27", + "x": 8.25, + "y": 2 + }, + { + "label": "k28", + "x": 9.25, + "y": 2 + }, + { + "label": "k29", + "x": 10.25, + "y": 2 + }, + { + "label": "k2b", + "x": 11.25, + "y": 2, + "w": 1.75 + }, + { + "label": "k2c", + "x": 13, + "y": 2 + }, + { + "label": "k2d", + "x": 14, + "y": 2 + }, + { + "label": "k30", + "x": 0, + "y": 3, + "w": 1.25 + }, + { + "label": "k31", + "x": 1.25, + "y": 3, + "w": 1.25 + }, + { + "label": "k32", + "x": 2.5, + "y": 3, + "w": 1.25 + }, + { + "label": "k34", + "x": 3.75, + "y": 3, + "w": 6.25 + }, + { + "label": "k39", + "x": 10, + "y": 3, + "w": 1.25 + }, + { + "label": "k3b", + "x": 11.25, + "y": 3, + "w": 1.25 + }, + { + "label": "k3c", + "x": 12.5, + "y": 3, + "w": 1.25 + }, + { + "label": "k3d", + "x": 13.75, + "y": 3, + "w": 1.25 + } + ] + }, + "LAYOUT_625_split_rshift_5x_100": { + "layout": [ + { + "label": "k00", + "x": 0, + "y": 0, + "w": 1.5 + }, + { + "label": "k01", + "x": 1.5, + "y": 0 + }, + { + "label": "k02", + "x": 2.5, + "y": 0 + }, + { + "label": "k03", + "x": 3.5, + "y": 0 + }, + { + "label": "k04", + "x": 4.5, + "y": 0 + }, + { + "label": "k05", + "x": 5.5, + "y": 0 + }, + { + "label": "k06", + "x": 6.5, + "y": 0 + }, + { + "label": "k07", + "x": 7.5, + "y": 0 + }, + { + "label": "k08", + "x": 8.5, + "y": 0 + }, + { + "label": "k09", + "x": 9.5, + "y": 0 + }, + { + "label": "k0a", + "x": 10.5, + "y": 0 + }, + { + "label": "k0b", + "x": 11.5, + "y": 0 + }, + { + "label": "k0c", + "x": 12.5, + "y": 0 + }, + { + "label": "k0d", + "x": 13.5, + "y": 0, + "w": 1.5 + }, + { + "label": "k10", + "x": 0, + "y": 1, + "w": 1.75 + }, + { + "label": "k11", + "x": 1.75, + "y": 1 + }, + { + "label": "k12", + "x": 2.75, + "y": 1 + }, + { + "label": "k13", + "x": 3.75, + "y": 1 + }, + { + "label": "k14", + "x": 4.75, + "y": 1 + }, + { + "label": "k15", + "x": 5.75, + "y": 1 + }, + { + "label": "k16", + "x": 6.75, + "y": 1 + }, + { + "label": "k17", + "x": 7.75, + "y": 1 + }, + { + "label": "k18", + "x": 8.75, + "y": 1 + }, + { + "label": "k19", + "x": 9.75, + "y": 1 + }, + { + "label": "k1a", + "x": 10.75, + "y": 1 + }, + { + "label": "k1b", + "x": 11.75, + "y": 1 + }, + { + "label": "k1c", + "x": 12.75, + "y": 1, + "w": 2.25 + }, + { + "label": "k20", + "x": 0, + "y": 2, + "w": 2.25 + }, + { + "label": "k21", + "x": 2.25, + "y": 2 + }, + { + "label": "k22", + "x": 3.25, + "y": 2 + }, + { + "label": "k23", + "x": 4.25, + "y": 2 + }, + { + "label": "k24", + "x": 5.25, + "y": 2 + }, + { + "label": "k25", + "x": 6.25, + "y": 2 + }, + { + "label": "k26", + "x": 7.25, + "y": 2 + }, + { + "label": "k27", + "x": 8.25, + "y": 2 + }, + { + "label": "k28", + "x": 9.25, + "y": 2 + }, + { + "label": "k29", + "x": 10.25, + "y": 2 + }, + { + "label": "k2b", + "x": 11.25, + "y": 2, + "w": 1.75 + }, + { + "label": "k2c", + "x": 13, + "y": 2 + }, + { + "label": "k2d", + "x": 14, + "y": 2 + }, + { + "label": "k30", + "x": 0, + "y": 3, + "w": 1.25 + }, + { + "label": "k31", + "x": 1.25, + "y": 3, + "w": 1.25 + }, + { + "label": "k32", + "x": 2.5, + "y": 3, + "w": 1.25 + }, + { + "label": "k34", + "x": 3.75, + "y": 3, + "w": 6.25 + }, + { + "label": "k39", + "x": 10, + "y": 3 + }, + { + "label": "k3a", + "x": 11, + "y": 3 + }, + { + "label": "k3b", + "x": 12, + "y": 3 + }, + { + "label": "k3c", + "x": 13, + "y": 3 + }, + { + "label": "k3d", + "x": 14, + "y": 3 + } + ] + }, + "LAYOUT_700_standard_rshift_4x_125": { + "layout": [ + { + "label": "k00", + "x": 0, + "y": 0, + "w": 1.5 + }, + { + "label": "k01", + "x": 1.5, + "y": 0 + }, + { + "label": "k02", + "x": 2.5, + "y": 0 + }, + { + "label": "k03", + "x": 3.5, + "y": 0 + }, + { + "label": "k04", + "x": 4.5, + "y": 0 + }, + { + "label": "k05", + "x": 5.5, + "y": 0 + }, + { + "label": "k06", + "x": 6.5, + "y": 0 + }, + { + "label": "k07", + "x": 7.5, + "y": 0 + }, + { + "label": "k08", + "x": 8.5, + "y": 0 + }, + { + "label": "k09", + "x": 9.5, + "y": 0 + }, + { + "label": "k0a", + "x": 10.5, + "y": 0 + }, + { + "label": "k0b", + "x": 11.5, + "y": 0 + }, + { + "label": "k0c", + "x": 12.5, + "y": 0 + }, + { + "label": "k0d", + "x": 13.5, + "y": 0, + "w": 1.5 + }, + { + "label": "k10", + "x": 0, + "y": 1, + "w": 1.75 + }, + { + "label": "k11", + "x": 1.75, + "y": 1 + }, + { + "label": "k12", + "x": 2.75, + "y": 1 + }, + { + "label": "k13", + "x": 3.75, + "y": 1 + }, + { + "label": "k14", + "x": 4.75, + "y": 1 + }, + { + "label": "k15", + "x": 5.75, + "y": 1 + }, + { + "label": "k16", + "x": 6.75, + "y": 1 + }, + { + "label": "k17", + "x": 7.75, + "y": 1 + }, + { + "label": "k18", + "x": 8.75, + "y": 1 + }, + { + "label": "k19", + "x": 9.75, + "y": 1 + }, + { + "label": "k1a", + "x": 10.75, + "y": 1 + }, + { + "label": "k1b", + "x": 11.75, + "y": 1 + }, + { + "label": "k1c", + "x": 12.75, + "y": 1, + "w": 2.25 + }, + { + "label": "k20", + "x": 0, + "y": 2, + "w": 2.25 + }, + { + "label": "k21", + "x": 2.25, + "y": 2 + }, + { + "label": "k22", + "x": 3.25, + "y": 2 + }, + { + "label": "k23", + "x": 4.25, + "y": 2 + }, + { + "label": "k24", + "x": 5.25, + "y": 2 + }, + { + "label": "k25", + "x": 6.25, + "y": 2 + }, + { + "label": "k26", + "x": 7.25, + "y": 2 + }, + { + "label": "k27", + "x": 8.25, + "y": 2 + }, + { + "label": "k28", + "x": 9.25, + "y": 2 + }, + { + "label": "k29", + "x": 10.25, + "y": 2 + }, + { + "label": "k2b", + "x": 11.25, + "y": 2 + }, + { + "label": "k2c", + "x": 12.25, + "y": 2, + "w": 2.75 + }, + { + "label": "k30", + "x": 0, + "y": 3, + "w": 1.5 + }, + { + "label": "k31", + "x": 1.5, + "y": 3, + "w": 1.5 + }, + { + "label": "k34", + "x": 3, + "y": 3, + "w": 7 + }, + { + "label": "k39", + "x": 10, + "y": 3, + "w": 1.25 + }, + { + "label": "k3b", + "x": 11.25, + "y": 3, + "w": 1.25 + }, + { + "label": "k3c", + "x": 12.5, + "y": 3, + "w": 1.25 + }, + { + "label": "k3d", + "x": 13.75, + "y": 3, + "w": 1.25 + } + ] + }, + "LAYOUT_700_standard_rshift_5x_100": { + "layout": [ + { + "label": "k00", + "x": 0, + "y": 0, + "w": 1.5 + }, + { + "label": "k01", + "x": 1.5, + "y": 0 + }, + { + "label": "k02", + "x": 2.5, + "y": 0 + }, + { + "label": "k03", + "x": 3.5, + "y": 0 + }, + { + "label": "k04", + "x": 4.5, + "y": 0 + }, + { + "label": "k05", + "x": 5.5, + "y": 0 + }, + { + "label": "k06", + "x": 6.5, + "y": 0 + }, + { + "label": "k07", + "x": 7.5, + "y": 0 + }, + { + "label": "k08", + "x": 8.5, + "y": 0 + }, + { + "label": "k09", + "x": 9.5, + "y": 0 + }, + { + "label": "k0a", + "x": 10.5, + "y": 0 + }, + { + "label": "k0b", + "x": 11.5, + "y": 0 + }, + { + "label": "k0c", + "x": 12.5, + "y": 0 + }, + { + "label": "k0d", + "x": 13.5, + "y": 0, + "w": 1.5 + }, + { + "label": "k10", + "x": 0, + "y": 1, + "w": 1.75 + }, + { + "label": "k11", + "x": 1.75, + "y": 1 + }, + { + "label": "k12", + "x": 2.75, + "y": 1 + }, + { + "label": "k13", + "x": 3.75, + "y": 1 + }, + { + "label": "k14", + "x": 4.75, + "y": 1 + }, + { + "label": "k15", + "x": 5.75, + "y": 1 + }, + { + "label": "k16", + "x": 6.75, + "y": 1 + }, + { + "label": "k17", + "x": 7.75, + "y": 1 + }, + { + "label": "k18", + "x": 8.75, + "y": 1 + }, + { + "label": "k19", + "x": 9.75, + "y": 1 + }, + { + "label": "k1a", + "x": 10.75, + "y": 1 + }, + { + "label": "k1b", + "x": 11.75, + "y": 1 + }, + { + "label": "k1c", + "x": 12.75, + "y": 1, + "w": 2.25 + }, + { + "label": "k20", + "x": 0, + "y": 2, + "w": 2.25 + }, + { + "label": "k21", + "x": 2.25, + "y": 2 + }, + { + "label": "k22", + "x": 3.25, + "y": 2 + }, + { + "label": "k23", + "x": 4.25, + "y": 2 + }, + { + "label": "k24", + "x": 5.25, + "y": 2 + }, + { + "label": "k25", + "x": 6.25, + "y": 2 + }, + { + "label": "k26", + "x": 7.25, + "y": 2 + }, + { + "label": "k27", + "x": 8.25, + "y": 2 + }, + { + "label": "k28", + "x": 9.25, + "y": 2 + }, + { + "label": "k29", + "x": 10.25, + "y": 2 + }, + { + "label": "k2b", + "x": 11.25, + "y": 2 + }, + { + "label": "k2c", + "x": 12.25, + "y": 2, + "w": 2.75 + }, + { + "label": "k30", + "x": 0, + "y": 3, + "w": 1.5 + }, + { + "label": "k31", + "x": 1.5, + "y": 3, + "w": 1.5 + }, + { + "label": "k34", + "x": 3, + "y": 3, + "w": 7 + }, + { + "label": "k39", + "x": 10, + "y": 3 + }, + { + "label": "k3a", + "x": 11, + "y": 3 + }, + { + "label": "k3b", + "x": 12, + "y": 3 + }, + { + "label": "k3c", + "x": 13, + "y": 3 + }, + { + "label": "k3d", + "x": 14, + "y": 3 + } + ] + }, + "LAYOUT_700_split_rshift_4x_125": { + "layout": [ + { + "label": "k00", + "x": 0, + "y": 0, + "w": 1.5 + }, + { + "label": "k01", + "x": 1.5, + "y": 0 + }, + { + "label": "k02", + "x": 2.5, + "y": 0 + }, + { + "label": "k03", + "x": 3.5, + "y": 0 + }, + { + "label": "k04", + "x": 4.5, + "y": 0 + }, + { + "label": "k05", + "x": 5.5, + "y": 0 + }, + { + "label": "k06", + "x": 6.5, + "y": 0 + }, + { + "label": "k07", + "x": 7.5, + "y": 0 + }, + { + "label": "k08", + "x": 8.5, + "y": 0 + }, + { + "label": "k09", + "x": 9.5, + "y": 0 + }, + { + "label": "k0a", + "x": 10.5, + "y": 0 + }, + { + "label": "k0b", + "x": 11.5, + "y": 0 + }, + { + "label": "k0c", + "x": 12.5, + "y": 0 + }, + { + "label": "k0d", + "x": 13.5, + "y": 0, + "w": 1.5 + }, + { + "label": "k10", + "x": 0, + "y": 1, + "w": 1.75 + }, + { + "label": "k11", + "x": 1.75, + "y": 1 + }, + { + "label": "k12", + "x": 2.75, + "y": 1 + }, + { + "label": "k13", + "x": 3.75, + "y": 1 + }, + { + "label": "k14", + "x": 4.75, + "y": 1 + }, + { + "label": "k15", + "x": 5.75, + "y": 1 + }, + { + "label": "k16", + "x": 6.75, + "y": 1 + }, + { + "label": "k17", + "x": 7.75, + "y": 1 + }, + { + "label": "k18", + "x": 8.75, + "y": 1 + }, + { + "label": "k19", + "x": 9.75, + "y": 1 + }, + { + "label": "k1a", + "x": 10.75, + "y": 1 + }, + { + "label": "k1b", + "x": 11.75, + "y": 1 + }, + { + "label": "k1c", + "x": 12.75, + "y": 1, + "w": 2.25 + }, + { + "label": "k20", + "x": 0, + "y": 2, + "w": 2.25 + }, + { + "label": "k21", + "x": 2.25, + "y": 2 + }, + { + "label": "k22", + "x": 3.25, + "y": 2 + }, + { + "label": "k23", + "x": 4.25, + "y": 2 + }, + { + "label": "k24", + "x": 5.25, + "y": 2 + }, + { + "label": "k25", + "x": 6.25, + "y": 2 + }, + { + "label": "k26", + "x": 7.25, + "y": 2 + }, + { + "label": "k27", + "x": 8.25, + "y": 2 + }, + { + "label": "k28", + "x": 9.25, + "y": 2 + }, + { + "label": "k29", + "x": 10.25, + "y": 2 + }, + { + "label": "k2b", + "x": 11.25, + "y": 2, + "w": 1.75 + }, + { + "label": "k2c", + "x": 13, + "y": 2 + }, + { + "label": "k2d", + "x": 14, + "y": 2 + }, + { + "label": "k30", + "x": 0, + "y": 3, + "w": 1.5 + }, + { + "label": "k31", + "x": 1.5, + "y": 3, + "w": 1.5 + }, + { + "label": "k34", + "x": 3, + "y": 3, + "w": 7 + }, + { + "label": "k39", + "x": 10, + "y": 3, + "w": 1.25 + }, + { + "label": "k3b", + "x": 11.25, + "y": 3, + "w": 1.25 + }, + { + "label": "k3c", + "x": 12.5, + "y": 3, + "w": 1.25 + }, + { + "label": "k3d", + "x": 13.75, + "y": 3, + "w": 1.25 + } + ] + }, + "LAYOUT_700_split_rshift_5x_100": { + "layout": [ + { + "label": "k00", + "x": 0, + "y": 0, + "w": 1.5 + }, + { + "label": "k01", + "x": 1.5, + "y": 0 + }, + { + "label": "k02", + "x": 2.5, + "y": 0 + }, + { + "label": "k03", + "x": 3.5, + "y": 0 + }, + { + "label": "k04", + "x": 4.5, + "y": 0 + }, + { + "label": "k05", + "x": 5.5, + "y": 0 + }, + { + "label": "k06", + "x": 6.5, + "y": 0 + }, + { + "label": "k07", + "x": 7.5, + "y": 0 + }, + { + "label": "k08", + "x": 8.5, + "y": 0 + }, + { + "label": "k09", + "x": 9.5, + "y": 0 + }, + { + "label": "k0a", + "x": 10.5, + "y": 0 + }, + { + "label": "k0b", + "x": 11.5, + "y": 0 + }, + { + "label": "k0c", + "x": 12.5, + "y": 0 + }, + { + "label": "k0d", + "x": 13.5, + "y": 0, + "w": 1.5 + }, + { + "label": "k10", + "x": 0, + "y": 1, + "w": 1.75 + }, + { + "label": "k11", + "x": 1.75, + "y": 1 + }, + { + "label": "k12", + "x": 2.75, + "y": 1 + }, + { + "label": "k13", + "x": 3.75, + "y": 1 + }, + { + "label": "k14", + "x": 4.75, + "y": 1 + }, + { + "label": "k15", + "x": 5.75, + "y": 1 + }, + { + "label": "k16", + "x": 6.75, + "y": 1 + }, + { + "label": "k17", + "x": 7.75, + "y": 1 + }, + { + "label": "k18", + "x": 8.75, + "y": 1 + }, + { + "label": "k19", + "x": 9.75, + "y": 1 + }, + { + "label": "k1a", + "x": 10.75, + "y": 1 + }, + { + "label": "k1b", + "x": 11.75, + "y": 1 + }, + { + "label": "k1c", + "x": 12.75, + "y": 1, + "w": 2.25 + }, + { + "label": "k20", + "x": 0, + "y": 2, + "w": 2.25 + }, + { + "label": "k21", + "x": 2.25, + "y": 2 + }, + { + "label": "k22", + "x": 3.25, + "y": 2 + }, + { + "label": "k23", + "x": 4.25, + "y": 2 + }, + { + "label": "k24", + "x": 5.25, + "y": 2 + }, + { + "label": "k25", + "x": 6.25, + "y": 2 + }, + { + "label": "k26", + "x": 7.25, + "y": 2 + }, + { + "label": "k27", + "x": 8.25, + "y": 2 + }, + { + "label": "k28", + "x": 9.25, + "y": 2 + }, + { + "label": "k29", + "x": 10.25, + "y": 2 + }, + { + "label": "k2b", + "x": 11.25, + "y": 2, + "w": 1.75 + }, + { + "label": "k2c", + "x": 13, + "y": 2 + }, + { + "label": "k2d", + "x": 14, + "y": 2 + }, + { + "label": "k30", + "x": 0, + "y": 3, + "w": 1.5 + }, + { + "label": "k31", + "x": 1.5, + "y": 3, + "w": 1.5 + }, + { + "label": "k34", + "x": 3, + "y": 3, + "w": 7 + }, + { + "label": "k39", + "x": 10, + "y": 3 + }, + { + "label": "k3a", + "x": 11, + "y": 3 + }, + { + "label": "k3b", + "x": 12, + "y": 3 + }, + { + "label": "k3c", + "x": 13, + "y": 3 + }, + { + "label": "k3d", + "x": 14, + "y": 3 + } + ] + } + } +} diff --git a/keyboards/tw40/keymaps/default/keymap.c b/keyboards/tw40/keymaps/default/keymap.c new file mode 100644 index 0000000000..11b3d0d6e9 --- /dev/null +++ b/keyboards/tw40/keymaps/default/keymap.c @@ -0,0 +1,39 @@ +/* Copyright 2020 KnoblesseOblige + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [0] = LAYOUT_all( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, MO(2), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, MO(1), KC_SPC, KC_LALT, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT + + ), + [1] = LAYOUT_all( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSLS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LSFT, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_all( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, RGB_M_K, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/tw40/keymaps/default/readme.md b/keyboards/tw40/keymaps/default/readme.md new file mode 100644 index 0000000000..4dfa184e29 --- /dev/null +++ b/keyboards/tw40/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for tw40 diff --git a/keyboards/tw40/readme.md b/keyboards/tw40/readme.md new file mode 100644 index 0000000000..7db7378590 --- /dev/null +++ b/keyboards/tw40/readme.md @@ -0,0 +1,20 @@ +# Training Wheel 40 + +![tw40](https://cdn.shopify.com/s/files/1/0501/7537/7592/products/tw40_600x.jpg?v=1607835284) + +* Keyboard Maintainer: [KnoblesseOblige](https://github.com/KnoblesseOblige) +* Hardware Supported: Training Wheel 40 PCB +* Hardware Availability: https://p3dstore.com/products/tw40-gb + +Make example for this keyboard (after setting up your build environment): + + make tw40:default + + +To flash a new firmware plug in the keyboard while holding Esc (top left key) and then run the commands below. + +Flashing example for this keyboard: + + make tw40:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/tw40/rules.mk b/keyboards/tw40/rules.mk new file mode 100644 index 0000000000..ef4ccf32fb --- /dev/null +++ b/keyboards/tw40/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/tw40/tw40.c b/keyboards/tw40/tw40.c new file mode 100644 index 0000000000..0bd8425ab3 --- /dev/null +++ b/keyboards/tw40/tw40.c @@ -0,0 +1,17 @@ +/* Copyright 2020 KnoblesseOblige + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "tw40.h" diff --git a/keyboards/tw40/tw40.h b/keyboards/tw40/tw40.h new file mode 100644 index 0000000000..58fbe29880 --- /dev/null +++ b/keyboards/tw40/tw40.h @@ -0,0 +1,233 @@ +/* Copyright 2020 KnoblesseOblige + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define kxx KC_NO + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT_all( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2b, k2c, k2d, \ + k30, k31, k32, k33, k34, k35, k36, k39, k3a, k3b, k3c, k3d \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, kxx }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, kxx, k2b, k2c, k2d }, \ + { k30, k31, k32, k33, k34, k35, k36, kxx, kxx, k39, k3a, k3b, k3c, k3d } \ +} + +#define LAYOUT_3_split_space_standard_rshift_4x_125( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2b, k2c, \ + k30, k31, k32, k33, k34, k36, k39, k3b, k3c, k3d \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, kxx }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, kxx, k2b, k2c, kxx }, \ + { k30, k31, k32, k33, k34, kxx, k36, kxx, kxx, k39, kxx, k3b, k3c, k3d } \ +} + +#define LAYOUT_3_split_space_standard_rshift_5x_100( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2b, k2c, \ + k30, k31, k32, k33, k34, k36, k39, k3a, k3b, k3c, k3d \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, kxx }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, kxx, k2b, k2c, kxx }, \ + { k30, k31, k32, k33, k34, kxx, k36, kxx, kxx, k39, k3a, k3b, k3c, k3d } \ +} + +#define LAYOUT_3_split_space_split_rshift_4x_125( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2b, k2c, k2d, \ + k30, k31, k32, k33, k34, k36, k39, k3b, k3c, k3d \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, kxx }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, kxx, k2b, k2c, k2d }, \ + { k30, k31, k32, k33, k34, kxx, k36, kxx, kxx, k39, kxx, k3b, k3c, k3d } \ +} + +#define LAYOUT_3_split_space_split_rshift_5x_100( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2b, k2c, k2d, \ + k30, k31, k32, k33, k34, k36, k39, k3a, k3b, k3c, k3d \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, kxx }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, kxx, k2b, k2c, k2d }, \ + { k30, k31, k32, k33, k34, kxx, k36, kxx, kxx, k39, k3a, k3b, k3c, k3d } \ +} + +#define LAYOUT_4_split_space_standard_rshift_4x_125( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2b, k2c, \ + k30, k31, k32, k33, k34, k35, k36, k39, k3b, k3c, k3d \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, kxx }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, kxx, k2b, k2c, kxx }, \ + { k30, k31, k32, k33, k34, k35, k36, kxx, kxx, k39, kxx, k3b, k3c, k3d } \ +} + +#define LAYOUT_4_split_space_standard_rshift_5x_100( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2b, k2c, \ + k30, k31, k32, k33, k34, k35, k36, k39, k3a, k3b, k3c, k3d \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, kxx }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, kxx, k2b, k2c, kxx }, \ + { k30, k31, k32, k33, k34, k35, k36, kxx, kxx, k39, k3a, k3b, k3c, k3d } \ +} + +#define LAYOUT_4_split_space_split_rshift_4x_125( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2b, k2c, k2d, \ + k30, k31, k32, k33, k34, k35, k36, k39, k3b, k3c, k3d \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, kxx }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, kxx, k2b, k2c, k2d }, \ + { k30, k31, k32, k33, k34, k35, k36, kxx, kxx, k39, kxx, k3b, k3c, k3d } \ +} + +#define LAYOUT_4_split_space_split_rshift_5x_100( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2b, k2c, k2d, \ + k30, k31, k32, k33, k34, k35, k36, k39, k3a, k3b, k3c, k3d \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, kxx }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, kxx, k2b, k2c, k2d }, \ + { k30, k31, k32, k33, k34, k35, k36, kxx, kxx, k39, k3a, k3b, k3c, k3d } \ +} + +#define LAYOUT_625_standard_rshift_4x_125( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2b, k2c, \ + k30, k31, k32, k34, k39, k3b, k3c, k3d \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, kxx }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, kxx, k2b, k2c, kxx }, \ + { k30, k31, k32, kxx, k34, kxx, kxx, kxx, kxx, k39, kxx, k3b, k3c, k3d } \ +} + +#define LAYOUT_625_standard_rshift_5x_100( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2b, k2c, \ + k30, k31, k32, k34, k39, k3a, k3b, k3c, k3d \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, kxx }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, kxx, k2b, k2c, kxx }, \ + { k30, k31, k32, kxx, k34, kxx, kxx, kxx, kxx, k39, k3a, k3b, k3c, k3d } \ +} + +#define LAYOUT_625_split_rshift_4x_125( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2b, k2c, k2d, \ + k30, k31, k32, k34, k39, k3b, k3c, k3d \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, kxx }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, kxx, k2b, k2c, k2d }, \ + { k30, k31, k32, kxx, k34, kxx, kxx, kxx, kxx, k39, kxx, k3b, k3c, k3d } \ +} + +#define LAYOUT_625_split_rshift_5x_100( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2b, k2c, k2d, \ + k30, k31, k32, k34, k39, k3a, k3b, k3c, k3d \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, kxx }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, kxx, k2b, k2c, k2d }, \ + { k30, k31, k32, kxx, k34, kxx, kxx, kxx, kxx, k39, k3a, k3b, k3c, k3d } \ +} + +#define LAYOUT_700_standard_rshift_4x_125( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2b, k2c, \ + k30, k31, k34, k39, k3b, k3c, k3d \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, kxx }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, kxx, k2b, k2c, kxx }, \ + { k30, k31, kxx, kxx, k34, kxx, kxx, kxx, kxx, k39, kxx, k3b, k3c, k3d } \ +} + +#define LAYOUT_700_standard_rshift_5x_100( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2b, k2c, \ + k30, k31, k34, k39, k3a, k3b, k3c, k3d \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, kxx }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, kxx, k2b, k2c, kxx }, \ + { k30, k31, kxx, kxx, k34, kxx, kxx, kxx, kxx, k39, k3a, k3b, k3c, k3d } \ +} + +#define LAYOUT_700_split_rshift_4x_125( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2b, k2c, k2d, \ + k30, k31, k34, k39, k3b, k3c, k3d \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, kxx }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, kxx, k2b, k2c, k2d }, \ + { k30, k31, kxx, kxx, k34, kxx, kxx, kxx, kxx, k39, kxx, k3b, k3c, k3d } \ +} + +#define LAYOUT_700_split_rshift_5x_100( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2b, k2c, k2d, \ + k30, k31, k34, k39, k3a, k3b, k3c, k3d \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, kxx }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, kxx, k2b, k2c, k2d }, \ + { k30, k31, kxx, kxx, k34, kxx, kxx, kxx, kxx, k39, k3a, k3b, k3c, k3d } \ +} From cae4911ca87213977dd38e2b1647d6b3ae03262d Mon Sep 17 00:00:00 2001 From: studiokestra <74369928+studiokestra@users.noreply.github.com> Date: Thu, 13 May 2021 21:54:10 -0600 Subject: [PATCH 371/613] [Keyboard] Add Studio Kestra Cascade PCB (#12704) --- keyboards/studiokestra/cascade/cascade.c | 18 ++ keyboards/studiokestra/cascade/cascade.h | 73 ++++++ keyboards/studiokestra/cascade/config.h | 84 +++++++ keyboards/studiokestra/cascade/info.json | 207 ++++++++++++++++++ .../cascade/keymaps/default/keymap.c | 41 ++++ .../cascade/keymaps/default/readme.md | 3 + .../keymaps/default_tsangan_hhkb/keymap.c | 40 ++++ .../keymaps/default_tsangan_hhkb/readme.md | 3 + .../studiokestra/cascade/keymaps/via/keymap.c | 57 +++++ .../cascade/keymaps/via/readme.md | 3 + .../studiokestra/cascade/keymaps/via/rules.mk | 1 + keyboards/studiokestra/cascade/readme.md | 23 ++ keyboards/studiokestra/cascade/rules.mk | 22 ++ 13 files changed, 575 insertions(+) create mode 100644 keyboards/studiokestra/cascade/cascade.c create mode 100644 keyboards/studiokestra/cascade/cascade.h create mode 100644 keyboards/studiokestra/cascade/config.h create mode 100644 keyboards/studiokestra/cascade/info.json create mode 100644 keyboards/studiokestra/cascade/keymaps/default/keymap.c create mode 100644 keyboards/studiokestra/cascade/keymaps/default/readme.md create mode 100644 keyboards/studiokestra/cascade/keymaps/default_tsangan_hhkb/keymap.c create mode 100644 keyboards/studiokestra/cascade/keymaps/default_tsangan_hhkb/readme.md create mode 100644 keyboards/studiokestra/cascade/keymaps/via/keymap.c create mode 100644 keyboards/studiokestra/cascade/keymaps/via/readme.md create mode 100644 keyboards/studiokestra/cascade/keymaps/via/rules.mk create mode 100644 keyboards/studiokestra/cascade/readme.md create mode 100644 keyboards/studiokestra/cascade/rules.mk diff --git a/keyboards/studiokestra/cascade/cascade.c b/keyboards/studiokestra/cascade/cascade.c new file mode 100644 index 0000000000..e5c4ba279c --- /dev/null +++ b/keyboards/studiokestra/cascade/cascade.c @@ -0,0 +1,18 @@ +/* +Copyright 2021 Studio Kestra + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "cascade.h" diff --git a/keyboards/studiokestra/cascade/cascade.h b/keyboards/studiokestra/cascade/cascade.h new file mode 100644 index 0000000000..ad1d44089d --- /dev/null +++ b/keyboards/studiokestra/cascade/cascade.h @@ -0,0 +1,73 @@ +/* +Copyright 2021 Studio Kestra + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +/* This a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT_all( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K113, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K213, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, \ + K400, K401, K402, K406, K410, K411, K412, K413 \ +) \ +{ \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313 }, \ + { K400, K401, K402, KC_NO, KC_NO, KC_NO, K406, KC_NO, KC_NO, KC_NO, K410, K411, K412, K413 } \ +} + +#define LAYOUT_60_ansi( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K213, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, \ + K400, K401, K402, K406, K410, K411, K412, K413 \ +) \ +{ \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, KC_NO}, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, KC_NO}, \ + { K400, K401, K402, KC_NO, KC_NO, KC_NO, K406, KC_NO, KC_NO, KC_NO, K410, K411, K412, K413 } \ +} + +#define LAYOUT_60_tsangan_hhkb( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K113, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K213, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, \ + K400, K401, K402, K406, K411, K412, K413 \ +) \ +{ \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313 }, \ + { K400, K401, K402, KC_NO, KC_NO, KC_NO, K406, KC_NO, KC_NO, KC_NO, KC_NO, K411, K412, K413 } \ +} diff --git a/keyboards/studiokestra/cascade/config.h b/keyboards/studiokestra/cascade/config.h new file mode 100644 index 0000000000..88b2a583cb --- /dev/null +++ b/keyboards/studiokestra/cascade/config.h @@ -0,0 +1,84 @@ +/* +Copyright 2021 Studio Kestra + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7C10 +#define PRODUCT_ID 0x6001 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Studio Kestra +#define PRODUCT Cascade + +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +#define MATRIX_ROW_PINS { F0, B1, D4, F4, F1 } +#define MATRIX_COL_PINS { E6, D5, D1, D0, F5, F6, F7, C7, C6, B6, B5, B4, D6, D7 } + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + + +#define RGB_DI_PIN B0 +#ifdef RGB_DI_PIN + #define RGBLED_NUM 16 + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 + #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ + #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ + #define RGBLIGHT_ANIMATIONS +// /*== or choose animations ==*/ +// #define RGBLIGHT_EFFECT_BREATHING +// #define RGBLIGHT_EFFECT_RAINBOW_MOOD +// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL +// #define RGBLIGHT_EFFECT_SNAKE +// #define RGBLIGHT_EFFECT_KNIGHT +// #define RGBLIGHT_EFFECT_CHRISTMAS +// #define RGBLIGHT_EFFECT_STATIC_GRADIENT +// #define RGBLIGHT_EFFECT_RGB_TEST +// #define RGBLIGHT_EFFECT_ALTERNATING +// /*== customize breathing effect ==*/ +// /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ + #define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +// /*==== use exp() and sin() ====*/ +// #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +// #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/studiokestra/cascade/info.json b/keyboards/studiokestra/cascade/info.json new file mode 100644 index 0000000000..760c85d5bc --- /dev/null +++ b/keyboards/studiokestra/cascade/info.json @@ -0,0 +1,207 @@ +{ + "keyboard_name": "Cascade", + "url": "https://studiokestra.ca/cascade/", + "maintainer": "Studio Kestra", + "width": 15, + "height": 5, + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"!", "x":1, "y":0}, + {"label":"@", "x":2, "y":0}, + {"label":"#", "x":3, "y":0}, + {"label":"$", "x":4, "y":0}, + {"label":"%", "x":5, "y":0}, + {"label":"^", "x":6, "y":0}, + {"label":"&", "x":7, "y":0}, + {"label":"*", "x":8, "y":0}, + {"label":"(", "x":9, "y":0}, + {"label":")", "x":10, "y":0}, + {"label":"_", "x":11, "y":0}, + {"label":"+", "x":12, "y":0}, + {"label":"~", "x":13, "y":0}, + {"label":"|", "x":14, "y":0}, + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"{", "x":11.5, "y":1}, + {"label":"}", "x":12.5, "y":1}, + {"label":"Backspace", "x":13.5, "y":1, "w":1.5}, + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":":", "x":10.75, "y":2}, + {"label":"\"", "x":11.75, "y":2}, + {"label":"Enter", "x":12.75, "y":2, "w":2.25}, + {"label":"Shift", "x":0, "y":3, "w":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":"<", "x":9.25, "y":3}, + {"label":">", "x":10.25, "y":3}, + {"label":"?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"Fn", "x":14, "y":3}, + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"Win", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"label":"Alt", "x":10, "y":4, "w":1.25}, + {"label":"Win", "x":11.25, "y":4, "w":1.25}, + {"label":"Menu", "x":12.5, "y":4, "w":1.25}, + {"label":"Ctrl", "x":13.75, "y":4, "w":1.25} + ] + }, + "LAYOUT_60_ansi": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"!", "x":1, "y":0}, + {"label":"@", "x":2, "y":0}, + {"label":"#", "x":3, "y":0}, + {"label":"$", "x":4, "y":0}, + {"label":"%", "x":5, "y":0}, + {"label":"^", "x":6, "y":0}, + {"label":"&", "x":7, "y":0}, + {"label":"*", "x":8, "y":0}, + {"label":"(", "x":9, "y":0}, + {"label":")", "x":10, "y":0}, + {"label":"_", "x":11, "y":0}, + {"label":"+", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"{", "x":11.5, "y":1}, + {"label":"}", "x":12.5, "y":1}, + {"label":"|", "x":13.5, "y":1, "w":1.5}, + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":":", "x":10.75, "y":2}, + {"label":"\"", "x":11.75, "y":2}, + {"label":"Enter", "x":12.75, "y":2, "w":2.25}, + {"label":"Shift", "x":0, "y":3, "w":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":"<", "x":9.25, "y":3}, + {"label":">", "x":10.25, "y":3}, + {"label":"?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":2.75}, + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"Win", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"label":"Alt", "x":10, "y":4, "w":1.25}, + {"label":"Win", "x":11.25, "y":4, "w":1.25}, + {"label":"Menu", "x":12.5, "y":4, "w":1.25}, + {"label":"Ctrl", "x":13.75, "y":4, "w":1.25} + ] + }, + "LAYOUT_60_tsangan_hhkb": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"!", "x":1, "y":0}, + {"label":"@", "x":2, "y":0}, + {"label":"#", "x":3, "y":0}, + {"label":"$", "x":4, "y":0}, + {"label":"%", "x":5, "y":0}, + {"label":"^", "x":6, "y":0}, + {"label":"&", "x":7, "y":0}, + {"label":"*", "x":8, "y":0}, + {"label":"(", "x":9, "y":0}, + {"label":")", "x":10, "y":0}, + {"label":"_", "x":11, "y":0}, + {"label":"+", "x":12, "y":0}, + {"label":"~", "x":13, "y":0}, + {"label":"|", "x":14, "y":0}, + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"{", "x":11.5, "y":1}, + {"label":"}", "x":12.5, "y":1}, + {"label":"Backspace", "x":13.5, "y":1, "w":1.5}, + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":":", "x":10.75, "y":2}, + {"label":"\"", "x":11.75, "y":2}, + {"label":"Enter", "x":12.75, "y":2, "w":2.25}, + {"label":"Shift", "x":0, "y":3, "w":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":"<", "x":9.25, "y":3}, + {"label":">", "x":10.25, "y":3}, + {"label":"?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"Fn", "x":14, "y":3}, + {"label":"Ctrl", "x":0, "y":4, "w":1.5}, + {"label":"Win", "x":1.5, "y":4}, + {"label":"Alt", "x":2.5, "y":4, "w":1.5}, + {"x":4, "y":4, "w":7}, + {"label":"Alt", "x":11, "y":4, "w":1.5}, + {"label":"Win", "x":12.5, "y":4}, + {"label":"Ctrl", "x":13.5, "y":4, "w":1.5} + ] + } + } +} diff --git a/keyboards/studiokestra/cascade/keymaps/default/keymap.c b/keyboards/studiokestra/cascade/keymaps/default/keymap.c new file mode 100644 index 0000000000..9c9b9345bf --- /dev/null +++ b/keyboards/studiokestra/cascade/keymaps/default/keymap.c @@ -0,0 +1,41 @@ +/* +Copyright 2021 Studio Kestra + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layer_names { + _BASE, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_all( /* Base */ + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL + ), + [_FN] = LAYOUT_all( /* FN */ + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_BSPC, + _______, _______, KC_PGUP, _______, _______, _______, _______, _______, KC_UP, _______, KC_MPRV, KC_MPLY, KC_MNXT, BL_STEP, + _______, KC_HOME, KC_PGDN, KC_END, _______, KC_VOLD, KC_VOLU, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, KC_PSCR, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; + diff --git a/keyboards/studiokestra/cascade/keymaps/default/readme.md b/keyboards/studiokestra/cascade/keymaps/default/readme.md new file mode 100644 index 0000000000..4645574fe4 --- /dev/null +++ b/keyboards/studiokestra/cascade/keymaps/default/readme.md @@ -0,0 +1,3 @@ +# The default keymap for Cascade + +Supporting split-backspace as the default configuration alongside split-right shift with ANSI bottom row. \ No newline at end of file diff --git a/keyboards/studiokestra/cascade/keymaps/default_tsangan_hhkb/keymap.c b/keyboards/studiokestra/cascade/keymaps/default_tsangan_hhkb/keymap.c new file mode 100644 index 0000000000..42f300fca8 --- /dev/null +++ b/keyboards/studiokestra/cascade/keymaps/default_tsangan_hhkb/keymap.c @@ -0,0 +1,40 @@ +/* +Copyright 2021 Studio Kestra + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layer_names { + _BASE, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_60_tsangan_hhkb( /* Base */ + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL + ), + [_FN] = LAYOUT_60_tsangan_hhkb( /* FN */ + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_BSPC, + _______, _______, KC_PGUP, _______, _______, _______, _______, _______, KC_UP, _______, KC_MPRV, KC_MPLY, KC_MNXT, BL_STEP, + _______, KC_HOME, KC_PGDN, KC_END, _______, KC_VOLD, KC_VOLU, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, KC_PSCR, _______, + _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/studiokestra/cascade/keymaps/default_tsangan_hhkb/readme.md b/keyboards/studiokestra/cascade/keymaps/default_tsangan_hhkb/readme.md new file mode 100644 index 0000000000..6a7c75a83d --- /dev/null +++ b/keyboards/studiokestra/cascade/keymaps/default_tsangan_hhkb/readme.md @@ -0,0 +1,3 @@ +# The default_tsangan_hhkb keymap for Cascade + +Supporting split-backspace as the default configuration alongside split-right shift with tsangan bottom row. \ No newline at end of file diff --git a/keyboards/studiokestra/cascade/keymaps/via/keymap.c b/keyboards/studiokestra/cascade/keymaps/via/keymap.c new file mode 100644 index 0000000000..4a971c4de5 --- /dev/null +++ b/keyboards/studiokestra/cascade/keymaps/via/keymap.c @@ -0,0 +1,57 @@ +/* +Copyright 2021 Studio Kestra + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layer_names { + _BASE, + _FN, + _EXTRA_ONE, + _EXTRA_TWO +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_all( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL + ), + [_FN] = LAYOUT_all( /* FN */ + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_BSPC, + _______, _______, KC_PGUP, _______, _______, _______, _______, _______, KC_UP, _______, KC_MPRV, KC_MPLY, KC_MNXT, BL_STEP, + _______, KC_HOME, KC_PGDN, KC_END, _______, KC_VOLD, KC_VOLU, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, KC_PSCR, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + [_EXTRA_ONE] = LAYOUT_all( /* Layer 3 */ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + [_EXTRA_TWO] = LAYOUT_all( /* Layer 3 */ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; + diff --git a/keyboards/studiokestra/cascade/keymaps/via/readme.md b/keyboards/studiokestra/cascade/keymaps/via/readme.md new file mode 100644 index 0000000000..e1e766fc84 --- /dev/null +++ b/keyboards/studiokestra/cascade/keymaps/via/readme.md @@ -0,0 +1,3 @@ +# The via keymap for Cascade + +For via configurator use \ No newline at end of file diff --git a/keyboards/studiokestra/cascade/keymaps/via/rules.mk b/keyboards/studiokestra/cascade/keymaps/via/rules.mk new file mode 100644 index 0000000000..036bd6d1c3 --- /dev/null +++ b/keyboards/studiokestra/cascade/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/studiokestra/cascade/readme.md b/keyboards/studiokestra/cascade/readme.md new file mode 100644 index 0000000000..db55844ed1 --- /dev/null +++ b/keyboards/studiokestra/cascade/readme.md @@ -0,0 +1,23 @@ +# Cascade + +60% universal hotswap/solder PCB with USB-C that supports multiple commonly used layouts. + +* Keyboard Maintainer: [Studio Kestra](https://github.com/studiokestra/) +* Hardware Supported: Most GH60-style keyboards, more info at [studiokestra.ca/cascade](https://studiokestra.ca/cascade/) +* Hardware Availability: [RNDKBD.com](https://rndkbd.com/) + +## Bootload Sequence + +There are 3 ways to put the board in bootloader mode: + +- Hold the top-left key (typically `Esc`) while plugging in the USB cable, OR +- While the PCB is plugged into the PC, press the physical `RESET` button on the back of the board, OR +- With the default layout, toggle Layer 1 and press the `ESC` key. + +## Compiling Firmware + +Make example for this keyboard (after setting up your build environment): + + make studiokestra/cascade:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/studiokestra/cascade/rules.mk b/keyboards/studiokestra/cascade/rules.mk new file mode 100644 index 0000000000..76528fcf97 --- /dev/null +++ b/keyboards/studiokestra/cascade/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output From 937f5fe740f834bcaf1f7b05e3b389345db1c25f Mon Sep 17 00:00:00 2001 From: csc027 Date: Fri, 14 May 2021 03:54:41 +0000 Subject: [PATCH 372/613] [Keymap] csc027/keymap-updates (#12694) --- keyboards/keebio/iris/keymaps/csc027/config.h | 5 ++++ keyboards/planck/keymaps/csc027/config.h | 28 +++++++++++++++++++ users/csc027/defines.h | 8 ++++-- 3 files changed, 38 insertions(+), 3 deletions(-) create mode 100644 keyboards/planck/keymaps/csc027/config.h diff --git a/keyboards/keebio/iris/keymaps/csc027/config.h b/keyboards/keebio/iris/keymaps/csc027/config.h index 2ec00e98b6..ec4c2bbc65 100644 --- a/keyboards/keebio/iris/keymaps/csc027/config.h +++ b/keyboards/keebio/iris/keymaps/csc027/config.h @@ -30,3 +30,8 @@ along with this program. If not, see . #define RGBLIGHT_VAL_STEP 8 #define USB_POLLING_INTERVAL_MS 1 + +#if defined(TAP_CODE_DELAY) +# undef TAP_CODE_DELAY +#endif +#define TAP_CODE_DELAY 10 diff --git a/keyboards/planck/keymaps/csc027/config.h b/keyboards/planck/keymaps/csc027/config.h new file mode 100644 index 0000000000..a3b69beb5a --- /dev/null +++ b/keyboards/planck/keymaps/csc027/config.h @@ -0,0 +1,28 @@ +/* +Copyright 2021 Constantine Chen @csc027 + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +#define USB_POLLING_INTERVAL_MS 1 + +#if defined(TAP_CODE_DELAY) +# undef TAP_CODE_DELAY +#endif +#define TAP_CODE_DELAY 10 diff --git a/users/csc027/defines.h b/users/csc027/defines.h index c9093ab2aa..9654cd9f02 100644 --- a/users/csc027/defines.h +++ b/users/csc027/defines.h @@ -200,9 +200,11 @@ along with this program. If not, see . #define ___________________CONVENIENCE_R4__________________ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX /* Windows Terminal Layer + * + * Contains shortcuts for pane and tab usage for Windows Terminal * * ,-----------------------------------. ,-----------------------------------. - * | |Tab 1|Tab 2|Tab 3|Tab 4|Tab 5| |Tab 6|Tab 7|Tab 8|Tab 9| |BkSpc| + * | |Tab 1|Tab 2|Tab 3|Tab 4|Tab 5| |Tab 6|Tab 7|Tab 8|Tab 9|TrCnP|BkSpc| * |-----------------------------------| |-----------------------------------| * | | |Split|Close| | | |FcsLf|FcsDn|FcsUp|FcsRt| | | * |-----------------------------------| |-----------------------------------| @@ -217,8 +219,8 @@ along with this program. If not, see . #define ________________WINDOWS_TERMINAL_L3________________ _______, XXXXXXX, XXXXXXX, XXXXXXX, MC_trpv, XXXXXXX #define ________________WINDOWS_TERMINAL_L4________________ _______, _______, _______, _______, _______, _______ -#define ________________WINDOWS_TERMINAL_R1________________ MC_trt6, MC_trt7, MC_trt8, MC_trt9, XXXXXXX, KC_BSPC -#define ________________WINDOWS_TERMINAL_R2________________ MC_trpl, MC_trpd, MC_trpu, MC_trpr, MC_trcp, XXXXXXX +#define ________________WINDOWS_TERMINAL_R1________________ MC_trt6, MC_trt7, MC_trt8, MC_trt9, MC_trcp, KC_BSPC +#define ________________WINDOWS_TERMINAL_R2________________ MC_trpl, MC_trpd, MC_trpu, MC_trpr, XXXXXXX, XXXXXXX #define ________________WINDOWS_TERMINAL_R3________________ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______ #define ________________WINDOWS_TERMINAL_R4________________ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX From 1d50693e1be24a626bdc6cfd031a0f6e14a33d75 Mon Sep 17 00:00:00 2001 From: Felix Jen Date: Thu, 13 May 2021 23:10:09 -0500 Subject: [PATCH 373/613] [Keyboard] Added FJLabs Polaris (#12746) Co-authored-by: Drashna Jaelre --- keyboards/fjlabs/polaris/config.h | 105 ++++++++++++++++++ keyboards/fjlabs/polaris/info.json | 83 ++++++++++++++ .../fjlabs/polaris/keymaps/default/keymap.c | 39 +++++++ keyboards/fjlabs/polaris/keymaps/via/keymap.c | 58 ++++++++++ keyboards/fjlabs/polaris/keymaps/via/rules.mk | 1 + keyboards/fjlabs/polaris/polaris.c | 14 +++ keyboards/fjlabs/polaris/polaris.h | 32 ++++++ keyboards/fjlabs/polaris/readme.md | 14 +++ keyboards/fjlabs/polaris/rules.mk | 25 +++++ 9 files changed, 371 insertions(+) create mode 100644 keyboards/fjlabs/polaris/config.h create mode 100644 keyboards/fjlabs/polaris/info.json create mode 100644 keyboards/fjlabs/polaris/keymaps/default/keymap.c create mode 100644 keyboards/fjlabs/polaris/keymaps/via/keymap.c create mode 100644 keyboards/fjlabs/polaris/keymaps/via/rules.mk create mode 100644 keyboards/fjlabs/polaris/polaris.c create mode 100644 keyboards/fjlabs/polaris/polaris.h create mode 100644 keyboards/fjlabs/polaris/readme.md create mode 100644 keyboards/fjlabs/polaris/rules.mk diff --git a/keyboards/fjlabs/polaris/config.h b/keyboards/fjlabs/polaris/config.h new file mode 100644 index 0000000000..d622778ce0 --- /dev/null +++ b/keyboards/fjlabs/polaris/config.h @@ -0,0 +1,105 @@ +/* +Copyright 2020 + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7074 // FJLaboratories +#define PRODUCT_ID 0x9001 // Polaris HS and Solder +#define DEVICE_VER 0x0001 // Version 1 +#define MANUFACTURER FJLaboratories +#define PRODUCT Polaris + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ + +// Checked with Eagle Schematic +#define MATRIX_ROW_PINS { F4, F1, F7, F6, F5 } +#define MATRIX_COL_PINS { F0, B1, B2, B3, B7, D0, D1, D2, D3, D5, D7, B4, B5, B6 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* Define Indicator LED's */ +#define LED_CAPS_LOCK_PIN C7 + +/* Define less important options */ + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION diff --git a/keyboards/fjlabs/polaris/info.json b/keyboards/fjlabs/polaris/info.json new file mode 100644 index 0000000000..a9e9f4bb4b --- /dev/null +++ b/keyboards/fjlabs/polaris/info.json @@ -0,0 +1,83 @@ +{ + "keyboard_name": "Polaris Hotswap and Solder", + "url": "http://www.fjlaboratories.com/projects/", + "maintainer": "FJLabs", + "width": 15, + "height": 5, + "layouts": { + "LAYOUT_all": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + {"x": 13.5, "y": 1, "w": 1.5}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2, "w": 2.25}, + + {"x": 0, "y": 3, "w": 1.25}, + {"x": 1.25, "y": 3}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3}, + {"x": 12.25, "y": 3, "w": 1.75}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 2.25}, + {"x": 6, "y": 4, "w": 1.25}, + {"x": 7.25, "y": 4, "w": 2.75}, + {"x": 10, "y": 4, "w": 1.25}, + {"x": 11.25, "y":4, "w": 1.25}, + {"x": 12.5, "y": 4, "w": 1.25}, + {"x": 13.75, "y": 4, "w": 1.25} + ] + } + } +} diff --git a/keyboards/fjlabs/polaris/keymaps/default/keymap.c b/keyboards/fjlabs/polaris/keymaps/default/keymap.c new file mode 100644 index 0000000000..63db51de27 --- /dev/null +++ b/keyboards/fjlabs/polaris/keymaps/default/keymap.c @@ -0,0 +1,39 @@ +/* +Copyright 2020 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layers { + _LAYER0, + _LAYER1, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_LAYER0] = LAYOUT_all( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_DEL, + KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_TRNS, + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_RGUI, KC_RCTL + ), + + [_LAYER1] = LAYOUT_all( + KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSPC, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUSE, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/fjlabs/polaris/keymaps/via/keymap.c b/keyboards/fjlabs/polaris/keymaps/via/keymap.c new file mode 100644 index 0000000000..f1d6bccfd1 --- /dev/null +++ b/keyboards/fjlabs/polaris/keymaps/via/keymap.c @@ -0,0 +1,58 @@ +/* +Copyright 2020 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layers { + _LAYER0, + _LAYER1, + _LAYER2, + _LAYER3, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_LAYER0] = LAYOUT_all( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_DEL, + KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_TRNS, + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_RGUI, KC_RCTL + ), + + [_LAYER1] = LAYOUT_all( + KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSPC, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUSE, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [_LAYER2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [_LAYER3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) + +}; \ No newline at end of file diff --git a/keyboards/fjlabs/polaris/keymaps/via/rules.mk b/keyboards/fjlabs/polaris/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/fjlabs/polaris/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/fjlabs/polaris/polaris.c b/keyboards/fjlabs/polaris/polaris.c new file mode 100644 index 0000000000..ff9357769c --- /dev/null +++ b/keyboards/fjlabs/polaris/polaris.c @@ -0,0 +1,14 @@ +/* +Copyright 2020 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "polaris.h" diff --git a/keyboards/fjlabs/polaris/polaris.h b/keyboards/fjlabs/polaris/polaris.h new file mode 100644 index 0000000000..e29545f3d1 --- /dev/null +++ b/keyboards/fjlabs/polaris/polaris.h @@ -0,0 +1,32 @@ +/* +Copyright 2020 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +/* Polaris HS and Solder Keymap Definitions */ +#define LAYOUT_all( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \ + K40, K41, K42, K43, K46, K48, K49, K4A, K4C, K4D \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \ + { K40, K41, K42, K43, KC_NO, KC_NO, K46, KC_NO, K48, K49, K4A, KC_NO, K4C, K4D } \ +} diff --git a/keyboards/fjlabs/polaris/readme.md b/keyboards/fjlabs/polaris/readme.md new file mode 100644 index 0000000000..e611430f4d --- /dev/null +++ b/keyboards/fjlabs/polaris/readme.md @@ -0,0 +1,14 @@ +# Polaris-Compatible Hotswap and Solder PCB's + +The following is the QMK Firmware for the Polaris-Compatible Hotswap and Solder PCB's developed by FJLaboratories (FJLabs). +* Keyboard Maintainer: FJLabs +* Hardware Supported: Polaris Hotswap and Solder + +Make example for this keyboard (after setting up your build environment): + + make fjlabs/polaris:default + + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +Bootloader can be entered by pressing the reset button near the main microcontroller while the board is plugged in. Alternatively, it may be entered by holding the top-left-most switch and plugging in the PCB while held. \ No newline at end of file diff --git a/keyboards/fjlabs/polaris/rules.mk b/keyboards/fjlabs/polaris/rules.mk new file mode 100644 index 0000000000..622c26a3a1 --- /dev/null +++ b/keyboards/fjlabs/polaris/rules.mk @@ -0,0 +1,25 @@ +# MCU name +MCU = atmega32u4 + +# Processor frequency +F_CPU = 8000000 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output From 02e19123718d8693ff06665f762abbfbe7072201 Mon Sep 17 00:00:00 2001 From: duoshock <33636898+duoshock@users.noreply.github.com> Date: Fri, 14 May 2021 16:36:31 +0100 Subject: [PATCH 374/613] [Keyboard] Add UM-70 (#12556) Co-authored-by: Drashna Jaelre Co-authored-by: Ryan Co-authored-by: online <33636898+online@users.noreply.github.com> --- keyboards/merge/um70/config.h | 63 ++++++ keyboards/merge/um70/info.json | 21 ++ keyboards/merge/um70/keymaps/default/keymap.c | 182 ++++++++++++++++++ .../merge/um70/keymaps/default/readme.md | 5 + keyboards/merge/um70/keymaps/default/rules.mk | 2 + keyboards/merge/um70/keymaps/via/config.h | 20 ++ keyboards/merge/um70/keymaps/via/keymap.c | 182 ++++++++++++++++++ keyboards/merge/um70/keymaps/via/rules.mk | 3 + keyboards/merge/um70/readme.md | 14 ++ keyboards/merge/um70/rules.mk | 25 +++ keyboards/merge/um70/um70.c | 77 ++++++++ keyboards/merge/um70/um70.h | 97 ++++++++++ 12 files changed, 691 insertions(+) create mode 100644 keyboards/merge/um70/config.h create mode 100644 keyboards/merge/um70/info.json create mode 100644 keyboards/merge/um70/keymaps/default/keymap.c create mode 100644 keyboards/merge/um70/keymaps/default/readme.md create mode 100644 keyboards/merge/um70/keymaps/default/rules.mk create mode 100644 keyboards/merge/um70/keymaps/via/config.h create mode 100644 keyboards/merge/um70/keymaps/via/keymap.c create mode 100644 keyboards/merge/um70/keymaps/via/rules.mk create mode 100644 keyboards/merge/um70/readme.md create mode 100644 keyboards/merge/um70/rules.mk create mode 100644 keyboards/merge/um70/um70.c create mode 100644 keyboards/merge/um70/um70.h diff --git a/keyboards/merge/um70/config.h b/keyboards/merge/um70/config.h new file mode 100644 index 0000000000..a1374aa9a3 --- /dev/null +++ b/keyboards/merge/um70/config.h @@ -0,0 +1,63 @@ +/* Copyright 2021 duoshock + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "config_common.h" + +#define VENDOR_ID 0x4D65 +#define PRODUCT_ID 0x3222 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Merge +#define PRODUCT UM-70 + +#define MATRIX_ROWS 10 +#define MATRIX_COLS 8 + +#define MATRIX_ROW_PINS { B0, B1, B2, B3, B7 } +#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, D6, D4 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +#define SOFT_SERIAL_PIN D2 +#define SPLIT_USB_DETECT +#define MASTER_LEFT +#define SPLIT_MODS_ENABLE + +#define RGB_DI_PIN D3 +#define RGBLIGHT_SPLIT +#define RGBLED_NUM 83 +#define RGBLED_SPLIT { 39, 44 } +#ifdef RGB_MATRIX_ENABLE +# define DRIVER_LED_TOTAL RGBLED_NUM +# define RGB_MATRIX_SPLIT RGBLED_SPLIT +#endif +#define RGBLIGHT_SLEEP +#define RGBLIGHT_LIMIT_VAL 150 + +#define DEBOUNCE 5 + +#define B6_AUDIO + +#ifdef AUDIO_ENABLE + #define STARTUP_SONG SONG(STARTUP_SOUND) +#endif + +#define ENCODERS_PAD_A { B4 } +#define ENCODERS_PAD_B { B5 } + +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 0 \ No newline at end of file diff --git a/keyboards/merge/um70/info.json b/keyboards/merge/um70/info.json new file mode 100644 index 0000000000..56c764c811 --- /dev/null +++ b/keyboards/merge/um70/info.json @@ -0,0 +1,21 @@ +{ + "keyboard_name": "UM-70", + "url": "https://mergedesign.store/um-70", + "maintainer": "duoshock", + "width": 18.75, + "height": 5.25, + "layouts": { + "LAYOUT_rspace_2u_bksp": { + "layout": [{"x":1.5, "y":0}, {"x":2.5, "y":0}, {"x":3.5, "y":0}, {"x":4.5, "y":0}, {"x":5.5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":9.25, "y":0}, {"x":10.25, "y":0}, {"x":11.25, "y":0}, {"x":12.25, "y":0}, {"x":13.25, "y":0}, {"x":14.25, "y":0}, {"x":15.25, "y":0, "w":2}, {"x":17.75, "y":0}, {"x":1.5, "y":1, "w":1.5}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8.75, "y":1}, {"x":9.75, "y":1}, {"x":10.75, "y":1}, {"x":11.75, "y":1}, {"x":12.75, "y":1}, {"x":13.75, "y":1}, {"x":14.75, "y":1}, {"x":15.75, "y":1, "w":1.5}, {"x":17.75, "y":1}, {"x":0, "y":2}, {"x":1.5, "y":2, "w":1.75}, {"x":3.25, "y":2}, {"x":4.25, "y":2}, {"x":5.25, "y":2}, {"x":6.25, "y":2}, {"x":7.25, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":12, "y":2}, {"x":13, "y":2}, {"x":14, "y":2}, {"x":15, "y":2, "w":2.25}, {"x":17.75, "y":2}, {"x":0, "y":3}, {"x":1.5, "y":3, "w":2.25}, {"x":3.75, "y":3}, {"x":4.75, "y":3}, {"x":5.75, "y":3}, {"x":6.75, "y":3}, {"x":7.75, "y":3}, {"x":9.5, "y":3}, {"x":10.5, "y":3}, {"x":11.5, "y":3}, {"x":12.5, "y":3}, {"x":13.5, "y":3}, {"x":14.5, "y":3, "w":1.75}, {"x":16.5, "y":3.25}, {"x":0, "y":4}, {"x":1.5, "y":4, "w":1.25}, {"x":2.75, "y":4, "w":1.25}, {"x":4, "y":4, "w":1.25}, {"x":5.25, "y":4, "w":1.25}, {"x":6.5, "y":4, "w":2.25}, {"x":9.5, "y":4, "w":2.75}, {"x":12.25, "y":4, "w":1.5}, {"x":13.75, "y":4, "w":1.5}, {"x":15.5, "y":4.25}, {"x":16.5, "y":4.25}, {"x":17.5, "y":4.25}] + }, + "LAYOUT_rspace_split_bksp": { + "layout": [{"x":1.5, "y":0}, {"x":2.5, "y":0}, {"x":3.5, "y":0}, {"x":4.5, "y":0}, {"x":5.5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":9.25, "y":0}, {"x":10.25, "y":0}, {"x":11.25, "y":0}, {"x":12.25, "y":0}, {"x":13.25, "y":0}, {"x":14.25, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.75, "y":0}, {"x":1.5, "y":1, "w":1.5}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8.75, "y":1}, {"x":9.75, "y":1}, {"x":10.75, "y":1}, {"x":11.75, "y":1}, {"x":12.75, "y":1}, {"x":13.75, "y":1}, {"x":14.75, "y":1}, {"x":15.75, "y":1, "w":1.5}, {"x":17.75, "y":1}, {"x":0, "y":2}, {"x":1.5, "y":2, "w":1.75}, {"x":3.25, "y":2}, {"x":4.25, "y":2}, {"x":5.25, "y":2}, {"x":6.25, "y":2}, {"x":7.25, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":12, "y":2}, {"x":13, "y":2}, {"x":14, "y":2}, {"x":15, "y":2, "w":2.25}, {"x":17.75, "y":2}, {"x":0, "y":3}, {"x":1.5, "y":3, "w":2.25}, {"x":3.75, "y":3}, {"x":4.75, "y":3}, {"x":5.75, "y":3}, {"x":6.75, "y":3}, {"x":7.75, "y":3}, {"x":9.5, "y":3}, {"x":10.5, "y":3}, {"x":11.5, "y":3}, {"x":12.5, "y":3}, {"x":13.5, "y":3}, {"x":14.5, "y":3, "w":1.75}, {"x":16.5, "y":3.25}, {"x":0, "y":4}, {"x":1.5, "y":4, "w":1.25}, {"x":2.75, "y":4, "w":1.25}, {"x":4, "y":4, "w":1.25}, {"x":5.25, "y":4, "w":1.25}, {"x":6.5, "y":4, "w":2.25}, {"x":9.5, "y":4, "w":2.75}, {"x":12.25, "y":4, "w":1.5}, {"x":13.75, "y":4, "w":1.5}, {"x":15.5, "y":4.25}, {"x":16.5, "y":4.25}, {"x":17.5, "y":4.25}] + }, + "LAYOUT_lspace_2u_bksp": { + "layout": [{"x":1.5, "y":0}, {"x":2.5, "y":0}, {"x":3.5, "y":0}, {"x":4.5, "y":0}, {"x":5.5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":9.25, "y":0}, {"x":10.25, "y":0}, {"x":11.25, "y":0}, {"x":12.25, "y":0}, {"x":13.25, "y":0}, {"x":14.25, "y":0}, {"x":15.25, "y":0, "w":2}, {"x":17.75, "y":0}, {"x":1.5, "y":1, "w":1.5}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8.75, "y":1}, {"x":9.75, "y":1}, {"x":10.75, "y":1}, {"x":11.75, "y":1}, {"x":12.75, "y":1}, {"x":13.75, "y":1}, {"x":14.75, "y":1}, {"x":15.75, "y":1, "w":1.5}, {"x":17.75, "y":1}, {"x":0, "y":2}, {"x":1.5, "y":2, "w":1.75}, {"x":3.25, "y":2}, {"x":4.25, "y":2}, {"x":5.25, "y":2}, {"x":6.25, "y":2}, {"x":7.25, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":12, "y":2}, {"x":13, "y":2}, {"x":14, "y":2}, {"x":15, "y":2, "w":2.25}, {"x":17.75, "y":2}, {"x":0, "y":3}, {"x":1.5, "y":3, "w":2.25}, {"x":3.75, "y":3}, {"x":4.75, "y":3}, {"x":5.75, "y":3}, {"x":6.75, "y":3}, {"x":7.75, "y":3}, {"x":9.5, "y":3}, {"x":10.5, "y":3}, {"x":11.5, "y":3}, {"x":12.5, "y":3}, {"x":13.5, "y":3}, {"x":14.5, "y":3, "w":1.75}, {"x":16.5, "y":3.25}, {"x":0, "y":4}, {"x":1.5, "y":4, "w":1.25}, {"x":2.75, "y":4, "w":1.25}, {"x":4, "y":4, "w":1.25}, {"x":5.25, "y":4, "w":2.25}, {"x":7.5, "y":4, "w":1.25}, {"x":9.5, "y":4, "w":2.75}, {"x":12.25, "y":4, "w":1.5}, {"x":13.75, "y":4, "w":1.5}, {"x":15.5, "y":4.25}, {"x":16.5, "y":4.25}, {"x":17.5, "y":4.25}] + }, + "LAYOUT_lspace_split_bksp": { + "layout": [{"x":1.5, "y":0}, {"x":2.5, "y":0}, {"x":3.5, "y":0}, {"x":4.5, "y":0}, {"x":5.5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":9.25, "y":0}, {"x":10.25, "y":0}, {"x":11.25, "y":0}, {"x":12.25, "y":0}, {"x":13.25, "y":0}, {"x":14.25, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.75, "y":0}, {"x":1.5, "y":1, "w":1.5}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8.75, "y":1}, {"x":9.75, "y":1}, {"x":10.75, "y":1}, {"x":11.75, "y":1}, {"x":12.75, "y":1}, {"x":13.75, "y":1}, {"x":14.75, "y":1}, {"x":15.75, "y":1, "w":1.5}, {"x":17.75, "y":1}, {"x":0, "y":2}, {"x":1.5, "y":2, "w":1.75}, {"x":3.25, "y":2}, {"x":4.25, "y":2}, {"x":5.25, "y":2}, {"x":6.25, "y":2}, {"x":7.25, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":12, "y":2}, {"x":13, "y":2}, {"x":14, "y":2}, {"x":15, "y":2, "w":2.25}, {"x":17.75, "y":2}, {"x":0, "y":3}, {"x":1.5, "y":3, "w":2.25}, {"x":3.75, "y":3}, {"x":4.75, "y":3}, {"x":5.75, "y":3}, {"x":6.75, "y":3}, {"x":7.75, "y":3}, {"x":9.5, "y":3}, {"x":10.5, "y":3}, {"x":11.5, "y":3}, {"x":12.5, "y":3}, {"x":13.5, "y":3}, {"x":14.5, "y":3, "w":1.75}, {"x":16.5, "y":3.25}, {"x":0, "y":4}, {"x":1.5, "y":4, "w":1.25}, {"x":2.75, "y":4, "w":1.25}, {"x":4, "y":4, "w":1.25}, {"x":5.25, "y":4, "w":2.25}, {"x":7.5, "y":4, "w":1.25}, {"x":9.5, "y":4, "w":2.75}, {"x":12.25, "y":4, "w":1.5}, {"x":13.75, "y":4, "w":1.5}, {"x":15.5, "y":4.25}, {"x":16.5, "y":4.25}, {"x":17.5, "y":4.25}] + } + } +} diff --git a/keyboards/merge/um70/keymaps/default/keymap.c b/keyboards/merge/um70/keymaps/default/keymap.c new file mode 100644 index 0000000000..1025d37a92 --- /dev/null +++ b/keyboards/merge/um70/keymaps/default/keymap.c @@ -0,0 +1,182 @@ +/* Copyright 2021 duoshock + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +#include + +enum layer_names { + _BASE, + _ONE, + _TWO, + _THREE +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* + * .---------------------------. .-------------------------------. .---. + * |Esc| 1| 2| 3| 4| 5| 6| | 7| 8| 9| 0| -| =| Bsp | |EC | + * |-------------------------. .---------------------------------| |---| + * |Tab | Q| W| E| R| T| | Y| U| I| O| P| [| ]| \ | |Hom| + * .---. |-------------------------. '---------------------------------| |---| + * |M0 | |CapsL | A| S| D| F| G| | H| J| K| L| ;| :| Retn | |End| + * |---| |----------------------------. '--------------------------------| .---. '---' + * |M1 | |Shft | Z| X| C| V| B| | N| M| ,| ,| /| Shift| |Up | + * |---| |----------------------------| |---------------------------' .-----------. + * |M2 | |Ctl |Gui |Alt |Fn0 |Space | | Space| Alt| Ctl| |Lef|Dow|Rig| + * '---' '----------------------------' '-----------------------' '-----------' + */ + +[_BASE] = LAYOUT_rspace_2u_bksp( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME, + KC_1, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_END, + KC_2, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_3, KC_LCTL, KC_LGUI, KC_LALT, MO(1), KC_SPC, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT +), + +[_ONE] = LAYOUT_rspace_2u_bksp( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS +), +[_TWO] = LAYOUT_rspace_2u_bksp( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS +), +[_THREE] = LAYOUT_rspace_2u_bksp( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS +), +}; + +void encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { /* Master Left */ + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } else if (index == 1) { /* Master Right */ + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } +} + + +#ifdef OLED_DRIVER_ENABLE +void suspend_power_down_user(void) { + oled_off(); +} + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + if (is_keyboard_master()) { + return OLED_ROTATION_90; + } + + return rotation; +} + +static void render_logo(void) { + static const char PROGMEM raw_logo[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,192,192,224,224,224,224,224,224,224,224,224,224,224,224,224,224,192,192,128,128,192,192,224,224,224,224,224,224,224,224,192,192,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 15, 3, 1, 0, 1,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,252,240, 0, 0, 0, 0, 0, 0, 0, 0, 0,254,254,254, 0, 0, 0, 0, 0, 0,254,254,254, 0, 0, 0,254,254,254,252,248,224,192,128,224,248,252,254,254,254, 0, 0,128,128,128,128,128,128, 0, 14, 14, 14, 14,142,238,254,254,126, 30, 4,224,248,252, 62, 30, 14, 14, 14, 30, 62,252,248,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,240,192,128, 0,128,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127, 63, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 63, 63,124,112,112,112,112,124, 63, 63, 15, 0, 0, 0,127,127,127, 0, 1, 7, 15, 15, 7, 1, 0,127,127,127, 0, 0, 3, 3, 3, 3, 3, 3, 1, 0,112,124,126, 63, 15, 3, 1, 0, 0, 0, 15, 31, 63,124,120,112,112,112,120,124, 63, 31, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 3, 3, 1, 1, 3, 3, 7, 7, 7, 7, 7, 7, 7, 7, 3, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }; + oled_write_raw_P(raw_logo, sizeof(raw_logo)); +} + + +// 32 * 18 Merge logos +static const char PROGMEM merge_logo[] = { + 0xf8, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x0e, + 0x06, 0x04, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfc, 0xf8, 0xf0, 0xc0, + 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xc0, + 0x80, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x3f, 0x0f, + 0x00, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, + 0x01, 0x00, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00 +}; + +int current_wpm = 0; + +static void print_status_narrow(void) { + oled_set_cursor(0,1); + oled_write_raw_P(merge_logo, sizeof(merge_logo)); + oled_set_cursor(0,5); + oled_write_P(PSTR("-----"), false); + oled_set_cursor(0,6); + oled_write_P(PSTR("LYR "), false); + switch (get_highest_layer(layer_state)) { + case _BASE: + oled_write_P(PSTR("0"), false); + break; + case _ONE: + oled_write_P(PSTR("1"), false); + break; + case _TWO: + oled_write_P(PSTR("2"), false); + break; + case _THREE: + oled_write_P(PSTR("3"), false); + break; + default: + oled_write_ln_P(PSTR("Undef"), false); + } + led_t led_usb_state = host_keyboard_led_state(); + oled_write_ln_P(PSTR(" "), false); + oled_write_P(PSTR("CAP "), false); + oled_write_P(PSTR("."), led_usb_state.caps_lock); + oled_write_P(PSTR("NUM "), false); + oled_write_P(PSTR("."), led_usb_state.num_lock); + oled_write_P(PSTR("SCR "), false); + oled_write_P(PSTR("."), led_usb_state.scroll_lock); + //oled_write_ln_P(PSTR(" "), false); + oled_write_P(PSTR("-----"), false); + + // WPM counter Start (Need #include to work) + char wpm_str[8]; + oled_set_cursor(0,13); + sprintf(wpm_str, " %03d", current_wpm); + oled_write(wpm_str, false); + oled_set_cursor(0,14); + oled_write(" WPM ", false); + // WPM counter End +} + +void oled_task_user(void) { + current_wpm = get_current_wpm(); + if (is_keyboard_master()) { + print_status_narrow(); + //render_logo(); + } else { + render_logo(); + //print_status_narrow(); + } +} + +#endif \ No newline at end of file diff --git a/keyboards/merge/um70/keymaps/default/readme.md b/keyboards/merge/um70/keymaps/default/readme.md new file mode 100644 index 0000000000..a77fe70e7e --- /dev/null +++ b/keyboards/merge/um70/keymaps/default/readme.md @@ -0,0 +1,5 @@ +# Default UM-70 Layout + +![UM-70 Layout Image](https://i.imgur.com/5lucSbi.jpg) + +This is the default layout that comes flashed on every UM-70. diff --git a/keyboards/merge/um70/keymaps/default/rules.mk b/keyboards/merge/um70/keymaps/default/rules.mk new file mode 100644 index 0000000000..1888ce3a12 --- /dev/null +++ b/keyboards/merge/um70/keymaps/default/rules.mk @@ -0,0 +1,2 @@ +WPM_ENABLE = yes +LTO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/merge/um70/keymaps/via/config.h b/keyboards/merge/um70/keymaps/via/config.h new file mode 100644 index 0000000000..ea112f48ef --- /dev/null +++ b/keyboards/merge/um70/keymaps/via/config.h @@ -0,0 +1,20 @@ +/* Copyright 2021 duoshock + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#define RGBLIGHT_EFFECT_BREATHING +#define RGBLIGHT_EFFECT_RAINBOW_MOOD +#define RGBLIGHT_EFFECT_RAINBOW_SWIRL +#define RGBLIGHT_EFFECT_SNAKE diff --git a/keyboards/merge/um70/keymaps/via/keymap.c b/keyboards/merge/um70/keymaps/via/keymap.c new file mode 100644 index 0000000000..e71af2d32d --- /dev/null +++ b/keyboards/merge/um70/keymaps/via/keymap.c @@ -0,0 +1,182 @@ +/* Copyright 2021 duoshock + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +#include + +enum layer_names { + _BASE, + _ONE, + _TWO, + _THREE +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* + * .---------------------------. .-------------------------------. .---. + * |Esc| 1| 2| 3| 4| 5| 6| | 7| 8| 9| 0| -| =|` |Bsp| |EC | + * |-------------------------. .---------------------------------| |---| + * |Tab | Q| W| E| R| T| | Y| U| I| O| P| [| ]| \ | |Hom| + * .---. |-------------------------. '---------------------------------| |---| + * |M0 | |CapsL | A| S| D| F| G| | H| J| K| L| ;| :| Retn | |End| + * |---| |----------------------------. '--------------------------------| .---. '---' + * |M1 | |Shft | Z| X| C| V| B| | N| M| ,| ,| /| Shift| |Up | + * |---| |----------------------------| |---------------------------' .-----------. + * |M2 | |Ctl |Gui |Alt |Fn0 |Space | | Space| Alt| Ctl| |Lef|Dow|Rig| + * '---' '----------------------------' '-----------------------' '-----------' + */ + +[_BASE] = LAYOUT_rspace_split_bksp( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC, KC_MUTE, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME, + KC_1, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_END, + KC_2, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_3, KC_LCTL, KC_LGUI, KC_LALT, MO(1), KC_SPC, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT +), + +[_ONE] = LAYOUT_rspace_split_bksp( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS +), +[_TWO] = LAYOUT_rspace_split_bksp( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS +), +[_THREE] = LAYOUT_rspace_split_bksp( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS +), +}; + +void encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { /* Master Left */ + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } else if (index == 1) { /* Master Right */ + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } +} + + +#ifdef OLED_DRIVER_ENABLE +void suspend_power_down_user(void) { + oled_off(); +} + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + if (is_keyboard_master()) { + return OLED_ROTATION_90; + } + + return rotation; +} + +static void render_logo(void) { + static const char PROGMEM raw_logo[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,192,192,224,224,224,224,224,224,224,224,224,224,224,224,224,224,192,192,128,128,192,192,224,224,224,224,224,224,224,224,192,192,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 15, 3, 1, 0, 1,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,252,240, 0, 0, 0, 0, 0, 0, 0, 0, 0,254,254,254, 0, 0, 0, 0, 0, 0,254,254,254, 0, 0, 0,254,254,254,252,248,224,192,128,224,248,252,254,254,254, 0, 0,128,128,128,128,128,128, 0, 14, 14, 14, 14,142,238,254,254,126, 30, 4,224,248,252, 62, 30, 14, 14, 14, 30, 62,252,248,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,240,192,128, 0,128,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127, 63, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 63, 63,124,112,112,112,112,124, 63, 63, 15, 0, 0, 0,127,127,127, 0, 1, 7, 15, 15, 7, 1, 0,127,127,127, 0, 0, 3, 3, 3, 3, 3, 3, 1, 0,112,124,126, 63, 15, 3, 1, 0, 0, 0, 15, 31, 63,124,120,112,112,112,120,124, 63, 31, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 3, 3, 1, 1, 3, 3, 7, 7, 7, 7, 7, 7, 7, 7, 3, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }; + oled_write_raw_P(raw_logo, sizeof(raw_logo)); +} + + +// 32 * 18 Merge logos +static const char PROGMEM merge_logo[] = { + 0xf8, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x0e, + 0x06, 0x04, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfc, 0xf8, 0xf0, 0xc0, + 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xc0, + 0x80, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x3f, 0x0f, + 0x00, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, + 0x01, 0x00, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00 +}; + +int current_wpm = 0; + +static void print_status_narrow(void) { + oled_set_cursor(0,1); + oled_write_raw_P(merge_logo, sizeof(merge_logo)); + oled_set_cursor(0,5); + oled_write_P(PSTR("-----"), false); + oled_set_cursor(0,6); + oled_write_P(PSTR("LYR "), false); + switch (get_highest_layer(layer_state)) { + case _BASE: + oled_write_P(PSTR("0"), false); + break; + case _ONE: + oled_write_P(PSTR("1"), false); + break; + case _TWO: + oled_write_P(PSTR("2"), false); + break; + case _THREE: + oled_write_P(PSTR("3"), false); + break; + default: + oled_write_ln_P(PSTR("Undef"), false); + } + led_t led_usb_state = host_keyboard_led_state(); + oled_write_ln_P(PSTR(" "), false); + oled_write_P(PSTR("CAP "), false); + oled_write_P(PSTR("."), led_usb_state.caps_lock); + oled_write_P(PSTR("NUM "), false); + oled_write_P(PSTR("."), led_usb_state.num_lock); + oled_write_P(PSTR("SCR "), false); + oled_write_P(PSTR("."), led_usb_state.scroll_lock); + //oled_write_ln_P(PSTR(" "), false); + oled_write_P(PSTR("-----"), false); + + // WPM counter Start (Need #include to work) + char wpm_str[8]; + oled_set_cursor(0,13); + sprintf(wpm_str, " %03d", current_wpm); + oled_write(wpm_str, false); + oled_set_cursor(0,14); + oled_write(" WPM ", false); + // WPM counter End +} + +void oled_task_user(void) { + current_wpm = get_current_wpm(); + if (is_keyboard_master()) { + print_status_narrow(); + //render_logo(); + } else { + render_logo(); + //print_status_narrow(); + } +} + +#endif diff --git a/keyboards/merge/um70/keymaps/via/rules.mk b/keyboards/merge/um70/keymaps/via/rules.mk new file mode 100644 index 0000000000..56de955c27 --- /dev/null +++ b/keyboards/merge/um70/keymaps/via/rules.mk @@ -0,0 +1,3 @@ +VIA_ENABLE = yes +WPM_ENABLE = yes +LTO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/merge/um70/readme.md b/keyboards/merge/um70/readme.md new file mode 100644 index 0000000000..0c297a6402 --- /dev/null +++ b/keyboards/merge/um70/readme.md @@ -0,0 +1,14 @@ +# UM-70 + +![UM-70](https://i.imgur.com/zrvMOZel.jpeg) + +A 70 keys keyboard in 65% layout with encoder and OLED screen sold by Merge. [Product page](https://mergedesign.store/products/um-70) + +* Keyboard Maintainer: [duoshock](https://github.com/duoshock) +* Hardware Availability: [Merge Store](https://mergedesign.store/products/um-70) + +Make example for this keyboard (after setting up your build environment): + + make merge/um70:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). \ No newline at end of file diff --git a/keyboards/merge/um70/rules.mk b/keyboards/merge/um70/rules.mk new file mode 100644 index 0000000000..4e4abc1d80 --- /dev/null +++ b/keyboards/merge/um70/rules.mk @@ -0,0 +1,25 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +ENCODER_ENABLE = yes +SPLIT_KEYBOARD = yes +OLED_DRIVER_ENABLE = yes diff --git a/keyboards/merge/um70/um70.c b/keyboards/merge/um70/um70.c new file mode 100644 index 0000000000..3283e7e26b --- /dev/null +++ b/keyboards/merge/um70/um70.c @@ -0,0 +1,77 @@ +/* Copyright 2021 duoshock + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "um70.h" + +#ifdef RGB_MATRIX_ENABLE +/* + Underglow Underglow 13,14 = split bksp, 14 = 2u bksp + 07 08 09 10 11 12 13 01 01 07 08 09 10 11 12 13 14 + 14 15 16 17 18 19 02 02 15 16 17 18 19 20 21 22 23 +20 21 22 23 24 25 26 03 03 24 25 26 27 28 29 30 31 +27 28 29 30 31 32 33 04 04 32 33 34 35 36 37 38 +34 35 36 37 38 39 05 05 39 40 41 42 43 44 + 06 06 +*/ + +#define XX NO_LED + +led_config_t g_led_config = { { + { 6, 7, 8, 9, 10, 11, 12, XX }, + { 13, 14, 15, 16, 17, 18, XX, XX }, + { 20, 21, 22, 23, 24, 25, XX, XX }, + { 27, 28, 29, 30, 31, 32, XX, XX }, + { 34, 35, 36, 37, 38, 19, 26, 33 }, + + { 45, 46, 47, 48, 49, 50, 51, 52 }, + { 53, 54, 55, 56, 57, 58, 59, 60 }, + { 62, 63, 64, 65, 66, 67, 68, XX }, + { 70, 71, 72, 73, 74, 75, 76, 61 }, + { 77, 78, 79, 80, 81, 82, XX, 69 }, +}, { + { 224, 0 }, { 224, 13 }, { 224, 26 }, { 148, 39 }, { 185, 52 }, { 224, 64 }, + + { 32, 0 }, { 64, 0 }, { 96, 0 }, { 128, 0 }, { 160, 0 }, { 192, 0 }, { 224, 0 }, + { 32, 16 }, { 64, 16 }, { 96, 16 }, { 128, 16 }, { 160, 16 }, { 192, 16 }, + { 0, 32 }, { 32, 32 }, { 64, 32 }, { 96, 32 }, { 128, 32 }, { 160, 32 }, { 192, 32 }, + { 0, 48 }, { 32, 48 }, { 64, 48 }, { 96, 48 }, { 128, 48 }, { 160, 48 }, { 192, 48 }, + { 0, 64 }, { 32, 64 }, { 64, 64 }, { 96, 64 }, { 128, 64 }, { 160, 64 }, + + { 224, 0 }, { 224, 13 }, { 224, 26 }, { 148, 39 }, { 185, 52 }, { 224, 64 }, + + { 0, 0 }, { 32, 0 }, { 64, 0 }, { 96, 0 }, { 128, 0 }, { 160, 0 }, { 192, 0 }, { 224, 0 }, + { 0, 16 }, { 32, 16 }, { 64, 16 }, { 96, 16 }, { 128, 16 }, { 160, 16 }, { 192, 16 }, { 223, 16 }, { 224, 16 }, + { 0, 32 }, { 32, 32 }, { 64, 32 }, { 96, 32 }, { 128, 32 }, { 160, 32 }, { 192, 32 }, { 223, 32 }, + { 0, 48 }, { 32, 48 }, { 64, 48 }, { 96, 48 }, { 128, 48 }, { 160, 48 }, { 192, 48 }, + { 0, 46 }, { 32, 46 }, { 64, 64 }, { 96, 64 }, { 128, 64 }, { 160, 64 } + +}, { + 2, 2, 2, 2, 2, 2, + 4, 4, 4, 4, 4, 4, 4, + 1, 4, 4, 4, 4, 4, + 4, 1, 4, 4, 4, 4, 4, + 4, 1, 4, 4, 4, 4, 4, + 4, 1, 1, 1, 1, 1, + + 2, 2, 2, 2, 2, 2, + 4, 4, 4, 4, 4, 4, 4, 1, + 4, 4, 4, 4, 4, 4, 4, 1, 4, + 4, 4, 4, 4, 4, 4, 1, 4, + 4, 4, 4, 4, 4, 1, 4, + 1, 1, 1, 4, 4, 4 +} }; + +#endif \ No newline at end of file diff --git a/keyboards/merge/um70/um70.h b/keyboards/merge/um70/um70.h new file mode 100644 index 0000000000..9b46c94a96 --- /dev/null +++ b/keyboards/merge/um70/um70.h @@ -0,0 +1,97 @@ +/* Copyright 2021 duoshock + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + +#define LAYOUT_rspace_split_bksp( \ + L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, R07, R27, \ + L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, R16, R17, R37, \ + L45, L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, R26, R47, \ + L46, L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, R36,\ + L47, L40, L41, L42, L43, L44, R40, R41, R42, R43, R44, R45 \ +) { \ + { L00, L01, L02, L03, L04, L05, L06, XXX }, \ + { L10, L11, L12, L13, L14, L15, XXX, XXX }, \ + { L20, L21, L22, L23, L24, L25, XXX, XXX }, \ + { L30, L31, L32, L33, L34, L35, XXX, XXX }, \ + { L40, L41, L42, L43, L44, L45, L46, L47 }, \ + { R00, R01, R02, R03, R04, R05, R06, R07 }, \ + { R10, R11, R12, R13, R14, R15, R16, R17 }, \ + { R20, R21, R22, R23, R24, R25, R26, R27 }, \ + { R30, R31, R32, R33, R34, R35, R36, R37 }, \ + { R40, R41, R42, R43, R44, R45, XXX, R47 } \ +} + +#define LAYOUT_rspace_2u_bksp( \ + L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R07, R27, \ + L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, R16, R17, R37, \ + L45, L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, R26, R47, \ + L46, L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, R36,\ + L47, L40, L41, L42, L43, L44, R40, R41, R42, R43, R44, R45 \ +) { \ + { L00, L01, L02, L03, L04, L05, L06, XXX }, \ + { L10, L11, L12, L13, L14, L15, XXX, XXX }, \ + { L20, L21, L22, L23, L24, L25, XXX, XXX }, \ + { L30, L31, L32, L33, L34, L35, XXX, XXX }, \ + { L40, L41, L42, L43, L44, L45, L46, L47 }, \ + { R00, R01, R02, R03, R04, R05, XXX, R07 }, \ + { R10, R11, R12, R13, R14, R15, R16, R17 }, \ + { R20, R21, R22, R23, R24, R25, R26, R27 }, \ + { R30, R31, R32, R33, R34, R35, R36, R37 }, \ + { R40, R41, R42, R43, R44, R45, XXX, R47 } \ +} + +#define LAYOUT_lspace_2u_bksp( \ + L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R07, R27, \ + L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, R16, R17, R37, \ + L45, L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, R26, R47, \ + L46, L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, R36,\ + L47, L40, L41, L42, L44, L43, R40, R41, R42, R43, R44, R45 \ +) { \ + { L00, L01, L02, L03, L04, L05, L06, XXX }, \ + { L10, L11, L12, L13, L14, L15, XXX, XXX }, \ + { L20, L21, L22, L23, L24, L25, XXX, XXX }, \ + { L30, L31, L32, L33, L34, L35, XXX, XXX }, \ + { L40, L41, L42, L43, L44, L45, L46, L47 }, \ + { R00, R01, R02, R03, R04, R05, XXX, R07 }, \ + { R10, R11, R12, R13, R14, R15, R16, R17 }, \ + { R20, R21, R22, R23, R24, R25, R26, R27 }, \ + { R30, R31, R32, R33, R34, R35, R36, R37 }, \ + { R40, R41, R42, R43, R44, R45, XXX, R47 } \ +} + +#define LAYOUT_lspace_split_bksp( \ + L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, R07, R27, \ + L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, R16, R17, R37, \ + L45, L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, R26, R47, \ + L46, L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, R36,\ + L47, L40, L41, L42, L44, L43, R40, R41, R42, R43, R44, R45 \ +) { \ + { L00, L01, L02, L03, L04, L05, L06, XXX }, \ + { L10, L11, L12, L13, L14, L15, XXX, XXX }, \ + { L20, L21, L22, L23, L24, L25, XXX, XXX }, \ + { L30, L31, L32, L33, L34, L35, XXX, XXX }, \ + { L40, L41, L42, L43, L44, L45, L46, L47 }, \ + { R00, R01, R02, R03, R04, R05, R06, R07 }, \ + { R10, R11, R12, R13, R14, R15, R16, R17 }, \ + { R20, R21, R22, R23, R24, R25, R26, R27 }, \ + { R30, R31, R32, R33, R34, R35, R36, R37 }, \ + { R40, R41, R42, R43, R44, R45, XXX, R47 } \ +} From 9c68e27aceb186990da1beaba122c48cc7a8c8ee Mon Sep 17 00:00:00 2001 From: James Young <18669334+noroadsleft@users.noreply.github.com> Date: Fri, 14 May 2021 08:41:02 -0700 Subject: [PATCH 375/613] TKC Portico: layout macro/Configurator touch-up (#12897) --- keyboards/tkc/portico/info.json | 156 +++++++++--------- .../tkc/portico/keymaps/default/keymap.c | 8 +- keyboards/tkc/portico/keymaps/via/keymap.c | 8 +- keyboards/tkc/portico/portico.h | 2 +- keyboards/tkc/portico/readme.md | 9 +- keyboards/tkc/portico/rules.mk | 2 + 6 files changed, 97 insertions(+), 88 deletions(-) diff --git a/keyboards/tkc/portico/info.json b/keyboards/tkc/portico/info.json index dd8431b718..59a5e420da 100644 --- a/keyboards/tkc/portico/info.json +++ b/keyboards/tkc/portico/info.json @@ -1,79 +1,87 @@ { - "keyboard_name": "TKC Portico", - "url": "", - "maintainer": "TerryMathews", - "width": 16, - "height": 5, + "keyboard_name": "TKC Portico", + "url": "", + "maintainer": "TerryMathews", + "width": 16, + "height": 5, + "layout_aliases": { + "LAYOUT_all": "LAYOUT_65_ansi_blocker", + }, "layouts": { - "LAYOUT": { + "LAYOUT_65_ansi_blocker": { "layout": [ - {"label":"~", "x":0, "y":0}, - {"label":"!", "x":1, "y":0}, - {"label":"@", "x":2, "y":0}, - {"label":"#", "x":3, "y":0}, - {"label":"$", "x":4, "y":0}, - {"label":"%", "x":5, "y":0}, - {"label":"^", "x":6, "y":0}, - {"label":"&", "x":7, "y":0}, - {"label":"*", "x":8, "y":0}, - {"label":"(", "x":9, "y":0}, - {"label":")", "x":10, "y":0}, - {"label":"_", "x":11, "y":0}, - {"label":"+", "x":12, "y":0}, - {"label":"Backspace", "x":13, "y":0, "w":2}, - {"label":"Home", "x":15, "y":0}, - {"label":"Tab", "x":0, "y":1, "w":1.5}, - {"label":"Q", "x":1.5, "y":1}, - {"label":"W", "x":2.5, "y":1}, - {"label":"E", "x":3.5, "y":1}, - {"label":"R", "x":4.5, "y":1}, - {"label":"T", "x":5.5, "y":1}, - {"label":"Y", "x":6.5, "y":1}, - {"label":"U", "x":7.5, "y":1}, - {"label":"I", "x":8.5, "y":1}, - {"label":"O", "x":9.5, "y":1}, - {"label":"P", "x":10.5, "y":1}, - {"label":"{", "x":11.5, "y":1}, - {"label":"}", "x":12.5, "y":1}, - {"label":"|", "x":13.5, "y":1, "w":1.5}, - {"label":"PgUp", "x":15, "y":1}, - {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, - {"label":"A", "x":1.75, "y":2}, - {"label":"S", "x":2.75, "y":2}, - {"label":"D", "x":3.75, "y":2}, - {"label":"F", "x":4.75, "y":2}, - {"label":"G", "x":5.75, "y":2}, - {"label":"H", "x":6.75, "y":2}, - {"label":"J", "x":7.75, "y":2}, - {"label":"K", "x":8.75, "y":2}, - {"label":"L", "x":9.75, "y":2}, - {"label":":", "x":10.75, "y":2}, - {"label":"\"", "x":11.75, "y":2}, - {"label":"Enter", "x":12.75, "y":2, "w":2.25}, - {"label":"PgDn", "x":15, "y":2}, - {"label":"Shift", "x":0, "y":3, "w":2.25}, - {"label":"Z", "x":2.25, "y":3}, - {"label":"X", "x":3.25, "y":3}, - {"label":"C", "x":4.25, "y":3}, - {"label":"V", "x":5.25, "y":3}, - {"label":"B", "x":6.25, "y":3}, - {"label":"N", "x":7.25, "y":3}, - {"label":"M", "x":8.25, "y":3}, - {"label":"<", "x":9.25, "y":3}, - {"label":">", "x":10.25, "y":3}, - {"label":"?", "x":11.25, "y":3}, - {"label":"Shift", "x":12.25, "y":3, "w":1.75}, - {"label":"", "x":14, "y":3}, - {"label":"End", "x":15, "y":3}, - {"label":"Ctrl", "x":0, "y":4, "w":1.25}, - {"label":"Win", "x":1.25, "y":4, "w":1.25}, - {"label":"Alt", "x":2.5, "y":4, "w":1.25}, - {"x":3.75, "y":4, "w":6.25}, - {"label":"Fn", "x":10, "y":4, "w":1.25}, - {"label":"Ctrl", "x":11.25, "y":4, "w":1.25}, - {"label":"", "x":13, "y":4}, - {"label":"", "x":14, "y":4}, - {"label":"", "x":15, "y":4}] + {"label":"~", "x":0, "y":0}, + {"label":"!", "x":1, "y":0}, + {"label":"@", "x":2, "y":0}, + {"label":"#", "x":3, "y":0}, + {"label":"$", "x":4, "y":0}, + {"label":"%", "x":5, "y":0}, + {"label":"^", "x":6, "y":0}, + {"label":"&", "x":7, "y":0}, + {"label":"*", "x":8, "y":0}, + {"label":"(", "x":9, "y":0}, + {"label":")", "x":10, "y":0}, + {"label":"_", "x":11, "y":0}, + {"label":"+", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + {"label":"Home", "x":15, "y":0}, + + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"{", "x":11.5, "y":1}, + {"label":"}", "x":12.5, "y":1}, + {"label":"|", "x":13.5, "y":1, "w":1.5}, + {"label":"PgUp", "x":15, "y":1}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":":", "x":10.75, "y":2}, + {"label":"\"", "x":11.75, "y":2}, + {"label":"Enter", "x":12.75, "y":2, "w":2.25}, + {"label":"PgDn", "x":15, "y":2}, + + {"label":"Shift", "x":0, "y":3, "w":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":"<", "x":9.25, "y":3}, + {"label":">", "x":10.25, "y":3}, + {"label":"?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"", "x":14, "y":3}, + {"label":"End", "x":15, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"Win", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"label":"Fn", "x":10, "y":4, "w":1.25}, + {"label":"Ctrl", "x":11.25, "y":4, "w":1.25}, + {"label":"", "x":13, "y":4}, + {"label":"", "x":14, "y":4}, + {"label":"", "x":15, "y":4} + ] } } -} \ No newline at end of file +} diff --git a/keyboards/tkc/portico/keymaps/default/keymap.c b/keyboards/tkc/portico/keymaps/default/keymap.c index 41034ce6d7..bbc68c3b93 100644 --- a/keyboards/tkc/portico/keymaps/default/keymap.c +++ b/keyboards/tkc/portico/keymaps/default/keymap.c @@ -18,28 +18,28 @@ along with this program. If not, see . #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_all( + [0] = LAYOUT_65_ansi_blocker( KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), - [1] = LAYOUT_all( + [1] = LAYOUT_65_ansi_blocker( KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_HOME, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, KC_PSCR, KC_SLCK, KC_PAUS, RESET, KC_PGUP, KC_CAPS, RGB_SPI, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST, KC_PGDN, KC_LSFT, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, KC_VOLU, KC_MUTE, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT ), - [2] = LAYOUT_all( + [2] = LAYOUT_65_ansi_blocker( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), - [3] = LAYOUT_all( + [3] = LAYOUT_65_ansi_blocker( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, diff --git a/keyboards/tkc/portico/keymaps/via/keymap.c b/keyboards/tkc/portico/keymaps/via/keymap.c index 41034ce6d7..bbc68c3b93 100644 --- a/keyboards/tkc/portico/keymaps/via/keymap.c +++ b/keyboards/tkc/portico/keymaps/via/keymap.c @@ -18,28 +18,28 @@ along with this program. If not, see . #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_all( + [0] = LAYOUT_65_ansi_blocker( KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), - [1] = LAYOUT_all( + [1] = LAYOUT_65_ansi_blocker( KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_HOME, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, KC_PSCR, KC_SLCK, KC_PAUS, RESET, KC_PGUP, KC_CAPS, RGB_SPI, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST, KC_PGDN, KC_LSFT, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, KC_VOLU, KC_MUTE, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT ), - [2] = LAYOUT_all( + [2] = LAYOUT_65_ansi_blocker( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), - [3] = LAYOUT_all( + [3] = LAYOUT_65_ansi_blocker( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, diff --git a/keyboards/tkc/portico/portico.h b/keyboards/tkc/portico/portico.h index 6aac8fdbb7..7add429432 100644 --- a/keyboards/tkc/portico/portico.h +++ b/keyboards/tkc/portico/portico.h @@ -21,7 +21,7 @@ along with this program. If not, see . #define XXX KC_NO -#define LAYOUT_all( \ +#define LAYOUT_65_ansi_blocker( \ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, \ diff --git a/keyboards/tkc/portico/readme.md b/keyboards/tkc/portico/readme.md index ff73822c85..ce7fae76fa 100644 --- a/keyboards/tkc/portico/readme.md +++ b/keyboards/tkc/portico/readme.md @@ -1,14 +1,13 @@ # TKC Portico -![Photo](https://cdn.shopify.com/s/files/1/1679/2319/products/Portico_BoW_1_590x.png?v=1604373859) +![TKC Portico](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/tkc/portico/portico-clear_overhead_1024x1024.webp) -A 65% keyboard kit with per-key and underglow RGB lighting +A 65% keyboard kit with per-key and underglow RGB lighting. * Keyboard Maintainer: [TerryMathews](https://github.com/TerryMathews) -* Hardware Supported: TKC Portico -* Hardware Availability: TBA +* Hardware Supported: TKC Portico (ATmega32U4) +* Hardware Availability: [TheKey.Company](https://thekey.company/products/portico-keyboard) - Reset board into bootloader by holding down Esc key while plugging in USB-C cable. Make example for this keyboard (after setting up your build environment): diff --git a/keyboards/tkc/portico/rules.mk b/keyboards/tkc/portico/rules.mk index f6dc3311c6..1cbcd95d6a 100644 --- a/keyboards/tkc/portico/rules.mk +++ b/keyboards/tkc/portico/rules.mk @@ -22,3 +22,5 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output RGB_MATRIX_ENABLE = yes # Use RGB matrix RGB_MATRIX_DRIVER = IS31FL3731 + +LAYOUTS = 65_ansi_blocker From 495d47b7d2a0df4e84c25c9cfee3931576cfbd32 Mon Sep 17 00:00:00 2001 From: Faehriss <84159213+Faehriss@users.noreply.github.com> Date: Fri, 14 May 2021 16:47:38 +0100 Subject: [PATCH 376/613] [Keyboard] split right shift iso layout for ok60 (#12890) --- keyboards/ok60/ok60.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/keyboards/ok60/ok60.h b/keyboards/ok60/ok60.h index 7c459d8776..d64f951c42 100644 --- a/keyboards/ok60/ok60.h +++ b/keyboards/ok60/ok60.h @@ -45,6 +45,20 @@ { K400, K401, K402, KC_NO, KC_NO, KC_NO, K406, KC_NO, KC_NO, KC_NO, K410, K411, K412, K413, KC_NO } \ } +#define LAYOUT_60_iso_split_rshift( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, \ + K400, K401, K402, K406, K410, K411, K412, K413 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, KC_NO, K014 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, KC_NO, KC_NO }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, KC_NO }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313, KC314 }, \ + { K400, K401, K402, KC_NO, KC_NO, KC_NO, K406, KC_NO, KC_NO, KC_NO, K410, K411, K412, K413, KC_NO } \ +} + #define LAYOUT_60_hhkb( \ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, \ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, \ From 9107c382f3157c60bd74fe4c97e7f49e7f4cb0ea Mon Sep 17 00:00:00 2001 From: Cosmin <44280558+BB-66@users.noreply.github.com> Date: Sat, 15 May 2021 01:44:00 +0300 Subject: [PATCH 377/613] [Keyboard] Add Marauder (#12550) Co-authored-by: Drashna Jaelre --- keyboards/handwired/marauder/config.h | 70 ++++++++++++ keyboards/handwired/marauder/info.json | 108 ++++++++++++++++++ .../marauder/keymaps/default/keymap.c | 29 +++++ keyboards/handwired/marauder/marauder.c | 20 ++++ keyboards/handwired/marauder/marauder.h | 44 +++++++ keyboards/handwired/marauder/rules.mk | 26 +++++ 6 files changed, 297 insertions(+) create mode 100644 keyboards/handwired/marauder/config.h create mode 100644 keyboards/handwired/marauder/info.json create mode 100644 keyboards/handwired/marauder/keymaps/default/keymap.c create mode 100644 keyboards/handwired/marauder/marauder.c create mode 100644 keyboards/handwired/marauder/marauder.h create mode 100644 keyboards/handwired/marauder/rules.mk diff --git a/keyboards/handwired/marauder/config.h b/keyboards/handwired/marauder/config.h new file mode 100644 index 0000000000..0935e1bee1 --- /dev/null +++ b/keyboards/handwired/marauder/config.h @@ -0,0 +1,70 @@ +/* Copyright 2021 BB-66 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4D52 +#define PRODUCT_ID 0x0001 +#define DEVICE_VER 0x0001 +#define MANUFACTURER BB-66 +#define PRODUCT Minshara Marauder + +/* key matrix size */ +#define MATRIX_ROWS 12 +#define MATRIX_COLS 9 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ +#define MATRIX_ROW_PINS { D0, D4, C6, D7, E6, B4, B5, B7, D5, C7, F1, F0 } +#define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6, F5, F4, B0 } + +#define DIODE_DIRECTION COL2ROW + +#define RGB_DI_PIN D1 +#ifdef RGB_DI_PIN + #define RGBLED_NUM 20 + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 + #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ + #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ + #define RGBLIGHT_ANIMATIONS +// /*== or choose animations ==*/ +// #define RGBLIGHT_EFFECT_BREATHING +// #define RGBLIGHT_EFFECT_RAINBOW_MOOD +// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL +// #define RGBLIGHT_EFFECT_SNAKE +// #define RGBLIGHT_EFFECT_KNIGHT +// #define RGBLIGHT_EFFECT_CHRISTMAS +// #define RGBLIGHT_EFFECT_STATIC_GRADIENT +// #define RGBLIGHT_EFFECT_RGB_TEST +// #define RGBLIGHT_EFFECT_ALTERNATING +#endif + +// generated by KBFirmware JSON to QMK Parser +// https://noroadsleft.github.io/kbf_qmk_converter/ diff --git a/keyboards/handwired/marauder/info.json b/keyboards/handwired/marauder/info.json new file mode 100644 index 0000000000..cfdad5c8dc --- /dev/null +++ b/keyboards/handwired/marauder/info.json @@ -0,0 +1,108 @@ +{ + "keyboard_name": "Minshara Marauder", + "url": "https://imgur.com/a/TvsXpq5", + "maintainer": "BB-66", + "width": 19.25, + "height": 6.5, + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"K00 (D0,B6)", "x":0, "y":0}, + {"label":"K01 (D0,B2)", "x":2, "y":0}, + {"label":"K02 (D0,B3)", "x":3, "y":0}, + {"label":"K03 (D0,B1)", "x":4, "y":0}, + {"label":"K04 (D0,F7)", "x":5, "y":0}, + {"label":"K05 (D0,F6)", "x":6.5, "y":0}, + {"label":"K06 (D0,F5)", "x":7.5, "y":0}, + {"label":"K07 (D0,F4)", "x":8.5, "y":0}, + {"label":"K08 (D0,B0)", "x":9.5, "y":0}, + {"label":"K68 (B5,B0)", "x":11, "y":0}, + {"label":"K67 (B5,F4)", "x":12, "y":0}, + {"label":"K66 (B5,F5)", "x":13, "y":0}, + {"label":"K65 (B5,F6)", "x":14, "y":0}, + {"label":"K63 (B5,B1)", "x":15.25, "y":0}, + {"label":"K62 (B5,B3)", "x":16.25, "y":0}, + {"label":"K61 (B5,B2)", "x":17.25, "y":0}, + {"label":"K60 (B5,B6)", "x":18.25, "y":0}, + {"label":"K10 (D4,B6)", "x":0, "y":1.5}, + {"label":"K11 (D4,B2)", "x":1, "y":1.5}, + {"label":"K12 (D4,B3)", "x":2, "y":1.5}, + {"label":"K13 (D4,B1)", "x":3, "y":1.5}, + {"label":"K14 (D4,F7)", "x":4, "y":1.5}, + {"label":"K15 (D4,F6)", "x":5, "y":1.5}, + {"label":"K16 (D4,F5)", "x":6, "y":1.5}, + {"label":"K17 (D4,F4)", "x":7, "y":1.5}, + {"label":"K18 (D4,B0)", "x":8, "y":1.5}, + {"label":"K78 (B7,B0)", "x":9, "y":1.5}, + {"label":"K77 (B7,F4)", "x":10, "y":1.5}, + {"label":"K76 (B7,F5)", "x":11, "y":1.5}, + {"label":"K75 (B7,F6)", "x":12, "y":1.5}, + {"label":"K74 (B7,F7)", "x":13, "y":1.5, "w":2}, + {"label":"K73 (B7,B1)", "x":15.25, "y":1.5}, + {"label":"K72 (B7,B3)", "x":16.25, "y":1.5}, + {"label":"K71 (B7,B2)", "x":17.25, "y":1.5}, + {"label":"K70 (B7,B6)", "x":18.25, "y":1.5}, + {"label":"K20 (C6,B6)", "x":0, "y":2.5, "w":1.5}, + {"label":"K21 (C6,B2)", "x":1.5, "y":2.5}, + {"label":"K22 (C6,B3)", "x":2.5, "y":2.5}, + {"label":"K23 (C6,B1)", "x":3.5, "y":2.5}, + {"label":"K24 (C6,F7)", "x":4.5, "y":2.5}, + {"label":"K25 (C6,F6)", "x":5.5, "y":2.5}, + {"label":"K26 (C6,F5)", "x":6.5, "y":2.5}, + {"label":"K27 (C6,F4)", "x":7.5, "y":2.5}, + {"label":"K28 (C6,B0)", "x":8.5, "y":2.5}, + {"label":"K88 (D5,B0)", "x":9.5, "y":2.5}, + {"label":"K87 (D5,F4)", "x":10.5, "y":2.5}, + {"label":"K86 (D5,F5)", "x":11.5, "y":2.5}, + {"label":"K85 (D5,F6)", "x":12.5, "y":2.5}, + {"label":"K84 (D5,F7)", "x":13.5, "y":2.5, "w":1.5}, + {"label":"K83 (D5,B1)", "x":15.25, "y":2.5}, + {"label":"K82 (D5,B3)", "x":16.25, "y":2.5}, + {"label":"K81 (D5,B2)", "x":17.25, "y":2.5}, + {"label":"K80 (D5,B6)", "x":18.25, "y":2.5, "h":2}, + {"label":"K30 (D7,B6)", "x":0, "y":3.5, "w":1.75}, + {"label":"K31 (D7,B2)", "x":1.75, "y":3.5}, + {"label":"K32 (D7,B3)", "x":2.75, "y":3.5}, + {"label":"K33 (D7,B1)", "x":3.75, "y":3.5}, + {"label":"K34 (D7,F7)", "x":4.75, "y":3.5}, + {"label":"K35 (D7,F6)", "x":5.75, "y":3.5}, + {"label":"K36 (D7,F5)", "x":6.75, "y":3.5}, + {"label":"K37 (D7,F4)", "x":7.75, "y":3.5}, + {"label":"K38 (D7,B0)", "x":8.75, "y":3.5}, + {"label":"K98 (C7,B0)", "x":9.75, "y":3.5}, + {"label":"K97 (C7,F4)", "x":10.75, "y":3.5}, + {"label":"K96 (C7,F5)", "x":11.75, "y":3.5}, + {"label":"K95 (C7,F6)", "x":12.75, "y":3.5, "w":2.25}, + {"label":"K93 (C7,B1)", "x":15.25, "y":3.5}, + {"label":"K92 (C7,B3)", "x":16.25, "y":3.5}, + {"label":"K91 (C7,B2)", "x":17.25, "y":3.5}, + {"label":"K40 (E6,B6)", "x":0, "y":4.5, "w":2.25}, + {"label":"K41 (E6,B2)", "x":2.25, "y":4.5}, + {"label":"K42 (E6,B3)", "x":3.25, "y":4.5}, + {"label":"K43 (E6,B1)", "x":4.25, "y":4.5}, + {"label":"K44 (E6,F7)", "x":5.25, "y":4.5}, + {"label":"K45 (E6,F6)", "x":6.25, "y":4.5}, + {"label":"K46 (E6,F5)", "x":7.25, "y":4.5}, + {"label":"K47 (E6,F4)", "x":8.25, "y":4.5}, + {"label":"K48 (E6,B0)", "x":9.25, "y":4.5}, + {"label":"KA8 (F1,B0)", "x":10.25, "y":4.5}, + {"label":"KA7 (F1,F4)", "x":11.25, "y":4.5}, + {"label":"KA6 (F1,F5)", "x":12.25, "y":4.5, "w":2.75}, + {"label":"KA3 (F1,B1)", "x":15.25, "y":4.5}, + {"label":"KA2 (F1,B3)", "x":16.25, "y":4.5}, + {"label":"KA1 (F1,B2)", "x":17.25, "y":4.5}, + {"label":"KA0 (F1,B6)", "x":18.25, "y":4.5, "h":2}, + {"label":"K50 (B4,B6)", "x":0, "y":5.5, "w":1.5}, + {"label":"K51 (B4,B2)", "x":1.5, "y":5.5}, + {"label":"K52 (B4,B3)", "x":2.5, "y":5.5, "w":1.5}, + {"label":"K56 (B4,F5)", "x":4, "y":5.5, "w":7}, + {"label":"KB7 (F0,F4)", "x":11, "y":5.5, "w":1.5}, + {"label":"KB6 (F0,F5)", "x":12.5, "y":5.5}, + {"label":"KB4 (F0,F7)", "x":13.5, "y":5.5, "w":1.5}, + {"label":"KB3 (F0,B1)", "x":15.25, "y":5.5, "w":2}, + {"label":"KB1 (F0,B2)", "x":17.25, "y":5.5} + ] + } + } + ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/" +} diff --git a/keyboards/handwired/marauder/keymaps/default/keymap.c b/keyboards/handwired/marauder/keymaps/default/keymap.c new file mode 100644 index 0000000000..f4a3cbfc22 --- /dev/null +++ b/keyboards/handwired/marauder/keymaps/default/keymap.c @@ -0,0 +1,29 @@ +/* Copyright 2021 BB-66 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PAUS, KC_PSCR, KC_SLCK, KC_ESC, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_KP_SLSH, KC__KP_ASTR, KC_KP_MINS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_PLUS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_KP_4, KC_KP_5, KC_CP_6, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_KP_1, KC_KP_2, KC_KP_3, KC__PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_KP_0, KC_KP_DOT + ), + +}; diff --git a/keyboards/handwired/marauder/marauder.c b/keyboards/handwired/marauder/marauder.c new file mode 100644 index 0000000000..dcfe75fd3c --- /dev/null +++ b/keyboards/handwired/marauder/marauder.c @@ -0,0 +1,20 @@ +/* Copyright 2021 BB-66 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "marauder.h" + +// generated by KBFirmware JSON to QMK Parser +// https://noroadsleft.github.io/kbf_qmk_converter/ diff --git a/keyboards/handwired/marauder/marauder.h b/keyboards/handwired/marauder/marauder.h new file mode 100644 index 0000000000..ee098dd5cb --- /dev/null +++ b/keyboards/handwired/marauder/marauder.h @@ -0,0 +1,44 @@ +/* Copyright 2021 BB-66 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K68, K67, K66, K65, K63, K62, K61, K60, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K78, K77, K76, K75, K74, K73, K72, K71, K70, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K88, K87, K86, K85, K84, K83, K82, K81, K80, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K98, K97, K96, K95, K93, K92, K91, \ + K40, K41, K42, K43, K44, K45, K46, K47, K48, KA8, KA7, KA6, KA3, KA2, KA1, KA0, \ + K50, K51, K52, K56, KB7, KB6, KB4, KB3, KB1 \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08 }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18 }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28 }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38 }, \ + { K40, K41, K42, K43, K44, K45, K46, K47, K48 }, \ + { K50, K51, K52, KC_NO, KC_NO, KC_NO, K56, KC_NO, KC_NO }, \ + { K60, K61, K62, K63, KC_NO, K65, K66, K67, K68 }, \ + { K70, K71, K72, K73, K74, K75, K76, K77, K78 }, \ + { K80, K81, K82, K83, K84, K85, K86, K87, K88 }, \ + { KC_NO, K91, K92, K93, KC_NO, K95, K96, K97, K98 }, \ + { KA0, KA1, KA2, KA3, KC_NO, KC_NO, KA6, KA7, KA8 }, \ + { KC_NO, KB1, KC_NO, KB3, KB4, KC_NO, KB6, KB7, KC_NO }, \ +} + +// generated by KBFirmware JSON to QMK Parser +// https://noroadsleft.github.io/kbf_qmk_converter/ diff --git a/keyboards/handwired/marauder/rules.mk b/keyboards/handwired/marauder/rules.mk new file mode 100644 index 0000000000..44b2935192 --- /dev/null +++ b/keyboards/handwired/marauder/rules.mk @@ -0,0 +1,26 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +LTO_ENABLE = yes # Link Time Optimization, shrinks the output slightly + +# generated by KBFirmware JSON to QMK Parser +# https://noroadsleft.github.io/kbf_qmk_converter/ From 83be6ba472bd8cba9dc8102c193ed9d2b6546799 Mon Sep 17 00:00:00 2001 From: Ryan Date: Sat, 15 May 2021 12:57:16 +1000 Subject: [PATCH 378/613] Fix Marauder and add readme (#12906) --- keyboards/handwired/marauder/config.h | 140 ++++++------ keyboards/handwired/marauder/info.json | 216 +++++++++--------- .../marauder/keymaps/default/keymap.c | 58 ++--- keyboards/handwired/marauder/marauder.c | 40 ++-- keyboards/handwired/marauder/marauder.h | 88 +++---- keyboards/handwired/marauder/readme.md | 18 ++ keyboards/handwired/marauder/rules.mk | 52 ++--- 7 files changed, 315 insertions(+), 297 deletions(-) create mode 100644 keyboards/handwired/marauder/readme.md diff --git a/keyboards/handwired/marauder/config.h b/keyboards/handwired/marauder/config.h index 0935e1bee1..d960287937 100644 --- a/keyboards/handwired/marauder/config.h +++ b/keyboards/handwired/marauder/config.h @@ -1,70 +1,70 @@ -/* Copyright 2021 BB-66 - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#include "config_common.h" - -/* USB Device descriptor parameter */ -#define VENDOR_ID 0x4D52 -#define PRODUCT_ID 0x0001 -#define DEVICE_VER 0x0001 -#define MANUFACTURER BB-66 -#define PRODUCT Minshara Marauder - -/* key matrix size */ -#define MATRIX_ROWS 12 -#define MATRIX_COLS 9 - -/* - * Keyboard Matrix Assignments - * - * Change this to how you wired your keyboard - * COLS: AVR pins used for columns, left to right - * ROWS: AVR pins used for rows, top to bottom - * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) - * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) - * - */ -#define MATRIX_ROW_PINS { D0, D4, C6, D7, E6, B4, B5, B7, D5, C7, F1, F0 } -#define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6, F5, F4, B0 } - -#define DIODE_DIRECTION COL2ROW - -#define RGB_DI_PIN D1 -#ifdef RGB_DI_PIN - #define RGBLED_NUM 20 - #define RGBLIGHT_HUE_STEP 8 - #define RGBLIGHT_SAT_STEP 8 - #define RGBLIGHT_VAL_STEP 8 - #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ - #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ -/*== all animations enable ==*/ - #define RGBLIGHT_ANIMATIONS -// /*== or choose animations ==*/ -// #define RGBLIGHT_EFFECT_BREATHING -// #define RGBLIGHT_EFFECT_RAINBOW_MOOD -// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL -// #define RGBLIGHT_EFFECT_SNAKE -// #define RGBLIGHT_EFFECT_KNIGHT -// #define RGBLIGHT_EFFECT_CHRISTMAS -// #define RGBLIGHT_EFFECT_STATIC_GRADIENT -// #define RGBLIGHT_EFFECT_RGB_TEST -// #define RGBLIGHT_EFFECT_ALTERNATING -#endif - -// generated by KBFirmware JSON to QMK Parser -// https://noroadsleft.github.io/kbf_qmk_converter/ +/* Copyright 2021 BB-66 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4D52 +#define PRODUCT_ID 0x0001 +#define DEVICE_VER 0x0001 +#define MANUFACTURER BB-66 +#define PRODUCT Minshara Marauder + +/* key matrix size */ +#define MATRIX_ROWS 12 +#define MATRIX_COLS 9 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ +#define MATRIX_ROW_PINS { D0, D4, C6, D7, E6, B4, B5, B7, D5, C7, F1, F0 } +#define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6, F5, F4, B0 } + +#define DIODE_DIRECTION COL2ROW + +#define RGB_DI_PIN D1 +#ifdef RGB_DI_PIN + #define RGBLED_NUM 20 + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 + #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ + #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ + #define RGBLIGHT_ANIMATIONS +// /*== or choose animations ==*/ +// #define RGBLIGHT_EFFECT_BREATHING +// #define RGBLIGHT_EFFECT_RAINBOW_MOOD +// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL +// #define RGBLIGHT_EFFECT_SNAKE +// #define RGBLIGHT_EFFECT_KNIGHT +// #define RGBLIGHT_EFFECT_CHRISTMAS +// #define RGBLIGHT_EFFECT_STATIC_GRADIENT +// #define RGBLIGHT_EFFECT_RGB_TEST +// #define RGBLIGHT_EFFECT_ALTERNATING +#endif + +// generated by KBFirmware JSON to QMK Parser +// https://noroadsleft.github.io/kbf_qmk_converter/ diff --git a/keyboards/handwired/marauder/info.json b/keyboards/handwired/marauder/info.json index cfdad5c8dc..f8a0429b2f 100644 --- a/keyboards/handwired/marauder/info.json +++ b/keyboards/handwired/marauder/info.json @@ -1,108 +1,108 @@ -{ - "keyboard_name": "Minshara Marauder", - "url": "https://imgur.com/a/TvsXpq5", - "maintainer": "BB-66", - "width": 19.25, - "height": 6.5, - "layouts": { - "LAYOUT": { - "layout": [ - {"label":"K00 (D0,B6)", "x":0, "y":0}, - {"label":"K01 (D0,B2)", "x":2, "y":0}, - {"label":"K02 (D0,B3)", "x":3, "y":0}, - {"label":"K03 (D0,B1)", "x":4, "y":0}, - {"label":"K04 (D0,F7)", "x":5, "y":0}, - {"label":"K05 (D0,F6)", "x":6.5, "y":0}, - {"label":"K06 (D0,F5)", "x":7.5, "y":0}, - {"label":"K07 (D0,F4)", "x":8.5, "y":0}, - {"label":"K08 (D0,B0)", "x":9.5, "y":0}, - {"label":"K68 (B5,B0)", "x":11, "y":0}, - {"label":"K67 (B5,F4)", "x":12, "y":0}, - {"label":"K66 (B5,F5)", "x":13, "y":0}, - {"label":"K65 (B5,F6)", "x":14, "y":0}, - {"label":"K63 (B5,B1)", "x":15.25, "y":0}, - {"label":"K62 (B5,B3)", "x":16.25, "y":0}, - {"label":"K61 (B5,B2)", "x":17.25, "y":0}, - {"label":"K60 (B5,B6)", "x":18.25, "y":0}, - {"label":"K10 (D4,B6)", "x":0, "y":1.5}, - {"label":"K11 (D4,B2)", "x":1, "y":1.5}, - {"label":"K12 (D4,B3)", "x":2, "y":1.5}, - {"label":"K13 (D4,B1)", "x":3, "y":1.5}, - {"label":"K14 (D4,F7)", "x":4, "y":1.5}, - {"label":"K15 (D4,F6)", "x":5, "y":1.5}, - {"label":"K16 (D4,F5)", "x":6, "y":1.5}, - {"label":"K17 (D4,F4)", "x":7, "y":1.5}, - {"label":"K18 (D4,B0)", "x":8, "y":1.5}, - {"label":"K78 (B7,B0)", "x":9, "y":1.5}, - {"label":"K77 (B7,F4)", "x":10, "y":1.5}, - {"label":"K76 (B7,F5)", "x":11, "y":1.5}, - {"label":"K75 (B7,F6)", "x":12, "y":1.5}, - {"label":"K74 (B7,F7)", "x":13, "y":1.5, "w":2}, - {"label":"K73 (B7,B1)", "x":15.25, "y":1.5}, - {"label":"K72 (B7,B3)", "x":16.25, "y":1.5}, - {"label":"K71 (B7,B2)", "x":17.25, "y":1.5}, - {"label":"K70 (B7,B6)", "x":18.25, "y":1.5}, - {"label":"K20 (C6,B6)", "x":0, "y":2.5, "w":1.5}, - {"label":"K21 (C6,B2)", "x":1.5, "y":2.5}, - {"label":"K22 (C6,B3)", "x":2.5, "y":2.5}, - {"label":"K23 (C6,B1)", "x":3.5, "y":2.5}, - {"label":"K24 (C6,F7)", "x":4.5, "y":2.5}, - {"label":"K25 (C6,F6)", "x":5.5, "y":2.5}, - {"label":"K26 (C6,F5)", "x":6.5, "y":2.5}, - {"label":"K27 (C6,F4)", "x":7.5, "y":2.5}, - {"label":"K28 (C6,B0)", "x":8.5, "y":2.5}, - {"label":"K88 (D5,B0)", "x":9.5, "y":2.5}, - {"label":"K87 (D5,F4)", "x":10.5, "y":2.5}, - {"label":"K86 (D5,F5)", "x":11.5, "y":2.5}, - {"label":"K85 (D5,F6)", "x":12.5, "y":2.5}, - {"label":"K84 (D5,F7)", "x":13.5, "y":2.5, "w":1.5}, - {"label":"K83 (D5,B1)", "x":15.25, "y":2.5}, - {"label":"K82 (D5,B3)", "x":16.25, "y":2.5}, - {"label":"K81 (D5,B2)", "x":17.25, "y":2.5}, - {"label":"K80 (D5,B6)", "x":18.25, "y":2.5, "h":2}, - {"label":"K30 (D7,B6)", "x":0, "y":3.5, "w":1.75}, - {"label":"K31 (D7,B2)", "x":1.75, "y":3.5}, - {"label":"K32 (D7,B3)", "x":2.75, "y":3.5}, - {"label":"K33 (D7,B1)", "x":3.75, "y":3.5}, - {"label":"K34 (D7,F7)", "x":4.75, "y":3.5}, - {"label":"K35 (D7,F6)", "x":5.75, "y":3.5}, - {"label":"K36 (D7,F5)", "x":6.75, "y":3.5}, - {"label":"K37 (D7,F4)", "x":7.75, "y":3.5}, - {"label":"K38 (D7,B0)", "x":8.75, "y":3.5}, - {"label":"K98 (C7,B0)", "x":9.75, "y":3.5}, - {"label":"K97 (C7,F4)", "x":10.75, "y":3.5}, - {"label":"K96 (C7,F5)", "x":11.75, "y":3.5}, - {"label":"K95 (C7,F6)", "x":12.75, "y":3.5, "w":2.25}, - {"label":"K93 (C7,B1)", "x":15.25, "y":3.5}, - {"label":"K92 (C7,B3)", "x":16.25, "y":3.5}, - {"label":"K91 (C7,B2)", "x":17.25, "y":3.5}, - {"label":"K40 (E6,B6)", "x":0, "y":4.5, "w":2.25}, - {"label":"K41 (E6,B2)", "x":2.25, "y":4.5}, - {"label":"K42 (E6,B3)", "x":3.25, "y":4.5}, - {"label":"K43 (E6,B1)", "x":4.25, "y":4.5}, - {"label":"K44 (E6,F7)", "x":5.25, "y":4.5}, - {"label":"K45 (E6,F6)", "x":6.25, "y":4.5}, - {"label":"K46 (E6,F5)", "x":7.25, "y":4.5}, - {"label":"K47 (E6,F4)", "x":8.25, "y":4.5}, - {"label":"K48 (E6,B0)", "x":9.25, "y":4.5}, - {"label":"KA8 (F1,B0)", "x":10.25, "y":4.5}, - {"label":"KA7 (F1,F4)", "x":11.25, "y":4.5}, - {"label":"KA6 (F1,F5)", "x":12.25, "y":4.5, "w":2.75}, - {"label":"KA3 (F1,B1)", "x":15.25, "y":4.5}, - {"label":"KA2 (F1,B3)", "x":16.25, "y":4.5}, - {"label":"KA1 (F1,B2)", "x":17.25, "y":4.5}, - {"label":"KA0 (F1,B6)", "x":18.25, "y":4.5, "h":2}, - {"label":"K50 (B4,B6)", "x":0, "y":5.5, "w":1.5}, - {"label":"K51 (B4,B2)", "x":1.5, "y":5.5}, - {"label":"K52 (B4,B3)", "x":2.5, "y":5.5, "w":1.5}, - {"label":"K56 (B4,F5)", "x":4, "y":5.5, "w":7}, - {"label":"KB7 (F0,F4)", "x":11, "y":5.5, "w":1.5}, - {"label":"KB6 (F0,F5)", "x":12.5, "y":5.5}, - {"label":"KB4 (F0,F7)", "x":13.5, "y":5.5, "w":1.5}, - {"label":"KB3 (F0,B1)", "x":15.25, "y":5.5, "w":2}, - {"label":"KB1 (F0,B2)", "x":17.25, "y":5.5} - ] - } - } - ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/" -} +{ + "keyboard_name": "Minshara Marauder", + "url": "https://imgur.com/a/TvsXpq5", + "maintainer": "BB-66", + "width": 19.25, + "height": 6.5, + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"K00 (D0,B6)", "x":0, "y":0}, + {"label":"K01 (D0,B2)", "x":2, "y":0}, + {"label":"K02 (D0,B3)", "x":3, "y":0}, + {"label":"K03 (D0,B1)", "x":4, "y":0}, + {"label":"K04 (D0,F7)", "x":5, "y":0}, + {"label":"K05 (D0,F6)", "x":6.5, "y":0}, + {"label":"K06 (D0,F5)", "x":7.5, "y":0}, + {"label":"K07 (D0,F4)", "x":8.5, "y":0}, + {"label":"K08 (D0,B0)", "x":9.5, "y":0}, + {"label":"K68 (B5,B0)", "x":11, "y":0}, + {"label":"K67 (B5,F4)", "x":12, "y":0}, + {"label":"K66 (B5,F5)", "x":13, "y":0}, + {"label":"K65 (B5,F6)", "x":14, "y":0}, + {"label":"K63 (B5,B1)", "x":15.25, "y":0}, + {"label":"K62 (B5,B3)", "x":16.25, "y":0}, + {"label":"K61 (B5,B2)", "x":17.25, "y":0}, + {"label":"K60 (B5,B6)", "x":18.25, "y":0}, + {"label":"K10 (D4,B6)", "x":0, "y":1.5}, + {"label":"K11 (D4,B2)", "x":1, "y":1.5}, + {"label":"K12 (D4,B3)", "x":2, "y":1.5}, + {"label":"K13 (D4,B1)", "x":3, "y":1.5}, + {"label":"K14 (D4,F7)", "x":4, "y":1.5}, + {"label":"K15 (D4,F6)", "x":5, "y":1.5}, + {"label":"K16 (D4,F5)", "x":6, "y":1.5}, + {"label":"K17 (D4,F4)", "x":7, "y":1.5}, + {"label":"K18 (D4,B0)", "x":8, "y":1.5}, + {"label":"K78 (B7,B0)", "x":9, "y":1.5}, + {"label":"K77 (B7,F4)", "x":10, "y":1.5}, + {"label":"K76 (B7,F5)", "x":11, "y":1.5}, + {"label":"K75 (B7,F6)", "x":12, "y":1.5}, + {"label":"K74 (B7,F7)", "x":13, "y":1.5, "w":2}, + {"label":"K73 (B7,B1)", "x":15.25, "y":1.5}, + {"label":"K72 (B7,B3)", "x":16.25, "y":1.5}, + {"label":"K71 (B7,B2)", "x":17.25, "y":1.5}, + {"label":"K70 (B7,B6)", "x":18.25, "y":1.5}, + {"label":"K20 (C6,B6)", "x":0, "y":2.5, "w":1.5}, + {"label":"K21 (C6,B2)", "x":1.5, "y":2.5}, + {"label":"K22 (C6,B3)", "x":2.5, "y":2.5}, + {"label":"K23 (C6,B1)", "x":3.5, "y":2.5}, + {"label":"K24 (C6,F7)", "x":4.5, "y":2.5}, + {"label":"K25 (C6,F6)", "x":5.5, "y":2.5}, + {"label":"K26 (C6,F5)", "x":6.5, "y":2.5}, + {"label":"K27 (C6,F4)", "x":7.5, "y":2.5}, + {"label":"K28 (C6,B0)", "x":8.5, "y":2.5}, + {"label":"K88 (D5,B0)", "x":9.5, "y":2.5}, + {"label":"K87 (D5,F4)", "x":10.5, "y":2.5}, + {"label":"K86 (D5,F5)", "x":11.5, "y":2.5}, + {"label":"K85 (D5,F6)", "x":12.5, "y":2.5}, + {"label":"K84 (D5,F7)", "x":13.5, "y":2.5, "w":1.5}, + {"label":"K83 (D5,B1)", "x":15.25, "y":2.5}, + {"label":"K82 (D5,B3)", "x":16.25, "y":2.5}, + {"label":"K81 (D5,B2)", "x":17.25, "y":2.5}, + {"label":"K80 (D5,B6)", "x":18.25, "y":2.5, "h":2}, + {"label":"K30 (D7,B6)", "x":0, "y":3.5, "w":1.75}, + {"label":"K31 (D7,B2)", "x":1.75, "y":3.5}, + {"label":"K32 (D7,B3)", "x":2.75, "y":3.5}, + {"label":"K33 (D7,B1)", "x":3.75, "y":3.5}, + {"label":"K34 (D7,F7)", "x":4.75, "y":3.5}, + {"label":"K35 (D7,F6)", "x":5.75, "y":3.5}, + {"label":"K36 (D7,F5)", "x":6.75, "y":3.5}, + {"label":"K37 (D7,F4)", "x":7.75, "y":3.5}, + {"label":"K38 (D7,B0)", "x":8.75, "y":3.5}, + {"label":"K98 (C7,B0)", "x":9.75, "y":3.5}, + {"label":"K97 (C7,F4)", "x":10.75, "y":3.5}, + {"label":"K96 (C7,F5)", "x":11.75, "y":3.5}, + {"label":"K95 (C7,F6)", "x":12.75, "y":3.5, "w":2.25}, + {"label":"K93 (C7,B1)", "x":15.25, "y":3.5}, + {"label":"K92 (C7,B3)", "x":16.25, "y":3.5}, + {"label":"K91 (C7,B2)", "x":17.25, "y":3.5}, + {"label":"K40 (E6,B6)", "x":0, "y":4.5, "w":2.25}, + {"label":"K41 (E6,B2)", "x":2.25, "y":4.5}, + {"label":"K42 (E6,B3)", "x":3.25, "y":4.5}, + {"label":"K43 (E6,B1)", "x":4.25, "y":4.5}, + {"label":"K44 (E6,F7)", "x":5.25, "y":4.5}, + {"label":"K45 (E6,F6)", "x":6.25, "y":4.5}, + {"label":"K46 (E6,F5)", "x":7.25, "y":4.5}, + {"label":"K47 (E6,F4)", "x":8.25, "y":4.5}, + {"label":"K48 (E6,B0)", "x":9.25, "y":4.5}, + {"label":"KA8 (F1,B0)", "x":10.25, "y":4.5}, + {"label":"KA7 (F1,F4)", "x":11.25, "y":4.5}, + {"label":"KA6 (F1,F5)", "x":12.25, "y":4.5, "w":2.75}, + {"label":"KA3 (F1,B1)", "x":15.25, "y":4.5}, + {"label":"KA2 (F1,B3)", "x":16.25, "y":4.5}, + {"label":"KA1 (F1,B2)", "x":17.25, "y":4.5}, + {"label":"KA0 (F1,B6)", "x":18.25, "y":4.5, "h":2}, + {"label":"K50 (B4,B6)", "x":0, "y":5.5, "w":1.5}, + {"label":"K51 (B4,B2)", "x":1.5, "y":5.5}, + {"label":"K52 (B4,B3)", "x":2.5, "y":5.5, "w":1.5}, + {"label":"K56 (B4,F5)", "x":4, "y":5.5, "w":7}, + {"label":"KB7 (F0,F4)", "x":11, "y":5.5, "w":1.5}, + {"label":"KB6 (F0,F5)", "x":12.5, "y":5.5}, + {"label":"KB4 (F0,F7)", "x":13.5, "y":5.5, "w":1.5}, + {"label":"KB3 (F0,B1)", "x":15.25, "y":5.5, "w":2}, + {"label":"KB1 (F0,B2)", "x":17.25, "y":5.5} + ] + } + } + ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/" +} diff --git a/keyboards/handwired/marauder/keymaps/default/keymap.c b/keyboards/handwired/marauder/keymaps/default/keymap.c index f4a3cbfc22..932138e27c 100644 --- a/keyboards/handwired/marauder/keymaps/default/keymap.c +++ b/keyboards/handwired/marauder/keymaps/default/keymap.c @@ -1,29 +1,29 @@ -/* Copyright 2021 BB-66 - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include QMK_KEYBOARD_H - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PAUS, KC_PSCR, KC_SLCK, KC_ESC, - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_KP_SLSH, KC__KP_ASTR, KC_KP_MINS, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_PLUS, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_KP_4, KC_KP_5, KC_CP_6, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_KP_1, KC_KP_2, KC_KP_3, KC__PENT, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_KP_0, KC_KP_DOT - ), - -}; +/* Copyright 2021 BB-66 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PAUS, KC_PSCR, KC_SLCK, KC_ESC, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_P0, KC_PDOT + ), + +}; diff --git a/keyboards/handwired/marauder/marauder.c b/keyboards/handwired/marauder/marauder.c index dcfe75fd3c..2b2039f105 100644 --- a/keyboards/handwired/marauder/marauder.c +++ b/keyboards/handwired/marauder/marauder.c @@ -1,20 +1,20 @@ -/* Copyright 2021 BB-66 - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include "marauder.h" - -// generated by KBFirmware JSON to QMK Parser -// https://noroadsleft.github.io/kbf_qmk_converter/ +/* Copyright 2021 BB-66 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "marauder.h" + +// generated by KBFirmware JSON to QMK Parser +// https://noroadsleft.github.io/kbf_qmk_converter/ diff --git a/keyboards/handwired/marauder/marauder.h b/keyboards/handwired/marauder/marauder.h index ee098dd5cb..fc97b1d642 100644 --- a/keyboards/handwired/marauder/marauder.h +++ b/keyboards/handwired/marauder/marauder.h @@ -1,44 +1,44 @@ -/* Copyright 2021 BB-66 - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#include "quantum.h" - -#define LAYOUT( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K68, K67, K66, K65, K63, K62, K61, K60, \ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K78, K77, K76, K75, K74, K73, K72, K71, K70, \ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K88, K87, K86, K85, K84, K83, K82, K81, K80, \ - K30, K31, K32, K33, K34, K35, K36, K37, K38, K98, K97, K96, K95, K93, K92, K91, \ - K40, K41, K42, K43, K44, K45, K46, K47, K48, KA8, KA7, KA6, KA3, KA2, KA1, KA0, \ - K50, K51, K52, K56, KB7, KB6, KB4, KB3, KB1 \ -) { \ - { K00, K01, K02, K03, K04, K05, K06, K07, K08 }, \ - { K10, K11, K12, K13, K14, K15, K16, K17, K18 }, \ - { K20, K21, K22, K23, K24, K25, K26, K27, K28 }, \ - { K30, K31, K32, K33, K34, K35, K36, K37, K38 }, \ - { K40, K41, K42, K43, K44, K45, K46, K47, K48 }, \ - { K50, K51, K52, KC_NO, KC_NO, KC_NO, K56, KC_NO, KC_NO }, \ - { K60, K61, K62, K63, KC_NO, K65, K66, K67, K68 }, \ - { K70, K71, K72, K73, K74, K75, K76, K77, K78 }, \ - { K80, K81, K82, K83, K84, K85, K86, K87, K88 }, \ - { KC_NO, K91, K92, K93, KC_NO, K95, K96, K97, K98 }, \ - { KA0, KA1, KA2, KA3, KC_NO, KC_NO, KA6, KA7, KA8 }, \ - { KC_NO, KB1, KC_NO, KB3, KB4, KC_NO, KB6, KB7, KC_NO }, \ -} - -// generated by KBFirmware JSON to QMK Parser -// https://noroadsleft.github.io/kbf_qmk_converter/ +/* Copyright 2021 BB-66 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K68, K67, K66, K65, K63, K62, K61, K60, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K78, K77, K76, K75, K74, K73, K72, K71, K70, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K88, K87, K86, K85, K84, K83, K82, K81, K80, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K98, K97, K96, K95, K93, K92, K91, \ + K40, K41, K42, K43, K44, K45, K46, K47, K48, KA8, KA7, KA6, KA3, KA2, KA1, KA0, \ + K50, K51, K52, K56, KB7, KB6, KB4, KB3, KB1 \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08 }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18 }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28 }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38 }, \ + { K40, K41, K42, K43, K44, K45, K46, K47, K48 }, \ + { K50, K51, K52, KC_NO, KC_NO, KC_NO, K56, KC_NO, KC_NO }, \ + { K60, K61, K62, K63, KC_NO, K65, K66, K67, K68 }, \ + { K70, K71, K72, K73, K74, K75, K76, K77, K78 }, \ + { K80, K81, K82, K83, K84, K85, K86, K87, K88 }, \ + { KC_NO, K91, K92, K93, KC_NO, K95, K96, K97, K98 }, \ + { KA0, KA1, KA2, KA3, KC_NO, KC_NO, KA6, KA7, KA8 }, \ + { KC_NO, KB1, KC_NO, KB3, KB4, KC_NO, KB6, KB7, KC_NO }, \ +} + +// generated by KBFirmware JSON to QMK Parser +// https://noroadsleft.github.io/kbf_qmk_converter/ diff --git a/keyboards/handwired/marauder/readme.md b/keyboards/handwired/marauder/readme.md new file mode 100644 index 0000000000..1a0150159f --- /dev/null +++ b/keyboards/handwired/marauder/readme.md @@ -0,0 +1,18 @@ +# Marauder + +90% hand-wired mechanical keyboard in an old Razer case; built around an Elite-C v3.1 controller. + +[Build Log](https://imgur.com/a/TvsXpq5) + +* Keyboard Maintainer: [%YOUR_NAME%](https://github.com/BB-66) +* Hardware Supported: Elite-C, Razer Marauder + +Make example for this keyboard (after setting up your build environment): + + make handwired/marauder:default + +Flashing example for this keyboard: + + make handwired/marauder:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/handwired/marauder/rules.mk b/keyboards/handwired/marauder/rules.mk index 44b2935192..1619f95374 100644 --- a/keyboards/handwired/marauder/rules.mk +++ b/keyboards/handwired/marauder/rules.mk @@ -1,26 +1,26 @@ -# MCU name -MCU = atmega32u4 - -# Bootloader selection -BOOTLOADER = atmel-dfu - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration -MOUSEKEY_ENABLE = no # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = yes # Console for debug -COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -NKRO_ENABLE = yes # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth -AUDIO_ENABLE = no # Audio output -LTO_ENABLE = yes # Link Time Optimization, shrinks the output slightly - -# generated by KBFirmware JSON to QMK Parser -# https://noroadsleft.github.io/kbf_qmk_converter/ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +LTO_ENABLE = yes # Link Time Optimization, shrinks the output slightly + +# generated by KBFirmware JSON to QMK Parser +# https://noroadsleft.github.io/kbf_qmk_converter/ From b057194568270ce379d1900b2567052d565ce1dd Mon Sep 17 00:00:00 2001 From: rookiebwoy <81021475+rookiebwoy@users.noreply.github.com> Date: Sat, 15 May 2021 05:09:10 +0200 Subject: [PATCH 379/613] [Keyboard] Add Neopad macropad (#12614) --- keyboards/neopad/config.h | 34 ++++ keyboards/neopad/readme.md | 25 +++ keyboards/neopad/rev1/config.h | 41 +++++ keyboards/neopad/rev1/info.json | 16 ++ .../neopad/rev1/keymaps/default/keymap.c | 153 ++++++++++++++++++ keyboards/neopad/rev1/readme.md | 5 + keyboards/neopad/rev1/rev1.c | 61 +++++++ keyboards/neopad/rev1/rev1.h | 26 +++ keyboards/neopad/rev1/rules.mk | 25 +++ keyboards/neopad/rules.mk | 1 + 10 files changed, 387 insertions(+) create mode 100755 keyboards/neopad/config.h create mode 100644 keyboards/neopad/readme.md create mode 100755 keyboards/neopad/rev1/config.h create mode 100755 keyboards/neopad/rev1/info.json create mode 100755 keyboards/neopad/rev1/keymaps/default/keymap.c create mode 100644 keyboards/neopad/rev1/readme.md create mode 100755 keyboards/neopad/rev1/rev1.c create mode 100755 keyboards/neopad/rev1/rev1.h create mode 100755 keyboards/neopad/rev1/rules.mk create mode 100755 keyboards/neopad/rules.mk diff --git a/keyboards/neopad/config.h b/keyboards/neopad/config.h new file mode 100755 index 0000000000..79798b1d66 --- /dev/null +++ b/keyboards/neopad/config.h @@ -0,0 +1,34 @@ +/* +Copyright 2021 rookiebwoy + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x0913 +#define MANUFACTURER rookiebwoy +#define PRODUCT neopad + +/* Column/Row IO definitions */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* Reduce tapdance required taps from 5 to 2 */ +#define TAPPING_TOGGLE 2 diff --git a/keyboards/neopad/readme.md b/keyboards/neopad/readme.md new file mode 100644 index 0000000000..9e83e9bb6d --- /dev/null +++ b/keyboards/neopad/readme.md @@ -0,0 +1,25 @@ +# Neopad + +Neopad is a little macropad with four switches and two rotary encoders, made by through hole components only. +_Actually the number of switches is six, because even the encoder are allowed to click._ + +![Neopad](https://i.imgur.com/TgOkj2Fh.jpg "Neopad first proto") + +The Neopad in the photo above is the first prototype. See the project repository for revision 1 update and KiCad files. + +* Keyboard maintainer: [rookiebwoy](https://github.com/rookiebwoy) +* Hardware supported: ProMicro, _Elite-C (not tested)_ +* Project repository: [Neopad on github](https://github.com/rookiebwoy/neopad) + +Make example for this keyboard (after setting up your build environment): + + make neopad/rev1:default + +Flashing example for this keyboard: + + make neopad/rev1:default:flash + +When asked by the terminal, press the dedicated `RESET` button (the one above the 2 LEDs) to enter the bootloader and let the OS detects the device. + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + diff --git a/keyboards/neopad/rev1/config.h b/keyboards/neopad/rev1/config.h new file mode 100755 index 0000000000..92d3392715 --- /dev/null +++ b/keyboards/neopad/rev1/config.h @@ -0,0 +1,41 @@ +/* +Copyright 2021 rookiebwoy + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define DEVICE_VER 0x0010 + +/* Column/Row IO definitions */ +#define MATRIX_ROWS 2 +#define MATRIX_COLS 3 +#define MATRIX_ROW_PINS { F4, F5 } +#define MATRIX_COL_PINS { B3, B2, B6 } +#define UNUSED_PINS + +/* Dual rotary encoders */ +#define ENCODERS_PAD_A { D1, D4 } +#define ENCODERS_PAD_B { D0, C6 } + +/* Onboard LEDs */ +#define LED_00 F6 +#define LED_01 F7 + +/* Bootmagic - hold down rotary encoder pushbutton while plugging in to enter bootloader */ +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/neopad/rev1/info.json b/keyboards/neopad/rev1/info.json new file mode 100755 index 0000000000..44d5babe44 --- /dev/null +++ b/keyboards/neopad/rev1/info.json @@ -0,0 +1,16 @@ +{ + "keyboard_name": "neopad", + "keyboard_folder": "neopad/rev1", + "url": "https://github.com/rookiebwoy/neopad)", + "maintainer": "rookiebwoy", + "width": 3, + "height": 2, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, + {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1} + ] + } + } +} diff --git a/keyboards/neopad/rev1/keymaps/default/keymap.c b/keyboards/neopad/rev1/keymaps/default/keymap.c new file mode 100755 index 0000000000..061e26d43e --- /dev/null +++ b/keyboards/neopad/rev1/keymaps/default/keymap.c @@ -0,0 +1,153 @@ +/* Copyright 2021 rookiebwoy + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + LAYER 0 - MUSIC + /-----------------------------` + | TO(1) | stop | mute | L ENC: prev/next song + |---------|---------|---------| + | prev | play | next | R ENC: vol up/down + \-----------------------------' + */ + [0] = LAYOUT( + TO(1), KC_MSTP, KC_MUTE, + KC_MPRV, KC_MPLY, KC_MNXT + ), + + /* + LAYER 1 - MOVEMENT IN WINDOWS + /---------------------------------------` + | TO(2) | maximize | show desktop | L ENC: change desktop + |-------------|----------|--------------| + | move window | minimize | move window | R ENC: change browser tab + change explorer window + \---------------------------------------' + */ + [1] = LAYOUT( + TO(2), LGUI(KC_UP), LGUI(KC_D), + LGUI(KC_LEFT), LGUI(KC_DOWN), LGUI(KC_RIGHT) + ), + + /* + LAYER 2 - SHORTCUT + /------------------------------` + | TO(3) | esc | task man | L ENC: redo/undo + |---------|---------|----------| + | cut | copy | paste | R ENC: mouse wheel up/down + \------------------------------' + */ + [2] = LAYOUT( + TO(3), KC_ESC, LCTL(LSFT(KC_ESC)), + LCTL(KC_X), LCTL(KC_C), LCTL(KC_V) + ), + + /* + LAYER 3 - AUDACITY + /-----------------------------` + | TO(0) | REC | canc | L ENC: pan right/left + |---------|---------|---------| + | ctrl | play | pause | R ENC: mouse wheel up/down + \-----------------------------' + */ + [3] = LAYOUT( + TO(0), LSFT(KC_R), KC_DEL, + KC_LCTL, KC_SPC, KC_P + ), + +}; + + +void encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { /* LEFT ENCODER */ + switch (get_highest_layer(layer_state)) { + case 0: + // layer 0 - next song (CW) and previous (CCW) + if (clockwise) { + tap_code(KC_MNXT); + } else { + tap_code(KC_MPRV); + } + break; + + case 1: + // layer 1 - change desktop right (CW) and left (CCW) + if (clockwise) { + tap_code16(LCTL(LGUI(KC_RIGHT))); + } else { + tap_code16(LCTL(LGUI(KC_LEFT))); + } + break; + + case 2: + // layer 2 - redo (CW) and undo (CCW) + if (clockwise) { + tap_code16(LCTL(KC_Y)); + } else { + tap_code16(LCTL(KC_Z)); + } + break; + + case 3: + // layer 3 - pan right (CW) and left (CCW) + if (clockwise) { + tap_code(KC_WH_R); + } else { + tap_code(KC_WH_L); + } + break; + } + + } else if (index == 1) { /* RIGHT ENCODER */ + switch (get_highest_layer(layer_state)) { + case 0: + // layer 0 - volume up (CW) and down (CCW) + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + break; + + case 1: + // layer 1 - change browser tab (CW) and change explorer window (CCW) + if (clockwise) { + tap_code16(LCTL(KC_TAB)); + } else { + tap_code16(LALT(LSFT(KC_TAB))); + } + break; + + case 2: + // layer 2 - wheel up (CW) and down (CCW) + if (clockwise) { + tap_code(KC_WH_U); + } else { + tap_code(KC_WH_D); + } + break; + + case 3: + // layer 3 - wheel up (CW) and down (CCW) + if (clockwise) { + tap_code(KC_WH_U); + } else { + tap_code(KC_WH_D); + } + break; + } + } +} diff --git a/keyboards/neopad/rev1/readme.md b/keyboards/neopad/rev1/readme.md new file mode 100644 index 0000000000..1265922722 --- /dev/null +++ b/keyboards/neopad/rev1/readme.md @@ -0,0 +1,5 @@ +# Neopad rev1 + +Final revision of the Neopad macropad. For in depth look please go to [project repository](https://github.com/rookiebwoy/neopad). + + diff --git a/keyboards/neopad/rev1/rev1.c b/keyboards/neopad/rev1/rev1.c new file mode 100755 index 0000000000..20e2c4d055 --- /dev/null +++ b/keyboards/neopad/rev1/rev1.c @@ -0,0 +1,61 @@ +/* Copyright 2021 rookiebwoy + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "rev1.h" + +void keyboard_pre_init_kb(void) { + // Set LED IO as outputs + setPinOutput(LED_00); + setPinOutput(LED_01); + keyboard_pre_init_user(); +} + +void shutdown_user() { + // Shutdown LEDs + writePinLow(LED_00); + writePinLow(LED_01); +} + +layer_state_t layer_state_set_kb(layer_state_t state) { + state = layer_state_set_user(state); + + // Layer LEDs act as binary indication of current layer + uint8_t layer = get_highest_layer(state); + writePin(LED_00, layer & 0b1); + writePin(LED_01, (layer >> 1) & 0b1); + return state; +} + +// Optional override functions below. +// You can leave any or all of these undefined. +// These are only required if you want to perform custom actions. + +void matrix_init_kb(void) { + // put your keyboard start-up code here + // runs once when the firmware starts up + uint8_t led_delay_ms = 80; + for (int i = 0; i < 2; i++) { + writePinHigh(LED_00); + writePinHigh(LED_01); + wait_ms(led_delay_ms); + writePinLow(LED_00); + writePinLow(LED_01); + if (i < 1) { + wait_ms(led_delay_ms); + } + } + + matrix_init_user(); +} diff --git a/keyboards/neopad/rev1/rev1.h b/keyboards/neopad/rev1/rev1.h new file mode 100755 index 0000000000..87b9405bb1 --- /dev/null +++ b/keyboards/neopad/rev1/rev1.h @@ -0,0 +1,26 @@ +/* Copyright 2021 rookiebwoy + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once +#include "quantum.h" + +#define LAYOUT( \ + k00, k01, k02, \ + k10, k11, k12 \ +) \ +{ \ + { k00, k01, k02 }, \ + { k10, k11, k12 } \ +} diff --git a/keyboards/neopad/rev1/rules.mk b/keyboards/neopad/rev1/rules.mk new file mode 100755 index 0000000000..309e3d48c0 --- /dev/null +++ b/keyboards/neopad/rev1/rules.mk @@ -0,0 +1,25 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output + +ENCODER_ENABLE = yes +KEY_LOCK_ENABLE = yes diff --git a/keyboards/neopad/rules.mk b/keyboards/neopad/rules.mk new file mode 100755 index 0000000000..8fc1afe955 --- /dev/null +++ b/keyboards/neopad/rules.mk @@ -0,0 +1 @@ +DEFAULT_FOLDER = neopad/rev1 From f9a395e2651ea9f43204e7f7ac8f805c9f15141d Mon Sep 17 00:00:00 2001 From: William Lam <13148377+blackphreak@users.noreply.github.com> Date: Sun, 16 May 2021 02:52:13 +0800 Subject: [PATCH 380/613] [Keyboard] Add Frusta Fundamental (#12583) Co-authored-by: Drashna Jaelre Co-authored-by: Ryan --- keyboards/picolab/frusta_fundamental/config.h | 57 +++++++++++++ .../frusta_fundamental/frusta_fundamental.c | 17 ++++ .../frusta_fundamental/frusta_fundamental.h | 44 ++++++++++ .../picolab/frusta_fundamental/info.json | 84 +++++++++++++++++++ .../keymaps/default/keymap.c | 41 +++++++++ .../keymaps/default/readme.md | 3 + .../frusta_fundamental/keymaps/via/keymap.c | 51 +++++++++++ .../frusta_fundamental/keymaps/via/rules.mk | 2 + .../picolab/frusta_fundamental/readme.md | 15 ++++ keyboards/picolab/frusta_fundamental/rules.mk | 22 +++++ 10 files changed, 336 insertions(+) create mode 100644 keyboards/picolab/frusta_fundamental/config.h create mode 100644 keyboards/picolab/frusta_fundamental/frusta_fundamental.c create mode 100644 keyboards/picolab/frusta_fundamental/frusta_fundamental.h create mode 100644 keyboards/picolab/frusta_fundamental/info.json create mode 100644 keyboards/picolab/frusta_fundamental/keymaps/default/keymap.c create mode 100644 keyboards/picolab/frusta_fundamental/keymaps/default/readme.md create mode 100644 keyboards/picolab/frusta_fundamental/keymaps/via/keymap.c create mode 100644 keyboards/picolab/frusta_fundamental/keymaps/via/rules.mk create mode 100644 keyboards/picolab/frusta_fundamental/readme.md create mode 100644 keyboards/picolab/frusta_fundamental/rules.mk diff --git a/keyboards/picolab/frusta_fundamental/config.h b/keyboards/picolab/frusta_fundamental/config.h new file mode 100644 index 0000000000..33389e3e82 --- /dev/null +++ b/keyboards/picolab/frusta_fundamental/config.h @@ -0,0 +1,57 @@ +/* Copyright 2021 PicoLab + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x614D +#define PRODUCT_ID 0x0001 +#define DEVICE_VER 0x0001 +#define MANUFACTURER PicoLab +#define PRODUCT Frusta Fundamental + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { D4, D6, D7, B4, B5 } +#define MATRIX_COL_PINS { F7, F6, F5, F4, F1, F0, B1, B2, B3, B7, D5, D3, D2, D1, D0 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCING 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE + +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + + +#define RGB_DI_PIN B0 +#ifdef RGB_DI_PIN +# define RGBLIGHT_ANIMATIONS +# define RGBLED_NUM 67 +# define RGBLIGHT_HUE_STEP 8 +# define RGBLIGHT_SAT_STEP 8 +# define RGBLIGHT_VAL_STEP 8 +#endif diff --git a/keyboards/picolab/frusta_fundamental/frusta_fundamental.c b/keyboards/picolab/frusta_fundamental/frusta_fundamental.c new file mode 100644 index 0000000000..17d5df8090 --- /dev/null +++ b/keyboards/picolab/frusta_fundamental/frusta_fundamental.c @@ -0,0 +1,17 @@ +/* Copyright 2021 PicoLab + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "frusta_fundamental.h" diff --git a/keyboards/picolab/frusta_fundamental/frusta_fundamental.h b/keyboards/picolab/frusta_fundamental/frusta_fundamental.h new file mode 100644 index 0000000000..db0dc69421 --- /dev/null +++ b/keyboards/picolab/frusta_fundamental/frusta_fundamental.h @@ -0,0 +1,44 @@ +/* Copyright 2021 PicoLab + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ + + //Default layout. + +#define LAYOUT( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K314, \ + K400, K401, K402, K405, K409, K410, K411, K412, K414 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, KC_NO, K214 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, KC_NO, K314 }, \ + { K400, K401, K402, KC_NO, KC_NO, K405, KC_NO, KC_NO, KC_NO, K409, K410, K411, K412, KC_NO, K414 } \ +} diff --git a/keyboards/picolab/frusta_fundamental/info.json b/keyboards/picolab/frusta_fundamental/info.json new file mode 100644 index 0000000000..c2de5b8d1a --- /dev/null +++ b/keyboards/picolab/frusta_fundamental/info.json @@ -0,0 +1,84 @@ +{ + "keyboard_name": "frusta_fundamental", + "url": "https://picolab.hk", + "maintainer": "PicoLab", + "width": 16, + "height": 5, + "layouts": { + "LAYOUT": { + "layout": [ + { "label": "Esc", "x": 0, "y": 0 }, + { "label": "!", "x": 1, "y": 0 }, + { "label": "@", "x": 2, "y": 0 }, + { "label": "#", "x": 3, "y": 0 }, + { "label": "$", "x": 4, "y": 0 }, + { "label": "%", "x": 5, "y": 0 }, + { "label": "^", "x": 6, "y": 0 }, + { "label": "&", "x": 7, "y": 0 }, + { "label": "*", "x": 8, "y": 0 }, + { "label": "(", "x": 9, "y": 0 }, + { "label": ")", "x": 10, "y": 0 }, + { "label": "_", "x": 11, "y": 0 }, + { "label": "+", "x": 12, "y": 0 }, + { "label": "Backspace", "x": 13, "y": 0, "w": 2 }, + { "label": "Pause", "x": 15, "y": 0 }, + + { "label": "Tab", "x": 0, "y": 1, "w": 1.5 }, + { "label": "Q", "x": 1.5, "y": 1 }, + { "label": "W", "x": 2.5, "y": 1 }, + { "label": "E", "x": 3.5, "y": 1 }, + { "label": "R", "x": 4.5, "y": 1 }, + { "label": "T", "x": 5.5, "y": 1 }, + { "label": "Y", "x": 6.5, "y": 1 }, + { "label": "U", "x": 7.5, "y": 1 }, + { "label": "I", "x": 8.5, "y": 1 }, + { "label": "O", "x": 9.5, "y": 1 }, + { "label": "P", "x": 10.5, "y": 1 }, + { "label": "{", "x": 11.5, "y": 1 }, + { "label": "}", "x": 12.5, "y": 1 }, + { "label": "|", "x": 13.5, "y": 1, "w": 1.5 }, + { "label": "Home", "x": 15, "y": 1 }, + + { "label": "RControl", "x": 0, "y": 2, "w": 1.75 }, + { "label": "A", "x": 1.75, "y": 2 }, + { "label": "S", "x": 2.75, "y": 2 }, + { "label": "D", "x": 3.75, "y": 2 }, + { "label": "F", "x": 4.75, "y": 2 }, + { "label": "G", "x": 5.75, "y": 2 }, + { "label": "H", "x": 6.75, "y": 2 }, + { "label": "J", "x": 7.75, "y": 2 }, + { "label": "K", "x": 8.75, "y": 2 }, + { "label": "L", "x": 9.75, "y": 2 }, + { "label": ":", "x": 10.75, "y": 2 }, + { "label": "\"", "x": 11.75, "y": 2 }, + { "label": "Return", "x": 12.75, "y": 2, "w": 2.25 }, + { "label": "End", "x": 15, "y": 2 }, + + { "label": "LShift", "x": 0, "y": 3, "w": 2.25 }, + { "label": "Z", "x": 2.25, "y": 3 }, + { "label": "X", "x": 3.25, "y": 3 }, + { "label": "C", "x": 4.25, "y": 3 }, + { "label": "V", "x": 5.25, "y": 3 }, + { "label": "B", "x": 6.25, "y": 3 }, + { "label": "N", "x": 7.25, "y": 3 }, + { "label": "M", "x": 8.25, "y": 3 }, + { "label": "<", "x": 9.25, "y": 3 }, + { "label": ">", "x": 10.25, "y": 3 }, + { "label": "?", "x": 11.25, "y": 3 }, + { "label": "RShift", "x": 12.25, "y": 3, "w": 1.75 }, + { "label": "Up", "x": 14, "y": 3 }, + { "label": "Del", "x": 15, "y": 3 }, + + { "label": "Fn", "x": 0, "y": 4, "w": 1.25 }, + { "label": "Win", "x": 1.25, "y": 4, "w": 1.25 }, + { "label": "Alt", "x": 2.5, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 3.75, "y": 4, "w": 6.25 }, + { "label": "Fn", "x": 10, "y": 4, "w": 1.25 }, + { "label": "RCtrl", "x": 11.25, "y": 4, "w": 1.25 }, + { "label": "Left", "x": 13, "y": 4 }, + { "label": "Down", "x": 14, "y": 4 }, + { "label": "Right", "x": 15, "y": 4 } + ] + } + } +} \ No newline at end of file diff --git a/keyboards/picolab/frusta_fundamental/keymaps/default/keymap.c b/keyboards/picolab/frusta_fundamental/keymaps/default/keymap.c new file mode 100644 index 0000000000..0b04efb988 --- /dev/null +++ b/keyboards/picolab/frusta_fundamental/keymaps/default/keymap.c @@ -0,0 +1,41 @@ +/* Copyright 2021 PicoLab + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _FKEY +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [_BASE] = LAYOUT( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, RGB_TOG, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_END, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_FKEY] = LAYOUT( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, RGB_MOD, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; diff --git a/keyboards/picolab/frusta_fundamental/keymaps/default/readme.md b/keyboards/picolab/frusta_fundamental/keymaps/default/readme.md new file mode 100644 index 0000000000..2a93bcacb0 --- /dev/null +++ b/keyboards/picolab/frusta_fundamental/keymaps/default/readme.md @@ -0,0 +1,3 @@ +# The default keymap for Frusta Fundamental + +This is the default layout that comes flashed on every Frusta Fundamental. \ No newline at end of file diff --git a/keyboards/picolab/frusta_fundamental/keymaps/via/keymap.c b/keyboards/picolab/frusta_fundamental/keymaps/via/keymap.c new file mode 100644 index 0000000000..0e44fa52c4 --- /dev/null +++ b/keyboards/picolab/frusta_fundamental/keymaps/via/keymap.c @@ -0,0 +1,51 @@ +/* Copyright 2021 PicoLab + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, RGB_TOG, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_END, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + /* F-Keys */ + [1] = LAYOUT( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, RGB_MOD, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [2] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [3] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/picolab/frusta_fundamental/keymaps/via/rules.mk b/keyboards/picolab/frusta_fundamental/keymaps/via/rules.mk new file mode 100644 index 0000000000..36b7ba9cbc --- /dev/null +++ b/keyboards/picolab/frusta_fundamental/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/picolab/frusta_fundamental/readme.md b/keyboards/picolab/frusta_fundamental/readme.md new file mode 100644 index 0000000000..3c5cd022cb --- /dev/null +++ b/keyboards/picolab/frusta_fundamental/readme.md @@ -0,0 +1,15 @@ +# Frusta Fundamental + +![Frusta_Fundamental](https://i.imgur.com/E1laUdbh.jpg) + +* Keyboard Maintainer: [PicoLab](https://github.com/PicoLabHK) (Contact: [enquiry@picolab.hk](mailto:enquiry@picolab.hk)) +* Hardware Supported: Frusta Fundamental hotswap PCB +* Hardware Availability: All boards can be found [Here](https://picolab.hk) (ISS started, GB not yet) + +Make example for this keyboard (after setting up your build environment): + + make picolab/frusta_fundamental:default + +To reset the board into bootloader mode, press the "RESET" button on the PCB. + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/picolab/frusta_fundamental/rules.mk b/keyboards/picolab/frusta_fundamental/rules.mk new file mode 100644 index 0000000000..d4bb32b6f1 --- /dev/null +++ b/keyboards/picolab/frusta_fundamental/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output \ No newline at end of file From cc77710b4a94b5944b9af08423204dcb631391f8 Mon Sep 17 00:00:00 2001 From: Aeonstrife Date: Sun, 16 May 2021 05:21:21 +0530 Subject: [PATCH 381/613] [Keyboard] Add Potato65 Hotswap keyboard (#12874) Co-authored-by: Ryan Co-authored-by: Drashna Jaelre --- keyboards/buildakb/potato65hs/config.h | 63 ++++++++++++++ keyboards/buildakb/potato65hs/info.json | 84 +++++++++++++++++++ .../potato65hs/keymaps/default/keymap.c | 39 +++++++++ .../potato65hs/keymaps/default/readme.md | 3 + .../buildakb/potato65hs/keymaps/via/keymap.c | 54 ++++++++++++ .../buildakb/potato65hs/keymaps/via/readme.md | 3 + .../buildakb/potato65hs/keymaps/via/rules.mk | 1 + keyboards/buildakb/potato65hs/potato65hs.c | 17 ++++ keyboards/buildakb/potato65hs/potato65hs.h | 33 ++++++++ keyboards/buildakb/potato65hs/readme.md | 24 ++++++ keyboards/buildakb/potato65hs/rules.mk | 24 ++++++ 11 files changed, 345 insertions(+) create mode 100644 keyboards/buildakb/potato65hs/config.h create mode 100644 keyboards/buildakb/potato65hs/info.json create mode 100644 keyboards/buildakb/potato65hs/keymaps/default/keymap.c create mode 100644 keyboards/buildakb/potato65hs/keymaps/default/readme.md create mode 100644 keyboards/buildakb/potato65hs/keymaps/via/keymap.c create mode 100644 keyboards/buildakb/potato65hs/keymaps/via/readme.md create mode 100644 keyboards/buildakb/potato65hs/keymaps/via/rules.mk create mode 100644 keyboards/buildakb/potato65hs/potato65hs.c create mode 100644 keyboards/buildakb/potato65hs/potato65hs.h create mode 100644 keyboards/buildakb/potato65hs/readme.md create mode 100644 keyboards/buildakb/potato65hs/rules.mk diff --git a/keyboards/buildakb/potato65hs/config.h b/keyboards/buildakb/potato65hs/config.h new file mode 100644 index 0000000000..b3b2cfdcd4 --- /dev/null +++ b/keyboards/buildakb/potato65hs/config.h @@ -0,0 +1,63 @@ +/* +Copyright 2021 Maelkk + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4A56 +#define PRODUCT_ID 0x0002 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Maelkk +#define PRODUCT Potato 65 Hotswap + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { F5, F4, F6, F0, D2 } +#define MATRIX_COL_PINS { D3, D4, D6, D7, B4, B5, B6, F1, B0, B1, B2, B3, B7, D0, D1 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE + +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +#define RGB_DI_PIN D5 +#ifdef RGB_DI_PIN +# define RGBLIGHT_ANIMATIONS +# define RGBLED_NUM 16 +# define RGBLIGHT_HUE_STEP 8 +# define RGBLIGHT_SAT_STEP 8 +# define RGBLIGHT_VAL_STEP 8 +# define RGBLIGHT_LIMIT_VAL 240 +# define RGBLIGHT_SLEEP +#endif diff --git a/keyboards/buildakb/potato65hs/info.json b/keyboards/buildakb/potato65hs/info.json new file mode 100644 index 0000000000..264adbbb6b --- /dev/null +++ b/keyboards/buildakb/potato65hs/info.json @@ -0,0 +1,84 @@ +{ + "keyboard_name": "Potato 65 Hotswap", + "url": "https://github.com/Aeonstrife/potato65hotswap", + "maintainer": "Maelkk", + "width": 16, + "height": 5, + "layouts": { + "LAYOUT_65_ansi_blocker": { + "layout": [ + { "x":0, "y":0 }, + { "x":1, "y":0 }, + { "x":2, "y":0 }, + { "x":3, "y":0 }, + { "x":4, "y":0 }, + { "x":5, "y":0 }, + { "x":6, "y":0 }, + { "x":7, "y":0 }, + { "x":8, "y":0 }, + { "x":9, "y":0 }, + { "x":10, "y":0 }, + { "x":11, "y":0 }, + { "x":12, "y":0 }, + { "x":13, "y":0, "w": 2 }, + { "x":15, "y":0 }, + + { "x":0, "y":1, "w":1.5 }, + { "x":1.5, "y":1 }, + { "x":2.5, "y":1 }, + { "x":3.5, "y":1 }, + { "x":4.5, "y":1 }, + { "x":5.5, "y":1 }, + { "x":6.5, "y":1 }, + { "x":7.5, "y":1 }, + { "x":8.5, "y":1 }, + { "x":9.5, "y":1 }, + { "x":10.5, "y":1 }, + { "x":11.5, "y":1 }, + { "x":12.5, "y":1 }, + { "x":13.5, "y":1, "w":1.5 }, + { "x":15, "y":1 }, + + { "x":0, "y":2, "w":1.75 }, + { "x":1.75, "y":2 }, + { "x":2.75, "y":2 }, + { "x":3.75, "y":2 }, + { "x":4.75, "y":2 }, + { "x":5.75, "y":2 }, + { "x":6.75, "y":2 }, + { "x":7.75, "y":2 }, + { "x":8.75, "y":2 }, + { "x":9.75, "y":2 }, + { "x":10.75, "y":2 }, + { "x":11.75, "y":2 }, + { "x":12.75, "y":2, "w":2.25 }, + { "x":15, "y":2 }, + + { "x":0, "y":3, "w":2.25 }, + { "x":2.25, "y":3 }, + { "x":3.25, "y":3 }, + { "x":4.25, "y":3 }, + { "x":5.25, "y":3 }, + { "x":6.25, "y":3 }, + { "x":7.25, "y":3 }, + { "x":8.25, "y":3 }, + { "x":9.25, "y":3 }, + { "x":10.25, "y":3 }, + { "x":11.25, "y":3 }, + { "x":12.25, "y":3, "w":1.75 }, + { "x":14, "y":3 }, + { "x":15, "y":3 }, + + { "x":0, "y":4, "w":1.25 }, + { "x":1.25, "y":4, "w":1.25 }, + { "x":2.5, "y":4, "w":1.25 }, + { "x":3.75, "y":4, "w":6.25 }, + { "x":10, "y":4, "w":1.25 }, + { "x":11.25, "y":4, "w":1.25 }, + { "x":13, "y":4 }, + { "x":14, "y":4 }, + { "x":15, "y":4 } + ] + } + } +} diff --git a/keyboards/buildakb/potato65hs/keymaps/default/keymap.c b/keyboards/buildakb/potato65hs/keymaps/default/keymap.c new file mode 100644 index 0000000000..f7a5ff4246 --- /dev/null +++ b/keyboards/buildakb/potato65hs/keymaps/default/keymap.c @@ -0,0 +1,39 @@ +/* Copyright 2021 Maelkk + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum layer_names { + _BASE, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_65_ansi_blocker( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [_FN] = LAYOUT_65_ansi_blocker( + KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_MUTE, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT + ) +}; \ No newline at end of file diff --git a/keyboards/buildakb/potato65hs/keymaps/default/readme.md b/keyboards/buildakb/potato65hs/keymaps/default/readme.md new file mode 100644 index 0000000000..bb34368c99 --- /dev/null +++ b/keyboards/buildakb/potato65hs/keymaps/default/readme.md @@ -0,0 +1,3 @@ +# Default Potato65 Hotswap Layout + +This is the default layout for the Potato65 Hotswap keyboard. Largely based on the KBD67 layout. diff --git a/keyboards/buildakb/potato65hs/keymaps/via/keymap.c b/keyboards/buildakb/potato65hs/keymaps/via/keymap.c new file mode 100644 index 0000000000..269fca7374 --- /dev/null +++ b/keyboards/buildakb/potato65hs/keymaps/via/keymap.c @@ -0,0 +1,54 @@ +/* Copyright 2021 Maelkk + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layer_names { + _BASE, + _FN1, + _FN2, + _FN3 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_65_ansi_blocker( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [_FN1] = LAYOUT_65_ansi_blocker( + KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_MUTE, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT + ), + [_FN2] = LAYOUT_65_ansi_blocker( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [_FN3] = LAYOUT_65_ansi_blocker( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; \ No newline at end of file diff --git a/keyboards/buildakb/potato65hs/keymaps/via/readme.md b/keyboards/buildakb/potato65hs/keymaps/via/readme.md new file mode 100644 index 0000000000..4e3ddd1228 --- /dev/null +++ b/keyboards/buildakb/potato65hs/keymaps/via/readme.md @@ -0,0 +1,3 @@ +# Default Potato65 Layout + +This is the VIA layout for the Potato65 Hotswap Keyboard. Largely based on the KBD67 layout. diff --git a/keyboards/buildakb/potato65hs/keymaps/via/rules.mk b/keyboards/buildakb/potato65hs/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/buildakb/potato65hs/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/buildakb/potato65hs/potato65hs.c b/keyboards/buildakb/potato65hs/potato65hs.c new file mode 100644 index 0000000000..2b5ca899b3 --- /dev/null +++ b/keyboards/buildakb/potato65hs/potato65hs.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Maelkk + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "potato65hs.h" diff --git a/keyboards/buildakb/potato65hs/potato65hs.h b/keyboards/buildakb/potato65hs/potato65hs.h new file mode 100644 index 0000000000..96884bc528 --- /dev/null +++ b/keyboards/buildakb/potato65hs/potato65hs.h @@ -0,0 +1,33 @@ +/* Copyright 2021 Maelkk + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT_65_ansi_blocker( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K213, K214, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, \ + K400, K401, K402, K403, K409, K410, K411, K413, K414 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, KC_NO, K213, K214 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, KC_NO, K311, K313, K314 }, \ + { K400, K401, K402, K403, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K409, K410, KC_NO, K411, K413, K414 } \ +} diff --git a/keyboards/buildakb/potato65hs/readme.md b/keyboards/buildakb/potato65hs/readme.md new file mode 100644 index 0000000000..bf8abea839 --- /dev/null +++ b/keyboards/buildakb/potato65hs/readme.md @@ -0,0 +1,24 @@ +# Potato65 Hotswap Keyboard + +![Potato65 Hotswap](https://i.imgur.com/ysAGZCmh.jpg) + +A hot-swappable gasket mount stacked acrylic 65% keyboard + +- Keyboard Maintainer: [Maelkk](https://github.com/Aeonstrife) +- Hardware Supported: Potato65 Keyboard +- Hardware Availability: Private Group-Buy + +Make example for this keyboard (after setting up your build environment): + + make buildakb/potato65hs:default + +Flashing example for this keyboard: + + make buildakb/potato65hs:default:flash + +To reset into bootloader mode: + +While plugged in, press the RESET switch located on the back of the pcb. +The keyboard should now be in bootloader mode. + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). \ No newline at end of file diff --git a/keyboards/buildakb/potato65hs/rules.mk b/keyboards/buildakb/potato65hs/rules.mk new file mode 100644 index 0000000000..c538b0c21d --- /dev/null +++ b/keyboards/buildakb/potato65hs/rules.mk @@ -0,0 +1,24 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow + +LAYOUTS = 65_ansi_blocker From 60cf7ae8b7affb0130960a49a904be754c04a213 Mon Sep 17 00:00:00 2001 From: Brandon Lee <36001126+bleeCS@users.noreply.github.com> Date: Sat, 15 May 2021 20:04:38 -0400 Subject: [PATCH 382/613] [Keyboard] Add Rosa (#12884) Co-authored-by: Ryan --- keyboards/illusion/rosa/config.h | 58 +++++ keyboards/illusion/rosa/info.json | 214 ++++++++++++++++++ .../illusion/rosa/keymaps/default/keymap.c | 33 +++ .../illusion/rosa/keymaps/default/readme.md | 1 + keyboards/illusion/rosa/keymaps/oggi/keymap.c | 40 ++++ .../illusion/rosa/keymaps/oggi/readme.md | 1 + .../rosa/keymaps/split_bs_rshift/keymap.c | 40 ++++ .../rosa/keymaps/split_bs_rshift/readme.md | 1 + .../rosa/keymaps/split_rshift/keymap.c | 40 ++++ .../rosa/keymaps/split_rshift/readme.md | 1 + keyboards/illusion/rosa/keymaps/via/keymap.c | 56 +++++ keyboards/illusion/rosa/keymaps/via/readme.md | 1 + keyboards/illusion/rosa/keymaps/via/rules.mk | 2 + keyboards/illusion/rosa/readme.md | 14 ++ keyboards/illusion/rosa/rosa.c | 18 ++ keyboards/illusion/rosa/rosa.h | 76 +++++++ keyboards/illusion/rosa/rules.mk | 22 ++ 17 files changed, 618 insertions(+) create mode 100644 keyboards/illusion/rosa/config.h create mode 100644 keyboards/illusion/rosa/info.json create mode 100644 keyboards/illusion/rosa/keymaps/default/keymap.c create mode 100644 keyboards/illusion/rosa/keymaps/default/readme.md create mode 100644 keyboards/illusion/rosa/keymaps/oggi/keymap.c create mode 100644 keyboards/illusion/rosa/keymaps/oggi/readme.md create mode 100644 keyboards/illusion/rosa/keymaps/split_bs_rshift/keymap.c create mode 100644 keyboards/illusion/rosa/keymaps/split_bs_rshift/readme.md create mode 100644 keyboards/illusion/rosa/keymaps/split_rshift/keymap.c create mode 100644 keyboards/illusion/rosa/keymaps/split_rshift/readme.md create mode 100644 keyboards/illusion/rosa/keymaps/via/keymap.c create mode 100644 keyboards/illusion/rosa/keymaps/via/readme.md create mode 100644 keyboards/illusion/rosa/keymaps/via/rules.mk create mode 100644 keyboards/illusion/rosa/readme.md create mode 100644 keyboards/illusion/rosa/rosa.c create mode 100644 keyboards/illusion/rosa/rosa.h create mode 100644 keyboards/illusion/rosa/rules.mk diff --git a/keyboards/illusion/rosa/config.h b/keyboards/illusion/rosa/config.h new file mode 100644 index 0000000000..0fcf4931c3 --- /dev/null +++ b/keyboards/illusion/rosa/config.h @@ -0,0 +1,58 @@ +/* +Copyright 2021 Brandon Lee + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x696B // ik -> illusion keyboards +#define PRODUCT_ID 0x6952 // iR -> illusion Rosa +#define DEVICE_VER 0x0001 +#define MANUFACTURER illusion keyboards +#define PRODUCT Rosa + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +#define MATRIX_ROW_PINS { D1, D4, F0, B0, B1 } +#define MATRIX_COL_PINS { D0, D2, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +#define LED_CAPS_LOCK_PIN B3 +#define LED_PIN_ON_STATE 0 +#define BACKLIGHT_LEVELS 0 + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* disable these deprecated features by default */ +// #define NO_ACTION_MACRO +// #define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +// #define BOOTMAGIC_LITE_ROW 0 +// #define BOOTMAGIC_LITE_COLUMN 0 \ No newline at end of file diff --git a/keyboards/illusion/rosa/info.json b/keyboards/illusion/rosa/info.json new file mode 100644 index 0000000000..72841fb53b --- /dev/null +++ b/keyboards/illusion/rosa/info.json @@ -0,0 +1,214 @@ +{ + "keyboard_name": "Rosa", + "url": "", + "maintainer": "illusion", + "width": 15, + "height": 5, + "layouts": { + "LAYOUT_60_ansi": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"!", "x":1, "y":0}, + {"label":"@", "x":2, "y":0}, + {"label":"#", "x":3, "y":0}, + {"label":"$", "x":4, "y":0}, + {"label":"%", "x":5, "y":0}, + {"label":"^", "x":6, "y":0}, + {"label":"&", "x":7, "y":0}, + {"label":"*", "x":8, "y":0}, + {"label":"(", "x":9, "y":0}, + {"label":")", "x":10, "y":0}, + {"label":"_", "x":11, "y":0}, + {"label":"+", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"{", "x":11.5, "y":1}, + {"label":"}", "x":12.5, "y":1}, + {"label":"\\", "x":13.5, "y":1, "w":1.5}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":":", "x":10.75, "y":2}, + {"label":"\"", "x":11.75, "y":2}, + {"label":"Enter", "x":12.75, "y":2, "w":2.25}, + + {"label":"Shift", "x":0, "y":3, "w":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":"<", "x":9.25, "y":3}, + {"label":">", "x":10.25, "y":3}, + {"label":"?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":2.75}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.5}, + {"label":"Win", "x":1.5, "y":4}, + {"label":"Alt", "x":2.5, "y":4, "w":1.5}, + {"x":4, "y":4, "w":7}, + {"label":"Alt", "x":11, "y":4, "w":1.5}, + {"label":"Win", "x":12.5, "y":4}, + {"label":"Ctrl", "x":13.5, "y":4, "w":1.5} + ] + }, + "LAYOUT_60_ansi_split_rshift": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1", "x":1, "y":0}, + {"label":"2", "x":2, "y":0}, + {"label":"3", "x":3, "y":0}, + {"label":"4", "x":4, "y":0}, + {"label":"5", "x":5, "y":0}, + {"label":"6", "x":6, "y":0}, + {"label":"7", "x":7, "y":0}, + {"label":"8", "x":8, "y":0}, + {"label":"9", "x":9, "y":0}, + {"label":"0", "x":10, "y":0}, + {"label":"-", "x":11, "y":0}, + {"label":"=", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"[", "x":11.5, "y":1}, + {"label":"]", "x":12.5, "y":1}, + {"label":"\\", "x":13.5, "y":1, "w":1.5}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":":", "x":10.75, "y":2}, + {"label":"\"", "x":11.75, "y":2}, + {"label":"Enter", "x":12.75, "y":2, "w":2.25}, + + {"label":"Shift", "x":0, "y":3, "w":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",", "x":9.25, "y":3}, + {"label":".", "x":10.25, "y":3}, + {"label":"?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"Fn", "x":14, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.5}, + {"label":"Win", "x":1.5, "y":4}, + {"label":"Alt", "x":2.5, "y":4, "w":1.5}, + {"x":4, "y":4, "w":7}, + {"label":"Alt", "x":11, "y":4, "w":1.5}, + {"label":"Win", "x":12.5, "y":4}, + {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}] + }, + "LAYOUT_60_ansi_split_bs_rshift": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1", "x":1, "y":0}, + {"label":"2", "x":2, "y":0}, + {"label":"3", "x":3, "y":0}, + {"label":"4", "x":4, "y":0}, + {"label":"5", "x":5, "y":0}, + {"label":"6", "x":6, "y":0}, + {"label":"7", "x":7, "y":0}, + {"label":"8", "x":8, "y":0}, + {"label":"9", "x":9, "y":0}, + {"label":"0", "x":10, "y":0}, + {"label":"-", "x":11, "y":0}, + {"label":"=", "x":12, "y":0}, + {"label":"\\", "x":13, "y":0}, + {"label":"~", "x":14, "y":0}, + + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"[", "x":11.5, "y":1}, + {"label":"]", "x":12.5, "y":1}, + {"label":"Backspace", "x":13.5, "y":1, "w":1.5}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":":", "x":10.75, "y":2}, + {"label":"\"", "x":11.75, "y":2}, + {"label":"Enter", "x":12.75, "y":2, "w":2.25}, + + {"label":"Shift", "x":0, "y":3, "w":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",", "x":9.25, "y":3}, + {"label":".", "x":10.25, "y":3}, + {"label":"?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"Fn", "x":14, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.5}, + {"label":"Win", "x":1.5, "y":4}, + {"label":"Alt", "x":2.5, "y":4, "w":1.5}, + {"x":4, "y":4, "w":7}, + {"label":"Alt", "x":11, "y":4, "w":1.5}, + {"label":"Win", "x":12.5, "y":4}, + {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}] + } + } +} \ No newline at end of file diff --git a/keyboards/illusion/rosa/keymaps/default/keymap.c b/keyboards/illusion/rosa/keymaps/default/keymap.c new file mode 100644 index 0000000000..9bd0109f41 --- /dev/null +++ b/keyboards/illusion/rosa/keymaps/default/keymap.c @@ -0,0 +1,33 @@ +/* +Copyright 2021 Brandon Lee + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layer_names { + _BASE, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_60_ansi( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL + ) +}; \ No newline at end of file diff --git a/keyboards/illusion/rosa/keymaps/default/readme.md b/keyboards/illusion/rosa/keymaps/default/readme.md new file mode 100644 index 0000000000..7acbd7dea2 --- /dev/null +++ b/keyboards/illusion/rosa/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for the Rosa PCB \ No newline at end of file diff --git a/keyboards/illusion/rosa/keymaps/oggi/keymap.c b/keyboards/illusion/rosa/keymaps/oggi/keymap.c new file mode 100644 index 0000000000..5cebe21d8a --- /dev/null +++ b/keyboards/illusion/rosa/keymaps/oggi/keymap.c @@ -0,0 +1,40 @@ +/* +Copyright 2021 Brandon Lee + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layer_names { + _BASE, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_60_ansi_split_rshift( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LGUI, KC_TRNS, KC_LALT, KC_SPC, KC_RALT, KC_TRNS, KC_RCTL + ), + [_FN] = LAYOUT_60_ansi_split_rshift( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, + KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_RIGHT, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DOWN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/keyboards/illusion/rosa/keymaps/oggi/readme.md b/keyboards/illusion/rosa/keymaps/oggi/readme.md new file mode 100644 index 0000000000..54db9b5630 --- /dev/null +++ b/keyboards/illusion/rosa/keymaps/oggi/readme.md @@ -0,0 +1 @@ +# Oggi's custom Rosa keymap \ No newline at end of file diff --git a/keyboards/illusion/rosa/keymaps/split_bs_rshift/keymap.c b/keyboards/illusion/rosa/keymaps/split_bs_rshift/keymap.c new file mode 100644 index 0000000000..caa5e44a66 --- /dev/null +++ b/keyboards/illusion/rosa/keymaps/split_bs_rshift/keymap.c @@ -0,0 +1,40 @@ +/* +Copyright 2021 Brandon Lee + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layer_names { + _BASE, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_60_ansi_split_bs_rshift( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL + ), + [_FN] = LAYOUT_60_ansi_split_bs_rshift( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/keyboards/illusion/rosa/keymaps/split_bs_rshift/readme.md b/keyboards/illusion/rosa/keymaps/split_bs_rshift/readme.md new file mode 100644 index 0000000000..767db35490 --- /dev/null +++ b/keyboards/illusion/rosa/keymaps/split_bs_rshift/readme.md @@ -0,0 +1 @@ +# The keymap with split backspace and split right shift for the Rosa PCB \ No newline at end of file diff --git a/keyboards/illusion/rosa/keymaps/split_rshift/keymap.c b/keyboards/illusion/rosa/keymaps/split_rshift/keymap.c new file mode 100644 index 0000000000..25eabb4d3d --- /dev/null +++ b/keyboards/illusion/rosa/keymaps/split_rshift/keymap.c @@ -0,0 +1,40 @@ +/* +Copyright 2021 Brandon Lee + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layer_names { + _BASE, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_60_ansi_split_rshift( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL + ), + [_FN] = LAYOUT_60_ansi_split_rshift( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/keyboards/illusion/rosa/keymaps/split_rshift/readme.md b/keyboards/illusion/rosa/keymaps/split_rshift/readme.md new file mode 100644 index 0000000000..ef68f253ff --- /dev/null +++ b/keyboards/illusion/rosa/keymaps/split_rshift/readme.md @@ -0,0 +1 @@ +# The keymap with split right shift for the Rosa PCB \ No newline at end of file diff --git a/keyboards/illusion/rosa/keymaps/via/keymap.c b/keyboards/illusion/rosa/keymaps/via/keymap.c new file mode 100644 index 0000000000..872abde673 --- /dev/null +++ b/keyboards/illusion/rosa/keymaps/via/keymap.c @@ -0,0 +1,56 @@ +/* +Copyright 2021 Brandon Lee + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layer_names { + _BASE, + _FN1, + _FN2, + _FN3 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_60_ansi( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL + ), + [_FN1] = LAYOUT_60_ansi( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [_FN2] = LAYOUT_60_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [_FN3] = LAYOUT_60_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/keyboards/illusion/rosa/keymaps/via/readme.md b/keyboards/illusion/rosa/keymaps/via/readme.md new file mode 100644 index 0000000000..4b3ccd070c --- /dev/null +++ b/keyboards/illusion/rosa/keymaps/via/readme.md @@ -0,0 +1 @@ +# The VIA keymap for Rosa. \ No newline at end of file diff --git a/keyboards/illusion/rosa/keymaps/via/rules.mk b/keyboards/illusion/rosa/keymaps/via/rules.mk new file mode 100644 index 0000000000..43061db1dd --- /dev/null +++ b/keyboards/illusion/rosa/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/illusion/rosa/readme.md b/keyboards/illusion/rosa/readme.md new file mode 100644 index 0000000000..263a2ecb9d --- /dev/null +++ b/keyboards/illusion/rosa/readme.md @@ -0,0 +1,14 @@ +# Rosa + +![Rosa](https://i.imgur.com/ATFjY5fh.jpg) + +A 60% form factor PCB for the Rosa. Uses a USB Type C connector. + +* Keyboard Maintainer: [illusion](https://github.com/bleeCS) +* Hardware Supported: Rosa PCB + +Make example for this keyboard (after setting up your build environment): + + make illusion/rosa:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/illusion/rosa/rosa.c b/keyboards/illusion/rosa/rosa.c new file mode 100644 index 0000000000..54619e1ce7 --- /dev/null +++ b/keyboards/illusion/rosa/rosa.c @@ -0,0 +1,18 @@ +/* +Copyright 2021 Brandon Lee + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "rosa.h" diff --git a/keyboards/illusion/rosa/rosa.h b/keyboards/illusion/rosa/rosa.h new file mode 100644 index 0000000000..1e62a3599c --- /dev/null +++ b/keyboards/illusion/rosa/rosa.h @@ -0,0 +1,76 @@ +/* +Copyright 2021 Brandon Lee + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +#define LAYOUT_all(\ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K213, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K312, K313, \ + K400, K401, K402, K406, K410, K411, K413 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, KC_NO, K312, K313}, \ + { K400, K401, K402, KC_NO, KC_NO, KC_NO, K406, KC_NO, KC_NO, KC_NO, K410, K411, KC_NO, K413} \ +} + +#define LAYOUT_60_ansi(\ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K312, \ + K400, K401, K402, K406, K410, K411, K413 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, KC_NO }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, KC_NO, K312, KC_NO }, \ + { K400, K401, K402, KC_NO, KC_NO, KC_NO, K406, KC_NO, KC_NO, KC_NO, K410, K411, KC_NO, K413 } \ +} + +#define LAYOUT_60_ansi_split_rshift(\ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K312, K313, \ + K400, K401, K402, K406, K410, K411, K413 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, KC_NO }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, KC_NO, K312, K313 }, \ + { K400, K401, K402, KC_NO, KC_NO, KC_NO, K406, KC_NO, KC_NO, KC_NO, K410, K411, KC_NO, K413 } \ +} + +#define LAYOUT_60_ansi_split_bs_rshift(\ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K213, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K312, K313, \ + K400, K401, K402, K406, K410, K411, K413 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, KC_NO, K312, K313}, \ + { K400, K401, K402, KC_NO, KC_NO, KC_NO, K406, KC_NO, KC_NO, KC_NO, K410, K411, KC_NO, K413} \ +} diff --git a/keyboards/illusion/rosa/rules.mk b/keyboards/illusion/rosa/rules.mk new file mode 100644 index 0000000000..58a18ebe56 --- /dev/null +++ b/keyboards/illusion/rosa/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output From 3efaa5ba7cb67ce51fb61b38b0bc0313e819eb55 Mon Sep 17 00:00:00 2001 From: Ramon Imbao Date: Sun, 16 May 2021 08:08:25 +0800 Subject: [PATCH 383/613] [Keyboard] Add Chevron (#12762) Co-authored-by: Drashna Jaelre Co-authored-by: Ryan --- keyboards/ramonimbao/chevron/chevron.c | 17 ++ keyboards/ramonimbao/chevron/chevron.h | 75 +++++++ keyboards/ramonimbao/chevron/config.h | 152 ++++++++++++++ keyboards/ramonimbao/chevron/info.json | 185 ++++++++++++++++++ .../chevron/keymaps/default/keymap.c | 41 ++++ .../ramonimbao/chevron/keymaps/iso/keymap.c | 41 ++++ .../ramonimbao/chevron/keymaps/via/keymap.c | 83 ++++++++ .../ramonimbao/chevron/keymaps/via/rules.mk | 1 + keyboards/ramonimbao/chevron/readme.md | 20 ++ keyboards/ramonimbao/chevron/rules.mk | 26 +++ 10 files changed, 641 insertions(+) create mode 100644 keyboards/ramonimbao/chevron/chevron.c create mode 100644 keyboards/ramonimbao/chevron/chevron.h create mode 100644 keyboards/ramonimbao/chevron/config.h create mode 100644 keyboards/ramonimbao/chevron/info.json create mode 100644 keyboards/ramonimbao/chevron/keymaps/default/keymap.c create mode 100644 keyboards/ramonimbao/chevron/keymaps/iso/keymap.c create mode 100644 keyboards/ramonimbao/chevron/keymaps/via/keymap.c create mode 100644 keyboards/ramonimbao/chevron/keymaps/via/rules.mk create mode 100644 keyboards/ramonimbao/chevron/readme.md create mode 100644 keyboards/ramonimbao/chevron/rules.mk diff --git a/keyboards/ramonimbao/chevron/chevron.c b/keyboards/ramonimbao/chevron/chevron.c new file mode 100644 index 0000000000..5b15d3324c --- /dev/null +++ b/keyboards/ramonimbao/chevron/chevron.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Ramon Imbao + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "chevron.h" diff --git a/keyboards/ramonimbao/chevron/chevron.h b/keyboards/ramonimbao/chevron/chevron.h new file mode 100644 index 0000000000..0f95555c55 --- /dev/null +++ b/keyboards/ramonimbao/chevron/chevron.h @@ -0,0 +1,75 @@ +/* Copyright 2021 Ramon Imbao + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ + +#define XXX KC_NO + +#define LAYOUT_ansi( \ + k1d, \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2c, k2d, \ + k30, k31, k32, k34, k36, k38, k3b, k3c, k3d \ +) \ +{ \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, XXX, k2c, k2d }, \ + { k30, k31, k32, XXX, k34, XXX, k36, XXX, k38, XXX, XXX, k3b, k3c, k3d }, \ + { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \ +} + +#define LAYOUT_iso( \ + k1d, \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k0d, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2c, k2d, \ + k30, k31, k32, k34, k36, k38, k3b, k3c, k3d \ +) \ +{ \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, XXX, k2c, k2d }, \ + { k30, k31, k32, XXX, k34, XXX, k36, XXX, k38, XXX, XXX, k3b, k3c, k3d }, \ + { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \ +} + +#define LAYOUT_all( \ + k40, k1d, k41, \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2c, k2d, \ + k30, k31, k32, k34, k36, k38, k3b, k3c, k3d \ +) \ +{ \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, XXX, k2c, k2d }, \ + { k30, k31, k32, XXX, k34, XXX, k36, XXX, k38, XXX, XXX, k3b, k3c, k3d }, \ + { k40, k41, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \ +} diff --git a/keyboards/ramonimbao/chevron/config.h b/keyboards/ramonimbao/chevron/config.h new file mode 100644 index 0000000000..ec52ee5954 --- /dev/null +++ b/keyboards/ramonimbao/chevron/config.h @@ -0,0 +1,152 @@ +/* +Copyright 2020 Ramon Imbao + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xB16B +#define PRODUCT_ID 0xC4EE +#define DEVICE_VER 0x0012 +#define MANUFACTURER Ramon Imbao +#define PRODUCT Chevron + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ +#define MATRIX_ROW_PINS { D5, D6, C0, D7, NO_PIN } +#define MATRIX_COL_PINS { A5, A6, A7, C7, C6, C5, C4, C3, C2, C1, A4, A3, A2, B4 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +// #define BACKLIGHT_PIN B7 +// #define BACKLIGHT_BREATHING +// #define BACKLIGHT_LEVELS 3 + +// #define RGB_DI_PIN E2 +// #ifdef RGB_DI_PIN +// #define RGBLED_NUM 16 +// #define RGBLIGHT_HUE_STEP 8 +// #define RGBLIGHT_SAT_STEP 8 +// #define RGBLIGHT_VAL_STEP 8 +// #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +// #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +// /*== all animations enable ==*/ +// #define RGBLIGHT_ANIMATIONS +// /*== or choose animations ==*/ +// #define RGBLIGHT_EFFECT_BREATHING +// #define RGBLIGHT_EFFECT_RAINBOW_MOOD +// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL +// #define RGBLIGHT_EFFECT_SNAKE +// #define RGBLIGHT_EFFECT_KNIGHT +// #define RGBLIGHT_EFFECT_CHRISTMAS +// #define RGBLIGHT_EFFECT_STATIC_GRADIENT +// #define RGBLIGHT_EFFECT_RGB_TEST +// #define RGBLIGHT_EFFECT_ALTERNATING +// /*== customize breathing effect ==*/ +// /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +// #define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +// /*==== use exp() and sin() ====*/ +// #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +// #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +// #endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is userful for the Windows task manager shortcut (ctrl+shift+esc). + */ +// #define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +// #define BOOTMAGIC_LITE_ROW 0 +// #define BOOTMAGIC_LITE_COLUMN 0 + +/* QoL improvements */ +#define PERMISSIVE_HOLD +#define IGNORE_MOD_TAP_INTERRUPT + +/* Encoder */ +#define ENCODERS_PAD_A { A0 } +#define ENCODERS_PAD_B { A1 } + +//#define ENCODER_DIRECTION_FLIP diff --git a/keyboards/ramonimbao/chevron/info.json b/keyboards/ramonimbao/chevron/info.json new file mode 100644 index 0000000000..11ed02e53b --- /dev/null +++ b/keyboards/ramonimbao/chevron/info.json @@ -0,0 +1,185 @@ +{ + "keyboard_name": "Chevron", + "url": "", + "maintainer": "", + "width": 14.5, + "height": 5, + "layouts": { + "LAYOUT_ansi": { + "layout": [ + {"x":13.5, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + {"x":4, "y":1}, + {"x":5, "y":1}, + {"x":6, "y":1}, + {"x":7, "y":1}, + {"x":8, "y":1}, + {"x":9, "y":1}, + {"x":10, "y":1}, + {"x":11, "y":1}, + {"x":12, "y":1}, + {"x":13, "y":1, "w":1.5}, + + {"x":0, "y":2, "w":1.25}, + {"x":1.25, "y":2}, + {"x":2.25, "y":2}, + {"x":3.25, "y":2}, + {"x":4.25, "y":2}, + {"x":5.25, "y":2}, + {"x":6.25, "y":2}, + {"x":7.25, "y":2}, + {"x":8.25, "y":2}, + {"x":9.25, "y":2}, + {"x":10.25, "y":2}, + {"x":11.25, "y":2}, + {"x":12.25, "y":2, "w":2.25}, + + {"x":0, "y":3, "w":1.75}, + {"x":1.75, "y":3}, + {"x":2.75, "y":3}, + {"x":3.75, "y":3}, + {"x":4.75, "y":3}, + {"x":5.75, "y":3}, + {"x":6.75, "y":3}, + {"x":7.75, "y":3}, + {"x":8.75, "y":3}, + {"x":9.75, "y":3}, + {"x":10.75, "y":3}, + {"x":11.75, "y":3, "w":1.75}, + {"x":13.5, "y":3}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":3}, + {"x":6.75, "y":4}, + {"x":7.75, "y":4, "w":3}, + {"x":10.75, "y":4, "w":1.25}, + {"x":12, "y":4, "w":1.25}, + {"x":13.25, "y":4, "w":1.25} + ] + }, + "LAYOUT_iso": { + "layout": [ + {"x":13.5, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + {"x":4, "y":1}, + {"x":5, "y":1}, + {"x":6, "y":1}, + {"x":7, "y":1}, + {"x":8, "y":1}, + {"x":9, "y":1}, + {"x":10, "y":1}, + {"x":11, "y":1}, + {"x":12, "y":1}, + + {"x":0, "y":2, "w":1.25}, + {"x":1.25, "y":2}, + {"x":2.25, "y":2}, + {"x":3.25, "y":2}, + {"x":4.25, "y":2}, + {"x":5.25, "y":2}, + {"x":6.25, "y":2}, + {"x":7.25, "y":2}, + {"x":8.25, "y":2}, + {"x":9.25, "y":2}, + {"x":10.25, "y":2}, + {"x":11.25, "y":2}, + {"x":12.25, "y":2}, + {"x":13.25, "y":1, "w":1.25, "h":2}, + + {"x":0, "y":3, "w":1.75}, + {"x":1.75, "y":3}, + {"x":2.75, "y":3}, + {"x":3.75, "y":3}, + {"x":4.75, "y":3}, + {"x":5.75, "y":3}, + {"x":6.75, "y":3}, + {"x":7.75, "y":3}, + {"x":8.75, "y":3}, + {"x":9.75, "y":3}, + {"x":10.75, "y":3}, + {"x":11.75, "y":3, "w":1.75}, + {"x":13.5, "y":3}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":3}, + {"x":6.75, "y":4}, + {"x":7.75, "y":4, "w":3}, + {"x":10.75, "y":4, "w":1.25}, + {"x":12, "y":4, "w":1.25}, + {"x":13.25, "y":4, "w":1.25} + ] + }, + "LAYOUT_all": { + "layout": [ + {"x":11.5, "y":0}, + {"x":12.5, "y":0}, + {"x":13.5, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + {"x":4, "y":1}, + {"x":5, "y":1}, + {"x":6, "y":1}, + {"x":7, "y":1}, + {"x":8, "y":1}, + {"x":9, "y":1}, + {"x":10, "y":1}, + {"x":11, "y":1}, + {"x":12, "y":1}, + {"x":13, "y":1, "w":1.5}, + + {"x":0, "y":2, "w":1.25}, + {"x":1.25, "y":2}, + {"x":2.25, "y":2}, + {"x":3.25, "y":2}, + {"x":4.25, "y":2}, + {"x":5.25, "y":2}, + {"x":6.25, "y":2}, + {"x":7.25, "y":2}, + {"x":8.25, "y":2}, + {"x":9.25, "y":2}, + {"x":10.25, "y":2}, + {"x":11.25, "y":2}, + {"x":12.25, "y":2, "w":2.25}, + + {"x":0, "y":3, "w":1.75}, + {"x":1.75, "y":3}, + {"x":2.75, "y":3}, + {"x":3.75, "y":3}, + {"x":4.75, "y":3}, + {"x":5.75, "y":3}, + {"x":6.75, "y":3}, + {"x":7.75, "y":3}, + {"x":8.75, "y":3}, + {"x":9.75, "y":3}, + {"x":10.75, "y":3}, + {"x":11.75, "y":3, "w":1.75}, + {"x":13.5, "y":3}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":3}, + {"x":6.75, "y":4}, + {"x":7.75, "y":4, "w":3}, + {"x":10.75, "y":4, "w":1.25}, + {"x":12, "y":4, "w":1.25}, + {"x":13.25, "y":4, "w":1.25} + ] + } + } +} diff --git a/keyboards/ramonimbao/chevron/keymaps/default/keymap.c b/keyboards/ramonimbao/chevron/keymaps/default/keymap.c new file mode 100644 index 0000000000..04da00848e --- /dev/null +++ b/keyboards/ramonimbao/chevron/keymaps/default/keymap.c @@ -0,0 +1,41 @@ +/* Copyright 2021 Ramon Imbao + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_ansi( + KC_MUTE, + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_BSPC, KC_RALT, KC_RGUI, KC_RCTL + ), + [1] = LAYOUT_ansi( + _______, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, _______, + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, _______, + _______, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; + +void encoder_update_user(uint8_t index, bool clockwise) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } +} diff --git a/keyboards/ramonimbao/chevron/keymaps/iso/keymap.c b/keyboards/ramonimbao/chevron/keymaps/iso/keymap.c new file mode 100644 index 0000000000..c22c0af8c4 --- /dev/null +++ b/keyboards/ramonimbao/chevron/keymaps/iso/keymap.c @@ -0,0 +1,41 @@ +/* Copyright 2021 Ramon Imbao + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_iso( + KC_MUTE, + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_BSPC, KC_RALT, KC_RGUI, KC_RCTL + ), + [1] = LAYOUT_iso( + _______, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, _______, _______, + _______, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______, KC_SLSH, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; + +void encoder_update_user(uint8_t index, bool clockwise) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } +} diff --git a/keyboards/ramonimbao/chevron/keymaps/via/keymap.c b/keyboards/ramonimbao/chevron/keymaps/via/keymap.c new file mode 100644 index 0000000000..11304be9d0 --- /dev/null +++ b/keyboards/ramonimbao/chevron/keymaps/via/keymap.c @@ -0,0 +1,83 @@ +/* Copyright 2021 Ramon Imbao + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_VOLD, KC_MUTE, KC_VOLU, + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_BSPC, KC_RALT, KC_RGUI, KC_RCTL + ), + [1] = 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_MINS, KC_EQL, _______, + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, _______, + _______, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT_all( + _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT_all( + _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; + +keyevent_t encoder_ccw = { + .key = (keypos_t){.row = 4, .col = 0}, + .pressed = false +}; + +keyevent_t encoder_cw = { + .key = (keypos_t){.row = 4, .col = 1}, + .pressed = false +}; + +void matrix_scan_user(void) { + if (IS_PRESSED(encoder_ccw)) { + encoder_ccw.pressed = false; + encoder_ccw.time = (timer_read() | 1); + action_exec(encoder_ccw); + } + + if (IS_PRESSED(encoder_cw)) { + encoder_cw.pressed = false; + encoder_cw.time = (timer_read() | 1); + action_exec(encoder_cw); + } +} + +void encoder_update_user(uint8_t index, bool clockwise) { + if (clockwise) { + encoder_cw.pressed = true; + encoder_cw.time = (timer_read() | 1); + action_exec(encoder_cw); + } else { + encoder_ccw.pressed = true; + encoder_ccw.time = (timer_read() | 1); + action_exec(encoder_ccw); + } +} diff --git a/keyboards/ramonimbao/chevron/keymaps/via/rules.mk b/keyboards/ramonimbao/chevron/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/ramonimbao/chevron/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/ramonimbao/chevron/readme.md b/keyboards/ramonimbao/chevron/readme.md new file mode 100644 index 0000000000..9c2b990ef2 --- /dev/null +++ b/keyboards/ramonimbao/chevron/readme.md @@ -0,0 +1,20 @@ +# Chevron + +![Chevron](https://i.imgur.com/abOuPNdl.png) + +A through-hole 40% keyboard. + +* Keyboard Maintainer: [Ramon Imbao](https://github.com/ramonimbao) +* Hardware Supported: ATmega32A + +To get to the bootloader, + + 1. Press and hold the BOOT button + 2. Press the RESET button + 3. Release the BOOT button + +Make example for this keyboard (after setting up your build environment): + + make ramonimbao/chevron:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/ramonimbao/chevron/rules.mk b/keyboards/ramonimbao/chevron/rules.mk new file mode 100644 index 0000000000..d9ae799858 --- /dev/null +++ b/keyboards/ramonimbao/chevron/rules.mk @@ -0,0 +1,26 @@ +# MCU name +MCU = atmega32a + +# Processor frequency +F_CPU = 16000000 + +# Bootloader selection +BOOTLOADER = USBasp + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +ENCODER_ENABLE = yes From 7ca4608427eb171201a3b2025635e339bd3ddda0 Mon Sep 17 00:00:00 2001 From: Felix Jen Date: Sat, 15 May 2021 19:08:49 -0500 Subject: [PATCH 384/613] [Keyboard] Added Lucid KB Scarlet [Maker KB] (#12748) Co-authored-by: Drashna Jaelre --- keyboards/lucid/scarlet/config.h | 102 +++++++++++++++++ keyboards/lucid/scarlet/info.json | 105 ++++++++++++++++++ .../lucid/scarlet/keymaps/default/keymap.c | 41 +++++++ keyboards/lucid/scarlet/keymaps/via/keymap.c | 61 ++++++++++ keyboards/lucid/scarlet/keymaps/via/rules.mk | 1 + keyboards/lucid/scarlet/readme.md | 11 ++ keyboards/lucid/scarlet/rules.mk | 25 +++++ keyboards/lucid/scarlet/scarlet.c | 14 +++ keyboards/lucid/scarlet/scarlet.h | 34 ++++++ 9 files changed, 394 insertions(+) create mode 100644 keyboards/lucid/scarlet/config.h create mode 100644 keyboards/lucid/scarlet/info.json create mode 100644 keyboards/lucid/scarlet/keymaps/default/keymap.c create mode 100644 keyboards/lucid/scarlet/keymaps/via/keymap.c create mode 100644 keyboards/lucid/scarlet/keymaps/via/rules.mk create mode 100644 keyboards/lucid/scarlet/readme.md create mode 100644 keyboards/lucid/scarlet/rules.mk create mode 100644 keyboards/lucid/scarlet/scarlet.c create mode 100644 keyboards/lucid/scarlet/scarlet.h diff --git a/keyboards/lucid/scarlet/config.h b/keyboards/lucid/scarlet/config.h new file mode 100644 index 0000000000..73c7272922 --- /dev/null +++ b/keyboards/lucid/scarlet/config.h @@ -0,0 +1,102 @@ +/* +Copyright 2020 + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7667 // Lucid +#define PRODUCT_ID 0x0004 // Scarlet PCB's +#define DEVICE_VER 0x0001 // Version 1 +#define MANUFACTURER Lucid +#define PRODUCT Scarlet + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 17 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + *Ã¥ +*/ + +// Checked with Eagle Schematic +#define MATRIX_ROW_PINS { B4, B5, B6, C0, E1, E0 } +#define MATRIX_COL_PINS { F2, F3, F4, F5, F6, F7, A0, A1, A2, A3, A4, A5, A6, A7, D5, D6, D7 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* Define less important options */ + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION diff --git a/keyboards/lucid/scarlet/info.json b/keyboards/lucid/scarlet/info.json new file mode 100644 index 0000000000..54291a1b91 --- /dev/null +++ b/keyboards/lucid/scarlet/info.json @@ -0,0 +1,105 @@ +{ + "keyboard_name": "Scarlet PCB's", + "url": "http://www.lucidkb.com", + "maintainer": "Lucid", + "width": 18.25, + "height": 6.25, + "layouts": { + "LAYOUT_tkl_all": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":2, "y":0}, + {"label":"F2", "x":3, "y":0}, + {"label":"F3", "x":4, "y":0}, + {"label":"F4", "x":5, "y":0}, + {"label":"F5", "x":6.5, "y":0}, + {"label":"F6", "x":7.5, "y":0}, + {"label":"F7", "x":8.5, "y":0}, + {"label":"F8", "x":9.5, "y":0}, + {"label":"F9", "x":11, "y":0}, + {"label":"F10", "x":12, "y":0}, + {"label":"F11", "x":13, "y":0}, + {"label":"F12", "x":14, "y":0}, + {"label":"PrtSc", "x":15.25, "y":0}, + {"label":"Scroll Lock", "x":16.25, "y":0}, + {"label":"Pause", "x":17.25, "y":0}, + + {"label":"~", "x":0, "y":1.25}, + {"label":"!", "x":1, "y":1.25}, + {"label":"@", "x":2, "y":1.25}, + {"label":"#", "x":3, "y":1.25}, + {"label":"$", "x":4, "y":1.25}, + {"label":"%", "x":5, "y":1.25}, + {"label":"^", "x":6, "y":1.25}, + {"label":"&", "x":7, "y":1.25}, + {"label":"*", "x":8, "y":1.25}, + {"label":"(", "x":9, "y":1.25}, + {"label":")", "x":10, "y":1.25}, + {"label":"_", "x":11, "y":1.25}, + {"label":"+", "x":12, "y":1.25}, + {"label":"Back Space", "x":13, "y":1.25, "w": 2}, + {"label":"Insert", "x":15.25, "y":1.25}, + {"label":"Home", "x":16.25, "y":1.25}, + {"label":"PgUp", "x":17.25, "y":1.25}, + + {"label":"Tab", "x":0, "y":2.25, "w":1.5}, + {"label":"Q", "x":1.5, "y":2.25}, + {"label":"W", "x":2.5, "y":2.25}, + {"label":"E", "x":3.5, "y":2.25}, + {"label":"R", "x":4.5, "y":2.25}, + {"label":"T", "x":5.5, "y":2.25}, + {"label":"Y", "x":6.5, "y":2.25}, + {"label":"U", "x":7.5, "y":2.25}, + {"label":"I", "x":8.5, "y":2.25}, + {"label":"O", "x":9.5, "y":2.25}, + {"label":"P", "x":10.5, "y":2.25}, + {"label":"{", "x":11.5, "y":2.25}, + {"label":"}", "x":12.5, "y":2.25}, + {"label":"|", "x":13.5, "y":2.25, "w":1.5}, + {"label":"Delete", "x":15.25, "y":2.25}, + {"label":"End", "x":16.25, "y":2.25}, + {"label":"PgDn", "x":17.25, "y":2.25}, + + {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, + {"label":"A", "x":1.75, "y":3.25}, + {"label":"S", "x":2.75, "y":3.25}, + {"label":"D", "x":3.75, "y":3.25}, + {"label":"F", "x":4.75, "y":3.25}, + {"label":"G", "x":5.75, "y":3.25}, + {"label":"H", "x":6.75, "y":3.25}, + {"label":"J", "x":7.75, "y":3.25}, + {"label":"K", "x":8.75, "y":3.25}, + {"label":"L", "x":9.75, "y":3.25}, + {"label":":", "x":10.75, "y":3.25}, + {"label":"SQ", "x":11.75, "y":3.25}, + {"label":"Enter", "x":12.75, "y":3.25, "w":2.25}, + + {"label":"Shift", "x":0, "y":4.25, "w":2.25}, + {"label":"Z", "x":2.25, "y":4.25}, + {"label":"X", "x":3.25, "y":4.25}, + {"label":"C", "x":4.25, "y":4.25}, + {"label":"V", "x":5.25, "y":4.25}, + {"label":"B", "x":6.25, "y":4.25}, + {"label":"N", "x":7.25, "y":4.25}, + {"label":"M", "x":8.25, "y":4.25}, + {"label":"<", "x":9.25, "y":4.25}, + {"label":">", "x":10.25, "y":4.25}, + {"label":"?", "x":11.25, "y":4.25}, + {"label":"Shift", "x":12.25, "y":4.25, "w":2.75}, + {"label":"\u2191", "x":16.25, "y":4.25}, + + {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, + {"label":"Win", "x":1.25, "y":5.25, "w":1.25}, + {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, + {"x":3.75, "y":5.25, "w":6.25}, + {"label":"Alt", "x":10, "y":5.25, "w":1.25}, + {"label":"Win", "x":11.25, "y":5.25, "w":1.25}, + {"label":"Menu", "x":12.5, "y":5.25, "w":1.25}, + {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.25}, + {"label":"\u2190", "x":15.25, "y":5.25}, + {"label":"\u2193", "x":16.25, "y":5.25}, + {"label":"\u2192", "x":17.25, "y":5.25} + ] + } + } +} diff --git a/keyboards/lucid/scarlet/keymaps/default/keymap.c b/keyboards/lucid/scarlet/keymaps/default/keymap.c new file mode 100644 index 0000000000..7843f354a0 --- /dev/null +++ b/keyboards/lucid/scarlet/keymaps/default/keymap.c @@ -0,0 +1,41 @@ +/* +Copyright 2020 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layers { + _LAYER0, + _LAYER1, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_LAYER0] = LAYOUT_tkl_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_LAYER1] = LAYOUT_tkl_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/lucid/scarlet/keymaps/via/keymap.c b/keyboards/lucid/scarlet/keymaps/via/keymap.c new file mode 100644 index 0000000000..70acb644a2 --- /dev/null +++ b/keyboards/lucid/scarlet/keymaps/via/keymap.c @@ -0,0 +1,61 @@ +/* +Copyright 2020 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layers { + _LAYER0, + _LAYER1, + _LAYER2, + _LAYER3, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_LAYER0] = LAYOUT_tkl_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_LAYER1] = LAYOUT_tkl_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [_LAYER2] = LAYOUT_tkl_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [_LAYER3] = LAYOUT_tkl_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/keyboards/lucid/scarlet/keymaps/via/rules.mk b/keyboards/lucid/scarlet/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/lucid/scarlet/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/lucid/scarlet/readme.md b/keyboards/lucid/scarlet/readme.md new file mode 100644 index 0000000000..c595405fc6 --- /dev/null +++ b/keyboards/lucid/scarlet/readme.md @@ -0,0 +1,11 @@ +# Scarlet Hotswap PCB by Lucid + +The following is the QMK Firmware for the Scarlet Hotswap PCB by [LucidKB](http://www.lucidkb.cm). +* Keyboard Maintainer: Lucid +* Hardware Supported: Scarlet + +Make example for this keyboard (after setting up your build environment): + + make lucid/scarlet:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/lucid/scarlet/rules.mk b/keyboards/lucid/scarlet/rules.mk new file mode 100644 index 0000000000..9572d33712 --- /dev/null +++ b/keyboards/lucid/scarlet/rules.mk @@ -0,0 +1,25 @@ +# MCU name +MCU = at90usb646 + +# Processor frequency +F_CPU = 8000000 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/lucid/scarlet/scarlet.c b/keyboards/lucid/scarlet/scarlet.c new file mode 100644 index 0000000000..aa26a78c43 --- /dev/null +++ b/keyboards/lucid/scarlet/scarlet.c @@ -0,0 +1,14 @@ +/* +Copyright 2020 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "scarlet.h" diff --git a/keyboards/lucid/scarlet/scarlet.h b/keyboards/lucid/scarlet/scarlet.h new file mode 100644 index 0000000000..c9309c635a --- /dev/null +++ b/keyboards/lucid/scarlet/scarlet.h @@ -0,0 +1,34 @@ +/* +Copyright 2020 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +/* === All used matrix spots populated === */ +#define LAYOUT_tkl_all( \ + K00, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \ + K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4C, K4F, \ + K50, K51, K52, K55, K59, K5A, K5B, K5D, K5E, K5F, K5G \ +) { \ + { K00, KC_NO, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, KC_NO, KC_NO, KC_NO }, \ + { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, KC_NO, K4C, KC_NO, KC_NO, K4F, KC_NO }, \ + { K50, K51, K52, KC_NO, KC_NO, K55, KC_NO, KC_NO, KC_NO, K59, K5A, K5B, KC_NO, K5D, K5E, K5F, K5G } \ +} From 430cd6dbc29cadee8808239b4168184e7b50a9a0 Mon Sep 17 00:00:00 2001 From: Felix Jen Date: Sat, 15 May 2021 19:09:16 -0500 Subject: [PATCH 385/613] [Keyboard] Added Bolsa Supply Midway60 Keyboard (#12747) Co-authored-by: Drashna Jaelre --- keyboards/fjlabs/midway60/config.h | 105 ++++++++++++++++++ keyboards/fjlabs/midway60/info.json | 82 ++++++++++++++ .../fjlabs/midway60/keymaps/default/keymap.c | 39 +++++++ .../fjlabs/midway60/keymaps/via/keymap.c | 58 ++++++++++ .../fjlabs/midway60/keymaps/via/rules.mk | 1 + keyboards/fjlabs/midway60/midway60.c | 14 +++ keyboards/fjlabs/midway60/midway60.h | 32 ++++++ keyboards/fjlabs/midway60/readme.md | 20 ++++ keyboards/fjlabs/midway60/rules.mk | 25 +++++ 9 files changed, 376 insertions(+) create mode 100644 keyboards/fjlabs/midway60/config.h create mode 100644 keyboards/fjlabs/midway60/info.json create mode 100644 keyboards/fjlabs/midway60/keymaps/default/keymap.c create mode 100644 keyboards/fjlabs/midway60/keymaps/via/keymap.c create mode 100644 keyboards/fjlabs/midway60/keymaps/via/rules.mk create mode 100644 keyboards/fjlabs/midway60/midway60.c create mode 100644 keyboards/fjlabs/midway60/midway60.h create mode 100644 keyboards/fjlabs/midway60/readme.md create mode 100644 keyboards/fjlabs/midway60/rules.mk diff --git a/keyboards/fjlabs/midway60/config.h b/keyboards/fjlabs/midway60/config.h new file mode 100644 index 0000000000..d5a39c89c0 --- /dev/null +++ b/keyboards/fjlabs/midway60/config.h @@ -0,0 +1,105 @@ +/* +Copyright 2020 + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7074 // FJLabs +#define PRODUCT_ID 0x1002 // Midway60 +#define DEVICE_VER 0x0001 // Version 1 +#define MANUFACTURER FJLabs +#define PRODUCT Midway60 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ + +// Checked with Eagle Schematic +#define MATRIX_ROW_PINS { F4, F1, F7, F6, F5 } +#define MATRIX_COL_PINS { F0, B1, B2, B3, B7, D0, D1, D2, D3, D5, D7, B4, B5, B6 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* Define Indicator LED's */ +#define LED_CAPS_LOCK_PIN C7 + +/* Define less important options */ + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION diff --git a/keyboards/fjlabs/midway60/info.json b/keyboards/fjlabs/midway60/info.json new file mode 100644 index 0000000000..c398eab1ec --- /dev/null +++ b/keyboards/fjlabs/midway60/info.json @@ -0,0 +1,82 @@ +{ + "keyboard_name": "Midway60", + "url": "https://www.bolsakeyboardsupply.com", + "maintainer": "FJLabs", + "width": 15, + "height": 5, + "layouts": { + "LAYOUT_60": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + {"x": 13.5, "y": 1, "w": 1.5}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2, "w": 2.25}, + + {"x": 0, "y": 3, "w": 1.25}, + {"x": 1.25, "y": 3}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3}, + {"x": 12.25, "y": 3, "w": 1.75}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 6.25}, + {"x": 10, "y": 4}, + {"x": 11, "y": 4}, + {"x": 12, "y": 4}, + {"x": 13, "y": 4}, + {"x": 14, "y": 4} + ] + } + } +} diff --git a/keyboards/fjlabs/midway60/keymaps/default/keymap.c b/keyboards/fjlabs/midway60/keymaps/default/keymap.c new file mode 100644 index 0000000000..3ef29c17bc --- /dev/null +++ b/keyboards/fjlabs/midway60/keymaps/default/keymap.c @@ -0,0 +1,39 @@ +/* +Copyright 2020 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layers { + _LAYER0, + _LAYER1, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_LAYER0] = LAYOUT_all( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_DEL, + KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RWIN, KC_RCTL + ), + + [_LAYER1] = LAYOUT_all( + KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUSE, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/fjlabs/midway60/keymaps/via/keymap.c b/keyboards/fjlabs/midway60/keymaps/via/keymap.c new file mode 100644 index 0000000000..38eef49274 --- /dev/null +++ b/keyboards/fjlabs/midway60/keymaps/via/keymap.c @@ -0,0 +1,58 @@ +/* +Copyright 2020 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layers { + _LAYER0, + _LAYER1, + _LAYER2, + _LAYER3, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_LAYER0] = LAYOUT_all( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_DEL, + KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RWIN, KC_RCTL + ), + + [_LAYER1] = LAYOUT_all( + KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUSE, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [_LAYER2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [_LAYER3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + +}; diff --git a/keyboards/fjlabs/midway60/keymaps/via/rules.mk b/keyboards/fjlabs/midway60/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/fjlabs/midway60/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/fjlabs/midway60/midway60.c b/keyboards/fjlabs/midway60/midway60.c new file mode 100644 index 0000000000..10d8088a29 --- /dev/null +++ b/keyboards/fjlabs/midway60/midway60.c @@ -0,0 +1,14 @@ +/* +Copyright 2020 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "midway60.h" diff --git a/keyboards/fjlabs/midway60/midway60.h b/keyboards/fjlabs/midway60/midway60.h new file mode 100644 index 0000000000..2311f983e7 --- /dev/null +++ b/keyboards/fjlabs/midway60/midway60.h @@ -0,0 +1,32 @@ +/* +Copyright 2020 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +/* Midway60 Keymap Definitions */ +#define LAYOUT_all( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \ + K40, K41, K42, K46, K49, K4A, K4C, K4D \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \ + { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, K49, K4A, KC_NO, K4C, K4D } \ +} diff --git a/keyboards/fjlabs/midway60/readme.md b/keyboards/fjlabs/midway60/readme.md new file mode 100644 index 0000000000..ca99f9f307 --- /dev/null +++ b/keyboards/fjlabs/midway60/readme.md @@ -0,0 +1,20 @@ +# Midway60 + +The following is the QMK Firmware for the [BolsaKeyboardSupply](https://www.bolsakeyboardsupply.com) Midway60 PCB. + +The PCB will feature: +* QMK & VIA compatibility +* Some cool bolsa branding + +--- + +* Keyboard Maintainer: FJLabs +* Hardware Supported: Midway60 + +Make example for this keyboard (after setting up your build environment): + + make fjlabs/midway60:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +Bootloader can be entered by pressing the reset button near the main microcontroller while the board is plugged in. Alternatively, it may be entered by holding the top-left-most switch and plugging in the PCB while held. \ No newline at end of file diff --git a/keyboards/fjlabs/midway60/rules.mk b/keyboards/fjlabs/midway60/rules.mk new file mode 100644 index 0000000000..622c26a3a1 --- /dev/null +++ b/keyboards/fjlabs/midway60/rules.mk @@ -0,0 +1,25 @@ +# MCU name +MCU = atmega32u4 + +# Processor frequency +F_CPU = 8000000 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output From 1e5962adbf497aad038dee034dc21e6ada6bb328 Mon Sep 17 00:00:00 2001 From: Nico Date: Sun, 16 May 2021 02:14:19 +0200 Subject: [PATCH 386/613] [Keyboard] Add Specskeys support (#12813) Co-authored-by: Drashna Jaelre Co-authored-by: Ryan --- keyboards/specskeys/config.h | 151 ++++++++++++++++++ keyboards/specskeys/info.json | 12 ++ keyboards/specskeys/keymaps/default/keymap.c | 38 +++++ keyboards/specskeys/keymaps/default/readme.md | 1 + keyboards/specskeys/readme.md | 41 +++++ keyboards/specskeys/rules.mk | 25 +++ keyboards/specskeys/specskeys.c | 17 ++ keyboards/specskeys/specskeys.h | 44 +++++ 8 files changed, 329 insertions(+) create mode 100644 keyboards/specskeys/config.h create mode 100644 keyboards/specskeys/info.json create mode 100644 keyboards/specskeys/keymaps/default/keymap.c create mode 100644 keyboards/specskeys/keymaps/default/readme.md create mode 100644 keyboards/specskeys/readme.md create mode 100644 keyboards/specskeys/rules.mk create mode 100644 keyboards/specskeys/specskeys.c create mode 100644 keyboards/specskeys/specskeys.h diff --git a/keyboards/specskeys/config.h b/keyboards/specskeys/config.h new file mode 100644 index 0000000000..09988ba63b --- /dev/null +++ b/keyboards/specskeys/config.h @@ -0,0 +1,151 @@ +/* +Copyright 2021 Nico + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xCAFE +#define PRODUCT_ID 0x0080 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Specs32 +#define PRODUCT Specskeys + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 16 +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ +#define MATRIX_ROW_PINS { F0, F1, F4, F5, F6, F7 } +#define MATRIX_COL_PINS { E6, B0, B1, B2, B3, D0, D1, D2, D3, D5, D4, D6, D7, B4, B5, B6 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +// #define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 + +//#define LED_NUM_LOCK_PIN B0 +#define LED_CAPS_LOCK_PIN C7 +#define LED_SCROLL_LOCK_PIN C6 +//#define LED_COMPOSE_PIN B3 +//#define LED_KANA_PIN B4 + +#define BACKLIGHT_PIN B7 +#define BACKLIGHT_LEVELS 1 +//#define BACKLIGHT_BREATHING + +//#define RGB_DI_PIN E2 +//#ifdef RGB_DI_PIN +//# define RGBLED_NUM 16 +//# define RGBLIGHT_HUE_STEP 8 +//# define RGBLIGHT_SAT_STEP 8 +//# define RGBLIGHT_VAL_STEP 8 +//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +//# define RGBLIGHT_ANIMATIONS +/*== or choose animations ==*/ +//# define RGBLIGHT_EFFECT_BREATHING +//# define RGBLIGHT_EFFECT_RAINBOW_MOOD +//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +//# define RGBLIGHT_EFFECT_SNAKE +//# define RGBLIGHT_EFFECT_KNIGHT +//# define RGBLIGHT_EFFECT_CHRISTMAS +//# define RGBLIGHT_EFFECT_STATIC_GRADIENT +//# define RGBLIGHT_EFFECT_RGB_TEST +//# define RGBLIGHT_EFFECT_ALTERNATING +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +//#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/specskeys/info.json b/keyboards/specskeys/info.json new file mode 100644 index 0000000000..237b3fbccc --- /dev/null +++ b/keyboards/specskeys/info.json @@ -0,0 +1,12 @@ +{ + "keyboard_name": "specskeys", + "url": "", + "maintainer": "qmk", + "width": 18.5, + "height": 7, + "layouts": { + "LAYOUT": { + "layout": [{"label":"ESC", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"Druck", "x":15.5, "y":0}, {"label":"Rollen", "x":16.5, "y":0}, {"label":"Pause", "x":17.5, "y":0}, {"label":"\u00b0", "x":0, "y":2}, {"label":"!", "x":1, "y":2}, {"label":"\"", "x":2, "y":2}, {"label":"\u00a7", "x":3, "y":2}, {"label":"$", "x":4, "y":2}, {"label":"%", "x":5, "y":2}, {"label":"&", "x":6, "y":2}, {"label":"/", "x":7, "y":2}, {"label":"(", "x":8, "y":2}, {"label":")", "x":9, "y":2}, {"label":"=", "x":10, "y":2}, {"label":"?", "x":11, "y":2}, {"label":"`", "x":12, "y":2}, {"label":"\u2b60", "x":13, "y":2, "w":2}, {"label":"Einfg", "x":15.5, "y":2}, {"label":"Pos1", "x":16.5, "y":2}, {"label":"Bild", "x":17.5, "y":2}, {"label":"\u2b7e", "x":0, "y":3}, {"label":"Q", "x":1.5, "y":3}, {"label":"W", "x":2.5, "y":3}, {"label":"E", "x":3.5, "y":3}, {"label":"R", "x":4.5, "y":3}, {"label":"T", "x":5.5, "y":3}, {"label":"Z", "x":6.5, "y":3}, {"label":"U", "x":7.5, "y":3}, {"label":"I", "x":8.5, "y":3}, {"label":"O", "x":9.5, "y":3}, {"label":"P", "x":10.5, "y":3}, {"label":"\u00dc", "x":11.5, "y":3}, {"label":"*", "x":12.5, "y":3}, {"label":"\u2ba0", "x":13.75, "y":3, "w":1.25, "h":2}, {"label":"Entf", "x":15.5, "y":3}, {"label":"Ende", "x":16.5, "y":3}, {"label":"Bild", "x":17.5, "y":3}, {"x":0, "y":4, "w":1.75}, {"label":"A", "x":1.75, "y":4}, {"label":"S", "x":2.75, "y":4}, {"label":"D", "x":3.75, "y":4}, {"label":"F", "x":4.75, "y":4}, {"label":"G", "x":5.75, "y":4}, {"label":"H", "x":6.75, "y":4}, {"label":"J", "x":7.75, "y":4}, {"label":"K", "x":8.75, "y":4}, {"label":"L", "x":9.75, "y":4}, {"label":"\u00d6", "x":10.75, "y":4}, {"label":"\u00c4", "x":11.75, "y":4}, {"label":"'", "x":12.75, "y":4}, {"label":"\u21e7", "x":0, "y":5, "w":1.25}, {"label":">", "x":1.25, "y":5}, {"label":"Y", "x":2.25, "y":5}, {"label":"X", "x":3.25, "y":5}, {"label":"C", "x":4.25, "y":5}, {"label":"V", "x":5.25, "y":5}, {"label":"B", "x":6.25, "y":5}, {"label":"N", "x":7.25, "y":5}, {"label":"M", "x":8.25, "y":5}, {"label":";", "x":9.25, "y":5}, {"label":":", "x":10.25, "y":5}, {"label":"_", "x":11.25, "y":5}, {"label":"\u21e7", "x":12.25, "y":5, "w":2.75}, {"label":"\u2191", "x":16.5, "y":5}, {"label":"Strg", "x":0, "y":6, "w":1.5}, {"label":"\u2630", "x":1.5, "y":6}, {"label":"Alt", "x":2.5, "y":6, "w":1.5}, {"x":4, "y":6, "w":7}, {"label":"Alt Gr", "x":11, "y":6, "w":1.5}, {"label":"Fn", "x":12.5, "y":6}, {"label":"Strg", "x":13.5, "y":6, "w":1.5}, {"label":"\u2190", "x":15.5, "y":6}, {"label":"\u2193", "x":16.5, "y":6}, {"label":"\u2192", "x":17.5, "y":6}] + } + } +} diff --git a/keyboards/specskeys/keymaps/default/keymap.c b/keyboards/specskeys/keymaps/default/keymap.c new file mode 100644 index 0000000000..cdd06eb63d --- /dev/null +++ b/keyboards/specskeys/keymaps/default/keymap.c @@ -0,0 +1,38 @@ +/* Copyright 2021 Nico + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* 0: Winkey */ + LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,KC_SLCK,KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL,KC_BSPC, KC_INS,KC_HOME,KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC,KC_RBRC, KC_DEL, KC_END,KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT,KC_NUHS, KC_ENT, + KC_LSFT,KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH,KC_RSFT, KC_UP, + KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT, MO(1),KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT + ), + + /* 2: Fn */ + LAYOUT( + KC_TRNS, BL_ON, BL_OFF,BL_STEP,BL_BRTG,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS + ) +}; diff --git a/keyboards/specskeys/keymaps/default/readme.md b/keyboards/specskeys/keymaps/default/readme.md new file mode 100644 index 0000000000..b704e67e8f --- /dev/null +++ b/keyboards/specskeys/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for specskeys diff --git a/keyboards/specskeys/readme.md b/keyboards/specskeys/readme.md new file mode 100644 index 0000000000..59398711c1 --- /dev/null +++ b/keyboards/specskeys/readme.md @@ -0,0 +1,41 @@ +# specs_keys - REV 1 +* Keyboard Maintainer: [specs32](https://github.com/yourusername) + +##### TKL ISO keyboard based on an g80-3000HAD + +###### Used Hardware : + - ATMega 32U4 @ 8 MHz + - USB-C jack **with FUSE and full ESD protection** + - MOSFET controlled bottom backlighting pads for 14 LEDs with resistors plus 2 extra 2mm connectors for lantern style lightning + - Scroll and caps indicators (active low) + - SPI interface and reset button + - Cherry MX Black Switches + + +##### Build instructions: + +> qmk_firmware [master] » qmk compile -kb specskeys -km default + +> % avrdude -c usbasp -p m32u4 -B10 -U lfuse:w:0xD2:m -U hfuse:w:0x98:m -U efuse:w:0xFF:m + +> % avrdude -c usbasp -pm32u4 -B10 -Uflash:w:.build/specskeys_default.hex + + +designed with kicad nightly Version: (5.99.0-10004-g132ec37b56), release build + +and some gimp + +License on the KiCAD Design files : ♥ CC-BY-SA-4.0 + +All other parts of this build inherit their Licenses from their origin. + +If you want one, please contact me per mail. (Git profile) + +![3d-VIEW](https://github.com/specs32/specs_keys/blob/main/gh80-3003-nicosmod/gh80-3003-nicosmod.png) + +![PCB](https://github.com/specs32/specs_keys/blob/main/gh80-3003-nicosmod/pcb.png) + +![FOTO1](https://github.com/specs32/specs_keys/blob/main/photo_2021-05-04_18-33-33.jpg) + +![FOTO2](https://github.com/specs32/specs_keys/blob/main/photo_2021-05-04_18-33-43.jpg) + diff --git a/keyboards/specskeys/rules.mk b/keyboards/specskeys/rules.mk new file mode 100644 index 0000000000..b7ef81c3f2 --- /dev/null +++ b/keyboards/specskeys/rules.mk @@ -0,0 +1,25 @@ +# MCU name +MCU = atmega32u4 + +# Processor frequency +F_CPU = 8000000 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/specskeys/specskeys.c b/keyboards/specskeys/specskeys.c new file mode 100644 index 0000000000..36b1dbc311 --- /dev/null +++ b/keyboards/specskeys/specskeys.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Nico + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "specskeys.h" diff --git a/keyboards/specskeys/specskeys.h b/keyboards/specskeys/specskeys.h new file mode 100644 index 0000000000..744134dfcb --- /dev/null +++ b/keyboards/specskeys/specskeys.h @@ -0,0 +1,44 @@ +/* Copyright 2021 Nico + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, \ + K500, K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, \ + K501, K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K213, K214, K215, \ + K502, K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K212, \ + K503, K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, \ + K504, K505, K506, K507, K508, K509, K510, K512, K513, K514 \ +) \ +{ \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311 }, \ + { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, KC_NO, KC_NO, K412 }, \ + { K500, K501, K502, K503, K504, K505, K506, K507, KC_NO, K508, K509, K510, KC_NO, K512, K513, K514 } \ +} From 4c13de9b45f8241bc5ec7ce6e40061275b7781b4 Mon Sep 17 00:00:00 2001 From: Ciutadellla Date: Sun, 16 May 2021 02:14:50 +0200 Subject: [PATCH 387/613] [Keymap] Reviung41_Ciutadellla (#12668) --- .../reviung41/keymaps/ciutadellla/config.h | 29 ++ .../reviung41/keymaps/ciutadellla/keymap.c | 333 ++++++++++++++++++ .../reviung41/keymaps/ciutadellla/rules.mk | 10 + 3 files changed, 372 insertions(+) create mode 100644 keyboards/reviung41/keymaps/ciutadellla/config.h create mode 100644 keyboards/reviung41/keymaps/ciutadellla/keymap.c create mode 100644 keyboards/reviung41/keymaps/ciutadellla/rules.mk diff --git a/keyboards/reviung41/keymaps/ciutadellla/config.h b/keyboards/reviung41/keymaps/ciutadellla/config.h new file mode 100644 index 0000000000..920c317e4b --- /dev/null +++ b/keyboards/reviung41/keymaps/ciutadellla/config.h @@ -0,0 +1,29 @@ +/* Copyright 2021 @Ciutadellla + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once +#define RGBLIGHT_LAYERS +#ifdef RGB_DI_PIN + // /*== all animations enable ==*/ + //#define RGBLIGHT_ANIMATIONS + // /*== or choose animations ==*/ + #define RGBLIGHT_EFFECT_BREATHING + #define RGBLIGHT_EFFECT_RAINBOW_MOOD + #define RGBLIGHT_EFFECT_RAINBOW_SWIRL +#endif + +#define TAPPING_TERM 200 +#define UNICODE_SELECTED_MODES UC_MAC, UC_LNX, UC_WINC diff --git a/keyboards/reviung41/keymaps/ciutadellla/keymap.c b/keyboards/reviung41/keymaps/ciutadellla/keymap.c new file mode 100644 index 0000000000..a35b677197 --- /dev/null +++ b/keyboards/reviung41/keymaps/ciutadellla/keymap.c @@ -0,0 +1,333 @@ +/* Copyright 2021 @Ciutadellla + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + + + #include QMK_KEYBOARD_H + + enum layer_names { + _BASE, + _LOWER, + _RAISE, + _MOVE, + _ADJUST + }; + + //UNICODES + #include "process_unicode.h" + + enum unicode_names { + CKC_EUR, + N_TILDE, + COMB_ACUTE_ACCENT, + GRINNING_FACE, // 😃 + BEAMING_FACE, // 😠+ GRINNING_FACE_WITH_SWEAT, // 😅 + ROLLING_LAUGHING, // 🤣 + FACE_TEARS_JOY, // 😂 + WINKING_FACE, // 😉 + SMILING_FACE_HALO, // 😇 + SMILING_FACE_HEARTS, // 🥰 + SMILING_FACE_HEART_EYES, // 😠+ FACE_BLOWING_KISS, // 😘 + FACE_SAVORING_FOOD, // 😋 + ZANY_FACE, // 🤪 + HUGGING_FACE, // 🤗 + SHUSHING_FACE, // 🤫 + THINKING_FACE, // 🤔 + FACE_RAISED_EYEBROW, // 🤨 + NEUTRAL_FACE, // 😠+ SMIRKING_FACE, // 😠+ FACE_ROLLING_EYES, // 🙄 + PENSIVE_FACE, // 😔 + FACE_VOMITING, // 🤮 + WOOZY_FACE, // 🥴 + PLEADING_FACE, // 🥺 + LOUDLY_CRYING_FACE, // 😭 + DISAPPOINTED_FACE, // 😞 + FACE_SYMBOLS_MOUTH, // 🤬 + SMILING_FACE_HORNS, // 😈 + SKULL, // 💀 + PILE_POO, // 💩 + GHOST, // 👻 + ALIEN_MONSTER, // 👾 + RED_HEART, // ⤠+ BOMB, // 💣 + WAVING_HAND, // 👋 + OK_HAND, // 👌 + CLAPPING_HANDS, // 👠+ EYES, // 👀 + MAN_FACEPALMING, // 🤦 + TURTLE, // 🢠+ SNAKE, // ðŸ + SPOUTING_WHALE, // 🳠+ DRAGON, // 🉠+ TREX, // 🦖 + THUMBSDOWN, // 👠+ THUMBSUP, // 👎 + }; + + //https://unicode-table.com/en/#00F1 + const uint32_t PROGMEM unicode_map[] = { + [CKC_EUR] = 0x20AC, //€ + [N_TILDE] = 0x00F1, // ñ + [COMB_ACUTE_ACCENT] = 0x0301, // ´ + [GRINNING_FACE] = 0x1F603, + [BEAMING_FACE] = 0x1F601, + [GRINNING_FACE_WITH_SWEAT] = 0x1F605, + [ROLLING_LAUGHING] = 0x1F923, + [FACE_TEARS_JOY] = 0x1F602, + [WINKING_FACE] = 0x1F609, + [SMILING_FACE_HALO] = 0x1F607, + [SMILING_FACE_HEARTS] = 0x1F970, + [SMILING_FACE_HEART_EYES] = 0x1F60D, + [FACE_BLOWING_KISS] = 0x1F618, + [FACE_SAVORING_FOOD] = 0x1F60B, + [ZANY_FACE] = 0x1F92A, + [HUGGING_FACE] = 0x1F917, + [SHUSHING_FACE] = 0x1F92B, + [THINKING_FACE] = 0x1F914, + [FACE_RAISED_EYEBROW] = 0x1F928, + [NEUTRAL_FACE] = 0x1F610, + [SMIRKING_FACE] = 0x1F60F, + [FACE_ROLLING_EYES] = 0x1F644, + [PENSIVE_FACE] = 0x1F614, + [FACE_VOMITING] = 0x1F92E, + [WOOZY_FACE] = 0x1F974, + [PLEADING_FACE] = 0x1F97A, + [LOUDLY_CRYING_FACE] = 0x1F62D, + [DISAPPOINTED_FACE] = 0x1F61E, + [FACE_SYMBOLS_MOUTH] = 0x1F92C, + [SMILING_FACE_HORNS] = 0x1F608, + [SKULL] = 0x1F480, + [PILE_POO] = 0x1F4A9, + [GHOST] = 0x1F47B, + [ALIEN_MONSTER] = 0x1F47E, + [RED_HEART] = 0x2764, + [BOMB] = 0x1F4A3, + [WAVING_HAND] = 0x1F44B, + [OK_HAND] = 0x1F44C, + [CLAPPING_HANDS] = 0x1F44F, + [EYES] = 0x1F440, + [MAN_FACEPALMING] = 0x1F926, + [TURTLE] = 0x1F422, + [SNAKE] = 0x1F40D, + [SPOUTING_WHALE] = 0x1F433, + [DRAGON] = 0x1F409, + [TREX] = 0x1F996, + [THUMBSDOWN] = 0x1F44E, + [THUMBSUP] = 0x1F44D, + }; + + + void matrix_init_user(){ + set_unicode_input_mode(UC_MAC); + } + + + // Shortcut to make keymap more readable + #define KC_OSX_EJECT 0x66 + #define LOCK_OSX LSFT(LCTL(KC_OSX_EJECT)) + #define SLEEP_OSX LALT(LGUI(KC_OSX_EJECT)) + #define KC_C_LF RCTL(KC_LEFT) // control + left + #define KC_C_RT RCTL(KC_RGHT) // control + right + + // tap dance declarations + enum { + _TD_TAB_ESC = 0, + _TD_BSPC_WDEL, + _TD_SFT_CAPS, + _TD_SPC_ENT, + _TD_N_NTILDE, + _TD_CTRL_LANG, + _TD_SCLN_NTILDE + }; + + #define TD_TAB_ESC TD(_TD_TAB_ESC) + #define TD_BSPC_WDEL TD(_TD_BSPC_WDEL) + #define TD_SFT_CAPS TD(_TD_SFT_CAPS) + #define TD_SPC_ENT TD(_TD_SPC_ENT) + #define TD_N_NTILDE TD(_TD_N_NTILDE) + #define TD_CTRL_LANG TD(_TD_CTRL_LANG) + #define TD_SCLN_NTILDE TD(_TD_SCLN_NTILDE) //TP with costum keycodes has to be a funtion + + void td_scln_ntilde(qk_tap_dance_state_t *state, void *user_data) { + if (state->count == 1) { + register_code(KC_SCLN); + unregister_code(KC_SCLN); + } else { + send_unicode_string("ñ"); + } + reset_tap_dance(state); + } + + // Tap Dance Definitions + qk_tap_dance_action_t tap_dance_actions[] = { + [_TD_TAB_ESC] = ACTION_TAP_DANCE_DOUBLE(KC_TAB, KC_ESC), + [_TD_BSPC_WDEL] = ACTION_TAP_DANCE_DOUBLE(KC_BSPC, LALT(KC_BSPC)), + [_TD_SFT_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_LSFT, KC_CAPS), + [_TD_SPC_ENT] = ACTION_TAP_DANCE_DOUBLE(KC_SPC, KC_ENT), + [_TD_CTRL_LANG] = ACTION_TAP_DANCE_DOUBLE(KC_LCTL, LCTL(LSFT(KC_SPACE))), + [_TD_SCLN_NTILDE] = ACTION_TAP_DANCE_FN(td_scln_ntilde), + }; + + + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + + /* Qwerty 0 + * ,-----------------------------------------+ +-----------------------------------------. + * | Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp | + * |------+------+------+------+------+------+ +------+------+------+------+------+------| + * |CtlLNG| A | S | D | F | G | | H | J | K | L | ; | " | + * |------+------+------+------+------+------+ +------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | | N | M | , | . | / | Shift| + * |------+------+------+------+------+------+ +------+------+------+------+------+------| + * | GUI | Lower| Space | Raise| Alt | + * +-------------/ \--------------+ + */ + [_BASE] = LAYOUT_reviung41(TD_TAB_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, TD_BSPC_WDEL, TD_CTRL_LANG, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, TD_SCLN_NTILDE, KC_QUOT, TD_SFT_CAPS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, RSFT_T(KC_ENT), KC_LGUI, MO(1), TD_SPC_ENT, MO(2), LT(4,KC_NO)), + + + /* LOWER 1 + * ,-----------------------------------------+ +-----------------------------------------. + * | Tab | ! | @ | # | $ | % | | ^ | & | * | () | ) | Del | + * |------+------+------+------+------+------+ +------+------+------+------+------+------| + * | Ctl | _ | + | {} | } | | | | LEFT | DOWN | UP | RIGHT| ´ | " | + * |------+------+------+------+------+------+ +------+------+------+------+------+------| + * | Shift| Esc | Gui | Alt | = | "" | | HOME | END | PGUP | PDOWN| / | Shft | + * |------+------+------+------+------+------+ +------+------+------+------+------+------| + * | GUI | Lower| Space | Raise| Alt | + * +-------------/ \--------------+ + */ + [_LOWER] = LAYOUT_reviung41(KC_TRNS, 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_ESC, KC_LGUI, KC_LALT, KC_LCTL, KC_TRNS, KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_PSCR, MT(MOD_LSFT | MOD_RSFT,KC_SPC), KC_TRNS, KC_TRNS, KC_ENT, MO(3), KC_TRNS), + + /* Raise 2 + * ,-----------------------------------------+ +-----------------------------------------. + * | | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | DEL | + * |------+------+------+------+------+------+ +------+------+------+------+------+------| + * | | MINS | EQL | LBRC | RBRC | BSLS | | F1 | F2 | F3 | F4 | F5 | F6 | + * |------+------+------+------+------+------+ +------+------+------+------+------+------| + * | | | | | | QUOT | | F7 | F8 | F9 | F10 | F11 | F12 | + * |------+------+------+------+------+------+ +------+------+------+------+------+------| + * | ____ | MO(3)| BSPC | ____ | ____ | + * +-------------/ \--------------+ + */ + + // [_RAISE] = LAYOUT_reviung41( + // KC_TRNS, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, KC_P6, KC_P7, KC_P8, KC_P9, KC_P0, KC_DEL, + // KC_TRNS, KC_LPRN, KC_RPRN, KC_LT, KC_GT, KC_AMPR, KC_PMNS, KC_PPLS, KC_HASH, KC_PERC, KC_COLN, KC_PEQL, + // KC_TRNS, KC_LCBR, KC_RCBR, KC_SLSH, KC_RO, KC_PIPE, KC_PSLS, KC_PAST, KC_PCMM, KC_PDOT, KC_HASH, KC_PENT, + // KC_TRNS, MO(3), KC_BSPC, KC_TRNS, KC_TRNS + // ), + + [_RAISE] = LAYOUT_reviung41( + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_P7, KC_P8, KC_P9, KC_P0, KC_PPLS, KC_PMNS, + KC_COLN, KC_DQUO, KC_LCBR, KC_RCBR, KC_LT, KC_GT, KC_P4, KC_P5, KC_P6, KC_PERC, KC_PAST, KC_PSLS, + KC_AMPR, KC_PIPE, KC_LPRN, KC_RPRN, KC_LBRC, KC_RBRC, KC_P1, KC_P2, KC_P3, KC_PCMM, KC_PDOT, KC_PEQL, + KC_TRNS, MO(3), KC_PENT, KC_TRNS, KC_TRNS + ), + + + /* _MOVE 3 + * ,---------------------------------------------------+ +------------------------------------------. + * | | | | | | | | | WHD | WHU | | | LOCK | + * |-------+-------+-------+---------+-------+---------+ +------+------+------+------+------+-------| + * | | | | | | | | M_L | M_D | M_I | M_R | | SLEEP | + * |-------+-------+-------+---------+-------+---------+ +------+------+------+------+------+-------| + * | | | | | SCRLFT| SCRRGHT | | M_B1 | M_B2| M0 | M2 | | RESET | + * |-------+-------+-------+---------+-------+---------+ +------+------+------+------+------+-------| + * | ____ | ____ | BSPC | ____ | ____ | + * +-------------/ \--------------+ + */ + [_MOVE] = LAYOUT_reviung41(KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, KC_ACL2, LOCK_OSX, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_ACL0, SLEEP_OSX, KC_F13, KC_F14, KC_F15, KC_F16, KC_C_LF, KC_C_RT, KC_BTN1, KC_BTN2, KC_BTN3, KC_BTN4, KC_BTN5, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + /* _ADJUST 4 + * ,----------------------------------------+ +---------------------------------------------------. + * | 😃 | 😅 | 🤣 | 😉 | 😇 | 🥰 | | RGBUP | HUEUP | RGB_MOD | BRIU | PLAY | VOLU | + * |------+-----+------+------+------+------+ +-------+--------+----------+-------+-------+------| + * | 😠| 😘 | 🙄 | 😔 | 😭 | 💩 | | RGBDWN| HUEDWN | RGB_TOG | BRID | STOP | VOLD | + * |------+-----+------+------+------+------+ +-------+--------+----------+--------+------+------| + * | 👠| 👎 | 👠| 👀 | 🤦 | 👻 | | RGB_TG| | | | | MUTE | + * |------+------+------+------+------+------+ +-------+--------+----------+--------+------+------| + * | GUI | Lower| BSPC | Raise| Alt | + * +-------------/ \--------------+ + */ + + [_ADJUST] = LAYOUT_reviung41(X(GRINNING_FACE), X(GRINNING_FACE_WITH_SWEAT), X(ROLLING_LAUGHING), X(WINKING_FACE), X(SMILING_FACE_HALO), X(SMILING_FACE_HEARTS), RGB_VAI, RGB_HUI, RGB_MOD, KC_BRIU, KC_MPLY, KC_VOLU, X(SMILING_FACE_HEART_EYES), X(FACE_BLOWING_KISS), X(FACE_ROLLING_EYES), X(PENSIVE_FACE), X(LOUDLY_CRYING_FACE), X(PILE_POO), RGB_VAD, RGB_HUD, RGB_RMOD, KC_BRID, KC_MSTP, KC_VOLD, X(THUMBSUP), X(THUMBSDOWN), X(CLAPPING_HANDS), X(EYES), X(MAN_FACEPALMING), X(GHOST), RGB_TOG, RGB_SAD, RGB_SAI, RGB_SPD, RGB_SPI, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) + + }; + + + + #ifdef RGBLIGHT_ENABLE + // RGB LED Indicators + const rgblight_segment_t PROGMEM my_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 11, HSV_RED} // Light 1 LED, starting with LED 0 + ); + + // RGB LED Indicators + const rgblight_segment_t PROGMEM my_base_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 11, HSV_CYAN} // Light 1 LED, starting with LED 0 + ); + + const rgblight_segment_t PROGMEM my_lower_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 11, HSV_GREEN} // Light 1 LED, starting with LED 1 + ); + + // RGB LED Indicators + const rgblight_segment_t PROGMEM my_rise_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 11, HSV_MAGENTA} // Light 1 LED, starting with LED 0 + ); + + // RGB LED Indicators + const rgblight_segment_t PROGMEM my_MOVE_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 11, HSV_YELLOW} // Light 1 LED, starting with LED 0 + ); + + + // RGB LED Indicators + const rgblight_segment_t PROGMEM my_ADJUST_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 11, HSV_AZURE} // Light 1 LED, starting with LED 0 + ); + + // Now define the array of layers. Later layers take precedence + const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST( + my_base_layer, // 0 + my_lower_layer, // 1 + my_rise_layer, // 2 + my_MOVE_layer, // 3 + my_ADJUST_layer, // 4 + my_capslock_layer // 5 + ); + + // Enable the LED layers + void keyboard_post_init_user(void) { + rgblight_layers = my_rgb_layers; + } + + layer_state_t layer_state_set_user(layer_state_t state) { + rgblight_set_layer_state(1, layer_state_cmp(state, _LOWER)); + rgblight_set_layer_state(2, layer_state_cmp(state, _RAISE)); + rgblight_set_layer_state(3, layer_state_cmp(state, _MOVE)); + rgblight_set_layer_state(4, layer_state_cmp(state, _ADJUST)); + return state; + } + + bool led_update_user(led_t led_state) { + rgblight_set_layer_state(5, led_state.caps_lock); + return true; + } + #endif + diff --git a/keyboards/reviung41/keymaps/ciutadellla/rules.mk b/keyboards/reviung41/keymaps/ciutadellla/rules.mk new file mode 100644 index 0000000000..eeafc12006 --- /dev/null +++ b/keyboards/reviung41/keymaps/ciutadellla/rules.mk @@ -0,0 +1,10 @@ +# MCU name +MCU = atmega32u4 +BOOTLOADER = atmel-dfu +MOUSEKEY_ENABLE = yes # Mouse keys +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +UNICODEMAP_ENABLE = yes # Unicode +TAP_DANCE_ENABLE = yes From 0876bdf1a37b16200c1d436aecc9b78de83921c8 Mon Sep 17 00:00:00 2001 From: Sleepdealer <35879391+Sleepdealr@users.noreply.github.com> Date: Sat, 15 May 2021 20:18:29 -0400 Subject: [PATCH 388/613] [Keyboard] Add SiddersKB Majbritt Rev2 (#12598) --- .../sidderskb/majbritt/keymaps/via/keymap.c | 34 ------------ .../sidderskb/majbritt/keymaps/via/rules.mk | 2 - .../sidderskb/majbritt/{ => rev1}/config.h | 0 .../sidderskb/majbritt/{ => rev1}/info.json | 0 .../{ => rev1}/keymaps/default/keymap.c | 0 .../{ => rev1}/keymaps/default/readme.md | 0 .../sidderskb/majbritt/{ => rev1}/readme.md | 2 +- .../majbritt/{majbritt.c => rev1/rev1.c} | 2 +- .../majbritt/{majbritt.h => rev1/rev1.h} | 0 .../sidderskb/majbritt/{ => rev1}/rules.mk | 0 keyboards/sidderskb/majbritt/rev2/config.h | 48 ++++++++++++++++ keyboards/sidderskb/majbritt/rev2/info.json | 12 ++++ .../majbritt/rev2/keymaps/default/keymap.c | 55 +++++++++++++++++++ .../majbritt/rev2/keymaps/default/readme.md | 1 + keyboards/sidderskb/majbritt/rev2/readme.md | 13 +++++ keyboards/sidderskb/majbritt/rev2/rev2.c | 17 ++++++ keyboards/sidderskb/majbritt/rev2/rev2.h | 41 ++++++++++++++ keyboards/sidderskb/majbritt/rev2/rules.mk | 24 ++++++++ 18 files changed, 213 insertions(+), 38 deletions(-) delete mode 100644 keyboards/sidderskb/majbritt/keymaps/via/keymap.c delete mode 100644 keyboards/sidderskb/majbritt/keymaps/via/rules.mk rename keyboards/sidderskb/majbritt/{ => rev1}/config.h (100%) rename keyboards/sidderskb/majbritt/{ => rev1}/info.json (100%) rename keyboards/sidderskb/majbritt/{ => rev1}/keymaps/default/keymap.c (100%) rename keyboards/sidderskb/majbritt/{ => rev1}/keymaps/default/readme.md (100%) rename keyboards/sidderskb/majbritt/{ => rev1}/readme.md (92%) rename keyboards/sidderskb/majbritt/{majbritt.c => rev1/rev1.c} (97%) rename keyboards/sidderskb/majbritt/{majbritt.h => rev1/rev1.h} (100%) rename keyboards/sidderskb/majbritt/{ => rev1}/rules.mk (100%) create mode 100644 keyboards/sidderskb/majbritt/rev2/config.h create mode 100644 keyboards/sidderskb/majbritt/rev2/info.json create mode 100644 keyboards/sidderskb/majbritt/rev2/keymaps/default/keymap.c create mode 100644 keyboards/sidderskb/majbritt/rev2/keymaps/default/readme.md create mode 100644 keyboards/sidderskb/majbritt/rev2/readme.md create mode 100644 keyboards/sidderskb/majbritt/rev2/rev2.c create mode 100644 keyboards/sidderskb/majbritt/rev2/rev2.h create mode 100644 keyboards/sidderskb/majbritt/rev2/rules.mk diff --git a/keyboards/sidderskb/majbritt/keymaps/via/keymap.c b/keyboards/sidderskb/majbritt/keymaps/via/keymap.c deleted file mode 100644 index 21cdd04ed4..0000000000 --- a/keyboards/sidderskb/majbritt/keymaps/via/keymap.c +++ /dev/null @@ -1,34 +0,0 @@ -/* Copyright 2020 MechMerlin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include QMK_KEYBOARD_H - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT, KC_PGUP, - KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_PGDN, - KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, - KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_BSPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT - ), - [1] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - -}; diff --git a/keyboards/sidderskb/majbritt/keymaps/via/rules.mk b/keyboards/sidderskb/majbritt/keymaps/via/rules.mk deleted file mode 100644 index 36b7ba9cbc..0000000000 --- a/keyboards/sidderskb/majbritt/keymaps/via/rules.mk +++ /dev/null @@ -1,2 +0,0 @@ -VIA_ENABLE = yes -LTO_ENABLE = yes diff --git a/keyboards/sidderskb/majbritt/config.h b/keyboards/sidderskb/majbritt/rev1/config.h similarity index 100% rename from keyboards/sidderskb/majbritt/config.h rename to keyboards/sidderskb/majbritt/rev1/config.h diff --git a/keyboards/sidderskb/majbritt/info.json b/keyboards/sidderskb/majbritt/rev1/info.json similarity index 100% rename from keyboards/sidderskb/majbritt/info.json rename to keyboards/sidderskb/majbritt/rev1/info.json diff --git a/keyboards/sidderskb/majbritt/keymaps/default/keymap.c b/keyboards/sidderskb/majbritt/rev1/keymaps/default/keymap.c similarity index 100% rename from keyboards/sidderskb/majbritt/keymaps/default/keymap.c rename to keyboards/sidderskb/majbritt/rev1/keymaps/default/keymap.c diff --git a/keyboards/sidderskb/majbritt/keymaps/default/readme.md b/keyboards/sidderskb/majbritt/rev1/keymaps/default/readme.md similarity index 100% rename from keyboards/sidderskb/majbritt/keymaps/default/readme.md rename to keyboards/sidderskb/majbritt/rev1/keymaps/default/readme.md diff --git a/keyboards/sidderskb/majbritt/readme.md b/keyboards/sidderskb/majbritt/rev1/readme.md similarity index 92% rename from keyboards/sidderskb/majbritt/readme.md rename to keyboards/sidderskb/majbritt/rev1/readme.md index b1445c681c..8d976df4a4 100644 --- a/keyboards/sidderskb/majbritt/readme.md +++ b/keyboards/sidderskb/majbritt/rev1/readme.md @@ -8,6 +8,6 @@ An Alice style keyboard with arrow keys. Make example for this keyboard (after setting up your build environment): - make sidderskb/majbritt:default + make sidderskb/majbritt/rev1:default See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/sidderskb/majbritt/majbritt.c b/keyboards/sidderskb/majbritt/rev1/rev1.c similarity index 97% rename from keyboards/sidderskb/majbritt/majbritt.c rename to keyboards/sidderskb/majbritt/rev1/rev1.c index e0fe370b84..79b2c9e601 100644 --- a/keyboards/sidderskb/majbritt/majbritt.c +++ b/keyboards/sidderskb/majbritt/rev1/rev1.c @@ -13,7 +13,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -#include "majbritt.h" +#include "rev1.h" diff --git a/keyboards/sidderskb/majbritt/majbritt.h b/keyboards/sidderskb/majbritt/rev1/rev1.h similarity index 100% rename from keyboards/sidderskb/majbritt/majbritt.h rename to keyboards/sidderskb/majbritt/rev1/rev1.h diff --git a/keyboards/sidderskb/majbritt/rules.mk b/keyboards/sidderskb/majbritt/rev1/rules.mk similarity index 100% rename from keyboards/sidderskb/majbritt/rules.mk rename to keyboards/sidderskb/majbritt/rev1/rules.mk diff --git a/keyboards/sidderskb/majbritt/rev2/config.h b/keyboards/sidderskb/majbritt/rev2/config.h new file mode 100644 index 0000000000..06049727cb --- /dev/null +++ b/keyboards/sidderskb/majbritt/rev2/config.h @@ -0,0 +1,48 @@ +/* +Copyright 2021 Sleepdealer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x534B // SB +#define PRODUCT_ID 0x0001 +#define DEVICE_VER 0x0002 +#define MANUFACTURER SiddersKb +#define PRODUCT Majbritt + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 16 + //0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10, 11, 12, 13, 14 ,15 +#define MATRIX_ROW_PINS { B0, B1, F7, C6, B5} +#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, C7, B6, D6, B4, D4, D7, D5 ,D3, D2, D1, D0} + +#define ENCODERS_PAD_A { B3 } +#define ENCODERS_PAD_B { B7 } + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION diff --git a/keyboards/sidderskb/majbritt/rev2/info.json b/keyboards/sidderskb/majbritt/rev2/info.json new file mode 100644 index 0000000000..2863ceee4e --- /dev/null +++ b/keyboards/sidderskb/majbritt/rev2/info.json @@ -0,0 +1,12 @@ +{ + "keyboard_name": "Majbritt Rev2", + "url": "https://sidderskb.co.uk/", + "maintainer": "Sleepdealr", + "width": 17.5, + "height": 5, + "layouts": { + "LAYOUT": { + "layout": [{"label":"Esc", "x":0.75, "y":0}, {"label":"!", "x":1.75, "y":0}, {"label":"\"", "x":2.75, "y":0}, {"label":"\u00a3", "x":3.75, "y":0}, {"label":"$", "x":4.75, "y":0}, {"label":"%", "x":5.75, "y":0}, {"label":"^", "x":6.75, "y":0}, {"label":"&", "x":8.5, "y":0}, {"label":"*", "x":9.5, "y":0}, {"label":"(", "x":10.5, "y":0}, {"label":")", "x":11.5, "y":0}, {"label":"_", "x":12.5, "y":0}, {"label":"+", "x":13.5, "y":0}, {"label":"|", "x":14.5, "y":0}, {"label":"~", "x":15.5, "y":0}, {"label":"Del", "x":16.5, "y":0}, {"label":"Tab", "x":0.5, "y":1, "w":1.5}, {"label":"Q", "x":2, "y":1}, {"label":"W", "x":3, "y":1}, {"label":"E", "x":4, "y":1}, {"label":"R", "x":5, "y":1}, {"label":"T", "x":6, "y":1}, {"label":"Y", "x":8, "y":1}, {"label":"U", "x":9, "y":1}, {"label":"I", "x":10, "y":1}, {"label":"O", "x":11, "y":1}, {"label":"P", "x":12, "y":1}, {"label":"{", "x":13, "y":1}, {"label":"}", "x":14, "y":1}, {"label":"Enter", "x":15.25, "y":1, "w":1.25, "h":2}, {"label":"Pgup", "x":16.5, "y":1}, {"label":"Caps Lock", "x":0.25, "y":2, "w":1.75}, {"label":"A", "x":2, "y":2}, {"label":"S", "x":3, "y":2}, {"label":"D", "x":4, "y":2}, {"label":"F", "x":5, "y":2}, {"label":"G", "x":6, "y":2}, {"label":"H", "x":8.25, "y":2}, {"label":"J", "x":9.25, "y":2}, {"label":"K", "x":10.25, "y":2}, {"label":"L", "x":11.25, "y":2}, {"label":":", "x":12.25, "y":2}, {"label":"@", "x":13.25, "y":2}, {"label":"~", "x":14.25, "y":2}, {"label":"Pgdn", "x":16.5, "y":2}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"label":"|", "x":1.25, "y":3}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":8.75, "y":3}, {"label":"M", "x":9.75, "y":3}, {"label":"<", "x":10.75, "y":3}, {"label":">", "x":11.75, "y":3}, {"label":"?", "x":12.75, "y":3}, {"label":"Shift", "x":13.75, "y":3, "w":1.75}, {"label":"Up", "x":15.5, "y":3}, {"label":"Fn", "x":16.5, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Alt", "x":3, "y":4, "w":1.5}, {"label":"LSpace", "x":4.5, "y":4, "w":2.25}, {"label":"Fn", "x":6.75, "y":4}, {"label":"RSpace", "x":8.25, "y":4, "w":2.75}, {"label":"AltGr", "x":11, "y":4, "w":1.5}, {"label":"Left", "x":14.5, "y":4}, {"label":"Down", "x":15.5, "y":4}, {"label":"Right", "x":16.5, "y":4}] + } + } +} diff --git a/keyboards/sidderskb/majbritt/rev2/keymaps/default/keymap.c b/keyboards/sidderskb/majbritt/rev2/keymaps/default/keymap.c new file mode 100644 index 0000000000..a91945646e --- /dev/null +++ b/keyboards/sidderskb/majbritt/rev2/keymaps/default/keymap.c @@ -0,0 +1,55 @@ +/* Copyright 2021 Sleepdealer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + +[0] = LAYOUT( //Default layout (currently ISO) + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, KC_PGDN, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_END, + KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT), + +[1] = LAYOUT( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +[2] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +[3] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + +void encoder_update_user(uint8_t index, bool clockwise) { + if (clockwise) { + tap_code(KC_PGDN); + } else { + tap_code(KC_PGUP); + } + +} diff --git a/keyboards/sidderskb/majbritt/rev2/keymaps/default/readme.md b/keyboards/sidderskb/majbritt/rev2/keymaps/default/readme.md new file mode 100644 index 0000000000..8485b90d8e --- /dev/null +++ b/keyboards/sidderskb/majbritt/rev2/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for Majbritt diff --git a/keyboards/sidderskb/majbritt/rev2/readme.md b/keyboards/sidderskb/majbritt/rev2/readme.md new file mode 100644 index 0000000000..55453df643 --- /dev/null +++ b/keyboards/sidderskb/majbritt/rev2/readme.md @@ -0,0 +1,13 @@ +# Majbritt Rev2 + +An Alice style keyboard with arrow keys. + +* Keyboard Maintainer: [Sleepdealer](https://github.com/Sleepdealr) +* Hardware Supported: Majbritt Rev2 PCB +* Hardware Availability: https://sidderskb.co.uk/ + +Make example for this keyboard (after setting up your build environment): + + make sidderskb/majbritt/rev2:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/sidderskb/majbritt/rev2/rev2.c b/keyboards/sidderskb/majbritt/rev2/rev2.c new file mode 100644 index 0000000000..f9120ab2a1 --- /dev/null +++ b/keyboards/sidderskb/majbritt/rev2/rev2.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Sleepdealer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "rev2.h" diff --git a/keyboards/sidderskb/majbritt/rev2/rev2.h b/keyboards/sidderskb/majbritt/rev2/rev2.h new file mode 100644 index 0000000000..a03a2ff105 --- /dev/null +++ b/keyboards/sidderskb/majbritt/rev2/rev2.h @@ -0,0 +1,41 @@ +/* Copyright 2021 Sleepdealer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, \ + K100, K101, K102, K103, K104, K105, K107, K108, K109, K110, K111, K112, K113, K114, K115, \ + K200, K201, K202, K203, K204, K205, K207, K208, K209, K210, K211, K212, K213, K214, K215, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, K315, \ + K400, K403, K404, K405, K408, K410, K413, K414, K415 \ +) {\ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \ + { K100, K101, K102, K103, K104, K105, KC_NO, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \ + { K200, K201, K202, K203, K204, K205, KC_NO, K207, K208, K209, K210, K211, K212, K213, K214, K215 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313, K314, K315 }, \ + { K400, KC_NO, KC_NO, K403, K404, K405, KC_NO, KC_NO, K408, KC_NO, K410, KC_NO, KC_NO, K413, K414, K415 } \ +} diff --git a/keyboards/sidderskb/majbritt/rev2/rules.mk b/keyboards/sidderskb/majbritt/rev2/rules.mk new file mode 100644 index 0000000000..d98e302b36 --- /dev/null +++ b/keyboards/sidderskb/majbritt/rev2/rules.mk @@ -0,0 +1,24 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output + +ENCODER_ENABLE = yes # Encoders From 36ba4806b109e75835115b99dce209f1868d812b Mon Sep 17 00:00:00 2001 From: chalex <68408520+gaclee3b@users.noreply.github.com> Date: Sat, 15 May 2021 20:29:04 -0400 Subject: [PATCH 389/613] [Keyboard] Add merro60 (#12527) Co-authored-by: Drashna Jaelre Co-authored-by: Ryan Co-authored-by: chalex --- keyboards/chlx/merro60/config.h | 58 +++ keyboards/chlx/merro60/info.json | 365 ++++++++++++++++++ keyboards/chlx/merro60/keymaps/ansi/keymap.c | 35 ++ .../chlx/merro60/keymaps/default/keymap.c | 35 ++ keyboards/chlx/merro60/keymaps/hhkb/keymap.c | 35 ++ keyboards/chlx/merro60/keymaps/iso/keymap.c | 35 ++ .../chlx/merro60/keymaps/tsangan/keymap.c | 35 ++ keyboards/chlx/merro60/keymaps/via/keymap.c | 51 +++ keyboards/chlx/merro60/keymaps/via/rules.mk | 3 + keyboards/chlx/merro60/merro60.c | 19 + keyboards/chlx/merro60/merro60.h | 189 +++++++++ keyboards/chlx/merro60/readme.md | 20 + keyboards/chlx/merro60/rules.mk | 22 ++ 13 files changed, 902 insertions(+) create mode 100644 keyboards/chlx/merro60/config.h create mode 100644 keyboards/chlx/merro60/info.json create mode 100644 keyboards/chlx/merro60/keymaps/ansi/keymap.c create mode 100644 keyboards/chlx/merro60/keymaps/default/keymap.c create mode 100644 keyboards/chlx/merro60/keymaps/hhkb/keymap.c create mode 100644 keyboards/chlx/merro60/keymaps/iso/keymap.c create mode 100644 keyboards/chlx/merro60/keymaps/tsangan/keymap.c create mode 100644 keyboards/chlx/merro60/keymaps/via/keymap.c create mode 100644 keyboards/chlx/merro60/keymaps/via/rules.mk create mode 100644 keyboards/chlx/merro60/merro60.c create mode 100644 keyboards/chlx/merro60/merro60.h create mode 100644 keyboards/chlx/merro60/readme.md create mode 100644 keyboards/chlx/merro60/rules.mk diff --git a/keyboards/chlx/merro60/config.h b/keyboards/chlx/merro60/config.h new file mode 100644 index 0000000000..526433ef8f --- /dev/null +++ b/keyboards/chlx/merro60/config.h @@ -0,0 +1,58 @@ +/* +Copyright 2021 Alexander Lee + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4358 // "CX" - chlx +#define PRODUCT_ID 0x0601 +#define DEVICE_VER 0x0100 +#define MANUFACTURER chlx +#define PRODUCT chlx merro60 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ +#define MATRIX_ROW_PINS { D4, D5, D3, B5, F4 } +#define MATRIX_COL_PINS { B7, D1, D0, B0, B1, E6, B2, B3, D2, D7, B4, B6, C6, C7, D6 } +#define UNUSED_PINS +// #define UNUSED_PINS { F0, F1, F5, F6, F7 } + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* VIA related config */ +#define VIA_EEPROM_LAYOUT_OPTIONS_SIZE 2 diff --git a/keyboards/chlx/merro60/info.json b/keyboards/chlx/merro60/info.json new file mode 100644 index 0000000000..8205d4d24c --- /dev/null +++ b/keyboards/chlx/merro60/info.json @@ -0,0 +1,365 @@ +{ + "keyboard_name": "merro60", + "url": "www.github.com/gaclee3b", + "maintainer": "gaclee3b", + "width": 15, + "height": 5, + "layouts": { + "LAYOUT_default": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + {"x": 13.5, "y": 1, "w": 1.5}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2}, + {"x": 13.75, "y": 2, "w": 1.25}, + + {"x": 0, "y": 3, "w": 1.25}, + {"x": 1.25, "y": 3}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3}, + {"x": 12.25, "y": 3, "w": 1.75}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 6.25}, + {"x": 10, "y": 4, "w": 1.25}, + {"x": 11.25, "y": 4, "w": 1.25}, + {"x": 12.5, "y": 4, "w": 1.25}, + {"x": 13.75, "y": 4, "w": 1.25} + ] + }, + "LAYOUT_ansi": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + {"x": 13.5, "y": 1, "w": 1.5}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2, "w": 2.25}, + + {"x": 0, "y": 3, "w": 1.25}, + {"x": 1.25, "y": 3}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3}, + {"x": 12.25, "y": 3, "w": 1.75}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 6.25}, + {"x": 10, "y": 4, "w": 1.25}, + {"x": 11.25, "y": 4, "w": 1.25}, + {"x": 12.5, "y": 4, "w": 1.25}, + {"x": 13.75, "y": 4, "w": 1.25} + ] + }, + "LAYOUT_hhkb": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + {"x": 13.5, "y": 1, "w": 1.5}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2, "w": 2.25}, + + {"x": 0, "y": 3, "w": 2.25}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3}, + {"x": 12.25, "y": 3, "w": 1.75}, + {"x": 14, "y": 3}, + + {"x": 1.5, "y": 4}, + {"x": 2.5, "y": 4, "w": 1.5}, + {"x": 4, "y": 4, "w": 7}, + {"x": 11, "y": 4, "w": 1.5}, + {"x": 12.5, "y": 4} + ] + }, + "LAYOUT_iso": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2}, + {"x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"x": 0, "y": 3, "w": 1.25}, + {"x": 1.25, "y": 3}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3}, + {"x": 12.25, "y": 3, "w": 1.75}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 6.25}, + {"x": 10, "y": 4, "w": 1.25}, + {"x": 11.25, "y": 4, "w": 1.25}, + {"x": 12.5, "y": 4, "w": 1.25}, + {"x": 13.75, "y": 4, "w": 1.25} + ] + }, + "LAYOUT_tsangan": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + {"x": 13.5, "y": 1, "w": 1.5}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2, "w": 2.25}, + + {"x": 0, "y": 3, "w": 2.25}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3}, + {"x": 12.25, "y": 3, "w": 1.75}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.5}, + {"x": 1.5, "y": 4}, + {"x": 2.5, "y": 4, "w": 1.5}, + {"x": 4, "y": 4, "w": 7}, + {"x": 11, "y": 4, "w": 1.5}, + {"x": 12.5, "y": 4}, + {"x": 13.5, "y": 4, "w": 1.5} + ] + } + } +} + diff --git a/keyboards/chlx/merro60/keymaps/ansi/keymap.c b/keyboards/chlx/merro60/keymaps/ansi/keymap.c new file mode 100644 index 0000000000..307f98866e --- /dev/null +++ b/keyboards/chlx/merro60/keymaps/ansi/keymap.c @@ -0,0 +1,35 @@ +/* +Copyright 2021 Alexander Lee + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[0] = LAYOUT_ansi( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL), + +[1] = LAYOUT_ansi( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______, RESET, + _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, KC_DOWN, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______), +}; diff --git a/keyboards/chlx/merro60/keymaps/default/keymap.c b/keyboards/chlx/merro60/keymaps/default/keymap.c new file mode 100644 index 0000000000..98046d0649 --- /dev/null +++ b/keyboards/chlx/merro60/keymaps/default/keymap.c @@ -0,0 +1,35 @@ +/* +Copyright 2021 Alexander Lee + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[0] = LAYOUT_default( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_UP, KC_ENT, + KC_LSFT, KC_LEFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RGHT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_DOWN, KC_RCTL), + +[1] = LAYOUT_default( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, RESET, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, BL_STEP, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______), +}; diff --git a/keyboards/chlx/merro60/keymaps/hhkb/keymap.c b/keyboards/chlx/merro60/keymaps/hhkb/keymap.c new file mode 100644 index 0000000000..3ea2901bd1 --- /dev/null +++ b/keyboards/chlx/merro60/keymaps/hhkb/keymap.c @@ -0,0 +1,35 @@ +/* +Copyright 2021 Alexander Lee + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[0] = LAYOUT_hhkb( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI), + +[1] = LAYOUT_hhkb( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, + KC_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, RESET, + _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, KC_DOWN, _______, _______, + _______, _______, _______, _______, _______), +}; diff --git a/keyboards/chlx/merro60/keymaps/iso/keymap.c b/keyboards/chlx/merro60/keymaps/iso/keymap.c new file mode 100644 index 0000000000..f96ad9adee --- /dev/null +++ b/keyboards/chlx/merro60/keymaps/iso/keymap.c @@ -0,0 +1,35 @@ +/* +Copyright 2021 Alexander Lee + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[0] = LAYOUT_iso( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RGHT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL), + +[1] = LAYOUT_iso( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______), +}; diff --git a/keyboards/chlx/merro60/keymaps/tsangan/keymap.c b/keyboards/chlx/merro60/keymaps/tsangan/keymap.c new file mode 100644 index 0000000000..2083bf9be1 --- /dev/null +++ b/keyboards/chlx/merro60/keymaps/tsangan/keymap.c @@ -0,0 +1,35 @@ +/* +Copyright 2021 Alexander Lee + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[0] = LAYOUT_tsangan( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL), + +[1] = LAYOUT_tsangan( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______), +}; diff --git a/keyboards/chlx/merro60/keymaps/via/keymap.c b/keyboards/chlx/merro60/keymaps/via/keymap.c new file mode 100644 index 0000000000..8f756aefbd --- /dev/null +++ b/keyboards/chlx/merro60/keymaps/via/keymap.c @@ -0,0 +1,51 @@ +/* +Copyright 2021 Alexander Lee + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[0] = LAYOUT_via( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_UP, KC_ENT, + KC_LSFT, KC_LEFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RGHT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_DOWN, KC_RCTL), + +[1] = LAYOUT_via( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, RESET, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, BL_STEP, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______), + +[2] = LAYOUT_via( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______), + +[3] = LAYOUT_via( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______) + +}; + diff --git a/keyboards/chlx/merro60/keymaps/via/rules.mk b/keyboards/chlx/merro60/keymaps/via/rules.mk new file mode 100644 index 0000000000..5f615ff62b --- /dev/null +++ b/keyboards/chlx/merro60/keymaps/via/rules.mk @@ -0,0 +1,3 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes + diff --git a/keyboards/chlx/merro60/merro60.c b/keyboards/chlx/merro60/merro60.c new file mode 100644 index 0000000000..4182c65c76 --- /dev/null +++ b/keyboards/chlx/merro60/merro60.c @@ -0,0 +1,19 @@ +/* +Copyright 2021 Alexander Lee + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "merro60.h" + diff --git a/keyboards/chlx/merro60/merro60.h b/keyboards/chlx/merro60/merro60.h new file mode 100644 index 0000000000..2281129996 --- /dev/null +++ b/keyboards/chlx/merro60/merro60.h @@ -0,0 +1,189 @@ +/* +Copyright 2021 Alexander Lee + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +// Corresponding changes to the layout names and/or definitions must also be made to info.json + +#define XXX KC_NO + +/* //////////////////// LAYOUT_default //////////////////// + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┠+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │0e │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬────┤ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2d │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤ + * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ + * │40 │41 │42 │45 (6.25u) │4a │4b │4c │4d │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ +*/ + +#define LAYOUT_default( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \ + k40, k41, k42, k45, k4a, k4b, k4c, k4d \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, XXX }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, XXX }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, XXX }, \ + { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d, XXX } \ +} + +/* //////////////////// LAYOUT_ansi //////////////////// + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┠+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │0e │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2d │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ + * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3d │3e │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ + * │40 │41 │42 │45 │4a │4b │4d │4e │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ +*/ +#define LAYOUT_ansi( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \ + k40, k41, k42, k45, k4a, k4b, k4c, k4d \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, XXX }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d, XXX }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, XXX }, \ + { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d, XXX } \ +} + +/* //////////////////// LAYOUT_hhkb //////////////////// + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┠+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │0e │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2d │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ + * │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │ + * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ + * │▓▓▓▓▓│41 │42 │45 (7u) │4b │4c │▓▓▓▓▓│ + * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ +*/ +#define LAYOUT_hhkb( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \ + k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \ + k41, k42, k45, k4b, k4c \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, XXX }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d, XXX }, \ + { XXX, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, XXX }, \ + { XXX, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, XXX, k4b, k4c, XXX, XXX } \ +} + +/* //////////////////// LAYOUT_iso //////////////////// + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┠+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │0e │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴â”2d │ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤ + * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ + * │40 │41 │42 │45 │4a │4b │4c │4d │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ +*/ +#define LAYOUT_iso( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \ + k40, k41, k42, k45, k4a, k4b, k4c, k4d \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, XXX, XXX }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, XXX }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, XXX }, \ + { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d, XXX } \ +} + +/* //////////////////// LAYOUT_tsangan //////////////////// + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┠+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │0e │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2d │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ + * │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │ + * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ + * │40 │41 │42 │45 (7u) │4b │4c │4d │ + * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ +*/ +#define LAYOUT_tsangan( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \ + k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \ + k40, k41, k42, k45, k4b, k4c, k4d \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, XXX }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d, XXX }, \ + { XXX, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, XXX }, \ + { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, XXX, k4b, k4c, k4d, XXX } \ +} + +/* //////////////////// LAYOUT_via //////////////////// + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┠+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │0e │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬────┤ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2d │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤ + * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ + * │40 │41 │42 │45 (6.25u) │4a │4b │4c │4d │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ +*/ + +#define LAYOUT_via( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \ + k40, k41, k42, k45, k4a, k4b, k4c, k4d \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, XXX }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, XXX }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, XXX }, \ + { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d, XXX } \ +} + diff --git a/keyboards/chlx/merro60/readme.md b/keyboards/chlx/merro60/readme.md new file mode 100644 index 0000000000..f783c0e438 --- /dev/null +++ b/keyboards/chlx/merro60/readme.md @@ -0,0 +1,20 @@ +# merro60 + +merro60 PCB + +A standard 60% format keyboard pcb with USB-C and unified daughterboard compatibility. +Has modified cutouts to allow usage of certain tray mount cases into gummy gasket o-ring mount. + +Keyboard Maintainer: [Alexander Lee](https://github.com/gaclee3b) +Hardware Supported: chlx PCB merro60.1, merro60.1.1, merro60.1.2 + +Enter bootloader mode by any of the following options - +- When unplugged, holding the top-left key (typically ESC) while plugging in the keyboard +- When plugged in, pressing and releasing the reset button on the pcb bottom behind the CAPSLOCK / A-key region +- When plugged in, shorting out the two reset metal contacts near the spacebar switch location (NOT the spacebar switch pin holes) + +Make example for this keyboard (after setting up your build environment): + + make chlx/merro60:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/chlx/merro60/rules.mk b/keyboards/chlx/merro60/rules.mk new file mode 100644 index 0000000000..32981133b2 --- /dev/null +++ b/keyboards/chlx/merro60/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output From 173aed3d0e7715eb10f3deee01c8081e7255f5ab Mon Sep 17 00:00:00 2001 From: Ross Montsinger Date: Sat, 15 May 2021 20:35:10 -0400 Subject: [PATCH 390/613] [Keyboard] Rebound underglow settings for via (#12268) --- keyboards/montsinger/rebound/rev4/keymaps/via/rules.mk | 1 + keyboards/montsinger/rebound/rev4/rules.mk | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/keyboards/montsinger/rebound/rev4/keymaps/via/rules.mk b/keyboards/montsinger/rebound/rev4/keymaps/via/rules.mk index 36b7ba9cbc..37484844f5 100644 --- a/keyboards/montsinger/rebound/rev4/keymaps/via/rules.mk +++ b/keyboards/montsinger/rebound/rev4/keymaps/via/rules.mk @@ -1,2 +1,3 @@ VIA_ENABLE = yes LTO_ENABLE = yes +RGBLIGHT_ENABLE = yes diff --git a/keyboards/montsinger/rebound/rev4/rules.mk b/keyboards/montsinger/rebound/rev4/rules.mk index aca9f4c9e4..a1c4c481c3 100644 --- a/keyboards/montsinger/rebound/rev4/rules.mk +++ b/keyboards/montsinger/rebound/rev4/rules.mk @@ -31,6 +31,6 @@ LAYOUTS = ortho_4x12 LAYOUTS_HAS_RGB = no # Disable unsupported hardware -RGBLIGHT_SUPPORTED = no +RGBLIGHT_SUPPORTED = yes AUDIO_SUPPORTED = no BACKLIGHT_SUPPORTED = no From a5d7e83985ae07689cc71ab1dd2755a8ac335df3 Mon Sep 17 00:00:00 2001 From: Sife-ops <55699197+Sife-ops@users.noreply.github.com> Date: Sun, 16 May 2021 01:56:46 +0000 Subject: [PATCH 391/613] [Keyboard] Added Perixx Periboard-512 Converter (#12324) Co-authored-by: Drashna Jaelre Co-authored-by: Ryan --- keyboards/converter/periboard_512/config.h | 32 +++++++++++ keyboards/converter/periboard_512/info.json | 10 ++++ .../periboard_512/keymaps/default/keymap.c | 56 +++++++++++++++++++ .../converter/periboard_512/periboard_512.c | 17 ++++++ .../converter/periboard_512/periboard_512.h | 39 +++++++++++++ keyboards/converter/periboard_512/readme.md | 21 +++++++ keyboards/converter/periboard_512/rules.mk | 22 ++++++++ 7 files changed, 197 insertions(+) create mode 100644 keyboards/converter/periboard_512/config.h create mode 100644 keyboards/converter/periboard_512/info.json create mode 100644 keyboards/converter/periboard_512/keymaps/default/keymap.c create mode 100644 keyboards/converter/periboard_512/periboard_512.c create mode 100644 keyboards/converter/periboard_512/periboard_512.h create mode 100644 keyboards/converter/periboard_512/readme.md create mode 100644 keyboards/converter/periboard_512/rules.mk diff --git a/keyboards/converter/periboard_512/config.h b/keyboards/converter/periboard_512/config.h new file mode 100644 index 0000000000..e2fdc74358 --- /dev/null +++ b/keyboards/converter/periboard_512/config.h @@ -0,0 +1,32 @@ +/* Copyright 2021 Sife + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x0000 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Sife +#define PRODUCT Periboard 512 + +/* matrix properties */ +#define MATRIX_COLS 19 +#define MATRIX_ROWS 8 +#define DEBOUNCE 5 +#define MATRIX_HAS_GHOST diff --git a/keyboards/converter/periboard_512/info.json b/keyboards/converter/periboard_512/info.json new file mode 100644 index 0000000000..89e8d75bc4 --- /dev/null +++ b/keyboards/converter/periboard_512/info.json @@ -0,0 +1,10 @@ +{ + "keyboard_name": "Perixx Periboard-512", + "url": "https://github.com/Sife-ops/qmk_firmware/tree/periboard_512/keyboards/converter/periboard_512", + "maintainer": "Sife-ops", + "diode_direction": "ROW2COL", + "matrix_pins": { + "cols": ["B7", "D0", "D1", "D2", "D3", "D4", "D5", "D6", "D7", "E0", "E1", "C0", "C1", "C2", "C3", "C4", "C5", "C6", "C7"], + "rows": ["B6", "B5", "B4", "B3", "B2", "B1", "B0", "E7"] + } +} diff --git a/keyboards/converter/periboard_512/keymaps/default/keymap.c b/keyboards/converter/periboard_512/keymaps/default/keymap.c new file mode 100644 index 0000000000..5d528416f3 --- /dev/null +++ b/keyboards/converter/periboard_512/keymaps/default/keymap.c @@ -0,0 +1,56 @@ +/* Copyright 2021 Sife + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( /* Base layer */ + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + LALT_T(KC_TAB), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, RALT_T(KC_BSLS), KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, + LCTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, RCTL_T(KC_BSPC), KC_P4, KC_P5, KC_P6, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + MO(1), KC_LALT, LGUI_T(KC_F13), KC_SPC, RGUI_T(KC_F13), RALT_T(KC_ENT), KC_HENK, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT + ), + + [1] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, KC_DOWN, KC_ENT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, MO(2), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_PGDN, KC_PGUP, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + /* [<++>] = LAYOUT( */ + /* _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, */ + /* _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, */ + /* _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, */ + /* _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, */ + /* _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, */ + /* _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ */ + /* ), */ + +}; diff --git a/keyboards/converter/periboard_512/periboard_512.c b/keyboards/converter/periboard_512/periboard_512.c new file mode 100644 index 0000000000..11c65e923a --- /dev/null +++ b/keyboards/converter/periboard_512/periboard_512.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Sife + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "periboard_512.h" diff --git a/keyboards/converter/periboard_512/periboard_512.h b/keyboards/converter/periboard_512/periboard_512.h new file mode 100644 index 0000000000..d792642339 --- /dev/null +++ b/keyboards/converter/periboard_512/periboard_512.h @@ -0,0 +1,39 @@ +/* Copyright 2021 Sife + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT( \ + K5A, K5B, K5C, K5D, K5E, K5F, K5G, K5H, K5I, K5J, K5K, K5L, K5M, K5N, K5O, K5P, \ + \ + K4A, K4B, K4C, K4D, K4E, K4F, K4G, K4H, K4I, K4J, K4K, K4L, K4M, K4N, K4O, K4P, K4Q, K4R, K4S, K4T, K4U, \ + K3A, K3B, K3C, K3D, K3E, K3F, K3G, K3H, K3I, K3J, K3K, K3L, K3M, K3N, K3O, K3P, K3Q, K3R, K3S, K3T, K3U, \ + K2A, K2B, K2C, K2D, K2E, K2F, K2G, K2H, K2I, K2J, K2K, K2L, K2M, K2N, K2O, K2P, \ + K1A, K1B, K1C, K1D, K1E, K1F, K1G, K1H, K1I, K1J, K1K, K1L, K1M, K1N, K1O, K1P, K1Q, \ + K0A, K0B, K0C, K0D, K0E, K0F, K0G, K0H, K0I, K0J, K0K, K0L, K0M \ +) \ +{ \ + { KC_NO, K4L, K5I, K4M, KC_NO, K5C, K5B, K4A, K0A, KC_NO, K4F, KC_NO, K4P, K4Q, K3O, K4O, K5J, KC_NO, K4G }, \ + { KC_NO, K4K, K4J, K4I, KC_NO, K4D, K4C, K4B, KC_NO, KC_NO, K4E, K5N, K3P, K3Q, K5L, K5M, K5K, KC_NO, K4H }, \ + { KC_NO, K3K, K3J, K3I, K3H, K3D, K3C, K3B, KC_NO, KC_NO, K3E, K5O, K3U, K3T, K3R, K3S, KC_NO, K0G, KC_NO }, \ + { KC_NO, K2K, K2J, K2I, K2H, K2D, K2C, K2B, KC_NO, KC_NO, K2E, KC_NO, K1Q, K1P, K1N, K1O, K3N, K0B, KC_NO }, \ + { KC_NO, K3L, K5H, K3M, K3G, K5D, K2A, K3A, KC_NO, K1A, K3F, KC_NO, KC_NO, K2P, K2N, K2O, K4N, KC_NO, KC_NO }, \ + { KC_NO, K2L, KC_NO, K5G, K2G, K5E, KC_NO, K5A, KC_NO, KC_NO, K2F, K0C, K1M, K0M, KC_NO, K0L, K5F, KC_NO, KC_NO }, \ + { K0F, KC_NO, K1J, K1I, K1H, K1D, K1C, K1B, K0H, K1L, K1E, KC_NO, K5P, K4T, K4R, K4S, K2M, KC_NO, KC_NO }, \ + { KC_NO, K1K, KC_NO, KC_NO, K1G, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K1F, K0E, K0I, K4U, K0J, K0K, K0D, KC_NO, KC_NO }, \ +} diff --git a/keyboards/converter/periboard_512/readme.md b/keyboards/converter/periboard_512/readme.md new file mode 100644 index 0000000000..026a90154b --- /dev/null +++ b/keyboards/converter/periboard_512/readme.md @@ -0,0 +1,21 @@ +# Periboard-512 + +![Periboard-512](https://i.imgur.com/ohd61TK.jpeg) + +For this project I converted low-cost consumer keyboard to QMK using a Perixx Periboard-512 and a Teensy++ 2.0. + +* Keyboard Maintainer: [Sife-ops](https://github.com/Sife-ops) +* Hardware Supported: Periboard-512, Teensy++ 2.0 +* Hardware Availability: [Periboard-512](https://www.amazon.com/Perixx-PERIBOARD-512-Ergonomic-Split-Keyboard/dp/B075GZVD4T), [Teensy++ 2.0](https://www.pjrc.com/store/teensypp.html) + +Make example for this keyboard (after setting up your build environment): + + make converter/periboard_512:default + +Flashing example for this keyboard: + + make converter/periboard_512:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +[Build guide](https://gist.github.com/Sife-ops/af1916136d641ffee86e8f0f62afc5a4) diff --git a/keyboards/converter/periboard_512/rules.mk b/keyboards/converter/periboard_512/rules.mk new file mode 100644 index 0000000000..c1cb4919a7 --- /dev/null +++ b/keyboards/converter/periboard_512/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = at90usb1286 + +# Bootloader selection +BOOTLOADER = halfkay + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = no # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output From 526fbf0faf5530fa0b62173273e7974dda4e6e79 Mon Sep 17 00:00:00 2001 From: Quentin Date: Mon, 17 May 2021 00:20:26 +0200 Subject: [PATCH 392/613] [Keyboard] Add scylla keyboard (#12720) Co-authored-by: Drashna Jaelre Co-authored-by: Ryan Co-authored-by: bstiq --- keyboards/bastardkb/scylla/config.h | 39 +++++++ keyboards/bastardkb/scylla/info.json | 71 +++++++++++++ .../bastardkb/scylla/keymaps/default/keymap.c | 60 +++++++++++ .../scylla/keymaps/german_gaming/keymap.c | 90 ++++++++++++++++ .../scylla/keymaps/german_gaming/readme.md | 24 +++++ .../scylla/keymaps/german_gaming/rules.mk | 1 + .../bastardkb/scylla/keymaps/xyverz/config.h | 33 ++++++ .../bastardkb/scylla/keymaps/xyverz/keymap.c | 100 ++++++++++++++++++ keyboards/bastardkb/scylla/readme.md | 22 ++++ keyboards/bastardkb/scylla/rules.mk | 23 ++++ keyboards/bastardkb/scylla/scylla.c | 18 ++++ keyboards/bastardkb/scylla/scylla.h | 42 ++++++++ 12 files changed, 523 insertions(+) create mode 100644 keyboards/bastardkb/scylla/config.h create mode 100644 keyboards/bastardkb/scylla/info.json create mode 100644 keyboards/bastardkb/scylla/keymaps/default/keymap.c create mode 100644 keyboards/bastardkb/scylla/keymaps/german_gaming/keymap.c create mode 100644 keyboards/bastardkb/scylla/keymaps/german_gaming/readme.md create mode 100644 keyboards/bastardkb/scylla/keymaps/german_gaming/rules.mk create mode 100644 keyboards/bastardkb/scylla/keymaps/xyverz/config.h create mode 100644 keyboards/bastardkb/scylla/keymaps/xyverz/keymap.c create mode 100644 keyboards/bastardkb/scylla/readme.md create mode 100644 keyboards/bastardkb/scylla/rules.mk create mode 100644 keyboards/bastardkb/scylla/scylla.c create mode 100644 keyboards/bastardkb/scylla/scylla.h diff --git a/keyboards/bastardkb/scylla/config.h b/keyboards/bastardkb/scylla/config.h new file mode 100644 index 0000000000..b00e781df2 --- /dev/null +++ b/keyboards/bastardkb/scylla/config.h @@ -0,0 +1,39 @@ +/* + * Copyright 2021 Quentin LEBASTARD + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once +#include "config_common.h" +#define VENDOR_ID 0xA8F8 +#define PRODUCT_ID 0x1829 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Bastard Keyboards +#define PRODUCT Scylla + +#define MATRIX_ROWS 10 +#define MATRIX_COLS 6 +#define DIODE_DIRECTION ROW2COL +#define MATRIX_ROW_PINS { D7, B5, F7, F6, B6 } +#define MATRIX_COL_PINS { B4, E6, C6, B1, B3, B2 } + +#define RGB_DI_PIN D2 +#define RGBLED_NUM 58 +#define RGBLED_SPLIT { 29, 29 } +#define RGBLIGHT_LIMIT_VAL 120 +#define RGBLIGHT_ANIMATIONS +#define DEBOUNCE 5 +#define SOFT_SERIAL_PIN D0 +#define MASTER_RIGHT diff --git a/keyboards/bastardkb/scylla/info.json b/keyboards/bastardkb/scylla/info.json new file mode 100644 index 0000000000..a598b03999 --- /dev/null +++ b/keyboards/bastardkb/scylla/info.json @@ -0,0 +1,71 @@ +{ + "keyboard_name": "The Bastard Keyboard", + "url": "https://bastardkb.com/", + "maintainer": "Quentin Lebastard", + "width": 17, + "height": 8, + "layouts": { + "LAYOUT_split_4x6_5": { + "layout": [ + {"label":"L00", "x":0, "y":0}, + {"label":"L01", "x":1, "y":0}, + {"label":"L02", "x":2, "y":0}, + {"label":"L03", "x":3, "y":0}, + {"label":"L04", "x":4, "y":0}, + {"label":"L05", "x":5, "y":0}, + {"label":"R00", "x":11, "y":0}, + {"label":"R01", "x":12, "y":0}, + {"label":"R02", "x":13, "y":0}, + {"label":"R03", "x":14, "y":0}, + {"label":"R04", "x":15, "y":0}, + {"label":"R05", "x":16, "y":0}, + {"label":"L10", "x":0, "y":1}, + {"label":"L11", "x":1, "y":1}, + {"label":"L12", "x":2, "y":1}, + {"label":"L13", "x":3, "y":1}, + {"label":"L14", "x":4, "y":1}, + {"label":"L15", "x":5, "y":1}, + {"label":"R10", "x":11, "y":1}, + {"label":"R11", "x":12, "y":1}, + {"label":"R12", "x":13, "y":1}, + {"label":"R13", "x":14, "y":1}, + {"label":"R14", "x":15, "y":1}, + {"label":"R15", "x":16, "y":1}, + {"label":"L20", "x":0, "y":2}, + {"label":"L21", "x":1, "y":2}, + {"label":"L22", "x":2, "y":2}, + {"label":"L23", "x":3, "y":2}, + {"label":"L24", "x":4, "y":2}, + {"label":"L25", "x":5, "y":2}, + {"label":"R20", "x":11, "y":2}, + {"label":"R21", "x":12, "y":2}, + {"label":"R22", "x":13, "y":2}, + {"label":"R23", "x":14, "y":2}, + {"label":"R24", "x":15, "y":2}, + {"label":"R25", "x":16, "y":2}, + {"label":"L30", "x":0, "y":3}, + {"label":"L31", "x":1, "y":3}, + {"label":"L32", "x":2, "y":3}, + {"label":"L33", "x":3, "y":3}, + {"label":"L34", "x":4, "y":3}, + {"label":"L35", "x":5, "y":3}, + {"label":"R30", "x":11, "y":3}, + {"label":"R31", "x":12, "y":3}, + {"label":"R32", "x":13, "y":3}, + {"label":"R33", "x":14, "y":3}, + {"label":"R34", "x":15, "y":3}, + {"label":"R35", "x":16, "y":3}, + {"label":"L43", "x":5, "y":4}, + {"label":"L44", "x":6, "y":4}, + {"label":"L45", "x":7, "y":4}, + {"label":"R40", "x":9, "y":4}, + {"label":"R41", "x":10, "y":4}, + {"label":"R40", "x":11, "y":4}, + {"label":"L52", "x":6, "y":5}, + {"label":"L53", "x":7, "y":5}, + {"label":"R52", "x":9, "y":5}, + {"label":"R53", "x":10, "y":5} + ] + } + } +} diff --git a/keyboards/bastardkb/scylla/keymaps/default/keymap.c b/keyboards/bastardkb/scylla/keymaps/default/keymap.c new file mode 100644 index 0000000000..49be09b689 --- /dev/null +++ b/keyboards/bastardkb/scylla/keymaps/default/keymap.c @@ -0,0 +1,60 @@ +/* + * Copyright 2021 Quentin LEBASTARD + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_split_4x6_5( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, +//-------------------------------------------------//-----------------------------------------------------------// + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, +//-------------------------------------------------//-----------------------------------------------------------// + KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, +//-------------------------------------------------//-----------------------------------------------------------// + KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_BSLS, +//-------------------------------------------------//-----------------------------------------------------------// + KC_LCTL, KC_SPC, MO(1), MO(2), KC_ENT, KC_RGUI, + KC_HOME, KC_BSPC, KC_DEL, KC_RALT + ), + + [1] = LAYOUT_split_4x6_5( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, +//---------------------------------------------------------//-----------------------------------------------------------// + RESET, _______, _______, _______, _______, KC_LBRC, KC_RBRC, KC_P7, KC_P8, KC_P9, _______, KC_PLUS, +//---------------------------------------------------------//-----------------------------------------------------------// + _______, KC_HOME, KC_PGUP, KC_PGDN, KC_END, KC_LPRN, KC_RPRN, KC_P4, KC_P5, KC_P6, KC_MINS, KC_PIPE, +//---------------------------------------------------------//-----------------------------------------------------------// + _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, KC_EQL, KC_UNDS, +//---------------------------------------------------------//-----------------------------------------------------------// + KC_LCTL, KC_HOME, KC_TRNS, KC_TRNS, KC_RALT, KC_RGUI, + KC_SPC, KC_BSPC, KC_RCTL, KC_ENT + ), + + [2] = LAYOUT_split_4x6_5( + KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, +//---------------------------------------------------------//--------------------------------------------------------------// + _______, _______, RGB_RMOD, RGB_TOG, RGB_MOD, KC_LBRC, KC_RBRC, _______, KC_NLCK, KC_INS, KC_SLCK, KC_MUTE, +//---------------------------------------------------------//--------------------------------------------------------------// + _______, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, KC_LPRN, KC_RPRN, KC_MPRV, KC_MPLY, KC_MNXT, _______, KC_VOLU, +//---------------------------------------------------------//--------------------------------------------------------------// + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, +//---------------------------------------------------------//--------------------------------------------------------------// + KC_LCTL, KC_HOME, KC_TRNS, KC_TRNS, KC_RALT, RESET, + KC_SPC, KC_BSPC, KC_RCTL, KC_ENT + ), +}; diff --git a/keyboards/bastardkb/scylla/keymaps/german_gaming/keymap.c b/keyboards/bastardkb/scylla/keymaps/german_gaming/keymap.c new file mode 100644 index 0000000000..94dd182c69 --- /dev/null +++ b/keyboards/bastardkb/scylla/keymaps/german_gaming/keymap.c @@ -0,0 +1,90 @@ +/* + * Copyright 2021 Joschua Gandert + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + + +#include QMK_KEYBOARD_H +#include "keymap_german.h" + + +enum layer_names { + _BASE, + _GAME, /* WASD shifted right once */ + _LOWER, + _RAISE, + _ADJUST /* when both LOWER and RAISE pressed */ +}; + +#define RAISE MO(_RAISE) +#define LOWER MO(_LOWER) + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_split_4x6_5( + KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , DE_SS , + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , DE_Z , KC_U , KC_I , KC_O , KC_P , DE_UDIA, + KC_LSFT, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , DE_ODIA, DE_ADIA, + KC_LCTL, DE_Y , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT, DE_MINS, DE_PLUS, + + RAISE, KC_SPC, KC_LCTL, KC_RALT, KC_BSPC, LOWER, + KC_ENT, KC_LALT, KC_LGUI, KC_RSFT + ), + + [_GAME] = LAYOUT_split_4x6_5( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + KC_T , KC_TAB , KC_Q , KC_W , KC_E , KC_R , _______, _______, KC_UP, _______, _______, _______, + KC_G , KC_LSFT, KC_A , KC_S , KC_D , KC_F , _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, + KC_B , KC_LCTL, DE_Y , KC_X , KC_C , KC_V , _______, _______, _______, _______, _______, _______, + + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______ + ), + + [_LOWER] = LAYOUT_split_4x6_5( + KC_TILD, KC_EXLM, KC_AT , KC_HASH, KC_DLR , KC_PERC, KC_CIRC, KC_AMPR, KC_PSLS, KC_PAST, KC_PMNS, KC_DEL , + _______, DE_HASH, DE_CIRC, KC_PGUP, DE_LABK, _______, _______, KC_P7 , KC_P8 , KC_P9 , KC_PPLS, KC_BSPC , + _______, DE_ACUT, KC_HOME, KC_PGDN, KC_END , KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 , KC_PDOT, _______ , + _______, KC_PLUS, KC_PIPE, KC_UNDS, _______, _______, KC_P0 , KC_P1 , KC_P2 , KC_P3 , KC_PENT, KC_KP_EQUAL, + + _______, KC_RGHT, _______, _______, _______, _______, + KC_LEFT, _______, RESET , _______ + ), + + [_RAISE] = LAYOUT_split_4x6_5( + KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , + _______, _______, _______, KC_UP , _______, _______, KC_LALT, KC_INS , KC_NLCK , KC_CALC, KC_PSCREEN, KC_MUTE, + _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_ENT , KC_MSEL, KC_MPRV , KC_MPLY , KC_MNXT, _______ , KC_VOLU, + _______, _______, _______, _______, _______, _______, DE_HASH, KC_MYCM , _______ , _______, KC_SLCK , KC_VOLD, + + _______, _______, _______, _______, KC_UP , _______, + _______, _______, _______, KC_DOWN + ), + + [_ADJUST] = LAYOUT_split_4x6_5( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, RESET , _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, DF(_GAME), _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, DF(_BASE), _______, _______, _______, _______, _______, _______, + + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______ + ), +}; + + +layer_state_t layer_state_set_user(layer_state_t state) { + return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); +} diff --git a/keyboards/bastardkb/scylla/keymaps/german_gaming/readme.md b/keyboards/bastardkb/scylla/keymaps/german_gaming/readme.md new file mode 100644 index 0000000000..14de01ac41 --- /dev/null +++ b/keyboards/bastardkb/scylla/keymaps/german_gaming/readme.md @@ -0,0 +1,24 @@ +![German Gaming Layout Image](https://i.imgur.com/0y938rGh.png) + +Despite being less accurate, the columns in the image are shifted up and down to avoid the [Hermann grid illusion](https://en.wikipedia.org/wiki/Grid_illusion). +​ + +# German Gaming Layout +​ +This layout was build with gaming in mind for a german user. As a result I added a "game" layer that shifts the keys of the left side (below the number row) one to the right, so that WASD is on the ESDF keys. The reason this layer was added is that using WASD is less comfortable with a contoured Dactyl-style keyboard, where each column is adjusted for the respective fingers. ESDF also has the upside of allowing one to stay in the home row. Note that the rightmost column of the default layer, so TGB, ends up in the leftmost position. + +Of course, one could just be forced to reconfigure every game, but that wouldn't be very user-friendly and likely reduce satisfaction with the layout. When in game mode, the right side of keys also features arrow keys on IJKL. + + +## Raise and Lower layer + +Additionally, via the RAISE layer, it's always possible to access the arrow keys, which are often used in game menues. On the exact same position one can access Home, End, Page Down and Page Up via the LOWER layer. The left side of the LOWER layer also contains the few characters that would usually have their own key in a traditional german keyboard. + +The right side features various media keys in the RAISE layer, and a numpad in the LOWER layer. + + +## Firmware + +The keyboard can be put into Reset mode (for flashing a keymap) by pressing **LOWER** + Super (also known as Windows key), or by pressing **LOWER** + **RAISE** + R. + +`MOUSEKEY_ENABLE` was set to `no` for this keymap, since it wasn't used and the size of the firmware ended up being too large. diff --git a/keyboards/bastardkb/scylla/keymaps/german_gaming/rules.mk b/keyboards/bastardkb/scylla/keymaps/german_gaming/rules.mk new file mode 100644 index 0000000000..0a5b666e85 --- /dev/null +++ b/keyboards/bastardkb/scylla/keymaps/german_gaming/rules.mk @@ -0,0 +1 @@ +MOUSEKEY_ENABLE = no diff --git a/keyboards/bastardkb/scylla/keymaps/xyverz/config.h b/keyboards/bastardkb/scylla/keymaps/xyverz/config.h new file mode 100644 index 0000000000..d7baf99376 --- /dev/null +++ b/keyboards/bastardkb/scylla/keymaps/xyverz/config.h @@ -0,0 +1,33 @@ +/* +This is the c configuration file for the keymap + +Copyright 2012 Jun Wako +Copyright 2015 Jack Humbert + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +/* Select hand configuration */ +// #define MASTER_LEFT +// #define MASTER_RIGHT +#define EE_HANDS + +#define TAPPING_FORCE_HOLD +#define TAPPING_TERM 300 +#define PERMISSIVE_HOLD +#define IGNORE_MOD_TAP_INTERRUPT +#define LEADER_PER_KEY_TIMING +#define LEADER_TIMEOUT 300 \ No newline at end of file diff --git a/keyboards/bastardkb/scylla/keymaps/xyverz/keymap.c b/keyboards/bastardkb/scylla/keymaps/xyverz/keymap.c new file mode 100644 index 0000000000..b8f70bdc9b --- /dev/null +++ b/keyboards/bastardkb/scylla/keymaps/xyverz/keymap.c @@ -0,0 +1,100 @@ +/* + * Copyright 2021 Ian Sterling + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum layer_names { _WINDOWS, _MAC, _LOWER, _RAISE, _ADJUST }; + +enum custom_keycodes { WINDOWS = SAFE_RANGE, MAC, ADJUST }; + +// Aliases to keep the keymap tidy +#define GUIBSPC GUI_T(KC_BSPC) // GUI when held, BSPC when tapped. +#define RGB_SWR RGB_M_SW // Swirl Animation alias +#define RGB_SNK RGB_M_SN // Snake Animation alias +#define MACLOCK LGUI(LCTL(KC_Q)) // Lock my MacBook! +#define WINLOCK LGUI(KC_L) // Lock my PC! +#define DELGUI GUI_T(KC_DEL) +#define RAISE MO(_RAISE) +#define LOWER MO(_LOWER) + + +#define MACLOCK LGUI(LCTL(KC_Q)) // Lock my MacBook! + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[_WINDOWS] = LAYOUT_split_4x6_5( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, + KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, + KC_GRV, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, + KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, + LOWER, KC_BSPC, KC_DEL, KC_ENT, KC_SPC, RAISE, + KC_LCTL, KC_LALT, KC_RGUI, KC_RCTL + ), + +[_MAC] = LAYOUT_split_4x6_5( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, + KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, + KC_GRV, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, + KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, + LOWER, KC_BSPC, DELGUI, KC_ENT, KC_SPC, RAISE, + KC_LCTL, KC_LALT, KC_RGUI, KC_RCTL + ), + +[_LOWER] = LAYOUT_split_4x6_5( + KC_F11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F12, + RESET, _______, _______, KC_UP, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______, + KC_CAPS, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_HOME, KC_PGUP, _______, KC_PLUS, KC_LCBR, KC_RCBR, _______, + _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_END, KC_PGDN, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, + _______, KC_DEL, _______, _______, _______, _______, + MACLOCK, _______, _______, WINLOCK + ), + +[_RAISE] = LAYOUT_split_4x6_5( + KC_F11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F12, + _______, _______, _______, KC_UP, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, RESET, + KC_CAPS, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_HOME, KC_PGUP, _______, KC_EQL, KC_LBRC, KC_RBRC, _______, + _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_END, KC_PGDN, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, + _______, KC_DEL, _______, _______, _______, _______, + MACLOCK, _______, _______, WINLOCK + ), + +[_ADJUST] = LAYOUT_split_4x6_5( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, WINDOWS, MAC, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______ + ), + +}; + +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) { + if (record->event.pressed) { + switch (keycode) { + case WINDOWS: + set_single_persistent_default_layer(_WINDOWS); + return false; + case MAC: + set_single_persistent_default_layer(_MAC); + return false; + } + } + return true; +} diff --git a/keyboards/bastardkb/scylla/readme.md b/keyboards/bastardkb/scylla/readme.md new file mode 100644 index 0000000000..70df5cfbb9 --- /dev/null +++ b/keyboards/bastardkb/scylla/readme.md @@ -0,0 +1,22 @@ +# Scylla + +A modern, low-profile split ergonomic keyboard + +* Keyboard Maintainer: [Bastard Keyboards](https://github.com/Bastardkb/) +* Hardware Supported: elite-C V4 +* Hardware Availability: [Bastard Keyboards](https://bastardkb.com/) + +Make example for this keyboard (after setting up your build environment): + + make bastardkb/scylla:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +See the [keyboard build instructions](https://docs.bastardkb.com) + + +## Important information regarding the reset + +If you modify this firmware, make sure to always have a RESET key that can be triggered using only the master side ! This way you ensure that you can always flash the keyboard, even if you mess up. + +Otherwise if you're stuck, open the case and reset manually by shorting Gnd and Rst, or pressing the RST button. diff --git a/keyboards/bastardkb/scylla/rules.mk b/keyboards/bastardkb/scylla/rules.mk new file mode 100644 index 0000000000..cc88208e33 --- /dev/null +++ b/keyboards/bastardkb/scylla/rules.mk @@ -0,0 +1,23 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +SPLIT_KEYBOARD = yes diff --git a/keyboards/bastardkb/scylla/scylla.c b/keyboards/bastardkb/scylla/scylla.c new file mode 100644 index 0000000000..f9e7917085 --- /dev/null +++ b/keyboards/bastardkb/scylla/scylla.c @@ -0,0 +1,18 @@ +/* + * Copyright 2021 Quentin LEBASTARD + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "scylla.h" diff --git a/keyboards/bastardkb/scylla/scylla.h b/keyboards/bastardkb/scylla/scylla.h new file mode 100644 index 0000000000..196982952f --- /dev/null +++ b/keyboards/bastardkb/scylla/scylla.h @@ -0,0 +1,42 @@ +/* + * Copyright 2021 Quentin LEBASTARD + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + + +#pragma once +#include "quantum.h" + +// SWITCHED 91 and 95 - check on left ? +#define LAYOUT_split_4x6_5( \ + k00, k01, k02, k03, k04, k05, k55, k54, k53, k52, k51, k50, \ + k10, k11, k12, k13, k14, k15, k65, k64, k63, k62, k61, k60, \ + k20, k21, k22, k23, k24, k25, k75, k74, k73, k72, k71, k70, \ + k30, k31, k32, k33, k34, k35, k85, k84, k83, k82, k81, k80, \ + k43, k44, k41, k91, k94, k93, \ + k45, k42, k92, k95 \ +)\ +{\ + { k00, k01, k02, k03, k04, k05 }, \ + { k10, k11, k12, k13, k14, k15 }, \ + { k20, k21, k22, k23, k24, k25 }, \ + { k30, k31, k32, k33, k34, k35 }, \ + { KC_NO, k41, k42, k43, k44, k45 }, \ + { k50, k51, k52, k53, k54, k55 }, \ + { k60, k61, k62, k63, k64, k65 }, \ + { k70, k71, k72, k73, k74, k75 }, \ + { k80, k81, k82, k83, k84, k85 }, \ + { KC_NO, k91, k92, k93, k94, k95 }, \ +} From 29e35d83b7db08b5e705775064db07c410e1aaad Mon Sep 17 00:00:00 2001 From: Jonavin <71780717+Jonavin@users.noreply.github.com> Date: Sun, 16 May 2021 18:30:58 -0400 Subject: [PATCH 393/613] [Keymap] Add new quefrency keymap (#12913) Co-authored-by: Drashna Jaelre Co-authored-by: Ryan --- .../keebio/quefrency/keymaps/jonavin/config.h | 30 +++++++ .../keebio/quefrency/keymaps/jonavin/keymap.c | 88 +++++++++++++++++++ .../keebio/quefrency/keymaps/jonavin/rules.mk | 3 + 3 files changed, 121 insertions(+) create mode 100644 keyboards/keebio/quefrency/keymaps/jonavin/config.h create mode 100644 keyboards/keebio/quefrency/keymaps/jonavin/keymap.c create mode 100644 keyboards/keebio/quefrency/keymaps/jonavin/rules.mk diff --git a/keyboards/keebio/quefrency/keymaps/jonavin/config.h b/keyboards/keebio/quefrency/keymaps/jonavin/config.h new file mode 100644 index 0000000000..0622cdfad3 --- /dev/null +++ b/keyboards/keebio/quefrency/keymaps/jonavin/config.h @@ -0,0 +1,30 @@ +/* +This is the c configuration file for the keymap + +Copyright 2012 Jun Wako +Copyright 2015 Jack Humbert +Copyright 2018 Danny Nguyen + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +/* Use I2C or Serial, not both */ + +#define USE_SERIAL +// #define USE_I2C + +#define TAPPING_TOGGLE 2 +// TT set to two taps diff --git a/keyboards/keebio/quefrency/keymaps/jonavin/keymap.c b/keyboards/keebio/quefrency/keymaps/jonavin/keymap.c new file mode 100644 index 0000000000..73d0c5af0e --- /dev/null +++ b/keyboards/keebio/quefrency/keymaps/jonavin/keymap.c @@ -0,0 +1,88 @@ +/* Copyright 2021 Jonavin Eng + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + + +#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 custom_layers { + _BASE, + _FN1, + _MO2, +}; + + +enum custom_keycodes { + DOUBLEZERO = SAFE_RANGE, +}; + + + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case DOUBLEZERO: + if (record->event.pressed) { + // when keycode DOUBLEZERO is pressed + SEND_STRING("00"); + } else { + // when keycode DOUBLEZERO is released + } + break; + } + return true; +}; + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_65( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_INS, + KC_PSCR, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_DEL, + TT(_MO2), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, LT(_FN1, KC_SPC), KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(_FN1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + [_FN1] = LAYOUT_65( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_CALC, KC_NO, + RGB_TOG, RGB_MOD, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_NO, KC_NO, KC_NO, KC_NO, KC_DEL, + KC_CAPS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_HOME, + KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, RCTL(KC_PGUP), KC_END, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_APP, RCTL(KC_LEFT), RCTL(KC_PGDN), RCTL(KC_RIGHT)), + [_MO2] = LAYOUT_65( + KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_P7, KC_P8, KC_P9, KC_PMNS, KC_PPLS, KC_PSLS, KC_NO, KC_NO, KC_TRNS, + KC_TAB, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_NO, KC_NO, KC_P4, KC_P5, KC_P6, KC_NO, KC_NO, KC_NO, KC_PEQL, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_NO, KC_TAB, KC_P1, KC_P2, KC_P3, KC_NO, KC_PAST, KC_PENT, KC_HOME, + KC_TRNS, KC_NO, KC_DEL, KC_INS, KC_NO, KC_NO, KC_NLCK, KC_P0, DOUBLEZERO, KC_PDOT, KC_PSLS, KC_TRNS, RCTL(KC_PGUP), KC_END, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RCTL(KC_LEFT), RCTL(KC_PGDN), RCTL(KC_RIGHT)), +}; + +void encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + if (clockwise) { + tap_code(KC_PGDN); + } else { + tap_code(KC_PGUP); + } + } else if (index == 1) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } +} diff --git a/keyboards/keebio/quefrency/keymaps/jonavin/rules.mk b/keyboards/keebio/quefrency/keymaps/jonavin/rules.mk new file mode 100644 index 0000000000..4b1bcabda8 --- /dev/null +++ b/keyboards/keebio/quefrency/keymaps/jonavin/rules.mk @@ -0,0 +1,3 @@ +VIA_ENABLE = yes +CONSOLE_ENABLE = yes +LTO_ENABLE = yes From 3e1fa8cd319bccfaa666c63f1741b2bbabf27b78 Mon Sep 17 00:00:00 2001 From: Callum Hart Date: Sun, 16 May 2021 23:33:46 +0100 Subject: [PATCH 394/613] [Keyboard] Giant macro pad (#12905) --- keyboards/cutie_club/giant_macro_pad/config.h | 48 ++ .../giant_macro_pad/giant_macro_pad.c | 17 + .../giant_macro_pad/giant_macro_pad.h | 72 +++ .../giant_macro_pad/keymaps/default/keymap.c | 453 ++++++++++++++++++ .../giant_macro_pad/keymaps/via/config.h | 19 + .../giant_macro_pad/keymaps/via/keymap.c | 43 ++ .../giant_macro_pad/keymaps/via/rules.mk | 1 + .../cutie_club/giant_macro_pad/readme.md | 13 + keyboards/cutie_club/giant_macro_pad/rules.mk | 19 + 9 files changed, 685 insertions(+) create mode 100755 keyboards/cutie_club/giant_macro_pad/config.h create mode 100755 keyboards/cutie_club/giant_macro_pad/giant_macro_pad.c create mode 100755 keyboards/cutie_club/giant_macro_pad/giant_macro_pad.h create mode 100755 keyboards/cutie_club/giant_macro_pad/keymaps/default/keymap.c create mode 100755 keyboards/cutie_club/giant_macro_pad/keymaps/via/config.h create mode 100755 keyboards/cutie_club/giant_macro_pad/keymaps/via/keymap.c create mode 100755 keyboards/cutie_club/giant_macro_pad/keymaps/via/rules.mk create mode 100755 keyboards/cutie_club/giant_macro_pad/readme.md create mode 100755 keyboards/cutie_club/giant_macro_pad/rules.mk diff --git a/keyboards/cutie_club/giant_macro_pad/config.h b/keyboards/cutie_club/giant_macro_pad/config.h new file mode 100755 index 0000000000..c6ef81309d --- /dev/null +++ b/keyboards/cutie_club/giant_macro_pad/config.h @@ -0,0 +1,48 @@ +/* Copyright 2021 Cutie Club + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFB9C +#define PRODUCT_ID 0x74B6 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Cutie Club +#define PRODUCT Cupar19 Giant Macro Pad + +/* key matrix size */ +#define MATRIX_ROWS 20 +#define MATRIX_COLS 20 + +/* + * Keyboard Matrix Assignments + */ +#define MATRIX_ROW_PINS { C10, C11, C12, D2, B3, B4, B5, B6, B7, B8, A3, B2, B1, B0, C5, C4, A7, A6, A5, A4 } +#define MATRIX_COL_PINS { C9, C8, C7, C6, B15, B14, B13, B12, A8, A15, B9, A2, A1, A0, C3, C2, C1, C0, F1, F0 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE diff --git a/keyboards/cutie_club/giant_macro_pad/giant_macro_pad.c b/keyboards/cutie_club/giant_macro_pad/giant_macro_pad.c new file mode 100755 index 0000000000..934817aca2 --- /dev/null +++ b/keyboards/cutie_club/giant_macro_pad/giant_macro_pad.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Cutie Club + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "giant_macro_pad.h" diff --git a/keyboards/cutie_club/giant_macro_pad/giant_macro_pad.h b/keyboards/cutie_club/giant_macro_pad/giant_macro_pad.h new file mode 100755 index 0000000000..8e0b612f3c --- /dev/null +++ b/keyboards/cutie_club/giant_macro_pad/giant_macro_pad.h @@ -0,0 +1,72 @@ +/* Copyright 2021 Cutie Club + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT_all( \ + k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, k00_13, k00_14, k00_15, k00_16, k00_17, k00_18, k00_19, \ + k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, k01_13, k01_14, k01_15, k01_16, k01_17, k01_18, k01_19, \ + k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, k02_12, k02_13, k02_14, k02_15, k02_16, k02_17, k02_18, k02_19, \ + k03_00, k03_01, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, k03_13, k03_14, k03_15, k03_16, k03_17, k03_18, k03_19, \ + k04_00, k04_01, k04_02, k04_03, k04_04, k04_05, k04_06, k04_07, k04_08, k04_09, k04_10, k04_11, k04_12, k04_13, k04_14, k04_15, k04_16, k04_17, k04_18, k04_19, \ + k05_00, k05_01, k05_02, k05_03, k05_04, k05_05, k05_06, k05_07, k05_08, k05_09, k05_10, k05_11, k05_12, k05_13, k05_14, k05_15, k05_16, k05_17, k05_18, k05_19, \ + k06_00, k06_01, k06_02, k06_03, k06_04, k06_05, k06_06, k06_07, k06_08, k06_09, k06_10, k06_11, k06_12, k06_13, k06_14, k06_15, k06_16, k06_17, k06_18, k06_19, \ + k07_00, k07_01, k07_02, k07_03, k07_04, k07_05, k07_06, k07_07, k07_08, k07_09, k07_10, k07_11, k07_12, k07_13, k07_14, k07_15, k07_16, k07_17, k07_18, k07_19, \ + k08_00, k08_01, k08_02, k08_03, k08_04, k08_05, k08_06, k08_07, k08_08, k08_09, k08_10, k08_11, k08_12, k08_13, k08_14, k08_15, k08_16, k08_17, k08_18, k08_19, \ + k09_00, k09_01, k09_02, k09_03, k09_04, k09_05, k09_06, k09_07, k09_08, k09_09, k09_10, k09_11, k09_12, k09_13, k09_14, k09_15, k09_16, k09_17, k09_18, k09_19, \ + k10_00, k10_01, k10_02, k10_03, k10_04, k10_05, k10_06, k10_07, k10_08, k10_09, k10_10, k10_11, k10_12, k10_13, k10_14, k10_15, k10_16, k10_17, k10_18, k10_19, \ + k11_00, k11_01, k11_02, k11_03, k11_04, k11_05, k11_06, k11_07, k11_08, k11_09, k11_10, k11_11, k11_12, k11_13, k11_14, k11_15, k11_16, k11_17, k11_18, k11_19, \ + k12_00, k12_01, k12_02, k12_03, k12_04, k12_05, k12_06, k12_07, k12_08, k12_09, k12_10, k12_11, k12_12, k12_13, k12_14, k12_15, k12_16, k12_17, k12_18, k12_19, \ + k13_00, k13_01, k13_02, k13_03, k13_04, k13_05, k13_06, k13_07, k13_08, k13_09, k13_10, k13_11, k13_12, k13_13, k13_14, k13_15, k13_16, k13_17, k13_18, k13_19, \ + k14_00, k14_01, k14_02, k14_03, k14_04, k14_05, k14_06, k14_07, k14_08, k14_09, k14_10, k14_11, k14_12, k14_13, k14_14, k14_15, k14_16, k14_17, k14_18, k14_19, \ + k15_00, k15_01, k15_02, k15_03, k15_04, k15_05, k15_06, k15_07, k15_08, k15_09, k15_10, k15_11, k15_12, k15_13, k15_14, k15_15, k15_16, k15_17, k15_18, k15_19, \ + k16_00, k16_01, k16_02, k16_03, k16_04, k16_05, k16_06, k16_07, k16_08, k16_09, k16_10, k16_11, k16_12, k16_13, k16_14, k16_15, k16_16, k16_17, k16_18, k16_19, \ + k17_00, k17_01, k17_02, k17_03, k17_04, k17_05, k17_06, k17_07, k17_08, k17_09, k17_10, k17_11, k17_12, k17_13, k17_14, k17_15, k17_16, k17_17, k17_18, k17_19, \ + k18_00, k18_01, k18_02, k18_03, k18_04, k18_05, k18_06, k18_07, k18_08, k18_09, k18_10, k18_11, k18_12, k18_13, k18_14, k18_15, k18_16, k18_17, k18_18, k18_19, \ + k19_00, k19_01, k19_02, k19_03, k19_04, k19_05, k19_06, k19_07, k19_08, k19_09, k19_10, k19_11, k19_12, k19_13, k19_14, k19_15, k19_16, k19_17, k19_18, k19_19 \ +) \ +{ \ + { k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, k00_13, k00_14, k00_15, k00_16, k00_17, k00_18, k00_19 }, \ + { k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, k01_13, k01_14, k01_15, k01_16, k01_17, k01_18, k01_19 }, \ + { k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, k02_12, k02_13, k02_14, k02_15, k02_16, k02_17, k02_18, k02_19 }, \ + { k03_00, k03_01, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, k03_13, k03_14, k03_15, k03_16, k03_17, k03_18, k03_19 }, \ + { k04_00, k04_01, k04_02, k04_03, k04_04, k04_05, k04_06, k04_07, k04_08, k04_09, k04_10, k04_11, k04_12, k04_13, k04_14, k04_15, k04_16, k04_17, k04_18, k04_19 }, \ + { k05_00, k05_01, k05_02, k05_03, k05_04, k05_05, k05_06, k05_07, k05_08, k05_09, k05_10, k05_11, k05_12, k05_13, k05_14, k05_15, k05_16, k05_17, k05_18, k05_19 }, \ + { k06_00, k06_01, k06_02, k06_03, k06_04, k06_05, k06_06, k06_07, k06_08, k06_09, k06_10, k06_11, k06_12, k06_13, k06_14, k06_15, k06_16, k06_17, k06_18, k06_19 }, \ + { k07_00, k07_01, k07_02, k07_03, k07_04, k07_05, k07_06, k07_07, k07_08, k07_09, k07_10, k07_11, k07_12, k07_13, k07_14, k07_15, k07_16, k07_17, k07_18, k07_19 }, \ + { k08_00, k08_01, k08_02, k08_03, k08_04, k08_05, k08_06, k08_07, k08_08, k08_09, k08_10, k08_11, k08_12, k08_13, k08_14, k08_15, k08_16, k08_17, k08_18, k08_19 }, \ + { k09_00, k09_01, k09_02, k09_03, k09_04, k09_05, k09_06, k09_07, k09_08, k09_09, k09_10, k09_11, k09_12, k09_13, k09_14, k09_15, k09_16, k09_17, k09_18, k09_19 }, \ + { k10_00, k10_01, k10_02, k10_03, k10_04, k10_05, k10_06, k10_07, k10_08, k10_09, k10_10, k10_11, k10_12, k10_13, k10_14, k10_15, k10_16, k10_17, k10_18, k10_19 }, \ + { k11_00, k11_01, k11_02, k11_03, k11_04, k11_05, k11_06, k11_07, k11_08, k11_09, k11_10, k11_11, k11_12, k11_13, k11_14, k11_15, k11_16, k11_17, k11_18, k11_19 }, \ + { k12_00, k12_01, k12_02, k12_03, k12_04, k12_05, k12_06, k12_07, k12_08, k12_09, k12_10, k12_11, k12_12, k12_13, k12_14, k12_15, k12_16, k12_17, k12_18, k12_19 }, \ + { k13_00, k13_01, k13_02, k13_03, k13_04, k13_05, k13_06, k13_07, k13_08, k13_09, k13_10, k13_11, k13_12, k13_13, k13_14, k13_15, k13_16, k13_17, k13_18, k13_19 }, \ + { k14_00, k14_01, k14_02, k14_03, k14_04, k14_05, k14_06, k14_07, k14_08, k14_09, k14_10, k14_11, k14_12, k14_13, k14_14, k14_15, k14_16, k14_17, k14_18, k14_19 }, \ + { k15_00, k15_01, k15_02, k15_03, k15_04, k15_05, k15_06, k15_07, k15_08, k15_09, k15_10, k15_11, k15_12, k15_13, k15_14, k15_15, k15_16, k15_17, k15_18, k15_19 }, \ + { k16_00, k16_01, k16_02, k16_03, k16_04, k16_05, k16_06, k16_07, k16_08, k16_09, k16_10, k16_11, k16_12, k16_13, k16_14, k16_15, k16_16, k16_17, k16_18, k16_19 }, \ + { k17_00, k17_01, k17_02, k17_03, k17_04, k17_05, k17_06, k17_07, k17_08, k17_09, k17_10, k17_11, k17_12, k17_13, k17_14, k17_15, k17_16, k17_17, k17_18, k17_19 }, \ + { k18_00, k18_01, k18_02, k18_03, k18_04, k18_05, k18_06, k18_07, k18_08, k18_09, k18_10, k18_11, k18_12, k18_13, k18_14, k18_15, k18_16, k18_17, k18_18, k18_19 }, \ + { k19_00, k19_01, k19_02, k19_03, k19_04, k19_05, k19_06, k19_07, k19_08, k19_09, k19_10, k19_11, k19_12, k19_13, k19_14, k19_15, k19_16, k19_17, k19_18, k19_19 } \ +} diff --git a/keyboards/cutie_club/giant_macro_pad/keymaps/default/keymap.c b/keyboards/cutie_club/giant_macro_pad/keymaps/default/keymap.c new file mode 100755 index 0000000000..2db71e990c --- /dev/null +++ b/keyboards/cutie_club/giant_macro_pad/keymaps/default/keymap.c @@ -0,0 +1,453 @@ +/* Copyright 2021 Cutie Club + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum custom_keycodes { + NUM_0 = 0, + NUM_1, + NUM_2, + NUM_3, + NUM_4, + NUM_5, + NUM_6, + NUM_7, + NUM_8, + NUM_9, + NUM_10, + NUM_11, + NUM_12, + NUM_13, + NUM_14, + NUM_15, + NUM_16, + NUM_17, + NUM_18, + NUM_19, + NUM_20, + NUM_21, + NUM_22, + NUM_23, + NUM_24, + NUM_25, + NUM_26, + NUM_27, + NUM_28, + NUM_29, + NUM_30, + NUM_31, + NUM_32, + NUM_33, + NUM_34, + NUM_35, + NUM_36, + NUM_37, + NUM_38, + NUM_39, + NUM_40, + NUM_41, + NUM_42, + NUM_43, + NUM_44, + NUM_45, + NUM_46, + NUM_47, + NUM_48, + NUM_49, + NUM_50, + NUM_51, + NUM_52, + NUM_53, + NUM_54, + NUM_55, + NUM_56, + NUM_57, + NUM_58, + NUM_59, + NUM_60, + NUM_61, + NUM_62, + NUM_63, + NUM_64, + NUM_65, + NUM_66, + NUM_67, + NUM_68, + NUM_69, + NUM_70, + NUM_71, + NUM_72, + NUM_73, + NUM_74, + NUM_75, + NUM_76, + NUM_77, + NUM_78, + NUM_79, + NUM_80, + NUM_81, + NUM_82, + NUM_83, + NUM_84, + NUM_85, + NUM_86, + NUM_87, + NUM_88, + NUM_89, + NUM_90, + NUM_91, + NUM_92, + NUM_93, + NUM_94, + NUM_95, + NUM_96, + NUM_97, + NUM_98, + NUM_99, + NUM_100, + NUM_101, + NUM_102, + NUM_103, + NUM_104, + NUM_105, + NUM_106, + NUM_107, + NUM_108, + NUM_109, + NUM_110, + NUM_111, + NUM_112, + NUM_113, + NUM_114, + NUM_115, + NUM_116, + NUM_117, + NUM_118, + NUM_119, + NUM_120, + NUM_121, + NUM_122, + NUM_123, + NUM_124, + NUM_125, + NUM_126, + NUM_127, + NUM_128, + NUM_129, + NUM_130, + NUM_131, + NUM_132, + NUM_133, + NUM_134, + NUM_135, + NUM_136, + NUM_137, + NUM_138, + NUM_139, + NUM_140, + NUM_141, + NUM_142, + NUM_143, + NUM_144, + NUM_145, + NUM_146, + NUM_147, + NUM_148, + NUM_149, + NUM_150, + NUM_151, + NUM_152, + NUM_153, + NUM_154, + NUM_155, + NUM_156, + NUM_157, + NUM_158, + NUM_159, + NUM_160, + NUM_161, + NUM_162, + NUM_163, + NUM_164, + NUM_165, + NUM_166, + NUM_167, + NUM_168, + NUM_169, + NUM_170, + NUM_171, + NUM_172, + NUM_173, + NUM_174, + NUM_175, + NUM_176, + NUM_177, + NUM_178, + NUM_179, + NUM_180, + NUM_181, + NUM_182, + NUM_183, + NUM_184, + NUM_185, + NUM_186, + NUM_187, + NUM_188, + NUM_189, + NUM_190, + NUM_191, + NUM_192, + NUM_193, + NUM_194, + NUM_195, + NUM_196, + NUM_197, + NUM_198, + NUM_199, + NUM_200, + NUM_201, + NUM_202, + NUM_203, + NUM_204, + NUM_205, + NUM_206, + NUM_207, + NUM_208, + NUM_209, + NUM_210, + NUM_211, + NUM_212, + NUM_213, + NUM_214, + NUM_215, + NUM_216, + NUM_217, + NUM_218, + NUM_219, + NUM_220, + NUM_221, + NUM_222, + NUM_223, + NUM_224, + NUM_225, + NUM_226, + NUM_227, + NUM_228, + NUM_229, + NUM_230, + NUM_231, + NUM_232, + NUM_233, + NUM_234, + NUM_235, + NUM_236, + NUM_237, + NUM_238, + NUM_239, + NUM_240, + NUM_241, + NUM_242, + NUM_243, + NUM_244, + NUM_245, + NUM_246, + NUM_247, + NUM_248, + NUM_249, + NUM_250, + NUM_251, + NUM_252, + NUM_253, + NUM_254, + NUM_255, + NUM_256, + NUM_257, + NUM_258, + NUM_259, + NUM_260, + NUM_261, + NUM_262, + NUM_263, + NUM_264, + NUM_265, + NUM_266, + NUM_267, + NUM_268, + NUM_269, + NUM_270, + NUM_271, + NUM_272, + NUM_273, + NUM_274, + NUM_275, + NUM_276, + NUM_277, + NUM_278, + NUM_279, + NUM_280, + NUM_281, + NUM_282, + NUM_283, + NUM_284, + NUM_285, + NUM_286, + NUM_287, + NUM_288, + NUM_289, + NUM_290, + NUM_291, + NUM_292, + NUM_293, + NUM_294, + NUM_295, + NUM_296, + NUM_297, + NUM_298, + NUM_299, + NUM_300, + NUM_301, + NUM_302, + NUM_303, + NUM_304, + NUM_305, + NUM_306, + NUM_307, + NUM_308, + NUM_309, + NUM_310, + NUM_311, + NUM_312, + NUM_313, + NUM_314, + NUM_315, + NUM_316, + NUM_317, + NUM_318, + NUM_319, + NUM_320, + NUM_321, + NUM_322, + NUM_323, + NUM_324, + NUM_325, + NUM_326, + NUM_327, + NUM_328, + NUM_329, + NUM_330, + NUM_331, + NUM_332, + NUM_333, + NUM_334, + NUM_335, + NUM_336, + NUM_337, + NUM_338, + NUM_339, + NUM_340, + NUM_341, + NUM_342, + NUM_343, + NUM_344, + NUM_345, + NUM_346, + NUM_347, + NUM_348, + NUM_349, + NUM_350, + NUM_351, + NUM_352, + NUM_353, + NUM_354, + NUM_355, + NUM_356, + NUM_357, + NUM_358, + NUM_359, + NUM_360, + NUM_361, + NUM_362, + NUM_363, + NUM_364, + NUM_365, + NUM_366, + NUM_367, + NUM_368, + NUM_369, + NUM_370, + NUM_371, + NUM_372, + NUM_373, + NUM_374, + NUM_375, + NUM_376, + NUM_377, + NUM_378, + NUM_379, + NUM_380, + NUM_381, + NUM_382, + NUM_383, + NUM_384, + NUM_385, + NUM_386, + NUM_387, + NUM_388, + NUM_389, + NUM_390, + NUM_391, + NUM_392, + NUM_393, + NUM_394, + NUM_395, + NUM_396, + NUM_397, + NUM_398, + NUM_399, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [0] = LAYOUT_all( + NUM_0, NUM_1, NUM_2, NUM_3, NUM_4, NUM_5, NUM_6, NUM_7, NUM_8, NUM_9, NUM_10, NUM_11, NUM_12, NUM_13, NUM_14, NUM_15, NUM_16, NUM_17, NUM_18, NUM_19, + NUM_20, NUM_21, NUM_22, NUM_23, NUM_24, NUM_25, NUM_26, NUM_27, NUM_28, NUM_29, NUM_30, NUM_31, NUM_32, NUM_33, NUM_34, NUM_35, NUM_36, NUM_37, NUM_38, NUM_39, + NUM_40, NUM_41, NUM_42, NUM_43, NUM_44, NUM_45, NUM_46, NUM_47, NUM_48, NUM_49, NUM_50, NUM_51, NUM_52, NUM_53, NUM_54, NUM_55, NUM_56, NUM_57, NUM_58, NUM_59, + NUM_60, NUM_61, NUM_62, NUM_63, NUM_64, NUM_65, NUM_66, NUM_67, NUM_68, NUM_69, NUM_70, NUM_71, NUM_72, NUM_73, NUM_74, NUM_75, NUM_76, NUM_77, NUM_78, NUM_79, + NUM_80, NUM_81, NUM_82, NUM_83, NUM_84, NUM_85, NUM_86, NUM_87, NUM_88, NUM_89, NUM_90, NUM_91, NUM_92, NUM_93, NUM_94, NUM_95, NUM_96, NUM_97, NUM_98, NUM_99, + NUM_100,NUM_101,NUM_102,NUM_103,NUM_104,NUM_105,NUM_106,NUM_107,NUM_108,NUM_109,NUM_110,NUM_111,NUM_112,NUM_113,NUM_114,NUM_115,NUM_116,NUM_117,NUM_118,NUM_119, + NUM_120,NUM_121,NUM_122,NUM_123,NUM_124,NUM_125,NUM_126,NUM_127,NUM_128,NUM_129,NUM_130,NUM_131,NUM_132,NUM_133,NUM_134,NUM_135,NUM_136,NUM_137,NUM_138,NUM_139, + NUM_140,NUM_141,NUM_142,NUM_143,NUM_144,NUM_145,NUM_146,NUM_147,NUM_148,NUM_149,NUM_150,NUM_151,NUM_152,NUM_153,NUM_154,NUM_155,NUM_156,NUM_157,NUM_158,NUM_159, + NUM_160,NUM_161,NUM_162,NUM_163,NUM_164,NUM_165,NUM_166,NUM_167,NUM_168,NUM_169,NUM_170,NUM_171,NUM_172,NUM_173,NUM_174,NUM_175,NUM_176,NUM_177,NUM_178,NUM_179, + NUM_180,NUM_181,NUM_182,NUM_183,NUM_184,NUM_185,NUM_186,NUM_187,NUM_188,NUM_189,NUM_190,NUM_191,NUM_192,NUM_193,NUM_194,NUM_195,NUM_196,NUM_197,NUM_198,NUM_199, + NUM_200,NUM_201,NUM_202,NUM_203,NUM_204,NUM_205,NUM_206,NUM_207,NUM_208,NUM_209,NUM_210,NUM_211,NUM_212,NUM_213,NUM_214,NUM_215,NUM_216,NUM_217,NUM_218,NUM_219, + NUM_220,NUM_221,NUM_222,NUM_223,NUM_224,NUM_225,NUM_226,NUM_227,NUM_228,NUM_229,NUM_230,NUM_231,NUM_232,NUM_233,NUM_234,NUM_235,NUM_236,NUM_237,NUM_238,NUM_239, + NUM_240,NUM_241,NUM_242,NUM_243,NUM_244,NUM_245,NUM_246,NUM_247,NUM_248,NUM_249,NUM_250,NUM_251,NUM_252,NUM_253,NUM_254,NUM_255,NUM_256,NUM_257,NUM_258,NUM_259, + NUM_260,NUM_261,NUM_262,NUM_263,NUM_264,NUM_265,NUM_266,NUM_267,NUM_268,NUM_269,NUM_270,NUM_271,NUM_272,NUM_273,NUM_274,NUM_275,NUM_276,NUM_277,NUM_278,NUM_279, + NUM_280,NUM_281,NUM_282,NUM_283,NUM_284,NUM_285,NUM_286,NUM_287,NUM_288,NUM_289,NUM_290,NUM_291,NUM_292,NUM_293,NUM_294,NUM_295,NUM_296,NUM_297,NUM_298,NUM_299, + NUM_300,NUM_301,NUM_302,NUM_303,NUM_304,NUM_305,NUM_306,NUM_307,NUM_308,NUM_309,NUM_310,NUM_311,NUM_312,NUM_313,NUM_314,NUM_315,NUM_316,NUM_317,NUM_318,NUM_319, + NUM_320,NUM_321,NUM_322,NUM_323,NUM_324,NUM_325,NUM_326,NUM_327,NUM_328,NUM_329,NUM_330,NUM_331,NUM_332,NUM_333,NUM_334,NUM_335,NUM_336,NUM_337,NUM_338,NUM_339, + NUM_340,NUM_341,NUM_342,NUM_343,NUM_344,NUM_345,NUM_346,NUM_347,NUM_348,NUM_349,NUM_350,NUM_351,NUM_352,NUM_353,NUM_354,NUM_355,NUM_356,NUM_357,NUM_358,NUM_359, + NUM_360,NUM_361,NUM_362,NUM_363,NUM_364,NUM_365,NUM_366,NUM_367,NUM_368,NUM_369,NUM_370,NUM_371,NUM_372,NUM_373,NUM_374,NUM_375,NUM_376,NUM_377,NUM_378,NUM_379, + NUM_380,NUM_381,NUM_382,NUM_383,NUM_384,NUM_385,NUM_386,NUM_387,NUM_388,NUM_389,NUM_390,NUM_391,NUM_392,NUM_393,NUM_394,NUM_395,NUM_396,NUM_397,NUM_398,NUM_399 + ) +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + char numString[5]; + itoa(keycode, numString, 10); + SEND_STRING(numString); + return false; +}; diff --git a/keyboards/cutie_club/giant_macro_pad/keymaps/via/config.h b/keyboards/cutie_club/giant_macro_pad/keymaps/via/config.h new file mode 100755 index 0000000000..d7f8524d00 --- /dev/null +++ b/keyboards/cutie_club/giant_macro_pad/keymaps/via/config.h @@ -0,0 +1,19 @@ +/* Copyright 2021 Cutie Club + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define DYNAMIC_KEYMAP_LAYER_COUNT 1 diff --git a/keyboards/cutie_club/giant_macro_pad/keymaps/via/keymap.c b/keyboards/cutie_club/giant_macro_pad/keymaps/via/keymap.c new file mode 100755 index 0000000000..64b3f2b530 --- /dev/null +++ b/keyboards/cutie_club/giant_macro_pad/keymaps/via/keymap.c @@ -0,0 +1,43 @@ +/* Copyright 2021 Cutie Club + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [0] = LAYOUT_all( + KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, + KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, + KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, + KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, + KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, + KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, + KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, + KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, + KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, + KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, + KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, + KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, + KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, + KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, + KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, + KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, + KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, + KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, + KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, + KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9 + ) +}; diff --git a/keyboards/cutie_club/giant_macro_pad/keymaps/via/rules.mk b/keyboards/cutie_club/giant_macro_pad/keymaps/via/rules.mk new file mode 100755 index 0000000000..74edb2bf0d --- /dev/null +++ b/keyboards/cutie_club/giant_macro_pad/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE=yes diff --git a/keyboards/cutie_club/giant_macro_pad/readme.md b/keyboards/cutie_club/giant_macro_pad/readme.md new file mode 100755 index 0000000000..313f1e1a86 --- /dev/null +++ b/keyboards/cutie_club/giant_macro_pad/readme.md @@ -0,0 +1,13 @@ +# Cupar19 Giant Macro Pad + +![Cupar19 Giant Macro Pad](https://user-images.githubusercontent.com/15253132/118325863-0135e680-b4fc-11eb-99f2-754b155b0acd.png) + +* Keyboard Maintainer: [Cutie Club](https://github.com/cutie-club/) +* Hardware Supported: STM32F072 based giant 20x20 macro pad +* Hardware Availability: N/A (one-off) + +Make example for this keyboard (after setting up your build environment): + + make cutie_club/giant_macro_pad:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/cutie_club/giant_macro_pad/rules.mk b/keyboards/cutie_club/giant_macro_pad/rules.mk new file mode 100755 index 0000000000..4430f2419c --- /dev/null +++ b/keyboards/cutie_club/giant_macro_pad/rules.mk @@ -0,0 +1,19 @@ +# MCU name +MCU = STM32F072 + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output From 6d1f0598684f250256f68f85e673109675e8be86 Mon Sep 17 00:00:00 2001 From: wxyangf Date: Sun, 16 May 2021 18:34:18 -0400 Subject: [PATCH 395/613] [Keyboard] Added bradpad support (#12912) Co-authored-by: Ryan Co-authored-by: Drashna Jaelre --- keyboards/tempo_turtle/bradpad/bradpad.c | 15 ++ keyboards/tempo_turtle/bradpad/bradpad.h | 32 ++++ keyboards/tempo_turtle/bradpad/config.h | 19 +++ keyboards/tempo_turtle/bradpad/info.json | 28 ++++ .../bradpad/keymaps/4brad/config.h | 20 +++ .../bradpad/keymaps/4brad/keymap.c | 148 ++++++++++++++++++ .../bradpad/keymaps/4brad/rules.mk | 1 + .../bradpad/keymaps/default/keymap.c | 24 +++ .../bradpad/keymaps/midi_demo/config.h | 20 +++ .../bradpad/keymaps/midi_demo/keymap.c | 42 +++++ .../bradpad/keymaps/midi_demo/rules.mk | 1 + .../tempo_turtle/bradpad/keymaps/via/keymap.c | 50 ++++++ .../tempo_turtle/bradpad/keymaps/via/rules.mk | 1 + keyboards/tempo_turtle/bradpad/readme.md | 32 ++++ keyboards/tempo_turtle/bradpad/rules.mk | 23 +++ 15 files changed, 456 insertions(+) create mode 100644 keyboards/tempo_turtle/bradpad/bradpad.c create mode 100644 keyboards/tempo_turtle/bradpad/bradpad.h create mode 100644 keyboards/tempo_turtle/bradpad/config.h create mode 100644 keyboards/tempo_turtle/bradpad/info.json create mode 100644 keyboards/tempo_turtle/bradpad/keymaps/4brad/config.h create mode 100644 keyboards/tempo_turtle/bradpad/keymaps/4brad/keymap.c create mode 100644 keyboards/tempo_turtle/bradpad/keymaps/4brad/rules.mk create mode 100644 keyboards/tempo_turtle/bradpad/keymaps/default/keymap.c create mode 100644 keyboards/tempo_turtle/bradpad/keymaps/midi_demo/config.h create mode 100644 keyboards/tempo_turtle/bradpad/keymaps/midi_demo/keymap.c create mode 100644 keyboards/tempo_turtle/bradpad/keymaps/midi_demo/rules.mk create mode 100644 keyboards/tempo_turtle/bradpad/keymaps/via/keymap.c create mode 100644 keyboards/tempo_turtle/bradpad/keymaps/via/rules.mk create mode 100644 keyboards/tempo_turtle/bradpad/readme.md create mode 100644 keyboards/tempo_turtle/bradpad/rules.mk diff --git a/keyboards/tempo_turtle/bradpad/bradpad.c b/keyboards/tempo_turtle/bradpad/bradpad.c new file mode 100644 index 0000000000..073f37a4cf --- /dev/null +++ b/keyboards/tempo_turtle/bradpad/bradpad.c @@ -0,0 +1,15 @@ +/* +Copyright 2021 v3ritas +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "bradpad.h" diff --git a/keyboards/tempo_turtle/bradpad/bradpad.h b/keyboards/tempo_turtle/bradpad/bradpad.h new file mode 100644 index 0000000000..69955a5da6 --- /dev/null +++ b/keyboards/tempo_turtle/bradpad/bradpad.h @@ -0,0 +1,32 @@ +/* +Copyright 2021 v3ritas +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once +#include "quantum.h" + +// clang-format off +#define LAYOUT( \ + k00, k01, k02, k03, \ + k10, k11, k12, k13, \ + k20, k21, k22, k23, \ + k30, k31, k32, k33, \ + k41, k42\ +) { \ + { k00, k01, k02, k03, }, \ + { k10, k11, k12, k13, }, \ + { k20, k21, k22, k23, }, \ + { k30, k31, k32, k33, }, \ + { KC_NO, k41, k42, KC_NO } \ +} +// clang-format on diff --git a/keyboards/tempo_turtle/bradpad/config.h b/keyboards/tempo_turtle/bradpad/config.h new file mode 100644 index 0000000000..c6a405b05f --- /dev/null +++ b/keyboards/tempo_turtle/bradpad/config.h @@ -0,0 +1,19 @@ +/* +Copyright 2021 v3ritas +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/*usb descriptor setup and keyboard setup (rows and cols) are located in info.json*/ diff --git a/keyboards/tempo_turtle/bradpad/info.json b/keyboards/tempo_turtle/bradpad/info.json new file mode 100644 index 0000000000..37125e64e4 --- /dev/null +++ b/keyboards/tempo_turtle/bradpad/info.json @@ -0,0 +1,28 @@ +{ + "keyboard_name": "bradpad", + "url": "https://tempoturtle.com", + "maintainer": "wxyangf", + "width": 4, + "height": 5, + "diode_direction": "ROW2COL", + "matrix_pins":{ + "rows":["B7", "D5", "C7", "D2", "D3"], + "cols":["D7", "E6", "B4", "F1"] + }, + "usb":{ + "vid":"0x7474", + "pid":"0x6270", + "device_ver":"0x0001" + }, + "layouts": { + "LAYOUT": { + "layout":[ + {"x": 0, "y":0},{"x": 1, "y":0},{"x": 2, "y":0},{"x": 3, "y":0}, + {"x": 0, "y":1},{"x": 1, "y":1},{"x": 2, "y":1},{"x": 3, "y":1}, + {"x": 0, "y":2},{"x": 1, "y":2},{"x": 2, "y":2},{"x": 3, "y":2}, + {"x": 0, "y":3},{"x": 1, "y":3},{"x": 2, "y":3},{"x": 3, "y":3}, + {"x": 0, "y":4, "w":2},{"x": 2, "y":4,"w":2} + ] + } + } +} diff --git a/keyboards/tempo_turtle/bradpad/keymaps/4brad/config.h b/keyboards/tempo_turtle/bradpad/keymaps/4brad/config.h new file mode 100644 index 0000000000..4b885f24a1 --- /dev/null +++ b/keyboards/tempo_turtle/bradpad/keymaps/4brad/config.h @@ -0,0 +1,20 @@ +/* +Copyright 2021 v3ritas +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once +#undef TAPPING_TERM +#define TAPPING_TERM 190 + +#define MUSIC_MASK (keycode != KC_NO) +#define MIDI_ADVANCED diff --git a/keyboards/tempo_turtle/bradpad/keymaps/4brad/keymap.c b/keyboards/tempo_turtle/bradpad/keymaps/4brad/keymap.c new file mode 100644 index 0000000000..4c5e988ed5 --- /dev/null +++ b/keyboards/tempo_turtle/bradpad/keymaps/4brad/keymap.c @@ -0,0 +1,148 @@ +/* +Copyright 2021 v3ritas +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +extern MidiDevice midi_device; + +enum layers { + _NATURAL, + _SHARP, + _FLAT, +}; + +/* +MIDI CC codes for generic ON/OFF swiches +80,81,82,83 +values off = 0-63 +*/ + +#define OFF 0 + +/*values on = 64-127*/ + +#define ON 127 + +/*implementation inspo taken from here: https://github.com/luantty2/pheromone_keyboard/blob/master/keyboards/pheromone/keymaps/default/keymap.c */ + +enum custom_keycodes { MIDI_CC80 = SAFE_RANGE, MIDI_CC81, MIDI_CC82, MIDI_CC83 }; + +static bool toggled_MIDI_CC80 = 0, toggled_MIDI_CC81 = 0, toggled_MIDI_CC82 = 0, toggled_MIDI_CC83 = 0; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case MIDI_CC80: + if (!IS_LAYER_ON(_NATURAL)) { + toggled_MIDI_CC80 = false; + if (record->event.pressed) { + midi_send_cc(&midi_device, midi_config.channel, 80, ON); + } else { + midi_send_cc(&midi_device, midi_config.channel, 80, OFF); + } + return true; + } else { + if (record->event.pressed) { + if (!toggled_MIDI_CC80) { + midi_send_cc(&midi_device, midi_config.channel, 80, ON); + } else { + midi_send_cc(&midi_device, midi_config.channel, 80, OFF); + } + toggled_MIDI_CC80 = !toggled_MIDI_CC80; + } + return false; + } + case MIDI_CC81: + if (!IS_LAYER_ON(_NATURAL)) { + toggled_MIDI_CC81 = false; + if (record->event.pressed) { + midi_send_cc(&midi_device, midi_config.channel, 81, ON); + } else { + midi_send_cc(&midi_device, midi_config.channel, 81, OFF); + } + return true; + } else { + if (record->event.pressed) { + if (!toggled_MIDI_CC81) { + midi_send_cc(&midi_device, midi_config.channel, 81, ON); + } else { + midi_send_cc(&midi_device, midi_config.channel, 81, OFF); + } + toggled_MIDI_CC81 = !toggled_MIDI_CC81; + } + return false; + } + case MIDI_CC82: + if (!IS_LAYER_ON(_NATURAL)) { + toggled_MIDI_CC82 = false; + if (record->event.pressed) { + midi_send_cc(&midi_device, midi_config.channel, 82, ON); + } else { + midi_send_cc(&midi_device, midi_config.channel, 82, OFF); + } + return true; + } else { + if (record->event.pressed) { + if (!toggled_MIDI_CC82) { + midi_send_cc(&midi_device, midi_config.channel, 82, ON); + } else { + midi_send_cc(&midi_device, midi_config.channel, 82, OFF); + } + toggled_MIDI_CC82 = !toggled_MIDI_CC82; + } + return false; + } + case MIDI_CC83: + if (!IS_LAYER_ON(_NATURAL)) { + toggled_MIDI_CC83 = false; + if (record->event.pressed) { + midi_send_cc(&midi_device, midi_config.channel, 83, ON); + } else { + midi_send_cc(&midi_device, midi_config.channel, 83, OFF); + } + return true; + } else { + if (record->event.pressed) { + if (!toggled_MIDI_CC83) { + midi_send_cc(&midi_device, midi_config.channel, 83, ON); + } else { + midi_send_cc(&midi_device, midi_config.channel, 83, OFF); + } + toggled_MIDI_CC83 = !toggled_MIDI_CC83; + } + return false; + } + } + return true; +} + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_NATURAL] = LAYOUT( + MI_C, MI_BENDD, MI_BENDU, MI_G, + MI_D, MIDI_CC80, MIDI_CC81, MI_A, + MI_E, MIDI_CC82, MIDI_CC83, MI_B, + MI_F, MI_OCTD, MI_OCTU, MI_C, + MO(_SHARP), MO(_FLAT)), + [_SHARP] = LAYOUT( + MI_Cs, KC_TRNS, KC_TRNS, MI_Gs, + MI_Ds, KC_TRNS, KC_TRNS, MI_As, + MI_F , KC_TRNS, KC_TRNS, MI_C , + MI_Fs, MI_TRNSD, MI_TRNSU, MI_Cs, + KC_TRNS, KC_TRNS), + [_FLAT] = LAYOUT( + MI_B , KC_TRNS, KC_TRNS, MI_Gb, + MI_Db, KC_TRNS, KC_TRNS, MI_Ab, + MI_Eb, KC_TRNS, KC_TRNS, MI_Bb, + MI_E , MI_TRNSD, MI_TRNSU, MI_B, + KC_TRNS, KC_TRNS), +}; diff --git a/keyboards/tempo_turtle/bradpad/keymaps/4brad/rules.mk b/keyboards/tempo_turtle/bradpad/keymaps/4brad/rules.mk new file mode 100644 index 0000000000..b7152364ae --- /dev/null +++ b/keyboards/tempo_turtle/bradpad/keymaps/4brad/rules.mk @@ -0,0 +1 @@ +MIDI_ENABLE = yes #enable MIDI \ No newline at end of file diff --git a/keyboards/tempo_turtle/bradpad/keymaps/default/keymap.c b/keyboards/tempo_turtle/bradpad/keymaps/default/keymap.c new file mode 100644 index 0000000000..331466438a --- /dev/null +++ b/keyboards/tempo_turtle/bradpad/keymaps/default/keymap.c @@ -0,0 +1,24 @@ +/* +Copyright 2021 v3ritas +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_MINUS, + KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_PLUS, + KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_SLASH, + KC_NUMLOCK, KC_KP_0, KC_KP_DOT, KC_KP_ASTERISK, + KC_KP_ENTER, KC_EQUAL) +}; diff --git a/keyboards/tempo_turtle/bradpad/keymaps/midi_demo/config.h b/keyboards/tempo_turtle/bradpad/keymaps/midi_demo/config.h new file mode 100644 index 0000000000..4b885f24a1 --- /dev/null +++ b/keyboards/tempo_turtle/bradpad/keymaps/midi_demo/config.h @@ -0,0 +1,20 @@ +/* +Copyright 2021 v3ritas +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once +#undef TAPPING_TERM +#define TAPPING_TERM 190 + +#define MUSIC_MASK (keycode != KC_NO) +#define MIDI_ADVANCED diff --git a/keyboards/tempo_turtle/bradpad/keymaps/midi_demo/keymap.c b/keyboards/tempo_turtle/bradpad/keymaps/midi_demo/keymap.c new file mode 100644 index 0000000000..714e64ba80 --- /dev/null +++ b/keyboards/tempo_turtle/bradpad/keymaps/midi_demo/keymap.c @@ -0,0 +1,42 @@ +/* +Copyright 2021 v3ritas +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layers { + _NATURAL, + _SHARP, + _FLAT +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_NATURAL] = LAYOUT( + MI_C, MI_BENDD, MI_BENDU, MI_G, + MI_D, MI_VELD, MI_VELU, MI_A, + MI_E, MI_TRNSD, MI_TRNSU, MI_B, + MI_F, MI_OCTD, MI_OCTU, MI_C, + MO(_SHARP), MO(_FLAT)), + [_SHARP] = LAYOUT( + MI_Cs, KC_TRNS, KC_TRNS, MI_Gs, + MI_Ds, KC_TRNS, KC_TRNS, MI_As, + MI_F , KC_TRNS, KC_TRNS, MI_C , + MI_Fs, KC_TRNS, KC_TRNS, MI_Cs, + KC_TRNS, KC_TRNS), + [_FLAT] = LAYOUT( + MI_B , KC_TRNS, KC_TRNS, MI_Gb, + MI_Db, KC_TRNS, KC_TRNS, MI_Ab, + MI_Eb, KC_TRNS, KC_TRNS, MI_Bb, + MI_E , KC_TRNS, KC_TRNS, MI_B, + KC_TRNS, KC_TRNS), +}; diff --git a/keyboards/tempo_turtle/bradpad/keymaps/midi_demo/rules.mk b/keyboards/tempo_turtle/bradpad/keymaps/midi_demo/rules.mk new file mode 100644 index 0000000000..b7152364ae --- /dev/null +++ b/keyboards/tempo_turtle/bradpad/keymaps/midi_demo/rules.mk @@ -0,0 +1 @@ +MIDI_ENABLE = yes #enable MIDI \ No newline at end of file diff --git a/keyboards/tempo_turtle/bradpad/keymaps/via/keymap.c b/keyboards/tempo_turtle/bradpad/keymaps/via/keymap.c new file mode 100644 index 0000000000..0ef205288a --- /dev/null +++ b/keyboards/tempo_turtle/bradpad/keymaps/via/keymap.c @@ -0,0 +1,50 @@ +/* +Copyright 2021 v3ritas +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layers { + _LAYER0, + _LAYER1, + _LAYER2, + _LAYER3, +}; +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_LAYER0] = LAYOUT( + KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_MINUS, \ + KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_PLUS, \ + KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_SLASH, \ + KC_NUMLOCK, KC_KP_0, KC_KP_DOT, KC_KP_ASTERISK, \ + KC_KP_ENTER, KC_EQUAL), + [_LAYER1] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS), + [_LAYER2] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS), + [_LAYER3] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS) +}; +// clang-format on diff --git a/keyboards/tempo_turtle/bradpad/keymaps/via/rules.mk b/keyboards/tempo_turtle/bradpad/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/tempo_turtle/bradpad/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/tempo_turtle/bradpad/readme.md b/keyboards/tempo_turtle/bradpad/readme.md new file mode 100644 index 0000000000..d42373e7b5 --- /dev/null +++ b/keyboards/tempo_turtle/bradpad/readme.md @@ -0,0 +1,32 @@ +# bradpad + +![bradpad](https://imgur.com/1WONr4Ph.jpg) + +The QMK firmware for the bradpad a music production inspired macropad. + +* Keyboard Maintainer: [wxyangf](https://github.com/wxyangf) +* Hardware Supported: bradpad pcbs +* Hardware Availability: [1UP Keyboards](https://1upkeyboards.com/) + +[Album of Prototype of Production Version(v1.5.x)](https://imgur.com/a/kH5ttny) + +[Album of Elite-C Version (v1)](https://imgur.com/a/xjocnNo) + +How to reset production version into bootloader mode: + +[Video Tutorial](https://youtu.be/Bk429i4Y0E4) + + 1. Locate the reset button on the underside of the pcb. + 2. Press the reset button for a few seconds using a paperclip, fingertip(if bare pcb), other similar object. + 3. Release the reset button. + 4. Your bradpad should now be in bootloader mode. + +How to reset Elite-C version into bootloader mode: + 1. Located Elite-C + 2. Reset Elite-C + +Make example for this keyboard (after setting up your build environment): + + make tempo_turtle/bradpad:default + +See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. diff --git a/keyboards/tempo_turtle/bradpad/rules.mk b/keyboards/tempo_turtle/bradpad/rules.mk new file mode 100644 index 0000000000..c0685cf304 --- /dev/null +++ b/keyboards/tempo_turtle/bradpad/rules.mk @@ -0,0 +1,23 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +UNICODE_ENABLE = yes From 1d3f775051fd118fc9c5d95a4f278761117c2c97 Mon Sep 17 00:00:00 2001 From: Brandon Lee <36001126+bleeCS@users.noreply.github.com> Date: Sun, 16 May 2021 18:43:33 -0400 Subject: [PATCH 396/613] [Keyboard] Update Rosa vendorId to something unique for VIA (#12918) --- keyboards/illusion/rosa/config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/illusion/rosa/config.h b/keyboards/illusion/rosa/config.h index 0fcf4931c3..6bd4884138 100644 --- a/keyboards/illusion/rosa/config.h +++ b/keyboards/illusion/rosa/config.h @@ -20,7 +20,7 @@ along with this program. If not, see . #include "config_common.h" /* USB Device descriptor parameter */ -#define VENDOR_ID 0x696B // ik -> illusion keyboards +#define VENDOR_ID 0x694B // iK -> illusion keyboards #define PRODUCT_ID 0x6952 // iR -> illusion Rosa #define DEVICE_VER 0x0001 #define MANUFACTURER illusion keyboards From f7c6d68b3443e242cd658e2913d16db8b2318e03 Mon Sep 17 00:00:00 2001 From: kb-elmo Date: Mon, 17 May 2021 10:55:37 +0200 Subject: [PATCH 397/613] [Keyboard] Friedrich (#12569) * added Friedrich * Update readme.md * Update readme.md * Update keyboards/friedrich/keymaps/via/rules.mk * change USB name casing --- keyboards/friedrich/config.h | 45 ++++++++++++++ keyboards/friedrich/friedrich.c | 17 ++++++ keyboards/friedrich/friedrich.h | 43 +++++++++++++ keyboards/friedrich/info.json | 64 ++++++++++++++++++++ keyboards/friedrich/keymaps/default/keymap.c | 33 ++++++++++ keyboards/friedrich/keymaps/via/keymap.c | 47 ++++++++++++++ keyboards/friedrich/keymaps/via/rules.mk | 1 + keyboards/friedrich/readme.md | 21 +++++++ keyboards/friedrich/rules.mk | 22 +++++++ 9 files changed, 293 insertions(+) create mode 100644 keyboards/friedrich/config.h create mode 100644 keyboards/friedrich/friedrich.c create mode 100644 keyboards/friedrich/friedrich.h create mode 100644 keyboards/friedrich/info.json create mode 100644 keyboards/friedrich/keymaps/default/keymap.c create mode 100644 keyboards/friedrich/keymaps/via/keymap.c create mode 100644 keyboards/friedrich/keymaps/via/rules.mk create mode 100644 keyboards/friedrich/readme.md create mode 100644 keyboards/friedrich/rules.mk diff --git a/keyboards/friedrich/config.h b/keyboards/friedrich/config.h new file mode 100644 index 0000000000..1e4e36f2e4 --- /dev/null +++ b/keyboards/friedrich/config.h @@ -0,0 +1,45 @@ +/* +Copyright 2021 kb-elmo + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x6481 +#define PRODUCT_ID 0xB4A2 +#define DEVICE_VER 0x0001 +#define MANUFACTURER kb-elmo +#define PRODUCT Friedrich + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 12 + +/* Keyboard Matrix Assignments */ +#define MATRIX_ROW_PINS { F4, F1, F0, F5, D5 } +#define MATRIX_COL_PINS { F6, F7, E6, B2, B3, D4, D6, D7, B4, C6, B5, B6 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* CAPS LED */ +#define LED_CAPS_LOCK_PIN B1 + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 diff --git a/keyboards/friedrich/friedrich.c b/keyboards/friedrich/friedrich.c new file mode 100644 index 0000000000..5c6995202d --- /dev/null +++ b/keyboards/friedrich/friedrich.c @@ -0,0 +1,17 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "friedrich.h" diff --git a/keyboards/friedrich/friedrich.h b/keyboards/friedrich/friedrich.h new file mode 100644 index 0000000000..d4f043b771 --- /dev/null +++ b/keyboards/friedrich/friedrich.h @@ -0,0 +1,43 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define ____ KC_NO + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT( \ + k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k210, k011, \ + k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, \ + k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k211, \ + k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k311, \ + k400, k401, k405, k409, k410 \ +) { \ + { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011 }, \ + { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111 }, \ + { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211 }, \ + { k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, ____, k311 }, \ + { k400, k401, ____, ____, ____, k405, ____, ____, ____, k409, k410, ____ } \ +} diff --git a/keyboards/friedrich/info.json b/keyboards/friedrich/info.json new file mode 100644 index 0000000000..94b9f1a205 --- /dev/null +++ b/keyboards/friedrich/info.json @@ -0,0 +1,64 @@ +{ + "keyboard_name": "Friedrich", + "url": "https://github.com/MarvFPV/Friedrich", + "maintainer": "kb-elmo", + "width": 13, + "height": 5, + "layouts": { + "LAYOUT": { + "layout": [{"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1, "w":1.5}, + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2, "w":2.25}, + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3, "w":1.75}, + {"x":1.125, "y":4}, + {"x":2.125, "y":4, "w":1.25}, + {"x":3.375, "y":4, "w":6.25}, + {"x":9.625, "y":4, "w":1.25}, + {"x":10.875, "y":4} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/friedrich/keymaps/default/keymap.c b/keyboards/friedrich/keymaps/default/keymap.c new file mode 100644 index 0000000000..31474f4d06 --- /dev/null +++ b/keyboards/friedrich/keymaps/default/keymap.c @@ -0,0 +1,33 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, + KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1) + ), + [1] = LAYOUT( + KC_GRV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_DEL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SCLN, KC_QUOT, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPRV, KC_MNXT, KC_MPLY, KC_SLSH, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/friedrich/keymaps/via/keymap.c b/keyboards/friedrich/keymaps/via/keymap.c new file mode 100644 index 0000000000..cbbe87b168 --- /dev/null +++ b/keyboards/friedrich/keymaps/via/keymap.c @@ -0,0 +1,47 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, + KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1) + ), + [1] = LAYOUT( + KC_GRV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_DEL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SCLN, KC_QUOT, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPRV, KC_MNXT, KC_MPLY, KC_SLSH, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/friedrich/keymaps/via/rules.mk b/keyboards/friedrich/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/friedrich/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/friedrich/readme.md b/keyboards/friedrich/readme.md new file mode 100644 index 0000000000..dbe890bd94 --- /dev/null +++ b/keyboards/friedrich/readme.md @@ -0,0 +1,21 @@ +# Friedrich + +![friedrich](https://i.imgur.com/LH15u37l.jpg) + +A small printer friendly 3D printed 50% keyboard. + +* Keyboard Maintainer: [kb-elmo](https://github.com/kb-elmo) +* Hardware Supported: Friedrich PCB by kb-elmo +* Hardware Availability: [Open source project](https://github.com/MarvFPV/Friedrich) + +Make example for this keyboard (after setting up your build environment): + + make friedrich:default + +Flashing example for this keyboard: + + make friedrich:default:flash + +**Bootloader:** Press the physical reset button on the top side of the PCB or hold down ESC while plugging in the board. + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/friedrich/rules.mk b/keyboards/friedrich/rules.mk new file mode 100644 index 0000000000..a90eef1fc6 --- /dev/null +++ b/keyboards/friedrich/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output From 3bee24a8275eba13ada7e22b94cc96649c05e96f Mon Sep 17 00:00:00 2001 From: Caleb Lightfoot <61706196+Tsquash@users.noreply.github.com> Date: Mon, 17 May 2021 10:52:01 -0500 Subject: [PATCH 398/613] Add Yeehaw Keyboard (#12705) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add files for Yeehaw keyboard. * Modified config.h and default keymap. * Update keyboards/yeehaw/rules.mk Co-authored-by: ridingqwerty * Update keyboards/yeehaw/readme.md Co-authored-by: ridingqwerty * Update keyboards/yeehaw/readme.md Co-authored-by: ridingqwerty * Update keyboards/yeehaw/keymaps/via/keymap.c Co-authored-by: ridingqwerty * Update keyboards/yeehaw/keymaps/via/keymap.c Co-authored-by: ridingqwerty * Update keyboards/yeehaw/keymaps/via/keymap.c Co-authored-by: ridingqwerty * Apply suggestions from georges review Co-authored-by: ridingqwerty * Remove Unnecessary Defines Co-authored-by: Drashna Jaelre * Changed keymap licenses 📃 Co-authored-by: Tsqaushv2 <61706196+Tsqaushv2@users.noreply.github.com> Co-authored-by: ridingqwerty Co-authored-by: Drashna Jaelre --- keyboards/yeehaw/config.h | 50 +++++++++++++ keyboards/yeehaw/info.json | 12 +++ keyboards/yeehaw/keymaps/default/keymap.c | 71 ++++++++++++++++++ keyboards/yeehaw/keymaps/via/keymap.c | 90 +++++++++++++++++++++++ keyboards/yeehaw/keymaps/via/rules.mk | 1 + keyboards/yeehaw/readme.md | 22 ++++++ keyboards/yeehaw/rules.mk | 20 +++++ keyboards/yeehaw/yeehaw.c | 16 ++++ keyboards/yeehaw/yeehaw.h | 25 +++++++ 9 files changed, 307 insertions(+) create mode 100644 keyboards/yeehaw/config.h create mode 100644 keyboards/yeehaw/info.json create mode 100644 keyboards/yeehaw/keymaps/default/keymap.c create mode 100644 keyboards/yeehaw/keymaps/via/keymap.c create mode 100644 keyboards/yeehaw/keymaps/via/rules.mk create mode 100644 keyboards/yeehaw/readme.md create mode 100644 keyboards/yeehaw/rules.mk create mode 100644 keyboards/yeehaw/yeehaw.c create mode 100644 keyboards/yeehaw/yeehaw.h diff --git a/keyboards/yeehaw/config.h b/keyboards/yeehaw/config.h new file mode 100644 index 0000000000..c13c70eae9 --- /dev/null +++ b/keyboards/yeehaw/config.h @@ -0,0 +1,50 @@ +/* Copyright 2021 Caleb Lightfoot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x5351 +#define PRODUCT_ID 0x5458 +#define DEVICE_VER 0x0100 +#define MANUFACTURER squashkb +#define PRODUCT Yeehaw + + +/* key matrix size */ +#define MATRIX_ROWS 1 +#define MATRIX_COLS 14 + +/* Keyboard Matrix Assignments */ +#define DIRECT_PINS { \ +{ D2, D4, C6, E6, F5, B1, D3, D7, B4, F6, B3, B5, F7, F4 } \ +} + +#define ENCODERS_PAD_A { D1 } +#define ENCODERS_PAD_B { D0 } + +#define RGB_DI_PIN B2 +#ifdef RGB_DI_PIN + #define RGBLED_NUM 7 + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 + #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ + #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ + /*== all animations enable ==*/ + #define RGBLIGHT_ANIMATIONS +#endif diff --git a/keyboards/yeehaw/info.json b/keyboards/yeehaw/info.json new file mode 100644 index 0000000000..d121b07b98 --- /dev/null +++ b/keyboards/yeehaw/info.json @@ -0,0 +1,12 @@ +{ + "keyboard_name": "Yeehaw", + "url": "https://squashkb.com/product/yeehaw", + "maintainer": "Tsquash", + "width": 5, + "height": 5.5, + "layouts": { + "LAYOUT": { + "layout": [{"label":"VOLU", "x":1, "y":0}, {"label":"VOLD", "x":1, "y":1}, {"label":"M1", "x":2, "y":1.5}, {"label":"UP", "x":3, "y":1.5}, {"label":"MNXT", "x":1, "y":2}, {"label":"M2", "x":4, "y":2}, {"label":"LEFT", "x":2, "y":2.5}, {"label":"DOWN", "x":3, "y":2.5}, {"label":"MO(1)", "x":0, "y":2.75}, {"label":"MPRV", "x":1, "y":3}, {"label":"RIGHT", "x":4, "y":3}, {"label":"MPLY", "x":2, "y":3.5}, {"label":"CTL S", "x":3, "y":3.5}, {"label":"RGB TOG", "x":2.5, "y":4.5}] + } + } +} \ No newline at end of file diff --git a/keyboards/yeehaw/keymaps/default/keymap.c b/keyboards/yeehaw/keymaps/default/keymap.c new file mode 100644 index 0000000000..abcbc838a9 --- /dev/null +++ b/keyboards/yeehaw/keymaps/default/keymap.c @@ -0,0 +1,71 @@ + /* Copyright 2021 Caleb Lightfoot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum custom_keycodes { + YEEHAW = SAFE_RANGE, + SQUASHKB, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT( + KC_VOLU, + KC_VOLD, + KC_MPRV, YEEHAW, KC_UP, SQUASHKB, + MO(1), KC_MNXT, KC_LEFT, KC_DOWN, KC_RIGHT, + KC_MPLY, LCTL(KC_S), + RGB_TOG + ), + + [1] = LAYOUT( + RGB_HUI, + RGB_HUD, + RGB_SAI, RGB_VAI, RGB_VAD, RGB_SPI, +KC_TRNS, RGB_SAD, RGB_M_P, RGB_MOD, RGB_SPD, + KC_TRNS, KC_TRNS, + RESET + ), + +}; + +void encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { /* First encoder */ + if (clockwise) { + tap_code(KC_VOLD); + } else { + tap_code(KC_VOLU); + } + } +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case YEEHAW: + if (record->event.pressed) { + SEND_STRING("yeehaw!"); + } + break; + + case SQUASHKB: + if (record->event.pressed) { + SEND_STRING("http://squashkb.com"); + } + break; + } + return true; +}; diff --git a/keyboards/yeehaw/keymaps/via/keymap.c b/keyboards/yeehaw/keymaps/via/keymap.c new file mode 100644 index 0000000000..43fc3aee57 --- /dev/null +++ b/keyboards/yeehaw/keymaps/via/keymap.c @@ -0,0 +1,90 @@ + /* Copyright 2021 Caleb Lightfoot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + + +enum custom_keycodes { + YEEHAW = SAFE_RANGE, + SQUASHKB, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT( + KC_VOLU, + KC_VOLD, + KC_MPRV, YEEHAW, KC_UP, SQUASHKB, + MO(1), KC_MNXT, KC_LEFT, KC_DOWN, KC_RIGHT, + KC_MPLY, LCTL(KC_S), + RGB_TOG + ), + + [1] = LAYOUT( + RGB_HUI, + RGB_HUD, + RGB_SAI, RGB_VAI, RGB_VAD, RGB_SPI, +KC_TRNS, RGB_SAD, RGB_M_P, RGB_MOD, RGB_SPD, + KC_TRNS, KC_TRNS, + RESET + ), + + [2] = LAYOUT( + ____, + ____, + ____, ____, ____, ____, +____, ____, ____, ____, ____, + ____, ____, + ____ + ), + + [3] = LAYOUT( + ____, + ____, + ____, ____, ____, ____, +____, ____, ____, ____, ____, + ____, ____, + ____ + ), + +}; + +void encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { /* First encoder */ + if (clockwise) { + tap_code(KC_VOLD); + } else { + tap_code(KC_VOLU); + } + } +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case YEEHAW: + if (record->event.pressed) { + SEND_STRING("yeehaw!"); + } + break; + + case SQUASHKB: + if (record->event.pressed) { + SEND_STRING("http://squashkb.com"); + } + break; + } + return true; +}; diff --git a/keyboards/yeehaw/keymaps/via/rules.mk b/keyboards/yeehaw/keymaps/via/rules.mk new file mode 100644 index 0000000000..036bd6d1c3 --- /dev/null +++ b/keyboards/yeehaw/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/yeehaw/readme.md b/keyboards/yeehaw/readme.md new file mode 100644 index 0000000000..1435254d03 --- /dev/null +++ b/keyboards/yeehaw/readme.md @@ -0,0 +1,22 @@ +# Yee-Haw Macro Pad + +![Yeehaw](https://imgur.com/a/P6eSrcy) + +A 14 key macro pad in the shape of Texas. + +* Keyboard Maintainer: [Caleb Lightfoot](https://github.com/Tsquash) +* Hardware Supported: Yee-Haw PCB v1.0 +* Hardware Availability: [squashkb](https://www.squashkb.com) + +Make example for this keyboard (after setting up your build environment): + + qmk compile -kb yeehaw -km default + +To reset the keyboard, press the physical reset button located on the back of the PCB. + +Install example for this keyboard: + + qmk flash -kb yeehaw -km default + + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/yeehaw/rules.mk b/keyboards/yeehaw/rules.mk new file mode 100644 index 0000000000..3fc8514b5a --- /dev/null +++ b/keyboards/yeehaw/rules.mk @@ -0,0 +1,20 @@ +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +MIDI_ENABLE = no # MIDI support +UNICODE_ENABLE = no # Unicode +ENCODER_ENABLE = yes diff --git a/keyboards/yeehaw/yeehaw.c b/keyboards/yeehaw/yeehaw.c new file mode 100644 index 0000000000..3c8a29cade --- /dev/null +++ b/keyboards/yeehaw/yeehaw.c @@ -0,0 +1,16 @@ +/* Copyright 2021 Caleb Lightfoot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "yeehaw.h" diff --git a/keyboards/yeehaw/yeehaw.h b/keyboards/yeehaw/yeehaw.h new file mode 100644 index 0000000000..0d63efab97 --- /dev/null +++ b/keyboards/yeehaw/yeehaw.h @@ -0,0 +1,25 @@ +/* Copyright 2021 Caleb Lightfoot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#define LAYOUT( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K010, K011, K012, K013 \ +) { \ +{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K010, K011, K012, K013 } \ + } + From 22e9a0bd01b5e788b4595e590b4a8a7cc59082e4 Mon Sep 17 00:00:00 2001 From: rainkeebs <44819800+rainkeebs@users.noreply.github.com> Date: Mon, 17 May 2021 15:53:45 -0700 Subject: [PATCH 399/613] Added Yasui keyboard (#12726) * initial * fix * Update config.h * Update config.h * Update rules.mk * Delete info.json * fuix * PR work * replace keymap with layout Co-authored-by: rainsff <44819800+rainsff@users.noreply.github.com> --- keyboards/yasui/config.h | 56 ++++++++++++++++++++++++ keyboards/yasui/info.json | 12 +++++ keyboards/yasui/keymaps/default/keymap.c | 43 ++++++++++++++++++ keyboards/yasui/keymaps/via/keymap.c | 43 ++++++++++++++++++ keyboards/yasui/keymaps/via/rules.mk | 1 + keyboards/yasui/readme.md | 22 ++++++++++ keyboards/yasui/rules.mk | 20 +++++++++ keyboards/yasui/yasui.c | 16 +++++++ keyboards/yasui/yasui.h | 30 +++++++++++++ 9 files changed, 243 insertions(+) create mode 100644 keyboards/yasui/config.h create mode 100644 keyboards/yasui/info.json create mode 100644 keyboards/yasui/keymaps/default/keymap.c create mode 100644 keyboards/yasui/keymaps/via/keymap.c create mode 100644 keyboards/yasui/keymaps/via/rules.mk create mode 100644 keyboards/yasui/readme.md create mode 100644 keyboards/yasui/rules.mk create mode 100644 keyboards/yasui/yasui.c create mode 100644 keyboards/yasui/yasui.h diff --git a/keyboards/yasui/config.h b/keyboards/yasui/config.h new file mode 100644 index 0000000000..7d41a9e7f9 --- /dev/null +++ b/keyboards/yasui/config.h @@ -0,0 +1,56 @@ +/* Copyright 2021 Regan Palmer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x726B // rk - "rainkeebs" +#define PRODUCT_ID 0x7973 // ys - "yasui" +#define DEVICE_VER 0x0001 +#define MANUFACTURER rainkeebs +#define PRODUCT yasui + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 10 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { D4, C6, B5, E6 } +#define MATRIX_COL_PINS { D7, B4, B6, B2, B3, B1, F7, F6, F5, F4 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCING 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE + +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +#define RGB_DI_PIN D1 + +#ifdef RGB_DI_PIN +#define RGBLIGHT_ANIMATIONS +#define RGBLED_NUM 10 +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 +#endif diff --git a/keyboards/yasui/info.json b/keyboards/yasui/info.json new file mode 100644 index 0000000000..496c190b46 --- /dev/null +++ b/keyboards/yasui/info.json @@ -0,0 +1,12 @@ +{ + "keyboard_name": "Yasui", + "url": "https://www.rainkeebs.mx/product/yasui-keyboard-kit", + "maintainer": "rainkeebs", + "width": 10, + "height": 4, + "layouts": { + "LAYOUT": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":6, "y":3}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}] + } + } +} diff --git a/keyboards/yasui/keymaps/default/keymap.c b/keyboards/yasui/keymaps/default/keymap.c new file mode 100644 index 0000000000..3f90b06c41 --- /dev/null +++ b/keyboards/yasui/keymaps/default/keymap.c @@ -0,0 +1,43 @@ +/* Copyright 2021 Regan Palmer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT( + 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, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_BSPC, + KC_LCTL, KC_LALT, MO(1), KC_LSFT, KC_MPLY, KC_SPC, KC_SPC, MO(2), KC_RALT, KC_RCTL), + + LAYOUT( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_ESC, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_MINS, KC_EQL, KC_QUOT, KC_SCLN, KC_TRNS, + KC_TAB, KC_DEL, KC_PSCR, KC_LBRC, KC_RBRC, KC_BSLS, KC_SLSH, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; diff --git a/keyboards/yasui/keymaps/via/keymap.c b/keyboards/yasui/keymaps/via/keymap.c new file mode 100644 index 0000000000..3f90b06c41 --- /dev/null +++ b/keyboards/yasui/keymaps/via/keymap.c @@ -0,0 +1,43 @@ +/* Copyright 2021 Regan Palmer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT( + 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, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_BSPC, + KC_LCTL, KC_LALT, MO(1), KC_LSFT, KC_MPLY, KC_SPC, KC_SPC, MO(2), KC_RALT, KC_RCTL), + + LAYOUT( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_ESC, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_MINS, KC_EQL, KC_QUOT, KC_SCLN, KC_TRNS, + KC_TAB, KC_DEL, KC_PSCR, KC_LBRC, KC_RBRC, KC_BSLS, KC_SLSH, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; diff --git a/keyboards/yasui/keymaps/via/rules.mk b/keyboards/yasui/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/yasui/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/yasui/readme.md b/keyboards/yasui/readme.md new file mode 100644 index 0000000000..dfc20bbe6b --- /dev/null +++ b/keyboards/yasui/readme.md @@ -0,0 +1,22 @@ +# Yasui + +![Yasui](https://i.imgur.com/TRFOEkw.png) + +A 10u ortho kit. + +* Keyboard Maintainer: Rain +* Hardware Supported: Yasui PCB v2 +* Hardware Availability: [rainkeebs](https://www.rainkeebs.mx/product/yasui-keyboard-kit) + + +Make example for this keyboard (after setting up your build environment): + + qmk compile -kb yasui -kb default + +To reset the keyboard, hold the top left key while plugging in, or hit the reset button near the USB port + +Install example for this keyboard: + + qmk flash -kb yasui -km default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/yasui/rules.mk b/keyboards/yasui/rules.mk new file mode 100644 index 0000000000..b8adede3eb --- /dev/null +++ b/keyboards/yasui/rules.mk @@ -0,0 +1,20 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader +BOOTLOADER = caterina + +# Build Options +# comment out to disable the options. +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no +RGBLIGHT_ENABLE = yes + diff --git a/keyboards/yasui/yasui.c b/keyboards/yasui/yasui.c new file mode 100644 index 0000000000..a87f7482a0 --- /dev/null +++ b/keyboards/yasui/yasui.c @@ -0,0 +1,16 @@ +/* Copyright 2021 Regan Palmer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "yasui.h" diff --git a/keyboards/yasui/yasui.h b/keyboards/yasui/yasui.h new file mode 100644 index 0000000000..387b9a5ac8 --- /dev/null +++ b/keyboards/yasui/yasui.h @@ -0,0 +1,30 @@ +/* Copyright 2021 Regan Palmer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#define LAYOUT( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309 } \ +} From 4dd5f45b6ca96de3b50e6cb48e29010ab8b94cbf Mon Sep 17 00:00:00 2001 From: Oliver Ocean Date: Mon, 17 May 2021 18:51:45 -0500 Subject: [PATCH 400/613] [Keymap] Crkbd/keymaps/oo (#12882) --- keyboards/crkbd/keymaps/oo/config.h | 28 +++++ keyboards/crkbd/keymaps/oo/keymap.c | 165 +++++++++++++++++++++++++++ keyboards/crkbd/keymaps/oo/readme.md | 19 +++ keyboards/crkbd/keymaps/oo/rules.mk | 1 + 4 files changed, 213 insertions(+) create mode 100644 keyboards/crkbd/keymaps/oo/config.h create mode 100644 keyboards/crkbd/keymaps/oo/keymap.c create mode 100644 keyboards/crkbd/keymaps/oo/readme.md create mode 100644 keyboards/crkbd/keymaps/oo/rules.mk diff --git a/keyboards/crkbd/keymaps/oo/config.h b/keyboards/crkbd/keymaps/oo/config.h new file mode 100644 index 0000000000..8dc71430a1 --- /dev/null +++ b/keyboards/crkbd/keymaps/oo/config.h @@ -0,0 +1,28 @@ +/* +This is the c configuration file for the keymap + +Copyright 2012 Jun Wako +Copyright 2015 Jack Humbert + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#define SPLIT_USB_DETECT + +#define TAPPING_FORCE_HOLD +#define TAPPING_TERM 100 + +#define OLED_FONT_H "keyboards/crkbd/lib/glcdfont.c" diff --git a/keyboards/crkbd/keymaps/oo/keymap.c b/keyboards/crkbd/keymaps/oo/keymap.c new file mode 100644 index 0000000000..b0b6f538a5 --- /dev/null +++ b/keyboards/crkbd/keymaps/oo/keymap.c @@ -0,0 +1,165 @@ +/* + Copyright 2019 @foostan + Copyright 2020 Drashna Jaelre <@drashna> + Copyright 2021 Oliver Ocean <@oliverocean> + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_split_3x6_3( + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_LALT, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_RALT, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_LCTL, MO(1), KC_ENT, MO(2), KC_SPC, KC_RGUI + // |--------+--------+--------| |--------+--------+--------| + ), + + [1] = LAYOUT_split_3x6_3( + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_TRNS, KC_BSLS, KC_UNDS, KC_TAB, KC_PEQL, KC_TILD, KC_GRV, KC_PEQL, KC_TAB, KC_UNDS, KC_BSLS, KC_TRNS, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_TRNS, KC_NO, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO, KC_NO, KC_NO, KC_TRNS, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSPC, KC_TRNS + // |--------+--------+--------| |--------+--------+--------| + ), + + [2] = LAYOUT_split_3x6_3( + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_TRNS, KC_PIPE, KC_LT, KC_LPRN, KC_LCBR, KC_LBRC, KC_RBRC, KC_RCBR, KC_RPRN, KC_GT, KC_PIPE, KC_TRNS, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_PMNS, KC_PPLS, KC_TRNS, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_TRNS, KC_CAPS, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_CAPS, KC_TRNS, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SPC, KC_TRNS + // |--------+--------+--------| |--------+--------+--------| + ) + +}; + + +#ifdef OLED_DRIVER_ENABLE +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + if (!is_master) { + return OLED_ROTATION_180; // flips the display 180 degrees if offhand + } + return rotation; +} + +#define L_BASE 0 +#define L_LOWER 2 +#define L_RAISE 4 +#define L_ADJUST 8 + +void oled_render_layer_state(void) { + oled_write_P(PSTR("Layer: "), false); + switch (layer_state) { + case L_BASE: + oled_write_ln_P(PSTR("Default"), false); + break; + case L_LOWER: + oled_write_ln_P(PSTR("Lower"), false); + break; + case L_RAISE: + oled_write_ln_P(PSTR("Raise"), false); + break; + case L_ADJUST: + case L_ADJUST|L_LOWER: + case L_ADJUST|L_RAISE: + case L_ADJUST|L_LOWER|L_RAISE: + oled_write_ln_P(PSTR("Adjust"), false); + break; + } +} + + +char keylog_str[24] = {}; + +const char code_to_name[60] = { + ' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f', + 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', + 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', + '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', + 'R', 'E', 'B', 'T', '_', '-', '=', '[', ']', '\\', + '#', ';', '\'', '`', ',', '.', '/', ' ', ' ', ' '}; + +void set_keylog(uint16_t keycode, keyrecord_t *record) { + char name = ' '; + if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || + (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) { keycode = keycode & 0xFF; } + if (keycode < 60) { + name = code_to_name[keycode]; + } + + // update keylog + snprintf(keylog_str, sizeof(keylog_str), "%dx%d, k%2d : %c", + record->event.key.row, record->event.key.col, + keycode, name); +} + +void oled_render_keylog(void) { + oled_write(keylog_str, false); +} + +void render_bootmagic_status(bool status) { + /* Show Ctrl-Gui Swap options */ + static const char PROGMEM logo[][2][3] = { + {{0x97, 0x98, 0}, {0xb7, 0xb8, 0}}, + {{0x95, 0x96, 0}, {0xb5, 0xb6, 0}}, + }; + if (status) { + oled_write_ln_P(logo[0][0], false); + oled_write_ln_P(logo[0][1], false); + } else { + oled_write_ln_P(logo[1][0], false); + oled_write_ln_P(logo[1][1], false); + } +} + +void oled_render_logo(void) { + static const char PROGMEM crkbd_logo[] = { + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, + 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, + 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, + 0}; + oled_write_P(crkbd_logo, false); +} + +void oled_task_user(void) { + if (is_master) { + oled_render_layer_state(); + oled_render_keylog(); + } else { + oled_render_logo(); + } +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + if (record->event.pressed) { + set_keylog(keycode, record); + } + return true; +} +#endif // OLED_DRIVER_ENABLE diff --git a/keyboards/crkbd/keymaps/oo/readme.md b/keyboards/crkbd/keymaps/oo/readme.md new file mode 100644 index 0000000000..e7ef686599 --- /dev/null +++ b/keyboards/crkbd/keymaps/oo/readme.md @@ -0,0 +1,19 @@ +# Build instructions + +```zsh +# if this is a fresh install of QMK, don't forget to run setup +# or you might be missing necessary tools and libraries! +# https://docs.qmk.fm/#/newbs_getting_started +$ qmk setup + +# using json via the configurator can be easier than starting from scratch +# but you will need to go back and make the formatting readable for future edits +$ qmk json2c -o keymap.c keymap.json + +# compile; use appropriate tool for your microcontroller +$ qmk compile -kb crkbd/rev1/common -km oo + +# flash; each side has to be done separately +$ qmk flash -kb crkbd/rev1/common -km oo + +``` diff --git a/keyboards/crkbd/keymaps/oo/rules.mk b/keyboards/crkbd/keymaps/oo/rules.mk new file mode 100644 index 0000000000..c582662134 --- /dev/null +++ b/keyboards/crkbd/keymaps/oo/rules.mk @@ -0,0 +1 @@ +OLED_DRIVER_ENABLE = yes From d86a97a08902c8103df6450696d497fb15cba0cb Mon Sep 17 00:00:00 2001 From: ridingqwerty Date: Tue, 18 May 2021 13:46:53 -0400 Subject: [PATCH 401/613] Fix yeehaw (#12934) * CRLF? * Changed VIA keymap to use core KC_TRNS alias --- keyboards/yeehaw/keymaps/via/keymap.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/keyboards/yeehaw/keymaps/via/keymap.c b/keyboards/yeehaw/keymaps/via/keymap.c index 43fc3aee57..e1d10bf0ed 100644 --- a/keyboards/yeehaw/keymaps/via/keymap.c +++ b/keyboards/yeehaw/keymaps/via/keymap.c @@ -43,21 +43,21 @@ KC_TRNS, RGB_SAD, RGB_M_P, RGB_MOD, RGB_SPD, ), [2] = LAYOUT( - ____, - ____, - ____, ____, ____, ____, -____, ____, ____, ____, ____, - ____, ____, - ____ + _______, + _______, + _______, _______, _______, _______, +_______, _______, _______, _______, _______, + _______, _______, + _______ ), [3] = LAYOUT( - ____, - ____, - ____, ____, ____, ____, -____, ____, ____, ____, ____, - ____, ____, - ____ + _______, + _______, + _______, _______, _______, _______, +_______, _______, _______, _______, _______, + _______, _______, + _______ ), }; From 1c81e69503a0c69b46ed7f4f94b040b67489bbf4 Mon Sep 17 00:00:00 2001 From: Peter Park Date: Tue, 18 May 2021 10:52:10 -0700 Subject: [PATCH 402/613] The Uni keyboard. Add keyboard (#12566) * first commit * Apply suggestions from code review Co-authored-by: Drashna Jaelre * Apply suggestions from code review by ridingqwerty Co-authored-by: ridingqwerty Co-authored-by: Drashna Jaelre Co-authored-by: ridingqwerty --- keyboards/the_uni/config.h | 52 +++++++++++++++ keyboards/the_uni/info.json | 41 ++++++++++++ keyboards/the_uni/keymaps/default/keymap.c | 77 ++++++++++++++++++++++ keyboards/the_uni/keymaps/qwerty/keymap.c | 77 ++++++++++++++++++++++ keyboards/the_uni/readme.md | 19 ++++++ keyboards/the_uni/rules.mk | 21 ++++++ keyboards/the_uni/the_uni.c | 18 +++++ keyboards/the_uni/the_uni.h | 30 +++++++++ 8 files changed, 335 insertions(+) create mode 100644 keyboards/the_uni/config.h create mode 100644 keyboards/the_uni/info.json create mode 100644 keyboards/the_uni/keymaps/default/keymap.c create mode 100644 keyboards/the_uni/keymaps/qwerty/keymap.c create mode 100644 keyboards/the_uni/readme.md create mode 100644 keyboards/the_uni/rules.mk create mode 100644 keyboards/the_uni/the_uni.c create mode 100644 keyboards/the_uni/the_uni.h diff --git a/keyboards/the_uni/config.h b/keyboards/the_uni/config.h new file mode 100644 index 0000000000..ff965d7744 --- /dev/null +++ b/keyboards/the_uni/config.h @@ -0,0 +1,52 @@ +/* +Copyright 2021 Peter C. Park + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x9000 +#define PRODUCT_ID 0x0001 +#define DEVICE_VER 0x0001 +#define MANUFACTURER stenokeyboards +#define PRODUCT The Uni + +/* key matrix size */ +#define MATRIX_ROWS 3 +#define MATRIX_COLS 11 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { F4, B2, B6 } +#define MATRIX_COL_PINS { F5, F6, F7, B1, B3, B5, B4, E6, D7, C6, D4 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE + +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + + +/*force the nkro if it does not work*/ +#define FORCE_NKRO diff --git a/keyboards/the_uni/info.json b/keyboards/the_uni/info.json new file mode 100644 index 0000000000..86e2d5cdb7 --- /dev/null +++ b/keyboards/the_uni/info.json @@ -0,0 +1,41 @@ +{ + "keyboard_name": "The Uni", + "url": "https://www.stenokeyboards.com", + "maintainer": "qmk", + "width": 13, + "height": 4, + "layouts": { + "LAYOUT": { + "layout": [ + { "x": 0, "y": 0 }, + { "x": 1, "y": 0 }, + { "x": 2, "y": 0 }, + { "x": 3, "y": 0 }, + { "x": 4, "y": 0 }, + { "x": 7, "y": 0 }, + { "x": 8, "y": 0 }, + { "x": 9, "y": 0 }, + { "x": 10, "y": 0 }, + { "x": 11, "y": 0 }, + { "x": 12, "y": 0 }, + { "x": 0, "y": 1 }, + { "x": 1, "y": 1 }, + { "x": 2, "y": 1 }, + { "x": 3, "y": 1 }, + { "x": 4, "y": 1 }, + { "x": 7, "y": 1 }, + { "x": 8, "y": 1 }, + { "x": 9, "y": 1 }, + { "x": 10, "y": 1 }, + { "x": 11, "y": 1 }, + { "x": 12, "y": 1 }, + { "x": 2, "y": 3 }, + { "x": 3, "y": 3 }, + { "x": 4, "y": 3 }, + { "x": 7, "y": 3 }, + { "x": 8, "y": 3 }, + { "x": 9, "y": 3 } + ] + } + } +} diff --git a/keyboards/the_uni/keymaps/default/keymap.c b/keyboards/the_uni/keymaps/default/keymap.c new file mode 100644 index 0000000000..01674d9486 --- /dev/null +++ b/keyboards/the_uni/keymaps/default/keymap.c @@ -0,0 +1,77 @@ +/* +Copyright 2021 Peter C. Park + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H +#include "keymap_steno.h" + +enum uni_layers { +/* + _QWERTY, + _CHOOSE, +*/ + _PLOVER, +}; + +/* +enum uni_keycodes { + PLOVER, + QWERTY +}; +*/ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* + [_QWERTY] = LAYOUT( + KC_Q, KC_W, KC_E, KC_R, LT(_CHOOSE, KC_T), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_1, KC_C, KC_V, KC_N, KC_M, KC_2), + + [_CHOOSE] = LAYOUT( + _______, _______, _______, _______, _______, PLOVER, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______), +*/ + [_PLOVER] = LAYOUT( + STN_S1, STN_TL, STN_PL, STN_HL, STN_ST1, STN_ST3, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR , + STN_S2, STN_KL, STN_WL, STN_RL, STN_ST2, STN_ST4, STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR , + STN_N1, STN_A, STN_O, STN_E, STN_U, STN_N2), + +}; + +/* +switch (keycode) { + bool process_record_user(uint16_t keycode, keyrecord_t *record) { + case PLOVER: + if (!record->event.pressed) { + layer_on(_PLOVER); + } + return false; + break; + case QWERTY: + if (!record->event.pressed) { + layer_on(_QWERTY); + } + return false; + break; + } + return true; + } +*/ + + void matrix_init_user() { + steno_set_mode(STENO_MODE_GEMINI); // or STENO_MODE_BOLT + } diff --git a/keyboards/the_uni/keymaps/qwerty/keymap.c b/keyboards/the_uni/keymaps/qwerty/keymap.c new file mode 100644 index 0000000000..3eaac57f3d --- /dev/null +++ b/keyboards/the_uni/keymaps/qwerty/keymap.c @@ -0,0 +1,77 @@ +/* +Copyright 2021 Peter C. Park + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H +//#include "keymap_steno.h" + +enum uni_layers { + _QWERTY, +/* + _CHOOSE, + _PLOVER, +*/ +}; + +/* +enum uni_keycodes { + PLOVER, + QWERTY +}; +*/ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_QWERTY] = LAYOUT( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_1, KC_C, KC_V, KC_N, KC_M, KC_2), +/* + + [_CHOOSE] = LAYOUT( + _______, _______, _______, _______, _______, PLOVER, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______), + [_PLOVER] = LAYOUT( + STN_S1, STN_TL, STN_PL, STN_HL, STN_ST1, STN_ST3, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR , + STN_S2, STN_KL, STN_WL, STN_RL, STN_ST2, STN_ST4, STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR , + STN_N1, STN_A, STN_O, STN_E, STN_U, STN_N2), +*/ + +}; + +/* +switch (keycode) { + bool process_record_user(uint16_t keycode, keyrecord_t *record) { + case PLOVER: + if (!record->event.pressed) { + layer_on(_PLOVER); + } + return false; + break; + case QWERTY: + if (!record->event.pressed) { + layer_on(_QWERTY); + } + return false; + break; + } + return true; + } +*/ + + void matrix_init_user() { + //steno_set_mode(STENO_MODE_GEMINI); // or STENO_MODE_BOLT + } diff --git a/keyboards/the_uni/readme.md b/keyboards/the_uni/readme.md new file mode 100644 index 0000000000..72b5c5d2a3 --- /dev/null +++ b/keyboards/the_uni/readme.md @@ -0,0 +1,19 @@ +# The Uni + +​ +![The Uni](https://raw.githubusercontent.com/petercpark/The_Uni/main/Pics/layout.png) +![The Uni Closeup](https://github.com/petercpark/The_Uni/blob/main/Pics/close-up-uni.jpg?raw=true) +​ +A compact unibody split ortholinear keyboard made specifically for stenography. +​ + +- Keyboard Maintainer: [Peter C. Park](https://github.com/petercpark) +- Link to Keyboard Files: [The_Uni](https://github.com/petercpark/The_Uni) +- Hardware Supported: The Uni v1 and v2 (pro micro or equivalent) +- Hardware Availability: [website](https://www.stenokeyboards.com) + ​ + Make example for this keyboard (after setting up your build environment): + ​To enter the bootloader, short the rst and gnd pins with a conductive material such as a tweezer or a wire. Uni v2 will have reset pads next to the pro micro so you can short these pads to reset the pro micro. + make the_uni:default + ​ + See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/the_uni/rules.mk b/keyboards/the_uni/rules.mk new file mode 100644 index 0000000000..1422818bbb --- /dev/null +++ b/keyboards/the_uni/rules.mk @@ -0,0 +1,21 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader +BOOTLOADER = atmel-dfu + + +# Build Options +# comment out to disable the options. +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no +FORCE_NKRO = yes +EXTRAKEY_ENABLE = no +MOUSEKEY_ENABLE = no # Mouse keys +STENO_ENABLE = yes diff --git a/keyboards/the_uni/the_uni.c b/keyboards/the_uni/the_uni.c new file mode 100644 index 0000000000..b99b06830c --- /dev/null +++ b/keyboards/the_uni/the_uni.c @@ -0,0 +1,18 @@ +/* +Copyright 2021 Peter C. Park + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "the_uni.h" diff --git a/keyboards/the_uni/the_uni.h b/keyboards/the_uni/the_uni.h new file mode 100644 index 0000000000..9371c3a241 --- /dev/null +++ b/keyboards/the_uni/the_uni.h @@ -0,0 +1,30 @@ +/* +Copyright 2021 Peter C. Park + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +#define LAYOUT( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, \ + K202, K203, K204, K205, K206, K207 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110 }, \ + { KC_NO, KC_NO, K202, K203, K204, K205, K206, K207, KC_NO, KC_NO, KC_NO } \ +} From 3023015c5b9417b18b59be41664e2af8e9f18a79 Mon Sep 17 00:00:00 2001 From: Erovia Date: Tue, 18 May 2021 21:26:17 +0200 Subject: [PATCH 403/613] Make sure 'cformat' only runs on core files (#12909) Co-authored-by: Zach White --- .github/workflows/format.yaml | 2 +- lib/python/qmk/cli/cformat.py | 22 ++++++++++++++++------ 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/.github/workflows/format.yaml b/.github/workflows/format.yaml index 6d13e78945..c17a04a542 100644 --- a/.github/workflows/format.yaml +++ b/.github/workflows/format.yaml @@ -34,7 +34,7 @@ jobs: - name: Run qmk cformat and qmk pyformat shell: 'bash {0}' run: | - qmk cformat -n $(< ~/files.txt) + qmk cformat --core-only -n $(< ~/files.txt) cformat_exit=$? qmk pyformat -n pyformat_exit=$? diff --git a/lib/python/qmk/cli/cformat.py b/lib/python/qmk/cli/cformat.py index 9333aaec4b..15158d9c7d 100644 --- a/lib/python/qmk/cli/cformat.py +++ b/lib/python/qmk/cli/cformat.py @@ -65,11 +65,21 @@ def cformat_run(files): return False -def filter_files(files): +def filter_files(files, core_only=False): """Yield only files to be formatted and skip the rest """ + if core_only: + # Filter non-core files + for index, file in enumerate(files): + # The following statement checks each file to see if the file path is + # - in the core directories + # - not in the ignored directories + if not any(i in str(file) for i in core_dirs) or any(i in str(file) for i in ignored): + files[index] = None + cli.log.debug("Skipping non-core file %s, as '--core-only' is used.", file) + for file in files: - if file.name.split('.')[-1] in c_file_suffixes: + if file and file.name.split('.')[-1] in c_file_suffixes: yield file else: cli.log.debug('Skipping file %s', file) @@ -78,6 +88,7 @@ def filter_files(files): @cli.argument('-n', '--dry-run', arg_only=True, action='store_true', help="Flag only, don't automatically format.") @cli.argument('-b', '--base-branch', default='origin/master', help='Branch to compare to diffs to.') @cli.argument('-a', '--all-files', arg_only=True, action='store_true', help='Format all core files.') +@cli.argument('--core-only', arg_only=True, action='store_true', help='Format core files only.') @cli.argument('files', nargs='*', arg_only=True, type=normpath, completer=FilesCompleter('.c'), help='Filename(s) to format.') @cli.subcommand("Format C code according to QMK's style.", hidden=False if cli.config.user.developer else True) def cformat(cli): @@ -85,7 +96,7 @@ def cformat(cli): """ # Find the list of files to format if cli.args.files: - files = list(filter_files(cli.args.files)) + files = list(filter_files(cli.args.files, cli.args.core_only)) if not files: cli.log.error('No C files in filelist: %s', ', '.join(map(str, cli.args.files))) @@ -96,8 +107,7 @@ def cformat(cli): elif cli.args.all_files: all_files = c_source_files(core_dirs) - # The following statement checks each file to see if the file path is in the ignored directories. - files = [file for file in all_files if not any(i in str(file) for i in ignored)] + files = list(filter_files(all_files, True)) else: git_diff_cmd = ['git', 'diff', '--name-only', cli.args.base_branch, *core_dirs] @@ -117,7 +127,7 @@ def cformat(cli): # Sanity check if not files: - cli.log.error('No changed files detected. Use "qmk cformat -a" to format all files') + cli.log.error('No changed files detected. Use "qmk cformat -a" to format all core files') return False # Run clang-format on the files we've found From a9aec546c873fa5a2cb1d9a10878aca71818b609 Mon Sep 17 00:00:00 2001 From: Dmitry Mikhirev Date: Wed, 19 May 2021 22:01:17 +0300 Subject: [PATCH 404/613] revert error introduced in PR #12871 (#12891) --- keyboards/xbows/nature/nature.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/xbows/nature/nature.c b/keyboards/xbows/nature/nature.c index 4d2573a559..f1b0615845 100644 --- a/keyboards/xbows/nature/nature.c +++ b/keyboards/xbows/nature/nature.c @@ -55,6 +55,7 @@ {0, C9_4, C8_4, C7_4}, // L33 {0, C9_5, C8_5, C7_5}, // L34 {0, C9_6, C8_6, C7_6}, // L35 + {2, C6_8, C5_8, C4_8}, // L44 {1, C9_1, C8_1, C7_1}, // L36 {1, C9_2, C8_2, C7_2}, // L37 {1, C9_3, C8_3, C7_3}, // L38 @@ -63,7 +64,6 @@ {1, C9_6, C8_6, C7_6}, // L41 {2, C6_6, C5_6, C4_6}, // L42 {2, C6_7, C5_7, C4_7}, // L43 - {2, C6_8, C5_8, C4_8}, // L44 {0, C1_11, C2_11, C3_11}, // L45 From db1eacdaacb9c8f6889f46bc1c6af155b81ad72a Mon Sep 17 00:00:00 2001 From: Zach White Date: Wed, 19 May 2021 15:24:46 -0700 Subject: [PATCH 405/613] Align our subprocess usage with current best practices. (#12940) * Align our subprocess usage with current best practices. * remove unused import * Apply suggestions from code review Co-authored-by: Ryan * fix the cpp invocation for older python * allow for unprompted installation * make sure qmk new-keyboard works on windows Co-authored-by: Ryan --- lib/python/qmk/cli/cformat.py | 10 ++++----- lib/python/qmk/cli/clean.py | 6 ++++-- lib/python/qmk/cli/compile.py | 5 +++-- lib/python/qmk/cli/doctor.py | 4 ++-- lib/python/qmk/cli/flash.py | 5 +++-- lib/python/qmk/cli/generate/docs.py | 14 +++++++------ lib/python/qmk/cli/multibuild.py | 5 +++-- lib/python/qmk/cli/new/keyboard.py | 2 +- lib/python/qmk/cli/pyformat.py | 8 +++---- lib/python/qmk/cli/pytest.py | 6 +++--- lib/python/qmk/commands.py | 23 ++------------------- lib/python/qmk/keymap.py | 9 ++++---- lib/python/qmk/os_helpers/__init__.py | 5 ++--- lib/python/qmk/os_helpers/linux/__init__.py | 3 +-- lib/python/qmk/submodules.py | 17 +++++++-------- lib/python/qmk/tests/test_cli_commands.py | 9 ++++---- util/install/debian.sh | 2 +- util/install/fedora.sh | 2 +- util/install/freebsd.sh | 2 +- util/install/msys2.sh | 2 +- util/install/void.sh | 2 +- util/qmk_install.sh | 7 +++++++ 22 files changed, 70 insertions(+), 78 deletions(-) diff --git a/lib/python/qmk/cli/cformat.py b/lib/python/qmk/cli/cformat.py index 15158d9c7d..efeb459676 100644 --- a/lib/python/qmk/cli/cformat.py +++ b/lib/python/qmk/cli/cformat.py @@ -1,8 +1,8 @@ """Format C code according to QMK's style. """ -import subprocess from os import path from shutil import which +from subprocess import CalledProcessError, DEVNULL, Popen, PIPE from argcomplete.completers import FilesCompleter from milc import cli @@ -34,7 +34,7 @@ def find_diffs(files): for file in files: cli.log.debug('Checking for changes in %s', file) - clang_format = subprocess.Popen([find_clang_format(), file], stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True) + clang_format = Popen([find_clang_format(), file], stdout=PIPE, stderr=PIPE, universal_newlines=True) diff = cli.run(['diff', '-u', f'--label=a/{file}', f'--label=b/{file}', str(file), '-'], stdin=clang_format.stdout, capture_output=True) if diff.returncode != 0: @@ -51,11 +51,11 @@ def cformat_run(files): clang_format = [find_clang_format(), '-i'] try: - cli.run(clang_format + list(map(str, files)), check=True, capture_output=False) + cli.run([*clang_format, *map(str, files)], check=True, capture_output=False, stdin=DEVNULL) cli.log.info('Successfully formatted the C code.') return True - except subprocess.CalledProcessError as e: + except CalledProcessError as e: cli.log.error('Error formatting C code!') cli.log.debug('%s exited with returncode %s', e.cmd, e.returncode) cli.log.debug('STDOUT:') @@ -111,7 +111,7 @@ def cformat(cli): else: git_diff_cmd = ['git', 'diff', '--name-only', cli.args.base_branch, *core_dirs] - git_diff = cli.run(git_diff_cmd) + git_diff = cli.run(git_diff_cmd, stdin=DEVNULL) if git_diff.returncode != 0: cli.log.error("Error running %s", git_diff_cmd) diff --git a/lib/python/qmk/cli/clean.py b/lib/python/qmk/cli/clean.py index 9096529fde..72b7ffe810 100644 --- a/lib/python/qmk/cli/clean.py +++ b/lib/python/qmk/cli/clean.py @@ -1,6 +1,8 @@ """Clean the QMK firmware folder of build artifacts. """ -from qmk.commands import run, create_make_target +from subprocess import DEVNULL + +from qmk.commands import create_make_target from milc import cli @@ -9,4 +11,4 @@ from milc import cli def clean(cli): """Runs `make clean` (or `make distclean` if --all is passed) """ - run(create_make_target('distclean' if cli.args.all else 'clean')) + cli.run(create_make_target('distclean' if cli.args.all else 'clean'), capture_output=False, stdin=DEVNULL) diff --git a/lib/python/qmk/cli/compile.py b/lib/python/qmk/cli/compile.py index 23ca4e00a6..7a45e77214 100755 --- a/lib/python/qmk/cli/compile.py +++ b/lib/python/qmk/cli/compile.py @@ -2,6 +2,8 @@ You can compile a keymap already in the repo or using a QMK Configurator export. """ +from subprocess import DEVNULL + from argcomplete.completers import FilesCompleter from milc import cli @@ -31,8 +33,7 @@ def compile(cli): """ if cli.args.clean and not cli.args.filename and not cli.args.dry_run: command = create_make_command(cli.config.compile.keyboard, cli.config.compile.keymap, 'clean') - # FIXME(skullydazed/anyone): Remove text=False once milc 1.0.11 has had enough time to be installed everywhere. - cli.run(command, capture_output=False, text=False) + cli.run(command, capture_output=False, stdin=DEVNULL) # Build the environment vars envs = {} diff --git a/lib/python/qmk/cli/doctor.py b/lib/python/qmk/cli/doctor.py index 4a2e2010f7..9e10570620 100755 --- a/lib/python/qmk/cli/doctor.py +++ b/lib/python/qmk/cli/doctor.py @@ -3,12 +3,12 @@ Check out the user's QMK environment and make sure it's ready to compile. """ import platform +from subprocess import DEVNULL from milc import cli from milc.questions import yesno from qmk import submodules from qmk.constants import QMK_FIRMWARE -from qmk.commands import run from qmk.os_helpers import CheckStatus, check_binaries, check_binary_versions, check_submodules, check_git_repo @@ -93,7 +93,7 @@ def doctor(cli): if not bin_ok: if yesno('Would you like to install dependencies?', default=True): - run(['util/qmk_install.sh']) + cli.run(['util/qmk_install.sh', '-y'], stdin=DEVNULL, capture_output=False) bin_ok = check_binaries() if bin_ok: diff --git a/lib/python/qmk/cli/flash.py b/lib/python/qmk/cli/flash.py index 1b67840616..1b2932a5b2 100644 --- a/lib/python/qmk/cli/flash.py +++ b/lib/python/qmk/cli/flash.py @@ -3,6 +3,7 @@ You can compile a keymap already in the repo or using a QMK Configurator export. A bootloader must be specified. """ +from subprocess import DEVNULL from argcomplete.completers import FilesCompleter from milc import cli @@ -55,7 +56,7 @@ def flash(cli): """ if cli.args.clean and not cli.args.filename and not cli.args.dry_run: command = create_make_command(cli.config.flash.keyboard, cli.config.flash.keymap, 'clean') - cli.run(command, capture_output=False) + cli.run(command, capture_output=False, stdin=DEVNULL) # Build the environment vars envs = {} @@ -98,7 +99,7 @@ def flash(cli): cli.log.info('Compiling keymap with {fg_cyan}%s', ' '.join(command)) if not cli.args.dry_run: cli.echo('\n') - compile = cli.run(command, capture_output=False, text=True) + compile = cli.run(command, capture_output=False, stdin=DEVNULL) return compile.returncode else: diff --git a/lib/python/qmk/cli/generate/docs.py b/lib/python/qmk/cli/generate/docs.py index a59a24db50..749336fea5 100644 --- a/lib/python/qmk/cli/generate/docs.py +++ b/lib/python/qmk/cli/generate/docs.py @@ -1,8 +1,8 @@ """Build QMK documentation locally """ import shutil -import subprocess from pathlib import Path +from subprocess import DEVNULL from milc import cli @@ -24,14 +24,16 @@ def generate_docs(cli): shutil.copytree(DOCS_PATH, BUILD_PATH) # When not verbose we want to hide all output - args = {'check': True} - if not cli.args.verbose: - args.update({'stdout': subprocess.DEVNULL, 'stderr': subprocess.STDOUT}) + args = { + 'capture_output': False if cli.config.general.verbose else True, + 'check': True, + 'stdin': DEVNULL, + } cli.log.info('Generating internal docs...') # Generate internal docs - subprocess.run(['doxygen', 'Doxyfile'], **args) - subprocess.run(['moxygen', '-q', '-a', '-g', '-o', BUILD_PATH / 'internals_%s.md', 'doxygen/xml'], **args) + cli.run(['doxygen', 'Doxyfile'], **args) + cli.run(['moxygen', '-q', '-a', '-g', '-o', BUILD_PATH / 'internals_%s.md', 'doxygen/xml'], **args) cli.log.info('Successfully generated internal docs to %s.', BUILD_PATH) diff --git a/lib/python/qmk/cli/multibuild.py b/lib/python/qmk/cli/multibuild.py index a4f0a0cc03..46594c0997 100755 --- a/lib/python/qmk/cli/multibuild.py +++ b/lib/python/qmk/cli/multibuild.py @@ -4,6 +4,7 @@ This will compile everything in parallel, for testing purposes. """ import re from pathlib import Path +from subprocess import DEVNULL from milc import cli @@ -35,7 +36,7 @@ def multibuild(cli): make_cmd = _find_make() if cli.args.clean: - cli.run([make_cmd, 'clean'], capture_output=False, text=False) + cli.run([make_cmd, 'clean'], capture_output=False, stdin=DEVNULL) builddir = Path(QMK_FIRMWARE) / '.build' makefile = builddir / 'parallel_kb_builds.mk' @@ -75,4 +76,4 @@ all: {keyboard_safe}_binary ) # yapf: enable - cli.run([make_cmd, '-j', str(cli.args.parallel), '-f', makefile, 'all'], capture_output=False, text=False) + cli.run([make_cmd, '-j', str(cli.args.parallel), '-f', makefile, 'all'], capture_output=False, stdin=DEVNULL) diff --git a/lib/python/qmk/cli/new/keyboard.py b/lib/python/qmk/cli/new/keyboard.py index cab0198fb7..ae4445ca48 100644 --- a/lib/python/qmk/cli/new/keyboard.py +++ b/lib/python/qmk/cli/new/keyboard.py @@ -8,4 +8,4 @@ def new_keyboard(cli): """Creates a new keyboard """ # TODO: replace this bodge to the existing script - cli.run(['util/new_keyboard.sh'], capture_output=False) + cli.run(['util/new_keyboard.sh'], stdin=None, capture_output=False) diff --git a/lib/python/qmk/cli/pyformat.py b/lib/python/qmk/cli/pyformat.py index 02581f0d85..abe5f6de19 100755 --- a/lib/python/qmk/cli/pyformat.py +++ b/lib/python/qmk/cli/pyformat.py @@ -1,8 +1,8 @@ """Format python code according to QMK's style. """ -from milc import cli +from subprocess import CalledProcessError, DEVNULL -import subprocess +from milc import cli @cli.argument('-n', '--dry-run', arg_only=True, action='store_true', help="Flag only, don't automatically format.") @@ -13,11 +13,11 @@ def pyformat(cli): edit = '--diff' if cli.args.dry_run else '--in-place' yapf_cmd = ['yapf', '-vv', '--recursive', edit, 'bin/qmk', 'lib/python'] try: - cli.run(yapf_cmd, check=True, capture_output=False) + cli.run(yapf_cmd, check=True, capture_output=False, stdin=DEVNULL) cli.log.info('Python code in `bin/qmk` and `lib/python` is correctly formatted.') return True - except subprocess.CalledProcessError: + except CalledProcessError: if cli.args.dry_run: cli.log.error('Python code in `bin/qmk` and `lib/python` incorrectly formatted!') else: diff --git a/lib/python/qmk/cli/pytest.py b/lib/python/qmk/cli/pytest.py index 50a1d70a4f..bdb336b9a7 100644 --- a/lib/python/qmk/cli/pytest.py +++ b/lib/python/qmk/cli/pytest.py @@ -2,7 +2,7 @@ QMK script to run unit and integration tests against our python code. """ -import subprocess +from subprocess import DEVNULL from milc import cli @@ -11,7 +11,7 @@ from milc import cli def pytest(cli): """Run several linting/testing commands. """ - nose2 = subprocess.run(['nose2', '-v']) - flake8 = subprocess.run(['flake8', 'lib/python', 'bin/qmk']) + nose2 = cli.run(['nose2', '-v'], capture_output=False, stdin=DEVNULL) + flake8 = cli.run(['flake8', 'lib/python', 'bin/qmk'], capture_output=False, stdin=DEVNULL) return flake8.returncode | nose2.returncode diff --git a/lib/python/qmk/commands.py b/lib/python/qmk/commands.py index 8c3f95ea21..ee049e8af7 100644 --- a/lib/python/qmk/commands.py +++ b/lib/python/qmk/commands.py @@ -2,11 +2,9 @@ """ import json import os -import platform -import subprocess -import shlex import shutil from pathlib import Path +from subprocess import DEVNULL from time import strftime from milc import cli @@ -94,7 +92,7 @@ def get_git_version(repo_dir='.', check_dir='.'): git_describe_cmd = ['git', 'describe', '--abbrev=6', '--dirty', '--always', '--tags'] if Path(check_dir).exists(): - git_describe = cli.run(git_describe_cmd, cwd=repo_dir) + git_describe = cli.run(git_describe_cmd, stdin=DEVNULL, cwd=repo_dir) if git_describe.returncode == 0: return git_describe.stdout.strip() @@ -224,20 +222,3 @@ def parse_configurator_json(configurator_file): user_keymap['layout'] = aliases[orig_keyboard]['layouts'][user_keymap['layout']] return user_keymap - - -def run(command, *args, **kwargs): - """Run a command with subprocess.run - """ - platform_id = platform.platform().lower() - - if isinstance(command, str): - raise TypeError('`command` must be a non-text sequence such as list or tuple.') - - if 'windows' in platform_id: - safecmd = map(str, command) - safecmd = map(shlex.quote, safecmd) - safecmd = ' '.join(safecmd) - command = [os.environ.get('SHELL', '/usr/bin/bash'), '-c', safecmd] - - return subprocess.run(command, *args, **kwargs) diff --git a/lib/python/qmk/keymap.py b/lib/python/qmk/keymap.py index 4ad9ffb591..ac7951082e 100644 --- a/lib/python/qmk/keymap.py +++ b/lib/python/qmk/keymap.py @@ -1,9 +1,9 @@ """Functions that help you work with QMK keymaps. """ import json -import subprocess import sys from pathlib import Path +from subprocess import DEVNULL import argcomplete from milc import cli @@ -12,7 +12,6 @@ from pygments.token import Token from pygments import lex import qmk.path -import qmk.commands from qmk.keyboard import find_keyboard_from_dir, rules_mk # The `keymap.c` template to use when a keyboard doesn't have its own @@ -361,7 +360,7 @@ def list_keymaps(keyboard, c=True, json=True, additional_files=None, fullpath=Fa return sorted(names) -def _c_preprocess(path, stdin=None): +def _c_preprocess(path, stdin=DEVNULL): """ Run a file through the C pre-processor Args: @@ -371,7 +370,9 @@ def _c_preprocess(path, stdin=None): Returns: the stdout of the pre-processor """ - pre_processed_keymap = qmk.commands.run(['cpp', path] if path else ['cpp'], stdin=stdin, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True) + cmd = ['cpp', str(path)] if path else ['cpp'] + pre_processed_keymap = cli.run(cmd, stdin=stdin) + return pre_processed_keymap.stdout diff --git a/lib/python/qmk/os_helpers/__init__.py b/lib/python/qmk/os_helpers/__init__.py index 3f64a63a3a..3e98db3c32 100644 --- a/lib/python/qmk/os_helpers/__init__.py +++ b/lib/python/qmk/os_helpers/__init__.py @@ -3,10 +3,9 @@ from enum import Enum import re import shutil -import subprocess +from subprocess import DEVNULL from milc import cli -from qmk.commands import run from qmk import submodules from qmk.constants import QMK_FIRMWARE @@ -142,7 +141,7 @@ def is_executable(command): # Make sure the command can be executed version_arg = ESSENTIAL_BINARIES[command].get('version_arg', '--version') - check = run([command, version_arg], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, timeout=5, universal_newlines=True) + check = cli.run([command, version_arg], combined_output=True, stdin=DEVNULL, timeout=5) ESSENTIAL_BINARIES[command]['output'] = check.stdout diff --git a/lib/python/qmk/os_helpers/linux/__init__.py b/lib/python/qmk/os_helpers/linux/__init__.py index 9e73964e47..008654ab0f 100644 --- a/lib/python/qmk/os_helpers/linux/__init__.py +++ b/lib/python/qmk/os_helpers/linux/__init__.py @@ -5,7 +5,6 @@ import shutil from milc import cli from qmk.constants import QMK_FIRMWARE -from qmk.commands import run from qmk.os_helpers import CheckStatus @@ -132,7 +131,7 @@ def check_modem_manager(): """ if check_systemd(): - mm_check = run(["systemctl", "--quiet", "is-active", "ModemManager.service"], timeout=10) + mm_check = cli.run(["systemctl", "--quiet", "is-active", "ModemManager.service"], timeout=10) if mm_check.returncode == 0: return True else: diff --git a/lib/python/qmk/submodules.py b/lib/python/qmk/submodules.py index be51a68043..6a272dae50 100644 --- a/lib/python/qmk/submodules.py +++ b/lib/python/qmk/submodules.py @@ -1,7 +1,6 @@ """Functions for working with QMK's submodules. """ - -import subprocess +from milc import cli def status(): @@ -18,7 +17,7 @@ def status(): status is None when the submodule doesn't exist, False when it's out of date, and True when it's current """ submodules = {} - git_cmd = subprocess.run(['git', 'submodule', 'status'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, timeout=30, universal_newlines=True) + git_cmd = cli.run(['git', 'submodule', 'status'], timeout=30) for line in git_cmd.stdout.split('\n'): if not line: @@ -53,19 +52,19 @@ def update(submodules=None): # Update everything git_sync_cmd.append('--recursive') git_update_cmd.append('--recursive') - subprocess.run(git_sync_cmd, check=True) - subprocess.run(git_update_cmd, check=True) + cli.run(git_sync_cmd, check=True) + cli.run(git_update_cmd, check=True) else: if isinstance(submodules, str): # Update only a single submodule git_sync_cmd.append(submodules) git_update_cmd.append(submodules) - subprocess.run(git_sync_cmd, check=True) - subprocess.run(git_update_cmd, check=True) + cli.run(git_sync_cmd, check=True) + cli.run(git_update_cmd, check=True) else: # Update submodules in a list for submodule in submodules: - subprocess.run(git_sync_cmd + [submodule], check=True) - subprocess.run(git_update_cmd + [submodule], check=True) + cli.run([*git_sync_cmd, submodule], check=True) + cli.run([*git_update_cmd, submodule], check=True) diff --git a/lib/python/qmk/tests/test_cli_commands.py b/lib/python/qmk/tests/test_cli_commands.py index 741551e5ec..d13e42d408 100644 --- a/lib/python/qmk/tests/test_cli_commands.py +++ b/lib/python/qmk/tests/test_cli_commands.py @@ -1,15 +1,14 @@ import platform +from subprocess import DEVNULL -from subprocess import STDOUT, PIPE - -from qmk.commands import run +from milc import cli is_windows = 'windows' in platform.platform().lower() def check_subcommand(command, *args): cmd = ['bin/qmk', command, *args] - result = run(cmd, stdout=PIPE, stderr=STDOUT, universal_newlines=True) + result = cli.run(cmd, stdin=DEVNULL, combined_output=True) return result @@ -18,7 +17,7 @@ def check_subcommand_stdin(file_to_read, command, *args): """ with open(file_to_read, encoding='utf-8') as my_file: cmd = ['bin/qmk', command, *args] - result = run(cmd, stdin=my_file, stdout=PIPE, stderr=STDOUT, universal_newlines=True) + result = cli.run(cmd, stdin=my_file, combined_output=True) return result diff --git a/util/install/debian.sh b/util/install/debian.sh index 0ae9764a33..885df723d9 100755 --- a/util/install/debian.sh +++ b/util/install/debian.sh @@ -5,7 +5,7 @@ DEBCONF_NONINTERACTIVE_SEEN=true export DEBIAN_FRONTEND DEBCONF_NONINTERACTIVE_SEEN _qmk_install_prepare() { - sudo apt-get update + sudo apt-get update $SKIP_PROMPT } _qmk_install() { diff --git a/util/install/fedora.sh b/util/install/fedora.sh index 44b71b98bf..d9452f68d5 100755 --- a/util/install/fedora.sh +++ b/util/install/fedora.sh @@ -4,7 +4,7 @@ _qmk_install() { echo "Installing dependencies" # TODO: Check whether devel/headers packages are really needed - sudo dnf -y install \ + sudo dnf $SKIP_PROMPT install \ clang diffutils git gcc glibc-headers kernel-devel kernel-headers make unzip wget zip \ python3 \ avr-binutils avr-gcc avr-libc \ diff --git a/util/install/freebsd.sh b/util/install/freebsd.sh index 353c52d647..d9399a5de9 100755 --- a/util/install/freebsd.sh +++ b/util/install/freebsd.sh @@ -1,7 +1,7 @@ #!/bin/bash _qmk_install_prepare() { - sudo pkg update + sudo pkg update $SKIP_PROMPT } _qmk_install() { diff --git a/util/install/msys2.sh b/util/install/msys2.sh index c8598a60fa..b1300a34d2 100755 --- a/util/install/msys2.sh +++ b/util/install/msys2.sh @@ -1,7 +1,7 @@ #!/bin/bash _qmk_install_prepare() { - pacman -Syu + pacman -Syu $MSYS2_CONFIRM } _qmk_install() { diff --git a/util/install/void.sh b/util/install/void.sh index 9ec7019e5c..c49c3ef63f 100755 --- a/util/install/void.sh +++ b/util/install/void.sh @@ -3,7 +3,7 @@ _qmk_install() { echo "Installing dependencies" - sudo xbps-install \ + sudo xbps-install $SKIP_PROMPT \ gcc git make wget unzip zip \ python3-pip \ avr-binutils avr-gcc avr-libc \ diff --git a/util/qmk_install.sh b/util/qmk_install.sh index 421a91a999..943069453a 100755 --- a/util/qmk_install.sh +++ b/util/qmk_install.sh @@ -2,6 +2,13 @@ QMK_FIRMWARE_DIR=$(cd -P -- "$(dirname -- "$0")/.." && pwd -P) QMK_FIRMWARE_UTIL_DIR=$QMK_FIRMWARE_DIR/util +if [ "$1" = "-y" ]; then + SKIP_PROMPT='-y' + MSYS2_CONFIRM='--noconfirm' +else + SKIP_PROMPT='' + MSYS2_CONFIRM='' +fi case $(uname -a) in *Darwin*) From e961e34c7f224800dabb4e80c2c0daf867642199 Mon Sep 17 00:00:00 2001 From: Albert Y <76888457+filterpaper@users.noreply.github.com> Date: Thu, 20 May 2021 18:03:56 +0800 Subject: [PATCH 406/613] Add EE_HANDS documentation command example (#12730) * Add command example * Remove c tag Co-authored-by: filterpaper --- docs/feature_split_keyboard.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/feature_split_keyboard.md b/docs/feature_split_keyboard.md index 3613775d72..bc09b2a5cc 100644 --- a/docs/feature_split_keyboard.md +++ b/docs/feature_split_keyboard.md @@ -133,6 +133,12 @@ However, you'll have to flash the EEPROM files for the correct hand to each cont * `:dfu-util-split-left` * `:dfu-util-split-right` +Example: + +``` +make crkbd:default:avrdude-split-left +``` + This setting is not changed when re-initializing the EEPROM using the `EEP_RST` key, or using the `eeconfig_init()` function. However, if you reset the EEPROM outside of the firmware's built in options (such as flashing a file that overwrites the `EEPROM`, like how the [QMK Toolbox]()'s "Reset EEPROM" button works), you'll need to re-flash the controller with the `EEPROM` files. You can find the `EEPROM` files in the QMK firmware repo, [here](https://github.com/qmk/qmk_firmware/tree/master/quantum/split_common). From 40f235a96c7f64822f6fb29b6aa7aab117689888 Mon Sep 17 00:00:00 2001 From: Takeshi ISHII <2170248+mtei@users.noreply.github.com> Date: Thu, 20 May 2021 20:47:09 +0900 Subject: [PATCH 407/613] fix example code in docs/feature_rgblight.md (#12960) --- docs/feature_rgblight.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/feature_rgblight.md b/docs/feature_rgblight.md index d2612a6d1b..79977b7aa1 100644 --- a/docs/feature_rgblight.md +++ b/docs/feature_rgblight.md @@ -359,9 +359,9 @@ rgblight_set(); // Utility functions do not call rgblight_set() automatically, s Example: ```c -rgblight_sethsv(HSV_WHITE, 0); // led 0 -rgblight_sethsv(HSV_RED, 1); // led 1 -rgblight_sethsv(HSV_GREEN, 2); // led 2 +rgblight_sethsv_at(HSV_WHITE, 0); // led 0 +rgblight_sethsv_at(HSV_RED, 1); // led 1 +rgblight_sethsv_at(HSV_GREEN, 2); // led 2 // The above functions automatically calls rgblight_set(), so there is no need to call it explicitly. // Note that it is inefficient to call repeatedly. ``` From 10f8a6d983f4caf04acb51df1a421c607f6485b2 Mon Sep 17 00:00:00 2001 From: Sendy Aditya Suryana Date: Sat, 22 May 2021 11:33:12 +0700 Subject: [PATCH 408/613] [Keyboard] Add 75 Pixels Ortholinear Keyboard (#12220) Co-authored-by: Drashna Jaelre Co-authored-by: Ryan Co-authored-by: Sendy Aditya Suryana --- keyboards/sendyyeah/75pixels/75pixels.c | 17 ++++ keyboards/sendyyeah/75pixels/75pixels.h | 38 ++++++++ keyboards/sendyyeah/75pixels/config.h | 42 +++++++++ keyboards/sendyyeah/75pixels/info.json | 88 +++++++++++++++++++ .../75pixels/keymaps/default/keymap.c | 57 ++++++++++++ .../sendyyeah/75pixels/keymaps/via/keymap.c | 57 ++++++++++++ .../sendyyeah/75pixels/keymaps/via/rules.mk | 1 + keyboards/sendyyeah/75pixels/readme.md | 19 ++++ keyboards/sendyyeah/75pixels/rules.mk | 24 +++++ 9 files changed, 343 insertions(+) create mode 100644 keyboards/sendyyeah/75pixels/75pixels.c create mode 100644 keyboards/sendyyeah/75pixels/75pixels.h create mode 100644 keyboards/sendyyeah/75pixels/config.h create mode 100644 keyboards/sendyyeah/75pixels/info.json create mode 100644 keyboards/sendyyeah/75pixels/keymaps/default/keymap.c create mode 100644 keyboards/sendyyeah/75pixels/keymaps/via/keymap.c create mode 100644 keyboards/sendyyeah/75pixels/keymaps/via/rules.mk create mode 100644 keyboards/sendyyeah/75pixels/readme.md create mode 100644 keyboards/sendyyeah/75pixels/rules.mk diff --git a/keyboards/sendyyeah/75pixels/75pixels.c b/keyboards/sendyyeah/75pixels/75pixels.c new file mode 100644 index 0000000000..62ec8df82c --- /dev/null +++ b/keyboards/sendyyeah/75pixels/75pixels.c @@ -0,0 +1,17 @@ + /* Copyright 2021 sendyyeah + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "75pixels.h" diff --git a/keyboards/sendyyeah/75pixels/75pixels.h b/keyboards/sendyyeah/75pixels/75pixels.h new file mode 100644 index 0000000000..9ac0f763d9 --- /dev/null +++ b/keyboards/sendyyeah/75pixels/75pixels.h @@ -0,0 +1,38 @@ + /* Copyright 2021 sendyyeah + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT_ortho_5x15(\ + K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K16, K07, \ + K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36, K27, \ + K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K46, K56, K47, \ + K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K66, K76, K67, \ + K80, K90, K81, K91, K82, K92, K83, K93, K84, K94, K85, K95, K86, K96, K87 \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07 }, \ + { K10, K11, K12, K13, K14, K15, K16, KC_NO }, \ + { K20, K21, K22, K23, K24, K25, K26, K27 }, \ + { K30, K31, K32, K33, K34, K35, K36, KC_NO }, \ + { K40, K41, K42, K43, K44, K45, K46, K47 }, \ + { K50, K51, K52, K53, K54, K55, K56, KC_NO }, \ + { K60, K61, K62, K63, K64, K65, K66, K67 }, \ + { K70, K71, K72, K73, K74, K75, K76, KC_NO }, \ + { K80, K81, K82, K83, K84, K85, K86, K87 }, \ + { K90, K91, K92, K93, K94, K95, K96, KC_NO } \ +} diff --git a/keyboards/sendyyeah/75pixels/config.h b/keyboards/sendyyeah/75pixels/config.h new file mode 100644 index 0000000000..9cb41e4917 --- /dev/null +++ b/keyboards/sendyyeah/75pixels/config.h @@ -0,0 +1,42 @@ + /* Copyright 2021 sendyyeah + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x5359 +#define PRODUCT_ID 0x3735 +#define DEVICE_VER 0x0001 +#define MANUFACTURER sendyyeah +#define PRODUCT 75 Pixels + +/* key matrix size */ +#define MATRIX_ROWS 10 +#define MATRIX_COLS 8 + +/* + * Keyboard Matrix Assignments + */ +#define MATRIX_ROW_PINS { B6, F4, F5, F6, F7, B1, B3, B2, B4, B5 } +#define MATRIX_COL_PINS { D3, D2, D1, D0, D4, C6, D7, E6 } + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 diff --git a/keyboards/sendyyeah/75pixels/info.json b/keyboards/sendyyeah/75pixels/info.json new file mode 100644 index 0000000000..20d158cf74 --- /dev/null +++ b/keyboards/sendyyeah/75pixels/info.json @@ -0,0 +1,88 @@ +{ + "keyboard_name": "beVi", + "url": "https://github.com/sendyyeah/bevi", + "maintainer": "sendyyeah", + "width": 15, + "height": 5, + "layouts": { + "LAYOUT_ortho_5x15": { + "layout": [ + {"label": "Esc", "X": 0, "y": 0}, + {"label": "1", "x": 1, "y": 0}, + {"label": "2", "x": 2, "y": 0}, + {"label": "3", "x": 3, "y": 0}, + {"label": "4", "x": 4, "y": 0}, + {"label": "5", "x": 5, "y": 0}, + {"label": "6", "x": 6, "y": 0}, + {"label": "7", "x": 7, "y": 0}, + {"label": "8", "x": 8, "y": 0}, + {"label": "9", "x": 9, "y": 0}, + {"label": "0", "x": 10, "y": 0}, + {"label": "Bkspc", "x": 11, "y": 0}, + {"label": "NumLock", "x": 12, "y": 0}, + {"label": "/", "x": 13, "y": 0}, + {"label": "*", "x": 14, "y": 0}, + {"label": "Tab", "X": 0, "y": 1}, + {"label": "Q", "X": 1, "y": 1}, + {"label": "W", "X": 2, "y": 1}, + {"label": "E", "X": 3, "y": 1}, + {"label": "R", "X": 4, "y": 1}, + {"label": "T", "X": 5, "y": 1}, + {"label": "Y", "X": 6, "y": 1}, + {"label": "U", "X": 7, "y": 1}, + {"label": "I", "X": 8, "y": 1}, + {"label": "O", "X": 9, "y": 1}, + {"label": "P", "X": 10, "y": 1}, + {"label": "|\n\\", "X": 11, "y": 1}, + {"label": "7\nHome", "X": 12, "y": 1}, + {"label": "8\nUp", "X": 13, "y": 1}, + {"label": "9\nPgUp", "X": 14, "y": 1}, + {"label": "Caps", "x": 0, "y": 2}, + {"label": "A", "x": 1, "y": 2}, + {"label": "S", "x": 2, "y": 2}, + {"label": "D", "x": 3, "y": 2}, + {"label": "F", "x": 4, "y": 2}, + {"label": "G", "x": 5, "y": 2}, + {"label": "H", "x": 6, "y": 2}, + {"label": "J", "x": 7, "y": 2}, + {"label": "K", "x": 8, "y": 2}, + {"label": "L", "x": 9, "y": 2}, + {"label": ":", "x": 10, "y": 2}, + {"label": "Enter", "x": 11, "y": 2}, + {"label": "4\nLeft", "x": 12, "y": 2}, + {"label": "5", "x": 13, "y": 2}, + {"label": "6\nRight", "x": 14, "y": 2}, + {"label": "Shift", "x": 0, "y": 3}, + {"label": "Z", "x": 1, "y": 3}, + {"label": "X", "x": 2, "y": 3}, + {"label": "C", "x": 3, "y": 3}, + {"label": "V", "x": 4, "y": 3}, + {"label": "B", "x": 5, "y": 3}, + {"label": "N", "x": 6, "y": 3}, + {"label": "M", "x": 7, "y": 3}, + {"label": "<\n,", "x": 8, "y": 3}, + {"label": ">\n.", "x": 9, "y": 3}, + {"label": "?\n/", "x": 10, "y": 3}, + {"label": "Shift", "x": 11, "y": 3}, + {"label": "1\nEnd", "x": 12, "y": 3}, + {"label": "2\nDown", "x": 13, "y": 3}, + {"label": "3\nPgDn", "x": 14, "y": 3}, + {"label": "Ctrl", "X": 0, "y": 4}, + {"label": "Win", "X": 1, "y": 4}, + {"label": "Alt", "X": 2, "y": 4}, + {"label": "Fn", "X": 3, "y": 4}, + {"label": "Lower", "X": 4, "y": 4}, + {"label": "Space", "X": 5, "y": 4}, + {"label": "Space", "X": 6, "y": 4}, + {"label": "Raise", "X": 7, "y": 4}, + {"label": "Alt", "X": 8, "y": 4}, + {"label": "Win", "X": 9, "y": 4}, + {"label": "Menu", "X": 10, "y": 4}, + {"label": "Ctrl", "X": 11, "y": 4}, + {"label": "0\nIns", "X": 12, "y": 4}, + {"label": ".\nDel", "X": 13, "y": 4}, + {"label": "Enter", "X": 14, "y": 4} + ] + } + } +} diff --git a/keyboards/sendyyeah/75pixels/keymaps/default/keymap.c b/keyboards/sendyyeah/75pixels/keymaps/default/keymap.c new file mode 100644 index 0000000000..98f71c4de4 --- /dev/null +++ b/keyboards/sendyyeah/75pixels/keymaps/default/keymap.c @@ -0,0 +1,57 @@ +/* Copyright 2021 sendyyeah + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layer_names { + QW, + FN, + RS, + LW +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [QW] = LAYOUT_ortho_5x15( + KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_BSLS, KC_P7 , KC_P8 , KC_P9 , + KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_ENT , KC_P4 , KC_P5 , KC_P6 , + KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_P1 , KC_P2 , KC_P3 , + KC_LCTL, KC_LGUI, KC_LALT, MO(FN), _______, KC_SPC, KC_SPC, TO(FN), KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_P0 , KC_PDOT, KC_ENT + ), + [FN] = LAYOUT_ortho_5x15( + _______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_DEL , _______, _______, _______, + _______, KC_F11 , KC_F12 , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + + ), + [RS] = LAYOUT_ortho_5x15( + _______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_DEL , _______, _______, _______, + _______, KC_F11 , KC_F12 , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + + ), + [LW] = LAYOUT_ortho_5x15( + RESET , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_DEL , _______, _______, _______, + _______, KC_F11 , KC_F12 , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + + ), +}; diff --git a/keyboards/sendyyeah/75pixels/keymaps/via/keymap.c b/keyboards/sendyyeah/75pixels/keymaps/via/keymap.c new file mode 100644 index 0000000000..98f71c4de4 --- /dev/null +++ b/keyboards/sendyyeah/75pixels/keymaps/via/keymap.c @@ -0,0 +1,57 @@ +/* Copyright 2021 sendyyeah + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layer_names { + QW, + FN, + RS, + LW +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [QW] = LAYOUT_ortho_5x15( + KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_BSLS, KC_P7 , KC_P8 , KC_P9 , + KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_ENT , KC_P4 , KC_P5 , KC_P6 , + KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_P1 , KC_P2 , KC_P3 , + KC_LCTL, KC_LGUI, KC_LALT, MO(FN), _______, KC_SPC, KC_SPC, TO(FN), KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_P0 , KC_PDOT, KC_ENT + ), + [FN] = LAYOUT_ortho_5x15( + _______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_DEL , _______, _______, _______, + _______, KC_F11 , KC_F12 , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + + ), + [RS] = LAYOUT_ortho_5x15( + _______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_DEL , _______, _______, _______, + _______, KC_F11 , KC_F12 , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + + ), + [LW] = LAYOUT_ortho_5x15( + RESET , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_DEL , _______, _______, _______, + _______, KC_F11 , KC_F12 , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + + ), +}; diff --git a/keyboards/sendyyeah/75pixels/keymaps/via/rules.mk b/keyboards/sendyyeah/75pixels/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/sendyyeah/75pixels/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/sendyyeah/75pixels/readme.md b/keyboards/sendyyeah/75pixels/readme.md new file mode 100644 index 0000000000..7719e9ee64 --- /dev/null +++ b/keyboards/sendyyeah/75pixels/readme.md @@ -0,0 +1,19 @@ +# 75 Pixels + +![Bevi](https://imgur.com/jHkdai6.png) + +75 Keys Ortholinear 60% Keyboard + +* Keyboard Layout: [KLE](http://www.keyboard-layout-editor.com/#/gists/3d64c8d06f0b1a8cf5b58797a2dae8dc) +* Keyboard Maintainer: [SENDYYeah](https://github.com/sendyyeah) +* Hardware Availability: [Tokopedia/Sell Stuffs](https://tokopedia.com/sell-stuffs) (Indonesia only) or any electronic part store. + +Make example for this keyboard (after setting up your build environment): + + make sendyyeah/75pixels:default + +How to reset and enter bootloader: + - Press reset button on the PCB (twice if the ProMicro is fresh) + - Flash with QMK Toolbox or any command line you like + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/sendyyeah/75pixels/rules.mk b/keyboards/sendyyeah/75pixels/rules.mk new file mode 100644 index 0000000000..50b4125b39 --- /dev/null +++ b/keyboards/sendyyeah/75pixels/rules.mk @@ -0,0 +1,24 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output + +LAYOUTS = ortho_5x15 From d425fcc8b126bc707e072472d32cf125c6229d85 Mon Sep 17 00:00:00 2001 From: Jay Date: Fri, 21 May 2021 21:38:42 -0700 Subject: [PATCH 409/613] [Keymap] Add kanbara's planck/rev4 keymap (#12486) Co-authored-by: Ryan Co-authored-by: Jay Morrow --- keyboards/planck/keymaps/kanbara/config.h | 31 ++++ keyboards/planck/keymaps/kanbara/keymap.c | 199 +++++++++++++++++++++ keyboards/planck/keymaps/kanbara/readme.md | 118 ++++++++++++ keyboards/planck/keymaps/kanbara/rules.mk | 9 + 4 files changed, 357 insertions(+) create mode 100644 keyboards/planck/keymaps/kanbara/config.h create mode 100644 keyboards/planck/keymaps/kanbara/keymap.c create mode 100644 keyboards/planck/keymaps/kanbara/readme.md create mode 100644 keyboards/planck/keymaps/kanbara/rules.mk diff --git a/keyboards/planck/keymaps/kanbara/config.h b/keyboards/planck/keymaps/kanbara/config.h new file mode 100644 index 0000000000..b701b9b40d --- /dev/null +++ b/keyboards/planck/keymaps/kanbara/config.h @@ -0,0 +1,31 @@ +/* Copyright 2021 Jay Morrow + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#ifdef AUDIO_ENABLE + #ifdef TEMPO_DEFAULT + #undef TEMPO_DEFAULT + #define TEMPO_DEFAULT 80 + #endif + + #define STARTUP_SONG SONG(MAJOR_SOUND) + + #define DEFAULT_LAYER_SONGS { SONG(COLEMAK_SOUND), \ + SONG(DVORAK_SOUND), \ + SONG(WORKMAN_SOUND) \ + } +#endif diff --git a/keyboards/planck/keymaps/kanbara/keymap.c b/keyboards/planck/keymaps/kanbara/keymap.c new file mode 100644 index 0000000000..711411f65d --- /dev/null +++ b/keyboards/planck/keymaps/kanbara/keymap.c @@ -0,0 +1,199 @@ +/* Copyright 2021 Jay Morrow + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum planck_layers { + _QWERTY, + _COLEMAK, + _LEAGUE, + _LOWER, + _RAISE, + _ADJUST, + _LRAISE, +}; + +enum planck_keycodes { + QWERTY = SAFE_RANGE, + COLEMAK, + LEAGUE, +}; + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) +#define ADJUST MO(_ADJUST) +#define LRAISE MO(_LRAISE) + +#define KC_LQ LCTL(KC_Q) +#define KC_LW LCTL(KC_W) +#define KC_LE LCTL(KC_E) +#define KC_LR LCTL(KC_R) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Qwerty + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Esc | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Adjst| Ctrl | Alt | GUI | SPC | Lower| Raise| Enter| Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_QWERTY] = LAYOUT_planck_grid( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + ADJUST, KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, LOWER, RAISE, KC_ENT, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT +), + +/* Colemak + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Esc | A | R | S | T | D | H | N | E | I | O | " | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Adjst| Ctrl | Alt | GUI | SPC | Lower| Raise| Enter| Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_COLEMAK] = LAYOUT_planck_grid( + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, + KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + ADJUST, KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, LOWER, RAISE, KC_ENT, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT +), + +/* League + * ,-----------------------------------------------------------------------------------. + * | Tab | 1 | 2 | 3 | 4 | 5 | 6 | 7 | | | | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Esc | Q | W | E | R | G | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | P | B | S | D | F | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |Adjust| | | | | Spc | Raise| | Ent | | | | + * `-----------------------------------------------------------------------------------' + */ +[_LEAGUE] = LAYOUT_planck_grid( + KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, XXXXXXX, XXXXXXX, XXXXXXX, KC_BSPC, + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_G, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + KC_P, KC_B, KC_S, KC_D, KC_F, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + ADJUST, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, LRAISE, XXXXXXX, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX +), + +/* Lower + * ,-----------------------------------------------------------------------------------. + * | ` | | _ | + | \ | { | } | | 7 | 8 | 9 | / | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ~ | | _ | = | | | [ | ] | | 4 | 5 | 6 | * | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | ( | ) | | 1 | 2 | 3 | - | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | 0 | , | . | + | + * `-----------------------------------------------------------------------------------' + */ +[_LOWER] = LAYOUT_planck_grid( + KC_GRV, XXXXXXX, KC_MINS, KC_PLUS, KC_BSLS, KC_LCBR, KC_RCBR, XXXXXXX, KC_7, KC_8, KC_9, KC_SLSH, + KC_TILD, XXXXXXX, KC_UNDS, KC_EQL, KC_PIPE, KC_LBRC, KC_RBRC, XXXXXXX, KC_4, KC_5, KC_6, KC_ASTR, + _______, _______, _______, _______, _______, KC_LPRN, KC_RPRN, XXXXXXX, KC_1, KC_2, KC_3, KC_MINS, + _______, _______, _______, _______, _______, _______, _______, _______, KC_0, KC_COMM, KC_DOT, KC_PLUS +), + +/* Raise + * ,-----------------------------------------------------------------------------------. + * | ~ | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | Home | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Del | ! | @ | # | $ | % | ^ | & | * | | | PgUp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | Vol- | BR- | BR+ | Vol+ | | | | PgDn | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | End | + * `-----------------------------------------------------------------------------------' + */ +[_RAISE] = LAYOUT_planck_grid( + KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_HOME, + KC_DEL, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, _______, _______, KC_PGUP, + _______, _______, _______, _______, KC_VOLD, KC_BRMD, KC_BRMU, KC_VOLU, _______, _______, _______, KC_PGDN, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END +), + +/* Adjust + * ,-----------------------------------------------------------------------------------. + * |Reset |Debug | | | | | | | | | |Qwerty| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | |Colmk | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | |League| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_ADJUST] = LAYOUT_planck_grid( + RESET, DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, _______, QWERTY, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, COLEMAK, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, LEAGUE, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +), + +/* League Raise + * ,-----------------------------------------------------------------------------------. + * | | F2 | F3 | F4 | F5 | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | |Ctrl-Q|Ctrl-W|Ctrl-E|Ctrl-R| | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_LRAISE] = LAYOUT_planck_grid( + _______, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, _______, _______, _______, _______, _______, + _______, KC_LQ, KC_LW, KC_LE, KC_LR, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +), + + +}; + +// set the default layer in ROM so that we preserve state across power transitions +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + set_single_persistent_default_layer(_QWERTY); + } + return false; + break; + case COLEMAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_COLEMAK); + } + return false; + break; + case LEAGUE: + if (record->event.pressed) { + set_single_persistent_default_layer(_LEAGUE); + } + return false; + break; + } + return true; +} diff --git a/keyboards/planck/keymaps/kanbara/readme.md b/keyboards/planck/keymaps/kanbara/readme.md new file mode 100644 index 0000000000..de32a84d29 --- /dev/null +++ b/keyboards/planck/keymaps/kanbara/readme.md @@ -0,0 +1,118 @@ +kanbara's layout +======================= +This layout contains a Colemak and Qwerty mode (for easier pair programming with colleagues) +as well as a mode specifically to play League of Legends, as the normal mode does not provide +for accessible enough numbers and function keys + + +## Base Layers (Qwerty/Colemak/League) +After lots of tweaking, I've found that putting brackets in the middle is easier for +programming, and having a separate numpad input is quite handy. + +- Contains split `space` and `enter` +- Designed for macOS +- Keeps the `Tab`/`Esc` swap which I quite like +- Note the removal of evil caps lock + +### Qwerty +``` +,-----------------------------------------------------------------------------------. +| Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | +|------+------+------+------+------+------+------+------+------+------+------+------| +| Esc | A | S | D | F | G | H | J | K | L | ; | " | +|------+------+------+------+------+------+------+------+------+------+------+------| +| Shift| Z | X | C | V | B | N | M | , | . | / |Enter | +|------+------+------+------+------+------+------+------+------+------+------+------| +| Adjst| Ctrl | Alt | GUI | SPC | Lower| Raise| Enter| Left | Down | Up |Right | +`-----------------------------------------------------------------------------------' +``` + +### Colemak +``` +,-----------------------------------------------------------------------------------. +| Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | +|------+------+------+------+------+------+------+------+------+------+------+------| +| Esc | A | R | S | T | D | H | N | E | I | O | " | +|------+------+------+------+------+------+------+------+------+------+------+------| +| Shift| Z | X | C | V | B | K | M | , | . | / |Enter | +|------+------+------+------+------+------+------+------+------+------+------+------| +| Adjst| Ctrl | Alt | GUI | SPC | Lower| Raise| Enter| Left | Down | Up |Right | +`-----------------------------------------------------------------------------------' +``` + +### League + +- Has it's own raise just for F-keys and Ctrl+{Q,W,E,R} as a hold toggle +- Just the base keys needed for the game + the adjust and backspace + +``` +,-----------------------------------------------------------------------------------. +| Tab | 1 | 2 | 3 | 4 | 5 | 6 | 7 | | | | Bksp | +|------+------+------+------+------+------+------+------+------+------+------+------| +| Esc | Q | W | E | R | G | | | | | | | +|------+------+------+------+------+------+------+------+------+------+------+------| +| P | B | S | D | F | | | | | | | | +|------+------+------+------+------+------+------+------+------+------+------+------| +|Adjust| | | | | Spc | Raise| | Ent | | | | +`-----------------------------------------------------------------------------------' +``` + +#### Raise +``` +,-----------------------------------------------------------------------------------. +| | F2 | F3 | F4 | F5 | | | | | | | | +|------+------+------+------+------+------+------+------+------+------+------+------| +| |Ctrl-Q|Ctrl-W|Ctrl-E|Ctrl-R| | | | | | | | +|------+------+------+------+------+------+------+------+------+------+------+------| +| | | | | | | | | | | | | +|------+------+------+------+------+------+------+------+------+------+------+------| +| | | | | | | | | | | | | +`-----------------------------------------------------------------------------------' +``` + +## Lower Layer (Programming symbols + numpad) +I've put a numpad on the right side, and brackets in the middle. I found that putting +the shifted equivalents of `-`, `+`, `\` and `~` are quite convenient to type with one hand + +``` +,-----------------------------------------------------------------------------------. +| ` | | _ | + | \ | { | } | | 7 | 8 | 9 | / | +|------+------+------+------+------+------+------+------+------+------+------+------| +| ~ | | _ | = | | | [ | ] | | 4 | 5 | 6 | * | +|------+------+------+------+------+------+------+------+------+------+------+------| +| | | | | | ( | ) | | 1 | 2 | 3 | - | +|------+------+------+------+------+------+------+------+------+------+------+------| +| | | | | | | | | 0 | , | . | + | +`-----------------------------------------------------------------------------------' +``` + +## Raise Layer (Function keys + shifted numbers) +Here are the Function keys, as well as shifted 1-9 in order, and some nav and OS keys + +``` +,-----------------------------------------------------------------------------------. +| ~ | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | Home | +|------+------+------+------+------+------+------+------+------+------+------+------| +| Del | ! | @ | # | $ | % | ^ | & | * | | | PgUp | +|------+------+------+------+------+------+------+------+------+------+------+------| +| | | | | Vol- | BR- | BR+ | Vol+ | | | | PgDn | +|------+------+------+------+------+------+------+------+------+------+------+------| +| | | | | | | | | | | | End | +`-----------------------------------------------------------------------------------' +``` + +## Adjust Layer +Contains reset, debug and the layer on the right which are set in EEPROM across power +transitions + +``` +,-----------------------------------------------------------------------------------. +|Reset |Debug | | | | | | | | | |Qwerty| +|------+------+------+------+------+------+------+------+------+------+------+------| +| | | | | | | | | | | |Colmk | +|------+------+------+------+------+------+------+------+------+------+------+------| +| | | | | | | | | | | |League| +|------+------+------+------+------+------+------+------+------+------+------+------| +| | | | | | | | | | | | | +`-----------------------------------------------------------------------------------' +``` diff --git a/keyboards/planck/keymaps/kanbara/rules.mk b/keyboards/planck/keymaps/kanbara/rules.mk new file mode 100644 index 0000000000..4e1e300974 --- /dev/null +++ b/keyboards/planck/keymaps/kanbara/rules.mk @@ -0,0 +1,9 @@ +BOOTMAGIC_ENABLE = no +MOUSEKEY_ENABLE = no +EXTRAKEY_ENABLE = yes +CONSOLE_ENABLE = no +COMMAND_ENABLE = yes +NKRO_ENABLE = yes +BACKLIGHT_ENABLE = no +AUDIO_ENABLE = yes +RGBLIGHT_ENABLE = no From 0be53004b38b97599f8244bfb7a0b5e43f2151c5 Mon Sep 17 00:00:00 2001 From: spooknik <40317809+spooknik@users.noreply.github.com> Date: Sat, 22 May 2021 06:44:22 +0200 Subject: [PATCH 410/613] [Keyboard] Add support for alfredslab 65 (#12334) Co-authored-by: Ryan --- keyboards/alfredslab/swift65/solder/config.h | 68 ++++++++++++ keyboards/alfredslab/swift65/solder/info.json | 81 ++++++++++++++ .../swift65/solder/keymaps/default/keymap.c | 35 ++++++ .../swift65/solder/keymaps/default/readme.md | 3 + .../swift65/solder/keymaps/via/keymap.c | 49 +++++++++ .../swift65/solder/keymaps/via/readme.md | 3 + .../swift65/solder/keymaps/via/rules.mk | 1 + keyboards/alfredslab/swift65/solder/readme.md | 20 ++++ keyboards/alfredslab/swift65/solder/rules.mk | 22 ++++ keyboards/alfredslab/swift65/solder/solder.c | 17 +++ keyboards/alfredslab/swift65/solder/solder.h | 33 ++++++ .../ggkeyboards/genesis/hotswap/config.h | 49 +++++++++ .../ggkeyboards/genesis/hotswap/hotswap.c | 22 ++++ .../ggkeyboards/genesis/hotswap/hotswap.h | 39 +++++++ .../ggkeyboards/genesis/hotswap/info.json | 101 +++++++++++++++++ .../genesis/hotswap/keymaps/default/keymap.c | 53 +++++++++ .../genesis/hotswap/keymaps/via/keymap.c | 53 +++++++++ .../genesis/hotswap/keymaps/via/rules.mk | 1 + .../ggkeyboards/genesis/hotswap/readme.md | 15 +++ .../ggkeyboards/genesis/hotswap/rules.mk | 25 +++++ keyboards/ggkeyboards/genesis/solder/config.h | 49 +++++++++ .../ggkeyboards/genesis/solder/info.json | 103 ++++++++++++++++++ .../genesis/solder/keymaps/default/keymap.c | 53 +++++++++ .../genesis/solder/keymaps/via/keymap.c | 53 +++++++++ .../genesis/solder/keymaps/via/rules.mk | 1 + .../ggkeyboards/genesis/solder/readme.md | 15 +++ keyboards/ggkeyboards/genesis/solder/rules.mk | 25 +++++ keyboards/ggkeyboards/genesis/solder/solder.c | 22 ++++ keyboards/ggkeyboards/genesis/solder/solder.h | 38 +++++++ 29 files changed, 1049 insertions(+) create mode 100644 keyboards/alfredslab/swift65/solder/config.h create mode 100644 keyboards/alfredslab/swift65/solder/info.json create mode 100644 keyboards/alfredslab/swift65/solder/keymaps/default/keymap.c create mode 100644 keyboards/alfredslab/swift65/solder/keymaps/default/readme.md create mode 100644 keyboards/alfredslab/swift65/solder/keymaps/via/keymap.c create mode 100644 keyboards/alfredslab/swift65/solder/keymaps/via/readme.md create mode 100644 keyboards/alfredslab/swift65/solder/keymaps/via/rules.mk create mode 100644 keyboards/alfredslab/swift65/solder/readme.md create mode 100644 keyboards/alfredslab/swift65/solder/rules.mk create mode 100644 keyboards/alfredslab/swift65/solder/solder.c create mode 100644 keyboards/alfredslab/swift65/solder/solder.h create mode 100644 keyboards/ggkeyboards/genesis/hotswap/config.h create mode 100644 keyboards/ggkeyboards/genesis/hotswap/hotswap.c create mode 100644 keyboards/ggkeyboards/genesis/hotswap/hotswap.h create mode 100644 keyboards/ggkeyboards/genesis/hotswap/info.json create mode 100644 keyboards/ggkeyboards/genesis/hotswap/keymaps/default/keymap.c create mode 100644 keyboards/ggkeyboards/genesis/hotswap/keymaps/via/keymap.c create mode 100644 keyboards/ggkeyboards/genesis/hotswap/keymaps/via/rules.mk create mode 100644 keyboards/ggkeyboards/genesis/hotswap/readme.md create mode 100644 keyboards/ggkeyboards/genesis/hotswap/rules.mk create mode 100644 keyboards/ggkeyboards/genesis/solder/config.h create mode 100644 keyboards/ggkeyboards/genesis/solder/info.json create mode 100644 keyboards/ggkeyboards/genesis/solder/keymaps/default/keymap.c create mode 100644 keyboards/ggkeyboards/genesis/solder/keymaps/via/keymap.c create mode 100644 keyboards/ggkeyboards/genesis/solder/keymaps/via/rules.mk create mode 100644 keyboards/ggkeyboards/genesis/solder/readme.md create mode 100644 keyboards/ggkeyboards/genesis/solder/rules.mk create mode 100644 keyboards/ggkeyboards/genesis/solder/solder.c create mode 100644 keyboards/ggkeyboards/genesis/solder/solder.h diff --git a/keyboards/alfredslab/swift65/solder/config.h b/keyboards/alfredslab/swift65/solder/config.h new file mode 100644 index 0000000000..509aae6a89 --- /dev/null +++ b/keyboards/alfredslab/swift65/solder/config.h @@ -0,0 +1,68 @@ + +/* Copyright 2021 Steven Phillips (Spooknik) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xBBEB +#define PRODUCT_ID 0xD4C3 +#define DEVICE_VER 0x0001 +#define MANUFACTURER AlfredsLab +#define PRODUCT Swift65 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 16 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ +#define MATRIX_ROW_PINS { B1, B2, B3, D4, D6 } +#define MATRIX_COL_PINS { F7, F6, F5, F4, F1, F0, C7, C6, B6, B5, B4, D7, D5, D3, D1, D0 } + +#define DIODE_DIRECTION COL2ROW + +#define RGB_DI_PIN D2 +#ifdef RGB_DI_PIN + #define RGBLED_NUM 14 + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 + #define RGBLIGHT_LIMIT_VAL 100 /* The maximum brightness level */ + #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ + #define RGBLIGHT_ANIMATIONS +// /*== or choose animations ==*/ +// #define RGBLIGHT_EFFECT_BREATHING +// #define RGBLIGHT_EFFECT_RAINBOW_MOOD +// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL +// #define RGBLIGHT_EFFECT_SNAKE +// #define RGBLIGHT_EFFECT_KNIGHT +// #define RGBLIGHT_EFFECT_CHRISTMAS +// #define RGBLIGHT_EFFECT_STATIC_GRADIENT +// #define RGBLIGHT_EFFECT_RGB_TEST +// #define RGBLIGHT_EFFECT_ALTERNATING +#endif diff --git a/keyboards/alfredslab/swift65/solder/info.json b/keyboards/alfredslab/swift65/solder/info.json new file mode 100644 index 0000000000..a04de1cc14 --- /dev/null +++ b/keyboards/alfredslab/swift65/solder/info.json @@ -0,0 +1,81 @@ +{ + "keyboard_name": "Swift65", + "url": "https://swiftcables.net/", + "maintainer": "Spooknik", + "width": 16.25, + "height": 5, + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"K00 (B1,F7)", "x":0, "y":0}, + {"label":"K01 (B1,F6)", "x":1, "y":0}, + {"label":"K02 (B1,F5)", "x":2, "y":0}, + {"label":"K03 (B1,F4)", "x":3, "y":0}, + {"label":"K04 (B1,F1)", "x":4, "y":0}, + {"label":"K05 (B1,F0)", "x":5, "y":0}, + {"label":"K06 (B1,C7)", "x":6, "y":0}, + {"label":"K07 (B1,C6)", "x":7, "y":0}, + {"label":"K08 (B1,B6)", "x":8, "y":0}, + {"label":"K09 (B1,B5)", "x":9, "y":0}, + {"label":"K0A (B1,B4)", "x":10, "y":0}, + {"label":"K0B (B1,D7)", "x":11, "y":0}, + {"label":"K0C (B1,D5)", "x":12, "y":0}, + {"label":"K0D (B1,D3)", "x":13, "y":0}, + {"label":"K0F (B1,D0)", "x":14, "y":0}, + {"label":"K0E (B1,D1)", "x":15.25, "y":0}, + {"label":"K10 (B2,F7)", "x":0, "y":1, "w":1.5}, + {"label":"K11 (B2,F6)", "x":1.5, "y":1}, + {"label":"K12 (B2,F5)", "x":2.5, "y":1}, + {"label":"K13 (B2,F4)", "x":3.5, "y":1}, + {"label":"K14 (B2,F1)", "x":4.5, "y":1}, + {"label":"K15 (B2,F0)", "x":5.5, "y":1}, + {"label":"K16 (B2,C7)", "x":6.5, "y":1}, + {"label":"K17 (B2,C6)", "x":7.5, "y":1}, + {"label":"K18 (B2,B6)", "x":8.5, "y":1}, + {"label":"K19 (B2,B5)", "x":9.5, "y":1}, + {"label":"K1A (B2,B4)", "x":10.5, "y":1}, + {"label":"K1B (B2,D7)", "x":11.5, "y":1}, + {"label":"K1C (B2,D5)", "x":12.5, "y":1}, + {"label":"K1D (B2,D3)", "x":13.5, "y":1, "w":1.5}, + {"label":"K1E (B2,D1)", "x":15.25, "y":1}, + {"label":"K20 (B3,F7)", "x":0, "y":2, "w":1.75}, + {"label":"K21 (B3,F6)", "x":1.75, "y":2}, + {"label":"K22 (B3,F5)", "x":2.75, "y":2}, + {"label":"K23 (B3,F4)", "x":3.75, "y":2}, + {"label":"K24 (B3,F1)", "x":4.75, "y":2}, + {"label":"K25 (B3,F0)", "x":5.75, "y":2}, + {"label":"K26 (B3,C7)", "x":6.75, "y":2}, + {"label":"K27 (B3,C6)", "x":7.75, "y":2}, + {"label":"K28 (B3,B6)", "x":8.75, "y":2}, + {"label":"K29 (B3,B5)", "x":9.75, "y":2}, + {"label":"K2A (B3,B4)", "x":10.75, "y":2}, + {"label":"K2B (B3,D7)", "x":11.75, "y":2}, + {"label":"K2C (B3,D5)", "x":12.75, "y":2, "w":2.25}, + {"label":"K2E (B3,D1)", "x":15.25, "y":2}, + {"label":"K30 (D4,F7)", "x":0, "y":3, "w":2.25}, + {"label":"K32 (D4,F5)", "x":2.25, "y":3}, + {"label":"K33 (D4,F4)", "x":3.25, "y":3}, + {"label":"K34 (D4,F1)", "x":4.25, "y":3}, + {"label":"K35 (D4,F0)", "x":5.25, "y":3}, + {"label":"K36 (D4,C7)", "x":6.25, "y":3}, + {"label":"K37 (D4,C6)", "x":7.25, "y":3}, + {"label":"K38 (D4,B6)", "x":8.25, "y":3}, + {"label":"K39 (D4,B5)", "x":9.25, "y":3}, + {"label":"K3A (D4,B4)", "x":10.25, "y":3}, + {"label":"K3B (D4,D7)", "x":11.25, "y":3}, + {"label":"K3C (D4,D5)", "x":12.25, "y":3, "w":1.75}, + {"label":"K3D (D4,D3)", "x":14, "y":3}, + {"label":"K40 (D6,F7)", "x":0, "y":4, "w":1.25}, + {"label":"K41 (D6,F6)", "x":1.25, "y":4, "w":1.25}, + {"label":"K43 (D6,F4)", "x":2.5, "y":4, "w":1.25}, + {"label":"K46 (D6,C7)", "x":3.75, "y":4, "w":6.25}, + {"label":"K4A (D6,B4)", "x":10, "y":4, "w":1.25}, + {"label":"K4B (D6,D7)", "x":11.25, "y":4, "w":1.25}, + {"label":"K4C (D6,D5)", "x":13, "y":4}, + {"label":"K4D (D6,D3)", "x":14, "y":4}, + {"label":"K4E (D6,D1)", "x":15, "y":4} + ] + } + } + ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/" +} diff --git a/keyboards/alfredslab/swift65/solder/keymaps/default/keymap.c b/keyboards/alfredslab/swift65/solder/keymaps/default/keymap.c new file mode 100644 index 0000000000..274809bb11 --- /dev/null +++ b/keyboards/alfredslab/swift65/solder/keymaps/default/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2021 Steven Phillips (spooknik) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGDN, + RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, + _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END + ), + +}; \ No newline at end of file diff --git a/keyboards/alfredslab/swift65/solder/keymaps/default/readme.md b/keyboards/alfredslab/swift65/solder/keymaps/default/readme.md new file mode 100644 index 0000000000..74de146080 --- /dev/null +++ b/keyboards/alfredslab/swift65/solder/keymaps/default/readme.md @@ -0,0 +1,3 @@ +# Default Swift65 Solder Layout + +![](https://i.imgur.com/7Capi8W.png) diff --git a/keyboards/alfredslab/swift65/solder/keymaps/via/keymap.c b/keyboards/alfredslab/swift65/solder/keymaps/via/keymap.c new file mode 100644 index 0000000000..9936becce6 --- /dev/null +++ b/keyboards/alfredslab/swift65/solder/keymaps/via/keymap.c @@ -0,0 +1,49 @@ +/* Copyright 2021 Steven Phillips (spooknik) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGDN, + RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, + _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END + ), + [2] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + +}; diff --git a/keyboards/alfredslab/swift65/solder/keymaps/via/readme.md b/keyboards/alfredslab/swift65/solder/keymaps/via/readme.md new file mode 100644 index 0000000000..74de146080 --- /dev/null +++ b/keyboards/alfredslab/swift65/solder/keymaps/via/readme.md @@ -0,0 +1,3 @@ +# Default Swift65 Solder Layout + +![](https://i.imgur.com/7Capi8W.png) diff --git a/keyboards/alfredslab/swift65/solder/keymaps/via/rules.mk b/keyboards/alfredslab/swift65/solder/keymaps/via/rules.mk new file mode 100644 index 0000000000..036bd6d1c3 --- /dev/null +++ b/keyboards/alfredslab/swift65/solder/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/alfredslab/swift65/solder/readme.md b/keyboards/alfredslab/swift65/solder/readme.md new file mode 100644 index 0000000000..b477438199 --- /dev/null +++ b/keyboards/alfredslab/swift65/solder/readme.md @@ -0,0 +1,20 @@ +# Swift65 + +A 65% Keyboard from Swiftcables + +* Keyboard Maintainer: [Steven Phillips (spoonik)](https://github.com/keyboardcollective) +* Hardware Supported: Swift65 Solder +* Hardware Availability: Soom from Swiftcables + +To enter bootloader for flashing firmware, press layer change key (MO(1)) and Right Shift simultaneously. + +Make example for this keyboard (after setting up your build environment): + + make alfredslab/swift65/solder:default + +Flashing example for this keyboard: + + make alfredslab/swift65/solder:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + diff --git a/keyboards/alfredslab/swift65/solder/rules.mk b/keyboards/alfredslab/swift65/solder/rules.mk new file mode 100644 index 0000000000..2c2853b57f --- /dev/null +++ b/keyboards/alfredslab/swift65/solder/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/alfredslab/swift65/solder/solder.c b/keyboards/alfredslab/swift65/solder/solder.c new file mode 100644 index 0000000000..4dd021ba7c --- /dev/null +++ b/keyboards/alfredslab/swift65/solder/solder.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Steven Phillips (spooknik) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "solder.h" diff --git a/keyboards/alfredslab/swift65/solder/solder.h b/keyboards/alfredslab/swift65/solder/solder.h new file mode 100644 index 0000000000..7629379f59 --- /dev/null +++ b/keyboards/alfredslab/swift65/solder/solder.h @@ -0,0 +1,33 @@ +/* Copyright 2021 Steven Phillips (spooknik) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0F, K0E, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \ + K40, K41, K43, K46, K4A, K4B, K4C, K4D, K4E \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, KC_NO }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KC_NO, K2E, KC_NO }, \ + { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, KC_NO, KC_NO }, \ + { K40, K41, KC_NO, K43, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E, KC_NO }, \ +} diff --git a/keyboards/ggkeyboards/genesis/hotswap/config.h b/keyboards/ggkeyboards/genesis/hotswap/config.h new file mode 100644 index 0000000000..d435612f17 --- /dev/null +++ b/keyboards/ggkeyboards/genesis/hotswap/config.h @@ -0,0 +1,49 @@ +/* Copyright 2021 Steven Phillips (Spooknik) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xBB00 +#define PRODUCT_ID 0xD4D3 +#define DEVICE_VER 0x0001 +#define MANUFACTURER GG Keyboards +#define PRODUCT Genesis + +/* key matrix size */ +#define MATRIX_ROWS 7 +#define MATRIX_COLS 18 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ +#define MATRIX_ROW_PINS { C5, C4, C3, C2, C1, C0 } +#define MATRIX_COL_PINS { F0, F1, F2, F3, F4, F5, F6, F7, A0, A1, A2, A3, A4, A5, A6, A7, C6, C7 } + +#define DIODE_DIRECTION COL2ROW + + +// generated by KBFirmware JSON to QMK Parser +// https://noroadsleft.github.io/kbf_qmk_converter/ \ No newline at end of file diff --git a/keyboards/ggkeyboards/genesis/hotswap/hotswap.c b/keyboards/ggkeyboards/genesis/hotswap/hotswap.c new file mode 100644 index 0000000000..b3b7c6508c --- /dev/null +++ b/keyboards/ggkeyboards/genesis/hotswap/hotswap.c @@ -0,0 +1,22 @@ + +/* Copyright 2021 Steven Phillips (Spooknik) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "hotswap.h" + +// generated by KBFirmware JSON to QMK Parser +// https://noroadsleft.github.io/kbf_qmk_converter/ + diff --git a/keyboards/ggkeyboards/genesis/hotswap/hotswap.h b/keyboards/ggkeyboards/genesis/hotswap/hotswap.h new file mode 100644 index 0000000000..a5ff78cca7 --- /dev/null +++ b/keyboards/ggkeyboards/genesis/hotswap/hotswap.h @@ -0,0 +1,39 @@ +/* Copyright 2021 Steven Phillips (Spooknik) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0F, K0G, K0H, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2F, K2G, K2H, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3F, K3G, K3H, \ + K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, \ + K51, K52, K53, K54, K55, K56, K57, K58, K59, K5A, K5B, K5C, K5G, \ + K60, K61, K63, K66, K6A, K6B, K6C, K6D, K6F, K6G, K6H \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, KC_NO, KC_NO, K0F, K0G, K0H }, \ + { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, KC_NO, K2F, K2G, K2H }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, KC_NO, K3F, K3G, K3H }, \ + { K40, KC_NO, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, KC_NO, KC_NO, KC_NO, KC_NO }, \ + { KC_NO, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5A, K5B, K5C, KC_NO, KC_NO, KC_NO, K5G, KC_NO }, \ + { K60, K61, KC_NO, K63, KC_NO, KC_NO, K66, KC_NO, KC_NO, KC_NO, K6A, K6B, K6C, K6D, KC_NO, K6F, K6G, K6H }, \ +} + +// generated by KBFirmware JSON to QMK Parser +// https://noroadsleft.github.io/kbf_qmk_converter/ \ No newline at end of file diff --git a/keyboards/ggkeyboards/genesis/hotswap/info.json b/keyboards/ggkeyboards/genesis/hotswap/info.json new file mode 100644 index 0000000000..dfb68ce0b5 --- /dev/null +++ b/keyboards/ggkeyboards/genesis/hotswap/info.json @@ -0,0 +1,101 @@ +{ + "keyboard_name": "Genesis", + "url": "", + "maintainer": "Spooknik", + "width": 18.25, + "height": 6.5, + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"K00 (C5,F0)", "x":0, "y":0}, + {"label":"K01 (C5,F1)", "x":2, "y":0}, + {"label":"K02 (C5,F2)", "x":3, "y":0}, + {"label":"K03 (C5,F3)", "x":4, "y":0}, + {"label":"K04 (C5,F4)", "x":5, "y":0}, + {"label":"K05 (C5,F5)", "x":6.5, "y":0}, + {"label":"K06 (C5,F6)", "x":7.5, "y":0}, + {"label":"K07 (C5,F7)", "x":8.5, "y":0}, + {"label":"K08 (C5,A0)", "x":9.5, "y":0}, + {"label":"K09 (C5,A1)", "x":11, "y":0}, + {"label":"K0A (C5,A2)", "x":12, "y":0}, + {"label":"K0B (C5,A3)", "x":13, "y":0}, + {"label":"K0C (C5,A4)", "x":14, "y":0}, + {"label":"K0F (C5,A7)", "x":15.25, "y":0}, + {"label":"K0G (C5,C6)", "x":16.25, "y":0}, + {"label":"K0H (C5,C7)", "x":17.25, "y":0}, + {"label":"K20 (C4,F0)", "x":0, "y":1.5}, + {"label":"K21 (C4,F1)", "x":1, "y":1.5}, + {"label":"K22 (C4,F2)", "x":2, "y":1.5}, + {"label":"K23 (C4,F3)", "x":3, "y":1.5}, + {"label":"K24 (C4,F4)", "x":4, "y":1.5}, + {"label":"K25 (C4,F5)", "x":5, "y":1.5}, + {"label":"K26 (C4,F6)", "x":6, "y":1.5}, + {"label":"K27 (C4,F7)", "x":7, "y":1.5}, + {"label":"K28 (C4,A0)", "x":8, "y":1.5}, + {"label":"K29 (C4,A1)", "x":9, "y":1.5}, + {"label":"K2A (C4,A2)", "x":10, "y":1.5}, + {"label":"K2B (C4,A3)", "x":11, "y":1.5}, + {"label":"K2C (C4,A4)", "x":12, "y":1.5}, + {"label":"K2D (C4,A5)", "x":13, "y":1.5, "w":2}, + {"label":"K2F (C4,A7)", "x":15.25, "y":1.5}, + {"label":"K2G (C4,C6)", "x":16.25, "y":1.5}, + {"label":"K2H (C4,C7)", "x":17.25, "y":1.5}, + {"label":"K30 (C3,F0)", "x":0, "y":2.5, "w":1.5}, + {"label":"K31 (C3,F1)", "x":1.5, "y":2.5}, + {"label":"K32 (C3,F2)", "x":2.5, "y":2.5}, + {"label":"K33 (C3,F3)", "x":3.5, "y":2.5}, + {"label":"K34 (C3,F4)", "x":4.5, "y":2.5}, + {"label":"K35 (C3,F5)", "x":5.5, "y":2.5}, + {"label":"K36 (C3,F6)", "x":6.5, "y":2.5}, + {"label":"K37 (C3,F7)", "x":7.5, "y":2.5}, + {"label":"K38 (C3,A0)", "x":8.5, "y":2.5}, + {"label":"K39 (C3,A1)", "x":9.5, "y":2.5}, + {"label":"K3A (C3,A2)", "x":10.5, "y":2.5}, + {"label":"K3B (C3,A3)", "x":11.5, "y":2.5}, + {"label":"K3C (C3,A4)", "x":12.5, "y":2.5}, + {"label":"K3D (C3,A5)", "x":13.5, "y":2.5, "w":1.5}, + {"label":"K3F (C3,A7)", "x":15.25, "y":2.5}, + {"label":"K3G (C3,C6)", "x":16.25, "y":2.5}, + {"label":"K3H (C3,C7)", "x":17.25, "y":2.5}, + {"label":"K40 (C2,F0)", "x":0, "y":3.5, "w":1.75}, + {"label":"K42 (C2,F2)", "x":1.75, "y":3.5}, + {"label":"K43 (C2,F3)", "x":2.75, "y":3.5}, + {"label":"K44 (C2,F4)", "x":3.75, "y":3.5}, + {"label":"K45 (C2,F5)", "x":4.75, "y":3.5}, + {"label":"K46 (C2,F6)", "x":5.75, "y":3.5}, + {"label":"K47 (C2,F7)", "x":6.75, "y":3.5}, + {"label":"K48 (C2,A0)", "x":7.75, "y":3.5}, + {"label":"K49 (C2,A1)", "x":8.75, "y":3.5}, + {"label":"K4A (C2,A2)", "x":9.75, "y":3.5}, + {"label":"K4B (C2,A3)", "x":10.75, "y":3.5}, + {"label":"K4C (C2,A4)", "x":11.75, "y":3.5}, + {"label":"K4D (C2,A5)", "x":12.75, "y":3.5, "w":2.25}, + {"label":"K51 (C1,F1)", "x":0, "y":4.5, "w":2.25}, + {"label":"K52 (C1,F2)", "x":2.25, "y":4.5}, + {"label":"K53 (C1,F3)", "x":3.25, "y":4.5}, + {"label":"K54 (C1,F4)", "x":4.25, "y":4.5}, + {"label":"K55 (C1,F5)", "x":5.25, "y":4.5}, + {"label":"K56 (C1,F6)", "x":6.25, "y":4.5}, + {"label":"K57 (C1,F7)", "x":7.25, "y":4.5}, + {"label":"K58 (C1,A0)", "x":8.25, "y":4.5}, + {"label":"K59 (C1,A1)", "x":9.25, "y":4.5}, + {"label":"K5A (C1,A2)", "x":10.25, "y":4.5}, + {"label":"K5B (C1,A3)", "x":11.25, "y":4.5}, + {"label":"K5C (C1,A4)", "x":12.25, "y":4.5, "w":2.75}, + {"label":"K5G (C1,C6)", "x":16.25, "y":4.5}, + {"label":"K60 (C0,F0)", "x":0, "y":5.5, "w":1.25}, + {"label":"K61 (C0,F1)", "x":1.25, "y":5.5, "w":1.25}, + {"label":"K63 (C0,F3)", "x":2.5, "y":5.5, "w":1.25}, + {"label":"K66 (C0,F6)", "x":3.75, "y":5.5, "w":6.25}, + {"label":"K6A (C0,A2)", "x":10, "y":5.5, "w":1.25}, + {"label":"K6B (C0,A3)", "x":11.25, "y":5.5, "w":1.25}, + {"label":"K6C (C0,A4)", "x":12.5, "y":5.5, "w":1.25}, + {"label":"K6D (C0,A5)", "x":13.75, "y":5.5, "w":1.25}, + {"label":"K6F (C0,A7)", "x":15.25, "y":5.5}, + {"label":"K6G (C0,C6)", "x":16.25, "y":5.5}, + {"label":"K6H (C0,C7)", "x":17.25, "y":5.5} + ] + } + } + ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/" +} diff --git a/keyboards/ggkeyboards/genesis/hotswap/keymaps/default/keymap.c b/keyboards/ggkeyboards/genesis/hotswap/keymaps/default/keymap.c new file mode 100644 index 0000000000..ab009ae58a --- /dev/null +++ b/keyboards/ggkeyboards/genesis/hotswap/keymaps/default/keymap.c @@ -0,0 +1,53 @@ +/* Copyright 2021 Steven Phillips (Spooknik) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LGUI, MO(1), KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +}; diff --git a/keyboards/ggkeyboards/genesis/hotswap/keymaps/via/keymap.c b/keyboards/ggkeyboards/genesis/hotswap/keymaps/via/keymap.c new file mode 100644 index 0000000000..dd680a8391 --- /dev/null +++ b/keyboards/ggkeyboards/genesis/hotswap/keymaps/via/keymap.c @@ -0,0 +1,53 @@ +/* Copyright 2021 Steven Phillips (Spooknik) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LGUI, MO(1), KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; \ No newline at end of file diff --git a/keyboards/ggkeyboards/genesis/hotswap/keymaps/via/rules.mk b/keyboards/ggkeyboards/genesis/hotswap/keymaps/via/rules.mk new file mode 100644 index 0000000000..036bd6d1c3 --- /dev/null +++ b/keyboards/ggkeyboards/genesis/hotswap/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/ggkeyboards/genesis/hotswap/readme.md b/keyboards/ggkeyboards/genesis/hotswap/readme.md new file mode 100644 index 0000000000..c93aab1af4 --- /dev/null +++ b/keyboards/ggkeyboards/genesis/hotswap/readme.md @@ -0,0 +1,15 @@ +# GG Keyboards Hotswap PCB + +A Top mount TKL keyboard from GG Keyboards. + +* Keyboard Maintainer: [Stevem Phillips (spooknik)](https://github.com/spooknik) +* Hardware Supported: Hotswap PCB Rev 1 +* Hardware Availability: Coming Soon! + +To enter bootloader for flashing firmware, press layer change key (MO(1)) and "R" Key simultaneously. + +Make example for this keyboard (after setting up your build environment): + + make ggkeyboards/genesis/hotswap:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/ggkeyboards/genesis/hotswap/rules.mk b/keyboards/ggkeyboards/genesis/hotswap/rules.mk new file mode 100644 index 0000000000..0de06a3443 --- /dev/null +++ b/keyboards/ggkeyboards/genesis/hotswap/rules.mk @@ -0,0 +1,25 @@ +# MCU name +MCU = at90usb1286 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output + +# generated by KBFirmware JSON to QMK Parser +# https://noroadsleft.github.io/kbf_qmk_converter/ diff --git a/keyboards/ggkeyboards/genesis/solder/config.h b/keyboards/ggkeyboards/genesis/solder/config.h new file mode 100644 index 0000000000..76586262ab --- /dev/null +++ b/keyboards/ggkeyboards/genesis/solder/config.h @@ -0,0 +1,49 @@ +/* Copyright 2021 Steven Phillips (Spooknik) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xBB00 +#define PRODUCT_ID 0xD4D2 +#define DEVICE_VER 0x0001 +#define MANUFACTURER GG Keyboards +#define PRODUCT Genesis + +/* key matrix size */ +#define MATRIX_ROWS 7 +#define MATRIX_COLS 18 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ +#define MATRIX_ROW_PINS { C5, C4, C3, C2, C1, C0 } +#define MATRIX_COL_PINS { F0, F1, F2, F3, F4, F5, F6, F7, A0, A1, A2, A3, A4, A5, A6, A7, C6, C7 } + +#define DIODE_DIRECTION COL2ROW + + +// generated by KBFirmware JSON to QMK Parser +// https://noroadsleft.github.io/kbf_qmk_converter/ \ No newline at end of file diff --git a/keyboards/ggkeyboards/genesis/solder/info.json b/keyboards/ggkeyboards/genesis/solder/info.json new file mode 100644 index 0000000000..918f4c2e1b --- /dev/null +++ b/keyboards/ggkeyboards/genesis/solder/info.json @@ -0,0 +1,103 @@ +{ + "keyboard_name": "Genesis", + "url": "", + "maintainer": "Spooknik", + "width": 17, + "height": 6, + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"K00 (C5,F0)", "x":0, "y":0}, + {"label":"K01 (C5,F1)", "x":2, "y":0}, + {"label":"K02 (C5,F2)", "x":3, "y":0}, + {"label":"K03 (C5,F3)", "x":4, "y":0}, + {"label":"K04 (C5,F4)", "x":5, "y":0}, + {"label":"K05 (C5,F5)", "x":6.5, "y":0}, + {"label":"K06 (C5,F6)", "x":7.5, "y":0}, + {"label":"K07 (C5,F7)", "x":8.5, "y":0}, + {"label":"K08 (C5,A0)", "x":9.5, "y":0}, + {"label":"K09 (C5,A1)", "x":11, "y":0}, + {"label":"K0A (C5,A2)", "x":12, "y":0}, + {"label":"K0B (C5,A3)", "x":13, "y":0}, + {"label":"K0C (C5,A4)", "x":14, "y":0}, + {"label":"K0E (C5,A6)", "x":15, "y":0}, + {"label":"K0F (C5,A7)", "x":16, "y":0}, + {"label":"K0G (C5,C6)", "x":17, "y":0}, + {"label":"K10 (C4,F0)", "x":0, "y":1}, + {"label":"K11 (C4,F1)", "x":1, "y":1}, + {"label":"K12 (C4,F2)", "x":2, "y":1}, + {"label":"K13 (C4,F3)", "x":3, "y":1}, + {"label":"K14 (C4,F4)", "x":4, "y":1}, + {"label":"K15 (C4,F5)", "x":5, "y":1}, + {"label":"K16 (C4,F6)", "x":6, "y":1}, + {"label":"K17 (C4,F7)", "x":7, "y":1}, + {"label":"K18 (C4,A0)", "x":8, "y":1}, + {"label":"K19 (C4,A1)", "x":9, "y":1}, + {"label":"K1A (C4,A2)", "x":10, "y":1}, + {"label":"K1B (C4,A3)", "x":11, "y":1}, + {"label":"K1C (C4,A4)", "x":12, "y":1}, + {"label":"K1D (C4,A5)", "x":13, "y":1}, + {"label":"K0D (C5,A5)", "x":14, "y":1}, + {"label":"K1E (C4,A6)", "x":15, "y":1}, + {"label":"K1F (C4,A7)", "x":16, "y":1}, + {"label":"K1G (C4,C6)", "x":17, "y":1}, + {"label":"K20 (C3,F0)", "x":0, "y":2, "w":1.5}, + {"label":"K21 (C3,F1)", "x":1.5, "y":2}, + {"label":"K22 (C3,F2)", "x":2.5, "y":2}, + {"label":"K23 (C3,F3)", "x":3.5, "y":2}, + {"label":"K24 (C3,F4)", "x":4.5, "y":2}, + {"label":"K25 (C3,F5)", "x":5.5, "y":2}, + {"label":"K26 (C3,F6)", "x":6.5, "y":2}, + {"label":"K27 (C3,F7)", "x":7.5, "y":2}, + {"label":"K28 (C3,A0)", "x":8.5, "y":2}, + {"label":"K29 (C3,A1)", "x":9.5, "y":2}, + {"label":"K2A (C3,A2)", "x":10.5, "y":2}, + {"label":"K2B (C3,A3)", "x":11.5, "y":2}, + {"label":"K2C (C3,A4)", "x":12.5, "y":2}, + {"label":"K2D (C3,A5)", "x":13.5, "y":2, "w":1.5}, + {"label":"K2E (C3,A6)", "x":15, "y":2}, + {"label":"K2F (C3,A7)", "x":16, "y":2}, + {"label":"K2G (C3,C6)", "x":17, "y":2}, + {"label":"K30 (C2,F0)", "x":0, "y":3, "w":1.75}, + {"label":"K31 (C2,F1)", "x":1.75, "y":3}, + {"label":"K32 (C2,F2)", "x":2.75, "y":3}, + {"label":"K33 (C2,F3)", "x":3.75, "y":3}, + {"label":"K34 (C2,F4)", "x":4.75, "y":3}, + {"label":"K35 (C2,F5)", "x":5.75, "y":3}, + {"label":"K36 (C2,F6)", "x":6.75, "y":3}, + {"label":"K37 (C2,F7)", "x":7.75, "y":3}, + {"label":"K38 (C2,A0)", "x":8.75, "y":3}, + {"label":"K39 (C2,A1)", "x":9.75, "y":3}, + {"label":"K3A (C2,A2)", "x":10.75, "y":3}, + {"label":"K3B (C2,A3)", "x":11.75, "y":3}, + {"label":"K3D (C2,A5)", "x":12.75, "y":3, "w":2.25}, + {"label":"K40 (C1,F0)", "x":0, "y":4, "w":1.25}, + {"label":"K41 (C1,F1)", "x":1.25, "y":4}, + {"label":"K42 (C1,F2)", "x":2.25, "y":4}, + {"label":"K43 (C1,F3)", "x":3.25, "y":4}, + {"label":"K44 (C1,F4)", "x":4.25, "y":4}, + {"label":"K45 (C1,F5)", "x":5.25, "y":4}, + {"label":"K46 (C1,F6)", "x":6.25, "y":4}, + {"label":"K47 (C1,F7)", "x":7.25, "y":4}, + {"label":"K48 (C1,A0)", "x":8.25, "y":4}, + {"label":"K49 (C1,A1)", "x":9.25, "y":4}, + {"label":"K4A (C1,A2)", "x":10.25, "y":4}, + {"label":"K4B (C1,A3)", "x":11.25, "y":4}, + {"label":"K4C (C1,A4)", "x":12.25, "y":4, "w":2.75}, + {"label":"K4F (C1,A7)", "x":16, "y":4}, + {"label":"K50 (C0,F0)", "x":0, "y":5, "w":1.25}, + {"label":"K51 (C0,F1)", "x":1.25, "y":5, "w":1.25}, + {"label":"K52 (C0,F2)", "x":2.5, "y":5, "w":1.25}, + {"label":"K56 (C0,F6)", "x":3.75, "y":5, "w":6.25}, + {"label":"K5A (C0,A2)", "x":10, "y":5, "w":1.25}, + {"label":"K5B (C0,A3)", "x":11.25, "y":5, "w":1.25}, + {"label":"K5C (C0,A4)", "x":12.5, "y":5, "w":1.25}, + {"label":"K5D (C0,A5)", "x":13.75, "y":5, "w":1.25}, + {"label":"K5E (C0,A6)", "x":15, "y":5}, + {"label":"K5F (C0,A7)", "x":16, "y":5}, + {"label":"K5G (C0,C6)", "x":17, "y":5} + ] + } + } + ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/" +} \ No newline at end of file diff --git a/keyboards/ggkeyboards/genesis/solder/keymaps/default/keymap.c b/keyboards/ggkeyboards/genesis/solder/keymaps/default/keymap.c new file mode 100644 index 0000000000..98d778f1d1 --- /dev/null +++ b/keyboards/ggkeyboards/genesis/solder/keymaps/default/keymap.c @@ -0,0 +1,53 @@ +/* Copyright 2021 Steven Phillips (Spooknik) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_SPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LGUI, MO(1), KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +}; \ No newline at end of file diff --git a/keyboards/ggkeyboards/genesis/solder/keymaps/via/keymap.c b/keyboards/ggkeyboards/genesis/solder/keymaps/via/keymap.c new file mode 100644 index 0000000000..1084a6e220 --- /dev/null +++ b/keyboards/ggkeyboards/genesis/solder/keymaps/via/keymap.c @@ -0,0 +1,53 @@ +/* Copyright 2021 Steven Phillips (Spooknik) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_SPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LGUI, MO(1), KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +}; \ No newline at end of file diff --git a/keyboards/ggkeyboards/genesis/solder/keymaps/via/rules.mk b/keyboards/ggkeyboards/genesis/solder/keymaps/via/rules.mk new file mode 100644 index 0000000000..036bd6d1c3 --- /dev/null +++ b/keyboards/ggkeyboards/genesis/solder/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/ggkeyboards/genesis/solder/readme.md b/keyboards/ggkeyboards/genesis/solder/readme.md new file mode 100644 index 0000000000..edecaa656b --- /dev/null +++ b/keyboards/ggkeyboards/genesis/solder/readme.md @@ -0,0 +1,15 @@ +# GG Keyboards Solder PCB + +A Top mount TKL keyboard from GG Keyboards. + +* Keyboard Maintainer: [Stevem Phillips (spooknik)](https://github.com/spooknik) +* Hardware Supported: Solder PCB Rev 1 +* Hardware Availability: Coming Soon! + +To enter bootloader for flashing firmware, press layer change key (MO(1)) and "R" Key simultaneously. + +Make example for this keyboard (after setting up your build environment): + + make ggkeyboards/genesis/solder:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/ggkeyboards/genesis/solder/rules.mk b/keyboards/ggkeyboards/genesis/solder/rules.mk new file mode 100644 index 0000000000..0de06a3443 --- /dev/null +++ b/keyboards/ggkeyboards/genesis/solder/rules.mk @@ -0,0 +1,25 @@ +# MCU name +MCU = at90usb1286 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output + +# generated by KBFirmware JSON to QMK Parser +# https://noroadsleft.github.io/kbf_qmk_converter/ diff --git a/keyboards/ggkeyboards/genesis/solder/solder.c b/keyboards/ggkeyboards/genesis/solder/solder.c new file mode 100644 index 0000000000..9e1bdeb0ff --- /dev/null +++ b/keyboards/ggkeyboards/genesis/solder/solder.c @@ -0,0 +1,22 @@ + +/* Copyright 2021 Steven Phillips (Spooknik) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "solder.h" + +// generated by KBFirmware JSON to QMK Parser +// https://noroadsleft.github.io/kbf_qmk_converter/ + diff --git a/keyboards/ggkeyboards/genesis/solder/solder.h b/keyboards/ggkeyboards/genesis/solder/solder.h new file mode 100644 index 0000000000..a5a96adf83 --- /dev/null +++ b/keyboards/ggkeyboards/genesis/solder/solder.h @@ -0,0 +1,38 @@ +/* Copyright 2021 Steven Phillips (Spooknik) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, K0F, K0G, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K0D, K1E, K1F, K1G, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \ + K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4F, \ + K50, K51, K52, K56, K5A, K5B, K5C, K5D, K5E, K5F, K5G \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, KC_NO }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, KC_NO }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, KC_NO }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, KC_NO, KC_NO, KC_NO, KC_NO }, \ + { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, KC_NO, KC_NO, K4F, KC_NO, KC_NO }, \ + { K50, K51, K52, KC_NO, KC_NO, KC_NO, K56, KC_NO, KC_NO, KC_NO, K5A, K5B, K5C, K5D, K5E, K5F, K5G, KC_NO }, \ +} + +// generated by KBFirmware JSON to QMK Parser +// https://noroadsleft.github.io/kbf_qmk_converter/ \ No newline at end of file From d14f1ab7ff7bf59f28b7223957d05bdf9b064103 Mon Sep 17 00:00:00 2001 From: Kyle McCreery Date: Fri, 21 May 2021 19:28:44 -1000 Subject: [PATCH 411/613] [Keyboard] New Keyboard - Murphpad (#12885) Co-authored-by: Ryan --- keyboards/mechwild/murphpad/config.h | 94 +++++++ keyboards/mechwild/murphpad/info.json | 20 ++ .../murphpad/keymaps/default/keymap.c | 140 ++++++++++ .../mechwild/murphpad/keymaps/via/keymap.c | 138 ++++++++++ .../mechwild/murphpad/keymaps/via/rules.mk | 2 + .../mechwild/murphpad/lib/murphpadfont.c | 244 ++++++++++++++++++ keyboards/mechwild/murphpad/murphpad.c | 17 ++ keyboards/mechwild/murphpad/murphpad.h | 48 ++++ keyboards/mechwild/murphpad/readme.md | 19 ++ keyboards/mechwild/murphpad/rules.mk | 24 ++ 10 files changed, 746 insertions(+) create mode 100644 keyboards/mechwild/murphpad/config.h create mode 100644 keyboards/mechwild/murphpad/info.json create mode 100644 keyboards/mechwild/murphpad/keymaps/default/keymap.c create mode 100644 keyboards/mechwild/murphpad/keymaps/via/keymap.c create mode 100644 keyboards/mechwild/murphpad/keymaps/via/rules.mk create mode 100644 keyboards/mechwild/murphpad/lib/murphpadfont.c create mode 100644 keyboards/mechwild/murphpad/murphpad.c create mode 100644 keyboards/mechwild/murphpad/murphpad.h create mode 100644 keyboards/mechwild/murphpad/readme.md create mode 100644 keyboards/mechwild/murphpad/rules.mk diff --git a/keyboards/mechwild/murphpad/config.h b/keyboards/mechwild/murphpad/config.h new file mode 100644 index 0000000000..e107ad260b --- /dev/null +++ b/keyboards/mechwild/murphpad/config.h @@ -0,0 +1,94 @@ +/* +Copyright 2021 Kyle McCreery + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x6D77 // mw = "MechWild" +#define PRODUCT_ID 0x1705 +#define DEVICE_VER 0x0301 +#define MANUFACTURER MechWild +#define PRODUCT MurphPad + +/* Key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 5 + +/* Key matrix pins */ +#define MATRIX_ROW_PINS { F5, B2, B3, B1, F7, F6 } +#define MATRIX_COL_PINS { B5, D7, C6, D4, B6 } +#define UNUSED_PINS + +/* Encoder pins */ +#define ENCODERS_PAD_A { E6 } +#define ENCODERS_PAD_B { B4 } + +/* Encoder resolution */ +#define ENCODER_RESOLUTION 4 +#define TAP_CODE_DELAY 10 + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +#define OLED_FONT_H "keyboards/mechwild/murphpad/lib/murphpadfont.c" + +#define RGB_DI_PIN F4 +#ifdef RGB_DI_PIN +# define RGBLED_NUM 8 +# define RGBLIGHT_HUE_STEP 8 +# define RGBLIGHT_SAT_STEP 8 +# define RGBLIGHT_VAL_STEP 8 +# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +# define RGBLIGHT_ANIMATIONS +/*== or choose animations ==*/ +//# define RGBLIGHT_EFFECT_BREATHING +//# define RGBLIGHT_EFFECT_RAINBOW_MOOD +//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +//# define RGBLIGHT_EFFECT_SNAKE +//# define RGBLIGHT_EFFECT_KNIGHT +//# define RGBLIGHT_EFFECT_CHRISTMAS +//# define RGBLIGHT_EFFECT_STATIC_GRADIENT +//# define RGBLIGHT_EFFECT_RGB_TEST +//# define RGBLIGHT_EFFECT_ALTERNATING +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE + +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 1 diff --git a/keyboards/mechwild/murphpad/info.json b/keyboards/mechwild/murphpad/info.json new file mode 100644 index 0000000000..cabb9185e2 --- /dev/null +++ b/keyboards/mechwild/murphpad/info.json @@ -0,0 +1,20 @@ +{ + "keyboard_name": "MechWild MurphPad", + "url": "mechwild.com", + "maintainer": "Kyle McCreery", + "width": 5, + "height": 7, + "layouts": { + "LAYOUT": { + "layout": [ + {"label": "k00", "x": 1, "y": 0}, {"label": "k01", "x": 2, "y": 0}, {"label": "k02", "x": 3, "y": 0}, {"label": "k03", "x": 4, "y": 0}, + {"label": "k10", "x": 1, "y": 1}, {"label": "k11", "x": 2, "y": 1}, {"label": "k12", "x": 3, "y": 1}, {"label": "k13", "x": 4, "y": 1}, + {"label": "k20", "x": 1, "y": 2}, {"label": "k21", "x": 2, "y": 2}, {"label": "k22", "x": 3, "y": 2}, {"label": "k23", "x": 4, "y": 2}, + {"label": "k30", "x": 0, "y": 3}, {"label": "k31", "x": 1, "y": 3}, {"label": "k32", "x": 2, "y": 3}, {"label": "k33", "x": 3, "y": 3}, {"label": "k34", "x": 4, "y": 3}, + {"label": "k40", "x": 0, "y": 4}, {"label": "k41", "x": 1, "y": 4}, {"label": "k42", "x": 2, "y": 4}, {"label": "k43", "x": 3, "y": 4}, {"label": "k44", "x": 4, "y": 4}, + {"label": "k50", "x": 0, "y": 5}, {"label": "k51", "x": 1, "y": 5}, {"label": "k52", "x": 2, "y": 5}, {"label": "k53", "x": 3, "y": 5}, {"label": "k54", "x": 4, "y": 5}, + {"label": "BACK00", "x": 1, "y": 6}, {"label": "BACK01", "x": 2, "y": 6}, {"label": "BACK02", "x": 3, "y": 6} + ] + } + } +} diff --git a/keyboards/mechwild/murphpad/keymaps/default/keymap.c b/keyboards/mechwild/murphpad/keymaps/default/keymap.c new file mode 100644 index 0000000000..da9b28f296 --- /dev/null +++ b/keyboards/mechwild/murphpad/keymaps/default/keymap.c @@ -0,0 +1,140 @@ +/* Copyright 2021 Kyle McCreery + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap + +enum layer_names { + _BASE, + _FN1, + _FN2, + _FN3 +}; + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [_BASE] = LAYOUT( + KC_F1, KC_F2, KC_F3, KC_F4, + KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_MUTE, KC_P4, KC_P5, KC_P6, KC_NO, + MO(_FN1), KC_P1, KC_P2, KC_P3, KC_PENT, + KC_BSPC, KC_P0, KC_NO, KC_PDOT, KC_NO, + + KC_F5, KC_F6, KC_F7 + + ), + [_FN1] = LAYOUT( + _______, _______, _______, _______, + _______, _______, _______, _______, + RGB_HUD, RGB_SPI, RGB_HUI, _______, + _______, RGB_RMOD, RGB_TOG, RGB_MOD, KC_NO, + _______, RGB_VAD, RGB_SPD, RGB_VAI, _______, + _______, RGB_SAD, KC_NO, RGB_SAI, KC_NO, + + _______, _______, _______ + + ), + [_FN2] = LAYOUT( + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, KC_NO, + _______, _______, _______, _______, _______, + _______, _______, _______, _______, KC_NO, + + _______, _______, _______ + + ), + [_FN3] = LAYOUT( + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, KC_NO, + _______, _______, _______, _______, _______, + _______, _______, _______, _______, KC_NO, + + _______, _______, _______ + + ) +}; + +#ifdef ENCODER_ENABLE +void encoder_update_user(uint8_t index, bool clockwise) { + switch (index) { + case 0: + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + break; + } + +} +#endif + +#ifdef OLED_DRIVER_ENABLE + oled_rotation_t oled_init_user(oled_rotation_t rotation) { + return OLED_ROTATION_270; // flips the display 270 degrees + } + + static void render_logo(void) { // Render MechWild "MW" Logo + static const char PROGMEM logo_1[] = {0x8A, 0x8B, 0x8C, 0x8D, 0x00}; + static const char PROGMEM logo_2[] = {0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0x00}; + static const char PROGMEM logo_3[] = {0xCA, 0xCB, 0xCC, 0xCD, 0x00}; + static const char PROGMEM logo_4[] = {0x20, 0x8E, 0x8F, 0x90, 0x00}; + oled_set_cursor(0,0); + oled_write_P(logo_1, false); + oled_set_cursor(0,1); + oled_write_P(logo_2, false); + oled_set_cursor(0,2); + oled_write_P(logo_3, false); + oled_set_cursor(0,3); + oled_write_P(logo_4, false); + } + + void oled_task_user(void) { + render_logo(); + oled_set_cursor(0,6); + + oled_write_ln_P(PSTR("Layer"), false); + + switch (get_highest_layer(layer_state)) { + case _BASE: + oled_write_ln_P(PSTR("Base"), false); + break; + case _FN1: + oled_write_ln_P(PSTR("FN 1"), false); + break; + case _FN2: + oled_write_ln_P(PSTR("FN 2"), false); + break; + case _FN3: + oled_write_ln_P(PSTR("FN 3"), false); + break; + default: + oled_write_ln_P(PSTR("Undef"), false); + } + oled_write_ln_P(PSTR(""), false); + // Host Keyboard LED Status + led_t led_state = host_keyboard_led_state(); + oled_write_ln_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); + oled_write_ln_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); + oled_write_ln_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); + } +#endif \ No newline at end of file diff --git a/keyboards/mechwild/murphpad/keymaps/via/keymap.c b/keyboards/mechwild/murphpad/keymaps/via/keymap.c new file mode 100644 index 0000000000..630b47f8cb --- /dev/null +++ b/keyboards/mechwild/murphpad/keymaps/via/keymap.c @@ -0,0 +1,138 @@ +/* Copyright 2021 Kyle McCreery + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _FN1, + _FN2, + _FN3 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [_BASE] = LAYOUT( + KC_F1, KC_F2, KC_F3, KC_F4, + KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_MUTE, KC_P4, KC_P5, KC_P6, KC_NO, + MO(_FN1), KC_P1, KC_P2, KC_P3, KC_PENT, + KC_BSPC, KC_P0, KC_NO, KC_PDOT, KC_NO, + + _______, _______, _______ + + ), + [_FN1] = LAYOUT( + _______, _______, _______, _______, + _______, _______, _______, _______, + RGB_HUD, RGB_SPI, RGB_HUI, _______, + _______, RGB_RMOD, RGB_TOG, RGB_MOD, KC_NO, + _______, RGB_VAD, RGB_SPD, RGB_VAI, _______, + _______, RGB_SAD, KC_NO, RGB_SAI, KC_NO, + + _______, _______, _______ + + ), + [_FN2] = LAYOUT( + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, KC_NO, + _______, _______, _______, _______, _______, + _______, _______, _______, _______, KC_NO, + + _______, _______, _______ + + ), + [_FN3] = LAYOUT( + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, KC_NO, + _______, _______, _______, _______, _______, + _______, _______, _______, _______, KC_NO, + + _______, _______, _______ + + ) +}; + +#ifdef ENCODER_ENABLE +void encoder_update_user(uint8_t index, bool clockwise) { + switch (index) { + case 0: + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + break; + } + +} +#endif + +#ifdef OLED_DRIVER_ENABLE + oled_rotation_t oled_init_user(oled_rotation_t rotation) { + return OLED_ROTATION_270; // flips the display 270 degrees + } + + static void render_logo(void) { // Render MechWild "MW" Logo + static const char PROGMEM logo_1[] = {0x8A, 0x8B, 0x8C, 0x8D, 0x00}; + static const char PROGMEM logo_2[] = {0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0x00}; + static const char PROGMEM logo_3[] = {0xCA, 0xCB, 0xCC, 0xCD, 0x00}; + static const char PROGMEM logo_4[] = {0x20, 0x8E, 0x8F, 0x90, 0x00}; + oled_set_cursor(0,0); + oled_write_P(logo_1, false); + oled_set_cursor(0,1); + oled_write_P(logo_2, false); + oled_set_cursor(0,2); + oled_write_P(logo_3, false); + oled_set_cursor(0,3); + oled_write_P(logo_4, false); + } + + void oled_task_user(void) { + render_logo(); + oled_set_cursor(0,6); + + oled_write_ln_P(PSTR("Layer"), false); + + switch (get_highest_layer(layer_state)) { + case _BASE: + oled_write_ln_P(PSTR("Base"), false); + break; + case _FN1: + oled_write_ln_P(PSTR("FN 1"), false); + break; + case _FN2: + oled_write_ln_P(PSTR("FN 2"), false); + break; + case _FN3: + oled_write_ln_P(PSTR("FN 3"), false); + break; + default: + oled_write_ln_P(PSTR("Undef"), false); + } + oled_write_ln_P(PSTR(""), false); + // Host Keyboard LED Status + led_t led_state = host_keyboard_led_state(); + oled_write_ln_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); + oled_write_ln_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); + oled_write_ln_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); + } +#endif \ No newline at end of file diff --git a/keyboards/mechwild/murphpad/keymaps/via/rules.mk b/keyboards/mechwild/murphpad/keymaps/via/rules.mk new file mode 100644 index 0000000000..36b7ba9cbc --- /dev/null +++ b/keyboards/mechwild/murphpad/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/mechwild/murphpad/lib/murphpadfont.c b/keyboards/mechwild/murphpad/lib/murphpadfont.c new file mode 100644 index 0000000000..d2a7720117 --- /dev/null +++ b/keyboards/mechwild/murphpad/lib/murphpadfont.c @@ -0,0 +1,244 @@ +/* Copyright 2020 Kyle McCreery + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "progmem.h" + +const unsigned char font[] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00, + 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00, + 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00, + 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00, + 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00, + 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00, + 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00, + 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00, + 0x00, 0x18, 0x24, 0x18, 0x00, 0x00, + 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00, + 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00, + 0x26, 0x29, 0x79, 0x29, 0x26, 0x00, + 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00, + 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00, + 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00, + 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00, + 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00, + 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00, + 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00, + 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00, + 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, + 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00, + 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00, + 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00, + 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00, + 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00, + 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00, + 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00, + 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00, + 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, + 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, + 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00, + 0x23, 0x13, 0x08, 0x64, 0x62, 0x00, + 0x36, 0x49, 0x56, 0x20, 0x50, 0x00, + 0x00, 0x08, 0x07, 0x03, 0x00, 0x00, + 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, + 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00, + 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, + 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, + 0x00, 0x80, 0x70, 0x30, 0x00, 0x00, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, + 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, + 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, + 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, + 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00, + 0x72, 0x49, 0x49, 0x49, 0x46, 0x00, + 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00, + 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00, + 0x27, 0x45, 0x45, 0x45, 0x39, 0x00, + 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00, + 0x41, 0x21, 0x11, 0x09, 0x07, 0x00, + 0x36, 0x49, 0x49, 0x49, 0x36, 0x00, + 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00, + 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x34, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x14, 0x22, 0x41, 0x00, + 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, + 0x00, 0x41, 0x22, 0x14, 0x08, 0x00, + 0x02, 0x01, 0x59, 0x09, 0x06, 0x00, + 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00, + 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00, + 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00, + 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00, + 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00, + 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00, + 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00, + 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00, + 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, + 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00, + 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00, + 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00, + 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00, + 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00, + 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00, + 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00, + 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00, + 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00, + 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00, + 0x26, 0x49, 0x49, 0x49, 0x32, 0x00, + 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00, + 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00, + 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00, + 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00, + 0x63, 0x14, 0x08, 0x14, 0x63, 0x00, + 0x03, 0x04, 0x78, 0x04, 0x03, 0x00, + 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00, + 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00, + 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, + 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00, + 0x04, 0x02, 0x01, 0x02, 0x04, 0x00, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, + 0x00, 0x03, 0x07, 0x08, 0x00, 0x00, + 0x20, 0x54, 0x54, 0x78, 0x40, 0x00, + 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00, + 0x38, 0x44, 0x44, 0x44, 0x28, 0x00, + 0x38, 0x44, 0x44, 0x28, 0x7E, 0x00, + 0x38, 0x54, 0x54, 0x54, 0x18, 0x00, + 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00, + 0x18, 0x24, 0x24, 0x1C, 0x78, 0x00, + 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00, + 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00, + 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00, + 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00, + 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00, + 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00, + 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00, + 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, + 0x7C, 0x18, 0x24, 0x24, 0x18, 0x00, + 0x18, 0x24, 0x24, 0x18, 0x7C, 0x00, + 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00, + 0x48, 0x54, 0x54, 0x54, 0x24, 0x00, + 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00, + 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00, + 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00, + 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00, + 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, + 0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00, + 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, + 0x00, 0x08, 0x36, 0x41, 0x00, 0x00, + 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, + 0x00, 0x41, 0x36, 0x08, 0x00, 0x00, + 0x02, 0x01, 0x02, 0x04, 0x02, 0x00, + 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00, + 0x00, 0x00, 0x00, 0xE0, 0xFE, 0xFF, + 0xFE, 0xF8, 0xC0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xE0, 0xFC, 0xFF, 0xFE, + 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x3E, + 0xE0, 0x80, 0x70, 0x0E, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x3C, 0xE0, + 0x80, 0x78, 0x07, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xE0, 0xFE, 0xFF, + 0xFE, 0xF8, 0xC0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xE0, 0xFC, 0xFF, 0xFE, + 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x3E, 0xE0, 0x80, 0x70, 0x0E, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x07, + 0x3C, 0xE0, 0x80, 0x78, 0x07, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, + 0x07, 0x1F, 0xFF, 0xFE, 0xF0, 0xC0, + 0xF8, 0xFF, 0xF7, 0x07, 0x07, 0x7F, + 0xFF, 0xFF, 0xF8, 0x00, 0xC0, 0x38, + 0x0C, 0x18, 0x60, 0x80, 0x00, 0x00, + 0x00, 0xF0, 0x0C, 0x04, 0xF4, 0x1C, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0xC0, 0xFC, 0xE6, 0xC3, 0xC1, + 0xC1, 0xC3, 0xE6, 0xFC, 0xC0, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xF8, 0xFF, 0xF7, 0x07, + 0x07, 0x1F, 0xFF, 0xFE, 0xF0, 0xC0, + 0xF8, 0x3F, 0x8F, 0x0F, 0x3F, 0xFF, + 0xFF, 0xFE, 0x80, 0xF0, 0x0C, 0x04, + 0xF4, 0x1C, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1F, 0x1F, 0x1F, 0x07, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x1F, 0x1F, + 0x0F, 0x01, 0x03, 0x06, 0xF8, 0x00, + 0x07, 0x7F, 0x3F, 0x0E, 0xC1, 0x38, + 0x07, 0x0E, 0x70, 0x83, 0x1C, 0x60, + 0x1E, 0x03, 0xC0, 0x3E, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3F, 0x7F, 0xFF, 0xFF, 0xF9, 0xC0, + 0xC0, 0xF9, 0xFF, 0xFF, 0x7F, 0x3F, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1F, 0x1F, 0x1F, 0x07, 0x06, + 0xF8, 0x00, 0x00, 0x73, 0x3F, 0x0F, + 0xC1, 0x38, 0x07, 0x0F, 0x70, 0x83, + 0x07, 0x7F, 0x1F, 0x03, 0xC0, 0x3E, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; diff --git a/keyboards/mechwild/murphpad/murphpad.c b/keyboards/mechwild/murphpad/murphpad.c new file mode 100644 index 0000000000..a39f1bfc7e --- /dev/null +++ b/keyboards/mechwild/murphpad/murphpad.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Kyle McCreery + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "murphpad.h" diff --git a/keyboards/mechwild/murphpad/murphpad.h b/keyboards/mechwild/murphpad/murphpad.h new file mode 100644 index 0000000000..2735e22057 --- /dev/null +++ b/keyboards/mechwild/murphpad/murphpad.h @@ -0,0 +1,48 @@ +/* Copyright 2021 Kyle McCreery + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define ___ KC_NO + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT( \ + k00, k01, k02, k03, \ + k10, k11, k12, k13, \ + k20, k21, k22, k23, \ + k30, k31, k32, k33, k34, \ + k40, k41, k42, k43, k44, \ + k50, k51, k52, k53, k54, \ + \ + BACK00, BACK01, BACK02 \ +\ +) { \ + { BACK00, k00, k01, k02, k03 }, \ + { BACK01, k10, k11, k12, k13 }, \ + { BACK02, k20, k21, k22, k23 }, \ + { k30, k31, k32, k33, k34 }, \ + { k40, k41, k42, k43, k44 }, \ + { k50, k51, k52, k53, k54 } \ +} diff --git a/keyboards/mechwild/murphpad/readme.md b/keyboards/mechwild/murphpad/readme.md new file mode 100644 index 0000000000..6318aeae11 --- /dev/null +++ b/keyboards/mechwild/murphpad/readme.md @@ -0,0 +1,19 @@ +# MurphPad + +![murphpad](https://i.imgur.com/UmlpQ9ph.jpg) + +A DIY numpad kit with macro row, two additional keys, OLED, RGB Underglow, and encoder. + +* Keyboard Maintainer: [Kyle McCreery](https://github.com/kylemccreery) +* Hardware Supported: MurphPad v2.0 +* Hardware Availability: [MurphPad on MechWild](https://mechwild.com/product/murphpad/) + +Make example for this keyboard (after setting up your build environment): + + make mechwild/murphpad:default + +Flashing example for this keyboard: + + make mechwild/murphpad:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/mechwild/murphpad/rules.mk b/keyboards/mechwild/murphpad/rules.mk new file mode 100644 index 0000000000..93ee10d169 --- /dev/null +++ b/keyboards/mechwild/murphpad/rules.mk @@ -0,0 +1,24 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +ENCODER_ENABLE = yes # Enable encoder +OLED_DRIVER_ENABLE = yes # Enable OLED Screen From 8feb767994ec8576afea22305661b55d0e805a8f Mon Sep 17 00:00:00 2001 From: Danny Date: Sat, 22 May 2021 01:29:15 -0400 Subject: [PATCH 412/613] [Keyboard] Add WTF60 (#12883) --- keyboards/keebio/wtf60/config.h | 67 +++++++++++++++++++ keyboards/keebio/wtf60/info.json | 15 +++++ .../keebio/wtf60/keymaps/60_ansi/keymap.c | 34 ++++++++++ .../keebio/wtf60/keymaps/default/keymap.c | 34 ++++++++++ keyboards/keebio/wtf60/keymaps/via/keymap.c | 48 +++++++++++++ keyboards/keebio/wtf60/keymaps/via/rules.mk | 2 + keyboards/keebio/wtf60/readme.md | 17 +++++ keyboards/keebio/wtf60/rules.mk | 25 +++++++ keyboards/keebio/wtf60/wtf60.c | 1 + keyboards/keebio/wtf60/wtf60.h | 49 ++++++++++++++ 10 files changed, 292 insertions(+) create mode 100644 keyboards/keebio/wtf60/config.h create mode 100644 keyboards/keebio/wtf60/info.json create mode 100644 keyboards/keebio/wtf60/keymaps/60_ansi/keymap.c create mode 100644 keyboards/keebio/wtf60/keymaps/default/keymap.c create mode 100644 keyboards/keebio/wtf60/keymaps/via/keymap.c create mode 100644 keyboards/keebio/wtf60/keymaps/via/rules.mk create mode 100644 keyboards/keebio/wtf60/readme.md create mode 100644 keyboards/keebio/wtf60/rules.mk create mode 100644 keyboards/keebio/wtf60/wtf60.c create mode 100644 keyboards/keebio/wtf60/wtf60.h diff --git a/keyboards/keebio/wtf60/config.h b/keyboards/keebio/wtf60/config.h new file mode 100644 index 0000000000..d801a929e7 --- /dev/null +++ b/keyboards/keebio/wtf60/config.h @@ -0,0 +1,67 @@ +/* Copyright 2021 Danny Nguyen + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xCB10 +#define PRODUCT_ID 0x1337 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Keebio +#define PRODUCT WTF60 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +#define MATRIX_ROW_PINS { F0, F1, F4, F5, F6 } +#define MATRIX_COL_PINS { B4, B5, B6, C7, F7, B1, B2, B3, D2, D3, D5, D4, D6, D7 } +#define AUDIO_PIN C6 + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +#define RGB_DI_PIN E6 +#ifdef RGB_DI_PIN + #define RGBLED_NUM 16 + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 + #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ + #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ + #define RGBLIGHT_ANIMATIONS +#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE diff --git a/keyboards/keebio/wtf60/info.json b/keyboards/keebio/wtf60/info.json new file mode 100644 index 0000000000..cdb30ea7ad --- /dev/null +++ b/keyboards/keebio/wtf60/info.json @@ -0,0 +1,15 @@ +{ + "keyboard_name": "WTF60", + "url": "https://keeb.io", + "maintainer": "Keebio", + "width": 15, + "height": 5, + "layouts": { + "LAYOUT_full_wtf": { + "layout": [{"label":"Bksp", "x":0, "y":0}, {"label":"Del", "x":1, "y":0}, {"label":"+", "x":2, "y":0}, {"label":"_", "x":3, "y":0}, {"label":")", "x":4, "y":0}, {"label":"(", "x":5, "y":0}, {"label":"*", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"^", "x":8, "y":0}, {"label":"%", "x":9, "y":0}, {"label":"$", "x":10, "y":0}, {"label":"#", "x":11, "y":0}, {"label":"@", "x":12, "y":0}, {"label":"!", "x":13, "y":0}, {"label":"Esc", "x":14, "y":0}, {"label":"|", "x":0, "y":1, "w":1.5}, {"label":"}", "x":1.5, "y":1}, {"label":"{", "x":2.5, "y":1}, {"label":"P", "x":3.5, "y":1}, {"label":"O", "x":4.5, "y":1}, {"label":"I", "x":5.5, "y":1}, {"label":"U", "x":6.5, "y":1}, {"label":"Y", "x":7.5, "y":1}, {"label":"T", "x":8.5, "y":1}, {"label":"R", "x":9.5, "y":1}, {"label":"E", "x":10.5, "y":1}, {"label":"W", "x":11.5, "y":1}, {"label":"Q", "x":12.5, "y":1}, {"label":"Tab", "x":13.5, "y":1, "w":1.5}, {"label":"Enter", "x":0, "y":2, "w":1.25}, {"label":"~", "x":1.25, "y":2}, {"label":"\"", "x":2.25, "y":2}, {"label":":", "x":3.25, "y":2}, {"label":"L", "x":4.25, "y":2}, {"label":"K", "x":5.25, "y":2}, {"label":"J", "x":6.25, "y":2}, {"label":"H", "x":7.25, "y":2}, {"label":"G", "x":8.25, "y":2}, {"label":"F", "x":9.25, "y":2}, {"label":"D", "x":10.25, "y":2}, {"label":"S", "x":11.25, "y":2}, {"label":"A", "x":12.25, "y":2}, {"label":"Caps Lock", "x":13.25, "y":2, "w":1.75}, {"label":"Fn", "x":0, "y":3}, {"label":"Shift", "x":1, "y":3, "w":1.75}, {"label":"?", "x":2.75, "y":3}, {"label":">", "x":3.75, "y":3}, {"label":"<", "x":4.75, "y":3}, {"label":"M", "x":5.75, "y":3}, {"label":"N", "x":6.75, "y":3}, {"label":"B", "x":7.75, "y":3}, {"label":"V", "x":8.75, "y":3}, {"label":"C", "x":9.75, "y":3}, {"label":"X", "x":10.75, "y":3}, {"label":"Z", "x":11.75, "y":3}, {"label":"|", "x":12.75, "y":3}, {"label":"Shift", "x":13.75, "y":3, "w":1.25}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Menu", "x":1.25, "y":4, "w":1.25}, {"label":"Win", "x":2.5, "y":4, "w":1.25}, {"label":"Alt", "x":3.75, "y":4, "w":1.25}, {"x":5, "y":4, "w":6.25}, {"label":"Alt", "x":11.25, "y":4, "w":1.25}, {"label":"Win", "x":12.5, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}] + }, + "LAYOUT_60_ansi": { + "layout": [{"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Win", "x":11.25, "y":4, "w":1.25}, {"label":"Menu", "x":12.5, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}] + } + } +} diff --git a/keyboards/keebio/wtf60/keymaps/60_ansi/keymap.c b/keyboards/keebio/wtf60/keymaps/60_ansi/keymap.c new file mode 100644 index 0000000000..372c54f3ca --- /dev/null +++ b/keyboards/keebio/wtf60/keymaps/60_ansi/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2021 Danny Nguyen + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_60_ansi( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL + ), + [1] = LAYOUT_60_ansi( + KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/keebio/wtf60/keymaps/default/keymap.c b/keyboards/keebio/wtf60/keymaps/default/keymap.c new file mode 100644 index 0000000000..ffaad13c78 --- /dev/null +++ b/keyboards/keebio/wtf60/keymaps/default/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2021 Danny Nguyen + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_full_wtf( + KC_BSPC, KC_DEL, KC_EQL, KC_MINS, KC_0, KC_9, KC_8, KC_7, KC_6, KC_5, KC_4, KC_3, KC_2, KC_1, KC_GESC, + KC_BSLS, KC_RBRC, KC_LBRC, KC_P, KC_O, KC_I, KC_U, KC_Y, KC_T, KC_R, KC_E, KC_W, KC_Q, KC_TAB, + KC_ENT, KC_NUHS, KC_QUOT, KC_SCLN, KC_L, KC_K, KC_J, KC_H, KC_G, KC_F, KC_D, KC_S, KC_A, KC_CAPS, + MO(1), KC_RSFT, KC_SLSH, KC_DOT, KC_COMM, KC_M, KC_N, KC_B, KC_V, KC_C, KC_X, KC_Z, KC_NUBS, KC_LSFT, + KC_RCTL, KC_RGUI, MO(1), KC_RALT, KC_SPC, KC_LALT, KC_LGUI, KC_LCTL + ), + [1] = LAYOUT_full_wtf( + KC_DEL, KC_DEL, KC_F12, KC_F11, KC_F10, KC_F9, KC_F8, KC_F7, KC_F6, KC_F5, KC_F4, KC_F3, KC_F2, KC_F1, KC_TILD, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/keebio/wtf60/keymaps/via/keymap.c b/keyboards/keebio/wtf60/keymaps/via/keymap.c new file mode 100644 index 0000000000..0c2b5ed35e --- /dev/null +++ b/keyboards/keebio/wtf60/keymaps/via/keymap.c @@ -0,0 +1,48 @@ +/* Copyright 2021 Danny Nguyen + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_full_wtf( + KC_BSPC, KC_DEL, KC_EQL, KC_MINS, KC_0, KC_9, KC_8, KC_7, KC_6, KC_5, KC_4, KC_3, KC_2, KC_1, KC_GESC, + KC_BSLS, KC_RBRC, KC_LBRC, KC_P, KC_O, KC_I, KC_U, KC_Y, KC_T, KC_R, KC_E, KC_W, KC_Q, KC_TAB, + KC_ENT, KC_NUHS, KC_QUOT, KC_SCLN, KC_L, KC_K, KC_J, KC_H, KC_G, KC_F, KC_D, KC_S, KC_A, KC_CAPS, + MO(1), KC_RSFT, KC_SLSH, KC_DOT, KC_COMM, KC_M, KC_N, KC_B, KC_V, KC_C, KC_X, KC_Z, KC_NUBS, KC_LSFT, + KC_RCTL, KC_RGUI, MO(1), KC_RALT, KC_SPC, KC_LALT, KC_LGUI, KC_LCTL + ), + [1] = LAYOUT_full_wtf( + KC_DEL, KC_DEL, KC_F12, KC_F11, KC_F10, KC_F9, KC_F8, KC_F7, KC_F6, KC_F5, KC_F4, KC_F3, KC_F2, KC_F1, KC_TILD, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT_full_wtf( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT_full_wtf( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/keebio/wtf60/keymaps/via/rules.mk b/keyboards/keebio/wtf60/keymaps/via/rules.mk new file mode 100644 index 0000000000..36b7ba9cbc --- /dev/null +++ b/keyboards/keebio/wtf60/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/keebio/wtf60/readme.md b/keyboards/keebio/wtf60/readme.md new file mode 100644 index 0000000000..6773b4b240 --- /dev/null +++ b/keyboards/keebio/wtf60/readme.md @@ -0,0 +1,17 @@ +# WTF60 + +A mirrored 60% keyboard to mess with your brain. + +* Keyboard Maintainer: [nooges/bakingpy](https://github.com/nooges) +* Hardware Supported: WTF60 PCB w/ATmega32u4 +* Hardware Availability: [Keebio](https://keeb.io) + +Make example for this keyboard (after setting up your build environment): + + make keebio/wtf60:default + +Flashing example for this keyboard: + + make keebio/wtf60:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/keebio/wtf60/rules.mk b/keyboards/keebio/wtf60/rules.mk new file mode 100644 index 0000000000..487df752e2 --- /dev/null +++ b/keyboards/keebio/wtf60/rules.mk @@ -0,0 +1,25 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +LTO_ENABLE = yes + +LAYOUTS = 60_ansi diff --git a/keyboards/keebio/wtf60/wtf60.c b/keyboards/keebio/wtf60/wtf60.c new file mode 100644 index 0000000000..631af10615 --- /dev/null +++ b/keyboards/keebio/wtf60/wtf60.c @@ -0,0 +1 @@ +#include "wtf60.h" diff --git a/keyboards/keebio/wtf60/wtf60.h b/keyboards/keebio/wtf60/wtf60.h new file mode 100644 index 0000000000..3ec01dbab8 --- /dev/null +++ b/keyboards/keebio/wtf60/wtf60.h @@ -0,0 +1,49 @@ +/* Copyright 2021 Danny Nguyen + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +#define LAYOUT_full_wtf( \ + kA1, kA2, kA3, kA4, kA5, kA6, kA7, kA8, kA9, kA10, kA11, kA12, kA13, kA14, kA15, \ + kB1, kB2, kB3, kB4, kB5, kB6, kB7, kB8, kB9, kB10, kB11, kB12, kB13, kB14, \ + kC1, kC2, kC3, kC4, kC5, kC6, kC7, kC8, kC9, kC10, kC11, kC12, kC13, kC14, \ + kD1, kD2, kD3, kD4, kD5, kD6, kD7, kD8, kD9, kD10, kD11, kD12, kD13, kD14, \ + kE1, kE2, kE3, kE4, kE7, kE12, kE13, kE14 \ +) \ +{ \ + { kA1, kA2, kA3, kA4, kA5, kA6, kA7, kA8, kA9, kA10, kA11, kA12, kA13, kA14 }, \ + { kB1, kB2, kB3, kB4, kB5, kB6, kB7, kB8, kB9, kB10, kB11, kB12, kB13, kB14 }, \ + { kC1, kC2, kC3, kC4, kC5, kC6, kC7, kC8, kC9, kC10, kC11, kC12, kC13, kC14 }, \ + { kD1, kD2, kD3, kD4, kD5, kD6, kD7, kD8, kD9, kD10, kD11, kD12, kD13, kD14 }, \ + { kE1, kE2, kE3, kE4, KC_NO, KC_NO, kE7, KC_NO, KC_NO, KC_NO, kA15, kE12, kE13, kE14 } \ +} + +#define LAYOUT_60_ansi( \ + kA15, kA14, kA13, kA12, kA11, kA10, kA9, kA8, kA7, kA6, kA5, kA4, kA3, kA1, \ + kB14, kB13, kB12, kB11, kB10, kB9, kB8, kB7, kB6, kB5, kB4, kB3, kB2, kB1, \ + kC14, kC13, kC12, kC11, kC10, kC9, kC8, kC7, kC6, kC5, kC4, kC3, kC1, \ + kD14, kD12, kD11, kD10, kD9, kD8, kD7, kD6, kD5, kD4, kD3, kD1, \ + kE14, kE13, kE12, kE7, kE4, kE3, kE2, kE1 \ +) \ +{ \ + { kA1, KC_NO, kA3, kA4, kA5, kA6, kA7, kA8, kA9, kA10, kA11, kA12, kA13, kA14 }, \ + { kB1, kB2, kB3, kB4, kB5, kB6, kB7, kB8, kB9, kB10, kB11, kB12, kB13, kB14 }, \ + { kC1, KC_NO, kC3, kC4, kC5, kC6, kC7, kC8, kC9, kC10, kC11, kC12, kC13, kC14 }, \ + { kD1, KC_NO, kD3, kD4, kD5, kD6, kD7, kD8, kD9, kD10, kD11, kD12, KC_NO, kD14 }, \ + { kE1, kE2, kE3, kE4, KC_NO, KC_NO, kE7, KC_NO, KC_NO, KC_NO, kA15, kE12, kE13, kE14 } \ +} From 61528613564daab966693e0e3829ffed20c77f3d Mon Sep 17 00:00:00 2001 From: Danny Date: Sat, 22 May 2021 01:29:43 -0400 Subject: [PATCH 413/613] [Keyboard] Add WTF60 (#12883) From 1a7c1c00365cbf4ccedab3755b1b06e3163fc4c5 Mon Sep 17 00:00:00 2001 From: yiancar Date: Sat, 22 May 2021 06:30:17 +0100 Subject: [PATCH 414/613] [Keyboard] Updated NK87 GPIO (#12865) --- keyboards/nk87/config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/nk87/config.h b/keyboards/nk87/config.h index 4a1098a900..091d80efb8 100755 --- a/keyboards/nk87/config.h +++ b/keyboards/nk87/config.h @@ -31,7 +31,7 @@ along with this program. If not, see . #define MATRIX_COLS 17 #define MATRIX_ROW_PINS { A7, B3, B4, B5, A8, A4 } -#define MATRIX_COL_PINS { A13, A10, A9, A14, A15, B8, B9, C13, C14, C15, A0, A1, A2, A3, A5, B1, B10 } +#define MATRIX_COL_PINS { A13, A10, A9, A14, A15, B8, B9, B2, B0, A6, A0, A1, A2, A3, A5, B1, B10 } // To enable debugger set A13 A14 -> A5 A7 /* COL2ROW, ROW2COL*/ From 1bb7905f7862ed362c3e6b526e15abad6824a11b Mon Sep 17 00:00:00 2001 From: Flexerm <51996324+Flexerm@users.noreply.github.com> Date: Sat, 22 May 2021 06:30:35 +0100 Subject: [PATCH 415/613] [Keyboard] Add Prototypist J01 rev 1 support (#12825) Co-authored-by: Drashna Jaelre Co-authored-by: Ryan --- keyboards/prototypist/j01/config.h | 70 ++++++++++++++ keyboards/prototypist/j01/info.json | 95 +++++++++++++++++++ keyboards/prototypist/j01/j01.c | 17 ++++ keyboards/prototypist/j01/j01.h | 35 +++++++ .../prototypist/j01/keymaps/default/keymap.c | 39 ++++++++ .../prototypist/j01/keymaps/default/readme.md | 1 + .../prototypist/j01/keymaps/via/keymap.c | 56 +++++++++++ .../prototypist/j01/keymaps/via/readme.md | 1 + .../prototypist/j01/keymaps/via/rules.mk | 1 + keyboards/prototypist/j01/readme.md | 13 +++ keyboards/prototypist/j01/rules.mk | 23 +++++ 11 files changed, 351 insertions(+) create mode 100644 keyboards/prototypist/j01/config.h create mode 100644 keyboards/prototypist/j01/info.json create mode 100644 keyboards/prototypist/j01/j01.c create mode 100644 keyboards/prototypist/j01/j01.h create mode 100644 keyboards/prototypist/j01/keymaps/default/keymap.c create mode 100644 keyboards/prototypist/j01/keymaps/default/readme.md create mode 100644 keyboards/prototypist/j01/keymaps/via/keymap.c create mode 100644 keyboards/prototypist/j01/keymaps/via/readme.md create mode 100644 keyboards/prototypist/j01/keymaps/via/rules.mk create mode 100644 keyboards/prototypist/j01/readme.md create mode 100644 keyboards/prototypist/j01/rules.mk diff --git a/keyboards/prototypist/j01/config.h b/keyboards/prototypist/j01/config.h new file mode 100644 index 0000000000..4d15e1349b --- /dev/null +++ b/keyboards/prototypist/j01/config.h @@ -0,0 +1,70 @@ +/* Copyright 2020 Shaun Mitchell (Flex) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x5450 +#define PRODUCT_ID 0x6A31 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Prototypist +#define PRODUCT J-01 Rev1 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 18 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +#define MATRIX_ROW_PINS { B3, B2, B0, F6, F5 } +#define MATRIX_COL_PINS { B1, F0, F7, F1, F4, C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, D1, D0 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +#define BACKLIGHT_PIN B7 +// #define BACKLIGHT_BREATHING +#define BACKLIGHT_LEVELS 5 + + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is userful for the Windows task manager shortcut (ctrl+shift+esc). + */ +// #define GRAVE_ESC_CTRL_OVERRIDE diff --git a/keyboards/prototypist/j01/info.json b/keyboards/prototypist/j01/info.json new file mode 100644 index 0000000000..252bffe69b --- /dev/null +++ b/keyboards/prototypist/j01/info.json @@ -0,0 +1,95 @@ +{ + "keyboard_name": "J-01", + "url": "https://prototypist.net/", + "maintainer": "Flexerm", + "width": 19, + "height": 5.25, + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"K00 (B3,B1)", "x":0, "y":0}, + {"label":"K01 (B3,F0)", "x":1, "y":0}, + {"label":"K02 (B3,F7)", "x":2.5, "y":0}, + {"label":"K03 (B3,F1)", "x":3.5, "y":0}, + {"label":"K04 (B3,F4)", "x":4.5, "y":0}, + {"label":"K05 (B3,C7)", "x":5.5, "y":0}, + {"label":"K06 (B3,C6)", "x":6.5, "y":0}, + {"label":"K07 (B3,B6)", "x":7.5, "y":0}, + {"label":"K08 (B3,B5)", "x":8.5, "y":0}, + {"label":"K09 (B3,B4)", "x":9.5, "y":0}, + {"label":"K0A (B3,D7)", "x":10.5, "y":0}, + {"label":"K0B (B3,D6)", "x":11.5, "y":0}, + {"label":"K0C (B3,D4)", "x":12.5, "y":0}, + {"label":"K0D (B3,D5)", "x":13.5, "y":0}, + {"label":"K0E (B3,D3)", "x":14.5, "y":0}, + {"label":"K0F (B3,D2)", "x":15.5, "y":0}, + {"label":"K0G (B3,D1)", "x":16.5, "y":0}, + {"label":"K0H (B3,D0)", "x":18, "y":0}, + {"label":"K10 (B2,B1)", "x":0, "y":1}, + {"label":"K11 (B2,F0)", "x":1, "y":1}, + {"label":"K12 (B2,F7)", "x":2.5, "y":1, "w":1.5}, + {"label":"K13 (B2,F1)", "x":4, "y":1}, + {"label":"K14 (B2,F4)", "x":5, "y":1}, + {"label":"K15 (B2,C7)", "x":6, "y":1}, + {"label":"K16 (B2,C6)", "x":7, "y":1}, + {"label":"K17 (B2,B6)", "x":8, "y":1}, + {"label":"K18 (B2,B5)", "x":9, "y":1}, + {"label":"K19 (B2,B4)", "x":10, "y":1}, + {"label":"K1A (B2,D7)", "x":11, "y":1}, + {"label":"K1B (B2,D6)", "x":12, "y":1}, + {"label":"K1C (B2,D4)", "x":13, "y":1}, + {"label":"K1D (B2,D5)", "x":14, "y":1}, + {"label":"K1E (B2,D3)", "x":15, "y":1}, + {"label":"K1F (B2,D2)", "x":16, "y":1, "w":1.5}, + {"label":"K1H (B2,D0)", "x":18, "y":1}, + {"label":"K20 (B0,B1)", "x":0, "y":2}, + {"label":"K21 (B0,F0)", "x":1, "y":2}, + {"label":"K22 (B0,F7)", "x":2.5, "y":2, "w":1.75}, + {"label":"K23 (B0,F1)", "x":4.25, "y":2}, + {"label":"K24 (B0,F4)", "x":5.25, "y":2}, + {"label":"K25 (B0,C7)", "x":6.25, "y":2}, + {"label":"K26 (B0,C6)", "x":7.25, "y":2}, + {"label":"K27 (B0,B6)", "x":8.25, "y":2}, + {"label":"K28 (B0,B5)", "x":9.25, "y":2}, + {"label":"K29 (B0,B4)", "x":10.25, "y":2}, + {"label":"K2A (B0,D7)", "x":11.25, "y":2}, + {"label":"K2B (B0,D6)", "x":12.25, "y":2}, + {"label":"K2C (B0,D4)", "x":13.25, "y":2}, + {"label":"K2D (B0,D5)", "x":14.25, "y":2}, + {"label":"K2E (B0,D3)", "x":15.25, "y":2}, + {"label":"K2F (B0,D2)", "x":16.25, "y":2, "w":1.25}, + {"label":"K2H (B0,D0)", "x":18, "y":2}, + {"label":"K30 (F6,B1)", "x":0, "y":3}, + {"label":"K31 (F6,F0)", "x":1, "y":3}, + {"label":"K32 (F6,F7)", "x":2.5, "y":3, "w":1.25}, + {"label":"K33 (F6,F1)", "x":3.75, "y":3}, + {"label":"K34 (F6,F4)", "x":4.75, "y":3}, + {"label":"K35 (F6,C7)", "x":5.75, "y":3}, + {"label":"K36 (F6,C6)", "x":6.75, "y":3}, + {"label":"K37 (F6,B6)", "x":7.75, "y":3}, + {"label":"K38 (F6,B5)", "x":8.75, "y":3}, + {"label":"K39 (F6,B4)", "x":9.75, "y":3}, + {"label":"K3A (F6,D7)", "x":10.75, "y":3}, + {"label":"K3B (F6,D6)", "x":11.75, "y":3}, + {"label":"K3C (F6,D4)", "x":12.75, "y":3}, + {"label":"K3D (F6,D5)", "x":13.75, "y":3}, + {"label":"K3E (F6,D3)", "x":14.75, "y":3, "w":1.75}, + {"label":"K3G (F6,D1)", "x":16.75, "y":3.25}, + {"label":"K3H (F6,D0)", "x":18, "y":3}, + {"label":"K40 (F5,B1)", "x":0, "y":4}, + {"label":"K41 (F5,F0)", "x":1, "y":4}, + {"label":"K42 (F5,F7)", "x":2.5, "y":4, "w":1.5}, + {"label":"K43 (F5,F1)", "x":4, "y":4}, + {"label":"K44 (F5,F4)", "x":5, "y":4, "w":1.5}, + {"label":"K46 (F5,C6)", "x":6.5, "y":4, "w":2.25}, + {"label":"K48 (F5,B5)", "x":8.75, "y":4, "w":2.75}, + {"label":"K4B (F5,D6)", "x":11.5, "y":4, "w":1.5}, + {"label":"K4C (F5,D4)", "x":13, "y":4}, + {"label":"K4D (F5,D5)", "x":14, "y":4, "w":1.5}, + {"label":"K4F (F5,D2)", "x":15.75, "y":4.25}, + {"label":"K4G (F5,D1)", "x":16.75, "y":4.25}, + {"label":"K4H (F5,D0)", "x":17.75, "y":4.25} + ] + } + } +} diff --git a/keyboards/prototypist/j01/j01.c b/keyboards/prototypist/j01/j01.c new file mode 100644 index 0000000000..4ebe2d351c --- /dev/null +++ b/keyboards/prototypist/j01/j01.c @@ -0,0 +1,17 @@ +/* Copyright 2020 Shaun Mitchell (Flex) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "j01.h" diff --git a/keyboards/prototypist/j01/j01.h b/keyboards/prototypist/j01/j01.h new file mode 100644 index 0000000000..1edb9d7812 --- /dev/null +++ b/keyboards/prototypist/j01/j01.h @@ -0,0 +1,35 @@ +/* Copyright 2020 Shaun Mitchell (Flexerm) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define ___ KC_NO + +#define LAYOUT_all( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, K0H, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1H, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2H, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3G, K3H, \ + K40, K41, K42, K43, K44, K46, K48, K4B, K4C, K4D, K4F, K4G, K4H \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, K0H }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, ___, K1H }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, ___, K2H }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, ___, K3G, K3H }, \ + { K40, K41, K42, K43, K44, ___, K46, ___, K48, ___, ___, K4B, K4C, K4D, ___, K4F, K4G, K4H }, \ +} diff --git a/keyboards/prototypist/j01/keymaps/default/keymap.c b/keyboards/prototypist/j01/keymaps/default/keymap.c new file mode 100644 index 0000000000..f0601ffa85 --- /dev/null +++ b/keyboards/prototypist/j01/keymaps/default/keymap.c @@ -0,0 +1,39 @@ +/* Copyright 2020 Shaun Mitchell (Flexerm) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + // Default layer + [0] = LAYOUT_all( + KC_F1, KC_F2, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_PSCR, + KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGUP, + KC_F7, KC_F8, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + + // Fn1 layer + [1] = LAYOUT_all( + BL_TOGG, BL_STEP, KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, + BL_DEC, BL_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + +}; diff --git a/keyboards/prototypist/j01/keymaps/default/readme.md b/keyboards/prototypist/j01/keymaps/default/readme.md new file mode 100644 index 0000000000..ef72054f19 --- /dev/null +++ b/keyboards/prototypist/j01/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for the Proto[Typist] J-01 rev1 keyboard diff --git a/keyboards/prototypist/j01/keymaps/via/keymap.c b/keyboards/prototypist/j01/keymaps/via/keymap.c new file mode 100644 index 0000000000..ed33d87b7d --- /dev/null +++ b/keyboards/prototypist/j01/keymaps/via/keymap.c @@ -0,0 +1,56 @@ +/* Copyright 2020 Shaun Mitchell (Flexerm) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + // Default layer + [0] = LAYOUT_all( + KC_F1, KC_F2, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_PSCR, + KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGUP, + KC_F7, KC_F8, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + + // Fn1 layer + [1] = LAYOUT_all( + BL_TOGG, BL_STEP, KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, + BL_DEC, BL_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + // Fn2 Layer + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + // Fn3 Layer + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; diff --git a/keyboards/prototypist/j01/keymaps/via/readme.md b/keyboards/prototypist/j01/keymaps/via/readme.md new file mode 100644 index 0000000000..9783843b17 --- /dev/null +++ b/keyboards/prototypist/j01/keymaps/via/readme.md @@ -0,0 +1 @@ +# The default VIA keymap for the Proto[Typist] J-01 rev1 keyboard diff --git a/keyboards/prototypist/j01/keymaps/via/rules.mk b/keyboards/prototypist/j01/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/prototypist/j01/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/prototypist/j01/readme.md b/keyboards/prototypist/j01/readme.md new file mode 100644 index 0000000000..c55c444260 --- /dev/null +++ b/keyboards/prototypist/j01/readme.md @@ -0,0 +1,13 @@ +# Prototypist J-01 + +The J-01 is a keyboard supporting and exploded 65% layout with 12 key left hand macro pad, PCB designed by Flex of FLX Keyboards, keyboard designed by Prototypist. + +* Keyboard Maintainer: [Flexerm](https://github.com/Flexerm) +* Hardware Supported: J-01 rev1 PCB +* Hardware Availability: Public Groupbuy was held in October 2020. + +Make example for this keyboard (after setting up your build environment): + + make prototypist/j01:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/prototypist/j01/rules.mk b/keyboards/prototypist/j01/rules.mk new file mode 100644 index 0000000000..3de5d7ea3a --- /dev/null +++ b/keyboards/prototypist/j01/rules.mk @@ -0,0 +1,23 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +LTO_ENABLE = yes From 60da67fbd2c7d1282aa5df9c7b84a66af92972b3 Mon Sep 17 00:00:00 2001 From: David Fryer Date: Sat, 22 May 2021 01:33:25 -0400 Subject: [PATCH 416/613] [Keyboard] Fix typo in summer breeze hardware layout (#12938) --- keyboards/afternoonlabs/summer_breeze/rev1/rev1.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/afternoonlabs/summer_breeze/rev1/rev1.h b/keyboards/afternoonlabs/summer_breeze/rev1/rev1.h index d4704638d9..6ab28066c3 100644 --- a/keyboards/afternoonlabs/summer_breeze/rev1/rev1.h +++ b/keyboards/afternoonlabs/summer_breeze/rev1/rev1.h @@ -30,7 +30,7 @@ { \ { L05, L04, L03, L02, L01, L00, LW02, LW01, LW00 }, \ { L15, L14, L13, L12, L11, L10, LW12, LW11, LW10 }, \ - { L25, L24, L23, L22, L21, L20, KC_NO, LW01, KC_NO }, \ + { L25, L24, L23, L22, L21, L20, KC_NO, LW21, KC_NO }, \ { L35, L34, L33, L32, L31, L30, LW32, LW31, LW30 }, \ { LT3, LT2, LT1, LT0, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ { R00, R01, R02, R03, R04, R05, MC0, MC1, MC2 }, \ From f173963d953be15dc192256a2626f420b760d933 Mon Sep 17 00:00:00 2001 From: shela Date: Sat, 22 May 2021 14:42:26 +0900 Subject: [PATCH 417/613] [Docs] Fix typos in audio config in main config page (#12928) --- docs/config_options.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/config_options.md b/docs/config_options.md index aeaaf47aaf..d0f0b316e0 100644 --- a/docs/config_options.md +++ b/docs/config_options.md @@ -78,10 +78,10 @@ This is a C header file that is one of the first things included, and will persi * enables audio on pin B5 (duophony is enabled if one of B pins is enabled along with one of C pins) * Deprecated. Use `#define AUDIO_PIN B5`, or use `#define AUDIO_PIN_ALT B5` if a `C` pin is enabled with `AUDIO_PIN` * `#define B6_AUDIO` - * enables audio on pin B5 (duophony is enabled if one of B pins is enabled along with one of C pins) + * enables audio on pin B6 (duophony is enabled if one of B pins is enabled along with one of C pins) * Deprecated. Use `#define AUDIO_PIN B6`, or use `#define AUDIO_PIN_ALT B6` if a `C` pin is enabled with `AUDIO_PIN` * `#define B7_AUDIO` - * enables audio on pin B5 (duophony is enabled if one of B pins is enabled along with one of C pins) + * enables audio on pin B7 (duophony is enabled if one of B pins is enabled along with one of C pins) * Deprecated. Use `#define AUDIO_PIN B7`, or use `#define AUDIO_PIN_ALT B7` if a `C` pin is enabled with `AUDIO_PIN` * `#define BACKLIGHT_PIN B7` * pin of the backlight From 3328aefd8ebfd06217447ab8f2de2560193a38c1 Mon Sep 17 00:00:00 2001 From: Love Lagerkvist <30436214+motform@users.noreply.github.com> Date: Sat, 22 May 2021 08:11:58 +0200 Subject: [PATCH 418/613] [Keymap] simplify layout in motform keymap (#12927) --- keyboards/planck/keymaps/motform/config.h | 35 ------- keyboards/planck/keymaps/motform/keymap.c | 110 ++------------------- keyboards/planck/keymaps/motform/readme.md | 5 +- keyboards/planck/keymaps/motform/rules.mk | 1 - 4 files changed, 12 insertions(+), 139 deletions(-) diff --git a/keyboards/planck/keymaps/motform/config.h b/keyboards/planck/keymaps/motform/config.h index 9020d2b9f8..6f70f09bee 100644 --- a/keyboards/planck/keymaps/motform/config.h +++ b/keyboards/planck/keymaps/motform/config.h @@ -1,36 +1 @@ #pragma once - -#ifdef AUDIO_ENABLE - #define STARTUP_SONG SONG(PLANCK_SOUND) - // #define STARTUP_SONG SONG(NO_SOUND) - - #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \ - SONG(COLEMAK_SOUND), \ - SONG(DVORAK_SOUND) \ - } -#endif - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ - -#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 2 - -// Most tactile encoders have detents every 4 stages -#define ENCODER_RESOLUTION 4 - diff --git a/keyboards/planck/keymaps/motform/keymap.c b/keyboards/planck/keymaps/motform/keymap.c index caa9a1899e..6414b5db74 100644 --- a/keyboards/planck/keymaps/motform/keymap.c +++ b/keyboards/planck/keymaps/motform/keymap.c @@ -15,7 +15,6 @@ */ #include QMK_KEYBOARD_H -#include "muse.h" #include "keymap_swedish.h" extern keymap_config_t keymap_config; @@ -64,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+-------------+------+------+------+------+------| * | | ! | " | # | ? | % | LEFT | / | \ | = | + | * | * |------+------+------+------+------+------|------+------+------+------+------+------| -* | | | | [ | { | | UP | } | ] | | | | +* | | | | [ | ] | | UP | { | } | | | | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | | | DEL | | Next | Vol- | Vol+ | Play | * `-----------------------------------------------------------------------------------' @@ -73,7 +72,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ( _______, SE_PIPE_MAC, SE_APOS, SE_AT_MAC_V, SE_AMPR, _______, KC_DOWN, KC_NO, KC_RGHT, SE_GRV, SE_GRV, SE_TILD, _______, KC_EXLM, SE_QUO2, KC_HASH, SE_QUES, KC_PERC, KC_LEFT, SE_SLSH, SE_BSLS_MAC, SE_EQL, KC_PPLS, KC_PAST, - _______, KC_NO, KC_NO, SE_LBRC, SE_LCBR_MAC, KC_NO, KC_UP, SE_RCBR_MAC, SE_RBRC, KC_NO, KC_NO, _______, + _______, KC_NO, KC_NO, SE_LBRC, SE_RBRC, KC_NO, KC_UP, SE_LCBR_MAC, SE_RCBR_MAC, KC_NO, KC_NO, _______, _______, _______, _______, _______, _______, _______, KC_DEL, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY ), @@ -83,16 +82,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+-------------+------+------+------+------+------| * | ^ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | $ | * |------+------+------+------+------+------|------+------+------+------+------+------| -* | | | | < | ( | | | ) | > |Pg Up |Pg Dn | | +* | | | | < | > | | | ( | ) |Pg Up |Pg Dn | | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | | | | Next | Vol- | Vol+ | Play | * `-----------------------------------------------------------------------------------' */ [_RAISE] = LAYOUT_planck_grid ( - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, - SE_CIRC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, SE_DLR_MAC_V, - _______, KC_NO, KC_NO, SE_LESS_MAC, SE_LPRN, KC_NO, KC_NO, SE_RPRN, SE_GRTR_MAC, KC_PGUP, KC_PGDN, KC_NO, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + SE_CIRC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, SE_DLR_MAC_V, + _______, KC_NO, KC_NO, SE_LESS_MAC, SE_GRTR_MAC, KC_NO, KC_NO, SE_LPRN, SE_RPRN, KC_PGUP, KC_PGDN, KC_NO, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY ), @@ -100,9 +99,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,-----------------------------------------------------------------------------------. * | | Reset| Debug| | | | | | | | | | * |------+------+------+------+------+-------------+------+------+------+------+------| - * | | | |Aud on|Audoff|AGnorm|AGswap| | | | | | + * | | | | | | | | | | | | | * |------+------+------+------+------+------|------+------+------+------+------+------| - * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof|TRMon |TRMoff| | | | + * | | | | | | | | | | | | | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | | | | | | | | * `-----------------------------------------------------------------------------------' @@ -110,8 +109,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_ADJUST] = LAYOUT_planck_grid ( _______, RESET, DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, _______, _______, _______, _______, _______, - _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ) @@ -120,92 +119,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { uint32_t layer_state_set_user(uint32_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); } - -bool muse_mode = false; -uint8_t last_muse_note = 0; -uint16_t muse_counter = 0; -uint8_t muse_offset = 70; -uint16_t muse_tempo = 50; - -void encoder_update(bool clockwise) { - if (muse_mode) { - if (IS_LAYER_ON(_RAISE)) { - if (clockwise) { - muse_offset++; - } else { - muse_offset--; - } - } else { - if (clockwise) { - muse_tempo+=1; - } else { - muse_tempo-=1; - } - } - } else { - if (clockwise) { - #ifdef MOUSEKEY_ENABLE - register_code(KC_MS_WH_DOWN); - unregister_code(KC_MS_WH_DOWN); - #else - register_code(KC_PGDN); - unregister_code(KC_PGDN); - #endif - } else { - #ifdef MOUSEKEY_ENABLE - register_code(KC_MS_WH_UP); - unregister_code(KC_MS_WH_UP); - #else - register_code(KC_PGUP); - unregister_code(KC_PGUP); - #endif - } - } -} - -void dip_update(uint8_t index, bool active) { - switch (index) { - case 0: - if (active) { - layer_on(_ADJUST); - } else { - layer_off(_ADJUST); - } - break; - case 1: - if (active) { - muse_mode = true; - } else { - muse_mode = false; - #ifdef AUDIO_ENABLE - stop_all_notes(); - #endif - } - } -} - -void matrix_scan_user(void) { - #ifdef AUDIO_ENABLE - if (muse_mode) { - if (muse_counter == 0) { - uint8_t muse_note = muse_offset + SCALE[muse_clock_pulse()]; - if (muse_note != last_muse_note) { - stop_note(compute_freq_for_midi_note(last_muse_note)); - play_note(compute_freq_for_midi_note(muse_note), 0xF); - last_muse_note = muse_note; - } - } - muse_counter = (muse_counter + 1) % muse_tempo; - } - #endif -} - -bool music_mask_user(uint16_t keycode) { - switch (keycode) { - case RAISE: - case LOWER: - return false; - default: - return true; - } -} diff --git a/keyboards/planck/keymaps/motform/readme.md b/keyboards/planck/keymaps/motform/readme.md index 47091c0aa8..d9bda61219 100644 --- a/keyboards/planck/keymaps/motform/readme.md +++ b/keyboards/planck/keymaps/motform/readme.md @@ -2,10 +2,9 @@ This layout is based off the [colemak-se](github.com/motform/colemak-se) layout and features many tweaks to make working with Emacs and -evil-mode more ergonomi. As with the colemak layout itself, the idea +evil-mode more ergonomic. As with the colemak layout itself, the idea is to concentrate as much movement as possible to the home row. To properly use the layout in Emacs, set Super to LGUI and Meta to RGUI. Unless you are running a permutation of the MacOS Swedish QWERTY-layout, -modifiers will probably not work. For future develoment, I’m planning -to add support for MS Windows SE-QWERTY in the form of a secondary layer. +modifiers will probably not work. diff --git a/keyboards/planck/keymaps/motform/rules.mk b/keyboards/planck/keymaps/motform/rules.mk index dcf16bef39..e69de29bb2 100644 --- a/keyboards/planck/keymaps/motform/rules.mk +++ b/keyboards/planck/keymaps/motform/rules.mk @@ -1 +0,0 @@ -SRC += muse.c From e17a6c4f8df85ec1e698fcb66fd054778f1e0136 Mon Sep 17 00:00:00 2001 From: Jay Greco Date: Fri, 21 May 2021 23:12:45 -0700 Subject: [PATCH 419/613] [Keymap] Fix wrong BASE layer for default and OLED keymaps (#12932) --- keyboards/nullbitsco/scramble/keymaps/default/keymap.c | 2 +- keyboards/nullbitsco/scramble/keymaps/oled/keymap.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/nullbitsco/scramble/keymaps/default/keymap.c b/keyboards/nullbitsco/scramble/keymaps/default/keymap.c index 81bd732db7..2ccffe3d86 100644 --- a/keyboards/nullbitsco/scramble/keymaps/default/keymap.c +++ b/keyboards/nullbitsco/scramble/keymaps/default/keymap.c @@ -17,7 +17,7 @@ along with this program. If not, see . #include QMK_KEYBOARD_H -#define _BASE 1 +#define _BASE 0 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { diff --git a/keyboards/nullbitsco/scramble/keymaps/oled/keymap.c b/keyboards/nullbitsco/scramble/keymaps/oled/keymap.c index eac0a470f3..7168ad9ec6 100644 --- a/keyboards/nullbitsco/scramble/keymaps/oled/keymap.c +++ b/keyboards/nullbitsco/scramble/keymaps/oled/keymap.c @@ -17,7 +17,7 @@ along with this program. If not, see . #include QMK_KEYBOARD_H -#define _BASE 1 +#define _BASE 0 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { From d5a94b58d2792d359e404c913f68fa4cba9af183 Mon Sep 17 00:00:00 2001 From: James Young <18669334+noroadsleft@users.noreply.github.com> Date: Fri, 21 May 2021 23:53:24 -0700 Subject: [PATCH 420/613] Caffeinated Serpent65: Configurator layout data fix (#12972) --- keyboards/caffeinated/serpent65/info.json | 94 ++++++++++++++++++++--- 1 file changed, 84 insertions(+), 10 deletions(-) diff --git a/keyboards/caffeinated/serpent65/info.json b/keyboards/caffeinated/serpent65/info.json index 83acc6b680..ebcf9345e5 100644 --- a/keyboards/caffeinated/serpent65/info.json +++ b/keyboards/caffeinated/serpent65/info.json @@ -1,13 +1,87 @@ { - "keyboard_name": "Serpent65", - "keyboard_folder": "caffeinated/serpent65", - "url": "https", - "maintainer": "jrfhoutx", - "width": 18.25, - "height": 5, - "layouts": { - "LAYOUT_all": { - "layout": [{"label":"F1", "x":0, "y":0}, {"label":"MO(1)", "x":1, "y":0}, {"label":"~", "x":2.25, "y":0}, {"label":"!", "x":3.25, "y":0}, {"label":"@", "x":4.25, "y":0}, {"label":"#", "x":5.25, "y":0}, {"label":"$", "x":6.25, "y":0}, {"label":"%", "x":7.25, "y":0}, {"label":"^", "x":8.25, "y":0}, {"label":"&", "x":9.25, "y":0}, {"label":"*", "x":10.25, "y":0}, {"label":"(", "x":11.25, "y":0}, {"label":")", "x":12.25, "y":0}, {"label":"_", "x":13.25, "y":0}, {"label":"+", "x":14.25, "y":0}, {"x":15.25, "y":0}, {"label":"Back", "x":16.25, "y":0}, {"label":"Insert", "x":17.25, "y":0}, {"label":"F3", "x":0, "y":1}, {"label":"F4", "x":1, "y":1}, {"label":"Tab", "x":2.25, "y":1, "w":1.5}, {"label":"Q", "x":3.75, "y":1}, {"label":"W", "x":4.75, "y":1}, {"label":"E", "x":5.75, "y":1}, {"label":"R", "x":6.75, "y":1}, {"label":"T", "x":7.75, "y":1}, {"label":"Y", "x":8.75, "y":1}, {"label":"U", "x":9.75, "y":1}, {"label":"I", "x":10.75, "y":1}, {"label":"O", "x":11.75, "y":1}, {"label":"P", "x":12.75, "y":1}, {"label":"{", "x":13.75, "y":1}, {"label":"}", "x":14.75, "y":1}, {"label":"|", "x":15.75, "y":1, "w":1.5}, {"label":"Delete", "x":17.25, "y":1}, {"label":"F5", "x":0, "y":2}, {"label":"F6", "x":1, "y":2}, {"label":"Caps Lock", "x":2.25, "y":2, "w":1.75}, {"label":"A", "x":4, "y":2}, {"label":"S", "x":5, "y":2}, {"label":"D", "x":6, "y":2}, {"label":"F", "x":7, "y":2}, {"label":"G", "x":8, "y":2}, {"label":"H", "x":9, "y":2}, {"label":"J", "x":10, "y":2}, {"label":"K", "x":11, "y":2}, {"label":"L", "x":12, "y":2}, {"label":":", "x":13, "y":2}, {"label":"\"", "x":14, "y":2}, {"x":15, "y":2}, {"label":"Enter", "x":16, "y":2, "w":1.25}, {"label":"PgUp", "x":17.25, "y":2}, {"label":"F7", "x":0, "y":3}, {"label":"F8", "x":1, "y":3}, {"label":"Shift", "x":2.25, "y":3, "w":1.25}, {"x":3.5, "y":3}, {"label":"Z", "x":4.5, "y":3}, {"label":"X", "x":5.5, "y":3}, {"label":"C", "x":6.5, "y":3}, {"label":"V", "x":7.5, "y":3}, {"label":"B", "x":8.5, "y":3}, {"label":"N", "x":9.5, "y":3}, {"label":"M", "x":10.5, "y":3}, {"label":"<", "x":11.5, "y":3}, {"label":">", "x":12.5, "y":3}, {"label":"?", "x":13.5, "y":3}, {"label":"Shift", "x":14.5, "y":3, "w":1.75}, {"label":"\u2191", "x":16.25, "y":3}, {"label":"PgDn", "x":17.25, "y":3}, {"label":"F9", "x":0, "y":4}, {"label":"F10", "x":1, "y":4}, {"label":"Ctrl", "x":2.25, "y":4, "w":1.25}, {"label":"Win", "x":3.5, "y":4, "w":1.25}, {"label":"Alt", "x":4.75, "y":4, "w":1.25}, {"x":6, "y":4, "w":6.25}, {"label":"Alt", "x":12.25, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.25}, {"label":"\u2190", "x":15.25, "y":4}, {"label":"\u2193", "x":16.25, "y":4}, {"label":"\u2192", "x":17.25, "y":4}] + "keyboard_name": "Serpent65", + "keyboard_folder": "caffeinated/serpent65", + "url": "https", + "maintainer": "jrfhoutx", + "width": 16.25, + "height": 5.25, + "layouts": { + "LAYOUT_all": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15.25, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.5, "y":1, "w":1.5}, + {"x":15.25, "y":1}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2}, + {"x":13.75, "y":2, "w":1.25}, + {"x":15.25, "y":2}, + + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14.25, "y":3.25}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.5}, + {"x":11.5, "y":4, "w":1.5}, + {"x":13.25, "y":4.25}, + {"x":14.25, "y":4.25}, + {"x":15.25, "y":4.25} + ] + } } } -} From 5eb48994ad5d6b6f343ced620aa3be9d6f7eb98e Mon Sep 17 00:00:00 2001 From: James Young <18669334+noroadsleft@users.noreply.github.com> Date: Sat, 22 May 2021 10:18:58 -0700 Subject: [PATCH 421/613] westfoxtrot Cyclops: Configurator key sequence fix (#12979) --- keyboards/westfoxtrot/cyclops/info.json | 94 ++++++++++++++++++++++--- 1 file changed, 83 insertions(+), 11 deletions(-) diff --git a/keyboards/westfoxtrot/cyclops/info.json b/keyboards/westfoxtrot/cyclops/info.json index a215a8a3de..1eb77b740e 100644 --- a/keyboards/westfoxtrot/cyclops/info.json +++ b/keyboards/westfoxtrot/cyclops/info.json @@ -1,12 +1,84 @@ { - "keyboard_name": "cyclops", - "url": "", - "maintainer": "qmk", - "width": 16.5, - "height": 5, - "layouts": { - "LAYOUT": { - "layout": [{"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"Page Up", "x":15.5, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, {"label":"Page Down", "x":15.5, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"~", "x":12.75, "y":2}, {"label":"Shift", "x":0, "y":3, "w":1.5}, {"label":"|", "x":1.5, "y":3}, {"label":"Z", "x":2.5, "y":3}, {"label":"X", "x":3.5, "y":3}, {"label":"C", "x":4.5, "y":3}, {"label":"V", "x":5.5, "y":3}, {"label":"B", "x":6.5, "y":3}, {"label":"N", "x":7.5, "y":3}, {"label":"M", "x":8.5, "y":3}, {"label":"<", "x":9.5, "y":3}, {"label":">", "x":10.5, "y":3}, {"label":"?", "x":11.5, "y":3}, {"x":12.5, "y":3}, {"label":"Shift", "x":13.5, "y":3}, {"label":"\u2191", "x":14.5, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Win", "x":1.5, "y":4, "w":1.25}, {"label":"Alt", "x":2.75, "y":4, "w":1.5}, {"x":4.25, "y":4, "w":6.5}, {"label":"Alt", "x":10.75, "y":4, "w":1.5}, {"label":"Ctrl", "x":12.25, "y":4, "w":1.25}, {"label":"\u2190", "x":13.5, "y":4}, {"label":"\u2193", "x":14.5, "y":4}, {"label":"\u2192", "x":15.5, "y":4}] - } - } -} \ No newline at end of file + "keyboard_name": "cyclops", + "url": "", + "maintainer": "qmk", + "width": 16.5, + "height": 5, + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"~", "x":0, "y":0}, + {"label":"!", "x":1, "y":0}, + {"label":"@", "x":2, "y":0}, + {"label":"#", "x":3, "y":0}, + {"label":"$", "x":4, "y":0}, + {"label":"%", "x":5, "y":0}, + {"label":"^", "x":6, "y":0}, + {"label":"&", "x":7, "y":0}, + {"label":"*", "x":8, "y":0}, + {"label":"(", "x":9, "y":0}, + {"label":")", "x":10, "y":0}, + {"label":"_", "x":11, "y":0}, + {"label":"+", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + {"label":"Page Up", "x":15.5, "y":0}, + + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"{", "x":11.5, "y":1}, + {"label":"}", "x":12.5, "y":1}, + {"label":"Page Down", "x":15.5, "y":1}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":":", "x":10.75, "y":2}, + {"label":"\"", "x":11.75, "y":2}, + {"label":"~", "x":12.75, "y":2}, + {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, + + {"label":"Shift", "x":0, "y":3, "w":1.5}, + {"label":"|", "x":1.5, "y":3}, + {"label":"Z", "x":2.5, "y":3}, + {"label":"X", "x":3.5, "y":3}, + {"label":"C", "x":4.5, "y":3}, + {"label":"V", "x":5.5, "y":3}, + {"label":"B", "x":6.5, "y":3}, + {"label":"N", "x":7.5, "y":3}, + {"label":"M", "x":8.5, "y":3}, + {"label":"<", "x":9.5, "y":3}, + {"label":">", "x":10.5, "y":3}, + {"label":"?", "x":11.5, "y":3}, + {"x":12.5, "y":3}, + {"label":"Shift", "x":13.5, "y":3}, + {"label":"\u2191", "x":14.5, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.5}, + {"label":"Win", "x":1.5, "y":4, "w":1.25}, + {"label":"Alt", "x":2.75, "y":4, "w":1.5}, + {"x":4.25, "y":4, "w":6.5}, + {"label":"Alt", "x":10.75, "y":4, "w":1.5}, + {"label":"Ctrl", "x":12.25, "y":4, "w":1.25}, + {"label":"\u2190", "x":13.5, "y":4}, + {"label":"\u2193", "x":14.5, "y":4}, + {"label":"\u2192", "x":15.5, "y":4} + ] + } + } +} From bbe453599f0ffde73e2386354f30d8b38e3b4b13 Mon Sep 17 00:00:00 2001 From: Xelus22 <17491233+Xelus22@users.noreply.github.com> Date: Sat, 22 May 2021 19:02:57 +0000 Subject: [PATCH 422/613] [Keyboard] AkiS (#12910) Co-authored-by: Drashna Jaelre --- keyboards/xelus/akis/akis.c | 25 ++++++ keyboards/xelus/akis/akis.h | 35 ++++++++ keyboards/xelus/akis/config.h | 52 ++++++++++++ keyboards/xelus/akis/info.json | 83 +++++++++++++++++++ keyboards/xelus/akis/keymaps/default/keymap.c | 36 ++++++++ keyboards/xelus/akis/keymaps/via/keymap.c | 52 ++++++++++++ keyboards/xelus/akis/keymaps/via/rules.mk | 1 + keyboards/xelus/akis/readme.md | 13 +++ keyboards/xelus/akis/rules.mk | 24 ++++++ 9 files changed, 321 insertions(+) create mode 100644 keyboards/xelus/akis/akis.c create mode 100644 keyboards/xelus/akis/akis.h create mode 100644 keyboards/xelus/akis/config.h create mode 100644 keyboards/xelus/akis/info.json create mode 100644 keyboards/xelus/akis/keymaps/default/keymap.c create mode 100644 keyboards/xelus/akis/keymaps/via/keymap.c create mode 100644 keyboards/xelus/akis/keymaps/via/rules.mk create mode 100644 keyboards/xelus/akis/readme.md create mode 100644 keyboards/xelus/akis/rules.mk diff --git a/keyboards/xelus/akis/akis.c b/keyboards/xelus/akis/akis.c new file mode 100644 index 0000000000..56037a8cc2 --- /dev/null +++ b/keyboards/xelus/akis/akis.c @@ -0,0 +1,25 @@ +/* Copyright 2021 Harrison Chan (Xelus) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "akis.h" + +void eeconfig_init_kb(void) { // EEPROM is getting reset! + rgblight_enable(); // Enable RGB by default + rgblight_mode(RGBLIGHT_MODE_RGB_TEST); // set to RGBLIGHT_MODE_RGB_TEST by default + + eeconfig_update_kb(0); + eeconfig_init_user(); +} diff --git a/keyboards/xelus/akis/akis.h b/keyboards/xelus/akis/akis.h new file mode 100644 index 0000000000..bab13b1f63 --- /dev/null +++ b/keyboards/xelus/akis/akis.h @@ -0,0 +1,35 @@ +/* Copyright 2021 Harrison Chan (Xelus) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + +#define LAYOUT_65_all( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, K0E, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E,\ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E,\ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E,\ + K40, K42, K46, K4B, K4C, K4D, K4E \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \ + { K40, XXX, K42, XXX, XXX, XXX, K46, XXX, XXX, XXX, XXX, K4B, K4C, K4D, K4E } \ +} diff --git a/keyboards/xelus/akis/config.h b/keyboards/xelus/akis/config.h new file mode 100644 index 0000000000..2cbdb8bb00 --- /dev/null +++ b/keyboards/xelus/akis/config.h @@ -0,0 +1,52 @@ +/* Copyright 2021 Harrison Chan (Xelus) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +// USB Device descriptor parameter +#define VENDOR_ID 0x5845 // XE +#define PRODUCT_ID 0xA04B // A-K +#define DEVICE_VER 0x0001 +#define MANUFACTURER Xelus +#define PRODUCT AkiS + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { F5, F4, F1, F0, E6 } +#define MATRIX_COL_PINS { B4, D7, D6, D4, D5, D3, D2, D1, D0, F6, F7, C7, C6, B6, B5 } +#define UNUSED_PINS + +/* RGB Lighting */ +#define RGB_DI_PIN B0 +#define RGBLED_NUM 23 +#define RGBLIGHT_ANIMATIONS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE + +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE diff --git a/keyboards/xelus/akis/info.json b/keyboards/xelus/akis/info.json new file mode 100644 index 0000000000..e46d0d1db7 --- /dev/null +++ b/keyboards/xelus/akis/info.json @@ -0,0 +1,83 @@ +{ + "keyboard_name": "akiS", + "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/xelus/akis", + "maintainer": "Xelus22", + "width": 16, + "height": 5, + "layouts": { + "LAYOUT_all": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + {"x": 15, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + {"x": 13.5, "y": 1, "w": 1.5}, + {"x": 15, "y": 1}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2, "w": 2.25}, + {"x": 15, "y": 2}, + + {"x": 0, "y": 3, "w": 2.25}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3}, + {"x": 12.25, "y": 3, "w": 1.75}, + {"x": 14, "y": 3}, + {"x": 15, "y": 3}, + + {"x": 0, "y": 4, "w": 1.5}, + {"x": 2.25, "y": 4, "w": 1.5}, + {"x": 3.75, "y": 4, "w": 7}, + {"x": 10.75, "y": 4, "w": 1.5}, + {"x": 13, "y": 4}, + {"x": 14, "y": 4}, + {"x": 15, "y": 4} + ] + } + } +} diff --git a/keyboards/xelus/akis/keymaps/default/keymap.c b/keyboards/xelus/akis/keymaps/default/keymap.c new file mode 100644 index 0000000000..f582fb8a93 --- /dev/null +++ b/keyboards/xelus/akis/keymaps/default/keymap.c @@ -0,0 +1,36 @@ +/* Copyright 2021 Harrison Chan (Xelus) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +// Default layout for AkiS +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_all( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_65_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_PSCR, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/xelus/akis/keymaps/via/keymap.c b/keyboards/xelus/akis/keymaps/via/keymap.c new file mode 100644 index 0000000000..0b76636bdd --- /dev/null +++ b/keyboards/xelus/akis/keymaps/via/keymap.c @@ -0,0 +1,52 @@ +/* Copyright 2021 Harrison Chan (Xelus) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +// VIA layout for AkiS +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_all( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_65_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_PSCR, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [2] = LAYOUT_65_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [3] = LAYOUT_65_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/xelus/akis/keymaps/via/rules.mk b/keyboards/xelus/akis/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/xelus/akis/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/xelus/akis/readme.md b/keyboards/xelus/akis/readme.md new file mode 100644 index 0000000000..4e840eab9a --- /dev/null +++ b/keyboards/xelus/akis/readme.md @@ -0,0 +1,13 @@ +# AKI-S + +A 65% Keyboard by Thic Thock. + +* Keyboard Maintainer: [Xelus22](https://github.com/Xelus22) +* Hardware Supported: AkiS +* Hardware Availability: Custom keyboard group buys + +Make example for this keyboard (after setting up your build environment): + + make xelus/akis:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/xelus/akis/rules.mk b/keyboards/xelus/akis/rules.mk new file mode 100644 index 0000000000..15a1f59a7c --- /dev/null +++ b/keyboards/xelus/akis/rules.mk @@ -0,0 +1,24 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output + +LTO_ENABLE = yes From bc67ca6a59ffa3d6e147b276c0544791e5f91d02 Mon Sep 17 00:00:00 2001 From: Zach White Date: Mon, 24 May 2021 19:38:27 -0700 Subject: [PATCH 423/613] search for the readme in higher directories as well (#12997) --- lib/python/qmk/cli/generate/api.py | 6 +++--- lib/python/qmk/keyboard.py | 21 +++++++++++++++++---- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/lib/python/qmk/cli/generate/api.py b/lib/python/qmk/cli/generate/api.py index 8ab7522a76..285bd90eb5 100755 --- a/lib/python/qmk/cli/generate/api.py +++ b/lib/python/qmk/cli/generate/api.py @@ -10,7 +10,7 @@ from qmk.datetime import current_datetime from qmk.info import info_json from qmk.json_encoders import InfoJSONEncoder from qmk.json_schema import json_load -from qmk.keyboard import list_keyboards +from qmk.keyboard import find_readme, list_keyboards @cli.argument('-n', '--dry-run', arg_only=True, action='store_true', help="Don't write the data to disk.") @@ -38,7 +38,7 @@ def generate_api(cli): keyboard_dir = v1_dir / 'keyboards' / keyboard_name keyboard_info = keyboard_dir / 'info.json' keyboard_readme = keyboard_dir / 'readme.md' - keyboard_readme_src = Path('keyboards') / keyboard_name / 'readme.md' + keyboard_readme_src = find_readme(keyboard_name) keyboard_dir.mkdir(parents=True, exist_ok=True) keyboard_json = json.dumps({'last_updated': current_datetime(), 'keyboards': {keyboard_name: kb_all[keyboard_name]}}) @@ -46,7 +46,7 @@ def generate_api(cli): keyboard_info.write_text(keyboard_json) cli.log.debug('Wrote file %s', keyboard_info) - if keyboard_readme_src.exists(): + if keyboard_readme_src: copyfile(keyboard_readme_src, keyboard_readme) cli.log.debug('Copied %s -> %s', keyboard_readme_src, keyboard_readme) diff --git a/lib/python/qmk/keyboard.py b/lib/python/qmk/keyboard.py index e457685567..06c9df874f 100644 --- a/lib/python/qmk/keyboard.py +++ b/lib/python/qmk/keyboard.py @@ -6,10 +6,10 @@ from pathlib import Path import os from glob import glob +import qmk.path from qmk.c_parse import parse_config_h_file from qmk.json_schema import json_load from qmk.makefile import parse_rules_mk_file -from qmk.path import is_keyboard, under_qmk_firmware BOX_DRAWING_CHARACTERS = { "unicode": { @@ -36,7 +36,7 @@ base_path = os.path.join(os.getcwd(), "keyboards") + os.path.sep def find_keyboard_from_dir(): """Returns a keyboard name based on the user's current directory. """ - relative_cwd = under_qmk_firmware() + relative_cwd = qmk.path.under_qmk_firmware() if relative_cwd and len(relative_cwd.parts) > 1 and relative_cwd.parts[0] == 'keyboards': # Attempt to extract the keyboard name from the current directory @@ -47,10 +47,23 @@ def find_keyboard_from_dir(): keymap_index = len(current_path.parts) - current_path.parts.index('keymaps') - 1 current_path = current_path.parents[keymap_index] - if is_keyboard(current_path): + if qmk.path.is_keyboard(current_path): return str(current_path) +def find_readme(keyboard): + """Returns the readme for this keyboard. + """ + cur_dir = qmk.path.keyboard(keyboard) + keyboards_dir = Path('keyboards') + while not (cur_dir / 'readme.md').exists(): + if cur_dir == keyboards_dir: + return None + cur_dir = cur_dir.parent + + return cur_dir / 'readme.md' + + def keyboard_folder(keyboard): """Returns the actual keyboard folder. @@ -67,7 +80,7 @@ def keyboard_folder(keyboard): rules_mk = parse_rules_mk_file(rules_mk_file) keyboard = rules_mk.get('DEFAULT_FOLDER', keyboard) - if not is_keyboard(keyboard): + if not qmk.path.is_keyboard(keyboard): raise ValueError(f'Invalid keyboard: {keyboard}') return keyboard From aa97f52963f3da6aa112093d357296e62bfa5452 Mon Sep 17 00:00:00 2001 From: Zach White Date: Mon, 24 May 2021 23:36:38 -0700 Subject: [PATCH 424/613] Use milc.subcommand.config instead of qmk.cli.config (#13002) * Use milc.subcommand.config instead * pyformat * remove the config test --- lib/python/qmk/cli/__init__.py | 2 +- lib/python/qmk/cli/config.py | 116 ---------------------- lib/python/qmk/tests/test_cli_commands.py | 6 -- 3 files changed, 1 insertion(+), 123 deletions(-) delete mode 100644 lib/python/qmk/cli/config.py diff --git a/lib/python/qmk/cli/__init__.py b/lib/python/qmk/cli/__init__.py index 6fe769fe7b..be5ba90ad7 100644 --- a/lib/python/qmk/cli/__init__.py +++ b/lib/python/qmk/cli/__init__.py @@ -140,7 +140,7 @@ from . import cformat # noqa from . import chibios # noqa from . import clean # noqa from . import compile # noqa -from . import config # noqa +from milc.subcommand import config # noqa from . import docs # noqa from . import doctor # noqa from . import fileformat # noqa diff --git a/lib/python/qmk/cli/config.py b/lib/python/qmk/cli/config.py deleted file mode 100644 index e17d8bb9ba..0000000000 --- a/lib/python/qmk/cli/config.py +++ /dev/null @@ -1,116 +0,0 @@ -"""Read and write configuration settings -""" -from milc import cli - - -def print_config(section, key): - """Print a single config setting to stdout. - """ - cli.echo('%s.%s{fg_cyan}={fg_reset}%s', section, key, cli.config[section][key]) - - -def show_config(): - """Print the current configuration to stdout. - """ - for section in cli.config: - for key in cli.config[section]: - print_config(section, key) - - -def parse_config_token(config_token): - """Split a user-supplied configuration-token into its components. - """ - section = option = value = None - - if '=' in config_token and '.' not in config_token: - cli.log.error('Invalid configuration token, the key must be of the form
.