@ -0,0 +1,6 @@ | |||||
version: 2 | |||||
updates: | |||||
- package-ecosystem: "github-actions" | |||||
directory: "/" | |||||
schedule: | |||||
interval: "daily" |
@ -1,58 +0,0 @@ | |||||
# Configuration for probot-stale - https://github.com/probot/stale | |||||
# General configuration | |||||
# Pull request specific configuration | |||||
pulls: | |||||
staleLabel: awaiting changes | |||||
# Number of days of inactivity before an Issue or Pull Request becomes stale | |||||
daysUntilStale: 45 | |||||
# Number of days of inactivity before a stale Issue or Pull Request is closed. | |||||
# Set to false to disable. If disabled, issues still need to be closed manually, but will remain marked as stale. | |||||
daysUntilClose: 30 | |||||
# Comment to post when marking as stale. Set to `false` to disable | |||||
markComment: > | |||||
Thank you for your contribution! | |||||
This pull request has been automatically marked as stale because it has not had | |||||
activity in the last 45 days. It will be closed in 30 days if no further activity occurs. | |||||
Please feel free to give a status update now, or re-open when it's ready. | |||||
For maintainers: Please label with `awaiting review`, `breaking_change`, `in progress`, or `on hold` to prevent | |||||
the issue from being re-flagged. | |||||
# Comment to post when closing a stale Issue or Pull Request. | |||||
closeComment: > | |||||
Thank you for your contribution! | |||||
This pull request has been automatically closed because it has not had activity in the last 30 days. | |||||
Please feel free to give a status update now, ping for review, or re-open when it's ready. | |||||
# Limit the number of actions per hour, from 1-30. Default is 30 | |||||
limitPerRun: 30 | |||||
exemptLabels: | |||||
- awaiting review | |||||
- breaking_change | |||||
- in progress | |||||
- on hold | |||||
# Issue specific configuration | |||||
issues: | |||||
staleLabel: stale | |||||
limitPerRun: 10 | |||||
daysUntilStale: 90 | |||||
daysUntilClose: 30 | |||||
markComment: > | |||||
This issue has been automatically marked as stale because it has not had activity in the | |||||
last 90 days. It will be closed in the next 30 days unless it is tagged properly or other activity | |||||
occurs. | |||||
For maintainers: Please label with `bug`, `in progress`, `on hold`, `discussion` or `to do` to prevent | |||||
the issue from being re-flagged. | |||||
closeComment: > | |||||
This issue has been automatically closed because it has not had activity in the last 30 days. | |||||
If this issue is still valid, re-open the issue and let us know. | |||||
exemptLabels: | |||||
- bug | |||||
- in progress | |||||
- on hold | |||||
- discussion | |||||
- to do |
@ -0,0 +1,64 @@ | |||||
name: 'Close stale issues and PRs' | |||||
on: | |||||
schedule: | |||||
- cron: '30 1 * * *' | |||||
workflow_dispatch: | |||||
permissions: | |||||
issues: write | |||||
pull-requests: write | |||||
jobs: | |||||
stale: | |||||
runs-on: ubuntu-latest | |||||
steps: | |||||
- uses: actions/stale@v5 | |||||
with: | |||||
repo-token: ${{ secrets.GITHUB_TOKEN }} | |||||
remove-stale-when-updated: true | |||||
exempt-draft-pr: true | |||||
ascending: true | |||||
operations-per-run: 150 | |||||
stale-issue-label: stale | |||||
days-before-issue-stale: 90 | |||||
days-before-issue-close: 30 | |||||
exempt-issue-labels: bug,in progress,on hold,discussion,to do | |||||
stale-issue-message: > | |||||
This issue has been automatically marked as stale because it has not had activity in the | |||||
last 90 days. It will be closed in the next 30 days unless it is tagged properly or other activity | |||||
occurs. | |||||
For maintainers: Please label with `bug`, `in progress`, `on hold`, `discussion` or `to do` to prevent | |||||
the issue from being re-flagged. | |||||
close-issue-message: > | |||||
This issue has been automatically closed because it has not had activity in the last 30 days. | |||||
If this issue is still valid, re-open the issue and let us know. | |||||
// [stale-action-closed] | |||||
stale-pr-label: stale | |||||
days-before-pr-stale: 45 | |||||
days-before-pr-close: 30 | |||||
exempt-pr-labels: bug,awaiting review,breaking_change,in progress,on hold | |||||
stale-pr-message: > | |||||
Thank you for your contribution! | |||||
This pull request has been automatically marked as stale because it has not had | |||||
activity in the last 45 days. It will be closed in 30 days if no further activity occurs. | |||||
Please feel free to give a status update now, or re-open when it's ready. | |||||
For maintainers: Please label with `bug`, `awaiting review`, `breaking_change`, `in progress`, or `on hold` | |||||
to prevent the issue from being re-flagged. | |||||
close-pr-message: > | |||||
Thank you for your contribution! | |||||
This pull request has been automatically closed because it has not had activity in the last 30 days. | |||||
Please feel free to give a status update now, ping for review, or re-open when it's ready. | |||||
// [stale-action-closed] |
@ -0,0 +1,137 @@ | |||||
/* | |||||
Copyright 2022 Ramon Imbao | |||||
This program is free software: you can redistribute it and/or modify | |||||
it under the terms of the GNU General Public License as published by | |||||
the Free Software Foundation, either version 2 of the License, or | |||||
(at your option) any later version. | |||||
This program is distributed in the hope that it will be useful, | |||||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
GNU General Public License for more details. | |||||
You should have received a copy of the GNU General Public License | |||||
along with this program. If not, see <http://www.gnu.org/licenses/>. | |||||
*/ | |||||
#pragma once | |||||
#include "config_common.h" | |||||
/* USB Device descriptor parameter */ | |||||
#define VENDOR_ID 0x4B47 | |||||
#define PRODUCT_ID 0x0001 | |||||
#define DEVICE_VER 0x0001 | |||||
#define MANUFACTURER Abats Keyboard Club | |||||
#define PRODUCT Nayeon | |||||
/* key matrix size */ | |||||
#define MATRIX_ROWS 6 | |||||
#define MATRIX_COLS 17 | |||||
/* | |||||
* Keyboard Matrix Assignments | |||||
* | |||||
* Change this to how you wired your keyboard | |||||
* COLS: AVR pins used for columns, left to right | |||||
* ROWS: AVR pins used for rows, top to bottom | |||||
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) | |||||
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) | |||||
* | |||||
*/ | |||||
#define MATRIX_ROW_PINS { B2, B3, B7, D6, D3, D2 } | |||||
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D4, D5, B0, B1, D1 } | |||||
#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 RGB_DI_PIN E2 | |||||
#ifdef RGB_DI_PIN | |||||
# define RGBLED_NUM 26 | |||||
# 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 */ | |||||
/*== 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 | |||||
/* Bootmagic Lite key configuration */ | |||||
//#define BOOTMAGIC_LITE_ROW 0 | |||||
//#define BOOTMAGIC_LITE_COLUMN 0 |
@ -0,0 +1,299 @@ | |||||
{ | |||||
"keyboard_name": "Nayeon", | |||||
"url": "", | |||||
"maintainer": "Ramon Imbao", | |||||
"layouts": { | |||||
"LAYOUT_ansi": { | |||||
"layout": [ | |||||
{"x":0, "y":0}, | |||||
{"x":1.25, "y":0}, | |||||
{"x":2.25, "y":0}, | |||||
{"x":3.25, "y":0}, | |||||
{"x":4.25, "y":0}, | |||||
{"x":5.5, "y":0}, | |||||
{"x":6.5, "y":0}, | |||||
{"x":7.5, "y":0}, | |||||
{"x":8.5, "y":0}, | |||||
{"x":9.75, "y":0}, | |||||
{"x":10.75, "y":0}, | |||||
{"x":11.75, "y":0}, | |||||
{"x":12.75, "y":0}, | |||||
{"x":14, "y":0}, | |||||
{"x":15.25, "y":0}, | |||||
{"x":16.25, "y":0}, | |||||
{"x":17.25, "y":0}, | |||||
{"x":0, "y":1.25}, | |||||
{"x":1, "y":1.25}, | |||||
{"x":2, "y":1.25}, | |||||
{"x":3, "y":1.25}, | |||||
{"x":4, "y":1.25}, | |||||
{"x":5, "y":1.25}, | |||||
{"x":6, "y":1.25}, | |||||
{"x":7, "y":1.25}, | |||||
{"x":8, "y":1.25}, | |||||
{"x":9, "y":1.25}, | |||||
{"x":10, "y":1.25}, | |||||
{"x":11, "y":1.25}, | |||||
{"x":12, "y":1.25}, | |||||
{"x":13, "y":1.25, "w":2}, | |||||
{"x":15.25, "y":1.25}, | |||||
{"x":16.25, "y":1.25}, | |||||
{"x":17.25, "y":1.25}, | |||||
{"x":0, "y":2.25, "w":1.5}, | |||||
{"x":1.5, "y":2.25}, | |||||
{"x":2.5, "y":2.25}, | |||||
{"x":3.5, "y":2.25}, | |||||
{"x":4.5, "y":2.25}, | |||||
{"x":5.5, "y":2.25}, | |||||
{"x":6.5, "y":2.25}, | |||||
{"x":7.5, "y":2.25}, | |||||
{"x":8.5, "y":2.25}, | |||||
{"x":9.5, "y":2.25}, | |||||
{"x":10.5, "y":2.25}, | |||||
{"x":11.5, "y":2.25}, | |||||
{"x":12.5, "y":2.25}, | |||||
{"x":13.5, "y":2.25, "w":1.5}, | |||||
{"x":15.25, "y":2.25}, | |||||
{"x":16.25, "y":2.25}, | |||||
{"x":17.25, "y":2.25}, | |||||
{"x":0, "y":3.25, "w":1.75}, | |||||
{"x":1.75, "y":3.25}, | |||||
{"x":2.75, "y":3.25}, | |||||
{"x":3.75, "y":3.25}, | |||||
{"x":4.75, "y":3.25}, | |||||
{"x":5.75, "y":3.25}, | |||||
{"x":6.75, "y":3.25}, | |||||
{"x":7.75, "y":3.25}, | |||||
{"x":8.75, "y":3.25}, | |||||
{"x":9.75, "y":3.25}, | |||||
{"x":10.75, "y":3.25}, | |||||
{"x":11.75, "y":3.25}, | |||||
{"x":12.75, "y":3.25, "w":2.25}, | |||||
{"x":0, "y":4.25, "w":2.25}, | |||||
{"x":2.25, "y":4.25}, | |||||
{"x":3.25, "y":4.25}, | |||||
{"x":4.25, "y":4.25}, | |||||
{"x":5.25, "y":4.25}, | |||||
{"x":6.25, "y":4.25}, | |||||
{"x":7.25, "y":4.25}, | |||||
{"x":8.25, "y":4.25}, | |||||
{"x":9.25, "y":4.25}, | |||||
{"x":10.25, "y":4.25}, | |||||
{"x":11.25, "y":4.25}, | |||||
{"x":12.25, "y":4.25, "w":2.75}, | |||||
{"x":16.25, "y":4.25}, | |||||
{"x":0, "y":5.25, "w":1.5}, | |||||
{"x":1.5, "y":5.25}, | |||||
{"x":2.5, "y":5.25, "w":1.5}, | |||||
{"x":4, "y":5.25, "w":7}, | |||||
{"x":11, "y":5.25, "w":1.5}, | |||||
{"x":12.5, "y":5.25}, | |||||
{"x":13.5, "y":5.25, "w":1.5}, | |||||
{"x":15.25, "y":5.25}, | |||||
{"x":16.25, "y":5.25}, | |||||
{"x":17.25, "y":5.25} | |||||
] | |||||
}, | |||||
"LAYOUT_iso": { | |||||
"layout": [ | |||||
{"x":0, "y":0}, | |||||
{"x":1.25, "y":0}, | |||||
{"x":2.25, "y":0}, | |||||
{"x":3.25, "y":0}, | |||||
{"x":4.25, "y":0}, | |||||
{"x":5.5, "y":0}, | |||||
{"x":6.5, "y":0}, | |||||
{"x":7.5, "y":0}, | |||||
{"x":8.5, "y":0}, | |||||
{"x":9.75, "y":0}, | |||||
{"x":10.75, "y":0}, | |||||
{"x":11.75, "y":0}, | |||||
{"x":12.75, "y":0}, | |||||
{"x":14, "y":0}, | |||||
{"x":15.25, "y":0}, | |||||
{"x":16.25, "y":0}, | |||||
{"x":17.25, "y":0}, | |||||
{"x":0, "y":1.25}, | |||||
{"x":1, "y":1.25}, | |||||
{"x":2, "y":1.25}, | |||||
{"x":3, "y":1.25}, | |||||
{"x":4, "y":1.25}, | |||||
{"x":5, "y":1.25}, | |||||
{"x":6, "y":1.25}, | |||||
{"x":7, "y":1.25}, | |||||
{"x":8, "y":1.25}, | |||||
{"x":9, "y":1.25}, | |||||
{"x":10, "y":1.25}, | |||||
{"x":11, "y":1.25}, | |||||
{"x":12, "y":1.25}, | |||||
{"x":13, "y":1.25, "w":2}, | |||||
{"x":15.25, "y":1.25}, | |||||
{"x":16.25, "y":1.25}, | |||||
{"x":17.25, "y":1.25}, | |||||
{"x":0, "y":2.25, "w":1.5}, | |||||
{"x":1.5, "y":2.25}, | |||||
{"x":2.5, "y":2.25}, | |||||
{"x":3.5, "y":2.25}, | |||||
{"x":4.5, "y":2.25}, | |||||
{"x":5.5, "y":2.25}, | |||||
{"x":6.5, "y":2.25}, | |||||
{"x":7.5, "y":2.25}, | |||||
{"x":8.5, "y":2.25}, | |||||
{"x":9.5, "y":2.25}, | |||||
{"x":10.5, "y":2.25}, | |||||
{"x":11.5, "y":2.25}, | |||||
{"x":12.5, "y":2.25}, | |||||
{"x":15.25, "y":2.25}, | |||||
{"x":16.25, "y":2.25}, | |||||
{"x":17.25, "y":2.25}, | |||||
{"x":0, "y":3.25, "w":1.75}, | |||||
{"x":1.75, "y":3.25}, | |||||
{"x":2.75, "y":3.25}, | |||||
{"x":3.75, "y":3.25}, | |||||
{"x":4.75, "y":3.25}, | |||||
{"x":5.75, "y":3.25}, | |||||
{"x":6.75, "y":3.25}, | |||||
{"x":7.75, "y":3.25}, | |||||
{"x":8.75, "y":3.25}, | |||||
{"x":9.75, "y":3.25}, | |||||
{"x":10.75, "y":3.25}, | |||||
{"x":11.75, "y":3.25}, | |||||
{"x":12.75, "y":3.25}, | |||||
{"x":13.75, "y":2.25, "w":1.25, "h":2}, | |||||
{"x":0, "y":4.25, "w":1.25}, | |||||
{"x":1.25, "y":4.25}, | |||||
{"x":2.25, "y":4.25}, | |||||
{"x":3.25, "y":4.25}, | |||||
{"x":4.25, "y":4.25}, | |||||
{"x":5.25, "y":4.25}, | |||||
{"x":6.25, "y":4.25}, | |||||
{"x":7.25, "y":4.25}, | |||||
{"x":8.25, "y":4.25}, | |||||
{"x":9.25, "y":4.25}, | |||||
{"x":10.25, "y":4.25}, | |||||
{"x":11.25, "y":4.25}, | |||||
{"x":12.25, "y":4.25, "w":2.75}, | |||||
{"x":16.25, "y":4.25}, | |||||
{"x":0, "y":5.25, "w":1.5}, | |||||
{"x":1.5, "y":5.25}, | |||||
{"x":2.5, "y":5.25, "w":1.5}, | |||||
{"x":4, "y":5.25, "w":7}, | |||||
{"x":11, "y":5.25, "w":1.5}, | |||||
{"x":12.5, "y":5.25}, | |||||
{"x":13.5, "y":5.25, "w":1.5}, | |||||
{"x":15.25, "y":5.25}, | |||||
{"x":16.25, "y":5.25}, | |||||
{"x":17.25, "y":5.25} | |||||
] | |||||
}, | |||||
"LAYOUT_all": { | |||||
"layout": [ | |||||
{"x":0, "y":0}, | |||||
{"x":1.25, "y":0}, | |||||
{"x":2.25, "y":0}, | |||||
{"x":3.25, "y":0}, | |||||
{"x":4.25, "y":0}, | |||||
{"x":5.5, "y":0}, | |||||
{"x":6.5, "y":0}, | |||||
{"x":7.5, "y":0}, | |||||
{"x":8.5, "y":0}, | |||||
{"x":9.75, "y":0}, | |||||
{"x":10.75, "y":0}, | |||||
{"x":11.75, "y":0}, | |||||
{"x":12.75, "y":0}, | |||||
{"x":14, "y":0}, | |||||
{"x":15.25, "y":0}, | |||||
{"x":16.25, "y":0}, | |||||
{"x":17.25, "y":0}, | |||||
{"x":0, "y":1.25}, | |||||
{"x":1, "y":1.25}, | |||||
{"x":2, "y":1.25}, | |||||
{"x":3, "y":1.25}, | |||||
{"x":4, "y":1.25}, | |||||
{"x":5, "y":1.25}, | |||||
{"x":6, "y":1.25}, | |||||
{"x":7, "y":1.25}, | |||||
{"x":8, "y":1.25}, | |||||
{"x":9, "y":1.25}, | |||||
{"x":10, "y":1.25}, | |||||
{"x":11, "y":1.25}, | |||||
{"x":12, "y":1.25}, | |||||
{"x":13, "y":1.25}, | |||||
{"x":14, "y":1.25}, | |||||
{"x":15.25, "y":1.25}, | |||||
{"x":16.25, "y":1.25}, | |||||
{"x":17.25, "y":1.25}, | |||||
{"x":0, "y":2.25, "w":1.5}, | |||||
{"x":1.5, "y":2.25}, | |||||
{"x":2.5, "y":2.25}, | |||||
{"x":3.5, "y":2.25}, | |||||
{"x":4.5, "y":2.25}, | |||||
{"x":5.5, "y":2.25}, | |||||
{"x":6.5, "y":2.25}, | |||||
{"x":7.5, "y":2.25}, | |||||
{"x":8.5, "y":2.25}, | |||||
{"x":9.5, "y":2.25}, | |||||
{"x":10.5, "y":2.25}, | |||||
{"x":11.5, "y":2.25}, | |||||
{"x":12.5, "y":2.25}, | |||||
{"x":13.5, "y":2.25, "w":1.5}, | |||||
{"x":15.25, "y":2.25}, | |||||
{"x":16.25, "y":2.25}, | |||||
{"x":17.25, "y":2.25}, | |||||
{"x":0, "y":3.25, "w":1.75}, | |||||
{"x":1.75, "y":3.25}, | |||||
{"x":2.75, "y":3.25}, | |||||
{"x":3.75, "y":3.25}, | |||||
{"x":4.75, "y":3.25}, | |||||
{"x":5.75, "y":3.25}, | |||||
{"x":6.75, "y":3.25}, | |||||
{"x":7.75, "y":3.25}, | |||||
{"x":8.75, "y":3.25}, | |||||
{"x":9.75, "y":3.25}, | |||||
{"x":10.75, "y":3.25}, | |||||
{"x":11.75, "y":3.25}, | |||||
{"x":12.75, "y":3.25, "w":2.25}, | |||||
{"x":0, "y":4.25, "w":1.25}, | |||||
{"x":1.25, "y":4.25}, | |||||
{"x":2.25, "y":4.25}, | |||||
{"x":3.25, "y":4.25}, | |||||
{"x":4.25, "y":4.25}, | |||||
{"x":5.25, "y":4.25}, | |||||
{"x":6.25, "y":4.25}, | |||||
{"x":7.25, "y":4.25}, | |||||
{"x":8.25, "y":4.25}, | |||||
{"x":9.25, "y":4.25}, | |||||
{"x":10.25, "y":4.25}, | |||||
{"x":11.25, "y":4.25}, | |||||
{"x":12.25, "y":4.25, "w":1.75}, | |||||
{"x":14, "y":4.25}, | |||||
{"x":16.25, "y":4.25}, | |||||
{"x":0, "y":5.25, "w":1.5}, | |||||
{"x":1.5, "y":5.25}, | |||||
{"x":2.5, "y":5.25, "w":1.5}, | |||||
{"x":4, "y":5.25, "w":7}, | |||||
{"x":11, "y":5.25, "w":1.5}, | |||||
{"x":12.5, "y":5.25}, | |||||
{"x":13.5, "y":5.25, "w":1.5}, | |||||
{"x":15.25, "y":5.25}, | |||||
{"x":16.25, "y":5.25}, | |||||
{"x":17.25, "y":5.25} | |||||
] | |||||
} | |||||
} | |||||
} |
@ -0,0 +1,20 @@ | |||||
/* Copyright 2022 Ramon Imbao | |||||
* | |||||
* This program is free software: you can redistribute it and/or modify | |||||
* it under the terms of the GNU General Public License as published by | |||||
* the Free Software Foundation, either version 2 of the License, or | |||||
* (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
* GNU General Public License for more details. | |||||
* | |||||
* You should have received a copy of the GNU General Public License | |||||
* along with this program. If not, see <http://www.gnu.org/licenses/>. | |||||
*/ | |||||
#pragma once | |||||
#define RGBLIGHT_LAYERS | |||||
#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF |
@ -0,0 +1,61 @@ | |||||
/* Copyright 2022 Ramon Imbao | |||||
* | |||||
* This program is free software: you can redistribute it and/or modify | |||||
* it under the terms of the GNU General Public License as published by | |||||
* the Free Software Foundation, either version 2 of the License, or | |||||
* (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
* GNU General Public License for more details. | |||||
* | |||||
* You should have received a copy of the GNU General Public License | |||||
* along with this program. If not, see <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_PSCR, KC_SLCK, KC_PAUS, | |||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, | |||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, | |||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, | |||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, | |||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT | |||||
) | |||||
}; | |||||
#ifdef RGBLIGHT_ENABLE | |||||
const rgblight_segment_t PROGMEM ll_none[] = RGBLIGHT_LAYER_SEGMENTS( | |||||
{0, 1, HSV_OFF}, | |||||
{1, 1, HSV_OFF} | |||||
); | |||||
const rgblight_segment_t PROGMEM ll_cl[] = RGBLIGHT_LAYER_SEGMENTS( | |||||
{1, 1, HSV_OFF} | |||||
); | |||||
const rgblight_segment_t PROGMEM ll_sl[] = RGBLIGHT_LAYER_SEGMENTS( | |||||
{0, 1, HSV_OFF} | |||||
); | |||||
const rgblight_segment_t* const PROGMEM rgb_layers[] = RGBLIGHT_LAYERS_LIST(ll_none, ll_cl, ll_sl); | |||||
void keyboard_post_init_user(void) { | |||||
rgblight_layers = rgb_layers; | |||||
} | |||||
bool led_update_user(led_t led_state) { | |||||
uint8_t lock_bits = led_state.scroll_lock << 1 | led_state.caps_lock; | |||||
for (uint8_t i=0; i<3; i++) { | |||||
rgblight_set_layer_state(i, false); | |||||
} | |||||
if (lock_bits < 3) { | |||||
rgblight_set_layer_state(lock_bits, true); | |||||
} | |||||
return false; | |||||
} | |||||
#endif |
@ -0,0 +1,19 @@ | |||||
/* Copyright 2022 Ramon Imbao | |||||
* | |||||
* This program is free software: you can redistribute it and/or modify | |||||
* it under the terms of the GNU General Public License as published by | |||||
* the Free Software Foundation, either version 2 of the License, or | |||||
* (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
* GNU General Public License for more details. | |||||
* | |||||
* You should have received a copy of the GNU General Public License | |||||
* along with this program. If not, see <http://www.gnu.org/licenses/>. | |||||
*/ | |||||
#pragma once | |||||
#define RGBLIGHT_LAYERS | |||||
#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF |
@ -0,0 +1,61 @@ | |||||
/* Copyright 2022 Ramon Imbao | |||||
* | |||||
* This program is free software: you can redistribute it and/or modify | |||||
* it under the terms of the GNU General Public License as published by | |||||
* the Free Software Foundation, either version 2 of the License, or | |||||
* (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
* GNU General Public License for more details. | |||||
* | |||||
* You should have received a copy of the GNU General Public License | |||||
* along with this program. If not, see <http://www.gnu.org/licenses/>. | |||||
*/ | |||||
#include QMK_KEYBOARD_H | |||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||||
[0] = LAYOUT_iso( | |||||
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SLCK, KC_PAUS, | |||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, | |||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, KC_END, KC_PGDN, | |||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, | |||||
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, | |||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT | |||||
) | |||||
}; | |||||
#ifdef RGBLIGHT_ENABLE | |||||
const rgblight_segment_t PROGMEM ll_none[] = RGBLIGHT_LAYER_SEGMENTS( | |||||
{0, 1, HSV_OFF}, | |||||
{1, 1, HSV_OFF} | |||||
); | |||||
const rgblight_segment_t PROGMEM ll_cl[] = RGBLIGHT_LAYER_SEGMENTS( | |||||
{1, 1, HSV_OFF} | |||||
); | |||||
const rgblight_segment_t PROGMEM ll_sl[] = RGBLIGHT_LAYER_SEGMENTS( | |||||
{0, 1, HSV_OFF} | |||||
); | |||||
const rgblight_segment_t* const PROGMEM rgb_layers[] = RGBLIGHT_LAYERS_LIST(ll_none, ll_cl, ll_sl); | |||||
void keyboard_post_init_user(void) { | |||||
rgblight_layers = rgb_layers; | |||||
} | |||||
bool led_update_user(led_t led_state) { | |||||
uint8_t lock_bits = led_state.scroll_lock << 1 | led_state.caps_lock; | |||||
for (uint8_t i=0; i<3; i++) { | |||||
rgblight_set_layer_state(i, false); | |||||
} | |||||
if (lock_bits < 3) { | |||||
rgblight_set_layer_state(lock_bits, true); | |||||
} | |||||
return false; | |||||
} | |||||
#endif |
@ -0,0 +1,19 @@ | |||||
/* Copyright 2022 Ramon Imbao | |||||
* | |||||
* This program is free software: you can redistribute it and/or modify | |||||
* it under the terms of the GNU General Public License as published by | |||||
* the Free Software Foundation, either version 2 of the License, or | |||||
* (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
* GNU General Public License for more details. | |||||
* | |||||
* You should have received a copy of the GNU General Public License | |||||
* along with this program. If not, see <http://www.gnu.org/licenses/>. | |||||
*/ | |||||
#pragma once | |||||
#define RGBLIGHT_LAYERS | |||||
#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF |
@ -0,0 +1,85 @@ | |||||
/* Copyright 2022 Ramon Imbao | |||||
* | |||||
* This program is free software: you can redistribute it and/or modify | |||||
* it under the terms of the GNU General Public License as published by | |||||
* the Free Software Foundation, either version 2 of the License, or | |||||
* (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
* GNU General Public License for more details. | |||||
* | |||||
* You should have received a copy of the GNU General Public License | |||||
* along with this program. If not, see <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_F13, KC_PSCR, KC_SLCK, KC_PAUS, | |||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_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_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_NO, KC_UP, | |||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT | |||||
), | |||||
[1] = LAYOUT_all( | |||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______ | |||||
), | |||||
[2] = LAYOUT_all( | |||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______ | |||||
), | |||||
[3] = LAYOUT_all( | |||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______ | |||||
) | |||||
}; | |||||
#ifdef RGBLIGHT_ENABLE | |||||
const rgblight_segment_t PROGMEM ll_none[] = RGBLIGHT_LAYER_SEGMENTS( | |||||
{0, 1, HSV_OFF}, | |||||
{1, 1, HSV_OFF} | |||||
); | |||||
const rgblight_segment_t PROGMEM ll_cl[] = RGBLIGHT_LAYER_SEGMENTS( | |||||
{1, 1, HSV_OFF} | |||||
); | |||||
const rgblight_segment_t PROGMEM ll_sl[] = RGBLIGHT_LAYER_SEGMENTS( | |||||
{0, 1, HSV_OFF} | |||||
); | |||||
const rgblight_segment_t* const PROGMEM rgb_layers[] = RGBLIGHT_LAYERS_LIST(ll_none, ll_cl, ll_sl); | |||||
void keyboard_post_init_user(void) { | |||||
rgblight_layers = rgb_layers; | |||||
} | |||||
bool led_update_user(led_t led_state) { | |||||
uint8_t lock_bits = led_state.scroll_lock << 1 | led_state.caps_lock; | |||||
for (uint8_t i=0; i<3; i++) { | |||||
rgblight_set_layer_state(i, false); | |||||
} | |||||
if (lock_bits < 3) { | |||||
rgblight_set_layer_state(lock_bits, true); | |||||
} | |||||
return false; | |||||
} | |||||
#endif |
@ -0,0 +1 @@ | |||||
VIA_ENABLE = yes |
@ -0,0 +1,81 @@ | |||||
/* Copyright 2022 Ramon Imbao | |||||
* | |||||
* This program is free software: you can redistribute it and/or modify | |||||
* it under the terms of the GNU General Public License as published by | |||||
* the Free Software Foundation, either version 2 of the License, or | |||||
* (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
* GNU General Public License for more details. | |||||
* | |||||
* You should have received a copy of the GNU General Public License | |||||
* along with this program. If not, see <http://www.gnu.org/licenses/>. | |||||
*/ | |||||
#pragma once | |||||
#include "quantum.h" | |||||
#define ___ KC_NO | |||||
// ANSI layout | |||||
// Full backspace | |||||
// Full right shift | |||||
// Full left shift | |||||
#define LAYOUT_ansi( \ | |||||
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, k0g, \ | |||||
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g, \ | |||||
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g, \ | |||||
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \ | |||||
k40, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4f, \ | |||||
k50, k51, k52, k57, k5b, k5c, k5d, k5e, k5f, k5g \ | |||||
) { \ | |||||
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, k0g }, \ | |||||
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g }, \ | |||||
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g }, \ | |||||
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, ___, ___, ___, ___ }, \ | |||||
{ k40, ___, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, ___, ___, k4f, ___ }, \ | |||||
{ k50, k51, k52, ___, ___, ___, ___, k57, ___, ___, ___, k5b, k5c, k5d, k5e, k5f, k5g }, \ | |||||
} | |||||
// ISO layout | |||||
// Full backspace | |||||
// Full right shift | |||||
// Split left shift | |||||
#define LAYOUT_iso( \ | |||||
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, k0g, \ | |||||
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g, \ | |||||
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2e, k2f, k2g, \ | |||||
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k2d, \ | |||||
k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4f, \ | |||||
k50, k51, k52, k57, k5b, k5c, k5d, k5e, k5f, k5g \ | |||||
) { \ | |||||
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, k0g }, \ | |||||
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g }, \ | |||||
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g }, \ | |||||
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, ___, ___, ___, ___ }, \ | |||||
{ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, ___, ___, k4f, ___ }, \ | |||||
{ k50, k51, k52, ___, ___, ___, ___, k57, ___, ___, ___, k5b, k5c, k5d, k5e, k5f, k5g }, \ | |||||
} | |||||
// Layout for VIA | |||||
// Split backspace | |||||
// Split left shift | |||||
// Split right shift | |||||
#define LAYOUT_all( \ | |||||
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, k0g, \ | |||||
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k3d, k1e, k1f, k1g, \ | |||||
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g, \ | |||||
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \ | |||||
k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k4f, \ | |||||
k50, k51, k52, k57, k5b, k5c, k5d, k5e, k5f, k5g \ | |||||
) { \ | |||||
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, k0g }, \ | |||||
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g }, \ | |||||
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g }, \ | |||||
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, ___, ___, ___ }, \ | |||||
{ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, ___, k4f, ___ }, \ | |||||
{ k50, k51, k52, ___, ___, ___, ___, k57, ___, ___, ___, k5b, k5c, k5d, k5e, k5f, k5g } \ | |||||
} |
@ -0,0 +1,20 @@ | |||||
# Nayeon | |||||
![Nayeon](https://i.imgur.com/OfB5ikbl.jpg) | |||||
Nayeon is a screwless TKL keyboard with an extra key, inspired by a K-pop artist named Im-Nayeon. | |||||
* Keyboard Maintainer: [Ramon Imbao](https://github.com/ramonimbao) | |||||
* Hardware Supported: ATmega32u4 | |||||
Make example for this keyboard (after setting up your build environment): | |||||
make abatskeyboardclub/nayeon:via | |||||
To get to the bootloader, simply press the reset button located at the back of the PCB. You can then flash new firmware onto it. | |||||
Flashing example for this keyboard: | |||||
make abatskeyboardclub/nayeon:via:flash | |||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). |
@ -0,0 +1,18 @@ | |||||
# MCU name | |||||
MCU = atmega32u4 | |||||
# Bootloader selection | |||||
BOOTLOADER = atmel-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 = no # Enable N-Key Rollover | |||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality | |||||
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow | |||||
AUDIO_ENABLE = no # Audio output |
@ -0,0 +1,17 @@ | |||||
/* Copyright 2020-2022 Lorenzo Leonini | |||||
* SPDX-License-Identifier: GPL-2.0-only | |||||
* | |||||
* This program is free software: you can redistribute it and/or modify | |||||
* it under the terms of the GNU General Public License version 2 as | |||||
* published by the Free Software Foundation. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
* GNU General 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 "adm42.h" |
@ -0,0 +1,31 @@ | |||||
/* Copyright 2020-2022 Lorenzo Leonini | |||||
* SPDX-License-Identifier: GPL-2.0-only | |||||
* | |||||
* This program is free software: you can redistribute it and/or modify | |||||
* it under the terms of the GNU General Public License version 2 as | |||||
* published by the Free Software Foundation. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
* GNU General 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_adm42_3x12_6( \ | |||||
K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, \ | |||||
K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, \ | |||||
K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, \ | |||||
K404, K405, K406, K407, K408, K409 \ | |||||
) { \ | |||||
{ K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112 }, \ | |||||
{ K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212 }, \ | |||||
{ K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312 }, \ | |||||
{ KC_NO, KC_NO, KC_NO, K404, K405, K407, K406, K408, K409, KC_NO, KC_NO, KC_NO } \ | |||||
} |
@ -0,0 +1,39 @@ | |||||
/* Copyright 2020-2022 Lorenzo Leonini | |||||
* SPDX-License-Identifier: GPL-2.0-only | |||||
* | |||||
* This program is free software: you can redistribute it and/or modify | |||||
* it under the terms of the GNU General Public License version 2 as | |||||
* published by the Free Software Foundation. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
* GNU General 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 "config_common.h" | |||||
/* Microchip ADM42 sublicensing */ | |||||
#define VENDOR_ID 0x04D8 | |||||
#define PRODUCT_ID 0xE873 | |||||
#define DEVICE_VER 0x0001 | |||||
#define MANUFACTURER Lorenzo Leonini | |||||
#define PRODUCT ADM42 | |||||
#define MATRIX_ROWS 4 | |||||
#define MATRIX_COLS 12 | |||||
#define DIODE_DIRECTION ROW2COL | |||||
#define TAP_CODE_DELAY 1 | |||||
#define DEBOUNCE 10 | |||||
#if defined(CONSOLE_ENABLE) | |||||
#define DEBUG_MATRIX_SCAN_RATE | |||||
#endif |
@ -0,0 +1,27 @@ | |||||
# ADM42 | |||||
![ADM42](https://i.imgur.com/pviCQSQh.jpeg) | |||||
A compact ergonomic 40% ortholinear keyboard. [More info on ADM42.dev](https://adm42.dev) | |||||
* Keyboard Maintainer: [Lorenzo Leonini](https://github.com/lleonini) | |||||
* Hardware Supported: ADM42 | |||||
* Hardware Availability: [Shop](https://shop.adm42.dev) | |||||
Make example for this keyboard (after setting up your build environment): | |||||
make adm42:default | |||||
Flashing example for this keyboard: | |||||
make adm42: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: | |||||
* **Keycode in layout**: Press the key mapped to `RESET` if it is available | |||||
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (the top left key) and plug in the keyboard | |||||
* **Physical reset button**: Briefly press the button on the back of the PCB |
@ -0,0 +1,52 @@ | |||||
/* Copyright 2020-2022 Lorenzo Leonini | |||||
* SPDX-License-Identifier: GPL-2.0-only | |||||
* | |||||
* This program is free software: you can redistribute it and/or modify | |||||
* it under the terms of the GNU General Public License version 2 as | |||||
* published by the Free Software Foundation. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
* GNU General 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/>. | |||||
*/ | |||||
#define MATRIX_COL_PINS { C6, B6, B5, B4, D7, D6, F0, F1, F4, F5, F6, F7 } | |||||
#define MATRIX_ROW_PINS { C7, D5, D3, D2 } | |||||
#define QMK_LED E6 | |||||
#define RGB_DI_PIN B7 | |||||
#define DRIVER_LED_TOTAL 42 | |||||
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 170 | |||||
#define RGB_MATRIX_CENTER { 112, 32 } | |||||
#define RGB_DISABLE_WHEN_USB_SUSPENDED | |||||
#define RGB_MATRIX_LED_PROCESS_LIMIT 21 | |||||
#define RGB_MATRIX_LED_FLUSH_LIMIT 16 | |||||
#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT | |||||
#define RGB_MATRIX_TYPING_HEATMAP_DECREASE_DELAY_MS 20 | |||||
#define RGB_MATRIX_KEYPRESSES | |||||
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS | |||||
#define RGB_MATRIX_SAT_STEP 24 | |||||
#define RGB_MATRIX_HUE_STEP 8 | |||||
#define RGB_MATRIX_VAL_STEP 16 | |||||
#define RGB_MATRIX_SPD_STEP 16 | |||||
#define ENABLE_RGB_MATRIX_BREATHING | |||||
#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT | |||||
#define ENABLE_RGBLIGHT_MODE_STATIC_LIGHT | |||||
#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN | |||||
#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL | |||||
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP | |||||
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE | |||||
#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS | |||||
#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN | |||||
#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL | |||||
#define ENABLE_RGB_MATRIX_PIXEL_RAIN | |||||
#define ENABLE_RGB_MATRIX_DIGITAL_RAIN | |||||
#define ENABLE_RGB_MATRIX_BAND_VAL | |||||
#define ENABLE_RGB_MATRIX_SPLASH |
@ -0,0 +1,3 @@ | |||||
#define HOLD_ON_OTHER_KEY_PRESS_PER_KEY | |||||
#define TAPPING_FORCE_HOLD_PER_KEY | |||||
#define IGNORE_MOD_TAP_INTERRUPT_PER_KEY |
@ -0,0 +1,210 @@ | |||||
/* Copyright 2020-2022 Lorenzo Leonini | |||||
* SPDX-License-Identifier: GPL-2.0-only | |||||
* | |||||
* This program is free software: you can redistribute it and/or modify | |||||
* it under the terms of the GNU General Public License version 2 as | |||||
* published by the Free Software Foundation. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
* GNU General 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 | |||||
enum custom_layers { | |||||
_QWERTY, | |||||
_COLEMAKDH, | |||||
_SPECIAL, | |||||
_EXTRA, | |||||
_ADM, | |||||
_SETUP, | |||||
}; | |||||
#define LW_GRV LWIN_T(KC_GRV) | |||||
#define RW_EQU RWIN_T(KC_EQUAL) | |||||
#define RW_BS RWIN_T(KC_BSLS) | |||||
#define LC_TAB LCTL_T(KC_TAB) | |||||
#define RC_QUT RCTL_T(KC_QUOT) | |||||
#define LS_BPC LSFT_T(KC_BSPC) | |||||
#define RS_SPC RSFT_T(KC_SPC) | |||||
#define LA_BS LALT_T(KC_BSLS) | |||||
#define LW_F11 LWIN_T(KC_F11) | |||||
#define LC_APP LCTL_T(KC_APP) | |||||
#define LA_TOG LALT_T(RGB_TOG) | |||||
#define RW_F12 RWIN_T(KC_F12) | |||||
#define LLS_ESC LT(_SPECIAL, KC_ESC) | |||||
#define LLS_RALT LT(_SPECIAL, KC_RALT) | |||||
#define LLE_ENT LT(_EXTRA, KC_ENT) | |||||
#define LLA_DEL LT(_ADM, KC_DEL) | |||||
#define SETUP MO(_SETUP) | |||||
enum custom_keycodes { | |||||
REFLASH = SAFE_RANGE, | |||||
LC_CIRC, | |||||
RC_DLR, | |||||
DF_QWER, | |||||
DF_COLE, | |||||
}; | |||||
// Not a mistake to have KC_LALT (also) on the right, RALT is kept for compose (LLS_RALT) | |||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||||
[_QWERTY] = LAYOUT_adm42_3x12_6( | |||||
LW_GRV, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, RW_EQU, | |||||
LC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, RC_QUT, | |||||
KC_LALT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LALT, | |||||
LLS_ESC, LS_BPC, LLA_DEL, LLE_ENT, RS_SPC, LLS_RALT | |||||
), | |||||
[_COLEMAKDH] = LAYOUT_adm42_3x12_6( | |||||
LW_GRV, KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, RW_EQU, | |||||
LC_TAB, KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O, RC_QUT, | |||||
KC_LALT, KC_Z, KC_X, KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_LALT, | |||||
LLS_ESC, LS_BPC, LLA_DEL, LLE_ENT, RS_SPC, LLS_RALT | |||||
), | |||||
[_SPECIAL] = LAYOUT_adm42_3x12_6( | |||||
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, RW_BS, | |||||
LC_CIRC, KC_LBRC, KC_RBRC, KC_LPRN, KC_RPRN, KC_EXLM, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_MINS, RC_DLR, | |||||
_______, KC_AMPR, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_UNDS, KC_ASTR, KC_HASH, KC_PERC, KC_TILD, _______, | |||||
KC_ESC, _______, KC_DEL, KC_ENT, _______, KC_RALT | |||||
), | |||||
[_EXTRA] = LAYOUT_adm42_3x12_6( | |||||
LW_F11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, RW_F12, | |||||
KC_LCTL, KC_PAUS, KC_INS, KC_VOLD, KC_VOLU, KC_MUTE, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_APP, KC_RCTL, | |||||
_______, KC_SLEP, KC_PWR, KC_MSTP, KC_MNXT, KC_MPLY, _______, KC_BRID, KC_BRIU, KC_PSCR, KC_WAKE, _______, | |||||
KC_CAPS, _______, _______, _______, _______, KC_CAPS | |||||
), | |||||
[_ADM] = LAYOUT_adm42_3x12_6( | |||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_M_B, RGB_VAD, RGB_VAI, RGB_SAD, RGB_SAI, XXXXXXX, | |||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, RGB_MOD, RGB_RMOD,RGB_HUD, RGB_HUI, XXXXXXX, | |||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_M_P, RGB_SPD, RGB_SPI, XXXXXXX, XXXXXXX, XXXXXXX, | |||||
XXXXXXX, XXXXXXX, XXXXXXX, SETUP, XXXXXXX, XXXXXXX | |||||
), | |||||
[_SETUP] = LAYOUT_adm42_3x12_6( | |||||
REFLASH, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, | |||||
XXXXXXX, DF_QWER, DF_COLE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, | |||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, EEP_RST, | |||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX | |||||
), | |||||
}; | |||||
bool get_ignore_mod_tap_interrupt(uint16_t keycode, keyrecord_t *record) { | |||||
switch (keycode) { | |||||
case RC_QUT: | |||||
return true; | |||||
default: | |||||
return false; | |||||
} | |||||
} | |||||
bool get_hold_on_other_key_press(uint16_t keycode, keyrecord_t *record) { | |||||
switch (keycode) { | |||||
case LLS_ESC: | |||||
case LLS_RALT: | |||||
case LLE_ENT: | |||||
case LLA_DEL: | |||||
return true; | |||||
default: | |||||
return false; | |||||
} | |||||
} | |||||
bool get_tapping_force_hold(uint16_t keycode, keyrecord_t *record) { | |||||
switch (keycode) { | |||||
case LLS_ESC: | |||||
case LLS_RALT: | |||||
return true; | |||||
default: | |||||
return false; | |||||
} | |||||
} | |||||
static uint16_t last_timer = 0; | |||||
static int last_key = 0; | |||||
bool cleanup_return(uint16_t keycode, keyrecord_t *record, bool value) { | |||||
if (record->event.pressed) { | |||||
last_key = keycode; | |||||
last_timer = timer_read(); | |||||
} | |||||
return value; | |||||
} | |||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||||
#ifdef CONSOLE_ENABLE | |||||
uprintf("KL: kc: 0x%04X, col: %u, row: %u, pressed: %b, time: %u, interrupt: %b, count: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed, record->event.time, record->tap.interrupted, record->tap.count); | |||||
#endif | |||||
switch (keycode) { | |||||
case RC_DLR: | |||||
if (record->event.pressed) { | |||||
register_code(KC_RCTL); | |||||
} else { | |||||
unregister_code(KC_RCTL); | |||||
if (last_key == keycode && timer_elapsed(last_timer) <= TAPPING_TERM) { | |||||
send_string("$"); | |||||
} | |||||
} | |||||
return cleanup_return(keycode, record, false); | |||||
case LC_CIRC: | |||||
if (record->event.pressed) { | |||||
register_code(KC_LCTL); | |||||
} else { | |||||
unregister_code(KC_LCTL); | |||||
if (last_key == keycode && timer_elapsed(last_timer) <= TAPPING_TERM) { | |||||
send_string("^"); | |||||
} | |||||
} | |||||
return cleanup_return(keycode, record, false); | |||||
case DF_QWER: | |||||
if (record->event.pressed) { | |||||
set_single_persistent_default_layer(_QWERTY); | |||||
send_string("QWERTY layout"); | |||||
} | |||||
return false; | |||||
case DF_COLE: | |||||
if (record->event.pressed) { | |||||
set_single_persistent_default_layer(_COLEMAKDH); | |||||
send_string("COLEMAKDH layout"); | |||||
} | |||||
return false; | |||||
case REFLASH: | |||||
eeconfig_init(); | |||||
eeconfig_update_rgb_matrix_default(); | |||||
writePinLow(QMK_LED); | |||||
reset_keyboard(); | |||||
return false; | |||||
default: | |||||
return cleanup_return(keycode, record, true); | |||||
} | |||||
} | |||||
void keyboard_pre_init_kb(void) { | |||||
setPinOutput(QMK_LED); | |||||
writePinHigh(QMK_LED); | |||||
} | |||||
void keyboard_post_init_kb(void) { | |||||
debug_enable = true; | |||||
debug_matrix = false; | |||||
debug_keyboard = false; | |||||
writePinHigh(QMK_LED); | |||||
} | |||||
void suspend_power_down_kb(void) { | |||||
writePinLow(QMK_LED); | |||||
} | |||||
void suspend_wakeup_init_kb(void) { | |||||
writePinHigh(QMK_LED); | |||||
} |
@ -0,0 +1,39 @@ | |||||
/* Copyright 2020-2022 Lorenzo Leonini | |||||
* SPDX-License-Identifier: GPL-2.0-only | |||||
* | |||||
* This program is free software: you can redistribute it and/or modify | |||||
* it under the terms of the GNU General Public License version 2 as | |||||
* published by the Free Software Foundation. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
* GNU General 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 | |||||
led_config_t g_led_config = { | |||||
{ | |||||
{12, 11, 8, 7, 4, 3, 36, 37, 38, 39, 40, 41}, | |||||
{13, 10, 9, 6, 5, 2, 35, 34, 33, 32, 31, 30}, | |||||
{14, 15, 16, 17, 18, 1, 24, 25, 26, 27, 28, 29}, | |||||
{NO_LED, NO_LED, NO_LED, 19, 20, 21, 0, 22, 23, NO_LED, NO_LED, NO_LED} | |||||
}, { | |||||
{112, 32}, {92, 36}, {94, 25}, {97, 14}, {80, 13}, {77, 24}, | |||||
{62, 18}, {64, 8}, {49, 6}, {46, 17}, {28, 23}, {30, 13}, | |||||
{14, 11}, {11, 22}, {8, 32}, {26, 34}, {43, 28}, {61, 29}, | |||||
{76, 34}, {78, 46}, {97, 49}, {112, 56}, {127, 49}, {146, 46}, | |||||
{132, 36}, {148, 34}, {164, 29}, {180, 28}, {198, 34}, {215, 32}, | |||||
{212, 22}, {196, 23}, {178, 17}, {161, 18}, {146, 24}, {130, 25}, | |||||
{126, 14}, {143, 13}, {159, 8}, {175, 6}, {194, 13}, {210, 11} | |||||
}, { | |||||
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, | |||||
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, | |||||
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, | |||||
4, 4, 4, 4, 4, 4 | |||||
} | |||||
}; |
@ -0,0 +1,2 @@ | |||||
RGB_MATRIX_ENABLE = yes | |||||
RGB_MATRIX_DRIVER = WS2812 |
@ -0,0 +1,22 @@ | |||||
# MCU name | |||||
MCU = atmega32u4 | |||||
# Bootloader selection | |||||
BOOTLOADER = atmel-dfu | |||||
# Build Options | |||||
# change yes to no to disable | |||||
# | |||||
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite | |||||
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 | |||||
NKRO_ENABLE = no # Enable N-Key Rollover | |||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality | |||||
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow | |||||
AUDIO_ENABLE = no # Audio output | |||||
DEBOUNCE_TYPE = sym_eager_pk | |||||
LTO_ENABLE = yes | |||||
DEFAULT_FOLDER = adm42/rev4 |
@ -1,164 +0,0 @@ | |||||
/* Copyright 2021 adpenrose | |||||
* | |||||
* This program is free software: you can redistribute it and/or modify | |||||
* it under the terms of the GNU General Public License as published by | |||||
* the Free Software Foundation, either version 2 of the License, or | |||||
* (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
* GNU General 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 | |||||
/* Base layout: | |||||
* ,---------------------------------------------------------------------| | |||||
* |` |1 |2 |3 |4 |5 |6 |7 |8 |9 |0 |- |= |Backspace| OLED| | |||||
* |--------------------------------------------------------------- | | |||||
* |Tab |Q |W |E |R |T |Y |U |I |O |P |[ | ] | \ OLED| | |||||
* |---------------------------------------------------------------------| | |||||
* |Caps |A |S |D |F |G |H |J |K |L |; |' | Enter | ENC | | |||||
* |---------------------------------------------------------------------| | |||||
* |Shft |Z |X |C |V |B |N |M |, |. |/ |Shift |Up| M1 | | |||||
* |---------------------------------------------------------------------| | |||||
* |Ctrl|GUI |Alt | Space |MO(2) |MO(3)| |Lt |Dn |Rt | | |||||
* `---------------------------------------------------------------------|' | |||||
*/ | |||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||||
/* Base */ | |||||
[0] = LAYOUT_65_ansi_blocker( | |||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, | |||||
KC_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_LGUI, 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_MUTE, | |||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, | |||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(2), MO(3), KC_LEFT, KC_DOWN, KC_RIGHT | |||||
), | |||||
[1] = LAYOUT_65_ansi_blocker( | |||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||||
_______, _______, _______, _______, _______, _______, _______, _______, _______ | |||||
), | |||||
[2] = LAYOUT_65_ansi_blocker( | |||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||||
_______, _______, _______, _______, _______, _______, _______, _______, _______ | |||||
), | |||||
[3] = LAYOUT_65_ansi_blocker( | |||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, | |||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||||
RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, | |||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||||
_______, _______, _______, KC_SPC, _______, _______, _______, _______, _______ | |||||
), | |||||
}; | |||||
/* Encoder */ | |||||
#ifdef ENCODER_ENABLE | |||||
bool encoder_update_user(uint8_t index, bool clockwise) { | |||||
static uint8_t selected_layer = 0; /* Used to change the layer using the encoder. */ | |||||
if (clockwise){ | |||||
/* Check if left shift is pressed: */ | |||||
if (selected_layer < 3 && get_mods() & MOD_BIT(KC_LSFT)){ | |||||
selected_layer ++; | |||||
layer_move(selected_layer); /* Jump up one layer. */ | |||||
} else { | |||||
/* If shift isn't pressed, encoder will do this stuff: */ | |||||
switch (get_highest_layer(layer_state)){ | |||||
case 3: | |||||
tap_code(KC_MNXT); | |||||
break; | |||||
default: | |||||
tap_code(KC_VOLU); | |||||
break; | |||||
} | |||||
} | |||||
} else { | |||||
/* Check if left shift is pressed: */ | |||||
if (selected_layer > 0 && get_mods() & MOD_BIT(KC_LSFT)){ | |||||
selected_layer --; | |||||
layer_move(selected_layer); /* Go down one layer. */ | |||||
} else { | |||||
/* If shift isn't pressed, encoder will do this stuff: */ | |||||
switch (get_highest_layer(layer_state)){ | |||||
case 3: | |||||
tap_code(KC_MPRV); | |||||
break; | |||||
default: | |||||
tap_code(KC_VOLD); | |||||
break; | |||||
} | |||||
} | |||||
} | |||||
return false; | |||||
} | |||||
#endif | |||||
/* Rotation of the OLED: */ | |||||
#ifdef OLED_ENABLE | |||||
/* Function that renders the kintsugi logo in the desired order. */ | |||||
static void render_logo(void) { | |||||
static const char PROGMEM logo_1[] = { | |||||
0x83, 0x84, 0x85, 0x86, 0x87, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0x00 | |||||
}; | |||||
static const char PROGMEM logo_2[] = { | |||||
0x88, 0x89, 0x8A, 0x8B, 0x8C, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0x00 | |||||
}; | |||||
static const char PROGMEM logo_3[] = { | |||||
0x8D, 0x8E, 0x8F, 0x90, 0x91, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0x00 | |||||
}; | |||||
oled_set_cursor(1,0); | |||||
oled_write_P(logo_1, false); | |||||
oled_set_cursor(1,4); | |||||
oled_write_P(logo_2, false); | |||||
oled_set_cursor(1,8); | |||||
oled_write_P(logo_3, false); | |||||
} | |||||
/* Function that renders the current layer to the user. */ | |||||
void render_layer(void) { | |||||
oled_set_cursor(0,12); | |||||
switch (get_highest_layer(layer_state)){ | |||||
case 0: | |||||
oled_write_P(PSTR("_BASE"), false); | |||||
break; | |||||
case 1: | |||||
oled_write_P(PSTR("_KCAD"), false); | |||||
break; | |||||
case 2: | |||||
oled_write_P(PSTR("_NMPD"), false); | |||||
break; | |||||
case 3: | |||||
oled_write_P(PSTR("_FNCT"), false); | |||||
break; | |||||
default: | |||||
oled_write_P(PSTR("_OhNo"), false); | |||||
break; | |||||
} | |||||
} | |||||
/* The following function displays wpm to the user. */ | |||||
void render_wpm(void) { | |||||
oled_set_cursor(1,14); | |||||
oled_write(get_u8_str(get_current_wpm(), '0'), false); | |||||
oled_set_cursor(1,15); | |||||
oled_write_P(PSTR("WPM"), false); | |||||
} | |||||
/* Function that renders stuff on the oled: */ | |||||
bool oled_task_user(void) { | |||||
render_logo(); | |||||
render_layer(); | |||||
render_wpm(); | |||||
return false; | |||||
} | |||||
#endif |
@ -1 +0,0 @@ | |||||
# Franky keymap for Kintsugi. Here to serve as a way to test snippets of code. |
@ -0,0 +1,454 @@ | |||||
/* Copyright 2021 adpenrose | |||||
* | |||||
* This program is free software: you can redistribute it and/or modify | |||||
* it under the terms of the GNU General Public License as published by | |||||
* the Free Software Foundation, either version 2 of the License, or | |||||
* (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
* GNU General 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 | |||||
/* Base layout: | |||||
* ,---------------------------------------------------------------------| | |||||
* |` |1 |2 |3 |4 |5 |6 |7 |8 |9 |0 |- |= |Backspace| OLED| | |||||
* |--------------------------------------------------------------- | | |||||
* |Tab |Q |W |E |R |T |Y |U |I |O |P |[ | ] | \ OLED| | |||||
* |---------------------------------------------------------------------| | |||||
* |Caps |A |S |D |F |G |H |J |K |L |; |' | Enter | ENC | | |||||
* |---------------------------------------------------------------------| | |||||
* |Shft |Z |X |C |V |B |N |M |, |. |/ |Shift |Up| M1 | | |||||
* |---------------------------------------------------------------------| | |||||
* |Ctrl|GUI |Alt | Space |MO(2) |MO(3)| |Lt |Dn |Rt | | |||||
* `---------------------------------------------------------------------|' | |||||
*/ | |||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||||
/* Base */ | |||||
[0] = LAYOUT_65_ansi_blocker( | |||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, | |||||
KC_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_MUTE, | |||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, | |||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(2), MO(3), KC_LEFT, KC_DOWN, KC_RIGHT | |||||
), | |||||
[1] = LAYOUT_65_ansi_blocker( | |||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||||
_______, _______, _______, _______, _______, _______, _______, _______, _______ | |||||
), | |||||
[2] = LAYOUT_65_ansi_blocker( | |||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||||
_______, _______, _______, _______, _______, _______, _______, _______, _______ | |||||
), | |||||
[3] = LAYOUT_65_ansi_blocker( | |||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, | |||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||||
QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, | |||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||||
_______, _______, _______, _______, _______, _______, _______, _______, _______ | |||||
), | |||||
}; | |||||
/* Encoder */ | |||||
#ifdef ENCODER_ENABLE | |||||
bool encoder_update_user(uint8_t index, bool clockwise) { | |||||
/* Used to change the layer using the encoder. */ | |||||
static int8_t selected_layer = 0; | |||||
if (clockwise){ | |||||
/* Check if left shift is pressed: */ | |||||
if (selected_layer < 4 && get_mods() & MOD_BIT(KC_LSFT)){ | |||||
selected_layer ++; | |||||
/* If already on the last layer, jumps back to the first layer: */ | |||||
if (selected_layer == 4) { | |||||
selected_layer = 0; | |||||
} | |||||
/* Move to the selected layer. */ | |||||
layer_move(selected_layer); | |||||
} else if (get_mods() & MOD_BIT(KC_RSFT)){ /* Check if right shift is pressed: */ | |||||
switch (get_highest_layer(layer_state)){ | |||||
default: | |||||
/* Go to the next track. */ | |||||
tap_code(KC_MNXT); | |||||
break; | |||||
} | |||||
} else { | |||||
/* If shift isn't pressed, encoder will do this stuff: */ | |||||
switch (get_highest_layer(layer_state)){ | |||||
default: | |||||
/* Turn up the volume of the system. */ | |||||
tap_code(KC_VOLU); | |||||
break; | |||||
} | |||||
} | |||||
} else { | |||||
/* Check if left shift is pressed: */ | |||||
if (selected_layer > -1 && get_mods() & MOD_BIT(KC_LSFT)){ | |||||
selected_layer --; | |||||
/* If already on the first layer, jumps up to the last layer: */ | |||||
if (selected_layer == -1) { | |||||
selected_layer = 3; | |||||
} | |||||
/* Move to the selected layer. */ | |||||
layer_move(selected_layer); | |||||
} else if (get_mods() & MOD_BIT(KC_RSFT)){ /* Check if right shift is pressed: */ | |||||
switch (get_highest_layer(layer_state)){ | |||||
default: | |||||
/* Go to the previous track. */ | |||||
tap_code(KC_MPRV); | |||||
break; | |||||
} | |||||
} else { | |||||
/* If shift isn't pressed, encoder will do this stuff: */ | |||||
switch (get_highest_layer(layer_state)){ | |||||
default: | |||||
/* Turn down the volume of the system. */ | |||||
tap_code(KC_VOLD); | |||||
break; | |||||
} | |||||
} | |||||
} | |||||
return false; | |||||
} | |||||
#endif | |||||
#ifdef OLED_ENABLE | |||||
/*=========================================== OLED CONFIGURATION ===========================================*/ | |||||
bool oled_horizontal = true; // OLED rotation (true = horizontal, false = vertical) | |||||
bool graph_direction = false; // Graph movement (true = right to left, false = left to right) | |||||
float graph_top_wpm = 100.0; // Minimum WPM required to reach the top of the graph | |||||
int graph_refresh = 1000; // In milliseconds, determines the graph-line frequency | |||||
int icon_med_wpm = 50; // WPM required to display the medium snail | |||||
int icon_fast_wpm = 72; // WPM required to display the fast snail | |||||
// Layer names: Should be exactly 5 characters in length if vertical display, or 6 characters if horizontal | |||||
#define MA_LAYER_NAME "QWRTY" // Layer 0 name | |||||
#define L1_LAYER_NAME "KICAD" // Layer 1 name | |||||
#define L2_LAYER_NAME "NMPAD" // Layer 2 name | |||||
#define L3_LAYER_NAME "FUNCT" // Layer 3 name | |||||
// Constants required for the background render, the graph render and the WPM counter. THESE VALUES SHOULD NOT BE CHANGED. | |||||
bool first_loop = true; | |||||
int timer = 0; | |||||
int wpm_limit = 20; | |||||
int max_wpm = -1; | |||||
int wpm_icon = -1; | |||||
int graph_lines[65]; | |||||
/*================================================================================================================*/ | |||||
/* Rotation of the OLED: */ | |||||
oled_rotation_t oled_init_user(oled_rotation_t rotation) { | |||||
if (oled_horizontal) { | |||||
return OLED_ROTATION_180; | |||||
} else { | |||||
return OLED_ROTATION_270; | |||||
} | |||||
} | |||||
// Toggles pixel on/off, converts horizontal coordinates to vertical equivalent if necessary | |||||
static void write_pixel(int x, int y, bool onoff) { | |||||
if (oled_horizontal) { | |||||
oled_write_pixel(x, y, onoff); | |||||
} else { | |||||
oled_write_pixel(y, 127 - x, onoff); | |||||
} | |||||
} | |||||
/*====================================== BASE KEYBOARD MATRIX IMAGES =======================================*/ | |||||
// Draw static background image to OLED (keyboard with no bottom row) | |||||
static void render_background(void) { | |||||
if (oled_horizontal) { | |||||
static const char PROGMEM oled_keymap_horizontal[] = { | |||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |||||
0x84, 0x80, 0x80, 0x80, 0x80, 0x04, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x00, 0x80, 0x04, | |||||
0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, | |||||
0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, | |||||
0x00, 0x80, 0x04, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x00, | |||||
0x80, 0x04, 0x04, 0x04, 0x04, 0x84, 0x84, 0x84, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |||||
0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, | |||||
0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, | |||||
0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, | |||||
0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, | |||||
0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, | |||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |||||
0x42, 0x42, 0x02, 0x02, 0x02, 0x02, 0x42, 0x42, 0x00, 0x00, 0x00, 0x00, 0x42, 0x40, 0x00, 0x00, | |||||
0x00, 0x02, 0x40, 0x40, 0x40, 0x40, 0x42, 0x40, 0x40, 0x40, 0x40, 0x42, 0x40, 0x40, 0x40, 0x40, | |||||
0x42, 0x40, 0x40, 0x40, 0x40, 0x42, 0x40, 0x40, 0x40, 0x40, 0x42, 0x40, 0x40, 0x40, 0x40, 0x42, | |||||
0x40, 0x40, 0x40, 0x00, 0x02, 0x00, 0x00, 0x40, 0x40, 0x02, 0x00, 0x00, 0x00, 0x40, 0x42, 0x02, | |||||
0x02, 0x02, 0x02, 0x42, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, | |||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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(oled_keymap_horizontal, sizeof(oled_keymap_horizontal)); | |||||
} else { | |||||
static const char PROGMEM oled_keymap_vertical[] = { | |||||
0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, | |||||
0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |||||
0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, | |||||
0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |||||
0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, | |||||
0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |||||
0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, | |||||
0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |||||
0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, | |||||
0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |||||
0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, | |||||
0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |||||
0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, | |||||
0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |||||
0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, | |||||
0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |||||
0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, | |||||
0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |||||
0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, | |||||
0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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(oled_keymap_vertical, sizeof(oled_keymap_vertical)); | |||||
} | |||||
} | |||||
/*================================================================================================================*/ | |||||
/*=============================== PIXEL'S COORDINATES FOR EACH PHYSICAL KEY ================================*/ | |||||
// Location of OLED keyboard's top left pixel, relative to the display | |||||
static const int keymap_template[2] = {46, 0}; | |||||
// Location of key highlights top left pixels, relative to keymap_template {X, Y, Key length in px} | |||||
static int keymap_coords[MATRIX_ROWS][MATRIX_COLS][3] = { | |||||
{ {0, 0, 1}, {5, 0, 1}, {10, 0, 1}, {15, 0, 1}, {20, 0, 1}, {25, 0, 1}, {30, 0, 1} }, | |||||
{ {0, 5, 5}, {9, 5, 1}, {14, 5, 1}, {19, 5, 1}, {24, 5, 1}, {29, 5, 1}, {34, 5, 1} }, | |||||
{ {0, 10, 6}, {10, 10, 1}, {15, 10, 1}, {20, 10, 1}, {25, 10, 1}, {30, 10, 1}, {35, 10, 1} }, | |||||
{ {0, 15, 8}, {12, 15, 1}, {17, 15, 1}, {22, 15, 1}, {27, 15, 1}, {32, 15, 1}, {37, 15, 1} }, | |||||
{ {0, 20, 2}, {6, 20, 2}, {12, 20, 2}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {18, 20, 33} }, | |||||
{ {35, 0, 1}, {40, 0, 1}, {45, 0, 1}, {50, 0, 1}, {55, 0, 1}, {60, 0, 1}, {65, 0, 8} }, | |||||
{ {39, 5, 1}, {44, 5, 1}, {49, 5, 1}, {54, 5, 1}, {59, 5, 1}, {64, 5, 1}, {69, 5, 4} }, | |||||
{ {40, 10, 1}, {45, 10, 1}, {50, 10, 1}, {55, 10, 1}, {60, 10, 1}, {65, 10, 8}, {77, 10, 1} }, | |||||
{ {42, 15, 1}, {47, 15, 1}, {52, 15, 1}, {57, 15, 1}, {62, 15, 6}, {72, 15, 1}, {77, 15, 1} }, | |||||
{ {0, 0, 0}, {0, 0, 0}, {55, 20, 2}, {61, 20, 2}, {67, 20, 1}, {72, 20, 1}, {77, 20, 1} }, | |||||
}; | |||||
// Toggles pixels surrounding key | |||||
static void render_keymap(uint8_t key_row, uint8_t key_col, bool onoff) { | |||||
int length = keymap_coords[key_row][key_col][2] + 4; | |||||
int left = keymap_coords[key_row][key_col][0] + keymap_template[0]; | |||||
int top = keymap_coords[key_row][key_col][1] + keymap_template[1]; | |||||
int right = left + length - 1; | |||||
int bottom = top + 4; | |||||
// Draw top and bottom walls (horizontal for <length>px) | |||||
for (int x = 0; x < length; x++) { | |||||
write_pixel(left + x, top, onoff); | |||||
write_pixel(left + x, bottom, onoff); | |||||
} | |||||
// Draw left and right walls (vertical for 5px) | |||||
for (int y = 0; y < 5; y++) { | |||||
write_pixel(left, top + y, onoff); | |||||
write_pixel(right, top + y, onoff); | |||||
} | |||||
} | |||||
/*================================================================================================================*/ | |||||
/*============================================= LAYER'S NAME ===============================================*/ | |||||
// Write active layer name | |||||
static void render_layer_state(void) { | |||||
if (oled_horizontal) { | |||||
oled_set_cursor(0, 0); | |||||
} else { | |||||
oled_set_cursor(0, 15); | |||||
} | |||||
switch (get_highest_layer(layer_state)) { | |||||
case 0: | |||||
oled_write_P(PSTR(MA_LAYER_NAME), false); | |||||
break; | |||||
case 1: | |||||
oled_write_P(PSTR(L1_LAYER_NAME), false); | |||||
break; | |||||
case 2: | |||||
oled_write_P(PSTR(L2_LAYER_NAME), false); | |||||
break; | |||||
case 3: | |||||
oled_write_P(PSTR(L3_LAYER_NAME), false); | |||||
break; | |||||
default: | |||||
oled_write("ERROR", false); | |||||
break; | |||||
} | |||||
} | |||||
/*================================================================================================================*/ | |||||
/*==================================== WPM COUNTERS (CURRENT AND MAX) ======================================*/ | |||||
// Update WPM counters | |||||
static void render_wpm_counters(int current_wpm) { | |||||
int cursorposition_cur = 2; | |||||
int cursorposition_max = 1; | |||||
if (oled_horizontal == false) { | |||||
cursorposition_cur = 13; | |||||
cursorposition_max = 14; | |||||
} | |||||
oled_set_cursor(0, cursorposition_cur); | |||||
oled_write(get_u8_str(get_current_wpm(), '0'), false); | |||||
char wpm_counter[4]; | |||||
wpm_counter[3] = '\0'; | |||||
wpm_counter[2] = '0' + current_wpm % 10; | |||||
wpm_counter[1] = '0' + (current_wpm / 10) % 10; | |||||
wpm_counter[0] = '0' + (current_wpm / 100) % 10; | |||||
if (current_wpm > max_wpm) { | |||||
max_wpm = current_wpm; | |||||
wpm_limit = max_wpm + 20; | |||||
oled_set_cursor(0, cursorposition_max); | |||||
oled_write(wpm_counter, false); | |||||
} | |||||
} | |||||
/*================================================================================================================*/ | |||||
/*============================================== WPM GRAPH =================================================*/ | |||||
// Update WPM graph | |||||
static void render_wpm_graph(int current_wpm) { | |||||
int line_height = ((current_wpm / graph_top_wpm) * 7); | |||||
if (line_height > 7) { | |||||
line_height = 7; | |||||
} | |||||
// Count graph line pixels, return if nothing to draw | |||||
int pixel_count = line_height; | |||||
for (int i = 0; i < 64; i++) { | |||||
pixel_count += graph_lines[i]; | |||||
} | |||||
if (pixel_count == 0) { | |||||
return; | |||||
} | |||||
// Shift array elements left or right depending on graph_direction, append new graph line | |||||
if (graph_direction) { | |||||
for (int i = 0; i < 64; i++) { | |||||
graph_lines[i] = graph_lines[i + 1]; | |||||
} | |||||
graph_lines[64] = line_height; | |||||
} else { | |||||
for (int i = 64; i > 0; i--) { | |||||
graph_lines[i] = graph_lines[i - 1]; | |||||
} | |||||
graph_lines[0] = line_height; | |||||
} | |||||
// Draw all graph lines (left to right, bottom to top) | |||||
int draw_count, arrpos; | |||||
for (int x = 1; x <= 127; x += 2) { | |||||
arrpos = x / 2; | |||||
draw_count = graph_lines[arrpos]; | |||||
for (int y = 31; y >= 25; y--) { | |||||
if (draw_count > 0) { | |||||
write_pixel(x, y, true); | |||||
draw_count--; | |||||
} else { | |||||
write_pixel(x, y, false); | |||||
} | |||||
} | |||||
} | |||||
} | |||||
/*================================================================================================================*/ | |||||
/*======================================== WPM BASED SNAIL ICON ============================================*/ | |||||
// Update WPM snail icon | |||||
static void render_wpm_icon(int current_wpm) { | |||||
// wpm_icon is used to prevent unnecessary redraw | |||||
if ((current_wpm < icon_med_wpm) && (wpm_icon != 0)) { | |||||
wpm_icon = 0; | |||||
} else if ((current_wpm >= icon_med_wpm) && (current_wpm < icon_fast_wpm) && (wpm_icon != 1)) { | |||||
wpm_icon = 1; | |||||
} else if ((current_wpm >= icon_fast_wpm) && (wpm_icon != 2)) { | |||||
wpm_icon = 2; | |||||
} else { | |||||
return; | |||||
} | |||||
static const char PROGMEM snails[][2][24] = { | |||||
{{0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0xA0, 0x20, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00}, | |||||
{0x40, 0x60, 0x50, 0x4E, 0x51, 0x64, 0x4A, 0x51, 0x54, 0x49, 0x41, 0x62, 0x54, 0x49, 0x46, 0x41, 0x40, 0x30, 0x09, 0x04, 0x02, 0x01, 0x00, 0x00}}, | |||||
{{0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x04, 0x98, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00}, | |||||
{0x60, 0x50, 0x54, 0x4A, 0x51, 0x64, 0x4A, 0x51, 0x55, 0x49, 0x41, 0x62, 0x54, 0x49, 0x46, 0x41, 0x21, 0x10, 0x0A, 0x08, 0x05, 0x02, 0x00, 0x00}}, | |||||
{{0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x10, 0x10, 0x10, 0x20, 0x40, 0x40, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00}, | |||||
{0x60, 0x58, 0x54, 0x62, 0x49, 0x54, 0x52, 0x51, 0x55, 0x49, 0x62, 0x52, 0x4D, 0x45, 0x46, 0x22, 0x21, 0x11, 0x10, 0x0A, 0x08, 0x05, 0x02, 0x00}} | |||||
}; | |||||
if (oled_horizontal) { | |||||
oled_set_cursor(3, 1); | |||||
oled_write_raw_P(snails[wpm_icon][0], sizeof(snails[wpm_icon][0])); | |||||
oled_set_cursor(3, 2); | |||||
oled_write_raw_P(snails[wpm_icon][1], sizeof(snails[wpm_icon][1])); | |||||
} else { | |||||
oled_set_cursor(0, 11); | |||||
oled_write_raw_P(snails[wpm_icon][0], sizeof(snails[wpm_icon][0])); | |||||
oled_set_cursor(0, 12); | |||||
oled_write_raw_P(snails[wpm_icon][1], sizeof(snails[wpm_icon][1])); | |||||
} | |||||
} | |||||
/*================================================================================================================*/ | |||||
/* Function that renders stuff on the oled */ | |||||
bool oled_task_user(void) { | |||||
// Draw OLED keyboard, preventing redraw. | |||||
if (first_loop) { | |||||
render_background(); | |||||
first_loop = false; | |||||
} | |||||
// Get current WPM | |||||
int current_wpm = get_current_wpm(); | |||||
// Write active layer name to display | |||||
render_layer_state(); | |||||
// Update WPM counters | |||||
render_wpm_counters(current_wpm); | |||||
// Update WPM snail icon | |||||
render_wpm_icon(current_wpm); | |||||
// Update WPM graph every graph_refresh milliseconds | |||||
if (timer_elapsed(timer) > graph_refresh) { | |||||
render_wpm_graph(current_wpm); | |||||
timer = timer_read(); | |||||
} | |||||
return false; | |||||
} | |||||
#endif | |||||
// Called by QMK during key processing | |||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||||
#ifdef OLED_ENABLE | |||||
// Toggle pixels surrounding key | |||||
render_keymap(record->event.key.row, record->event.key.col, record->event.pressed); | |||||
#endif | |||||
return true; | |||||
} |
@ -0,0 +1,30 @@ | |||||
# SnailMap-ported keymap for the Kintsugi | |||||
## Features | |||||
- Keyboard matrix that highlights whichever key is currently pressed. | |||||
- Little cute snail icon that changes acording to the current WPM. | |||||
- Counters for current and max WPM values. | |||||
- Active layer name. | |||||
- Mini WPM graph. | |||||
## How to customize | |||||
The `OLED configuration variables` can be used to easily customize the display: | |||||
``` | |||||
oled_horizontal - Horizontal or vertical orientation | |||||
graph_direction - Graph movement direction | |||||
graph_refresh - Frequency of graph lines | |||||
graph_top_wpm - WPM required to reach the top of the graph | |||||
icon_med_wpm - WPM required to display the medium snail | |||||
icon_fast_wpm - WPM required to display the fast snail | |||||
MA_LAYER_NAME - Layer 0 display name | |||||
L1_LAYER_NAME - Layer 1 display name | |||||
L2_LAYER_NAME - Layer 2 display name | |||||
L3_LAYER_NAME - Layer 3 display name | |||||
``` | |||||
___ | |||||
###### *This keymap is an adaptation designed to work with the Kintsugi keyboard. The original SnailMap keymap was created by [dogspace](https://github.com/dogspace) for the Nibble keyboard, and you can check it [here](https://github.com/qmk/qmk_firmware/tree/master/keyboards/nullbitsco/nibble/keymaps/snailmap).* |
@ -0,0 +1,5 @@ | |||||
VIA_ENABLE = yes | |||||
LTO_ENABLE = yes | |||||
WPM_ENABLE = yes | |||||
SPACE_CADET_ENABLE = no | |||||
MAGIC_ENABLE = no |
@ -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 <http://www.gnu.org/licenses/>. | |||||
*/ | |||||
/* | |||||
* This file was auto-generated by: | |||||
* `qmk chibios-confmigrate -i keyboards/handwired/onekey/bluepill/chconf.h -r platforms/chibios/common/configs/chconf.h` | |||||
*/ | |||||
#pragma once | |||||
#define CH_CFG_ST_TIMEDELTA 0 | |||||
#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE | |||||
#include_next <chconf.h> |
@ -0,0 +1,38 @@ | |||||
/* Copyright 2022 DmNosachev | |||||
* | |||||
* This program is free software: you can redistribute it and/or modify | |||||
* it under the terms of the GNU General Public License as published by | |||||
* the Free Software Foundation, either version 2 of the License, or | |||||
* (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
* GNU General 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 "config_common.h" | |||||
/* | |||||
* Keyboard Matrix Assignments | |||||
* | |||||
* Change this to how you wired your keyboard | |||||
* COLS: AVR pins used for columns, left to right | |||||
* ROWS: AVR pins used for rows, top to bottom | |||||
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) | |||||
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) | |||||
* | |||||
*/ | |||||
/* key matrix pins */ | |||||
#define MATRIX_COL_PINS { B10, B1, B0, A7, A6, B5, B4, B3, A15, A10, A9 } | |||||
#define MATRIX_ROW_PINS { A5, A4, A3, A2 } | |||||
#define UNUSED_PINS {B12, B13, B14, B15, A8, B6, B7, B8, B9, A1, A0, C15, C14, C13} | |||||
/* COL2ROW, ROW2COL*/ | |||||
#define DIODE_DIRECTION COL2ROW |
@ -0,0 +1,26 @@ | |||||
/* 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 <http://www.gnu.org/licenses/>. | |||||
*/ | |||||
/* | |||||
* This file was auto-generated by: | |||||
* `qmk chibios-confmigrate -i keyboards/handwired/onekey/bluepill/halconf.h -r platforms/chibios/common/configs/halconf.h` | |||||
*/ | |||||
#pragma once | |||||
#define HAL_USE_PWM TRUE | |||||
#include_next <halconf.h> |
@ -0,0 +1,30 @@ | |||||
/* Copyright 2020 QMK | |||||
* | |||||
* This program is free software: you can redistribute it and/or modify | |||||
* it under the terms of the GNU General Public License as published by | |||||
* the Free Software Foundation, either version 2 of the License, or | |||||
* (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
* GNU General Public License for more details. | |||||
* | |||||
* You should have received a copy of the GNU General Public License | |||||
* along with this program. If not, see <http://www.gnu.org/licenses/>. | |||||
*/ | |||||
/* | |||||
* This file was auto-generated by: | |||||
* `qmk chibios-confmigrate -i keyboards/handwired/onekey/bluepill/mcuconf.h -r platforms/chibios/STM32_F103_STM32DUINO/configs/mcuconf.h` | |||||
*/ | |||||
#pragma once | |||||
#include_next <mcuconf.h> | |||||
#undef STM32_PWM_USE_TIM2 | |||||
#define STM32_PWM_USE_TIM2 TRUE | |||||
#undef STM32_SPI_USE_SPI2 | |||||
#define STM32_SPI_USE_SPI2 FALSE |
@ -0,0 +1,10 @@ | |||||
# MCU name | |||||
MCU = STM32F103 | |||||
# Bootloader selection | |||||
BOOTLOADER = stm32duino | |||||
# Enter lower-power sleep mode when on the ChibiOS idle thread | |||||
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE | |||||
BOOTMAGIC_ENABLE = yes |
@ -0,0 +1,137 @@ | |||||
/* | |||||
Copyright 2022 DmNosachev | |||||
This program is free software: you can redistribute it and/or modify | |||||
it under the terms of the GNU General Public License as published by | |||||
the Free Software Foundation, either version 2 of the License, or | |||||
(at your option) any later version. | |||||
This program is distributed in the hope that it will be useful, | |||||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
GNU General 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 | |||||
// Defines names for use in layer keycodes and the keymap | |||||
enum layer_names { | |||||
_QW, | |||||
_RS, | |||||
_LW | |||||
}; | |||||
#define MC1 COMP_FR_QUOTES | |||||
#define MC2 COMP_NBSP_EM_DASH | |||||
#define MC3 COMP_NBSP | |||||
enum custom_keycodes { | |||||
COMP_FR_QUOTES = SAFE_RANGE, // Compose: french quotes | |||||
COMP_NBSP_EM_DASH, // Compose: nbsp followed by em dash | |||||
COMP_NBSP, // Compose: nbsp | |||||
PWD1, | |||||
PWD2, | |||||
PWD3, // KP password | |||||
}; | |||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||||
/* | |||||
,----------------------------------. ,----------------------------------. | |||||
|Q/Alt | W | E | R | T | | Y | U | I | O | P | | |||||
|------+------+------+------+------| |------+------+------+------+------| | |||||
|A/Ctrl| S | D | F | G | | H | J | K | L |;/Ctrl| | |||||
|------+------+------+------+------|------.,------|------+------+------+------+------| | |||||
|Z/Shft| X | C | V | B |Bkspc ||Delete| N | M | , | . |?/Shft| | |||||
|------+------+------+------+------| || |------+------+------+------+------| | |||||
| ~ | Tab | - | GUI |Spc/LW|------'`------|Ent/RS| |\ | [ | ] | "' | | |||||
`----------------------------------' `----------------------------------' | |||||
*/ | |||||
[_QW] = LAYOUT( /* QWERTY */ | |||||
LALT_T(KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, | |||||
LCTL_T(KC_A), KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, RCTL_T(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_GRV, KC_TAB, KC_MINS, KC_LGUI, LT(_LW, KC_SPC), KC_BSPC, KC_DEL, LT(_RS, KC_ENT), KC_BSLS, KC_LBRC, KC_RBRC, KC_QUOT | |||||
), | |||||
/* | |||||
,----------------------------------. ,----------------------------------. | |||||
| PrnSc| pwd1 | up | pwd2 | PgUp | | Home | F7 | F8 | F9 | | | |||||
|------+------+------+------+------| |------+------+------+------+------| | |||||
| trns | left | down | right| PgDn | | End | F4 | F5 | F6 | trns | | |||||
|------+------+------+------+------|------.,------|------+------+------+------+------| | |||||
| trns | MC2 | MC3 | ( | ) | || | AltGr| F1 | F2 | F3 | trns | | |||||
|------+------+------+------+------| || |------+------+------+------+------| | |||||
| trns | C+S | Ins | MC1 | trns |------'`------| trns | F10 | F11 | F12 | trns | | |||||
`----------------------------------' `----------------------------------' | |||||
*/ | |||||
[_RS] = LAYOUT( /* RAISE */ | |||||
KC_PSCR, PWD1, KC_UP, PWD2, KC_PGUP, KC_HOME, KC_F7, KC_F8, KC_F9, _______, | |||||
_______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_END, KC_F4, KC_F5, KC_F6, _______, | |||||
_______, MC2, MC3, KC_LPRN, KC_RPRN, KC_RALT, KC_F1, KC_F2, KC_F3, _______, | |||||
_______, LCTL(KC_LSFT), _______, MC1, _______, _______, _______, _______, KC_F10, KC_F11, KC_F12, _______ | |||||
), | |||||
/* | |||||
,----------------------------------. ,----------------------------------. | |||||
| ! | @ | # | $ | % | | / | 7 | 8 | 9 | . | | |||||
|------+------+------+------+------| |------+------+------+------+------| | |||||
| trns | ^ | & | * | PWD3 | | * | 4 | 5 | 6 | trns | | |||||
|------+------+------+------+------|------.,------|------+------+------+------+------| | |||||
| trns |r_tog | r_hue| r_sat| r_val| || | + | 1 | 2 | 3 | trns | | |||||
|------+------+------+------+------| || |------+------+------+------+------| | |||||
| trns | Esc |RESET |capslk| trns |------'`------| trns | 0 | - | += | trns | | |||||
`----------------------------------' `----------------------------------' | |||||
*/ | |||||
[_LW] = LAYOUT( /* LOWER */ | |||||
KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_PSLS, KC_7, KC_8, KC_9, KC_PDOT, | |||||
_______, KC_CIRC, KC_AMPR, KC_ASTR, PWD3, KC_PAST, KC_4, KC_5, KC_6, _______, | |||||
_______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, KC_PPLS, KC_1, KC_2, KC_3, _______, | |||||
_______, KC_ESC , RESET, KC_CAPS, _______, _______, _______, _______, KC_0, KC_PMNS, KC_EQL, _______ | |||||
) | |||||
}; | |||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||||
switch (keycode) { | |||||
case MC1: /* French quotes */ | |||||
if (record->event.pressed) { | |||||
SEND_STRING(SS_TAP(X_RALT) SS_DELAY(100) "<<" SS_DELAY(100) SS_TAP(X_RALT) SS_DELAY(100) ">>" SS_TAP(X_LEFT)); | |||||
} | |||||
break; | |||||
case MC2: /* NB-space + mdash + space */ | |||||
if (record->event.pressed) { | |||||
SEND_STRING(SS_TAP(X_RALT) SS_DELAY(100) " " SS_DELAY(100) SS_TAP(X_RALT) SS_DELAY(100) "--- "); | |||||
} | |||||
break; | |||||
case MC3: /* NB-space */ | |||||
if (record->event.pressed) { | |||||
SEND_STRING(SS_TAP(X_RALT) SS_DELAY(100) " "); | |||||
} | |||||
break; | |||||
case PWD1: | |||||
if (record->event.pressed) { | |||||
SEND_STRING("NakedLunch1991\n"); | |||||
} | |||||
break; | |||||
case PWD2: | |||||
if (record->event.pressed) { | |||||
SEND_STRING("O94nx4sUWHc4akud\n"); | |||||
} | |||||
break; | |||||
case PWD3: | |||||
if (record->event.pressed) { | |||||
SEND_STRING("Q123qQ123q\n"); | |||||
} | |||||
break; | |||||
} | |||||
return true; | |||||
}; |
@ -0,0 +1,15 @@ | |||||
/* | |||||
* This program is free software: you can redistribute it and/or modify | |||||
* it under the terms of the GNU General Public License as published by | |||||
* the Free Software Foundation, either version 2 of the License, or | |||||
* (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
* GNU General 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 "at6.h" |
@ -0,0 +1,24 @@ | |||||
/* | |||||
* This program is free software: you can redistribute it and/or modify | |||||
* it under the terms of the GNU General Public License as published by | |||||
* the Free Software Foundation, either version 2 of the License, or | |||||
* (at your option) any later version. | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
* GNU General 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 "quantum.h" | |||||
#define LAYOUT( \ | |||||
k00, k01, k02, \ | |||||
k10, k11, k12 \ | |||||
) \ | |||||
{ \ | |||||
{ k00, k01, k02 }, \ | |||||
{ k10, k11, k12 } \ | |||||
} | |||||
@ -0,0 +1,76 @@ | |||||
/* | |||||
* This program is free software: you can redistribute it and/or modify | |||||
* it under the terms of the GNU General Public License as published by | |||||
* the Free Software Foundation, either version 2 of the License, or | |||||
* (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
* GNU General 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 "config_common.h" | |||||
/* USB Device descriptor parameter */ | |||||
#define VENDOR_ID 0xFEED // Atset | |||||
#define PRODUCT_ID 0x6060 | |||||
#define DEVICE_VER 0x0001 | |||||
#define MANUFACTURER Atset | |||||
#define PRODUCT AT6 | |||||
/* Key matrix size */ | |||||
#define MATRIX_ROWS 2 | |||||
#define MATRIX_COLS 3 | |||||
#define MATRIX_ROW_PINS { D2, D1 } | |||||
#define MATRIX_COL_PINS { B6, B5, B4 } | |||||
#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 if matrix has ghost (lacks anti-ghosting diodes) */ | |||||
//#define MATRIX_HAS_GHOST | |||||
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ | |||||
#define LOCKING_SUPPORT_ENABLE | |||||
/* Locking resynchronize hack */ | |||||
#define LOCKING_RESYNC_ENABLE | |||||
/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. | |||||
* This is userful for the Windows task manager shortcut (ctrl+shift+esc). | |||||
*/ | |||||
// #define GRAVE_ESC_CTRL_OVERRIDE | |||||
/* | |||||
* Force NKRO | |||||
* | |||||
* Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved | |||||
* state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the | |||||
* makefile for this to work.) | |||||
* | |||||
* If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) | |||||
* until the next keyboard reset. | |||||
* | |||||
* NKRO may prevent your keystrokes from being detected in the BIOS, but it is | |||||
* fully operational during normal computer usage. | |||||
* | |||||
* For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) | |||||
* or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by | |||||
* bootmagic, NKRO mode will always be enabled until it is toggled again during a | |||||
* power-up. | |||||
*/ | |||||
//#define FORCE_NKRO | |||||
@ -0,0 +1,9 @@ | |||||
{ | |||||
"keyboard_name": "AT6", | |||||
"maintainer": "atset", | |||||
"layouts": { | |||||
"LAYOUT": { | |||||
"layout": [{"label":"k00", "x":0, "y":0}, {"label":"k01", "x":1, "y":0}, {"label":"k02", "x":2, "y":0}, {"label":"k10", "x":0, "y":1}, {"label":"k11", "x":1, "y":1}, {"label":"k12", "x":2, "y":1}] | |||||
} | |||||
} | |||||
} |
@ -0,0 +1,39 @@ | |||||
/* | |||||
* This program is free software: you can redistribute it and/or modify | |||||
* it under the terms of the GNU General Public License as published by | |||||
* the Free Software Foundation, either version 2 of the License, or | |||||
* (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
* GNU General 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( | |||||
KC_7, KC_8, KC_9, | |||||
KC_4, KC_5, KC_6 | |||||
), | |||||
[1] = LAYOUT( | |||||
KC_NO, KC_NO, KC_NO, | |||||
KC_NO, KC_NO, KC_NO | |||||
), | |||||
[2] = LAYOUT( | |||||
KC_NO, KC_NO, KC_NO, | |||||
KC_NO, KC_NO, KC_NO | |||||
) | |||||
}; |
@ -0,0 +1,39 @@ | |||||
/* | |||||
* This program is free software: you can redistribute it and/or modify | |||||
* it under the terms of the GNU General Public License as published by | |||||
* the Free Software Foundation, either version 2 of the License, or | |||||
* (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
* GNU General 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( | |||||
KC_4 , KC_5 , KC_6, | |||||
KC_1 , KC_2 , KC_3 | |||||
), | |||||
[1] = | |||||
LAYOUT( | |||||
KC_NO , KC_NO, KC_NO, | |||||
KC_NO , KC_NO, KC_NO | |||||
), | |||||
[2] = | |||||
LAYOUT( | |||||
KC_NO , KC_NO, KC_NO, | |||||
KC_NO , KC_NO, KC_NO | |||||
), | |||||
[3] = | |||||
LAYOUT( | |||||
KC_NO , KC_NO, KC_NO, | |||||
KC_NO , KC_NO, KC_NO | |||||
) | |||||
}; |
@ -0,0 +1,25 @@ | |||||
# ATSET AT6 | |||||
A special 6 key keyboard powered by QMK. | |||||
* Keyboard Maintainer: [ATSET](https://github.com/anubhavd7) | |||||
* Hardware Supported: ATmega32U4 | |||||
* Hardware Availability: Interest Check | |||||
Make example for this keyboard (after setting up your build environment): | |||||
make atset/at6:default | |||||
Flashing example for this keyboard: | |||||
make atset/at6: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 |
@ -0,0 +1,18 @@ | |||||
# MCU name | |||||
MCU = atmega32u4 | |||||
# Bootloader selection | |||||
BOOTLOADER = atmel-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 = yes # Console for debug | |||||
COMMAND_ENABLE = yes # 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 |
@ -0,0 +1,56 @@ | |||||
/* Copyright 2022 bbrfkr | |||||
* | |||||
* This program is free software: you can redistribute it and/or modify | |||||
* it under the terms of the GNU General Public License as published by | |||||
* the Free Software Foundation, either version 2 of the License, or | |||||
* (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
* GNU General 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 "config_common.h" | |||||
/* USB Device descriptor parameter */ | |||||
#define VENDOR_ID 0x6262 | |||||
#define PRODUCT_ID 0x0001 | |||||
#define DEVICE_VER 0x0001 | |||||
#define MANUFACTURER bbrfkr | |||||
#define PRODUCT dynamis | |||||
/* key matrix */ | |||||
#define MATRIX_ROWS 10 | |||||
#define MATRIX_COLS 7 | |||||
#define MATRIX_ROW_PINS { B6, B4, D6, D5, D1, C6, B5, D7, D4, D0 } | |||||
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7 } | |||||
/* rgb num */ | |||||
#define RGBLED_NUM 10 | |||||
#define RGB_DI_PIN D3 | |||||
#define RGBLIGHT_EFFECT_BREATHING | |||||
#define RGBLIGHT_EFFECT_RAINBOW_MOOD | |||||
#define RGBLIGHT_EFFECT_RAINBOW_SWIRL | |||||
#define RGBLIGHT_EFFECT_SNAKE | |||||
#define RGBLIGHT_EFFECT_KNIGHT | |||||
#define RGBLIGHT_EFFECT_CHRISTMAS | |||||
#define RGBLIGHT_EFFECT_STATIC_GRADIENT | |||||
#define RGBLIGHT_EFFECT_RGB_TEST | |||||
#define RGBLIGHT_EFFECT_ALTERNATING | |||||
#define RGBLIGHT_EFFECT_TWINKLE | |||||
/* COL2ROW, ROW2COL*/ | |||||
#define DIODE_DIRECTION COL2ROW | |||||
/* rotary encoder */ | |||||
#define ENCODERS_PAD_A { B7 } | |||||
#define ENCODERS_PAD_B { E6 } | |||||
#define PMW3360_CS_PIN SPI_SS_PIN | |||||
#define POINTING_DEVICE_INVERT_Y |
@ -0,0 +1,33 @@ | |||||
/* Copyright 2022 bbrfkr | |||||
* | |||||
* This program is free software: you can redistribute it and/or modify | |||||
* it under the terms of the GNU General Public License as published by | |||||
* the Free Software Foundation, either version 2 of the License, or | |||||
* (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
* GNU General 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 "dynamis.h" | |||||
#ifdef ENCODER_ENABLE | |||||
bool encoder_update_kb(uint8_t index, bool clockwise) { | |||||
if (!encoder_update_user(index, clockwise)) { | |||||
return false; | |||||
} | |||||
if (index == 0) { /* First encoder */ | |||||
if (clockwise) { | |||||
tap_code(KC_WH_D); | |||||
} else { | |||||
tap_code(KC_WH_U); | |||||
} | |||||
} | |||||
return false; | |||||
} | |||||
#endif |
@ -0,0 +1,59 @@ | |||||
/* Copyright 2022 bbrfkr | |||||
* | |||||
* This program is free software: you can redistribute it and/or modify | |||||
* it under the terms of the GNU General Public License as published by | |||||
* the Free Software Foundation, either version 2 of the License, or | |||||
* (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
* GNU General 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( \ | |||||
C00, C01, C02, C03, C04, C05, C06, C56, C55, C54, C53, C52, C51, C50, C90, \ | |||||
C10, C11, C12, C13, C14, C15, C16, C66, C65, C64, C63, C62, C61, C60, \ | |||||
C20, C21, C22, C23, C24, C25, C26, C76, C75, C74, C73, C72, C70, \ | |||||
C30, C31, C32, C33, C34, C35, C36, C86, C85, C84, C83, C82, C81, C80, C91, \ | |||||
C40, C41, C42, C43, C44, C45, C46, C96, C95, C94, C93, C92 \ | |||||
) \ | |||||
{ \ | |||||
{ C00, C01, C02, C03, C04, C05, C06 }, \ | |||||
{ C10, C11, C12, C13, C14, C15, C16 }, \ | |||||
{ C20, C21, C22, C23, C24, C25, C26 }, \ | |||||
{ C30, C31, C32, C33, C34, C35, C36 }, \ | |||||
{ C40, C41, C42, C43, C44, C45, C46 }, \ | |||||
{ C50, C51, C52, C53, C54, C55, C56 }, \ | |||||
{ C60, C61, C62, C63, C64, C65, C66 }, \ | |||||
{ C70, KC_NO, C72, C73, C74, C75, C76 }, \ | |||||
{ C80, C81, C82, C83, C84, C85, C86 }, \ | |||||
{ C90, C91, C92, C93, C94, C95, C96 } \ | |||||
} | |||||
#define LAYOUT_iso( \ | |||||
C00, C01, C02, C03, C04, C05, C06, C56, C55, C54, C53, C52, C51, C50, C90, \ | |||||
C10, C11, C12, C13, C14, C15, C16, C66, C65, C64, C63, C62, C61, \ | |||||
C20, C21, C22, C23, C24, C25, C26, C76, C75, C74, C73, C72, C71, C70, \ | |||||
C30, C31, C32, C33, C34, C35, C36, C86, C85, C84, C83, C82, C81, C80, C91, \ | |||||
C40, C41, C42, C43, C44, C45, C46, C96, C95, C94, C93, C92 \ | |||||
) \ | |||||
{ \ | |||||
{ C00, C01, C02, C03, C04, C05, C06 }, \ | |||||
{ C10, C11, C12, C13, C14, C15, C16 }, \ | |||||
{ C20, C21, C22, C23, C24, C25, C26 }, \ | |||||
{ C30, C31, C32, C33, C34, C35, C36 }, \ | |||||
{ C40, C41, C42, C43, C44, C45, C46 }, \ | |||||
{ C50, C51, C52, C53, C54, C55, C56 }, \ | |||||
{ KC_NO, C61, C62, C63, C64, C65, C66 }, \ | |||||
{ C70, C71, C72, C73, C74, C75, C76 }, \ | |||||
{ C80, C81, C82, C83, C84, C85, C86 }, \ | |||||
{ C90, C91, C92, C93, C94, C95, C96 } \ | |||||
} |
@ -0,0 +1,733 @@ | |||||
{ | |||||
"keyboard_name": "dynamis", | |||||
"url": "https://github.com/bbrfkr/keyboards", | |||||
"maintainer": "bbrfkr", | |||||
"layouts": { | |||||
"LAYOUT_ansi": { | |||||
"layout": [ | |||||
{ | |||||
"label": "`", | |||||
"x": 0, | |||||
"y": 0 | |||||
}, | |||||
{ | |||||
"label": "F1", | |||||
"x": 1, | |||||
"y": 0 | |||||
}, | |||||
{ | |||||
"label": "F2", | |||||
"x": 2, | |||||
"y": 0 | |||||
}, | |||||
{ | |||||
"label": "F3", | |||||
"x": 3, | |||||
"y": 0 | |||||
}, | |||||
{ | |||||
"label": "F4", | |||||
"x": 4, | |||||
"y": 0 | |||||
}, | |||||
{ | |||||
"label": "F5", | |||||
"x": 5, | |||||
"y": 0 | |||||
}, | |||||
{ | |||||
"label": "F6", | |||||
"x": 6, | |||||
"y": 0 | |||||
}, | |||||
{ | |||||
"label": "F7", | |||||
"x": 7, | |||||
"y": 0 | |||||
}, | |||||
{ | |||||
"label": "F8", | |||||
"x": 8, | |||||
"y": 0 | |||||
}, | |||||
{ | |||||
"label": "F9", | |||||
"x": 9, | |||||
"y": 0 | |||||
}, | |||||
{ | |||||
"label": "F10", | |||||
"x": 10, | |||||
"y": 0 | |||||
}, | |||||
{ | |||||
"label": "F11", | |||||
"x": 11, | |||||
"y": 0 | |||||
}, | |||||
{ | |||||
"label": "F12", | |||||
"x": 12, | |||||
"y": 0 | |||||
}, | |||||
{ | |||||
"label": "Back space", | |||||
"x": 13, | |||||
"y": 0 | |||||
}, | |||||
{ | |||||
"label": "Delete", | |||||
"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": "CapsLock", | |||||
"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 | |||||
}, | |||||
{ | |||||
"x": 0, | |||||
"y": 3, | |||||
"w": 1.25 | |||||
}, | |||||
{ | |||||
"label": "Shift", | |||||
"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": "Raise", | |||||
"x": 14, | |||||
"y": 3 | |||||
}, | |||||
{ | |||||
"label": "Up", | |||||
"x": 15.25, | |||||
"y": 3 | |||||
}, | |||||
{ | |||||
"label": "Ctrl", | |||||
"x": 0, | |||||
"y": 4, | |||||
"w": 1.25 | |||||
}, | |||||
{ | |||||
"label": "Super", | |||||
"x": 1.25, | |||||
"y": 4, | |||||
"w": 1.25 | |||||
}, | |||||
{ | |||||
"label": "Alt", | |||||
"x": 2.5, | |||||
"y": 4, | |||||
"w": 1.25 | |||||
}, | |||||
{ | |||||
"label": "Space", | |||||
"x": 3.75, | |||||
"y": 4, | |||||
"w": 2.25 | |||||
}, | |||||
{ | |||||
"label": "Lower", | |||||
"x": 6, | |||||
"y": 4, | |||||
"w": 1.25 | |||||
}, | |||||
{ | |||||
"label": "Raise", | |||||
"x": 7.25, | |||||
"y": 4, | |||||
"w": 2.75 | |||||
}, | |||||
{ | |||||
"label": "Alt", | |||||
"x": 10, | |||||
"y": 4, | |||||
"w": 1.25 | |||||
}, | |||||
{ | |||||
"label": "Super", | |||||
"x": 11.25, | |||||
"y": 4, | |||||
"w": 1.25 | |||||
}, | |||||
{ | |||||
"label": "Ctrl", | |||||
"x": 12.5, | |||||
"y": 4, | |||||
"w": 1.25 | |||||
}, | |||||
{ | |||||
"label": "Left", | |||||
"x": 14.25, | |||||
"y": 4 | |||||
}, | |||||
{ | |||||
"label": "Down", | |||||
"x": 15.25, | |||||
"y": 4 | |||||
}, | |||||
{ | |||||
"label": "Right", | |||||
"x": 16.25, | |||||
"y": 4 | |||||
} | |||||
] | |||||
}, | |||||
"LAYOUT_iso": { | |||||
"layout": [ | |||||
{ | |||||
"label": "`", | |||||
"x": 0, | |||||
"y": 0 | |||||
}, | |||||
{ | |||||
"label": "F1", | |||||
"x": 1, | |||||
"y": 0 | |||||
}, | |||||
{ | |||||
"label": "F2", | |||||
"x": 2, | |||||
"y": 0 | |||||
}, | |||||
{ | |||||
"label": "F3", | |||||
"x": 3, | |||||
"y": 0 | |||||
}, | |||||
{ | |||||
"label": "F4", | |||||
"x": 4, | |||||
"y": 0 | |||||
}, | |||||
{ | |||||
"label": "F5", | |||||
"x": 5, | |||||
"y": 0 | |||||
}, | |||||
{ | |||||
"label": "F6", | |||||
"x": 6, | |||||
"y": 0 | |||||
}, | |||||
{ | |||||
"label": "F7", | |||||
"x": 7, | |||||
"y": 0 | |||||
}, | |||||
{ | |||||
"label": "F8", | |||||
"x": 8, | |||||
"y": 0 | |||||
}, | |||||
{ | |||||
"label": "F9", | |||||
"x": 9, | |||||
"y": 0 | |||||
}, | |||||
{ | |||||
"label": "F10", | |||||
"x": 10, | |||||
"y": 0 | |||||
}, | |||||
{ | |||||
"label": "F11", | |||||
"x": 11, | |||||
"y": 0 | |||||
}, | |||||
{ | |||||
"label": "F12", | |||||
"x": 12, | |||||
"y": 0 | |||||
}, | |||||
{ | |||||
"label": "Back space", | |||||
"x": 13, | |||||
"y": 0 | |||||
}, | |||||
{ | |||||
"label": "Delete", | |||||
"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": "Enter", | |||||
"x": 13.75, | |||||
"y": 1, | |||||
"w": 1.25, | |||||
"h": 2 | |||||
}, | |||||
{ | |||||
"label": "CapsLock", | |||||
"x": 0, | |||||
"y": 2, | |||||
"w": 1.75 | |||||
}, | |||||
{ | |||||
"label": "A", | |||||
"x": 1.75, | |||||
"y": 2 | |||||
}, | |||||
{ | |||||
"label": "S", | |||||
"x": 2.75, | |||||
"y": 2 | |||||
}, | |||||
{ | |||||
"label": "D", | |||||
"x": 3.75, | |||||
"y": 2 | |||||
}, | |||||
{ | |||||
"label": "F", | |||||
"x": 4.75, | |||||
"y": 2 | |||||
}, | |||||
{ | |||||
"label": "G", | |||||
"x": 5.75, | |||||
"y": 2 | |||||
}, | |||||
{ | |||||
"label": "H", | |||||
"x": 6.75, | |||||
"y": 2 | |||||
}, | |||||
{ | |||||
"label": "J", | |||||
"x": 7.75, | |||||
"y": 2 | |||||
}, | |||||
{ | |||||
"label": "K", | |||||
"x": 8.75, | |||||
"y": 2 | |||||
}, | |||||
{ | |||||
"label": "L", | |||||
"x": 9.75, | |||||
"y": 2 | |||||
}, | |||||
{ | |||||
"label": ";", | |||||
"x": 10.75, | |||||
"y": 2 | |||||
}, | |||||
{ | |||||
"label": "'", | |||||
"x": 11.75, | |||||
"y": 2 | |||||
}, | |||||
{ | |||||
"label": "#", | |||||
"x": 12.75, | |||||
"y": 2 | |||||
}, | |||||
{ | |||||
"x": 0, | |||||
"y": 3, | |||||
"w": 1.25 | |||||
}, | |||||
{ | |||||
"label": "Shift", | |||||
"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": "Raise", | |||||
"x": 14, | |||||
"y": 3 | |||||
}, | |||||
{ | |||||
"label": "Up", | |||||
"x": 15.25, | |||||
"y": 3 | |||||
}, | |||||
{ | |||||
"label": "Ctrl", | |||||
"x": 0, | |||||
"y": 4, | |||||
"w": 1.25 | |||||
}, | |||||
{ | |||||
"label": "Super", | |||||
"x": 1.25, | |||||
"y": 4, | |||||
"w": 1.25 | |||||
}, | |||||
{ | |||||
"label": "Alt", | |||||
"x": 2.5, | |||||
"y": 4, | |||||
"w": 1.25 | |||||
}, | |||||
{ | |||||
"label": "Space", | |||||
"x": 3.75, | |||||
"y": 4, | |||||
"w": 2.25 | |||||
}, | |||||
{ | |||||
"label": "Lower", | |||||
"x": 6, | |||||
"y": 4, | |||||
"w": 1.25 | |||||
}, | |||||
{ | |||||
"label": "Raise", | |||||
"x": 7.25, | |||||
"y": 4, | |||||
"w": 2.75 | |||||
}, | |||||
{ | |||||
"label": "Alt", | |||||
"x": 10, | |||||
"y": 4, | |||||
"w": 1.25 | |||||
}, | |||||
{ | |||||
"label": "Super", | |||||
"x": 11.25, | |||||
"y": 4, | |||||
"w": 1.25 | |||||
}, | |||||
{ | |||||
"label": "Ctrl", | |||||
"x": 12.5, | |||||
"y": 4, | |||||
"w": 1.25 | |||||
}, | |||||
{ | |||||
"label": "Left", | |||||
"x": 14.25, | |||||
"y": 4 | |||||
}, | |||||
{ | |||||
"label": "Down", | |||||
"x": 15.25, | |||||
"y": 4 | |||||
}, | |||||
{ | |||||
"label": "Right", | |||||
"x": 16.25, | |||||
"y": 4 | |||||
} | |||||
] | |||||
} | |||||
} | |||||
} |
@ -0,0 +1,59 @@ | |||||
/* Copyright 2022 bbrfkr | |||||
* | |||||
* This program is free software: you can redistribute it and/or modify | |||||
* it under the terms of the GNU General Public License as published by | |||||
* the Free Software Foundation, either version 2 of the License, or | |||||
* (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
* GNU General 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 | |||||
enum layer_names { | |||||
_QWERTY, | |||||
_LOWER, | |||||
_RAISE, | |||||
_SETTINGS | |||||
}; | |||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||||
[_QWERTY] = LAYOUT_ansi( | |||||
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSPC, KC_DEL, | |||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, | |||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, | |||||
KC_TAB, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(2), KC_UP, | |||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), MO(2), KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT | |||||
), | |||||
[_LOWER] = 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_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_PSCR, KC_TRNS, KC_TRNS, KC_WH_U, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||||
KC_TRNS, KC_TRNS, KC_BTN3, KC_BTN2, KC_WH_D, KC_BTN1, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, | |||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS | |||||
), | |||||
[_RAISE] = LAYOUT_ansi( | |||||
KC_ESC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS, | |||||
KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TRNS, KC_TRNS, KC_TRNS, | |||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_QUOT, KC_LBRC, KC_RBRC, KC_TRNS, KC_TRNS, | |||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_UNDS, KC_PLUS, KC_DQUO, KC_LCBR, KC_RCBR, KC_TRNS, MO(3), KC_TRNS, | |||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS | |||||
), | |||||
[_SETTINGS] = LAYOUT_ansi( | |||||
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, RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||||
KC_TRNS, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||||
KC_TRNS, KC_TRNS, RGB_RMOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS | |||||
) | |||||
}; |
@ -0,0 +1,59 @@ | |||||
/* Copyright 2022 bbrfkr | |||||
* | |||||
* This program is free software: you can redistribute it and/or modify | |||||
* it under the terms of the GNU General Public License as published by | |||||
* the Free Software Foundation, either version 2 of the License, or | |||||
* (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
* GNU General 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 | |||||
enum layer_names { | |||||
_QWERTY, | |||||
_LOWER, | |||||
_RAISE, | |||||
_SETTINGS | |||||
}; | |||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||||
[_QWERTY] = LAYOUT_iso( | |||||
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_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_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_TAB, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(2), KC_UP, | |||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), MO(2), KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT | |||||
), | |||||
[_LOWER] = LAYOUT_iso( | |||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_PSCR, KC_TRNS, KC_TRNS, KC_WH_U, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||||
KC_TRNS, KC_TRNS, KC_BTN3, KC_BTN2, KC_WH_D, KC_BTN1, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, | |||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS | |||||
), | |||||
[_RAISE] = LAYOUT_iso( | |||||
KC_ESC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS, | |||||
KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TRNS, KC_TRNS, | |||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_QUOT, KC_LBRC, KC_RBRC, KC_TRNS, KC_TRNS, KC_TRNS, | |||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_UNDS, KC_PLUS, KC_DQUO, KC_LCBR, KC_RCBR, KC_TRNS, MO(3), KC_TRNS, | |||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS | |||||
), | |||||
[_SETTINGS] = LAYOUT_iso( | |||||
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, RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||||
KC_TRNS, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||||
KC_TRNS, KC_TRNS, RGB_RMOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS | |||||
) | |||||
}; |
@ -0,0 +1,59 @@ | |||||
/* Copyright 2022 bbrfkr | |||||
* | |||||
* This program is free software: you can redistribute it and/or modify | |||||
* it under the terms of the GNU General Public License as published by | |||||
* the Free Software Foundation, either version 2 of the License, or | |||||
* (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
* GNU General 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 | |||||
enum layer_names { | |||||
_QWERTY, | |||||
_LOWER, | |||||
_RAISE, | |||||
_SETTINGS | |||||
}; | |||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||||
[_QWERTY] = LAYOUT_ansi( | |||||
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSPC, KC_DEL, | |||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, | |||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, | |||||
KC_TAB, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(2), KC_UP, | |||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), MO(2), KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT | |||||
), | |||||
[_LOWER] = 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_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_PSCR, KC_TRNS, KC_TRNS, KC_WH_U, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||||
KC_TRNS, KC_TRNS, KC_BTN3, KC_BTN2, KC_WH_D, KC_BTN1, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, | |||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS | |||||
), | |||||
[_RAISE] = LAYOUT_ansi( | |||||
KC_ESC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS, | |||||
KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TRNS, KC_TRNS, KC_TRNS, | |||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_QUOT, KC_LBRC, KC_RBRC, KC_TRNS, KC_TRNS, | |||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_UNDS, KC_PLUS, KC_DQUO, KC_LCBR, KC_RCBR, KC_TRNS, MO(3), KC_TRNS, | |||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS | |||||
), | |||||
[_SETTINGS] = LAYOUT_ansi( | |||||
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, RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||||
KC_TRNS, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||||
KC_TRNS, KC_TRNS, RGB_RMOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS | |||||
) | |||||
}; |
@ -0,0 +1 @@ | |||||
VIA_ENABLE = yes |
@ -0,0 +1,29 @@ | |||||
# dynamis | |||||
## general information | |||||
![dynamis](https://i.imgur.com/q2C3D2ul.jpg) | |||||
Gasket mounted 65% row staggered keyboard integrated a trackball | |||||
* Keyboard Maintainer: [bbrfkr](https://github.com/bbrfkr/) | |||||
* Hardware Supported: dynamis PCBs | |||||
* Hardware Availability: http://github.com/bbrfkr/keyboards | |||||
## bootloader | |||||
Enter the bootloader in 2 ways: | |||||
* **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 | |||||
## build and flash firmware | |||||
Make example for this keyboard (after setting up your build environment): | |||||
make bbrfkr/dynamis:default | |||||
Flashing example for this keyboard: | |||||
make bbrfkr/dynamis: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). |
@ -0,0 +1,23 @@ | |||||
# MCU name | |||||
MCU = atmega32u4 | |||||
# Bootloader selection | |||||
BOOTLOADER = qmk-dfu | |||||
# Build Options | |||||
# change yes to no to disable | |||||
# | |||||
BOOTMAGIC_ENABLE = no # 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 = no # Enable N-Key Rollover | |||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality | |||||
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow | |||||
AUDIO_ENABLE = no # Audio output | |||||
SPLIT_KEYBOARD = no | |||||
POINTING_DEVICE_ENABLE = yes | |||||
POINTING_DEVICE_DRIVER = pmw3360 | |||||
ENCODER_ENABLE = yes | |||||
LTO_ENABLE = yes |
@ -0,0 +1,17 @@ | |||||
/* Copyright 2021 Altain | |||||
* | |||||
* This program is free software: you can redistribute it and/or modify | |||||
* it under the terms of the GNU General Public License as published by | |||||
* the Free Software Foundation, either version 2 of the License, or | |||||
* (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
* GNU General 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 "blaster75.h" |
@ -0,0 +1,97 @@ | |||||
/* Copyright 2021 Altain | |||||
* | |||||
* This program is free software: you can redistribute it and/or modify | |||||
* it under the terms of the GNU General Public License as published by | |||||
* the Free Software Foundation, either version 2 of the License, or | |||||
* (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
* GNU General 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" | |||||
/* This section is to help viewers visually clarify the physical layout of Blaster 75 PCB. | |||||
ANSI Layout : | |||||
* ,---------------------------------------------------------------- | |||||
* | ESC| F1| F2| F3| F4| F5| F6| F7| F8| F9| F10| F11| F12|PSC|INS| | |||||
* ,---------------------------------------------------------------| | |||||
* | ` |1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | + | BKSPC |HOME| | |||||
* |---------------------------------------------------------------| | |||||
* | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | DEL| | |||||
* |---------------------------------------------------------------| | |||||
* | CTRL | A | S | D | F | G | H | J | K | L | ; | ' | ENTER| END| | |||||
* |---------------------------------------------------------------| | |||||
* | LSHIFT | Z | X | C | V | B | N | M | , | . | / |RSHFT | ↑ | | | |||||
* |---------------------------------------------------------------| | |||||
* |LCTL|LWIN|LALT| 6.25U SPACE |RALT|RCTL| ← | ↓ | → | | |||||
* `---------------------------------------------------------------- | |||||
* | |||||
* | |||||
7U Spacebar Layout : | |||||
* ,---------------------------------------------------------------- | |||||
* | ESC| F1| F2| F3| F4| F5| F6| F7| F8| F9| F10| F11| F12|PSC|INS| | |||||
* ,---------------------------------------------------------------| | |||||
* | ` |1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | + | BKSPC |HOME| | |||||
* |---------------------------------------------------------------| | |||||
* | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | DEL| | |||||
* |---------------------------------------------------------------| | |||||
* | CTRL | A | S | D | F | G | H | J | K | L | ; | ' | ENTER| END| | |||||
* |---------------------------------------------------------------| | |||||
* | LSHIFT | Z | X | C | V | B | N | M | , | . | / |RSHFT | ↑ | | | |||||
* |---------------------------------------------------------------| | |||||
* | LCTL |LWIN| LALT | 7U SPACE | RCTL | ← | ↓ | → | | |||||
* `---------------------------------------------------------------- | |||||
* | |||||
* */ | |||||
#define XXX KC_NO | |||||
// BLASTER75 DEFAULT ANSI LAYOUT | |||||
// 6.25U SPACEBAR | |||||
// BOTTOM ROW 1.25 , 1.25 , 1.25 , 6.25 , 1.25 , 1.25 CONFIGURATION | |||||
#define LAYOUT( \ | |||||
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \ | |||||
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \ | |||||
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, \ | |||||
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E, \ | |||||
K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4B, K4C, K4D, \ | |||||
K50, K51, K52, K55, K59, K5B, K5C, K5D, K5E \ | |||||
) { \ | |||||
{ 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, XXX, K3E }, \ | |||||
{ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, XXX, K4B, K4C, K4D, XXX }, \ | |||||
{ K50, K51, K52, XXX, XXX, K55, XXX, XXX, XXX, K59, XXX, K5B, K5C, K5D, K5E } \ | |||||
} | |||||
// BLASTER75 7U LAYOUT | |||||
// 7U SPACEBAR | |||||
// BOTTOM ROW 1.5 , 1 , 1.5 , 7 , 1.5 CONFIGURATION | |||||
#define LAYOUT_7u( \ | |||||
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, K3E, \ | |||||
K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4B, K4C, K4D, \ | |||||
K50, K51, K52, K55, K5B, K5C, K5D, K5E \ | |||||
) { \ | |||||
{ 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, XXX, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E }, \ | |||||
{ K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, XXX, K3E }, \ | |||||
{ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, XXX, K4B, K4C, K4D, XXX }, \ | |||||
{ K50, K51, K52, XXX, XXX, K55, XXX, XXX, XXX, XXX, XXX, K5B, K5C, K5D, K5E } \ | |||||
} |
@ -0,0 +1,44 @@ | |||||
/* | |||||
Copyright 2021 Altain | |||||
This program is free software: you can redistribute it and/or modify | |||||
it under the terms of the GNU General Public License as published by | |||||
the Free Software Foundation, either version 2 of the License, or | |||||
(at your option) any later version. | |||||
This program is distributed in the hope that it will be useful, | |||||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
GNU General 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 "config_common.h" | |||||
#define VENDOR_ID 0xA122 | |||||
#define PRODUCT_ID 0xB075 | |||||
#define DEVICE_VER 0x0001 | |||||
#define MANUFACTURER Altain | |||||
#define PRODUCT Blaster75 | |||||
/* Matrix Size */ | |||||
#define MATRIX_ROWS 6 | |||||
#define MATRIX_COLS 15 | |||||
/* Matrix Pinouts */ | |||||
// 0 1 2 3 4 5 6 7 8 9 A B C D E | |||||
#define MATRIX_ROW_PINS { F0, F1, F4, F5, F6, F7 } | |||||
#define MATRIX_COL_PINS { B0, B4, B5, B6, B7, C6, C7, D0, D1, D2, D3, D4, D5, D6, D7 } | |||||
#define UNUSED_PINS | |||||
/* Diode Direction */ | |||||
#define DIODE_DIRECTION COL2ROW | |||||
/* Debounce Setting */ | |||||
#define DEBOUNCE 5 | |||||
@ -0,0 +1,186 @@ | |||||
{ | |||||
"keyboard_name": "Blaster 75", | |||||
"url": "", | |||||
"maintainer": "Altain", | |||||
"layouts": { | |||||
"LAYOUT": { | |||||
"layout": [ | |||||
{"label": "ESC", "y": 0,"x": 0}, | |||||
{"label": "F1", "y": 0,"x": 1.25}, | |||||
{"label": "F2", "y": 0,"x": 2.25}, | |||||
{"label": "F3", "y": 0,"x": 3.25}, | |||||
{"label": "F4", "y": 0,"x": 4.25}, | |||||
{"label": "F5", "y": 0,"x": 5.5}, | |||||
{"label": "F6", "y": 0,"x": 6.5}, | |||||
{"label": "F7", "y": 0,"x": 7.5}, | |||||
{"label": "F8", "y": 0,"x": 8.5}, | |||||
{"label": "F9", "y": 0,"x": 9.75}, | |||||
{"label": "F10", "y": 0,"x": 10.75}, | |||||
{"label": "F11", "y": 0,"x": 11.75}, | |||||
{"label": "F12", "y": 0,"x": 12.75}, | |||||
{"label": "PrtSc", "y": 0,"x": 14}, | |||||
{"label": "INS", "y": 0,"x": 15}, | |||||
{"label": "~", "y": 1.25,"x": 0}, | |||||
{"label": "!", "y": 1.25,"x": 1}, | |||||
{"label": "@", "y": 1.25,"x": 2}, | |||||
{"label": "#", "y": 1.25,"x": 3}, | |||||
{"label": "$", "y": 1.25,"x": 4}, | |||||
{"label": "%", "y": 1.25,"x": 5}, | |||||
{"label": "^", "y": 1.25,"x": 6}, | |||||
{"label": "&", "y": 1.25,"x": 7}, | |||||
{"label": "*", "y": 1.25,"x": 8}, | |||||
{"label": "(", "y": 1.25,"x": 9}, | |||||
{"label": ")", "y": 1.25,"x": 10}, | |||||
{"label": "_", "y": 1.25,"x": 11}, | |||||
{"label": "+", "y": 1.25,"x": 12}, | |||||
{"label": "Backspace", "y": 1.25,"x": 13, "w": 2}, | |||||
{"label": "Home", "y": 1.25,"x": 15}, | |||||
{"label": "Tab", "y": 2.25,"x": 0, "w": 1.5}, | |||||
{"label": "Q", "y": 2.25,"x": 1.5}, | |||||
{"label": "W", "y": 2.25,"x": 2.5}, | |||||
{"label": "E", "y": 2.25,"x": 3.5}, | |||||
{"label": "R", "y": 2.25,"x": 4.5}, | |||||
{"label": "T", "y": 2.25,"x": 5.5}, | |||||
{"label": "Y", "y": 2.25,"x": 6.5}, | |||||
{"label": "U", "y": 2.25,"x": 7.5}, | |||||
{"label": "I", "y": 2.25,"x": 8.5}, | |||||
{"label": "O", "y": 2.25,"x": 9.5}, | |||||
{"label": "P", "y": 2.25,"x": 10.5}, | |||||
{"label": "{", "y": 2.25,"x": 11.5}, | |||||
{"label": "}", "y": 2.25,"x": 12.5}, | |||||
{"label": "|", "y": 2.25,"x": 13.5, "w": 1.5}, | |||||
{"label": "Del", "y": 2.25,"x": 15}, | |||||
{"label": "Caps Lock", "y": 3.25,"x": 0, "w": 1.75}, | |||||
{"label": "A", "y": 3.25,"x": 1.75}, | |||||
{"label": "S", "y": 3.25,"x": 2.75}, | |||||
{"label": "D", "y": 3.25,"x": 3.75}, | |||||
{"label": "F", "y": 3.25,"x": 4.75}, | |||||
{"label": "G", "y": 3.25,"x": 5.75}, | |||||
{"label": "H", "y": 3.25,"x": 6.75}, | |||||
{"label": "J", "y": 3.25,"x": 7.75}, | |||||
{"label": "K", "y": 3.25,"x": 8.75}, | |||||
{"label": "L", "y": 3.25,"x": 9.75}, | |||||
{"label": ":", "y": 3.25,"x": 10.75}, | |||||
{"label": "\"", "y": 3.25,"x": 11.75}, | |||||
{"label": "Enter", "y": 3.25,"x": 12.75, "w": 2.25}, | |||||
{"label": "End", "y": 3.25,"x": 15}, | |||||
{"label": "Shift", "y": 4.25,"x": 0, "w": 2.25}, | |||||
{"label": "Z", "y": 4.25,"x": 2.25}, | |||||
{"label": "X", "y": 4.25,"x": 3.25}, | |||||
{"label": "C", "y": 4.25,"x": 4.25}, | |||||
{"label": "V", "y": 4.25,"x": 5.25}, | |||||
{"label": "B", "y": 4.25,"x": 6.25}, | |||||
{"label": "N", "y": 4.25,"x": 7.25}, | |||||
{"label": "M", "y": 4.25,"x": 8.25}, | |||||
{"label": "<", "y": 4.25,"x": 9.25}, | |||||
{"label": ">", "y": 4.25,"x": 10.25}, | |||||
{"label": "?", "y": 4.25,"x": 11.25}, | |||||
{"label": "Shift", "y": 4.25,"x": 12.25, "w": 1.75}, | |||||
{"label": "\u2191", "y": 4.25,"x": 14}, | |||||
{"label":"Ctrl", "y":5.25, "x":0, "w":1.25}, | |||||
{"label":"Win", "y":5.25, "x":1.25, "w": 1.25}, | |||||
{"label":"Alt", "y":5.25, "x":2.5, "w":1.25}, | |||||
{"label":"Spacebar", "y":5.25, "x":3.75, "w":6.25}, | |||||
{"label":"Win", "y":5.25, "x":10, "w":1.25}, | |||||
{"label":"Alt", "y":5.25, "x":11.25, "w":1.25}, | |||||
{"label":"\u2190", "y":5.25, "x":13}, | |||||
{"label":"\u2193", "y":5.25, "x":14}, | |||||
{"label":"\u2192", "y":5.25, "x":15} | |||||
] | |||||
}, | |||||
"LAYOUT_7u": { | |||||
"layout": [ | |||||
{"label": "ESC", "y": 0,"x": 0}, | |||||
{"label": "F1", "y": 0,"x": 1.25}, | |||||
{"label": "F2", "y": 0,"x": 2.25}, | |||||
{"label": "F3", "y": 0,"x": 3.25}, | |||||
{"label": "F4", "y": 0,"x": 4.25}, | |||||
{"label": "F5", "y": 0,"x": 5.5}, | |||||
{"label": "F6", "y": 0,"x": 6.5}, | |||||
{"label": "F7", "y": 0,"x": 7.5}, | |||||
{"label": "F8", "y": 0,"x": 8.5}, | |||||
{"label": "F9", "y": 0,"x": 9.75}, | |||||
{"label": "F10", "y": 0,"x": 10.75}, | |||||
{"label": "F11", "y": 0,"x": 11.75}, | |||||
{"label": "F12", "y": 0,"x": 12.75}, | |||||
{"label": "PrtSc", "y": 0,"x": 14}, | |||||
{"label": "INS", "y": 0,"x": 15}, | |||||
{"label": "~", "y": 1.25,"x": 0}, | |||||
{"label": "!", "y": 1.25,"x": 1}, | |||||
{"label": "@", "y": 1.25,"x": 2}, | |||||
{"label": "#", "y": 1.25,"x": 3}, | |||||
{"label": "$", "y": 1.25,"x": 4}, | |||||
{"label": "%", "y": 1.25,"x": 5}, | |||||
{"label": "^", "y": 1.25,"x": 6}, | |||||
{"label": "&", "y": 1.25,"x": 7}, | |||||
{"label": "*", "y": 1.25,"x": 8}, | |||||
{"label": "(", "y": 1.25,"x": 9}, | |||||
{"label": ")", "y": 1.25,"x": 10}, | |||||
{"label": "_", "y": 1.25,"x": 11}, | |||||
{"label": "+", "y": 1.25,"x": 12}, | |||||
{"label": "Backspace", "y": 1.25,"x": 13, "w": 2}, | |||||
{"label": "Home", "y": 1.25,"x": 15}, | |||||
{"label": "Tab", "y": 2.25,"x": 0, "w": 1.5}, | |||||
{"label": "Q", "y": 2.25,"x": 1.5}, | |||||
{"label": "W", "y": 2.25,"x": 2.5}, | |||||
{"label": "E", "y": 2.25,"x": 3.5}, | |||||
{"label": "R", "y": 2.25,"x": 4.5}, | |||||
{"label": "T", "y": 2.25,"x": 5.5}, | |||||
{"label": "Y", "y": 2.25,"x": 6.5}, | |||||
{"label": "U", "y": 2.25,"x": 7.5}, | |||||
{"label": "I", "y": 2.25,"x": 8.5}, | |||||
{"label": "O", "y": 2.25,"x": 9.5}, | |||||
{"label": "P", "y": 2.25,"x": 10.5}, | |||||
{"label": "{", "y": 2.25,"x": 11.5}, | |||||
{"label": "}", "y": 2.25,"x": 12.5}, | |||||
{"label": "|", "y": 2.25,"x": 13.5, "w": 1.5}, | |||||
{"label": "Del", "y": 2.25,"x": 15}, | |||||
{"label": "Caps Lock", "y": 3.25,"x": 0, "w": 1.75}, | |||||
{"label": "A", "y": 3.25,"x": 1.75}, | |||||
{"label": "S", "y": 3.25,"x": 2.75}, | |||||
{"label": "D", "y": 3.25,"x": 3.75}, | |||||
{"label": "F", "y": 3.25,"x": 4.75}, | |||||
{"label": "G", "y": 3.25,"x": 5.75}, | |||||
{"label": "H", "y": 3.25,"x": 6.75}, | |||||
{"label": "J", "y": 3.25,"x": 7.75}, | |||||
{"label": "K", "y": 3.25,"x": 8.75}, | |||||
{"label": "L", "y": 3.25,"x": 9.75}, | |||||
{"label": ":", "y": 3.25,"x": 10.75}, | |||||
{"label": "\"", "y": 3.25,"x": 11.75}, | |||||
{"label": "Enter", "y": 3.25,"x": 12.75, "w": 2.25}, | |||||
{"label": "End", "y": 3.25,"x": 15}, | |||||
{"label": "Shift", "y": 4.25,"x": 0, "w": 2.25}, | |||||
{"label": "Z", "y": 4.25,"x": 2.25}, | |||||
{"label": "X", "y": 4.25,"x": 3.25}, | |||||
{"label": "C", "y": 4.25,"x": 4.25}, | |||||
{"label": "V", "y": 4.25,"x": 5.25}, | |||||
{"label": "B", "y": 4.25,"x": 6.25}, | |||||
{"label": "N", "y": 4.25,"x": 7.25}, | |||||
{"label": "M", "y": 4.25,"x": 8.25}, | |||||
{"label": "<", "y": 4.25,"x": 9.25}, | |||||
{"label": ">", "y": 4.25,"x": 10.25}, | |||||
{"label": "?", "y": 4.25,"x": 11.25}, | |||||
{"label": "Shift", "y": 4.25,"x": 12.25, "w": 1.75}, | |||||
{"label": "\u2191", "y": 4.25,"x": 14}, | |||||
{"label":"Ctrl", "y":5.25, "x": 0, "w":1.5}, | |||||
{"label":"Win", "y":5.25, "x":1.5}, | |||||
{"label":"Alt", "y":5.25, "x":2.5, "w":1.5}, | |||||
{"label":"Spacebar", "y":5.25, "x":4, "w":7}, | |||||
{"label":"Alt", "y":5.25, "x":11, "w":1.5}, | |||||
{"label":"\u2190", "y":5.25, "x":13}, | |||||
{"label":"\u2193", "y":5.25, "x":14}, | |||||
{"label":"\u2192", "y":5.25, "x":15} | |||||
] | |||||
} | |||||
} | |||||
} |
@ -0,0 +1,37 @@ | |||||
/* Copyright 2021 by Altain | |||||
* | |||||
* This program is free software: you can redistribute it and/or modify | |||||
* it under the terms of the GNU General Public License as published by | |||||
* the Free Software Foundation, either version 2 of the License, or | |||||
* (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
* GNU General 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( | |||||
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_INS, | |||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, | |||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_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_END, | |||||
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, KC_RWIN, 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_TRNS, | |||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS | |||||
), | |||||
}; |
@ -0,0 +1,7 @@ | |||||
![Blaster75 Layout Image](https://i.imgur.com/qrvNWCoh.png) | |||||
This is the default keymap intended for Blaster 75 Custom Keyboard by ALTAiN. | |||||
This layout overall follows ANSI layout except the bottom rows. | |||||
Should the user wishes to, the bottom layout can be configured as the following: | |||||
1) 1.25 / 1.25 / 1.25 / 6.26u Spacebar / 1.25 / 1.25 , or | |||||
2) 1.5u / 1u / 1.5u / 7u Spacebar / 1.5u |
@ -0,0 +1,51 @@ | |||||
/* Copyright 2021 by Altain | |||||
* This program is free software: you can redistribute it and/or modify | |||||
* it under the terms of the GNU General Public License as published by | |||||
* the Free Software Foundation, either version 2 of the License, or | |||||
* (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
* GNU General 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( | |||||
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_INS, | |||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, | |||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_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_END, | |||||
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, KC_RWIN, 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_TRNS, | |||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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 | |||||
), | |||||
[3] = LAYOUT( | |||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS | |||||
), | |||||
}; |
@ -0,0 +1 @@ | |||||
VIA_ENABLE = yes |
@ -0,0 +1,31 @@ | |||||
# Blaster 75 | |||||
Blaster 75 is a 75% ANSI layout Custom Keyboard designed and manufactured by Altain. | |||||
* Keyboard Maintainer : ALTAiN | |||||
* Hardware Supported : Blaster 75 | |||||
* Hardware Availability : Produced and Sold by ALTAiN | |||||
* Mount : Top-Mount System | |||||
* Typing Angle : 6 Degree | |||||
* Front Height : 20.2mm | |||||
## How to enter Bootloader Mode | |||||
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. | |||||
We strongly recommend this method. If the PCB is not soldered with switches at the moment, use anything that's metal (twizzers for example) | |||||
to short the (0,0) position key ("ESC" in our PCB) while plugging the USB in. | |||||
* **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 | |||||
Make example for this keyboard (after setting up your build environment): | |||||
make blaster75:default | |||||
Flashing example for this keyboard: | |||||
make blaster75: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). |