Merge remote-tracking branch 'origin/master' into develop

This commit is contained in:
Drashna Jael're 2022-11-12 17:10:04 -08:00
commit 731633e133
No known key found for this signature in database
GPG key ID: DBA1FD3A860D1B11
204 changed files with 15453 additions and 4201 deletions

View file

@ -0,0 +1,45 @@
/*
Copyright 2022 Rocco Meli <@RMeli>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#define MASTER_LEFT // Left side is the master
#define SPLIT_LED_STATE_ENABLE
#ifdef RGB_MATRIX_ENABLE
// Configure RGB Matrix
# define RGB_MATRIX_KEYPRESSES // enable keypress effects
# define RGB_MATRIX_LED_FLUSH_LIMIT 16
# define RGB_DISABLE_WHEN_USB_SUSPENDED
# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_COLOR
# define RGB_MATRIX_STARTUP_HUE 10
# define RGB_MATRIX_STARTUP_SAT 255
# define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
// Disable RGB Matrix effects (from lulu/config.h)
# undef ENABLE_RGB_MATRIX_ALPHAS_MODS
# undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
# undef ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
# undef ENABLE_RGB_MATRIX_BREATHING
# undef ENABLE_RGB_MATRIX_BAND_SAT
# undef ENABLE_RGB_MATRIX_BAND_VAL
// Enable RGB Matrix effects
# define ENABLE_RGB_MATRIX_BREATHING
# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
# define ENABLE_RGB_MATRIX_SOLID_COLOR
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
#endif

View file

@ -0,0 +1,108 @@
/*
Copyright 2022 Cole Smith <cole@boadsource.xyz>
Copyright 2022 Rocco Meli <@RMeli>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
#include "rmeli.h"
enum layers {
_QWERTY,
_COLEMAK_DH,
_RAISE,
_LOWER,
_ADJUST,
};
#define RAISE MO(_RAISE)
#define LOWER MO(_LOWER)
#define QWY_DF DF(_QWERTY)
#define CMK_DF DF(_COLEMAK_DH)
// clang-format off
#define __________THUMB_LEFT_x4___________ KC_LALT, KC_LGUI, LOWER, KC_SPC
#define __________THUMB_RIGHT_x4__________ KC_ENT, RAISE, KC_LCTL, KC_RGUI
// clang-format on
/* LAYOUT
*
* ,-----------------------------. ,-----------------------------.
* | | | | | | | | | | | | | |
* |----+----+----+----+----+----| |----+----+----+----+----+----|
* | | | | | | | | | | | | | |
* |----+----+----+----+----+----| |----+----+----+----+----+----|
* | | | | | | |-----. ,-----| | | | | | |
* |----+----+----+----+----+----| | | |----+----+----+----+----+----|
* | | | | | | |-----| |-----| | | | | | |
* `----------------------------/ / \ \----------------------------'
* | | | | / / \ \ | | | |
* | | | |/ / \ \ | | | |
* `--------------''-----' '------''--------------'
*/
// Define wrapper for standard LULU layout
#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = LAYOUT_wrapper(
___________________NUMBER_LEFT_x6___________________, ___________________NUMBER_RIGHT_x6__________________,
___________________QWERTY_L1_x6_____________________, ___________________QWERTY_R1_x6_____________________,
___________________QWERTY_L2_x6_____________________, ___________________QWERTY_R2_x6_____________________,
___________________QWERTY_L3_x6_____________________, KC_LBRC, KC_RBRC, ___________________QWERTY_R3_x6_____________________,
__________THUMB_LEFT_x4___________, __________THUMB_RIGHT_x4__________
),
[_COLEMAK_DH] = LAYOUT_wrapper(
___________________NUMBER_LEFT_x6___________________, ___________________NUMBER_RIGHT_x6__________________,
________________COLEMAK_MOD_DH_L1_x6________________, ________________COLEMAK_MOD_DH_R1_x6________________,
________________COLEMAK_MOD_DH_L2_x6________________, ________________COLEMAK_MOD_DH_R2_x6________________,
________________COLEMAK_MOD_DH_L3_x6________________, KC_LBRC, KC_RBRC, ________________COLEMAK_MOD_DH_R3_x6________________,
__________THUMB_LEFT_x4___________, __________THUMB_RIGHT_x4__________
),
[_LOWER] = LAYOUT_wrapper(
____________________FUNC_LEFT_x6____________________, ____________________FUNC_RIGHT_x6___________________,
_______, ______________NUMBER_LEFT_x5_______________, ______________NUMBER_RIGHT_x5______________, _______,
_______, ______________UNICODE_L2_x5________________, ________________NAV_R2_x5__________________, XXXXXXX,
_______, ______________UNICODE_L3_x5________________, _______, _______, ________________NAV_R3_x5__________________, _______,
_______, _______, _______, _______, _______, _______, _______, _______
),
[_RAISE] = LAYOUT_wrapper(
___________________NUMBER_LEFT_x6___________________, ___________________NUMBER_RIGHT_x6__________________,
___________________SYMBOL_LEFT_x6___________________, ___________________SYMBOL_RIGHT_x6__________________,
_______, ____________NAV_VIM_x4____________, XXXXXXX, ____________________SYMBOL_R2_x6____________________,
_______, _________________NONE_5x___________________, _______, _______, ____________________SYMBOL_R3_x6____________________,
_______, _______, _______, _______, _______, _______, _______, _______
),
[_ADJUST] = LAYOUT_wrapper(
QK_BOOT, _________________NONE_5x___________________, ______________________NONE_6x_______________________,
XXXXXXX, _________________NONE_5x___________________, _______________CONFIG_R1_x5________________, QWY_DF,
RGB_TOG, ________________RGB_L2_x5__________________, _______________CONFIG_R2_x5________________, XXXXXXX,
XXXXXXX, ________________RGB_L3_x5__________________, _______, _______, _______________CONFIG_R3_x5________________, CMK_DF,
_______, _______, _______, _______, _______, _______, _______, _______
)
};
// clang-format on
layer_state_t layer_state_set_user(layer_state_t state) {
return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
}

View file

@ -0,0 +1,9 @@
TAP_DANCE_ENABLE = yes
AUTO_SHIFT_ENABLE = no // disable auto-shift with home row mods
UNICODEMAP_ENABLE = yes
NKRO_ENABLE = yes
MAGIC_ENABLE = yes
RGBLIGHT_ENABLE = no
RGB_MATRIX_ENABLE = yes

View file

@ -0,0 +1,27 @@
/*
Copyright 2015 Jun Wako <wakojun@gmail.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
#define BACKLIGHT_PWM_DRIVER PWMD3
#define BACKLIGHT_PWM_CHANNEL 1
#define BACKLIGHT_PAL_MODE 1
#define WS2812_SPI SPID2
#define WS2812_SPI_MOSI_PAL_MODE 0
#define WS2812_SPI_SCK_PAL_MODE 0
#define WS2812_SPI_SCK_PIN B13

View file

@ -0,0 +1,29 @@
/* Copyright 2020 QMK
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/*
* This file was auto-generated by:
* `qmk chibios-confmigrate -i keyboards/cannonkeys/devastatingtkl/halconf.h -r platforms/chibios/common/configs/halconf.h`
*/
#pragma once
#define HAL_USE_PWM TRUE
#define HAL_USE_SPI TRUE
#include_next <halconf.h>

View file

@ -0,0 +1,156 @@
{
"keyboard_name": "Serenity",
"usb": {
"vid": "0xCA04",
"pid": "0x0017",
"device_version": "0.0.1"
},
"url": "https://cannonkeys.com",
"maintainer": "awkannan",
"bootloader": "stm32-dfu",
"processor": "STM32F072",
"diode_direction": "COL2ROW",
"features": {
"bootmagic": true,
"command": false,
"console": false,
"extrakey": true,
"mousekey": true,
"nkro": true,
"backlight": true,
"rgblight": true
},
"debounce": 5,
"matrix_pins": {
"cols": ["B1", "B2", "B10", "B11", "B12", "B14", "A8", "A9", "A10", "A3", "B0", "A2", "A1", "A7", "A0", "B4", "B6", "B7"],
"rows": ["A15", "B3", "B5", "A4", "A5", "F1"]
},
"backlight": {
"breathing": true,
"breathing_period": 5,
"levels": 15,
"pin": "A6"
},
"rgblight": {
"led_count": 12,
"pin": "B15",
"hue_steps": 24,
"saturation_steps": 16,
"brightness_steps": 16,
"animations": {
"alternating": true,
"breathing": true,
"christmas": true,
"knight": true,
"rainbow_mood": true,
"rainbow_swirl": true,
"rgb_test": true,
"snake": true,
"static_gradient": true,
"twinkle": true
}
},
"indicators": {
"caps_lock": "B9",
"scroll_lock": "F0",
"on_state": 0
},
"layouts": {
"LAYOUT_all": {
"layout": [
{ "label": "Esc", "matrix": [0, 0], "x": 0.0, "y": 0.0 },
{ "label": "F1", "matrix": [0, 1], "x": 1.25, "y": 0.0 },
{ "label": "F2", "matrix": [0, 2], "x": 2.25, "y": 0.0 },
{ "label": "F3", "matrix": [0, 3], "x": 3.25, "y": 0.0 },
{ "label": "F4", "matrix": [0, 4], "x": 4.25, "y": 0.0 },
{ "label": "F5", "matrix": [0, 5], "x": 5.5, "y": 0.0 },
{ "label": "F6", "matrix": [0, 6], "x": 6.5, "y": 0.0 },
{ "label": "F7", "matrix": [0, 7], "x": 7.5, "y": 0.0 },
{ "label": "F8", "matrix": [0, 8], "x": 8.5, "y": 0.0 },
{ "label": "F9", "matrix": [0, 9], "x": 9.75, "y": 0.0 },
{ "label": "F10", "matrix": [0, 10], "x": 10.75, "y": 0.0 },
{ "label": "F11", "matrix": [0, 11], "x": 11.75, "y": 0.0 },
{ "label": "F12", "matrix": [0, 12], "x": 12.75, "y": 0.0 },
{ "label": "F13", "matrix": [0, 14], "x": 14.0, "y": 0.0 },
{ "label": "PrtSc", "matrix": [0, 15], "x": 15.25, "y": 0.0 },
{ "label": "Scroll Lock", "matrix": [0, 16], "x": 16.25, "y": 0.0 },
{ "label": "Pause", "matrix": [0, 17], "x": 17.25, "y": 0.0 },
{ "label": "~", "matrix": [1, 0], "x": 0.0, "y": 1.25 },
{ "label": "!", "matrix": [1, 1], "x": 1.0, "y": 1.25 },
{ "label": "@", "matrix": [1, 2], "x": 2.0, "y": 1.25 },
{ "label": "#", "matrix": [1, 3], "x": 3.0, "y": 1.25 },
{ "label": "$", "matrix": [1, 4], "x": 4.0, "y": 1.25 },
{ "label": "%", "matrix": [1, 5], "x": 5.0, "y": 1.25 },
{ "label": "^", "matrix": [1, 6], "x": 6.0, "y": 1.25 },
{ "label": "&", "matrix": [1, 7], "x": 7.0, "y": 1.25 },
{ "label": "*", "matrix": [1, 8], "x": 8.0, "y": 1.25 },
{ "label": "(", "matrix": [1, 9], "x": 9.0, "y": 1.25 },
{ "label": ")", "matrix": [1, 10], "x": 10.0, "y": 1.25 },
{ "label": "_", "matrix": [1, 11], "x": 11.0, "y": 1.25 },
{ "label": "+", "matrix": [1, 12], "x": 12.0, "y": 1.25 },
{ "label": "Bksp", "matrix": [1, 13], "x": 13.0, "y": 1.25 },
{ "label": "Del", "matrix": [1, 14], "x": 14.0, "y": 1.25 },
{ "label": "Insert", "matrix": [1, 15], "x": 15.25, "y": 1.25 },
{ "label": "Home", "matrix": [1, 16], "x": 16.25, "y": 1.25 },
{ "label": "PgUp", "matrix": [1, 17], "x": 17.25, "y": 1.25 },
{ "label": "Tab", "matrix": [2, 0], "w": 1.5, "x": 0.0, "y": 2.25 },
{ "label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.25 },
{ "label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.25 },
{ "label": "E", "matrix": [2, 3], "x": 3.5, "y": 2.25 },
{ "label": "R", "matrix": [2, 4], "x": 4.5, "y": 2.25 },
{ "label": "T", "matrix": [2, 5], "x": 5.5, "y": 2.25 },
{ "label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2.25 },
{ "label": "U", "matrix": [2, 7], "x": 7.5, "y": 2.25 },
{ "label": "I", "matrix": [2, 8], "x": 8.5, "y": 2.25 },
{ "label": "O", "matrix": [2, 9], "x": 9.5, "y": 2.25 },
{ "label": "P", "matrix": [2, 10], "x": 10.5, "y": 2.25 },
{ "label": "{", "matrix": [2, 11], "x": 11.5, "y": 2.25 },
{ "label": "}", "matrix": [2, 12], "x": 12.5, "y": 2.25 },
{ "label": "|", "matrix": [2, 14], "w": 1.5, "x": 13.5, "y": 2.25 },
{ "label": "Delete", "matrix": [2, 15], "x": 15.25, "y": 2.25 },
{ "label": "End", "matrix": [2, 16], "x": 16.25, "y": 2.25 },
{ "label": "PgDn", "matrix": [2, 17], "x": 17.25, "y": 2.25 },
{ "label": "Caps Lock", "matrix": [3, 0], "w": 1.75, "x": 0.0, "y": 3.25 },
{ "label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.25 },
{ "label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.25 },
{ "label": "D", "matrix": [3, 3], "x": 3.75, "y": 3.25 },
{ "label": "F", "matrix": [3, 4], "x": 4.75, "y": 3.25 },
{ "label": "G", "matrix": [3, 5], "x": 5.75, "y": 3.25 },
{ "label": "H", "matrix": [3, 6], "x": 6.75, "y": 3.25 },
{ "label": "J", "matrix": [3, 7], "x": 7.75, "y": 3.25 },
{ "label": "K", "matrix": [3, 8], "x": 8.75, "y": 3.25 },
{ "label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.25 },
{ "label": ":", "matrix": [3, 10], "x": 10.75, "y": 3.25 },
{ "label": "\"", "matrix": [3, 11], "x": 11.75, "y": 3.25 },
{ "label": "|", "matrix": [3, 12], "x": 12.75, "y": 3.25 },
{ "label": "Enter", "matrix": [3, 14], "w": 1.25, "x": 13.75, "y": 3.25 },
{ "label": "Shift", "matrix": [4, 0], "w": 1.25, "x": 0.0, "y": 4.25 },
{ "label": "|", "matrix": [4, 1], "x": 1.25, "y": 4.25 },
{ "label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.25 },
{ "label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25 },
{ "label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25 },
{ "label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25 },
{ "label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25 },
{ "label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25 },
{ "label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25 },
{ "label": "<", "matrix": [4, 9], "x": 9.25, "y": 4.25 },
{ "label": ">", "matrix": [4, 10], "x": 10.25, "y": 4.25 },
{ "label": "?", "matrix": [4, 11], "x": 11.25, "y": 4.25 },
{ "label": "Shift", "matrix": [4, 12], "w": 1.75, "x": 14.75, "y": 4.25 },
{ "label": "Fn", "matrix": [4, 14], "x": 16.5, "y": 4.25 },
{ "label": "\u2191", "matrix": [4, 16], "x": 18.75, "y": 4.25 },
{ "label": "Ctrl", "matrix": [5, 0], "w": 1.25, "x": 0.0, "y": 5.25 },
{ "label": "Win", "matrix": [5, 1], "w": 1.25, "x": 1.25, "y": 5.25 },
{ "label": "Alt", "matrix": [5, 2], "w": 1.25, "x": 2.5, "y": 5.25 },
{ "matrix": [5, 6], "w": 6.25, "x": 3.75, "y": 5.25 },
{ "label": "Alt", "matrix": [5, 10], "w": 1.25, "x": 10.0, "y": 5.25 },
{ "label": "Fn", "matrix": [5, 11], "w": 1.25, "x": 11.25, "y": 5.25 },
{ "label": "Win", "matrix": [5, 12], "w": 1.25, "x": 12.5, "y": 5.25 },
{ "label": "Ctrl", "matrix": [5, 14], "w": 1.25, "x": 13.75, "y": 5.25 },
{ "label": "\u2190", "matrix": [5, 15], "x": 15.25, "y": 5.25 },
{ "label": "\u2193", "matrix": [5, 16], "x": 16.25, "y": 5.25 },
{ "label": "\u2192", "matrix": [5, 17], "x": 17.25, "y": 5.25 }
]
}
}
}

View file

@ -0,0 +1,41 @@
/*
Copyright 2012,2013 Jun Wako <wakojun@gmail.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/>.
*/
#include QMK_KEYBOARD_H
enum layer_names {
_BASE,
_FN1
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT_all(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_MPLY, KC_PSCR, KC_SCRL, KC_PAUS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_TRNS, KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[_FN1] = LAYOUT_all(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, KC_TRNS, BL_TOGG, BL_DEC, BL_INC,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MNXT, KC_VOLD,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
};

View file

@ -0,0 +1,59 @@
/*
Copyright 2012,2013 Jun Wako <wakojun@gmail.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/>.
*/
#include QMK_KEYBOARD_H
enum layer_names {
_BASE,
_FN1,
_FN2,
_FN3
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT_all(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_MPLY, KC_PSCR, KC_SCRL, KC_PAUS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_TRNS, KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[_FN1] = LAYOUT_all(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, KC_TRNS, BL_TOGG, BL_DEC, BL_INC,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MNXT, KC_VOLD,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[_FN2] = LAYOUT_all(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[_FN3] = LAYOUT_all(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
};

View file

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

View file

@ -0,0 +1,31 @@
/* Copyright 2020 QMK
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/*
* This file was auto-generated by:
* `qmk chibios-confmigrate -i keyboards/cannonkeys/devastatingtkl/mcuconf.h -r platforms/chibios/GENERIC_STM32_F072XB/configs/mcuconf.h`
*/
#pragma once
#include_next <mcuconf.h>
#undef STM32_PWM_USE_TIM3
#define STM32_PWM_USE_TIM3 TRUE
#undef STM32_SPI_USE_SPI2
#define STM32_SPI_USE_SPI2 TRUE

View file

@ -0,0 +1,25 @@
# Serenity
A calming F13 TKL from HoodrowThrillson
* Keyboard Maintainer: [Andrew Kannan](https://github.com/awkannan)
* Hardware Supported: STM32F072CBT6
* Hardware Availability: [CannonKeys](https://cannonkeys.com)
Make example for this keyboard (after setting up your build environment):
make cannonkeys/serenity:default
Flashing example for this keyboard:
make cannonkeys/serenity:default:flash
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
## Bootloader
Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
* **Physical reset button**: Swap the boot switch on the back of the PCB to "1" and hit the reset button
* **Keycode in layout**: Press the key mapped to `RESET` if it is available

View file

@ -0,0 +1,2 @@
# Wildcard to allow APM32 MCU
DFU_SUFFIX_ARGS = -v FFFF -p FFFF

46
keyboards/crkbd/keymaps/ericgebhart/keymap.c Executable file → Normal file
View file

@ -1,5 +1,5 @@
/*
Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.com>
Copyright 2018-2022 Eric Gebhart <e.a.gebhart@gmail.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
@ -14,47 +14,5 @@
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 "ericgebhart.h"
#define Crkbd_base(...) Base_3x6_3(__VA_ARGS__)
#define Crkbd_bepo(...) Base_bepo_3x6_3(__VA_ARGS__)
#define Crkbd_bepo6(...) Base_bepo6_3x6_3(__VA_ARGS__)
#define Crkbd_transient(...) Transient6_3x6_3(__VA_ARGS__)
/*
* The `Crkbd_base` macro is a template to allow the use of identical
* modifiers for the default layouts (eg QWERTY, Colemak, Dvorak, etc), so
* that there is no need to set them up for each layout, and modify all of
* them if I want to change them. This helps to keep consistency and ease
* of use. K## is a placeholder to pass through the individual keycodes
*/
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Qwerty based Base layers
[_DVORAK] = Crkbd_base(___DVORAK___),
[_BEAKL] = Crkbd_base(___BEAKL15___),
[_COLEMAK] = Crkbd_base(___COLEMAK_DH___),
[_QWERTY] = Crkbd_base(___QWERTY___),
// Bepo base layers
[_BEAKL_BP] = Crkbd_bepo(___BEAKL15_FR___),
[_DVORAK_BP] = Crkbd_bepo(___DVORAK_FR___),
[_BEPO] = Crkbd_bepo6(___BEPO6___),
// Transient layers.
[_SYMB] = Crkbd_transient(___SYMB_BEAKLB_3x12___),
[_SYMB_BP] = Crkbd_transient(___SYMB_BEAKLB_BP_3x12___),
[_KEYPAD] = Crkbd_transient(___KP_C_3x12___),
[_KEYPAD_BP] = Crkbd_transient(___KP_C_BP_3x12___),
[_TOPROWS] = Crkbd_transient(___TOPROWS_3x12___),
[_TOPROWS_BP] = Crkbd_transient(___TOPROWS_BP_3x12___),
[_NAV] = Crkbd_transient(___NAV_3x12___),
[_LAYERS] = Crkbd_transient(___LAYERS_3x12___),
//[_RGB] = Crkbd_transient(___RGB_3x12___),
[_ADJUST] = Crkbd_transient(___ADJUST_3x12___),
///HPT_TOG, KC_NUKE, ___, ___, TG_MODS, HPT_FBK
};
// See: users/ericgebhart.

View file

@ -21,32 +21,19 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
#define MASTER_LEFT // Left side is the master
#define MASTER_LEFT // Left side is the master
#define SPLIT_LED_STATE_ENABLE
#define TAPPING_TERM 200
#define UNICODE_SELECTED_MODES UNICODE_MODE_MACOS, UNICODE_MODE_LINUX
#define AUTO_SHIFT_REPEAT
#ifdef RGBLIGHT_ENABLE
# define RGBLIGHT_LIMIT_VAL 120
# define RGBLIGHT_HUE_STEP 10
# define RGBLIGHT_SAT_STEP 17
# define RGBLIGHT_VAL_STEP 17
#endif
#ifdef RGB_MATRIX_ENABLE
// RGB matrix options
# define RGB_MATRIX_KEYPRESSES // enable keypress effects
# define RGB_MATRIX_KEYPRESSES // enable keypress effects
# define RGB_MATRIX_LED_FLUSH_LIMIT 16
# define RGB_DISABLE_WHEN_USB_SUSPENDED
// Disable unwanted R2G effects (from r2g/config.h)
# undef ENABLE_RGB_MATRIX_ALPHAS_MODS
# undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
# undef ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
# undef ENABLE_RGB_MATRIX_BREATHING
# define ENABLE_RGB_MATRIX_BREATHING
# undef ENABLE_RGB_MATRIX_BAND_SAT
# undef ENABLE_RGB_MATRIX_BAND_VAL
# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
@ -57,8 +44,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
# undef ENABLE_RGB_MATRIX_RAINDROPS
# undef ENABLE_RGB_MATRIX_HUE_BREATHING
# undef ENABLE_RGB_MATRIX_PIXEL_FRACTAL
//# undef ENABLE_RGB_MATRIX_TYPING_HEATMAP
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
# undef ENABLE_RGB_MATRIX_SPLASH
@ -77,4 +64,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#undef LOCKING_SUPPORT_ENABLE
#undef LOCKING_RESYNC_ENABLE
#define NO_MUSIC_MODE
#define LAYER_STATE_8BIT // Limit to 8 layers
#define LAYER_STATE_8BIT // Limit to 8 layers

View file

@ -1,6 +1,6 @@
/*
Copyright 2019 @foostan
Copyright 2020 Drashna Jaelre <@drashna>
Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
Copyright 2021 Rocco Meli <@RMeli>
This program is free software: you can redistribute it and/or modify
@ -69,64 +69,61 @@ enum layer_names {
#define _CMK 1
#define _CFG 4
#define ______THUMB_LEFT_x3______ KC_LGUI, MO(_DWN), KC_SPC
#define ______THUMB_RIGHT_x3_____ KC_ENT, MO(_UP), KC_RCTL
// LAYOUT
//
// |-----------------------------| |-----------------------------|
// | | | | | | | | | | | | | |
// |----+----+----+----+----+----| |----+----+----+----+----+----|
// | | | | | | | | | | | | | |
// |----+----+----+----+----+----| |----+----+----+----+----+----|
// | | | | | | | | | | | | | |
// |----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
// | | | | | | | |
// |--------------| |--------------|
// Define wrapper for standard CRKB layout
#define LAYOUT_wrapper(...) LAYOUT_split_3x6_3(__VA_ARGS__)
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = LAYOUT_split_3x6_3(
//|-----------------------------------------------------| |-----------------------------------------------------|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
TD_ED, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
TD_LSPC, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, TD_RSPC,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
KC_LGUI,MO(_DWN), KC_SPC, KC_ENT,MO(_UP), KC_RCTL
//|--------------------------| |--------------------------|
[_QWERTY] = LAYOUT_wrapper(
// clang-format off
___________________QWERTY_L1_x6_____________________, ___________________QWERTY_R1_x6_____________________,
___________________QWERTY_L2_x6_____________________, ___________________QWERTY_R2_x6_____________________,
___________________QWERTY_L3_x6_____________________, ___________________QWERTY_R3_x6_____________________,
______THUMB_LEFT_x3______, ______THUMB_RIGHT_x3_____
),
[_COLEMAK_DH] = LAYOUT_split_3x6_3(
//|-----------------------------------------------------| |-----------------------------------------------------|
KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_SCLN, KC_P, KC_BSPC,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
TD_ED, KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
TD_LSPC, KC_Z, KC_X, KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, TD_RSPC,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
KC_LGUI,MO(_DWN), KC_SPC, KC_ENT,MO(_UP), KC_RCTL
//|--------------------------| |--------------------------|
[_COLEMAK_DH] = LAYOUT_wrapper(
________________COLEMAK_MOD_DH_L1_x6________________, ________________COLEMAK_MOD_DH_R1_x6________________,
________________COLEMAK_MOD_DH_L2_x6________________, ________________COLEMAK_MOD_DH_R2_x6________________,
________________COLEMAK_MOD_DH_L3_x6________________, ________________COLEMAK_MOD_DH_R3_x6________________,
______THUMB_LEFT_x3______, ______THUMB_RIGHT_x3_____
),
[_DWN] = LAYOUT_split_3x6_3(
//|-----------------------------------------------------| |-----------------------------------------------------|
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
_______, A_GRV, E_GRV, I_GRV, O_GRV, U_GRV, XXXXXXX, XXXXXXX, KC_UP, XXXXXXX, KC_PGUP, XXXXXXX,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
_______, A_UML, E_ACT, I_CIR, O_UML, U_UML, XXXXXXX, KC_LEFT, KC_DOWN,KC_RIGHT, KC_PGDN, _______,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
KC_LGUI, _______, _______, _______,MO(_CFG), _______
//|--------------------------| |--------------------------|
[_DWN] = LAYOUT_wrapper(
_______, ______________NUMBER_LEFT_x5_______________, ______________NUMBER_RIGHT_x5______________, _______,
_______, ______________UNICODE_L2_x5________________, ________________NAV_R2_x5__________________, XXXXXXX,
_______, ______________UNICODE_L3_x5________________, ________________NAV_R3_x5__________________, _______,
KC_LGUI, _______, _______, _______,MO(_CFG), _______
),
[_UP] = LAYOUT_split_3x6_3(
//|-----------------------------------------------------| |-----------------------------------------------------|
_______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
_______, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, XXXXXXX, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_GRV,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, KC_TILD,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
_______,MO(_CFG), _______, _______, _______, _______
//|--------------------------| |--------------------------|
[_UP] = LAYOUT_wrapper(
___________________SYMBOL_LEFT_x6___________________, ___________________SYMBOL_RIGHT_x6__________________,
_______, ____________NAV_VIM_x4____________, XXXXXXX, ____________________SYMBOL_R2_x6____________________,
_______, _________________NONE_5x___________________, ____________________SYMBOL_R3_x6____________________,
_______,MO(_CFG), _______, _______, _______, _______
),
[_CONFIG] = LAYOUT_split_3x6_3(
//|-----------------------------------------------------| |-----------------------------------------------------|
QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, UC_NEXT, AS_UP, NK_ON, XXXXXXX, XXXXXXX,DF(_QWY),
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, XXXXXXX, AS_TOGG, NK_TOGG, XXXXXXX, XXXXXXX, XXXXXXX,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
XXXXXXX,RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, UC_PREV, AS_DOWN, NK_OFF, XXXXXXX, XXXXXXX,DF(_CMK),
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
_______, _______, _______, _______, _______, _______
//|--------------------------| |--------------------------|
[_CONFIG] = LAYOUT_wrapper(
QK_BOOT, _________________NONE_5x___________________, _______________CONFIG_R1_x5________________,DF(_QWY),
RGB_TOG, ________________RGB_L2_x5__________________, _______________CONFIG_R2_x5________________, XXXXXXX,
XXXXXXX, ________________RGB_L3_x5__________________, _______________CONFIG_R3_x5________________,DF(_CMK),
_______, _______, _______, _______, _______, _______
)
};
// clang-format on

View file

@ -2,11 +2,11 @@ OLED_ENABLE = yes
OLED_DRIVER = SSD1306
TAP_DANCE_ENABLE = yes
AUTO_SHIFT_ENABLE = yes
AUTO_SHIFT_ENABLE = no // disable auto-shift with home row mods
UNICODEMAP_ENABLE = yes
NKRO_ENABLE = yes
MAGIC_ENABLE = yes
RGBLIGHT_ENABLE = no
RGB_MATRIX_ENABLE = yes
NKRO_ENABLE = yes

View file

@ -5,6 +5,8 @@ BOARD = QMK_PROTON_C
# Bootloader selection
BOOTLOADER = stm32-dfu
LAYOUTS = 60_ansi
# Build Options
# change yes to no to disable
#

View file

@ -4,6 +4,8 @@ MCU = atmega32u4
# Bootloader selection
BOOTLOADER = atmel-dfu
LAYOUTS = 60_ansi
# Build Options
# change yes to no to disable
#

View file

@ -5,6 +5,8 @@ MCU = atmega32u4
BOOTLOADER = lufa-ms
BOOTLOADER_SIZE = 6144
LAYOUTS = 60_ansi
# Build Options
# change yes to no to disable
#

View file

@ -1,5 +1,5 @@
/*
Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.com>
Copyright 2018-2022 Eric Gebhart <e.a.gebhart@gmail.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
@ -14,35 +14,5 @@
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 "keymap_bepo.h"
#include "ericgebhart.h"
#include "layouts.h"
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Qwerty Base layers
[_DVORAK] = Dox_base(___NUMS___, ___DVORAK___),
[_QWERTY] = Dox_base(___NUMS___, ___QWERTY___),
[_COLEMAK] = Dox_base(___NUMS___, ___COLEMAK_DH___),
[_BEAKL] = Dox_base(___NUMS___, ___BEAKL15___),
// Bepo Base layers
[_DVORAK_BP] = Dox_bepo_base(___NUMS_BP___, ___DVORAK_FR___),
[_BEAKL_BP] = Dox_bepo_base(___BKLNUMS_BP___, ___BEAKL15_FR___),
[_BEPO] = Dox_bepo_base6(___BEPO6___),
// transient layers.
// Switch to using a transient layer macro
[_SYMB] = Dox_transient(___12_FUNC___, ___SYMB_BEAKLA_3x12___),
[_SYMB_BP] = Dox_transient(___12_FUNC___, ___SYMB_BEAKLA_BP_3x12___),
[_TOPROWS] = Dox_transient(___12___, ___TOPROWS_3x12___),
[_TOPROWS_BP] = Dox_transient(___12___, ___TOPROWS_BP_3x12___),
[_KEYPAD] = Dox_transient(___KEYPAD_BKL_FUNC_4x12___),
[_KEYPAD_BP] = Dox_transient(___KEYPAD_BKL_FUNC_BP_4x12___),
[_NAV] = Dox_transient(___12___, ___NAV_3x12___),
[_LAYERS] = Dox_transient(___12___, ___LAYERS_3x12___),
[_RGB] = Dox_transient(___12___, ___RGB_3x12___),
};
// See: users/ericgebhart.

View file

@ -1,139 +0,0 @@
/*
Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.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/>.
*/
/********************************************************************/
/* Ergodox EZ */
/********************************************************************/
// This one is is set up to pass in the number row.
// Beakl and bepo both change the number row.
// Left, middle, right, bottom, and thumbs all stay the same.
#define Base_dox( \
K01, K02, K03, K04, K05, \
K06, K07, K08, K09, K0A, \
K11, K12, K13, K14, K15, \
K16, K17, K18, K19, K1A, \
K21, K22, K23, K24, K25, \
K26, K27, K28, K29, K2A, \
K31, K32, K33, K34, K35, \
K36, K37, K38, K39, K3A \
) \
LVARG_edox( \
ROW0_LEFT(K01, K02, K03, K04, K05), \
___2_MIDDLE_1___, \
ROW0_RIGHT(K06, K07, K08, K09, K0A), \
\
ROW1_LEFT(K11, K12, K13, K14, K15), \
___2_MIDDLE_2___, \
ROW1_RIGHT(K16, K17, K18, K19, K1A), \
\
ROW2_LEFT(K21, K22, K23, K24, K25), \
ROW2_RIGHT(K26, K27, K28, K29, K2A), \
\
ROW3_LEFT(K31, K32, K33, K34, K35), \
___2_MIDDLE_3___, \
ROW3_RIGHT(K36, K37, K38, K39, K3A), \
___5_BOTTOM_LEFT___, ___5_BOTTOM_RIGHT___, \
___12_DOX_ALL_THUMBS___ \
)
#define Base_dox_bepo( \
K01, K02, K03, K04, K05, \
K06, K07, K08, K09, K0A, \
K11, K12, K13, K14, K15, \
K16, K17, K18, K19, K1A, \
K21, K22, K23, K24, K25, \
K26, K27, K28, K29, K2A, \
K31, K32, K33, K34, K35, \
K36, K37, K38, K39, K3A \
) \
LVARG_edox( \
ROW0_LEFT(K01, K02, K03, K04, K05), \
___2_MIDDLE_1___, \
ROW0_RIGHT(K06, K07, K08, K09, K0A), \
\
ROW1_LEFT(K11, K12, K13, K14, K15), \
___2_MIDDLE_2___, \
ROW1_RIGHT(K16, K17, K18, K19, K1A), \
\
ROW2_LEFT(K21, K22, K23, K24, K25), \
ROW2_RIGHT(K26, K27, K28, K29, K2A), \
\
ROW3_LEFT(K31, K32, K33, K34, K35), \
___2_MIDDLE_3___, \
ROW3_RIGHT(K36, K37, K38, K39, K3A), \
___5_BOTTOM_LEFT___, ___5_BOTTOM_RIGHT___, \
___12_DOX_ALL_THUMBS_BP___ \
)
#define Base_dox_bepo6( \
K01, K02, K03, K04, K05, K06, \
K07, K08, K09, K0A, K0B, K0C, \
K11, K12, K13, K14, K15, K16, \
K17, K18, K19, K1A, K1B, K1C, \
K21, K22, K23, K24, K25, K26, \
K27, K28, K29, K2A, K2B, K2C \
) \
LVARG_edox( \
___6SYMBOL_BEPO_L___, \
___2_MIDDLE_T_BP___, \
___6SYMBOL_BEPO_R___, \
ROW1_LEFT_BP6(K01, K02, K03, K04, K05, K06), \
___2_MIDDLE_2_BP___, \
ROW1_RIGHT_BP6(K07, K08, K09, K0A, K0B, K0C), \
\
ROW2_LEFT_BP6(K11, K12, K13, K14, K15, K16), \
ROW2_RIGHT_BP6(K17, K18, K19, K1A, K1B, K1C), \
\
ROW3_LEFT_BP6(K21, K22, K23, K24, K25, K26), \
___2_MIDDLE_3_BP___, \
ROW3_RIGHT_BP6(K27, K28, K29, K2A, K2B, K2C), \
\
___5_BOTTOM_LEFT_BP___, ___5_BOTTOM_RIGHT_BP___, \
___12_DOX_ALL_THUMBS_BP___ \
)
#define Transient_dox6( \
K01, K02, K03, K04, K05, K06, \
K07, K08, K09, K0A, K0B, K0C, \
K11, K12, K13, K14, K15, K16, \
K17, K18, K19, K1A, K1B, K1C, \
K21, K22, K23, K24, K25, K26, \
K27, K28, K29, K2A, K2B, K2C, \
K31, K32, K33, K34, K35, K36, \
K37, K38, K39, K3A, K3B, K3C \
) \
LVARG_edox( \
K01, K02, K03, K04, K05, K06, \
___2___, \
K07, K08, K09, K0A, K0B, K0C, \
K11, K12, K13, K14, K15, K16, \
___2___, \
K17, K18, K19, K1A, K1B, K1C, \
K21, K22, K23, K24, K25, K26, \
K27, K28, K29, K2A, K2B, K2C, \
K31, K32, K33, K34, K35, K36, \
___2___, \
K37, K38, K39, K3A, K3B, K3C, \
___5___, ___5___, \
___12___ \
)
#define Dox_base(...) Base_dox(__VA_ARGS__)
#define Dox_bepo_base(...) Base_dox_bepo(__VA_ARGS__)
#define Dox_bepo_base6(...) Base_dox_bepo6(__VA_ARGS__)
#define Dox_transient(...) Transient_dox6(__VA_ARGS__)

View file

@ -0,0 +1,33 @@
// Copyright 2022 Ethan (@rocketstrong)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include "config_common.h"
/*
* 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 RP2040_BOOTLOADER_DOUBLE_TAP_RESET
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
#define SERIAL_USART_FULL_DUPLEX
#define SERIAL_USART_TX_PIN GP10
#define SERIAL_USART_RX_PIN GP9
#define RGB_DI_PIN GP16
#define DRIVER_LED_TOTAL 2
#define RGB_MATRIX_SPLIT { 1, 1 }
#define RGBLED_NUM 1
#define EE_HANDS

View file

@ -0,0 +1,130 @@
{
"manufacturer": "Ethan",
"keyboard_name": "alcor_dactyl",
"maintainer": "rocketstrong",
"bootloader": "rp2040",
"processor": "RP2040",
"url": "",
"usb": {
"device_version": "1.0.0",
"pid": "0x0000",
"vid": "0xFEED"
},
"features": {
"command": false,
"console": false,
"extrakey": true,
"mousekey": true,
"nkro": true,
"rgb_matrix": true
},
"split": {
"enabled": true
},
"diode_direction": "COL2ROW",
"matrix_pins": {
"cols": ["GP29", "GP28", "GP27", "GP26", "GP15", "GP14", "GP13"],
"rows": ["GP5", "GP4", "GP3", "GP2", "GP1", "GP0"]
},
"rgb_matrix": {
"driver": "WS2812",
"layout": [
{"x":0, "y":0.375},
{"x":16.5, "y":0.38}
]
},
"layouts": {
"LAYOUT":{
"layout":[
{"matrix":[0,0], "x":0, "y":0.375, "w":1.5},
{"matrix":[0,1], "x":1.5, "y":0.38},
{"matrix":[0,2], "x":2.5, "y":0.125},
{"matrix":[0,3], "x":3.5, "y":0.25},
{"matrix":[0,4], "x":4.5, "y":0.25},
{"matrix":[0,5], "x":5.5, "y":0.25},
{"matrix":[0,6], "x":6.5, "y":0.25},
{"matrix":[6,6], "x":10.5, "y":0.25},
{"matrix":[6,5], "x":11.5, "y":0.25},
{"matrix":[6,4], "x":12.5, "y":0.25},
{"matrix":[6,3], "x":13.5, "y":0.25},
{"matrix":[6,2], "x":14.5, "y":0.13},
{"matrix":[6,1], "x":15.5, "y":0.38},
{"matrix":[6,0], "x":16.5, "y":0.38, "w":1.5},
{"matrix":[1,0], "x":0, "y":1.375, "w":1.5},
{"matrix":[1,1], "x":1.5, "y":1.375},
{"matrix":[1,2], "x":2.5, "y":1.125},
{"matrix":[1,3], "x":3.5, "y":1.25},
{"matrix":[1,4], "x":4.5, "y":1.25},
{"matrix":[1,5], "x":5.5, "y":1.25},
{"matrix":[1,6], "x":6.5, "y":1.25},
{"matrix":[7,6], "x":10.5, "y":1.25},
{"matrix":[7,5], "x":11.5, "y":1.25},
{"matrix":[7,4], "x":12.5, "y":1.25},
{"matrix":[7,3], "x":13.5, "y":1.25},
{"matrix":[7,2], "x":14.5, "y":1.13},
{"matrix":[7,1], "x":15.5, "y":1.38},
{"matrix":[7,0], "x":16.5, "y":1.38, "w":1.5},
{"matrix":[2,0], "x":0, "y":2.375, "w":1.5},
{"matrix":[2,1], "x":1.5, "y":2.375},
{"matrix":[2,2], "x":2.5, "y":2.125},
{"matrix":[2,3], "x":3.5, "y":2.25},
{"matrix":[2,4], "x":4.5, "y":2.25},
{"matrix":[2,5], "x":5.5, "y":2.25},
{"matrix":[2,6], "x":6.5, "y":2.25},
{"matrix":[8,6], "x":10.5, "y":2.25},
{"matrix":[8,5], "x":11.5, "y":2.25},
{"matrix":[8,4], "x":12.5, "y":2.25},
{"matrix":[8,3], "x":13.5, "y":2.25},
{"matrix":[8,2], "x":14.5, "y":2.13},
{"matrix":[8,1], "x":15.5, "y":2.38},
{"matrix":[8,0], "x":16.5, "y":2.38, "w":1.5},
{"matrix":[3,0], "x":0, "y":3.375, "w":1.5},
{"matrix":[3,1], "x":1.5, "y":3.375},
{"matrix":[3,2], "x":2.5, "y":3.125},
{"matrix":[3,3], "x":3.5, "y":3.25},
{"matrix":[3,4], "x":4.5, "y":3.25},
{"matrix":[3,5], "x":5.5, "y":3.25},
{"matrix":[9,5], "x":11.5, "y":3.25},
{"matrix":[9,4], "x":12.5, "y":3.25},
{"matrix":[9,3], "x":13.5, "y":3.25},
{"matrix":[9,2], "x":14.5, "y":3.13},
{"matrix":[9,1], "x":15.5, "y":3.38},
{"matrix":[9,0], "x":16.5, "y":3.38, "w":1.5},
{"matrix":[4,0], "x":0.5, "y":4.375},
{"matrix":[4,1], "x":1.5, "y":4.375},
{"matrix":[4,2], "x":2.5, "y":4.125},
{"matrix":[4,3], "x":3.5, "y":4.25},
{"matrix":[10,3], "x":13.5, "y":4.25},
{"matrix":[10,2], "x":14.5, "y":4.13},
{"matrix":[10,1], "x":15.5, "y":4.38},
{"matrix":[10,0], "x":16.5, "y":4.38},
{"matrix":[4,4], "x":5, "y":4.5, "h":2},
{"matrix":[4,5], "x":6.25, "y":4.5, "h":1.5},
{"matrix":[10,5], "x":10.75, "y":4.5, "h":1.5},
{"matrix":[10,4], "x":12, "y":4.5, "h":2},
{"matrix":[5,4], "x":6.25, "y":6.25},
{"matrix":[5,5], "x":7.5, "y":6.25},
{"matrix":[11,5], "x":9.5, "y":6.25},
{"matrix":[11,4], "x":10.75, "y":6.25},
{"matrix":[5,2], "x":6.25, "y":7.25},
{"matrix":[5,3], "x":7.25, "y":7.25},
{"matrix":[11,3], "x":9.75, "y":7.25},
{"matrix":[11,2], "x":10.75, "y":7.25}
]
}
}
}

View file

@ -0,0 +1,100 @@
// Copyright 2022 Ethan (@rocketstrong)
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
/*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*/
enum Colemaklayers {
_ARSTG,
_NUMPAD,
_SYMBOLS
};
enum custom_keycodes {
AD_DDS = SAFE_RANGE,
AD_SCOPE
};
#define TT_NUM TT(_NUMPAD)
#define TT_SYM TT(_SYMBOLS)
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case AD_DDS:
if (!record->event.pressed) {
// when keycode AD_DDS is pressed
SEND_STRING("../");
} else {
// when keycode AD_DDS is released
}
break;
case AD_SCOPE:
if (!record->event.pressed) {
// when keycode AD_DDS is pressed
SEND_STRING("::");
} else {
// when keycode AD_DDS is released
}
break;
}
return true;
}
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ARSTG] = LAYOUT(
KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_MINS , KC_EQL , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_ESC ,
KC_TAB , KC_Q , KC_W , KC_F , KC_P , KC_B , KC_LBRC , KC_RBRC , KC_J , KC_L , KC_U , KC_Y , KC_SCLN , KC_BSLS ,
KC_ESC , KC_A , KC_R , KC_S , KC_T , KC_G , KC_PSCR , KC_PAUS , KC_M , KC_N , KC_E , KC_I , KC_O , KC_QUOT ,
KC_LSFT , KC_Z , KC_X , KC_C , KC_D , KC_V , KC_K , KC_H , KC_COMM , KC_DOT , KC_SLSH , KC_RSFT ,
KC_LCTL , KC_LGUI , KC_LALT , KC_DEL , KC_LEFT , KC_UP , KC_DOWN , KC_RIGHT,
KC_SPC , KC_BSPC , KC_TAB , KC_ENT ,
TT_NUM , KC_LSFT , KC_RSFT , TT_SYM ,
KC_LCTL , KC_LALT , KC_RALT , KC_RCTL
),
[_NUMPAD] = LAYOUT(
KC_NO , 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_TRNS , KC_PGUP , KC_HOME , KC_UP , KC_END , KC_NO , KC_NO , KC_NO , KC_NUM , KC_P7 , KC_P8 , KC_P9 , KC_PMNS , KC_NO ,
KC_TRNS , KC_PGDN , KC_LEFT , KC_DOWN , KC_RIGHT, KC_NO , KC_TRNS , KC_TRNS , KC_PSLS , KC_P4 , KC_P5 , KC_P6 , KC_PPLS , KC_NO ,
KC_TRNS , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_PAST , KC_P1 , KC_P2 , KC_P3 , KC_PEQL , KC_NO ,
KC_TRNS , KC_NO , KC_NO , KC_NO , KC_P0 , KC_PDOT , KC_PCMM , KC_NO ,
KC_TRNS , KC_TRNS , KC_TRNS , KC_PENT ,
KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS ,
KC_TRNS , QK_BOOT , KC_TRNS , KC_TRNS
),
[_SYMBOLS] = LAYOUT(
KC_NO , 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_TRNS , KC_QUOT , KC_LT , KC_GT , KC_DQT , KC_DOT , KC_NO , KC_NO , KC_AMPR , AD_SCOPE, KC_LBRC , KC_RBRC , KC_PERC , KC_NO ,
KC_TRNS , KC_EXLM , KC_MINS , KC_PLUS , KC_EQL , KC_HASH , KC_NO , KC_NO , KC_PIPE , KC_COLN , KC_LPRN , KC_RPRN , KC_QUES , KC_NO ,
KC_TRNS , KC_CIRC , KC_SLSH , KC_ASTR , KC_BSLS , AD_DDS , KC_TILD , KC_DLR , KC_LCBR , KC_RCBR , KC_AT , KC_NO ,
KC_TRNS , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO ,
KC_TRNS , KC_TRNS , KC_TRNS , KC_PENT ,
KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS ,
KC_TRNS , KC_TRNS , QK_BOOT , KC_TRNS
)
};

View file

@ -0,0 +1,43 @@
// Copyright 2022 Ethan (@rocketstrong)
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
/*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*/
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
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_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_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO
)
};

View file

@ -0,0 +1,28 @@
# alcor_dactyl
![alcor_dactyl](https://i.imgur.com/F0E1JCQh.jpg)
This is a handwired dactyl manufor utalising an RP2040-zero
* Keyboard Maintainer: [Ethan](https://github.com/rocketstrong)
* Hardware Supported: Waveshare RP2040-Zero
* Hardware Availability: https://www.waveshare.com/wiki/RP2040-Zero
* 3D Print File Source: https://dactyl.mbugert.de/manuform
Make example for this keyboard (after setting up your build environment):
make handwired/alcor_dactyl:default
Flashing example for this keyboard:
make handwired/alcor_dactyl:default:flash
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
## Bootloader
Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available

View file

@ -0,0 +1,2 @@
SERIAL_DRIVER = vendor
WS2812_DRIVER = vendor

View file

@ -0,0 +1,18 @@
/*
Copyright 2022 fgoodwin <fgoodwin@north-tech.net>
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 "5x6_6.h"

View file

@ -0,0 +1,47 @@
/*
Copyright 2022 fgoodwin <fgoodwin@north-tech.net>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "quantum.h"
#pragma once
#define XXX KC_NO
#define LAYOUT_split_5x6_6( \
L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, \
L42, L43, L44, L45, R40, R41, R42, R43, \
L54, L55, R50, R51, \
L64, L65, R60, R61 \
) { \
{ L00, L01, L02, L03, L04, L05 }, \
{ L10, L11, L12, L13, L14, L15 }, \
{ L20, L21, L22, L23, L24, L25 }, \
{ L30, L31, L32, L33, L34, L35 }, \
{ XXX, XXX, L42, L43, L44, L45 }, \
{ XXX, XXX, XXX, XXX, L54, L55 }, \
{ XXX, XXX, XXX, XXX, L64, L65 }, \
\
{ R00, R01, R02, R03, R04, R05 }, \
{ R10, R11, R12, R13, R14, R15 }, \
{ R20, R21, R22, R23, R24, R25 }, \
{ R30, R31, R32, R33, R34, R35 }, \
{ R40, R41, R42, R43, XXX, XXX }, \
{ R50, R51, XXX, XXX, XXX, XXX }, \
{ R60, R61, XXX, XXX, XXX, XXX } \
}

View file

@ -0,0 +1,34 @@
/*
Copyright 2022 fgoodwin <fgoodwin@north-tech.net>
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"
/* key matrix size */
// Rows are doubled-up
#define MATRIX_COLS 6
#define MATRIX_ROWS 14
#undef SOFT_SERIAL_PIN
#define SOFT_SERIAL_PIN D3
// wiring of each half
#define MATRIX_COL_PINS { D4, C6, D7, E6, B4, B5 }
#define MATRIX_ROW_PINS { F5, F6, F7, B1, B3, B2, B6 }
#define DIODE_DIRECTION COL2ROW

View file

@ -0,0 +1,93 @@
{
"keyboard_name": "Dactyl Manuform 5x6+6",
"url": "https://github.com/fgoodwin/dactyl-manuform-5x6_6/tree/main/5x6_6",
"maintainer": "fgoodwin",
"usb": {
"vid": "0x444D",
"pid": "0x3536",
"device_version": "0.0.3"
},
"layouts": {
"LAYOUT_split_5x6_6": {
"layout": [
{"x": 0, "y": 0},
{"x": 1, "y": 0},
{"x": 2, "y": 0},
{"x": 3, "y": 0},
{"x": 4, "y": 0},
{"x": 5, "y": 0},
{"x": 11, "y": 0},
{"x": 12, "y": 0},
{"x": 13, "y": 0},
{"x": 14, "y": 0},
{"x": 15, "y": 0},
{"x": 16, "y": 0},
{"x": 0, "y": 1},
{"x": 1, "y": 1},
{"x": 2, "y": 1},
{"x": 3, "y": 1},
{"x": 4, "y": 1},
{"x": 5, "y": 1},
{"x": 11, "y": 1},
{"x": 12, "y": 1},
{"x": 13, "y": 1},
{"x": 14, "y": 1},
{"x": 15, "y": 1},
{"x": 16, "y": 1},
{"x": 0, "y": 2},
{"x": 1, "y": 2},
{"x": 2, "y": 2},
{"x": 3, "y": 2},
{"x": 4, "y": 2},
{"x": 5, "y": 2},
{"x": 11, "y": 2},
{"x": 12, "y": 2},
{"x": 13, "y": 2},
{"x": 14, "y": 2},
{"x": 15, "y": 2},
{"x": 16, "y": 2},
{"x": 0, "y": 3},
{"x": 1, "y": 3},
{"x": 2, "y": 3},
{"x": 3, "y": 3},
{"x": 4, "y": 3},
{"x": 5, "y": 3},
{"x": 11, "y": 3},
{"x": 12, "y": 3},
{"x": 13, "y": 3},
{"x": 14, "y": 3},
{"x": 15, "y": 3},
{"x": 16, "y": 3},
{"x": 2, "y": 4},
{"x": 3, "y": 4},
{"x": 5, "y": 4},
{"x": 6, "y": 4},
{"x": 7, "y": 4},
{"x": 9, "y": 4},
{"x": 10, "y": 4},
{"x": 11, "y": 4},
{"x": 13, "y": 4},
{"x": 14, "y": 4},
{"x": 5, "y": 5},
{"x": 6, "y": 5},
{"x": 7, "y": 5},
{"x": 5, "y": 5},
{"x": 9, "y": 5},
{"x": 10, "y": 5}
]
}
}
}

View file

@ -0,0 +1,39 @@
/*
Copyright 2022 fgoodwin <fgoodwin@north-tech.net>
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_split_5x6_6(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS,
KC_GRV, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_EQL,
KC_TAB, 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_MINS,
KC_NO, KC_LGUI, KC_LCTL, KC_SPC, KC_RSFT, KC_ENT, KC_LBRC, KC_RBRC,
MO(1), LCTL(KC_C), KC_BSPC, MO(1),
KC_LALT, LCTL(KC_V), KC_DEL, KC_RSFT
),
[1] = LAYOUT_split_5x6_6(
KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F12,
KC_TRNS, KC_TRNS, KC_PSCR, KC_DOWN, KC_UP, KC_HOME, KC_END, KC_LEFT, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSLS, KC_TRNS,
RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
MO(1), LCTL(KC_C), KC_TRNS, MO(1),
KC_TRNS, LCTL(KC_V), KC_TRNS, KC_TRNS
)
};

View file

@ -0,0 +1,22 @@
# Dactyl Manuform (5x6) with 6 thumb cluster
The [Dactyl-Manuform](https://github.com/tshort/dactyl-keyboard) is a split curved keyboard based on the design of [adereth dactyl](https://github.com/adereth/dactyl-keyboard) and thumb cluster design of the [manuform](https://geekhack.org/index.php?topic=46015.0) keyboard, the hardware is similar to the let's split keyboard. All information needed for making one is in the first link.
![Imgur](https://i.imgur.com/MvtMG1vh.png)
* Keyboard Maintainer: fgoodwin
* Hardware Supported: Pro Micro Micro Micro USB or USB C
Make example for this keyboard (after setting up your build environment):
make handwired/dactyl_manuform/5x6_6:default
Flashing example for this keyboard:
make handwired/dactyl_manuform/5x6_6:default:flash
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
Enter the bootloader in 2 ways:
**Physical reset button**: Briefly press the reset button on the bottom of the case, or bridge the reset and ground pins momentarily on the pro micro
**Keycode in layout**: Press the key mapped to `QK_BOOT` (by default hold down `MO(1)` and press the left most key in row 5 on the left hand half of the keyboard)

View file

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

View file

@ -1,5 +1,5 @@
/*
Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.com>
Copyright 2018-2022 Eric Gebhart <e.a.gebhart@gmail.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
@ -15,34 +15,4 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "keymap_bepo.h"
#include "ericgebhart.h"
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// 4x10
[_DVORAK] = BASE_5x14(___NUMS___, ___DVORAK___),
[_QWERTY] = BASE_5x14(___NUMS___, ___QWERTY___),
[_COLEMAK] = BASE_5x14(___NUMS___, ___COLEMAK_DH___),
[_BEAKL] = BASE_5x14(___BKLNUMS___, ___BEAKL15___),
//[_DVORAK_BP] = BASE_5x14_bepo(___DVORAK_FR___),
//[_BEAKL_BP] = BASE_5x14_bepo(___BEAKL15_FR___),
// 4x12
//[_BEPO] = BASE_5x14_bepo6(___BEPO6_FR___),
// transient macro takes a 3x12 for args
[_SYMB] = TRANSIENT_5x14(___12___, ___SYMB_BEAKLA_3x12___),
//[_SYMB_BP] = TRANSIENT_5x14(___SYMB_BEAKLA_BP_3x12___),
[_TOPROWS] = TRANSIENT_5x14(___12___, ___TOPROWS_3x12___),
//[_TOPROWS_BP] = TRANSIENT_5x14(___TOPROWS_BP_3x12___),
[_KEYPAD] = TRANSIENT_5x14(___12___, ___KP_C_3x12___),
//[_KEYPAD_BP] = TRANSIENT_5x14(___KP_C_BP_3x12___),
// Navigation and control
[_NAV] = TRANSIENT_5x14(___12___, ___NAV_3x12___),
[_LAYERS] = TRANSIENT_5x14(___12___, ___LAYERS_3x12___),
//[_RGB] = TRANSIENT_5x14(___12___, ___RGB_3x12___),
};
// See: users/ericgebhart.

View file

@ -1,5 +1,5 @@
/*
Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.com>
Copyright 2018-2022 Eric Gebhart <e.a.gebhart@gmail.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
@ -14,40 +14,5 @@
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 "keymap_bepo.h"
#include "ericgebhart.h"
#define LAYOUT_PVARG(...) LAYOUT_pretty(__VA_ARGS__)
#define Kinesis_base(...) Base_4x6_4_6(__VA_ARGS__)
#define Kinesis_bepo_base(...) Base_bepo_4x6_4_6(__VA_ARGS__)
#define Kinesis_bepo_base6(...) Base_bepo6_4x6_4_6(__VA_ARGS__)
#define Kinesis_transient(...) Transient6_4x6_4_6(__VA_ARGS__)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Qwerty Base layers
[_DVORAK] = Kinesis_base(___NUMS___, ___DVORAK___),
[_QWERTY] = Kinesis_base(___NUMS___, ___QWERTY___),
[_COLEMAK] = Kinesis_base(___NUMS___, ___COLEMAK_DH___),
[_BEAKL] = Kinesis_base(___BKLNUMS___, ___BEAKL15___),
// Bepo Base layers
[_DVORAK_BP] = Kinesis_bepo_base(___NUMS_BP___, ___DVORAK_FR___),
[_BEAKL_BP] = Kinesis_bepo_base(___BKLNUMS_BP___, ___BEAKL15_FR___),
[_BEPO] = Kinesis_bepo_base6(___BEPO6___),
// transient layers.
// Switch to using a transient layer macro
[_SYMB] = Kinesis_transient(___12_FUNC___, ___SYMB_BEAKLA_3x12___),
[_SYMB_BP] = Kinesis_transient(___12_FUNC___, ___SYMB_BEAKLA_BP_3x12___),
[_TOPROWS] = Kinesis_transient(___12___, ___TOPROWS_3x12___),
[_TOPROWS_BP] = Kinesis_transient(___12___, ___TOPROWS_BP_3x12___),
[_NAV] = Kinesis_transient(___12___, ___NAV_3x12___),
[_LAYERS] = Kinesis_transient(___12___, ___LAYERS_3x12___),
[_ADJUST] = Kinesis_transient(___12___, ___ADJUST_3x12___),
//[_RGB] = Kinesis_transient(___12___, ___RGB_3x12___),
};
// See: users/ericgebhart.

View file

@ -11,6 +11,5 @@ BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = no # Audio output
UNICODE_ENABLE = no # Unicode
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend

View file

@ -0,0 +1,60 @@
/* Copyright 2022 Joah Nelson (Jels)
*
* 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"
#ifdef RGB_MATRIX_ENABLE
# define RGB_DI_PIN A10
# define RGBLED_NUM 28
# define DRIVER_LED_TOTAL RGBLED_NUM
# define BACKLIGHT_LIMIT_VAL 200
# define ENABLE_RGB_MATRIX_ALPHAS_MODS
# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
# define ENABLE_RGB_MATRIX_BREATHING
# define ENABLE_RGB_MATRIX_BAND_SAT
# define ENABLE_RGB_MATRIX_BAND_VAL
# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
# define ENABLE_RGB_MATRIX_CYCLE_ALL
# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
# define ENABLE_RGB_MATRIX_DUAL_BEACON
# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
# define ENABLE_RGB_MATRIX_RAINDROPS
# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
# define ENABLE_RGB_MATRIX_HUE_BREATHING
# define ENABLE_RGB_MATRIX_HUE_PENDULUM
# define ENABLE_RGB_MATRIX_HUE_WAVE
# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
# define ENABLE_RGB_MATRIX_PIXEL_FLOW
# define ENABLE_RGB_MATRIX_PIXEL_RAIN
#endif
/* 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

View file

@ -0,0 +1,78 @@
{
"keyboard_name": "Pumpkin Pad",
"manufacturer": "Laser Ninja",
"url": "",
"maintainer": "Jels",
"processor": "STM32F072",
"bootloader": "stm32-dfu",
"debounce": 5,
"features": {
"bootmagic": true,
"command": false,
"console": false,
"extrakey": false,
"mousekey": false,
"nkro": false,
"rgb_matrix": true
},
"matrix_pins": {
"direct": [
["A9", "B3", "B9", "NO_PIN"],
["A8", "B12", "A2", "A1"],
["B15", "B14", "B13", "NO_PIN"]
]
},
"usb": {
"vid": "0x6C6E",
"pid": "0x7070",
"device_version": "0.0.1"
},
"layouts": {
"LAYOUT": {
"layout": [
{ "matrix": [0, 0], "x": 0.5, "y": 0 },
{ "matrix": [0, 1], "x": 1.5, "y": 0 },
{ "matrix": [0, 2], "x": 2.5, "y": 0 },
{ "matrix": [1, 0], "x": 0, "y": 1 },
{ "matrix": [1, 1], "x": 1, "y": 1 },
{ "matrix": [1, 2], "x": 2, "y": 1 },
{ "matrix": [1, 3], "x": 3, "y": 1 },
{ "matrix": [2, 0], "x": 0.5, "y": 2 },
{ "matrix": [2, 1], "x": 1.5, "y": 2 },
{ "matrix": [2, 2], "x": 2.5, "y": 2 }
]
}
},
"rgb_matrix": {
"driver": "WS2812",
"layout": [
{ "flags": 2, "x": 36, "y": 3 },
{ "flags": 2, "x": 86, "y": 2 },
{ "flags": 2, "x": 138, "y": 2 },
{ "flags": 2, "x": 188, "y": 2 },
{ "flags": 2, "x": 215, "y": 16 },
{ "flags": 2, "x": 215, "y": 16 },
{ "flags": 4, "matrix": [0, 2], "x": 167, "y": 17 },
{ "flags": 4, "matrix": [0, 1], "x": 112, "y": 17 },
{ "flags": 4, "matrix": [0, 0], "x": 57, "y": 17 },
{ "flags": 2, "x": 9, "y": 15 },
{ "flags": 2, "x": 9, "y": 15 },
{ "flags": 2, "x": 6, "y": 34 },
{ "flags": 2, "x": 9, "y": 48 },
{ "flags": 2, "x": 9, "y": 48 },
{ "flags": 4, "matrix": [1, 0], "x": 29, "y": 38 },
{ "flags": 4, "matrix": [1, 1], "x": 84, "y": 38 },
{ "flags": 4, "matrix": [1, 2], "x": 140, "y": 38 },
{ "flags": 2, "x": 218, "y": 34 },
{ "flags": 2, "x": 215, "y": 48 },
{ "flags": 2, "x": 215, "y": 48 },
{ "flags": 2, "x": 188, "y": 61 },
{ "flags": 4, "matrix": [2, 2], "x": 167, "y": 59 },
{ "flags": 2, "x": 138, "y": 61 },
{ "flags": 4, "matrix": [2, 1], "x": 112, "y": 59 },
{ "flags": 2, "x": 86, "y": 61 },
{ "flags": 4, "matrix": [2, 0], "x": 57, "y": 59 },
{ "flags": 2, "x": 36, "y": 61 }
]
}
}

View file

@ -0,0 +1,31 @@
/* Copyright 2022 Joah Nelson (Jels)
*
* 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_F1, KC_F2, KC_F3,
KC_F4, KC_F5, KC_F6, KC_F7,
KC_F8, MO(1), KC_F10
),
[1] = LAYOUT(
RGB_TOG, RGB_MOD, RGB_RMOD,
RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD,
RGB_VAI, RGB_VAD, _______
)
};

View file

@ -0,0 +1,41 @@
/* Copyright 2022 Joah Nelson (Jels)
*
* 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_F1, KC_F2, KC_F3,
KC_F4, KC_F5, KC_F6, KC_F7,
KC_F8, MO(1), KC_F10
),
[1] = LAYOUT(
RGB_TOG, RGB_MOD, RGB_RMOD,
RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD,
RGB_VAI, RGB_VAD, _______
),
[2] = LAYOUT(
_______, _______, _______,
_______, _______, _______, _______,
_______, _______, _______
),
[3] = LAYOUT(
_______, _______, _______,
_______, _______, _______, _______,
_______, _______, _______
)
};

View file

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

View file

@ -0,0 +1,23 @@
# Pumpkin Pad
![pumpkin-pad](https://i.imgur.com/jFkl9rwh.jpg)
A 60% PCB
- Keyboard Maintainer: [Jels](https://github.com/Jels02)
- Hardware Supported: Pumpkin Pad PCB
- Hardware Availabililty: [Laser_Ninja](https://kennui.com/w/Laser_Ninja)
Make example for this keyboard (after setting up your build environment):
make laser_ninja/pumpkin_pad:default
Flashing example for this keyboard:
make laser_ninja/pumpkin_pad:default:flash
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
- **Bootmagic reset**: Hold down the top left key and plug in the keyboard
- **Physical reset button**: Briefly press the button on the back of the PCB
- **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available

View file

@ -0,0 +1 @@
# This file is intentionally left blank.

View file

@ -1,5 +1,5 @@
/*
Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.com>
Copyright 2018-2022 Eric Gebhart <e.a.gebhart@gmail.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
@ -14,88 +14,5 @@
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 "ericgebhart.h"
#include "layouts.h"
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Qwerty based Base layers
[_DVORAK] = Rebound_base(___DVORAK___),
[_BEAKL] = Rebound_base(___BEAKL15___),
[_COLEMAK] = Rebound_base(___COLEMAK_DH___),
[_QWERTY] = Rebound_base(___QWERTY___),
// Bepo base layers
[_BEAKL_BP] = Rebound_base_bepo(___BEAKL15_FR___),
[_DVORAK_BP] = Rebound_base_bepo(___DVORAK_FR___),
[_BEPO] = Rebound_base_bepo6(___BEPO6___),
// Transient layers.
[_SYMB] = Rebound_transient(___SYMB_BEAKLA_3x12___),
[_SYMB_BP] = Rebound_transient(___SYMB_BEAKLA_BP_3x12___),
[_KEYPAD] = Rebound_transient(___KP_C_3x12___),
[_KEYPAD_BP] = Rebound_transient(___KP_C_BP_3x12___),
[_TOPROWS] = Rebound_transient(___TOPROWS_3x12___),
[_TOPROWS_BP] = Rebound_transient(___TOPROWS_BP_3x12___),
[_NAV] = Rebound_transient(___NAV_3x12___),
[_LAYERS] = Rebound_transient(___LAYERS_3x12___),
};
bool encoder_update_user(uint8_t index, bool clockwise) {
switch(get_highest_layer(layer_state)){
case _DVORAK:
if (clockwise) {
tap_code16(KC_VOLD);
} else {
tap_code16(KC_VOLU);
}
break;
case _NAV:
if (clockwise) {
tap_code16(S(KC_TAB));
} else {
tap_code16(KC_TAB);
}
break;
}
return true;
}
#ifdef OLED_ENABLE
void oled_task_user(void) {
// Host Keyboard Layer Status
oled_write_P(PSTR(""), false);
switch (get_highest_layer(layer_state)) {
case _BASE:
oled_write_P(PSTR("Rebound\n"), false);
oled_write_P(PSTR("Rev4\n"), false);
break;
case _NAV:
oled_write_P(PSTR("Nav\n"), false);
break;
case _SYMB_BEAKL:
case _SYMB:
oled_write_P(PSTR("Symbols\n"), false);
break;
case _KEYPAD:
oled_write_P(PSTR("Top Rows\n"), false);
break;
default:
// Or use the write_ln shortcut over adding '\n' to the end of your string
oled_write_ln_P(PSTR("Undefined"), false);
}
// Host Keyboard LED Status
led_t led_state = host_keyboard_led_state();
oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
oled_write_P(led_state.caps_lock ? PSTR("CAPS") : PSTR(" "), false);
oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
}
#endif
// See: users/ericgebhart.

View file

@ -1,113 +0,0 @@
/*
Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.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/>.
*/
/********************************************************************/
/* Rebound 4 rows, 1x12, 3x13 */
/********************************************************************/
#define LVARG_rebound(...) LAYOUT_all(__VA_ARGS__)
#define LAYOUT_rebound_base( \
K01, K02, K03, K04, K05, \
K06, K07, K08, K09, K0A, \
K11, K12, K13, K14, K15, \
K16, K17, K18, K19, K1A, \
K21, K22, K23, K24, K25, \
K26, K27, K28, K29, K2A \
) \
LVARG_rebound( \
ROW1_LEFT(K01, K02, K03, K04, K05), \
ROW1_RIGHT(K06, K07, K08, K09, K0A), \
\
ROW2_LEFT(K11, K12, K13, K14, K15), \
KC_CCCV, \
ROW2_RIGHT(K16, K17, K18, K19, K1A), \
\
ROW3_LEFT(K21, K22, K23, K24, K25), \
MO(_ADJUST), \
ROW3_RIGHT(K26, K27, K28, K29, K2A), \
___13_BOTTOM___ \
)
#define LAYOUT_rebound_base_bepo( \
K01, K02, K03, K04, K05, \
K06, K07, K08, K09, K0A, \
K11, K12, K13, K14, K15, \
K16, K17, K18, K19, K1A, \
K21, K22, K23, K24, K25, \
K26, K27, K28, K29, K2A \
) \
LVARG_rebound( \
ROW1_LEFT_BP(K01, K02, K03, K04, K05), \
ROW1_RIGHT_BP(K06, K07, K08, K09, K0A), \
\
ROW2_LEFT_BP(K11, K12, K13, K14, K15), \
KC_CCCV, \
ROW2_RIGHT_BP(K16, K17, K18, K19, K1A), \
\
ROW3_LEFT_BP(K21, K22, K23, K24, K25), \
MO(_ADJUST), \
ROW3_RIGHT_BP(K26, K27, K28, K29, K2A), \
___13_BOTTOM_BP___ \
)
// Just for bepo because it's a 3x6 matrix on each side.
// So 3 pairs of 6 keys, left and right.
#define LAYOUT_rebound_base_bepo6( \
K01, K02, K03, K04, K05, K06, \
K07, K08, K09, K0A, K0B, K0C, \
K11, K12, K13, K14, K15, K16, \
K17, K18, K19, K1A, K1B, K1C, \
K21, K22, K23, K24, K25, K26, \
K27, K28, K29, K2A, K2B, K2C \
) \
LVARG_rebound( \
ROW1_LEFT_BP6(K01, K02, K03, K04, K05, K06), \
ROW1_RIGHT_BP6(K07, K08, K09, K0A, K0B, K0C), \
\
ROW2_LEFT_BP6(K11, K12, K13, K14, K15, K16), \
KC_CCCV, \
ROW2_RIGHT_BP6(K17, K18, K19, K1A, K1B, K1C), \
\
ROW3_LEFT_BP6(K21, K22, K23, K24, K25, K26), \
MO(_ADJUST), \
ROW3_RIGHT_BP6(K27, K28, K29, K2A, K2B, K2C), \
___13_BOTTOM_BP___ \
)
#define LAYOUT_rebound_transient( \
K01, K02, K03, K04, K05, K06, \
K07, K08, K09, K0A, K0B, K0C, \
K11, K12, K13, K14, K15, K16, \
K17, K18, K19, K1A, K1B, K1C, \
K21, K22, K23, K24, K25, K26, \
K27, K28, K29, K2A, K2B, K2C \
) \
LVARG_rebound( \
K01, K02, K03, K04, K05, K06, \
K07, K08, K09, K0A, K0B, K0C, \
K11, K12, K13, K14, K15, K16, \
___, \
K17, K18, K19, K1A, K1B, K1C, \
K21, K22, K23, K24, K25, K26, \
___, \
K27, K28, K29, K2A, K2B, K2C, \
___, ___12___)
#define Rebound_base(...) LAYOUT_rebound_base(__VA_ARGS__)
#define Rebound_base_bepo(...) LAYOUT_rebound_base_bepo(__VA_ARGS__)
#define Rebound_base_bepo6(...) LAYOUT_rebound_base_bepo6(__VA_ARGS__)
#define Rebound_transient(...) LAYOUT_rebound_transient(__VA_ARGS__)

View file

@ -1,6 +1,7 @@
# Build Options
# change yes to no to disable
#
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
@ -11,6 +12,7 @@ BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = no # Audio output
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
TAP_DANCE_ENABLE = yes # Enable the tap dance feature.

View file

@ -0,0 +1,43 @@
/* Copyright 2021 Nix Keyboards
*
* 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"
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
#define MATRIX_ROW_PINS \
{ B3, B7, F5, F4, F1 }
#define MATRIX_COL_PINS \
{ F0, F7, C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, D1, D0 }
#define DIODE_DIRECTION COL2ROW
/* encoder */
#define ENCODERS_PAD_A \
{ B0 }
#define ENCODERS_PAD_B \
{ B1 }
#define ENCODER_RESOLUTION 4
/* Debounce reduces chatter */
#define DEBOUNCE 5
/* Set the Bootmagic key to the escape key (default key doesn't exist 0,0) */
#define BOOTMAGIC_LITE_ROW 0
#define BOOTMAGIC_LITE_COLUMN 1

View file

@ -0,0 +1,16 @@
/* Copyright 2021 Nix Keyboards
*
* 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 "day_off.h"

View file

@ -0,0 +1,32 @@
/* Copyright 2021 Nix Keyboards
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "quantum.h"
#define LAYOUT_all(K001, K002, K003, K004, K005, K006, K007, K008, K009, K010,\
K011, K012, K013, K014, K101, K102, K103, K104, K105, K106, \
K107, K108, K109, K110, K111, K112, K113, K114, K200, K201, \
K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, \
K212, K213, K214, K300, K301, K302, K303, K304, K305, K306, \
K307, K308, K309, K310, K311, K312, K313, K314, K400, K401, \
K402, K403, K405, K407, K408, K410, K411, K412, K413, K414) \
{ {KC_NO, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014}, \
{KC_NO, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114}, \
{K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214}, \
{K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314}, \
{K400, K401, K402, K403, KC_NO, K405, KC_NO, K407, K408, KC_NO, K410, K411, K412, K413, KC_NO} \
}

View file

@ -0,0 +1,87 @@
{
"keyboard_name": "DayOff",
"manufacturer": "NixKeyboards",
"url": "nixkeyboards.com",
"maintainer": "Schrobie",
"usb": {
"vid": "0x6E6B",
"pid": "0x444F",
"device_version": "0.0.1"
},
"layouts": {
"LAYOUT_all": {
"layout": [
{"label":"~", "x":1.5, "y":0},
{"label":"!", "x":2.5, "y":0},
{"label":"@", "x":3.5, "y":0},
{"label":"#", "x":4.5, "y":0},
{"label":"$", "x":5.5, "y":0},
{"label":"%", "x":6.5, "y":0},
{"label":"^", "x":7.5, "y":0},
{"label":"&", "x":8.5, "y":0},
{"label":"*", "x":9.5, "y":0},
{"label":"(", "x":10.5, "y":0},
{"label":")", "x":11.5, "y":0},
{"label":"_", "x":12.5, "y":0},
{"label":"+", "x":13.5, "y":0},
{"label":"Bksp", "x":14.5, "y":0},
{"label":"Del", "x":15.5, "y":0},
{"label":"Tab", "x":1.5, "y":1, "w":1.5},
{"label":"Q", "x":3, "y":1},
{"label":"W", "x":4, "y":1},
{"label":"E", "x":5, "y":1},
{"label":"R", "x":6, "y":1},
{"label":"T", "x":7, "y":1},
{"label":"Y", "x":8, "y":1},
{"label":"U", "x":9, "y":1},
{"label":"I", "x":10, "y":1},
{"label":"O", "x":11, "y":1},
{"label":"P", "x":12, "y":1},
{"label":"{", "x":13, "y":1},
{"label":"}", "x":14, "y":1},
{"label":"|", "x":15, "y":1, "w":1.5},
{"label":"M1", "x":0, "y":2},
{"label":"Caps Lock", "x":1.5, "y":2, "w":1.75},
{"label":"A", "x":3.25, "y":2},
{"label":"S", "x":4.25, "y":2},
{"label":"D", "x":5.25, "y":2},
{"label":"F", "x":6.25, "y":2},
{"label":"G", "x":7.25, "y":2},
{"label":"H", "x":8.25, "y":2},
{"label":"J", "x":9.25, "y":2},
{"label":"K", "x":10.25, "y":2},
{"label":"L", "x":11.25, "y":2},
{"label":":", "x":12.25, "y":2},
{"label":"\"", "x":13.25, "y":2},
{"label":"Enter", "x":14.25, "y":2, "w":2.25},
{"label":"M2", "x":0, "y":3},
{"label":"", "x":1.5, "y":3, "w":1.25},
{"label":"Shift", "x":2.75, "y":3},
{"label":"Z", "x":3.75, "y":3},
{"label":"X", "x":4.75, "y":3},
{"label":"C", "x":5.75, "y":3},
{"label":"V", "x":6.75, "y":3},
{"label":"B", "x":7.75, "y":3},
{"label":"N", "x":8.75, "y":3},
{"label":"M", "x":9.75, "y":3},
{"label":"<", "x":10.75, "y":3},
{"label":">", "x":11.75, "y":3},
{"label":"?", "x":12.75, "y":3},
{"label":"Shift", "x":13.75, "y":3, "w":1.75},
{"label":"", "x":15.5, "y":3},
{"label":"M3", "x":0, "y":4},
{"label":"Ctrl", "x":1.5, "y":4, "w":1.25},
{"label":"Win", "x":2.75, "y":4, "w":1.25},
{"label":"Alt", "x":4, "y":4, "w":1.25},
{"label":"Space", "x":5.25, "y":4, "w":6.25},
{"label":"Space", "x":5.25, "y":4, "w":2.25},
{"label":"Mod", "x":7.5, "y":4, "w":1.25},
{"label":"Space", "x":8.75, "y":4, "w":2.25},
{"label":"Alt", "x":11.5, "y":4, "w":1.25},
{"label":"Win", "x":12.75, "y":4, "w":1.25},
{"label":"Menu", "x":14, "y":4, "w":1.25},
{"label":"Ctrl", "x":15.25, "y":4, "w":1.25}
]
}
}
}

View file

@ -0,0 +1,60 @@
/* Copyright 2021 Nix Keyboards
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_all(
KC_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_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
KC_MPLY, 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_BSLS, KC_ENT,
KC_MNXT, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_BSLS,
KC_MPRV, KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_SPC, KC_RGUI, KC_RALT, KC_APP, KC_RCTL, RESET
),
[1] = LAYOUT_all(
RESET, 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_BSPC,
KC_MPLY, 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_BSLS, KC_ENT,
KC_MNXT, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_BSLS,
KC_MPRV, KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_SPC, KC_RGUI, KC_RALT, KC_APP, KC_RCTL, RESET
),
[2] = LAYOUT_all(
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_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
KC_MPLY, 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_BSLS, KC_ENT,
KC_MNXT, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_BSLS,
KC_MPRV, KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_SPC, KC_RGUI, KC_RALT, KC_APP, KC_RCTL, RESET
),
[3] = LAYOUT_all(
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_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
KC_MPLY, 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_BSLS, KC_ENT,
KC_MNXT, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_BSLS,
KC_MPRV, KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_SPC, KC_RGUI, KC_RALT, KC_APP, KC_RCTL, RESET
),
};
bool encoder_update_user(uint8_t index, bool clockwise) {
if (clockwise) {
tap_code(KC_VOLU);
}
else {
tap_code(KC_VOLD);
}
return false;
}

View file

@ -0,0 +1,23 @@
# Day Off Vial Support
[More info at nixkeyboards.com](https://nixkeyboards.com/)
* Keyboard Maintainer: [Schrobie](https://github.com/schrobie)
* Hardware Supported: Day Off PCBs, both solderable and hotswap
* Hardware Availability: [Nix Keyboards](https://nixkeyboards.com/)
Make example for this keyboard (after setting up your build environment):
make nixkeyboards/day_off:default
Flashing example for this keyboard:
make nixkeyboards/day_off:default:flash
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the key at (0,1) in the matrix (usually the top left key or Escape) and plug in the keyboard
* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
* **Keycode in layout**: Press the key mapped to `RESET` if it is available

View file

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

View file

@ -0,0 +1,45 @@
/* Copyright 2015-2021 Jack Humbert
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#ifdef AUDIO_ENABLE
# define STARTUP_SONG SONG(PREONIC_SOUND)
// #define STARTUP_SONG SONG(NO_SOUND)
# define DEFAULT_LAYER_SONGS \
{ SONG(QWERTY_SOUND), SONG(COLEMAK_SOUND), SONG(DVORAK_SOUND) }
#endif
#define MUSIC_MASK (keycode != KC_NO)
/*
* MIDI options
*/
/* 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

View file

@ -0,0 +1,231 @@
/* Copyright 2015-2021 Jack Humbert
* Copyright 2022 Rocco Meli <@RMeli>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
#include "muse.h"
#include "rmeli.h"
enum preonic_layers { _QWERTY, _COLEMAK, _LOWER, _RAISE, _ADJUST };
enum preonic_keycodes { QWERTY = SAFE_RANGE, COLEMAK, LOWER, RAISE, BACKLIT };
#define ____________________BOTTOM_L_x6_____________________ BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC
#define ____________________BOTTOM_R_x6_____________________ KC_ENT, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
/* LAYOUT
*
* ,-----------------------------------------------------------.
* | | | | | | | | | | | | |
* |----+----+----+----+----+----+----+----+----+----+----+----|
* | | | | | | | | | | | | |
* |----+----+----+----+----+----+----+----+----+----+----+----|
* | | | | | | | | | | | | |
* |----+----+----+----+----+----+----+----+----+----+----+----|
* | | | | | | | | | | | | |
* |----+----+----+----+----+----+----+----+----+----+----+----|
* | | | | | | | | | | | | |
* `----+----+----+----+----+----+----+----+----+----+----+----'
*/
// Define wrapper for standard CRKB layout
#define LAYOUT_wrapper(...) LAYOUT_preonic_grid(__VA_ARGS__)
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = LAYOUT_wrapper(
___________________NUMBER_LEFT_x6___________________, ___________________NUMBER_RIGHT_x6__________________,
___________________QWERTY_L1_x6_____________________, ___________________QWERTY_R1_x6_____________________,
___________________QWERTY_L2_x6_____________________, ___________________QWERTY_R2_x6_____________________,
___________________QWERTY_L3_x6_____________________, ___________________QWERTY_R3_x6_____________________,
____________________BOTTOM_L_x6_____________________, ____________________BOTTOM_R_x6_____________________
),
[_COLEMAK] = LAYOUT_wrapper(
___________________NUMBER_LEFT_x6___________________, ___________________NUMBER_RIGHT_x6__________________,
________________COLEMAK_MOD_DH_L1_x6________________, ________________COLEMAK_MOD_DH_R1_x6________________,
________________COLEMAK_MOD_DH_L2_x6________________, ________________COLEMAK_MOD_DH_R2_x6________________,
________________COLEMAK_MOD_DH_L3_x6________________, ________________COLEMAK_MOD_DH_R3_x6________________,
____________________BOTTOM_L_x6_____________________, ____________________BOTTOM_R_x6_____________________
),
[_LOWER] = LAYOUT_wrapper(
____________________FUNC_LEFT_x6____________________, ____________________FUNC_RIGHT_x6___________________,
___________________NUMBER_LEFT_x6___________________, ___________________NUMBER_RIGHT_x6__________________,
_______, ______________UNICODE_L2_x5________________, ________________NAV_R2_x5__________________, XXXXXXX,
_______, ______________UNICODE_L3_x5________________, ________________NAV_R3_x5__________________, _______,
______________________BLANK_6x______________________, ______________________BLANK_6x______________________
),
[_RAISE] = LAYOUT_wrapper(
___________________NUMBER_LEFT_x6___________________, ___________________NUMBER_RIGHT_x6__________________,
___________________SYMBOL_LEFT_x6___________________, ___________________SYMBOL_RIGHT_x6__________________,
_______, ____________NAV_VIM_x4____________, XXXXXXX, ____________________SYMBOL_R2_x6____________________,
_______, _________________NONE_5x___________________, ____________________SYMBOL_R3_x6____________________,
______________________BLANK_6x______________________, ______________________BLANK_6x______________________
),
[_ADJUST] = LAYOUT_wrapper(
QK_BOOT, _________________NONE_5x___________________, ______________________NONE_6x_______________________,
XXXXXXX, MU_ON, AU_ON, MI_ON, XXXXXXX, XXXXXXX, _______________CONFIG_R1_x5________________, QWERTY,
RESET, MU_MOD, AU_TOG, MI_TOG, XXXXXXX, XXXXXXX, _______________CONFIG_R2_x5________________, XXXXXXX,
XXXXXXX, MU_OFF, AU_OFF, MI_OFF, XXXXXXX, XXXXXXX, _______________CONFIG_R3_x5________________, COLEMAK,
______________________BLANK_6x______________________, ______________________BLANK_6x______________________
)
};
// clang-format on
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case QWERTY:
if (record->event.pressed) {
set_single_persistent_default_layer(_QWERTY);
}
return false;
break;
case COLEMAK:
if (record->event.pressed) {
set_single_persistent_default_layer(_COLEMAK);
}
return false;
break;
case LOWER:
if (record->event.pressed) {
layer_on(_LOWER);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
} else {
layer_off(_LOWER);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
}
return false;
break;
case RAISE:
if (record->event.pressed) {
layer_on(_RAISE);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
} else {
layer_off(_RAISE);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
}
return false;
break;
case BACKLIT:
if (record->event.pressed) {
register_code(KC_RSFT);
#ifdef BACKLIGHT_ENABLE
backlight_step();
#endif
#ifdef RGBLIGHT_ENABLE
rgblight_step();
#endif
#ifdef __AVR__
writePinLow(E6);
#endif
} else {
unregister_code(KC_RSFT);
#ifdef __AVR__
writePinHigh(E6);
#endif
}
return false;
break;
}
return true;
};
bool muse_mode = false;
uint8_t last_muse_note = 0;
uint16_t muse_counter = 0;
uint8_t muse_offset = 70;
uint16_t muse_tempo = 50;
bool encoder_update_user(uint8_t index, bool clockwise) {
if (muse_mode) {
if (IS_LAYER_ON(_RAISE)) {
if (clockwise) {
muse_offset++;
} else {
muse_offset--;
}
} else {
if (clockwise) {
muse_tempo += 1;
} else {
muse_tempo -= 1;
}
}
} else {
if (clockwise) {
register_code(KC_PGDN);
unregister_code(KC_PGDN);
} else {
register_code(KC_PGUP);
unregister_code(KC_PGUP);
}
}
return true;
}
bool dip_switch_update_user(uint8_t index, bool active) {
switch (index) {
case 0:
if (active) {
layer_on(_ADJUST);
} else {
layer_off(_ADJUST);
}
break;
case 1:
if (active) {
muse_mode = true;
} else {
muse_mode = false;
}
}
return true;
}
void matrix_scan_user(void) {
#ifdef AUDIO_ENABLE
if (muse_mode) {
if (muse_counter == 0) {
uint8_t muse_note = muse_offset + SCALE[muse_clock_pulse()];
if (muse_note != last_muse_note) {
stop_note(compute_freq_for_midi_note(last_muse_note));
play_note(compute_freq_for_midi_note(muse_note), 0xF);
last_muse_note = muse_note;
}
}
muse_counter = (muse_counter + 1) % muse_tempo;
} else {
if (muse_counter) {
stop_all_notes();
muse_counter = 0;
}
}
#endif
}
bool music_mask_user(uint16_t keycode) {
switch (keycode) {
case RAISE:
case LOWER:
return false;
default:
return true;
}
}

View file

@ -0,0 +1 @@
# The default Preonic layout - largely based on the Planck's

View file

@ -0,0 +1,12 @@
TAP_DANCE_ENABLE = yes
AUTO_SHIFT_ENABLE = no
MAGIC_ENABLE = yes
UNICODEMAP_ENABLE = yes
# Turn off rev3_drop options
RGBLIGHT_ENABLE = no
MOUSEKEY_ENABLE = no
SRC += muse.c

View file

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

View file

@ -0,0 +1,18 @@
/*
Copyright 2018-2022 Eric Gebhart <e.a.gebhart@gmail.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/>.
*/
// See: users/ericgebhart.

View file

@ -0,0 +1,3 @@
EXTRAKEY_ENABLE = no # Audio control and System control
ENCODER_ENABLE = no # Enables the use of one or more encoders
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow

View file

@ -1,5 +1,5 @@
/*
Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.com>
Copyright 2018-2022 Eric Gebhart <e.a.gebhart@gmail.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
@ -15,125 +15,4 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "keymap_bepo.h"
#include "ericgebhart.h"
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// 4x10
[_DVORAK] = BASE_5x15(___NUMS___, ___DVORAK___),
[_QWERTY] = BASE_5x15(___NUMS___, ___QWERTY___),
[_COLEMAK] = BASE_5x15(___NUMS___, ___COLEMAK_DH___),
[_BEAKL] = BASE_5x15(___BKLNUMS___, ___BEAKL15___),
//[_DVORAK_BP] = BASE_5x15_bepo(___DVORAK_FR___),
//[_BEAKL_BP] = BASE_5x15_bepo(___BEAKL15_FR___),
// 4x12
//[_BEPO] = BASE_5x15_bepo6(___BEPO6_FR___),
// transient macro takes a 4x12 for args
[_SYMB] = TRANSIENT_5x15(___12___, ___SYMB_BEAKLA_3x12___),
//[_SYMB_BP] = TRANSIENT_5x15(___12___, ___SYMB_BEAKLA_BP_3x12___),
[_TOPROWS] = TRANSIENT_5x15(___12___, ___TOPROWS_3x12___),
//[_TOPROWS_BP] = TRANSIENT_5x15(___12___, ___TOPROWS_BP_3x12___),
[_KEYPAD] = TRANSIENT_5x15(___12___, ___KP_C_3x12___),
//[_KEYPAD_BP] = TRANSIENT_5x15(___12___, ___KP_C_BP_3x12___),
// Navigation and control
[_NAV] = TRANSIENT_5x15(___12___, ___NAV_3x12___),
[_LAYERS] = TRANSIENT_5x15(___12___, ___LAYERS_3x12___),
//[_RGB] = TRANSIENT_5x15(___12___, ___RGB_3x12___),
[_ADJUST] = TRANSIENT_5x15(___12___, ___ADJUST_3x12___),
};
/********************************************************************************/
/* Using layers to do RGB underlighting */
/********************************************************************************/
const rgblight_segment_t PROGMEM on_bepo[] = RGBLIGHT_LAYER_SEGMENTS(
{0, 2, HSV_AZURE}
);
const rgblight_segment_t PROGMEM bepo[] = RGBLIGHT_LAYER_SEGMENTS(
{3, 2, HSV_MAGENTA}
);
const rgblight_segment_t PROGMEM dvorak[] = RGBLIGHT_LAYER_SEGMENTS(
{3, 2, HSV_AZURE}
);
const rgblight_segment_t PROGMEM media[] = RGBLIGHT_LAYER_SEGMENTS(
{5, 1, HSV_GREEN}
);
const rgblight_segment_t PROGMEM symbol[] = RGBLIGHT_LAYER_SEGMENTS(
{4, 2, HSV_GOLD}
);
const rgblight_segment_t PROGMEM keypad[] = RGBLIGHT_LAYER_SEGMENTS(
{4, 2, HSV_BLUE}
);
const rgblight_segment_t PROGMEM layers[] = RGBLIGHT_LAYER_SEGMENTS(
{5, 1, HSV_RED}
);
const rgblight_segment_t PROGMEM rgb[] = RGBLIGHT_LAYER_SEGMENTS(
{5, 1, HSV_ORANGE}
);
const rgblight_segment_t* const PROGMEM rgb_layers[] = RGBLIGHT_LAYERS_LIST(on_bepo, bepo, dvorak, media, symbol,
keypad, layers, rgb);
void keyboard_post_init_user(void) {
rgblight_sethsv_noeeprom(HSV_PURPLE);
rgblight_layers = rgb_layers;
}
layer_state_t layer_state_set_user(layer_state_t state) {
// rgblight_set_layer_state(0, !on_qwerty());
rgblight_set_layer_state(0, layer_state_cmp(state, _DVORAK));
rgblight_set_layer_state(1, layer_state_cmp(state, _BEPO));
rgblight_set_layer_state(2, layer_state_cmp(state, _DVORAK));
//|| layer_state_cmp(state, DVORAK_ON_BEPO)));
rgblight_set_layer_state(3, layer_state_cmp(state, _NAV));
rgblight_set_layer_state(4, layer_state_cmp(state, _SYMB) );
//(layer_state_cmp(state, SYMB) || (layer_state_cmp(state, SYMB_ON_BEPO))));
rgblight_set_layer_state(5, layer_state_cmp(state, _KEYPAD) );
///(layer_state_cmp(state, KEYPAD) || (layer_state_cmp(state, KEYPAD_ON_BEPO))));
rgblight_set_layer_state(6, layer_state_cmp(state, _LAYERS));
rgblight_set_layer_state(7, layer_state_cmp(state, _RGB));
return state;
}
/* void suspend_power_down_user(void) { */
/* rgblight_disable(); */
/* } */
/* void suspend_wakeup_init_user(void) { */
/* rgblight_enable(); */
/* } */
/* bool is_shift_pressed = false; */
/* bool led_update_user(led_t led_state) { */
/* rgblight_set_layer_state(2, is_shift_pressed != led_state.caps_lock); */
/* return true; */
/* } */
/* bool process_record_user(uint16_t keycode, keyrecord_t* record) { */
/* switch (keycode) { */
/* case KC_LSFT: */
/* case KC_RSFT: */
/* is_shift_pressed = record->event.pressed; */
/* rgblight_set_layer_state(2, is_shift_pressed != host_keyboard_led_state().caps_lock); */
/* default: */
/* return true; */
/* } */
/* } */
// See: users/ericgebhart.

View file

@ -1 +0,0 @@
# The default keymap for xd75, with led controls

View file

@ -1,3 +1,3 @@
RGBLIGHT_ENABLE = yes
RGBLIGHT_ANIMATION = yes
RGBLIGHT_ANIMATION = no
# BACKLIGHT_ENABLE = yes

View file

@ -1,94 +0,0 @@
/*
Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.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/>.
*/
#include "ericgebhart.h"
#include "altlocal_keys.h"
#include "keymap_bepo.h"
// These are the keys for dvorak on bepo. column one is the keycode and mods for
// the unshifted key, the second column is the keycode and mods for the shifted key.
// GR is Good Range. It subtracts SAFE_RANGE from the keycode so we can make a
// reasnably sized array without difficulties. The macro is for the constant declarations
// the function is for when we use it.
const uint16_t key_translations[][2][2] = {
[GR(DB_1)] = {{BP_DQUO, MOD_LSFT}, {BP_DCIR, MOD_LSFT}},
[GR(DB_2)] = {{BP_LDAQ, MOD_LSFT}, {BP_AT, MOD_NONE}},
[GR(DB_3)] = {{BP_RDAQ, MOD_LSFT}, {BP_DLR, MOD_LSFT}},
[GR(DB_4)] = {{BP_LPRN, MOD_LSFT}, {BP_DLR, MOD_NONE}},
[GR(DB_5)] = {{BP_RPRN, MOD_LSFT}, {BP_PERC, MOD_NONE}},
[GR(DB_6)] = {{BP_AT, MOD_LSFT}, {BP_AT, MOD_BIT(KC_RALT)}},
[GR(DB_7)] = {{BP_PLUS, MOD_LSFT}, {BP_P, MOD_BIT(KC_RALT)}},
[GR(DB_8)] = {{BP_MINS, MOD_LSFT}, {BP_ASTR, MOD_NONE}},
[GR(DB_9)] = {{BP_SLSH, MOD_LSFT}, {BP_LPRN, MOD_NONE}},
[GR(DB_0)] = {{BP_ASTR, MOD_LSFT}, {BP_RPRN, MOD_NONE}},
[GR(DB_GRV)] = {{BP_PERC, MOD_LSFT}, {BP_K, MOD_BIT(KC_RALT)}},
[GR(DB_SCOLON)] = {{BP_COMM, MOD_LSFT}, {BP_DOT, MOD_LSFT}},
[GR(DB_SLASH)] = {{BP_SLSH, MOD_NONE}, {BP_QUOT, MOD_LSFT}},
[GR(DB_BACKSLASH)] = {{BP_AGRV, MOD_BIT(KC_RALT)}, {BP_B, MOD_BIT(KC_RALT)}},
[GR(DB_EQL)] = {{BP_EQL, MOD_NONE}, {BP_PLUS, MOD_NONE}},
[GR(DB_COMM)] = {{BP_COMM, MOD_NONE}, {BP_LDAQ, MOD_BIT(KC_RALT)}},
[GR(DB_DOT)] = {{BP_DOT, MOD_NONE}, {BP_RDAQ, MOD_BIT(KC_RALT)}},
[GR(DB_QUOT)] = {{BP_QUOT, MOD_NONE}, {BP_DQUO, MOD_NONE}},
[GR(DB_MINUS)] = {{BP_MINS, MOD_NONE}, {KC_SPC, MOD_BIT(KC_RALT)}},
[GR(DB_LPRN)] = {{BP_LPRN, MOD_NONE}, {BP_LPRN, MOD_BIT(KC_RALT)}},
[GR(DB_RPRN)] = {{BP_RPRN, MOD_NONE}, {BP_RPRN, MOD_BIT(KC_RALT)}},
[GR(DB_LBRC)] = {{BP_Y, MOD_BIT(KC_RALT)}, {BP_LPRN, MOD_BIT(KC_RALT)}},
[GR(DB_RBRC)] = {{BP_X, MOD_BIT(KC_RALT)}, {BP_RPRN, MOD_BIT(KC_RALT)}},
// For the symbol layer
[GR(DB_HASH)] = {{BP_DLR, MOD_LSFT}, {BP_DLR, MOD_LSFT}},
[GR(DB_LCBR)] = {{BP_LPRN, MOD_BIT(KC_RALT)}, {BP_LPRN, MOD_BIT(KC_RALT)}},
[GR(DB_RCBR)] = {{BP_LPRN, MOD_BIT(KC_RALT)}, {BP_RPRN, MOD_BIT(KC_RALT)}},
[GR(DB_PIPE)] = {{BP_B, MOD_BIT(KC_RALT)}, {BP_B, MOD_BIT(KC_RALT)}},
[GR(DB_TILD)] = {{BP_K, MOD_BIT(KC_RALT)}, {BP_K, MOD_BIT(KC_RALT)}},
[GR(DB_CIRC)] = {{BP_AT, MOD_BIT(KC_RALT)}, {BP_AT, MOD_BIT(KC_RALT)}},
[GR(DB_LESS)] = {{BP_LDAQ, MOD_BIT(KC_RALT)}, {BP_LDAQ, MOD_BIT(KC_RALT)}},
[GR(DB_GRTR)] = {{BP_RDAQ, MOD_BIT(KC_RALT)}, {BP_RDAQ, MOD_BIT(KC_RALT)}},
// Keys for BEAKL on Qwerty
[GR(BQ_COMM)] = {{KC_COMMA, MOD_NONE}, {KC_1, MOD_LSFT}},
[GR(BQ_DOT)] = {{KC_DOT, MOD_NONE}, {KC_2, MOD_LSFT}},
[GR(BQ_QUOT)] = {{KC_QUOT, MOD_NONE}, {KC_GRV, MOD_NONE}},
};
uint8_t gr(uint16_t kc){
return (kc - SAFE_RANGE);
}
// send the right keycode for the right mod.
// remove the mods we are taking care of,
// send our keycodes then restore them.
// all so we can make dvorak keys from bepo keycodes.
void send_keycode(uint16_t kc){
uint8_t tmp_mods = get_mods();
bool is_shifted = ( tmp_mods & (MOD_BIT(KC_LSFT)|MOD_BIT(KC_RSFT)) );
//uint8_t key[2][2] = key_translations[GR(kc)];
// need to turn of the shift if it is on.
unregister_mods((MOD_BIT(KC_LSFT)|MOD_BIT(KC_RSFT)));
if(is_shifted){
register_mods(SHIFTED_MODS(kc));
register_code(SHIFTED_KEY(kc));
unregister_code(SHIFTED_KEY(kc));
unregister_mods(SHIFTED_MODS(kc));
} else{
register_mods(UNSHIFTED_MODS(kc));
register_code(UNSHIFTED_KEY(kc));
unregister_code(UNSHIFTED_KEY(kc));
unregister_mods(UNSHIFTED_MODS(kc));
}
clear_mods();
register_mods(tmp_mods);
}

View file

@ -0,0 +1,90 @@
#pragma once
/*
Copyright 2018-2022 Eric Gebhart <e.a.gebhart@gmail.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/>.
*/
// probably best to have e and é on different fingers.
// doesnt work, oled displays garbage
/* #define CARTE_ACCENTED \ */
/* carte_de_map(" æœêùì ¿ïüöë ", \ */
/* " àôèéî ûçñß^", \ */
/* " âöíúí ") */
// need to figure out a better way to display these on the oled.
#define CARTE_ACCENTED \
carte_de_map(" aoeui ?iuoe ", \
" aoeei ucnS^", \
" aoiúi ")
#define ___ACCENTED___ \
LANG_MAP(_AE, _OE, _ECIR, _UGRV, _IGRV, _IQUE, _IIAE, _UIAE, _OIAE, _EIAE, \
_AGRV, _OCIR, _EGRV, _EACU, _ICIR, _UCIR, _CCED, _NTIL, _SS, _DCIR, \
_AACU, _ODIA, _IACU, _UACU, _IACU, _SPC, _SPC, _SPC , _SPC, _SPC)
// A dead key layer, optimized for Most common,
// western european.
#define CARTE_MORTE \
carte_de_map(" ˝˘̉ ̛ ˙° ", \
"/`^´ ¸¨~¤", \
" ,ˇ. ˛µ¯")
#define ___MORTE___ \
LANG_MAP(_, _DACU, _BREV, _HOKA, _, _, _HORN, _DOTA, _RNGA, _, \
_DSLS, _DGRV, _DCIR, _ACUT, _, _, _CEDL, _DIAE, _DTIL, _CURR, \
_, _DCMM, _CARN, _DOTB, _, _, _OGON, _DGRK, _MACR, _)
// Just taking a guess and putting the things I know are most
// used in easy to use places., not sure about ntil and ss, put
// them in their dvorak spots on the home row.
/* #define CARTE_ACCENTS_MORTE \ */
/* carte_de_map(" æœêùì ¿`^´ë ", \ */
/* " àôèéî ¸çñß~", \ */
/* " âö,úí ¨ˇ° ") */
#define CARTE_ACCENTS_MORTE \
carte_de_map(" aoeui ?`^'e ", \
" aoeei ,cnS~", \
" ao,ui \"^o")
#define ___ACCENTS_MORTE___ \
LANG_MAP(_AE, _OE, _ECIR, _UGRV, _IGRV, _IQUE, _DGRV, _DCIR, _ACUT, _EIAE, \
_AGRV, _OCIR, _EGRV, _EACU, _ICIR, _CEDL, _CCED, _NTIL, _SS, _DTIL, \
_AACU, _OIAE, _DCMM, _UACU, _IACU, _OGON, _DIAE, _CARN, _RNGA, _HORN)
/* // DEAD layer. */
/* BP_DCIR // ^ (dead) */
/* BP_ACUT // ´ (dead) */
/* BP_DGRV // ` (dead) */
/* BP_CARN // ˇ (dead) */
/* BP_DSLS // / (dead) */
/* BP_BREV // ˘ (dead) */
/* BP_DIAE // ¨ (dead) */
/* BP_DTIL // ~ (dead) */
/* BP_MACR // ¯ (dead) */
/* BP_CEDL // ¸ (dead) */
/* BP_RNGA // ° (dead) */
/* BP_DGRK // µ (dead Greek key) */
/* BP_OGON // ˛ (dead) */
/* BP_DACU // ˝ (dead) */
/* BP_DOTA // ˙ (dead) */
/* BP_CURR // ¤ (dead) */
/* BP_HORN // ̛ (dead) */
/* BP_DCMM // , (dead) */
/* BP_HOKA // ̉ (dead) */
/* BP_DOTB // ̣ (dead) */

View file

@ -0,0 +1,150 @@
#pragma once
/*
Copyright 2018-2022 Eric Gebhart <e.a.gebhart@gmail.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/>.
*/
// e goes on the left thumb
#define CARTE_MALTRON \
carte_de_map(" qpycb vmuzl", \
" anisf ctdor", \
" ;/jg, .wk-x e")
#define ___MALTRON___ \
LANG_MAP(_Q, _P, _Y, _C, _B, _V, _M, _U, _Z, _L, \
_A, _N, _I, _S, _F, _D, _T, _D, _O, _R, \
TL_SCLN, TL_SLSH, _J, _G, TL_COMM, TL_DOT, _W, _K, TL_MINS, _X)
#define CARTE_EUCALYN \
carte_de_map(" /,.fq aoeiu", \
" zxcvw mrdyp", \
" gtksn bhjl;")
#define ___EUCALYN___ \
LANG_MAP(TL_SLSH, TL_COMM, TL_DOT, _F, _Q, _A, _O, _E, _I, _U, \
_Z, _X, _C, _V, _W, _M, _R, _D, _Y, _P, \
_G, _T, _K, _S, _N, _B, _H, _J, _L, TL_SCLN)
// RSTHD
/* j c y f k | z l , u q = */
/* r s t h d | m n a i o - */
/* / v g p b | x w . ; ' */
/* e */
// need a thumb cluster for this.
// removed = and -, edge keys if you've got them.
// e goes on left thumb
#define CARTE_RSTHD \
carte_de_map(" jcyfk zl,uq", \
" rsthd mnaio", \
" /vgpb xw.;' e")
#define ___RSTHD___ \
LANG_MAP(_J, _C, _Y, _F, _K, _Z, _L, TL_COMM, _U, _Q, \
_R, _S, _T, _H, _D, _M, _N, _A, _I, _O, \
_/, _V, _G, _P, _B, _X, _W, TL_DOT, TL_SCLN, TL_QUOT)
#define CARTE_HANDS_UP \
carte_de_map(" fyou, kwclp", \
" hiea. dtsrn", \
" bj'z; vmgxq")
#define ___HANDS_UP___ \
LANG_MAP(_F, _Y, _O, _U, TL_COMM, _K, _W, _C, _L, _P, \
_H, _I, _E, _A, TL_DOT , _D, _T, _S, _R, _N, \
_B, _J, TL_QUOT, _Z, TL_SCLN, _V, _M, _G, _X, _Q)
#define CARTE_WHITE \
carte_de_map(" vyd,' jmlu-", \
" atheb csnoi", \
" pkgwq xrf.z")
#define ___WHITE___ \
LANG_MAP(_V, _Y, _D, TL_COMM, TL_QUOT, _J, _M, _L, _U, _MINS, \
_A, _T, _H, _E, _B, _C, _S, _N, _O, _I, \
_P, _K, _G, _W, _Q, _X, _R, _F, TL_DOT, _Z)
#define CARTE_ISRT \
carte_de_map(" yclmk zfu,'", \
" isrtg pneao", \
" qvwdj bh/.x")
#define ___ISRT___ \
LANG_MAP(_Y, _C, _L, _M, _K, _Z, _F, _U, TL_COMM, TL_QUOT, \
_I, _S, _R, _T, _G, _P, _N, _E, _A, _O, \
_Q, _V, _W, _D, _J, _B, _H, TL_SLSH, TL_DOT, _X)
#define CARTE_SOUL \
carte_de_map(" qwldp kmuy;", \
" srtg fneio", \
" zxcvj bh,./")
#define ___SOUL___ \
LANG_MAP(_Q, _W, _L, _D, _P, _K, _M, _U, _Y, TL_SCLN, \
_A, _S, _R, _T, _G, _F, _N, _E, _I, _O, \
_Z, _X, _C, _V, _J, _B, _H, TL_COMM, TL_DOT, TL_SLSH)
#define CARTE_NIRO \
carte_de_map(" qwudp jfyl;", \
" asetg hniro", \
" zxcvb km,./")
#define ___NIRO___ \
LANG_MAP(_Q, _W, _U, _D, _P, _J, _F, _Y, _L, TL_SCLN, \
_A, _S, _E, _T, _G, _H, _N, _I, _R, _O, \
_Z, _X, _C, _V, _B, _K, _M, TL_COMM, TL_DOT, TL_SLSH)
#define CARTE_ASSET \
carte_de_map(" qwjfg ypul;", \
" asetd hnior", \
" zxcvb km,./")
#define ___Asset___ \
LANG_MAP(_Q, _W, _J, _F, _G, _Y, _P, _U, _L, TL_SCLN, \
_A, _S, _E, _T, _D, _H, _N, _I, _O, _R, \
_Z, _X, _C, _V, _B, _K, _M, TL_COMM, TL_DOT, TL_SLSH)
#define CARTE_WHORF \
carte_de_map("flhdm vwou,", \
"srntk gyaei", \
"xjbzq pc';. ")
#define ___WHORF___ \
LANG_MAP(_F, _L, _H, _D, _M, _V, _W, _O, _U, TL_COMM, \
_S, _R, _N, _T, _K, _G, _Y, _A, _E, _I, \
_X, _J, _B, _Z, _Q, _P, _C, TL_QUOT, TL_SCLN, TL_DOT )
#define CARTE_WHORF6 \
carte_de_map("vlhkj gwou.", \
"srntk ydeai", \
"xqbfz pc',; ")
#define ___WHORF6___ \
LANG_MAP(_V, _L, _H, _D, _M, _G, _W, _O, _U, TL_DOT, \
_S, _R, _N, _T, _K, _Y, _D, _E, _A, _I, \
_X, _Q, _B, _F, _Z, _P, _C, TL_QUOT, TL_COMM, TL_SCLN )
/* rsht/iena */
/* jfldv @uopq */
/* zrshtg .iena: */
/* xcmwk /y,b? */
// pine
/* y l r d w j m o u , */
/* c s n t g p h a e i */
/* x z q v k b f ' / . */

View file

@ -0,0 +1,58 @@
#pragma once
/*
Copyright 2018-2022 Eric Gebhart <e.a.gebhart@gmail.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/>.
*/
#include "keycodes.h"
#include "lang_map.h"
#include "oled_stuff.h"
// an empty template.
/* #define CARTE_EMPTY \ */
/* carte_de_map(" ", \ */
/* " ", \ */
/* " ") */
/* */
/* #define ___EMPTY___ \ */
/* LANG_MAP(_, _, _, _, _, _, _, _, _, _, \ */
/* _, _, _, _, _, _, _, _, _, _, \ */
/* _, _, _, _, _, _, _, _, _, _) */
// dvorak, capewell-dvorak, ahei, and boo.
#include "dvorak.h"
//qwerty, workman, norman,
#include "qwerty.h"
// Colemak, halmak, minimak, etc.
#include "maks.h"
// eucalyn, maltron
#include "alt.h"
// mtgap, ctgap, apt
#include "gap.h"
// some hands down.
#include "hands_down.h"
// some beakls.
#include "beakl.h"
// bepo, optimot, beakl19bis, godox-fr?.
#include "bepo.h"
// some carpalxs.
#include "carpalx.h"
// The symbol, number function rows for all the above.
#include "toprows.h"
// some layers with accents and dead keys.
#include "accents.h"

View file

@ -0,0 +1,158 @@
#pragma once
/*
Copyright 2018-2022 Eric Gebhart <e.a.gebhart@gmail.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/>.
*/
// beakl, balanced effort key layout.
// Beakl 15 and 19 are somewhat more related.
// Beakl-wi is the latest. It feels a little bit more like a system.
// Remember the - and ; outside pinky keys.
// Or use the 6 size.
// Both are on the symbol layer too. So you
// wont lose them at least.
// KC_BK_COMM, KC_BK_QUOT, KC_BK_DOT - Beakl->Qwerty
// BP_BK_COMM, BP_BK_QUOT, BP_BK_DOT - Beakl->Bepo
// take care of the different shifted chars.
/* BEAKL 27 (main layer): */
/* // altered shifted pairs: dot = .` comma = ,? dquot = !" */
/* Alt target is BK2 */
/* 32104 76598 */
/* qhoux gcmrv */
/* yiea. dstnb */
/* j",k' wflpz */
/* BEAKL 27 (shift layer): */
/* !@$#% ^(*)& */
/* QHOUX GCMRV */
/* YIEA` DSTNB */
/* J!?K' WFLPZ */
#define CARTE_BEAKL27 \
carte_de_map(" qhoux gcmrz ", \
" yiea. dstnb ", \
" j\",k' wflpv ")
// Alt target is BK
#define ___BEAKL27___ \
LANG_MAP(_Q, _H, _O, _U, _X, _G, _C, _M, _R, _Z, \
_Y, _I, _E, _A, TL_DOT, _D, _S, _T, _N, _B, \
_J, TL_EXLM, TL_COMM, _K, TL_QUOT, _W, _F, _L, _P, _V)
/* BEAKL 15 (main layer): */
// altered shifted pairs: quot = '` comma = ,! dot = .@
/* 40123 76598 */
#define CARTE_BEAKL15 \
carte_de_map(" qhoux gcrfz ", \
" yiea. dstnb ", \
" j/,k' wmlpv ")
// Alt target is BK
#define ___BEAKL15___ \
LANG_MAP(_Q, _H, _O, _U, _X, _G, _C, _R, _F, _Z, \
_Y, _I, _E, _A, TL_DOT, _D, _S, _T, _N, _B, \
_J, _SLSH, TL_COMM, _K, TL_QUOT, _W, _M, _L, _P, _V)
/* BEAKL 19 */
// Beakl 19. scores better than 15, better in french also.
// Both are lots better than dvorak or bepo.
/* same symbols and keypad as 15 */
/* number row is different */
/* 32104 76598 */
// Alt target is BK
#define CARTE_BEAKL19 \
carte_de_map(" q.ouj wdnm, ", \
" haeik gsrtp ", \
" z'/yx bclfv ")
#define ___BEAKL19___ \
LANG_MAP(_Q, _DOT, _O, _U, _J, _W, _D, _N, _M, TL_COMM, \
_H, _A, _E, _I, _K, _G, _S, _R, _T, _P, \
_Z, _QUOT, _SLSH, _Y, _X, _B, _C, _L, _F, _V)
//BEAKL 19bis - original.
// the é and è were simply added for analysis not real use.
// even so, this layout scores well for french, better than
// bepo and mtgap
/* qyouz wdnck */
/* -hiea, gtrsp; */
/* èj'é.x vmlfb */
// A 3x12
//BEAKL 19bis mod z.
// French optimised with some english.
// This version rearranges things a little based on fequency.
// Since it needs 3x12, I filled in the corners and removed ;.
// Leaving y where it is. the o and the e might cause sfbs.
// Put é on a different finger from e.
// swap z, e's, add à, ^, and ê, swap ; for -.
// it might be beneficial to swap w and à, as à is much more frequent than w
#define CARTE_BEAKL19bis \
carte_de_map(" àqyoué wdnck^ ", \
" ;hiea, gtrsp- ", \
" zj'è.x vmlfbê ")
#define ___BEAKL19bis_3x12___ \
LANG_MAP6( \
_AGRV, _Q, _Y, _O, _U, _EACU, _W, _D, _N, _C, _K, _DCIR, \
_SCLN, _H, _I, _E, _A, _COMM, _G, _T, _R, _S, _P, _MINS, \
_Z, _J, _QUOT, _EGRV, _DOT, _X, _V, _M, _L, _F, _B, _ECIR)
// Beakl Wi. This is the most current beakl this size. 18/01/2022.
// Nothing on the 6th outer columns but layer toggle buttons. All 6.
// altered shifted pairs: dot = .` comma = ,~ colon = :;
// i is on the left thumb.
/* ;you- ctrsv */
/* qheaw gdnmz */
/* j,.k' bplfx */
/* i */
#define CARTE_BEAKLWI \
carte_de_map(" ;you- ctrsv ", \
" qheaw gdnmz ", \
" j,.k' bplfx i")
#define ___BEAKLWI___ \
LANG_MAP(TL_COLN, _Y, _O, _U, _MINS, _C, _T, _R, _S, _V, \
_Q, _H, _E, _A, _W, _G, _D, _N, _M, _Z, \
_J, TL_COMM, TL_DOT, _K, _QUOT, _B, _P, _L, _F, _X)
// Thumbs.
#define ___BEAKLWI_CRKBD_THUMBS___ LT_ESC, LT_I, LT_TAB, LT_ENT, LT_SPC, LT_BSPC
// My version, loses KC_mins, because it's easier on my symbol layer.
// put I in it's dvorak spot instead of thumbs, move W up to make room for I.
// I'd rather have w and i on different fingers. One domino...
// beakl-wi - mod iw-
#define CARTE_BEAKLWIa \
carte_de_map(" ;youw ctrsv ", \
" qheai gdnmz ", \
" j,.k' bplfx ")
// Alt target is BKW
#define ___BEAKLWIa___ \
LANG_MAP(TL_COLN, _Y, _O, _U, _W, _C, _T, _R, _S, _V, \
_Q, _H, _E, _A, _I, _G, _D, _N, _M, _Z, \
_J, TL_COMM, TL_DOT, _K, _QUOT, _B, _P, _L, _F, _X)

View file

@ -0,0 +1,114 @@
#pragma once
/*
Copyright 2018-2022 Eric Gebhart <e.a.gebhart@gmail.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/>.
*/
// Maps based on BEPO Mostly 3x12
// BEAKL 19bis - English with French optimisations.
// Least used letters in french xzykw QJÀ are fairly high.
// XZ are good choices for pushing out, from english and french,
// or using chords in both languages.
// Note: The percentages came from different sources so do not
// match between languages.
// French
/* Q 0.89 % */
/* J 0.71 % */
/* À 0.54 % */
/*-------------*/
/* X 0.42 % */
/* È 0.35 % */
/* Ê 0.24 % */
/* Z 0.21 % */
/* Y 0.19 % */
/* K 0.16 % */
/* Ô 0.07 % */
/* Û 0.05 % */
/* W 0.04 % */
/* Least used letters in english. */
/* X 0.2902% 1.48 */
/* Z 0.2722% 1.39 */
/* J 0.1965% 1.00 */
/* Q 0.1962% (1) */
// OPtimot by @Pyjam.
/* àjoéb fdlqxz */
/* aieu, ptsrn^ç */
/* êkyè.w gcmhvz */
// -- rearranged z, and ç to get 3x12
#define CARTE_OPTIMOT \
carte_de_map(" çàjoéb fdlqx ", \
" aieu, ptsrn^ ", \
" êkyè.w gcmhvz ")
#define ___OPTIMOT_3x12___ \
LANG_MAP6( \
_CCED, _AGRV, _J, _O, _EACU, _B, _F, _D, _L, _QUOT, _Q, _X, \
_TAB, _A, _I, _E, _U, _COMM, _P, _T, _S, _R, _N, _DCIR, \
_ECIR, _K, _Y, _EGRV, _DOT, _W, _G, _C, _M, _H, _V, _Z)
// no z or x. combos exist for them.
#define CARTE_OPTIMOT_COMPACT \
carte_de_map(" àjoéb fdlq ", \
" aieu, ptsrn ", \
" kyè.w gcmhv ")
#define ___OPTIMOT_3x10___ \
LANG_MAP6( \
_AGRV, _J, _O, _EACU, _B, _F, _D, _L, _QUOT, _Q, \
_A, _I, _E, _U, _COMM, _P, _T, _S, _R, _N, \
_K, _Y, _EGRV, _DOT, _W, _G, _C, _M, _H, _V,)
// Maybe Use this for C
//BP_C_CCED = MT(BP_CCED, BP_C)
// BEPO
// No quot, à or ç
/* bépoè vdljz */
/* auie, ctsrn */
/* myx.k qghfw */
#define CARTE_BEPOc \
carte_de_map(" bépoè vdljz", \
" auie, ctsrn", \
" myx.k qghfw")
#define ___BEPOc_3x10___ \
LANG_MAP( \
_B, _EACU, _P, _O, _EGRV, _V, _D, _L, _J, _Z, \
_A, _U, _I, _E, _COMM, _C, _T, _S, _R, _N, \
_M, _Y, _X, _DOT, _K, _Q, _G, _H, _F, _W)
#define CARTE_BEPO \
carte_de_map(" çbépoè ^vdljz ", \
" auie, ctsrnm ", \
" êàyx.k qghfw ")
#define ___BEPO_3x12___ \
LANG_MAP6(_CCED, _B, _EACU, _P, _O, _EGRV, _DCIR, _V, _D, _L, _J, _Z, \
_TAB, _A, _U, _I, _E, _COMM, _C, _T, _S, _R, _N, _M, \
_ECIR, _AGRV, _Y, _X, _DOT, _K, _QUOT, _Q, _G, _H, _F, _W)
// dont like this one much.
/* #define ___GODOX_3x12___ \ */
/* LANG_MAP6(___, _AGRV, _B, _EACU, _dot, _mins, _DCIR, _V, _L, _M, _X, _CCED, \ */
/* ___, _O, _U, _I, _A, _J, _G, _T, _S, _N, _R, _F, \ */
/* ___, _Q, _Y, _EGRV, _P, _K, _W, _D, _UP, _H, _C, _Z) */
/* // E goes on left thumb. */

View file

@ -0,0 +1,46 @@
#pragma once
/*
Copyright 2018-2022 Eric Gebhart <e.a.gebhart@gmail.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/>.
*/
#define CARTE_CARPALX_QFMLWY \
carte_de_map(" qfmlw yuobj", \
" dstnr iaeh;", \
" zvgcx pk,./")
#define ___CARPALX_QFMLWY___ \
LANG_MAP(_Q, _F, _M, _L, _W, _Y, _U, _O, _B, _J, \
_D, _S, _T, _N, _R, _I, _A, _E, _H, TL_SCLN, \
_Z, _V, _G, _C, _X, _P, _K, TL_COMM, TL_DOT, TL_SLSH)
#define CARTE_CARPALX_QFMLWB \
carte_de_map(" qgmlw byuv;", \
" dstnr iaeoh", \
" zxcfj kp,./")
#define ___CARPALX_QGMLWB___ \
LANG_MAP(_Q, _G, _M, _L, _W, _B, _Y, _U, _V, TL_SCLN, \
_D, _S, _T, _N, _R, _I, _A, _E, _O, _H, \
_Z, _X, _C, _F, _J, _K, _P, TL_COMM, TL_DOT, TL_SLSH)
#define CARTE_CARPALX_QGMLWY \
carte_de_map(" qgmlw yfub;", \
" dstnr iaeoh", \
" zxcvj kp,./")
#define ___CARPALX_QGMLWY___ \
LANG_MAP(_Q, _G, _M, _L, _W, _Y, _F, _U, _B, TL_SCLN, \
_D, _S, _T, _N, _R, _I, _A, _E, _O, _H, \
_Z, _X, _C, _V, _J, _K, _P, TL_COMM, TL_DOT, TL_SLSH)

View file

@ -0,0 +1,73 @@
#pragma once
/*
Copyright 2018-2022 Eric Gebhart <e.a.gebhart@gmail.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/>.
*/
#define CARTE_DVORAK \
carte_de_map(" ',.py fgcrl ", \
" aoeui dhtns ", \
" ;qjkx bmwvz ")
#define ___DVORAK___ \
LANG_MAP(TL_QUOT, TL_COMM, TL_DOT, _P, _Y, _F, _G, _C, _R, _L, \
_A, _O, _E, _U, _I, _D, _H, _T, _N, _S, \
TL_SCLN, _Q, _J, _K, _X, _B, _M, _W, _V, _Z)
#define CARTE_DVORAK_RLC_IU \
carte_de_map(" ',.py fgrlc ", \
" aoeiu dhtns ", \
" ;qjkx bmwvz ")
#define ___DVORAK_RLC_IU___ \
LANG_MAP(TL_QUOT, TL_COMM, TL_DOT, _P, _Y, _F, _G, _R, _L, _C, \
_A, _O, _E, _I, _U, _D, _H, _T, _N, _S, \
TL_SCLN, _Q, _J, _K, _X, _B, _M, _W, _V, _Z)
#define CARTE_BOO \
carte_de_map(" ,.ucv qfdly", \
" aoesg bntri", \
" ;x'wz phmkj")
#define ___BOO___ \
LANG_MAP( TL_COMM, TL_DOT, _U, _C, _V, _Q, _F, _D, _L, _Y, \
_A, _O, _E, _S, _G, _B, _N, _T, _R, _I, \
TL_SCLN, _X, TL_QUOT, _W, _Z, _P, _H, _M, _K, _J)
#define CARTE_CAPEWELL_DVORAK \
carte_de_map( " ',.py qfgrk", \
" oaeiu dhtns", \
" zxcvj lmwb;")
#define ___CAPEWELL_DVORAK___ \
LANG_MAP(TL_QUOT, TL_COMM, TL_DOT, _P, _Y, _Q, _F, _G, _R, _K, \
_O, _A, _E, _I, _U, _D, _H, _T, _N, _S, \
_Z, _X, _C, _V, _J, _L, _M, _W, _B, TL_SCLN)
//ahei - derived from dvorak.
// x moved to left side. j on pinky.
/*;pouyq gdlm/= */
/* ahei, fstnr- */
/* j'k.x bcwvz */
#define CARTE_AHEI \
carte_de_map("pouyq gdlm/", \
"ahei, fstnr", \
"j'k.x bcwvz")
#define ___AHEI___ \
LANG_MAP(_P, _O, _U, _Y, _Q, _G, _D, _L, _M, TL_SLSH, \
_A, _H, _E, _I, TL_COMM, _F, _S, _T, _N, _R, \
_J, TL_QUOT, _K, TL_DOT, _X, _B, _C, _W, _V, _Z)

View file

@ -0,0 +1,67 @@
#pragma once
/*
Copyright 2018-2022 Eric Gebhart <e.a.gebhart@gmail.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/>.
*/
// an alternate I found.
/* Reference: MTGAP */
/* y p o u - | b d l c k j */
/* i n e a , | m h t s r v */
/* ( " ' . _ | ) f w g x */
/* z */
#define CARTE_MTGAP \
carte_de_map(" ypouj kdlcw", \
" inea, mhtsr", \
" qz/.; bfgvx")
#define ___MTGAP___ \
LANG_MAP(_Y, _P, _O, _U, _J, _K, _D, _L, _C, _W, \
_I, _N, _E, _A, TL_COMM, _M, _H, _T, _S, _R, \
_Q, _Z, TL_SLSH, TL_DOT, TL_SCLN, _B, _F, _G, _V, _X)
/* //APT v3*/
/* https://github.com/Apsu/APT */
#define CARTE_APT \
carte_de_map(" wgdfb qluoy", \
" rsthk jneai; ", \
" xcmpv z,.'/")
#define ___APT___ \
LANG_MAP(_W, _G, _D, _F, _B, _Q, _L, _U, _O, _Y, \
_R, _S, _T, _H, _K, _J, _N, _E, _A, _I, TL_SCLN, \
_X, _C, _M, _P, _V, _Z, TL_COMM, TL_DOT, TL_QUOT, TL_SLSH)
#define CARTE_CTGAP \
carte_de_map(" vplcf kuoyj", \
" rntsd 'aeih", \
" zbmgw x,.;q")
#define ___CTGAP___ \
LANG_MAP(_V, _P, _L, _C, _F, _K, _U, _O, _Y, _J, \
_R, _N, _T, _S, _D, TL_QUOT, _A, _E, _I, _H, \
_Z, _B, _M, _G, _W, _X, TL_COMM, TL_DOT, TL_SCLN, _Q)
#define CARTE_CANARY \
carte_de_map( " wlypb zfou'", \
" crstg mneia", \
" qjvd kxh/,.")
#define ___CANARY___ \
LANG_MAP(_W, _L, _Y, _P, _B, _Z, _F, _O, _U, TL_QUOT, \
_C, _R, _S, _T, _G, _M, _N, _E, _I, _A, \
_Q, _J, _V, _D, _K, _X, _H, TL_SLSH, TL_COMM, TL_DOT)

View file

@ -0,0 +1,147 @@
#pragma once
/*
Copyright 2018-2022 Eric Gebhart <e.a.gebhart@gmail.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/>.
*/
// https://sites.google.com/alanreiser.com/handsdown/home
// The only 3x12 layout. The rest are 3x10.
#define CARTE_HD_NEU \
carte_de_map( " wfmpv /.q\"'z", \
" rsntb ,aeihj", \
" xcldg -uoykK")
#define ___HD_NEU___ \
LANG_MAP(_SML_NAV, _W, _F, _M, _P, _V , TL_SLSH, TL_DOT, _Q, TL_DQUO, TL_QUOT, _Z, \
_TAB, _R, _S, _N, _T, _B , TL_COMM, _A, _E, _I, _H, _J, \
_OS_ACCENT, _X, _C, _L, _D, _G , TL_MINS, _U, _O, _Y, _K, _SML_KEYPAD)
// modified to fit 3x10.
#define CARTE_HD_NEU_NARROW \
carte_de_map(" xcldb zuoyq", \
" rsntg ,aeih", \
" wfmpv ;./jk")
#define ___HD_NEU_NARROW___ \
LANG_MAP(_X, _C, _L, _D, _B, _Z, _U, _O, _Y, _Q, \
_R, _S, _N, _T, _G, TL_COMM, _A, _E, _I, _H, \
_W, _F, _M, _P, _V, _SCLN, TL_DOT, TL_SLSH, _J, _K)
#define CARTE_HD_REF \
carte_de_map(" qchpv kyoj/", \
" rsntg wueia", \
" xmldb zf',.")
#define ___HD_REF___ \
LANG_MAP(_Q, _C, _H, _P, _V, _K, _Y, _O, _J, TL_SLSH, \
_R, _S, _N, _T, _G, _W, _U, _E, _I, _A, \
_X, _M, _L, _D, _B, _Z, _F, TL_QUOT, TL_COMM, TL_DOT )
// All of these have a consonant or vowel on the thumb keys.
/* alt shift keys "? '! dash and elan */
/* (< {[ - elan */
/* dash has thumbs of ,; and .: */
/* dash and the rest get these too. */
/* alt shifts ;: .& /\* '? "! ,| -+ */
/* COMBOS - z = jg, z=vg, q=uk, q=mp. */
// no z or q, use combos.
#define CARTE_HD_TITANIUM \
carte_de_map(" jgmpv ;./\"' ", \
" csntw ,aeih ", \
" xfldb -uoyk r")
#define ___HD_TITANIUM___ \
LANG_MAP(_J, _G, _M, _P, _V, TL_SCLN, TL_DOT, TL_SLSH, TL_DQUO, TL_QUOT, \
_C, _S, _N, _T, _W , TL_COMM, _A, _E, _I, _H, \
_X, _F, _L, _D, _B , TL_MINS, _U, _O, _Y, _K)
#define CARTE_HD_GOLD \
carte_de_map(" jgmpv ;./\"' ", \
" rsndb ,aeih ", \
" xflcw -uoyk t")
#define ___HD_GOLD___ \
LANG_MAP(_J, _G, _M, _P, _V, TL_SCLN, TL_DOT, TL_SLSH, TL_DQUO, TL_QUOT, \
_R, _S, _N, _D, _B , TL_COMM, _A, _E, _I, _H, \
_X, _F, _L, _C, _W , TL_MINS, _U, _O, _Y, _K)
/* t, ␣ */
/* jz pq alt shifts ;: .& /\* '? "! ,| -+ */
#define CARTE_HD_PLATINUM \
carte_de_map( "jghpv ;./'\"", \
"rsntb ,aeic", \
"xfmdk -uowy l")
/* l ␣ */
#define ___HD_PLATINUM___ \
LANG_MAP(_J, _G, _H, _P, _V, TL_SCLN, TL_DOT, TL_SLSH, TL_QUOT, TL_DQUO, \
_R, _S, _N, _T, _B, TL_COMM, _A, _E, _I, _C, \
_X, _F, _M, _D, _K, TL_MINS, _U, _O, _W, _Y)
#define CARTE_HD_SILVER \
carte_de_map("jgmpv ;./'\"", \
"rshtb ,aeic", \
"xfldk -uowy n")
/* n ␣ */
#define ___HD_SILVER___ \
LANG_MAP(_J, _G, _M, _P, _V, TL_SCLN, TL_DOT, TL_SLSH, TL_QUOT, TL_DQUO, \
_R, _S, _H, _T, _B, TL_COMM, _A, _E, _I, _C, \
_X, _F, _L, _D, _K, TL_MINS, _U, _O, _W, _Y)
#define CARTE_HD_BRONZE \
carte_de_map("jgmpv ;./'\"", \
"rsntb ,aeic", \
"xfldk -uowy h")
/* h ␣ */
#define ___HD_BRONZE___ \
LANG_MAP(_J, _G , _M, _P, _V , TL_SCLN, TL_DOT, TL_SLSH , TL_QUOT, TL_DQUO, \
_R, _S, _N, _T, _B , TL_COMM, _A, _E, _I, _C, \
_X, _F, _L, _D, _K , TL_MINS, _U, _O, _W, _Y)
#define CARTE_HD_ELAN \
carte_de_map("vghpk /({'\"", \
"rsntf jaeci", \
"xmldb -uowy")
/* ,; .: ␣ ⏎ */
/* vz g h p kq /\* (< {[ '! "? */
/* TL_COMM; TL_DOT: _␣ ⏎ */
#define ___HD_ELAN___ \
LANG_MAP(_V, _G, _H, _P, _K, TL_SLSH, TL_LPRN, TL_LCBR, TL_QUOT, TL_DQUO, \
_R, _S, _N, _T, _F, _J, _A, _E, _C, _I, \
_X, _M, _L, _D, _B, TL_MINS, _U, _O, _W, _Y)
#define CARTE_HD_DASH \
carte_de_map("jgmpv ;.'\"/", \
"rsntb ,haoi", \
"xcldw -fuky e")
/* e ␣ */
#define ___HD_DASH___ \
LANG_MAP(_J, _G, _M, _P, _V , TL_SCLN, TL_DOT, TL_QUOT, TL_DQUO, TL_SLSH, \
_R, _S, _N, _T, _B , TL_COMM, _H, _A, _O, _I, \
_X, _C, _L, _D, _W , TL_MINS, _F, _U, _K, _Y)

View file

@ -0,0 +1,300 @@
/*
This file can be commented by blocks or single lines using //
Blank lines are ignored
*/
/*
Bigram frequencies in stats.csv
*/
[keys]
L21 L22 L23 L24 L25 L26 R26 R25 R24 R23 R22 R21
L31 L32 L33 L34 L35 L36 R36 R35 R34 R33 R32 R31
L41 L42 L43 L44 L45 L46 R46 R45 R44 R43 R42 R41
[weights]
5.0 3.6 2.4 1.8 2.2 3.5 3.5 2.2 1.8 2.4 3.6 5.0
4.0 1.6 1.2 1.0 1.0 3.0 3.0 1.0 1.0 1.2 1.6 4.0
5.0 3.4 2.6 2.2 1.8 4.0 4.0 1.8 2.2 2.6 3.4 5.0
/*
Weights should:
- limit weak fingers
- limit bottom row
- increase home row
- limit finger travel distance
https://colemakmods.github.io/mod-dh/compare.html
*/
[penalties]
,same_row,row_jump1,row_jump2
ii, 2.5, 3.5, 4.5 // same finger
im, 0.5, 1.0, 2.0
ir, 0.5, 0.8, 1.5
ip, 0.5, 0.8, 1.1
mi, -1.5, -0.5, 1.5 // inward roll
mm, 2.5, 3.5, 4.5 // same finger
mr, 0.5, 1.0, 2.0
mp, 0.5, 0.8, 1.5
ri, -1.5, -0.5, 1.5 // inward roll
rm, -2.0, -0.5, 1.2 // inward roll
rr, 2.5, 3.5, 4.5 // same finger
rp, 1.0, 1.5, 2.5
pi, -1.0, 0.0, 1.0 // inward roll
pm, -1.0, 0.0, 1.5 // inward roll
pr, -1.0, 0.0, 1.5 // inward roll
pp, 3.0, 4.0, 5.5 // same finger
/*
Only apply if not the same letter, and both letters on the same hand.
i, m, r, and p refer to the fingers (index, middle, ring, pinky)
The columns refer to how many rows separate the two keys
Penalties should:
- limit same finger typing (except same key twice)
- balance hands
- favor inward rolling
(last 2 in opposition with each other)
*/
[layouts]
>>Qwerty
# q w e r t y i o u p #
é a s d f g h j k l ; '
è z x c v b n m , . / -
>>Azerty
è a z e r t y u i o p ^
' q s d f g h j k l m ù
é w x c v b n , . : ! -
>>Qwertz
# q w e r t z u i o p ü
é a s d f g h j k l ö ä
è y x c v b n m , . - '
>>Bépo 40%
# b é p o è ^ v d l j z
- a u i e , c t s r n m
ç à y x . k ' q g h f w
// https://github.com/TeXitoi/keyberon#whats-the-layout
>>Bépo keyberon
# b é p o è ^ v d l j z
w a u i e , c t s r n m
- à y x . k ' q g h f ç
>>Dvorak
- ' , . p y f g c r l #
é a o e u i d h t n s #
è ; q j k x b m w v z #
>>Colemak
# q w f p g j l u y ; #
é a r s t d h n e i o '
è z x c v b k m , . / -
>>Colemak DH
# q w f p b j l u y ; #
é a r s t g m n e i o '
è z x c d v k h , . / -
>>Colemak DH mod
# q w f p b j l u y é è
# a r s t g m n e i o -
# z x c d v k h , . ' /
>>Workman
# q d r w b j f u p ; #
é a s h t g y n e o i '
è z x m c v k l , . / -
>>Norman
# q w d f k j u r l ; #
é a s e t g y n i o h '
è z x c v b p m , . / -
>>Carpalx
# q g m l w b y u v ; é
è d s t n r i a e o h '
# z x c f j k p , . / -
>>Neo
- x v l c w k h g f q ß
é u i a e o s n r t d y
è ü ö ä p z b m , . j '
// http://mkweb.bcgsc.ca/carpalx/?full_optimization
>>qgmlwyfub
# q g m l w y f u b ; é
è d s t n r i a e o h '
# z x c v j k p , . / -
// https://mathematicalmulticore.wordpress.com/the-keyboard-layout-project/
>>MTGAP
# y p o u j k d l c w #
é i n e a , m h t s r '
è q z / . : b f g v x -
// http://mtgap.bilfo.com/official_keyboard.html
// http://mtgap.bilfo.com/completed_keyboard.html
>>MTGAP 2.0
# , f h d k j c u l . #
é o a n t g m s e r i -
è q x b p z y w ' v ; #
>>MTGAP "Easy"
# q w l d b j f u k p #
é a s r t g h n e o i -
è z x c v ; y m , . / '
>>MTGAP "shortcuts"
# k g l d b j h u f . #
é r o t s w m n e a i -
è z x v c q y p , ' ; #
>>MTGAP "standard"
# k l h c b j d u f . #
é o r n s g w t e a i -
è x q v m z y p , ' ; #
>>MTGAP "ergonomic"
# . f u d j q h c w k #
é i a e t p l n s r o -
è ' , y g z - m b v x #
// https://geekhack.org/index.php?topic=67604.0
>>Oneproduct
# p l d w g j x o y q è
- n r s t m u a e i h '
# z c f v b , . ? ; k é
// https://bepo.fr/wiki/Utilisateur:Bibidibop
>>Coeur
# é w o p y b ' d l j z
x a u e i , c t s r n h
# - à è . k g m f q v #
// https://geekhack.org/index.php?topic=98275.0
>>Kaehi
# q w l d g j u o p / é
è n r s t m k a e h i '
# z x c v b y f , . ; -
// https://deskthority.net/wiki/BEAKL
>>BEAKL 15
é q h o u x g c r f z #
- y i e a . d s t n b ;
è j / , k ' w m l p v #
// https://web.archive.org/web/20190906220509/http://shenafu.com/smf/index.php?topic=89.msg2566#msg2566
>>BEAKL 19
é q . o u j w d n m , #
- h a e i k g s r t p ;
è z ' / y x b c l f v #
// https://www.reddit.com/r/ErgoDoxEZ/comments/gsvpug/layout_of_the_month_beakl_15/ftcan68/?context=3
>>BEAKL 19bis
# q y o u z w d n c k #
- h i e a , g t r s p ;
è j ' é . x v m l f b #
// https://www.reddit.com/r/ErgoMechKeyboards/comments/j1eopm/hands_down_layout_is_ready_for_daily_use/g7bjmr7/?context=3
>>BEAKL 19 Opt French
# w m r d v y u o q x #
# g s n t p , i e a h -
# k f l c b j é ' . z è
// http://millikeys.sourceforge.net/asset/
>>ASSET
# q w j f g y p u l ; #
é a s e t d h n i o r '
è z x c v b k m , . / -
// https://sourceforge.net/projects/qwpr/
>>Qwpr
# q w p r f y u k l ; #
é a s d t g h n i o e '
è z x c v b j m , . / -
// http://www.minimak.org/
>>Minimak-8key
# q w d r k y u i l p #
é a s t f g h n e o ; '
è z x c v b j m , . / -
// https://github.com/mw8/white_keyboard_layout
// adapted to ergo keyboard
>>White
# v y d , ' j m l u ( )
é a t h e b c s n o i -
è p k g w q x r f . z #
// https://github.com/jackrosenthal/threelayout
>>Three
# q f u y z x k c w b #
é o h e a i d r t n s -
è , m . j ; g l p v ' #
//https://sites.google.com/alanreiser.com/handsdown
>>Hands down
# q c h g j y f o b ' #
é s n r t p w u e i a #
è x m l d z v k . , ; -
//https://sites.google.com/alanreiser.com/handsdown
>>Notarize
# q w d f p y u k l ' #
é a s t e g h n i o r #
è z x c v b j m . , ; -
// http://kennetchaz.github.io/symmetric-typing/soul.html
>>Soul mod
# q w l d p k m u y ; '
è a s r t g f n e i o é
# j z x c v b h , . / -
// http://kennetchaz.github.io/symmetric-typing/niro.html
>>Niro mod
# q w u d p j f y l ; #
é a s e t g h n i r o '
è b z x c v k m , . / -
// https://docs.google.com/document/d/1yiCnIi1oagV1D8ZouMt-TRFRG8d6AfSBIwQkBvSflvY/edit
>>The-1
# k m l u ? v d r ' q #
é a t h e . c s n o i -
è z p f j , b g w x y /
// https://engram.dev
>>Engram 2.0
# b y o u ' " l d w v z
é c i e a , . h t s n q
è g x j k - ? r m f p #
// https://github.com/MadRabbit/halmak
>>Halmak
# w l r b z ; q u d j #
é s h n t , . a e o i '
è f m v c / g p x k y -
// https://keyboard-design.com/letterlayout.html?layout=optimal-digram.en.ansi
>>Optimal digram
# q y u . , f m l d p z
é s i e a o h n r t c g
è j ) ' ? ( x v w k b -
// https://keyboard-design.com/letterlayout.html?layout=uciea-keyboard.en.ansi
>>Uciea
# p y u o - k d h f x q
é c i e a ' g t n s r v
è z " , . ; w m l b j -
// https://keyboard-design.com/letterlayout.html?layout=x1.en.ergodox
// . and , moved
>>x1
# k y o ' ! f c l p q z
é h i e a u d s t n r v
è j ? . , # w g m b x -

View file

@ -0,0 +1,61 @@
#define CARTE_COLEMAK \
carte_de_map(" qwfpg jluy;", \
" arstd hneio", \
" zxcvb km,./")
#define ___COLEMAK___ \
LANG_MAP(_Q, _W, _F, _P, _G, _J, _L, _U, _Y, TL_SCLN, \
_A, _R, _S, _T, _D, _H, _N, _E, _I, _O, \
_Z, _X, _C, _V, _B, _K, _M, TL_COMM, TL_DOT, TL_SLSH)
#define CARTE_COLEMAK_DH \
carte_de_map(" qwfpb jluy;", \
" arstg mneio", \
" zxcdv kh,./")
#define ___COLEMAK_DH___ \
LANG_MAP(_Q, _W, _F, _P, _B, _J, _L, _U, _Y, TL_SCLN, \
_A, _R, _S, _T, _G, _M, _N, _E, _I, _O, \
_Z, _X, _C, _D, _V, _K, _H, TL_COMM, TL_DOT, TL_SLSH)
#define CARTE_HALMAK \
carte_de_map(" wlrbz ;qudj", \
" shnt, .aeoi", \
" fmvc/ gpxky")
#define ___HALMAK___ \
LANG_MAP(_W, _L, _R, _B, _Z, TL_SCLN, _Q, _U, _D, _J, \
_S, _H, _N, _T, TL_COMM, _DOT, _A, _E, _O, _I, \
_F, _M, _V, _C, TL_SLSH, _G, _P, _X, _K, _Y)
#define CARTE_MINIMAK \
carte_de_map(" qwdrk yuiop", \
" astfg hjel;", \
" zxcvb nm,./")
#define ___MINIMAK___ \
LANG_MAP(_Q, _W, _D, _R, _K, _Y, _U, _I, _O, _P, \
_A, _S, _T, _F, _G, _H, _J, _E, _L, TL_SCLN, \
_Z, _X, _C, _V, _B, _N, _M, TL_COMM, TL_DOT, TL_SLSH)
#define CARTE_MINIMAK_8 \
carte_de_map(" qwdrk yuilp", \
" astfg hneo;", \
" zxcvb jm,./")
#define ___MINIMAK_8___ \
LANG_MAP(_Q, _W, _D, _R, _K, _Y, _U, _I, _L, _P, \
_A, _S, _T, _F, _G, _H, _N, _E, _O, TL_SCLN, \
_Z, _X, _C, _V, _B, _J, _M, TL_COMM, TL_DOT, TL_SLSH)
#define CARTE_MINIMAK_12 \
carte_de_map(" qwdfk yuil;", \
" astrg hneop", \
" zxcvb jm,./")
#define ___MINIMAK_12___ \
LANG_MAP(_Q, _W, _D, _F, _K, _Y, _U, _I, _L, _SCLN, \
_A, _S, _T, _R, _G, _H, _N, _E, _O, _P, \
_Z, _X, _C, _V, _B, _J, _M, TL_COMM, TL_DOT, TL_SLSH)

View file

@ -0,0 +1,69 @@
#pragma once
/*
Copyright 2018-2022 Eric Gebhart <e.a.gebhart@gmail.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/>.
*/
// Layer for combo reference. Make more than one by changing lang is.
#define ___COMBO_REF___ \
LANG_MAP(_1L1, _1L2, _1L3, _1L4, _1L5, _1R1, _1R2, _1R3, _1R4, _1R5, \
_2L1, _2L2, _2L3, _2L4, _2L5, _2R1, _2R2, _2R3, _2R4, _2R5, \
_3L1, _3L2, _3L3, _3L4, _3L5, _3R1, _3R2, _3R3, _3R4, _3R5)
#define CARTE_QWERTY \
carte_de_map(" qwert yuiop", \
" asdfg hjkl;", \
" zxcvb nm,./")
// Need TLKC around comm, dot, and quot, and scln
// Qwerty based layers that I don't really use.
#define ___QWERTY___ \
LANG_MAP(_Q, _W, _E, _R, _T, _Y, _U, _I, _O, _P, \
_A, _S, _D, _F, _G, _H, _J, _K, _L, TL_SCLN, \
_Z, _X, _C, _V, _B, _N, _M, TL_COMM, TL_DOT, TL_SLSH)
#define CARTE_AZERTY \
carte_de_map(" azert yuiop", \
" qsdfg hjkl;", \
" wxcvb nm,./")
// Need TLKC around comm, dot, and quot, and scln
// Qwerty based layers that I don't really use.
#define ___AZERTY___ \
LANG_MAP(_A, _Z, _E, _R, _T, _Y, _U, _I, _O, _P, \
_Q, _S, _D, _F, _G, _H, _J, _K, _L, TL_SCLN, \
_W, _X, _C, _V, _B, _N, _M, TL_COMM, TL_DOT, TL_SLSH)
#define CARTE_WORKMAN \
carte_de_map(" qdrwb jfup;", \
" ashtg yneio", \
" zxmcv kl,./")
#define ___WORKMAN___ \
LANG_MAP(_Q, _D, _R, _W, _B, _J, _F, _U, _P, _SCLN, \
_A, _S, _H, _T, _G, _Y, _N, _E, _O, _I, \
_Z, _X, _M, _C, _V, _K, _L, TL_COMM, TL_DOT, TL_SLSH)
#define CARTE_NORMAN \
carte_de_map(" qwdfk jurl;", \
" asetg yniou", \
" zxcvb pm,./")
#define ___NORMAN___ \
LANG_MAP(_Q, _W, _D, _F, _K, _J, _U, _R, _L, TL_SCLN, \
_A, _S, _E, _T, _G, _Y, _N, _I, _O, _U, \
_Z, _X, _C, _V, _B, _P, _M, TL_COMM, TL_DOT, TL_SLSH)

View file

@ -0,0 +1,56 @@
#pragma once
/*
Copyright 2018-2022 Eric Gebhart <e.a.gebhart@gmail.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/>.
*/
/*******************************************************************/
/** TOP ROWS Func,Symbols, Numbers you find there. **/
/*******************************************************************/
// ltkc language target keycode DV, BK, BKW, NONE
// _1 = DV_1 or _1 = BP_DV_1 or KC_1
#define ___10_NUMBERS___ \
LANG_ROW(_1, _2, _3, _4, _5, _6, _7, _8, _9, _0)
/* 40123 76598 */
#define ___10_NUMBERS_BEAKL15___ \
LANG_ROW(_4, _0, _1, _2, _3, _7, _6, _5, _9, _8)
/* 32104 76598 */
#define ___10_NUMBERS_BEAKL19___ \
LANG_ROW(_3, _2, _1, _0, _4, _7, _6, _5, _9, _8)
// a top symbol row if someone wants it.
#define ___10_SYMBOLS___ \
LANG_ROW(_EXLM, _AT, _HASH, _DLR, _PERC, _CIRC, _AMPR, _ASTR, _LPRN, _RPRN)
// standard bepo top row
#define ___10_SYMBOLS_BEPO___ \
LANG_ROW(_DQUO, _LDAQ, _RDAQ, _LPRN, _RPRN, _AT, _PLUS, _MINS, _SLSH, _ASTR)
#define ___12_SYMBOLS_BEPO___ \
LANG_ROW12(_DLR, _DQUO, _LDAQ, _RDAQ, _LPRN, _RPRN, \
_AT, _PLUS, _MINS, _SLSH, _ASTR, _EQL)
// function key rows work for everyone.
#define ___10_FUNCS___ \
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10
#define ___12_FUNCS___ ___10_FUNCS___, KC_F11, KC_F12
#define ___10_FUNCS_BEAKL15___ \
KC_F4, KC_F10, KC_F1, KC_F2, KC_F3, \
KC_F7, KC_F6, KC_F5, KC_F9, KC_F8
#define ___12_FUNCS_BEAKL15___ KC_F11, ___10_FUNCS_BEAKL15___, KC_F12

View file

@ -1,81 +0,0 @@
// Copyright 2021 Google LLC
//
// 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
//
// https://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.
//
//
// For full documentation, see
// https://getreuer.info/posts/keyboards/caps-word
#include "caps_word.h"
bool process_caps_word(uint16_t keycode, keyrecord_t* record) {
static bool caps_word_enabled = false;
static bool shifted = false;
#ifndef NO_ACTION_ONESHOT
const uint8_t mods = get_mods() | get_oneshot_mods();
#else
const uint8_t mods = get_mods();
#endif // NO_ACTION_ONESHOT
if (!caps_word_enabled) {
// Pressing both shift keys at the same time enables caps word.
if ((mods & MOD_MASK_SHIFT) == MOD_MASK_SHIFT) {
clear_mods();
#ifndef NO_ACTION_ONESHOT
clear_oneshot_mods();
#endif // NO_ACTION_ONESHOT
shifted = false;
caps_word_enabled = true;
return false;
}
return true;
}
if (!record->event.pressed) { return true; }
if (!(mods & ~MOD_MASK_SHIFT)) {
switch (keycode) {
case QK_MOD_TAP ... QK_MOD_TAP_MAX:
case QK_LAYER_TAP ... QK_LAYER_TAP_MAX:
// Earlier return if this has not been considered tapped yet.
if (record->tap.count == 0) { return true; }
// Get the base tapping keycode of a mod- or layer-tap key.
keycode &= 0xff;
}
switch (keycode) {
// Letter keys should be shifted.
case KC_A ... KC_Z:
if (!shifted) { register_code(KC_LSFT); }
shifted = true;
return true;
// Keycodes that continue caps word but shouldn't get shifted.
case KC_1 ... KC_0:
case KC_BSPC:
case KC_MINS:
case KC_UNDS:
if (shifted) { unregister_code(KC_LSFT); }
shifted = false;
return true;
// Any other keycode disables caps word.
}
}
// Disable caps word.
caps_word_enabled = false;
if (shifted) { unregister_code(KC_LSFT); }
shifted = false;
return true;
}

View file

@ -1,35 +0,0 @@
// Copyright 2021 Google LLC
//
// 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
//
// https://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.
//
//
// Caps Word, activated by pressing both shift keys at the same time.
//
// This library implements "Caps Word", which is like conventional Caps Lock,
// but automatically disables itself at the end of the word. This is useful for
// typing all-caps identifiers like `MOD_MASK_ALT`.
//
// Caps Word is activated by pressing the left and right shift keys at the same
// time. This way you don't need a dedicated key for using Caps Word. I've
// tested that this works as expected with one-shot mods and Space Cadet Shift.
// If your shift keys are mod-taps, activate Caps Word by holding both shift
// mod-tap keys until the tapping term, release them, then begin typing.
//
// For full documentation, see
// https://getreuer.info/posts/keyboards/caps-word
#pragma once
#include QMK_KEYBOARD_H
bool process_caps_word(uint16_t keycode, keyrecord_t* record);

View file

@ -1,10 +0,0 @@
// name result chord keys
COMB(LNAV, TG(_NAV), SPC_TOPR, ENT_NAV)
COMB(OSLSYM, OSL(_SYMB), ESC_TOPR, BSPC_SYMB)
COMB(OSLSYMBP, OSL(_SYMB_BP), ESC_TOPR_BP, BSPC_SYMB_BP)
COMB(LKEYPAD, TG(_KEYPAD), SPC_TOPR, BSPC_SYMB)
COMB(LKEYPADBP, TG(_KEYPAD_BP), SPC_TOPR_BP, BSPC_SYMB_BP)
COMB(LLAYERS, OSL(_LAYERS), KC_TAB, ENT_NAV)
//COMB(JKL_SPC, KC_SPC, KC_J, KC_X)
//SUBS(TH_THE, "the", KC_T, KC_H) // SUBS uses SEND_STRING to output the given string.

275
users/ericgebhart/config.h Executable file → Normal file
View file

@ -18,12 +18,11 @@
#ifndef USERSPACE_CONFIG_H
#define USERSPACE_CONFIG_H
#include "../../config.h"
// pro-micro v3's don't always detect otherwise.
/* #define SPLIT_USB_DETECT */
#define NO_ACTION_MACRO
#define NO_ACTION_FUNCTION
#define COMBO_MUST_HOLD_MODS
#define COMBO_HOLD_TERM 150
// Sets good default for the speed of the mouse.
#undef MOUSEKEY_INTERVAL
#undef MOUSEKEY_DELAY
@ -51,4 +50,274 @@
#define TAPPING_TERM 200
#define IGNORE_MOD_TAP_INTERRUPT
#define TAP_HOLD_TERM 200
#define COMBO_MUST_HOLD_MODS
#define COMBO_HOLD_TERM 150
#define TAP_CODE_DELAY 5 // for send string with delay
// change the behavior of Mod taps for HRMs.
// #define GLOBAL_QUICK_TAP
/* Control switches for my keymaps. */
/* if needed, this goes in the keyboard's config.h */
/* Alternately, fix the number row in the layout template. */
/* #define BASE_NUMBER_ROW // turn on 4 row base templates. */
// Extensions, turn them on and off.
#define USERSPACE_H "ericgebhart.h"
// Layout definitions, which language, thumb cluster, mod layer.
// Columns in and out.
// the default. set it, use it, set it back.
// US_INT // EN, BEPO, US_INT
#define LANG_IS US_INT
#define DEFAULT_LANG US_INT
#define DEFAULT_LANG_NAME " us"
// Enable a second locale, for another set of layers.
// This will add bepo versions of all layers chosen.
/* #define SECOND_LOCALE BEPO */
/* #define SECOND_LOCALE_NAME " bepo" */
// Choose a mod layer. Can be changed per layer.
// TRNS, ALT, HRS_NAV HRM_GACS, HRM_SCAG, HRM_GASC, MIRYOKU_HRM_GASC
#define MODS_ARE HRS_NAV
#define DEFAULT_MODS MODS_ARE
// Choose a thumb cluster.
// WI, WIa, DEFAULT, TEST, TRNS, MODS, LAYERS, MODS_LAYERS,
// MIRYOKU, MIRYOKU_TR, MODS_LAYERS_NAV,
// The following use THUMB_LETTER to place a letter on the Thumbs.
// for use with the hands down metals, maltron, and rsthd.
// HD, HDA, HD_SIMPLE, TH_LTR, HD_DASH,
// MIRYOKU_TR_LTR, MIRYOKU_LTR
#define THUMBS_ARE DEFAULT
#define DEFAULT_THUMBS DEFAULT
// pick the edge key set. normie, no kc, smart locks or test.
// NORM, NOKC, SML, TEST
#define EDGE_KEY_SET_IS SML
#define DEFAULT_EDGE_SET SML
// for the base layers which need a thumb cluster which takes a letter.
#define HANDS_DOWN_LTR_THUMBS_ARE TH_LTR
#define MALTRON_LTR_THUMBS_ARE TH_LTR
#define RSTHD_LTR_THUMBS_ARE TH_LTR
// layout io, matrix size.
// a reasonable default for most keyboards.
// give a 3x10 and get a 3x12, managed in keyboards/keyboards.h
#define BASE_COLS_IN_OUT 5_6 // 5, 5_6, 6
// OLED STUFF.
#define OLED_CUSTOM_ENABLE // custom oled here.
//#define OLED_LOGO_ENABLE // turn on/off the logo.
#define KEYLOGGER_ENABLE // 1500 bytes, track and print keypress info to oled.
//#define SPLIT_LAYER_STATE_ENABLE // to sync state between sides.
// EXTENSIONS
// Combos
#define COMBO_REF_LAYER_ENABLE
// #define COMBO_REF_LAYER_TWO_ENABLE
// works if you know the number of your layer.
// otherwise set and use them later.
// #define COMBO_ONLY_FROM_LAYER 2
// #define COMBO_REF_DEFAULT 2
// Console key logging for creation of heatmaps, etc.
// CONSOLE must be enabled for this to work.
// To create Precondition's heat maps, from console key logging
// with hid_listen or qmk console
//#define CONSOLE_KEY_LOGGER_ENABLE // turn on keylogging for heat maps.
#define ALT_LOCAL_ENABLE // alternate key combinations, with mods as needed.
#define ACCENTED_KEYS_ENABLE // direct access to altgr keys.
#define SMART_LOCK_ENABLE // smart lock layers and mods.
//#define MOD_LOCK_ENABLE // smart lock mods, similar/overlapping with Smart lock.
#define NSHOT_ENABLE // smart n-shot for count.
//#define ONESHOT_MOD_ENABLE // oneshot mods, similar/overlapping with nshots
#define TAP_HOLD_ENABLE // tap for one thing, hold for tapping term to get another.
//#define SWAPPER_ENABLE // enable swapper keys.
#define NOT_DEAD_ENABLE // make undead versions (US_DQUO_ND) of dead keys.
//#define ALT_SHIFT_ENABLE // alternate shift behaviors for existing keys.
//#define SEND_STRING_ENABLE // Turn on send string keys
//#define SEND_UNICODE_ENABLE // Unicode must be enabled for this to work.
// Turn on the base layers do not exceed 4 if doing two locales.
// That will likely push a layer past 15 and then it will
// no longer work with the LT macro.
// dvorak and relatives
#define DVORAK_LAYER_ENABLE
//#define DVORAK_RLC_IU_LAYER_ENABLE
//#define CAPEWELL_DVORAK_LAYER_ENABLE
//#define AHEI_LAYER_ENABLE
//#define BOO_LAYER_ENABLE
// qwerty and derivitives
//#define QWERTY_LAYER_ENABLE
//#define AZERTY_LAYER_ENABLE
//#define WORKMAN_LAYER_ENABLE
//#define NORMAN_LAYER_ENABLE
// COLEMAK and relatives
//#define COLEMAK_LAYER_ENABLE
//#define COLEMAK_DH_LAYER_ENABLE
//#define HALMAK_LAYER_ENABLE
//#define MINIMAK_LAYER_ENABLE
//#define MINIMAK_8_LAYER_ENABLE
//#define MINIMAK_12_LAYER_ENABLE
// BEAKL
// #define BEAKL15_LAYER_ENABLE
//#define BEAKL19_LAYER_ENABLE
//#define BEAKL27_LAYER_ENABLE
//#define BEAKLWI_LAYER_ENABLE
// carpalx layouts
//#define CARPALX_QFMLWY_LAYER_ENABLE
//#define CARPALX_QGMLWB_LAYER_ENABLE
//#define CARPALX_QGMLWY_LAYER_ENABLE
// alternate layouts
//#define MALTRON_LAYER_ENABLE
//#define EUCALYN_LAYER_ENABLE
//#define HANDS_UP_LAYER_ENABLE
//#define RSTHD_LAYER_ENABLE
//#define HANDS_UP_LAYER_ENABLE
//#define WHITE_LAYER_ENABLE
//#define ISRT_LAYER_ENABLE
//#define SOUL_LAYER_ENABLE
//#define NIRO_LAYER_ENABLE
//#define ASSET_LAYER_ENABLE
//#define WHORF_LAYER_ENABLE
//#define WHORF6_LAYER_ENABLE
// mtgap and relatives
//#define MTGAP_LAYER_ENABLE
//#define CTGAP_LAYER_ENABLE
//#define APT_LAYER_ENABLE
//#define CANARY_LAYER_ENABLE
// Hands down
#define HD_NEU_NARROW_LAYER_ENABLE
//#define HD_REF_LAYER_ENABLE
//#define HD_DASH_LAYER_ENABLE
//#define HD_ELAN_LAYER_ENABLE
//#define HD_BRONZE_LAYER_ENABLE
//#define HD_SILVER_LAYER_ENABLE
//#define HD_PLATINUM_LAYER_ENABLE
//#define HD_GOLD_LAYER_ENABLE
//#define HD_TITANIUM_LAYER_ENABLE
// A compact optimot for 3x10.
// requires accent characters.
//#define OPTIMOT_COMPACT_LAYER_ENABLE
// 3x12 sized base layers
//--------------------------
//#define HD_NEU_LAYER_ENABLE
// Optimized for french
// All these have accent characters on base layer.
// so these dont work for En, but do for US-international and Bepo.
//#define BEPO_LAYER_ENABLE
//#define OPTIMOT_LAYER_ENABLE
//#define BEAKL19bis_LAYER_ENABLE
// enable transient function layers.
#define SYMBOL_LAYER_ENABLE
#define NAV_LAYER_ENABLE
// #define MOUSE_LAYER_ENABLE
#define TOPROWS_LAYER_ENABLE
// #define LAYERS_LAYER_ENABLE - defunct. always on.
#define KEYPAD_LAYER_ENABLE
//#define ADJUST_LAYER_ENABLE
//#define RGB_LAYER_ENABLE
//#define MEDIA_LAYER_ENABLE
//#define FUNC_LAYER_ENABLE
// define alternate thumb definitions for the transient layers.
#define MEDIA_LAYER_THUMBS MEDIA_THUMBS
#define MOUSE_LAYER_THUMBS MOUSE_THUMBS
#define NAV_LAYER_THUMBS TRNS_THUMBS
#define KEYPAD_LAYER_THUMBS KEYPAD_THUMBS
#define SYMB_LAYER_THUMBS SYMB_THUMBS
#define TOPROWS_LAYER_THUMBS DEFAULT
// Extra character layers.
// Bepo has dead keys (altgr) and accented keycodes
// A layer of accented keys
// #define ACCENTS_LAYER_ENABLE
// A layer of dead keys
// #define MORTE_LAYER_ENABLE
// A layer of the most popular accented keys and dead keys
#define ACCENTS_MORTE_LAYER_ENABLE
// Functional layer choices.
/* configure the function layers. */
/* They have to be turned on above. */
/* Choose one of each as desired. */
/* There are reasonable defaults */
/* for each if nothing is defined. */
/* nav */
//#define NAV_FULL // monolithic, two sided nav with mouse and arrows.
#define NAV_FULL_LOCK_MODS // Replace left mouse buttons with lockmods.
// Just the non mouse bits, with lock mods, n-shot mods on the left.
// if mousekeys enabled, adds a mouse layer accessible via smart lock.
// #define NAV_NO_MOUSE
// #define NAV_MIRYOKU
// #define NAV_MOUSE_MIRYOKU
/* keypads */
// beakl keypads are usual, if not chosen, regular keypads will be used.
// left side is the default.
// Beakl, except for WI, is only on the left side.
// Miryoku is on the left also.
//#define KEYPAD_RIGHT
#define KEYPAD_BEAKL // beakl doesn't have a rightside, swap hands?
//#define KEYPAD_MODS // give mods on the other side instead of funcs.
//#define KEYPAD_BEAKL_WI // right side with hexpad on left.
//#define KEYPAD_MIRYOKU // use the miryoku keypad
// the default if nothing chosen,
// is a functionpad on the left and normal keypad on the right.
// funcpad from miryoku
// #define FUNCPAD_MIRYOKU
/* symbols */
// pick one of these or get the default.
//#define SYMBOL_BEAKL // original - the default if nothing else.
//#define SYMBOL_BEAKL_EXT // extended for non beakl base layers.
//#define SYMBOL_BEAKL_EXT_VI // extended with vi keybinding in mind.
#define SYMBOL_BEAKL_C // more alterations by frequency
// #define SYMBOL_NEO // The symbol layer from the Neo layout.
// #define SYMBOL_MIRYOKU // minimalist symbols after miryoku
//#define SYMBOL_BEAKL_WI // original wi
/* toprows. */
// The default, if not defined, is a standard qwerty set of rows.
// symbols, numbers, function keys. Numbers on the home row.
// #define TOPROWS_BKL_15_NUMS // center row with Beakl15 order. 40123 76598.
// #define TOPROWS_BKL_19_NUMS // Beakl 19 order: 32104 76598
#define TOPROWS_MOD // beakl 15 nums, oneshot and smart lock mods. no Fkeys.
#endif

View file

@ -1,280 +0,0 @@
#pragma once
/*
Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.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/>.
*/
#include "quantum.h"
#include "process_keycode/process_tap_dance.h"
#include "eeconfig.h"
#include "keymap_bepo.h"
#include "altlocal_keys.h"
//#define ONESHOT_TAP_TOGGLE 2 /* Tapping this number of times holds the key until tapped once again. */
bool process_record_secrets(uint16_t keycode, keyrecord_t *record);
enum userspace_custom_keycodes {
// keep the keycodes using the send_key function close to SAFE_RANGE
// so the array of keycodes remains a reasonbale size.
DB_1 = SAFE_RANGE, // can always be here
DB_2,
DB_3,
DB_4,
DB_5,
DB_6,
DB_7,
DB_8,
DB_9,
DB_0,
DB_GRV,
DB_SCOLON,
DB_SLASH,
DB_BACKSLASH,
DB_EQL,
DB_DOT,
DB_COMM,
DB_QUOT,
DB_MINUS,
DB_RPRN,
DB_LPRN,
DB_RBRC,
DB_LBRC,
// for symbols layer
DB_HASH,
DB_LCBR,
DB_RCBR,
DB_PIPE,
DB_TILD,
DB_CIRC,
DB_LESS,
DB_GRTR,
// End of dvorak on bepo translation keys.
// BEAKL on Qwerty..
BQ_DOT,
BQ_COMM,
BQ_QUOT,
// End of beakl on qwerty
BB_DOT,
BB_COMM,
BB_QUOT,
// End of beakl on Bepo
EPRM,
VRSN,
// Default keyboard layouts - Same order as enum.
KC_DVORAK,
KC_QWERTY,
KC_COLEMAK,
KC_BEAKL,
// KC_WORKMAN,
// KC_NORMAN,
// KC_MALTRON,
// KC_EUCALYN,
// KC_CARPLAX,
KC_DVORAK_BP,
KC_BEAKL_BP,
KC_BEPO,
KC_LAYERS,
// Misc.
KC_MAKE,
KC_RESET,
KC_RGB_T,
RGB_IDL,
KC_SECRET_1,
KC_SECRET_2,
KC_SECRET_3,
KC_SECRET_4,
KC_SECRET_5,
KC_CCCV, // Ctrl-C V in one key.
BP_CCCV,
KC_CTCN, // Ctrl-T N in one key.
BP_CTCN,
KC_CWCQ, // Ctrl-W Q in one key.
BP_CWCQ,
KC_XM_PORD, // Xmonad gui-e, gui-t for the scratchpads or desktops.
BP_XM_PORD,
KC_OCPRN, // Open, or open and close, cursor in the middle with hold.
BP_OCPRN,
KC_OCBRC,
BP_OCBRC,
KC_OCCBR,
BP_OCCBR,
KC_OCDQUO,
BP_OCDQUO,
KC_OCQUOT,
BP_OCQUOT,
KC_OCGRV,
BP_OCGRV,
KC_OCLTGT,
BP_OCLTGT,
UC_FLIP,
UC_TABL,
UC_SHRG,
UC_DISA,
KC_SPACETEST,
NEW_SAFE_RANGE
};
#define CTLGUI_T(kc) MT(MOD_LGUI | MOD_LCTL, kc)
#define SFTGUI_T(kc) MT(MOD_LGUI | MOD_LSFT, kc)
#define ALTGUI_T(kc) MT(MOD_LGUI | MOD_LALT, kc)
#define ALT_ENT ALT_T(KC_ENT) // Alt or enter
#define CTL_SPC CTL_T(KC_SPC) // ctrl or space
#define CTL_BSPC CTL_T(KC_BSPC) // ctrl or backspace
#define ALT_DEL ALT_T(KC_DEL) // Alt or delete
#define GUI_ESC GUI_T(KC_ESC) // Gui or escape
#define ALGR_SYMB ALGR_T(TG(_SYMB)) // Alt gre or toggle symbol layer
#define ENT_NAV LT(_NAV, KC_ENT)
#define ENT_TOPR LT(_TOPROWS, KC_ENT)
#define ENT_TOPR_BP LT(_TOPROWS_BP, KC_ENT)
#define ESC_TOPR LT(_TOPROWS, KC_ESC)
#define ESC_TOPR_BP LT(_TOPROWS_BP, KC_ESC)
#define ESC_SYMB LT(_SYMB, KC_ESC)
#define ESC_SYMB_BP LT(_SYMB_BP, KC_ESC)
#define SPC_NAV LT(_NAV, KC_SPC)
#define SPC_TOPR LT(_TOPROWS, KC_SPC)
#define SPC_TOPR_BP LT(_TOPROWS_BP, KC_SPC)
#define SPC_LAYR LT(_LAYERS, KC_SPC)
#define SPC_LAYR_BP LT(_LAYERS, KC_SPC)
#define SPC_ADJ LT(_ADJUST, KC_SPC)
#define SPC_ADJ_BP LT(_ADJUST, KC_SPC)
#define BSPC_SYMB LT(_SYMB, KC_BSPC)
#define BSPC_SYMB_BP LT(_SYMB_BP, KC_BSPC)
#define BSPC_TOPR LT(_TOPROWS, KC_BSPC)
#define BSPC_TOPR_BP LT(_TOPROWS_BP, KC_BSPC)
#define SPC_NUM LT(_KEYPAD, KC_SPC)
#define SPC_NUM_BP LT(_KEYPAD_BP, KC_SPC)
#define BSPC_NUM LT(_KEYPAD, KC_BSPC)
#define BSPC_NUM_BP LT(_KEYPAD_BP, KC_BSPC)
// OSM keycodes, to keep things clean and easy to change
#define KC_MLSF OSM(MOD_LSFT)
#define KC_MRSF OSM(MOD_RSFT)
#define OS_LGUI OSM(MOD_LGUI)
#define OS_RGUI OSM(MOD_RGUI)
#define OS_LSFT OSM(MOD_LSFT)
#define OS_RSFT OSM(MOD_RSFT)
#define OS_LCTL OSM(MOD_LCTL)
#define OS_RCTL OSM(MOD_RCTL)
#define OS_LALT OSM(MOD_LALT)
#define OS_RALT OSM(MOD_RALT)
#define ALT_APP ALT_T(KC_APP)
#define MG_NKRO MAGIC_TOGGLE_NKRO
#define UC_IRNY UC(0x2E2E)
#define UC_CLUE UC(0x203D)
//// TAP DANCE
typedef struct {
bool is_press_action;
int state;
} tdtap;
enum {
SINGLE_TAP = 1,
SINGLE_HOLD = 2,
DOUBLE_TAP = 3,
DOUBLE_HOLD = 4,
DOUBLE_SINGLE_TAP = 5, //send two single taps
TRIPLE_TAP = 6,
TRIPLE_HOLD = 7
};
//Tap Dance Declarations
enum {
TD_ESC_CAPS = 0,
TD_TAB_BKTAB = 1,
TD_MDIA_SYMB = 2,
TD_HOME_END = 3,
TD_XMONAD_ESC = 4,
TD_DEF_LAYER_SW = 5,
TD_DEF_OS_LAYER_SW = 6,
TD_MOUSE_BTNS = 7,
TD_DVORAK_BEPO = 8,
TD_UP_HOME = 9,
TD_DOWN_END = 10,
TD_RIGHT_TAB = 11,
TD_LEFT_BACKTAB = 12
};
// Tap dance
#define KC_BKTAB LSFT(KC_TAB)
#define TAB_BKTAB TD(TD_TAB_BKTAB) // Tab or backtab tapdance.
#define MDIA_SYMB_KP_LAYERS TD(TD_MDIA_SYMB) // MDIA, symb, keypad, layouts layer tapdance toggle.
#define DEF_LAYER_SW TD(TD_DEF_LAYER_SW) // dvorak, dvorak_on_bepo, bepo default layer
#define DEF_OS_LAYER_SW TD(TD_DEF_OS_LAYER_SW) // dvorak, dvorak_on_bepo, bepo default layer
#define HOME_END TD(TD_HOME_END) // home or end tapdance.
#define XMONAD_ESC TD(TD_XMONAD_ESC) // Escape, dvorak, media or symb. - tap and hold tap dance. 1-4
#define DVORAK_ET_BEPO TD(TD_DVORAK_BEPO) // Escape, dvorak, media or symb. - tap and hold tap dance. 1-4
#define TDMOUSE_BTNS TD(TD_MOUSE_BTNS) // hmmm. 1-5
#define RIGHT_TAB TD(TD_RIGHT_TAB) // Bad idea these 4. Maybe with good timing...
#define LEFT_BACKTAB TD(TD_LEFT_BACKTAB)
#define UP_HOME TD(TD_UP_HOME)
#define DOWN_END TD(TD_DOWN_END) // No! Down Down Not End....
// HOME ROW LAYER TOGGLE (LT) and Shift.
// both sides of the home row have "shift, ___, media , symb, ___" and "___, symb, media, ___, shift".
// so pinky fingers are shift when held and the index and second fingers are symbol and
// media layers when held.
// The most portable copy/paste keys (windows (mostly), linux, and some terminal emulators).
// The KC_CCCV key takes care of the last two...
#define MK_CUT LSFT(KC_DEL) // shift + delete
#define MK_COPY LCTL(KC_INS) // ctrl + insert
#define MK_PASTE LSFT(KC_INS) // shift + insert
#undef ___ //kint defines it as KC_NO
#define ___ KC_TRNS
#define XXX KC_NO
// Blocking keys
#define _X_ XXX
#define ___X___ XXX
#define ___X2___ XXX, XXX
#define ___X3___ ___X2___, XXX
#define ___X5___ ___X3___, XXX, XXX
#define ___X6___ ___X5___, XXX
#define ___X12___ ___X6___, ___X6___
#define ___X15___ ___X5___, ___X5___, ___X5___
// Transparent keys
#define ___2___ ___, ___
#define ___3___ ___2___, ___
#define ___4___ ___3___, ___
#define ___5___ ___4___, ___
#define ___6___ ___5___, ___
#define ___12___ ___6___, ___6___
#define ___14___ ___5___, ___4___, ___5___
#define ___15___ ___5___, ___5___, ___5___
#define ___16___ ___15___, ___
int on_qwerty(void);
int get_xmonad_layer(void);
#ifdef TAP_DANCES_ENABLE
int cur_dance (qk_tap_dance_state_t *state);
//for the x tap dance. Put it here so it can be used in any keymap
void x_finished (qk_tap_dance_state_t *state, void *user_data);
void x_reset (qk_tap_dance_state_t *state, void *user_data);
#endif

View file

@ -1,345 +0,0 @@
#pragma once
/*
Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.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/>.
*/
#include "core_keys.h"
/********************************************************************/
/** The Core rows of each given layout. **/
/********************************************************************/
//Dvorak on a qwerty software layer in the OS
#define ___DVORAK_L1___ KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y
#define ___DVORAK_L2___ KC_A, KC_O, KC_E, KC_U, KC_I
#define ___DVORAK_L3___ KC_SCLN, KC_Q, KC_J, KC_K, KC_X
#define ___DVORAK_R1___ KC_F, KC_G, KC_C, KC_R, KC_L
#define ___DVORAK_R2___ KC_D, KC_H, KC_T, KC_N, KC_S
#define ___DVORAK_R3___ KC_B, KC_M, KC_W, KC_V, KC_Z
#define ___DVORAK___ ___DVORAK_L1___, ___DVORAK_R1___, \
___DVORAK_L2___, ___DVORAK_R2___, \
___DVORAK_L3___, ___DVORAK_R3___
/* BEAKL 15 (main layer): */
/* 40123 76598 */
/* qhoux gcrfz */
/* - yiea. dstnb ; */
/* j/,k' wmlpv */
// Remember the - and ; outside pinky keys.
// Or use the 6 size.
// Both are on the symbol layer too. So you
// wont lose them at least.
// BQ_COMM, BQ_QUOT, BQ_DOT - Beakl->Qwerty
// BB_COMM, BB_QUOT, BB_DOT - Beakl->Bepo
// take care of the different shifted chars.
/* BEAKL 15 (shift layer): */
/* QHOUX GCRFZ */
/* - YIEA@ DSTNB ; */
/* J?!K` WMLPV */
#define ___BEAKL15_L1___ KC_Q, KC_H, KC_O, KC_U, KC_X
#define ___BEAKL15_L2___ KC_Y, KC_I, KC_E, KC_A, BQ_DOT
#define ___BEAKL15_L3___ KC_J, KC_SLASH, BQ_COMM, KC_K, BQ_QUOT
#define ___BEAKL15_R1___ KC_G, KC_C, KC_R, KC_F, KC_Z
#define ___BEAKL15_R2___ KC_D, KC_S, KC_T, KC_N, KC_B
#define ___BEAKL15_R3___ KC_W, KC_M, KC_L, KC_P, KC_V
#define ___BEAKL15___ ___BEAKL15_L1___, ___BEAKL15_R1___, \
___BEAKL15_L2___, ___BEAKL15_R2___, \
___BEAKL15_L3___, ___BEAKL15_R3___
#define ___6BEAKL15_L1___ ___, KC_Q, KC_H, KC_O, KC_U, KC_X
#define ___6BEAKL15_L2___ KC_MINS, KC_Y, KC_I, KC_E, KC_A, BQ_DOT
#define ___6BEAKL15_L3___ ___, KC_J, KC_SLASH, BQ_COMM, KC_K, BQ_QUOT
#define ___6BEAKL15_R1___ KC_G, KC_C, KC_R, KC_F, KC_Z, ___
#define ___6BEAKL15_R2___ KC_D, KC_S, KC_T, KC_N, KC_B, KC_SCLN
#define ___6BEAKL15_R3___ KC_W, KC_M, KC_L, KC_P, KC_V, ___
#define ___6BEAKL15___ ___6BEAKL15_L1___, ___6BEAKL15_R1___, \
___6BEAKL15_L2___, ___6BEAKL15_R2___, \
___6BEAKL15_L3___, ___6BEAKL15_R3___
// Qwerty based layers that I don't really use.
#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, KC_SCLN
#define ___QWERTY_R3___ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLASH
#define ___QWERTY___ ___QWERTY_L1___, ___QWERTY_R1___, \
___QWERTY_L2___, ___QWERTY_R2___, \
___QWERTY_L3___, ___QWERTY_R3___
// Qwerty based layers that I don't really use.
// COLEMAK
#define ___COLEMAK_L1___ KC_Q, KC_W, KC_F, KC_P, KC_G
#define ___COLEMAK_L2___ KC_A, KC_R, KC_S, KC_T, KC_D
#define ___COLEMAK_L3___ KC_Z, KC_X, KC_C, KC_V, KC_B
#define ___COLEMAK_R1___ KC_J, KC_L, KC_U, KC_Y, KC_SCLN
#define ___COLEMAK_R2___ KC_H, KC_N, KC_E, KC_I, KC_O
#define ___COLEMAK_R3___ KC_K, KC_M, KC_COMM, KC_DOT, KC_SLASH
#define ___COLEMAK___ ___COLEMAK_L1___, ___COLEMAK_R1___, \
___COLEMAK_L2___, ___COLEMAK_R2___, \
___COLEMAK_L3___, ___COLEMAK_R3___
// COLEMAK-DH
#define ___COLEMAK_DH_L1___ KC_Q, KC_W, KC_F, KC_P, KC_B
#define ___COLEMAK_DH_L2___ KC_A, KC_R, KC_S, KC_T, KC_G
#define ___COLEMAK_DH_L3___ KC_Z, KC_X, KC_C, KC_D, KC_V
#define ___COLEMAK_DH_R1___ KC_J, KC_L, KC_U, KC_Y, KC_SCLN
#define ___COLEMAK_DH_R2___ KC_M, KC_N, KC_E, KC_I, KC_O
#define ___COLEMAK_DH_R3___ KC_K, KC_H, KC_COMM, KC_DOT, KC_SLASH
#define ___COLEMAK_DH___ ___COLEMAK_DH_L1___, ___COLEMAK_DH_R1___, \
___COLEMAK_DH_L2___, ___COLEMAK_DH_R2___, \
___COLEMAK_DH_L3___, ___COLEMAK_DH_R3___
// WORKMAN
#define ___WORKMAN_L1___ KC_Q, KC_D, KC_R, KC_W, KC_B
#define ___WORKMAN_L2___ KC_A, KC_S, KC_H, KC_T, KC_G
#define ___WORKMAN_L3___ KC_Z, KC_X, KC_M, KC_C, KC_V
#define ___WORKMAN_R1___ KC_J, KC_F, KC_U, KC_P, KC_SCLN
#define ___WORKMAN_R2___ KC_Y, KC_N, KC_E, KC_O, KC_I
#define ___WORKMAN_R3___ KC_K, KC_L, KC_COMM, KC_DOT, KC_SLASH
#define ___WORKMAN___ ___WORKMAN_L1___, ___WORKMAN_R1___, \
___WORKMAN_L2___, ___WORKMAN_R2___, \
___WORKMAN_L3___, ___WORKMAN_R3___
// NORMAN
#define ___NORMAN_L1___ KC_Q, KC_W, KC_D, KC_F, KC_K
#define ___NORMAN_L2___ KC_A, KC_S, KC_E, KC_T, KC_G
#define ___NORMAN_L3___ KC_Z, KC_X, KC_C, KC_V, KC_B
#define ___NORMAN_R1___ KC_J, KC_U, KC_R, KC_L, KC_SCLN
#define ___NORMAN_R2___ KC_Y, KC_N, KC_I, KC_O, KC_U
#define ___NORMAN_R3___ KC_P, KC_M, KC_COMM, KC_DOT, KC_SLASH
#define ___NORMAN___ ___NORMAN_L1___, ___NORMAN_R1___, \
___NORMAN_L2___, ___NORMAN_R2___, \
___NORMAN_L3___, ___NORMAN_R3___
#define ___MALTRON_L1___ KC_Q, KC_P, KC_Y, KC_C, KC_B
#define ___MALTRON_L2___ KC_A, KC_N, KC_I, KC_S, KC_F
#define ___MALTRON_L3___ KC_SCLN, KC_SLSH, KC_J, KC_G, KC_COMM
#define ___MALTRON_R1___ KC_V, KC_M, KC_U, KC_Z, KC_L
#define ___MALTRON_R2___ KC_D, KC_T, KC_D, KC_O, KC_R
#define ___MALTRON_R3___ KC_DOT, KC_W, KC_K, KC_MINS, KC_X
#define ___MALTRON___ ___MALTRON_L1___, ___MALTRON_R1___, \
___MALTRON_L2___, ___MALTRON_R2___, \
___MALTRON_L3___, ___MALTRON_R3___
#define ___EUCALYN_L1___ KC_SLSH, KC_COMM, KC_DOT, KC_F, KC_Q
#define ___EUCALYN_L2___ KC_A, KC_O, KC_E, KC_I, KC_U
#define ___EUCALYN_L3___ KC_Z, KC_X, KC_C, KC_V, KC_W
#define ___EUCALYN_R1___ KC_M, KC_R, KC_D, KC_Y, KC_P
#define ___EUCALYN_R2___ KC_G, KC_T, KC_K, KC_S, KC_N
#define ___EUCALYN_R3___ KC_B, KC_H, KC_J, KC_L, KC_SCLN
#define ___EUCALYN___ ___EUCALYN_L1___, ___EUCALYN_R1___, \
___EUCALYN_L2___, ___EUCALYN_R2___, \
___EUCALYN_L3___, ___EUCALYN_R3___
#define ___CARPLAX_QFMLWY_L1___ KC_Q, KC_F, KC_M, KC_L, KC_W
#define ___CARPLAX_QFMLWY_L2___ KC_D, KC_S, KC_T, KC_N, KC_R
#define ___CARPLAX_QFMLWY_L3___ KC_Z, KC_V, KC_G, KC_C, KC_X
#define ___CARPLAX_QFMLWY_R1___ KC_Y, KC_U, KC_O, KC_B, KC_J
#define ___CARPLAX_QFMLWY_R2___ KC_I, KC_A, KC_E, KC_H, KC_SCLN
#define ___CARPLAX_QFMLWY_R3___ KC_P, KC_K, KC_COMM, KC_DOT, KC_SLSH
#define ___CARPLAX_QFMLWY___ ___CARPLAX_QFMLWY_L1___, ___CARPLAX_QFMLWY_R1___, \
___CARPLAX_QFMLWY_L2___, ___CARPLAX_QFMLWY_R2___, \
___CARPLAX_QFMLWY_L3___, ___CARPLAX_QFMLWY_R3___
#define ___CARPLAX_QGMLWB_L1___ KC_Q, KC_G, KC_M, KC_L, KC_W
#define ___CARPLAX_QGMLWB_L2___ KC_D, KC_S, KC_T, KC_N, KC_R
#define ___CARPLAX_QGMLWB_L3___ KC_Z, KC_X, KC_C, KC_F, KC_J
#define ___CARPLAX_QGMLWB_R1___ KC_B, KC_Y, KC_U, KC_V, KC_SCLN
#define ___CARPLAX_QGMLWB_R2___ KC_I, KC_A, KC_E, KC_O, KC_H
#define ___CARPLAX_QGMLWB_R3___ KC_K, KC_P, KC_COMM, KC_DOT, KC_SLSH
#define ___CARPLAX_QGMLWB___ ___CARPLAX_QGMLWB_L1___, ___CARPLAX_QGMLWB_R1___, \
___CARPLAX_QGMLWB_L2___, ___CARPLAX_QGMLWB_R2___, \
___CARPLAX_QGMLWB_L3___, ___CARPLAX_QGMLWB_R3___
#define ___CARPLAX_QGMLWY_L1___ KC_Q, KC_G, KC_M, KC_L, KC_W
#define ___CARPLAX_QGMLWY_L2___ KC_D, KC_S, KC_T, KC_N, KC_R
#define ___CARPLAX_QGMLWY_L3___ KC_Z, KC_X, KC_C, KC_V, KC_J
#define ___CARPLAX_QGMLWY_R1___ KC_Y, KC_F, KC_U, KC_B, KC_SCLN
#define ___CARPLAX_QGMLWY_R2___ KC_I, KC_A, KC_E, KC_O, KC_H
#define ___CARPLAX_QGMLWY_R3___ KC_K, KC_P, KC_COMM, KC_DOT, KC_SLSH
#define ___CARPLAX_QGMLWY___ ___CARPLAX_QGMLWY_L1___, ___CARPLAX_QGMLWY_R1___, \
___CARPLAX_QGMLWY_L2___, ___CARPLAX_QGMLWY_R2___, \
___CARPLAX_QGMLWY_L3___, ___CARPLAX_QGMLWY_R3___
// BEPO Based Layouts.
// Bepo, Dvorak and Beakl on fr-bepo software layer in the OS.
// for dvorak and all the other qwerty like keyboards on bepo
#define ___DVORAK_FR_L1___ DB_QUOT, DB_COMM, DB_DOT, BP_P, BP_Y
#define ___DVORAK_FR_L2___ BP_A, BP_O, BP_E, BP_U, BP_I
#define ___DVORAK_FR_L3___ DB_SCOLON, BP_Q, BP_J, BP_K, BP_X
#define ___DVORAK_FR_R1___ BP_F, BP_G, BP_C, BP_R, BP_L
#define ___DVORAK_FR_R2___ BP_D, BP_H, BP_T, BP_N, BP_S
#define ___DVORAK_FR_R3___ BP_B, BP_M, BP_W, BP_V, BP_Z
#define ___DVORAK_FR___ ___DVORAK_FR_L1___, ___DVORAK_FR_R1___, \
___DVORAK_FR_L2___, ___DVORAK_FR_R2___, \
___DVORAK_FR_L3___, ___DVORAK_FR_R3___
/* BEAKL 15 (main layer): */
#define ___DVORAK6_FR_L1___ DB_GRV, ___DVORAK_FR_L1___
#define ___DVORAK6_FR_L2___ TAB_BKTAB, ___DVORAK_FR_L2___
#define ___DVORAK6_FR_L3___ ___, ___DVORAK_FR_L3___
#define ___DVORAK6_FR_R1___ ___DVORAK_FR_R1___, BP_MIN
#define ___DVORAK6_FR_R2___ ___DVORAK_FR_R2___, BP_SLSH
#define ___DVORAK6_FR_R3___ ___DVORAK_FR_R3___, DB_BACKSLASH
#define ___6DVORAK_FR___ ___6DVORAK_FR_L1___, ___6DVORAK_FR_R1___, \
___6DVORAK_FR_L2___, ___6DVORAK_FR_R2___, \
___6DVORAK_FR_L3___, ___6DVORAK_FR_R3___
// dont forget ; and -. the 'a' home row is official placement.
#define ___BEAKL15_FR_L1___ BP_Q, BP_H, BP_O, BP_U, BP_X
#define ___BEAKL15_FR_L2___ BP_Y, BP_I, BP_E, BP_A, BB_DOT
#define ___BEAKL15_FR_L2a___ BP_MIN, BP_Y, BP_I, BP_E, BP_A, BB_DOT
#define ___BEAKL15_FR_L3___ BP_J, BP_SLSH, BB_COMM, BP_K, BB_QUOT
#define ___BEAKL15_FR_R1___ BP_G, BP_C, BP_R, BP_F, BP_Z
#define ___BEAKL15_FR_R2___ BP_D, BP_S, BP_T, BP_N, BP_B
#define ___BEAKL15_FR_R2a___ BP_D, BP_S, BP_T, BP_N, BP_B, DB_SCLN
#define ___BEAKL15_FR_R3___ BP_W, BP_M, BP_L, BP_P, BP_V
#define ___6BEAKL15_FR___ ___, ___BEAKL15_FR_L1___, ___BEAKL15_FR_R1___, ___, \
___BEAKL15_FR_L2a___, ___BEAKL15_FR_R2a___, \
___, ___BEAKL15_FR_L3___, ___BEAKL15_FR_R3___, ___
#define ___BEAKL15_FR___ ___BEAKL15_FR_L1___, ___BEAKL15_FR_R1___, \
___BEAKL15_FR_L2___, ___BEAKL15_FR_R2___, \
___BEAKL15_FR_L3___, ___BEAKL15_FR_R3___
#define ___BEPO_L1___ BP_B, BP_EACU, BP_P, BP_O, BP_EGRV
#define ___BEPO_L2___ BP_A, BP_U, BP_I, BP_E, BP_COMM
#define ___BEPO_L3___ /*BP_ECRC*/ BP_AGRV, BP_Y, BP_X, BP_DOT, BP_K
#define ___BEPO_R1___ /* BP_DCRC,*/ BP_V, BP_D, BP_L, BP_J, BP_Z
#define ___BEPO_R2___ /* BP_C, */ BP_T, BP_S, BP_R, BP_N, BP_M //BP_CCED
#define ___BEPO_R3___ BP_QUOT, BP_Q, BP_G, BP_H, BP_F //BP_SFT_T_W
// Bepo for a 3x6 split. CCED switched hands. :-( 'Altgr-c c' does the same.
// W has to drop down to the bottom. Silly unbalanced layout.
#define ___BEPO6_L1___ BP_CCED, ___BEPO_L1___
#define ___BEPO6_L2___ TAB_BKTAB, ___BEPO_L2___
#define ___BEPO6_L3___ BP_ECIR, ___BEPO_L3___
#define ___BEPO6_R1___ ___BEPO_R1___, BP_PERC
#define ___BEPO6_R2___ ___BEPO_R2___, BP_C
#define ___BEPO6_R3___ ___BEPO_R3___, BP_W
#define ___BEPO6___ ___BEPO6_L1___, ___BEPO6_R1___, \
___BEPO6_L2___, ___BEPO6_R2___, \
___BEPO6_L3___, ___BEPO6_R3___
#define ___BEPO___ ___BEPO_L1___, ___BEPO_R1___, \
___BEPO_L2___, ___BEPO_R2___, \
___BEPO_L3___, ___BEPO_R3___
/*******************************************************************/
/** TOP ROWS Func,Symbols, Numbers you find there. **/
/*******************************************************************/
// for everything on qwerty.
#define ___NUMBER_L___ KC_1, KC_2, KC_3, KC_4, KC_5
#define ___NUMBER_R___ KC_6, KC_7, KC_8, KC_9, KC_0
#define ___NUMBER_BEAKL15_L___ KC_4, KC_0, KC_1, KC_2, KC_3
#define ___NUMBER_BEAKL15_R___ KC_7, KC_6, KC_5, KC_9, KC_8
// a top symbol row if someone wants it.
#define ___SYMB_L___ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC
#define ___SYMB_R___ KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN
/// BEPO ////
// For numbers on bepo. Bepo has numbers on shifted keys, the
// reverse of many layouts.
#define ___NUMBER_BEPO_L___ DB_1, DB_2, DB_3, DB_4, DB_5
#define ___NUMBER_BEPO_R___ DB_6, DB_7, DB_8, DB_9, DB_0
// In case you want to try BEAKL 15 Numbers
#define ___NUMBER_BEAKL15_BP_L___ DB_4, DB_0, DB_1, DB_2, DB_3
#define ___NUMBER_BEAKL15_BP_R___ DB_7, DB_6, DB_5, DB_9, DB_8
// The top row. Bepo has symbols not numbers. Numbers are the shifted values.
// There are actually 13 keys specified for bepo.
#define ___SYMBOL_BEPO_L___ /* BP_DLR */ BP_DQUO, BP_LDAQ, BP_RDAQ, BP_LPRN, BP_RPRN
#define ___SYMBOL_BEPO_R___ BP_AT, BP_PLUS, BP_MINS, BP_SLSH, BP_ASTR /* BP_EQL, BP_PERC */
#define ___6SYMBOL_BEPO_L___ BP_DLR, ___SYMBOL_BEPO_L___
#define ___6SYMBOL_BEPO_R___ ___SYMBOL_BEPO_R___, BP_EQL /* BP_PERC */
// a top qwerty style symbol row if someone wants it.
#define ___SYMB_L_FR___ DB_EXLM, BP_AT, BP_HASH, BP_DLR, BP_PERC
#define ___SYMB_R_FR___ DB_CIRC, BP_AMPR, BP_ASTR, BP_LPRN, BP_RPRN
// function key rows, works for everyone.
#define ___FUNC_L___ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5
#define ___FUNC_R___ KC_F6, KC_F7, KC_F8, KC_F9, KC_F10
#define ___FUNC_1_6___ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6
#define ___FUNC_7_12___ KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12
#define ___FUNC_BEAKL_L___ KC_F4, KC_F10, KC_F1, KC_F2, KC_F3
#define ___FUNC_BEAKL_R___ KC_F7, KC_F6, KC_F5, KC_F9, KC_F8
#define ___12_FUNC_BEAKL___ KC_F11, ___FUNC_BEAKL_L___, ___FUNC_BEAKL_R___, KC_F12
// Altogether. Defines all the various top rows that
// are present with all these layouts.
// All together as blocks of 10
#define ___NUMS___ ___NUMBER_L___, ___NUMBER_R___
#define ___SYMS___ ___SYMB_L___, ___SYMB_R___
#define ___BKLNUMS___ ___NUMBER_BEAKL15_L___, ___NUMBER_BEAKL15_R___
#define ___NUMS_BP___ ___NUMBER_BEPO_L___, ___NUMBER_BEPO_R___
#define ___SYMS_BEPO___ ___SYMBOL_BEPO_L___, ___SYMBOL_BEPO_L___
#define ___BKLNUMS_BP___ ___NUMBER_BEAKL15_BP_L___, ___NUMBER_BEAKL15_BP_R___
#define ___FUNCS_1_10___ ___FUNC_L___, ___FUNC_R___

View file

@ -0,0 +1,101 @@
// Accented keys.
// add them to the custom keys enum.
// List them here, with their keycode and the accent keycode
// that are needed to create them.
// Last, most frequent letters in french.
// é is further up.
// 24 x 3 588 990 0.38%
// 25 j 3 276 064 0.34%
// 26 è 2 969 466 0.31%
// 27 à 2 966 029 0.31%
// 28 k 2 747 547 0.29%
// 29 w 1 653 435 0.17%
// 30 z 1 433 913 0.15%
// 31 ê 802 211 0.08%
// 32 ç 544 509 0.06%
// 33 ô 357 197 0.04%
// 34 â 320 837 0.03%
// 35 î 280 201 0.03%
// 36 û 164 516 0.02%
// 37 ù 151 236 0.02%
// 38 ï 138 221 0.01%
// 39 á 73 751 0.01% - absent.
// 79 ü 55 172 0.01%
// 82 ë 53 862 0.01%
//absent.
// 83 ö 51 020 0.01%
// 84 í 48 391 0.01%
// ACCENT
// Custom key code, Keycode, altgr accent keycode.
#if defined(SECOND_LOCALE) && (SECOND_LOCALE == BEPO)
ACCENTED(BP_OCIR, BP_O, BP_DCIR)
ACCENTED(BP_ACIR, BP_A, BP_DCIR)
ACCENTED(BP_ICIR, BP_I, BP_DCIR)
ACCENTED(BP_UCIR, BP_U, BP_DCIR)
//ACCENTED(BP_CCIR, BP_C, BP_DCIR)
//ACCENTED(BP_GCIR, BP_G, BP_DCIR)
//ACCENTED(BP_HCIR, BP_H, BP_DCIR)
#endif
ACCENTED(US_OCIR, US_O, US_DCIR)
ACCENTED(US_ACIR, US_A, US_DCIR)
ACCENTED(US_ICIR, US_I, US_DCIR)
ACCENTED(US_UCIR, US_U, US_DCIR)
ACCENTED(US_ECIR, US_E, US_DCIR)
#if defined(SECOND_LOCALE) && (SECOND_LOCALE == BEPO)
ACCENTED(BP_AACU, BP_A, BP_ACUT)
ACCENTED(BP_OACU, BP_O, BP_ACUT)
ACCENTED(BP_IACU, BP_I, BP_ACUT)
ACCENTED(BP_UACU, BP_U, BP_ACUT)
//ACCENTED(BP_OGRV, BP_O, BP_DGRV)
ACCENTED(BP_IGRV, BP_I, BP_DGRV)
#endif
ACCENTED(US_IGRV, US_I, US_DGRV)
ACCENTED(US_UGRV, US_U, US_DGRV)
ACCENTED(US_EGRV, US_E, US_DGRV)
ACCENTED(US_AGRV, US_A, US_DGRV)
// ACCENTED(BP_NTIL, BP_N, BP_DTIL)
// ACCENTED(BP_ATIL, BP_A, BP_DTIL)
// ACCENTED(BP_OTIL, BP_O, BP_DTIL)
// ACCENTED(BP_UTIL, BP_U, BP_DTIL)
ACCENTED(US_IIAE, US_I, US_DIAE)
ACCENTED(US_UIAE, US_U, US_DIAE)
ACCENTED(US_EIAE, US_E, US_DIAE)
ACCENTED(US_OIAE, US_O, US_DIAE)
#if defined(SECOND_LOCALE) && (SECOND_LOCALE == BEPO)
ACCENTED(BP_IIAE, BP_I, BP_DIAE)
ACCENTED(BP_UIAE, BP_U, BP_DIAE)
ACCENTED(BP_EIAE, BP_E, BP_DIAE)
ACCENTED(BP_OIAE, BP_O, BP_DIAE)
// ACCENTED(BP_AIAE, BP_A, BP_DIAE)
#endif
// ACCENTED(E_ACUTE, SK_E, SK_ACUT)
// ACCENTED(R_ACUTE, SK_R, SK_ACUT)
// ACCENTED(U_ACUTE, SK_U, SK_ACUT)
// ACCENTED(I_ACUTE, SK_I, SK_ACUT)
// ACCENTED(O_ACUTE, SK_O, SK_ACUT)
// ACCENTED(A_ACUTE, SK_A, SK_ACUT)
// ACCENTED(L_ACUTE, SK_L, SK_ACUT)
// ACCENTED(Y_ACUTE, SK_Z, SK_ACUT)
// ACCENTED(T_CARON, SK_T, SK_CARN)
// ACCENTED(Z_CARON, SK_Y, SK_CARN)
// ACCENTED(O_CARON, SK_O, SK_CARN)
// ACCENTED(S_CARON, SK_S, SK_CARN)
// ACCENTED(D_CARON, SK_D, SK_CARN)
// ACCENTED(L_CARON, SK_L, SK_CARN)
// ACCENTED(C_CARON, SK_C, SK_CARN)
// ACCENTED(N_CARON, SK_N, SK_CARN)
// ACCENTED(U_UMLAU, SK_U, SK_DIAE
// ACCENTED(O_UMLAU,SK_O, SK_DIAE)
// // napis o s vokanom cez vokan rather than normalne aby sa dalo velke uo
// ACCENTED(O_CCIRC, SK_O, SK_CIRC)

View file

@ -0,0 +1,6 @@
// alt shift. Give an existing key code,
// and maybe an alternate shift keycode.
ALT_SHIFT(US_EXLM, US_PERC)
SHIFT_FOR_2(US_AT)
SHIFT_FOR_3(US_DLR)

View file

@ -0,0 +1,208 @@
// These are to create keys which don't exist in a locale.
// so that we can create alternate maps to qwerty, azerty, or whatever.
// Key name,
// unshifted key and it's required mods.
// the desired shifted keys and it's required mods.
// for dvorak on bepo
#if defined(SECOND_LOCALE) && (SECOND_LOCALE == BEPO)
MK_KEY(BP_DV_1, BP_DQUO, MOD_LSFT, BP_DCIR, MOD_LSFT)
MK_KEY(BP_DV_2, BP_LDAQ, MOD_LSFT, BP_AT, MOD_NONE)
MK_KEY(BP_DV_3, BP_RDAQ, MOD_LSFT, BP_DLR, MOD_LSFT)
MK_KEY(BP_DV_4, BP_LPRN, MOD_LSFT, BP_DLR, MOD_NONE)
MK_KEY(BP_DV_5, BP_RPRN, MOD_LSFT, BP_PERC, MOD_NONE)
MK_KEY(BP_DV_6, BP_AT, MOD_LSFT, BP_AT, MOD_BIT(KC_RALT))
MK_KEY(BP_DV_7, BP_PLUS, MOD_LSFT, BP_P, MOD_BIT(KC_RALT))
MK_KEY(BP_DV_8, BP_MINS, MOD_LSFT, BP_ASTR, MOD_NONE)
MK_KEY(BP_DV_9, BP_SLSH, MOD_LSFT, BP_LPRN, MOD_NONE)
MK_KEY(BP_DV_0, BP_ASTR, MOD_LSFT, BP_RPRN, MOD_NONE)
MK_KEY(BP_DV_GRV, BP_PERC, MOD_LSFT, BP_K, MOD_BIT(KC_RALT))
MK_KEY(BP_DV_SCLN, BP_COMM, MOD_LSFT, BP_DOT, MOD_LSFT)
MK_KEY(BP_DV_SLSH, BP_SLSH, MOD_NONE, BP_QUOT, MOD_LSFT)
//MK_KEY(BP_DV_BSLS, BP_AGRV, MOD_BIT(KC_RALT), BP_B, MOD_BIT(KC_RALT))
MK_KEY(BP_DV_EQL, BP_EQL, MOD_NONE, BP_PLUS, MOD_NONE)
MK_KEY(BP_DV_COMM, BP_COMM, MOD_NONE, BP_LDAQ, MOD_BIT(KC_RALT))
MK_KEY(BP_DV_DOT, BP_DOT, MOD_NONE, BP_RDAQ, MOD_BIT(KC_RALT))
MK_KEY(BP_DV_QUOT, BP_QUOT, MOD_NONE, BP_DQUO, MOD_NONE)
MK_KEY(BP_DV_MINS, BP_MINS, MOD_NONE, KC_SPC, MOD_BIT(KC_RALT))
#endif
#if defined(BEAKL15_LAYER_ENABLE) || defined(BEAKL19_LAYER_ENABLE)
// Keys for BEAKL 15, 19 on Qwerty
MK_KEY(KC_BK_DOT, KC_DOT, MOD_NONE, KC_2, MOD_LSFT)
MK_KEY(KC_BK_COMM, KC_COMM, MOD_NONE, KC_1, MOD_LSFT)
MK_KEY(KC_BK_QUOT, KC_QUOT, MOD_NONE, KC_GRV, MOD_NONE)
MK_KEY(US_BK_DOT, KC_DOT, MOD_NONE, KC_2, MOD_LSFT)
MK_KEY(US_BK_COMM, KC_COMM, MOD_NONE, KC_1, MOD_LSFT)
MK_KEY(US_BK_QUOT, KC_QUOT, MOD_NONE, KC_GRV, MOD_NONE)
// Keys for BEAKL WI on Qwerty
MK_KEY(KC_BKW_DOT, KC_DOT, MOD_NONE, KC_GRV, MOD_NONE)
MK_KEY(KC_BKW_COMM, KC_COMM, MOD_NONE, KC_TILD, MOD_NONE)
MK_KEY(KC_BKW_COLN, KC_SCLN, MOD_LSFT, KC_SCLN, MOD_NONE)
# if defined(SECOND_LOCALE) && (SECOND_LOCALE == BEPO) || (DEFAULT_LANG == BEPO)
// Keys for BEAKL on BEPO
MK_KEY(BP_BK_DOT, BP_DOT, MOD_NONE, BP_AT, MOD_NONE)
MK_KEY(BP_BK_COMM, BP_COMM, MOD_NONE, BP_EXLM, MOD_NONE)
MK_KEY(BP_BK_QUOT, BP_QUOT, MOD_NONE, BP_PERC, MOD_LSFT)
# ifdef BEAKLWI_LAYER_ENABLE
// Keys for BEAKL WI on BEPO
MK_KEY(BP_BKW_DOT, BP_DOT, MOD_NONE, BP_GRV, MOD_NONE)
MK_KEY(BP_BKW_COMM, BP_COMM, MOD_NONE, BP_TILD, MOD_NONE)
MK_KEY(BP_BKW_COLN, BP_COLN, MOD_LSFT, BP_SCLN, MOD_NONE)
# endif
// Keys for BEAKL 27 on BEPO
# ifdef BEAKL27_LAYER_ENABLE
MK_KEY(BP_BK2_DOT, BP_DOT, MOD_NONE, BP_GRV, MOD_NONE)
MK_KEY(BP_BK2_COMM, BP_COMM, MOD_NONE, BP_QUES, MOD_NONE)
MK_KEY(BP_BK2_EXLM, BP_EXLM, MOD_NONE, BP_PERC, MOD_LSFT)
MK_KEY(BP_BK2_QUOT, BP_QUOT, MOD_NONE, BP_QUOT, MOD_NONE)
# endif
# endif
#endif
#ifdef BEAKL27_LAYER_ENABLE
// Keys for BEAKL 27 on Qwerty
/* // altered shifted pairs: dot = .` comma = ,? dquot = "! */
MK_KEY(KC_BK2_DOT, KC_DOT, MOD_NONE, KC_GRV, MOD_NONE)
MK_KEY(KC_BK2_COMM, KC_COMM, MOD_NONE, KC_QUES, MOD_NONE)
MK_KEY(KC_BK2_EXLM, KC_EXLM, MOD_NONE, KC_DQUO, MOD_NONE)
MK_KEY(KC_BK2_QUOT, KC_QUOT, MOD_NONE, KC_QUOT, MOD_NONE)
MK_KEY(US_BK2_DOT, US_DOT, MOD_NONE, US_GRV, MOD_NONE)
MK_KEY(US_BK2_COMM, US_COMM, MOD_NONE, US_QUES, MOD_NONE)
MK_KEY(US_BK2_EXLM, US_EXLM, MOD_NONE, US_DQUO, MOD_NONE)
MK_KEY(US_BK2_QUOT, US_QUOT, MOD_NONE, US_QUOT, MOD_NONE)
#endif
// shifted pairs: dot = .` comma = ,~ colon = :;
#if defined(HD_NEU_LAYER_ENABLE) || \
defined(HD_NEU_NARROW_LAYER_ENABLE) || \
defined(HD_GOLD_LAYER_ENABLE) || \
defined(HD_SILVER_LAYER_ENABLE) || \
defined(HD_BRONZE_LAYER_ENABLE) || \
defined(HD_PLATINUM_LAYER_ENABLE) || \
defined(HD_REF_LAYER_ENABLE)
// hands down alterations.
/* alt shifts ;: .& /\* '? "! ,| -+ */
// for en qwerty
MK_KEY(KC_HD_DQUO, KC_QUOT, MOD_LSFT, KC_1, MOD_LSFT) // "!
MK_KEY(KC_HD_QUOT, KC_QUOT, MOD_NONE, KC_SLSH, MOD_LSFT) // '?
MK_KEY(KC_HD_DOT, KC_DOT, MOD_NONE, KC_7, MOD_LSFT) // .&
MK_KEY(KC_HD_SCLN, KC_SCLN, MOD_NONE, KC_SCLN, MOD_LSFT) // ;:
MK_KEY(KC_HD_COMM, KC_COMM, MOD_NONE, KC_BSLS, MOD_LSFT) // ,|
MK_KEY(KC_HD_MINS, KC_MINS, MOD_NONE, KC_EQL, MOD_LSFT) // -+
MK_KEY(KC_HD_SLSH, KC_SLSH, MOD_NONE, KC_8, MOD_LSFT) // /*
// for us international
MK_KEY(US_HD_DQUO, US_QUOT, MOD_LSFT, US_1, MOD_LSFT)
MK_KEY(US_HD_QUOT, US_QUOT, MOD_NONE, KC_SLSH, MOD_LSFT)
MK_KEY(US_HD_DOT, US_DOT, MOD_NONE, US_7, MOD_LSFT)
MK_KEY(US_HD_SCLN, KC_SCLN, MOD_NONE, KC_SCLN, MOD_LSFT) // ;:
MK_KEY(US_HD_COMM, US_COMM, MOD_NONE, US_BSLS, MOD_LSFT)
MK_KEY(US_HD_MINS, US_MINS, MOD_NONE, US_EQL, MOD_LSFT)
MK_KEY(US_HD_SLSH, US_SLSH, MOD_NONE, US_8, MOD_LSFT)
// for bepo
#if defined(SECOND_LOCALE) && (SECOND_LOCALE == BEPO) || (DEFAULT_LANG == BEPO)
MK_KEY(BP_HD_DQUO, BP_DQUO, MOD_NONE, BP_QUES, MOD_NONE)
MK_KEY(BP_HD_QUOT, BP_QUOT, MOD_NONE, BP_EXLM, MOD_NONE)
MK_KEY(BP_HD_SCLN, BP_SCLN, MOD_NONE, BP_COLN, MOD_NONE) // ;:
MK_KEY(BP_HD_DOT, BP_DOT, MOD_NONE, BP_AMPR, MOD_NONE)
MK_KEY(BP_HD_COMM, BP_COMM, MOD_NONE, BP_PIPE, MOD_NONE)
MK_KEY(BP_HD_MINS, BP_MINS, MOD_NONE, BP_PLUS, MOD_NONE)
MK_KEY(BP_HD_SLSH, BP_SLSH, MOD_NONE, BP_ASTR, MOD_NONE)
#endif
#endif
/* alt shifts ;: .& /\* '? "! ,| -+ */
#ifdef HD_DASH_LAYER_ENABLE
// DASH and Elan have these reversed from the metals.
/* //alt shift keys. "? '! */
MK_KEY(KC_HD_D_DQUO, KC_DQUO, MOD_NONE, KC_SLSH, MOD_LSFT) // "?
MK_KEY(KC_HD_D_QUOT, KC_QUOT, MOD_NONE, KC_1, MOD_LSFT) // '!
MK_KEY(KC_HD_D_DOT, KC_DOT, MOD_NONE, KC_7, MOD_LSFT) // .&
MK_KEY(KC_HD_D_COMM, KC_COMM, MOD_NONE, KC_BSLS, MOD_LSFT) // ,|
MK_KEY(KC_HD_D_MINS, KC_MINS, MOD_NONE, KC_EQL, MOD_LSFT) // -+
MK_KEY(KC_HD_D_SLSH, KC_SLSH, MOD_NONE, KC_8, MOD_LSFT) // /*
// for us international
MK_KEY(US_HD_D_DQUO, US_QUOT, MOD_LSFT, KC_SLSH, MOD_LSFT)
MK_KEY(US_HD_D_QUOT, US_QUOT, MOD_NONE, US_1, MOD_LSFT)
MK_KEY(US_HD_D_DOT, US_DOT, MOD_NONE, US_7, MOD_LSFT)
MK_KEY(US_HD_D_COMM, US_COMM, MOD_NONE, US_BSLS, MOD_LSFT)
MK_KEY(US_HD_D_MINS, US_MINS, MOD_NONE, US_EQL, MOD_LSFT)
MK_KEY(US_HD_D_SLSH, US_SLSH, MOD_NONE, US_8, MOD_LSFT)
// for bepo
#if defined(SECOND_LOCALE) && (SECOND_LOCALE == BEPO) || (DEFAULT_LANG == BEPO)
MK_KEY(BP_HD_D_DQUO, BP_DQUO, MOD_NONE, BP_QUES, MOD_NONE)
MK_KEY(BP_HD_D_QUOT, BP_QUOT, MOD_NONE, BP_EXLM, MOD_NONE)
MK_KEY(BP_HD_D_DOT, BP_DOT, MOD_NONE, BP_AMPR, MOD_NONE)
MK_KEY(BP_HD_D_COMM, BP_COMM, MOD_NONE, BP_PIPE, MOD_NONE)
MK_KEY(BP_HD_D_MINS, BP_MINS, MOD_NONE, BP_PLUS, MOD_NONE)
MK_KEY(BP_HD_D_SLSH, BP_SLSH, MOD_NONE, BP_ASTR, MOD_NONE)
#endif
#endif
#ifdef HD_ELAN_LAYER_ENABLE
// Elan has alt shift of comma and dot on the thumb.
// en
MK_KEY(KC_HD_E_DQUO, KC_QUOT, MOD_LSFT, KC_SLSH, MOD_LSFT)
MK_KEY(KC_HD_E_QUOT, KC_QUOT, MOD_NONE, KC_1, MOD_LSFT)
// the rest is the same
MK_KEY(KC_HD_E_MINS, KC_MINS, MOD_NONE, KC_EQL, MOD_LSFT) // -+
MK_KEY(KC_HD_E_SLSH, KC_SLSH, MOD_NONE, KC_8, MOD_LSFT) // /*
// until .: and ,;
MK_KEY(KC_HD_E_DOT, KC_DOT, MOD_NONE, KC_SCLN, MOD_LSFT) // .:
MK_SKEY(KC_HD_E_COMM, KC_COMM, KC_SCLN) // ,;
/* (< {[ */
MK_KEY(KC_HD_E_LPRN, KC_LPRN, MOD_NONE, KC_COMM, MOD_LSFT)
MK_KEY(KC_HD_E_LCBR, KC_LCBR, MOD_NONE, KC_LBRC, MOD_NONE )
// US-intl
MK_KEY(US_HD_E_DQUO, US_QUOT, MOD_LSFT, KC_SLSH, MOD_LSFT)
MK_KEY(US_HD_E_QUOT, US_QUOT, MOD_NONE, US_1, MOD_LSFT)
// the rest is the same
MK_KEY(US_HD_E_MINS, US_MINS, MOD_NONE, US_EQL, MOD_LSFT) // -+
MK_KEY(US_HD_E_SLSH, US_SLSH, MOD_NONE, US_8, MOD_LSFT) // /*
// until .: and ,;
MK_KEY(US_HD_E_DOT, KC_DOT, MOD_NONE, US_SCLN, MOD_LSFT) // .:
MK_SKEY(US_HD_E_COMM, US_COMM, US_SCLN) // ,;
/* (< {[ */
MK_KEY(US_HD_E_LPRN, US_LPRN, MOD_NONE, US_COMM, MOD_LSFT)
MK_KEY(US_HD_E_LCBR, US_LCBR, MOD_NONE, US_LBRC, MOD_NONE )
// bepo
#if defined(SECOND_LOCALE) && (SECOND_LOCALE == BEPO) || (DEFAULT_LANG == BEPO)
MK_KEY(BP_HD_E_DQUO, BP_DQUO, MOD_NONE, BP_SLSH, MOD_NONE)
MK_KEY(BP_HD_E_QUOT, BP_QUOT, MOD_NONE, BP_EXLM, MOD_NONE)
// the rest is the same
MK_KEY(BP_HD_E_MINS, BP_MINS, MOD_NONE, BP_EQL, MOD_NONE) // -+
MK_KEY(BP_HD_E_SLSH, BP_SLSH, MOD_NONE, BP_ASTR, MOD_NONE) // /*
// until .: and ,;
MK_KEY(BP_HD_E_DOT, KC_DOT, MOD_NONE, BP_SCLN, MOD_LSFT) // .:
MK_SKEY(BP_HD_E_COMM, BP_COMM, BP_SCLN) // ,;
/* (< {[ */
MK_KEY(BP_HD_E_LPRN, BP_LPRN, MOD_NONE, BP_COMM, MOD_LSFT)
MK_KEY(BP_HD_E_LCBR, BP_LCBR, MOD_NONE, BP_LBRC, MOD_NONE )
#endif
#endif

View file

@ -0,0 +1,139 @@
// Per layer combo reference layers.
// Default is current layer, or COMBO_REF_DEFAULT if set.
// _COMBO_REF is the default if enabled.
//COMBO_REF_LAYER(_DVORAK_BP, _COMBO_REF2)
COMBO_REF_LAYER(_NAV, _NAV)
// COMBOS
// name result chord keys
// sml nav, sml keypad, zqxj, onshot accents, oneshot symbols
// home, end, caps word, accents? -> aeeecio oe, ao,
// reference COMBO_REF
COMB(TSCTL, TS_LCTL, CB_1L3, CB_1L4)
COMB(SMLNAV1, SML_NAV, CB_1L2, CB_1L3)
COMB(OSACCENTMT, SML_KEYPAD, CB_1L2, CB_1R4)
#ifdef TOPROWS_LAYER_ENABLE
COMB(OSTOPROWS, SML_TOPROWS, CB_1L3, CB_1R3)
#endif
//COMB(OSlsftT, OS_LSFT, CB_1L4, CB_1R2)
COMB(OSSFT, OS_LSFT, CB_2L4, CB_2R2)
COMB(TSCTL2, TS_LCTL, CB_1L4, CB_1R2)
// COMB(SMLNAV, SML_NAV, CB_2L4, CB_2R2)
COMB(OSCTL, OS_LCTL, CB_2L2, CB_2R4)
COMB(OSACCENTM, OSL_ACCENTS_MORTE, CB_2L3, CB_2R3)
COMB(capsword, CAPS_WORD, CB_3L4, CB_3R2)
COMB(OSRALT, OS_RALT, CB_3L3, CB_3R3)
COMB(OSLALT2, OS_LALT, CB_3L2, CB_3R4)
COMB(OSLAYER, LAYER_OSL, CB_3L1, CB_3R5)
COMB(OSLSYMB, OSL_SYMB, CB_TH2, CB_TH5)
COMB(LNAV, SML_NAV, CB_TH3, CB_TH4)
COMB(_Q, KC_Q, CB_3L2, CB_3L3)
COMB(_X, KC_X, CB_3L3, CB_3L4)
COMB(_Z, KC_Z, CB_3R3, CB_3R4)
// vertical thumb combos for the kyria
//COMB(xxx, xxx, CB_TH2, CB_0TH1)
#ifdef MEDIA_LAYER_ENABLE
COMB(SMLMEDIA, SML_MEDIA, CB_TH3, CB_0TH2)
#endif
COMB(OSLACCENT2, OSL_ACCENTS_MORTE, CB_TH4, CB_0TH3)
COMB(KEYPAD, SML_KEYPAD, CB_TH5, CB_0TH4)
// reference COMBO_REF2
#if defined(SECOND_LOCALE) && (SECOND_LOCALE == BEPO)
COMB(TSCTL_BP, TS_LCTL, CB_1L3, CB_1L4)
COMB(SMLNAV1_bp, SML_NAV, CB_1L2, CB_1L3)
#ifdef ACCENTS_MORTE_LAYER_ENABLE
COMB(OSLACCENT_bp, OSL(_ACCENTS_MORTE_BP), CB2_2L1, CB2_2L2)
#endif
COMB(SMLNAV_BP, SML_NAV, CB2_2L2, CB2_2L3)
COMB(OSCTL_BP, OS_LCTL, CB2_2L3, CB2_2L4)
COMB(OSSFT_BP, OS_LSFT, CB2_2R2, CB2_2R3)
// COMB(SMLKEYPAD_BP, SML_KEYPAD_BP, CB2_2R3, CB2_2R4)
COMB(capsword_BP, CAPS_WORD_ON, CB2_3L4, CB2_3R2)
// COMB(OSLSYMBP_BP, OSL(_SYMB_BP), CB2_TH2, CB2_TH5)
COMB(LNAV_BP, SML_NAV, CB2_TH3, CB2_TH4)
COMB(_Qbp, BP_Q, CB2_3L2, CB2_3L3)
COMB(_Xbp, BP_X, CB2_3L3, CB2_3L4)
COMB(_Zbp, BP_Z, CB2_3R3, CB2_3R4)
#endif
// Reference nav layer
COMB(END_nav, KC_END, KC_PGUP, KC_PGDN)
COMB(HOME_nav, KC_HOME, KC_UP, KC_DOWN)
//COMB(JKL_SPC, KC_SPC, KC_J, KC_X)
//SUBS(TH_THE, "the", KC_T, KC_H) // SUBS uses SEND_STRING to output the given string.
// from possum vibes to review.
/* COMBO NAME | OUTPUT | PARAMS */
// /*---- TOP ROW ----*/
// COMB(turbonav, NAV_TG, KC_W, KC_R) // Nav access
// COMB(save, S_SAVE, KC_E, KC_R) // Save
// COMB(back_fwd, BCK_FWD, KC_R, KC_T) // Back/Fwd (shifted)
// COMB(undo_redo, UND_RED, KC_Y, KC_U) // Undo/Redo (shifted)
// COMB(esc, KC_ESC, KC_U, KC_O) // Esc
// #ifdef IS_PINKY_CLUSTER
// COMB(delete, KC_DEL, KC_A, KC_SCLN)
// COMB(caps, KC_CAPS, KC_Q, KC_P)
// #endif
// /*---- HOME ROW ----*/
// COMB(cut, S_CUT, KC_S, KC_F) // Shift+Del (cut)
// COMB(copy, S_COPY, KC_S, KC_D) // Ctrl+Ins (copy)
// COMB(paste, S_PASTE, KC_D, KC_F) // Shift+Del (paste)
// COMB(panic, PANIC, KC_D, KC_K) // panic!
// COMB(nummode, NUMMODE, KC_J, KC_K) // Nummode toggle
// COMB(symmode, SYM_TG, KC_K, KC_L) // Sym layer
// COMB(tab, KC_TAB, KC_K, KC_M) // Tab
// /*---- BOTTOM ROW ----*/
// COMB(hash, KC_HASH, KC_X, KC_C) // #
// COMB(fslash, KC_SLSH, KC_C, KC_V) // /
// COMB(dash, KC_MINS, KC_M, KC_COMM) // -
// COMB(asterisk, KC_ASTR, KC_COMM, KC_DOT) // *
// COMB(at, KC_AT, KC_M, KC_DOT) // @
// /*---- THUMBS ----*/
// COMB(sys_lthm, SYS_OSL, KC_B, KC_ENT) // Sys OSL
// COMB(space_shift, SPC_SFT, KC_TAB, KC_SPC) // space and activate oss
// COMB(underscore_rthm, KC_UNDS, KC_SPC, KC_N) // _
// /*---- THUMB+ALPHAS ----*/
// // COMB(os_fun, FUN_OSL, KC_ENT, KC_C) // OS Func
// // COMB(os_num, NUM_OSL, KC_A, KC_F) // OSL num
// // COMB(os_sym, SYM_OSL, KC_SPC, KC_M) // OSL sym

View file

@ -0,0 +1,86 @@
// custom key codes.
EPRM,
//VRSN,
CAPS_WORD_ON,
// LAYERStuff.
KC_NEXT_LOCALE,
KC_NEXT_BASE_LAYER,
KC_SET_BASE,
// Misc.
KC_MAKE,
KC_RESET,
KC_RGB_T,
RGB_IDL,
KC_SECRET_1,
KC_SECRET_2,
KC_SECRET_3,
KC_SECRET_4,
KC_SECRET_5,
KC_SPACETEST,
/// Need to evaluate which to keep.
BCK_FWD, // Alt left and right
CLEAR, // Clears all mods, does not change layers.
LOCKSCR, // locks screen per is_windows value
PANIC, // Clears all One-Shot keys and returns to base layer.
UND_RED, // Ctrl Z and Y
// macros
QMKCOMP, // qmk compile
QMKFLSH, // qmk flash
// Swapper keys - just the swapper key, maybe gets reused.
SW_REV, // Dead key, reverse direction for swapper
// for the combo ref layers.
CB_0M1, CB_0M2, CB_0M3,
CB_1M1, CB_1M2, CB_1M3,
CB_2M1, CB_2M2, CB_2M3,
CB_3M1, CB_3M2, CB_3M3,
CB_4M1, CB_4M2, CB_4M3, CB_4M4, CB_4M5,
CB_1, CB_2, CB_3, CB_4, CB_5, CB_6, CB_7, CB_8, CB_9, CB_0,
CB_1R1, CB_1R2, CB_1R3, CB_1R4, CB_1R5,
CB_1L1, CB_1L2, CB_1L3, CB_1L4, CB_1L5,
CB_2R1, CB_2R2, CB_2R3, CB_2R4, CB_2R5,
CB_2L1, CB_2L2, CB_2L3, CB_2L4, CB_2L5,
CB_3R1, CB_3R2, CB_3R3, CB_3R4, CB_3R5,
CB_3L1, CB_3L2, CB_3L3, CB_3L4, CB_3L5,
CB_4L1, CB_4L2, CB_4L3, CB_4L4, CB_4L5,
CB_4R1, CB_4R2, CB_4R3, CB_4R4, CB_4R5,
CB2_0M1, CB2_0M2, CB2_0M3,
CB2_1M1, CB2_1M2, CB2_1M3,
CB2_2M1, CB2_2M2, CB2_2M3,
CB2_3M1, CB2_3M2, CB2_3M3,
CB2_4M1, CB2_4M2, CB2_4M3, CB2_4M4, CB2_4M5,
CB2_1, CB2_2, CB2_3, CB2_4, CB2_5, CB2_6, CB2_7, CB2_8, CB2_9, CB2_0,
CB2_1R1, CB2_1R2, CB2_1R3, CB2_1R4, CB2_1R5,
CB2_1L1, CB2_1L2, CB2_1L3, CB2_1L4, CB2_1L5,
CB2_2R1, CB2_2R2, CB2_2R3, CB2_2R4, CB2_2R5,
CB2_2L1, CB2_2L2, CB2_2L3, CB2_2L4, CB2_2L5,
CB2_3R1, CB2_3R2, CB2_3R3, CB2_3R4, CB2_3R5,
CB2_3L1, CB2_3L2, CB2_3L3, CB2_3L4, CB2_3L5,
CB2_4L1, CB2_4L2, CB2_4L3, CB2_4L4, CB2_4L5,
CB2_4R1, CB2_4R2, CB2_4R3, CB2_4R4, CB2_4R5,
// core 6 thumb keys for combo reference layer
CB_TH1, CB_TH2, CB_TH3, CB_TH4, CB_TH5, CB_TH6,
CB2_TH1, CB2_TH2, CB2_TH3, CB2_TH4, CB2_TH5, CB2_TH6,
CB_1TH1, CB_1TH2, CB_1TH3, CB_1TH4, CB_1TH5, CB_1TH6,
CB2_1TH1, CB2_1TH2, CB2_1TH3, CB2_1TH4, CB2_1TH5, CB2_1TH6,
// for the extra thumb keys on the kyria
CB_0TH1 , CB_0TH2, CB_0TH3, CB_0TH4,
CB_THA, CB_THB, CB_THC, CB_THD,
// edge keys for the combo reference layer
L0_CB, L1_CB, L2_CB, L3_CB,
R0_CB, R1_CB, R2_CB, R3_CB,
L0_CB2, L1_CB2, L2_CB2, L3_CB2,
R0_CB2, R1_CB2, R2_CB2, R3_CB2,

View file

@ -0,0 +1,65 @@
// Layer/none, encoder index 0/1, CW_KC, CCW_KC, Qualifying mod or none
// LAYER_NONE and MOD_NONE for a single use.
// LEFT and RIGHT for index. 0 and 1...
// default encoders, all layers no mods.
ENCODER_ACTION(LAYER_NONE, RIGHT, KC_PGDN, KC_PGUP, MOD_NONE)
ENCODER_ACTION(LAYER_NONE, LEFT, KC_DOWN, KC_UP, MOD_NONE)
ENCODER_ACTION(LAYER_NONE, LEFT, KC_PGDN, KC_PGUP, MOD_LSFT)
// Symbol layer encoders.
// left and right.
ENCODER_ACTION(_SYMB_EN, LEFT, KC_LEFT, KC_RIGHT, MOD_NONE)
// word left or right.
ENCODER_ACTION(_SYMB_EN, LEFT, LCTL(KC_LEFT), LCTL(KC_RIGHT), MOD_NONE)
// Nav layer encoders.
ENCODER_ACTION(_NAV, LEFT, KC_TAB, S(KC_TAB), MOD_NONE)
ENCODER_ACTION(_NAV, RIGHT, A(KC_TAB), A(S(KC_TAB)), MOD_NONE)
ENCODER_ACTION(_NAV, RIGHT, KC_VOLU, KC_VOLD, MOD_NONE)
// RGB functions for the RGB layer.
#ifdef RGB_MATRIX_ENABLE
ENCODER_FUNCTION(_RGB, LEFT,
rgb_matrix_increase_speed_noeeprom,
rgb_matrix_decrease_speed_noeeprom, MOD_NONE)
ENCODER_FUNCTION(_RGB, RIGHT,
rgb_matrix_increase_hue_noeeprom,
rgb_matrix_decrease_hue_noeeprom, MOD_NONE)
ENCODER_FUNCTION(_RGB, LEFT,
rgb_matrix_increase_sat_noeeprom,
rgb_matrix_decrease_sat_noeeprom, MOD_LSFT)
ENCODER_FUNCTION(_RGB, RIGHT,
rgb_matrix_increase_val_noeeprom,
rgb_matrix_decrease_val_noeeprom, MOD_LSFT)
ENCODER_FUNCTION(_RGB, LEFT,
rgb_matrix_step_noeeprom;
rgb_matrix_step_reverse_noeeprom, MOD_LCTL)
#elif defined(RGBLIGHT_ENABLE)
ENCODER_FUNCTION(_RGB, LEFT,
rgblight_increase_speed_noeeprom,
rgblight_decrease_speed_noeeprom, MOD_NONE)
ENCODER_FUNCTION(_RGB, RIGHT,
rgblight_increase_hue_noeeprom,
rgblight_decrease_hue_noeeprom, MOD_NONE)
ENCODER_FUNCTION(_RGB, LEFT,
rgblight_increase_sat_noeeprom,
rgblight_decrease_sat_noeeprom, MOD_LSFT)
ENCODER_FUNCTION(_RGB, RIGHT,
rgblight_increase_val_noeeprom,
rgblight_decrease_val_noeeprom, MOD_LSFT)
ENCODER_FUNCTION(_RGB, LEFT,
rgblight_step_noeeprom,
rgblight_step_reverse_noeeprom, MOD_LCTL)
#endif // RGB_MATRIX_ENABLE || RGBLIGHT_ENABLE

View file

@ -0,0 +1,23 @@
//KOL -> name, mod_mask, keycode, sendkeycode, layer to apply.
// // these are actually handled by alt_local_keys, in a more universal
// // and adaptable way.
// KOL(slash_pipe, MOD_MASK_SHIFT, KC_SLSH, KC_PIPE, _DVORAK_EN)
// this one is interesting.
KOL(slash_backslash, MOD_MASK_ALT, KC_SLSH, KC_BSLS, _DVORAK_EN)
// KOL(N2_dot, MOD_MASK_SHIFT, KC_2, KC_DOT, _KEYPAD_EN)
// KOL(N3_comma, MOD_MASK_SHIFT, KC_3, KC_COMMA, _KEYPAD_EN)
// KOL(hash_at, MOD_MASK_SHIFT, KC_HASH, KC_AT, _CDH)
// KOL(dot_colon, MOD_MASK_SHIFT, KC_DOT, KC_COLN, _CDH)
// KOL(comma_semicolon, MOD_MASK_SHIFT, KC_COMMA, KC_SCLN, _CDH)
// KOL(space_unds, MOD_MASK_SHIFT, KC_SPACE, KC_UNDS, _CDH)
// KOL(mins_exlm, MOD_MASK_SHIFT, KC_MINS, KC_EXLM, _CDH)
// KOL(bspc_del, MOD_MASK_SHIFT, KC_BSPC, KC_DEL, _NAV)
// KOL(zero_degree, MOD_MASK_SHIFT, KC_0, DEGREE, _KEYPAD_EN)
// KOL(eur_pnd, MOD_MASK_SHIFT, KC_EUR, KC_PND, _SYMB_EN)

View file

@ -0,0 +1,19 @@
// mod lock keys. takes keymods not mods.
// keycode should be defined in custom_keys.def.
// custom key, modkey to activate
MODL(ML_LSFT, KC_LSFT)
MODL(ML_LCTL, KC_LCTL)
MODL(ML_LALT, KC_LALT)
MODL(ML_LGUI, KC_LGUI)
// Keycodes which will NOT cancel mod lock mode.
IGNORE_KC( KC_LEFT)
IGNORE_KC( KC_RGHT)
IGNORE_KC( KC_UP)
IGNORE_KC( KC_DOWN)
IGNORE_KC( KC_HOME)
IGNORE_KC( KC_END)
IGNORE_KC( ML_LALT)
IGNORE_KC( ML_LCTL)
IGNORE_KC( ML_LGUI)
IGNORE_KC( ML_LSFT)

View file

@ -0,0 +1,19 @@
// Make not dead keys from dead keys.
// Not dead keycode, dead key
NOT_DEAD(KC_DQUO_ND, KC_DQUO)
NOT_DEAD(KC_GRV_ND, KC_GRV)
NOT_DEAD(KC_QUOT_ND, KC_QUOT)
NOT_DEAD(KC_CIRC_ND, KC_CIRC)
NOT_DEAD(KC_TILD_ND, KC_TILD)
NOT_DEAD(US_DQUO_ND, US_DQUO)
NOT_DEAD(US_GRV_ND, US_GRV)
NOT_DEAD(US_QUOT_ND, US_QUOT)
NOT_DEAD(US_CIRC_ND, US_CIRC)
NOT_DEAD(US_TILD_ND, US_TILD)
NOT_DEAD(BP_DQUO_ND, BP_DQUO)
NOT_DEAD(BP_GRV_ND, BP_GRV)
NOT_DEAD(BP_QUOT_ND, BP_QUOT)
NOT_DEAD(BP_CIRC_ND, BP_CIRC)
NOT_DEAD(BP_TILD_ND, BP_TILD)

View file

@ -0,0 +1,45 @@
// Define keycodes in custom keys.
// KEYCode, mod keycode, to set for n-shot.
// ONESHOT is for one.
// NSHOT takes a count.
// oneshots
ONESHOT(OS_LSFT, KC_LSFT)
ONESHOT(OS_LCTL, KC_LCTL)
ONESHOT(OS_LALT, KC_LALT)
ONESHOT(OS_LGUI, KC_LGUI)
ONESHOT(OS_RSFT, KC_RSFT)
ONESHOT(OS_RCTL, KC_RCTL)
ONESHOT(OS_RALT, KC_RALT)
ONESHOT(OS_RGUI, KC_RGUI)
// N-Shots
NSHOT(TS_LCTL, KC_LCTL, 2)
NSHOT(TS_RCTL, KC_RCTL, 2)
// Keys which will cancel the n-shots.
CANCEL_KEY( PANIC)
CANCEL_KEY( CLEAR)
//CANCEL_KEY( THM_LH0)
//CANCEL_KEY( THM_LH1)
//CANCEL_KEY( THM_RH0)
//CANCEL_KEY( THM_RH1)
// inherited from @possumvibes, keeping for now.
// Keys which will be ignored by n-shots.
//IGNORE_KEY( THM_LH0)
//IGNORE_KEY( THM_LH1)
//IGNORE_KEY( THM_RH0)
//IGNORE_KEY( THM_RH1)
//IGNORE_KEY( SYM_OSL)
//IGNORE_KEY( SYM_TG)
//IGNORE_KEY( NAV_TG)
//IGNORE_KEY( NUM_OSL)
//IGNORE_KEY( NUM_TO)
//IGNORE_KEY( FUN_OSL)
//IGNORE_KEY( ALPHA)
IGNORE_KEY( SML_NAV)
IGNORE_KEY( SPC_TOPR)
// IGNORE_KEY( SML_KEYPAD)
//IGNORE_KEY( SML_TOPROWS)

View file

@ -0,0 +1,17 @@
// custom-key, Oneshot name.
ONESHOT( OS_LSFT, ONESHOT_LSFT)
ONESHOT( OS_LCTL, ONESHOT_LCTL)
ONESHOT( OS_LALT, ONESHOT_LALT)
ONESHOT( OS_LGUI, ONESHOT_LGUI)
// keys to cancel
CANCEL_KEY( KC_ESC)
// CANCEL_KEY( KC_FNAV)
// CANCEL_KEY( KC_FNUM)
// CANCEL_KEY( KC_FCAPS)
// keys to ignore.
IGNORE_KEY( SPC_NAV)
// IGNORE_KEY( KC_FNAV)
// IGNORE_KEY( KC_FSYM)

View file

@ -0,0 +1,7 @@
// key to be defined and string to send.
//SEND_STR(MYKEY, "this is a test")
//SEND_STR_DELAY(MYKEY4, "this is another test")
SEND_STR_DELAY(VRSN, QMK_KEYBOARD ":" QMK_KEYMAP " @ " QMK_VERSION ", Built on: " QMK_BUILDDATE)
// SEND_STR_DELAY(VRSN, QMK_KEYBOARD ":" QMK_KEYMAP " # @ " QMK_VERSION)

View file

@ -0,0 +1,123 @@
// Define smart layers here.
// SMLL = smart lock layer.
// SMLM = smart lock mod.
// Keycode, layer/mod.
// list of keycodes to ignore.
SMLM(SMLM_LSFT, MOD_LSFT,
___VI_ARROWS___,
___HOME_PGDN_PGUP_END___,
___TAB_PGDN_PGUP_BKTAB___,
___SML_MODS_L___)
SMLM(SMLM_LCTL, MOD_LCTL,
___VI_ARROWS___,
___HOME_PGDN_PGUP_END___,
___TAB_PGDN_PGUP_BKTAB___,
___SML_MODS_L___)
SMLM(SMLM_LALT, MOD_LALT,
___VI_ARROWS___,
___HOME_PGDN_PGUP_END___,
___TAB_PGDN_PGUP_BKTAB___,
___SML_MODS_L___)
SMLM(SMLM_LGUI, MOD_LGUI,
___VI_ARROWS___,
___HOME_PGDN_PGUP_END___,
___TAB_PGDN_PGUP_BKTAB___,
___SML_MODS_L___)
SMLM(SMLM_RSFT, MOD_RSFT,
___VI_ARROWS___,
___HOME_PGDN_PGUP_END___,
___TAB_PGDN_PGUP_BKTAB___,
___SML_MODS_L___)
SMLM(SMLM_RCTL, MOD_RCTL,
___VI_ARROWS___,
___HOME_PGDN_PGUP_END___,
___TAB_PGDN_PGUP_BKTAB___,
___SML_MODS_L___)
SMLM(SMLM_RALT, MOD_RALT,
___VI_ARROWS___,
___HOME_PGDN_PGUP_END___,
___TAB_PGDN_PGUP_BKTAB___,
___SML_MODS_L___)
SMLM(SMLM_RGUI, MOD_RGUI,
___VI_ARROWS___,
___HOME_PGDN_PGUP_END___,
___TAB_PGDN_PGUP_BKTAB___,
___SML_MODS_L___)
SMLL(SML_NAV, _NAV, ___NAV_3x10___)
#ifdef MEDIA_LAYER_ENABLE
SMLL(SML_MEDIA, _MEDIA, ___MEDIA_3x10___)
#endif
#ifdef MOUSEKEY_ENABLE
SMLL(SML_NAVm, _NAVm, ___NAVm_3x10___)
#endif
SMLL(SML_KEYPAD, _KEYPAD_EN,
KC_1,
KC_2,
KC_3,
KC_4,
KC_5,
KC_6,
KC_7,
KC_8,
KC_9,
KC_0,
KC_PERC,
KC_DLR,
KC_COMM,
KC_DOT,
KC_SLSH,
KC_MINS,
KC_ASTR,
KC_PLUS,
KC_COLN,
KC_SCLN,
KC_EQL,
// KC_UNDS,
KC_BSPC,
KC_X,
SYM_MO)
// SMLL(SML_KEYPAD_BP, _KEYPAD_BP,
// BP_1,
// BP_2,
// BP_3,
// BP_4,
// BP_5,
// BP_6,
// BP_7,
// BP_8,
// BP_9,
// BP_0,
// BP_PERC,
// BP_DLR,
// BP_COMM,
// BP_DOT,
// BP_SLSH,
// BP_MINS,
// BP_ASTR,
// BP_PLUS,
// BP_COLN,
// BP_SCLN,
// BP_EQL,
// // KC_UNDS,
// KC_BSPC,
// BP_X,
// SYM_MO)
#ifdef TOPROWS_LAYER_ENABLE
SMLL(SML_TOPROWS, _TOPROWS_EN, ___10_SYMBOLS___, ___10_NUMBERS___)
#endif
//SMLL(SML_SYMB, _SYMB_EN, ___SYMB_BEAKLB_3x10___)

View file

@ -0,0 +1,3 @@
// KEYCODE, Reverseit kc, KC to send, KC to send in reverse, MODs to apply.
SWAPPER_KEY(SW_WIN, SW_REV, KC_TAB, S(KC_TAB), KC_LALT)
SWAPPER_KEY(SW_TAB, SW_REV, KC_TAB, S(KC_TAB), KC_LCTL)

View file

@ -0,0 +1,68 @@
// tap or long tap for different key.
// One key copy/paste
TP_TPL(KC_CCCV, LCTL(KC_C), LCTL(KC_V))
// New TaB/Window
TP_TPL(KC_CTCN, LCTL(KC_T), LCTL(KC_N))
// Close Tab-window/Quit
TP_TPL(KC_CWCQ, LCTL(KC_W), LCTL(KC_Q))
// Xmonad scratch pads or desktop
//TP_TPL(KC_XM_PORD, LGUI(KC_E), LGUI(KC_T))
//TP_SML(ENTNAV, KC_ENTER, SML_NAV)
#if defined(SECOND_LOCALE) && (SECOND_LOCALE == BEPO) || (DEFAULT_LANG == BEPO)
TP_TPL(BP_CCCV, LCTL(BP_C), LCTL(BP_V))
TP_TPL(BP_CTCN, LCTL(BP_T), LCTL(BP_N))
TP_TPL(BP_CWCQ, LCTL(BP_W), LCTL(BP_Q))
TP_TPL(BP_XM_PORD, LGUI(BP_E), LGUI(BP_T))
TP_TPL(BP_C_CCED, BP_C, BP_CCED)
#endif
#if defined(SECOND_LOCALE) && (SECOND_LOCALE == US_INT) || (DEFAULT_LANG == US_INT)
TP_TPL(US_CCCV, LCTL(US_C), LCTL(US_V))
TP_TPL(US_CTCN, LCTL(US_T), LCTL(US_N))
TP_TPL(US_CWCQ, LCTL(US_W), LCTL(US_Q))
TP_TPL(US_XM_PORD, LGUI(US_E), LGUI(US_T))
TP_TPL(US_C_CCED, US_C, US_CCED)
#endif
// Open on tap and Open with close and back arrow on hold.
// (){}[]""''``<>
# if defined(SECOND_LOCALE) && (SECOND_LOCALE == EN) || (DEFAULT_LANG == EN)
OPEN_OCL(KC_OCPRN, KC_LPRN, KC_RPRN)
OPEN_OCL(KC_OCBRC, KC_LBRC, KC_RBRC)
OPEN_OCL(KC_OCCBR, KC_LCBR, KC_RCBR)
OPEN_OCL(KC_OCDQUO, KC_DQUO, KC_DQUO)
OPEN_OCL(KC_OCQUOT, KC_QUOT, KC_QUOT)
OPEN_OCL(KC_OCGRV, KC_GRAVE, KC_GRAVE)
OPEN_OCL(KC_OCLTGT, KC_LT, KC_GT)
#endif
#if defined(SECOND_LOCALE) && (SECOND_LOCALE == BEPO) || (DEFAULT_LANG == BEPO)
OPEN_OCL(BP_OCPRN, BP_LPRN, BP_RPRN)
OPEN_OCL(BP_OCBRC, BP_LBRC, BP_RBRC)
OPEN_OCL(BP_OCCBR, BP_LCBR, BP_RCBR)
OPEN_OCL(BP_OCDQUO, BP_DQUO, BP_DQUO)
OPEN_OCL_ND(BP_OCQUOT, BP_QUOT, BP_QUOT)
OPEN_OCL(BP_OCGRV, BP_GRV, BP_GRV)
OPEN_OCL(BP_OCLTGT, BP_LT, BP_GT)
#endif
#if defined(SECOND_LOCALE) && (SECOND_LOCALE == US_INT) || (DEFAULT_LANG == US_INT)
OPEN_OCL(US_OCPRN, US_LPRN, US_RPRN)
OPEN_OCL(US_OCBRC, US_LBRC, US_RBRC)
OPEN_OCL(US_OCCBR, US_LCBR, US_RCBR)
OPEN_OCL(US_OCDQUO, US_DQUO, US_DQUO)
OPEN_OCL_ND(US_OCQUOT, US_QUOT, US_QUOT)
OPEN_OCL(US_OCGRV, US_GRV, US_GRV)
OPEN_OCL(US_OCLTGT, US_LT, US_GT)
#endif

View file

@ -0,0 +1,5 @@
// define keys to send unicode strings.
UC_STR(UC_FLIP, "(ノಠ痊ಠ)ノ彡┻━┻")
UC_STR(UC_TABL, "┬─┬ノ( º _ ºノ)")
UC_STR(UC_SHRG, "¯\\_(ツ)_/¯")
UC_STR(UC_DISA, "ಠ_ಠ")

Some files were not shown because too many files have changed in this diff Show more