Compare commits

..

24 Commits

Author SHA1 Message Date
TuDatTr c7f3150066 Merge with master
Signed-off-by: TuDatTr <tuan-dat.tran@tudattr.dev>
2022-10-05 16:59:09 +02:00
Nick Brassel c1d21de1a2
Fixup builds for mechlovin/infinity87. (#18604) 2022-10-05 21:35:56 +11:00
Klesh Wong 164d2f36d1
fix: ps2_interrupt.c failed to compile (#18597) 2022-10-05 20:59:28 +11:00
Nick Brassel df7f33582f
Add C++ prerequisite for Fedora. (#18602) 2022-10-05 20:52:10 +11:00
TuDatTr fcd65a4241 [keymaps] Edited lily layout to fit lulu layout (todo: fix oled)
Signed-off-by: TuDatTr <tuan-dat.tran@tudattr.dev>
2022-10-05 09:36:51 +02:00
Jesper Severinsen 0e81954289
[Keyboard] Add Nyhxis NFR-70 keyboard (#17562)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-10-04 19:34:48 -07:00
Kim Minjong b100db1e56
[Docs] Add a note about the print function. (#17737)
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-10-04 19:16:11 -07:00
nodatk 3f63bbc7d8
[Keyboard] Twig50 (#18085)
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-10-04 18:40:18 -07:00
Conor Burns fe7ac87f18
[Docs] Clarify how to use the bootloader LED for rp2040 (#18585) 2022-10-04 18:37:28 -07:00
dependabot[bot] 8b824a8029
Bump anothrNick/github-tag-action from 1.51.0 to 1.52.0 (#18590)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-10-05 09:08:59 +11:00
TuDatTr f29a2b5112 [keymap] fixed comment 2022-08-18 16:07:03 +02:00
TuDatTr c138c30733 [keymap] fixed comment 2022-08-18 16:02:48 +02:00
TuDatTr 40e43f02c6 [keymaps] Edited lily layout to fit physical keycaps (todo: fix oled)
Signed-off-by: TuDatTr <tuan-dat.tran@tudattr.dev>
2022-08-18 15:59:02 +02:00
TuDatTr a151631357 Merge
Signed-off-by: TuDatTr <tuan-dat.tran@tudattr.dev>
2022-08-18 15:28:06 +02:00
TuDatTr 1d87ab2409 Merge 2022-01-24 05:21:19 +01:00
TuDatTr f032bcbe73 merge? 2022-01-24 05:12:50 +01:00
TuDatTr c6a790d04b Merge branch 'master' of https://github.com/qmk/qmk_firmware 2021-11-22 23:10:30 +01:00
TuDatTr 676fe78d4c workaround for broken pcb on lily58 2021-11-22 23:07:41 +01:00
TuDatTr cde715734f Merge with upstream 2021-07-08 15:05:26 +02:00
TuDatTr d92f8499fd [keymap] changed lily58 and dz60 keymap 2021-07-02 01:18:50 +02:00
TuDatTr e639d9ca70 Added Username to bongocat logo 2021-06-04 02:22:35 +02:00
TuDatTr 00b935a9f7 [keymap] changed lily58 keymap 2021-05-26 00:30:09 +02:00
TuDatTr 4b0ff7aead [keymap] changed lily58 oled timeout and keymap 2021-05-25 14:22:18 +02:00
TuDatTr c860dd5972 Added my keyboard layouts for dz60 and lily58 2021-05-24 20:04:04 +02:00
45 changed files with 1227 additions and 18 deletions

View File

@ -27,7 +27,7 @@ jobs:
fetch-depth: 0 fetch-depth: 0
- name: Bump version and push tag - name: Bump version and push tag
uses: anothrNick/github-tag-action@1.51.0 uses: anothrNick/github-tag-action@1.52.0
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
DEFAULT_BUMP: 'patch' DEFAULT_BUMP: 'patch'

View File

@ -133,3 +133,4 @@ Check:
- Set `debug_enable=true`. See [Debugging](#debugging) - Set `debug_enable=true`. See [Debugging](#debugging)
- Try using `print` function instead of debug print. See **common/print.h**. - Try using `print` function instead of debug print. See **common/print.h**.
- Disconnect other devices with console function. See [Issue #97](https://github.com/tmk/tmk_keyboard/issues/97). - Disconnect other devices with console function. See [Issue #97](https://github.com/tmk/tmk_keyboard/issues/97).
- Ensure all strings end with a newline character (`\n`). QMK Toolbox prints console output on a per-line basis.

View File

@ -58,7 +58,7 @@ The double-tap reset mechanism is an alternate way in QMK to enter the embedded
```c ```c
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET // Activates the double-tap behavior #define RP2040_BOOTLOADER_DOUBLE_TAP_RESET // Activates the double-tap behavior
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U // Timeout window in ms in which the double tap can occur. #define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U // Timeout window in ms in which the double tap can occur.
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U // Specify a optional status led which blinks when entering the bootloader #define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP17 // Specify a optional status led by GPIO number which blinks when entering the bootloader
``` ```
## Pre-defined RP2040 boards ## Pre-defined RP2040 boards

View File

@ -76,17 +76,18 @@ void palCallback(void *arg) {
} }
# define PS2_INT_INIT() \ # define PS2_INT_INIT() \
{ palSetLineMode(PS2_CLOCK_PIN, PAL_MODE_INPUT); } \ do { \
while (0) palSetLineMode(PS2_CLOCK_PIN, PAL_MODE_INPUT); \
} while (0)
# define PS2_INT_ON() \ # define PS2_INT_ON() \
{ \ do { \
palEnableLineEvent(PS2_CLOCK_PIN, PAL_EVENT_MODE_FALLING_EDGE); \ palEnableLineEvent(PS2_CLOCK_PIN, PAL_EVENT_MODE_FALLING_EDGE); \
palSetLineCallback(PS2_CLOCK_PIN, palCallback, NULL); \ palSetLineCallback(PS2_CLOCK_PIN, palCallback, NULL); \
} \ } while (0)
while (0)
# define PS2_INT_OFF() \ # define PS2_INT_OFF() \
{ palDisableLineEvent(PS2_CLOCK_PIN); } \ do { \
while (0) palDisableLineEvent(PS2_CLOCK_PIN); \
} while (0)
#endif // PROTOCOL_CHIBIOS #endif // PROTOCOL_CHIBIOS
void ps2_host_init(void) { void ps2_host_init(void) {

View File

@ -0,0 +1,3 @@
#define UNICODE_CYCLE_PERSIST false
#define UNICODE_SELECTED_MODES UC_WINC, UC_LNX

View File

@ -0,0 +1,188 @@
/* Copyright 2021 @tudattr
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
// Layers
#define _DEFAULT 0
#define _MACRO 1
#define _FUNCTION 2
#define _LIGHTS 3
enum custom_keycodes {
SHRG = SAFE_RANGE,
UWU,
LYING,
TBL,
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Base layer
*
* ,---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.
* | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ~ |
* |---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
* | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Backspace |
* |---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
* | LCtrl | A | S | D | F | G | H | J | K | L | ; | ' | Enter |
* |---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
* | Shift | Z | X | C | V | B | N | M | < | > | ? | Shift | _LIGHTS |
* `---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------´
* | LGui | LAlt | _FUNCTION/Space | RAlt | PrntScrn | _MACRO |
* `--------------------------------------------------------------------------------------------------------------------------------------------´
*/
[_DEFAULT] = LAYOUT_all (
// 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
KC_LCTRL, 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_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_LIGHTS), KC_NO,
KC_NO, KC_LGUI, KC_LALT, KC_NO, LT(_FUNCTION, KC_SPC), KC_NO, KC_RALT, KC_PSCR, KC_NO, MO(_MACRO), KC_NO),
/* Macro Layer (Default Unicode: Windows (Windows, Linux))
*
* ,---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.
* | Mute | | | | | | | | | | | | | | |
* |---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
* | | | | | | | | | | | | | | |
* |---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
* | | | | | | | Previous | VolDown | VolUp | Next | | | |
* |---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
* | | | (°° | ¯\_()_/¯ | | BrghtDown | BrghtUp | | | | | uwu | _(:3)_ |
* `---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------´
* | | | | PrvUnicode | NxtUnicode | |
* `--------------------------------------------------------------------------------------------------------------------------------------------´
*/
[_MACRO] = LAYOUT_all (
// 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_NO, KC_TRNS, TBL, SHRG, KC_TRNS, KC_BRID, KC_BRIU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, UWU, LYING, KC_NO,
KC_NO, KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, KC_NO, UC_RMOD, UC_MOD, KC_NO, KC_TRNS, KC_NO),
/* Function Layer
*
* ,---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.
* | ESC | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | INS | ` |
* |---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
* | | F13 | F14 | F15 | F16 | F17 | F18 | F19 | F20 | F21 | F22 | F22 | F23 | F24 |
* |---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
* | | | | | | Left | Down | Up | Right | | | | |
* |---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
* | | | | | | | | | | | | | |
* `---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------´
* | | | | | | |
* `--------------------------------------------------------------------------------------------------------------------------------------------´
*/
[_FUNCTION] = LAYOUT_all (
// 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
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_GRV,
KC_TRNS, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, KC_DEL,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO,
KC_NO, KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, KC_NO, KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_NO),
/* Light Layer
*
* ,---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.
* | Toggle | Static | Breathing | Rainbow | KnghtRdr | Christmas | Gradient | Swirl | Snake | | | | | | |
* |---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
* | | HueUp | SatUp | BrghtUp | SpdUp | | | | | | | | | |
* |---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
* | | HueDown | SatDown | BrghtDown | SpdDown | | | | | | | | Bootloader Mode |
* |---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
* | | | | | | | | | | | | | |
* `---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------´
* | | | | | | |
* `--------------------------------------------------------------------------------------------------------------------------------------------´
*/
[_LIGHTS] = LAYOUT_all (
// 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
RGB_TOG, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_K, RGB_M_X, RGB_M_G, RGB_M_SW, RGB_M_SN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET,
KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO,
KC_NO, KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, KC_NO, KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_NO),
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch(keycode) {
case TBL:
if (record->event.pressed) {
send_unicode_string("(╯°□°)╯彡 ┻━┻");
}
break;
case SHRG:
if (record->event.pressed) {
send_unicode_string("¯\\_(ツ)_/¯");
}
break;
case UWU:
if (record->event.pressed) {
SEND_STRING("`MMMMMMMMM0;xKkKKKKKKKKKKKKKKKKKKKk0KKKKKKKKKKKO',N`\n");
SEND_STRING("`MMMMMMMNoo0KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0l;`\n");
SEND_STRING("`MMMMMWd;OKKKKKKKKKKoKKKKKKKKKKKKO0KKKKKKKKKKKKKKKk`\n");
SEND_STRING("`MMMMW:oKKKKKKKKKKKdlKKKKKKKKKKK0okKKKKKKKKKKKKKKKX`\n");
SEND_STRING("`MMMN:kKKKKKKKKKKK0'dKKKKKKKKKKKc,oKKKKKKKKKKKKKKKK`\n");
SEND_STRING("`MMX,kKKKKKK0kKKK0;.kKKKKKKKKKKK'd;0KKKKKKKKKKKKKKK`\n");
SEND_STRING("`MW;oKKKKKKK:dKKk,k,xKKKKOKKKKKl;WdcKKKKxKKKOOKKKKK`\n");
SEND_STRING("`Mx:KKKKKKKc:K0l;KWclKKKdlKKKKd'XWWcoKKKxlKKKlKKKKK`\n");
SEND_STRING("`W,kKKKKKO;l0d',dodc.OKK:dKKKo;KOdoo.l0KKcdKK:0KKKK`\n");
SEND_STRING("`0;KKKKKo;dlcoOKNWWWdcKKccK0coNWWWWNKd'lx0:dKcxKKKK`\n");
SEND_STRING("`doKKxo:.dONWWWWWWWWWklOO,oxXWWWWWWWWWXxd0KoocoKKKK`\n");
SEND_STRING("`lxKO;00 dWWXXWWWWWkNWWOkxcxXWW0dXWWWWWXO0O0O;oKKKK`\n");
SEND_STRING("`lxO':KK:kWN.:WWWW0.xWWWWWWWNWWc.dWWWW0.cWWWWcdKKKK`\n");
SEND_STRING("`ko:'dKKodWN. 'cl, .XWWWWWWWWWWO. :oo;. dWWWW'kKKKK`\n");
SEND_STRING("`N:;,OK0o:KK0o;,,;dKOWWWNNWWWN:xXl,..'c0NNWWO,KKKKK`\n");
SEND_STRING("`Mxd'000o'OOOOO0KXNX.dWO..kWWl ONNXKKK00KKXX;oKKKKK`\n");
SEND_STRING("`MM0'K00,:OOOO00KXNWO.''Ok'.'.xNNXK0000000Kd,0KKKKK`\n");
SEND_STRING("`MMo.0K0,oKKKKXXNNWWWNXWWWWXNWWWNNXKKKKKKK0,kKKKKOo`\n");
SEND_STRING("`MMc'xKK,,XNNWWWWWWWWWWWWWWWWWWWWWNNNNNNNX:dKKKKk.,`\n");
SEND_STRING("`MM:c:Kk.',KWWWWWWWWWWWWWWWWWWWWWWWWWWWWNlxKKKKd'oK`\n");
SEND_STRING("`MMcdlox.:,.c0WWWWWWWWWWWWWWWWWWWWWWWWN0;oKKKk;c0KK`\n");
SEND_STRING("`MMdoKdl.ccc:,,cox0KXNNWWWWWNNXX0kdol:'l0KOo;,xKKKK`\n");
}
break;
case LYING:
if (record->event.pressed) {
send_unicode_string("_(:3」∠)_");
}
break;
default:
if (record->event.pressed) {
}
break;
}
return true;
}
void eeconfig_init_user(void) {
set_unicode_input_mode(UC_WINC);
}

View File

@ -0,0 +1,2 @@
UNICODE_ENABLE = yes
MOUSEKEY_ENABLE = no

View File

@ -0,0 +1,28 @@
// Copyright 2022 Takeshi Noda (nodatk@gmail.com)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include "config_common.h"
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 14
#define MATRIX_ROW_PINS { B7, B6, B5, B4 }
#define MATRIX_COL_PINS { A2, A1, A0, B8 , B13, B14, B15, B9, B10, B11, B3, B2, B1, B0}
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 8
#define TAPPING_TERM 150
#define FORCE_NKRO
#ifdef AUDIO_ENABLE
#define AUDIO_PIN A5
#define AUDIO_PIN_ALT A4
#define AUDIO_PIN_ALT_AS_NEGATIVE
#define STARTUP_SONG SONG(STARTUP_SOUND)
#define AUDIO_INIT_DELAY
#endif

View File

@ -0,0 +1,20 @@
{
"keyboard_name": "twig50",
"manufacturer": "Twig",
"url": "",
"maintainer": "nodatk",
"usb": {
"vid": "0xFEED",
"pid": "0x6060",
"device_version": "0.2.1"
},
"layouts": {
"LAYOUT_diag_4x14": {
"layout": [
{"x":0, "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":0, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":12, "y":1}, {"x":13, "y":1},
{"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":13, "y":2},
{"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}, {"x":13, "y":3}]
}
}
}

View File

@ -0,0 +1,79 @@
// Copyright 2022 Takeshi Noda (nodatk@gmail.com)
// SPDX-License-Identifier: GPL-2.0-or-later
#include "twig50.h"
#define LAL_NCV LALT_T(KC_LANG2)
#define RAL_CNV RALT_T(KC_LANG1)
#define LGU_NCV LGUI_T(KC_LANG2)
#define RGU_ENT RGUI_T(KC_ENT)
#define RGU_IN8 RGUI_T(KC_INT8)
#define RSF_SCL RSFT_T(KC_SCLN)
#define RCT_ESC RCTL_T(KC_ESC)
#define RCT_IN7 RCTL_T(KC_INT7)
#define LT1_SPC LT(1, KC_SPC)
#define LT2_F LT(2, KC_F)
#define LT2_N LT(2, KC_N)
#define LT3_BS LT(3, KC_BSPC)
#define LT3_V LT(3, KC_V)
#define LT3_QOT LT(3, KC_QUOT)
#define TG4 TG(4)
#define SFT_1 RSFT(KC_1)
#define SFT_2 RSFT(KC_2)
#define SFT_3 RSFT(KC_3)
#define SFT_4 RSFT(KC_4)
#define SFT_5 RSFT(KC_5)
#define SFT_6 LSFT(KC_6)
#define SFT_7 LSFT(KC_7)
#define SFT_8 LSFT(KC_8)
#define SFT_9 LSFT(KC_9)
#define SFT_0 LSFT(KC_0)
#define SFT_LBR LSFT(KC_LBRC)
#define OSM_LSF OSM(MOD_LSFT)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Layer 0, Base layer
LAYOUT_diag_4x14(
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_BSPC,
KC_LCTL, KC_A, KC_S, KC_D, LT2_F, KC_G, KC_H, KC_J, KC_K, KC_L, RSF_SCL, LT3_QOT, KC_ENT,
KC_LSFT, TG4, KC_Z, KC_X, KC_C, LT3_V, KC_B, LT2_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
KC_BTN1, KC_BTN2, KC_LALT, LGU_NCV, LT1_SPC, RCT_ESC, RGU_ENT, RAL_CNV, KC_INT1, KC_DEL, MU_TOG
),
// Layer 1, Space-modifiers: Basic keys
LAYOUT_diag_4x14(
RESET, KC_EXEC, KC_HELP, KC_MENU, KC_SLCT, KC_STOP, KC_BTN2, KC_INT1, KC_MINS, KC_EQL, KC_INT3, SFT_LBR, KC_TRNS,
KC_TRNS, KC_AGIN, KC_FIND, KC_PGUP, KC_PGDN, KC_F19, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_ENT, SFT_7, SFT_2,
KC_TRNS, KC_TRNS, KC_UNDO, KC_CUT, KC_COPY, KC_PSTE, KC_APP, KC_BSPC, KC_DEL, KC_RBRC, KC_BSLS, KC_HOME, KC_END,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RCT_IN7, RGU_IN8, KC_TRNS, KC_INT2, KC_INT4, MU_MOD
),
// Layer 2, F,N-modifiers: Number keys and symbols
LAYOUT_diag_4x14(
KC_TRNS, SFT_1, SFT_2, SFT_3, SFT_4, SFT_5, SFT_6, SFT_7, SFT_8, SFT_9, KC_COMM, KC_DOT, KC_QUOT,
KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, SFT_1, SFT_2,
KC_TRNS, KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_MINS, SFT_4, SFT_5, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_4, KC_5, KC_TRNS, KC_TRNS, KC_INT5, KC_INT6, KC_TRNS
),
// Layer 3, V,:-modifiers: Functions and mouse keys
LAYOUT_diag_4x14(
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_MPLY, KC_MRWD, KC_MFFD, KC_MUTE, KC_VOLD, KC_VOLU, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_BTN3, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18,
KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN2, KC_BTN1, KC_WH_D, KC_WH_U, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
// Layer 4, Toggles: One handed mode
LAYOUT_diag_4x14(
KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_LSFT, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_RSFT, KC_TRNS, KC_TRNS,
KC_TRNS, TG4, KC_TRNS, KC_TRNS, KC_PGUP, KC_PGDN, KC_TRNS, KC_PGDN, KC_PGUP, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS,
KC_TRNS, KC_TRNS, KC_LALT, KC_LGUI, KC_LCTL, KC_RCTL, KC_RGUI, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT
)
};

View File

@ -0,0 +1,29 @@
# Twig50
![Twig50](https://user-images.githubusercontent.com/12627081/185365257-03a4904b-8432-445b-9eca-67f2aff57cd9.jpg "Sample build")
Handwired 50 key with Proton C.
* Keyboard Maintainer: [Takeshi Noda](https://github.com/nodatk)
* Hardware Supported: Proton C
* Hardware Availability: Sorry, not available for now
Layout data is available [here](http://www.keyboard-layout-editor.com/#/gists/8df4caf51c8d57e4069e2ae19965f02c).
Make example for this keyboard (after setting up your build environment):
make handwired/twig/twig50:default
Flashing example for this keyboard:
make handwired/twig/twig50: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).
## Bootloader
Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
* **Keycode in layout**: Press the key mapped to `RESET` if it is available

View File

@ -0,0 +1,19 @@
# MCU name
MCU = STM32F303
BOARD = QMK_PROTON_C
# Bootloader selection
BOOTLOADER = stm32-dfu
# Build Options
# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = yes # Audio output

View File

@ -0,0 +1,4 @@
// Copyright 2022 Takeshi Noda (nodatk@gmail.com)
// SPDX-License-Identifier: GPL-2.0-or-later
#include "twig50.h"

View File

@ -0,0 +1,20 @@
// Copyright 2022 Takeshi Noda (nodatk@gmail.com)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include "quantum.h"
#define ___ KC_NO
#define LAYOUT_diag_4x14( \
K00, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
K10, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
K30, K31, K32, K34, K35, K37, K38, K39, K3A, K3B, K3D \
) { \
{ K00, ___, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
{ K10, ___, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, ___, K2D }, \
{ K30, K31, K32, ___, K34, K35, ___, K37, K38, K39, K3A, K3B, ___, K3D } \
}

View File

@ -0,0 +1,42 @@
/*
This is the c configuration file for the keymap
Copyright 2012 Jun Wako <wakojun@gmail.com>
Copyright 2015 Jack Humbert
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#define EE_HANDS
#define USE_SERIAL_PD2
#define OLED_TIMEOUT 300000
#define NO_MUSIC_MODE
#define PERMISSIVE_HOLD
#define IGNORE_MOD_TAP_INTERRUPT
#ifdef TAPPING_TERM
#undef TAPPING_TERM
#endif
#define TAPPING_TERM 120
#ifdef COMBO_COUNT
#undef COMBO_COUNT
#endif
#define COMBO_COUNT 2
#define COMBO_TERM 20

View File

@ -0,0 +1,246 @@
/* Copyright 2021 @tudattr
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
#include <stdio.h>
#include <string.h>
// Animation
#define IDLE_FRAMES 5
#define IDLE_SPEED 30
#define TAP_FRAMES 2
#define TAP_SPEED 60
#define ANIM_FRAME_DURATION 200
#define ANIM_SIZE 512
char wpm[16];
uint32_t anim_timer = 0;
uint32_t anim_sleep = 0;
uint8_t current_idle_frame = 0;
uint8_t current_tap_frame = 0;
// static long int oled_timeout = 300000;
// Layers
# define _DFLT 0
# define _LWR 1
# define _RSE 2
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* DEFAULT
* ,-----------------------------------------. ,-----------------------------------------.
* | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ` |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | Tab | Q | W | E | R | T | | Y | U | I | O | P | \ |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* |LCTRL | A | S | D | F | G |-------. ,-------| H | J | K | L | ; | ' |
* |------+------+------+------+------+------| [ | | ] |------+------+------+------+------+------|
* |LShift| Z | X | C | V | B |-------| |-------| N | M | , | . | / |RShift|
* `-----------------------------------------/ / \ \-----------------------------------------'
* | LGUI | LALT | LWR | /Space / \Enter \ | RALT |BackSP| RSE |
* | | | |/ / \ \ | | | |
* `----------------------------' '------''--------------------'
*/
[_DFLT] = 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_BSLS, \
KC_LCTRL, 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_LBRC, KC_RBRC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
KC_LGUI, KC_LALT, MO(_LWR), KC_SPC , KC_ENT, KC_RALT, KC_BSPC, MO(_RSE) \
),
/* LOWER
* ,-----------------------------------------. ,-----------------------------------------.
* | | | | | | | | | | | | | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | F11 | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F12 |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | | HOME | END | [ | ] | |-------. ,-------| LEFT | DOWN | UP | RIGHT| | |
* |------+------+------+------+------+------| MUTE | | PLAY |------+------+------+------+------+------|
* | | | | | | |-------| |-------| = | - | | | | |
* `-----------------------------------------/ / \ \-----------------------------------------'
* | | | | /VOLDWN / \VOLUP \ | PRNT | DEL | |
* | | | |/ / \ \ | | | |
* `----------------------------' '------''--------------------'
*/
[_LWR] = LAYOUT( \
_______, _______, _______, _______, _______, _______, _______, _______ , _______, _______, _______, _______,\
KC_F11 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F12 ,\
_______, KC_HOME, KC_END , KC_LBRC, KC_RBRC,_______ , KC_LEFT, KC_DOWN , KC_UP , KC_RIGHT, _______, _______, \
_______, _______, _______, _______, _______, _______, KC_MUTE, KC_MPLY, KC_EQL , KC_MINS ,_______,_______ , _______, _______,\
_______, _______, _______, KC_VOLD , KC_VOLU, KC_PSCR , KC_DEL, _______ \
),
/* RISE
* ,-----------------------------------------. ,-----------------------------------------.
* | | | | | | | | | | | | | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | | NUM | 7 | 8 | 9 | | | SCRL | PAUS |INSERT| | | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | | | 4 | 5 | 6 | + |-------. ,-------| LEFT | DOWN | UP | RIGHT| | |
* |------+------+------+------+------+------| | | |------+------+------+------+------+------|
* | | | 1 | 2 | 3 | ENTR |-------| |-------| | | | | | |
* `-----------------------------------------/ / \ \-----------------------------------------'
* | | | | / - / \ \ | | | |
* | | | |/ / \ \ | | | |
* `----------------------------' '------''--------------------'
*/
[_RSE] = LAYOUT( \
_______, _______ ,_______ ,_______,_______ ,_______ , _______,_______ ,_______ ,_______,_______ ,_______, \
_______, KC_NUM , KC_P7 , KC_P8 , KC_P9 ,_______ , KC_SCRL, KC_PAUS, KC_INS , _______, _______,_______, \
_______, _______, KC_P4 , KC_P5 , KC_P6 , KC_PPLS, KC_LEFT, KC_DOWN , KC_UP , KC_RIGHT, _______, _______,\
_______, _______, KC_P1 , KC_P2 , KC_P3 , KC_PENT, _______, _______, _______, _______ ,_______,_______ , _______, _______,\
_______, _______, _______, KC_P0, _______, _______ , _______, _______ \
),
};
#ifdef OLED_DRIVER_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
if (!is_keyboard_master()) return OLED_ROTATION_180;
else return rotation;
}
static void render_status(void) {
oled_write_P(PSTR(" @TuDatTr\n"), false);
oled_write_P(PSTR(" Layer "), false);
switch (get_highest_layer(layer_state)) {
case 0:
oled_write_P(PSTR(" 0"), false);
break;
case 1:
oled_write_P(PSTR(" 1"), false);
break;
default:
oled_write_P(PSTR(" ?"), false);
break;
}
oled_write_P(PSTR("\n\n "), false);
sprintf(wpm, "%01d", get_current_wpm());
oled_write(wpm, false);
oled_write_P(PSTR(" wpm"), false);
}
static void render_anim(void) {
static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = {
{
0,124,130,186,178,156,0,6,2,254,2,6,0,120,128,128,64,248,0,254,130,130,130,124,0,64,168,168,240,128,0,8,8,126,136,72,0,6,2,254,2,6,0,248,16,8,8,16,0,0,0,0,0,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,16,8,8,4,4,4,8,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,100,130,2,2,2,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64,64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,56,4,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
},
{
0,124,130,186,178,156,0,6,2,254,2,6,0,120,128,128,64,248,0,254,130,130,130,124,0,64,168,168,240,128,0,8,8,126,136,72,0,6,2,254,2,6,0,248,16,8,8,16,0,0,0,0,0,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,16,8,8,4,4,4,8,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,100,130,2,2,2,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64,64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,56,4,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
},
{
0,124,130,186,178,156,0,6,2,254,2,6,0,120,128,128,64,248,0,254,130,130,130,124,0,64,168,168,240,128,0,8,8,126,136,72,0,6,2,254,2,6,0,248,16,8,8,16,0,0,0,0,0,0,0,0,0,0,0,128,128,64,64,64,64,32,32,32,32,16,8,4,2,2,4,24,96,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,194,1,1,2,2,4,4,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,96,0,129,130,130,132,8,16,32,64,128,0,0,0,0,128,128,128,128,64,64,64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,25,6,0,0,0,0,0,0,0,24,24,24,27,3,0,64,160,34,36,20,18,18,18,11,8,8,8,8,5,5,9,9,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
},
{
0,124,130,186,178,156,0,6,2,254,2,6,0,120,128,128,64,248,0,254,130,130,130,124,0,64,168,168,240,128,0,8,8,126,136,72,0,6,2,254,2,6,0,248,16,8,8,16,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64,64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
},
{
0,124,130,186,178,156,0,6,2,254,2,6,0,120,128,128,64,248,0,254,130,130,130,124,0,64,168,168,240,128,0,8,8,126,136,72,0,6,2,254,2,6,0,248,16,8,8,16,0,0,0,0,0,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,8,4,2,2,2,4,56,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,226,1,1,2,2,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64,64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
}
};
static const char PROGMEM prep[][ANIM_SIZE] = {
{
0,124,130,186,178,156,0,6,2,254,2,6,0,120,128,128,64,248,0,254,130,130,130,124,0,64,168,168,240,128,0,8,8,126,136,72,0,6,2,254,2,6,0,248,16,8,8,16,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,129,128,128,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,0,1,225,26,6,9,49,53,1,138,124,0,0,128,128,128,128,64,64,64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,24,6,5,152,153,132,195,124,65,65,64,64,32,33,34,18,17,17,17,9,8,8,8,8,4,4,4,4,4,4,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
}
};
static const char PROGMEM tap[TAP_FRAMES][ANIM_SIZE] = {
{
0,124,130,186,178,156,0,6,2,254,2,6,0,120,128,128,64,248,0,254,130,130,130,124,0,64,168,168,240,128,0,8,8,126,136,72,0,6,2,254,2,6,0,248,16,8,8,16,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,248,248,248,248,0,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,129,128,128,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,0,1,1,2,4,8,16,32,67,135,7,1,0,184,188,190,159,95,95,79,76,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,24,6,5,152,153,132,67,124,65,65,64,64,32,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,61,124,252,252,252,252,252,60,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
},
{
0,124,130,186,178,156,0,6,2,254,2,6,0,120,128,128,64,248,0,254,130,130,130,124,0,64,168,168,240,128,0,8,8,126,136,72,0,6,2,254,2,6,0,248,16,8,8,16,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,0,1,225,26,6,9,49,53,1,138,124,0,0,128,128,128,128,64,64,64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,0,0,0,0,0,0,0,0,1,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,4,4,4,4,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,122,122,121,121,121,121,57,49,2,2,4,4,8,8,8,136,136,135,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
}
};
void animation_phase(void) {
if (get_current_wpm() <= IDLE_SPEED) {
current_idle_frame = (current_idle_frame + 1) % IDLE_FRAMES;
oled_write_raw_P(idle[abs((IDLE_FRAMES - 1) - current_idle_frame)], ANIM_SIZE);
}
if (get_current_wpm() > IDLE_SPEED && get_current_wpm() < TAP_SPEED) {
oled_write_raw_P(prep[0], ANIM_SIZE);
}
if (get_current_wpm() >= TAP_SPEED) {
current_tap_frame = (current_tap_frame + 1) % TAP_FRAMES;
oled_write_raw_P(tap[abs((TAP_FRAMES - 1) - current_tap_frame)], ANIM_SIZE);
}
}
sprintf(wpm, "%03d", get_current_wpm());
if (strcmp(wpm, "000") != 0) {
anim_sleep = timer_read32();
} else {
if (timer_elapsed32(anim_sleep) > oled_timeout) {
anim_sleep = 0;
}
}
if (timer_elapsed32(anim_sleep) > oled_timeout) {
oled_off();
} else {
oled_on();
if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
anim_timer = timer_read32();
animation_phase();
}
}
}
void oled_task_user(void) {
if (is_keyboard_master()) {
render_status();
} else {
render_anim();
}
}
#endif

View File

@ -0,0 +1,3 @@
OLED_DRIVER_ENABLE = yes
WPM_ENABLE = yes
EXTRAKEY_ENABLE = yes

View File

@ -0,0 +1,27 @@
/* Copyright 2020 Team Mechlovin'
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_all(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_INS, KC_HOME, KC_PGUP,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_HASH, KC_ENT,
KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_LSFT, KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LGUI,MO(1), KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
};

View File

@ -0,0 +1 @@
# The default keymap for infinity87

View File

@ -0,0 +1,52 @@
/* 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 <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_all(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_INS, KC_HOME, KC_PGUP,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_HASH, KC_ENT,
KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_LSFT, KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LGUI, MO(1), KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT_all(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[2] = LAYOUT_all(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[3] = LAYOUT_all(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
};

View File

@ -0,0 +1 @@
# The via keymap for infinity87

View File

@ -0,0 +1,2 @@
VIA_ENABLE = yes
LTO_ENABLE = yes

View File

@ -0,0 +1,182 @@
{
"keyboard_name": "NFR-70",
"manufacturer": "Nyhxis",
"url": "https://github.com/Nyhxis/keyboard-resources/tree/master/NFR-70",
"maintainer": "Nyhxis",
"diode_direction": "COL2ROW",
"matrix_pins": {
"cols": [ "B2", "B3", "B1", "F7", "F6", "F5", "F4" ],
"rows": [ "D3", "D2", "D1", "D0", "C6", "D4", "E6", "D7", "B5", "B4", "B6" ]
},
"usb": {
"vid": "0xABCD",
"pid": "0x0001",
"device_version": "1.0.0"
},
"layouts": {
"LAYOUT_ansi":{
"layout":
[
{ "label": "ESC", "x": 0, "y": 0 },
{ "label": "F2", "x": 2.25, "y": 0 },
{ "label": "F4", "x": 4.25, "y": 0 },
{ "label": "F6", "x": 6.5, "y": 0 },
{ "label": "F8", "x": 8.5, "y": 0 },
{ "label": "F10", "x": 10.75, "y": 0 },
{ "label": "F12", "x": 12.75, "y": 0 },
{ "label": "F1", "x": 1.25, "y": 0 },
{ "label": "F3", "x": 3.25, "y": 0 },
{ "label": "F5", "x": 5.5, "y": 0 },
{ "label": "F7", "x": 7.5, "y": 0 },
{ "label": "F9", "x": 9.75, "y": 0 },
{ "label": "F11", "x": 11.75, "y": 0 },
{ "label": "F13", "x": 14, "y": 0 }
{ "label": "1", "x": 1, "y": 1.25 },
{ "label": "3", "x": 3, "y": 1.25 },
{ "label": "5", "x": 5, "y": 1.25 },
{ "label": "7", "x": 7, "y": 1.25 },
{ "label": "9", "x": 9, "y": 1.25 },
{ "label": "-", "x": 11, "y": 1.25 },
{ "label": "BACKSPACE", "x": 13, "y": 1.25, "w": 2 }
{ "label": "`", "x": 0, "y": 1.25 },
{ "label": "2", "x": 2, "y": 1.25 },
{ "label": "4", "x": 4, "y": 1.25 },
{ "label": "6", "x": 6, "y": 1.25 },
{ "label": "8", "x": 8, "y": 1.25 },
{ "label": "0", "x": 10, "y": 1.25 },
{ "label": "=", "x": 12, "y": 1.25 },
{ "label": "TAB", "x": 0, "y": 2.25, "w": 1.5 },
{ "label": "W", "x": 2.5, "y": 2.25 },
{ "label": "R", "x": 4.5, "y": 2.25 },
{ "label": "Y", "x": 6.5, "y": 2.25 },
{ "label": "I", "x": 8.5, "y": 2.25 },
{ "label": "P", "x": 10.5, "y": 2.25 },
{ "label": "]", "x": 12.5, "y": 2.25 },
{ "label": "Q", "x": 1.5, "y": 2.25 },
{ "label": "E", "x": 3.5, "y": 2.25 },
{ "label": "T", "x": 5.5, "y": 2.25 },
{ "label": "U", "x": 7.5, "y": 2.25 },
{ "label": "O", "x": 9.5, "y": 2.25 },
{ "label": "[", "x": 11.5, "y": 2.25 },
{ "label": "\\", "x": 13.5, "y": 2.25, "w": 1.5 }
{ "label": "A", "x": 1.75, "y": 3.25 },
{ "label": "D", "x": 3.75, "y": 3.25 },
{ "label": "G", "x": 5.75, "y": 3.25 },
{ "label": "J", "x": 7.75, "y": 3.25 },
{ "label": "L", "x": 9.75, "y": 3.25 },
{ "label": "'", "x": 10.75, "y": 3.25 },
{ "x": 12.75, "y": 3.25 },
{ "label": "CAPS", "x": 0, "y": 3.25, "w": 1.75 },
{ "label": "S", "x": 2.75, "y": 3.25 },
{ "label": "F", "x": 4.75, "y": 3.25 },
{ "label": "H", "x": 6.75, "y": 3.25 },
{ "label": "K", "x": 8.75, "y": 3.25 },
{ "label": ";", "x": 11.75, "y": 3.25 },
{ "label": "ENTER", "x": 12.75, "y": 3.25, "w": 2.25 }
{ "label": "LSHIFT", "x": 0, "y": 4.25, "w": 2.25 },
{ "label": "Z", "x": 2.25, "y": 4.25 },
{ "label": "C", "x": 4.25, "y": 4.25 },
{ "label": "B", "x": 6.25, "y": 4.25 },
{ "label": "M", "x": 8.25, "y": 4.25 },
{ "label": ".", "x": 10.25, "y": 4.25 },
{ "label": "RSHIFT", "x": 12.25, "y": 4.25, "w": 2.75 }
{ "label": "NUBS", "x": 1.25, "y": 4.25 },
{ "label": "X", "x": 3.25, "y": 4.25 },
{ "label": "V", "x": 5.25, "y": 4.25 },
{ "label": "N", "x": 7.25, "y": 4.25 },
{ "label": ",", "x": 9.25, "y": 4.25 },
{ "label": "/", "x": 11.25, "y": 4.25 },
{ "label": "RALT", "x": 10, "y": 5.25, "w": 1.25 },
{ "label": "LCTRL", "x": 0, "y": 5.25, "w": 1.25 },
{ "label": "LWIN", "x": 1.25, "y": 5.25, "w": 1.25 },
{ "label": "LALT", "x": 2.5, "y": 5.25, "w": 1.25 },
{ "label": "SPACE", "x": 3.75, "y": 5.25, "w": 6.25 },
{ "label": "RWIN", "x": 11.25, "y": 5.25, "w": 1.25 },
{ "label": "MENU", "x": 12.5, "y": 5.25, "w": 1.25 },
{ "label": "RCTRL", "x": 13.75, "y": 5.25, "w": 1.25 }
]
},
"LAYOUT_tsangan":{
"layout":
[
{ "label": "ESC", "x": 0, "y": 0 },
{ "label": "F2", "x": 2.25, "y": 0 },
{ "label": "F4", "x": 4.25, "y": 0 },
{ "label": "F6", "x": 6.5, "y": 0 },
{ "label": "F8", "x": 8.5, "y": 0 },
{ "label": "F10", "x": 10.75, "y": 0 },
{ "label": "F12", "x": 12.75, "y": 0 },
{ "label": "F1", "x": 1.25, "y": 0 },
{ "label": "F3", "x": 3.25, "y": 0 },
{ "label": "F5", "x": 5.5, "y": 0 },
{ "label": "F7", "x": 7.5, "y": 0 },
{ "label": "F9", "x": 9.75, "y": 0 },
{ "label": "F11", "x": 11.75, "y": 0 },
{ "label": "F13", "x": 14, "y": 0 }
{ "label": "1", "x": 1, "y": 1.25 },
{ "label": "3", "x": 3, "y": 1.25 },
{ "label": "5", "x": 5, "y": 1.25 },
{ "label": "7", "x": 7, "y": 1.25 },
{ "label": "9", "x": 9, "y": 1.25 },
{ "label": "-", "x": 11, "y": 1.25 },
{ "label": "BACKSPACE", "x": 13, "y": 1.25, "w": 2 }
{ "label": "`", "x": 0, "y": 1.25 },
{ "label": "2", "x": 2, "y": 1.25 },
{ "label": "4", "x": 4, "y": 1.25 },
{ "label": "6", "x": 6, "y": 1.25 },
{ "label": "8", "x": 8, "y": 1.25 },
{ "label": "0", "x": 10, "y": 1.25 },
{ "label": "=", "x": 12, "y": 1.25 },
{ "label": "TAB", "x": 0, "y": 2.25, "w": 1.5 },
{ "label": "W", "x": 2.5, "y": 2.25 },
{ "label": "R", "x": 4.5, "y": 2.25 },
{ "label": "Y", "x": 6.5, "y": 2.25 },
{ "label": "I", "x": 8.5, "y": 2.25 },
{ "label": "P", "x": 10.5, "y": 2.25 },
{ "label": "]", "x": 12.5, "y": 2.25 },
{ "label": "Q", "x": 1.5, "y": 2.25 },
{ "label": "E", "x": 3.5, "y": 2.25 },
{ "label": "T", "x": 5.5, "y": 2.25 },
{ "label": "U", "x": 7.5, "y": 2.25 },
{ "label": "O", "x": 9.5, "y": 2.25 },
{ "label": "[", "x": 11.5, "y": 2.25 },
{ "label": "\\", "x": 13.5, "y": 2.25, "w": 1.5 }
{ "label": "A", "x": 1.75, "y": 3.25 },
{ "label": "D", "x": 3.75, "y": 3.25 },
{ "label": "G", "x": 5.75, "y": 3.25 },
{ "label": "J", "x": 7.75, "y": 3.25 },
{ "label": "L", "x": 9.75, "y": 3.25 },
{ "label": "'", "x": 10.75, "y": 3.25 },
{ "x": 12.75, "y": 3.25 },
{ "label": "CAPS", "x": 0, "y": 3.25, "w": 1.75 },
{ "label": "S", "x": 2.75, "y": 3.25 },
{ "label": "F", "x": 4.75, "y": 3.25 },
{ "label": "H", "x": 6.75, "y": 3.25 },
{ "label": "K", "x": 8.75, "y": 3.25 },
{ "label": ";", "x": 11.75, "y": 3.25 },
{ "label": "ENTER", "x": 12.75, "y": 3.25, "w": 2.25 }
{ "label": "LSHIFT", "x": 0, "y": 4.25, "w": 2.25 },
{ "label": "Z", "x": 2.25, "y": 4.25 },
{ "label": "C", "x": 4.25, "y": 4.25 },
{ "label": "B", "x": 6.25, "y": 4.25 },
{ "label": "M", "x": 8.25, "y": 4.25 },
{ "label": ".", "x": 10.25, "y": 4.25 },
{ "label": "RSHIFT", "x": 12.25, "y": 4.25, "w": 2.75 }
{ "label": "NUBS", "x": 1.25, "y": 4.25 },
{ "label": "X", "x": 3.25, "y": 4.25 },
{ "label": "V", "x": 5.25, "y": 4.25 },
{ "label": "N", "x": 7.25, "y": 4.25 },
{ "label": ",", "x": 9.25, "y": 4.25 },
{ "label": "/", "x": 11.25, "y": 4.25 },
{ "x": 10, "y": 5.25 },
{ "label": "LCTRL", "x": 0, "y": 5.25, "w": 1.5 },
{ "label": "LWIN", "x": 1.5, "y": 5.25, "w": 1 },
{ "label": "LALT", "x": 2.5, "y": 5.25, "w": 1.5 },
{ "label": "SPACE", "x": 4, "y": 5.25, "w": 7 },
{ "label": "RALT", "x": 11, "y": 5.25, "w": 1.5 },
{ "label": "RWIN", "x": 12.5, "y": 5.25, "w": 1 },
{ "label": "RCTRL", "x": 13.5, "y": 5.25, "w": 1.5 }
]
}
}
}

View File

@ -0,0 +1,44 @@
/* Copyright 2022 Nyhxis (@nyhxis)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_ansi(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RGUI, KC_RCTL
),
[1] = LAYOUT_ansi(
MO(2), KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSPC,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUSE, KC_UP, KC_TRNS, KC_TRNS,
KC_TRNS, KC_VOLU, KC_VOLD, KC_MUTE, KC_MPLY, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDOWN, KC_DOWN, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[2] = LAYOUT_ansi(
KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};

View File

@ -0,0 +1 @@
# The default keymap for NFR-70

View File

@ -0,0 +1,44 @@
/* Copyright 2022 Nyhxis (@nyhxis)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_tsangan(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL
),
[1] = LAYOUT_tsangan(
MO(2), KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSPC,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUSE, KC_UP, KC_TRNS, KC_TRNS,
KC_TRNS, KC_VOLU, KC_VOLD, KC_MUTE, KC_MPLY, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDOWN, KC_DOWN, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[2] = LAYOUT_tsangan(
KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};

View File

@ -0,0 +1,52 @@
/* Copyright 2022 Nyhxis (@nyhxis)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_ansi(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RGUI, KC_RCTL
),
[1] = LAYOUT_ansi(
MO(2), KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSPC,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUSE, KC_UP, KC_TRNS, KC_TRNS,
KC_TRNS, KC_VOLU, KC_VOLD, KC_MUTE, KC_MPLY, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDOWN, KC_DOWN, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[2] = LAYOUT_ansi(
KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_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
)
};

View File

@ -0,0 +1 @@
VIA_ENABLE = yes

View File

@ -0,0 +1,17 @@
/* Copyright 2022 Nyhxis (@nyhxis)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "nfr_70.h"

View File

@ -0,0 +1,63 @@
/* Copyright 2022 Nyhxis (@nyhxis)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "quantum.h"
#define LAYOUT_ansi( \
K000, K010, K001, K011, K002, K012, K003, K013, K004, K014, K005, K015, K006, K016, \
K030, K020, K031, K021, K032, K022, K033, K023, K034, K024, K035, K025, K036, K026, K066, \
K040, K050, K041, K051, K042, K052, K043, K053, K044, K054, K045, K055, K046, K056, \
K070, K060, K071, K061, K072, K062, K073, K063, K074, K064, K075, K065, K076, \
K080, K090, K081, K091, K082, K092, K083, K093, K084, K094, K085, K095, K086, \
K100, K101, K102, K103, K096, K104, K105, K106 \
) \
{ \
{ K000, K001, K002, K003, K004, K005, K006 }, \
{ K010, K011, K012, K013, K014, K015, K016 }, \
{ K020, K021, K022, K023, K024, K025, K026 }, \
{ K030, K031, K032, K033, K034, K035, K036 }, \
{ K040, K041, K042, K043, K044, K045, K046 }, \
{ K050, K051, K052, K053, K054, K055, K056 }, \
{ K060, K061, K062, K063, K064, K065, K066 }, \
{ K070, K071, K072, K073, K074, K075, K076 }, \
{ K080, K081, K082, K083, K084, K085, K086 }, \
{ K090, K091, K092, K093, K094, K095, K096 }, \
{ K100, K101, K102, K103, K104, K105, K106 } \
}
#define LAYOUT_tsangan( \
K000, K010, K001, K011, K002, K012, K003, K013, K004, K014, K005, K015, K006, K016, \
K030, K020, K031, K021, K032, K022, K033, K023, K034, K024, K035, K025, K036, K026, K066, \
K040, K050, K041, K051, K042, K052, K043, K053, K044, K054, K045, K055, K046, K056, \
K070, K060, K071, K061, K072, K062, K073, K063, K074, K064, K075, K065, K076, \
K080, K090, K081, K091, K082, K092, K083, K093, K084, K094, K085, K095, K096, K086, \
K100, K101, K102, K103, K104, K105, K106 \
) \
{ \
{ K000, K001, K002, K003, K004, K005, K006 }, \
{ K010, K011, K012, K013, K014, K015, K016 }, \
{ K020, K021, K022, K023, K024, K025, K026 }, \
{ K030, K031, K032, K033, K034, K035, K036 }, \
{ K040, K041, K042, K043, K044, K045, K046 }, \
{ K050, K051, K052, K053, K054, K055, K056 }, \
{ K060, K061, K062, K063, K064, K065, K066 }, \
{ K070, K071, K072, K073, K074, K075, K076 }, \
{ K080, K081, K082, K083, K084, K085, K086 }, \
{ K090, K091, K092, K093, K094, K095, K096 }, \
{ K100, K101, K102, K103, K104, K105, K106 } \
}

View File

@ -0,0 +1,17 @@
# NFR-70
![NFR-70](https://i.imgur.com/7jeesq6h.jpg)
A 70% barebones keyboard using Pro-Micro and alternatives.
Firmware was made and tested for Elite-C. Set bootloader in `rules.mk` to match your preferred MCU.
* Keyboard Maintainer: [Nyhxis](https://github.com/Nyhxis)
Make example for this keyboard (after setting up your build environment):
make nyhxis/nfr_70:default
**Reset Key**: The board can be reset by pressing the RESET button on the Elite-C or the button to the right of it labeled SW1.
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).

View File

@ -0,0 +1,19 @@
# MCU name
MCU = atmega32u4
# Bootloader selection
#BOOTLOADER = caterina # Pro-Micro
BOOTLOADER = atmel-dfu # Elite-C
# Build Options
# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output

@ -1 +1 @@
Subproject commit f836d24b06d7265696a33d1cea010bd6a931791d Subproject commit ffe54d63cb10a355add318f8e922e39f1c3d4bfd

@ -1 +1 @@
Subproject commit d03aa9cc2f76468e431c71421015102956dd6ad7 Subproject commit 61baa6b036138c155f7cfc5646d833d9423f3243

@ -1 +1 @@
Subproject commit e2239ee6043f73722e7aa812a459f54a28552929 Subproject commit ec44c6c1675c25b9827aacd08c02433cccde7780

@ -1 +1 @@
Subproject commit 549b97320d515bfca2f95c145a67bd13be968faa Subproject commit ce10f7642b0459e409839b23cc91498945119b4d

@ -1 +1 @@
Subproject commit c2e3b4e10d281e7f0f694d3ecbd9f320977288cc Subproject commit d3b984684bb8a8bdc48cc7a1abecb93ce59bbe3e

1
lib/ugfx Submodule

@ -0,0 +1 @@
Subproject commit 40b48f470addad6a4fb1177de1a69a181158739b

@ -1 +1 @@
Subproject commit 819dbc1e5d5926b17e27e00ca6d3d2988adae04e Subproject commit bdb53e4c043d089279d9891b68bea77614cb97ee

View File

@ -6,9 +6,9 @@ _qmk_install() {
# TODO: Check whether devel/headers packages are really needed # TODO: Check whether devel/headers packages are really needed
sudo dnf $SKIP_PROMPT install \ sudo dnf $SKIP_PROMPT install \
clang diffutils git gcc glibc-headers kernel-devel kernel-headers \ clang diffutils git gcc glibc-headers kernel-devel kernel-headers \
make unzip wget zip python3 avr-binutils avr-gcc avr-libc \ make unzip wget zip python3 avr-binutils avr-gcc avr-gcc-c++ avr-libc \
arm-none-eabi-binutils-cs arm-none-eabi-gcc-cs arm-none-eabi-newlib \ arm-none-eabi-binutils-cs arm-none-eabi-gcc-cs arm-none-eabi-gcc-cs-c++ \
avrdude dfu-programmer dfu-util hidapi libusb-devel arm-none-eabi-newlib avrdude dfu-programmer dfu-util hidapi libusb-devel
python3 -m pip install --user -r $QMK_FIRMWARE_DIR/requirements.txt python3 -m pip install --user -r $QMK_FIRMWARE_DIR/requirements.txt
} }