Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware
This commit is contained in:
commit
861429aa44
|
@ -13,4 +13,9 @@ tags
|
|||
build/
|
||||
*.bak
|
||||
.vagrant/
|
||||
.DS_STORE
|
||||
.DS_STORE
|
||||
|
||||
# Eclipse Settings
|
||||
.cproject
|
||||
.project
|
||||
.settings/
|
|
@ -58,6 +58,15 @@ else
|
|||
SRC := keymaps/keymap_default.c $(SRC)
|
||||
endif
|
||||
|
||||
ifdef TEENSY2
|
||||
OPT_DEFS += -DATREUS_TEENSY2
|
||||
ATRUES_UPLOAD_COMMAND = teensy_loader_cli -w -mmcu=$(MCU) $(TARGET).hex
|
||||
else
|
||||
OPT_DEFS += -DATREUS_ASTAR
|
||||
ATRUES_UPLOAD_COMMAND = while [ ! -r $(USB) ]; do sleep 1; done; \
|
||||
avrdude -p $(MCU) -c avr109 -U flash:w:$(TARGET).hex -P $(USB)
|
||||
endif
|
||||
|
||||
CONFIG_H = config.h
|
||||
|
||||
# MCU name
|
||||
|
@ -114,8 +123,8 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
|
|||
# comment out to disable the options.
|
||||
#
|
||||
#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
|
||||
#MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
|
||||
#EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||
CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
|
@ -137,3 +146,7 @@ VPATH += $(TMK_DIR)
|
|||
|
||||
include $(TOP_DIR)/quantum/quantum.mk
|
||||
|
||||
USB ?= /dev/cu.usbmodem1411
|
||||
|
||||
upload: build
|
||||
$(ATRUES_UPLOAD_COMMAND)
|
||||
|
|
|
@ -1,10 +1,6 @@
|
|||
atreus keyboard firmware
|
||||
======================
|
||||
|
||||
## Note
|
||||
|
||||
This is for the Teensy2 hand wired boards only.
|
||||
|
||||
## Quantum MK Firmware
|
||||
|
||||
You have access to a bunch of goodies! Check out the Makefile to enable/disable some of the features. Uncomment the `#` to enable them. Setting them to `no` does nothing and will only confuse future you.
|
||||
|
@ -14,6 +10,12 @@ You have access to a bunch of goodies! Check out the Makefile to enable/disable
|
|||
# UNICODE_ENABLE = yes # Unicode support - this is commented out, just as an example. You have to use #, not //
|
||||
BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
|
||||
## Atreus specific information
|
||||
|
||||
These configuration files are specifically for the Atreus keyboards created by Phil Hagelberg (@technomancy). This keyboard is available in two variants: one powered by a Teensy 2, one powered by an A-Star. This repository currently assumes that you have an A-Star powered Atreus. If you are using a Teensy2, specify that by adding `TEENSY2=yes` to your `make` commands.
|
||||
|
||||
If you are coming from the [atreus-firmware](https://github.com/technomancy/atreus-firmware), we've also brought forward the `make upload` command for you to use.
|
||||
|
||||
## Quick aliases to common actions
|
||||
|
||||
Your keymap can include shortcuts to common operations (called "function actions" in tmk).
|
||||
|
|
|
@ -7,21 +7,20 @@
|
|||
#include <stddef.h>
|
||||
|
||||
// This a shortcut to help you visually see your layout.
|
||||
// The following is an example using the Planck MIT layout
|
||||
// The first section contains all of the arguements
|
||||
// The second converts the arguments into a two-dimensional array
|
||||
#define KEYMAP( \
|
||||
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
|
||||
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
|
||||
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
|
||||
k30, k31, k32, k33, k34, k35, k37, k38, k39, k3a, k3b \
|
||||
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, \
|
||||
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, \
|
||||
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, \
|
||||
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a \
|
||||
) \
|
||||
{ \
|
||||
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
|
||||
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
|
||||
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
|
||||
{ k30, k31, k32, k33, k34, k35, k35, k37, k38, k39, k3a, k3b } \
|
||||
}
|
||||
{ k00, k01, k02, k03, k04, KC_NO, k05, k06, k07, k08, k09 }, \
|
||||
{ k10, k11, k12, k13, k14, KC_NO, k15, k16, k17, k18, k19 }, \
|
||||
{ k20, k21, k22, k23, k24, k35, k25, k26, k27, k28, k29 }, \
|
||||
{ k2a, k30, k31, k32, k33, k34, k36, k37, k38, k39, k3a } \
|
||||
}
|
||||
|
||||
void * matrix_init_user(void);
|
||||
void * matrix_scan_user(void);
|
||||
|
|
|
@ -33,11 +33,15 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
#define MATRIX_ROWS 4
|
||||
#define MATRIX_COLS 11
|
||||
|
||||
// Planck PCB default pin-out
|
||||
// Change this to how you wired your keyboard
|
||||
// COLS: Left to right, ROWS: Top to bottom
|
||||
#define COLS (int []){ F6, F5, F4, B7, B6, B5, B4, B3, B2, B1, B0}
|
||||
#define ROWS (int []){ D0, D1, D2, D3 }
|
||||
#if defined(ATREUS_ASTAR)
|
||||
#define COLS (int []){ B7, D6, F7, F6, B6, D4, E6, B4, B5, C6, D7 }
|
||||
#define ROWS (int []){ D0, D1, D3, D2 }
|
||||
#elif defined(ATREUS_TEENSY2)
|
||||
#define COLS (int []){ F6, F5, F4, B7, B6, B5, B4, B3, B2, B1, B0}
|
||||
#define ROWS (int []){ D0, D1, D2, D3 }
|
||||
#endif
|
||||
|
||||
/* COL2ROW or ROW2COL */
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
|
|
@ -0,0 +1,66 @@
|
|||
// This is the personal keymap of Chris Gerber (@gerbercj). I haven't worked out the kinks
|
||||
// with the Colemak and Dvorak support yet, but everything else works nicely.
|
||||
|
||||
#include "atreus.h"
|
||||
|
||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||
// entirely and just use numbers.
|
||||
#define _QW 0
|
||||
#define _CM 1
|
||||
#define _DV 2
|
||||
#define _L1 3
|
||||
#define _L2 4
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_QW] = { /* Qwerty */
|
||||
{KC_Q, KC_W, KC_E, KC_R, KC_T, KC_NO, KC_Y, KC_U, KC_I, KC_O, KC_P },
|
||||
{KC_A, KC_S, KC_D, KC_F, KC_G, KC_NO, KC_H, KC_J, KC_K, KC_L, KC_SCLN},
|
||||
{KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LALT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH},
|
||||
{KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC, MO(_L1), KC_MINS, KC_QUOT, KC_ENT }
|
||||
},
|
||||
[_CM] = { /* Colemak */
|
||||
{KC_Q, KC_W, KC_F, KC_P, KC_G, KC_NO, KC_J, KC_L, KC_U, KC_Y, KC_SCLN},
|
||||
{KC_A, KC_R, KC_S, KC_T, KC_D, KC_NO, KC_H, KC_N, KC_E, KC_I, KC_O },
|
||||
{KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LALT, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH},
|
||||
{KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC, MO(_L1), KC_MINS, KC_QUOT, KC_ENT }
|
||||
},
|
||||
[_DV] = { /* Dvorak */
|
||||
{KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_NO, KC_F, KC_G, KC_C, KC_R, KC_L },
|
||||
{KC_A, KC_O, KC_E, KC_U, KC_I, KC_NO, KC_D, KC_H, KC_T, KC_N, KC_S },
|
||||
{KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_LALT, KC_B, KC_M, KC_W, KC_V, KC_Z },
|
||||
{KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC, MO(_L1), KC_MINS, KC_SLSH, KC_ENT }
|
||||
},
|
||||
[_L1] = { /* LAYER 1 */
|
||||
{KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_NO, KC_VOLU, KC_7, KC_8, KC_9, KC_LBRC},
|
||||
{KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_NO, KC_VOLD, KC_4, KC_5, KC_6, KC_RBRC},
|
||||
{KC_GRV, KC_MPRV, KC_MPLY, KC_MNXT, KC_MINS, KC_LALT, KC_MUTE, KC_1, KC_2, KC_3, KC_BSLS},
|
||||
{TG(_L2), KC_APP, KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC, KC_TRNS, KC_DOT, KC_0, KC_EQL }
|
||||
},
|
||||
[_L2] = { /* LAYER 2 */
|
||||
{KC_TRNS, KC_WH_L, KC_MS_U, KC_WH_R, KC_WH_U, KC_NO, DF(_QW), KC_F7, KC_F8, KC_F9, KC_F10 },
|
||||
{KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, KC_NO, DF(_CM), KC_F6, KC_F5, KC_F6, KC_F11 },
|
||||
{KC_BTN4, KC_BTN1, KC_BTN2, KC_BTN3, KC_BTN4, KC_LALT, DF(_DV), KC_F1, KC_F2, KC_F3, KC_F12 },
|
||||
{KC_TRNS, KC_TRNS, KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS, RESET }
|
||||
}
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM fn_actions[] = {
|
||||
|
||||
};
|
||||
|
||||
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
||||
{
|
||||
// MACRODOWN only works in this function
|
||||
switch(id) {
|
||||
case 0:
|
||||
if (record->event.pressed) {
|
||||
register_code(KC_RSFT);
|
||||
} else {
|
||||
unregister_code(KC_RSFT);
|
||||
}
|
||||
break;
|
||||
}
|
||||
return MACRO_NONE;
|
||||
};
|
|
@ -55,7 +55,7 @@ As on the original TM 2030, when `num` layer is activated, holding `fn` disables
|
|||
## Dvorak Layer
|
||||
Same as Layer 0 but with _Dvorak_ layout, to use with QWERTY OS layout.
|
||||
|
||||
Enable Dvorak layout with [`Magic`](/TMK_README.md#magic-commands+`1` (`LShift`+`RShift`+`1`), disable with `Magic`-`0`.
|
||||
Enable Dvorak layout with [`Magic`](/TMK_README.md#magic-commands)+`1` (`LShift`+`RShift`+`1`), disable with `Magic`-`0`.
|
||||
|
||||
The middle (green) led indicates when the Dvorak layer is activated.
|
||||
|
||||
|
|
|
@ -11,9 +11,6 @@
|
|||
|
||||
#define MDBL0 1
|
||||
#define MFNLR 2
|
||||
#define MCUT 3
|
||||
#define MCOPY 4
|
||||
#define MPSTE 5
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Basic layer
|
||||
|
@ -142,7 +139,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||
KC_TRNS,
|
||||
KC_TRNS, KC_TRNS,KC_TRNS,
|
||||
// right hand
|
||||
KC_INS, KC_F6, KC_F7, KC_TAB, KC_PSLS, KC_PAST, KC_PMNS,
|
||||
KC_TRNS, KC_F6, KC_F7, KC_TAB, KC_PSLS, KC_PAST, KC_PMNS,
|
||||
KC_TRNS, KC_TRNS, KC_HOME, KC_P7, KC_P8, KC_P9, KC_PPLS,
|
||||
KC_UP, KC_END, KC_P4, KC_P5, KC_P6, KC_PPLS,
|
||||
KC_LEFT, KC_DOWN, KC_RGHT, KC_P1, KC_P2, KC_P3, KC_PENT,
|
||||
|
@ -178,7 +175,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_CALC, KC_MAIL, KC_WHOM,
|
||||
KC_TRNS, KC_TRNS, M(MCUT), M(MCOPY), M(MPSTE), KC_MUTE, KC_VOLD,
|
||||
KC_TRNS, KC_TRNS, LSFT(KC_DELT),LCTL(KC_INS),LSFT(KC_INS), KC_MUTE, KC_VOLD,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
|
||||
KC_TRNS, KC_TRNS,
|
||||
|
@ -210,22 +207,8 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
|||
}
|
||||
break;
|
||||
case MFNLR:
|
||||
layer_state ^= (1 << NUMR) | (1 << FNLR);
|
||||
break;
|
||||
case MCUT:
|
||||
if (record->event.pressed) {
|
||||
return MACRO(D(LSFT), T(DELT), U(LSFT), END);
|
||||
}
|
||||
break;
|
||||
case MCOPY:
|
||||
if (record->event.pressed) {
|
||||
return MACRO(D(LCTL), T(INS), U(LCTL), END);
|
||||
}
|
||||
break;
|
||||
case MPSTE:
|
||||
if (record->event.pressed) {
|
||||
return MACRO(D(LSFT), T(INS), U(LSFT), END);
|
||||
}
|
||||
layer_invert(NUMR);
|
||||
layer_invert(FNLR);
|
||||
break;
|
||||
}
|
||||
return MACRO_NONE;
|
||||
|
@ -233,7 +216,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
|||
|
||||
// Runs just one time when the keyboard initializes.
|
||||
void * matrix_init_user(void) {
|
||||
|
||||
return NULL;
|
||||
};
|
||||
|
||||
// Runs constantly in the background, in a loop.
|
||||
|
@ -255,4 +238,5 @@ void * matrix_scan_user(void) {
|
|||
if (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) {
|
||||
ergodox_right_led_3_on();
|
||||
}
|
||||
return NULL;
|
||||
};
|
||||
|
|
Binary file not shown.
|
@ -0,0 +1,64 @@
|
|||
#include "planck.h"
|
||||
#ifdef BACKLIGHT_ENABLE
|
||||
#include "backlight.h"
|
||||
#endif
|
||||
|
||||
// This simple keymap is optimized for xmonad users using super as their modifier key.
|
||||
// M(1) makes it possible to change virtual screens and swap windows between them.
|
||||
|
||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||
#define _QW 0
|
||||
#define _LW 1
|
||||
#define _RS 2
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_QW] = { /* Qwerty */
|
||||
{KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC},
|
||||
{KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT},
|
||||
{KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
|
||||
{KC_LCTL, KC_LALT, KC_LGUI, M(1), MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
|
||||
},
|
||||
[_RS] = { /* RAISE */
|
||||
{KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL },
|
||||
{KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS},
|
||||
{KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
|
||||
{KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
|
||||
},
|
||||
[_LW] = { /* LOWER */
|
||||
{KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC},
|
||||
{KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE},
|
||||
{KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_TRNS},
|
||||
{KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
|
||||
}
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM fn_actions[] = {
|
||||
|
||||
};
|
||||
|
||||
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
||||
{
|
||||
// MACRODOWN only works in this function
|
||||
switch(id) {
|
||||
case 0:
|
||||
if (record->event.pressed) {
|
||||
register_code(KC_RSFT);
|
||||
#ifdef BACKLIGHT_ENABLE
|
||||
backlight_step();
|
||||
#endif
|
||||
} else {
|
||||
unregister_code(KC_RSFT);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (record->event.pressed) {
|
||||
register_code(KC_LGUI);
|
||||
layer_on(_RS);
|
||||
} else {
|
||||
unregister_code(KC_LGUI);
|
||||
layer_off(_RS);
|
||||
}
|
||||
break;
|
||||
}
|
||||
return MACRO_NONE;
|
||||
};
|
|
@ -91,6 +91,9 @@ action_t action_for_key(uint8_t layer, keypos_t key)
|
|||
play_notes(&goodbye, 5, false);
|
||||
#endif
|
||||
_delay_ms(250);
|
||||
#ifdef ATREUS_ASTAR
|
||||
*(uint16_t *)0x0800 = 0x7777; // these two are a-star-specific
|
||||
#endif
|
||||
bootloader_jump();
|
||||
return;
|
||||
} else if (keycode == DEBUG) { // DEBUG is 0x5001
|
||||
|
|
|
@ -68,5 +68,7 @@
|
|||
#define DV_RPRN LSFT(DV_0)
|
||||
#define DV_LCBR LSFT(DV_LBRC)
|
||||
#define DV_RCBR LSFT(DV_RBRC)
|
||||
#define DV_UNDS LSFT(DV_MINS)
|
||||
#define DV_PLUS LSFT(DV_EQL)
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
@ -0,0 +1,98 @@
|
|||
#ifndef KEYMAP_FR_CH
|
||||
#define KEYMAP_FR_CH
|
||||
|
||||
#include "keymap_common.h"
|
||||
|
||||
// Alt gr
|
||||
#define ALGR(kc) kc | 0x1400
|
||||
#define FR_CH_ALGR KC_RALT
|
||||
|
||||
// normal characters
|
||||
#define FR_CH_Z KC_Y
|
||||
#define FR_CH_Y KC_Z
|
||||
|
||||
#define FR_CH_A KC_A
|
||||
#define FR_CH_B KC_B
|
||||
#define FR_CH_C KC_C
|
||||
#define FR_CH_D KC_D
|
||||
#define FR_CH_E KC_E
|
||||
#define FR_CH_F KC_F
|
||||
#define FR_CH_G KC_G
|
||||
#define FR_CH_H KC_H
|
||||
#define FR_CH_I KC_I
|
||||
#define FR_CH_J KC_J
|
||||
#define FR_CH_K KC_K
|
||||
#define FR_CH_L KC_L
|
||||
#define FR_CH_M KC_M
|
||||
#define FR_CH_N KC_N
|
||||
#define FR_CH_O KC_O
|
||||
#define FR_CH_P KC_P
|
||||
#define FR_CH_Q KC_Q
|
||||
#define FR_CH_R KC_R
|
||||
#define FR_CH_S KC_S
|
||||
#define FR_CH_T KC_T
|
||||
#define FR_CH_U KC_U
|
||||
#define FR_CH_V KC_V
|
||||
#define FR_CH_W KC_W
|
||||
#define FR_CH_X KC_X
|
||||
|
||||
#define FR_CH_0 KC_0
|
||||
#define FR_CH_1 KC_1
|
||||
#define FR_CH_2 KC_2
|
||||
#define FR_CH_3 KC_3
|
||||
#define FR_CH_4 KC_4
|
||||
#define FR_CH_5 KC_5
|
||||
#define FR_CH_6 KC_6
|
||||
#define FR_CH_7 KC_7
|
||||
#define FR_CH_8 KC_8
|
||||
#define FR_CH_9 KC_9
|
||||
|
||||
#define FR_CH_DOT KC_DOT
|
||||
#define FR_CH_COMM KC_COMM
|
||||
|
||||
#define FR_CH_QUOT KC_MINS
|
||||
#define FR_CH_AE KC_QUOT
|
||||
#define FR_CH_UE KC_LBRC
|
||||
#define FR_CH_OE KC_SCLN
|
||||
|
||||
#define FR_CH_CIRC KC_EQL // accent circumflex ^ and grave ` and ~
|
||||
#define FR_CH_LESS KC_NUBS // < and > and backslash
|
||||
#define FR_CH_MINS KC_SLSH // - and _
|
||||
#define FR_CH_DLR KC_BSLS // $, £ and }
|
||||
#define FR_CH_PARA KC_GRV // § and ring °
|
||||
#define FR_CH_DIAE KC_RBRC // accent ¨
|
||||
|
||||
// shifted characters
|
||||
#define FR_CH_RING LSFT(KC_GRV) // °
|
||||
#define FR_CH_EXLM LSFT(KC_RBRC) // !
|
||||
#define FR_CH_PLUS LSFT(KC_1) // +
|
||||
#define FR_CH_DQOT LSFT(KC_2) // "
|
||||
#define FR_CH_ASTR LSFT(KC_3) // *
|
||||
#define FR_CH_PERC LSFT(KC_5) // %
|
||||
#define FR_CH_AMPR LSFT(KC_6) // &
|
||||
#define FR_CH_SLSH LSFT(KC_7) // /
|
||||
#define FR_CH_LPRN LSFT(KC_8) // (
|
||||
#define FR_CH_RPRN LSFT(KC_9) // )
|
||||
#define FR_CH_EQL LSFT(KC_0) // =
|
||||
#define FR_CH_QST LSFT(FR_CH_QUOT) // ?
|
||||
#define FR_CH_MORE LSFT(FR_CH_LESS) // >
|
||||
#define FR_CH_COLN LSFT(KC_DOT) // :
|
||||
#define FR_CH_SCLN LSFT(KC_COMM) // ;
|
||||
#define FR_CH_UNDS LSFT(FR_CH_MINS) // _
|
||||
#define FR_CH_CCED LSFT(KC_4) // ç
|
||||
#define FR_CH_GRV LSFT(FR_CH_CIRC) // accent grave `
|
||||
|
||||
// Alt Gr-ed characters
|
||||
#define FR_CH_LCBR ALGR(KC_QUOT) // {
|
||||
#define FR_CH_LBRC ALGR(KC_LBRC) // [
|
||||
#define FR_CH_RBRC ALGR(KC_9) // ]
|
||||
#define FR_CH_RCBR ALGR(KC_0) // }
|
||||
#define FR_CH_BSLS ALGR(FR_CH_LESS) // backslash
|
||||
#define FR_CH_AT ALGR(KC_2) // @
|
||||
#define FR_CH_EURO ALGR(KC_E) // €
|
||||
#define FR_CH_TILD ALGR(FR_CH_CIRC) // ~
|
||||
#define FR_CH_PIPE ALGR(KC_1) // |
|
||||
#define FR_CH_HASH ALGR(KC_3) // #
|
||||
#define FR_CH_ACUT ALGR(FR_CH_QUOT) // accent acute ´
|
||||
|
||||
#endif
|
|
@ -75,7 +75,7 @@
|
|||
#define FR_CIRC ALGR(KC_9)
|
||||
#define FR_AT ALGR(KC_0)
|
||||
#define FR_RBRC ALGR(FR_RPRN)
|
||||
#define FR_LCBR ALGR(FR_EQL)
|
||||
#define FR_RCBR ALGR(FR_EQL)
|
||||
|
||||
#define FR_EURO ALGR(KC_E)
|
||||
#define FR_BULT ALGR(FR_DLR)
|
||||
|
|
Loading…
Reference in New Issue