Compare commits

...

5 Commits

Author SHA1 Message Date
yiancar
bccf2cba6a
[Keyboard] Add alas keyboard (#19717)
Co-authored-by: jack <0x6a73@protonmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: yiancar <yiancar@gmail.com>
2023-02-10 01:09:40 -08:00
FLinguenheld
3b987f4a9d
[Keyboard] Flinguenheld (#19661) 2023-02-10 01:07:39 -08:00
buzzlighter1
bc3c6f0831
Update buzzlighter1 keymap (#19757)
Co-authored-by: zvecr <git@zvecr.com>
2023-02-09 21:03:56 -07:00
Wolf Van Herreweghe
25ff06c01d
Move FAve 84H to data driven design + Via Custom UI (#19763)
Co-authored-by: Wolf <contact@vwolf.be>
2023-02-09 20:59:03 -07:00
lalalademaxiya1
5208361dcb
Update info.json for Keychron V10 (#19791) 2023-02-09 20:54:40 -07:00
31 changed files with 2697 additions and 495 deletions

21
keyboards/alas/alas.c Executable file
View File

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

132
keyboards/alas/alas.h Normal file
View File

@ -0,0 +1,132 @@
/* Copyright 2023 Yiancar-Designs
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#define XXX KC_NO
#include "quantum.h"
#define LAYOUT_all( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2C, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
K40, K41, K42, K46, K4A, K4B, K4C, K4D \
) { \
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
{ K40, K41, K42, XXX, XXX, XXX, K46, XXX, XXX, XXX, K4A, K4B, K4C, K4D } \
}
#define LAYOUT_60_ansi( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \
K40, K41, K42, K46, K4A, K4B, K4C, K4D \
) { \
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, XXX, K2D }, \
{ K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, XXX }, \
{ K40, K41, K42, XXX, XXX, XXX, K46, XXX, XXX, XXX, K4A, K4B, K4C, K4D } \
}
#define LAYOUT_60_ansi_split_bs_rshift( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2C, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
K40, K41, K42, K46, K4A, K4B, K4C, K4D \
) { \
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \
{ K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
{ K40, K41, K42, XXX, XXX, XXX, K46, XXX, XXX, XXX, K4A, K4B, K4C, K4D } \
}
#define LAYOUT_60_ansi_tsangan( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \
K40, K41, K42, K46, K4B, K4C, K4D \
) { \
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, XXX, K2D }, \
{ K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, XXX }, \
{ K40, K41, K42, XXX, XXX, XXX, K46, XXX, XXX, XXX, XXX, K4B, K4C, K4D } \
}
#define LAYOUT_60_iso( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K1D, K2D, \
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \
K40, K41, K42, K46, K4A, K4B, K4C, K4D \
) { \
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, XXX, K2D }, \
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, XXX }, \
{ K40, K41, K42, XXX, XXX, XXX, K46, XXX, XXX, XXX, K4A, K4B, K4C, K4D } \
}
#define LAYOUT_60_iso_split_bs_rshift( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2C, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K1D, K2D, \
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
K40, K41, K42, K46, K4A, K4B, K4C, K4D \
) { \
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
{ K40, K41, K42, XXX, XXX, XXX, K46, XXX, XXX, XXX, K4A, K4B, K4C, K4D } \
}
#define LAYOUT_60_iso_tsangan( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K1D, K2D, \
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \
K40, K41, K42, K46, K4B, K4C, K4D \
) { \
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, XXX, K2D }, \
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, XXX }, \
{ K40, K41, K42, XXX, XXX, XXX, K46, XXX, XXX, XXX, XXX, K4B, K4C, K4D } \
}
#define LAYOUT_60_tsangan_hhkb( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2C, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
K40, K41, K42, K46, K4B, K4C, K4D \
) { \
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \
{ K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
{ K40, K41, K42, XXX, XXX, XXX, K46, XXX, XXX, XXX, XXX, K4B, K4C, K4D } \
}

31
keyboards/alas/config.h Executable file
View File

@ -0,0 +1,31 @@
/*
Copyright 2023 Yiancar-Designs
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published byß
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#define MATRIX_ROW_PINS { A2, B9, B8, B5, B4 }
#define MATRIX_COL_PINS { A1, B1, B0, A7, A6, A5, A4, A3, B2, B10, B11, B12, B13, B14 }
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
/* Ensure we jump to bootloader if the RESET keycode was pressed */
#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
/* Indicator LEDs */
#define LED_CAPS_LOCK_PIN B6
#define LED_PIN_ON_STATE 0

39
keyboards/alas/info.json Executable file
View File

@ -0,0 +1,39 @@
{
"keyboard_name": "Alas",
"manufacturer": "Yiancar-Designs",
"url": "https://yiancar-designs.com",
"maintainer": "Yiancar-Designs",
"usb": {
"vid": "0x8968",
"pid": "0x414C",
"device_version": "0.0.1"
},
"processor": "STM32F072",
"bootloader": "stm32-dfu",
"layouts": {
"LAYOUT_all": {
"layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":12.5, "y":4, "w":1.25}, {"x":13.75, "y":4, "w":1.25}]
},
"LAYOUT_60_ansi": {
"layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":2.75}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":12.5, "y":4, "w":1.25}, {"x":13.75, "y":4, "w":1.25}]
},
"LAYOUT_60_ansi_split_bs_rshift": {
"layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":12.5, "y":4, "w":1.25}, {"x":13.75, "y":4, "w":1.25}]
},
"LAYOUT_60_ansi_tsangan": {
"layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":2.75}, {"x":0, "y":4, "w":1.5}, {"x":1.5, "y":4}, {"x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"x":11, "y":4, "w":1.5}, {"x":12.5, "y":4}, {"x":13.5, "y":4, "w":1.5}]
},
"LAYOUT_60_iso": {
"layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.75, "y":1, "w":1.25, "h":2}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":2.75}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":12.5, "y":4, "w":1.25}, {"x":13.75, "y":4, "w":1.25}]
},
"LAYOUT_60_iso_split_bs_rshift": {
"layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.75, "y":1, "w":1.25, "h":2}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":12.5, "y":4, "w":1.25}, {"x":13.75, "y":4, "w":1.25}]
},
"LAYOUT_60_iso_tsangan": {
"layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.75, "y":1, "w":1.25, "h":2}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":2.75}, {"x":0, "y":4, "w":1.5}, {"x":1.5, "y":4}, {"x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"x":11, "y":4, "w":1.5}, {"x":12.5, "y":4}, {"x":13.5, "y":4, "w":1.5}]
},
"LAYOUT_60_tsangan_hhkb": {
"layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.5}, {"x":1.5, "y":4}, {"x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"x":11, "y":4, "w":1.5}, {"x":12.5, "y":4}, {"x":13.5, "y":4, "w":1.5}]
}
}
}

View File

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

View File

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

View File

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

39
keyboards/alas/readme.md Executable file
View File

@ -0,0 +1,39 @@
# Alas
This is a standard 60% layout PCB. It supports VIA.
* Keyboard Maintainer: [Yiancar](http://yiancar-designs.com/) and on [GitHub](https://github.com/yiancar)
* Hardware Supported: A 60% keyboard with STM32F072CB
* Hardware Availability: https://geekhack.org/index.php?topic=119025.0
![Layer 0](https://i.imgur.com/LL5mZXAh.png)
![Layer 1](https://i.imgur.com/RJDVmtyh.png)
## Instructions
### Build
Make example for this keyboard (after setting up your build environment):
make alas:default
Flashing example for this keyboard:
make alas:default:flash
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
### Reset
- Unplug
- Hold Escape
- Plug In
- Unplug
- Release Escape
### Flash
- Unplug
- Hold Escape
- Plug In
- Flash using QMK Toolbox or CLI (`make alas:<keymap>:flash`)

22
keyboards/alas/rules.mk Executable file
View File

@ -0,0 +1,22 @@
# Wildcard to allow APM32 MCU
DFU_SUFFIX_ARGS = -v FFFF -p FFFF
# Do not put the microcontroller into power saving mode
# when we get USB suspend event. We want it to keep updating
# backlight effects.
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
# Build Options
# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
LAYOUTS = 60_ansi 60_ansi_split_bs_rshift 60_ansi_tsangan 60_iso 60_iso_split_bs_rshift 60_iso_tsangan 60_tsangan_hhkb

View File

@ -5,7 +5,7 @@
"maintainer": "lalalademaxiya1",
"usb": {
"vid": "0x3434",
"pid": "0x01A1",
"pid": "0x03A1",
"device_version": "1.0.0"
},
"processor": "STM32L432",

View File

@ -14,49 +14,20 @@ GNU General 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"
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
/*
* Keyboard Matrix Assignments
*
* Change this to how you wired your keyboard
* COLS: AVR pins used for columns, left to right
* ROWS: AVR pins used for rows, top to bottom
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
*
*/
// Checked with Eagle Schematic
#define MATRIX_ROW_PINS { B1, B2, B3, D3, D1, D0 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4, B0, B7, E6}
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5
/* Define RGB */
#define RGBLED_NUM 86
#define RGB_MATRIX_LED_COUNT 86
#define RGB_DI_PIN D2
#ifdef RGB_MATRIX_ENABLE
#define RGB_MATRIX_LED_COUNT 126
#define RGB_DI_PIN D2
#define RGB_DISABLE_WHEN_USB_SUSPENDED
#define RGB_MATRIX_KEYPRESSES
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 120
#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL
#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT
#define ENABLE_RGB_MATRIX_ALPHAS_MODS
#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
@ -111,4 +82,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
#define EECONFIG_KB_DATA_SIZE 4
#define CAPS_INDICATOR_INDEX 12
#endif

View File

@ -1,44 +0,0 @@
/*
Copyright 2020 <contact@vwolf.be>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General 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 "fave84h.h"
#ifdef RGB_MATRIX_ENABLE
led_config_t g_led_config = {
{
// Key Matrix to LED Index
{ 47, NO_LED, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62 },
{ 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30 },
{ 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 },
{ 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, NO_LED, 0, NO_LED, NO_LED, NO_LED },
{ 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, NO_LED, 84, NO_LED, NO_LED, 85, NO_LED },
{ 72, 71, 70, NO_LED, NO_LED, 69, NO_LED, NO_LED, NO_LED, NO_LED, 68, NO_LED, 67, 66, 65, 64, 63 },
}, {
// LED Index to Physical Position
{ 0, 0 }, { 28, 0 }, { 42, 0 }, { 57, 0 }, { 71, 0 }, { 92, 0 }, { 106, 0 }, { 120, 0 }, { 134, 0 }, { 156, 0 }, { 170, 0 }, { 184, 0 }, { 198, 0 }, { 216, 0 }, { 230, 0 }, { 244, 0 },
{ 0, 15 }, { 14, 15 }, { 28, 15 }, { 42, 15 }, { 57, 15 }, { 71, 15 }, { 85, 15 }, { 99, 15 }, { 113, 15 }, { 127, 15 }, { 141, 15 }, { 156, 15 }, { 170, 15 }, { 191, 17 }, { 216, 15 }, { 230, 15 }, { 244, 15 },
{ 4, 27 }, { 21, 27 }, { 35, 27 }, { 50, 27 }, { 64, 27 }, { 78, 27 }, { 92, 27 }, { 106, 27 }, { 120, 27 }, { 134, 27 }, { 149, 27 }, { 163, 27 }, { 177, 27 }, { 194, 27 }, { 216, 27 }, { 230, 27 }, { 244, 27 },
{ 10, 40 }, { 25, 40 }, { 39, 40 }, { 53, 40 }, { 67, 40 }, { 81, 40 }, { 95, 40 }, { 110, 40 }, { 124, 40 }, { 138, 40 }, { 152, 40 }, { 166, 40 }, { 189, 40 },
{ 9, 52 }, { 32, 52 }, { 46, 52 }, { 60, 52 }, { 74, 52 }, { 88, 52 }, { 103, 52 }, { 117, 52 }, { 131, 52 }, { 145, 52 }, { 159, 52 }, { 186, 52 }, { 230, 52 },
{ 4, 64 }, { 21, 64 }, { 39, 64 }, { 99, 64 }, { 159, 64 }, { 177, 64 }, { 194, 64 }, { 216, 64 }, { 230, 64 }, { 244, 64 }
}, {
// LED Index to Flag
1, 4, 4, 4, 4, 1, 1, 1, 1, 4, 4, 4, 4, 1, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
9, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 1, 1, 4, 1, 1, 1, 1, 1, 1
}
};
#endif

View File

@ -1,69 +0,0 @@
/*
Copyright 2020 <contact@vwolf.be>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General 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
/*
*
* 00 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 0G
*
*
* 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 3C 1E 1F 1G 1D 2u Backspace
*
* 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 2G
*
* 30 31 32 33 34 35 36 37 38 39 3A 3B 3D
*
* 40 41 42 43 44 45 46 47 48 49 4A 4C 4F
*
* 50 51 52 55 5A 5C 5D 5E 5F 5G
*
*/
/* FAve 84H Keymap Definitions */
#define LAYOUT_tkl_ansi_tsangan_split_bs( \
K00, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K3C, K1E, K1F, K1G, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, \
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \
K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4C, K4F, \
K50, K51, K52, K55, K5A, K5C, K5D, K5E, K5F, K5G \
) { \
{ K00, ___, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G }, \
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G }, \
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G }, \
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, ___, ___, ___ }, \
{ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, ___, K4C, ___, ___, K4F, ___ }, \
{ K50, K51, K52, ___, ___, K55, ___, ___, ___, ___, K5A, ___, K5C, K5D, K5E, K5F, K5G } \
}
#define LAYOUT_tkl_ansi_tsangan( \
K00, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, \
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \
K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4C, K4F, \
K50, K51, K52, K55, K5A, K5C, K5D, K5E, K5F, K5G \
) { \
{ K00, ___, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G }, \
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G }, \
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G }, \
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, ___, K3D, ___, ___, ___ }, \
{ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, ___, K4C, ___, ___, K4F, ___ }, \
{ K50, K51, K52, ___, ___, K55, ___, ___, ___, ___, K5A, ___, K5C, K5D, K5E, K5F, K5G } \
}

View File

@ -1,12 +1,160 @@
{
"keyboard_name": "FAve 84H",
"manufacturer": "Lx3",
"url": "",
"keyboard_name": "FAve 84H",
"maintainer": "ToastyStoemp",
"bootloader": "atmel-dfu",
"diode_direction": "COL2ROW",
"features": {
"bootmagic": true,
"command": false,
"console": false,
"extrakey": true,
"mousekey": true,
"nkro": true,
"rgb_matrix": true,
"rgblight": false
},
"matrix_pins": {
"cols": ["F0", "F1", "F4", "F5", "F6", "F7", "C7", "C6", "B6", "B5", "B4", "D7", "D6", "D4", "B0", "B7", "E6"],
"rows": ["B1", "B2", "B3", "D3", "D1", "D0"]
},
"processor": "atmega32u4",
"rgb_matrix": {
"driver": "WS2812",
"layout": [
{ "flags": 1, "matrix": [3, 13], "x": 190, "y": 40 },
{ "flags": 4, "matrix": [3, 11], "x": 167, "y": 40 },
{ "flags": 4, "matrix": [3, 10], "x": 153, "y": 40 },
{ "flags": 4, "matrix": [3, 9], "x": 139, "y": 40 },
{ "flags": 4, "matrix": [3, 8], "x": 125, "y": 40 },
{ "flags": 4, "matrix": [3, 7], "x": 111, "y": 40 },
{ "flags": 4, "matrix": [3, 6], "x": 97, "y": 40 },
{ "flags": 4, "matrix": [3, 5], "x": 83, "y": 40 },
{ "flags": 4, "matrix": [3, 4], "x": 69, "y": 40 },
{ "flags": 4, "matrix": [3, 3], "x": 55, "y": 40 },
{ "flags": 4, "matrix": [3, 2], "x": 41, "y": 40 },
{ "flags": 4, "matrix": [3, 1], "x": 27, "y": 40 },
{ "flags": 1, "matrix": [3, 0], "x": 0, "y": 41 },
{ "flags": 1, "matrix": [2, 0], "x": 6, "y": 27 },
{ "flags": 4, "matrix": [2, 1], "x": 23, "y": 27 },
{ "flags": 4, "matrix": [2, 2], "x": 37, "y": 27 },
{ "flags": 4, "matrix": [2, 3], "x": 51, "y": 27 },
{ "flags": 4, "matrix": [2, 4], "x": 65, "y": 27 },
{ "flags": 4, "matrix": [2, 5], "x": 79, "y": 27 },
{ "flags": 4, "matrix": [2, 6], "x": 93, "y": 27 },
{ "flags": 4, "matrix": [2, 7], "x": 107, "y": 27 },
{ "flags": 4, "matrix": [2, 8], "x": 121, "y": 27 },
{ "flags": 4, "matrix": [2, 9], "x": 135, "y": 27 },
{ "flags": 4, "matrix": [2, 10], "x": 149, "y": 27 },
{ "flags": 4, "matrix": [2, 11], "x": 163, "y": 27 },
{ "flags": 4, "matrix": [2, 12], "x": 177, "y": 27 },
{ "flags": 1, "matrix": [2, 13], "x": 195, "y": 27 },
{ "flags": 1, "matrix": [2, 14], "x": 216, "y": 27 },
{ "flags": 1, "matrix": [2, 15], "x": 230, "y": 27 },
{ "flags": 1, "matrix": [2, 16], "x": 244, "y": 27 },
{ "flags": 1, "matrix": [1, 16], "x": 244, "y": 15 },
{ "flags": 1, "matrix": [1, 15], "x": 230, "y": 15 },
{ "flags": 1, "matrix": [1, 14], "x": 216, "y": 15 },
{ "flags": 1, "matrix": [1, 13], "x": 191, "y": 17 },
{ "flags": 4, "matrix": [1, 12], "x": 170, "y": 15 },
{ "flags": 4, "matrix": [1, 11], "x": 156, "y": 15 },
{ "flags": 4, "matrix": [1, 10], "x": 142, "y": 15 },
{ "flags": 4, "matrix": [1, 9], "x": 128, "y": 15 },
{ "flags": 4, "matrix": [1, 8], "x": 114, "y": 15 },
{ "flags": 4, "matrix": [1, 7], "x": 100, "y": 15 },
{ "flags": 4, "matrix": [1, 6], "x": 86, "y": 15 },
{ "flags": 4, "matrix": [1, 5], "x": 72, "y": 15 },
{ "flags": 4, "matrix": [1, 4], "x": 58, "y": 15 },
{ "flags": 4, "matrix": [1, 3], "x": 44, "y": 15 },
{ "flags": 4, "matrix": [1, 2], "x": 30, "y": 15 },
{ "flags": 4, "matrix": [1, 1], "x": 16, "y": 15 },
{ "flags": 1, "matrix": [1, 0], "x": 2, "y": 15 },
{ "flags": 1, "matrix": [0, 0], "x": 2, "y": 0 },
{ "flags": 1, "matrix": [0, 2], "x": 30, "y": 0 },
{ "flags": 1, "matrix": [0, 3], "x": 44, "y": 0 },
{ "flags": 1, "matrix": [0, 4], "x": 58, "y": 0 },
{ "flags": 1, "matrix": [0, 5], "x": 72, "y": 0 },
{ "flags": 1, "matrix": [0, 6], "x": 93, "y": 0 },
{ "flags": 1, "matrix": [0, 7], "x": 107, "y": 0 },
{ "flags": 1, "matrix": [0, 8], "x": 121, "y": 0 },
{ "flags": 1, "matrix": [0, 9], "x": 135, "y": 0 },
{ "flags": 1, "matrix": [0, 10], "x": 156, "y": 0 },
{ "flags": 1, "matrix": [0, 11], "x": 170, "y": 0 },
{ "flags": 1, "matrix": [0, 12], "x": 184, "y": 0 },
{ "flags": 1, "matrix": [0, 13], "x": 198, "y": 0 },
{ "flags": 1, "matrix": [0, 14], "x": 216, "y": 0 },
{ "flags": 1, "matrix": [0, 15], "x": 230, "y": 0 },
{ "flags": 1, "matrix": [0, 16], "x": 244, "y": 0 },
{ "flags": 1, "matrix": [5, 16], "x": 244, "y": 64 },
{ "flags": 1, "matrix": [5, 15], "x": 230, "y": 64 },
{ "flags": 1, "matrix": [5, 14], "x": 216, "y": 64 },
{ "flags": 1, "matrix": [5, 13], "x": 195, "y": 64 },
{ "flags": 1, "matrix": [5, 12], "x": 177, "y": 64 },
{ "flags": 1, "matrix": [5, 10], "x": 160, "y": 64 },
{ "flags": 1, "matrix": [5, 5], "x": 100, "y": 64 },
{ "flags": 1, "matrix": [5, 2], "x": 41, "y": 64 },
{ "flags": 1, "matrix": [5, 1], "x": 23, "y": 64 },
{ "flags": 1, "matrix": [5, 0], "x": 6, "y": 64 },
{ "flags": 1, "matrix": [4, 0], "x": 11, "y": 52 },
{ "flags": 4, "matrix": [4, 1], "x": 34, "y": 52 },
{ "flags": 4, "matrix": [4, 2], "x": 48, "y": 52 },
{ "flags": 4, "matrix": [4, 3], "x": 62, "y": 52 },
{ "flags": 4, "matrix": [4, 4], "x": 76, "y": 52 },
{ "flags": 4, "matrix": [4, 5], "x": 90, "y": 52 },
{ "flags": 4, "matrix": [4, 6], "x": 104, "y": 52 },
{ "flags": 4, "matrix": [4, 7], "x": 118, "y": 52 },
{ "flags": 4, "matrix": [4, 8], "x": 132, "y": 52 },
{ "flags": 4, "matrix": [4, 9], "x": 146, "y": 52 },
{ "flags": 4, "matrix": [4, 10], "x": 160, "y": 52 },
{ "flags": 1, "matrix": [4, 12], "x": 186, "y": 52 },
{ "flags": 1, "matrix": [4, 15], "x": 230, "y": 52 },
{ "flags": 2, "x": 242, "y": 55 },
{ "flags": 2, "x": 227, "y": 55 },
{ "flags": 2, "x": 212, "y": 55 },
{ "flags": 2, "x": 198, "y": 55 },
{ "flags": 2, "x": 183, "y": 55 },
{ "flags": 2, "x": 168, "y": 55 },
{ "flags": 2, "x": 153, "y": 55 },
{ "flags": 2, "x": 138, "y": 55 },
{ "flags": 2, "x": 123, "y": 55 },
{ "flags": 2, "x": 108, "y": 55 },
{ "flags": 2, "x": 93, "y": 55 },
{ "flags": 2, "x": 78, "y": 55 },
{ "flags": 2, "x": 67, "y": 55 },
{ "flags": 2, "x": 49, "y": 55 },
{ "flags": 2, "x": 34, "y": 55 },
{ "flags": 2, "x": 17, "y": 55 },
{ "flags": 2, "x": 6, "y": 55 },
{ "flags": 2, "x": 6, "y": 43 },
{ "flags": 2, "x": 6, "y": 30 },
{ "flags": 2, "x": 6, "y": 18 },
{ "flags": 2, "x": 6, "y": 3 },
{ "flags": 2, "x": 20, "y": 3 },
{ "flags": 2, "x": 35, "y": 3 },
{ "flags": 2, "x": 50, "y": 3 },
{ "flags": 2, "x": 65, "y": 3 },
{ "flags": 2, "x": 80, "y": 3 },
{ "flags": 2, "x": 94, "y": 3 },
{ "flags": 2, "x": 109, "y": 3 },
{ "flags": 2, "x": 124, "y": 3 },
{ "flags": 2, "x": 139, "y": 3 },
{ "flags": 2, "x": 153, "y": 3 },
{ "flags": 2, "x": 168, "y": 3 },
{ "flags": 2, "x": 183, "y": 3 },
{ "flags": 2, "x": 198, "y": 3 },
{ "flags": 2, "x": 212, "y": 3 },
{ "flags": 2, "x": 227, "y": 3 },
{ "flags": 2, "x": 242, "y": 3 },
{ "flags": 2, "x": 242, "y": 18 },
{ "flags": 2, "x": 242, "y": 31 },
{ "flags": 2, "x": 242, "y": 43 }
]
},
"url": "",
"usb": {
"vid": "0x4C58",
"device_version": "1.0.0",
"pid": "0x0004",
"device_version": "0.0.1"
"vid": "0x4C58"
},
"community_layouts": [
"tkl_ansi_tsangan"
@ -14,193 +162,193 @@
"layouts": {
"LAYOUT_tkl_ansi_tsangan_split_bs": {
"layout": [
{"label":"Esc", "x":0, "y":0},
{"label":"F1", "x":2, "y":0},
{"label":"F2", "x":3, "y":0},
{"label":"F3", "x":4, "y":0},
{"label":"F4", "x":5, "y":0},
{"label":"F5", "x":6.5, "y":0},
{"label":"F6", "x":7.5, "y":0},
{"label":"F7", "x":8.5, "y":0},
{"label":"F8", "x":9.5, "y":0},
{"label":"F9", "x":11, "y":0},
{"label":"F10", "x":12, "y":0},
{"label":"F11", "x":13, "y":0},
{"label":"F12", "x":14, "y":0},
{"label":"PrtSc", "x":15.25, "y":0},
{"label":"Scroll Lock", "x":16.25, "y":0},
{"label":"Pause", "x":17.25, "y":0},
{ "matrix": [0, 0], "x": 0, "y": 0 },
{ "matrix": [0, 2], "x": 2, "y": 0 },
{ "matrix": [0, 3], "x": 3, "y": 0 },
{ "matrix": [0, 4], "x": 4, "y": 0 },
{ "matrix": [0, 5], "x": 5, "y": 0 },
{ "matrix": [0, 6], "x": 6.5, "y": 0 },
{ "matrix": [0, 7], "x": 7.5, "y": 0 },
{ "matrix": [0, 8], "x": 8.5, "y": 0 },
{ "matrix": [0, 9], "x": 9.5, "y": 0 },
{ "matrix": [0, 10], "x": 11, "y": 0 },
{ "matrix": [0, 11], "x": 12, "y": 0 },
{ "matrix": [0, 12], "x": 13, "y": 0 },
{ "matrix": [0, 13], "x": 14, "y": 0 },
{ "matrix": [0, 14], "x": 15.25, "y": 0 },
{ "matrix": [0, 15], "x": 16.25, "y": 0 },
{ "matrix": [0, 16], "x": 17.25, "y": 0 },
{"label":"`~", "x":0, "y":1.25},
{"label":"1!", "x":1, "y":1.25},
{"label":"2@", "x":2, "y":1.25},
{"label":"3#", "x":3, "y":1.25},
{"label":"4$", "x":4, "y":1.25},
{"label":"5%", "x":5, "y":1.25},
{"label":"6^", "x":6, "y":1.25},
{"label":"7&", "x":7, "y":1.25},
{"label":"8*", "x":8, "y":1.25},
{"label":"9(", "x":9, "y":1.25},
{"label":"0)", "x":10, "y":1.25},
{"label":"-_", "x":11, "y":1.25},
{"label":"=+", "x":12, "y":1.25},
{"label":"Backspace", "x":13, "y":1.25},
{"label":"Delete", "x":14, "y":1.25},
{"label":"Insert", "x":15.25, "y":1.25},
{"label":"Home", "x":16.25, "y":1.25},
{"label":"PgUp", "x":17.25, "y":1.25},
{ "matrix": [1, 0], "x": 0, "y": 1.25 },
{ "matrix": [1, 1], "x": 1, "y": 1.25 },
{ "matrix": [1, 2], "x": 2, "y": 1.25 },
{ "matrix": [1, 3], "x": 3, "y": 1.25 },
{ "matrix": [1, 4], "x": 4, "y": 1.25 },
{ "matrix": [1, 5], "x": 5, "y": 1.25 },
{ "matrix": [1, 6], "x": 6, "y": 1.25 },
{ "matrix": [1, 7], "x": 7, "y": 1.25 },
{ "matrix": [1, 8], "x": 8, "y": 1.25 },
{ "matrix": [1, 9], "x": 9, "y": 1.25 },
{ "matrix": [1, 10], "x": 10, "y": 1.25 },
{ "matrix": [1, 11], "x": 11, "y": 1.25 },
{ "matrix": [1, 12], "x": 12, "y": 1.25 },
{ "matrix": [1, 13], "x": 13, "y": 1.25 },
{ "matrix": [3, 12], "x": 14, "y": 1.25 },
{ "matrix": [1, 14], "x": 15.25, "y": 1.25 },
{ "matrix": [1, 15], "x": 16.25, "y": 1.25 },
{ "matrix": [1, 16], "x": 17.25, "y": 1.25 },
{"label":"Tab", "x":0, "y":2.25, "w":1.5},
{"label":"Q", "x":1.5, "y":2.25},
{"label":"W", "x":2.5, "y":2.25},
{"label":"E", "x":3.5, "y":2.25},
{"label":"R", "x":4.5, "y":2.25},
{"label":"T", "x":5.5, "y":2.25},
{"label":"Y", "x":6.5, "y":2.25},
{"label":"U", "x":7.5, "y":2.25},
{"label":"I", "x":8.5, "y":2.25},
{"label":"O", "x":9.5, "y":2.25},
{"label":"P", "x":10.5, "y":2.25},
{"label":"[{", "x":11.5, "y":2.25},
{"label":"]}", "x":12.5, "y":2.25},
{"label":"\\|", "x":13.5, "y":2.25, "w":1.5},
{"label":"Delete", "x":15.25, "y":2.25},
{"label":"End", "x":16.25, "y":2.25},
{"label":"PgDn", "x":17.25, "y":2.25},
{ "matrix": [2, 0], "w": 1.5, "x": 0, "y": 2.25 },
{ "matrix": [2, 1], "x": 1.5, "y": 2.25 },
{ "matrix": [2, 2], "x": 2.5, "y": 2.25 },
{ "matrix": [2, 3], "x": 3.5, "y": 2.25 },
{ "matrix": [2, 4], "x": 4.5, "y": 2.25 },
{ "matrix": [2, 5], "x": 5.5, "y": 2.25 },
{ "matrix": [2, 6], "x": 6.5, "y": 2.25 },
{ "matrix": [2, 7], "x": 7.5, "y": 2.25 },
{ "matrix": [2, 8], "x": 8.5, "y": 2.25 },
{ "matrix": [2, 9], "x": 9.5, "y": 2.25 },
{ "matrix": [2, 10], "x": 10.5, "y": 2.25 },
{ "matrix": [2, 11], "x": 11.5, "y": 2.25 },
{ "matrix": [2, 12], "x": 12.5, "y": 2.25 },
{ "matrix": [2, 13], "w": 1.5, "x": 13.5, "y": 2.25 },
{ "matrix": [2, 14], "x": 15.25, "y": 2.25 },
{ "matrix": [2, 15], "x": 16.25, "y": 2.25 },
{ "matrix": [2, 16], "x": 17.25, "y": 2.25 },
{"label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
{"label":"A", "x":1.75, "y":3.25},
{"label":"S", "x":2.75, "y":3.25},
{"label":"D", "x":3.75, "y":3.25},
{"label":"F", "x":4.75, "y":3.25},
{"label":"G", "x":5.75, "y":3.25},
{"label":"H", "x":6.75, "y":3.25},
{"label":"J", "x":7.75, "y":3.25},
{"label":"K", "x":8.75, "y":3.25},
{"label":"L", "x":9.75, "y":3.25},
{"label":";:", "x":10.75, "y":3.25},
{"label":"'\"", "x":11.75, "y":3.25},
{"label":"Enter", "x":12.75, "y":3.25, "w":2.25},
{ "matrix": [3, 0], "w": 1.75, "x": 0, "y": 3.25 },
{ "matrix": [3, 1], "x": 1.75, "y": 3.25 },
{ "matrix": [3, 2], "x": 2.75, "y": 3.25 },
{ "matrix": [3, 3], "x": 3.75, "y": 3.25 },
{ "matrix": [3, 4], "x": 4.75, "y": 3.25 },
{ "matrix": [3, 5], "x": 5.75, "y": 3.25 },
{ "matrix": [3, 6], "x": 6.75, "y": 3.25 },
{ "matrix": [3, 7], "x": 7.75, "y": 3.25 },
{ "matrix": [3, 8], "x": 8.75, "y": 3.25 },
{ "matrix": [3, 9], "x": 9.75, "y": 3.25 },
{ "matrix": [3, 10], "x": 10.75, "y": 3.25 },
{ "matrix": [3, 11], "x": 11.75, "y": 3.25 },
{ "matrix": [3, 13], "w": 2.25, "x": 12.75, "y": 3.25 },
{"label":"Shift", "x":0, "y":4.25, "w":2.25},
{"label":"Z", "x":2.25, "y":4.25},
{"label":"X", "x":3.25, "y":4.25},
{"label":"C", "x":4.25, "y":4.25},
{"label":"V", "x":5.25, "y":4.25},
{"label":"B", "x":6.25, "y":4.25},
{"label":"N", "x":7.25, "y":4.25},
{"label":"M", "x":8.25, "y":4.25},
{"label":",<", "x":9.25, "y":4.25},
{"label":".>", "x":10.25, "y":4.25},
{"label":"/?", "x":11.25, "y":4.25},
{"label":"Shift", "x":12.25, "y":4.25, "w":2.75},
{"label":"\u2191", "x":16.25, "y":4.25},
{ "matrix": [4, 0], "w": 2.25, "x": 0, "y": 4.25 },
{ "matrix": [4, 1], "x": 2.25, "y": 4.25 },
{ "matrix": [4, 2], "x": 3.25, "y": 4.25 },
{ "matrix": [4, 3], "x": 4.25, "y": 4.25 },
{ "matrix": [4, 4], "x": 5.25, "y": 4.25 },
{ "matrix": [4, 5], "x": 6.25, "y": 4.25 },
{ "matrix": [4, 6], "x": 7.25, "y": 4.25 },
{ "matrix": [4, 7], "x": 8.25, "y": 4.25 },
{ "matrix": [4, 8], "x": 9.25, "y": 4.25 },
{ "matrix": [4, 9], "x": 10.25, "y": 4.25 },
{ "matrix": [4, 10], "x": 11.25, "y": 4.25 },
{ "matrix": [4, 12], "w": 2.75, "x": 12.25, "y": 4.25 },
{ "matrix": [4, 15], "x": 16.25, "y": 4.25 },
{"label":"Ctrl", "x":0, "y":5.25, "w":1.5},
{"label":"Win", "x":1.5, "y":5.25},
{"label":"Alt", "x":2.5, "y":5.25, "w":1.5},
{"label":"Space", "x":4, "y":5.25, "w":7},
{"label":"Alt", "x":11, "y":5.25, "w":1.5},
{"label":"Fn", "x":12.5, "y":5.25},
{"label":"Ctrl", "x":13.5, "y":5.25, "w":1.5},
{"label":"\u2190", "x":15.25, "y":5.25},
{"label":"\u2193", "x":16.25, "y":5.25},
{"label":"\u2192", "x":17.25, "y":5.25}
{ "matrix": [5, 0], "w": 1.5, "x": 0, "y": 5.25 },
{ "matrix": [5, 1], "x": 1.5, "y": 5.25 },
{ "matrix": [5, 2], "w": 1.5, "x": 2.5, "y": 5.25 },
{ "matrix": [5, 5], "w": 7, "x": 4, "y": 5.25 },
{ "matrix": [5, 10], "w": 1.5, "x": 11, "y": 5.25 },
{ "matrix": [5, 12], "x": 12.5, "y": 5.25 },
{ "matrix": [5, 13], "w": 1.5, "x": 13.5, "y": 5.25 },
{ "matrix": [5, 14], "x": 15.25, "y": 5.25 },
{ "matrix": [5, 15], "x": 16.25, "y": 5.25 },
{ "matrix": [5, 16], "x": 17.25, "y": 5.25 }
]
},
"LAYOUT_tkl_ansi_tsangan": {
"layout": [
{"label":"Esc", "x":0, "y":0},
{"label":"F1", "x":2, "y":0},
{"label":"F2", "x":3, "y":0},
{"label":"F3", "x":4, "y":0},
{"label":"F4", "x":5, "y":0},
{"label":"F5", "x":6.5, "y":0},
{"label":"F6", "x":7.5, "y":0},
{"label":"F7", "x":8.5, "y":0},
{"label":"F8", "x":9.5, "y":0},
{"label":"F9", "x":11, "y":0},
{"label":"F10", "x":12, "y":0},
{"label":"F11", "x":13, "y":0},
{"label":"F12", "x":14, "y":0},
{"label":"PrtSc", "x":15.25, "y":0},
{"label":"Scroll Lock", "x":16.25, "y":0},
{"label":"Pause", "x":17.25, "y":0},
{ "matrix": [0, 0], "x": 0, "y": 0 },
{ "matrix": [0, 2], "x": 2, "y": 0 },
{ "matrix": [0, 3], "x": 3, "y": 0 },
{ "matrix": [0, 4], "x": 4, "y": 0 },
{ "matrix": [0, 5], "x": 5, "y": 0 },
{ "matrix": [0, 6], "x": 6.5, "y": 0 },
{ "matrix": [0, 7], "x": 7.5, "y": 0 },
{ "matrix": [0, 8], "x": 8.5, "y": 0 },
{ "matrix": [0, 9], "x": 9.5, "y": 0 },
{ "matrix": [0, 10], "x": 11, "y": 0 },
{ "matrix": [0, 11], "x": 12, "y": 0 },
{ "matrix": [0, 12], "x": 13, "y": 0 },
{ "matrix": [0, 13], "x": 14, "y": 0 },
{ "matrix": [0, 14], "x": 15.25, "y": 0 },
{ "matrix": [0, 15], "x": 16.25, "y": 0 },
{ "matrix": [0, 16], "x": 17.25, "y": 0 },
{"label":"`~", "x":0, "y":1.25},
{"label":"1!", "x":1, "y":1.25},
{"label":"2@", "x":2, "y":1.25},
{"label":"3#", "x":3, "y":1.25},
{"label":"4$", "x":4, "y":1.25},
{"label":"5%", "x":5, "y":1.25},
{"label":"6^", "x":6, "y":1.25},
{"label":"7&", "x":7, "y":1.25},
{"label":"8*", "x":8, "y":1.25},
{"label":"9(", "x":9, "y":1.25},
{"label":"0)", "x":10, "y":1.25},
{"label":"-_", "x":11, "y":1.25},
{"label":"=+", "x":12, "y":1.25},
{"label":"Backspace", "x":13, "y":1.25, "w":2},
{"label":"Insert", "x":15.25, "y":1.25},
{"label":"Home", "x":16.25, "y":1.25},
{"label":"PgUp", "x":17.25, "y":1.25},
{ "matrix": [1, 0], "x": 0, "y": 1.25 },
{ "matrix": [1, 1], "x": 1, "y": 1.25 },
{ "matrix": [1, 2], "x": 2, "y": 1.25 },
{ "matrix": [1, 3], "x": 3, "y": 1.25 },
{ "matrix": [1, 4], "x": 4, "y": 1.25 },
{ "matrix": [1, 5], "x": 5, "y": 1.25 },
{ "matrix": [1, 6], "x": 6, "y": 1.25 },
{ "matrix": [1, 7], "x": 7, "y": 1.25 },
{ "matrix": [1, 8], "x": 8, "y": 1.25 },
{ "matrix": [1, 9], "x": 9, "y": 1.25 },
{ "matrix": [1, 10], "x": 10, "y": 1.25 },
{ "matrix": [1, 11], "x": 11, "y": 1.25 },
{ "matrix": [1, 12], "x": 12, "y": 1.25 },
{ "matrix": [1, 13], "w":2, "x": 13, "y": 1.25 },
{ "matrix": [1, 14], "x": 15.25, "y": 1.25 },
{ "matrix": [1, 15], "x": 16.25, "y": 1.25 },
{ "matrix": [1, 16], "x": 17.25, "y": 1.25 },
{"label":"Tab", "x":0, "y":2.25, "w":1.5},
{"label":"Q", "x":1.5, "y":2.25},
{"label":"W", "x":2.5, "y":2.25},
{"label":"E", "x":3.5, "y":2.25},
{"label":"R", "x":4.5, "y":2.25},
{"label":"T", "x":5.5, "y":2.25},
{"label":"Y", "x":6.5, "y":2.25},
{"label":"U", "x":7.5, "y":2.25},
{"label":"I", "x":8.5, "y":2.25},
{"label":"O", "x":9.5, "y":2.25},
{"label":"P", "x":10.5, "y":2.25},
{"label":"[{", "x":11.5, "y":2.25},
{"label":"]}", "x":12.5, "y":2.25},
{"label":"\\|", "x":13.5, "y":2.25, "w":1.5},
{"label":"Delete", "x":15.25, "y":2.25},
{"label":"End", "x":16.25, "y":2.25},
{"label":"PgDn", "x":17.25, "y":2.25},
{ "matrix": [2, 0], "w": 1.5, "x": 0, "y": 2.25 },
{ "matrix": [2, 1], "x": 1.5, "y": 2.25 },
{ "matrix": [2, 2], "x": 2.5, "y": 2.25 },
{ "matrix": [2, 3], "x": 3.5, "y": 2.25 },
{ "matrix": [2, 4], "x": 4.5, "y": 2.25 },
{ "matrix": [2, 5], "x": 5.5, "y": 2.25 },
{ "matrix": [2, 6], "x": 6.5, "y": 2.25 },
{ "matrix": [2, 7], "x": 7.5, "y": 2.25 },
{ "matrix": [2, 8], "x": 8.5, "y": 2.25 },
{ "matrix": [2, 9], "x": 9.5, "y": 2.25 },
{ "matrix": [2, 10], "x": 10.5, "y": 2.25 },
{ "matrix": [2, 11], "x": 11.5, "y": 2.25 },
{ "matrix": [2, 12], "x": 12.5, "y": 2.25 },
{ "matrix": [2, 13], "w": 1.5, "x": 13.5, "y": 2.25 },
{ "matrix": [2, 14], "x": 15.25, "y": 2.25 },
{ "matrix": [2, 15], "x": 16.25, "y": 2.25 },
{ "matrix": [2, 16], "x": 17.25, "y": 2.25 },
{"label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
{"label":"A", "x":1.75, "y":3.25},
{"label":"S", "x":2.75, "y":3.25},
{"label":"D", "x":3.75, "y":3.25},
{"label":"F", "x":4.75, "y":3.25},
{"label":"G", "x":5.75, "y":3.25},
{"label":"H", "x":6.75, "y":3.25},
{"label":"J", "x":7.75, "y":3.25},
{"label":"K", "x":8.75, "y":3.25},
{"label":"L", "x":9.75, "y":3.25},
{"label":";:", "x":10.75, "y":3.25},
{"label":"'\"", "x":11.75, "y":3.25},
{"label":"Enter", "x":12.75, "y":3.25, "w":2.25},
{ "matrix": [3, 0], "w": 1.75, "x": 0, "y": 3.25 },
{ "matrix": [3, 1], "x": 1.75, "y": 3.25 },
{ "matrix": [3, 2], "x": 2.75, "y": 3.25 },
{ "matrix": [3, 3], "x": 3.75, "y": 3.25 },
{ "matrix": [3, 4], "x": 4.75, "y": 3.25 },
{ "matrix": [3, 5], "x": 5.75, "y": 3.25 },
{ "matrix": [3, 6], "x": 6.75, "y": 3.25 },
{ "matrix": [3, 7], "x": 7.75, "y": 3.25 },
{ "matrix": [3, 8], "x": 8.75, "y": 3.25 },
{ "matrix": [3, 9], "x": 9.75, "y": 3.25 },
{ "matrix": [3, 10], "x": 10.75, "y": 3.25 },
{ "matrix": [3, 11], "x": 11.75, "y": 3.25 },
{ "matrix": [3, 13], "w": 2.25, "x": 12.75, "y": 3.25 },
{"label":"Shift", "x":0, "y":4.25, "w":2.25},
{"label":"Z", "x":2.25, "y":4.25},
{"label":"X", "x":3.25, "y":4.25},
{"label":"C", "x":4.25, "y":4.25},
{"label":"V", "x":5.25, "y":4.25},
{"label":"B", "x":6.25, "y":4.25},
{"label":"N", "x":7.25, "y":4.25},
{"label":"M", "x":8.25, "y":4.25},
{"label":",<", "x":9.25, "y":4.25},
{"label":".>", "x":10.25, "y":4.25},
{"label":"/?", "x":11.25, "y":4.25},
{"label":"Shift", "x":12.25, "y":4.25, "w":2.75},
{"label":"\u2191", "x":16.25, "y":4.25},
{ "matrix": [4, 0], "w": 2.25, "x": 0, "y": 4.25 },
{ "matrix": [4, 1], "x": 2.25, "y": 4.25 },
{ "matrix": [4, 2], "x": 3.25, "y": 4.25 },
{ "matrix": [4, 3], "x": 4.25, "y": 4.25 },
{ "matrix": [4, 4], "x": 5.25, "y": 4.25 },
{ "matrix": [4, 5], "x": 6.25, "y": 4.25 },
{ "matrix": [4, 6], "x": 7.25, "y": 4.25 },
{ "matrix": [4, 7], "x": 8.25, "y": 4.25 },
{ "matrix": [4, 8], "x": 9.25, "y": 4.25 },
{ "matrix": [4, 9], "x": 10.25, "y": 4.25 },
{ "matrix": [4, 10], "x": 11.25, "y": 4.25 },
{ "matrix": [4, 12], "w": 2.75, "x": 12.25, "y": 4.25 },
{ "matrix": [4, 15], "x": 16.25, "y": 4.25 },
{"label":"Ctrl", "x":0, "y":5.25, "w":1.5},
{"label":"Win", "x":1.5, "y":5.25},
{"label":"Alt", "x":2.5, "y":5.25, "w":1.5},
{"label":"Space", "x":4, "y":5.25, "w":7},
{"label":"Alt", "x":11, "y":5.25, "w":1.5},
{"label":"Fn", "x":12.5, "y":5.25},
{"label":"Ctrl", "x":13.5, "y":5.25, "w":1.5},
{"label":"\u2190", "x":15.25, "y":5.25},
{"label":"\u2193", "x":16.25, "y":5.25},
{"label":"\u2192", "x":17.25, "y":5.25}
{ "matrix": [5, 0], "w": 1.5, "x": 0, "y": 5.25 },
{ "matrix": [5, 1], "x": 1.5, "y": 5.25 },
{ "matrix": [5, 2], "w": 1.5, "x": 2.5, "y": 5.25 },
{ "matrix": [5, 5], "w": 7, "x": 4, "y": 5.25 },
{ "matrix": [5, 10], "w": 1.5, "x": 11, "y": 5.25 },
{ "matrix": [5, 12], "x": 12.5, "y": 5.25 },
{ "matrix": [5, 13], "w": 1.5, "x": 13.5, "y": 5.25 },
{ "matrix": [5, 14], "x": 15.25, "y": 5.25 },
{ "matrix": [5, 15], "x": 16.25, "y": 5.25 },
{ "matrix": [5, 16], "x": 17.25, "y": 5.25 }
]
}
}

View File

@ -37,8 +37,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, EE_CLR,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT
),
)
};
bool rgb_matrix_indicators_user(void) {

View File

@ -57,14 +57,135 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
)
};
// Single Indicator memory layout
typedef struct _indicator_config_t {
uint8_t h;
uint8_t s;
uint8_t v;
bool enabled;
} indicator_config;
// Board memory layout
typedef struct _fave_config_t {
indicator_config caps;
} fave_config;
fave_config fave;
void eeconfig_init_user(void) {
// Default values
fave.caps.h = 0;
fave.caps.s = 0;
fave.caps.v = RGB_MATRIX_MAXIMUM_BRIGHTNESS;
fave.caps.enabled = true;
// Write default value to EEPROM now
eeconfig_update_kb_datablock(&fave);
}
enum via_fave {
id_caps_indicator_enabled = 1,
id_caps_indicator_brightness = 2,
id_caps_indicator_color = 3
};
//On Keyboard startup
void keyboard_post_init_user(void) {
//Read our custom menu variables from memory
eeconfig_read_kb_datablock(&fave);
}
bool rgb_matrix_indicators_user(void) {
led_t host_leds = host_keyboard_led_state();
if (host_leds.caps_lock) {
rgb_matrix_set_color(12, 254, 189, 41); // set caps lock led color first number is index, R G B
if (fave.caps.enabled) {
// The rgb_matrix_set_color function needs an RGB code to work, so first the indicator color is cast to an HSV value and then translated to RGB
HSV hsv_caps_indicator_color = {fave.caps.h, fave.caps.s, fave.caps.v};
RGB rgb_caps_indicator_color = hsv_to_rgb(hsv_caps_indicator_color);
if (host_keyboard_led_state().caps_lock)
rgb_matrix_set_color(CAPS_INDICATOR_INDEX, rgb_caps_indicator_color.r, rgb_caps_indicator_color.g, rgb_caps_indicator_color.b);
}
return false;
return true;
}
void fave_config_set_value(uint8_t *data) {
// data = [ value_id, value_data ]
uint8_t *value_id = &(data[0]);
uint8_t *value_data = &(data[1]);
switch (*value_id) {
case id_caps_indicator_enabled: {
fave.caps.enabled = value_data[0];
break;
}
case id_caps_indicator_brightness: {
fave.caps.v = value_data[0];
break;
}
case id_caps_indicator_color: {
fave.caps.h = value_data[0];
fave.caps.s = value_data[1];
break;
}
}
}
void fave_config_get_value(uint8_t *data) {
// data = [ value_id, value_data ]
uint8_t *value_id = &(data[0]);
uint8_t *value_data = &(data[1]);
switch (*value_id) {
case id_caps_indicator_enabled: {
value_data[0] = fave.caps.enabled;
break;
}
case id_caps_indicator_brightness: {
value_data[0] = fave.caps.v;
break;
}
case id_caps_indicator_color: {
value_data[0] = fave.caps.h;
value_data[1] = fave.caps.s;
break;
}
}
}
void fave_config_save(void) {
eeconfig_update_kb_datablock(&fave);
}
void via_custom_value_command_kb(uint8_t *data, uint8_t length) {
// data = [ command_id, channel_id, value_id, value_data ]
uint8_t *command_id = &(data[0]);
uint8_t *channel_id = &(data[1]);
uint8_t *value_id_and_data = &(data[2]);
if (*channel_id == id_custom_channel) {
switch (*command_id) {
case id_custom_set_value: {
fave_config_set_value(value_id_and_data);
break;
}
case id_custom_get_value: {
fave_config_get_value(value_id_and_data);
break;
}
case id_custom_save: {
fave_config_save();
break;
}
default: {
// Unhandled message.
*command_id = id_unhandled;
break;
}
}
return;
}
*command_id = id_unhandled;
}

View File

@ -1,23 +1,3 @@
# MCU name
MCU = atmega32u4
# Processor frequency
F_CPU = 8000000
# 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 = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = WS2812

View File

@ -0,0 +1,75 @@
/* Copyright 2023 Florent Linguenheld (@FLinguenheld)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General 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
/* Flash */
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET // Activates the double-tap behavior
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U // Timeout window in ms in which the double tap can occur.
/* OLED */
#undef OLED_FONT_H
#define OLED_FONT_H "./oled/glcdfont.c"
#define OLED_TIMEOUT 25000
#define OLED_BRIGHTNESS 60 // Protect my eyesss
#define SPLIT_LAYER_STATE_ENABLE
#define SPLIT_MODS_ENABLE
#define SPLIT_OLED_ENABLE
/* Auto shift ♥ */
#define AUTO_SHIFT_TIMEOUT 115
/* Redefine CTRL + space (See space cadet shift) */
#define LCPO_KEYS KC_LCTL, KC_TRNS, KC_SPC
/* Unicode */
// #define UNICODE_SELECTED_MODES UC_LNX
#define UNICODE_SELECTED_MODES UNICODE_MODE_LINUX
/* leader */
#define LEADER_PER_KEY_TIMING
#define LEADER_TIMEOUT 280
#define LEADER_NO_TIMEOUT
/* Mouse */
#define MK_3_SPEED
#define MK_MOMENTARY_ACCEL
#define MK_C_OFFSET_0 1
#define MK_C_INTERVAL_0 12
#define MK_C_OFFSET_1 4
#define MK_C_INTERVAL_1 18
#define MK_C_OFFSET_UNMOD 13
#define MK_C_INTERVAL_UNMOD 15
#define MK_C_OFFSET_2 25
#define MK_C_INTERVAL_2 10
#define MK_W_OFFSET_0 1
#define MK_W_INTERVAL_0 160
#define MK_W_OFFSET_1 2
#define MK_W_INTERVAL_1 120
#define MK_W_OFFSET_UNMOD 4
#define MK_W_INTERVAL_UNMOD 70
#define MK_W_OFFSET_2 10
#define MK_W_INTERVAL_2 30

View File

@ -0,0 +1,199 @@
// Copyright 2023 Florent Linguenheld (@FLinguenheld)
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
#include "keycodes.h"
/* Only for basis letters
Exceptions like Tab or Enter */
bool get_auto_shifted_key(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case KC_TAB:
case KC_ENT:
// --
case KC_A:
case KC_B:
case KC_C:
case KC_D:
case KC_E:
case KC_F:
case KC_G:
case KC_H:
case KC_I:
case KC_J:
case KC_K:
case KC_L:
case KC_M:
case KC_N:
case KC_O:
case KC_P:
case KC_Q:
case KC_R:
case KC_S:
case KC_T:
case KC_U:
case KC_V:
case KC_W:
case KC_X:
case KC_Y:
case KC_Z:
return true;
}
return get_custom_auto_shifted_key(keycode, record);
}
/* Custom auto shift
I use this instead of tap dance because double tap is horrible
Add here the letter or the custom enum, then add in press_user and press_release the actions */
bool get_custom_auto_shifted_key(uint16_t keycode, keyrecord_t *record) {
switch(keycode) {
case KC_BSPC:
case KC_LABK: // Easy indent with vim
case KC_RABK:
/* French */
case CS_E_ACUTE:
case CS_A_GRAVE:
case CS_E_GRAVE:
case CS_I_GRAVE:
case CS_O_GRAVE:
case CS_U_GRAVE:
case CS_A_CIRCUMFLEX:
case CS_E_CIRCUMFLEX:
case CS_I_CIRCUMFLEX:
case CS_O_CIRCUMFLEX:
case CS_U_CIRCUMFLEX:
case CS_A_DIAERESIS:
case CS_E_DIAERESIS:
case CS_I_DIAERESIS:
case CS_O_DIAERESIS:
case CS_U_DIAERESIS:
case CS_Y_DIAERESIS:
case CS_C_CEDILLA:
case CS_AE:
case CS_OE:
return true;
default:
return false;
}
}
void autoshift_press_user(uint16_t keycode, bool shifted, keyrecord_t *record) {
switch(keycode) {
case KC_BSPC:
register_code16((!shifted) ? KC_BSPC : KC_DEL);
break;
case KC_LABK:
if (shifted) { send_unicode_string("<<"); }
else { send_unicode_string("<"); } break;
case KC_RABK:
if (shifted) { send_unicode_string(">>"); }
else { send_unicode_string(">"); } break;
/* French
Release is not necessary with 'send_unicode_string()' */
case CS_E_ACUTE:
if (shifted) { send_unicode_string("É"); }
else { send_unicode_string("é"); } break;
case CS_A_GRAVE:
if (shifted) { send_unicode_string("À"); }
else { send_unicode_string("à"); } break;
case CS_E_GRAVE:
if (shifted) { send_unicode_string("È"); }
else { send_unicode_string("è"); } break;
case CS_I_GRAVE:
if (shifted) { send_unicode_string("Ì"); }
else { send_unicode_string("ì"); } break;
case CS_O_GRAVE:
if (shifted) { send_unicode_string("Ò"); }
else { send_unicode_string("ò"); } break;
case CS_U_GRAVE:
if (shifted) { send_unicode_string("Ù"); }
else { send_unicode_string("ù"); } break;
case CS_A_CIRCUMFLEX:
if (shifted) { send_unicode_string("Â"); }
else { send_unicode_string("â"); } break;
case CS_E_CIRCUMFLEX:
if (shifted) { send_unicode_string("Ê"); }
else { send_unicode_string("ê"); } break;
case CS_I_CIRCUMFLEX:
if (shifted) { send_unicode_string("Î"); }
else { send_unicode_string("î"); } break;
case CS_O_CIRCUMFLEX:
if (shifted) { send_unicode_string("Ô"); }
else { send_unicode_string("ô"); } break;
case CS_U_CIRCUMFLEX:
if (shifted) { send_unicode_string("Û"); }
else { send_unicode_string("û"); } break;
case CS_A_DIAERESIS:
if (shifted) { send_unicode_string("Ä"); }
else { send_unicode_string("ä"); } break;
case CS_E_DIAERESIS:
if (shifted) { send_unicode_string("Ë"); }
else { send_unicode_string("ë"); } break;
case CS_I_DIAERESIS:
if (shifted) { send_unicode_string("Ï"); }
else { send_unicode_string("ï"); } break;
case CS_O_DIAERESIS:
if (shifted) { send_unicode_string("Ö"); }
else { send_unicode_string("ö"); } break;
case CS_U_DIAERESIS:
if (shifted) { send_unicode_string("Ü"); }
else { send_unicode_string("ü"); } break;
case CS_Y_DIAERESIS:
if (shifted) { send_unicode_string("Ÿ"); }
else { send_unicode_string("ÿ"); } break;
case CS_C_CEDILLA:
if (shifted) { send_unicode_string("Ç"); }
else { send_unicode_string("ç"); } break;
case CS_AE:
if (shifted) { send_unicode_string("Æ"); }
else { send_unicode_string("æ"); } break;
case CS_OE:
if (shifted) { send_unicode_string("Œ"); }
else { send_unicode_string("œ"); } break;
default:
if (shifted) {
add_weak_mods(MOD_BIT(KC_LSFT));
}
/* & 0xFF gets the Tap key for Tap Holds, required when using Retro Shift */
register_code16((IS_RETRO(keycode)) ? keycode & 0xFF : keycode);
}
}
void autoshift_release_user(uint16_t keycode, bool shifted, keyrecord_t *record) {
switch(keycode) {
case KC_BSPC:
unregister_code16((!shifted) ? KC_BSPC : KC_DEL);
break;
default:
/* & 0xFF gets the Tap key for Tap Holds, required when using Retro Shift
The IS_RETRO check isn't really necessary here, always using
keycode & 0xFF would be fine. */
unregister_code16((IS_RETRO(keycode)) ? keycode & 0xFF : keycode);
}
}

View File

@ -0,0 +1,275 @@
// Copyright 2023 Florent Linguenheld (@FLinguenheld)
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
#include "keycodes.h"
/* How to :
- Add an entry in the enum
- Create a new sequence of keys
- Link the enum to this sequence in the key_combos table
For macros :
- Same steps
- And add the macro in the process_combo_event() function
*/
enum combos {
LEADER,
BOOTLOADER,
LAYER_ADJUST,
LAYER_FN,
LAYER_LEFT_HAND,
/* French */
E_ACUTE,
C_CEDILLA,
E_A,
E_O,
A_GRAVE,
E_GRAVE,
I_GRAVE,
O_GRAVE,
U_GRAVE,
A_CIRCUMFLEX,
E_CIRCUMFLEX,
I_CIRCUMFLEX,
O_CIRCUMFLEX,
U_CIRCUMFLEX,
A_DIAERESIS,
E_DIAERESIS,
I_DIAERESIS,
O_DIAERESIS,
U_DIAERESIS,
Y_DIAERESIS,
/* -- */
AMPERSAND,
AT_SIGN,
BACKSLASH,
CIRCUMFLEX,
COLON,
DOLLAR,
EQUAL,
EXCLAMATION_MARK,
GRAVE,
HASH,
MINUS,
PERCENT,
PIPE,
PLUS,
QUESTION_MARK,
QUOTE,
QUOTE_DOUBLE,
SEMICOLON,
SLASH,
STAR,
TILDE,
UNDERSCORE,
ANGLE_BRACKET_LEFT,
ANGLE_BRACKET_RIGHT,
BRACKET_LEFT,
BRACKET_RIGHT,
CURLY_BRACKET_LEFT,
CURLY_BRACKET_RIGHT,
PARENTHESIS_LEFT,
PARENTHESIS_RIGHT,
/* -- */
ALT_SHIFT,
CONTROL_SHIFT,
CONTROL_ALT,
CONTROL_SHIFT_ALT,
RIGHT_ALT,
/* One hand special */
CONTROL_RIGHT,
CONTROL_SHIFT_RIGHT,
// DEL_LEFT,
SHIFT_LEFT,
ALTGR_LEFT,
CONTROL_SHIFT_LEFT,
/* Just to replace the define in config.h */
COMBO_LENGTH,
};
uint16_t COMBO_LEN = COMBO_LENGTH;
/* Sequences fo keys */
const uint16_t PROGMEM combo_leader[] = {LT(_MOUSE, KC_COMM), LT(_ARROWS, KC_DOT), COMBO_END};
const uint16_t PROGMEM combo_bootloader[] = {KC_K, KC_TAB, KC_Z, KC_BSPC, KC_V, KC_J, COMBO_END};
const uint16_t PROGMEM combo_adjust[] = {KC_LCPO, LT(_NUMERIC, KC_ENT), COMBO_END};
const uint16_t PROGMEM combo_fn[] = {LT(_NUMERIC, KC_ENT), KC_N, COMBO_END};
const uint16_t PROGMEM combo_left_hand[] = {KC_LCPO, GUI_T(KC_ESC), COMBO_END};
/* -- */
// const uint16_t PROGMEM combo_enter_shifted[] = {LT(_NUMERIC, KC_ENT), KC_S, COMBO_END};
const uint16_t PROGMEM combo_control_shift[] = {KC_LCPO, KC_S, COMBO_END};
const uint16_t PROGMEM combo_control_alt[] = {KC_LCPO, KC_LALT, COMBO_END};
const uint16_t PROGMEM combo_control_shift_alt[] = {KC_LCPO, KC_S, KC_A, COMBO_END};
const uint16_t PROGMEM combo_right_alt[] = {KC_LAPO, KC_G, COMBO_END};
const uint16_t PROGMEM combo_alt_shift[] = {KC_LALT, KC_S, COMBO_END};
/* -- */
const uint16_t PROGMEM combo_e_acute[] = {KC_LCPO, KC_E, COMBO_END};
const uint16_t PROGMEM combo_c_cedilla[] = {KC_LCPO, KC_I, COMBO_END};
const uint16_t PROGMEM combo_ea[] = {KC_LCPO, KC_A, COMBO_END};
const uint16_t PROGMEM combo_eo[] = {KC_LCPO, KC_O, COMBO_END};
const uint16_t PROGMEM combo_a_grave[] = {LT(_MOUSE, KC_COMM), KC_A, COMBO_END};
const uint16_t PROGMEM combo_e_grave[] = {LT(_MOUSE, KC_COMM), KC_E, COMBO_END};
const uint16_t PROGMEM combo_i_grave[] = {LT(_MOUSE, KC_COMM), KC_I, COMBO_END};
const uint16_t PROGMEM combo_o_grave[] = {LT(_MOUSE, KC_COMM), KC_O, COMBO_END};
const uint16_t PROGMEM combo_u_grave[] = {LT(_MOUSE, KC_COMM), KC_U, COMBO_END};
const uint16_t PROGMEM combo_a_circumflex[] = {KC_C, KC_A, COMBO_END};
const uint16_t PROGMEM combo_e_circumflex[] = {KC_C, KC_E, COMBO_END};
const uint16_t PROGMEM combo_i_circumflex[] = {KC_C, KC_I, COMBO_END};
const uint16_t PROGMEM combo_o_circumflex[] = {KC_C, KC_O, COMBO_END};
const uint16_t PROGMEM combo_u_circumflex[] = {KC_C, KC_U, COMBO_END};
const uint16_t PROGMEM combo_a_diaeresis[] = {KC_T, KC_A, COMBO_END};
const uint16_t PROGMEM combo_e_diaeresis[] = {KC_T, KC_E, COMBO_END};
const uint16_t PROGMEM combo_i_diaeresis[] = {KC_T, KC_I, COMBO_END};
const uint16_t PROGMEM combo_o_diaeresis[] = {KC_T, KC_O, COMBO_END};
const uint16_t PROGMEM combo_u_diaeresis[] = {KC_T, KC_U, COMBO_END};
const uint16_t PROGMEM combo_y_diaeresis[] = {KC_T, KC_Y, COMBO_END};
/* -- */
const uint16_t PROGMEM combo_ampersand[] = {KC_I, KC_E, COMBO_END};
const uint16_t PROGMEM combo_at_sign[] = {KC_Q, KC_Y, COMBO_END};
const uint16_t PROGMEM combo_backslash[] = {KC_D, KC_R, COMBO_END};
const uint16_t PROGMEM combo_circumflex[] = {KC_T, KC_D, COMBO_END};
const uint16_t PROGMEM combo_colon[] = {KC_C, KC_G, COMBO_END};
const uint16_t PROGMEM combo_dollar[] = {KC_D, KC_L, COMBO_END};
const uint16_t PROGMEM combo_equal[] = {KC_T, KC_H, COMBO_END};
const uint16_t PROGMEM combo_exclamation_mark[] = {KC_O, KC_W, COMBO_END};
const uint16_t PROGMEM combo_grave[] = {KC_T, KC_G, COMBO_END};
const uint16_t PROGMEM combo_hash[] = {KC_I, KC_O, COMBO_END};
const uint16_t PROGMEM combo_minus[] = {KC_T, KC_R, COMBO_END};
const uint16_t PROGMEM combo_percent[] = {KC_O, KC_U, COMBO_END};
const uint16_t PROGMEM combo_pipe[] = {KC_E, KC_U, COMBO_END};
const uint16_t PROGMEM combo_plus[] = {KC_T, KC_L, COMBO_END};
const uint16_t PROGMEM combo_question_mark[] = {KC_B, KC_O, COMBO_END};
const uint16_t PROGMEM combo_quote[] = {KC_T, KC_N, COMBO_END};
const uint16_t PROGMEM combo_quote_double[] = {KC_A, KC_U, COMBO_END};
const uint16_t PROGMEM combo_semicolon[] = {KC_G, KC_H, COMBO_END};
const uint16_t PROGMEM combo_slash[] = {KC_S, KC_L, COMBO_END};
const uint16_t PROGMEM combo_star[] = {KC_S, KC_T, COMBO_END};
const uint16_t PROGMEM combo_tilde[] = {KC_I, KC_U, COMBO_END};
const uint16_t PROGMEM combo_underscore[] = {KC_S, KC_R, COMBO_END};
const uint16_t PROGMEM combo_angle_bracket_left[] = {KC_C, KC_S, COMBO_END};
const uint16_t PROGMEM combo_angle_bracket_right[] = {KC_S, KC_H, COMBO_END};
const uint16_t PROGMEM combo_bracket_left[] = {KC_Q, KC_U, COMBO_END};
const uint16_t PROGMEM combo_bracket_right[] = {KC_E, KC_Y, COMBO_END};
const uint16_t PROGMEM combo_curly_bracket_left[] = {KC_X, KC_E, COMBO_END};
const uint16_t PROGMEM combo_curly_bracket_right[] = {KC_I, KC_Q, COMBO_END};
const uint16_t PROGMEM combo_parenthesis_left[] = {KC_X, KC_U, COMBO_END};
const uint16_t PROGMEM combo_parenthesis_right[] = {KC_I, KC_Y, COMBO_END};
/* One hand special */
const uint16_t PROGMEM combo_control_right[] = {LT(_NUMERIC, KC_ENT), KC_R, COMBO_END};
const uint16_t PROGMEM combo_control_shift_right[] = {LT(_NUMERIC, KC_ENT), KC_S, COMBO_END};
const uint16_t PROGMEM combo_shift_left[] = {KC_LCPO, KC_LALT, COMBO_END};
// const uint16_t PROGMEM combo_altgr_left[] = {LT(_MOUSE, KC_COMM), KC_LALT, COMBO_END};
// const uint16_t PROGMEM combo_del_left[] = {GUI_T(KC_ESC), KC_K, COMBO_END};
const uint16_t PROGMEM combo_control_shift_left[] = {LT(_MOUSE, KC_COMM), KC_LALT, COMBO_END};
/* Sequences fo keys */
combo_t key_combos[] = {
[LEADER] = COMBO(combo_leader, KC_LEAD),
[BOOTLOADER] = COMBO(combo_bootloader, QK_BOOTLOADER),
[LAYER_ADJUST] = COMBO(combo_adjust, OSL(_ADJUST)),
[LAYER_FN] = COMBO(combo_fn, OSL(_FN)),
[LAYER_LEFT_HAND] = COMBO(combo_left_hand, OSL(_LEFT_HAND)),
/* -- */
// [ENTER_SHIFTED] = COMBO(combo_enter_shifted, S(KC_ENT)),
[ALT_SHIFT] = COMBO(combo_alt_shift, A(S(XXXXXXX))),
[CONTROL_SHIFT] = COMBO(combo_control_shift, C(S(XXXXXXX))),
[CONTROL_ALT] = COMBO(combo_control_alt, C(A(XXXXXXX))),
[CONTROL_SHIFT_ALT] = COMBO(combo_control_shift_alt, C(S(A(XXXXXXX)))),
[RIGHT_ALT] = COMBO(combo_right_alt, KC_RALT),
/* French */
[E_ACUTE] = COMBO(combo_e_acute, CS_E_ACUTE),
[C_CEDILLA] = COMBO(combo_c_cedilla, CS_C_CEDILLA),
[E_A] = COMBO(combo_ea, CS_AE),
[E_O] = COMBO(combo_eo, CS_OE),
[A_GRAVE] = COMBO(combo_a_grave, CS_A_GRAVE),
[E_GRAVE] = COMBO(combo_e_grave, CS_E_GRAVE),
[I_GRAVE] = COMBO(combo_i_grave, CS_I_GRAVE),
[O_GRAVE] = COMBO(combo_o_grave, CS_O_GRAVE),
[U_GRAVE] = COMBO(combo_u_grave, CS_U_GRAVE),
[A_CIRCUMFLEX] = COMBO(combo_a_circumflex, CS_A_CIRCUMFLEX),
[E_CIRCUMFLEX] = COMBO(combo_e_circumflex, CS_E_CIRCUMFLEX),
[I_CIRCUMFLEX] = COMBO(combo_i_circumflex, CS_I_CIRCUMFLEX),
[O_CIRCUMFLEX] = COMBO(combo_o_circumflex, CS_O_CIRCUMFLEX),
[U_CIRCUMFLEX] = COMBO(combo_u_circumflex, CS_U_CIRCUMFLEX),
[A_DIAERESIS] = COMBO(combo_a_diaeresis, CS_A_DIAERESIS),
[E_DIAERESIS] = COMBO(combo_e_diaeresis, CS_E_DIAERESIS),
[I_DIAERESIS] = COMBO(combo_i_diaeresis, CS_I_DIAERESIS),
[O_DIAERESIS] = COMBO(combo_o_diaeresis, CS_O_DIAERESIS),
[U_DIAERESIS] = COMBO(combo_u_diaeresis, CS_U_DIAERESIS),
[Y_DIAERESIS] = COMBO(combo_y_diaeresis, CS_Y_DIAERESIS),
/* -- */
[AMPERSAND] = COMBO(combo_ampersand, KC_AMPR),
[AT_SIGN] = COMBO(combo_at_sign, KC_AT),
[BACKSLASH] = COMBO(combo_backslash, KC_BSLS),
[CIRCUMFLEX] = COMBO(combo_circumflex, KC_CIRC),
[COLON] = COMBO(combo_colon, KC_COLON),
[DOLLAR] = COMBO(combo_dollar, KC_DLR),
[EQUAL] = COMBO(combo_equal, KC_EQL),
[EXCLAMATION_MARK] = COMBO(combo_exclamation_mark, KC_EXCLAIM),
[GRAVE] = COMBO(combo_grave, KC_GRV),
[HASH] = COMBO(combo_hash, KC_HASH),
[MINUS] = COMBO(combo_minus, KC_MINS),
[PERCENT] = COMBO(combo_percent, KC_PERC),
[PIPE] = COMBO(combo_pipe, KC_PIPE),
[PLUS] = COMBO(combo_plus, KC_PLUS),
[QUESTION_MARK] = COMBO(combo_question_mark, KC_QUESTION),
[QUOTE] = COMBO(combo_quote, KC_QUOTE),
[QUOTE_DOUBLE] = COMBO(combo_quote_double, KC_DOUBLE_QUOTE),
[SEMICOLON] = COMBO(combo_semicolon, KC_SEMICOLON),
[SLASH] = COMBO(combo_slash, KC_SLSH),
[STAR] = COMBO(combo_star, KC_ASTR),
[TILDE] = COMBO(combo_tilde, KC_TILD),
[UNDERSCORE] = COMBO(combo_underscore, KC_UNDS),
[ANGLE_BRACKET_LEFT] = COMBO(combo_angle_bracket_left, KC_LABK),
[ANGLE_BRACKET_RIGHT] = COMBO(combo_angle_bracket_right, KC_RABK),
[BRACKET_LEFT] = COMBO(combo_bracket_left, KC_LEFT_BRACKET),
[BRACKET_RIGHT] = COMBO(combo_bracket_right, KC_RIGHT_BRACKET),
[CURLY_BRACKET_LEFT] = COMBO(combo_curly_bracket_left, KC_LEFT_CURLY_BRACE),
[CURLY_BRACKET_RIGHT] = COMBO(combo_curly_bracket_right, KC_RIGHT_CURLY_BRACE),
[PARENTHESIS_LEFT] = COMBO(combo_parenthesis_left, KC_LEFT_PAREN),
[PARENTHESIS_RIGHT] COMBO(combo_parenthesis_right, KC_RIGHT_PAREN),
/* One hand special */
[CONTROL_RIGHT] = COMBO(combo_control_right, KC_RCTL),
[CONTROL_SHIFT_RIGHT] = COMBO(combo_control_shift_right, C(S(XXXXXXX))),
[SHIFT_LEFT] = COMBO(combo_shift_left, KC_LSFT),
// [ALTGR_LEFT] = COMBO(combo_altgr_left, KC_ALGR),
[CONTROL_SHIFT_LEFT] = COMBO(combo_control_shift_left, C(S(XXXXXXX))),
// [DEL_LEFT] = COMBO(combo_del_left, KC_BSPC),
};

View File

@ -0,0 +1,268 @@
// Copyright 2023 Florent Linguenheld (@FLinguenheld)
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
LEADER_EXTERNS();
void matrix_scan_user(void) {
LEADER_DICTIONARY() {
leading = false;
leader_end();
// SEQ_ONE_KEY(KC_F) {
// // Anything you can do in a macro.
// SEND_STRING("QMK is awesome."); }
SEQ_TWO_KEYS(KC_M, KC_S) {
SEND_STRING("f@linguenheld.fr"); }
SEQ_TWO_KEYS(KC_M, KC_L) {
SEND_STRING("florent@linguenheld.fr"); }
SEQ_TWO_KEYS(KC_F, KC_L) {
SEND_STRING("FLinguenheld"); }
SEQ_THREE_KEYS(KC_T, KC_E, KC_S) {
SEND_STRING("test01234"); }
SEQ_THREE_KEYS(KC_A, KC_D, KC_M) {
SEND_STRING("admin01234"); }
SEQ_ONE_KEY(KC_C) {
SEND_STRING(" | xclip -r -selection clipboard"); }
/* Degree */
SEQ_THREE_KEYS(KC_D, KC_E, KC_G) {
send_unicode_string("°"); }
/* Copyright / Register */
SEQ_THREE_KEYS(KC_C, KC_O, KC_P) {
send_unicode_string("©"); }
SEQ_THREE_KEYS(KC_R, KC_E, KC_G) {
send_unicode_string("®"); }
/* Diameter */
SEQ_THREE_KEYS(KC_D, KC_I, KC_A) {
send_unicode_string("ø"); }
SEQ_FOUR_KEYS(KC_D, KC_I, KC_A, KC_M) {
send_unicode_string("Ø"); }
/* Currency */
SEQ_THREE_KEYS(KC_E, KC_U, KC_R) {
send_unicode_string(""); }
SEQ_THREE_KEYS(KC_P, KC_O, KC_U) {
send_unicode_string("£"); }
SEQ_THREE_KEYS(KC_Y, KC_E, KC_N) {
send_unicode_string("¥"); }
SEQ_THREE_KEYS(KC_C, KC_E, KC_N) {
send_unicode_string("¢"); }
/* Fractions */
SEQ_THREE_KEYS(KC_F, KC_C, KC_T) {
send_unicode_string("¼"); }
SEQ_THREE_KEYS(KC_F, KC_C, KC_G) {
send_unicode_string("½"); }
SEQ_THREE_KEYS(KC_F, KC_H, KC_T) {
send_unicode_string("¾"); }
/* Maths */
SEQ_THREE_KEYS(KC_M, KC_U, KC_L) {
send_unicode_string("×"); }
SEQ_THREE_KEYS(KC_D, KC_I, KC_V) {
send_unicode_string("÷"); }
SEQ_TWO_KEYS(KC_P, KC_M) {
send_unicode_string("±"); }
SEQ_THREE_KEYS(KC_I, KC_N, KC_E) {
send_unicode_string(""); }
SEQ_THREE_KEYS(KC_A, KC_L, KC_M) {
send_unicode_string(""); }
SEQ_THREE_KEYS(KC_S, KC_Q, KC_U) {
send_unicode_string(""); }
SEQ_THREE_KEYS(KC_I, KC_N, KC_F) {
send_unicode_string(""); }
SEQ_TWO_KEYS(KC_LABK, KC_LABK) {
send_unicode_string(""); }
SEQ_TWO_KEYS(KC_RABK, KC_RABK) {
send_unicode_string(""); }
/* Greek */
SEQ_TWO_KEYS(KC_P, KC_I) {
send_unicode_string("π"); }
SEQ_THREE_KEYS(KC_P, KC_I, KC_I) {
send_unicode_string("Π"); }
SEQ_THREE_KEYS(KC_O, KC_M, KC_E) {
send_unicode_string("ω"); }
SEQ_FOUR_KEYS(KC_O, KC_M, KC_E, KC_G) {
send_unicode_string("Ω"); }
/* Icons */
SEQ_THREE_KEYS(KC_F, KC_L, KC_A) {
send_unicode_string(""); }
SEQ_THREE_KEYS(KC_S, KC_T, KC_A) {
send_unicode_string(""); }
SEQ_THREE_KEYS(KC_S, KC_P, KC_A) {
send_unicode_string(""); }
SEQ_THREE_KEYS(KC_P, KC_O, KC_P) {
send_unicode_string("🎉"); }
SEQ_THREE_KEYS(KC_R, KC_E, KC_C) {
send_unicode_string("♻️"); }
SEQ_THREE_KEYS(KC_L, KC_O, KC_V) {
send_unicode_string("❤️"); }
SEQ_THREE_KEYS(KC_F, KC_I, KC_R) {
send_unicode_string("🔥"); }
SEQ_THREE_KEYS(KC_B, KC_O, KC_M) {
send_unicode_string("💣"); }
SEQ_FOUR_KEYS(KC_B, KC_O, KC_U, KC_M) {
send_unicode_string("💥"); }
SEQ_THREE_KEYS(KC_R, KC_O, KC_C) {
send_unicode_string("🚀"); }
SEQ_THREE_KEYS(KC_T, KC_E, KC_L) {
send_unicode_string("🔭"); }
SEQ_THREE_KEYS(KC_M, KC_A, KC_G) {
send_unicode_string("🔎"); }
SEQ_THREE_KEYS(KC_W, KC_A, KC_R) {
send_unicode_string("⚠️"); }
SEQ_THREE_KEYS(KC_B, KC_U, KC_L) {
send_unicode_string("💡"); }
SEQ_FOUR_KEYS(KC_I, KC_N, KC_F, KC_O) {
send_unicode_string(""); }
SEQ_THREE_KEYS(KC_G, KC_E, KC_A) {
send_unicode_string("⚙️"); }
SEQ_THREE_KEYS(KC_L, KC_I, KC_N) {
send_unicode_string("🔗"); }
SEQ_THREE_KEYS(KC_P, KC_I, KC_N) {
send_unicode_string("📌"); }
SEQ_FOUR_KEYS(KC_F, KC_L, KC_A, KC_G) {
send_unicode_string("🚩"); }
SEQ_THREE_KEYS(KC_B, KC_A, KC_L) {
send_unicode_string("🎈"); }
SEQ_THREE_KEYS(KC_G, KC_I, KC_F) {
send_unicode_string("🎁"); }
SEQ_THREE_KEYS(KC_P, KC_E, KC_N) {
send_unicode_string("✏️"); }
SEQ_THREE_KEYS(KC_K, KC_E, KC_Y) {
send_unicode_string("🔑"); }
SEQ_THREE_KEYS(KC_B, KC_O, KC_X) {
send_unicode_string("🧰"); }
SEQ_TWO_KEYS(KC_O, KC_K) {
send_unicode_string("👌"); }
SEQ_THREE_KEYS(KC_O, KC_W, KC_D) {
send_unicode_string(""); }
SEQ_ONE_KEY(KC_V) {
send_unicode_string(""); }
SEQ_TWO_KEYS(KC_V, KC_B) {
send_unicode_string(""); }
SEQ_TWO_KEYS(KC_V, KC_G) {
send_unicode_string(""); }
SEQ_ONE_KEY(KC_X) {
send_unicode_string(""); }
SEQ_TWO_KEYS(KC_X, KC_B) {
send_unicode_string(""); }
SEQ_TWO_KEYS(KC_X, KC_G) {
send_unicode_string(""); }
SEQ_TWO_KEYS(KC_X, KC_R) {
send_unicode_string(""); }
SEQ_ONE_KEY(KC_QUESTION) {
send_unicode_string(""); }
SEQ_ONE_KEY(KC_EXCLAIM) {
send_unicode_string(""); }
SEQ_TWO_KEYS(KC_QUESTION, KC_QUESTION) {
send_unicode_string(""); }
SEQ_TWO_KEYS(KC_EXCLAIM, KC_EXCLAIM) {
send_unicode_string(""); }
SEQ_THREE_KEYS(KC_C, KC_O, KC_F) {
send_unicode_string(""); }
SEQ_THREE_KEYS(KC_U, KC_M, KC_B) {
send_unicode_string(""); }
SEQ_THREE_KEYS(KC_L, KC_O, KC_L) {
send_unicode_string("😀"); }
SEQ_THREE_KEYS(KC_M, KC_D, KC_R) {
send_unicode_string("🤣"); }
SEQ_THREE_KEYS(KC_K, KC_I, KC_S) {
send_unicode_string("😙"); }
SEQ_THREE_KEYS(KC_A, KC_N, KC_G) {
send_unicode_string("😇"); }
SEQ_THREE_KEYS(KC_G, KC_L, KC_A) {
send_unicode_string("😎"); }
SEQ_THREE_KEYS(KC_A, KC_N, KC_G) {
send_unicode_string("🤬"); }
SEQ_THREE_KEYS(KC_F, KC_E, KC_A) {
send_unicode_string("😱"); }
SEQ_THREE_KEYS(KC_N, KC_E, KC_U) {
send_unicode_string("😐"); }
SEQ_THREE_KEYS(KC_T, KC_H, KC_I) {
send_unicode_string("🤔"); }
SEQ_THREE_KEYS(KC_Z, KC_I, KC_P) {
send_unicode_string("🤐"); }
SEQ_THREE_KEYS(KC_S, KC_U, KC_R) {
send_unicode_string("😯"); }
SEQ_THREE_KEYS(KC_R, KC_O, KC_L) {
send_unicode_string("🙄"); }
SEQ_THREE_KEYS(KC_M, KC_O, KC_O) {
send_unicode_string("🌝"); }
SEQ_THREE_KEYS(KC_H, KC_U, KC_G) {
send_unicode_string("🫂"); }
SEQ_THREE_KEYS(KC_H, KC_E, KC_N) {
send_unicode_string("🐔"); }
SEQ_THREE_KEYS(KC_R, KC_O, KC_O) {
send_unicode_string("🐓"); }
SEQ_THREE_KEYS(KC_D, KC_U, KC_C) {
send_unicode_string("🦆"); }
SEQ_THREE_KEYS(KC_P, KC_E, KC_A) {
send_unicode_string("🦚"); }
SEQ_THREE_KEYS(KC_B, KC_I, KC_R) {
send_unicode_string("🐦"); }
/* Subscript / superscript */
SEQ_THREE_KEYS(KC_U, KC_P, KC_F) {
send_unicode_string(""); }
SEQ_THREE_KEYS(KC_D, KC_N, KC_F) {
send_unicode_string(""); }
SEQ_THREE_KEYS(KC_U, KC_P, KC_C) {
send_unicode_string("¹"); }
SEQ_THREE_KEYS(KC_D, KC_N, KC_C) {
send_unicode_string(""); }
SEQ_THREE_KEYS(KC_U, KC_P, KC_G) {
send_unicode_string("²"); }
SEQ_THREE_KEYS(KC_D, KC_N, KC_G) {
send_unicode_string(""); }
SEQ_THREE_KEYS(KC_U, KC_P, KC_H) {
send_unicode_string("³"); }
SEQ_THREE_KEYS(KC_D, KC_N, KC_H) {
send_unicode_string(""); }
SEQ_THREE_KEYS(KC_U, KC_P, KC_T) {
send_unicode_string(""); }
SEQ_THREE_KEYS(KC_D, KC_N, KC_T) {
send_unicode_string(""); }
SEQ_THREE_KEYS(KC_U, KC_P, KC_S) {
send_unicode_string(""); }
SEQ_THREE_KEYS(KC_D, KC_N, KC_S) {
send_unicode_string(""); }
SEQ_THREE_KEYS(KC_U, KC_P, KC_R) {
send_unicode_string(""); }
SEQ_THREE_KEYS(KC_D, KC_N, KC_R) {
send_unicode_string(""); }
SEQ_THREE_KEYS(KC_U, KC_P, KC_P) {
send_unicode_string(""); }
SEQ_THREE_KEYS(KC_D, KC_N, KC_P) {
send_unicode_string(""); }
SEQ_THREE_KEYS(KC_U, KC_P, KC_D) {
send_unicode_string(""); }
SEQ_THREE_KEYS(KC_D, KC_N, KC_D) {
send_unicode_string(""); }
SEQ_THREE_KEYS(KC_U, KC_P, KC_L) {
send_unicode_string(""); }
SEQ_THREE_KEYS(KC_D, KC_N, KC_L) {
send_unicode_string(""); }
};
}

View File

@ -0,0 +1,44 @@
// Copyright 2023 Florent Linguenheld (@FLinguenheld)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
enum layers {
_BASE,
_NUMERIC,
_ARROWS,
_MOUSE,
_ADJUST,
_FN,
_LEFT_HAND,
};
enum custom_keys {
UNICODE = SAFE_RANGE, // Shortcut to write unicodes, see numeric layer
/* See auto-shift */
CS_E_ACUTE,
CS_A_GRAVE,
CS_E_GRAVE,
CS_I_GRAVE,
CS_O_GRAVE,
CS_U_GRAVE,
CS_C_CEDILLA,
CS_AE,
CS_OE,
CS_A_CIRCUMFLEX,
CS_E_CIRCUMFLEX,
CS_I_CIRCUMFLEX,
CS_O_CIRCUMFLEX,
CS_U_CIRCUMFLEX,
CS_A_DIAERESIS,
CS_E_DIAERESIS,
CS_I_DIAERESIS,
CS_O_DIAERESIS,
CS_U_DIAERESIS,
CS_Y_DIAERESIS,
};

View File

@ -0,0 +1,133 @@
/* Copyright 2023 Florent Linguenheld (@FLinguenheld)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
#include "keycodes.h"
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
/* Macros */
switch (keycode) {
case UNICODE:
if (record->event.pressed) {
register_code(KC_LCTL);
register_code(KC_LSFT);
tap_code16(KC_U);
} else {
unregister_code(KC_LCTL);
unregister_code(KC_LSFT);
}
break;
}
return true;
}
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT(
//|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------|
GUI_T(KC_ESC) , KC_B , KC_O , KC_W , KC_BSPC , KC_J , KC_P , KC_D , KC_L , KC_F ,
//|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------|
KC_A , KC_I , KC_E , KC_U , KC_TAB , KC_V , KC_T , KC_S , KC_R , KC_N ,
//|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------|
KC_LALT , KC_X , KC_Q , KC_Y , KC_K , KC_Z , KC_C , KC_G , KC_H , KC_M ,
//|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------|
// |-------------------------+-------------------------| |-------------------------+-------------------------|
LT(_MOUSE, KC_COMM) , KC_LCPO , LT(_NUMERIC, KC_ENT) , LT(_ARROWS, KC_DOT)
// |-------------------------+----/* Space ctl */------| |-------------------------+-------------------------|
),
[_NUMERIC] = LAYOUT(
//|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------|
_______ , XXXXXXX , XXXXXXX , XXXXXXX , _______ , XXXXXXX , KC_7 , KC_8 , KC_9 , KC_DOT ,
//|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------|
XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , _______ , XXXXXXX , KC_4 , KC_5 , KC_6 , KC_0 ,
//|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------|
_______ , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_1 , KC_2 , KC_3 , KC_COMM ,
//|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------|
// |-------------------------+-------------------------| |-------------------------+-------------------------|
XXXXXXX , UNICODE , XXXXXXX , XXXXXXX
// |-------------------------+-------------------------| |-------------------------+-------------------------|
),
[_MOUSE] = LAYOUT(
//|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------|
KC_MS_WH_LEFT , KC_MS_WH_UP , KC_MS_WH_DOWN , KC_MS_WH_RIGHT, _______ , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX ,
//|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------|
KC_MS_LEFT , KC_MS_UP , KC_MS_DOWN , KC_MS_RIGHT , _______ , XXXXXXX , KC_MS_ACCEL0 , KC_MS_ACCEL1 , KC_MS_ACCEL2 , XXXXXXX ,
//|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------|
KC_MS_BTN1 , XXXXXXX , KC_MS_BTN3 , KC_MS_BTN2 , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX ,
//|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------|
// |-------------------------+-------------------------| |-------------------------+-------------------------|
XXXXXXX , _______ , KC_MS_BTN1 , KC_MS_BTN2
// |-------------------------+-------------------------| |-------------------------+-------------------------|
),
[_ARROWS] = LAYOUT(
//|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------|
_______ , XXXXXXX , XXXXXXX , XXXXXXX , _______ , XXXXXXX , KC_HOME , KC_PAGE_DOWN , KC_PAGE_UP , KC_END ,
//|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------|
XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , _______ , XXXXXXX , KC_LEFT , KC_DOWN , KC_UP , KC_RIGHT ,
//|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------|
_______ , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , C(KC_D) , C(KC_U) , XXXXXXX ,
//|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------|
// |-------------------------+-------------------------| |-------------------------+-------------------------|
XXXXXXX , _______ , XXXXXXX , XXXXXXX
// |-------------------------+-------------------------| |-------------------------+-------------------------|
),
[_ADJUST] = LAYOUT(
//|---------------+---------------+---------------+---------------+------------------| |---------------+---------------+---------------+---------------+-----------------|
XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_PRINT_SCREEN , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_AUDIO_VOL_UP ,
//|---------------+---------------+---------------+---------------+------------------| |---------------+---------------+---------------+---------------+-----------------|
XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX ,S(KC_PRINT_SCREEN), XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX ,KC_AUDIO_VOL_DOWN,
//|---------------+---------------+---------------+---------------+------------------| |---------------+---------------+---------------+---------------+-----------------|
XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_AUDIO_MUTE ,
//|---------------+---------------+---------------+---------------+------------------| |---------------+---------------+---------------+---------------+-----------------|
// |-------------------------+-------------------------| |-------------------------+-------------------------|
XXXXXXX , _______ , XXXXXXX , XXXXXXX
// |-------------------------+-------------------------| |-------------------------+-------------------------|
),
[_FN] = LAYOUT(
//|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------|
_______ , XXXXXXX , XXXXXXX , XXXXXXX , _______ , XXXXXXX , KC_F7 , KC_F8 , KC_F9 , KC_F10 ,
//|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------|
XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , _______ , XXXXXXX , KC_F4 , KC_F5 , KC_F6 , KC_F11 ,
//|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------|
_______ , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_F1 , KC_F2 , KC_F3 , KC_F12 ,
//|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------|
// |-------------------------+-------------------------| |-------------------------+-------------------------|
XXXXXXX , _______ , XXXXXXX , XXXXXXX
// |-------------------------+-------------------------| |-------------------------+-------------------------|
),
[_LEFT_HAND] = LAYOUT(
//|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------|
_______ , XXXXXXX , XXXXXXX , XXXXXXX , _______ , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX ,
//|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------|
XXXXXXX , C(KC_X) , C(KC_C) , C(KC_V) , _______ , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX ,
//|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------|
_______ , XXXXXXX , XXXXXXX , C(KC_Z) , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX ,
//|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------|
// |-------------------------+-------------------------| |-------------------------+-------------------------|
XXXXXXX , _______ , XXXXXXX , XXXXXXX
// |-------------------------+-------------------------| |-------------------------+-------------------------|
),
};

View File

@ -0,0 +1,232 @@
// Copyright 2023 Florent Linguenheld (@FLinguenheld)
// SPDX-License-Identifier: GPL-2.0-or-later
#include "progmem.h"
/* Online editor: https://joric.github.io/qle/ */
static const unsigned char PROGMEM font[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFC, 0xFE, 0x0E, 0x06, 0xE6, 0xE6,
0xE6, 0xE6, 0xE6, 0xFE, 0xFE, 0xE6,
0xE6, 0xE6, 0x06, 0x06, 0xE6, 0xE6,
0xE6, 0xFE, 0xFE, 0x06, 0x06, 0xFE,
0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFC,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3F, 0x7F, 0x70, 0x60, 0x67, 0x67,
0x67, 0x67, 0x67, 0x7F, 0x7F, 0x7F,
0x7F, 0x7F, 0x60, 0x60, 0x7F, 0x7F,
0x7F, 0x7F, 0x7F, 0x60, 0x60, 0x67,
0x67, 0x67, 0x67, 0x67, 0x7F, 0x3F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFC, 0xFE, 0x0E, 0x06, 0xE6, 0xE6,
0xE6, 0xE6, 0x06, 0x0E, 0xFE, 0xFE,
0x06, 0x06, 0xFE, 0xFE, 0xFE, 0xFE,
0xFE, 0xFE, 0xE6, 0xE6, 0xE6, 0x06,
0x06, 0xE6, 0xE6, 0xE6, 0xFE, 0xFC,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFC, 0xFE, 0x0E, 0x06, 0x66, 0x66,
0x66, 0x66, 0xE6, 0xFE, 0xFE, 0x06,
0x06, 0x66, 0x66, 0x66, 0xE6, 0xE6,
0xFE, 0xFE, 0xE6, 0xE6, 0xE6, 0x06,
0x06, 0xE6, 0xE6, 0xE6, 0xFE, 0xFC,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3F, 0x7F, 0x60, 0x60, 0x7C, 0x7C,
0x7C, 0x7C, 0x60, 0x60, 0x7F, 0x7F,
0x60, 0x60, 0x67, 0x67, 0x67, 0x67,
0x67, 0x7F, 0x7F, 0x7F, 0x7F, 0x60,
0x60, 0x7F, 0x7F, 0x7F, 0x7F, 0x3F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3F, 0x7F, 0x67, 0x66, 0x66, 0x66,
0x66, 0x60, 0x70, 0x7F, 0x7F, 0x60,
0x60, 0x7E, 0x7E, 0x7E, 0x7F, 0x7F,
0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x60,
0x60, 0x7F, 0x7F, 0x7F, 0x7F, 0x3F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFC, 0xFE, 0x0E, 0x06, 0xE6, 0xE6,
0xE6, 0x06, 0x0E, 0xFE, 0xFE, 0x0E,
0x06, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6,
0xFE, 0xFE, 0x06, 0x06, 0x66, 0x66,
0x66, 0x66, 0x06, 0x0E, 0xFE, 0xFC,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFC, 0xFE, 0x0E, 0x06, 0xE6, 0xE6,
0xE6, 0xE6, 0xE6, 0xFE, 0xFE, 0x06,
0x06, 0xCE, 0x9E, 0x9E, 0xCE, 0x06,
0x06, 0xFE, 0xFE, 0x06, 0x06, 0xE6,
0xE6, 0xE6, 0x0E, 0x1E, 0xFE, 0xFC,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3F, 0x7F, 0x60, 0x60, 0x7C, 0x7C,
0x7C, 0x60, 0x60, 0x7F, 0x7F, 0x70,
0x60, 0x67, 0x67, 0x64, 0x60, 0x70,
0x7F, 0x7F, 0x60, 0x60, 0x7E, 0x7E,
0x78, 0x70, 0x62, 0x67, 0x7F, 0x3F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3F, 0x7F, 0x70, 0x60, 0x67, 0x67,
0x67, 0x67, 0x67, 0x7F, 0x7F, 0x60,
0x60, 0x7F, 0x7F, 0x7F, 0x7F, 0x60,
0x60, 0x7F, 0x7F, 0x60, 0x60, 0x67,
0x67, 0x67, 0x70, 0x78, 0x7F, 0x3F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};

View File

@ -0,0 +1,457 @@
// Copyright 2023 Florent Linguenheld (@FLinguenheld)
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
#include "keycodes.h"
/* Leader state */
static bool is_leader_active = false;
void leader_start(void) {
is_leader_active = true;
}
void leader_end(void) {
is_leader_active = false;
}
void oled_display(void) {
/* Layers */
switch (get_highest_layer(layer_state)) {
case _BASE: ;
if (is_keyboard_master()) {
static const char PROGMEM qmk_logo_master[] = {
// 'raven', 32x128px
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,
0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x8f, 0x5f, 0x31, 0x79, 0x33, 0x7f,
0x3b, 0x71, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x4c, 0x02, 0x01, 0x95, 0xff, 0xb5, 0x05, 0x02, 0x4c, 0x30,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x7e, 0x01, 0x01, 0x01, 0x7e, 0x40, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xe0,
0xf0, 0xf8, 0xfc, 0xfc, 0xfe, 0xfe, 0xfe, 0xfe, 0xfc, 0x7c, 0x7c, 0xf8, 0xf0, 0xe0, 0x80, 0x00,
0x00, 0x00, 0x00, 0x00, 0x80, 0xe0, 0xf0, 0xf8, 0xfc, 0xfe, 0xcf, 0xef, 0xe7, 0xf3, 0xfb, 0xf9,
0xfd, 0xfc, 0xfe, 0xff, 0xff, 0xff, 0x7f, 0x3f, 0x0f, 0x0e, 0x1a, 0x23, 0x43, 0x3f, 0x03, 0x00,
0x00, 0x0c, 0x1e, 0x1f, 0x3f, 0x3f, 0x1f, 0x0f, 0x07, 0x03, 0x01, 0x80, 0x40, 0xe0, 0xbf, 0x33,
0x30, 0x60, 0x20, 0x21, 0xff, 0x20, 0x60, 0x20, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
0xfc, 0xfc, 0x7c, 0x00, 0x00, 0x00, 0x7c, 0xfc, 0xfc, 0xf8, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04, 0x08, 0x08, 0x30,
0x20, 0x30, 0x20, 0x32, 0x20, 0x32, 0x20, 0x30, 0x20, 0x1c, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
oled_write_raw_P(qmk_logo_master, sizeof(qmk_logo_master));
} else {
static const char PROGMEM qmk_logo_slave[] = {
// 'birds', 32x128px
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x40, 0xc0, 0xe0, 0xd0, 0x88, 0x84, 0x04, 0x04, 0xc4, 0xc4, 0x08, 0x08, 0x10, 0x60, 0x80,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xf8, 0x46, 0x81, 0x02, 0x02, 0x06, 0x04, 0x04, 0x04, 0x74, 0x84, 0x06, 0x03, 0x81,
0x42, 0x24, 0x18, 0x10, 0xa0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0x06, 0x08, 0x11, 0x12, 0x24, 0x24, 0x48, 0xc8, 0x48, 0x48, 0xc9, 0x49, 0x4a,
0x4a, 0x26, 0x25, 0x25, 0x14, 0x14, 0x14, 0x1d, 0x15, 0x2e, 0x54, 0x60, 0x40, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x01, 0x05, 0x02, 0x03, 0x02, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x80, 0x40, 0x20, 0x10, 0x08, 0x08, 0x08, 0x08, 0x88, 0xc8, 0x08, 0x30, 0xc0, 0xc0, 0x80, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x18, 0x04, 0x03,
0x00, 0x00, 0x00, 0x80, 0x80, 0x70, 0x18, 0x00, 0x00, 0x00, 0x80, 0x70, 0x0f, 0x00, 0x00, 0x00,
0x00, 0x00, 0x70, 0x50, 0x48, 0x48, 0x24, 0x24, 0x12, 0x0a, 0x05, 0x09, 0x13, 0x12, 0x22, 0x22,
0xe1, 0x21, 0x21, 0x20, 0xe0, 0x20, 0x20, 0x10, 0x08, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x04, 0x07, 0x04, 0x00, 0x04, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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(qmk_logo_slave, sizeof(qmk_logo_slave));
}
break;
case _NUMERIC: ;
static const char PROGMEM qmk_numeric[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xe0, 0xc0, 0x80, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x01, 0x03, 0x07, 0x0f, 0x1e,
0x3c, 0x78, 0xf0, 0xe0, 0xc0, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x87, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0x03, 0x87, 0x87, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x0e, 0x1c, 0x38, 0x70, 0xe0,
0xe0, 0x70, 0x38, 0x1c, 0x0e, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7,
0xc7, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x3f, 0x3f, 0x38, 0x38, 0x38, 0x38, 0x38,
0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0x00, 0x1c, 0x1c, 0x1c, 0x1c,
0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xfc, 0xfc, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x06, 0x06, 0x06, 0x06,
0x06, 0x06, 0x0e, 0x1e, 0x3e, 0x77, 0xe7, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x70, 0x70, 0x70, 0xf0, 0xf0,
0xf0, 0xf0, 0x70, 0x70, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0xff, 0xff,
0xff, 0xff, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3,
0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x01, 0x01, 0x01, 0x01, 0x01,
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
oled_write_raw_P(qmk_numeric, sizeof(qmk_numeric));
break;
case _MOUSE: ;
static const char PROGMEM qmk_mouse[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x3e, 0x3c, 0x78, 0xf0, 0xe0, 0xc0,
0xc0, 0xe0, 0xf0, 0x78, 0x3c, 0x3e, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03,
0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x81, 0xc1, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc1, 0x81, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc1, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xc1, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x3f, 0x7f, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70,
0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x7f, 0x3f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0xf0, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70,
0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x7f, 0xff, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,
0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x81, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1,
0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1,
0xc1, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1,
0xc1, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
oled_write_raw_P(qmk_mouse, sizeof(qmk_mouse));
break;
case _ARROWS: ;
static const char PROGMEM qmk_arrows[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc,
0xfc, 0xf8, 0xf0, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x3e, 0x1f, 0x0f, 0x07, 0x03, 0x01, 0xff, 0xff,
0xff, 0xff, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3e, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03,
0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0x7c, 0x3c, 0x1c, 0x0c,
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0c, 0x1e, 0x3f, 0x7f, 0xff, 0xff, 0xff, 0xde, 0x9e, 0x1e, 0x1e, 0x1e,
0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0f, 0x0f, 0x0e, 0x0c,
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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,
0x30, 0x70, 0xf0, 0xf0, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
0x78, 0x78, 0x78, 0x79, 0x7b, 0xff, 0xff, 0xff, 0xfe, 0xfc, 0x78, 0x30, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
0x30, 0x38, 0x3c, 0x3e, 0x1f, 0x0f, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0,
0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x7c, 0xf8, 0xf0, 0xe0, 0xc0, 0x80, 0xff, 0xff,
0xff, 0xff, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0x7c, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f,
0x3f, 0x1f, 0x0f, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
oled_write_raw_P(qmk_arrows, sizeof(qmk_arrows));
break;
case _ADJUST: ;
static const char PROGMEM qmk_adjust[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf8, 0xf8, 0x38, 0x38, 0x38, 0x38, 0x38,
0x38, 0x38, 0x38, 0x38, 0x38, 0xf8, 0xf8, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x38, 0x38, 0x38, 0x38, 0x38,
0x38, 0x38, 0x38, 0x38, 0x38, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x07, 0x07, 0x07, 0x07,
0x07, 0x07, 0x07, 0x07, 0x0f, 0xfe, 0xfc, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0xc0, 0xc0, 0xc0, 0xc0,
0xc0, 0xc0, 0xc0, 0xc0, 0xe0, 0xff, 0x7f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe1, 0xe1, 0xe1, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1,
0xe1, 0xe1, 0xe1, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x3f, 0x3f, 0x38,
0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87,
0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3,
0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1,
0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0xf0, 0xf0,
0xf0, 0xf0, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f,
0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
oled_write_raw_P(qmk_adjust, sizeof(qmk_adjust));
break;
case _FN: ;
static const char PROGMEM qmk_fn[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,
0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0xe0, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe, 0xf8, 0xe0, 0x80, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x01, 0x07, 0x1f, 0x7f, 0xfe,
0xf8, 0xe0, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
0x07, 0x1f, 0x7f, 0xfe, 0xf8, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0x07, 0x1f, 0x7f, 0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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(qmk_fn, sizeof(qmk_fn));
break;
case _LEFT_HAND: ;
static const char PROGMEM qmk_left_hand[] = {
// 'layers_left_hand', 32x128px
0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xff, 0xff, 0xff, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xe1, 0xf1, 0xf1, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xff, 0xff, 0xff, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0f, 0x1f, 0x1f, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xff, 0xff, 0xff, 0x87, 0x87, 0x87, 0x87, 0x87, 0x07, 0x07, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xff, 0xff, 0xff, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80,
0x71, 0x71, 0x71, 0x70, 0x70, 0xf0, 0xf0, 0xf0, 0x70, 0x70, 0x70, 0x70, 0x70, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x7f,
0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xf0, 0xf8, 0xfc, 0x3c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x3c, 0xfc, 0xf8, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xe3, 0xe3, 0xe3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe3, 0xe3, 0xe3,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x0f, 0x1e, 0x3c, 0x78, 0xf0, 0xe0, 0xc0, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x1f, 0x1f, 0x1f,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x07, 0x07, 0x07, 0x07, 0x07, 0x0f, 0x1e, 0xfc, 0xf8, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xf0, 0x78, 0x3f, 0x1f, 0x0f
};
oled_write_raw_P(qmk_left_hand, sizeof(qmk_left_hand));
break;
}
/* Leader */
if (is_leader_active) {
static const char PROGMEM qmk_leader[] = {
0x00, 0x00, 0xf8, 0xf8, 0x78, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x38, 0x78, 0xf8, 0xf8, 0x00, 0x00,
0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xf8, 0xf8, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00,
0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xc0, 0xc0, 0xc0,
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00,
0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1,
0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00,
0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x18, 0x18, 0x18,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00,
0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x87, 0x87, 0x87, 0x87, 0x87,
0x87, 0x87, 0x87, 0x87, 0x87, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00,
0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xc3, 0xc3, 0xc3,
0xc3, 0xc3, 0xc3, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00,
0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00,
0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0xfe, 0x00, 0x0e, 0x0e,
0x0e, 0x0e, 0x0e, 0xfe, 0xfc, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00,
0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x7f, 0x00, 0x70, 0x70,
0x70, 0x70, 0x70, 0x7f, 0x3f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00,
0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf8, 0xf8, 0x38, 0x38, 0x38,
0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00,
0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xc6, 0xc6, 0xc6,
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00,
0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1,
0xe1, 0xe1, 0xe1, 0xe1, 0xc1, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00,
0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x38, 0x38, 0x38,
0x78, 0xf8, 0xf8, 0xbf, 0x1f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00,
0x00, 0x00, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x00, 0x00,
0x00, 0x00, 0x07, 0x07, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, 0x00, 0x00
};
oled_write_raw_P(qmk_leader, sizeof(qmk_leader));
}
/* Modifier keys */
if (get_mods()) {
if (get_mods() & MOD_MASK_CTRL) {
oled_write_char(0x01, false);
oled_write_char(0x02, false);
oled_write_char(0x03, false);
oled_write_char(0x04, false);
oled_write_char(0x05, false);
oled_write_char(0x21, false);
oled_write_char(0x22, false);
oled_write_char(0x23, false);
oled_write_char(0x24, false);
oled_write_char(0x25, false);
}
if (get_mods() & MOD_BIT(KC_LALT)) {
oled_write_char(0x41, false);
oled_write_char(0x42, false);
oled_write_char(0x43, false);
oled_write_char(0x44, false);
oled_write_char(0x45, false);
oled_write_char(0x61, false);
oled_write_char(0x62, false);
oled_write_char(0x63, false);
oled_write_char(0x64, false);
oled_write_char(0x65, false);
}
if (get_mods() & MOD_BIT(KC_RALT)) {
oled_write_char(0x81, false);
oled_write_char(0x82, false);
oled_write_char(0x83, false);
oled_write_char(0x84, false);
oled_write_char(0x85, false);
oled_write_char(0xA1, false);
oled_write_char(0xA2, false);
oled_write_char(0xA3, false);
oled_write_char(0xA4, false);
oled_write_char(0xA5, false);
}
if (get_mods() & MOD_MASK_SHIFT) {
oled_write_char(0x4B, false);
oled_write_char(0x4C, false);
oled_write_char(0x4D, false);
oled_write_char(0x4E, false);
oled_write_char(0x4F, false);
oled_write_char(0x6B, false);
oled_write_char(0x6C, false);
oled_write_char(0x6D, false);
oled_write_char(0x6E, false);
oled_write_char(0x6F, false);
}
if (get_mods() & MOD_MASK_GUI) {
oled_write_char(0x8B, false);
oled_write_char(0x8C, false);
oled_write_char(0x8D, false);
oled_write_char(0x8E, false);
oled_write_char(0x8F, false);
oled_write_char(0xAB, false);
oled_write_char(0xAC, false);
oled_write_char(0xAD, false);
oled_write_char(0xAE, false);
oled_write_char(0xAF, false);
}
}
};
bool oled_task_user(void) {
oled_display();
return false;
}

View File

@ -0,0 +1,130 @@
### Custom aurora sweep keymap
This keymap is inspired by [optimot](https://bepo.fr/) which is a French layout.
Nonetheless all French characters are sent in unicode, so it works with the standard US ANSI layout.
It uses the *best* qmk features :
- combos ♥
- auto shift
- leader
I tried to optimise key positions for neovim and i3wm while limit digrams.
The oled screens are used to display the current layout, the modifier keys and the leader key.
![oledmodifiers](https://i.imgur.com/on95jx0.png)
![oledmouse](https://i.imgur.com/PwkR6P2.png)
#### Install
Clone this repo in the folder :
~/qmk_firmware/keyboards/splitkb/aurora/sweep/keymaps/
#### Compile and flash
Navigate into the keymap folder and launch this command for both sides :
qmk compile && qmk flash
and :
Click twice on the flash button and use nautilus for instance to clic on the keyboard.
Don't forget to flash with the double tap bootloader define before soldering.
#### Links
[qmk](https://docs.qmk.fm/#/)
[ferris sweep](https://github.com/davidphilipbarr/Sweep)
[splitkb](https://splitkb.com)
#### Layouts
![base](https://i.imgur.com/E3hRkxW.png)
![numeric](https://i.imgur.com/GeC0reE.png)
![mouse](https://i.imgur.com/QhsWVrE.png)
![arrows](https://i.imgur.com/4sAfGAt.png)
![adjust](https://i.imgur.com/hcoN2P8.png)
![fn](https://i.imgur.com/dVunqFF.png)
![left hand](https://i.imgur.com/fk5YJj6.png)
![combo](https://i.imgur.com/aZ8TpuY.png)
![combo2](https://i.imgur.com/QayRuFA.png)
![combo3](https://i.imgur.com/YpnbMeh.png)
#### French
| - | |
|------------------|------------------------|
| space + e | é |
| space + i | ç |
| space + a | æ |
| space + o | œ |
| comma + a | à |
| comma + e | è |
| comma + i | ì |
| comma + o | ò |
| comma + u | ù |
| enter + a | â |
| enter + e | ê |
| enter + i | î |
| enter + o | ô |
| enter + u | û |
| dot + a | ä |
| dot + e | ë |
| dot + i | ï |
| dot + o | ö |
| dot + u | ü |
| dot + y | ÿ |
#### Leader
| - | |
|--------------------|------------------------|
| M + S | mail short |
| M + L | mail long |
| D + E + G | ° |
| C + O + P | © |
| R + E + G | ® |
| D + I + A | ø |
| D + I + A + M | Ø |
| E + U + R | € |
| P + O + U | £ |
| Y + E + N | ¥ |
| C + E + N | ¢ |
| P + I | π |
| P + I + I | Π |
| O + M + E | ω |
| O + M + E + G | Ω |
| U + P + F | ⁰ |
| D + N + F | ₀ |
| - | |
|--------------------|------------------------|
| M + U + L | × |
| D + I + V | ÷ |
| P + M | ± |
| I + N + E | ≠ |
| A + L + M | ≈ |
| S + Q + U | √ |
| I + N + F | ∞ |
| < + < | ≤ |
| > + > | ≥ |
| F + S + T | ¼ |
| F + S + G | ½ |
| F + H + T | ¾ |
| - | |
|--------------------|------------------------|
| F + L + A | ⚡ |
| S + P + A | ✨ |
| O + W + D | ⛔ |
| C + O + F | ☕ |
| U + M + B | ☔ |
| Y + E + S | ✅ |
| N + O | ❎ |
| C + R + O | ❌ |
| ? | ❔ |
| ! | ❕ |
| ? + ? | ❓ |
| ! + ! | ❗ |

View File

@ -0,0 +1,22 @@
LTO_ENABLE = yes
CONVERT_TO = elite_pi
SRC += features/auto_shift.c
SRC += features/combo.c
SRC += features/leader.c
SRC += oled/oled.c
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
MOUSEKEY_ENABLE = yes
AUTO_SHIFT_ENABLE = yes
AUTO_SHIFT_MODIFIERS = no
COMBO_ENABLE = yes
LEADER_ENABLE = yes
# Recommended for space cadet shift
COMMAND_ENABLE = no
UNICODE_ENABLE = yes
SEND_STRING_ENABLE = yes

View File

@ -1,5 +0,0 @@
#pragma once
#define FORCE_NKRO
#define RGBLIGHT_SLEEP

View File

@ -1,113 +1,66 @@
#include QMK_KEYBOARD_H
// Layer shorthand
#define _QW 0
#define _FN 1
// Defines the keycodes used by our macros in process_record_user
enum custom_keycodes {
QMKBEST = SAFE_RANGE,
QMKURL
};
#define FN_CAPS LT(_FN, KC_CAPS)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* QWERTY
* .--------------------------------------------------------------------------------------------------------------------------------------.
* | GESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | Del | BACKSP |
* | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | Del | BACKSP |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
* | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | Mute |
* | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | HOME | CAPS |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------|
* | FN(CPS)| A | S | D | F | G | H | J | K | L | ; | ' | Vol- | Vol+ | ENTER |
* | TT(FN) | A | S | D | F | G | H | J | K | L | ; | ' | \ | END | ENTER |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------|
* | LSHIFT | Z | X | C | V | B | N | M | , | . | / | Home | PGUP | UP | PGDWN |
* | LSHIFT | Z | X | C | V | B | N | M | , | . | / | Vol+ | PGUP | UP | PGDWN |
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+-----------------+--------+--------|
* | LCTRL | Del | ENTER | LALT | SPACE | End | LEFT | DOWN | RIGHT |
* | LCTRL | WIN | MUTE | LALT | SPACE | Vol- | LEFT | DOWN | RIGHT |
* '--------------------------------------------------------------------------------------------------------------------------------------'
*/
[_QW] = LAYOUT_ortho_5x15( /* QWERTY */
QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL, KC_BSPC,
KC_TAB, KC_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_MUTE,
FN_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_VOLD, KC_VOLU, 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_HOME, KC_PGUP, KC_UP, KC_PGDN,
KC_LCTL, KC_MPRV, KC_MNXT, KC_LALT, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, XXXXXXX, XXXXXXX, XXXXXXX, KC_END, KC_LEFT, KC_DOWN, KC_RGHT
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_HOME, KC_CAPS,
TT(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_END, 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_VOLU, KC_PGUP, KC_UP, KC_PGDN,
KC_LCTL, KC_LGUI, KC_MUTE, KC_LALT, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLD, KC_LEFT, KC_DOWN, KC_RGHT
),
/* FUNCTION
* .--------------------------------------------------------------------------------------------------------------------------------------.
* | XXXXXXX| F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | _______| _______|
* | GRV | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | _______| _______|
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
* | _______| P7 | P8 | P9 | + | P* | XXXXXXX| PR SCR | SCR LK | PAUSE | XXXXXXX| BL_DOWN| BL_UP | RGB HD | RGB HI |
* | _______| P7 | P8 | P9 | + | P* | XXXXXXX| XXXXXXX| NKRON | NKROFF | XXXXXXX| BL_DEC | BL_INC | RGB HD | RGB HI |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
* | _______| P4 | P5 | P6 | NumLk | CALC | XXXXXXX| POWER | XXXXXXX| QK_BOOT| XXXXXXX| BL_BRTG| BL_STEP| RGB SD | RGB SI |
* | _______| P4 | P5 | P6 | NumLk | CALC | RESET | BOOTLDR| CLEAREE| XXXXXXX| XXXXXXX| BL_BRTG| BL_STEP| RGB SD | RGB SI |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
* | _______| P1 | P2 | P3 | - | P/ | XXXXXXX| OS | PLAY | PREV | NXT | BL_OFF | BL_ON | RGB VD | RGB VI |
* | _______| P1 | P2 | P3 | - | P/ | XXXXXXX| XXXXXXX| PREV | NXT | PLAY | BL_OFF | BL_ON | RGB VD | RGB VI |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
* | _______| P0 | P. | PENT | SPACE | BL_TOGG| RGB TG | RGB RMD| RGB MD |
* '--------------------------------------------------------------------------------------------------------------------------------------'
*/
[_FN] = LAYOUT_ortho_5x15( /* FUNCTION */
XXXXXXX, 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_P7, KC_P8, KC_P9, KC_PPLS, KC_PAST, XXXXXXX, KC_SCRL, KC_PAUS, XXXXXXX, XXXXXXX, BL_DOWN, BL_UP, RGB_HUD, RGB_HUI,
_______, KC_P4, KC_P5, KC_P6, KC_NUM, KC_CALC, XXXXXXX, KC_PWR, XXXXXXX, QK_BOOT, XXXXXXX, BL_BRTG, BL_STEP, RGB_SAD, RGB_SAI,
_______, KC_P1, KC_P2, KC_P3, KC_PMNS, KC_PSLS, XXXXXXX, KC_LWIN, KC_MPLY, KC_MPRV, KC_MNXT, BL_OFF, BL_ON, RGB_VAD, RGB_VAI,
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_P7, KC_P8, KC_P9, KC_PPLS, KC_PAST, XXXXXXX, XXXXXXX, NK_ON, NK_OFF, XXXXXXX, BL_DEC, BL_INC, RGB_HUD, RGB_HUI,
_______, KC_P4, KC_P5, KC_P6, KC_LNUM, KC_CALC, QK_RBT, QK_BOOT, EE_CLR, XXXXXXX, XXXXXXX, BL_BRTG, BL_STEP, RGB_SAD, RGB_SAI,
_______, KC_P1, KC_P2, KC_P3, KC_PMNS, KC_PSLS, XXXXXXX, XXXXXXX, KC_MPRV, KC_MNXT, KC_MPLY, BL_OFF, BL_ON, RGB_VAD, RGB_VAI,
_______, KC_P0, KC_PDOT, KC_PENT, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, XXXXXXX, XXXXXXX, XXXXXXX, BL_TOGG, RGB_TOG, RGB_RMOD,RGB_MOD
)
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case QMKBEST:
if (record->event.pressed) {
// when keycode QMKBEST is pressed
SEND_STRING("QMK is the best thing ever!");
} else {
// when keycode QMKBEST is released
}
break;
case QMKURL:
if (record->event.pressed) {
// when keycode QMKURL is pressed
SEND_STRING("https://qmk.fm/" SS_TAP(X_ENTER));
} else {
// when keycode QMKURL is released
}
break;
}
return true;
}
void matrix_init_user(void) {
}
void matrix_scan_user(void) {
}
void led_set_user(uint8_t usb_led) {
if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
bool led_update_user(led_t led_state) {
if (led_state.caps_lock) {
capslock_led_on();
} else {
capslock_led_off();
}
}
// Runs whenever there is a layer state change.
layer_state_t layer_state_set_user(layer_state_t state) {
uint8_t layer = get_highest_layer(state);
if (IS_LAYER_ON(_FN)) {
gp100_led_on();
} else {
gp100_led_off();
//gp103_led_off();
// turns on gp100 (top left led) for odd layers
if (layer & (1<<0)) gp100_led_on();
// turns on gp103 (top mid led) for layers 2, 6, ...
//if (layer & (1<<1)) gp103_led_on();
return state;
}
return false;
}

View File

@ -1,54 +1,2 @@
# XD75 with 7U spacebar for EN-RU gamers
* Standard QWERTY made for gamers with a Russian alternative input.
* The keys for extra letters in RU alphabet are where they are expected.
* Full 2x4 nav cluster.
* Volume/mute control are on base layer, Win key is on function layer.
* FN_CAPS provides fast F-keys access while gaming. Lefthanded Numpad operation.
* NKRO is on (forced).
## Layout
```c
/* QWERTY
* .--------------------------------------------------------------------------------------------------------------------------------------.
* | GESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | Del | BACKSP |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
* | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | Mute |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------|
* | FN(CPS)| A | S | D | F | G | H | J | K | L | ; | ' | Vol- | Vol+ | ENTER |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------|
* | LSHIFT | Z | X | C | V | B | N | M | , | . | / | Home | PGUP | UP | PGDWN |
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+-----------------+--------+--------|
* | LCTRL | Del | ENTER | LALT | SPACE | End | LEFT | DOWN | RIGHT |
* '--------------------------------------------------------------------------------------------------------------------------------------'
*/
```
```c
/* FUNCTION
* .--------------------------------------------------------------------------------------------------------------------------------------.
* | XXXXXXX| F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | _______| _______|
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
* | _______| P7 | P8 | P9 | + | P* | XXXXXXX| PR SCR | SCR LK | PAUSE | XXXXXXX| BL_DOWN| BL_UP | RGB HD | RGB HI |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
* | _______| P4 | P5 | P6 | NumLk | CALC | XXXXXXX| POWER | XXXXXXX| RESET | XXXXXXX| BL_BRTG| BL_STEP| RGB SD | RGB SI |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
* | _______| P1 | P2 | P3 | - | P/ | XXXXXXX| OS | PLAY | PREV | NXT | BL_OFF | BL_ON | RGB VD | RGB VI |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
* | _______| P0 | P. | PENT | SPACE | BL_TOGG| RGB TG | RGB RMD| RGB MD |
* '--------------------------------------------------------------------------------------------------------------------------------------'
*/
```
## LEDs
Top left LED - Function layer active.
Mid left LED - CapsLock active.
## Compile
go to qmk top directory.
```
$ cd qmk_firmware
```
build
```
$ make xiudi/xd75:buzzlighter1
```
# XD75 with 7U spacebar
Two layers - qwerty and combined function + adjust. Backlight and "RGB" disabled. NKRO enabled.

View File

@ -1,4 +1,2 @@
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
BACKLIGHT_ENABLE = yes
RGBLIGHT_ENABLE = no
NKRO_ENABLE = yes