@ -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). |