forked from mirrors/qmk_firmware
Compare commits
23 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
632285c982 | ||
|
|
805f5cb72b | ||
|
|
a8a8bf0ff3 | ||
|
|
fadd3cb461 | ||
|
|
a41f973f75 | ||
|
|
7abbc95cd6 | ||
|
|
30a6f231bf | ||
|
|
44ff14f290 | ||
|
|
741c7d5eec | ||
|
|
f3c30e80cc | ||
|
|
d846660e00 | ||
|
|
774384ce31 | ||
|
|
361ac2f32a | ||
|
|
d15a60d2d3 | ||
|
|
73992c68d5 | ||
|
|
8ca4ed9a98 | ||
|
|
640d12d070 | ||
|
|
3beda5c16e | ||
|
|
fb7fc54923 | ||
|
|
179c868059 | ||
|
|
7b11dcce10 | ||
|
|
e2fa05c6d2 | ||
|
|
4c4009c0fd |
@@ -192,6 +192,9 @@ If you define these options you will enable the associated feature, which may in
|
||||
* run RGB animations
|
||||
* `#define RGBLIGHT_LAYERS`
|
||||
* Lets you define [lighting layers](feature_rgblight.md?id=lighting-layers) that can be toggled on or off. Great for showing the current keyboard layer or caps lock state.
|
||||
* `#define RGBLIGHT_MAX_LAYERS`
|
||||
* Defaults to 8. Can be expanded up to 32 if more [lighting layers](feature_rgblight.md?id=lighting-layers) are needed.
|
||||
* Note: Increasing the maximum will increase the firmware size and slow sync on split keyboards.
|
||||
* `#define RGBLIGHT_LAYER_BLINK`
|
||||
* Adds ability to [blink](feature_rgblight.md?id=lighting-layer-blink) a lighting layer for a specified number of milliseconds (e.g. to acknowledge an action).
|
||||
* `#define RGBLED_NUM 12`
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# HD44780 LCD Displays
|
||||
|
||||
This is an integration of Peter Fleury's LCD library. This page will explain the basics. [For in depth documentation visit his page.](http://homepage.hispeed.ch/peterfleury/doxygen/avr-gcc-libraries/group__pfleury__lcd.html)
|
||||
This is an integration of Peter Fleury's LCD library. This page will explain the basics. [For in depth documentation visit his page.](http://www.peterfleury.epizy.com/doxygen/avr-gcc-libraries/group__pfleury__lcd.html)
|
||||
|
||||
You can enable support for HD44780 Displays by setting the `HD44780_ENABLE` flag in your keyboards `rules.mk` to yes.
|
||||
|
||||
@@ -50,8 +50,8 @@ LCD_DISP_ON_CURSOR_BLINK : display on, cursor on flashing
|
||||
````
|
||||
This is best done in your keyboards `matrix_init_kb` or your keymaps `matrix_init_user`.
|
||||
It is advised to clear the display before use.
|
||||
To do so call `lcd_clrsrc()`.
|
||||
To do so call `lcd_clrscr()`.
|
||||
|
||||
To now print something to your Display you first call `lcd_gotoxy(column, line)`. To go to the start of the first line you would call `lcd_gotoxy(0, 0)` and then print a string with `lcd_puts("example string")`.
|
||||
|
||||
There are more methods available to control the display. [For in depth documentation please visit the linked page.](http://homepage.hispeed.ch/peterfleury/doxygen/avr-gcc-libraries/group__pfleury__lcd.html)
|
||||
There are more methods available to control the display. [For in depth documentation please visit the linked page.](http://www.peterfleury.epizy.com/doxygen/avr-gcc-libraries/group__pfleury__lcd.html)
|
||||
|
||||
@@ -186,6 +186,8 @@ it easy to use your underglow LEDs as status indicators to show which keyboard l
|
||||
|
||||
### Defining Lighting Layers :id=defining-lighting-layers
|
||||
|
||||
By default, 8 layers are possible. This can be expanded to as many as 32 by overriding the definition of `RGBLIGHT_MAX_LAYERS` in `config.h` (e.g. `#define RGBLIGHT_MAX_LAYERS 32`). Please note, if you use a split keyboard, you will need to flash both sides of the split after changing this. Also, increasing the maximum will increase the firmware size, and will slow sync on split keyboards.
|
||||
|
||||
To define a layer, we modify `keymap.c` to list out LED ranges and the colors we want to overlay on them using an array of `rgblight_segment_t` using the `RGBLIGHT_LAYER_SEGMENTS` macro. We can define multiple layers and enable/disable them independently:
|
||||
|
||||
```c
|
||||
|
||||
@@ -28,3 +28,4 @@ Note that the array indices are reversed same as the matrix and the values are o
|
||||
|`SH_MOFF` |Momentarily turns off swap. |
|
||||
|`SH_TG` |Toggles swap on and off with every key press. |
|
||||
|`SH_TT` |Toggles with a tap; momentary when held. |
|
||||
|`SH_OS` |One shot swap hands: toggles while pressed or until next key press. |
|
||||
|
||||
@@ -55,7 +55,7 @@ LCD_DISP_ON_CURSOR_BLINK : ディスプレイオン、点滅カーソル
|
||||
````
|
||||
これはキーボードの `matrix_init_kb` またはキーマップの `matrix_init_user` で行うのが最適です。
|
||||
使用前にディスプレイをクリアすることをお勧めします。
|
||||
そのためには、`lcd_clrsrc()` を呼びます。
|
||||
そのためには、`lcd_clrscr()` を呼びます。
|
||||
|
||||
ディスプレイに何かを表示するには、最初に `lcd_gotoxy(column, line)` を呼びます。最初の行の先頭に移動するには、`lcd_gotoxy(0, 0)` を呼び出し、その後 `lcd_puts("example string")` を使って文字列を出力します。
|
||||
|
||||
|
||||
@@ -531,6 +531,7 @@ See also: [Swap Hands](feature_swap_hands.md)
|
||||
|`SH_MOFF` |Momentarily turns off swap. |
|
||||
|`SH_TG` |Toggles swap on and off with every key press. |
|
||||
|`SH_TT` |Toggles with a tap; momentary when held. |
|
||||
|`SH_OS` |One shot swap hands: toggle while pressed or until next key press. |
|
||||
|
||||
## Unicode Support :id=unicode-support
|
||||
|
||||
|
||||
@@ -479,7 +479,7 @@ void oled_write_ln_P(const char *data, bool invert) {
|
||||
void oled_write_raw_P(const char *data, uint16_t size) {
|
||||
if (size > OLED_MATRIX_SIZE) size = OLED_MATRIX_SIZE;
|
||||
for (uint16_t i = 0; i < size; i++) {
|
||||
uint8_t c = pgm_read_byte(++data);
|
||||
uint8_t c = pgm_read_byte(data++);
|
||||
if (oled_buffer[i] == c) continue;
|
||||
oled_buffer[i] = c;
|
||||
oled_dirty |= (1 << (i / OLED_BLOCK_SIZE));
|
||||
|
||||
13
keyboards/1upkeyboards/super16/keymaps/nblyumberg/config.h
Normal file
13
keyboards/1upkeyboards/super16/keymaps/nblyumberg/config.h
Normal file
@@ -0,0 +1,13 @@
|
||||
#pragma once
|
||||
|
||||
// Time out one shot layers after 3 seconds
|
||||
#define ONESHOT_TIMEOUT 3000
|
||||
|
||||
#define RGBLED_NUM 16
|
||||
|
||||
|
||||
// Undef and redefine default brightness to half of 255
|
||||
#undef RGBLIGHT_LIMIT_VAL
|
||||
#define RGBLIGHT_LIMIT_VAL 128
|
||||
|
||||
#define TAPPING_TERM 200
|
||||
127
keyboards/1upkeyboards/super16/keymaps/nblyumberg/keymap.c
Normal file
127
keyboards/1upkeyboards/super16/keymaps/nblyumberg/keymap.c
Normal file
@@ -0,0 +1,127 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
uint16_t copy_paste_timer;
|
||||
uint16_t enter_timer;
|
||||
|
||||
extern rgblight_config_t rgblight_config;
|
||||
|
||||
// Define custom keycodes
|
||||
enum my_keycodes {
|
||||
KC_CCCV = SAFE_RANGE,
|
||||
KC_2ENTER
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
//Layer 0 - Base Layer (F13 to F24, and One Shot Layer 1,2,3,4)
|
||||
[0] = LAYOUT_ortho_4x4(
|
||||
KC_F13, KC_F14, KC_F15, KC_F16,
|
||||
KC_F17, KC_CCCV, KC_F19, KC_F20,
|
||||
KC_F21, KC_F22, KC_F23, KC_2ENTER,
|
||||
OSL(1), OSL(2), OSL(3), TG(4) //Transparent to let you go between layers
|
||||
),
|
||||
|
||||
[1] = LAYOUT_ortho_4x4(
|
||||
LALT(KC_F13), LALT(KC_F14), LALT(KC_F15), LALT(KC_F16),
|
||||
LALT(KC_F17), LALT(KC_F18), LALT(KC_F19), LALT(KC_F20),
|
||||
LALT(KC_F21), LALT(KC_F22), LALT(KC_F23), LALT(KC_F24),
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS //Transparent to let you go between layers
|
||||
),
|
||||
|
||||
//Layer 2 - Shift + Function Key Layer
|
||||
[2] = LAYOUT_ortho_4x4(
|
||||
LSFT(KC_F13), LSFT(KC_F14), LSFT(KC_F15), LSFT(KC_F16),
|
||||
LSFT(KC_F17), LSFT(KC_F18), LSFT(KC_F19), LSFT(KC_F20),
|
||||
LSFT(KC_F21), LSFT(KC_F22), LSFT(KC_F23), LSFT(KC_F24),
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS //Transparent to let you go between layers
|
||||
),
|
||||
|
||||
//Layer 3 - Control + Function Key
|
||||
[3] = LAYOUT_ortho_4x4(
|
||||
LCTL(KC_F13), LCTL(KC_F14), LCTL(KC_F15), LCTL(KC_F16),
|
||||
LCTL(KC_F17), LCTL(KC_F18), LCTL(KC_F19), LCTL(KC_F20),
|
||||
LCTL(KC_F21), LCTL(KC_F22), LCTL(KC_F23), LCTL(KC_F24),
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS //Transparent to let you go between layers
|
||||
),
|
||||
|
||||
//Layer 4 - Keyboard Lights. Programming and Special Functions
|
||||
[4] = LAYOUT_ortho_4x4(
|
||||
KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU,
|
||||
RGB_TOG, RGB_MOD, RGB_RMOD, KC_MUTE,
|
||||
TO(0), RESET, EEP_RST, KC_VOLD,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS //Transparent to let you go between layers
|
||||
),
|
||||
};
|
||||
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case KC_CCCV: // One key copy/paste
|
||||
if (record->event.pressed) {
|
||||
copy_paste_timer = timer_read();
|
||||
} else {
|
||||
if (timer_elapsed(copy_paste_timer) > TAPPING_TERM) { // Hold, copy
|
||||
tap_code16(LCTL(KC_C));
|
||||
} else { // Tap, paste
|
||||
tap_code16(LCTL(KC_V));
|
||||
}
|
||||
} return true;
|
||||
case KC_2ENTER:
|
||||
if (record->event.pressed) {
|
||||
enter_timer = timer_read();
|
||||
} else {
|
||||
if (timer_elapsed(enter_timer) > TAPPING_TERM) { // Hold, shift+enter
|
||||
tap_code16(LSFT(KC_ENTER));
|
||||
} else { // Tap, enter
|
||||
tap_code16(KC_F24);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void keyboard_post_init_user(void) {
|
||||
//Enable the LED layers
|
||||
layer_state_set_user(layer_state);
|
||||
}
|
||||
|
||||
layer_state_t layer_state_set_user(layer_state_t state) {
|
||||
rgblight_sethsv_noeeprom(HSV_WHITE);
|
||||
switch(get_highest_layer(state)) {
|
||||
case 1:
|
||||
// Green
|
||||
rgblight_enable_noeeprom();
|
||||
rgblight_sethsv_noeeprom(HSV_GREEN);
|
||||
break;
|
||||
case 2:
|
||||
// Red
|
||||
rgblight_enable_noeeprom();
|
||||
rgblight_sethsv_noeeprom(HSV_RED);
|
||||
break;
|
||||
case 3:
|
||||
// Blue
|
||||
rgblight_enable_noeeprom();
|
||||
rgblight_sethsv_noeeprom(HSV_BLUE);
|
||||
break;
|
||||
case 4:
|
||||
// Orange
|
||||
rgblight_enable_noeeprom();
|
||||
// rgblight_sethsv_noeeprom(HSV_PURPLE);
|
||||
rgblight_sethsv_noeeprom(HSV_ORANGE);
|
||||
break;
|
||||
default:
|
||||
// White
|
||||
//Read RGB Light State
|
||||
rgblight_config.raw = eeconfig_read_rgblight();
|
||||
//If enabled, set white
|
||||
if (rgblight_config.enable) {
|
||||
rgblight_sethsv_noeeprom(HSV_WHITE);
|
||||
} else { //Otherwise go back to disabled
|
||||
rgblight_disable_noeeprom();
|
||||
}
|
||||
break;
|
||||
}
|
||||
return state;
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
# Nick B's Super16 keymap
|
||||
|
||||
A modification of the default keymap to include layer indicators with RGB
|
||||
* Added a time out of 3 seconds to 1 shot layers
|
||||
* Reduced brightness to half to reduce power draw
|
||||
* Added a one key copy/paste keycode
|
||||
@@ -0,0 +1,2 @@
|
||||
RGB_MATRIX_ENABLE = no
|
||||
RGBLIGHT_ENABLE = yes
|
||||
@@ -4,8 +4,6 @@
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
extern keymap_config_t keymap_config;
|
||||
|
||||
// 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
|
||||
@@ -41,6 +39,7 @@ enum planck_keycodes {
|
||||
#define ADJUST MO(_ADJUST)
|
||||
#define LOWER MO(_LOWER)
|
||||
#define RAISE MO(_RAISE)
|
||||
#define MACLOCK LGUI(LCTL(KC_Q))
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Dvorak Layer
|
||||
@@ -119,13 +118,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|------+------+------+------+------|------.,------|------+------+------+------+------|
|
||||
| | Left | Down | Right| End | || | PgUp | Mute | Vol- | Vol+ | |
|
||||
|------+------+------+------+------| || |------+------+------+------+------|
|
||||
| ~ | | | | Del |------'`------| Ins | | | | |
|
||||
| ~ | | | | Del |------'`------| Ins | | | |MACLCK|
|
||||
`----------------------------------' `----------------------------------'*/
|
||||
[_LOWER] = LAYOUT(
|
||||
KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,
|
||||
KC_CAPS, _______, KC_UP, _______, KC_HOME, KC_PGUP, _______, KC_PLUS, KC_LCBR, KC_RCBR,
|
||||
_______, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, KC_PGDN, KC_MUTE, KC_VOLD, KC_VOLU, _______,
|
||||
KC_TILD, _______, _______, _______, KC_DEL, _______, _______, KC_INS, _______, _______, _______, _______
|
||||
KC_TILD, _______, _______, _______, KC_DEL, _______, _______, KC_INS, _______, _______, _______, MACLOCK
|
||||
),
|
||||
|
||||
/* RAISE Layer
|
||||
@@ -136,13 +135,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|------+------+------+------+------|------.,------|------+------+------+------+------|
|
||||
| | Left | Down | Right| End | || | PgUp | Prev | Play | Next | |
|
||||
|------+------+------+------+------| || |------+------+------+------+------|
|
||||
| ` | | | | Del |------'`------| Ins | | | | |
|
||||
| ` | | | | Del |------'`------| Ins | | | |MACLCK|
|
||||
`----------------------------------' `----------------------------------'*/
|
||||
[_RAISE] = LAYOUT(
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0 ,
|
||||
KC_CAPS, _______, KC_UP, _______, KC_HOME, KC_PGUP, _______, KC_EQL, KC_LBRC, KC_RBRC,
|
||||
_______, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, KC_PGDN, KC_MPRV, KC_MPLY, KC_MNXT, _______,
|
||||
KC_GRV, _______, _______, _______, KC_DEL, _______, _______, KC_INS, _______, _______, _______, _______
|
||||
KC_GRV, _______, _______, _______, KC_DEL, _______, _______, KC_INS, _______, _______, _______, MACLOCK
|
||||
),
|
||||
|
||||
/* ADJUST Layer
|
||||
@@ -190,4 +189,4 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -77,7 +77,7 @@ Control.
|
||||
|------+------+------+------+------|------.,------|------+------+------+------+------|
|
||||
| | Left | Down | Right| End | || | PgUp | Mute | Vol- | Vol+ | |
|
||||
|------+------+------+------+------| || |------+------+------+------+------|
|
||||
| ~ | | | | Del |------'`------| Ins | | | | |
|
||||
| ~ | | | | Del |------'`------| Ins | | | |MACLCK|
|
||||
`----------------------------------' `----------------------------------'
|
||||
|
||||
|
||||
@@ -90,7 +90,7 @@ Control.
|
||||
|------+------+------+------+------|------.,------|------+------+------+------+------|
|
||||
| | Left | Down | Right| End | || | PgUp | Prev | Play | Next | |
|
||||
|------+------+------+------+------| || |------+------+------+------+------|
|
||||
| ` | | | | Del |------'`------| Ins | | | | |
|
||||
| ` | | | | Del |------'`------| Ins | | | |MACLCK|
|
||||
`----------------------------------' `----------------------------------'
|
||||
|
||||
### Layer 6: ADJUST layer
|
||||
|
||||
1
keyboards/aves65/aves65.c
Normal file
1
keyboards/aves65/aves65.c
Normal file
@@ -0,0 +1 @@
|
||||
#include "aves65.h"
|
||||
19
keyboards/aves65/aves65.h
Normal file
19
keyboards/aves65/aves65.h
Normal file
@@ -0,0 +1,19 @@
|
||||
#pragma once
|
||||
#include "quantum.h"
|
||||
|
||||
// readability
|
||||
#define ___ KC_NO
|
||||
#define LAYOUT_65_iso_blocker( \
|
||||
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \
|
||||
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1e, \
|
||||
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, \
|
||||
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \
|
||||
k40, k41, k42, k46, k4a, k4b, k4c, k4d, k4e \
|
||||
) \
|
||||
{ \
|
||||
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \
|
||||
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, ___, k1e }, \
|
||||
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e }, \
|
||||
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e }, \
|
||||
{ k40, k41, k42, ___, ___, ___, k46, ___, ___, ___, k4a, k4b, k4c, k4d, k4e } \
|
||||
}
|
||||
61
keyboards/aves65/config.h
Normal file
61
keyboards/aves65/config.h
Normal file
@@ -0,0 +1,61 @@
|
||||
/*
|
||||
Copyright 2019 I/O Keyboards <hello@iokeyboards.eu>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "config_common.h"
|
||||
|
||||
/* USB Device descriptor parameter */
|
||||
#define VENDOR_ID 0x9991
|
||||
#define PRODUCT_ID 0x9038
|
||||
#define DEVICE_VER 0x0001
|
||||
#define MANUFACTURER I/O Keyboards
|
||||
#define PRODUCT Aves65
|
||||
#define DESCRIPTION A 65% keyboard with underglow.
|
||||
|
||||
/* key matrix size */
|
||||
#define MATRIX_ROWS 5
|
||||
#define MATRIX_COLS 15
|
||||
|
||||
// ROWS: Top to bottom, COLS: Left to right
|
||||
|
||||
#define MATRIX_ROW_PINS {D4,D6,D7,B4,E6}
|
||||
#define MATRIX_COL_PINS {D0,D1,D2,D3,D5,B5,F0,F1,F4,F5,F6,F7,C7,C6,B6}
|
||||
#define UNUSED_PINS {B7,B1,B2,B3}
|
||||
|
||||
/* COL2ROW or ROW2COL */
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
/* define if matrix has ghost */
|
||||
//#define MATRIX_HAS_GHOST
|
||||
|
||||
/* Set 0 if debouncing isn't needed */
|
||||
#define DEBOUNCE 5
|
||||
|
||||
/* 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
|
||||
|
||||
/* Backlight configuration
|
||||
*/
|
||||
#define RGB_DI_PIN B0
|
||||
#define RGBLIGHT_ANIMATIONS
|
||||
#define RGBLED_NUM 9
|
||||
|
||||
#define QMK_ESC_OUTPUT D0 // usually COL
|
||||
#define QMK_ESC_INPUT D4 // usually ROW
|
||||
85
keyboards/aves65/info.json
Normal file
85
keyboards/aves65/info.json
Normal file
@@ -0,0 +1,85 @@
|
||||
{
|
||||
"keyboard_name": "Aves65",
|
||||
"url": "",
|
||||
"maintainer": "Hund",
|
||||
"width": 16,
|
||||
"height": 5,
|
||||
"layouts": {
|
||||
"LAYOUT_65_iso_blocker": {
|
||||
"layout": [
|
||||
{"label":"k00", "x":0, "y":0},
|
||||
{"label":"k01", "x":1, "y":0},
|
||||
{"label":"k02", "x":2, "y":0},
|
||||
{"label":"k03", "x":3, "y":0},
|
||||
{"label":"k04", "x":4, "y":0},
|
||||
{"label":"k05", "x":5, "y":0},
|
||||
{"label":"k06", "x":6, "y":0},
|
||||
{"label":"k07", "x":7, "y":0},
|
||||
{"label":"k08", "x":8, "y":0},
|
||||
{"label":"k09", "x":9, "y":0},
|
||||
{"label":"k0a", "x":10, "y":0},
|
||||
{"label":"k0b", "x":11, "y":0},
|
||||
{"label":"k0c", "x":12, "y":0},
|
||||
{"label":"k0d", "x":13, "y":0, "w":2},
|
||||
{"label":"k0e", "x":15, "y":0},
|
||||
|
||||
{"label":"k10", "x":0, "y":1, "w":1.5},
|
||||
{"label":"k11", "x":1.5, "y":1},
|
||||
{"label":"k12", "x":2.5, "y":1},
|
||||
{"label":"k13", "x":3.5, "y":1},
|
||||
{"label":"k14", "x":4.5, "y":1},
|
||||
{"label":"k15", "x":5.5, "y":1},
|
||||
{"label":"k16", "x":6.5, "y":1},
|
||||
{"label":"k17", "x":7.5, "y":1},
|
||||
{"label":"k18", "x":8.5, "y":1},
|
||||
{"label":"k19", "x":9.5, "y":1},
|
||||
{"label":"k1a", "x":10.5, "y":1},
|
||||
{"label":"k1b", "x":11.5, "y":1},
|
||||
{"label":"k1c", "x":12.5, "y":1},
|
||||
{"label":"k1e", "x":15, "y":1},
|
||||
|
||||
{"label":"k20", "x":0, "y":2, "w":1.75},
|
||||
{"label":"k21", "x":1.75, "y":2},
|
||||
{"label":"k22", "x":2.75, "y":2},
|
||||
{"label":"k23", "x":3.75, "y":2},
|
||||
{"label":"k24", "x":4.75, "y":2},
|
||||
{"label":"k25", "x":5.75, "y":2},
|
||||
{"label":"k26", "x":6.75, "y":2},
|
||||
{"label":"k27", "x":7.75, "y":2},
|
||||
{"label":"k28", "x":8.75, "y":2},
|
||||
{"label":"k29", "x":9.75, "y":2},
|
||||
{"label":"k2a", "x":10.75, "y":2},
|
||||
{"label":"k2b", "x":11.75, "y":2},
|
||||
{"label":"k2c", "x":12.75, "y":2},
|
||||
{"label":"k2d", "x":13.75, "y":1, "w":1.25, "h":2},
|
||||
{"label":"k2e", "x":15, "y":2},
|
||||
|
||||
{"label":"k30", "x":0, "y":3, "w":1.25},
|
||||
{"label":"k31", "x":1.25, "y":3},
|
||||
{"label":"k32", "x":2.25, "y":3},
|
||||
{"label":"k33", "x":3.25, "y":3},
|
||||
{"label":"k34", "x":4.25, "y":3},
|
||||
{"label":"k35", "x":5.25, "y":3},
|
||||
{"label":"k36", "x":6.25, "y":3},
|
||||
{"label":"k37", "x":7.25, "y":3},
|
||||
{"label":"k38", "x":8.25, "y":3},
|
||||
{"label":"k39", "x":9.25, "y":3},
|
||||
{"label":"k3a", "x":10.25, "y":3},
|
||||
{"label":"k3b", "x":11.25, "y":3},
|
||||
{"label":"k3c", "x":12.25, "y":3, "w":1.75},
|
||||
{"label":"k3d", "x":14, "y":3},
|
||||
{"label":"k3e", "x":15, "y":3},
|
||||
|
||||
{"label":"k40", "x":0, "y":4, "w":1.25},
|
||||
{"label":"k41", "x":1.25, "y":4, "w":1.25},
|
||||
{"label":"k42", "x":2.5, "y":4, "w":1.25},
|
||||
{"label":"k46", "x":3.75, "y":4, "w":6.25},
|
||||
{"label":"k4a", "x":10, "y":4, "w":1.25},
|
||||
{"label":"k4b", "x":11.25, "y":4, "w":1.25},
|
||||
{"label":"k4c", "x":13, "y":4},
|
||||
{"label":"k4d", "x":14, "y":4},
|
||||
{"label":"k4e", "x":15, "y":4}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
18
keyboards/aves65/keymaps/default/keymap.c
Normal file
18
keyboards/aves65/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,18 @@
|
||||
#include QMK_KEYBOARD_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 _MA 0
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[_MA] = LAYOUT_65_iso_blocker(
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL,
|
||||
KC_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_PGUP,
|
||||
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTRL, KC_LEFT, KC_DOWN, KC_RGHT)
|
||||
|
||||
};
|
||||
15
keyboards/aves65/readme.md
Normal file
15
keyboards/aves65/readme.md
Normal file
@@ -0,0 +1,15 @@
|
||||
# Aves65
|
||||
|
||||

|
||||
|
||||
A 65% hotswap keyboard with RGB underglow.
|
||||
|
||||
* Keyboard Maintainer: [Hund](https://github.com/Hund)
|
||||
* Hardware Supported: Aves65
|
||||
* Hardware Availability: none (yet)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make aves65:default
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
34
keyboards/aves65/rules.mk
Normal file
34
keyboards/aves65/rules.mk
Normal file
@@ -0,0 +1,34 @@
|
||||
# MCU name
|
||||
MCU = atmega32u4
|
||||
|
||||
# Bootloader selection
|
||||
# Teensy halfkay
|
||||
# Pro Micro caterina
|
||||
# Atmel DFU atmel-dfu
|
||||
# LUFA DFU lufa-dfu
|
||||
# QMK DFU qmk-dfu
|
||||
# ATmega32A bootloadHID
|
||||
# ATmega328P USBasp
|
||||
BOOTLOADER = qmk-dfu
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
CONSOLE_ENABLE = no # Console for debug
|
||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
NKRO_ENABLE = no # USB Nkey Rollover
|
||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
|
||||
MIDI_ENABLE = no # MIDI support
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
AUDIO_ENABLE = no # Audio output on port C6
|
||||
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||
HD44780_ENABLE = no # Enable support for HD44780 based LCDs
|
||||
|
||||
LAYOUTS = 65_iso_blocker
|
||||
217
keyboards/chidori/keymaps/oled_sample/keymap.c
Normal file
217
keyboards/chidori/keymaps/oled_sample/keymap.c
Normal file
@@ -0,0 +1,217 @@
|
||||
/* Copyright 2019 ENDO Katsuhiro <ka2hiro@kagizaraya.jp>
|
||||
* Copyright 2020 Masaya Uno
|
||||
*
|
||||
* 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 "board.h"
|
||||
|
||||
enum layer_number {
|
||||
_QWERTY,
|
||||
_COLEMAK,
|
||||
_DVORAK,
|
||||
_LOWER,
|
||||
_RAISE,
|
||||
_ADJUST,
|
||||
};
|
||||
|
||||
// Defines the keycodes used by our macros in process_record_user
|
||||
enum custom_keycodes {
|
||||
QWERTY = SAFE_RANGE,
|
||||
COLEMAK,
|
||||
DVORAK,
|
||||
};
|
||||
|
||||
#define LOWER MO(_LOWER)
|
||||
#define RAISE MO(_RAISE)
|
||||
#define ADJUST MO(_ADJUST)
|
||||
|
||||
// clang-format off
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Qwerty
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Ctrl | A | S | D | F | G | | H | J | K | L | ; | ' |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Shift| Z | X | C | V | B | | N | M | , | . | / |Enter |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* |ADJUST| Esc | Alt | GUI |LOWER |Space | | Space| RAISE| Left | Down | Up | Right|
|
||||
* `-----------------------------------------' `-----------------------------------------'
|
||||
*/
|
||||
[_QWERTY] = LAYOUT(
|
||||
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_LCTL, 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,
|
||||
ADJUST, KC_ESC, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
|
||||
),
|
||||
/* Colemak
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | Tab | Q | W | F | P | G | | J | L | U | Y | ; | Bksp |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Ctrl | A | R | S | T | D | | H | N | E | I | O | ' |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Shift| Z | X | C | V | B | | K | M | , | . | / |Enter |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* |ADJUST| Esc | Alt | GUI |LOWER |Space | | Space| RAISE| Left | Down | Up | Right|
|
||||
* `-----------------------------------------' `-----------------------------------------'
|
||||
*/
|
||||
[_COLEMAK] = LAYOUT(
|
||||
KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
|
||||
KC_LCTL, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
|
||||
ADJUST, KC_ESC, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
|
||||
),
|
||||
|
||||
/* Dvorak
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | Tab | ' | , | . | P | Y | | F | G | C | R | L | Bksp |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Ctrl | A | O | E | U | I | | D | H | T | N | S | / |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Shift| ; | Q | J | K | X | | B | M | W | V | Z |Enter |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* |ADJUST| Esc | Alt | GUI |LOWER |Space | | Space| RAISE| Left | Down | Up | Right|
|
||||
* `-----------------------------------------' `-----------------------------------------'
|
||||
*/
|
||||
[_DVORAK] = LAYOUT(
|
||||
KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC,
|
||||
KC_LCTL, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH,
|
||||
KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT,
|
||||
ADJUST, KC_ESC, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
|
||||
),
|
||||
|
||||
/* Lower
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | | | | | | | - | _ | + | { | } | | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | Home | End | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | | | | | | | | | Next | Vol- | Vol+ | Play |
|
||||
* `-----------------------------------------' `-----------------------------------------'
|
||||
*/
|
||||
[_LOWER] = LAYOUT(
|
||||
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
|
||||
_______, _______, _______, _______, _______, _______, KC_MINS, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_END, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
|
||||
),
|
||||
|
||||
/* Raise
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | F1 | F2 | F3 | F4 | F5 | | F6 | - | = | [ | ] | \ |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | F7 | F8 | F9 | F10 | F11 | | F12 | | | | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | | | | | | | | | Next | Vol- | Vol+ | Play |
|
||||
* `-----------------------------------------' `-----------------------------------------'
|
||||
*/
|
||||
[_RAISE] = LAYOUT(
|
||||
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_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
|
||||
),
|
||||
|
||||
/* Adjust (Lower + Raise)
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | | Reset| | | | | | |Qwerty|Colemk|Dvorak| | Ins |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Caps | | | | | Mac | | Win | - | = |Print |ScLock|Pause |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | | | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | | | | | | | KANA | | Home |PageDn|PageUp| End |
|
||||
* `-----------------------------------------' `-----------------------------------------'
|
||||
*/
|
||||
[_ADJUST] = LAYOUT(
|
||||
_______, RESET, _______, _______, _______, _______, _______, QWERTY, COLEMAK, DVORAK, _______, KC_INS,
|
||||
KC_CAPS, _______, _______, _______, _______, AG_NORM, AG_SWAP, KC_MINS, KC_EQL, KC_PSCR, KC_SLCK, KC_PAUS,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END
|
||||
)
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
layer_state_t layer_state_set_user(layer_state_t state) {
|
||||
return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
|
||||
}
|
||||
|
||||
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;
|
||||
case COLEMAK:
|
||||
if (record->event.pressed) {
|
||||
set_single_persistent_default_layer(_COLEMAK);
|
||||
}
|
||||
return false;
|
||||
case DVORAK:
|
||||
if (record->event.pressed) {
|
||||
set_single_persistent_default_layer(_DVORAK);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool led_update_user(led_t led_state) {
|
||||
board_set_led_by_index(0, LED_YELLOW, led_state.caps_lock);
|
||||
board_set_led_by_index(1, LED_YELLOW, led_state.scroll_lock);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
#ifdef OLED_DRIVER_ENABLE
|
||||
|
||||
void oled_write_layer_state(void) {
|
||||
oled_write_P(PSTR("Layer: "), false);
|
||||
switch (get_highest_layer(layer_state | default_layer_state)) {
|
||||
case _QWERTY:
|
||||
oled_write_ln_P(PSTR("Qwerty"), false);
|
||||
break;
|
||||
case _COLEMAK:
|
||||
oled_write_ln_P(PSTR("Colemak"), false);
|
||||
break;
|
||||
case _DVORAK:
|
||||
oled_write_ln_P(PSTR("Dvorak"), false);
|
||||
break;
|
||||
case _LOWER:
|
||||
oled_write_ln_P(PSTR("Lower"), false);
|
||||
break;
|
||||
case _RAISE:
|
||||
oled_write_ln_P(PSTR("Raise"), false);
|
||||
break;
|
||||
case _ADJUST:
|
||||
oled_write_ln_P(PSTR("Adjust"), false);
|
||||
break;
|
||||
default:
|
||||
oled_write_ln_P(PSTR("Undef"), false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void oled_task_user(void) {
|
||||
// If you want to change the display of OLED, you need to change here
|
||||
oled_write_layer_state();
|
||||
}
|
||||
#endif
|
||||
1
keyboards/chidori/keymaps/oled_sample/readme.md
Normal file
1
keyboards/chidori/keymaps/oled_sample/readme.md
Normal file
@@ -0,0 +1 @@
|
||||
# An OLED enabled keymap based on the default keymap for chidori
|
||||
2
keyboards/chidori/keymaps/oled_sample/rules.mk
Normal file
2
keyboards/chidori/keymaps/oled_sample/rules.mk
Normal file
@@ -0,0 +1,2 @@
|
||||
# Enable SSD1306 OLED
|
||||
OLED_DRIVER_ENABLE = yes
|
||||
@@ -15,6 +15,14 @@
|
||||
|
||||
extern const unsigned char font[] PROGMEM;
|
||||
|
||||
#ifndef OLED_BLANK_CHAR
|
||||
#define OLED_BLANK_CHAR ' '
|
||||
#endif
|
||||
|
||||
#ifndef OLED_BITS_FILTER
|
||||
#define OLED_BITS_FILTER
|
||||
#endif
|
||||
|
||||
// Set this to 1 to help diagnose early startup problems
|
||||
// when testing power-on with ble. Turn it off otherwise,
|
||||
// as the latency of printing most of the debug info messes
|
||||
@@ -26,8 +34,11 @@ extern const unsigned char font[] PROGMEM;
|
||||
//#define BatteryUpdateInterval 10000 /* milliseconds */
|
||||
|
||||
// 'last_flush' is declared as uint16_t,
|
||||
// so this must be less than 65535
|
||||
// so this must be less than 65535
|
||||
#ifndef ScreenOffInterval
|
||||
#define ScreenOffInterval 60000 /* milliseconds */
|
||||
#endif
|
||||
|
||||
#if DEBUG_TO_SCREEN
|
||||
static uint8_t displaying;
|
||||
#endif
|
||||
@@ -61,38 +72,32 @@ done:
|
||||
return res;
|
||||
}
|
||||
|
||||
// Write 2-byte command sequence.
|
||||
// Returns true on success
|
||||
static inline bool _send_cmd2(uint8_t cmd, uint8_t opr) {
|
||||
if (!_send_cmd1(cmd)) {
|
||||
return false;
|
||||
}
|
||||
return _send_cmd1(opr);
|
||||
}
|
||||
|
||||
// Write 3-byte command sequence.
|
||||
// Returns true on success
|
||||
static inline bool _send_cmd3(uint8_t cmd, uint8_t opr1, uint8_t opr2) {
|
||||
if (!_send_cmd1(cmd)) {
|
||||
return false;
|
||||
}
|
||||
if (!_send_cmd1(opr1)) {
|
||||
return false;
|
||||
}
|
||||
return _send_cmd1(opr2);
|
||||
}
|
||||
|
||||
#define send_cmd1(c) if (!_send_cmd1(c)) {goto done;}
|
||||
#define send_cmd2(c,o) if (!_send_cmd2(c,o)) {goto done;}
|
||||
#define send_cmd3(c,o1,o2) if (!_send_cmd3(c,o1,o2)) {goto done;}
|
||||
#define send_cmds(c) if (!_send_cmds(c,sizeof(c))) {goto done;}
|
||||
#define cmd1(X) X
|
||||
#define cmd2(X,Y) X,Y
|
||||
#define cmd3(X,Y,Z) X,Y,Z
|
||||
|
||||
static bool _send_cmds(const uint8_t* p,uint8_t sz) {
|
||||
for(uint8_t i=sz;i;i--) {
|
||||
send_cmd1( pgm_read_byte(p++) );
|
||||
}
|
||||
return true;
|
||||
done:
|
||||
return false;
|
||||
}
|
||||
|
||||
#define SEND_CMDS(...) {static const uint8_t _cmds[] PROGMEM = { __VA_ARGS__,0 };send_cmds(_cmds);}
|
||||
|
||||
static void clear_display(void) {
|
||||
matrix_clear(&display);
|
||||
|
||||
// Clear all of the display bits (there can be random noise
|
||||
// in the RAM on startup)
|
||||
send_cmd3(PageAddr, 0, (DisplayHeight / 8) - 1);
|
||||
send_cmd3(ColumnAddr, 0, DisplayWidth - 1);
|
||||
SEND_CMDS(
|
||||
cmd3(PageAddr, 0, (DisplayHeight / 8) - 1),
|
||||
cmd3(ColumnAddr, 0, DisplayWidth - 1)
|
||||
);
|
||||
|
||||
if (i2c_start_write(SSD1306_ADDRESS)) {
|
||||
goto done;
|
||||
@@ -101,8 +106,8 @@ static void clear_display(void) {
|
||||
// Data mode
|
||||
goto done;
|
||||
}
|
||||
for (uint8_t row = 0; row < MatrixRows; ++row) {
|
||||
for (uint8_t col = 0; col < DisplayWidth; ++col) {
|
||||
for (uint8_t row = MatrixRows;row; row--) {
|
||||
for (uint8_t col = DisplayWidth; col; col--) {
|
||||
i2c_master_write(0);
|
||||
}
|
||||
}
|
||||
@@ -130,38 +135,47 @@ bool iota_gfx_init(bool rotate) {
|
||||
bool success = false;
|
||||
|
||||
i2c_master_init();
|
||||
send_cmd1(DisplayOff);
|
||||
send_cmd2(SetDisplayClockDiv, 0x80);
|
||||
send_cmd2(SetMultiPlex, DisplayHeight - 1);
|
||||
|
||||
send_cmd2(SetDisplayOffset, 0);
|
||||
|
||||
|
||||
send_cmd1(SetStartLine | 0x0);
|
||||
send_cmd2(SetChargePump, 0x14 /* Enable */);
|
||||
send_cmd2(SetMemoryMode, 0 /* horizontal addressing */);
|
||||
SEND_CMDS(
|
||||
cmd1(DisplayOff),
|
||||
cmd2(SetDisplayClockDiv, 0x80),
|
||||
cmd2(SetMultiPlex, DisplayHeight - 1),
|
||||
cmd2(SetDisplayOffset, 0),
|
||||
cmd1(SetStartLine | 0x0),
|
||||
cmd2(SetChargePump, 0x14 /* Enable */),
|
||||
cmd2(SetMemoryMode, 0 /* horizontal addressing */)
|
||||
);
|
||||
|
||||
if(rotate){
|
||||
// the following Flip the display orientation 180 degrees
|
||||
send_cmd1(SegRemap);
|
||||
send_cmd1(ComScanInc);
|
||||
SEND_CMDS(
|
||||
cmd1(SegRemap),
|
||||
cmd1(ComScanInc)
|
||||
);
|
||||
}else{
|
||||
// Flips the display orientation 0 degrees
|
||||
send_cmd1(SegRemap | 0x1);
|
||||
send_cmd1(ComScanDec);
|
||||
SEND_CMDS(
|
||||
cmd1(SegRemap | 0x1),
|
||||
cmd1(ComScanDec)
|
||||
);
|
||||
}
|
||||
|
||||
send_cmd2(SetComPins, 0x2);
|
||||
send_cmd2(SetContrast, 0x8f);
|
||||
send_cmd2(SetPreCharge, 0xf1);
|
||||
send_cmd2(SetVComDetect, 0x40);
|
||||
send_cmd1(DisplayAllOnResume);
|
||||
send_cmd1(NormalDisplay);
|
||||
send_cmd1(DeActivateScroll);
|
||||
send_cmd1(DisplayOn);
|
||||
|
||||
send_cmd2(SetContrast, 0); // Dim
|
||||
|
||||
SEND_CMDS(
|
||||
#ifdef SSD1306_128X64
|
||||
cmd2(SetComPins, 0x12),
|
||||
#else
|
||||
cmd2(SetComPins, 0x2),
|
||||
#endif
|
||||
cmd2(SetContrast, 0x8f),
|
||||
cmd2(SetPreCharge, 0xf1),
|
||||
cmd2(SetVComDetect, 0x40),
|
||||
cmd1(DisplayAllOnResume),
|
||||
cmd1(NormalDisplay),
|
||||
cmd1(DeActivateScroll),
|
||||
cmd1(DisplayOn),
|
||||
|
||||
cmd2(SetContrast, 0) // Dim
|
||||
);
|
||||
|
||||
clear_display();
|
||||
|
||||
success = true;
|
||||
@@ -205,7 +219,7 @@ void matrix_write_char_inner(struct CharacterMatrix *matrix, uint8_t c) {
|
||||
memmove(&matrix->display[0], &matrix->display[1],
|
||||
MatrixCols * (MatrixRows - 1));
|
||||
matrix->cursor = &matrix->display[MatrixRows - 1][0];
|
||||
memset(matrix->cursor, ' ', MatrixCols);
|
||||
memset(matrix->cursor, OLED_BLANK_CHAR, MatrixCols);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -218,7 +232,7 @@ void matrix_write_char(struct CharacterMatrix *matrix, uint8_t c) {
|
||||
uint8_t cursor_col = (matrix->cursor - &matrix->display[0][0]) % MatrixCols;
|
||||
|
||||
while (cursor_col++ < MatrixCols) {
|
||||
matrix_write_char_inner(matrix, ' ');
|
||||
matrix_write_char_inner(matrix, OLED_BLANK_CHAR);
|
||||
}
|
||||
return;
|
||||
}
|
||||
@@ -231,17 +245,15 @@ void iota_gfx_write_char(uint8_t c) {
|
||||
}
|
||||
|
||||
void matrix_write(struct CharacterMatrix *matrix, const char *data) {
|
||||
const char *end = data + strlen(data);
|
||||
while (data < end) {
|
||||
while (*data) {
|
||||
matrix_write_char(matrix, *data);
|
||||
++data;
|
||||
}
|
||||
}
|
||||
|
||||
void matrix_write_ln(struct CharacterMatrix *matrix, const char *data) {
|
||||
char data_ln[strlen(data)+2];
|
||||
snprintf(data_ln, sizeof(data_ln), "%s\n", data);
|
||||
matrix_write(matrix, data_ln);
|
||||
matrix_write(matrix, data);
|
||||
matrix_write(matrix, "\n");
|
||||
}
|
||||
|
||||
void iota_gfx_write(const char *data) {
|
||||
@@ -264,7 +276,7 @@ void iota_gfx_write_P(const char *data) {
|
||||
}
|
||||
|
||||
void matrix_clear(struct CharacterMatrix *matrix) {
|
||||
memset(matrix->display, ' ', sizeof(matrix->display));
|
||||
memset(matrix->display, OLED_BLANK_CHAR, sizeof(matrix->display));
|
||||
matrix->cursor = &matrix->display[0][0];
|
||||
matrix->dirty = true;
|
||||
}
|
||||
@@ -281,8 +293,10 @@ void matrix_render(struct CharacterMatrix *matrix) {
|
||||
#endif
|
||||
|
||||
// Move to the home position
|
||||
send_cmd3(PageAddr, 0, MatrixRows - 1);
|
||||
send_cmd3(ColumnAddr, 0, (MatrixCols * FontWidth) - 1);
|
||||
SEND_CMDS(
|
||||
cmd3(PageAddr, 0, MatrixRows - 1),
|
||||
cmd3(ColumnAddr, 0, (MatrixCols * FontWidth) - 1)
|
||||
);
|
||||
|
||||
if (i2c_start_write(SSD1306_ADDRESS)) {
|
||||
goto done;
|
||||
@@ -298,7 +312,7 @@ void matrix_render(struct CharacterMatrix *matrix) {
|
||||
|
||||
for (uint8_t glyphCol = 0; glyphCol < FontWidth; ++glyphCol) {
|
||||
uint8_t colBits = pgm_read_byte(glyph + glyphCol);
|
||||
i2c_master_write(colBits);
|
||||
i2c_master_write(colBits OLED_BITS_FILTER);
|
||||
}
|
||||
|
||||
// 1 column of space between chars (it's not included in the glyph)
|
||||
@@ -331,7 +345,7 @@ void iota_gfx_task(void) {
|
||||
force_dirty = false;
|
||||
}
|
||||
|
||||
if (timer_elapsed(last_flush) > ScreenOffInterval) {
|
||||
if (ScreenOffInterval !=0 && timer_elapsed(last_flush) > ScreenOffInterval) {
|
||||
iota_gfx_off();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@ BOOTLOADER = atmel-dfu
|
||||
#
|
||||
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
|
||||
MOUSEKEY_ENABLE = no # Mouse keys
|
||||
EXTRAKEY_ENABLE = no # Audio control and System control
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
CONSOLE_ENABLE = no # Console for debug
|
||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
"height": 5,
|
||||
"layouts": {
|
||||
"LAYOUT_all": {
|
||||
"layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.26}, {"x":10.0, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":12.5, "y":4, "w":1.25}, {"x":13.75, "y":4, "w":1.25}]
|
||||
"layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10.0, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":12.5, "y":4, "w":1.25}, {"x":13.75, "y":4, "w":1.25}]
|
||||
},
|
||||
|
||||
"LAYOUT_60_ansi": {
|
||||
@@ -21,4 +21,4 @@
|
||||
"layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.5}, {"x":1.5, "y":4}, {"x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"x":11, "y":4, "w":1.5}, {"x":12.5, "y":4}, {"x":13.5, "y":4, "w":1.5}]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
"height": 5,
|
||||
"layouts": {
|
||||
"LAYOUT_all": {
|
||||
"layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.26}, {"x":10.0, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":12.5, "y":4, "w":1.25}, {"x":13.75, "y":4, "w":1.25}]
|
||||
"layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10.0, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":12.5, "y":4, "w":1.25}, {"x":13.75, "y":4, "w":1.25}]
|
||||
},
|
||||
|
||||
"LAYOUT_60_ansi": {
|
||||
@@ -21,4 +21,4 @@
|
||||
"layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.5}, {"x":1.5, "y":4}, {"x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"x":11, "y":4, "w":1.5}, {"x":12.5, "y":4}, {"x":13.5, "y":4, "w":1.5}]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
{"label":"K3C (F1,B5)", "x":12.25, "y":3, "w":1.75},
|
||||
{"label":"K3E (F1,C6)", "x":14, "y":3},
|
||||
{"label":"K3F (F1,C7)", "x":15, "y":3},
|
||||
{"label":"K40 (F4,B2)", "x":0, "y":4, "w":1.225},
|
||||
{"label":"K40 (F4,B2)", "x":0, "y":4, "w":1.25},
|
||||
{"label":"K41 (F4,F5)", "x":1.25, "y":4, "w":1.25},
|
||||
{"label":"K42 (F4,F6)", "x":2.5, "y":4, "w":1.25},
|
||||
{"label":"K46 (F4,D3)", "x":3.75, "y":4, "w":6.25},
|
||||
@@ -139,7 +139,7 @@
|
||||
{"label":"K3C (F1,B5)", "x":12.25, "y":3, "w":1.75},
|
||||
{"label":"K3E (F1,C6)", "x":14, "y":3},
|
||||
{"label":"K3F (F1,C7)", "x":15, "y":3},
|
||||
{"label":"K40 (F4,B2)", "x":0, "y":4, "w":1.225},
|
||||
{"label":"K40 (F4,B2)", "x":0, "y":4, "w":1.25},
|
||||
{"label":"K41 (F4,F5)", "x":1.25, "y":4, "w":1.25},
|
||||
{"label":"K42 (F4,F6)", "x":2.5, "y":4, "w":1.25},
|
||||
{"label":"K46 (F4,D3)", "x":3.75, "y":4, "w":6.25},
|
||||
@@ -211,7 +211,7 @@
|
||||
{"label":"K3C (F1,B5)", "x":12.25, "y":3, "w":1.75},
|
||||
{"label":"K3E (F1,C6)", "x":14, "y":3},
|
||||
{"label":"K3F (F1,C7)", "x":15, "y":3},
|
||||
{"label":"K40 (F4,B2)", "x":0, "y":4, "w":1.225},
|
||||
{"label":"K40 (F4,B2)", "x":0, "y":4, "w":1.25},
|
||||
{"label":"K41 (F4,F5)", "x":1.25, "y":4, "w":1.25},
|
||||
{"label":"K42 (F4,F6)", "x":2.5, "y":4, "w":1.25},
|
||||
{"label":"K46 (F4,D3)", "x":3.75, "y":4, "w":6.25},
|
||||
@@ -283,7 +283,7 @@
|
||||
{"label":"K3C (F1,B5)", "x":12.25, "y":3, "w":1.75},
|
||||
{"label":"K3E (F1,C6)", "x":14, "y":3},
|
||||
{"label":"K3F (F1,C7)", "x":15, "y":3},
|
||||
{"label":"K40 (F4,B2)", "x":0, "y":4, "w":1.225},
|
||||
{"label":"K40 (F4,B2)", "x":0, "y":4, "w":1.25},
|
||||
{"label":"K41 (F4,F5)", "x":1.25, "y":4, "w":1.25},
|
||||
{"label":"K42 (F4,F6)", "x":2.5, "y":4, "w":1.25},
|
||||
{"label":"K46 (F4,D3)", "x":3.75, "y":4, "w":6.25},
|
||||
@@ -356,7 +356,7 @@
|
||||
{"label":"K3C (F1,B5)", "x":12.25, "y":3, "w":1.75},
|
||||
{"label":"K3E (F1,C6)", "x":14, "y":3},
|
||||
{"label":"K3F (F1,C7)", "x":15, "y":3},
|
||||
{"label":"K40 (F4,B2)", "x":0, "y":4, "w":1.225},
|
||||
{"label":"K40 (F4,B2)", "x":0, "y":4, "w":1.25},
|
||||
{"label":"K41 (F4,F5)", "x":1.25, "y":4, "w":1.25},
|
||||
{"label":"K42 (F4,F6)", "x":2.5, "y":4, "w":1.25},
|
||||
{"label":"K46 (F4,D3)", "x":3.75, "y":4, "w":6.25},
|
||||
|
||||
@@ -26,7 +26,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
LAYOUT(
|
||||
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_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_UNDS, KC_PLUS,
|
||||
KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F11, KC_F12, KC_LBRC, KC_RBRC,
|
||||
RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLU, KC_VOLD, KC_MNXT),
|
||||
KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_UNDS, KC_PLUS,
|
||||
KC_CAPS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_LBRC, KC_RBRC,
|
||||
RESET, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_MPLY, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT),
|
||||
};
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
"height": 6,
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [{"x":0,"y":0,"w":1,"h":1}, {"x":1,"y":0,"w":1,"h":1}, {"x":2,"y":0,"w":1,"h":1}, {"x":3,"y":0,"w":1,"h":1}, {"x":4,"y":0,"w":1,"h":1}, {"x":5,"y":0,"w":1,"h":1}, {"x":6.5,"y":0,"w":1,"h":1}, {"x":7.5,"y":0,"w":1,"h":1}, {"x":8.5,"y":0,"w":1,"h":1}, {"x":9.5,"y":0,"w":1,"h":1}, {"x":10.5,"y":0,"w":1,"h":1}, {"x":11.5,"y":0,"w":1,"h":1}, {"x":13.75,"y":0,"w":1,"h":1}, {"x":14.75,"y":0,"w":1,"h":1}, {"x":15.75,"y":0,"w":1,"h":1}, {"x":16.75,"y":0,"w":1,"h":1}, {"x":17.75,"y":0,"w":1,"h":1}, {"x":18.75,"y":0,"w":2,"h":1}, {"x":0,"y":1,"w":1,"h":1}, {"x":1,"y":1,"w":1,"h":1}, {"x":2,"y":1,"w":1,"h":1}, {"x":3,"y":1,"w":1,"h":1}, {"x":4,"y":1,"w":1,"h":1}, {"x":5,"y":1,"w":1,"h":1}, {"x":6.5,"y":1,"w":1.26,"h":1}, {"x":7.75,"y":1,"w":1,"h":1}, {"x":8.75,"y":1,"w":1,"h":1}, {"x":9.75,"y":1,"w":1,"h":1}, {"x":10.75,"y":1,"w":1,"h":1}, {"x":11.75,"y":1,"w":1,"h":1}, {"x":14,"y":1,"w":1,"h":1}, {"x":15,"y":1,"w":1,"h":1}, {"x":16,"y":1,"w":1,"h":1}, {"x":17,"y":1,"w":1,"h":1}, {"x":18,"y":1,"w":1,"h":1}, {"x":19,"y":1,"w":1.75,"h":1}, {"x":0,"y":2,"w":1,"h":1}, {"x":1,"y":2,"w":1,"h":1}, {"x":2,"y":2,"w":1,"h":1}, {"x":3,"y":2,"w":1,"h":1}, {"x":4,"y":2,"w":1,"h":1}, {"x":5,"y":2,"w":1,"h":1}, {"x":6.5,"y":2,"w":1.75,"h":1}, {"x":8.25,"y":2,"w":1,"h":1}, {"x":9.25,"y":2,"w":1,"h":1}, {"x":10.25,"y":2,"w":1,"h":1}, {"x":11.25,"y":2,"w":1,"h":1}, {"x":12.25,"y":2,"w":1,"h":1}, {"x":13.5,"y":2,"w":1,"h":1}, {"x":14.5,"y":2,"w":1,"h":1}, {"x":15.5,"y":2,"w":1,"h":1}, {"x":16.5,"y":2,"w":1,"h":1}, {"x":17.5,"y":2,"w":1,"h":1}, {"x":18.5,"y":2,"w":1,"h":1}, {"x":19.5,"y":2,"w":1.25,"h":1}, {"x":0,"y":3,"w":1,"h":1}, {"x":1,"y":3,"w":1,"h":1}, {"x":2,"y":3,"w":1,"h":1}, {"x":3,"y":3,"w":1,"h":1}, {"x":4,"y":3,"w":1,"h":1}, {"x":5,"y":3,"w":1,"h":1}, {"x":6.5,"y":3,"w":1.25,"h":1}, {"x":7.75,"y":3,"w":1.25,"h":1}, {"x":9,"y":3,"w":1,"h":1}, {"x":10,"y":3,"w":1,"h":1}, {"x":11,"y":3,"w":2,"h":1}, {"x":13.5,"y":3,"w":2,"h":1}, {"x":15.5,"y":3,"w":1,"h":1}, {"x":16.5,"y":3,"w":1,"h":1}, {"x":17.5,"y":3,"w":1.5,"h":1}, {"x":19,"y":3,"w":1.5,"h":1}, {"x":0,"y":4,"w":1,"h":1}, {"x":1,"y":4,"w":1,"h":1}, {"x":2,"y":4,"w":1,"h":1}, {"x":3,"y":4,"w":1,"h":1}, {"x":4,"y":4,"w":1,"h":1}, {"x":5,"y":4,"w":1,"h":1}]
|
||||
"layout": [{"x":0,"y":0,"w":1,"h":1}, {"x":1,"y":0,"w":1,"h":1}, {"x":2,"y":0,"w":1,"h":1}, {"x":3,"y":0,"w":1,"h":1}, {"x":4,"y":0,"w":1,"h":1}, {"x":5,"y":0,"w":1,"h":1}, {"x":6.5,"y":0,"w":1,"h":1}, {"x":7.5,"y":0,"w":1,"h":1}, {"x":8.5,"y":0,"w":1,"h":1}, {"x":9.5,"y":0,"w":1,"h":1}, {"x":10.5,"y":0,"w":1,"h":1}, {"x":11.5,"y":0,"w":1,"h":1}, {"x":13.75,"y":0,"w":1,"h":1}, {"x":14.75,"y":0,"w":1,"h":1}, {"x":15.75,"y":0,"w":1,"h":1}, {"x":16.75,"y":0,"w":1,"h":1}, {"x":17.75,"y":0,"w":1,"h":1}, {"x":18.75,"y":0,"w":2,"h":1}, {"x":0,"y":1,"w":1,"h":1}, {"x":1,"y":1,"w":1,"h":1}, {"x":2,"y":1,"w":1,"h":1}, {"x":3,"y":1,"w":1,"h":1}, {"x":4,"y":1,"w":1,"h":1}, {"x":5,"y":1,"w":1,"h":1}, {"x":6.5,"y":1,"w":1.25,"h":1}, {"x":7.75,"y":1,"w":1,"h":1}, {"x":8.75,"y":1,"w":1,"h":1}, {"x":9.75,"y":1,"w":1,"h":1}, {"x":10.75,"y":1,"w":1,"h":1}, {"x":11.75,"y":1,"w":1,"h":1}, {"x":14,"y":1,"w":1,"h":1}, {"x":15,"y":1,"w":1,"h":1}, {"x":16,"y":1,"w":1,"h":1}, {"x":17,"y":1,"w":1,"h":1}, {"x":18,"y":1,"w":1,"h":1}, {"x":19,"y":1,"w":1.75,"h":1}, {"x":0,"y":2,"w":1,"h":1}, {"x":1,"y":2,"w":1,"h":1}, {"x":2,"y":2,"w":1,"h":1}, {"x":3,"y":2,"w":1,"h":1}, {"x":4,"y":2,"w":1,"h":1}, {"x":5,"y":2,"w":1,"h":1}, {"x":6.5,"y":2,"w":1.75,"h":1}, {"x":8.25,"y":2,"w":1,"h":1}, {"x":9.25,"y":2,"w":1,"h":1}, {"x":10.25,"y":2,"w":1,"h":1}, {"x":11.25,"y":2,"w":1,"h":1}, {"x":12.25,"y":2,"w":1,"h":1}, {"x":13.5,"y":2,"w":1,"h":1}, {"x":14.5,"y":2,"w":1,"h":1}, {"x":15.5,"y":2,"w":1,"h":1}, {"x":16.5,"y":2,"w":1,"h":1}, {"x":17.5,"y":2,"w":1,"h":1}, {"x":18.5,"y":2,"w":1,"h":1}, {"x":19.5,"y":2,"w":1.25,"h":1}, {"x":0,"y":3,"w":1,"h":1}, {"x":1,"y":3,"w":1,"h":1}, {"x":2,"y":3,"w":1,"h":1}, {"x":3,"y":3,"w":1,"h":1}, {"x":4,"y":3,"w":1,"h":1}, {"x":5,"y":3,"w":1,"h":1}, {"x":6.5,"y":3,"w":1.25,"h":1}, {"x":7.75,"y":3,"w":1.25,"h":1}, {"x":9,"y":3,"w":1,"h":1}, {"x":10,"y":3,"w":1,"h":1}, {"x":11,"y":3,"w":2,"h":1}, {"x":13.5,"y":3,"w":2,"h":1}, {"x":15.5,"y":3,"w":1,"h":1}, {"x":16.5,"y":3,"w":1,"h":1}, {"x":17.5,"y":3,"w":1.5,"h":1}, {"x":19,"y":3,"w":1.5,"h":1}, {"x":0,"y":4,"w":1,"h":1}, {"x":1,"y":4,"w":1,"h":1}, {"x":2,"y":4,"w":1,"h":1}, {"x":3,"y":4,"w":1,"h":1}, {"x":4,"y":4,"w":1,"h":1}, {"x":5,"y":4,"w":1,"h":1}]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
41
keyboards/keebio/viterbi/keymaps/vosechu/config.h
Normal file
41
keyboards/keebio/viterbi/keymaps/vosechu/config.h
Normal file
@@ -0,0 +1,41 @@
|
||||
/*
|
||||
Copyright 2017 Chuck Lauer Vose <vosechu@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
|
||||
|
||||
#undef RGBLED_NUM
|
||||
#define RGBLIGHT_ANIMATIONS
|
||||
#define RGBLED_NUM 3
|
||||
#define RGBLIGHT_HUE_STEP 8
|
||||
#define RGBLIGHT_SAT_STEP 8
|
||||
|
||||
#define RGBLIGHT_SLEEP // Put the keyboard to sleep when USB goes dark
|
||||
|
||||
#define LAYOUT_ortho_half_5x7( \
|
||||
L00, L01, L02, L03, L04, L05, L06, \
|
||||
L10, L11, L12, L13, L14, L15, L16, \
|
||||
L20, L21, L22, L23, L24, L25, L26, \
|
||||
L30, L31, L32, L33, L34, L35, L36, \
|
||||
L40, L41, L42, L43, L44, L45, L46 \
|
||||
) \
|
||||
LAYOUT_ortho_5x14( \
|
||||
L00, L01, L02, L03, L04, L05, L06, KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO, \
|
||||
L10, L11, L12, L13, L14, L15, L16, KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO, \
|
||||
L20, L21, L22, L23, L24, L25, L26, KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO, \
|
||||
L30, L31, L32, L33, L34, L35, L36, KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO, \
|
||||
L40, L41, L42, L43, L44, L45, L46, KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO \
|
||||
)
|
||||
91
keyboards/keebio/viterbi/keymaps/vosechu/keymap.c
Normal file
91
keyboards/keebio/viterbi/keymaps/vosechu/keymap.c
Normal file
@@ -0,0 +1,91 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "vosechu.h"
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[BASE] = LAYOUT_ortho_half_5x7( // Base layer
|
||||
KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_9 ,
|
||||
ALT_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , TT(TT1) ,
|
||||
CTL_ESC , KC_A , KC_S , KC_D , KC_F , KC_G , TT(TT2) ,
|
||||
KC_F13 , KC_Z , KC_X , KC_C , KC_V , KC_B , TT(TT3) ,
|
||||
KC_MEH , CTL_GRV , ALT_TAB , KC_LALT , MO(LWR) , LFT_BK , SFT_SPC
|
||||
),
|
||||
[LWR] = LAYOUT_ortho_half_5x7( // EVE layer
|
||||
_______ , _______ , _______ , _______ , _______ , _______ , _______ ,
|
||||
A(KC_LEFT), KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F9 ,
|
||||
SFT_SPC , A(KC_F1), A(KC_F2), A(KC_F3), A(KC_F4), _______ , _______ ,
|
||||
A(KC_RGHT), C(KC_F1), C(KC_F2), C(KC_F3), C(KC_F4), _______ , _______ ,
|
||||
_______ , RESET , _______ , _______ , _LAYER_ , KC_DEL , KC_ENT
|
||||
),
|
||||
[LFT] = LAYOUT_ortho_half_5x7( // Media
|
||||
_______ , KC_F10 , KC_F11 , KC_F12 , KC_PSCR , KC_SLCK , KC_PAUS ,
|
||||
_______ , KC_F7 , KC_F8 , KC_F9 , KC_INS , KC_HOME , KC_PGUP ,
|
||||
RGB_TOG , KC_F4 , KC_F5 , KC_F6 , KC_DEL , KC_END , KC_PGDN ,
|
||||
_______ , KC_F1 , KC_F2 , KC_F3 , KC_VOLU , KC_VOLD , KC_MUTE ,
|
||||
_______ , _______ , _______ , _______ , PSWD , _LAYER_ , PSWD_ALT
|
||||
),
|
||||
[TT1] = LAYOUT_ortho_half_5x7( // Override WASD with arrows
|
||||
_______ , _______ , _______ , _______ , _______ , _______ , _______ ,
|
||||
_______ , _______ , KC_UP , _______ , _______ , _______ , _______ ,
|
||||
_______ , KC_LEFT , KC_DOWN , KC_RGHT , _______ , _______ , _______ ,
|
||||
_______ , _______ , _______ , _______ , _______ , _______ , _______ ,
|
||||
_______ , _______ , _______ , _______ , _______ , _______ , _______
|
||||
),
|
||||
[TT2] = LAYOUT_ortho_half_5x7( // Browser layer
|
||||
C(KC_W) , C(KC_1) , C(KC_T) , C(KC_9) , _______ , _______ , _______ ,
|
||||
WBWSRBK , WTABLFT , KC_UP , WTABRGT , WBWSRFW , _______ , _______ ,
|
||||
KC_ESC , KC_LEFT , KC_DOWN , KC_RGHT , C(KC_R) , _______ , _______ ,
|
||||
_______ , _______ , _______ , _______ , _______ , _______ , TT(T23X),
|
||||
_______ , _______ , _______ , _______ , _______ , _______ , _______
|
||||
),
|
||||
[TT3] = LAYOUT_ortho_half_5x7( // OS X override layer
|
||||
_______ , _______ , _______ , _______ , _______ , _______ , _______ ,
|
||||
_______ , _______ , _______ , _______ , _______ , _______ , _______ ,
|
||||
_______ , _______ , _______ , _______ , _______ , _______ , TT(T23X),
|
||||
_______ , _______ , _______ , _______ , _______ , _______ , _______ ,
|
||||
_______ , _______ , _______ , KC_LGUI , _______ , _______ , _______
|
||||
),
|
||||
[T23X] = LAYOUT_ortho_half_5x7( // Browser layer
|
||||
G(KC_W) , G(KC_1) , G(KC_T) , G(KC_9) , _______ , SLACKTB , _______ ,
|
||||
BWSR_BK , TAB_LFT , KC_UP , TAB_RGT , BWSR_FW , SLACKUP , _______ ,
|
||||
KC_ESC , KC_LEFT , KC_DOWN , KC_RGHT , G(KC_R) , SLACKDN , _______ ,
|
||||
_______ , _______ , KC_Q , KC_J , KC_K , _______ , _______ ,
|
||||
_______ , _______ , _______ , KC_LGUI , _______ , _______ , _______
|
||||
),
|
||||
// [_EMPTY] = LAYOUT(
|
||||
// _______ , _______ , _______ , _______ , _______ , _______ , _______ ,
|
||||
// _______ , _______ , _______ , _______ , _______ , _______ , _______ ,
|
||||
// _______ , _______ , _______ , _______ , _______ , _______ , _______ ,
|
||||
// _______ , _______ , _______ , _______ , _______ , _______ , _______ ,
|
||||
// _______ , _______ , _______ , _______ , _______ , _______ , _______
|
||||
// ),
|
||||
};
|
||||
|
||||
void keyboard_post_init_user(void) {
|
||||
// Call the post init code.
|
||||
rgblight_enable_noeeprom(); // enables Rgb, without saving settings
|
||||
rgblight_mode_noeeprom(0);
|
||||
rgblight_sethsv_noeeprom(0, 0, 0);
|
||||
}
|
||||
|
||||
layer_state_t layer_state_set_user(layer_state_t state) {
|
||||
switch (get_highest_layer(state)) {
|
||||
case TT1:
|
||||
rgblight_sethsv_noeeprom(HSV_BLUE);
|
||||
break;
|
||||
case TT2:
|
||||
rgblight_sethsv_noeeprom(HSV_PURPLE);
|
||||
break;
|
||||
case T23X:
|
||||
rgblight_sethsv_noeeprom(HSV_GOLD);
|
||||
break;
|
||||
case TT3:
|
||||
rgblight_sethsv_noeeprom(HSV_GREEN);
|
||||
break;
|
||||
default: // for any other layers, or the default layer
|
||||
rgblight_sethsv_noeeprom(0, 0, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
return state;
|
||||
}
|
||||
1
keyboards/keebio/viterbi/keymaps/vosechu/rules.mk
Normal file
1
keyboards/keebio/viterbi/keymaps/vosechu/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
RGBLIGHT_ENABLE = yes
|
||||
@@ -83,9 +83,9 @@
|
||||
{"label":"FORWARD SLASH", "x":11.25, "y":4.5},
|
||||
{"label":"RIGHT SHIFT", "x":12.25, "y":4.5, "w":2.75},
|
||||
{"label":"UP ARROW", "x":16.5, "y":4.5},
|
||||
{"label":"LEFT CTRL", "x":0.005, "y":5.5, "w":1.24},
|
||||
{"label":"LEFT WIN", "x":1.255, "y":5.5, "w":1.24},
|
||||
{"label":"LEFT ALT", "x":2.505, "y":5.5, "w":1.24},
|
||||
{"label":"LEFT CTRL", "x":0.005, "y":5.5, "w":1.25},
|
||||
{"label":"LEFT WIN", "x":1.255, "y":5.5, "w":1.25},
|
||||
{"label":"LEFT ALT", "x":2.505, "y":5.5, "w":1.25},
|
||||
{"label":"SPACEBAR", "x":3.75, "y":5.5, "w":6.25},
|
||||
{"label":"RIGHT ALT", "x":10, "y":5.5, "w":1.25},
|
||||
{"label":"FN", "x":11.25, "y":5.5, "w":1.25},
|
||||
|
||||
69
keyboards/mechlovin/adelais/adelais.c
Normal file
69
keyboards/mechlovin/adelais/adelais.c
Normal file
@@ -0,0 +1,69 @@
|
||||
/* Copyright 2020 Team Mechlovin'
|
||||
*
|
||||
* 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 "adelais.h"
|
||||
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
led_config_t g_led_config = { {
|
||||
//Key Matrix to LED Index
|
||||
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16},
|
||||
{18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0},
|
||||
{33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, NO_LED, 45, 17},
|
||||
{46, NO_LED, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 58, 60, 32},
|
||||
{61, NO_LED, 62, NO_LED, 63, NO_LED, 64, NO_LED, 65, NO_LED, 66, NO_LED, NO_LED, 57, 67}
|
||||
}, {
|
||||
//LED Index to Physical Positon
|
||||
{0,0}, { 17, 0}, { 34, 0 }, { 51, 0 }, { 69, 0}, { 86, 0}, {100, 0}, {103, 0}, { 120, 0}, { 138, 0}, { 155, 0}, { 172, 0}, { 189, 0}, {207, 0}, {215, 0}, {223, 0}, {224, 0},
|
||||
{0,16}, { 17, 16}, { 34,16 }, { 51,16 }, { 69,16}, { 86,16}, {103,16}, { 120,16}, { 138,16}, { 155,16}, { 172,16}, { 189,16}, {207, 16}, {215, 16}, {224,16},
|
||||
{0,32}, { 17, 32}, { 34,32 }, { 51,32 }, { 69,32}, { 86,32}, {103,32}, { 120,32}, { 138,32}, { 155,32}, { 172,32}, { 189,32}, {207, 32}, {224,32},
|
||||
{ 17, 48}, { 34,48 }, { 51,48 }, { 69,48}, { 86,48}, {103,48}, { 120,48}, { 138,48}, { 155,48}, { 172,48}, { 189,48}, {207, 48}, {215, 48}, {224,48}, {224,48},
|
||||
{ 17, 64}, { 51,64 }, { 86,64}, { 103,64}, { 138,64}, { 172,64}, {224, 64},
|
||||
{100,0}, { 69,0}, { 24, 0}, { 0,3}, { 0,16}, { 0,32}, { 0,51}, { 15,64 }, { 34,64}, { 69,64}, { 103,64}, {110,64}, { 120,64}, { 155,64}, { 189,64}, { 192,64}, { 224,58}, { 224,32}, { 224,16}, { 224,0}, { 207,0}, { 172,0}, { 138,0},
|
||||
}, {
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
} };
|
||||
#endif
|
||||
|
||||
void matrix_init_kb(void) {
|
||||
// put your keyboard start-up code here
|
||||
// runs once when the firmware starts up
|
||||
|
||||
matrix_init_user();
|
||||
led_init_ports();
|
||||
}
|
||||
|
||||
void led_init_ports(void) {
|
||||
setPinOutput(B2);
|
||||
writePinLow(B2);
|
||||
setPinOutput(C15);
|
||||
writePinLow(C15);
|
||||
setPinOutput(B9);
|
||||
writePinLow(B9);
|
||||
}
|
||||
|
||||
bool led_update_kb(led_t led_state) {
|
||||
if(led_update_user(led_state)) {
|
||||
writePin(B2, led_state.caps_lock);
|
||||
writePin(B9, led_state.scroll_lock);
|
||||
writePin(C12, led_state.num_lock);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
33
keyboards/mechlovin/adelais/adelais.h
Normal file
33
keyboards/mechlovin/adelais/adelais.h
Normal file
@@ -0,0 +1,33 @@
|
||||
/* Copyright 2020 Team Mechlovin
|
||||
*
|
||||
* 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( \
|
||||
K1E, K00, K01, K02, K03, K04, K05, K06, K07,K08,K09, K0A, K0B, K0C, K0D, K0E,\
|
||||
K2E, K10, K11, K12, K13, K14, K15, K16,K17,K18, K19, K1A, K1B, K1C, K1D,\
|
||||
K3E, K20, K21, K22, K23, K24, K25, K26,K27,K28, K29, K2A, K2B, K2D,\
|
||||
K30, K32, K33, K34, K35, K36, K37,K38,K39, K3A, K3B, K3D, K3C, K4D,\
|
||||
K40, K42, K44, K46, K48, K4A, K4E \
|
||||
) { \
|
||||
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
|
||||
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
|
||||
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, K2E }, \
|
||||
{ K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
|
||||
{ K40, KC_NO, K42, KC_NO, K44, KC_NO, K46, KC_NO, K48, KC_NO, K4A, KC_NO, KC_NO, K4D, K4E }, \
|
||||
}
|
||||
46
keyboards/mechlovin/adelais/config.h
Normal file
46
keyboards/mechlovin/adelais/config.h
Normal file
@@ -0,0 +1,46 @@
|
||||
/*
|
||||
Copyright 2020 Team Mechlovin
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "config_common.h"
|
||||
|
||||
/* USB Device descriptor parameter */
|
||||
#define VENDOR_ID 0x4D4C // "ML"
|
||||
#define DEVICE_VER 0x0001
|
||||
#define MANUFACTURER Team.Mechlovin
|
||||
|
||||
/* key matrix size */
|
||||
#define MATRIX_ROWS 5
|
||||
#define MATRIX_COLS 15
|
||||
|
||||
/*
|
||||
* Keyboard Matrix Assignments
|
||||
*
|
||||
* Change this to how you wired your keyboard
|
||||
* COLS: AVR pins used for columns, left to right
|
||||
* ROWS: AVR pins used for rows, top to bottom
|
||||
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
|
||||
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
|
||||
*
|
||||
*/
|
||||
#define MATRIX_ROW_PINS { B1, A0, C13, A1, A2}
|
||||
#define MATRIX_COL_PINS { A10, A9, A8, B15, B14, B13, B12, B11, B10, B8, B4, B5, B3, C14, A15 }
|
||||
#define UNUSED_PINS
|
||||
|
||||
/* COL2ROW, ROW2COL*/
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
81
keyboards/mechlovin/adelais/info.json
Normal file
81
keyboards/mechlovin/adelais/info.json
Normal file
@@ -0,0 +1,81 @@
|
||||
{
|
||||
"keyboard_name": "Adelais",
|
||||
"url": "",
|
||||
"maintainer": "Team Mechlovin'",
|
||||
"width": 18.5,
|
||||
"height": 5,
|
||||
"layouts": {
|
||||
"LAYOUT_all": {
|
||||
"key_count": 66,
|
||||
"layout": [
|
||||
{"label":"K1E", "x":0, "y":0},
|
||||
{"label":"K00", "x":1.5, "y":0},
|
||||
{"label":"K01", "x":2.5, "y":0},
|
||||
{"label":"K02", "x":3.5, "y":0},
|
||||
{"label":"K03", "x":4.5, "y":0},
|
||||
{"label":"K04", "x":5.5, "y":0},
|
||||
{"label":"K05", "x":6.5, "y":0},
|
||||
{"label":"K06", "x":7.5, "y":0},
|
||||
{"label":"K07", "x":10.5, "y":0},
|
||||
{"label":"K08", "x":11.5, "y":0},
|
||||
{"label":"K09", "x":12.5, "y":0},
|
||||
{"label":"K0A", "x":13.5, "y":0},
|
||||
{"label":"K0B", "x":14.5, "y":0},
|
||||
{"label":"K0C", "x":15.5, "y":0},
|
||||
{"label":"K0D", "x":16.5, "y":0},
|
||||
{"label":"K0E", "x":17.5, "y":0},
|
||||
{"label":"K2E", "x":0, "y":1},
|
||||
{"label":"K10", "x":1.5, "y":1, "w":1.5},
|
||||
{"label":"K11", "x":3, "y":1},
|
||||
{"label":"K12", "x":4, "y":1},
|
||||
{"label":"K13", "x":5, "y":1},
|
||||
{"label":"K14", "x":6, "y":1},
|
||||
{"label":"K15", "x":7, "y":1},
|
||||
{"label":"K16", "x":10, "y":1},
|
||||
{"label":"K17", "x":11, "y":1},
|
||||
{"label":"K18", "x":12, "y":1},
|
||||
{"label":"K19", "x":13, "y":1},
|
||||
{"label":"K1A", "x":14, "y":1},
|
||||
{"label":"K1B", "x":15, "y":1},
|
||||
{"label":"K1C", "x":16, "y":1},
|
||||
{"label":"K1D", "x":17, "y":1, "w":1.5},
|
||||
{"label":"K3E", "x":0, "y":2},
|
||||
{"label":"K20", "x":1.5, "y":2, "w":1.75},
|
||||
{"label":"K21", "x":3.25, "y":2},
|
||||
{"label":"K22", "x":4.25, "y":2},
|
||||
{"label":"K23", "x":5.25, "y":2},
|
||||
{"label":"K24", "x":6.25, "y":2},
|
||||
{"label":"K25", "x":7.25, "y":2},
|
||||
{"label":"K26", "x":10.25, "y":2},
|
||||
{"label":"K27", "x":11.25, "y":2},
|
||||
{"label":"K28", "x":12.25, "y":2},
|
||||
{"label":"K29", "x":13.25, "y":2},
|
||||
{"label":"K2A", "x":14.25, "y":2},
|
||||
{"label":"K2B", "x":15.25, "y":2},
|
||||
{"label":"K2D", "x":16.25, "y":2, "w":2.25},
|
||||
{"label":"K30", "x":1.5, "y":3, "w":2.25},
|
||||
{"label":"K32", "x":3.75, "y":3},
|
||||
{"label":"K33", "x":4.75, "y":3},
|
||||
{"label":"K34", "x":5.75, "y":3},
|
||||
{"label":"K35", "x":6.75, "y":3},
|
||||
{"label":"K36", "x":7.75, "y":3},
|
||||
{"label":"K37", "x":9.75, "y":3},
|
||||
{"label":"K38", "x":10.75, "y":3},
|
||||
{"label":"K39", "x":11.75, "y":3},
|
||||
{"label":"K3A", "x":12.75, "y":3},
|
||||
{"label":"K3B", "x":13.75, "y":3},
|
||||
{"label":"K4D", "x":14.75, "y":3},
|
||||
{"label":"K3C", "x":15.75, "y":3, "w":1.75},
|
||||
{"label":"K3D", "x":17.5, "y":3},
|
||||
{"label":"K40", "x":1.5, "y":4, "w":1.5},
|
||||
{"label":"K42", "x":4.5, "y":4, "w":1.25},
|
||||
{"label":"K44", "x":5.75, "y":4, "w":2.25},
|
||||
{"label":"K46", "x":8, "y":4, "w":1.25},
|
||||
{"label":"K48", "x":9.75, "y":4, "w":2.75},
|
||||
{"label":"K4A", "x":12.5, "y":4, "w":1.25},
|
||||
{"label":"K4E", "x":17, "y":4, "w":1.5}
|
||||
]
|
||||
}
|
||||
}
|
||||
,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/"
|
||||
}
|
||||
32
keyboards/mechlovin/adelais/keymaps/default/keymap.c
Normal file
32
keyboards/mechlovin/adelais/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,32 @@
|
||||
/* Copyright 2020 Team Mechlovin
|
||||
*
|
||||
* 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_SPC, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
|
||||
KC_SPC, 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_SLSH,
|
||||
KC_SPC, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_BSLS, MO(1), KC_RSFT, KC_UP,
|
||||
KC_LCTL, KC_LALT, KC_SPC, MO(2), KC_SPC, KC_RALT, KC_RCTL ),
|
||||
[0] = 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 ),
|
||||
|
||||
};
|
||||
1
keyboards/mechlovin/adelais/keymaps/default/readme.md
Normal file
1
keyboards/mechlovin/adelais/keymaps/default/readme.md
Normal file
@@ -0,0 +1 @@
|
||||
# The default keymap for adelais
|
||||
44
keyboards/mechlovin/adelais/keymaps/via/keymap.c
Normal file
44
keyboards/mechlovin/adelais/keymaps/via/keymap.c
Normal file
@@ -0,0 +1,44 @@
|
||||
/* Copyright 2020 Team Mechlovin
|
||||
*
|
||||
* 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_SPC, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
|
||||
KC_SPC, 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_SLSH,
|
||||
KC_SPC, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_BSLS, MO(1), KC_RSFT, KC_UP,
|
||||
KC_LCTL, KC_LALT, KC_SPC, MO(2), KC_SPC, KC_RALT, KC_RCTL ),
|
||||
[1] = 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 ),
|
||||
[2] = 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 ),
|
||||
[3] = 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 ),
|
||||
|
||||
};
|
||||
1
keyboards/mechlovin/adelais/keymaps/via/readme.md
Normal file
1
keyboards/mechlovin/adelais/keymaps/via/readme.md
Normal file
@@ -0,0 +1 @@
|
||||
# The VIA keymap for adelais
|
||||
1
keyboards/mechlovin/adelais/keymaps/via/rules.mk
Normal file
1
keyboards/mechlovin/adelais/keymaps/via/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
VIA_ENABLE = yes
|
||||
18
keyboards/mechlovin/adelais/readme.md
Normal file
18
keyboards/mechlovin/adelais/readme.md
Normal file
@@ -0,0 +1,18 @@
|
||||
# Adelais / Adelais En Ciel
|
||||
|
||||

|
||||
|
||||
Compatible with TGR Alice and all clone variants.
|
||||
`standard_led` (Adelais) comes with backlight and RGB underglow LEDs pre-soldered.
|
||||
`rgb_led` (Adelais En Ciel) comes with per-key RGB LEDs pre-soldered.
|
||||
|
||||
* Keyboard Maintainer: [Team Mechlovin'](https://github.com/mechlovin)
|
||||
* Hardware Supported: Adelais, Adelais En Ciel
|
||||
* Hardware Availability: [Reddit GB](https://www.reddit.com/r/mechmarket/comments/fr7smq/gb_team_mechlovin_adelais_tgr_alice_clones/)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make mechlovin/adelais/standard_led:default
|
||||
make mechlovin/adelais/rgb_led:default
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
16
keyboards/mechlovin/adelais/rgb_led/config.h
Normal file
16
keyboards/mechlovin/adelais/rgb_led/config.h
Normal file
@@ -0,0 +1,16 @@
|
||||
#pragma once
|
||||
|
||||
#define PRODUCT_ID 0xAEC1
|
||||
#define PRODUCT Adelais En Ciel
|
||||
#define DESCRIPTION Team.Mechlovin Adelais En Ciel
|
||||
|
||||
#define RGB_DI_PIN A7
|
||||
#define DRIVER_LED_TOTAL 91
|
||||
#define RGB_MATRIX_KEYPRESSES // reacts to keypresses
|
||||
#define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
|
||||
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
|
||||
#define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
|
||||
#define RGB_DISABLE_WHEN_USB_SUSPENDED false // turn off effects when suspended
|
||||
#define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
|
||||
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 220 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
|
||||
#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_PINWHEEL // Sets the default mode, if none has been set
|
||||
1
keyboards/mechlovin/adelais/rgb_led/rules.mk
Normal file
1
keyboards/mechlovin/adelais/rgb_led/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
RGB_MATRIX_ENABLE = WS2812
|
||||
23
keyboards/mechlovin/adelais/rules.mk
Normal file
23
keyboards/mechlovin/adelais/rules.mk
Normal file
@@ -0,0 +1,23 @@
|
||||
# MCU name
|
||||
MCU = STM32F303
|
||||
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
CONSOLE_ENABLE = no # Console for debug
|
||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
NKRO_ENABLE = no # USB Nkey Rollover
|
||||
MIDI_ENABLE = no # MIDI support
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
AUDIO_ENABLE = no # Audio output on port C6
|
||||
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||
HD44780_ENABLE = no # Enable support for HD44780 based LCDs
|
||||
|
||||
DEFAULT_FOLDER = mechlovin/adelais/standard_led
|
||||
15
keyboards/mechlovin/adelais/standard_led/config.h
Normal file
15
keyboards/mechlovin/adelais/standard_led/config.h
Normal file
@@ -0,0 +1,15 @@
|
||||
#pragma once
|
||||
|
||||
#define PRODUCT_ID 0xAD01
|
||||
#define PRODUCT Adelais
|
||||
#define DESCRIPTION Team.Mechlovin Adelais
|
||||
|
||||
#define BACKLIGHT_PIN B0
|
||||
#define BACKLIGHT_BREATHING
|
||||
#define BACKLIGHT_PWM_DRIVER PWMD3
|
||||
#define BACKLIGHT_PWM_CHANNEL 3
|
||||
|
||||
#define RGB_DI_PIN A7
|
||||
#define RGBLED_NUM 23
|
||||
#define RGBLIGHT_LIMIT_VAL 255
|
||||
#define RGBLIGHT_ANIMATIONS
|
||||
3
keyboards/mechlovin/adelais/standard_led/rules.mk
Normal file
3
keyboards/mechlovin/adelais/standard_led/rules.mk
Normal file
@@ -0,0 +1,3 @@
|
||||
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
||||
BACKLIGHT_DRIVER = pwm
|
||||
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
|
||||
12
keyboards/murcielago/info.json
Normal file
12
keyboards/murcielago/info.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"keyboard_name": "Murciélago",
|
||||
"url": "",
|
||||
"maintainer": "elagil",
|
||||
"width": 16,
|
||||
"height": 10.025,
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [{"label":"0,3", "x":3.5, "y":0.25}, {"label":"6,2", "x":12, "y":0.25}, {"label":"0,2", "x":2.5, "y":0.375}, {"label":"0,4", "x":4.5, "y":0.375}, {"label":"6,1", "x":11, "y":0.375}, {"label":"6,3", "x":13, "y":0.375}, {"label":"0,1", "x":1.5, "y":0.5}, {"label":"0,5", "x":5.5, "y":0.5}, {"label":"6,0", "x":10, "y":0.5}, {"label":"6,4", "x":14, "y":0.5}, {"label":"0,0", "x":0.5, "y":0.675}, {"label":"6,5", "x":15, "y":0.675}, {"label":"1,3", "x":3.5, "y":1.25}, {"label":"7,2", "x":12, "y":1.25}, {"label":"1,2", "x":2.5, "y":1.375}, {"label":"1,4", "x":4.5, "y":1.375}, {"label":"7,1", "x":11, "y":1.375}, {"label":"7,3", "x":13, "y":1.375}, {"label":"1,1", "x":1.5, "y":1.5}, {"label":"1,5", "x":5.5, "y":1.5}, {"label":"7,0", "x":10, "y":1.5}, {"label":"7,4", "x":14, "y":1.5}, {"label":"1,0", "x":0.5, "y":1.675}, {"label":"7,5", "x":15, "y":1.675}, {"label":"2,3", "x":3.5, "y":2.25}, {"label":"8,2", "x":12, "y":2.25}, {"label":"2,2", "x":2.5, "y":2.375}, {"label":"2,4", "x":4.5, "y":2.375}, {"label":"8,1", "x":11, "y":2.375}, {"label":"8,3", "x":13, "y":2.375}, {"label":"2,1", "x":1.5, "y":2.5}, {"label":"2,5", "x":5.5, "y":2.5}, {"label":"8,0", "x":10, "y":2.5}, {"label":"8,4", "x":14, "y":2.5}, {"label":"2,0", "x":0.5, "y":2.675}, {"label":"8,5", "x":15, "y":2.675}, {"label":"3,3", "x":3.5, "y":3.25}, {"label":"9,2", "x":12, "y":3.25}, {"label":"3,2", "x":2.5, "y":3.375}, {"label":"3,4", "x":4.5, "y":3.375}, {"label":"9,1", "x":11, "y":3.375}, {"label":"9,3", "x":13, "y":3.375}, {"label":"3,1", "x":1.5, "y":3.5}, {"label":"3,5", "x":5.5, "y":3.5}, {"label":"5,5", "x":6.5, "y":3.5}, {"label":"11,0", "x":9, "y":3.5}, {"label":"9,0", "x":10, "y":3.5}, {"label":"9,4", "x":14, "y":3.5}, {"label":"3,0", "x":0.5, "y":3.675}, {"label":"9,5", "x":15, "y":3.675}, {"label":"4,2", "x":3.2, "y":4.3}, {"label":"10,3", "x":12.3, "y":4.3}, {"label":"4,3", "x":4.2, "y":4.4}, {"label":"10,2", "x":11.3, "y":4.4}, {"label":"4,1", "x":2.2, "y":4.5}, {"label":"4,5", "x":6.3, "y":4.5, "h":1.5}, {"label":"10,0", "x":9.2, "y":4.5, "h":1.5}, {"label":"10,4", "x":13.3, "y":4.5}, {"label":"4,4", "x":5.2, "y":4.6}, {"label":"10,1", "x":10.3, "y":4.6}]
|
||||
}
|
||||
}
|
||||
}
|
||||
17
keyboards/murcielago/murcielago.c
Normal file
17
keyboards/murcielago/murcielago.c
Normal file
@@ -0,0 +1,17 @@
|
||||
/* Copyright 2020 elagil
|
||||
*
|
||||
* 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 "murcielago.h"
|
||||
49
keyboards/murcielago/murcielago.h
Normal file
49
keyboards/murcielago/murcielago.h
Normal file
@@ -0,0 +1,49 @@
|
||||
/* Copyright 2020 elagil
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
/* This is a shortcut to help you visually see your layout.
|
||||
*
|
||||
* The first section contains all of the arguments representing the physical
|
||||
* layout of the board and position of the keys.
|
||||
*
|
||||
* The second converts the arguments into a two-dimensional array which
|
||||
* represents the switch matrix.k
|
||||
*/
|
||||
|
||||
#define LAYOUT( \
|
||||
L00, L01, L02, L03, L04, L05, R01, R02, R03, R04, R05, R06, \
|
||||
L10, L11, L12, L13, L14, L15, R11, R12, R13, R14, R15, R16, \
|
||||
L20, L21, L22, L23, L24, L25, R21, R22, R23, R24, R25, R26, \
|
||||
L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36, \
|
||||
L41, L42, L43, L44, L45, R41, R42, R43, R44, R45 \
|
||||
) { \
|
||||
{ L00, L01, L02, L03, L04, L05 },\
|
||||
{ L10, L11, L12, L13, L14, L15 },\
|
||||
{ L20, L21, L22, L23, L24, L25 },\
|
||||
{ L30, L31, L32, L33, L34, L35 },\
|
||||
{ KC_NO, L41, L42, L43, L44, L45 },\
|
||||
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, L36 },\
|
||||
{ R01, R02, R03, R04, R05, R06 },\
|
||||
{ R11, R12, R13, R14, R15, R16 },\
|
||||
{ R21, R22, R23, R24, R25, R26 },\
|
||||
{ R31, R32, R33, R34, R35, R36 },\
|
||||
{ R41, R42, R43, R44, R45, KC_NO },\
|
||||
{ R30, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \
|
||||
}
|
||||
12
keyboards/murcielago/readme.md
Normal file
12
keyboards/murcielago/readme.md
Normal file
@@ -0,0 +1,12 @@
|
||||
# Murciélago (the bat)
|
||||
|
||||
The Murciélago is a split ortholinear keyboard with 60 keys in a 6x4 layout + 6 thumb keys (per side). At the upper thumb positions, rotary encoders can be used instead of switches. A single-color backlight may be used as a layer indicator.
|
||||
|
||||
* Keyboard Maintainer: [elagil](https://github.com/elagil)
|
||||
* Hardware Supported: [murcielago](https://github.com/elagil/murcielago)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make murcielago/rev1:default
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
97
keyboards/murcielago/rev1/config.h
Normal file
97
keyboards/murcielago/rev1/config.h
Normal file
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Copyright 2020 elagil
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include "config_common.h"
|
||||
|
||||
/* USB Device descriptor parameter */
|
||||
#define VENDOR_ID 0x6166 // af
|
||||
#define PRODUCT_ID 0x0001
|
||||
#define DEVICE_VER 0x0002
|
||||
#define MANUFACTURER elagil
|
||||
#define PRODUCT Murciélago
|
||||
#define DESCRIPTION A custom keyboard with 60 keys
|
||||
|
||||
/* key matrix size */
|
||||
#define MATRIX_ROWS 12
|
||||
#define MATRIX_COLS 6
|
||||
|
||||
/* split options, use EEPROM for side detection */
|
||||
#define EE_HANDS
|
||||
#define SPLIT_USB_DETECT
|
||||
|
||||
/*
|
||||
* Keyboard Matrix Assignments
|
||||
*
|
||||
* Change this to how you wired your keyboard
|
||||
* COLS: AVR pins used for columns, left to right
|
||||
* ROWS: AVR pins used for rows, top to bottom
|
||||
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
|
||||
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
|
||||
*
|
||||
*/
|
||||
#define MATRIX_ROW_PINS { B4, D5, B3, B2, B1, B0 }
|
||||
#define MATRIX_COL_PINS { C6, B6, B5, D7, D6, D4 }
|
||||
#define MATRIX_ROW_PINS_RIGHT { B3, B7, D4, B6, C6, C7 }
|
||||
#define MATRIX_COL_PINS_RIGHT { D6, D7, D3, B2, B1, B0 }
|
||||
|
||||
#define ENCODERS_PAD_A { F0 }
|
||||
#define ENCODERS_PAD_B { F1 }
|
||||
#define ENCODERS_PAD_A_RIGHT { F6 }
|
||||
#define ENCODERS_PAD_B_RIGHT { F7 }
|
||||
|
||||
#define UNUSED_PINS
|
||||
|
||||
/* COL2ROW, ROW2COL*/
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
/*
|
||||
* Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
|
||||
*/
|
||||
#define SOFT_SERIAL_PIN E6
|
||||
|
||||
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||
#define DEBOUNCE 5
|
||||
|
||||
/* 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
|
||||
|
||||
/*
|
||||
* 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
|
||||
|
||||
/* disable these deprecated features by default */
|
||||
#define NO_ACTION_MACRO
|
||||
#define NO_ACTION_FUNCTION
|
||||
|
||||
/* Bootmagic Lite key configuration */
|
||||
// #define BOOTMAGIC_LITE_ROW 0
|
||||
// #define BOOTMAGIC_LITE_COLUMN 0
|
||||
130
keyboards/murcielago/rev1/keymaps/default/keymap.c
Normal file
130
keyboards/murcielago/rev1/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,130 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
enum layers {
|
||||
BASE,
|
||||
_RAISE,
|
||||
_LOWER,
|
||||
_POWER
|
||||
};
|
||||
|
||||
#define PRE_WRD LCTL(KC_LEFT) // jump to next word
|
||||
#define NXT_WRD LCTL(KC_RGHT) // jump to previous word
|
||||
|
||||
#define NXT_WDL LCTL(KC_DEL) // delete next word
|
||||
#define PRE_WDL LCTL(KC_BSPC) // delete previous word
|
||||
|
||||
#define KC_EURO ALGR(KC_5)
|
||||
#define LA_CAP MT(MOD_LALT, KC_CAPS) // Left alt on hold, caps lock on tap
|
||||
#define RA_ENT MT(MOD_RALT, KC_ENT) // Right alt on hold, enter on tap
|
||||
|
||||
#define RAISE MO(_RAISE) // Raise layer access
|
||||
#define LOWER MO(_LOWER) // Lower layer access
|
||||
#define POWER MO(_POWER) // Power layer access (raise and lower)
|
||||
|
||||
/*
|
||||
* This default keymap is aimed at users of the US international layout
|
||||
*/
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* BASE
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | =+ | 1! | 2@ | 3# | 4$ | 5% | | 6^ | 7& | 8* | 9( | 0) | -_ |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | [{ | Q | W | E | R | T | | Y | U | I | O | P | }] |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Del | A | S | D | F | G | | H | J | K | L | ;: | '" |
|
||||
* |------+------+------+------+------+------+------. ,------+------+------+------+------+------+------|
|
||||
* | Sft | Z | X | C | V | B | GEsc | | Tab | N | M | ,< | .> | /? | Sft |
|
||||
* `------------------------------------------------' `------------------------------------------------'
|
||||
* | LA/CL| LGUI |LOWER | Back | Ctrl | |RA/Ent|Space |RAISE | RGUI | Play |
|
||||
* `----------------------------------' `----------------------------------'
|
||||
*/
|
||||
[BASE] = LAYOUT( /* qwerty */
|
||||
KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
|
||||
KC_LBRC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_RBRC,
|
||||
KC_DEL, 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_GESC, KC_TAB, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
||||
LA_CAP, KC_LGUI, LOWER, KC_BSPC, KC_LCTL, RA_ENT, KC_SPC, RAISE, KC_RGUI, KC_MPLY
|
||||
),
|
||||
|
||||
/* RAISE
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | RST | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | ! | @ | # | $ | % | | |PRE W | UP |NXT W | | F12 |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | | | ( | [ | { | < | | | LEFT | DOWN |RIGHT | | |
|
||||
* |------+------+------+------+------+------+------. ,------+------+------+------+------+------+------|
|
||||
* | | ~ | = | + | \ | | | | | |DEL PW| Ins |DEL NW| | |
|
||||
* `------------------------------------------------' `------------------------------------------------'
|
||||
* | | |POWER | | | | | | | | |
|
||||
* `----------------------------------' `----------------------------------'
|
||||
*/
|
||||
[_RAISE] = LAYOUT( /* raise layer */
|
||||
RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
|
||||
_______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, XXXXXXX, PRE_WRD, KC_UP, NXT_WRD, XXXXXXX, KC_F12,
|
||||
_______, KC_PIPE, KC_LPRN, KC_LBRC, KC_LCBR, KC_LABK, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX,
|
||||
_______, KC_TILD, KC_EQL, KC_PLUS, KC_BSLS, XXXXXXX, _______, _______, XXXXXXX, PRE_WDL, KC_INS, NXT_WDL, XXXXXXX, _______,
|
||||
_______, _______, POWER, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
/* LOWER
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | RST | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | |PRE W | UP |NXT W | | | ^ | & | * | € | ? | F12 |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | | LEFT | DOWN |RIGHT | | | > | } | ] | ) | | | |
|
||||
* |------+------+------+------+------+------+------. ,------+------+------+------+------+------+------|
|
||||
* | | |DEL PW| Ins |DEL NW| | | | | | / | - | _ | ` | |
|
||||
* `------------------------------------------------' `------------------------------------------------'
|
||||
* | | | | | | | | |POWER | | |
|
||||
* `----------------------------------' `----------------------------------'
|
||||
*/
|
||||
[_LOWER] = LAYOUT( /* lower layer */
|
||||
RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
|
||||
_______, XXXXXXX, PRE_WRD, KC_UP, NXT_WRD, XXXXXXX, KC_CIRC, KC_AMPR, KC_ASTR, KC_EURO, KC_QUES, KC_F12,
|
||||
_______, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, KC_RABK, KC_RCBR, KC_RBRC, KC_RPRN, KC_PIPE, XXXXXXX,
|
||||
_______, XXXXXXX, PRE_WDL, KC_INS, NXT_WDL, XXXXXXX, _______, _______, XXXXXXX, KC_SLSH, KC_MINS, KC_UNDS, KC_GRV, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, POWER, _______, _______
|
||||
),
|
||||
|
||||
/* POWER
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | RST | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | ! | @ | # | $ | % | | ^ | & | * | € | ? | F12 |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | | | ( | [ | { | < | | > | } | ] | ) | | | |
|
||||
* |------+------+------+------+------+------+------. ,------+------+------+------+------+------+------|
|
||||
* | | ~ | = | + | \ | | | | | | / | - | _ | ` | |
|
||||
* `------------------------------------------------' `------------------------------------------------'
|
||||
* | | | | | | | | | | | |
|
||||
* `----------------------------------' `----------------------------------'
|
||||
*/
|
||||
[_POWER] = LAYOUT( /* lower and raise combined */
|
||||
RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
|
||||
_______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_EURO, KC_QUES, KC_F12,
|
||||
_______, KC_PIPE, KC_LPRN, KC_LBRC, KC_LCBR, KC_LABK, KC_RABK, KC_RCBR, KC_RBRC, KC_RPRN, KC_PIPE, XXXXXXX,
|
||||
_______, KC_TILD, KC_EQL, KC_PLUS, KC_BSLS, XXXXXXX, _______, _______, XXXXXXX, KC_SLSH, KC_MINS, KC_UNDS, KC_GRV, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
)
|
||||
|
||||
};
|
||||
|
||||
void encoder_update_user(uint8_t index, bool clockwise) {
|
||||
switch (get_highest_layer(layer_state)) {
|
||||
case _RAISE:
|
||||
if (index == 0 || index == 1) { /* Left or right encoder */
|
||||
// Next/previous track
|
||||
clockwise ? tap_code(KC_MNXT) : tap_code(KC_MPRV);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
if (index == 0 || index == 1) { /* Left or right encoder */
|
||||
// Volume up or down
|
||||
clockwise ? tap_code(KC_VOLU) : tap_code(KC_VOLD);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
130
keyboards/murcielago/rev1/keymaps/via/keymap.c
Normal file
130
keyboards/murcielago/rev1/keymaps/via/keymap.c
Normal file
@@ -0,0 +1,130 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
enum layers {
|
||||
BASE,
|
||||
_RAISE,
|
||||
_LOWER,
|
||||
_POWER
|
||||
};
|
||||
|
||||
#define PRE_WRD LCTL(KC_LEFT) // jump to next word
|
||||
#define NXT_WRD LCTL(KC_RGHT) // jump to previous word
|
||||
|
||||
#define NXT_WDL LCTL(KC_DEL) // delete next word
|
||||
#define PRE_WDL LCTL(KC_BSPC) // delete previous word
|
||||
|
||||
#define KC_EURO ALGR(KC_5)
|
||||
#define LA_CAP MT(MOD_LALT, KC_CAPS) // Left alt on hold, caps lock on tap
|
||||
#define RA_ENT MT(MOD_RALT, KC_ENT) // Right alt on hold, enter on tap
|
||||
|
||||
#define RAISE MO(_RAISE) // Raise layer access
|
||||
#define LOWER MO(_LOWER) // Lower layer access
|
||||
#define POWER MO(_POWER) // Power layer access (raise and lower)
|
||||
|
||||
/*
|
||||
* This default keymap is aimed at users of the US international layout
|
||||
*/
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* BASE
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | =+ | 1! | 2@ | 3# | 4$ | 5% | | 6^ | 7& | 8* | 9( | 0) | -_ |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | [{ | Q | W | E | R | T | | Y | U | I | O | P | }] |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Del | A | S | D | F | G | | H | J | K | L | ;: | '" |
|
||||
* |------+------+------+------+------+------+------. ,------+------+------+------+------+------+------|
|
||||
* | Sft | Z | X | C | V | B | GEsc | | Tab | N | M | ,< | .> | /? | Sft |
|
||||
* `------------------------------------------------' `------------------------------------------------'
|
||||
* | LA/CL| LGUI |LOWER | Back | Ctrl | |RA/Ent|Space |RAISE | RGUI | Play |
|
||||
* `----------------------------------' `----------------------------------'
|
||||
*/
|
||||
[BASE] = LAYOUT( /* qwerty */
|
||||
KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
|
||||
KC_LBRC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_RBRC,
|
||||
KC_DEL, 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_GESC, KC_TAB, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
||||
LA_CAP, KC_LGUI, LOWER, KC_BSPC, KC_LCTL, RA_ENT, KC_SPC, RAISE, KC_RGUI, KC_MPLY
|
||||
),
|
||||
|
||||
/* RAISE
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | RST | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | ! | @ | # | $ | % | | |PRE W | UP |NXT W | | F12 |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | | | ( | [ | { | < | | | LEFT | DOWN |RIGHT | | |
|
||||
* |------+------+------+------+------+------+------. ,------+------+------+------+------+------+------|
|
||||
* | | ~ | = | + | \ | | | | | |DEL PW| Ins |DEL NW| | |
|
||||
* `------------------------------------------------' `------------------------------------------------'
|
||||
* | | |POWER | | | | | | | | |
|
||||
* `----------------------------------' `----------------------------------'
|
||||
*/
|
||||
[_RAISE] = LAYOUT( /* raise layer */
|
||||
RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
|
||||
_______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, XXXXXXX, PRE_WRD, KC_UP, NXT_WRD, XXXXXXX, KC_F12,
|
||||
_______, KC_PIPE, KC_LPRN, KC_LBRC, KC_LCBR, KC_LABK, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX,
|
||||
_______, KC_TILD, KC_EQL, KC_PLUS, KC_BSLS, XXXXXXX, _______, _______, XXXXXXX, PRE_WDL, KC_INS, NXT_WDL, XXXXXXX, _______,
|
||||
_______, _______, POWER, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
/* LOWER
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | RST | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | |PRE W | UP |NXT W | | | ^ | & | * | € | ? | F12 |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | | LEFT | DOWN |RIGHT | | | > | } | ] | ) | | | |
|
||||
* |------+------+------+------+------+------+------. ,------+------+------+------+------+------+------|
|
||||
* | | |DEL PW| Ins |DEL NW| | | | | | / | - | _ | ` | |
|
||||
* `------------------------------------------------' `------------------------------------------------'
|
||||
* | | | | | | | | |POWER | | |
|
||||
* `----------------------------------' `----------------------------------'
|
||||
*/
|
||||
[_LOWER] = LAYOUT( /* lower layer */
|
||||
RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
|
||||
_______, XXXXXXX, PRE_WRD, KC_UP, NXT_WRD, XXXXXXX, KC_CIRC, KC_AMPR, KC_ASTR, KC_EURO, KC_QUES, KC_F12,
|
||||
_______, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, KC_RABK, KC_RCBR, KC_RBRC, KC_RPRN, KC_PIPE, XXXXXXX,
|
||||
_______, XXXXXXX, PRE_WDL, KC_INS, NXT_WDL, XXXXXXX, _______, _______, XXXXXXX, KC_SLSH, KC_MINS, KC_UNDS, KC_GRV, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, POWER, _______, _______
|
||||
),
|
||||
|
||||
/* POWER
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | RST | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | ! | @ | # | $ | % | | ^ | & | * | € | ? | F12 |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | | | ( | [ | { | < | | > | } | ] | ) | | | |
|
||||
* |------+------+------+------+------+------+------. ,------+------+------+------+------+------+------|
|
||||
* | | ~ | = | + | \ | | | | | | / | - | _ | ` | |
|
||||
* `------------------------------------------------' `------------------------------------------------'
|
||||
* | | | | | | | | | | | |
|
||||
* `----------------------------------' `----------------------------------'
|
||||
*/
|
||||
[_POWER] = LAYOUT( /* lower and raise combined */
|
||||
RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
|
||||
_______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_EURO, KC_QUES, KC_F12,
|
||||
_______, KC_PIPE, KC_LPRN, KC_LBRC, KC_LCBR, KC_LABK, KC_RABK, KC_RCBR, KC_RBRC, KC_RPRN, KC_PIPE, XXXXXXX,
|
||||
_______, KC_TILD, KC_EQL, KC_PLUS, KC_BSLS, XXXXXXX, _______, _______, XXXXXXX, KC_SLSH, KC_MINS, KC_UNDS, KC_GRV, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
)
|
||||
|
||||
};
|
||||
|
||||
void encoder_update_user(uint8_t index, bool clockwise) {
|
||||
switch (get_highest_layer(layer_state)) {
|
||||
case _RAISE:
|
||||
if (index == 0 || index == 1) { /* Left or right encoder */
|
||||
// Next/previous track
|
||||
clockwise ? tap_code(KC_MNXT) : tap_code(KC_MPRV);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
if (index == 0 || index == 1) { /* Left or right encoder */
|
||||
// Volume up or down
|
||||
clockwise ? tap_code(KC_VOLU) : tap_code(KC_VOLD);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
1
keyboards/murcielago/rev1/keymaps/via/rules.mk
Normal file
1
keyboards/murcielago/rev1/keymaps/via/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
VIA_ENABLE = yes
|
||||
34
keyboards/murcielago/rev1/rules.mk
Normal file
34
keyboards/murcielago/rev1/rules.mk
Normal file
@@ -0,0 +1,34 @@
|
||||
# MCU name
|
||||
MCU = atmega32u4
|
||||
|
||||
# Bootloader selection
|
||||
# Teensy halfkay
|
||||
# Pro Micro caterina
|
||||
# Atmel DFU atmel-dfu
|
||||
# LUFA DFU lufa-dfu
|
||||
# QMK DFU qmk-dfu
|
||||
# ATmega32A bootloadHID
|
||||
# ATmega328P USBasp
|
||||
BOOTLOADER = atmel-dfu
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
CONSOLE_ENABLE = no # Console for debug
|
||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
NKRO_ENABLE = no # USB Nkey Rollover
|
||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||
MIDI_ENABLE = no # MIDI support
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
AUDIO_ENABLE = no # Audio output on port C6
|
||||
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||
HD44780_ENABLE = no # Enable support for HD44780 based LCDs
|
||||
SPLIT_KEYBOARD = yes # Enable split keyboard mode
|
||||
ENCODER_ENABLE = yes
|
||||
1
keyboards/murcielago/rules.mk
Normal file
1
keyboards/murcielago/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
DEFAULT_FOLDER = murcielago/rev1
|
||||
27
keyboards/pabile/p18/config.h
Normal file
27
keyboards/pabile/p18/config.h
Normal file
@@ -0,0 +1,27 @@
|
||||
#pragma once
|
||||
|
||||
#include "config_common.h"
|
||||
|
||||
/* USB Device descriptor parameter */
|
||||
#define VENDOR_ID 0x6666
|
||||
#define PRODUCT_ID 0x6668
|
||||
#define DEVICE_VER 0x0001
|
||||
#define MANUFACTURER Pabile
|
||||
#define PRODUCT P18 Macro Pad
|
||||
#define DESCRIPTION An 18-key DIY macropad kit
|
||||
|
||||
/* key matrix size */
|
||||
#define MATRIX_ROWS 4
|
||||
#define MATRIX_COLS 5
|
||||
|
||||
/* pin-out for PROMICRO */
|
||||
#define MATRIX_ROW_PINS { D1, D0, D4, C6 }
|
||||
#define MATRIX_COL_PINS { D2, D7, E6, B4, B5 }
|
||||
#define UNUSED_PINS
|
||||
|
||||
/* Encoder position for PROMICRO */
|
||||
#define ENCODERS_PAD_A { B6, F6 }
|
||||
#define ENCODERS_PAD_B { F4, F5 }
|
||||
|
||||
/* COL2ROW or ROW2COL */
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
31
keyboards/pabile/p18/info.json
Normal file
31
keyboards/pabile/p18/info.json
Normal file
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"keyboard_name": "Pabile 18",
|
||||
"url": "https://pabileonline.blogspot.com/",
|
||||
"maintainer": "Pabile",
|
||||
"width": 5.25,
|
||||
"height": 4,
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"x":1.25, "y":0},
|
||||
{"x":2.25, "y":0},
|
||||
{"x":3.25, "y":0},
|
||||
{"x":4.25, "y":0},
|
||||
{"x":1.25, "y":1},
|
||||
{"x":2.25, "y":1},
|
||||
{"x":3.25, "y":1},
|
||||
{"x":4.25, "y":1},
|
||||
{"x":0, "y":2},
|
||||
{"x":1.25, "y":2},
|
||||
{"x":2.25, "y":2},
|
||||
{"x":3.25, "y":2},
|
||||
{"x":4.25, "y":2},
|
||||
{"x":0, "y":3},
|
||||
{"x":1.25, "y":3},
|
||||
{"x":2.25, "y":3},
|
||||
{"x":3.25, "y":3},
|
||||
{"x":4.25, "y":3}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
27
keyboards/pabile/p18/keymaps/default/keymap.c
Normal file
27
keyboards/pabile/p18/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,27 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT(
|
||||
KC_P7, KC_P8, KC_P9, KC_PMNS,
|
||||
KC_P4, KC_P5, KC_P6, KC_PPLS,
|
||||
KC_MUTE, KC_P1, KC_P2, KC_P3, KC_TAB,
|
||||
KC_ESC, KC_DEL, KC_P0, KC_PDOT, KC_PENT
|
||||
)
|
||||
|
||||
};
|
||||
|
||||
void encoder_update_user(uint8_t index, bool clockwise) {
|
||||
if (index == 0) { /* First encoder below the controller */
|
||||
if (clockwise) {
|
||||
tap_code(KC_VOLD); /*volume down*/
|
||||
} else {
|
||||
tap_code(KC_VOLU); /*volume up*/
|
||||
}
|
||||
} else if (index == 1) { /* Second encoder */
|
||||
if (clockwise) {
|
||||
tap_code(KC_WH_U); /*mouse wheel up*/
|
||||
} else {
|
||||
tap_code(KC_WH_D); /*mouse wheel down*/
|
||||
}
|
||||
}
|
||||
}
|
||||
1
keyboards/pabile/p18/p18.c
Normal file
1
keyboards/pabile/p18/p18.c
Normal file
@@ -0,0 +1 @@
|
||||
#include "p18.h"
|
||||
16
keyboards/pabile/p18/p18.h
Normal file
16
keyboards/pabile/p18/p18.h
Normal file
@@ -0,0 +1,16 @@
|
||||
#pragma once
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
#define LAYOUT( \
|
||||
k01, k02, k03, k04, \
|
||||
k11, k12, k13, k14, \
|
||||
k20, k21, k22, k23, k24, \
|
||||
k30, k31, k32, k33, k34 \
|
||||
) \
|
||||
{ \
|
||||
{KC_NO, k04, k03, k02, k01}, \
|
||||
{KC_NO, k14, k13, k12, k11}, \
|
||||
{k20, k24, k23, k22, k21}, \
|
||||
{k30, k34, k33, k32, k31} \
|
||||
}
|
||||
15
keyboards/pabile/p18/readme.md
Normal file
15
keyboards/pabile/p18/readme.md
Normal file
@@ -0,0 +1,15 @@
|
||||
# P18
|
||||
|
||||

|
||||
|
||||
A 18-key DIY Hotswap Macropad that accepts both Pro Micro and Adafruit Feather 32u4 Bluefruit LE.
|
||||
|
||||
* Keyboard Maintainer: [pabile](https://github.com/pabile)
|
||||
* Hardware Supported: Pabile P18 PCB with Pro Micro or Adafruit Feather 32u4 Bluefruit LE
|
||||
* Hardware Availability: [Info at pabileonline.blogspot.com](https://pabileonline.blogspot.com/search/label/pabile18)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make pabile/p18:default
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
35
keyboards/pabile/p18/rules.mk
Normal file
35
keyboards/pabile/p18/rules.mk
Normal file
@@ -0,0 +1,35 @@
|
||||
# MCU name
|
||||
MCU = atmega32u4
|
||||
|
||||
# Bootloader selection
|
||||
# Teensy halfkay
|
||||
# Pro Micro caterina
|
||||
# Atmel DFU atmel-dfu
|
||||
# LUFA DFU lufa-dfu
|
||||
# QMK DFU qmk-dfu
|
||||
# ATmega32A bootloadHID
|
||||
# ATmega328P USBasp
|
||||
BOOTLOADER = caterina
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
CONSOLE_ENABLE = no # Console for debug
|
||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
NKRO_ENABLE = no # USB Nkey Rollover
|
||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||
MIDI_ENABLE = no # MIDI support
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
AUDIO_ENABLE = no # Audio output on port C6
|
||||
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||
HD44780_ENABLE = no # Enable support for HD44780 based LCDs
|
||||
UNICODE_ENABLE = yes # Unicode
|
||||
IOS_DEVICE_ENABLE = no # connect to IOS Device
|
||||
ENCODER_ENABLE = yes
|
||||
26
keyboards/pabile/p20/config.h
Normal file
26
keyboards/pabile/p20/config.h
Normal file
@@ -0,0 +1,26 @@
|
||||
#pragma once
|
||||
|
||||
#include "config_common.h"
|
||||
|
||||
/* USB Device descriptor parameter */
|
||||
#define VENDOR_ID 0x6666
|
||||
#define PRODUCT_ID 0x6667
|
||||
#define DEVICE_VER 0x0001
|
||||
#define MANUFACTURER Pabile
|
||||
#define PRODUCT P20
|
||||
#define DESCRIPTION 5x4 Macropad
|
||||
|
||||
/* key matrix size */
|
||||
#define MATRIX_ROWS 5
|
||||
#define MATRIX_COLS 4
|
||||
|
||||
/* pin-out */
|
||||
#define MATRIX_ROW_PINS { B3, B4, B5, D7, E6 }
|
||||
#define MATRIX_COL_PINS { D0, B2, D4, B6 }
|
||||
#define UNUSED_PINS
|
||||
|
||||
#define ENCODERS_PAD_A { F5, F7 }
|
||||
#define ENCODERS_PAD_B { F6, B1 }
|
||||
|
||||
/* COL2ROW or ROW2COL */
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
38
keyboards/pabile/p20/keymaps/default/keymap.c
Normal file
38
keyboards/pabile/p20/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,38 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_ortho_5x4(
|
||||
KC_PSLS, KC_PMNS, KC_PAST, KC_MPLY,
|
||||
KC_P7, KC_P8, KC_P9, KC_PMNS,
|
||||
KC_P4, KC_P5, KC_P6, KC_PPLS,
|
||||
KC_P1, KC_P2, KC_P3, KC_TAB,
|
||||
LT(2,KC_P0), KC_PCMM, KC_PDOT, LT(1,KC_PENT)),
|
||||
[1] = LAYOUT_ortho_5x4(
|
||||
KC_NLCK, KC_UNDS, KC_NO, KC_NO,
|
||||
KC_AMPR, KC_ASTR, KC_LPRN, KC_EQL,
|
||||
KC_DLR, KC_PERC, KC_CIRC, KC_NO,
|
||||
KC_EXLM, KC_AT, KC_HASH, KC_NO,
|
||||
KC_RPRN, KC_NO, KC_PSLS, KC_NO),
|
||||
[2] = LAYOUT_ortho_5x4(
|
||||
KC_NLCK, KC_NO, KC_NO, KC_NO,
|
||||
KC_BTN1, KC_MS_U, KC_BTN2, KC_NO,
|
||||
KC_MS_L, KC_MS_D, KC_MS_R, KC_TAB,
|
||||
KC_WH_U, KC_NO, KC_WH_D, KC_NO,
|
||||
KC_NO, KC_NO, KC_DEL, KC_ESC)
|
||||
};
|
||||
|
||||
void encoder_update_user(uint8_t index, bool clockwise) {
|
||||
if (index == 0) { /* First encoder */
|
||||
if (clockwise) {
|
||||
tap_code(KC_WH_U); /*mouse wheel up*/
|
||||
} else {
|
||||
tap_code(KC_WH_D); /*mouse wheel down */
|
||||
}
|
||||
} else if (index == 1) { /* Second encoder */
|
||||
if (clockwise) {
|
||||
tap_code(KC_VOLD); /*volume down*/
|
||||
} else {
|
||||
tap_code(KC_VOLU); /*volume up*/
|
||||
}
|
||||
}
|
||||
}
|
||||
1
keyboards/pabile/p20/p20.c
Normal file
1
keyboards/pabile/p20/p20.c
Normal file
@@ -0,0 +1 @@
|
||||
#include "p20.h"
|
||||
18
keyboards/pabile/p20/p20.h
Normal file
18
keyboards/pabile/p20/p20.h
Normal file
@@ -0,0 +1,18 @@
|
||||
#pragma once
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
#define LAYOUT_ortho_5x4( \
|
||||
k00, k01, k02, k03, \
|
||||
k10, k11, k12, k13, \
|
||||
k20, k21, k22, k23, \
|
||||
k30, k31, k32, k33, \
|
||||
k40, k41, k42, k43 \
|
||||
) \
|
||||
{ \
|
||||
{k00, k01, k02, k03}, \
|
||||
{k10, k11, k12, k13}, \
|
||||
{k20, k21, k22, k23}, \
|
||||
{k30, k31, k32, k33}, \
|
||||
{k40, k41, k42, k43} \
|
||||
}
|
||||
16
keyboards/pabile/p20/readme.md
Normal file
16
keyboards/pabile/p20/readme.md
Normal file
@@ -0,0 +1,16 @@
|
||||
# P20
|
||||
|
||||

|
||||

|
||||
|
||||
A 5x4 grid keyboard with 2 rotary encoders.
|
||||
|
||||
* Keyboard Maintainer: [pabile](https://github.com/pabile)
|
||||
* Hardware Supported: Pabile P20 PCB, Pro Micro
|
||||
* Hardware Availability: [Info at pabileonline.blogspot.com](https://pabileonline.blogspot.com/search/label/pabile20)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make pabile/p20:default
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
37
keyboards/pabile/p20/rules.mk
Normal file
37
keyboards/pabile/p20/rules.mk
Normal file
@@ -0,0 +1,37 @@
|
||||
# MCU name
|
||||
MCU = atmega32u4
|
||||
|
||||
# Bootloader selection
|
||||
# Teensy halfkay
|
||||
# Pro Micro caterina
|
||||
# Atmel DFU atmel-dfu
|
||||
# LUFA DFU lufa-dfu
|
||||
# QMK DFU qmk-dfu
|
||||
# ATmega32A bootloadHID
|
||||
# ATmega328P USBasp
|
||||
BOOTLOADER = caterina
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
CONSOLE_ENABLE = no # Console for debug
|
||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
NKRO_ENABLE = no # USB Nkey Rollover
|
||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||
MIDI_ENABLE = no # MIDI support
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
AUDIO_ENABLE = no # Audio output on port C6
|
||||
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||
HD44780_ENABLE = no # Enable support for HD44780 based LCDs
|
||||
UNICODE_ENABLE = yes # Unicode
|
||||
IOS_DEVICE_ENABLE = no # connect to IOS Device
|
||||
ENCODER_ENABLE = yes
|
||||
|
||||
LAYOUTS = ortho_5x4
|
||||
29
keyboards/pabile/p40/config.h
Normal file
29
keyboards/pabile/p40/config.h
Normal file
@@ -0,0 +1,29 @@
|
||||
#pragma once
|
||||
|
||||
#include "config_common.h"
|
||||
|
||||
/* USB Device descriptor parameter */
|
||||
#define VENDOR_ID 0x6666
|
||||
#define PRODUCT_ID 0x6666
|
||||
#define DEVICE_VER 0x0001
|
||||
#define MANUFACTURER Pabile
|
||||
#define PRODUCT P40 Keyboard
|
||||
#define DESCRIPTION 4x10 staggered keyboard
|
||||
|
||||
/* key matrix size */
|
||||
#define MATRIX_ROWS 4
|
||||
#define MATRIX_COLS 10
|
||||
|
||||
/* pin-out
|
||||
for PCB ver0.01 452019 */
|
||||
#define MATRIX_ROW_PINS { F6, B3, B2, B6 }
|
||||
#define MATRIX_COL_PINS { F4, F5, B5, B4, E6, D7, C6, D4, D0, D1 }
|
||||
/*
|
||||
for pro micro facing back of pcb
|
||||
#define MATRIX_ROW_PINS { D4, E6, B4, B5 }
|
||||
#define MATRIX_COL_PINS { D1, D0, B6, B2, B3, B1, F7, F6, F5, F4 }
|
||||
*/
|
||||
#define UNUSED_PINS
|
||||
|
||||
/* COL2ROW or ROW2COL */
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
52
keyboards/pabile/p40/info.json
Normal file
52
keyboards/pabile/p40/info.json
Normal file
@@ -0,0 +1,52 @@
|
||||
{
|
||||
"keyboard_name": "Pabile 40",
|
||||
"url": "https://pabileonline.blogspot.com/",
|
||||
"maintainer": "Pabile",
|
||||
"width": 10.75,
|
||||
"height": 4,
|
||||
"layouts": {
|
||||
"LAYOUT_ortho_4x10": {
|
||||
"layout": [
|
||||
{"x":0, "y":0},
|
||||
{"x":1, "y":0},
|
||||
{"x":2, "y":0},
|
||||
{"x":3, "y":0},
|
||||
{"x":4, "y":0},
|
||||
{"x":5, "y":0},
|
||||
{"x":6, "y":0},
|
||||
{"x":7, "y":0},
|
||||
{"x":8, "y":0},
|
||||
{"x":9, "y":0},
|
||||
{"x":0.25, "y":1},
|
||||
{"x":1.25, "y":1},
|
||||
{"x":2.25, "y":1},
|
||||
{"x":3.25, "y":1},
|
||||
{"x":4.25, "y":1},
|
||||
{"x":5.25, "y":1},
|
||||
{"x":6.25, "y":1},
|
||||
{"x":7.25, "y":1},
|
||||
{"x":8.25, "y":1},
|
||||
{"x":9.25, "y":1},
|
||||
{"x":0.5, "y":2},
|
||||
{"x":1.5, "y":2},
|
||||
{"x":2.5, "y":2},
|
||||
{"x":3.5, "y":2},
|
||||
{"x":4.5, "y":2},
|
||||
{"x":5.5, "y":2},
|
||||
{"x":6.5, "y":2},
|
||||
{"x":7.5, "y":2},
|
||||
{"x":8.5, "y":2},
|
||||
{"x":9.5, "y":2},
|
||||
{"x":0.75, "y":3},
|
||||
{"x":1.75, "y":3},
|
||||
{"x":2.75, "y":3},
|
||||
{"x":3.75, "y":3},
|
||||
{"x":4.75, "y":3},
|
||||
{"x":5.75, "y":3},
|
||||
{"x":6.75, "y":3},
|
||||
{"x":7.75, "y":3},
|
||||
{"x":8.75, "y":3},
|
||||
{"x":9.75, "y":3}]
|
||||
}
|
||||
}
|
||||
}
|
||||
29
keyboards/pabile/p40/keymaps/default/keymap.c
Normal file
29
keyboards/pabile/p40/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,29 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_ortho_4x10(
|
||||
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
|
||||
KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, LT(3,KC_MINS),
|
||||
KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, LT(4,KC_SLSH),
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_LSFT, LT(2,KC_BSPC), LT(1,KC_SPC), KC_ENT, KC_APP, KC_DEL, KC_ESC),
|
||||
[1] = LAYOUT_ortho_4x10(
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
|
||||
KC_TAB, KC_NO, KC_NO, KC_GRV, KC_LBRC, KC_RBRC, KC_BSLS, KC_SCLN, KC_QUOT, KC_MINS,
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_EQL, KC_MINS, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
|
||||
[2] = LAYOUT_ortho_4x10(
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
|
||||
KC_TAB, KC_F11, KC_F12, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
KC_CAPS, KC_PSCR, KC_SLCK, KC_PAUS, KC_NO, KC_NLCK, KC_NO, KC_VOLD, KC_VOLU, KC_MUTE,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO),
|
||||
[3] = LAYOUT_ortho_4x10(
|
||||
KC_ESC, KC_NO, KC_NO, KC_NO, KC_NO, KC_INS, KC_PGUP, KC_UP, KC_PGDN, KC_DEL,
|
||||
KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO,
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_END, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSPC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO),
|
||||
[4] = LAYOUT_ortho_4x10(
|
||||
KC_ESC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_BTN1, KC_MS_U, KC_BTN2, KC_DEL,
|
||||
KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_WH_U, KC_MS_L, KC_MS_D, KC_MS_R, KC_NO,
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_WH_D, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSPC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO)
|
||||
};
|
||||
1
keyboards/pabile/p40/p40.c
Normal file
1
keyboards/pabile/p40/p40.c
Normal file
@@ -0,0 +1 @@
|
||||
#include "p40.h"
|
||||
16
keyboards/pabile/p40/p40.h
Normal file
16
keyboards/pabile/p40/p40.h
Normal file
@@ -0,0 +1,16 @@
|
||||
#pragma once
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
#define LAYOUT_ortho_4x10( \
|
||||
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, \
|
||||
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39 \
|
||||
) \
|
||||
{ \
|
||||
{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}, \
|
||||
{k30, k31, k32, k33, k34, k35, k36, k37, k38, k39} \
|
||||
}
|
||||
15
keyboards/pabile/p40/readme.md
Normal file
15
keyboards/pabile/p40/readme.md
Normal file
@@ -0,0 +1,15 @@
|
||||
# P40
|
||||
|
||||

|
||||
|
||||
A compact 4x10 (40%) staggered DIY keyboard kit.
|
||||
|
||||
* Keyboard Maintainer: [pabile](https://github.com/pabile)
|
||||
* Hardware Supported: Pabile P40 PCB, Pro Micro
|
||||
* Hardware Availability: [Info at pabileonline.blogspot.com](https://pabileonline.blogspot.com/search/label/pabile40)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make pabile/p40:default
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
36
keyboards/pabile/p40/rules.mk
Normal file
36
keyboards/pabile/p40/rules.mk
Normal file
@@ -0,0 +1,36 @@
|
||||
# MCU name
|
||||
MCU = atmega32u4
|
||||
|
||||
# Bootloader selection
|
||||
# Teensy halfkay
|
||||
# Pro Micro caterina
|
||||
# Atmel DFU atmel-dfu
|
||||
# LUFA DFU lufa-dfu
|
||||
# QMK DFU qmk-dfu
|
||||
# ATmega32A bootloadHID
|
||||
# ATmega328P USBasp
|
||||
BOOTLOADER = caterina
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
CONSOLE_ENABLE = no # Console for debug
|
||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
NKRO_ENABLE = yes # USB Nkey Rollover
|
||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||
MIDI_ENABLE = no # MIDI controls
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
AUDIO_ENABLE = no # Audio output on port C6
|
||||
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||
HD44780_ENABLE = no # Enable support for HD44780 based LCDs
|
||||
UNICODE_ENABLE = yes # Unicode
|
||||
IOS_DEVICE_ENABLE = no # connect to IOS Device
|
||||
|
||||
LAYOUTS = ortho_4x10
|
||||
@@ -2,13 +2,15 @@
|
||||
|
||||
enum layer_names { _QWERTY, _COLEMAK, _DVORAK, _LOWER, _RAISE, _ADJUST };
|
||||
|
||||
enum custom_keycodes { QWERTY = SAFE_RANGE, COLEMAK, DVORAK, LOWER, RAISE, ADJUST };
|
||||
enum custom_keycodes { QWERTY = SAFE_RANGE, COLEMAK, DVORAK, ADJUST };
|
||||
|
||||
// Aliases to keep the keymap tidy
|
||||
#define GUIBSPC GUI_T(KC_BSPC) // GUI when held, BSPC when tapped.
|
||||
#define RGB_SWR RGB_M_SW // Swirl Animation alias
|
||||
#define RGB_SNK RGB_M_SN // Snake Animation alias
|
||||
#define MACLOCK LGUI(LCTL(KC_Q)) // Lock my MacBook!
|
||||
#define RAISE MO(_RAISE)
|
||||
#define LOWER MO(_LOWER)
|
||||
|
||||
// clang-format off
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* Copyright 2016 Didier Loiseau
|
||||
/* Copyright 2020
|
||||
*
|
||||
* 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
|
||||
@@ -13,247 +13,421 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#ifndef KEYMAP_CANADIAN_MULTILINGUAL_H
|
||||
#define KEYMAP_CANADIAN_MULTILINGUAL_H
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "keymap.h"
|
||||
|
||||
#ifndef GR2A
|
||||
# define GR2A(kc) RCTL(kc)
|
||||
#endif
|
||||
// clang-format off
|
||||
|
||||
// Normal characters
|
||||
// First row
|
||||
#define CSA_SLASH KC_GRV // /
|
||||
#define CSA_SLSH CSA_SLASH
|
||||
/*
|
||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||
* │ / │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ │
|
||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||
* │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ ^ │ Ç │ │
|
||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||
* │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ È │ À │ │
|
||||
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||
* │ │ Ù │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ É │ │
|
||||
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||
* │ │ │ │ │ │ │ │ │
|
||||
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||
*/
|
||||
// Row 1
|
||||
#define CA_SLSH KC_GRV // /
|
||||
#define CA_1 KC_1 // 1
|
||||
#define CA_2 KC_2 // 2
|
||||
#define CA_3 KC_3 // 3
|
||||
#define CA_4 KC_4 // 4
|
||||
#define CA_5 KC_5 // 5
|
||||
#define CA_6 KC_6 // 6
|
||||
#define CA_7 KC_7 // 7
|
||||
#define CA_8 KC_8 // 8
|
||||
#define CA_9 KC_9 // 9
|
||||
#define CA_0 KC_0 // 0
|
||||
#define CA_MINS KC_MINS // -
|
||||
#define CA_EQL KC_EQL // =
|
||||
// Row 2
|
||||
#define CA_Q KC_Q // Q
|
||||
#define CA_W KC_W // W
|
||||
#define CA_E KC_E // E
|
||||
#define CA_R KC_R // R
|
||||
#define CA_T KC_T // T
|
||||
#define CA_Y KC_Y // Y
|
||||
#define CA_U KC_U // U
|
||||
#define CA_I KC_I // I
|
||||
#define CA_O KC_O // O
|
||||
#define CA_P KC_P // P
|
||||
#define CA_CIRC KC_LBRC // ^ (dead)
|
||||
#define CA_CCED KC_RBRC // Ç
|
||||
// Row 3
|
||||
#define CA_A KC_A // A
|
||||
#define CA_S KC_S // S
|
||||
#define CA_D KC_D // D
|
||||
#define CA_F KC_F // F
|
||||
#define CA_G KC_G // G
|
||||
#define CA_H KC_H // H
|
||||
#define CA_J KC_J // J
|
||||
#define CA_K KC_K // K
|
||||
#define CA_L KC_L // L
|
||||
#define CA_SCLN KC_SCLN // ;
|
||||
#define CA_EGRV KC_QUOT // É
|
||||
#define CA_AGRV KC_NUHS // À
|
||||
// Row 4
|
||||
#define CA_UGRV KC_NUBS // Ù
|
||||
#define CA_Z KC_Z // Z
|
||||
#define CA_X KC_X // X
|
||||
#define CA_C KC_C // C
|
||||
#define CA_V KC_V // V
|
||||
#define CA_B KC_B // B
|
||||
#define CA_N KC_N // N
|
||||
#define CA_M KC_M // M
|
||||
#define CA_COMM KC_COMM // ,
|
||||
#define CA_DOT KC_DOT // .
|
||||
#define CA_EACU KC_SLSH // É
|
||||
|
||||
// Second row
|
||||
#define CSA_DEAD_CIRCUMFLEX KC_LBRACKET // dead ^
|
||||
#define CSA_DCRC CSA_DEAD_CIRCUMFLEX
|
||||
#define CSA_C_CEDILLA KC_RBRACKET // Ç
|
||||
#define CSA_CCED CSA_C_CEDILLA
|
||||
/* Shifted symbols
|
||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||
* │ \ │ ! │ @ │ # │ $ │ % │ ? │ & │ * │ ( │ ) │ _ │ + │ │
|
||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │ ¨ │ │ │
|
||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||
* │ │ │ │ │ │ │ │ │ │ │ : │ │ │ │
|
||||
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||
* │ │ │ │ │ │ │ │ │ │ ' │ " │ │ │
|
||||
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||
* │ │ │ │ │ │ │ │ │
|
||||
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||
*/
|
||||
// Row 1
|
||||
#define CA_BSLS S(CA_SLSH) // (backslash)
|
||||
#define CA_EXLM S(CA_1) // !
|
||||
#define CA_AT S(CA_2) // @
|
||||
#define CA_HASH S(CA_3) // #
|
||||
#define CA_DLR S(CA_4) // $
|
||||
#define CA_PERC S(CA_5) // %
|
||||
#define CA_QUES S(CA_6) // ?
|
||||
#define CA_AMPR S(CA_7) // &
|
||||
#define CA_ASTR S(CA_8) // *
|
||||
#define CA_LPRN S(CA_9) // (
|
||||
#define CA_RPRN S(CA_0) // )
|
||||
#define CA_UNDS S(CA_MINS) // _
|
||||
#define CA_PLUS S(CA_EQL) // +
|
||||
// Row 2
|
||||
#define CA_DIAE S(CA_CIRC) // ¨ (dead)
|
||||
// Row 3
|
||||
#define CA_COLN S(CA_SCLN) // :
|
||||
// Row 4
|
||||
#define CA_QUOT S(CA_COMM) // '
|
||||
#define CA_DQUO S(CA_DOT) // "
|
||||
|
||||
// Third row
|
||||
#define CSA_E_GRAVE KC_QUOT // è
|
||||
#define CSA_EGRV CSA_E_GRAVE
|
||||
#define CSA_A_GRAVE KC_BSLASH // à
|
||||
#define CSA_AGRV CSA_A_GRAVE
|
||||
/* AltGr symbols
|
||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||
* │ | │ │ │ │ ¤ │ │ │ { │ } │ [ │ ] │ │ ¬ │ │
|
||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||
* │ │ │ │ € │ │ │ │ │ │ │ │ ` │ ~ │ │
|
||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||
* │ │ │ │ │ │ │ │ │ │ │ ° │ │ │ │
|
||||
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||
* │ │ │ « │ » │ │ │ │ │ │ < │ > │ │ │
|
||||
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||
* │ │ │ │ │ │ │ │ │
|
||||
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||
*/
|
||||
// Row 1
|
||||
#define CA_PIPE ALGR(CA_SLSH) // |
|
||||
#define CA_CURR ALGR(CA_4) // ¤
|
||||
#define CA_LCBR ALGR(CA_7) // {
|
||||
#define CA_RCBR ALGR(CA_8) // }
|
||||
#define CA_LBRC ALGR(CA_9) // [
|
||||
#define CA_RBRC ALGR(CA_0) // ]
|
||||
#define CA_NOT ALGR(CA_EQL) // ¬
|
||||
// Row 2
|
||||
#define CA_EURO ALGR(CA_E) // €
|
||||
#define CA_GRV ALGR(CA_CIRC) // ` (dead)
|
||||
#define CA_DTIL ALGR(CA_CCED) // ~ (dead)
|
||||
// Row 3
|
||||
#define CA_DEG ALGR(CA_SCLN) // °
|
||||
// Row 4
|
||||
#define CA_LDAQ ALGR(CA_X) // «
|
||||
#define CA_RDAQ ALGR(CA_C) // »
|
||||
#define CA_LABK ALGR(CA_DOT) // <
|
||||
#define CA_RABK ALGR(CA_COMM) // >
|
||||
|
||||
// Fourth row
|
||||
#define CSA_U_GRAVE KC_NONUS_BSLASH // ù
|
||||
#define CSA_UGRV CSA_U_GRAVE
|
||||
#define CSA_E_ACUTE KC_SLSH // é
|
||||
#define CSA_ECUT CSA_E_ACUTE
|
||||
/* Right Ctrl symbols
|
||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||
* │ │ ¹ │ ² │ ³ │ ¼ │ ½ │ ¾ │ │ │ │ │ │ ¸ │ │
|
||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||
* │ │ Ω │ Ł │ Œ │ ¶ │ Ŧ │ ← │ ↓ │ → │ Ø │ Þ │ │ ~ │ │
|
||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||
* │ │ Æ │ ß │ Ð │ │ Ŋ │ Ħ │ IJ │ ĸ │ Ŀ │ ´ │ │ │ │
|
||||
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||
* │ │ │ │ │ ¢ │ “ │ ” │ ʼn │ μ │ ― │ ˙ │ │ │
|
||||
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||
* │ │ │ │ │ │ │ │ │
|
||||
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||
*/
|
||||
// Row 1
|
||||
#define CA_SUP1 RCTL(CA_1) // ¹
|
||||
#define CA_SUP2 RCTL(CA_2) // ²
|
||||
#define CA_SUP3 RCTL(CA_3) // ³
|
||||
#define CA_QRTR RCTL(CA_4) // ¼
|
||||
#define CA_HALF RCTL(CA_5) // ½
|
||||
#define CA_TQTR RCTL(CA_6) // ¾
|
||||
#define CA_CEDL RCTL(CA_EQL) // ¸ (dead)
|
||||
// Row 2
|
||||
#define CA_OMEG RCTL(CA_Q) // Ω
|
||||
#define CA_LSTR RCTL(CA_W) // Ł
|
||||
#define CA_OE RCTL(CA_E) // Œ
|
||||
#define CA_PARA RCTL(CA_R) // ¶
|
||||
#define CA_TSTR RCTL(CA_T) // Ŧ
|
||||
#define CA_LARR RCTL(CA_Y) // ←
|
||||
#define CA_DARR RCTL(CA_U) // ↓
|
||||
#define CA_RARR RCTL(CA_I) // →
|
||||
#define CA_OSTR RCTL(CA_O) // Ø
|
||||
#define CA_THRN RCTL(CA_P) // Þ
|
||||
#define CA_TILD RCTL(CA_CCED) // ~
|
||||
// Row 3
|
||||
#define CA_AE RCTL(CA_A) // Æ
|
||||
#define CA_SS RCTL(CA_S) // ß
|
||||
#define CA_ETH RCTL(CA_D) // Ð
|
||||
#define CA_ENG RCTL(CA_G) // Ŋ
|
||||
#define CA_HSTR RCTL(CA_H) // Ħ
|
||||
#define CA_IJ RCTL(CA_J) // IJ
|
||||
#define CA_KRA RCTL(CA_K) // ĸ
|
||||
#define CA_LMDT RCTL(CA_L) // Ŀ
|
||||
#define CA_ACUT RCTL(CA_SCLN) // ´ (dead)
|
||||
// Row 4
|
||||
#define CA_CENT RCTL(CA_C) // ¢
|
||||
#define CA_LDQU RCTL(CA_V) // “
|
||||
#define CA_RDQU RCTL(CA_B) // ”
|
||||
#define CA_APSN RCTL(CA_N) // ʼn
|
||||
#define CA_MICR RCTL(CA_M) // μ
|
||||
#define CA_HRZB RCTL(CA_COMM) // ―
|
||||
#define CA_DOTA ALGR(CA_DOT) // ˙ (dead)
|
||||
|
||||
// Shifted characters
|
||||
// First row
|
||||
#define CSA_BACKSLASH LSFT(CSA_SLASH) /* \ */
|
||||
#define CSA_BSLS CSA_BACKSLASH
|
||||
#define CSA_QUESTION LSFT(KC_6) // ?
|
||||
#define CSA_QEST CSA_QUESTION
|
||||
/* Shift+Right Ctrl symbols
|
||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||
* │ - │ ¡ │ │ £ │ │ ⅜ │ ⅝ │ ⅞ │ ™ │ ± │ │ ¿ │ ˛ │ │
|
||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||
* │ │ │ │ │ ® │ │ ¥ │ ↑ │ ı │ │ │ ° │ ¯ │ │
|
||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||
* │ │ │ § │ │ ª │ │ │ │ │ │ ˝ │ ˇ │ ˘ │ │
|
||||
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||
* │ │ ¦ │ │ │ © │ ‘ │ ’ │ ♪ │ º │ × │ ÷ │ │ │
|
||||
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||
* │ │ │ │ │ │ │ │ │
|
||||
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||
*/
|
||||
// Row 1
|
||||
#define CA_SHYP RCTL(S(CA_SLSH)) // (soft hyphen)
|
||||
#define CA_IEXL RCTL(S(CA_1)) // ¡
|
||||
#define CA_PND RCTL(S(CA_3)) // £
|
||||
#define CA_TEIG RCTL(S(CA_5)) // ⅜
|
||||
#define CA_FEIG RCTL(S(CA_6)) // ⅝
|
||||
#define CA_SEIG RCTL(S(CA_7)) // ⅞
|
||||
#define CA_TM RCTL(S(CA_8)) // ™
|
||||
#define CA_PLMN RCTL(S(CA_9)) // ±
|
||||
#define CA_IQUE RCTL(S(CA_MINS)) // ¿
|
||||
#define CA_OGON RCTL(S(CA_EQL)) // ˛ (dead)
|
||||
// Row 2
|
||||
#define CA_REGD RCTL(S(CA_R)) // ®
|
||||
#define CA_YEN RCTL(S(CA_Y)) // ¥
|
||||
#define CA_UARR RCTL(S(CA_U)) // ↑
|
||||
#define CA_DLSI RCTL(S(CA_I)) // ı
|
||||
#define CA_RNGA RCTL(S(CA_CIRC)) // ° (dead)
|
||||
#define CA_MACR RCTL(S(CA_CCED)) // ¯ (dead)
|
||||
// Row 3
|
||||
#define CA_SECT RCTL(S(CA_S)) // §
|
||||
#define CA_FORD RCTL(S(CA_F)) // ª
|
||||
#define CA_DACU RCTL(S(CA_SCLN)) // ˝ (dead)
|
||||
#define CA_CARN RCTL(S(CA_EGRV)) // ˇ (dead)
|
||||
#define CA_BREV RCTL(S(CA_AGRV)) // ˘ (dead)
|
||||
// Row 4
|
||||
#define CA_BRKP RCTL(S(CA_UGRV)) // ¦
|
||||
#define CA_COPY RCTL(S(CA_C)) // ©
|
||||
#define CA_LSQU RCTL(S(CA_V)) // ‘
|
||||
#define CA_RSQU RCTL(S(CA_B)) // ’
|
||||
#define CA_ENOT RCTL(S(CA_N)) // ♪
|
||||
#define CA_MORD RCTL(S(CA_M)) // º
|
||||
#define CA_MUL RCTL(S(CA_COMM)) // ×
|
||||
#define CA_DIV RCTL(S(CA_DOT)) // ÷
|
||||
|
||||
// Second row
|
||||
#define CSA_DEAD_TREMA LSFT(CSA_DEAD_CIRCUMFLEX) // dead trema/umlaut/diaresis for ä ë ï ö ü
|
||||
#define CSA_DTRM CSA_DEAD_TREMA
|
||||
|
||||
// Third row
|
||||
// all same as US-QWERTY, or capitalised character of the non-shifted key
|
||||
|
||||
// Fourth row
|
||||
#define CSA_APOSTROPHE LSFT(KC_COMMA) // '
|
||||
#define CSA_APOS CSA_APOSTROPHE
|
||||
#define CSA_DOUBLE_QUOTE LSFT(KC_DOT) // "
|
||||
#define CSA_DQOT CSA_DOUBLE_QUOTE
|
||||
|
||||
// Alt Gr-ed characters
|
||||
// First row
|
||||
#define CSA_PIPE ALGR(CSA_SLASH) // |
|
||||
#define CSA_CURRENCY ALGR(KC_4) // ¤
|
||||
#define CSA_CURR CSA_CURRENCY
|
||||
#define CSA_LEFT_CURLY_BRACE ALGR(KC_7) // {
|
||||
#define CSA_LCBR CSA_LEFT_CURLY_BRACE
|
||||
#define CSA_RIGHT_CURLY_BRACE ALGR(KC_8) // }
|
||||
#define CSA_RCBR CSA_RIGHT_CURLY_BRACE
|
||||
#define CSA_LBRACKET ALGR(KC_9) // [
|
||||
#define CSA_LBRC CSA_LBRACKET
|
||||
#define CSA_RBRACKET ALGR(KC_0) // ]
|
||||
#define CSA_RBRC CSA_RBRACKET
|
||||
#define CSA_NEGATION ALGR(KC_EQUAL) // ¬
|
||||
#define CSA_NEGT CSA_NEGATION
|
||||
|
||||
// Second row
|
||||
// euro symbol not available on Linux? (X.org)
|
||||
#define CSA_EURO ALGR(KC_E) // €
|
||||
#define CSA_DEAD_GRAVE ALGR(CSA_DEAD_CIRCUMFLEX)
|
||||
#define CSA_DGRV CSA_DEAD_GRAVE // dead `
|
||||
#define CSA_DEAD_TILDE ALGR(CSA_C_CEDILLA) // ~
|
||||
#define CSA_DTLD CSA_DEAD_TILDE
|
||||
|
||||
// Third row
|
||||
#define CSA_DEGREE ALGR(KC_SCOLON) // °
|
||||
#define CSA_DEGR CSA_DEGREE
|
||||
|
||||
// Fourth row
|
||||
#define CSA_LEFT_GUILLEMET ALGR(KC_Z) // «
|
||||
#define CSA_LGIL CSA_LEFT_GUILLEMET
|
||||
#define CSA_RIGHT_GUILLEMET ALGR(KC_X) // »
|
||||
#define CSA_RGIL CSA_RIGHT_GUILLEMET
|
||||
#define CSA_LESS ALGR(KC_COMMA) // <
|
||||
#define CSA_GREATER ALGR(KC_DOT) // >
|
||||
#define CSA_GRTR CSA_GREATER
|
||||
|
||||
// Space bar
|
||||
#define CSA_NON_BREAKING_SPACE ALGR(KC_SPACE)
|
||||
#define CSA_NBSP CSA_NON_BREAKING_SPACE
|
||||
|
||||
// GR2A-ed characters
|
||||
// First row
|
||||
#define CSA_SUPERSCRIPT_ONE GR2A(KC_1) // ¹
|
||||
#define CSA_SUP1 CSA_SUPERSCRIPT_ONE
|
||||
#define CSA_SUPERSCRIPT_TWO GR2A(KC_2) // ²
|
||||
#define CSA_SUP2 CSA_SUPERSCRIPT_TWO
|
||||
#define CSA_SUPERSCRIPT_THREE GR2A(KC_3) // ³
|
||||
#define CSA_SUP3 CSA_SUPERSCRIPT_THREE
|
||||
#define CSA_ONE_QUARTER GR2A(KC_4) // ¼
|
||||
#define CSA_1QRT CSA_ONE_QUARTER
|
||||
#define CSA_ONE_HALF GR2A(KC_5) // ½
|
||||
#define CSA_1HLF CSA_ONE_HALF
|
||||
#define CSA_THREE_QUARTERS GR2A(KC_6) // ¾
|
||||
#define CSA_3QRT CSA_THREE_QUARTERS
|
||||
// nothing on 7-0 and -
|
||||
#define CSA_DEAD_CEDILLA GR2A(KC_EQUAL) // dead ¸
|
||||
#define CSA_DCED CSA_DEAD_CEDILLA
|
||||
|
||||
// Second row
|
||||
#define CSA_OMEGA GR2A(KC_Q) // ω
|
||||
#define CSA_OMEG CSA_OMEGA
|
||||
#define CSA_L_STROKE GR2A(KC_W) // ł
|
||||
#define CSA_LSTK CSA_L_STROKE
|
||||
#define CSA_OE_LIGATURE GR2A(KC_E) // œ
|
||||
#define CSA_OE CSA_OE_LIGATURE
|
||||
#define CSA_PARAGRAPH GR2A(KC_R) // ¶
|
||||
#define CSA_PARG CSA_PARAGRAPH
|
||||
#define CSA_T_STROKE GR2A(KC_T) // ŧ
|
||||
#define CSA_LEFT_ARROW GR2A(KC_Y) // ←
|
||||
#define CSA_LARW CSA_LEFT_ARROW
|
||||
#define CSA_DOWN_ARROW GR2A(KC_U) // ↓
|
||||
#define CSA_DARW CSA_DOWN_ARROW
|
||||
#define CSA_RIGHT_ARROW GR2A(KC_I) // →
|
||||
#define CSA_RARW CSA_RIGHT_ARROW
|
||||
#define CSA_O_STROKE GR2A(KC_O) // ø
|
||||
#define CSA_OSTK CSA_O_STROKE
|
||||
#define CSA_THORN GR2A(KC_P) // þ
|
||||
#define CSA_THRN CSA_THORN
|
||||
// nothing on ^
|
||||
#define CSA_TILDE GR2A(CSA_C_CEDILLA) // dead ~
|
||||
#define CSA_TILD CSA_TILDE
|
||||
|
||||
// Third row
|
||||
#define CSA_AE_LIGATURE GR2A(KC_A) // æ
|
||||
#define CSA_AE CSA_AE_LIGATURE
|
||||
#define CSA_SHARP_S GR2A(KC_S) // ß
|
||||
#define CSA_SRPS CSA_SHARP_S
|
||||
#define CSA_ETH GR2A(KC_D) // ð
|
||||
// nothing on F
|
||||
#define CSA_ENG GR2A(KC_G) // ŋ
|
||||
#define CSA_H_SRTOKE GR2A(KC_H) // ħ
|
||||
#define CSA_HSTK CSA_H_SRTOKE
|
||||
#define CSA_IJ_LIGATURE GR2A(KC_J) // ij
|
||||
#define CSA_IJ CSA_IJ_LIGATURE
|
||||
#define CSA_KRA GR2A(KC_K) // ĸ
|
||||
#define CSA_L_FLOWN_DOT GR2A(KC_L) // ŀ
|
||||
#define CSA_LFLD CSA_L_FLOWN_DOT
|
||||
#define CSA_DEAD_ACUTE GR2A(KC_SCLN) // dead acute accent
|
||||
#define CSA_DACT CSA_DEAD_ACUTE
|
||||
// nothing on È & À
|
||||
|
||||
// Fourth row
|
||||
#define CSA_CENT GR2A(KC_C) // ¢
|
||||
#define CSA_LEFT_DOUBLE_QUOTE GR2A(KC_V) // “
|
||||
#define CSA_LDQT CSA_LEFT_DOUBLE_QUOTE
|
||||
#define CSA_RIGHT_DOUBLE_QUOTE GR2A(KC_B) // ”
|
||||
#define CSA_RDQT CSA_RIGHT_DOUBLE_QUOTE
|
||||
#define CSA_N_APOSTROPHE GR2A(KC_N) // ʼn (deprecated unicode codepoint)
|
||||
#define CSA_NAPO CSA_N_APOSTROPHE
|
||||
#define CSA_MU GR2A(KC_M) // μ
|
||||
#define CSA_HORIZONTAL_BAR GR2A(KC_COMMA) // ―
|
||||
#define CSA_HZBR CSA_HORIZONTAL_BAR
|
||||
#define CSA_DEAD_DOT_ABOVE GR2A(KC_DOT) // dead ˙
|
||||
#define CSA_DDTA CSA_DEAD_DOT_ABOVE
|
||||
|
||||
// GR2A-shifted characters (different from capitalised GR2A-ed characters)
|
||||
// First row
|
||||
#define CSA_SOFT_HYPHEN GR2A(LSFT(CSA_SLASH)) // soft-hyphen, appears as a hyphen in wrapped word
|
||||
#define CSA_SHYP CSA_SOFT_HYPHEN
|
||||
#define CSA_INVERTED_EXCLAIM GR2A(KC_EXCLAIM) // ¡
|
||||
#define CSA_IXLM CSA_INVERTED_EXCLAIM
|
||||
// nothing on 2
|
||||
#define CSA_POUND GR2A(LSFT(KC_3)) // £
|
||||
#define CSA_GBP CSA_POUND_SIGN
|
||||
// already on ALGR(KC_E)
|
||||
#define CSA_EURO_BIS GR2A(LSFT(KC_4)) // €
|
||||
#define CSA_EURB CSA_EURO_BIS
|
||||
#define CSA_THREE_EIGHTHS GR2A(LSFT(KC_5)) // ⅜
|
||||
#define CSA_3ON8 CSA_THREE_EIGHTHS
|
||||
#define CSA_FIVE_EIGHTHS GR2A(LSFT(KC_6)) // ⅝
|
||||
#define CSA_5ON8 CSA_FIVE_EIGHTHS
|
||||
#define CSA_SEVEN_EIGHTHS GR2A(LSFT(KC_7)) // ⅞
|
||||
#define CSA_7ON8 CSA_SEVEN_EIGHTHS
|
||||
#define CSA_TRADEMARK GR2A(LSFT(KC_8)) // ™
|
||||
#define CSA_TM CSA_TRADEMARK
|
||||
#define CSA_PLUS_MINUS GR2A(LSFT(KC_9)) // ±
|
||||
#define CSA_PSMS CSA_PLUS_MINUS
|
||||
// nothing on 0
|
||||
#define CSA_INVERTED_QUESTION GR2A(LSFT(KC_MINUS)) // ¿
|
||||
#define CSA_IQST CSA_INVERTED_QUESTION
|
||||
#define CSA_DEAD_OGONEK GR2A(LSFT(KC_EQUAL)) // dead ˛
|
||||
#define CSA_DOGO CSA_DEAD_OGONEK
|
||||
|
||||
// Second row
|
||||
#define CSA_REGISTERED_TRADEMARK GR2A(LSFT(KC_R)) // ®
|
||||
#define CSA_RTM CSA_REGISTERED_TRADEMARK
|
||||
#define CSA_YEN GR2A(LSFT(KC_Y)) // ¥
|
||||
#define CSA_YUAN CSA_YEN
|
||||
#define CSA_UP_ARROW LSFT(CSA_DOWN_ARROW) // ↑
|
||||
#define CSA_DOTLESS_I GR2A(LSFT(KC_I)) // ı
|
||||
#define CSA_DLSI CSA_DOTLESS_I
|
||||
#define CSA_DEAD_RING GR2A(LSFT(CSA_DCRC)) // dead °
|
||||
#define CSA_DRNG CSA_DEAD_RING
|
||||
#define CSA_DEAD_MACRON GR2A(LSFT(CSA_C_CEDILLA)) // dead ¯
|
||||
#define CSA_DMCR CSA_DEAD_MACRON
|
||||
|
||||
// Third row
|
||||
#define CSA_SECTION GR2A(LSFT(KC_S)) // §
|
||||
#define CSA_SECT CSA_SECTION
|
||||
#define CSA_ORDINAL_INDICATOR_A GR2A(LSFT(KC_F)) // ª
|
||||
#define CSA_ORDA CSA_ORDINAL_INDICATOR_A
|
||||
#define CSA_DEAD_DOUBLE_ACUTE LSFT(CSA_DEAD_ACUTE) // ˝
|
||||
#define CSA_DDCT CSA_DEAD_DOUBLE_ACUTE
|
||||
#define CSA_DEAD_CARON GR2A(LSFT(CSA_E_GRAVE)) // dead ˇ
|
||||
#define CSA_DCAR CSA_DEAD_CARON
|
||||
#define CSA_DEAD_BREVE GR2A(LSFT(CSA_A_GRAVE)) // dead ˘
|
||||
#define CSA_DBRV CSA_DEAD_BREVE
|
||||
|
||||
// Fourth row
|
||||
#define CSA_BROKEN_PIPE GR2A(LSFT(CSA_U_GRAVE)) // ¦
|
||||
#define CSA_BPIP CSA_BROKEN_PIPE
|
||||
#define CSA_COPYRIGHT GR2A(LSFT(KC_C)) // ©
|
||||
#define CSA_CPRT CSA_COPYRIGHT
|
||||
#define CSA_LEFT_QUOTE GR2A(LSFT(KC_V)) // ‘
|
||||
#define CSA_LQOT CSA_LEFT_QUOTE
|
||||
#define CSA_RIGHT_QUOTE GR2A(LSFT(KC_B)) // ’
|
||||
#define CSA_RQOT CSA_RIGHT_QUOTE
|
||||
#define CSA_EIGHTH_NOTE GR2A(LSFT(KC_N)) // ♪
|
||||
#define CSA_8NOT CSA_EIGHTH_NOTE
|
||||
#define CSA_ORDINAL_INDICATOR_O GR2A(LSFT(KC_M)) // º
|
||||
#define CSA_ORDO CSA_ORDINAL_INDICATOR_O
|
||||
#define CSA_TIMES GR2A(LSFT(KC_COMMA)) // ×
|
||||
#define CSA_TIMS CSA_TIMES
|
||||
#define CSA_OBELUS GR2A(LSFT(KC_DOT)) // ÷
|
||||
#define CSA_OBEL CSA_OBELUS
|
||||
// more conventional name of the symbol
|
||||
#define CSA_DIVISION_SIGN CSA_OBELUS
|
||||
#define CSA_DVSN CSA_DIVISION_SIGN
|
||||
// TODO GR2A(LSFT(CSA_E_ACUTE))
|
||||
|
||||
#endif
|
||||
// DEPRECATED
|
||||
#define GR2A(kc) RCTL(kc)
|
||||
#define CSA_SLASH CA_SLSH
|
||||
#define CSA_SLSH CA_SLSH
|
||||
#define CSA_DEAD_CIRCUMFLEX CA_CIRC
|
||||
#define CSA_DCRC CA_CIRC
|
||||
#define CSA_C_CEDILLA CA_CCED
|
||||
#define CSA_CCED CA_CCED
|
||||
#define CSA_E_GRAVE CA_EGRV
|
||||
#define CSA_EGRV CA_EGRV
|
||||
#define CSA_A_GRAVE CA_AGRV
|
||||
#define CSA_AGRV CA_AGRV
|
||||
#define CSA_U_GRAVE CA_UGRV
|
||||
#define CSA_UGRV CA_UGRV
|
||||
#define CSA_E_ACUTE CA_EACU
|
||||
#define CSA_ECUT CA_EACU
|
||||
#define CSA_BACKSLASH CA_BSLS
|
||||
#define CSA_BSLS CA_BSLS
|
||||
#define CSA_QUESTION CA_QUES
|
||||
#define CSA_QEST CA_QUES
|
||||
#define CSA_DEAD_TREMA CA_DIAE
|
||||
#define CSA_DTRM CA_DIAE
|
||||
#define CSA_APOSTROPHE CA_QUOT
|
||||
#define CSA_APOS CA_QUOT
|
||||
#define CSA_DOUBLE_QUOTE CA_DQUO
|
||||
#define CSA_DQOT CA_DQUO
|
||||
#define CSA_PIPE CA_PIPE
|
||||
#define CSA_CURRENCY CA_CURR
|
||||
#define CSA_CURR CA_CURR
|
||||
#define CSA_LEFT_CURLY_BRACE CA_LCBR
|
||||
#define CSA_LCBR CA_LCBR
|
||||
#define CSA_RIGHT_CURLY_BRACE CA_RCBR
|
||||
#define CSA_RCBR CA_RCBR
|
||||
#define CSA_LBRACKET CA_LBRC
|
||||
#define CSA_LBRC CA_LBRC
|
||||
#define CSA_RBRACKET CA_RBRC
|
||||
#define CSA_RBRC CA_RBRC
|
||||
#define CSA_NEGATION CA_NOT
|
||||
#define CSA_NEGT CA_NOT
|
||||
#define CSA_EURO CA_EURO
|
||||
#define CSA_DEAD_GRAVE CA_GRV
|
||||
#define CSA_DGRV CA_GRV
|
||||
#define CSA_DEAD_TILDE CA_DTIL
|
||||
#define CSA_DTLD CA_DTIL
|
||||
#define CSA_DEGREE CA_DEG
|
||||
#define CSA_DEGR CA_DEG
|
||||
#define CSA_LEFT_GUILLEMET CA_LDAQ
|
||||
#define CSA_LGIL CA_LDAQ
|
||||
#define CSA_RIGHT_GUILLEMET CA_RDAQ
|
||||
#define CSA_RGIL CA_RDAQ
|
||||
#define CSA_LESS CA_LABK
|
||||
#define CSA_GREATER CA_RABK
|
||||
#define CSA_GRTR CA_RABK
|
||||
#define CSA_NON_BREAKING_SPACE ALGR(KC_SPC)
|
||||
#define CSA_NBSP ALGR(KC_SPC)
|
||||
#define CSA_SUPERSCRIPT_ONE CA_SUP1
|
||||
#define CSA_SUP1 CA_SUP1
|
||||
#define CSA_SUPERSCRIPT_TWO CA_SUP2
|
||||
#define CSA_SUP2 CA_SUP2
|
||||
#define CSA_SUPERSCRIPT_THREE CA_SUP3
|
||||
#define CSA_SUP3 CA_SUP3
|
||||
#define CSA_ONE_QUARTER CA_QRTR
|
||||
#define CSA_1QRT CA_QRTR
|
||||
#define CSA_ONE_HALF CA_HALF
|
||||
#define CSA_1HLF CA_HALF
|
||||
#define CSA_THREE_QUARTERS CA_TQTR
|
||||
#define CSA_3QRT CA_TQTR
|
||||
#define CSA_DEAD_CEDILLA CA_CEDL
|
||||
#define CSA_DCED CA_CEDL
|
||||
#define CSA_OMEGA CA_OMEG
|
||||
#define CSA_OMEG CA_OMEG
|
||||
#define CSA_L_STROKE CA_LSTR
|
||||
#define CSA_LSTK CA_LSTR
|
||||
#define CSA_OE_LIGATURE CA_OE
|
||||
#define CSA_OE CA_OE
|
||||
#define CSA_PARAGRAPH CA_PARA
|
||||
#define CSA_PARG CA_PARA
|
||||
#define CSA_T_STROKE CA_TSTR
|
||||
#define CSA_LEFT_ARROW CA_LARR
|
||||
#define CSA_LARW CA_LARR
|
||||
#define CSA_DOWN_ARROW CA_DARR
|
||||
#define CSA_DARW CA_DARR
|
||||
#define CSA_RIGHT_ARROW CA_RARR
|
||||
#define CSA_RARW CA_RARR
|
||||
#define CSA_O_STROKE CA_OSTR
|
||||
#define CSA_OSTK CA_OSTR
|
||||
#define CSA_THORN CA_THRN
|
||||
#define CSA_THRN CA_THRN
|
||||
#define CSA_TILDE CA_TILD
|
||||
#define CSA_TILD CA_TILD
|
||||
#define CSA_AE_LIGATURE CA_AE
|
||||
#define CSA_AE CA_AE
|
||||
#define CSA_SHARP_S CA_SS
|
||||
#define CSA_SRPS CA_SS
|
||||
#define CSA_ETH CA_ETH
|
||||
#define CSA_ENG CA_ENG
|
||||
#define CSA_H_SRTOKE CA_HSTR
|
||||
#define CSA_HSTK CA_HSTR
|
||||
#define CSA_IJ_LIGATURE CA_IJ
|
||||
#define CSA_IJ CA_IJ
|
||||
#define CSA_KRA CA_KRA
|
||||
#define CSA_L_FLOWN_DOT CA_LMDT
|
||||
#define CSA_LFLD CA_LMDT
|
||||
#define CSA_DEAD_ACUTE CA_ACUT
|
||||
#define CSA_DACT CA_ACUT
|
||||
#define CSA_CENT CA_CENT
|
||||
#define CSA_LEFT_DOUBLE_QUOTE CA_LDQU
|
||||
#define CSA_LDQT CA_LDQU
|
||||
#define CSA_RIGHT_DOUBLE_QUOTE CA_RDQU
|
||||
#define CSA_RDQT CA_RDQU
|
||||
#define CSA_N_APOSTROPHE CA_APSN
|
||||
#define CSA_NAPO CA_APSN
|
||||
#define CSA_MU CA_MICR
|
||||
#define CSA_HORIZONTAL_BAR CA_HRZB
|
||||
#define CSA_HZBR CA_HRZB
|
||||
#define CSA_DEAD_DOT_ABOVE CA_DOTA
|
||||
#define CSA_DDTA CA_DOTA
|
||||
#define CSA_SOFT_HYPHEN CA_SHYP
|
||||
#define CSA_SHYP CA_SHYP
|
||||
#define CSA_INVERTED_EXCLAIM CA_IEXL
|
||||
#define CSA_IXLM CA_IEXL
|
||||
#define CSA_POUND CA_PND
|
||||
#define CSA_GBP CA_PND
|
||||
#define CSA_EURO_BIS CA_EURO
|
||||
#define CSA_EURB CA_EURO
|
||||
#define CSA_THREE_EIGHTHS CA_TEIG
|
||||
#define CSA_3ON8 CA_TEIG
|
||||
#define CSA_FIVE_EIGHTHS CA_FEIG
|
||||
#define CSA_5ON8 CA_FEIG
|
||||
#define CSA_SEVEN_EIGHTHS CA_SEIG
|
||||
#define CSA_7ON8 CA_SEIG
|
||||
#define CSA_TRADEMARK CA_TM
|
||||
#define CSA_TM CA_TM
|
||||
#define CSA_PLUS_MINUS CA_PLMN
|
||||
#define CSA_PSMS CA_PLMN
|
||||
#define CSA_INVERTED_QUESTION CA_IQUE
|
||||
#define CSA_IQST CA_IQUE
|
||||
#define CSA_DEAD_OGONEK CA_OGON
|
||||
#define CSA_DOGO CA_OGON
|
||||
#define CSA_REGISTERED_TRADEMARK CA_REGD
|
||||
#define CSA_RTM CA_REGD
|
||||
#define CSA_YEN CA_YEN
|
||||
#define CSA_YUAN CA_YEN
|
||||
#define CSA_UP_ARROW CA_UARR
|
||||
#define CSA_DOTLESS_I CA_DLSI
|
||||
#define CSA_DLSI CA_DLSI
|
||||
#define CSA_DEAD_RING CA_RNGA
|
||||
#define CSA_DRNG CA_RNGA
|
||||
#define CSA_DEAD_MACRON CA_MACR
|
||||
#define CSA_DMCR CA_MACR
|
||||
#define CSA_SECTION CA_SECT
|
||||
#define CSA_SECT CA_SECT
|
||||
#define CSA_ORDINAL_INDICATOR_A CA_FORD
|
||||
#define CSA_ORDA CA_FORD
|
||||
#define CSA_DEAD_DOUBLE_ACUTE CA_DACU
|
||||
#define CSA_DDCT CA_DACU
|
||||
#define CSA_DEAD_CARON CA_CARN
|
||||
#define CSA_DCAR CA_CARN
|
||||
#define CSA_DEAD_BREVE CA_BREV
|
||||
#define CSA_DBRV CA_BREV
|
||||
#define CSA_BROKEN_PIPE CA_BRKP
|
||||
#define CSA_BPIP CA_BRKP
|
||||
#define CSA_COPYRIGHT CA_COPY
|
||||
#define CSA_CPRT CA_COPY
|
||||
#define CSA_LEFT_QUOTE CA_LSQU
|
||||
#define CSA_LQOT CA_LSQU
|
||||
#define CSA_RIGHT_QUOTE CA_RSQU
|
||||
#define CSA_RQOT CA_RSQU
|
||||
#define CSA_EIGHTH_NOTE CA_ENOT
|
||||
#define CSA_8NOT CA_ENOT
|
||||
#define CSA_ORDINAL_INDICATOR_O CA_MORD
|
||||
#define CSA_ORDO CA_MORD
|
||||
#define CSA_TIMES CA_MUL
|
||||
#define CSA_TIMS CA_MUL
|
||||
#define CSA_OBELUS CA_DIV
|
||||
#define CSA_OBEL CA_DIV
|
||||
#define CSA_DIVISION_SIGN CA_DIV
|
||||
#define CSA_DVSN CA_DIV
|
||||
|
||||
@@ -13,66 +13,130 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#ifndef KEYMAP_NEO2
|
||||
#define KEYMAP_NEO2
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "keymap.h"
|
||||
#include "keymap_german.h"
|
||||
|
||||
#define NEO_A KC_D
|
||||
#define NEO_B KC_N
|
||||
#define NEO_C KC_R
|
||||
#define NEO_D DE_OE
|
||||
#define NEO_E KC_F
|
||||
#define NEO_F KC_O
|
||||
#define NEO_G KC_I
|
||||
#define NEO_H KC_U
|
||||
#define NEO_I KC_S
|
||||
#define NEO_J DE_MINS
|
||||
#define NEO_K DE_Z
|
||||
#define NEO_L KC_E
|
||||
#define NEO_M KC_M
|
||||
#define NEO_N KC_J
|
||||
#define NEO_O KC_G
|
||||
#define NEO_P KC_V
|
||||
#define NEO_Q KC_P
|
||||
#define NEO_R KC_K
|
||||
#define NEO_S KC_H
|
||||
#define NEO_T KC_L
|
||||
#define NEO_U KC_A
|
||||
#define NEO_V KC_W
|
||||
#define NEO_W KC_T
|
||||
#define NEO_X KC_Q
|
||||
#define NEO_Y DE_AE
|
||||
#define NEO_Z KC_B
|
||||
#define NEO_AE KC_C
|
||||
#define NEO_OE KC_X
|
||||
#define NEO_UE DE_Y
|
||||
#define NEO_SS DE_UE
|
||||
// clang-format off
|
||||
|
||||
#define NEO_DOT DE_DOT
|
||||
#define NEO_COMM DE_COMM
|
||||
/*
|
||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||
* │ ^ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ ` │ │
|
||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||
* │ │ X │ V │ L │ C │ W │ K │ H │ G │ F │ Q │ ß │ ´ │ │
|
||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||
* │ L3 │ U │ I │ A │ E │ O │ S │ N │ R │ T │ D │ Y │ L3│ │
|
||||
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||
* │ │L4 │ Ü │ Ö │ Ä │ P │ Z │ B │ M │ , │ . │ J │ │
|
||||
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||
* │ │ │ │ │ │ L4 │ │ │
|
||||
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||
*/
|
||||
// Row 1
|
||||
#define NE_CIRC KC_GRV // ^ (dead)
|
||||
#define NE_1 KC_1 // 1
|
||||
#define NE_2 KC_2 // 2
|
||||
#define NE_3 KC_3 // 3
|
||||
#define NE_4 KC_4 // 4
|
||||
#define NE_5 KC_5 // 5
|
||||
#define NE_6 KC_6 // 6
|
||||
#define NE_7 KC_7 // 7
|
||||
#define NE_8 KC_8 // 8
|
||||
#define NE_9 KC_9 // 9
|
||||
#define NE_0 KC_0 // 0
|
||||
#define NE_MINS KC_MINS // -
|
||||
#define NE_GRV KC_EQL // ` (dead)
|
||||
// Row 2
|
||||
#define NE_X KC_Q // X
|
||||
#define NE_V KC_W // V
|
||||
#define NE_L KC_E // L
|
||||
#define NE_C KC_R // C
|
||||
#define NE_W KC_T // W
|
||||
#define NE_K KC_Y // K
|
||||
#define NE_H KC_U // H
|
||||
#define NE_H KC_I // G
|
||||
#define NE_F KC_O // F
|
||||
#define NE_Q KC_P // Q
|
||||
#define NE_SS KC_LBRC // ß
|
||||
#define NE_ACUT KC_RBRC // ´ (dead)
|
||||
// Row 3
|
||||
#define NE_L3L KC_CAPS // (layer 3)
|
||||
#define NE_U KC_A // U
|
||||
#define NE_I KC_S // I
|
||||
#define NE_A KC_D // A
|
||||
#define NE_E KC_F // E
|
||||
#define NE_O KC_G // O
|
||||
#define NE_S KC_H // S
|
||||
#define NE_N KC_J // N
|
||||
#define NE_R KC_K // R
|
||||
#define NE_T KC_L // T
|
||||
#define NE_D KC_SCLN // D
|
||||
#define NE_Y KC_QUOT // Y
|
||||
#define NE_L3R KC_NUHS // (layer 3)
|
||||
// Row 4
|
||||
#define NE_L4L KC_NUBS // (layer 4)
|
||||
#define NE_UDIA KC_Z // Ü
|
||||
#define NE_ODIA KC_X // Ö
|
||||
#define NE_ADIA KC_C // Ä
|
||||
#define NE_P KC_V // P
|
||||
#define NE_Z KC_B // Z
|
||||
#define NE_B KC_N // B
|
||||
#define NE_M KC_M // M
|
||||
#define NE_COMM KC_COMM // ,
|
||||
#define NE_DOT KC_DOT // .
|
||||
#define NE_J KC_SLSH // J
|
||||
// Row 5
|
||||
#define NE_L4R KC_ALGR // (layer 4)
|
||||
|
||||
#define NEO_1 DE_1
|
||||
#define NEO_2 DE_2
|
||||
#define NEO_3 DE_3
|
||||
#define NEO_4 DE_4
|
||||
#define NEO_5 DE_5
|
||||
#define NEO_6 DE_6
|
||||
#define NEO_7 DE_7
|
||||
#define NEO_8 DE_8
|
||||
#define NEO_9 DE_9
|
||||
#define NEO_0 DE_0
|
||||
#define NEO_MINS DE_SS
|
||||
|
||||
#define NEO_ACUT DE_PLUS
|
||||
#define NEO_GRV DE_ACUT
|
||||
#define NEO_CIRC DE_CIRC
|
||||
|
||||
#define NEO_L1_L KC_CAPS
|
||||
#define NEO_L1_R DE_HASH
|
||||
|
||||
#define NEO_L2_L DE_LESS
|
||||
#define NEO_L2_R KC_ALGR
|
||||
|
||||
#endif
|
||||
// DEPRECATED
|
||||
#define NEO_A NE_A
|
||||
#define NEO_B NE_B
|
||||
#define NEO_C NE_C
|
||||
#define NEO_D NE_D
|
||||
#define NEO_E NE_E
|
||||
#define NEO_F NE_F
|
||||
#define NEO_G NE_G
|
||||
#define NEO_H NE_H
|
||||
#define NEO_I NE_I
|
||||
#define NEO_J NE_J
|
||||
#define NEO_K NE_K
|
||||
#define NEO_L NE_L
|
||||
#define NEO_M NE_M
|
||||
#define NEO_N NE_N
|
||||
#define NEO_O NE_O
|
||||
#define NEO_P NE_P
|
||||
#define NEO_Q NE_Q
|
||||
#define NEO_R NE_R
|
||||
#define NEO_S NE_S
|
||||
#define NEO_T NE_T
|
||||
#define NEO_U NE_U
|
||||
#define NEO_V NE_V
|
||||
#define NEO_W NE_W
|
||||
#define NEO_X NE_X
|
||||
#define NEO_Y NE_Y
|
||||
#define NEO_Z NE_Z
|
||||
#define NEO_AE NE_ADIA
|
||||
#define NEO_OE NE_ODIA
|
||||
#define NEO_UE NE_UDIA
|
||||
#define NEO_SS NE_SS
|
||||
#define NEO_DOT NE_DOT
|
||||
#define NEO_COMM NE_COMM
|
||||
#define NEO_1 NE_1
|
||||
#define NEO_2 NE_2
|
||||
#define NEO_3 NE_3
|
||||
#define NEO_4 NE_4
|
||||
#define NEO_5 NE_5
|
||||
#define NEO_6 NE_6
|
||||
#define NEO_7 NE_7
|
||||
#define NEO_8 NE_8
|
||||
#define NEO_9 NE_9
|
||||
#define NEO_0 NE_0
|
||||
#define NEO_MINS NE_MINS
|
||||
#define NEO_ACUT NE_ACUT
|
||||
#define NEO_GRV NE_GRV
|
||||
#define NEO_CIRC NE_CIRC
|
||||
#define NEO_L1_L NE_L3L
|
||||
#define NEO_L1_R NE_L3R
|
||||
#define NEO_L2_L NE_L4L
|
||||
#define NEO_L2_R NE_L4R
|
||||
|
||||
100
quantum/keymap_extras/sendstring_canadian_multilingual.h
Normal file
100
quantum/keymap_extras/sendstring_canadian_multilingual.h
Normal file
@@ -0,0 +1,100 @@
|
||||
/* Copyright 2020
|
||||
*
|
||||
* 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/>.
|
||||
*/
|
||||
|
||||
// Sendstring lookup tables for Canadian Multilingual layouts
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "keymap_canadian_multilingual.h"
|
||||
#include "quantum.h"
|
||||
|
||||
// clang-format off
|
||||
|
||||
const uint8_t ascii_to_shift_lut[16] PROGMEM = {
|
||||
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||
|
||||
KCLUT_ENTRY(0, 1, 1, 1, 1, 1, 1, 1),
|
||||
KCLUT_ENTRY(1, 1, 1, 1, 0, 0, 0, 0),
|
||||
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||
KCLUT_ENTRY(0, 0, 1, 0, 0, 0, 0, 1),
|
||||
KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
|
||||
KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
|
||||
KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
|
||||
KCLUT_ENTRY(1, 1, 1, 0, 1, 0, 0, 1),
|
||||
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0)
|
||||
};
|
||||
|
||||
const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
|
||||
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||
|
||||
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||
KCLUT_ENTRY(0, 0, 0, 0, 1, 0, 1, 0),
|
||||
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||
KCLUT_ENTRY(0, 0, 0, 1, 0, 1, 0, 0),
|
||||
KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
|
||||
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||
KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 1, 0)
|
||||
};
|
||||
|
||||
const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
|
||||
// NUL SOH STX ETX EOT ENQ ACK BEL
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
// BS TAB LF VT FF CR SO SI
|
||||
KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
// DLE DC1 DC2 DC3 DC4 NAK SYN ETB
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
// CAN EM SUB ESC FS GS RS US
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
|
||||
// ! " # $ % & '
|
||||
KC_SPC, CA_1, CA_DOT, CA_3, CA_4, CA_5, CA_7, CA_COMM,
|
||||
// ( ) * + , - . /
|
||||
CA_9, CA_0, CA_8, CA_EQL, CA_COMM, CA_MINS, CA_DOT, CA_SLSH,
|
||||
// 0 1 2 3 4 5 6 7
|
||||
CA_0, CA_1, CA_2, CA_3, CA_4, CA_5, CA_6, CA_7,
|
||||
// 8 9 : ; < = > ?
|
||||
CA_8, CA_9, CA_SCLN, CA_SCLN, CA_DOT, CA_EQL, CA_COMM, CA_6,
|
||||
// @ A B C D E F G
|
||||
CA_2, CA_A, CA_B, CA_C, CA_D, CA_E, CA_F, CA_G,
|
||||
// H I J K L M N O
|
||||
CA_H, CA_I, CA_J, CA_K, CA_L, CA_M, CA_N, CA_O,
|
||||
// P Q R S T U V W
|
||||
CA_P, CA_Q, CA_R, CA_S, CA_T, CA_U, CA_V, CA_W,
|
||||
// X Y Z [ \ ] ^ _
|
||||
CA_X, CA_Y, CA_Z, CA_9, CA_SLSH, CA_0, CA_CIRC, CA_MINS,
|
||||
// ` a b c d e f g
|
||||
CA_CIRC, CA_A, CA_B, CA_C, CA_D, CA_E, CA_F, CA_G,
|
||||
// h i j k l m n o
|
||||
CA_H, CA_I, CA_J, CA_K, CA_L, CA_M, CA_N, CA_O,
|
||||
// p q r s t u v w
|
||||
CA_P, CA_Q, CA_R, CA_S, CA_T, CA_U, CA_V, CA_W,
|
||||
// x y z { | } ~ DEL
|
||||
CA_X, CA_Y, CA_Z, CA_7, CA_SLSH, CA_8, CA_CCED, KC_DEL
|
||||
};
|
||||
@@ -794,6 +794,7 @@ enum quantum_keycodes {
|
||||
# define SH_T(kc) (QK_SWAP_HANDS | (kc))
|
||||
# define SH_TG (QK_SWAP_HANDS | OP_SH_TOGGLE)
|
||||
# define SH_TT (QK_SWAP_HANDS | OP_SH_TAP_TOGGLE)
|
||||
# define SH_OS (QK_SWAP_HANDS | OP_SH_ONESHOT)
|
||||
# define SH_MON (QK_SWAP_HANDS | OP_SH_ON_OFF)
|
||||
# define SH_MOFF (QK_SWAP_HANDS | OP_SH_OFF_ON)
|
||||
# define SH_ON (QK_SWAP_HANDS | OP_SH_ON)
|
||||
|
||||
@@ -613,7 +613,7 @@ void rgblight_sethsv_slave(uint8_t hue, uint8_t sat, uint8_t val) { rgblight_set
|
||||
|
||||
#ifdef RGBLIGHT_LAYERS
|
||||
void rgblight_set_layer_state(uint8_t layer, bool enabled) {
|
||||
uint8_t mask = 1 << layer;
|
||||
rgblight_layer_mask_t mask = 1 << layer;
|
||||
if (enabled) {
|
||||
rgblight_status.enabled_layer_mask |= mask;
|
||||
} else {
|
||||
@@ -627,7 +627,7 @@ void rgblight_set_layer_state(uint8_t layer, bool enabled) {
|
||||
}
|
||||
|
||||
bool rgblight_get_layer_state(uint8_t layer) {
|
||||
uint8_t mask = 1 << layer;
|
||||
rgblight_layer_mask_t mask = 1 << layer;
|
||||
return (rgblight_status.enabled_layer_mask & mask) != 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -196,7 +196,20 @@ typedef struct {
|
||||
# define RGBLIGHT_END_SEGMENT_INDEX (255)
|
||||
# define RGBLIGHT_END_SEGMENTS \
|
||||
{ RGBLIGHT_END_SEGMENT_INDEX, 0, 0, 0 }
|
||||
# define RGBLIGHT_MAX_LAYERS 8
|
||||
# ifndef RGBLIGHT_MAX_LAYERS
|
||||
# define RGBLIGHT_MAX_LAYERS 8
|
||||
# endif
|
||||
# if RGBLIGHT_MAX_LAYERS <= 0
|
||||
# error invalid RGBLIGHT_MAX_LAYERS value (must be >= 1)
|
||||
# elif RGBLIGHT_MAX_LAYERS <= 8
|
||||
typedef uint8_t rgblight_layer_mask_t;
|
||||
# elif RGBLIGHT_MAX_LAYERS <= 16
|
||||
typedef uint16_t rgblight_layer_mask_t;
|
||||
# elif RGBLIGHT_MAX_LAYERS <= 32
|
||||
typedef uint32_t rgblight_layer_mask_t;
|
||||
# else
|
||||
# error invalid RGBLIGHT_MAX_LAYERS value (must be <= 32)
|
||||
# endif
|
||||
# define RGBLIGHT_LAYER_SEGMENTS(...) \
|
||||
{ __VA_ARGS__, RGBLIGHT_END_SEGMENTS }
|
||||
# define RGBLIGHT_LAYERS_LIST(...) \
|
||||
@@ -247,7 +260,7 @@ typedef struct _rgblight_status_t {
|
||||
uint8_t change_flags;
|
||||
# endif
|
||||
# ifdef RGBLIGHT_LAYERS
|
||||
uint8_t enabled_layer_mask;
|
||||
rgblight_layer_mask_t enabled_layer_mask;
|
||||
# endif
|
||||
} rgblight_status_t;
|
||||
|
||||
|
||||
@@ -156,17 +156,20 @@ dfu-split-right: $(BUILD_DIR)/$(TARGET).hex cpfirmware check-size
|
||||
define EXEC_AVRDUDE
|
||||
USB= ;\
|
||||
if $(GREP) -q -s Microsoft /proc/version; then \
|
||||
echo 'ERROR: AVR flashing cannot be automated within the Windows Subsystem for Linux (WSL) currently. Instead, take the .hex file generated and flash it using AVRDUDE, AVRDUDESS, or XLoader.'; \
|
||||
echo 'ERROR: AVR flashing cannot be automated within the Windows Subsystem for Linux (WSL) currently. Instead, take the .hex file generated and flash it using QMK Toolbox, AVRDUDE, AVRDUDESS, or XLoader.'; \
|
||||
else \
|
||||
printf "Detecting USB port, reset your controller now."; \
|
||||
ls /dev/tty* > /tmp/1; \
|
||||
TMP1=`mktemp`; \
|
||||
TMP2=`mktemp`; \
|
||||
ls /dev/tty* > $$TMP1; \
|
||||
while [ -z $$USB ]; do \
|
||||
sleep 0.5; \
|
||||
printf "."; \
|
||||
ls /dev/tty* > /tmp/2; \
|
||||
USB=`comm -13 /tmp/1 /tmp/2 | $(GREP) -o '/dev/tty.*'`; \
|
||||
mv /tmp/2 /tmp/1; \
|
||||
ls /dev/tty* > $$TMP2; \
|
||||
USB=`comm -13 $$TMP1 $$TMP2 | $(GREP) -o '/dev/tty.*'`; \
|
||||
mv $$TMP2 $$TMP1; \
|
||||
done; \
|
||||
rm $$TMP2 $$TMP1; \
|
||||
echo ""; \
|
||||
echo "Device $$USB has appeared; assuming it is the controller."; \
|
||||
if $(GREP) -q -s 'MINGW\|MSYS' /proc/version; then \
|
||||
|
||||
@@ -98,6 +98,11 @@ void action_exec(keyevent_t event) {
|
||||
if (has_oneshot_mods_timed_out()) {
|
||||
clear_oneshot_mods();
|
||||
}
|
||||
# ifdef SWAP_HANDS_ENABLE
|
||||
if (has_oneshot_swaphands_timed_out()) {
|
||||
clear_oneshot_swaphands();
|
||||
}
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
@@ -165,6 +170,8 @@ void process_record_tap_hint(keyrecord_t *record) {
|
||||
# ifdef SWAP_HANDS_ENABLE
|
||||
case ACT_SWAP_HANDS:
|
||||
switch (action.swap.code) {
|
||||
case OP_SH_ONESHOT:
|
||||
break;
|
||||
case OP_SH_TAP_TOGGLE:
|
||||
default:
|
||||
swap_hands = !swap_hands;
|
||||
@@ -224,7 +231,11 @@ void process_action(keyrecord_t *record, action_t action) {
|
||||
#ifndef NO_ACTION_ONESHOT
|
||||
bool do_release_oneshot = false;
|
||||
// notice we only clear the one shot layer if the pressed key is not a modifier.
|
||||
if (is_oneshot_layer_active() && event.pressed && !IS_MOD(action.key.code)) {
|
||||
if (is_oneshot_layer_active() && event.pressed && !IS_MOD(action.key.code)
|
||||
# ifdef SWAP_HANDS_ENABLE
|
||||
&& !(action.kind.id == ACT_SWAP_HANDS && action.swap.code == OP_SH_ONESHOT)
|
||||
# endif
|
||||
) {
|
||||
clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED);
|
||||
do_release_oneshot = !is_oneshot_layer_active();
|
||||
}
|
||||
@@ -593,6 +604,14 @@ void process_action(keyrecord_t *record, action_t action) {
|
||||
swap_hands = false;
|
||||
}
|
||||
break;
|
||||
case OP_SH_ONESHOT:
|
||||
if (event.pressed) {
|
||||
set_oneshot_swaphands();
|
||||
} else {
|
||||
release_oneshot_swaphands();
|
||||
}
|
||||
break;
|
||||
|
||||
# ifndef NO_ACTION_TAPPING
|
||||
case OP_SH_TAP_TOGGLE:
|
||||
/* tap toggle */
|
||||
@@ -681,6 +700,12 @@ void process_action(keyrecord_t *record, action_t action) {
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef SWAP_HANDS_ENABLE
|
||||
if (event.pressed && !(action.kind.id == ACT_SWAP_HANDS && action.swap.code == OP_SH_ONESHOT)) {
|
||||
use_oneshot_swaphands();
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef NO_ACTION_ONESHOT
|
||||
/* Because we switch layers after a oneshot event, we need to release the
|
||||
* key before we leave the layer or no key up event will be generated.
|
||||
|
||||
@@ -294,11 +294,13 @@ enum swap_hands_param_tap_op {
|
||||
OP_SH_OFF_ON,
|
||||
OP_SH_OFF,
|
||||
OP_SH_ON,
|
||||
OP_SH_ONESHOT,
|
||||
};
|
||||
|
||||
#define ACTION_SWAP_HANDS() ACTION_SWAP_HANDS_ON_OFF()
|
||||
#define ACTION_SWAP_HANDS_TOGGLE() ACTION(ACT_SWAP_HANDS, OP_SH_TOGGLE)
|
||||
#define ACTION_SWAP_HANDS_TAP_TOGGLE() ACTION(ACT_SWAP_HANDS, OP_SH_TAP_TOGGLE)
|
||||
#define ACTION_SWAP_HANDS_ONESHOT() ACTION(ACT_SWAP_HANDS, OP_SH_ONESHOT)
|
||||
#define ACTION_SWAP_HANDS_TAP_KEY(key) ACTION(ACT_SWAP_HANDS, key)
|
||||
#define ACTION_SWAP_HANDS_ON_OFF() ACTION(ACT_SWAP_HANDS, OP_SH_ON_OFF)
|
||||
#define ACTION_SWAP_HANDS_OFF_ON() ACTION(ACT_SWAP_HANDS, OP_SH_OFF_ON)
|
||||
|
||||
@@ -257,7 +257,7 @@ uint8_t layer_switch_get_layer(keypos_t key) {
|
||||
|
||||
layer_state_t layers = layer_state | default_layer_state;
|
||||
/* check top layer first */
|
||||
for (int8_t i = sizeof(layer_state_t) * 8 - 1; i >= 0; i--) {
|
||||
for (int8_t i = MAX_LAYER - 1; i >= 0; i--) {
|
||||
if (layers & (1UL << i)) {
|
||||
action = action_for_key(i, key);
|
||||
if (action.code != ACTION_TRANSPARENT) {
|
||||
|
||||
@@ -23,12 +23,24 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
#if defined(LAYER_STATE_8BIT)
|
||||
typedef uint8_t layer_state_t;
|
||||
# define MAX_LAYER_BITS 3
|
||||
# ifndef MAX_LAYER
|
||||
# define MAX_LAYER 8
|
||||
# endif
|
||||
# define get_highest_layer(state) biton(state)
|
||||
#elif defined(LAYER_STATE_16BIT)
|
||||
typedef uint16_t layer_state_t;
|
||||
# define MAX_LAYER_BITS 4
|
||||
# ifndef MAX_LAYER
|
||||
# define MAX_LAYER 16
|
||||
# endif
|
||||
# define get_highest_layer(state) biton16(state)
|
||||
#else
|
||||
typedef uint32_t layer_state_t;
|
||||
# define MAX_LAYER_BITS 5
|
||||
# ifndef MAX_LAYER
|
||||
# define MAX_LAYER 32
|
||||
# endif
|
||||
# define get_highest_layer(state) biton32(state)
|
||||
#endif
|
||||
|
||||
@@ -96,8 +108,7 @@ layer_state_t layer_state_set_kb(layer_state_t state);
|
||||
|
||||
/* pressed actions cache */
|
||||
#if !defined(NO_ACTION_LAYER) && !defined(STRICT_LAYER_RELEASE)
|
||||
/* The number of bits needed to represent the layer number: log2(32). */
|
||||
# define MAX_LAYER_BITS 5
|
||||
|
||||
void update_source_layers_cache(keypos_t key, uint8_t layer);
|
||||
uint8_t read_source_layers_cache(keypos_t key);
|
||||
#endif
|
||||
|
||||
@@ -83,9 +83,63 @@ static int8_t oneshot_layer_data = 0;
|
||||
inline uint8_t get_oneshot_layer(void) { return oneshot_layer_data >> 3; }
|
||||
inline uint8_t get_oneshot_layer_state(void) { return oneshot_layer_data & 0b111; }
|
||||
|
||||
# ifdef SWAP_HANDS_ENABLE
|
||||
enum {
|
||||
SHO_OFF,
|
||||
SHO_ACTIVE, // Swap hands button was pressed, and we didn't send any swapped keys yet
|
||||
SHO_PRESSED, // Swap hands button is currently pressed
|
||||
SHO_USED, // Swap hands button is still pressed, and we already sent swapped keys
|
||||
} swap_hands_oneshot = SHO_OFF;
|
||||
# endif
|
||||
|
||||
# if (defined(ONESHOT_TIMEOUT) && (ONESHOT_TIMEOUT > 0))
|
||||
static uint16_t oneshot_layer_time = 0;
|
||||
inline bool has_oneshot_layer_timed_out() { return TIMER_DIFF_16(timer_read(), oneshot_layer_time) >= ONESHOT_TIMEOUT && !(get_oneshot_layer_state() & ONESHOT_TOGGLED); }
|
||||
# ifdef SWAP_HANDS_ENABLE
|
||||
static uint16_t oneshot_swaphands_time = 0;
|
||||
inline bool has_oneshot_swaphands_timed_out() { return TIMER_DIFF_16(timer_read(), oneshot_swaphands_time) >= ONESHOT_TIMEOUT && !(swap_hands_oneshot >= SHO_PRESSED); }
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# ifdef SWAP_HANDS_ENABLE
|
||||
|
||||
void set_oneshot_swaphands(void) {
|
||||
swap_hands_oneshot = SHO_PRESSED;
|
||||
swap_hands = true;
|
||||
# if (defined(ONESHOT_TIMEOUT) && (ONESHOT_TIMEOUT > 0))
|
||||
oneshot_swaphands_time = timer_read();
|
||||
if (oneshot_layer_time != 0) {
|
||||
oneshot_layer_time = oneshot_swaphands_time;
|
||||
}
|
||||
# endif
|
||||
}
|
||||
|
||||
void release_oneshot_swaphands(void) {
|
||||
if (swap_hands_oneshot == SHO_PRESSED) {
|
||||
swap_hands_oneshot = SHO_ACTIVE;
|
||||
}
|
||||
if (swap_hands_oneshot == SHO_USED) {
|
||||
clear_oneshot_swaphands();
|
||||
}
|
||||
}
|
||||
|
||||
void use_oneshot_swaphands(void) {
|
||||
if (swap_hands_oneshot == SHO_PRESSED) {
|
||||
swap_hands_oneshot = SHO_USED;
|
||||
}
|
||||
if (swap_hands_oneshot == SHO_ACTIVE) {
|
||||
clear_oneshot_swaphands();
|
||||
}
|
||||
}
|
||||
|
||||
void clear_oneshot_swaphands(void) {
|
||||
swap_hands_oneshot = SHO_OFF;
|
||||
swap_hands = false;
|
||||
# if (defined(ONESHOT_TIMEOUT) && (ONESHOT_TIMEOUT > 0))
|
||||
oneshot_swaphands_time = 0;
|
||||
# endif
|
||||
}
|
||||
|
||||
# endif
|
||||
|
||||
/** \brief Set oneshot layer
|
||||
|
||||
@@ -77,6 +77,7 @@ void reset_oneshot_layer(void);
|
||||
bool is_oneshot_layer_active(void);
|
||||
uint8_t get_oneshot_layer_state(void);
|
||||
bool has_oneshot_layer_timed_out(void);
|
||||
bool has_oneshot_swaphands_timed_out(void);
|
||||
|
||||
void oneshot_locked_mods_changed_user(uint8_t mods);
|
||||
void oneshot_locked_mods_changed_kb(uint8_t mods);
|
||||
@@ -88,6 +89,13 @@ void oneshot_layer_changed_kb(uint8_t layer);
|
||||
/* inspect */
|
||||
uint8_t has_anymod(void);
|
||||
|
||||
#ifdef SWAP_HANDS_ENABLE
|
||||
void set_oneshot_swaphands(void);
|
||||
void release_oneshot_swaphands(void);
|
||||
void use_oneshot_swaphands(void);
|
||||
void clear_oneshot_swaphands(void);
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -43,12 +43,15 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
enum usb_interfaces {
|
||||
KEYBOARD_INTERFACE = NEXT_INTERFACE,
|
||||
#if (defined(MOUSE_ENABLE) || defined(EXTRAKEY_ENABLE))
|
||||
MOUSE_EXTRA_INTERFACE = NEXT_INTERFACE,
|
||||
#endif
|
||||
// It is important that the Raw HID interface is at a constant
|
||||
// interface number, to support Linux/OSX platforms and chrome.hid
|
||||
// If Raw HID is enabled, let it be always 1.
|
||||
#ifdef RAW_ENABLE
|
||||
RAW_INTERFACE = NEXT_INTERFACE,
|
||||
#endif
|
||||
#if (defined(MOUSE_ENABLE) || defined(EXTRAKEY_ENABLE))
|
||||
MOUSE_EXTRA_INTERFACE = NEXT_INTERFACE,
|
||||
#endif
|
||||
#ifdef CONSOLE_ENABLE
|
||||
CONSOLE_INTERFACE = NEXT_INTERFACE,
|
||||
#endif
|
||||
@@ -404,6 +407,29 @@ const PROGMEM uchar keyboard_hid_report[] = {
|
||||
0xC0 // End Collection
|
||||
};
|
||||
|
||||
#ifdef RAW_ENABLE
|
||||
const PROGMEM uchar raw_hid_report[] = {
|
||||
0x06, 0x60, 0xFF, // Usage Page (Vendor Defined)
|
||||
0x09, 0x61, // Usage (Vendor Defined)
|
||||
0xA1, 0x01, // Collection (Application)
|
||||
// Data to host
|
||||
0x09, 0x62, // Usage (Vendor Defined)
|
||||
0x15, 0x00, // Logical Minimum (0)
|
||||
0x26, 0xFF, 0x00, // Logical Maximum (255)
|
||||
0x95, RAW_BUFFER_SIZE, // Report Count
|
||||
0x75, 0x08, // Report Size (8)
|
||||
0x81, 0x02, // Input (Data, Variable, Absolute)
|
||||
// Data from host
|
||||
0x09, 0x63, // Usage (Vendor Defined)
|
||||
0x15, 0x00, // Logical Minimum (0)
|
||||
0x26, 0xFF, 0x00, // Logical Maximum (255)
|
||||
0x95, RAW_BUFFER_SIZE, // Report Count
|
||||
0x75, 0x08, // Report Size (8)
|
||||
0x91, 0x02, // Output (Data, Variable, Absolute)
|
||||
0xC0 // End Collection
|
||||
};
|
||||
#endif
|
||||
|
||||
#if defined(MOUSE_ENABLE) || defined(EXTRAKEY_ENABLE)
|
||||
const PROGMEM uchar mouse_extra_hid_report[] = {
|
||||
# ifdef MOUSE_ENABLE
|
||||
@@ -488,29 +514,6 @@ const PROGMEM uchar mouse_extra_hid_report[] = {
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef RAW_ENABLE
|
||||
const PROGMEM uchar raw_hid_report[] = {
|
||||
0x06, 0x60, 0xFF, // Usage Page (Vendor Defined)
|
||||
0x09, 0x61, // Usage (Vendor Defined)
|
||||
0xA1, 0x01, // Collection (Application)
|
||||
// Data to host
|
||||
0x09, 0x62, // Usage (Vendor Defined)
|
||||
0x15, 0x00, // Logical Minimum (0)
|
||||
0x26, 0xFF, 0x00, // Logical Maximum (255)
|
||||
0x95, RAW_BUFFER_SIZE, // Report Count
|
||||
0x75, 0x08, // Report Size (8)
|
||||
0x81, 0x02, // Input (Data, Variable, Absolute)
|
||||
// Data from host
|
||||
0x09, 0x63, // Usage (Vendor Defined)
|
||||
0x15, 0x00, // Logical Minimum (0)
|
||||
0x26, 0xFF, 0x00, // Logical Maximum (255)
|
||||
0x95, RAW_BUFFER_SIZE, // Report Count
|
||||
0x75, 0x08, // Report Size (8)
|
||||
0x91, 0x02, // Output (Data, Variable, Absolute)
|
||||
0xC0 // End Collection
|
||||
};
|
||||
#endif
|
||||
|
||||
#if defined(CONSOLE_ENABLE)
|
||||
const PROGMEM uchar console_hid_report[] = {
|
||||
0x06, 0x31, 0xFF, // Usage Page (Vendor Defined - PJRC Teensy compatible)
|
||||
@@ -657,46 +660,10 @@ const PROGMEM usbConfigurationDescriptor_t usbConfigurationDescriptor = {
|
||||
.bInterval = USB_POLLING_INTERVAL_MS
|
||||
},
|
||||
|
||||
# if defined(MOUSE_ENABLE) || defined(EXTRAKEY_ENABLE)
|
||||
/*
|
||||
* Mouse/Extrakeys
|
||||
*/
|
||||
.mouseExtraInterface = {
|
||||
.header = {
|
||||
.bLength = sizeof(usbInterfaceDescriptor_t),
|
||||
.bDescriptorType = USBDESCR_INTERFACE
|
||||
},
|
||||
.bInterfaceNumber = MOUSE_EXTRA_INTERFACE,
|
||||
.bAlternateSetting = 0x00,
|
||||
.bNumEndpoints = 1,
|
||||
.bInterfaceClass = 0x03,
|
||||
.bInterfaceSubClass = 0x00,
|
||||
.bInterfaceProtocol = 0x00,
|
||||
.iInterface = 0x00
|
||||
},
|
||||
.mouseExtraHID = {
|
||||
.header = {
|
||||
.bLength = sizeof(usbHIDDescriptor_t),
|
||||
.bDescriptorType = USBDESCR_HID
|
||||
},
|
||||
.bcdHID = 0x0101,
|
||||
.bCountryCode = 0x00,
|
||||
.bNumDescriptors = 1,
|
||||
.bDescriptorType = USBDESCR_HID_REPORT,
|
||||
.wDescriptorLength = sizeof(mouse_extra_hid_report)
|
||||
},
|
||||
.mouseExtraINEndpoint = {
|
||||
.header = {
|
||||
.bLength = sizeof(usbEndpointDescriptor_t),
|
||||
.bDescriptorType = USBDESCR_ENDPOINT
|
||||
},
|
||||
.bEndpointAddress = (USBRQ_DIR_DEVICE_TO_HOST | USB_CFG_EP3_NUMBER),
|
||||
.bmAttributes = 0x03,
|
||||
.wMaxPacketSize = 8,
|
||||
.bInterval = USB_POLLING_INTERVAL_MS
|
||||
},
|
||||
# endif
|
||||
# if defined(RAW_ENABLE)
|
||||
/*
|
||||
* RAW HID
|
||||
*/
|
||||
.rawInterface = {
|
||||
.header = {
|
||||
.bLength = sizeof(usbInterfaceDescriptor_t),
|
||||
@@ -742,6 +709,45 @@ const PROGMEM usbConfigurationDescriptor_t usbConfigurationDescriptor = {
|
||||
.bInterval = USB_POLLING_INTERVAL_MS
|
||||
},
|
||||
# endif
|
||||
# if defined(MOUSE_ENABLE) || defined(EXTRAKEY_ENABLE)
|
||||
/*
|
||||
* Mouse/Extrakeys
|
||||
*/
|
||||
.mouseExtraInterface = {
|
||||
.header = {
|
||||
.bLength = sizeof(usbInterfaceDescriptor_t),
|
||||
.bDescriptorType = USBDESCR_INTERFACE
|
||||
},
|
||||
.bInterfaceNumber = MOUSE_EXTRA_INTERFACE,
|
||||
.bAlternateSetting = 0x00,
|
||||
.bNumEndpoints = 1,
|
||||
.bInterfaceClass = 0x03,
|
||||
.bInterfaceSubClass = 0x00,
|
||||
.bInterfaceProtocol = 0x00,
|
||||
.iInterface = 0x00
|
||||
},
|
||||
.mouseExtraHID = {
|
||||
.header = {
|
||||
.bLength = sizeof(usbHIDDescriptor_t),
|
||||
.bDescriptorType = USBDESCR_HID
|
||||
},
|
||||
.bcdHID = 0x0101,
|
||||
.bCountryCode = 0x00,
|
||||
.bNumDescriptors = 1,
|
||||
.bDescriptorType = USBDESCR_HID_REPORT,
|
||||
.wDescriptorLength = sizeof(mouse_extra_hid_report)
|
||||
},
|
||||
.mouseExtraINEndpoint = {
|
||||
.header = {
|
||||
.bLength = sizeof(usbEndpointDescriptor_t),
|
||||
.bDescriptorType = USBDESCR_ENDPOINT
|
||||
},
|
||||
.bEndpointAddress = (USBRQ_DIR_DEVICE_TO_HOST | USB_CFG_EP3_NUMBER),
|
||||
.bmAttributes = 0x03,
|
||||
.wMaxPacketSize = 8,
|
||||
.bInterval = USB_POLLING_INTERVAL_MS
|
||||
},
|
||||
# endif
|
||||
# if defined(CONSOLE_ENABLE)
|
||||
/*
|
||||
* Console
|
||||
@@ -841,18 +847,18 @@ USB_PUBLIC usbMsgLen_t usbFunctionDescriptor(struct usbRequest *rq) {
|
||||
usbMsgPtr = (unsigned char *)&usbConfigurationDescriptor.keyboardHID;
|
||||
len = sizeof(usbHIDDescriptor_t);
|
||||
break;
|
||||
#if defined(MOUSE_ENABLE) || defined(EXTRAKEY_ENABLE)
|
||||
case MOUSE_EXTRA_INTERFACE:
|
||||
usbMsgPtr = (unsigned char *)&usbConfigurationDescriptor.mouseExtraHID;
|
||||
len = sizeof(usbHIDDescriptor_t);
|
||||
break;
|
||||
#endif
|
||||
#if defined(RAW_ENABLE)
|
||||
case RAW_INTERFACE:
|
||||
usbMsgPtr = (unsigned char *)&usbConfigurationDescriptor.rawHID;
|
||||
len = sizeof(usbHIDDescriptor_t);
|
||||
break;
|
||||
#endif
|
||||
#if defined(MOUSE_ENABLE) || defined(EXTRAKEY_ENABLE)
|
||||
case MOUSE_EXTRA_INTERFACE:
|
||||
usbMsgPtr = (unsigned char *)&usbConfigurationDescriptor.mouseExtraHID;
|
||||
len = sizeof(usbHIDDescriptor_t);
|
||||
break;
|
||||
#endif
|
||||
#if defined(CONSOLE_ENABLE)
|
||||
case CONSOLE_INTERFACE:
|
||||
usbMsgPtr = (unsigned char *)&usbConfigurationDescriptor.consoleHID;
|
||||
@@ -868,18 +874,18 @@ USB_PUBLIC usbMsgLen_t usbFunctionDescriptor(struct usbRequest *rq) {
|
||||
usbMsgPtr = (unsigned char *)keyboard_hid_report;
|
||||
len = sizeof(keyboard_hid_report);
|
||||
break;
|
||||
#if defined(MOUSE_ENABLE) || defined(EXTRAKEY_ENABLE)
|
||||
case MOUSE_EXTRA_INTERFACE:
|
||||
usbMsgPtr = (unsigned char *)mouse_extra_hid_report;
|
||||
len = sizeof(mouse_extra_hid_report);
|
||||
break;
|
||||
#endif
|
||||
#if defined(RAW_ENABLE)
|
||||
case RAW_INTERFACE:
|
||||
usbMsgPtr = (unsigned char *)raw_hid_report;
|
||||
len = sizeof(raw_hid_report);
|
||||
break;
|
||||
#endif
|
||||
#if defined(MOUSE_ENABLE) || defined(EXTRAKEY_ENABLE)
|
||||
case MOUSE_EXTRA_INTERFACE:
|
||||
usbMsgPtr = (unsigned char *)mouse_extra_hid_report;
|
||||
len = sizeof(mouse_extra_hid_report);
|
||||
break;
|
||||
#endif
|
||||
#if defined(CONSOLE_ENABLE)
|
||||
case CONSOLE_INTERFACE:
|
||||
usbMsgPtr = (unsigned char *)console_hid_report;
|
||||
|
||||
@@ -89,12 +89,6 @@ typedef struct usbConfigurationDescriptor {
|
||||
usbHIDDescriptor_t keyboardHID;
|
||||
usbEndpointDescriptor_t keyboardINEndpoint;
|
||||
|
||||
#if defined(MOUSE_ENABLE) || defined(EXTRAKEY_ENABLE)
|
||||
usbInterfaceDescriptor_t mouseExtraInterface;
|
||||
usbHIDDescriptor_t mouseExtraHID;
|
||||
usbEndpointDescriptor_t mouseExtraINEndpoint;
|
||||
#endif
|
||||
|
||||
#if defined(RAW_ENABLE)
|
||||
usbInterfaceDescriptor_t rawInterface;
|
||||
usbHIDDescriptor_t rawHID;
|
||||
@@ -102,6 +96,12 @@ typedef struct usbConfigurationDescriptor {
|
||||
usbEndpointDescriptor_t rawOUTEndpoint;
|
||||
#endif
|
||||
|
||||
#if defined(MOUSE_ENABLE) || defined(EXTRAKEY_ENABLE)
|
||||
usbInterfaceDescriptor_t mouseExtraInterface;
|
||||
usbHIDDescriptor_t mouseExtraHID;
|
||||
usbEndpointDescriptor_t mouseExtraINEndpoint;
|
||||
#endif
|
||||
|
||||
#if defined(CONSOLE_ENABLE)
|
||||
usbInterfaceDescriptor_t consoleInterface;
|
||||
usbHIDDescriptor_t consoleHID;
|
||||
|
||||
@@ -10,8 +10,13 @@ enum userspace_custom_layers {
|
||||
RSE,
|
||||
LWR,
|
||||
LFT,
|
||||
MOUSE
|
||||
MOUSE,
|
||||
TT1,
|
||||
TT2,
|
||||
TT3,
|
||||
T23X
|
||||
};
|
||||
#define BASE DV
|
||||
|
||||
enum userspace_custom_keycodes {
|
||||
PAWFIVE = SAFE_RANGE,
|
||||
@@ -34,9 +39,14 @@ enum userspace_custom_keycodes {
|
||||
// == Macro keys for commonly used apps
|
||||
// -- Slack
|
||||
// Move one conversation up/down
|
||||
#define SLACKTB LGUI(LSFT(KC_T))
|
||||
#define SLACKUP LALT(LSFT(KC_UP))
|
||||
#define SLACKDN LALT(LSFT(KC_DOWN))
|
||||
|
||||
// -- 1password
|
||||
#define PSWD LCTL(KC_BSLS)
|
||||
#define PSWD_ALT LCTL(LALT(KC_BSLS))
|
||||
|
||||
// -- Browser and OS X
|
||||
// Activate one tab left/right
|
||||
#define TAB_LFT LGUI(LSFT(KC_LBRC))
|
||||
@@ -52,6 +62,14 @@ enum userspace_custom_keycodes {
|
||||
// Make window fill the whole monitor
|
||||
#define SCR_FUL HYPR(KC_F)
|
||||
|
||||
// -- Windows variants of browser commanads
|
||||
// Activate one tab left/right
|
||||
#define WTABLFT LCTL(LSFT(KC_TAB))
|
||||
#define WTABRGT LCTL(KC_TAB)
|
||||
// Go back/forward in history
|
||||
#define WBWSRBK LALT(KC_LEFT)
|
||||
#define WBWSRFW LALT(KC_RGHT)
|
||||
|
||||
// == Extended alpha layer toggles
|
||||
// -- Dvorak
|
||||
// Pressing U opens up the LWR layer (numpad)
|
||||
|
||||
Reference in New Issue
Block a user