forked from mirror/qmk_firmware
Compare commits
16 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
60e4921378 | ||
|
|
78205e64a7 | ||
|
|
f3f1bb166a | ||
|
|
63d899d1ad | ||
|
|
2b30776dd0 | ||
|
|
5414ff709f | ||
|
|
26ce66e306 | ||
|
|
c1970e284d | ||
|
|
2075370633 | ||
|
|
31eee6b05d | ||
|
|
680d401faf | ||
|
|
6fd88c1556 | ||
|
|
0483327fa6 | ||
|
|
cec391df70 | ||
|
|
d96f0584a2 | ||
|
|
0f249990a9 |
8
.github/ISSUE_TEMPLATE/blank.md
vendored
8
.github/ISSUE_TEMPLATE/blank.md
vendored
@@ -1,5 +1,11 @@
|
||||
---
|
||||
name: Blank issue
|
||||
about: If you're 100% sure that you don't need one of the other issue templates, use this one instead.
|
||||
about: If you're 100% sure that you don't need one of the other issue templates, use
|
||||
this one instead.
|
||||
title: ''
|
||||
labels: help wanted, question
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
|
||||
|
||||
7
.github/ISSUE_TEMPLATE/bug_report.md
vendored
7
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@@ -1,7 +1,12 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: Create a report to help us improve the QMK Firmware
|
||||
about: Create a report to help us improve QMK Firmware.
|
||||
title: "[Bug] "
|
||||
labels: bug, help wanted, discussion
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
<!-- Provide a general summary of the bug in the title above. -->
|
||||
|
||||
<!--- This template is entirely optional and can be removed, but is here to help both you and us. -->
|
||||
|
||||
8
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
8
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: QMK Discord
|
||||
url: https://discord.gg/Uq7gcHh
|
||||
about: Ask questions, discuss issues and features. Chill.
|
||||
- name: OLKB Subreddit
|
||||
url: https://www.reddit.com/r/olkb
|
||||
about: All things OLKB and QMK.
|
||||
7
.github/ISSUE_TEMPLATE/feature_request.md
vendored
7
.github/ISSUE_TEMPLATE/feature_request.md
vendored
@@ -1,7 +1,12 @@
|
||||
---
|
||||
name: Feature request
|
||||
about: Suggest a new feature or changes to existing features
|
||||
about: Suggest a new feature or changes to existing features.
|
||||
title: "[Feature Request] "
|
||||
labels: enhancement, help wanted, discussion
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
<!--- Provide a general summary of the changes you want in the title above. -->
|
||||
|
||||
<!--- This template is entirely optional and can be removed, but is here to help both you and us. -->
|
||||
|
||||
7
.github/ISSUE_TEMPLATE/other_issues.md
vendored
7
.github/ISSUE_TEMPLATE/other_issues.md
vendored
@@ -1,7 +1,12 @@
|
||||
---
|
||||
name: Other issues
|
||||
about: Anything else that doesn't fall into the above categories.
|
||||
about: Anything else that doesn't fall into the above categories.
|
||||
title: ''
|
||||
labels: help wanted, question, discussion
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
<!--- Provide a general summary of the changes you want in the title above. -->
|
||||
|
||||
<!--- Anything on lines wrapped in comments like these will not show up in the final text. -->
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
* [Keymap Overview](keymap.md)
|
||||
|
||||
* [Hardware](hardware.md)
|
||||
* [Compatible Microcontrollers](compatible_microcontrollers.md)
|
||||
* [AVR Processors](hardware_avr.md)
|
||||
* [Drivers](hardware_drivers.md)
|
||||
|
||||
|
||||
@@ -1,25 +1,36 @@
|
||||
# Atmel AVR
|
||||
# Compatible Microcontrollers
|
||||
|
||||
QMK should run on any Atmel AVR processor with enough Flash. It has been tested on the following:
|
||||
QMK runs on any USB-capable AVR or ARM microcontroller with enough flash space - generally 32kB or more, though it will *just* squeeze into 16kB with most features disabled.
|
||||
|
||||
* ATmega32U4 ([PJRC Teensy 2.0](http://www.pjrc.com/teensy/))
|
||||
* AT90USB1286 ([PJRC Teensy++ 2.0](http://www.pjrc.com/teensy/))
|
||||
* AT90USB1287 ([Atmel USBKEY](http://www.atmel.com/tools/AT90USBKEY.aspx))
|
||||
* ATmega168P with using [V-USB](http://www.obdev.at/products/vusb/index.html)
|
||||
* ATmega328P with using [V-USB](http://www.obdev.at/products/vusb/index.html)
|
||||
* ATmega32U2
|
||||
* AT90USB1286, 646, 647 should work
|
||||
* AT90USB162 testing...
|
||||
## Atmel AVR
|
||||
|
||||
NOTE: To enable full features of firmware you'll need 32KB flash size.
|
||||
The following use [LUFA](https://www.fourwalledcubicle.com/LUFA.php) as the USB stack:
|
||||
|
||||
Please add any tested microcontrollers to this list.
|
||||
* [ATmega16U2](https://www.microchip.com/wwwproducts/en/ATmega16U2) / [ATmega32U2](https://www.microchip.com/wwwproducts/en/ATmega32U2)
|
||||
* [ATmega16U4](https://www.microchip.com/wwwproducts/en/ATmega16U4) / [ATmega32U4](https://www.microchip.com/wwwproducts/en/ATmega32U4)
|
||||
* [AT90USB64](https://www.microchip.com/wwwproducts/en/AT90USB646) / [AT90USB128](https://www.microchip.com/wwwproducts/en/AT90USB1286)
|
||||
|
||||
# ARM
|
||||
Certain MCUs which do not have native USB will use [V-USB](https://www.obdev.at/products/vusb/index.html) instead:
|
||||
|
||||
You can also use any ARM processor that [ChibiOS](http://www.chibios.org) supports. The following processors have been tested:
|
||||
* [ATmega32A](https://www.microchip.com/wwwproducts/en/ATmega32A)
|
||||
* [ATmega328P](https://www.microchip.com/wwwproducts/en/ATmega328P)
|
||||
|
||||
* [Kinetis MKL26Z64](http://www.nxp.com/products/microcontrollers-and-processors/arm-processors/kinetis-cortex-m-mcus/l-series-ultra-low-power-m0-plus/kinetis-kl2x-48-mhz-usb-ultra-low-power-microcontrollers-mcus-based-on-arm-cortex-m0-plus-core:KL2x)
|
||||
* [Kinetis MK20DX128](http://www.nxp.com/assets/documents/data/en/data-sheets/K20P64M50SF0.pdf)
|
||||
* [Kinetis MK20DX128](http://www.nxp.com/assets/documents/data/en/data-sheets/K20P64M50SF0.pdf)
|
||||
* [Kinetis MK20DX256](http://www.nxp.com/products/microcontrollers-and-processors/arm-processors/kinetis-cortex-m-mcus/k-series-performance-m4/k2x-usb/kinetis-k20-72-mhz-full-speed-usb-mixed-signal-integration-microcontrollers-mcus-based-on-arm-cortex-m4-core:K20_72)
|
||||
## ARM
|
||||
|
||||
You can also use any ARM chip with USB that [ChibiOS](http://www.chibios.org) supports. Most have plenty of flash. Known to work are:
|
||||
|
||||
### STMicroelectronics (STM32)
|
||||
|
||||
* [STM32F0x2](https://www.st.com/en/microcontrollers-microprocessors/stm32f0x2.html)
|
||||
* [STM32F103](https://www.st.com/en/microcontrollers-microprocessors/stm32f103.html)
|
||||
* [STM32F303](https://www.st.com/en/microcontrollers-microprocessors/stm32f303.html)
|
||||
|
||||
### NXP (Kinetis)
|
||||
|
||||
* [MKL26Z64](https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/kl-series-cortex-m0-plus/kinetis-kl2x-72-96-mhz-usb-ultra-low-power-microcontrollers-mcus-based-on-arm-cortex-m0-plus-core:KL2x)
|
||||
* [MK20DX128](https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/k-series-cortex-m4/k2x-usb/kinetis-k20-50-mhz-full-speed-usb-mixed-signal-integration-microcontrollers-based-on-arm-cortex-m4-core:K20_50)
|
||||
* [MK20DX256](https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/k-series-cortex-m4/k2x-usb/kinetis-k20-72-mhz-full-speed-usb-mixed-signal-integration-microcontrollers-mcus-based-on-arm-cortex-m4-core:K20_72)
|
||||
|
||||
## Atmel ATSAM
|
||||
|
||||
There is limited support for one of Atmel's ATSAM microcontrollers, that being the [ATSAMD51J18A](https://www.microchip.com/wwwproducts/en/ATSAMD51J18A) used by the [Massdrop keyboards](https://github.com/qmk/qmk_firmware/tree/master/keyboards/massdrop).
|
||||
|
||||
@@ -196,8 +196,8 @@ If you define these options you will enable the associated feature, which may in
|
||||
* units to step when in/decreasing saturation
|
||||
* `#define RGBLIGHT_VAL_STEP 12`
|
||||
* units to step when in/decreasing value (brightness)
|
||||
* `#define RGBW_BB_TWI`
|
||||
* bit-bangs TWI to EZ RGBW LEDs (only required for Ergodox EZ)
|
||||
* `#define RGBW`
|
||||
* Enables RGBW LED support
|
||||
|
||||
## Mouse Key Options
|
||||
|
||||
|
||||
58
docs/ru-ru/getting_started_github.md
Normal file
58
docs/ru-ru/getting_started_github.md
Normal file
@@ -0,0 +1,58 @@
|
||||
# Как использовать GitHub с QMK
|
||||
|
||||
GitHub может показаться несколько сложным для тех, кто никогда с ним не работал. В данном руководстве будет разобран каждый шаг создания форка, клонирования и отправки пулреквеста в QMK.
|
||||
|
||||
?> В этом руководстве предполагается, что вы в какой-то степени знакомы с работой в командной строке, и в вашей системе установлен git.
|
||||
|
||||
Откройте [страницу QMK на GitHub] (https://github.com/qmk/qmk_firmware), и в правом верхнем углу вы увидите кнопку с надписью "Fork":
|
||||
|
||||

|
||||
|
||||
Если вы состоите в какой-либо организации, вам нужно выбрать учетную запись, к которой будет привязан форк. В большинстве случаев это будет личной аккаунт. Как только ваш форк будет завершен (иногда это занимает немного времени), нажмите кнопку "Clone or Download":
|
||||

|
||||
|
||||
И обязательно выберите "HTTPS", затем выделите ссылку и скопируйте ее:
|
||||
|
||||

|
||||
|
||||
Теперь введите `git clone` в командную строку, а затем вставьте ссылку:
|
||||
|
||||
```
|
||||
user@computer:~$ git clone https://github.com/whoeveryouare/qmk_firmware.git
|
||||
Cloning into 'qmk_firmware'...
|
||||
remote: Counting objects: 46625, done.
|
||||
remote: Compressing objects: 100% (2/2), done.
|
||||
remote: Total 46625 (delta 0), reused 0 (delta 0), pack-reused 46623
|
||||
Receiving objects: 100% (46625/46625), 84.47 MiB | 3.14 MiB/s, done.
|
||||
Resolving deltas: 100% (29362/29362), done.
|
||||
Checking out files: 100% (2799/2799), done.
|
||||
```
|
||||
|
||||
Теперь у вас есть форк QMK на вашем локальном компьютере, и вы можете добавить свою раскладку, скомпилировать ее и прошить ей свою клавиатуру. Как только вы будете довольны своими изменениями, есть возможность добавить, зафиксировать их и сделать коммит в свой форк следующим образом:
|
||||
|
||||
```
|
||||
user@computer:~$ git add .
|
||||
user@computer:~$ git commit -m "adding my keymap"
|
||||
[master cccb1608] adding my keymap
|
||||
1 file changed, 1 insertion(+)
|
||||
create mode 100644 keyboards/planck/keymaps/mine/keymap.c
|
||||
user@computer:~$ git push
|
||||
Counting objects: 1, done.
|
||||
Delta compression using up to 4 threads.
|
||||
Compressing objects: 100% (1/1), done.
|
||||
Writing objects: 100% (1/1), 1.64 KiB | 0 bytes/s, done.
|
||||
Total 1 (delta 1), reused 0 (delta 0)
|
||||
remote: Resolving deltas: 100% (1/1), completed with 1 local objects.
|
||||
To https://github.com/whoeveryouare/qmk_firmware.git
|
||||
+ 20043e64...7da94ac5 master -> master
|
||||
```
|
||||
|
||||
Ваши изменения теперь существуют в вашем форке на GitHub - если вернуться туда (`https://github.com/<whoeveryouare>/qmk_firmware`), вы сможете создать "New Pull Request" нажатием на кнопку:
|
||||
|
||||

|
||||
|
||||
Здесь вы сможете увидеть, какие именно изменения были внесены, - если все выглядит хорошо, вы можете завершить его, нажав "Create Pull Request":
|
||||
|
||||

|
||||
|
||||
После отправки мы можем расспросить вас о ваших изменениях, попросить внести корректировки и в конечном итоге принять их! Спасибо за ваш вклад в QMK :)
|
||||
@@ -84,17 +84,12 @@ void ws2812_setleds(LED_TYPE *ledarray, uint16_t leds) {
|
||||
sendByte(ledarray[i].g);
|
||||
sendByte(ledarray[i].r);
|
||||
sendByte(ledarray[i].b);
|
||||
#ifdef RGBW
|
||||
sendByte(ledarray[i].w);
|
||||
#endif
|
||||
}
|
||||
|
||||
wait_ns(RES);
|
||||
|
||||
chSysUnlock();
|
||||
}
|
||||
|
||||
// Setleds for SK6812RGBW
|
||||
void ws2812_setleds_rgbw(LED_TYPE *ledarray, uint16_t leds) {
|
||||
// not supported - for now error out if its enabled
|
||||
#ifdef RGBW
|
||||
# error "RGBW not supported"
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -11,7 +11,6 @@
|
||||
* The functions will perform the following actions:
|
||||
* - Set the data-out pin as output
|
||||
* - Send out the LED data
|
||||
* - Wait 50<EFBFBD>s to reset the LEDs
|
||||
* - Wait 50us to reset the LEDs
|
||||
*/
|
||||
void ws2812_setleds(LED_TYPE *ledarray, uint16_t number_of_leds);
|
||||
void ws2812_setleds_rgbw(LED_TYPE *ledarray, uint16_t number_of_leds);
|
||||
|
||||
@@ -36,7 +36,6 @@
|
||||
void ws2812_sendarray(uint8_t *array, uint16_t length);
|
||||
void ws2812_sendarray_mask(uint8_t *array, uint16_t length, uint8_t pinmask);
|
||||
|
||||
|
||||
#ifdef RGBW_BB_TWI
|
||||
|
||||
// Port for the I2C
|
||||
@@ -146,16 +145,6 @@ void inline ws2812_setleds(LED_TYPE *ledarray, uint16_t leds) {
|
||||
}
|
||||
|
||||
void inline ws2812_setleds_pin(LED_TYPE *ledarray, uint16_t leds, uint8_t pinmask) {
|
||||
// ws2812_DDRREG |= pinmask; // Enable DDR
|
||||
// new universal format (DDR)
|
||||
_SFR_IO8((RGB_DI_PIN >> 4) + 1) |= pinmask;
|
||||
|
||||
ws2812_sendarray_mask((uint8_t *)ledarray, leds + leds + leds, pinmask);
|
||||
_delay_us(50);
|
||||
}
|
||||
|
||||
// Setleds for SK6812RGBW
|
||||
void inline ws2812_setleds_rgbw(LED_TYPE *ledarray, uint16_t leds) {
|
||||
#ifdef RGBW_BB_TWI
|
||||
uint8_t sreg_prev, twcr_prev;
|
||||
sreg_prev = SREG;
|
||||
@@ -176,15 +165,18 @@ void inline ws2812_setleds_rgbw(LED_TYPE *ledarray, uint16_t leds) {
|
||||
SREG = sreg_prev;
|
||||
TWCR = twcr_prev;
|
||||
#endif
|
||||
|
||||
// ws2812_DDRREG |= _BV(ws2812_pin); // Enable DDR
|
||||
// ws2812_DDRREG |= pinmask; // Enable DDR
|
||||
// new universal format (DDR)
|
||||
_SFR_IO8((RGB_DI_PIN >> 4) + 1) |= _BV(RGB_DI_PIN & 0xF);
|
||||
_SFR_IO8((RGB_DI_PIN >> 4) + 1) |= pinmask;
|
||||
|
||||
ws2812_sendarray_mask((uint8_t *)ledarray, leds << 2, _BV(RGB_DI_PIN & 0xF));
|
||||
ws2812_sendarray_mask((uint8_t *)ledarray, leds * sizeof(LED_TYPE), pinmask);
|
||||
|
||||
#ifndef RGBW_BB_TWI
|
||||
# ifdef RGBW
|
||||
_delay_us(80);
|
||||
# else
|
||||
_delay_us(50);
|
||||
# endif
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -34,8 +34,7 @@
|
||||
* The functions will perform the following actions:
|
||||
* - Set the data-out pin as output
|
||||
* - Send out the LED data
|
||||
* - Wait 50<EFBFBD>s to reset the LEDs
|
||||
* - Wait 50us to reset the LEDs
|
||||
*/
|
||||
void ws2812_setleds(LED_TYPE *ledarray, uint16_t number_of_leds);
|
||||
void ws2812_setleds_pin(LED_TYPE *ledarray, uint16_t number_of_leds, uint8_t pinmask);
|
||||
void ws2812_setleds_rgbw(LED_TYPE *ledarray, uint16_t number_of_leds);
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
#include "ws2812.h"
|
||||
#include "i2c_master.h"
|
||||
|
||||
#ifdef RGBW
|
||||
# error "RGBW not supported"
|
||||
#endif
|
||||
|
||||
#ifndef WS2812_ADDRESS
|
||||
# define WS2812_ADDRESS 0xb0
|
||||
#endif
|
||||
@@ -21,11 +25,3 @@ void ws2812_setleds(LED_TYPE *ledarray, uint16_t leds) {
|
||||
|
||||
i2c_transmit(WS2812_ADDRESS, (uint8_t *)ledarray, sizeof(LED_TYPE) * leds, WS2812_TIMEOUT);
|
||||
}
|
||||
|
||||
// Setleds for SK6812RGBW
|
||||
void ws2812_setleds_rgbw(LED_TYPE *ledarray, uint16_t leds) {
|
||||
// not supported - for now error out if its enabled
|
||||
#ifdef RGBW
|
||||
# error "RGBW not supported"
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -19,11 +19,11 @@
|
||||
#include "quantum.h"
|
||||
|
||||
#define LAYOUT( \
|
||||
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
|
||||
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K48, \
|
||||
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, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D \
|
||||
K40, K41, K42, K43, K44, K45, K46, K47, K0D, K49, K4A, K4B, K4C, K4D \
|
||||
) \
|
||||
{ \
|
||||
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
|
||||
|
||||
@@ -15,18 +15,17 @@ You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef CONFIG_H
|
||||
#define CONFIG_H
|
||||
#pragma once
|
||||
|
||||
#include "config_common.h"
|
||||
|
||||
/* USB Device descriptor parameter */
|
||||
#define VENDOR_ID 0xFEED
|
||||
#define PRODUCT_ID 0x0000
|
||||
#define PRODUCT_ID 0x0C0D
|
||||
#define DEVICE_VER 0x0001
|
||||
#define MANUFACTURER Gray
|
||||
#define PRODUCT cod67
|
||||
#define DESCRIPTION 60% Custom Keyboard
|
||||
#define MANUFACTURER Gray Studio
|
||||
#define PRODUCT COD67
|
||||
#define DESCRIPTION 60% custom keyboard
|
||||
|
||||
/* key matrix size */
|
||||
#define MATRIX_ROWS 5
|
||||
@@ -49,135 +48,27 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
/* COL2ROW, ROW2COL*/
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
/* D4 is not a PWM pin, but look at timer assisted software PWM if you want something other than toggle
|
||||
* https://docs.qmk.fm/#/feature_backlight?id=timer-assisted-pwm-implementation
|
||||
*/
|
||||
#define BACKLIGHT_PIN D4
|
||||
#define BACKLIGHT_LEVELS 3
|
||||
|
||||
#define RGB_DI_PIN B2
|
||||
#ifdef RGB_DI_PIN
|
||||
#define RGBLED_NUM 20
|
||||
#define RGBLIGHT_HUE_STEP 8
|
||||
#define RGBLIGHT_SAT_STEP 8
|
||||
#define RGBLIGHT_VAL_STEP 8
|
||||
#define RGBLIGHT_LIMIT_VAL 255
|
||||
#define RGBLIGHT_SLEEP
|
||||
#define RGBLIGHT_ANIMATIONS
|
||||
#endif
|
||||
|
||||
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||
#define DEBOUNCE 5
|
||||
|
||||
/* define if matrix has ghost (lacks anti-ghosting diodes) */
|
||||
//#define MATRIX_HAS_GHOST
|
||||
|
||||
/* number of backlight levels */
|
||||
|
||||
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||
#define LOCKING_SUPPORT_ENABLE
|
||||
/* Locking resynchronize hack */
|
||||
#define LOCKING_RESYNC_ENABLE
|
||||
|
||||
/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
|
||||
* This is userful for the Windows task manager shortcut (ctrl+shift+esc).
|
||||
*/
|
||||
// #define GRAVE_ESC_CTRL_OVERRIDE
|
||||
|
||||
/*
|
||||
* Force NKRO
|
||||
*
|
||||
* Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
|
||||
* state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
|
||||
* makefile for this to work.)
|
||||
*
|
||||
* If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
|
||||
* until the next keyboard reset.
|
||||
*
|
||||
* NKRO may prevent your keystrokes from being detected in the BIOS, but it is
|
||||
* fully operational during normal computer usage.
|
||||
*
|
||||
* For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
|
||||
* or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
|
||||
* bootmagic, NKRO mode will always be enabled until it is toggled again during a
|
||||
* power-up.
|
||||
*
|
||||
*/
|
||||
//#define FORCE_NKRO
|
||||
|
||||
/*
|
||||
* Magic Key Options
|
||||
*
|
||||
* Magic keys are hotkey commands that allow control over firmware functions of
|
||||
* the keyboard. They are best used in combination with the HID Listen program,
|
||||
* found here: https://www.pjrc.com/teensy/hid_listen.html
|
||||
*
|
||||
* The options below allow the magic key functionality to be changed. This is
|
||||
* useful if your keyboard/keypad is missing keys and you want magic key support.
|
||||
*
|
||||
*/
|
||||
|
||||
/* control how magic key switches layers */
|
||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
|
||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
|
||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
|
||||
|
||||
/* override magic key keymap */
|
||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
|
||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
|
||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
|
||||
//#define MAGIC_KEY_HELP1 H
|
||||
//#define MAGIC_KEY_HELP2 SLASH
|
||||
//#define MAGIC_KEY_DEBUG D
|
||||
//#define MAGIC_KEY_DEBUG_MATRIX X
|
||||
//#define MAGIC_KEY_DEBUG_KBD K
|
||||
//#define MAGIC_KEY_DEBUG_MOUSE M
|
||||
//#define MAGIC_KEY_VERSION V
|
||||
//#define MAGIC_KEY_STATUS S
|
||||
//#define MAGIC_KEY_CONSOLE C
|
||||
//#define MAGIC_KEY_LAYER0_ALT1 ESC
|
||||
//#define MAGIC_KEY_LAYER0_ALT2 GRAVE
|
||||
//#define MAGIC_KEY_LAYER0 0
|
||||
//#define MAGIC_KEY_LAYER1 1
|
||||
//#define MAGIC_KEY_LAYER2 2
|
||||
//#define MAGIC_KEY_LAYER3 3
|
||||
//#define MAGIC_KEY_LAYER4 4
|
||||
//#define MAGIC_KEY_LAYER5 5
|
||||
//#define MAGIC_KEY_LAYER6 6
|
||||
//#define MAGIC_KEY_LAYER7 7
|
||||
//#define MAGIC_KEY_LAYER8 8
|
||||
//#define MAGIC_KEY_LAYER9 9
|
||||
//#define MAGIC_KEY_BOOTLOADER PAUSE
|
||||
//#define MAGIC_KEY_LOCK CAPS
|
||||
//#define MAGIC_KEY_EEPROM E
|
||||
//#define MAGIC_KEY_NKRO N
|
||||
//#define MAGIC_KEY_SLEEP_LED Z
|
||||
|
||||
/*
|
||||
* Feature disable options
|
||||
* These options are also useful to firmware size reduction.
|
||||
*/
|
||||
|
||||
/* disable debug print */
|
||||
//#define NO_DEBUG
|
||||
|
||||
/* disable print */
|
||||
//#define NO_PRINT
|
||||
|
||||
/* disable action features */
|
||||
//#define NO_ACTION_LAYER
|
||||
//#define NO_ACTION_TAPPING
|
||||
//#define NO_ACTION_ONESHOT
|
||||
//#define NO_ACTION_MACRO
|
||||
//#define NO_ACTION_FUNCTION
|
||||
|
||||
/*
|
||||
* MIDI options
|
||||
*/
|
||||
|
||||
/* Prevent use of disabled MIDI features in the keymap */
|
||||
//#define MIDI_ENABLE_STRICT 1
|
||||
|
||||
/* enable basic MIDI features:
|
||||
- MIDI notes can be sent when in Music mode is on
|
||||
*/
|
||||
//#define MIDI_BASIC
|
||||
|
||||
/* enable advanced MIDI features:
|
||||
- MIDI notes can be added to the keymap
|
||||
- Octave shift and transpose
|
||||
- Virtual sustain, portamento, and modulation wheel
|
||||
- etc.
|
||||
*/
|
||||
//#define MIDI_ADVANCED
|
||||
|
||||
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
|
||||
//#define MIDI_TONE_KEYCODE_OCTAVES 1
|
||||
|
||||
#endif
|
||||
|
||||
@@ -19,10 +19,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
LAYOUT(
|
||||
KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
|
||||
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_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_TRNS, KC_ENT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_TRNS, KC_TRNS, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT)
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -1 +1,5 @@
|
||||
# The default keymap for cod67
|
||||
# The default keymap for a COD67
|
||||
|
||||
The default map only implements the default layer from the map on [ydkb.io](http://ydkb.io).
|
||||
|
||||
If you want an example of a multi-layer map, look at [rys's map](../rys).
|
||||
|
||||
23
keyboards/gray_studio/cod67/keymaps/rys/keymap.c
Normal file
23
keyboards/gray_studio/cod67/keymaps/rys/keymap.c
Normal file
@@ -0,0 +1,23 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
enum layers {
|
||||
_TOP,
|
||||
_FN
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_TOP] = LAYOUT(
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, _______, KC_ENT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL,
|
||||
KC_LCTL, KC_LALT, KC_LGUI, _______, _______, KC_SPC, _______, _______, _______, KC_RGUI, MO(_FN), KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
[_FN] = LAYOUT(
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,
|
||||
_______, RGB_TOG, RGB_MOD,RGB_RMOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_TOGG,
|
||||
_______, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
)
|
||||
};
|
||||
5
keyboards/gray_studio/cod67/keymaps/rys/readme.md
Normal file
5
keyboards/gray_studio/cod67/keymaps/rys/readme.md
Normal file
@@ -0,0 +1,5 @@
|
||||
# Rys's keymap for a COD67
|
||||
|
||||
The COD67 supports really nice RGB underglow which you can see through the mid diffuser. I've put control for that on layer 1, along with reset on `Space`, backlight toggle on `Enter`, and the function row. The board supports all of the QMK RGB effects.
|
||||
|
||||
Look at the excellent [RGB Lighting](https://docs.qmk.fm/#/feature_rgblight) docs on the QMK site for more controls.
|
||||
@@ -1,30 +1,45 @@
|
||||
# Gray COD67
|
||||
|
||||
The Gray COD67 is a 60% keyboard with a modern and bold design. It features 20 RGB Underglow LED lights and a unique diffuser placement. The COD67 has the most stunning RGB light strip for a custom mechanical keyboard. It also features a center mounted USB C port.
|
||||
The Gray COD67 is a 60% keyboard with a modern and bold design. It features 20 RGB Underglow LED lights and a unique diffuser placement. The COD67 has the most stunning RGB light strip for a custom mechanical keyboard. It also features a center mounted USB C port.
|
||||
|
||||
There were only 75 units made worldwide.
|
||||
There were only 75 units made worldwide.
|
||||
|
||||
Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin)
|
||||
Hardware Supported: Gray COD67
|
||||
Hardware Availability: [Zfrontier](https://en.zfrontier.com/products/cod67)
|
||||
|
||||
At this time, flashing ONLY works on Windows systems.
|
||||
## Bootloader mode
|
||||
|
||||
To put in bootloader mode, hold the `Esc` key while plugging in the USB cable.
|
||||
To put in bootloader mode, hold the `Esc` key while plugging in the USB cable.
|
||||
|
||||
The COD67 will show up as a drive.
|
||||
## Making firmware
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make gray_studio/cod67:default:bin
|
||||
make gray_studio/cod67:default
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
|
||||
Rename the resulting `.bin` file to `cod67.bin`.
|
||||
## Flashing in Windows
|
||||
|
||||
Drag and drop `cod67.bin` to the drive, overwriting the previous `cod67.bin` stored on it.
|
||||
After putting your COD67 in bootloader mode, it will show up as a drive.
|
||||
|
||||
Press the `Esc` key again to reset the board. You are now ready to type!
|
||||
* Rename the resulting `.bin` file to `COD67.BIN`.
|
||||
* Drag and drop your new `COD67.BIN` to the drive, overwriting the previous `COD67.BIN` stored on it.
|
||||
* Wait a few seconds for it to write. The caps lock LED flashes rapidly while writing.
|
||||
* Press the `Esc` key again to reset the board. You are now ready to type!
|
||||
|
||||
## Flashing in macOS
|
||||
|
||||
After putting your COD67 in bootloader mode, it will show up as a drive.
|
||||
|
||||
* Rename the resulting `.bin` file to `COD67.BIN`.
|
||||
* Drag the existing `COD67.BIN` file from the drive to the Trash in Finder.
|
||||
* Empty the Trash in Finder. It's important you do that due to how macOS handles hidden `.Trashes` on removable drives. It needs to be empty to free up flash space.
|
||||
* Drag and drop your new `COD67.BIN` to the drive.
|
||||
* Wait a few seconds for it to write. The caps lock LED flashes rapidly while writing.
|
||||
* Press the `Esc` key or eject the drive in Finder to reset the board. You are now ready to type!
|
||||
|
||||
## Notes
|
||||
The backlight pin is attached to a non PWM pin `D4` so backlight is only on/off.
|
||||
|
||||
The backlight pin is attached to a non PWM pin `D4` so the backlight is only on/off.
|
||||
|
||||
@@ -11,19 +11,23 @@ MCU = atmega32u4
|
||||
# ATmega328P USBasp
|
||||
BOOTLOADER = atmel-dfu # actually lufa-ms
|
||||
|
||||
# Mass storage bootloader on the COD67 uses bin files
|
||||
FIRMWARE_FORMAT = bin
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||
CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||
CONSOLE_ENABLE = no # Console for debug(+400)
|
||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
NKRO_ENABLE = no # USB Nkey Rollover
|
||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
|
||||
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
||||
RGBLIGHT_ENABLE = yes # Enable RGB underglow
|
||||
MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
|
||||
UNICODE_ENABLE = no # Unicode
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
|
||||
@@ -17,7 +17,7 @@ COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||
NKRO_ENABLE = yes # USB Nkey Rollover
|
||||
CUSTOM_MATRIX = no # Custom matrix file
|
||||
AUDIO_ENABLE = yes
|
||||
RGBLIGHT_ENABLE = no
|
||||
RGBLIGHT_ENABLE = yes
|
||||
RGB_MATRIX_ENABLE = no #WS2812 once arm_rgb is implemented
|
||||
HAPTIC_ENABLE += DRV2605L
|
||||
QWIIC_ENABLE += MICRO_OLED
|
||||
|
||||
@@ -64,4 +64,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||
#define LOCKING_SUPPORT_ENABLE
|
||||
/* Locking resynchronize hack */
|
||||
#define LOCKING_RESYNC_ENABLE
|
||||
#define LOCKING_RESYNC_ENABLE
|
||||
12
keyboards/keebio/bdn9/keymaps/codecoffeecode/config.h
Normal file
12
keyboards/keebio/bdn9/keymaps/codecoffeecode/config.h
Normal file
@@ -0,0 +1,12 @@
|
||||
#pragma once
|
||||
|
||||
/* For USB nonsense in various OSs */
|
||||
#define TAP_CODE_DELAY 10
|
||||
|
||||
/* For constant mouse speed */
|
||||
#define MOUSEKEY_DELAY 300
|
||||
#define MOUSEKEY_INTERVAL 50
|
||||
#define MOUSEKEY_MAX_SPEED 1
|
||||
#define MOUSEKEY_TIME_TO_MAX 0
|
||||
#define MOUSEKEY_WHEEL_MAX_SPEED 1
|
||||
#define MOUSEKEY_WHEEL_TIME_TO_MAX 0
|
||||
57
keyboards/keebio/bdn9/keymaps/codecoffeecode/keymap.c
Normal file
57
keyboards/keebio/bdn9/keymaps/codecoffeecode/keymap.c
Normal file
@@ -0,0 +1,57 @@
|
||||
/* Copyright 2019 Danny Nguyen <danny@keeb.io>
|
||||
*
|
||||
* 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] = {
|
||||
/*
|
||||
| Knob 1: Scrl Dn/Up | | Knob 2: Vol Dn/Up |
|
||||
| Press: Mute | Up | Press: Play/Pause |
|
||||
| Left | Down | Right |
|
||||
| Media Previous | MO(1)| Media Next |
|
||||
*/
|
||||
[0] = LAYOUT(
|
||||
KC_MUTE, KC_UP, KC_MPLY,
|
||||
KC_LEFT, KC_DOWN, KC_RIGHT,
|
||||
KC_MPRV, MO(1), KC_MNXT
|
||||
),
|
||||
/*
|
||||
| RESET | Home | Media Stop |
|
||||
| | End | |
|
||||
| CTRL_END | | CTRL_HOME |
|
||||
*/
|
||||
[1] = LAYOUT(
|
||||
RESET , KC_HOME, KC_STOP,
|
||||
_______, KC_END, _______,
|
||||
LCTL(KC_END), _______, LCTL(KC_HOME)
|
||||
),
|
||||
};
|
||||
|
||||
void encoder_update_user(uint8_t index, bool clockwise) {
|
||||
if (index == 0) {
|
||||
if (clockwise) {
|
||||
tap_code(KC_MS_WH_UP);
|
||||
} else {
|
||||
tap_code(KC_MS_WH_DOWN);
|
||||
}
|
||||
}
|
||||
else if (index == 1) {
|
||||
if (clockwise) {
|
||||
tap_code(KC_VOLU);
|
||||
} else {
|
||||
tap_code(KC_VOLD);
|
||||
}
|
||||
}
|
||||
}
|
||||
2
keyboards/keebio/bdn9/keymaps/codecoffeecode/rules.mk
Normal file
2
keyboards/keebio/bdn9/keymaps/codecoffeecode/rules.mk
Normal file
@@ -0,0 +1,2 @@
|
||||
MOUSEKEY_ENABLE = yes
|
||||
CTPC = yes
|
||||
@@ -31,4 +31,4 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
AUDIO_ENABLE = no # Audio output on port C6
|
||||
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||
HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
|
||||
ENCODER_ENABLE = yes
|
||||
ENCODER_ENABLE = yes
|
||||
15
keyboards/keebio/levinson/keymaps/issmirnov/README.md
Normal file
15
keyboards/keebio/levinson/keymaps/issmirnov/README.md
Normal file
@@ -0,0 +1,15 @@
|
||||
# Levinson
|
||||
|
||||
## Colors
|
||||
|
||||
- https://github.com/qmk/qmk_firmware/blob/master/docs/feature_rgblight.md
|
||||
- main docs.
|
||||
- https://github.com/qmk/qmk_firmware/blob/master/quantum/rgblight_list.h
|
||||
- list of colors
|
||||
- https://github.com/qmk/qmk_firmware/blob/master/quantum/rgblight.h
|
||||
- list of functions for RGB manipulation
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
- When in doubt, flash both sides of the keyboard. For some reason that helps with LEDs and reponsiveness.
|
||||
- `cd qmk_firmware && make keebio/levinson/rev2:issmirnov:dfu-split-right`
|
||||
55
keyboards/keebio/levinson/keymaps/issmirnov/asci-keymap.txt
Normal file
55
keyboards/keebio/levinson/keymaps/issmirnov/asci-keymap.txt
Normal file
@@ -0,0 +1,55 @@
|
||||
Qwerty
|
||||
,-----------------------------------. ,-----------------------------------.
|
||||
| Esc | Q | W | E | R | T | | Y | U | I | O | P |⌘ + d|
|
||||
|-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----|
|
||||
| Tab | A | S | D | F | G | | H | J | K | L |TapTo|Mo(Na|
|
||||
|-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----|
|
||||
|⇧(1) | Z | X | C | V | B | | N | M | . |Comma|Tg(Nu| ' |
|
||||
|-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----|
|
||||
|Ctrl | ⌘⇧ | Alt | Mod | ⌫ | Spc | |Enter| Tab | ↑ | ↓ | ← | → |
|
||||
`-----------------------------------' ------------------------------------'
|
||||
|
||||
Symb
|
||||
,-----------------------------------. ,-----------------------------------.
|
||||
| | - | @ | { | } | ` | | * | ! | | | % | + | Esc |
|
||||
|-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----|
|
||||
| | ^ | _ | ( | ) | $ | | # | = | : | ; |TapTo| " |
|
||||
|-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----|
|
||||
| | < | > | [ | ] | ~ | | & | ? | / | \ |Tg(Nu| ' |
|
||||
|-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----|
|
||||
| | | | | | | | | | Esc | : | % | 🔒 |
|
||||
`-----------------------------------' ------------------------------------'
|
||||
|
||||
Nump
|
||||
,-----------------------------------. ,-----------------------------------.
|
||||
| | No | No |Lgui(| | | | , | 7 | 8 | 9 | |Reset|
|
||||
|-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----|
|
||||
| | |Lgui(|Lgui(|Lgui(| | | 0 | 4 | 5 | 6 |To(Sy| |
|
||||
|-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----|
|
||||
| | | | |Audio|Audio| | . | 1 | 2 | 3 |To(Qw| |
|
||||
|-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----|
|
||||
| | | | | | | | | | | |To(Ov| |
|
||||
`-----------------------------------' ------------------------------------'
|
||||
|
||||
Overwatch
|
||||
,-----------------------------------. ,-----------------------------------.
|
||||
| Tab | Q | W | E | R | T | |To(0)| | | | |Clear|
|
||||
|-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----|
|
||||
|Ctrl | A | S | D | F | P | |RgbMo|RgbMo|RgbVa|RgbVa| |RgbTo|
|
||||
|-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----|
|
||||
|Lshif| Z | X | C | V |Grave| |RgbMo|RgbMo|RgbMo|RgbMo|RgbMo|RgbMo|
|
||||
|-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----|
|
||||
|Ctrl | F9 |Pscre| H | R | ⎵ | |RgbHu|RgbHu|RgbSa|RgbSa|RgbMo|RgbMo|
|
||||
`-----------------------------------' ------------------------------------'
|
||||
|
||||
Navi
|
||||
,-----------------------------------. ,-----------------------------------.
|
||||
| | | | ↑ | | | | | | | | | |
|
||||
|-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----|
|
||||
| | | ← | ↓ | → | | | |Ctrl | | | | |
|
||||
|-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----|
|
||||
| | | | | | | | | | | | | |
|
||||
|-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----|
|
||||
| | | | | |⌘ + d| | Mod | ⌘⇧ | | | | |
|
||||
`-----------------------------------' ------------------------------------'
|
||||
|
||||
2
keyboards/keebio/levinson/keymaps/issmirnov/build.sh
Executable file
2
keyboards/keebio/levinson/keymaps/issmirnov/build.sh
Executable file
@@ -0,0 +1,2 @@
|
||||
#!/bin/bash
|
||||
make keebio/levinson/rev2:issmirnov
|
||||
34
keyboards/keebio/levinson/keymaps/issmirnov/config.h
Normal file
34
keyboards/keebio/levinson/keymaps/issmirnov/config.h
Normal file
@@ -0,0 +1,34 @@
|
||||
#pragma once
|
||||
|
||||
// Use serial comms for split keyboard
|
||||
// DO NOT enable USE_IDC - board will not respond.
|
||||
#define USE_SERIAL
|
||||
//#define USE_I2C
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
// Enable animations. +5500 bytes
|
||||
#define RGBLIGHT_ANIMATIONS
|
||||
|
||||
// Map my custom number of LED's
|
||||
#undef RGBLED_NUM
|
||||
#define RGBLED_NUM 16
|
||||
#define RGBLIGHT_LED_MAP { 0, 1, 2, 3, 4, 5, 6, 7, 15, 14, 13, 12, 11, 10, 9, 8 } // When changed, BE SURE to flash EEPROM on both halves and clear it.
|
||||
|
||||
// DO NOT USE RGBLED_SPLIT - the slave board will stop responding.
|
||||
|
||||
// Turn off RGB when computer sleeps
|
||||
#define RGBLIGHT_SLEEP
|
||||
|
||||
// custom colors
|
||||
#define RGB_CLEAR 0x00, 0x00, 0x00
|
||||
|
||||
// MOD indicators
|
||||
#define SHFT_LED1 7
|
||||
#define GUI_LED1 8
|
||||
#endif
|
||||
|
||||
#ifdef AUDIO_ENABLE
|
||||
#define QMK_SPEAKER C6
|
||||
#define C6_AUDIO
|
||||
#define NO_MUSIC_MODE // Save 2000 bytes
|
||||
#endif
|
||||
124
keyboards/keebio/levinson/keymaps/issmirnov/keymap.c
Normal file
124
keyboards/keebio/levinson/keymaps/issmirnov/keymap.c
Normal file
@@ -0,0 +1,124 @@
|
||||
#include "tap_tog.h"
|
||||
|
||||
#ifdef AUDIO_ENABLE
|
||||
#include "audio.h"
|
||||
#include "sounds.h"
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
#include "rgb.h"
|
||||
#endif
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
// Run `./qmk show levinson` from parent dir to see this layer.
|
||||
[_QWERTY] = LAYOUT_ortho_4x12_wrapper(
|
||||
KC_ESC , _________________QWERTY_L1_________________, _________________QWERTY_R1_________________ , APPS ,
|
||||
KC_TAB , _________________QWERTY_L2_________________, _________________QWERTY_R2_________________ , MO(_NAVI) ,
|
||||
OSMSFT , _________________QWERTY_L3_________________, _________________QWERTY_R3_________________ , KC_QUOTE ,
|
||||
KC_LCTL , MODSFT , KC_LALT , KC_LGUI , KC_BSPACE , KC_SPC , KC_ENTER , KC_TAB , KC_UP , KC_DOWN , KC_LEFT , KC_RGHT
|
||||
), // Note: visualizer expects this closing parens to be right at the start of the line.
|
||||
|
||||
// Run `./qmk show levinson` from parent dir to see this layer.
|
||||
[_SYMB] = LAYOUT_ortho_4x12_wrapper(
|
||||
_______ , _________________SYMB_L1___________________, _________________SYMB_R1___________________ , KC_ESC ,
|
||||
_______ , _________________SYMB_L2___________________, _________________SYMB_R2___________________ , KC_DQT ,
|
||||
_______ , _________________SYMB_L3___________________, _________________SYMB_R3___________________ , KC_QUOTE ,
|
||||
_______ , ___________________BLANK___________________, _______ , _______ , KC_ESC , KC_COLN , KC_PERC , LOCK
|
||||
), // Note: visualizer expects this closing parens to be right at the start of the line.
|
||||
|
||||
// Run `./qmk show levinson` from parent dir to see this layer.
|
||||
[_NUMP] = LAYOUT_ortho_4x12_wrapper(
|
||||
_______ , _________________NUMP_L1___________________ , _________________NUMP_R1___________________ , RESET ,
|
||||
_______ , _________________NUMP_L2___________________ , _________________NUMP_R2___________________ , _______ ,
|
||||
_______ , _________________NUMP_L3___________________ , _________________NUMP_R3___________________ , _______ ,
|
||||
_______ , ___________________BLANK___________________ , _______ , _______ , _______ , _______ , TO(_OVERWATCH) , _______
|
||||
), // Note: visualizer expects this closing parens to be right at the start of the line.
|
||||
|
||||
// Run `./qmk show levinson` from parent dir to see this layer.
|
||||
[_OVERWATCH] = LAYOUT_ortho_4x12_wrapper(
|
||||
______________OVERWATCH_L1_________________ , TO(0) , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , EEP_RST ,
|
||||
______________OVERWATCH_L2_________________ , RGB_MODE_FORWARD , RGB_MODE_REVERSE , RGB_VAI , RGB_VAD , XXXXXXX , RGB_TOG ,
|
||||
______________OVERWATCH_L3_________________ , RGB_MODE_PLAIN , RGB_MODE_BREATHE , RGB_MODE_RAINBOW , RGB_MODE_SWIRL , RGB_MODE_SNAKE , RGB_MODE_XMAS ,
|
||||
______________OVERWATCH_L4_________________ , KC_SPACE, RGB_HUI , RGB_HUD , RGB_SAI , RGB_SAD , RGB_MODE_RGBTEST , RGB_MODE_GRADIENT
|
||||
), // Note: visualizer expects this closing parens to be right at the start of the line.
|
||||
|
||||
// Run `./qmk show levinson` from parent dir to see this layer.
|
||||
[_NAVI] = LAYOUT_ortho_4x12_wrapper(
|
||||
XXXXXXX , _________________NAVI_L1___________________ , _________________NAVI_R1___________________ , XXXXXXX ,
|
||||
XXXXXXX , _________________NAVI_L2___________________ , _________________NAVI_R2___________________ , XXXXXXX ,
|
||||
XXXXXXX , _________________NAVI_L3___________________ , _________________NAVI_R3___________________ , XXXXXXX ,
|
||||
XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , APPS , KC_LGUI , MODSFT , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX
|
||||
), // Note: visualizer expects this closing parens to be right at the start of the line.
|
||||
|
||||
};
|
||||
|
||||
// called by QMK during key processing before the actual key event is handled. Useful for macros.
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case LOCK:
|
||||
if (record->event.pressed) {
|
||||
rgblight_mode(RGBLIGHT_MODE_RAINBOW_SWIRL);
|
||||
}
|
||||
return true; // Let QMK send the press/release events
|
||||
break;
|
||||
|
||||
case TAP_TOG_LAYER:
|
||||
process_tap_tog(_SYMB,record);
|
||||
return false;
|
||||
break;
|
||||
default:
|
||||
tap_tog_count = 0; // reset counter.
|
||||
tap_tog_layer_other_key_pressed = true; // always set this to true, TAP_TOG_LAYER handlers will handle interpreting this
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
// Runs constantly in the background, in a loop every 100ms or so.
|
||||
// Best used for LED status output triggered when user isn't actively typing.
|
||||
void matrix_scan_user(void) {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
matrix_scan_rgb();
|
||||
#endif // RGBLIGHT_ENABLE
|
||||
}
|
||||
|
||||
// only runs when when the layer is changed, good for updating LED's and clearing sticky state
|
||||
// RGB modes: https://github.com/qmk/qmk_firmware/blob/master/quantum/rgblight.h
|
||||
uint32_t layer_state_set_user(uint32_t state) {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
layer_state_set_rgb(state);
|
||||
#endif
|
||||
uint8_t layer = biton32(state);
|
||||
combo_enable(); // by default, enable combos.
|
||||
switch (layer) {
|
||||
case 0:
|
||||
break;
|
||||
case 1:
|
||||
clear_mods();
|
||||
break;
|
||||
case 2:
|
||||
clear_mods();
|
||||
break;
|
||||
case _OVERWATCH:
|
||||
clear_mods();
|
||||
combo_disable(); // We don't want combos in overwatch
|
||||
#ifdef AUDIO_ENABLE
|
||||
// PLAY_SONG(song_overwatch);
|
||||
#endif
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return state;
|
||||
};
|
||||
|
||||
// Runs boot tasks for keyboard.
|
||||
// Plays a welcome song and clears RGB state.
|
||||
void matrix_init_user(void) {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
keyboard_post_init_rgb();
|
||||
#endif
|
||||
}
|
||||
2
keyboards/keebio/levinson/keymaps/issmirnov/push.sh
Executable file
2
keyboards/keebio/levinson/keymaps/issmirnov/push.sh
Executable file
@@ -0,0 +1,2 @@
|
||||
#!/bin/bash
|
||||
make keebio/levinson/rev2:issmirnov:dfu-split-left
|
||||
61
keyboards/keebio/levinson/keymaps/issmirnov/rgb.c
Normal file
61
keyboards/keebio/levinson/keymaps/issmirnov/rgb.c
Normal file
@@ -0,0 +1,61 @@
|
||||
#include "rgb.h"
|
||||
|
||||
// TODO gate this debugging header
|
||||
#include <print.h>
|
||||
|
||||
// Wired up in layer_state_set_user in keymap.c
|
||||
layer_state_t layer_state_set_rgb(layer_state_t state) {
|
||||
switch (get_highest_layer(state)) {
|
||||
case _QWERTY:
|
||||
rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT);
|
||||
rgblight_sethsv_noeeprom(RGB_CLEAR);
|
||||
break;
|
||||
case _SYMB:
|
||||
rgblight_sethsv_noeeprom_red();
|
||||
break;
|
||||
case _NUMP:
|
||||
rgblight_sethsv_noeeprom_green();
|
||||
break;
|
||||
case _OVERWATCH:
|
||||
rgblight_sethsv_noeeprom_blue();
|
||||
// TODO set up animated rainbow swirl with overwatch colors.
|
||||
// rgblight_mode_noeeprom(RGBLIGHT_MODE_RAINBOW_SWIRL);
|
||||
// rgblight_effect_breathing(&animation_status);
|
||||
// rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3);
|
||||
break;
|
||||
case _NAVI:
|
||||
rgblight_sethsv_noeeprom(HSV_AZURE);
|
||||
break;
|
||||
default: // for any other layers, or the default layer
|
||||
break;
|
||||
}
|
||||
return state;
|
||||
}
|
||||
|
||||
|
||||
void keyboard_post_init_rgb(void) {
|
||||
rgblight_enable();
|
||||
rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT);
|
||||
rgblight_setrgb(RGB_CLEAR);
|
||||
uprintf("Reset RGB colors");
|
||||
}
|
||||
|
||||
void matrix_scan_rgb(void) {
|
||||
set_rgb_indicators(get_mods(), get_oneshot_mods());
|
||||
}
|
||||
|
||||
void set_rgb_indicators(uint8_t this_mod, uint8_t this_osm) {
|
||||
if (biton32(layer_state) == _QWERTY) {
|
||||
if ((this_mod | this_osm) & MOD_MASK_SHIFT) {
|
||||
rgblight_setrgb_gold_at(SHFT_LED1);
|
||||
} else {
|
||||
rgblight_setrgb_at(RGB_CLEAR, SHFT_LED1);
|
||||
}
|
||||
|
||||
if ((this_mod | this_osm) & MOD_MASK_GUI) {
|
||||
rgblight_setrgb_purple_at(GUI_LED1);
|
||||
} else {
|
||||
rgblight_setrgb_at(RGB_CLEAR, GUI_LED1);
|
||||
}
|
||||
}
|
||||
}
|
||||
15
keyboards/keebio/levinson/keymaps/issmirnov/rgb.h
Normal file
15
keyboards/keebio/levinson/keymaps/issmirnov/rgb.h
Normal file
@@ -0,0 +1,15 @@
|
||||
#pragma once
|
||||
#include "quantum.h"
|
||||
#include "issmirnov.h"
|
||||
|
||||
// Welcome animation when keyboard boots
|
||||
void keyboard_post_init_rgb(void);
|
||||
|
||||
// If rgb enabled, set underglow for layer
|
||||
uint32_t layer_state_set_rgb(uint32_t state);
|
||||
|
||||
// Enhance matrix scan code. Note: keep this light, since it runs every 100ms
|
||||
void matrix_scan_rgb(void);
|
||||
|
||||
// Light up SHIFT and GUI indicator when pressed.
|
||||
void set_rgb_indicators(uint8_t this_mod, uint8_t this_osm);
|
||||
14
keyboards/keebio/levinson/keymaps/issmirnov/rules.mk
Normal file
14
keyboards/keebio/levinson/keymaps/issmirnov/rules.mk
Normal file
@@ -0,0 +1,14 @@
|
||||
# Enable RGB underglow
|
||||
# https://beta.docs.qmk.fm/features/feature_rgblight
|
||||
RGBLIGHT_ENABLE = yes # +5500 bytes
|
||||
ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
|
||||
# Include my fancy rgb functions source here
|
||||
SRC += rgb.c
|
||||
endif
|
||||
|
||||
# Disable backlight, since I use RGB underglow.
|
||||
# https://beta.docs.qmk.fm/features/feature_backlight
|
||||
BACKLIGHT_ENABLE = no
|
||||
|
||||
# Control piezo speaker on C6
|
||||
AUDIO_ENABLE = yes # +4000 bytes
|
||||
9
keyboards/keebio/levinson/keymaps/issmirnov/sounds.h
Normal file
9
keyboards/keebio/levinson/keymaps/issmirnov/sounds.h
Normal file
@@ -0,0 +1,9 @@
|
||||
// ................................................................ Audio Sounds
|
||||
#pragma once
|
||||
#ifdef AUDIO_ENABLE
|
||||
// Songs come from quantum/audio/song_list.h
|
||||
float song_startup [][2] = SONG(STARTUP_SOUND);
|
||||
float song_goodbye [][2] = SONG(GOODBYE_SOUND);
|
||||
float song_overwatch[][2] = SONG(OVERWATCH_THEME);
|
||||
#undef AUDIO_VOICES
|
||||
#endif
|
||||
9
keyboards/keebio/levinson/keymaps/issmirnov/template.txt
Normal file
9
keyboards/keebio/levinson/keymaps/issmirnov/template.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
,-----------------------------------. ,-----------------------------------.
|
||||
| 0 | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 10 | 11 |
|
||||
|-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----|
|
||||
| 12 | 13 | 14 | 15 | 16 | 17 | | 18 | 19 | 20 | 21 | 22 | 23 |
|
||||
|-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----|
|
||||
| 24 | 25 | 26 | 27 | 28 | 29 | | 30 | 31 | 32 | 33 | 34 | 35 |
|
||||
|-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----|
|
||||
| 36 | 37 | 38 | 39 | 40 | 41 | | 42 | 43 | 44 | 45 | 46 | 47 |
|
||||
`-----------------------------------' ------------------------------------'
|
||||
@@ -11,6 +11,6 @@ A “Plaid” Inspired 12-Key (3x4) Macropad.
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make romac:default
|
||||
make kingly_keys/romac:default
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
|
||||
@@ -11,6 +11,6 @@ An Upgraded “Plaid” Inspired 12-Key (3x4) Macropad With Fancy Features.
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make romac_plus:default
|
||||
make kingly_keys/romac_plus:default
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
|
||||
@@ -11,6 +11,6 @@ Hardware Availability: [Kingly-Keys.xyz](https://kingly-keys.xyz/) - (Through GB
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make ropro:default
|
||||
make kingly_keys/ropro:default
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs)
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "dshields.h"
|
||||
#include "dynamic_macro.h"
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[DEF] = LAYOUT(
|
||||
RESET , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , _______,
|
||||
KC_GRV , KC_Q , KC_W , KC_E , KC_R , KC_T , RGB_TOG, _______, KC_Y , KC_U , KC_I , KC_O , KC_P , KC_EQL ,
|
||||
KC_PGUP, KC_A , KC_S , KC_D , KC_F , KC_G , KC_TAB , KC_ENT , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT,
|
||||
KC_PGDN, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_ESC , DM_PLAY, KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_MINS,
|
||||
KC_PGDN, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_ESC , DM_PLY1, KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_MINS,
|
||||
OSMLCTL, OSMRCTL,
|
||||
KC_BSPC, KC_SPC ,
|
||||
KC_LGUI, OSMRALT,
|
||||
@@ -16,9 +15,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
),
|
||||
[FUN] = LAYOUT(
|
||||
EEP_RST, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 ,
|
||||
KC_TAB , _______, KC_MS_U, _______, KC_BTN3, _______, RGB_MOD, DM_STRT, _______, KC_LCBR, KC_RCBR, KC_LBRC, KC_RBRC, KC_F12 ,
|
||||
KC_TAB , _______, KC_MS_U, _______, KC_BTN3, _______, RGB_MOD, DM_REC1, _______, KC_LCBR, KC_RCBR, KC_LBRC, KC_RBRC, KC_F12 ,
|
||||
KC_HOME, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN1, _______, RGB_HUI, _______, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, _______, _______,
|
||||
KC_END , KC_PSCR, KC_INS , _______, KC_BTN2, _______, RGB_HUD, DM_STOP, _______, _______, _______, _______, KC_BSLS, KC_PIPE,
|
||||
KC_END , KC_PSCR, KC_INS , _______, KC_BTN2, _______, RGB_HUD, DM_RSTP, _______, _______, _______, _______, KC_BSLS, KC_PIPE,
|
||||
_______, _______,
|
||||
KC_DEL , KC_ENT ,
|
||||
_______, _______,
|
||||
|
||||
103
keyboards/niu_mini/keymaps/codecoffeecode/keymap.c
Normal file
103
keyboards/niu_mini/keymaps/codecoffeecode/keymap.c
Normal file
@@ -0,0 +1,103 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/* Layer 0
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
|
||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
* | Esc | A | S | D | F | G | H | J | K | L | ; | " |
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||
* | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Ctrl | GUI | Caps | Alt |Layer1| Space |Layer2| Left | Down | Up |Right |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[0] = LAYOUT_planck_mit(
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
|
||||
KC_LCTL, KC_LGUI, KC_CAPS, KC_LALT, MO(1), KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
|
||||
),
|
||||
|
||||
/* Layer 1
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | ` | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | Del |
|
||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
* | | Vol- | Vol+ | Mute | | | | F11 | F12 | | | |
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Reset| | | | | | | | | | | |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[1] = LAYOUT_planck_mit(
|
||||
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL,
|
||||
_______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, KC_F11, KC_F12, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
/* Layer 2 (r_ Indicates RGB Controls)
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | |
|
||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
* | |r_TOG |r_Mode|r_Hue+|r_Hue-| | | - | = | [ | ] | \ |
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||
* | |BL_TOG|BL_STEP| | | | | | | | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | | |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[2] = LAYOUT_planck_mit(
|
||||
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
|
||||
_______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, _______, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||
_______, BL_TOGG, BL_STEP, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
)
|
||||
};
|
||||
|
||||
|
||||
void matrix_init_user(void) {
|
||||
}
|
||||
|
||||
void matrix_scan_user(void) {
|
||||
}
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
return true;
|
||||
}
|
||||
|
||||
void led_set_user(uint8_t usb_led) {
|
||||
|
||||
if (IS_LED_ON(usb_led, USB_LED_NUM_LOCK)) {
|
||||
|
||||
} else {
|
||||
|
||||
}
|
||||
|
||||
if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) {
|
||||
|
||||
} else {
|
||||
|
||||
}
|
||||
|
||||
if (IS_LED_ON(usb_led, USB_LED_SCROLL_LOCK)) {
|
||||
|
||||
} else {
|
||||
|
||||
}
|
||||
|
||||
if (IS_LED_ON(usb_led, USB_LED_COMPOSE)) {
|
||||
|
||||
} else {
|
||||
|
||||
}
|
||||
|
||||
if (IS_LED_ON(usb_led, USB_LED_KANA)) {
|
||||
|
||||
} else {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
5
keyboards/niu_mini/keymaps/codecoffeecode/readme.md
Normal file
5
keyboards/niu_mini/keymaps/codecoffeecode/readme.md
Normal file
@@ -0,0 +1,5 @@
|
||||
## CodeCoffeeCode's 40% Keymap
|
||||
|
||||
- Added Delete to Layer 1
|
||||
- Swapped Tab and Esc like on the Planck EZ
|
||||
- Put all the Arrows on the bottom row, moving the Forward Slash to beside Enter
|
||||
@@ -1,12 +1,11 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "dshields.h"
|
||||
#include "dynamic_macro.h"
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[DEF] = LAYOUT_planck_grid(
|
||||
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_ESC, KC_BSPC, KC_Y, KC_U, KC_I, KC_O, KC_P ,
|
||||
KC_A, KC_S, KC_D, KC_F, KC_G, KC_TAB, KC_ENT, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
|
||||
KC_Z, KC_X, KC_C, KC_V, KC_B, OSMLSFT, DM_PLAY, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
|
||||
KC_Z, KC_X, KC_C, KC_V, KC_B, OSMLSFT, DM_PLY1, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
|
||||
OSMLCTL, KC_LGUI, OSMLALT, OSL_FUN, OSL_LWR, MT_SPC, MT_SPC, OSL_RSE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
|
||||
),
|
||||
[LWR] = LAYOUT_planck_grid(
|
||||
@@ -24,7 +23,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[FUN] = LAYOUT_planck_grid(
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, RESET, EEP_RST, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10 ,
|
||||
KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, _______, _______, _______, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R,
|
||||
LGT_TOG, LGT_MOD, LGT_BRT, LGT_INC, LGT_DEC, DM_STRT, DM_STOP, _______, _______, KC_BTN1, KC_BTN2, KC_BTN3,
|
||||
LGT_TOG, LGT_MOD, LGT_BRT, LGT_INC, LGT_DEC, DM_REC1, DM_RSTP, _______, _______, KC_BTN1, KC_BTN2, KC_BTN3,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R
|
||||
)
|
||||
};
|
||||
|
||||
@@ -125,14 +125,17 @@
|
||||
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
|
||||
//#define MIDI_TONE_KEYCODE_OCTAVES 1
|
||||
|
||||
#define WS2812_LED_N 2
|
||||
#define RGBLED_NUM WS2812_LED_N
|
||||
#define WS2812_TIM_N 2
|
||||
#define WS2812_TIM_CH 2
|
||||
#define PORT_WS2812 GPIOA
|
||||
#define PIN_WS2812 1
|
||||
#define WS2812_DMA_STREAM STM32_DMA1_STREAM2 // DMA stream for TIMx_UP (look up in reference manual under DMA Channel selection)
|
||||
// #define WS2812_LED_N 2
|
||||
// #define RGBLED_NUM WS2812_LED_N
|
||||
// #define WS2812_TIM_N 2
|
||||
// #define WS2812_TIM_CH 2
|
||||
// #define PORT_WS2812 GPIOA
|
||||
// #define PIN_WS2812 1
|
||||
// #define WS2812_DMA_STREAM STM32_DMA1_STREAM2 // DMA stream for TIMx_UP (look up in reference manual under DMA Channel selection)
|
||||
//#define WS2812_DMA_CHANNEL 7 // DMA channel for TIMx_UP
|
||||
//#define WS2812_EXTERNAL_PULLUP
|
||||
#define RGB_DI_PIN A1
|
||||
#define RGBLED_NUM 9
|
||||
#define RGBLIGHT_ANIMATIONS
|
||||
|
||||
#endif
|
||||
|
||||
@@ -20,7 +20,8 @@ MIDI_ENABLE = no # MIDI controls
|
||||
AUDIO_ENABLE = yes # Audio output on port C6
|
||||
UNICODE_ENABLE = no # Unicode
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
|
||||
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
|
||||
WS2812_DRIVER = bitbang
|
||||
API_SYSEX_ENABLE = no
|
||||
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
@@ -29,7 +30,7 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||
|
||||
# SERIAL_LINK_ENABLE = yes
|
||||
ENCODER_ENABLE = yes
|
||||
DIP_SWITCH_ENABLE = yes
|
||||
DIP_SWITCH_ENABLE = yes
|
||||
|
||||
LAYOUTS = ortho_4x12 planck_mit
|
||||
LAYOUTS_HAS_RGB = no
|
||||
|
||||
@@ -112,14 +112,18 @@
|
||||
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
|
||||
//#define MIDI_TONE_KEYCODE_OCTAVES 1
|
||||
|
||||
#define WS2812_LED_N 2
|
||||
#define RGBLED_NUM WS2812_LED_N
|
||||
#define WS2812_TIM_N 2
|
||||
#define WS2812_TIM_CH 2
|
||||
#define PORT_WS2812 GPIOA
|
||||
#define PIN_WS2812 1
|
||||
#define WS2812_DMA_STREAM STM32_DMA1_STREAM2 // DMA stream for TIMx_UP (look up in reference manual under DMA Channel selection)
|
||||
// #define WS2812_LED_N 2
|
||||
// #define RGBLED_NUM WS2812_LED_N
|
||||
// #define WS2812_TIM_N 2
|
||||
// #define WS2812_TIM_CH 2
|
||||
// #define PORT_WS2812 GPIOA
|
||||
// #define PIN_WS2812 1
|
||||
// #define WS2812_DMA_STREAM STM32_DMA1_STREAM2 // DMA stream for TIMx_UP (look up in reference manual under DMA Channel selection)
|
||||
//#define WS2812_DMA_CHANNEL 7 // DMA channel for TIMx_UP
|
||||
//#define WS2812_EXTERNAL_PULLUP
|
||||
#define RGB_DI_PIN A1
|
||||
#define RGBLED_NUM 9
|
||||
#define RGBLIGHT_ANIMATIONS
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
@@ -17,7 +17,8 @@ MIDI_ENABLE = no # MIDI controls
|
||||
AUDIO_ENABLE = yes # Audio output on port C6
|
||||
UNICODE_ENABLE = no # Unicode
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
|
||||
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
|
||||
WS2812_DRIVER = bitbang
|
||||
API_SYSEX_ENABLE = no
|
||||
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
|
||||
17
keyboards/redox/keymaps/tw1t611/config.h
Normal file
17
keyboards/redox/keymaps/tw1t611/config.h
Normal file
@@ -0,0 +1,17 @@
|
||||
#pragma once
|
||||
|
||||
/* Use I2C or Serial, not both */
|
||||
#define USE_SERIAL
|
||||
// #define USE_I2C
|
||||
|
||||
/* Select hand configuration */
|
||||
#define MASTER_LEFT
|
||||
// #define MASTER_RIGHT
|
||||
// #define EE_HANDS
|
||||
|
||||
#undef RGBLED_NUM
|
||||
#define RGBLIGHT_ANIMATIONS
|
||||
#define RGBLED_NUM 14
|
||||
#define RGBLIGHT_HUE_STEP 8
|
||||
#define RGBLIGHT_SAT_STEP 8
|
||||
#define RGBLIGHT_VAL_STEP 8
|
||||
36
keyboards/redox/keymaps/tw1t611/keymap.c
Normal file
36
keyboards/redox/keymaps/tw1t611/keymap.c
Normal file
@@ -0,0 +1,36 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "keymap_german.h"
|
||||
|
||||
enum {
|
||||
QWERTZ = 0,
|
||||
MOD,
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[QWERTZ] = LAYOUT(
|
||||
//┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
|
||||
_______ ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 , KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,_______ ,
|
||||
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
|
||||
KC_ESC ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,_______ , _______ ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,DE_AE ,
|
||||
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
|
||||
KC_TAB ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,KC_BSPC , KC_DEL ,KC_H ,KC_J ,KC_K ,KC_L ,DE_EQL ,DE_OE ,
|
||||
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
|
||||
DE_UNDS ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_LCTL ,KC_BSPC , KC_DEL ,KC_RCTL ,KC_N ,KC_M ,KC_COMM ,KC_DOT ,DE_SS ,DE_UE ,
|
||||
//├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
|
||||
_______ ,_______ ,_______ ,_______ , KC_LALT , KC_SPC ,KC_LSFT , MO(MOD) ,KC_ENT , KC_LGUI , _______ ,_______ ,_______ ,_______
|
||||
//└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
|
||||
),
|
||||
[MOD] = LAYOUT(
|
||||
//┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
|
||||
KC_F12 ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11,
|
||||
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
|
||||
DE_CIRC ,DE_QUOT ,DE_DQOT ,DE_LCBR ,DE_RCBR ,DE_GRV ,RGB_MOD , RESET ,DE_PERC ,DE_PLUS ,DE_MINS ,DE_ASTR ,DE_SLSH ,DE_BSLS ,
|
||||
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
|
||||
DE_TILD ,DE_EXLM ,DE_DLR ,DE_LPRN ,DE_RPRN ,DE_AMPR ,RGB_TOG , _______ ,KC_LEFT ,KC_DOWN ,KC_UP ,KC_RGHT ,DE_QST ,DE_PIPE ,
|
||||
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
|
||||
_______ ,DE_AT ,DE_EURO ,DE_LBRC ,DE_RBRC ,_______ ,RGB_M_P ,_______ , _______ ,_______ ,DE_HASH ,DE_LESS ,DE_SCLN ,DE_COLN ,DE_MORE ,DE_PARA ,
|
||||
//├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
|
||||
_______ ,_______ ,_______ ,_______ , _______ , _______ ,_______ , _______ ,_______ , _______ , _______ ,_______ ,_______ ,_______
|
||||
//└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
|
||||
)
|
||||
};
|
||||
1
keyboards/redox/keymaps/tw1t611/readme.md
Normal file
1
keyboards/redox/keymaps/tw1t611/readme.md
Normal file
@@ -0,0 +1 @@
|
||||
# Keymap for Redox by tw1t611
|
||||
524
keyboards/retro_75/chconf.h
Normal file
524
keyboards/retro_75/chconf.h
Normal file
@@ -0,0 +1,524 @@
|
||||
/*
|
||||
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file templates/chconf.h
|
||||
* @brief Configuration file template.
|
||||
* @details A copy of this file must be placed in each project directory, it
|
||||
* contains the application specific kernel settings.
|
||||
*
|
||||
* @addtogroup config
|
||||
* @details Kernel related settings and hooks.
|
||||
* @{
|
||||
*/
|
||||
|
||||
#ifndef CHCONF_H
|
||||
#define CHCONF_H
|
||||
|
||||
#define _CHIBIOS_RT_CONF_
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
* @name System timers settings
|
||||
* @{
|
||||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief System time counter resolution.
|
||||
* @note Allowed values are 16 or 32 bits.
|
||||
*/
|
||||
#define CH_CFG_ST_RESOLUTION 32
|
||||
|
||||
/**
|
||||
* @brief System tick frequency.
|
||||
* @details Frequency of the system timer that drives the system ticks. This
|
||||
* setting also defines the system tick time unit.
|
||||
*/
|
||||
#define CH_CFG_ST_FREQUENCY 10000
|
||||
|
||||
/**
|
||||
* @brief Time delta constant for the tick-less mode.
|
||||
* @note If this value is zero then the system uses the classic
|
||||
* periodic tick. This value represents the minimum number
|
||||
* of ticks that is safe to specify in a timeout directive.
|
||||
* The value one is not valid, timeouts are rounded up to
|
||||
* this value.
|
||||
*/
|
||||
#define CH_CFG_ST_TIMEDELTA 2
|
||||
|
||||
/** @} */
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
* @name Kernel parameters and options
|
||||
* @{
|
||||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Round robin interval.
|
||||
* @details This constant is the number of system ticks allowed for the
|
||||
* threads before preemption occurs. Setting this value to zero
|
||||
* disables the preemption for threads with equal priority and the
|
||||
* round robin becomes cooperative. Note that higher priority
|
||||
* threads can still preempt, the kernel is always preemptive.
|
||||
* @note Disabling the round robin preemption makes the kernel more compact
|
||||
* and generally faster.
|
||||
* @note The round robin preemption is not supported in tickless mode and
|
||||
* must be set to zero in that case.
|
||||
*/
|
||||
#define CH_CFG_TIME_QUANTUM 0
|
||||
|
||||
/**
|
||||
* @brief Managed RAM size.
|
||||
* @details Size of the RAM area to be managed by the OS. If set to zero
|
||||
* then the whole available RAM is used. The core memory is made
|
||||
* available to the heap allocator and/or can be used directly through
|
||||
* the simplified core memory allocator.
|
||||
*
|
||||
* @note In order to let the OS manage the whole RAM the linker script must
|
||||
* provide the @p __heap_base__ and @p __heap_end__ symbols.
|
||||
* @note Requires @p CH_CFG_USE_MEMCORE.
|
||||
*/
|
||||
#define CH_CFG_MEMCORE_SIZE 0
|
||||
|
||||
/**
|
||||
* @brief Idle thread automatic spawn suppression.
|
||||
* @details When this option is activated the function @p chSysInit()
|
||||
* does not spawn the idle thread. The application @p main()
|
||||
* function becomes the idle thread and must implement an
|
||||
* infinite loop.
|
||||
*/
|
||||
#define CH_CFG_NO_IDLE_THREAD FALSE
|
||||
|
||||
/* Use __WFI in the idle thread for waiting. Does lower the power
|
||||
* consumption. */
|
||||
#define CORTEX_ENABLE_WFI_IDLE TRUE
|
||||
|
||||
/** @} */
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
* @name Performance options
|
||||
* @{
|
||||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief OS optimization.
|
||||
* @details If enabled then time efficient rather than space efficient code
|
||||
* is used when two possible implementations exist.
|
||||
*
|
||||
* @note This is not related to the compiler optimization options.
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#define CH_CFG_OPTIMIZE_SPEED FALSE
|
||||
|
||||
/** @} */
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
* @name Subsystem options
|
||||
* @{
|
||||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Time Measurement APIs.
|
||||
* @details If enabled then the time measurement APIs are included in
|
||||
* the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#define CH_CFG_USE_TM FALSE
|
||||
|
||||
/**
|
||||
* @brief Threads registry APIs.
|
||||
* @details If enabled then the registry APIs are included in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#define CH_CFG_USE_REGISTRY TRUE
|
||||
|
||||
/**
|
||||
* @brief Threads synchronization APIs.
|
||||
* @details If enabled then the @p chThdWait() function is included in
|
||||
* the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#define CH_CFG_USE_WAITEXIT TRUE
|
||||
|
||||
/**
|
||||
* @brief Semaphores APIs.
|
||||
* @details If enabled then the Semaphores APIs are included in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#define CH_CFG_USE_SEMAPHORES TRUE
|
||||
|
||||
/**
|
||||
* @brief Semaphores queuing mode.
|
||||
* @details If enabled then the threads are enqueued on semaphores by
|
||||
* priority rather than in FIFO order.
|
||||
*
|
||||
* @note The default is @p FALSE. Enable this if you have special
|
||||
* requirements.
|
||||
* @note Requires @p CH_CFG_USE_SEMAPHORES.
|
||||
*/
|
||||
#define CH_CFG_USE_SEMAPHORES_PRIORITY FALSE
|
||||
|
||||
/**
|
||||
* @brief Mutexes APIs.
|
||||
* @details If enabled then the mutexes APIs are included in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#define CH_CFG_USE_MUTEXES TRUE
|
||||
|
||||
/**
|
||||
* @brief Enables recursive behavior on mutexes.
|
||||
* @note Recursive mutexes are heavier and have an increased
|
||||
* memory footprint.
|
||||
*
|
||||
* @note The default is @p FALSE.
|
||||
* @note Requires @p CH_CFG_USE_MUTEXES.
|
||||
*/
|
||||
#define CH_CFG_USE_MUTEXES_RECURSIVE FALSE
|
||||
|
||||
/**
|
||||
* @brief Conditional Variables APIs.
|
||||
* @details If enabled then the conditional variables APIs are included
|
||||
* in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
* @note Requires @p CH_CFG_USE_MUTEXES.
|
||||
*/
|
||||
#define CH_CFG_USE_CONDVARS TRUE
|
||||
|
||||
/**
|
||||
* @brief Conditional Variables APIs with timeout.
|
||||
* @details If enabled then the conditional variables APIs with timeout
|
||||
* specification are included in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
* @note Requires @p CH_CFG_USE_CONDVARS.
|
||||
*/
|
||||
#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE
|
||||
|
||||
/**
|
||||
* @brief Events Flags APIs.
|
||||
* @details If enabled then the event flags APIs are included in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#define CH_CFG_USE_EVENTS TRUE
|
||||
|
||||
/**
|
||||
* @brief Events Flags APIs with timeout.
|
||||
* @details If enabled then the events APIs with timeout specification
|
||||
* are included in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
* @note Requires @p CH_CFG_USE_EVENTS.
|
||||
*/
|
||||
#define CH_CFG_USE_EVENTS_TIMEOUT TRUE
|
||||
|
||||
/**
|
||||
* @brief Synchronous Messages APIs.
|
||||
* @details If enabled then the synchronous messages APIs are included
|
||||
* in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#define CH_CFG_USE_MESSAGES TRUE
|
||||
|
||||
/**
|
||||
* @brief Synchronous Messages queuing mode.
|
||||
* @details If enabled then messages are served by priority rather than in
|
||||
* FIFO order.
|
||||
*
|
||||
* @note The default is @p FALSE. Enable this if you have special
|
||||
* requirements.
|
||||
* @note Requires @p CH_CFG_USE_MESSAGES.
|
||||
*/
|
||||
#define CH_CFG_USE_MESSAGES_PRIORITY FALSE
|
||||
|
||||
/**
|
||||
* @brief Mailboxes APIs.
|
||||
* @details If enabled then the asynchronous messages (mailboxes) APIs are
|
||||
* included in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
* @note Requires @p CH_CFG_USE_SEMAPHORES.
|
||||
*/
|
||||
#define CH_CFG_USE_MAILBOXES TRUE
|
||||
|
||||
/**
|
||||
* @brief Core Memory Manager APIs.
|
||||
* @details If enabled then the core memory manager APIs are included
|
||||
* in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#define CH_CFG_USE_MEMCORE FALSE
|
||||
|
||||
/**
|
||||
* @brief Heap Allocator APIs.
|
||||
* @details If enabled then the memory heap allocator APIs are included
|
||||
* in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
* @note Requires @p CH_CFG_USE_MEMCORE and either @p CH_CFG_USE_MUTEXES or
|
||||
* @p CH_CFG_USE_SEMAPHORES.
|
||||
* @note Mutexes are recommended.
|
||||
*/
|
||||
#define CH_CFG_USE_HEAP FALSE
|
||||
|
||||
/**
|
||||
* @brief Memory Pools Allocator APIs.
|
||||
* @details If enabled then the memory pools allocator APIs are included
|
||||
* in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#define CH_CFG_USE_MEMPOOLS FALSE
|
||||
|
||||
/**
|
||||
* @brief Dynamic Threads APIs.
|
||||
* @details If enabled then the dynamic threads creation APIs are included
|
||||
* in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
* @note Requires @p CH_CFG_USE_WAITEXIT.
|
||||
* @note Requires @p CH_CFG_USE_HEAP and/or @p CH_CFG_USE_MEMPOOLS.
|
||||
*/
|
||||
#define CH_CFG_USE_DYNAMIC FALSE
|
||||
|
||||
/** @} */
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
* @name Debug options
|
||||
* @{
|
||||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Debug option, kernel statistics.
|
||||
*
|
||||
* @note The default is @p FALSE.
|
||||
*/
|
||||
#define CH_DBG_STATISTICS FALSE
|
||||
|
||||
/**
|
||||
* @brief Debug option, system state check.
|
||||
* @details If enabled the correct call protocol for system APIs is checked
|
||||
* at runtime.
|
||||
*
|
||||
* @note The default is @p FALSE.
|
||||
*/
|
||||
#define CH_DBG_SYSTEM_STATE_CHECK FALSE
|
||||
|
||||
/**
|
||||
* @brief Debug option, parameters checks.
|
||||
* @details If enabled then the checks on the API functions input
|
||||
* parameters are activated.
|
||||
*
|
||||
* @note The default is @p FALSE.
|
||||
*/
|
||||
#define CH_DBG_ENABLE_CHECKS FALSE
|
||||
|
||||
/**
|
||||
* @brief Debug option, consistency checks.
|
||||
* @details If enabled then all the assertions in the kernel code are
|
||||
* activated. This includes consistency checks inside the kernel,
|
||||
* runtime anomalies and port-defined checks.
|
||||
*
|
||||
* @note The default is @p FALSE.
|
||||
*/
|
||||
#define CH_DBG_ENABLE_ASSERTS FALSE
|
||||
|
||||
/**
|
||||
* @brief Debug option, trace buffer.
|
||||
* @details If enabled then the trace buffer is activated.
|
||||
*
|
||||
* @note The default is @p CH_DBG_TRACE_MASK_DISABLED.
|
||||
*/
|
||||
#define CH_DBG_TRACE_MASK CH_DBG_TRACE_MASK_DISABLED
|
||||
|
||||
/**
|
||||
* @brief Trace buffer entries.
|
||||
* @note The trace buffer is only allocated if @p CH_DBG_TRACE_MASK is
|
||||
* different from @p CH_DBG_TRACE_MASK_DISABLED.
|
||||
*/
|
||||
#define CH_DBG_TRACE_BUFFER_SIZE 128
|
||||
|
||||
/**
|
||||
* @brief Debug option, stack checks.
|
||||
* @details If enabled then a runtime stack check is performed.
|
||||
*
|
||||
* @note The default is @p FALSE.
|
||||
* @note The stack check is performed in a architecture/port dependent way.
|
||||
* It may not be implemented or some ports.
|
||||
* @note The default failure mode is to halt the system with the global
|
||||
* @p panic_msg variable set to @p NULL.
|
||||
*/
|
||||
#define CH_DBG_ENABLE_STACK_CHECK FALSE
|
||||
|
||||
/**
|
||||
* @brief Debug option, stacks initialization.
|
||||
* @details If enabled then the threads working area is filled with a byte
|
||||
* value when a thread is created. This can be useful for the
|
||||
* runtime measurement of the used stack.
|
||||
*
|
||||
* @note The default is @p FALSE.
|
||||
*/
|
||||
#define CH_DBG_FILL_THREADS FALSE
|
||||
|
||||
/**
|
||||
* @brief Debug option, threads profiling.
|
||||
* @details If enabled then a field is added to the @p thread_t structure that
|
||||
* counts the system ticks occurred while executing the thread.
|
||||
*
|
||||
* @note The default is @p FALSE.
|
||||
* @note This debug option is not currently compatible with the
|
||||
* tickless mode.
|
||||
*/
|
||||
#define CH_DBG_THREADS_PROFILING FALSE
|
||||
|
||||
/** @} */
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
* @name Kernel hooks
|
||||
* @{
|
||||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Threads descriptor structure extension.
|
||||
* @details User fields added to the end of the @p thread_t structure.
|
||||
*/
|
||||
#define CH_CFG_THREAD_EXTRA_FIELDS \
|
||||
/* Add threads custom fields here.*/
|
||||
|
||||
/**
|
||||
* @brief Threads initialization hook.
|
||||
* @details User initialization code added to the @p chThdInit() API.
|
||||
*
|
||||
* @note It is invoked from within @p chThdInit() and implicitly from all
|
||||
* the threads creation APIs.
|
||||
*/
|
||||
#define CH_CFG_THREAD_INIT_HOOK(tp) { \
|
||||
/* Add threads initialization code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Threads finalization hook.
|
||||
* @details User finalization code added to the @p chThdExit() API.
|
||||
*/
|
||||
#define CH_CFG_THREAD_EXIT_HOOK(tp) { \
|
||||
/* Add threads finalization code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Context switch hook.
|
||||
* @details This hook is invoked just before switching between threads.
|
||||
*/
|
||||
#define CH_CFG_CONTEXT_SWITCH_HOOK(ntp, otp) { \
|
||||
/* Context switch code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief ISR enter hook.
|
||||
*/
|
||||
#define CH_CFG_IRQ_PROLOGUE_HOOK() { \
|
||||
/* IRQ prologue code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief ISR exit hook.
|
||||
*/
|
||||
#define CH_CFG_IRQ_EPILOGUE_HOOK() { \
|
||||
/* IRQ epilogue code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Idle thread enter hook.
|
||||
* @note This hook is invoked within a critical zone, no OS functions
|
||||
* should be invoked from here.
|
||||
* @note This macro can be used to activate a power saving mode.
|
||||
*/
|
||||
#define CH_CFG_IDLE_ENTER_HOOK() { \
|
||||
/* Idle-enter code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Idle thread leave hook.
|
||||
* @note This hook is invoked within a critical zone, no OS functions
|
||||
* should be invoked from here.
|
||||
* @note This macro can be used to deactivate a power saving mode.
|
||||
*/
|
||||
#define CH_CFG_IDLE_LEAVE_HOOK() { \
|
||||
/* Idle-leave code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Idle Loop hook.
|
||||
* @details This hook is continuously invoked by the idle thread loop.
|
||||
*/
|
||||
#define CH_CFG_IDLE_LOOP_HOOK() { \
|
||||
/* Idle loop code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief System tick event hook.
|
||||
* @details This hook is invoked in the system tick handler immediately
|
||||
* after processing the virtual timers queue.
|
||||
*/
|
||||
#define CH_CFG_SYSTEM_TICK_HOOK() { \
|
||||
/* System tick event code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief System halt hook.
|
||||
* @details This hook is invoked in case to a system halting error before
|
||||
* the system is halted.
|
||||
*/
|
||||
#define CH_CFG_SYSTEM_HALT_HOOK(reason) { \
|
||||
/* System halt code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Trace hook.
|
||||
* @details This hook is invoked each time a new record is written in the
|
||||
* trace buffer.
|
||||
*/
|
||||
#define CH_CFG_TRACE_HOOK(tep) { \
|
||||
/* Trace code here.*/ \
|
||||
}
|
||||
|
||||
/** @} */
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Port-specific settings (override port settings defaulted in chcore.h). */
|
||||
/*===========================================================================*/
|
||||
|
||||
#endif /* CHCONF_H */
|
||||
|
||||
/** @} */
|
||||
249
keyboards/retro_75/config.h
Normal file
249
keyboards/retro_75/config.h
Normal file
@@ -0,0 +1,249 @@
|
||||
/*
|
||||
Copyright 2019 zvecr<git@zvecr.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "config_common.h"
|
||||
|
||||
/* USB Device descriptor parameter */
|
||||
#define VENDOR_ID 0xFEED
|
||||
#define PRODUCT_ID 0x5275
|
||||
#define DEVICE_VER 0x0001
|
||||
#define MANUFACTURER PheonixStarr
|
||||
#define PRODUCT Retro75
|
||||
#define DESCRIPTION A custom 75% keyboard
|
||||
|
||||
/* key matrix size */
|
||||
#define MATRIX_ROWS 6
|
||||
#define MATRIX_COLS 16
|
||||
|
||||
/*
|
||||
* Keyboard Matrix Assignments
|
||||
*
|
||||
* Change this to how you wired your keyboard
|
||||
* COLS: AVR pins used for columns, left to right
|
||||
* ROWS: AVR pins used for rows, top to bottom
|
||||
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
|
||||
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
|
||||
*
|
||||
*/
|
||||
#define MATRIX_ROW_PINS { A8, B15, B14, B13, B12, B8 }
|
||||
#define MATRIX_COL_PINS { A5, A4, A3, F0, C15, C14, C13, A6, B11, B10, B2, B1, B0, A7, A14, A15 }
|
||||
#define UNUSED_PINS
|
||||
|
||||
/* COL2ROW, ROW2COL*/
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
/*
|
||||
* Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
|
||||
*/
|
||||
//#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
|
||||
|
||||
// #define BACKLIGHT_PIN B7
|
||||
// #define BACKLIGHT_BREATHING
|
||||
// #define BACKLIGHT_LEVELS 3
|
||||
|
||||
#define RGB_DI_PIN A9
|
||||
// #ifdef RGB_DI_PIN
|
||||
#define RGBLED_NUM 18
|
||||
// #define RGBLIGHT_HUE_STEP 8
|
||||
// #define RGBLIGHT_SAT_STEP 8
|
||||
// #define RGBLIGHT_VAL_STEP 8
|
||||
// #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
|
||||
// #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
|
||||
// /*== all animations enable ==*/
|
||||
#define RGBLIGHT_ANIMATIONS
|
||||
// /*== or choose animations ==*/
|
||||
// #define RGBLIGHT_EFFECT_BREATHING
|
||||
// #define RGBLIGHT_EFFECT_RAINBOW_MOOD
|
||||
// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
|
||||
// #define RGBLIGHT_EFFECT_SNAKE
|
||||
// #define RGBLIGHT_EFFECT_KNIGHT
|
||||
// #define RGBLIGHT_EFFECT_CHRISTMAS
|
||||
// #define RGBLIGHT_EFFECT_STATIC_GRADIENT
|
||||
// #define RGBLIGHT_EFFECT_RGB_TEST
|
||||
// #define RGBLIGHT_EFFECT_ALTERNATING
|
||||
// /*== customize breathing effect ==*/
|
||||
// /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
|
||||
// #define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
|
||||
// /*==== use exp() and sin() ====*/
|
||||
// #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
|
||||
// #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
|
||||
// #endif
|
||||
|
||||
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||
#define DEBOUNCE 5
|
||||
|
||||
/* define if matrix has ghost (lacks anti-ghosting diodes) */
|
||||
//#define MATRIX_HAS_GHOST
|
||||
|
||||
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||
#define LOCKING_SUPPORT_ENABLE
|
||||
/* Locking resynchronize hack */
|
||||
#define LOCKING_RESYNC_ENABLE
|
||||
|
||||
/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
|
||||
* This is userful for the Windows task manager shortcut (ctrl+shift+esc).
|
||||
*/
|
||||
// #define GRAVE_ESC_CTRL_OVERRIDE
|
||||
|
||||
/*
|
||||
* Force NKRO
|
||||
*
|
||||
* Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
|
||||
* state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
|
||||
* makefile for this to work.)
|
||||
*
|
||||
* If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
|
||||
* until the next keyboard reset.
|
||||
*
|
||||
* NKRO may prevent your keystrokes from being detected in the BIOS, but it is
|
||||
* fully operational during normal computer usage.
|
||||
*
|
||||
* For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
|
||||
* or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
|
||||
* bootmagic, NKRO mode will always be enabled until it is toggled again during a
|
||||
* power-up.
|
||||
*
|
||||
*/
|
||||
//#define FORCE_NKRO
|
||||
|
||||
/*
|
||||
* Magic Key Options
|
||||
*
|
||||
* Magic keys are hotkey commands that allow control over firmware functions of
|
||||
* the keyboard. They are best used in combination with the HID Listen program,
|
||||
* found here: https://www.pjrc.com/teensy/hid_listen.html
|
||||
*
|
||||
* The options below allow the magic key functionality to be changed. This is
|
||||
* useful if your keyboard/keypad is missing keys and you want magic key support.
|
||||
*
|
||||
*/
|
||||
|
||||
/* key combination for magic key command */
|
||||
/* defined by default; to change, uncomment and set to the combination you want */
|
||||
// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT)
|
||||
|
||||
/* control how magic key switches layers */
|
||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
|
||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
|
||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
|
||||
|
||||
/* override magic key keymap */
|
||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
|
||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
|
||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
|
||||
//#define MAGIC_KEY_HELP H
|
||||
//#define MAGIC_KEY_HELP_ALT SLASH
|
||||
//#define MAGIC_KEY_DEBUG D
|
||||
//#define MAGIC_KEY_DEBUG_MATRIX X
|
||||
//#define MAGIC_KEY_DEBUG_KBD K
|
||||
//#define MAGIC_KEY_DEBUG_MOUSE M
|
||||
//#define MAGIC_KEY_VERSION V
|
||||
//#define MAGIC_KEY_STATUS S
|
||||
//#define MAGIC_KEY_CONSOLE C
|
||||
//#define MAGIC_KEY_LAYER0 0
|
||||
//#define MAGIC_KEY_LAYER0_ALT GRAVE
|
||||
//#define MAGIC_KEY_LAYER1 1
|
||||
//#define MAGIC_KEY_LAYER2 2
|
||||
//#define MAGIC_KEY_LAYER3 3
|
||||
//#define MAGIC_KEY_LAYER4 4
|
||||
//#define MAGIC_KEY_LAYER5 5
|
||||
//#define MAGIC_KEY_LAYER6 6
|
||||
//#define MAGIC_KEY_LAYER7 7
|
||||
//#define MAGIC_KEY_LAYER8 8
|
||||
//#define MAGIC_KEY_LAYER9 9
|
||||
//#define MAGIC_KEY_BOOTLOADER B
|
||||
//#define MAGIC_KEY_BOOTLOADER_ALT ESC
|
||||
//#define MAGIC_KEY_LOCK CAPS
|
||||
//#define MAGIC_KEY_EEPROM E
|
||||
//#define MAGIC_KEY_EEPROM_CLEAR BSPACE
|
||||
//#define MAGIC_KEY_NKRO N
|
||||
//#define MAGIC_KEY_SLEEP_LED Z
|
||||
|
||||
/*
|
||||
* Feature disable options
|
||||
* These options are also useful to firmware size reduction.
|
||||
*/
|
||||
|
||||
/* disable debug print */
|
||||
//#define NO_DEBUG
|
||||
|
||||
/* disable print */
|
||||
//#define NO_PRINT
|
||||
|
||||
/* disable action features */
|
||||
//#define NO_ACTION_LAYER
|
||||
//#define NO_ACTION_TAPPING
|
||||
//#define NO_ACTION_ONESHOT
|
||||
//#define NO_ACTION_MACRO
|
||||
//#define NO_ACTION_FUNCTION
|
||||
|
||||
/*
|
||||
* MIDI options
|
||||
*/
|
||||
|
||||
/* Prevent use of disabled MIDI features in the keymap */
|
||||
//#define MIDI_ENABLE_STRICT 1
|
||||
|
||||
/* enable basic MIDI features:
|
||||
- MIDI notes can be sent when in Music mode is on
|
||||
*/
|
||||
//#define MIDI_BASIC
|
||||
|
||||
/* enable advanced MIDI features:
|
||||
- MIDI notes can be added to the keymap
|
||||
- Octave shift and transpose
|
||||
- Virtual sustain, portamento, and modulation wheel
|
||||
- etc.
|
||||
*/
|
||||
//#define MIDI_ADVANCED
|
||||
|
||||
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
|
||||
//#define MIDI_TONE_KEYCODE_OCTAVES 1
|
||||
|
||||
/*
|
||||
* HD44780 LCD Display Configuration
|
||||
*/
|
||||
/*
|
||||
#define LCD_LINES 2 //< number of visible lines of the display
|
||||
#define LCD_DISP_LENGTH 16 //< visibles characters per line of the display
|
||||
|
||||
#define LCD_IO_MODE 1 //< 0: memory mapped mode, 1: IO port mode
|
||||
|
||||
#if LCD_IO_MODE
|
||||
#define LCD_PORT PORTB //< port for the LCD lines
|
||||
#define LCD_DATA0_PORT LCD_PORT //< port for 4bit data bit 0
|
||||
#define LCD_DATA1_PORT LCD_PORT //< port for 4bit data bit 1
|
||||
#define LCD_DATA2_PORT LCD_PORT //< port for 4bit data bit 2
|
||||
#define LCD_DATA3_PORT LCD_PORT //< port for 4bit data bit 3
|
||||
#define LCD_DATA0_PIN 4 //< pin for 4bit data bit 0
|
||||
#define LCD_DATA1_PIN 5 //< pin for 4bit data bit 1
|
||||
#define LCD_DATA2_PIN 6 //< pin for 4bit data bit 2
|
||||
#define LCD_DATA3_PIN 7 //< pin for 4bit data bit 3
|
||||
#define LCD_RS_PORT LCD_PORT //< port for RS line
|
||||
#define LCD_RS_PIN 3 //< pin for RS line
|
||||
#define LCD_RW_PORT LCD_PORT //< port for RW line
|
||||
#define LCD_RW_PIN 2 //< pin for RW line
|
||||
#define LCD_E_PORT LCD_PORT //< port for Enable line
|
||||
#define LCD_E_PIN 1 //< pin for Enable line
|
||||
#endif
|
||||
*/
|
||||
|
||||
/* Bootmagic Lite key configuration */
|
||||
// #define BOOTMAGIC_LITE_ROW 0
|
||||
// #define BOOTMAGIC_LITE_COLUMN 0
|
||||
353
keyboards/retro_75/halconf.h
Normal file
353
keyboards/retro_75/halconf.h
Normal file
@@ -0,0 +1,353 @@
|
||||
/*
|
||||
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file templates/halconf.h
|
||||
* @brief HAL configuration header.
|
||||
* @details HAL configuration file, this file allows to enable or disable the
|
||||
* various device drivers from your application. You may also use
|
||||
* this file in order to override the device drivers default settings.
|
||||
*
|
||||
* @addtogroup HAL_CONF
|
||||
* @{
|
||||
*/
|
||||
|
||||
#ifndef _HALCONF_H_
|
||||
#define _HALCONF_H_
|
||||
|
||||
#include "mcuconf.h"
|
||||
|
||||
/**
|
||||
* @brief Enables the PAL subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_PAL) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_PAL TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the ADC subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_ADC) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_ADC FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the CAN subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_CAN) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_CAN FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the DAC subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_DAC) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_DAC FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the EXT subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_EXT) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_EXT FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the GPT subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_GPT) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_GPT FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the I2C subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_I2C FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the I2S subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_I2S) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_I2S FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the ICU subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_ICU) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_ICU FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the MAC subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_MAC) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_MAC FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the MMC_SPI subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_MMC_SPI) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_MMC_SPI FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the PWM subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_PWM) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_PWM FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the RTC subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_RTC) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_RTC FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the SDC subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_SDC) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_SDC FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the SERIAL subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_SERIAL) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_SERIAL FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the SERIAL over USB subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_SERIAL_USB) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_SERIAL_USB FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the SPI subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_SPI) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_SPI FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the UART subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_UART) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_UART FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the USB subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_USB) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_USB TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the WDG subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_WDG) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_WDG FALSE
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* ADC driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Enables synchronous APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(ADC_USE_WAIT) || defined(__DOXYGEN__)
|
||||
#define ADC_USE_WAIT TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the @p adcAcquireBus() and @p adcReleaseBus() APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(ADC_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
|
||||
#define ADC_USE_MUTUAL_EXCLUSION TRUE
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* CAN driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Sleep mode related APIs inclusion switch.
|
||||
*/
|
||||
#if !defined(CAN_USE_SLEEP_MODE) || defined(__DOXYGEN__)
|
||||
#define CAN_USE_SLEEP_MODE TRUE
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* I2C driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Enables the mutual exclusion APIs on the I2C bus.
|
||||
*/
|
||||
#if !defined(I2C_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
|
||||
#define I2C_USE_MUTUAL_EXCLUSION TRUE
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* MAC driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Enables an event sources for incoming packets.
|
||||
*/
|
||||
#if !defined(MAC_USE_ZERO_COPY) || defined(__DOXYGEN__)
|
||||
#define MAC_USE_ZERO_COPY FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables an event sources for incoming packets.
|
||||
*/
|
||||
#if !defined(MAC_USE_EVENTS) || defined(__DOXYGEN__)
|
||||
#define MAC_USE_EVENTS TRUE
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* MMC_SPI driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Delays insertions.
|
||||
* @details If enabled this options inserts delays into the MMC waiting
|
||||
* routines releasing some extra CPU time for the threads with
|
||||
* lower priority, this may slow down the driver a bit however.
|
||||
* This option is recommended also if the SPI driver does not
|
||||
* use a DMA channel and heavily loads the CPU.
|
||||
*/
|
||||
#if !defined(MMC_NICE_WAITING) || defined(__DOXYGEN__)
|
||||
#define MMC_NICE_WAITING TRUE
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* SDC driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Number of initialization attempts before rejecting the card.
|
||||
* @note Attempts are performed at 10mS intervals.
|
||||
*/
|
||||
#if !defined(SDC_INIT_RETRY) || defined(__DOXYGEN__)
|
||||
#define SDC_INIT_RETRY 100
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Include support for MMC cards.
|
||||
* @note MMC support is not yet implemented so this option must be kept
|
||||
* at @p FALSE.
|
||||
*/
|
||||
#if !defined(SDC_MMC_SUPPORT) || defined(__DOXYGEN__)
|
||||
#define SDC_MMC_SUPPORT FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Delays insertions.
|
||||
* @details If enabled this options inserts delays into the MMC waiting
|
||||
* routines releasing some extra CPU time for the threads with
|
||||
* lower priority, this may slow down the driver a bit however.
|
||||
*/
|
||||
#if !defined(SDC_NICE_WAITING) || defined(__DOXYGEN__)
|
||||
#define SDC_NICE_WAITING TRUE
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* SERIAL driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Default bit rate.
|
||||
* @details Configuration parameter, this is the baud rate selected for the
|
||||
* default configuration.
|
||||
*/
|
||||
#if !defined(SERIAL_DEFAULT_BITRATE) || defined(__DOXYGEN__)
|
||||
#define SERIAL_DEFAULT_BITRATE 38400
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Serial buffers size.
|
||||
* @details Configuration parameter, you can change the depth of the queue
|
||||
* buffers depending on the requirements of your application.
|
||||
* @note The default is 64 bytes for both the transmission and receive
|
||||
* buffers.
|
||||
*/
|
||||
#if !defined(SERIAL_BUFFERS_SIZE) || defined(__DOXYGEN__)
|
||||
#define SERIAL_BUFFERS_SIZE 16
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* SERIAL_USB driver related setting. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Serial over USB buffers size.
|
||||
* @details Configuration parameter, the buffer size must be a multiple of
|
||||
* the USB data endpoint maximum packet size.
|
||||
* @note The default is 64 bytes for both the transmission and receive
|
||||
* buffers.
|
||||
*/
|
||||
#if !defined(SERIAL_USB_BUFFERS_SIZE) || defined(__DOXYGEN__)
|
||||
#define SERIAL_USB_BUFFERS_SIZE 1
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* SPI driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Enables synchronous APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(SPI_USE_WAIT) || defined(__DOXYGEN__)
|
||||
#define SPI_USE_WAIT TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the @p spiAcquireBus() and @p spiReleaseBus() APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(SPI_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
|
||||
#define SPI_USE_MUTUAL_EXCLUSION TRUE
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* USB driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Enables synchronous APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(USB_USE_WAIT) || defined(__DOXYGEN__)
|
||||
#define USB_USE_WAIT TRUE
|
||||
#endif
|
||||
|
||||
#endif /* _HALCONF_H_ */
|
||||
|
||||
/** @} */
|
||||
15
keyboards/retro_75/info.json
Normal file
15
keyboards/retro_75/info.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"keyboard_name": "Retro75",
|
||||
"url": "",
|
||||
"maintainer": "zvecr",
|
||||
"width": 16,
|
||||
"height": 6.25,
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1.5, "y":0}, {"label":"F2", "x":2.5, "y":0}, {"label":"F3", "x":3.5, "y":0}, {"label":"F4", "x":4.5, "y":0}, {"label":"F5", "x":6, "y":0}, {"label":"F6", "x":7, "y":0}, {"label":"F7", "x":8, "y":0}, {"label":"F8", "x":9, "y":0}, {"label":"F9", "x":10.5, "y":0}, {"label":"F10", "x":11.5, "y":0}, {"label":"F11", "x":12.5, "y":0}, {"label":"F12", "x":13.5, "y":0}, {"label":"Prt Sc", "x":15, "y":0}, {"label":"~", "x":0, "y":1.25}, {"label":"!", "x":1, "y":1.25}, {"label":"@", "x":2, "y":1.25}, {"label":"#", "x":3, "y":1.25}, {"label":"$", "x":4, "y":1.25}, {"label":"%", "x":5, "y":1.25}, {"label":"^", "x":6, "y":1.25}, {"label":"&", "x":7, "y":1.25}, {"label":"*", "x":8, "y":1.25}, {"label":"(", "x":9, "y":1.25}, {"label":")", "x":10, "y":1.25}, {"label":"_", "x":11, "y":1.25}, {"label":"+", "x":12, "y":1.25}, {"x":13, "y":1.25, "w":2}, {"label":"Delete", "x":15, "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":"Page Up", "x":15, "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}, {"label":"Page Down", "x":15, "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":1.75}, {"label":"\u2191", "x":14, "y":4.25}, {"label":"Fn", "x":15, "y":4.25}, {"label":"Ctrl", "x":0, "y":5.25, "w":1.5}, {"label":"Alt", "x":2.25, "y":5.25, "w":1.5}, {"x":3.75, "y":5.25, "w":7}, {"label":"Alt", "x":10.75, "y":5.25, "w":1.5}, {"label":"\u2190", "x":13, "y":5.25}, {"label":"\u2193", "x":14, "y":5.25}, {"label":"\u2192", "x":15, "y":5.25}]
|
||||
},
|
||||
"LAYOUT_split_bs": {
|
||||
"layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1.5, "y":0}, {"label":"F2", "x":2.5, "y":0}, {"label":"F3", "x":3.5, "y":0}, {"label":"F4", "x":4.5, "y":0}, {"label":"F5", "x":6, "y":0}, {"label":"F6", "x":7, "y":0}, {"label":"F7", "x":8, "y":0}, {"label":"F8", "x":9, "y":0}, {"label":"F9", "x":10.5, "y":0}, {"label":"F10", "x":11.5, "y":0}, {"label":"F11", "x":12.5, "y":0}, {"label":"F12", "x":13.5, "y":0}, {"label":"Prt Sc", "x":15, "y":0}, {"label":"~", "x":0, "y":1.25}, {"label":"!", "x":1, "y":1.25}, {"label":"@", "x":2, "y":1.25}, {"label":"#", "x":3, "y":1.25}, {"label":"$", "x":4, "y":1.25}, {"label":"%", "x":5, "y":1.25}, {"label":"^", "x":6, "y":1.25}, {"label":"&", "x":7, "y":1.25}, {"label":"*", "x":8, "y":1.25}, {"label":"(", "x":9, "y":1.25}, {"label":")", "x":10, "y":1.25}, {"label":"_", "x":11, "y":1.25}, {"label":"+", "x":12, "y":1.25}, {"x":13, "y":1.25}, {"x":14, "y":1.25}, {"label":"Delete", "x":15, "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":"Page Up", "x":15, "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}, {"label":"Page Down", "x":15, "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":1.75}, {"label":"\u2191", "x":14, "y":4.25}, {"label":"Fn", "x":15, "y":4.25}, {"label":"Ctrl", "x":0, "y":5.25, "w":1.5}, {"label":"Alt", "x":2.25, "y":5.25, "w":1.5}, {"x":3.75, "y":5.25, "w":7}, {"label":"Alt", "x":10.75, "y":5.25, "w":1.5}, {"label":"\u2190", "x":13, "y":5.25}, {"label":"\u2193", "x":14, "y":5.25}, {"label":"\u2192", "x":15, "y":5.25}]
|
||||
}
|
||||
}
|
||||
}
|
||||
22
keyboards/retro_75/keymaps/default/keymap.c
Normal file
22
keyboards/retro_75/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,22 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[0] = LAYOUT(
|
||||
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, MO(1),
|
||||
KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
|
||||
[1] = LAYOUT(
|
||||
RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
};
|
||||
22
keyboards/retro_75/keymaps/split_backspace/keymap.c
Normal file
22
keyboards/retro_75/keymaps/split_backspace/keymap.c
Normal file
@@ -0,0 +1,22 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[0] = LAYOUT_split_bs(
|
||||
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_DEL,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, MO(1),
|
||||
KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
|
||||
[1] = LAYOUT_split_bs(
|
||||
RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
};
|
||||
171
keyboards/retro_75/mcuconf.h
Normal file
171
keyboards/retro_75/mcuconf.h
Normal file
@@ -0,0 +1,171 @@
|
||||
/*
|
||||
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef _MCUCONF_H_
|
||||
#define _MCUCONF_H_
|
||||
|
||||
/*
|
||||
* STM32F0xx drivers configuration.
|
||||
* The following settings override the default settings present in
|
||||
* the various device driver implementation headers.
|
||||
* Note that the settings for each driver only have effect if the whole
|
||||
* driver is enabled in halconf.h.
|
||||
*
|
||||
* IRQ priorities:
|
||||
* 3...0 Lowest...Highest.
|
||||
*
|
||||
* DMA priorities:
|
||||
* 0...3 Lowest...Highest.
|
||||
*/
|
||||
|
||||
#define STM32F0xx_MCUCONF
|
||||
|
||||
/*
|
||||
* HAL driver system settings.
|
||||
*/
|
||||
#define STM32_NO_INIT FALSE
|
||||
#define STM32_PVD_ENABLE FALSE
|
||||
#define STM32_PLS STM32_PLS_LEV0
|
||||
#define STM32_HSI_ENABLED TRUE
|
||||
#define STM32_HSI14_ENABLED TRUE
|
||||
#define STM32_HSI48_ENABLED FALSE
|
||||
#define STM32_LSI_ENABLED TRUE
|
||||
#define STM32_HSE_ENABLED FALSE
|
||||
#define STM32_LSE_ENABLED FALSE
|
||||
#define STM32_SW STM32_SW_PLL
|
||||
#define STM32_PLLSRC STM32_PLLSRC_HSI_DIV2
|
||||
#define STM32_PREDIV_VALUE 1
|
||||
#define STM32_PLLMUL_VALUE 12
|
||||
#define STM32_HPRE STM32_HPRE_DIV1
|
||||
#define STM32_PPRE STM32_PPRE_DIV1
|
||||
#define STM32_ADCSW STM32_ADCSW_HSI14
|
||||
#define STM32_ADCPRE STM32_ADCPRE_DIV4
|
||||
#define STM32_MCOSEL STM32_MCOSEL_NOCLOCK
|
||||
#define STM32_ADCPRE STM32_ADCPRE_DIV4
|
||||
#define STM32_ADCSW STM32_ADCSW_HSI14
|
||||
#define STM32_USBSW STM32_USBSW_HSI48
|
||||
#define STM32_CECSW STM32_CECSW_HSI
|
||||
#define STM32_I2C1SW STM32_I2C1SW_HSI
|
||||
#define STM32_USART1SW STM32_USART1SW_PCLK
|
||||
#define STM32_RTCSEL STM32_RTCSEL_LSI
|
||||
|
||||
/*
|
||||
* ADC driver system settings.
|
||||
*/
|
||||
#define STM32_ADC_USE_ADC1 FALSE
|
||||
#define STM32_ADC_ADC1_DMA_PRIORITY 2
|
||||
#define STM32_ADC_IRQ_PRIORITY 2
|
||||
#define STM32_ADC_ADC1_DMA_IRQ_PRIORITY 2
|
||||
|
||||
/*
|
||||
* EXT driver system settings.
|
||||
*/
|
||||
#define STM32_EXT_EXTI0_1_IRQ_PRIORITY 3
|
||||
#define STM32_EXT_EXTI2_3_IRQ_PRIORITY 3
|
||||
#define STM32_EXT_EXTI4_15_IRQ_PRIORITY 3
|
||||
#define STM32_EXT_EXTI16_IRQ_PRIORITY 3
|
||||
#define STM32_EXT_EXTI17_IRQ_PRIORITY 3
|
||||
|
||||
/*
|
||||
* GPT driver system settings.
|
||||
*/
|
||||
#define STM32_GPT_USE_TIM1 FALSE
|
||||
#define STM32_GPT_USE_TIM2 FALSE
|
||||
#define STM32_GPT_USE_TIM3 FALSE
|
||||
#define STM32_GPT_USE_TIM14 FALSE
|
||||
#define STM32_GPT_TIM1_IRQ_PRIORITY 2
|
||||
#define STM32_GPT_TIM2_IRQ_PRIORITY 2
|
||||
#define STM32_GPT_TIM3_IRQ_PRIORITY 2
|
||||
#define STM32_GPT_TIM14_IRQ_PRIORITY 2
|
||||
|
||||
/*
|
||||
* I2C driver system settings.
|
||||
*/
|
||||
#define STM32_I2C_USE_I2C1 FALSE
|
||||
#define STM32_I2C_USE_I2C2 FALSE
|
||||
#define STM32_I2C_BUSY_TIMEOUT 50
|
||||
#define STM32_I2C_I2C1_IRQ_PRIORITY 3
|
||||
#define STM32_I2C_I2C2_IRQ_PRIORITY 3
|
||||
#define STM32_I2C_USE_DMA TRUE
|
||||
#define STM32_I2C_I2C1_DMA_PRIORITY 1
|
||||
#define STM32_I2C_I2C2_DMA_PRIORITY 1
|
||||
#define STM32_I2C_DMA_ERROR_HOOK(i2cp) osalSysHalt("DMA failure")
|
||||
|
||||
/*
|
||||
* ICU driver system settings.
|
||||
*/
|
||||
#define STM32_ICU_USE_TIM1 FALSE
|
||||
#define STM32_ICU_USE_TIM2 FALSE
|
||||
#define STM32_ICU_USE_TIM3 FALSE
|
||||
#define STM32_ICU_TIM1_IRQ_PRIORITY 3
|
||||
#define STM32_ICU_TIM2_IRQ_PRIORITY 3
|
||||
#define STM32_ICU_TIM3_IRQ_PRIORITY 3
|
||||
|
||||
/*
|
||||
* PWM driver system settings.
|
||||
*/
|
||||
#define STM32_PWM_USE_ADVANCED FALSE
|
||||
#define STM32_PWM_USE_TIM1 FALSE
|
||||
#define STM32_PWM_USE_TIM2 FALSE
|
||||
#define STM32_PWM_USE_TIM3 FALSE
|
||||
#define STM32_PWM_TIM1_IRQ_PRIORITY 3
|
||||
#define STM32_PWM_TIM2_IRQ_PRIORITY 3
|
||||
#define STM32_PWM_TIM3_IRQ_PRIORITY 3
|
||||
|
||||
/*
|
||||
* SERIAL driver system settings.
|
||||
*/
|
||||
#define STM32_SERIAL_USE_USART1 FALSE
|
||||
#define STM32_SERIAL_USE_USART2 FALSE
|
||||
#define STM32_SERIAL_USART1_PRIORITY 3
|
||||
#define STM32_SERIAL_USART2_PRIORITY 3
|
||||
|
||||
/*
|
||||
* SPI driver system settings.
|
||||
*/
|
||||
#define STM32_SPI_USE_SPI1 FALSE
|
||||
#define STM32_SPI_USE_SPI2 FALSE
|
||||
#define STM32_SPI_SPI1_DMA_PRIORITY 1
|
||||
#define STM32_SPI_SPI2_DMA_PRIORITY 1
|
||||
#define STM32_SPI_SPI1_IRQ_PRIORITY 2
|
||||
#define STM32_SPI_SPI2_IRQ_PRIORITY 2
|
||||
#define STM32_SPI_DMA_ERROR_HOOK(spip) osalSysHalt("DMA failure")
|
||||
|
||||
/*
|
||||
* ST driver system settings.
|
||||
*/
|
||||
#define STM32_ST_IRQ_PRIORITY 2
|
||||
#define STM32_ST_USE_TIMER 2
|
||||
|
||||
/*
|
||||
* UART driver system settings.
|
||||
*/
|
||||
#define STM32_UART_USE_USART1 FALSE
|
||||
#define STM32_UART_USE_USART2 FALSE
|
||||
#define STM32_UART_USART1_IRQ_PRIORITY 3
|
||||
#define STM32_UART_USART2_IRQ_PRIORITY 3
|
||||
#define STM32_UART_USART1_DMA_PRIORITY 0
|
||||
#define STM32_UART_USART2_DMA_PRIORITY 0
|
||||
#define STM32_UART_DMA_ERROR_HOOK(uartp) osalSysHalt("DMA failure")
|
||||
|
||||
/*
|
||||
* USB driver system settings.
|
||||
*/
|
||||
#define STM32_USB_USE_USB1 TRUE
|
||||
#define STM32_USB_LOW_POWER_ON_SUSPEND FALSE
|
||||
#define STM32_USB_USB1_LP_IRQ_PRIORITY 3
|
||||
|
||||
#endif /* _MCUCONF_H_ */
|
||||
15
keyboards/retro_75/readme.md
Normal file
15
keyboards/retro_75/readme.md
Normal file
@@ -0,0 +1,15 @@
|
||||
# Retro75
|
||||
|
||||

|
||||
|
||||
A 75% ARM STM32F072 keyboard, with WS2812 LEDs.
|
||||
|
||||
* Keyboard Maintainer: [zvecr](https://github.com/zvecr)
|
||||
* Hardware Supported: Retro75 PCB
|
||||
* Hardware Availability: Private Group-Buy
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make retro_75:default
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
1
keyboards/retro_75/retro_75.c
Normal file
1
keyboards/retro_75/retro_75.c
Normal file
@@ -0,0 +1 @@
|
||||
#include "retro_75.h"
|
||||
61
keyboards/retro_75/retro_75.h
Normal file
61
keyboards/retro_75/retro_75.h
Normal file
@@ -0,0 +1,61 @@
|
||||
/* Copyright 2019 zvecr<git@zvecr.com>
|
||||
*
|
||||
* 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
|
||||
|
||||
/* This a shortcut to help you visually see your layout.
|
||||
*
|
||||
* The first section contains all of the arguments representing the physical
|
||||
* layout of the board and position of the keys.
|
||||
*
|
||||
* The second converts the arguments into a two-dimensional array which
|
||||
* represents the switch matrix.
|
||||
*/
|
||||
#define LAYOUT( \
|
||||
K000, K002, K003, K004, K005, K006, K007, K008, K009, K011, K012, K013, K014, K015, \
|
||||
K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K115, \
|
||||
K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K215, \
|
||||
K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K315, \
|
||||
K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K415, \
|
||||
K500, K501, K505, K509, K511, K512, K515 \
|
||||
) \
|
||||
{ \
|
||||
{ K000, ____, K002, K003, K004, K005, K006, K007, K008, K009, ____, K011, K012, K013, K014, K015}, \
|
||||
{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, ____, K115}, \
|
||||
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, ____, K215}, \
|
||||
{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, ____, ____, K315}, \
|
||||
{ K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, ____, ____, K415}, \
|
||||
{ K500, K501, ____, ____, ____, K505, ____, ____, ____, K509, ____, K511, K512, ____, ____, K515}, \
|
||||
}
|
||||
|
||||
#define LAYOUT_split_bs( \
|
||||
K000, K002, K003, K004, K005, K006, K007, K008, K009, K011, K012, K013, K014, K015, \
|
||||
K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, \
|
||||
K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K215, \
|
||||
K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K315, \
|
||||
K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K415, \
|
||||
K500, K501, K505, K509, K511, K512, K515 \
|
||||
) \
|
||||
{ \
|
||||
{ K000, ____, K002, K003, K004, K005, K006, K007, K008, K009, ____, K011, K012, K013, K014, K015}, \
|
||||
{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115}, \
|
||||
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, ____, K215}, \
|
||||
{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, ____, ____, K315}, \
|
||||
{ K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, ____, ____, K415}, \
|
||||
{ K500, K501, ____, ____, ____, K505, ____, ____, ____, K509, ____, K511, K512, ____, ____, K515}, \
|
||||
}
|
||||
54
keyboards/retro_75/rules.mk
Normal file
54
keyboards/retro_75/rules.mk
Normal file
@@ -0,0 +1,54 @@
|
||||
## chip/board settings
|
||||
# the next two should match the directories in
|
||||
# <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
|
||||
MCU_FAMILY = STM32
|
||||
MCU_SERIES = STM32F0xx
|
||||
# linker script to use
|
||||
# it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/
|
||||
# or <this_dir>/ld/
|
||||
MCU_LDSCRIPT = STM32F072xB
|
||||
# startup code to use
|
||||
# is should exist in <chibios>/os/common/ports/ARMCMx/compilers/GCC/mk/
|
||||
MCU_STARTUP = stm32f0xx
|
||||
# it should exist either in <chibios>/os/hal/boards/
|
||||
# or <this_dir>/boards
|
||||
BOARD = ST_STM32F072B_DISCOVERY
|
||||
# Cortex version
|
||||
# Teensy LC is cortex-m0; Teensy 3.x are cortex-m4
|
||||
MCU = cortex-m0
|
||||
# ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
|
||||
ARMV = 6
|
||||
# If you want to be able to jump to bootloader from firmware on STM32 MCUs,
|
||||
# set the correct BOOTLOADER_ADDRESS. Either set it here, or define it in
|
||||
# ./bootloader_defs.h or in ./boards/<FOO>/bootloader_defs.h (if you have
|
||||
# a custom board definition that you plan to reuse).
|
||||
# If you're not setting it here, leave it commented out.
|
||||
# It is chip dependent, the correct number can be looked up here (page 175):
|
||||
# http://www.st.com/web/en/resource/technical/document/application_note/CD00167594.pdf
|
||||
# This also requires a patch to chibios:
|
||||
# <tmk_dir>/tmk_core/tool/chibios/ch-bootloader-jump.patch
|
||||
#STM32_BOOTLOADER_ADDRESS = 0x1FFFC800
|
||||
|
||||
# Options to pass to dfu-util when flashing
|
||||
DFU_ARGS = -d 0483:df11 -a 0 -s 0x08000000:leave
|
||||
DFU_SUFFIX_ARGS = -p df11 -v 0483
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
CONSOLE_ENABLE = no # Console for debug
|
||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
NKRO_ENABLE = no # USB Nkey Rollover
|
||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
|
||||
MIDI_ENABLE = no # MIDI support
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
AUDIO_ENABLE = no # Audio output on port C6
|
||||
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||
HD44780_ENABLE = no # Enable support for HD44780 based LCDs
|
||||
250
keyboards/ua62/config.h
Normal file
250
keyboards/ua62/config.h
Normal file
@@ -0,0 +1,250 @@
|
||||
/*
|
||||
Copyright 2019 NaCly
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "config_common.h"
|
||||
|
||||
/* USB Device descriptor parameter */
|
||||
#define VENDOR_ID 0xBEEF
|
||||
#define PRODUCT_ID 0xFFFF
|
||||
#define DEVICE_VER 0x0001
|
||||
#define MANUFACTURER NaCly
|
||||
#define PRODUCT UA62
|
||||
#define DESCRIPTION A Keyboard Used for Input.
|
||||
|
||||
/* key matrix size */
|
||||
#define MATRIX_ROWS 5
|
||||
#define MATRIX_COLS 13
|
||||
|
||||
/*
|
||||
* Keyboard Matrix Assignments
|
||||
*
|
||||
* Change this to how you wired your keyboard
|
||||
* COLS: AVR pins used for columns, left to right
|
||||
* ROWS: AVR pins used for rows, top to bottom
|
||||
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
|
||||
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
|
||||
*
|
||||
*/
|
||||
#define MATRIX_ROW_PINS { D3, D2, D1, D0, D4 }
|
||||
#define MATRIX_COL_PINS { C6, D7, E6, B4, B5, B6, B2, B3, B1, F7, F6, F5, F4 }
|
||||
#define UNUSED_PINS
|
||||
|
||||
/* COL2ROW, ROW2COL*/
|
||||
#define DIODE_DIRECTION ROW2COL
|
||||
|
||||
/*
|
||||
* Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
|
||||
*/
|
||||
//#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
|
||||
|
||||
// #define BACKLIGHT_PIN B7
|
||||
// #define BACKLIGHT_BREATHING
|
||||
// #define BACKLIGHT_LEVELS 3
|
||||
|
||||
// #define RGB_DI_PIN E2
|
||||
// #ifdef RGB_DI_PIN
|
||||
// #define RGBLED_NUM 16
|
||||
// #define RGBLIGHT_HUE_STEP 8
|
||||
// #define RGBLIGHT_SAT_STEP 8
|
||||
// #define RGBLIGHT_VAL_STEP 8
|
||||
// #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
|
||||
// #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
|
||||
// /*== all animations enable ==*/
|
||||
// #define RGBLIGHT_ANIMATIONS
|
||||
// /*== or choose animations ==*/
|
||||
// #define RGBLIGHT_EFFECT_BREATHING
|
||||
// #define RGBLIGHT_EFFECT_RAINBOW_MOOD
|
||||
// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
|
||||
// #define RGBLIGHT_EFFECT_SNAKE
|
||||
// #define RGBLIGHT_EFFECT_KNIGHT
|
||||
// #define RGBLIGHT_EFFECT_CHRISTMAS
|
||||
// #define RGBLIGHT_EFFECT_STATIC_GRADIENT
|
||||
// #define RGBLIGHT_EFFECT_RGB_TEST
|
||||
// #define RGBLIGHT_EFFECT_ALTERNATING
|
||||
// /*== customize breathing effect ==*/
|
||||
// /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
|
||||
// #define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
|
||||
// /*==== use exp() and sin() ====*/
|
||||
// #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
|
||||
// #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
|
||||
// #endif
|
||||
|
||||
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||
#define DEBOUNCE 5
|
||||
|
||||
/* define if matrix has ghost (lacks anti-ghosting diodes) */
|
||||
//#define MATRIX_HAS_GHOST
|
||||
|
||||
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||
#define LOCKING_SUPPORT_ENABLE
|
||||
/* Locking resynchronize hack */
|
||||
#define LOCKING_RESYNC_ENABLE
|
||||
|
||||
#define TAPPING_TERM 200
|
||||
/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
|
||||
* This is userful for the Windows task manager shortcut (ctrl+shift+esc).
|
||||
*/
|
||||
// #define GRAVE_ESC_CTRL_OVERRIDE
|
||||
|
||||
/*
|
||||
* Force NKRO
|
||||
*
|
||||
* Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
|
||||
* state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
|
||||
* makefile for this to work.)
|
||||
*
|
||||
* If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
|
||||
* until the next keyboard reset.
|
||||
*
|
||||
* NKRO may prevent your keystrokes from being detected in the BIOS, but it is
|
||||
* fully operational during normal computer usage.
|
||||
*
|
||||
* For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
|
||||
* or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
|
||||
* bootmagic, NKRO mode will always be enabled until it is toggled again during a
|
||||
* power-up.
|
||||
*
|
||||
*/
|
||||
//#define FORCE_NKRO
|
||||
|
||||
/*
|
||||
* Magic Key Options
|
||||
*
|
||||
* Magic keys are hotkey commands that allow control over firmware functions of
|
||||
* the keyboard. They are best used in combination with the HID Listen program,
|
||||
* found here: https://www.pjrc.com/teensy/hid_listen.html
|
||||
*
|
||||
* The options below allow the magic key functionality to be changed. This is
|
||||
* useful if your keyboard/keypad is missing keys and you want magic key support.
|
||||
*
|
||||
*/
|
||||
|
||||
/* key combination for magic key command */
|
||||
/* defined by default; to change, uncomment and set to the combination you want */
|
||||
// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT)
|
||||
|
||||
/* control how magic key switches layers */
|
||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
|
||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
|
||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
|
||||
|
||||
/* override magic key keymap */
|
||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
|
||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
|
||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
|
||||
//#define MAGIC_KEY_HELP H
|
||||
//#define MAGIC_KEY_HELP_ALT SLASH
|
||||
//#define MAGIC_KEY_DEBUG D
|
||||
//#define MAGIC_KEY_DEBUG_MATRIX X
|
||||
//#define MAGIC_KEY_DEBUG_KBD K
|
||||
//#define MAGIC_KEY_DEBUG_MOUSE M
|
||||
//#define MAGIC_KEY_VERSION V
|
||||
//#define MAGIC_KEY_STATUS S
|
||||
//#define MAGIC_KEY_CONSOLE C
|
||||
//#define MAGIC_KEY_LAYER0 0
|
||||
//#define MAGIC_KEY_LAYER0_ALT GRAVE
|
||||
//#define MAGIC_KEY_LAYER1 1
|
||||
//#define MAGIC_KEY_LAYER2 2
|
||||
//#define MAGIC_KEY_LAYER3 3
|
||||
//#define MAGIC_KEY_LAYER4 4
|
||||
//#define MAGIC_KEY_LAYER5 5
|
||||
//#define MAGIC_KEY_LAYER6 6
|
||||
//#define MAGIC_KEY_LAYER7 7
|
||||
//#define MAGIC_KEY_LAYER8 8
|
||||
//#define MAGIC_KEY_LAYER9 9
|
||||
//#define MAGIC_KEY_BOOTLOADER B
|
||||
//#define MAGIC_KEY_BOOTLOADER_ALT ESC
|
||||
//#define MAGIC_KEY_LOCK CAPS
|
||||
//#define MAGIC_KEY_EEPROM E
|
||||
//#define MAGIC_KEY_EEPROM_CLEAR BSPACE
|
||||
//#define MAGIC_KEY_NKRO N
|
||||
//#define MAGIC_KEY_SLEEP_LED Z
|
||||
|
||||
/*
|
||||
* Feature disable options
|
||||
* These options are also useful to firmware size reduction.
|
||||
*/
|
||||
|
||||
/* disable debug print */
|
||||
//#define NO_DEBUG
|
||||
|
||||
/* disable print */
|
||||
//#define NO_PRINT
|
||||
|
||||
/* disable action features */
|
||||
//#define NO_ACTION_LAYER
|
||||
//#define NO_ACTION_TAPPING
|
||||
//#define NO_ACTION_ONESHOT
|
||||
//#define NO_ACTION_MACRO
|
||||
//#define NO_ACTION_FUNCTION
|
||||
|
||||
/*
|
||||
* MIDI options
|
||||
*/
|
||||
|
||||
/* Prevent use of disabled MIDI features in the keymap */
|
||||
//#define MIDI_ENABLE_STRICT 1
|
||||
|
||||
/* enable basic MIDI features:
|
||||
- MIDI notes can be sent when in Music mode is on
|
||||
*/
|
||||
//#define MIDI_BASIC
|
||||
|
||||
/* enable advanced MIDI features:
|
||||
- MIDI notes can be added to the keymap
|
||||
- Octave shift and transpose
|
||||
- Virtual sustain, portamento, and modulation wheel
|
||||
- etc.
|
||||
*/
|
||||
//#define MIDI_ADVANCED
|
||||
|
||||
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
|
||||
//#define MIDI_TONE_KEYCODE_OCTAVES 1
|
||||
|
||||
/*
|
||||
* HD44780 LCD Display Configuration
|
||||
*/
|
||||
/*
|
||||
#define LCD_LINES 2 //< number of visible lines of the display
|
||||
#define LCD_DISP_LENGTH 16 //< visibles characters per line of the display
|
||||
|
||||
#define LCD_IO_MODE 1 //< 0: memory mapped mode, 1: IO port mode
|
||||
|
||||
#if LCD_IO_MODE
|
||||
#define LCD_PORT PORTB //< port for the LCD lines
|
||||
#define LCD_DATA0_PORT LCD_PORT //< port for 4bit data bit 0
|
||||
#define LCD_DATA1_PORT LCD_PORT //< port for 4bit data bit 1
|
||||
#define LCD_DATA2_PORT LCD_PORT //< port for 4bit data bit 2
|
||||
#define LCD_DATA3_PORT LCD_PORT //< port for 4bit data bit 3
|
||||
#define LCD_DATA0_PIN 4 //< pin for 4bit data bit 0
|
||||
#define LCD_DATA1_PIN 5 //< pin for 4bit data bit 1
|
||||
#define LCD_DATA2_PIN 6 //< pin for 4bit data bit 2
|
||||
#define LCD_DATA3_PIN 7 //< pin for 4bit data bit 3
|
||||
#define LCD_RS_PORT LCD_PORT //< port for RS line
|
||||
#define LCD_RS_PIN 3 //< pin for RS line
|
||||
#define LCD_RW_PORT LCD_PORT //< port for RW line
|
||||
#define LCD_RW_PIN 2 //< pin for RW line
|
||||
#define LCD_E_PORT LCD_PORT //< port for Enable line
|
||||
#define LCD_E_PIN 1 //< pin for Enable line
|
||||
#endif
|
||||
*/
|
||||
|
||||
/* Bootmagic Lite key configuration */
|
||||
// #define BOOTMAGIC_LITE_ROW 0
|
||||
// #define BOOTMAGIC_LITE_COLUMN 0
|
||||
12
keyboards/ua62/info.json
Normal file
12
keyboards/ua62/info.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"keyboard_name": "ua62",
|
||||
"url": "",
|
||||
"maintainer": "qmk",
|
||||
"width": 15,
|
||||
"height": 5.7,
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [{"x":0, "y":0.6}, {"x":1, "y":0.6}, {"x":2, "y":0.35}, {"x":3, "y":0}, {"x":4, "y":0.35}, {"x":5, "y":0.7}, {"x":9, "y":0.7}, {"x":10, "y":0.35}, {"x":11, "y":0}, {"x":12, "y":0.35}, {"x":13, "y":0.6}, {"x":14, "y":0.6}, {"x":0, "y":1.6}, {"x":1, "y":1.6}, {"x":2, "y":1.35}, {"x":3, "y":1}, {"x":4, "y":1.35}, {"x":5, "y":1.7}, {"x":9, "y":1.7}, {"x":10, "y":1.35}, {"x":11, "y":1}, {"x":12, "y":1.35}, {"x":13, "y":1.6}, {"x":14, "y":1.6}, {"x":0, "y":2.6}, {"x":1, "y":2.6}, {"x":2, "y":2.35}, {"x":3, "y":2}, {"x":4, "y":2.35}, {"x":5, "y":2.7}, {"x":9, "y":2.7}, {"x":10, "y":2.35}, {"x":11, "y":2}, {"x":12, "y":2.35}, {"x":13, "y":2.6}, {"x":14, "y":2.6}, {"x":0, "y":3.6}, {"x":1, "y":3.6}, {"x":2, "y":3.35}, {"x":3, "y":3}, {"x":4, "y":3.35}, {"x":5, "y":3.7}, {"x":9, "y":3.7}, {"x":10, "y":3.35}, {"x":11, "y":3}, {"x":12, "y":3.35}, {"x":13, "y":3.6}, {"x":14, "y":3.6}, {"x":0, "y":4.6}, {"x":1, "y":4.6}, {"x":2, "y":4.35}, {"x":3, "y":4}, {"x":4, "y":4.35}, {"x":5, "y":4.7}, {"x":6, "y":3.95, "h":1.5}, {"x":8, "y":3.95, "h":1.5}, {"x":9, "y":4.7}, {"x":10, "y":4.35}, {"x":11, "y":4}, {"x":12, "y":4.35}, {"x":13, "y":4.6}, {"x":14, "y":4.6}]
|
||||
}
|
||||
}
|
||||
}
|
||||
43
keyboards/ua62/keymaps/default/keymap.c
Normal file
43
keyboards/ua62/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,43 @@
|
||||
/* Copyright 2019 NaCly
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT(
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
|
||||
KC_LCTRL, KC_A, KC_S, KC_D, LT(1, KC_F), KC_G, KC_H, LT(2, KC_J), KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
||||
KC_LCTRL, KC_LGUI, KC_LALT, KC_GRV, KC_EQL, KC_BSPC, KC_DEL, KC_ENT, KC_SPC, KC_LBRC, KC_RBRC, KC_HOME, KC_END, KC_ESC
|
||||
),
|
||||
//Holding F
|
||||
[1] = LAYOUT(
|
||||
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_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
KC_LCTRL, KC_NO, KC_NO, KC_NO, _______, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO,
|
||||
KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_RSFT,
|
||||
KC_LCTRL, KC_LGUI, KC_LALT, KC_NO, KC_NO, KC_NO, KC_NO, KC_HOME, KC_END, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
|
||||
),
|
||||
//Holding J
|
||||
[2] = LAYOUT(
|
||||
KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
KC_NO, KC_MPRV, KC_MPLY, KC_MNXT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, _______, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
KC_LCTRL, KC_LGUI, KC_LALT, KC_NO, KC_NO, KC_NO, KC_NO, KC_ENT, KC_SPC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
|
||||
)
|
||||
};
|
||||
|
||||
14
keyboards/ua62/readme.md
Normal file
14
keyboards/ua62/readme.md
Normal file
@@ -0,0 +1,14 @@
|
||||
# UA62
|
||||
|
||||
* A Universal pcb for the atreus62
|
||||
* atreus62 by profet23
|
||||
* Original atreus by Phil Hagelberg
|
||||
* Keyboard Maintainer: [NaCly](https://github.com/na-cly)
|
||||
* Hardware Supported: UA62 PCB
|
||||
* Hardware Availability: https://github.com/na-cly/UA62 (Order PCBS)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make ua62:default
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
32
keyboards/ua62/rules.mk
Normal file
32
keyboards/ua62/rules.mk
Normal file
@@ -0,0 +1,32 @@
|
||||
# MCU name
|
||||
MCU = atmega32u4
|
||||
|
||||
# Bootloader selection
|
||||
# Teensy halfkay
|
||||
# Pro Micro caterina
|
||||
# Atmel DFU atmel-dfu
|
||||
# LUFA DFU lufa-dfu
|
||||
# QMK DFU qmk-dfu
|
||||
# ATmega32A bootloadHID
|
||||
# ATmega328P USBasp
|
||||
BOOTLOADER = caterina
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
CONSOLE_ENABLE = yes # Console for debug
|
||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
NKRO_ENABLE = no # USB Nkey Rollover
|
||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||
MIDI_ENABLE = no # MIDI support
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
AUDIO_ENABLE = no # Audio output on port C6
|
||||
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||
HD44780_ENABLE = no # Enable support for HD44780 based LCDs
|
||||
17
keyboards/ua62/ua62.c
Normal file
17
keyboards/ua62/ua62.c
Normal file
@@ -0,0 +1,17 @@
|
||||
/* Copyright 2019 NaCly
|
||||
*
|
||||
* 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 "ua62.h"
|
||||
|
||||
41
keyboards/ua62/ua62.h
Normal file
41
keyboards/ua62/ua62.h
Normal file
@@ -0,0 +1,41 @@
|
||||
/* Copyright 2019 NaCly
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
/* This a shortcut to help you visually see your layout.
|
||||
*
|
||||
* The first section contains all of the arguments representing the physical
|
||||
* layout of the board and position of the keys.
|
||||
*
|
||||
* The second converts the arguments into a two-dimensional array which
|
||||
* represents the switch matrix.
|
||||
*/
|
||||
#define LAYOUT( \
|
||||
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
|
||||
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
|
||||
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
|
||||
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, \
|
||||
k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d \
|
||||
) \
|
||||
{ \
|
||||
{ k00, k01, k02, k03, k04, k05, KC_NO, k06, k07, k08, k09, k0a, k0b }, \
|
||||
{ k10, k11, k12, k13, k14, k15, KC_NO, k16, k17, k18, k19, k1a, k1b }, \
|
||||
{ k20, k21, k22, k23, k24, k25, KC_NO, k26, k27, k28, k29, k2a, k2b }, \
|
||||
{ k30, k31, k32, k33, k34, k35, k47, k36, k37, k38, k39, k3a, k3b }, \
|
||||
{ k40, k41, k42, k43, k44, k45, k46, k48, k49, k4a, k4b, k4c, k4d }, \
|
||||
}
|
||||
49
layouts/community/ergodox/issmirnov/README.md
Normal file
49
layouts/community/ergodox/issmirnov/README.md
Normal file
@@ -0,0 +1,49 @@
|
||||
# Ivan's Ergodox Config
|
||||
|
||||
|
||||
## Details about the layout
|
||||
|
||||
- Shift and Cmd are One Shot Modifiers, so tapping them once will apply them to the next key. When tapped twice they will lock, until tapped again to clear.
|
||||
- When switching to other layers, any stuck modifiers are cleared in order to avoid unintended key combos
|
||||
- There are a few leader key combinations. Right now, `KC_LEAD` + `s` will open my wiki homepage.
|
||||
- All transparent keys have been replaced with noops to avoid layer bleeding.
|
||||
|
||||
## Initial Setup
|
||||
|
||||
### QMK
|
||||
|
||||
```
|
||||
brew tap osx-cross/avr
|
||||
brew tap PX4/homebrew-px4
|
||||
brew update
|
||||
brew install avr-gcc
|
||||
brew install dfu-programmer
|
||||
brew install gcc-arm-none-eabi
|
||||
brew install avrdude
|
||||
|
||||
git clone https://github.com/qmk/qmk_firmware.git
|
||||
git clone https://github.com/issmirnov/ergodox-layout.git \
|
||||
layouts/community/ergodox/ismirnov
|
||||
```
|
||||
|
||||
### Teensy utils
|
||||
|
||||
Download and add both of these to $PATH
|
||||
|
||||
- [hid_listen](https://www.pjrc.com/teensy/hid_listen.html)
|
||||
- [teensy loader cli](https://www.pjrc.com/teensy/loader_cli.html)
|
||||
|
||||
## Flashing
|
||||
|
||||
```
|
||||
make ergodox_ez:ismirnov
|
||||
teensy_loader_cli -mmcu=atmega32u4 -w -v ergodox_ez_ismirnov.hex
|
||||
|
||||
# or just
|
||||
make ergodox_ez:ismirnov:flash
|
||||
```
|
||||
|
||||
## Gotchas
|
||||
|
||||
- If you get error: `dyld: Library not loaded: /usr/local/opt/isl/lib/libisl.15.dylib` then do `brew reinstall avr-gcc`
|
||||
- If `hid_listen` just prints out a ton of dots, update makefile with `CONSOLE_ENABLE = yes`
|
||||
95
layouts/community/ergodox/issmirnov/asci-keymap.txt
Normal file
95
layouts/community/ergodox/issmirnov/asci-keymap.txt
Normal file
@@ -0,0 +1,95 @@
|
||||
Qwerty
|
||||
,--------------------------------------------. ,--------------------------------------------.
|
||||
| Escape | 1 | 2 | 3 | 4 | 5 | ! | | = | 6 | 7 | 8 | 9 | 0 | Escape |
|
||||
|--------+-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----+--------|
|
||||
|Lctl(Spa| Q | W | E | R | T | * | | + | Y | U | I | O | P |Lgui(Spa|
|
||||
|--------+-----+-----+-----+-----+-----| | | |-----+-----+-----+-----+-----+--------|
|
||||
| Tab | A | S | D | F | G |-----| |-----| H | J | K | L |TapTo|Mo(Navi)|
|
||||
|--------+-----+-----+-----+-----+-----| / | | - |-----+-----+-----+-----+-----+--------|
|
||||
|Osm(ModL| Z | X | C | V | B | | | | N | M | . |Comma|Tg(Nu| ' |
|
||||
`--------+-----+-----+-----+-----+-----------' `-----------+-----+-----+-----+-----+--------'
|
||||
|Ctrl |Lsft(|Lsft(| Alt | Mod | |Escap| : | % | |Lgui(|
|
||||
`-----------------------------' ,-----------. ,-----------. `-----------------------------'
|
||||
| | | | ← | → |
|
||||
,-----|-----|-----| |-----+-----+-----.
|
||||
| | | | | ↑ | | |
|
||||
| ⎵ | ⌫ |-----| |-----| Tab |Enter|
|
||||
| | | Del | | ↓ | | |
|
||||
`-----------------' `-----------------'
|
||||
|
||||
Symb
|
||||
,--------------------------------------------. ,--------------------------------------------.
|
||||
| Escape | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | |
|
||||
|--------+-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----+--------|
|
||||
| | - | @ | { | } | ` | * | | + | * | ! | | | % | + |Mo(Navi)|
|
||||
|--------+-----+-----+-----+-----+-----| | | |-----+-----+-----+-----+-----+--------|
|
||||
| Tab | ^ | _ | ( | ) | $ |-----| |-----| # | = | : | ; |TapTo| Dquo |
|
||||
|--------+-----+-----+-----+-----+-----| / | | - |-----+-----+-----+-----+-----+--------|
|
||||
| Lshift | < | > | [ | ] | ~ | | | | & | ? | / | \ |Tg(Nu| ' |
|
||||
`--------+-----+-----+-----+-----+-----------' `-----------+-----+-----+-----+-----+--------'
|
||||
|Ctrl |Lsft(|Lsft(| Alt |WkspL| |Escap| : | % | | |
|
||||
`-----------------------------' ,-----------. ,-----------. `-----------------------------'
|
||||
| | | | ← | → |
|
||||
,-----|-----|-----| |-----+-----+-----.
|
||||
| | | | | ↑ | | |
|
||||
|WkspR| ⌫ |-----| |-----| Tab |Enter|
|
||||
| | | Del | | ↓ | | |
|
||||
`-----------------' `-----------------'
|
||||
|
||||
Nump
|
||||
,--------------------------------------------. ,--------------------------------------------.
|
||||
| | | | | | | | | = | | | | | | Reset |
|
||||
|--------+-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----+--------|
|
||||
| | No | No |Lgui(| | | * | | + | , | 7 | 8 | 9 | | |
|
||||
|--------+-----+-----+-----+-----+-----| | | |-----+-----+-----+-----+-----+--------|
|
||||
| Tab | |Lgui(|Lgui(|Lgui(| |-----| |-----| 0 | 4 | 5 | 6 |To(Sy| |
|
||||
|--------+-----+-----+-----+-----+-----| / | | - |-----+-----+-----+-----+-----+--------|
|
||||
| | | | |Audio|Audio| | | | . | 1 | 2 | 3 |To(Qw| |
|
||||
`--------+-----+-----+-----+-----+-----------' `-----------+-----+-----+-----+-----+--------'
|
||||
|To(0)| | | | | | 0 | | |To(3)| |
|
||||
`-----------------------------' ,-----------. ,-----------. `-----------------------------'
|
||||
| | | | ← | → |
|
||||
,-----|-----|-----| |-----+-----+-----.
|
||||
| | | | | ↑ | | |
|
||||
| ⎵ | ⌫ |-----| |-----| Alt |Shift|
|
||||
| | | Del | | ↓ | | |
|
||||
`-----------------' `-----------------'
|
||||
|
||||
Overwatch
|
||||
,--------------------------------------------. ,--------------------------------------------.
|
||||
| Escape | 1 | 2 | 3 | 4 | 5 |To(0)| | | | | | | | |
|
||||
|--------+-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----+--------|
|
||||
| Tab | Q | W | E | R | T | | | | | | | | | |
|
||||
|--------+-----+-----+-----+-----+-----| | | |-----+-----+-----+-----+-----+--------|
|
||||
| Ctrl | A | S | D | F | P |-----| |-----| | | | | | |
|
||||
|--------+-----+-----+-----+-----+-----| | | |-----+-----+-----+-----+-----+--------|
|
||||
| Lshift | Z | X | C | V |Grave| | | | | | | | | |
|
||||
`--------+-----+-----+-----+-----+-----------' `-----------+-----+-----+-----+-----+--------'
|
||||
|Ctrl | F9 |Pscre| H | R | | | | | | |
|
||||
`-----------------------------' ,-----------. ,-----------. `-----------------------------'
|
||||
| | | | | |
|
||||
,-----|-----|-----| |-----+-----+-----.
|
||||
| | | | | | | |
|
||||
| ⎵ | |-----| |-----| | |
|
||||
| | | | | | | |
|
||||
`-----------------' `-----------------'
|
||||
|
||||
Navi
|
||||
,--------------------------------------------. ,--------------------------------------------.
|
||||
| Escape | 1 | 2 | 3 | 4 | 5 | 6 | | | | | | | | |
|
||||
|--------+-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----+--------|
|
||||
| | | | ↑ | | | | | | | | | | | |
|
||||
|--------+-----+-----+-----+-----+-----| | | |-----+-----+-----+-----+-----+--------|
|
||||
| | | ← | ↓ | → | |-----| |-----| |Ctrl | | | | |
|
||||
|--------+-----+-----+-----+-----+-----| | | |-----+-----+-----+-----+-----+--------|
|
||||
| | | | | | | | | | | | | | | |
|
||||
`--------+-----+-----+-----+-----+-----------' `-----------+-----+-----+-----+-----+--------'
|
||||
| | | | |WkspL| | ⌘⇧ | | | | |
|
||||
`-----------------------------' ,-----------. ,-----------. `-----------------------------'
|
||||
| | | | | |
|
||||
,-----|-----|-----| |-----+-----+-----.
|
||||
| | | | | | | |
|
||||
|WkspR| |-----| |-----| | Mod |
|
||||
| | | | | | | |
|
||||
`-----------------' `-----------------'
|
||||
|
||||
2
layouts/community/ergodox/issmirnov/build.sh
Executable file
2
layouts/community/ergodox/issmirnov/build.sh
Executable file
@@ -0,0 +1,2 @@
|
||||
#!/bin/bash
|
||||
make ergodox_ez:issmirnov
|
||||
3
layouts/community/ergodox/issmirnov/config.h
Normal file
3
layouts/community/ergodox/issmirnov/config.h
Normal file
@@ -0,0 +1,3 @@
|
||||
// Reference: https://beta.docs.qmk.fm/reference/config-options
|
||||
// and https://github.com/qmk/qmk_firmware/blob/master/docs/config_options.md
|
||||
#include QMK_KEYBOARD_CONFIG_H
|
||||
250
layouts/community/ergodox/issmirnov/keymap.c
Normal file
250
layouts/community/ergodox/issmirnov/keymap.c
Normal file
@@ -0,0 +1,250 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
// Custom user includes
|
||||
#include "issmirnov.h"
|
||||
#include "tap_tog.h"
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_QWERTY] = LAYOUT_ergodox_wrapper(
|
||||
KC_ESCAPE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_EXLM,
|
||||
LCTL(KC_SPACE), _________________QWERTY_L1_________________, KC_ASTR,
|
||||
KC_TAB, _________________QWERTY_L2_________________,
|
||||
OSM(MOD_LSFT), _________________QWERTY_L3_________________, KC_SLASH,
|
||||
KC_LCTL, LSFT(KC_LGUI), LSFT(KC_LALT), KC_LALT, KC_LGUI,
|
||||
XXXXXXX, XXXXXXX,
|
||||
XXXXXXX,
|
||||
KC_SPACE, KC_BSPACE, KC_DEL,
|
||||
|
||||
KC_EQL , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_ESCAPE ,
|
||||
KC_PLUS , _________________QWERTY_R1_________________ , LGUI(KC_SPACE) ,
|
||||
_________________QWERTY_R2_________________ , MO(_NAVI) ,
|
||||
KC_MINS , _________________QWERTY_R3_________________ , KC_QUOTE ,
|
||||
KC_ESCAPE , KC_COLN , KC_PERC , XXXXXXX , LGUI(KC_L) ,
|
||||
|
||||
KC_LEFT, KC_RGHT,
|
||||
KC_UP,
|
||||
KC_DOWN, KC_TAB, KC_ENTER
|
||||
),
|
||||
|
||||
// layer 1
|
||||
[_SYMB] = LAYOUT_ergodox_wrapper(
|
||||
KC_ESCAPE , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 ,
|
||||
XXXXXXX , _________________SYMB_L1___________________ ,KC_ASTR ,
|
||||
KC_TAB , _________________SYMB_L2___________________,
|
||||
KC_LSHIFT , _________________SYMB_L3___________________, KC_SLASH ,
|
||||
KC_LCTL , LSFT(KC_LGUI) , LSFT(KC_LALT) , KC_LALT , WKSP_LEFT ,
|
||||
|
||||
XXXXXXX, XXXXXXX,
|
||||
XXXXXXX,
|
||||
WKSP_RIGHT, KC_BSPACE, KC_DEL,
|
||||
|
||||
KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , XXXXXXX ,
|
||||
KC_PLUS , _________________SYMB_R1___________________ , MO(_NAVI) ,
|
||||
_________________SYMB_R2___________________ , KC_DQUO ,
|
||||
KC_MINS , _________________SYMB_R3___________________ , KC_QUOTE ,
|
||||
KC_ESCAPE , KC_COLN , KC_PERC , XXXXXXX , XXXXXXX ,
|
||||
|
||||
KC_LEFT, KC_RGHT,
|
||||
KC_UP,
|
||||
KC_DOWN, KC_TAB, KC_ENTER
|
||||
),
|
||||
|
||||
// layer 2
|
||||
[_NUMP] = LAYOUT_ergodox_wrapper(
|
||||
XXXXXXX , ___________________XXXXX___________________, XXXXXXX ,
|
||||
XXXXXXX , _________________NUMP_L1___________________ , KC_ASTR ,
|
||||
KC_TAB , _________________NUMP_L2___________________ ,
|
||||
XXXXXXX , _________________NUMP_L3___________________ , KC_SLASH ,
|
||||
TO(0) , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
|
||||
XXXXXXX , XXXXXXX ,
|
||||
XXXXXXX ,
|
||||
KC_SPACE , KC_BSPACE , KC_DEL ,
|
||||
|
||||
KC_EQL , ___________________XXXXX___________________ , RESET ,
|
||||
KC_PLUS , _________________NUMP_R1___________________ , XXXXXXX ,
|
||||
_________________NUMP_R2___________________ , XXXXXXX ,
|
||||
KC_MINS , _________________NUMP_R3___________________ , XXXXXXX ,
|
||||
KC_0 , XXXXXXX , XXXXXXX , TO(3) , XXXXXXX ,
|
||||
|
||||
KC_LEFT, KC_RGHT,
|
||||
KC_UP,
|
||||
KC_DOWN, KC_LALT, KC_LSFT
|
||||
),
|
||||
|
||||
// layer 3
|
||||
[_OVERWATCH] = LAYOUT_ergodox_wrapper(
|
||||
KC_ESCAPE, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , TO(0) ,
|
||||
______________OVERWATCH_L1_________________ , XXXXXXX ,
|
||||
______________OVERWATCH_L2_________________ ,
|
||||
______________OVERWATCH_L3_________________ , XXXXXXX ,
|
||||
______________OVERWATCH_L4_________________ ,
|
||||
|
||||
XXXXXXX , XXXXXXX ,
|
||||
XXXXXXX ,
|
||||
KC_SPACE , XXXXXXX , XXXXXXX ,
|
||||
|
||||
|
||||
_______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______,
|
||||
|
||||
_______, _______,
|
||||
_______,
|
||||
_______, _______, _______
|
||||
|
||||
),
|
||||
// layer 4
|
||||
[_NAVI] = LAYOUT_ergodox_wrapper(
|
||||
KC_ESCAPE, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 ,
|
||||
XXXXXXX, _________________NAVI_L1___________________ , XXXXXXX ,
|
||||
XXXXXXX, _________________NAVI_L2___________________ ,
|
||||
XXXXXXX, _________________NAVI_L3___________________ , XXXXXXX ,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, WKSP_LEFT,
|
||||
|
||||
XXXXXXX , XXXXXXX ,
|
||||
XXXXXXX ,
|
||||
WKSP_RIGHT , XXXXXXX , XXXXXXX ,
|
||||
|
||||
|
||||
_______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _________________NAVI_R1___________________, _______,
|
||||
_________________NAVI_R2___________________, _______,
|
||||
_______, _________________NAVI_R3___________________, _______,
|
||||
MODSFT, _______, _______, _______, _______,
|
||||
|
||||
_______, _______,
|
||||
_______,
|
||||
_______, _______, KC_LGUI
|
||||
|
||||
),
|
||||
};
|
||||
|
||||
|
||||
// called by QMK during key processing before the actual key event is handled. Useful for macros.
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
uint8_t layer = biton32(layer_state);
|
||||
switch (keycode) {
|
||||
case TAP_TOG_LAYER:
|
||||
process_tap_tog(_SYMB,record);
|
||||
return false;
|
||||
break;
|
||||
|
||||
case WKSP_LEFT:
|
||||
// Only if TAP_TOG_LAYER is being held right now do we want to do actions.
|
||||
if (record->event.pressed && (!tap_tog_layer_toggled_on || layer == _NAVI)) {
|
||||
tap_code16(LGUI(LSFT(KC_Z)));
|
||||
tap_tog_layer_other_key_pressed = true; // Add flag so layer resets
|
||||
}
|
||||
break;
|
||||
case WKSP_RIGHT:
|
||||
// Only if TAP_TOG_LAYER is being held right now do we want to do actions.
|
||||
if (record->event.pressed && (!tap_tog_layer_toggled_on || layer == _NAVI)) {
|
||||
tap_code16(LGUI(LSFT(KC_X)));
|
||||
tap_tog_layer_other_key_pressed = true; // Add flag so layer resets
|
||||
}
|
||||
break;
|
||||
default:
|
||||
tap_tog_count = 0; // reset counter.
|
||||
tap_tog_layer_other_key_pressed = true; // always set this to true, TAP_TOG_LAYER handlers will handle interpreting this
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// Runs constantly in the background, in a loop every 100ms or so.
|
||||
// Best used for LED status output triggered when user isn't actively typing.
|
||||
void matrix_scan_user(void) {
|
||||
uint8_t layer = biton32(layer_state);
|
||||
if (layer == 0) {
|
||||
// Set up LED indicators for stuck modifier keys.
|
||||
// https://github.com/qmk/qmk_firmware/blob/master/tmk_core/common/report.h#L118
|
||||
switch (keyboard_report->mods) {
|
||||
case MOD_BIT(KC_LSFT): // LSHIFT
|
||||
ergodox_right_led_1_set (LED_BRIGHTNESS_LO);
|
||||
ergodox_right_led_1_on ();
|
||||
ergodox_right_led_2_set (LED_BRIGHTNESS_LO);
|
||||
ergodox_right_led_2_on ();
|
||||
ergodox_right_led_3_set (LED_BRIGHTNESS_HI);
|
||||
ergodox_right_led_3_off ();
|
||||
break;
|
||||
|
||||
case MOD_BIT(KC_LGUI): // LGUI
|
||||
ergodox_right_led_1_set (LED_BRIGHTNESS_HI);
|
||||
ergodox_right_led_1_off ();
|
||||
ergodox_right_led_2_set (LED_BRIGHTNESS_LO);
|
||||
ergodox_right_led_2_on ();
|
||||
ergodox_right_led_3_set (LED_BRIGHTNESS_LO);
|
||||
ergodox_right_led_3_on ();
|
||||
break;
|
||||
|
||||
case MOD_BIT(KC_LSFT) ^ MOD_BIT(KC_LGUI):
|
||||
ergodox_right_led_1_set (70);
|
||||
ergodox_right_led_1_on ();
|
||||
ergodox_right_led_2_set (70);
|
||||
ergodox_right_led_2_on ();
|
||||
ergodox_right_led_3_set (70);
|
||||
ergodox_right_led_3_on ();
|
||||
break;
|
||||
|
||||
default: // reset leds
|
||||
ergodox_right_led_1_set (LED_BRIGHTNESS_HI);
|
||||
ergodox_right_led_1_off ();
|
||||
ergodox_right_led_2_set (LED_BRIGHTNESS_HI);
|
||||
ergodox_right_led_2_off ();
|
||||
ergodox_right_led_3_set (LED_BRIGHTNESS_HI);
|
||||
ergodox_right_led_3_off ();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// only runs when when the layer is changed, good for updating LED's and clearing sticky state
|
||||
uint32_t layer_state_set_user(uint32_t state) {
|
||||
uint8_t layer = biton32(state);
|
||||
|
||||
ergodox_board_led_off();
|
||||
ergodox_right_led_1_off();
|
||||
ergodox_right_led_2_off();
|
||||
ergodox_right_led_3_off();
|
||||
|
||||
combo_enable(); // by default, enable combos.
|
||||
switch (layer) {
|
||||
case 0:
|
||||
break;
|
||||
case 1:
|
||||
clear_mods();
|
||||
ergodox_right_led_1_on();
|
||||
break;
|
||||
case 2:
|
||||
clear_mods();
|
||||
ergodox_right_led_2_on();
|
||||
break;
|
||||
case _OVERWATCH:
|
||||
clear_mods();
|
||||
combo_disable(); // We don't want combos in overwatch
|
||||
ergodox_right_led_3_on();
|
||||
break;
|
||||
case 4:
|
||||
ergodox_right_led_1_on();
|
||||
ergodox_right_led_2_on();
|
||||
break;
|
||||
case 5:
|
||||
ergodox_right_led_1_on();
|
||||
ergodox_right_led_3_on();
|
||||
break;
|
||||
case 6:
|
||||
ergodox_right_led_2_on();
|
||||
ergodox_right_led_3_on();
|
||||
break;
|
||||
case 7:
|
||||
ergodox_right_led_1_on();
|
||||
ergodox_right_led_2_on();
|
||||
ergodox_right_led_3_on();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return state;
|
||||
};
|
||||
2
layouts/community/ergodox/issmirnov/push.sh
Executable file
2
layouts/community/ergodox/issmirnov/push.sh
Executable file
@@ -0,0 +1,2 @@
|
||||
#!/bin/bash
|
||||
make ergodox_ez:issmirnov:teensy
|
||||
17
layouts/community/ergodox/issmirnov/template.txt
Normal file
17
layouts/community/ergodox/issmirnov/template.txt
Normal file
@@ -0,0 +1,17 @@
|
||||
,--------------------------------------------. ,--------------------------------------------.
|
||||
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | | 38 | 39 | 40 | 41 | 42 | 43 | 44 |
|
||||
|--------+-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----+--------|
|
||||
| 7 | 8 | 9 | 10 | 11 | 12 | 13 | | 45 | 46 | 47 | 48 | 49 | 50 | 51 |
|
||||
|--------+-----+-----+-----+-----+-----| | | |-----+-----+-----+-----+-----+--------|
|
||||
| 14 | 15 | 16 | 17 | 18 | 19 |-----| |-----| 52 | 53 | 54 | 55 | 56 | 57 |
|
||||
|--------+-----+-----+-----+-----+-----| 26 | | 58 |-----+-----+-----+-----+-----+--------|
|
||||
| 20 | 21 | 22 | 23 | 24 | 25 | | | | 59 | 60 | 61 | 62 | 63 | 64 |
|
||||
`--------+-----+-----+-----+-----+-----------' `-----------+-----+-----+-----+-----+--------'
|
||||
| 27 | 28 | 29 | 30 | 31 | | 65 | 66 | 67 | 68 | 69 |
|
||||
`-----------------------------' ,-----------. ,-----------. `-----------------------------'
|
||||
| 32 | 33 | | 70 | 71 |
|
||||
,-----|-----|-----| |-----+-----+-----.
|
||||
| | | 34 | | 72 | | |
|
||||
| 35 | 36 |-----| |-----| 74 | 75 |
|
||||
| | | 37 | | 73 | | |
|
||||
`-----------------' `-----------------'
|
||||
@@ -112,6 +112,9 @@ static inline void setled(int i, uint8_t r, uint8_t g, uint8_t b) {
|
||||
led[i].r = r;
|
||||
led[i].g = g;
|
||||
led[i].b = b;
|
||||
# ifdef RGBW
|
||||
led[i].w = 0;
|
||||
# endif
|
||||
}
|
||||
|
||||
static void setled_all(uint8_t r, uint8_t g, uint8_t b) {
|
||||
|
||||
@@ -126,6 +126,9 @@ void setrgb(uint8_t r, uint8_t g, uint8_t b, LED_TYPE *led1) {
|
||||
(*led1).r = r;
|
||||
(*led1).g = g;
|
||||
(*led1).b = b;
|
||||
#ifdef RGBW
|
||||
(*led1).w = 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
void rgblight_check_config(void) {
|
||||
@@ -514,6 +517,9 @@ void rgblight_setrgb(uint8_t r, uint8_t g, uint8_t b) {
|
||||
led[i].r = r;
|
||||
led[i].g = g;
|
||||
led[i].b = b;
|
||||
#ifdef RGBW
|
||||
led[i].w = 0;
|
||||
#endif
|
||||
}
|
||||
rgblight_set();
|
||||
}
|
||||
@@ -526,6 +532,9 @@ void rgblight_setrgb_at(uint8_t r, uint8_t g, uint8_t b, uint8_t index) {
|
||||
led[index].r = r;
|
||||
led[index].g = g;
|
||||
led[index].b = b;
|
||||
#ifdef RGBW
|
||||
led[index].w = 0;
|
||||
#endif
|
||||
rgblight_set();
|
||||
}
|
||||
|
||||
@@ -560,6 +569,9 @@ void rgblight_setrgb_range(uint8_t r, uint8_t g, uint8_t b, uint8_t start, uint8
|
||||
led[i].r = r;
|
||||
led[i].g = g;
|
||||
led[i].b = b;
|
||||
#ifdef RGBW
|
||||
led[i].w = 0;
|
||||
#endif
|
||||
}
|
||||
rgblight_set();
|
||||
wait_ms(1);
|
||||
@@ -595,6 +607,9 @@ void rgblight_set(void) {
|
||||
led[i].r = 0;
|
||||
led[i].g = 0;
|
||||
led[i].b = 0;
|
||||
# ifdef RGBW
|
||||
led[i].w = 0;
|
||||
# endif
|
||||
}
|
||||
}
|
||||
# ifdef RGBLIGHT_LED_MAP
|
||||
@@ -606,11 +621,7 @@ void rgblight_set(void) {
|
||||
# else
|
||||
start_led = led + clipping_start_pos;
|
||||
# endif
|
||||
# ifdef RGBW
|
||||
ws2812_setleds_rgbw(start_led, num_leds);
|
||||
# else
|
||||
ws2812_setleds(start_led, num_leds);
|
||||
# endif
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -908,6 +919,9 @@ void rgblight_effect_snake(animation_status_t *anim) {
|
||||
ledp->r = 0;
|
||||
ledp->g = 0;
|
||||
ledp->b = 0;
|
||||
# ifdef RGBW
|
||||
ledp->w = 0;
|
||||
# endif
|
||||
for (j = 0; j < RGBLIGHT_EFFECT_SNAKE_LENGTH; j++) {
|
||||
k = pos + j * increment;
|
||||
if (k > RGBLED_NUM) {
|
||||
@@ -965,6 +979,9 @@ void rgblight_effect_knight(animation_status_t *anim) {
|
||||
led[i].r = 0;
|
||||
led[i].g = 0;
|
||||
led[i].b = 0;
|
||||
# ifdef RGBW
|
||||
led[i].w = 0;
|
||||
# endif
|
||||
}
|
||||
// Determine which LEDs should be lit up
|
||||
for (i = 0; i < RGBLIGHT_EFFECT_KNIGHT_LED_NUM; i++) {
|
||||
@@ -976,6 +993,9 @@ void rgblight_effect_knight(animation_status_t *anim) {
|
||||
led[cur].r = 0;
|
||||
led[cur].g = 0;
|
||||
led[cur].b = 0;
|
||||
# ifdef RGBW
|
||||
led[cur].w = 0;
|
||||
# endif
|
||||
}
|
||||
}
|
||||
rgblight_set();
|
||||
|
||||
@@ -268,7 +268,7 @@ uint8_t layer_switch_get_layer(keypos_t key) {
|
||||
/* fall back to layer 0 */
|
||||
return 0;
|
||||
#else
|
||||
return biton32(default_layer_state);
|
||||
return get_highest_layer(default_layer_state);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
#if defined(LAYER_STATE_8BIT)
|
||||
typedef uint8_t layer_state_t;
|
||||
# define get_highest_layer(state) biton8(state)
|
||||
# define get_highest_layer(state) biton(state)
|
||||
#elif defined(LAYER_STATE_16BIT)
|
||||
typedef uint16_t layer_state_t;
|
||||
# define get_highest_layer(state) biton16(state)
|
||||
|
||||
@@ -15,6 +15,13 @@
|
||||
# include "backlight.h"
|
||||
#endif
|
||||
|
||||
#if defined(RGBLIGHT_SLEEP) && defined(RGBLIGHT_ENABLE)
|
||||
# include "rgblight.h"
|
||||
extern rgblight_config_t rgblight_config;
|
||||
static bool rgblight_enabled;
|
||||
static bool is_suspended;
|
||||
#endif
|
||||
|
||||
/** \brief suspend idle
|
||||
*
|
||||
* FIXME: needs doc
|
||||
@@ -43,6 +50,16 @@ void suspend_power_down(void) {
|
||||
// TODO: figure out what to power down and how
|
||||
// shouldn't power down TPM/FTM if we want a breathing LED
|
||||
// also shouldn't power down USB
|
||||
#if defined(RGBLIGHT_SLEEP) && defined(RGBLIGHT_ENABLE)
|
||||
# ifdef RGBLIGHT_ANIMATIONS
|
||||
rgblight_timer_disable();
|
||||
# endif
|
||||
if (!is_suspended) {
|
||||
is_suspended = true;
|
||||
rgblight_enabled = rgblight_config.enable;
|
||||
rgblight_disable_noeeprom();
|
||||
}
|
||||
#endif
|
||||
|
||||
suspend_power_down_kb();
|
||||
// on AVR, this enables the watchdog for 15ms (max), and goes to
|
||||
@@ -104,5 +121,14 @@ void suspend_wakeup_init(void) {
|
||||
#ifdef BACKLIGHT_ENABLE
|
||||
backlight_init();
|
||||
#endif /* BACKLIGHT_ENABLE */
|
||||
#if defined(RGBLIGHT_SLEEP) && defined(RGBLIGHT_ENABLE)
|
||||
is_suspended = false;
|
||||
if (rgblight_enabled) {
|
||||
rgblight_enable_noeeprom();
|
||||
}
|
||||
# ifdef RGBLIGHT_ANIMATIONS
|
||||
rgblight_timer_enable();
|
||||
# endif
|
||||
#endif
|
||||
suspend_wakeup_init_kb();
|
||||
}
|
||||
|
||||
@@ -2,13 +2,13 @@
|
||||
#include <stdbool.h>
|
||||
#include "eeprom.h"
|
||||
#include "eeconfig.h"
|
||||
#include "action_layer.h"
|
||||
|
||||
#ifdef STM32_EEPROM_ENABLE
|
||||
# include "hal.h"
|
||||
# include "eeprom_stm32.h"
|
||||
#endif
|
||||
|
||||
extern uint32_t default_layer_state;
|
||||
/** \brief eeconfig enable
|
||||
*
|
||||
* FIXME: needs doc
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
#define ONESHOT_TIMEOUT 3000
|
||||
#define RETRO_TAPPING
|
||||
#define BACKLIGHT_BREATHING
|
||||
#define DYNAMIC_MACRO_NO_NESTING
|
||||
|
||||
#define MOUSEKEY_INTERVAL 20
|
||||
#define MOUSEKEY_DELAY 0
|
||||
|
||||
@@ -1,12 +1,7 @@
|
||||
#include "quantum.h"
|
||||
#include "dshields.h"
|
||||
|
||||
extern bool process_record_dynamic_macro(uint16_t keycode, keyrecord_t *record);
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
if (!process_record_dynamic_macro(keycode, record)) {
|
||||
return false;
|
||||
}
|
||||
if (keycode == KC_ESC && record->event.pressed) {
|
||||
bool rc = true;
|
||||
uint8_t mods = 0;
|
||||
|
||||
@@ -1,10 +1,5 @@
|
||||
#pragma once
|
||||
|
||||
// dynamic macro keys
|
||||
#define DM_PLAY DYN_MACRO_PLAY1
|
||||
#define DM_STRT DYN_REC_START1
|
||||
#define DM_STOP DYN_REC_STOP
|
||||
|
||||
// one-shot layer keys
|
||||
#define OSL_RSE OSL(RSE)
|
||||
#define OSL_LWR OSL(LWR)
|
||||
@@ -45,4 +40,3 @@
|
||||
#endif
|
||||
|
||||
enum layers { DEF, LWR, RSE, FUN };
|
||||
enum keycodes { DYNAMIC_MACRO_RANGE = SAFE_RANGE };
|
||||
|
||||
@@ -8,6 +8,7 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||
API_SYSEX_ENABLE = no
|
||||
SPACE_CADET_ENABLE = no
|
||||
LEADER_ENABLE = no
|
||||
DYNAMIC_MACRO_ENABLE = yes
|
||||
|
||||
LINK_TIME_OPTIMIZATION_ENABLE = yes
|
||||
|
||||
|
||||
45
users/issmirnov/config.h
Normal file
45
users/issmirnov/config.h
Normal file
@@ -0,0 +1,45 @@
|
||||
#pragma once
|
||||
|
||||
// Allows sending more than one key per scan. Useful for chords.
|
||||
#define QMK_KEYS_PER_SCAN 4
|
||||
|
||||
// how long before a tap becomes a hold
|
||||
#undef TAPPING_TERM
|
||||
#define TAPPING_TERM 100
|
||||
|
||||
// makes tap and hold keys work better for fast typers who don't want
|
||||
// tapping term set above 500
|
||||
#define PERMISSIVE_HOLD
|
||||
|
||||
// tap anyway, even after TAPPING_TERM, if there was no other key
|
||||
// interruption between press and release
|
||||
#define RETRO_TAPPING
|
||||
|
||||
// how many taps before triggering the toggle
|
||||
#undef ONESHOT_TAP_TOGGLE
|
||||
#define ONESHOT_TAP_TOGGLE 2
|
||||
|
||||
// how long before oneshot modifier key times out (currently only shift)
|
||||
#undef ONESHOT_TIMEOUT
|
||||
#define ONESHOT_TIMEOUT 2000
|
||||
|
||||
// Enable combos for vim
|
||||
#define COMBO_COUNT 5 // Specify the number of combos used. BE SURE TO INCREMENT AS NEEDED
|
||||
#define COMBO_TERM 50 // window in milliseconds to trigger combo
|
||||
|
||||
// Allow more than 4 keys to be sent to the system. Useful for gaming.
|
||||
// #define FORCE_NKRO
|
||||
|
||||
// Save 200 bytes on unused keycodes
|
||||
#undef LOCKING_SUPPORT_ENABLE
|
||||
#undef LOCKING_RESYNC_ENABLE
|
||||
|
||||
// Enable HID_listen commands.
|
||||
#define NO_DEBUG
|
||||
#undef NO_PRINT
|
||||
#define USER_PRINT
|
||||
|
||||
// Note: Defining the following does not have any impact on space:
|
||||
// - NO_ACTION_MACRO
|
||||
// - NO_ACTION_FUNCTION
|
||||
// - DISABLE_LEADER
|
||||
43
users/issmirnov/issmirnov.c
Normal file
43
users/issmirnov/issmirnov.c
Normal file
@@ -0,0 +1,43 @@
|
||||
#include "issmirnov.h"
|
||||
|
||||
enum combo_events {
|
||||
JK_ESC,
|
||||
DF_CLN,
|
||||
SD_SLASH,
|
||||
XC_COPY,
|
||||
XV_PASTE
|
||||
};
|
||||
|
||||
|
||||
const uint16_t PROGMEM jk_combo[] = {KC_J, KC_K, COMBO_END};
|
||||
const uint16_t PROGMEM df_combo[] = {KC_D, KC_F, COMBO_END};
|
||||
const uint16_t PROGMEM sd_combo[] = {KC_S, KC_D, COMBO_END};
|
||||
const uint16_t PROGMEM copy_combo[] = {KC_X, KC_C, COMBO_END};
|
||||
const uint16_t PROGMEM paste_combo[] = {KC_X, KC_V, COMBO_END};
|
||||
|
||||
|
||||
// BE SURE TO UPDATE THE CONFIG.H "COMBO_COUNT" value when you add elements here!
|
||||
combo_t key_combos[COMBO_COUNT] = {
|
||||
COMBO(jk_combo, KC_ESC),
|
||||
COMBO(df_combo, KC_COLON),
|
||||
COMBO(sd_combo, KC_SLASH),
|
||||
[XC_COPY] = COMBO_ACTION(copy_combo),
|
||||
[XV_PASTE] = COMBO_ACTION(paste_combo),
|
||||
};
|
||||
|
||||
|
||||
void process_combo_event(uint8_t combo_index, bool pressed) {
|
||||
switch(combo_index) {
|
||||
case XC_COPY:
|
||||
if (pressed) {
|
||||
tap_code16(LCTL(KC_C));
|
||||
}
|
||||
break;
|
||||
|
||||
case XV_PASTE:
|
||||
if (pressed) {
|
||||
tap_code16(LCTL(KC_V));
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
35
users/issmirnov/issmirnov.h
Normal file
35
users/issmirnov/issmirnov.h
Normal file
@@ -0,0 +1,35 @@
|
||||
#pragma once
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
#include "rows.h"
|
||||
|
||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||
// entirely and just use numbers
|
||||
enum {
|
||||
_QWERTY = 0,
|
||||
_SYMB,
|
||||
_NUMP,
|
||||
_OVERWATCH,
|
||||
_NAVI
|
||||
};
|
||||
|
||||
enum custom_keycodes {
|
||||
PLACEHOLDER = SAFE_RANGE,
|
||||
TAP_TOG_LAYER,
|
||||
CLEAR_EEPROM,
|
||||
WKSP_LEFT, // Smart key that only activates when we are momentarily in a layer
|
||||
WKSP_RIGHT, // Smart key that only activates when we are momentarily in a layer
|
||||
};
|
||||
|
||||
|
||||
#define LOWER MO(_SYMB)
|
||||
#define RAISE MO(_NUMP)
|
||||
|
||||
#define CTL_SPC MT(MOD_LCTL, KC_SPC)
|
||||
#define OSMSFT OSM(MOD_LSFT)
|
||||
#define LOCK LGUI(KC_L)
|
||||
#define MODSFT LSFT(KC_LGUI)
|
||||
#define APPS LGUI(KC_SPC)
|
||||
55
users/issmirnov/rows.h
Normal file
55
users/issmirnov/rows.h
Normal file
@@ -0,0 +1,55 @@
|
||||
#pragma once
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
// This wrapper is required in order to expand the row macro inside the keymap configs.
|
||||
#define LAYOUT_ergodox_wrapper(...) LAYOUT_ergodox(__VA_ARGS__)
|
||||
#define LAYOUT_ortho_4x12_wrapper(...) LAYOUT_ortho_4x12(__VA_ARGS__)
|
||||
|
||||
// Share common config. We'll skip the mod rows and func rows.
|
||||
// Note, it's also really neat the way the scoping works. Since we perform the expansion in the keymap.c file
|
||||
// so we can use our enums for custom keycodes
|
||||
#define _________________QWERTY_L1_________________ KC_Q , KC_W , KC_E , KC_R , KC_T
|
||||
#define _________________QWERTY_L2_________________ KC_A , KC_S , KC_D , KC_F , KC_G
|
||||
#define _________________QWERTY_L3_________________ KC_Z , KC_X , KC_C , KC_V , KC_B
|
||||
|
||||
#define _________________QWERTY_R1_________________ KC_Y , KC_U , KC_I , KC_O , KC_P
|
||||
#define _________________QWERTY_R2_________________ KC_H , KC_J , KC_K , KC_L , TAP_TOG_LAYER
|
||||
#define _________________QWERTY_R3_________________ KC_N , KC_M , KC_DOT , KC_COMMA , TG(_NUMP)
|
||||
|
||||
#define ___________________BLANK___________________ _______ , _______ , _______ , _______ , _______
|
||||
#define ___________________XXXXX___________________ XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX
|
||||
|
||||
#define _________________SYMB_L1___________________ KC_MINS , KC_AT , KC_LCBR , KC_RCBR , KC_GRV
|
||||
#define _________________SYMB_L2___________________ KC_CIRC , KC_UNDS , KC_LPRN , KC_RPRN , KC_DLR
|
||||
#define _________________SYMB_L3___________________ KC_LABK , KC_RABK , KC_LBRACKET , KC_RBRACKET , KC_TILD
|
||||
|
||||
#define _________________SYMB_R1___________________ KC_ASTR , KC_EXLM , KC_PIPE , KC_PERC , KC_PLUS
|
||||
#define _________________SYMB_R2___________________ KC_HASH , KC_EQL , KC_COLN , KC_SCLN , TAP_TOG_LAYER
|
||||
#define _________________SYMB_R3___________________ KC_AMPR , KC_QUES , KC_SLASH , KC_BSLASH , TG(_NUMP)
|
||||
|
||||
|
||||
#define _________________NUMP_L1___________________ KC_NO , KC_NO , LGUI(KC_UP) , XXXXXXX , XXXXXXX
|
||||
#define _________________NUMP_L2___________________ XXXXXXX , LGUI(KC_LEFT) , LGUI(KC_DOWN) , LGUI(KC_RIGHT) , XXXXXXX
|
||||
#define _________________NUMP_L3___________________ XXXXXXX , XXXXXXX , XXXXXXX , KC_AUDIO_VOL_DOWN , KC_AUDIO_VOL_UP
|
||||
|
||||
#define _________________NUMP_R1___________________ KC_COMM , KC_7 , KC_8 , KC_9 , XXXXXXX
|
||||
#define _________________NUMP_R2___________________ KC_0 , KC_4 , KC_5 , KC_6 , TO(_SYMB)
|
||||
#define _________________NUMP_R3___________________ KC_DOT , KC_1 , KC_2 , KC_3 , TO(_QWERTY)
|
||||
|
||||
// Note: These are 6x1 blocks, since modifiers are also adjusted.
|
||||
#define ______________OVERWATCH_L1_________________ KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T
|
||||
#define ______________OVERWATCH_L2_________________ KC_LCTL , KC_A , KC_S , KC_D , KC_F , KC_P
|
||||
#define ______________OVERWATCH_L3_________________ KC_LSHIFT , KC_Z , KC_X , KC_C , KC_V , KC_GRAVE
|
||||
// Ergodox only has 5 keys on bottom row:
|
||||
#define ______________OVERWATCH_L4_________________ KC_LCTL , KC_F9 , KC_PSCREEN , KC_H , KC_R
|
||||
|
||||
|
||||
|
||||
#define _________________NAVI_L1___________________ XXXXXXX , XXXXXXX , KC_UP , XXXXXXX , XXXXXXX
|
||||
#define _________________NAVI_L2___________________ XXXXXXX , KC_LEFT , KC_DOWN , KC_RGHT , XXXXXXX
|
||||
#define _________________NAVI_L3___________________ XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX
|
||||
|
||||
#define _________________NAVI_R1___________________ XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX
|
||||
#define _________________NAVI_R2___________________ XXXXXXX , KC_LCTL , XXXXXXX , XXXXXXX , XXXXXXX
|
||||
#define _________________NAVI_R3___________________ XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX
|
||||
25
users/issmirnov/rules.mk
Normal file
25
users/issmirnov/rules.mk
Normal file
@@ -0,0 +1,25 @@
|
||||
|
||||
SRC += tap_tog.c
|
||||
SRC += issmirnov.c
|
||||
|
||||
# https://www.reddit.com/r/olkb/comments/bmpgjm/programming_help/
|
||||
# Should shave 2000 bytes
|
||||
LINK_TIME_OPTIMIZATION_ENABLE = yes
|
||||
|
||||
# Enable debugging only when needed.
|
||||
CONSOLE_ENABLE = yes # +400 bytes (hid_listen support)
|
||||
|
||||
# Enable combo keys for vim usage.
|
||||
# https://github.com/qmk/qmk_firmware/blob/master/docs/feature_combo.md
|
||||
COMBO_ENABLE = yes
|
||||
|
||||
# This allows the keyboard to tell the host OS that up to 248 keys are held down at once
|
||||
NKRO_ENABLE = no # note: also needs FORCE_NKRO in config.h
|
||||
|
||||
# Disable unused features to save on space
|
||||
# https://thomasbaart.nl/2018/12/01/reducing-firmware-size-in-qmk/
|
||||
MOUSEKEY_ENABLE = no # 2000 bytes
|
||||
BOOTMAGIC_ENABLE = no
|
||||
COMMAND_ENABLE = no # https://beta.docs.qmk.fm/features/feature_command
|
||||
UNICODE_ENABLE = no # Unicode
|
||||
SWAP_HANDS_ENABLE = no # Allow swapping hands of keyboard
|
||||
52
users/issmirnov/tap_tog.c
Normal file
52
users/issmirnov/tap_tog.c
Normal file
@@ -0,0 +1,52 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
#include "tap_tog.h"
|
||||
|
||||
bool tap_tog_layer_other_key_pressed = false;
|
||||
bool tap_tog_layer_toggled_on = false;
|
||||
uint8_t tap_tog_count = 0;
|
||||
|
||||
void process_tap_tog(uint8_t layer, keyrecord_t *record) {
|
||||
tap_tog_count++;
|
||||
// press
|
||||
if (record->event.pressed) {
|
||||
|
||||
// TTL has already been pressed and we are toggled into that layer
|
||||
// so now we need to leave
|
||||
if(tap_tog_layer_toggled_on) {
|
||||
layer_clear();
|
||||
tap_tog_layer_toggled_on = false;
|
||||
}
|
||||
|
||||
// this means we're in our default layer
|
||||
// so switch the layer immediately
|
||||
// whether we'll switch back when it's released depends on if a button gets pressed while this is held down
|
||||
else {
|
||||
// switch layer
|
||||
layer_on(layer);
|
||||
tap_tog_layer_other_key_pressed = false; // if this becomes true before it gets released, it will act as a held modifier
|
||||
}
|
||||
}
|
||||
|
||||
// release
|
||||
else {
|
||||
// if it was used as a held modifier (like traditional shift)
|
||||
if(tap_tog_layer_other_key_pressed) {
|
||||
// switch layer back
|
||||
layer_clear();
|
||||
}
|
||||
// if it was used as a toggle button
|
||||
else {
|
||||
// next time, it will turn layer off
|
||||
tap_tog_layer_toggled_on = true;
|
||||
|
||||
// If it's been tapped twice, reset the toggle flag.
|
||||
// Otherwise, we get stuck oscillating between this code block and the
|
||||
// pressed && TTL_toggled_on block.
|
||||
if (tap_tog_count >= 4 ) {
|
||||
tap_tog_count = 0;
|
||||
tap_tog_layer_toggled_on = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
10
users/issmirnov/tap_tog.h
Normal file
10
users/issmirnov/tap_tog.h
Normal file
@@ -0,0 +1,10 @@
|
||||
#pragma once
|
||||
|
||||
#include "issmirnov.h"
|
||||
|
||||
extern bool tap_tog_layer_other_key_pressed; // set to true if any key pressed while TAP_TOG_LAYER held down
|
||||
extern bool tap_tog_layer_toggled_on; // will become true if no keys are pressed while TTL held down
|
||||
extern uint8_t tap_tog_count; // number of presses on TAP_TOG_LAYER button.
|
||||
|
||||
// Tap dance analog with momentary toggle when held, switch when tapped
|
||||
void process_tap_tog(uint8_t layer, keyrecord_t *record);
|
||||
Reference in New Issue
Block a user