User space fixed (#3095)

* Put in my keymaps

* Fixed all but weird lets split issue

* Organized and tried to trobleshoot lets split

* Organized and tried to trobleshoot lets split

* Added bbaserdem keymaps

* Added bbaserdem keymaps

* Fixed stuff

* FIxed a filename error
This commit is contained in:
Batuhan Baserdem
2018-05-31 21:55:45 -04:00
committed by Drashna Jaelre
parent abce980b8b
commit 8eaf23ae81
24 changed files with 1425 additions and 489 deletions

View File

@@ -0,0 +1,11 @@
# Gherkin Layout
This is my gherkin layout.
It is used as a game pad, and key layout is inspired by spare keys I had lying around.
The firmware is very simple, and only includes one layer keymap, and RGB effects.
# Flashing
The following command should be used from the main qmk directory.
```
make gherkin:bbaserdem
sudo avrdude -p atmgea34u4 -P `ls /dev/ttyACM*` -c avr109 -U flash:.build/gherkin_bbaserdem.hex
```

View File

@@ -0,0 +1,13 @@
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
#include "../../config.h"
#define RGB_DI_PIN F6
#define RGBLED_NUM 10
#define RGBLIGHT_ANIMATIONS
#ifdef BACKLIGHT_LEVELS
#undef BACKLIGHT_LEVELS
#endif
#define BACKLIGHT_LEVELS 3
#endif

View File

@@ -0,0 +1,36 @@
// This is a game-pad gherkin layout with RGB and LED lights
#include "gherkin.h"
backlight_config_t backlight_config;
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Game pad
* ,-----------------------------------------------------------.
* | Esc | 1 | 2 | 3 | 4 | 5 | 6 | Ctl | Alt | ~ |
* |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
* | Tab | Q | W | E | R | T | |^| | ; | ' | / |
* |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
* | Shf | A | S | D | F | <-- | |v| | --> | , | . |
* `-----------------------------------------------------------'
*/
KEYMAP(
KC_ESCAPE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_LCTRL, KC_LALT, KC_GRAVE,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_UP, KC_SCLN, KC_QUOTE, KC_SLASH,
KC_LSHIFT, KC_A, KC_S, KC_D, KC_F, KC_LEFT, KC_DOWN, KC_RIGHT, KC_COMMA, KC_DOT
)
};
void matrix_init_user(void) {
// Set LED's to max
_delay_us(300);
backlight_config.level = 2;
backlight_config.enable = 1;
eeconfig_update_backlight(backlight_config.raw);
backlight_set(backlight_config.level);
// Set RGB to rainbow mood light
rgblight_enable();
rgblight_mode(1);
rgblight_sethsv(120,255,255);
rgblight_mode(6);
}

View File

@@ -0,0 +1,14 @@
ifndef QUANTUM_DIR
include ../../../../Makefile
endif
STENO_ENABLE = no # Additional protocols for Stenography(+1700), requires VIRTSER
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
EXTRAKEY_ENABLE = no # Audio control and System control(+450)
CONSOLE_ENABLE = no # Console for debug(+400)
COMMAND_ENABLE = no # Commands for debug and configuration
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
AUDIO_ENABLE = no # Enable audio output from keyboard
RGBLIGHT_ENABLE = yes # Enable RBG light strips
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality

View File

@@ -0,0 +1,27 @@
# Lets Split Layout
Check out [user readme](../../../../users/bbaserdem/README.md) for more info.
# Usage
**These commands depend on there being no other arduino connected!**
Also udev rules can be set instead of using sudo.
Please unplug all other usb devices.
To make the hex files;
```
make lets_split/rev2:bbaserdem
make lets_split/rev2:bbaserdem_right
```
For the left half, after plugging in and resetting; (from repo main directory)
```
sudo avrdude -p atmega32u4 -P "$(ls /dev/ttyACM*)" -c avr109 -D -U flash:w:.build/lets_split_rev2_bbaserdem.hex
sudo avrdude -p atmega32u4 -P "$(ls /dev/ttyACM*)" -c avr109 -U eeprom:w:keyboards/lets_split/eeprom-lefthand.eep
```
For the right half;
```
sudo avrdude -p atmgea34u4 -P "$(ls /dev/ttyACM*)" -c avr109 -D -U flash:w:.build/lets_split_rev2_bbaserdem_right.hex
sudo avrdude -p atmega32u4 -P "$(ls /dev/ttyACM*)" -c avr109 -U eeprom:w:keyboards/lets_split/eeprom-righhand.eep
```

View File

@@ -0,0 +1,27 @@
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
#include "../../config.h"
#define USE_SERIAL
#define EE_HANDS
// LED strip stuff
#ifdef RGBLIGHT_ENABLE
// Who thought it was a good idea to predefine these in the rev2/config.h ???
#ifdef RGBLED_NUM
#undef RGBLED_NUM
#endif
#define RGBLED_NUM 12
#define RGBLIGHT_HUE_STEP 6
#define RGBLIGHT_SAT_STEP 12
#define RGBLIGHT_VAL_STEP 20
#define RGBLIGHT_ANIMATIONS
#define RGBLIGHT_EFFECT_SNAKE_LENGTH 6
#define RGBLIGHT_EFFECT_CHRISTMAS_INTERVAL 2000
#define RGBLIGHT_EFFECT_CHRISTMAS_STEP 1
#endif
#endif

View File

@@ -0,0 +1,37 @@
/*
* Let's Split - Dvorak turkish
* Keymap by @bbaserdem
* Dvorak layout with multiple features
* Most of the code is in the "user" directory.
* Check qmk_firmware/users/bbaserdem for the main part of the code
*/
#define KEYMAP(...) LAYOUT_ortho_4x12(__VA_ARGS__)
#include "lets_split.h"
#include "bbaserdem.h"
void matrix_init_keymap (void) {
}
uint32_t layer_state_set_keymap(uint32_t state) {
return state;
}
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Main Dvorak layer
[_DV] = DVORAK,
// Turkish and special character overlay
[_AL] = ALTCHAR,
// Gaming layer
[_GA] = GAME,
// Numbers layer
[_NU] = NUMBERS,
// Settings layer
[_SE] = SETTINGS,
// Mouse emulation layer
[_MO] = MOUSE,
#ifdef AUDIO_ENABLE
[_MU] = MUSIC,
#endif
};

View File

@@ -0,0 +1,11 @@
# Build options
BACKLIGHT_ENABLE = no # Switch LEDs
MOUSEKEY_ENABLE = yes # Emulates mouse key using keypresses
RGBLIGHT_ENABLE = yes # LED strips
TAP_DANCE_ENABLE = no # Use multi-tap features
AUDIO_ENABLE = no # Audio stuff
ifndef QUANTUM_DIR
include ../../../../Makefile
endif

View File

@@ -0,0 +1,5 @@
# Lets Split - Right Half
Keymap for my right half, to be used as a numpad.
Check [main readme](../bbaserdem/README.md) for flashing info.

View File

@@ -0,0 +1,9 @@
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
#include "../../config.h"
#define USE_SERIAL
#define EE_HANDS
#endif

View File

@@ -0,0 +1,35 @@
/*
* Let's Split - Dvorak turkish
* Keymap by @bbaserdem
* Dvorak layout with multiple features
* Most of the code is in the "user" directory.
* Check qmk_firmware/users/bbaserdem for the main part of the code
*/
#include "lets_split.h"
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Navigation All Supered) Numpad
* ,-----------------------. ,-----------------------.
* | F4| ` | Q |Alt| L | > | | ) | - | + | = |Ent|Bkp|
* |---+---+---+---+---+---| |---+---+---+---+---+---|
* | F3| M |Ent|Ctl| K | ^ | | ( | * | 9 | 6 | 3 | . |
* |---+---+---+---+---+---| |---+---+---+---+---+---|
* | F2| T |Spc|Shf| J | v | | % | / | 8 | 5 | 2 | , |
* |---+---+---+---+---+---| |---+---+---+---+---+---|
* | F1| F | P |Tab| H | < | |Nlc|Tab| 7 | 4 | 1 | 0 |
* `-----------------------' `-----------------------'
*/
// Main Dvorak layer
[0] = KEYMAP(
LGUI(KC_F4), LGUI(KC_GRV), LGUI(KC_Q), LGUI(KC_LALT), LGUI(KC_L), LGUI(KC_RGHT),
KC_RPRN, KC_PMNS, KC_PPLS, KC_PEQL, KC_PENT, KC_BSPC,
LGUI(KC_F3), LGUI(KC_M), LGUI(KC_ENT), LGUI(KC_LCTL), LGUI(KC_K), LGUI(KC_UP),
KC_LPRN, KC_PAST, KC_P9, KC_P6, KC_P3, KC_PDOT,
LGUI(KC_F2), LGUI(KC_T), LGUI(KC_SPC), LGUI(KC_LSFT), LGUI(KC_J), LGUI(KC_DOWN),
KC_PERC, KC_PSLS, KC_P8, KC_P5, KC_P2, KC_PCMM,
LGUI(KC_F1), LGUI(KC_F), LGUI(KC_P), LGUI(KC_TAB), LGUI(KC_H), LGUI(KC_LEFT),
KC_NLCK, KC_TAB, KC_P7, KC_P4, KC_P1, KC_P0 )
};

View File

@@ -0,0 +1,24 @@
# Build options
BACKLIGHT_ENABLE = no # Switch LEDs
MOUSEKEY_ENABLE = no # Emulates mouse key using keypresses
RGBLIGHT_ENABLE = no # LED strips
TAP_DANCE_ENABLE = no # Use multi-tap features
AUDIO_ENABLE = no # Audio stuff
BLUETOOTH_ENABLE = no # No bluetooth
COMMAND_ENABLE = no # Some bootmagic thing
BOOTMAGIC_ENABLE = no # Access to EEPROM settings, not needed
CONSOLE_ENABLE = no # Allows console output with a command
SLEEP_LED_ENABLE = no # Breathes LED's when computer is asleep. Untested.
NKRO_ENABLE = no # Default is 6KRO which is plenty
MIDI_ENABLE = no # Untested feature
FAUXCLICKY_ENABLE = no # Emulates clicks using speaker
KEY_LOCK_ENABLE = no # Allows locking any key. Not used
API_SYSEX_ENABLE = no # Allows OS to send signals.
KEY_LOCK_ENABLE = no # Allows locking any key. Not used
UNICODE_ENABLE = no # Used for unicode character emulation
EXTRAKEY_ENABLE = no # OS signals like volume control
ifndef QUANTUM_DIR
include ../../../../Makefile
endif

View File

@@ -1,35 +1,15 @@
# Planck Layout
Built this planck layout to use DVORAK with an unorthodox Turkish layout.
If you used a previous layout with a persistent base layer change,
change it to 0 before proceeding.
The layout has the following functionality
Current keymap is for rev4.
Audio is disabled in favor of RGB.
Check out [user readme](../../../../users/bbaserdem/README.md) for more info.
* **QWERTY** can be toggled on/off from **Function** layer.
* **Mouse** layer allows manipulation of the mouse.
* **Function** layer has F and special keys.
* **Symbol** layer has numericals and symbols.
* **Game** layout can be toggled on/off from **Function** layer.
* **Music** layer allows playing sounds like a keyboard.
# Build
Double tapping **Mouse**, **Function** and **Symbol** layers activate them until deacivation.
Topleftmost key turns off **Function**, **Symbol**, **Game** and **Music** layers,
and puts the board into *reset* mode from the **Mouse** layer.
Get keyboard into reset mode, and then;
# Using Turkish letters
```
make planck/rev4:bbaserdem:dfu
```
Instead of a turkish F keyboard layout (very inconvenient to code in),
I opted to modulate characters like an *AltGr* impleentation.
Tap and holding *Alt* on **DVORAK** and **QWERTY** layer will change some letters
to Turkish equivelants.
Shifting these letters will work.
The keycodes should transmit the correct unicode characters combined with shift.
The turkish letters are sent via the unicode implementation.
No software layout change is neccessary (hence making coding easier).
By default, the unicode is set to Linux mode. Switch to windows (non-persistent)
can be done from the associated key in **Function** layer.
**Symbol** layer also has the symbol for Turkish Lira.
# To improve
I want to write a couple pieces of my own music for layer switching.
Either use sudo or set up udev rules.

50
keyboards/planck/keymaps/bbaserdem/config.h Normal file → Executable file
View File

@@ -3,42 +3,20 @@
#include "../../config.h"
#ifdef AUDIO_ENABLE
// Compose own song in future
#define STARTUP_SONG SONG(PLANCK_SOUND)
#define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \
SONG(COLEMAK_SOUND), \
SONG(DVORAK_SOUND) \
}
// LED strip stuff
#ifdef RGBLIGHT_ENABLE
#define RGB_DI_PIN B2
#define RGBLED_NUM 12
#define RGBLIGHT_HUE_STEP 6
#define RGBLIGHT_SAT_STEP 12
#define RGBLIGHT_VAL_STEP 20
#define RGBLIGHT_ANIMATIONS
#define RGBLIGHT_EFFECT_SNAKE_LENGTH 6
#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
#define RGBLIGHT_EFFECT_KNIGHT_OFFSET 6
#define RGBLIGHT_EFFECT_KNIGHT_LED_NUM 6
#define RGBLIGHT_EFFECT_CHRISTMAS_INTERVAL 2000
#define RGBLIGHT_EFFECT_CHRISTMAS_STEP 1
#endif
// Enables tap magic
#define TAPPING_TERM 300
#define TAPPING_TOGGLE 1
/*
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/
#define MIDI_BASIC
/* enable advanced MIDI features:
- MIDI notes can be added to the keymap
- Octave shift and transpose
- Virtual sustain, portamento, and modulation wheel
- etc.
*/
//#define MIDI_ADVANCED
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
//#define MIDI_TONE_KEYCODE_OCTAVES 2
#endif

430
keyboards/planck/keymaps/bbaserdem/keymap.c Normal file → Executable file
View File

@@ -1,413 +1,29 @@
/* Copyright 2015-2017 Jack Humbert
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
/*
* PLANCK - Dvorak turkish
* Keymap by @bbaserdem
* Dvorak layout with multiple features
* Most of the code is in the "user" directory.
* Check qmk_firmware/users/bbaserdem for the main part of the code
*/
#include "planck.h"
#define _______ KC_TRNS
#define XXX KC_NO
#define _DV 0
#define _TD 1
#define _GM 2
#define _MO 3
#define _SY 4
#define _FN 5
#define _MS 6
#define PARAN TD(PAR)
#define CURLY TD(CUR)
#define SQUAR TD(SQU)
#define ANGUL TD(ANG)
#define UNDO LCTL(KC_Z)
#define REDO LCTL(KC_Y)
#define COPYCUT TD(CPC)
#define PASTE LCTL(KC_V)
#define MO_SC_U KC_MS_WH_UP
#define MO_SC_D KC_MS_WH_DOWN
#define MO_SC_L KC_MS_WH_LEFT
#define MO_SC_R KC_MS_WH_RIGHT
#define MO_U KC_MS_UP
#define MO_D KC_MS_DOWN
#define MO_L KC_MS_LEFT
#define MO_R KC_MS_RIGHT
#define MO_CL_L KC_MS_BTN1
#define MO_CL_R KC_MS_BTN2
#define MO_CL_M KC_MS_BTN3
#define MO_CL_1 KC_MS_BTN4
#define MO_CL_2 KC_MS_BTN5
#define MO_AC_0 KC_MS_ACCEL0
#define MO_AC_1 KC_MS_ACCEL1
#define MO_AC_2 KC_MS_ACCEL2
#define PHY_HB UC(0x0127)
#define PHY_DE UC(0xc2b0)
#define TUR_TL UC(0x20ba)
#define EUR_ER UC(0x20ac)
#define EUR_PN UC(0x00a3)
enum custom_keycodes {
TUR_A = SAFE_RANGE,
TUR_C,
TUR_G,
TUR_I,
TUR_O,
TUR_S,
TUR_U,
UNI_LI,
UNI_WN
};
// Tap dance
enum {
ATD = 0,
CLS,
SCL,
QUO,
PAR,
CUR,
SQU,
ANG,
CPC
};
#include "bbaserdem.h"
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Dvorak
* ,------------------------------------------------------------------------.
* | Blt | " | , | . | P | Y || F | G | C | R | L | Bkp |
* |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
* | Esc | A | O | E | U | I || D | H | T | N | S | Del |
* |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
* |Sh\CL| ; : | Q | J | K | X || B | M | W | V | Z |MOUSE|
* |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
* | Ctl | Alt | Meta| Tab | SYM | Spc || Ent | FUN | Lft | Dwn | Up | Rgt |
* `------------------------------------------------------------------------'
*/
[_DV] = {
{BL_STEP,TD(QUO),KC_COMM,KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC},
{KC_ESC ,KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_DEL },
{TD(CLS),TD(SCL),KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, TT(_MO)},
{KC_LCTL,TD(ATD),KC_LGUI,KC_TAB, TT(_SY),KC_SPC, KC_ENT, TT(_FN),KC_LEFT,KC_DOWN,KC_UP, KC_RGHT}
},
[_TD] = {
{_______,_______,_______,_______,_______,_______,_______, TUR_G, TUR_C, _______,_______,_______},
{_______, TUR_A, TUR_O, _______, TUR_U, TUR_I, _______, PHY_HB,_______,_______, TUR_S, _______},
{_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______},
{_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______}
},
/* Game layer
* ,------------------------------------------------------------------------.
* | OFF | Q | W | E | R | T || F1 | F2 | Ctrl| ^ |Shift| Esc |
* |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
* | ~ | A | S | D | F | G || F3 | F4 | < | v | > |Enter|
* |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
* | Shf | Z | X | C | V | B || F5 | F6 | , | . | / ? | Alt |
* |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
* | Alt | Ctrl| ` ~ | - _ | | Spc || Spc | | 1 | 2 | 3 | 4 |
* `------------------------------------------------------------------------'
*/
[_GM] = {
{TG(_GM),KC_Q, KC_W, KC_E, KC_R, KC_T, KC_F1, KC_F2, KC_RCTL,KC_UP, KC_RSFT,KC_ESC },
{KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_F3, KC_F4, KC_LEFT,KC_DOWN,KC_RGHT,KC_ENT },
{KC_LSFT,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_F5, KC_F6, KC_COMM,KC_DOT, KC_SLSH,KC_RALT},
{KC_LALT,KC_LCTL,KC_GRV, KC_MINS,_______,KC_SPC, KC_SPC, _______,KC_1, KC_2, KC_3, KC_4 }
},
/* Mouse control layer
* ,------------------------------------------------------------------------.
* | |.....| ^ |.....|.....|Acc 2||.....|.....|.....| |^| |.....| |
* |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
* | | < | v | > |.....|Acc 1||.....|.....| <-- | |v| | --> | |
* |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
* | | Left| Mid |Right|.....|Acc 0||.....|.....|Btn 4|.....|Btn 5| |
* |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
* | | | | | | || | | | | | |
* `------------------------------------------------------------------------'
*/
[_MO] = {
{TG(_MO),XXX, MO_U, XXX, XXX, MO_AC_2,XXX, XXX, XXX, MO_SC_U,XXX, _______},
{_______,MO_L, MO_D, MO_R, XXX, MO_AC_1,XXX, XXX, MO_SC_L,MO_SC_D,MO_SC_R,_______},
{_______,MO_CL_L,MO_CL_M,MO_CL_R,XXX, MO_AC_0,XXX, XXX, MO_CL_1,XXX, MO_CL_2,_______},
{_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______}
},
/* Symbols layer
* ,------------------------------------------------------------------------.
* | OFF | ! | 1 | 2 | 3 | & || = | + | - | * | % | |
* |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
* | _ | ( ) | 4 | 5 | 6 | \ || / | [ ] | { } | < > | | | |
* |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
* |degre| ? | 7 | 8 | 9 | ~ || ` | @ | # | $ | ^ | |
* |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
* | | | | 0 | | || | |TLira| Euro|Pound| |
* `------------------------------------------------------------------------'
*/
[_SY] = {
{TG(_SY),KC_EXLM,KC_1, KC_2, KC_3, KC_AMPR,KC_EQL, KC_PLUS,KC_MINS,KC_ASTR,KC_PERC,_______},
{KC_UNDS,PARAN, KC_4, KC_5, KC_6, KC_BSLS,KC_SLSH,SQUAR, CURLY, ANGUL, KC_PIPE,_______},
{PHY_DE, KC_QUES,KC_7, KC_8, KC_9, KC_TILD,KC_GRV, KC_AT, KC_HASH,KC_DLR, KC_CIRC,_______},
{_______,_______,_______,KC_0, _______,_______,_______,_______,TUR_TL, EUR_ER, EUR_PN, _______}
},
/* Function layer
* ,------------------------------------------------------------------------.
* | OFF | game|music| | |RESET||RESET| win | lin | wake|sleep|power|
* |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
* | F1 | F2 | F3 | F4 | F5 | F6 || F7 | F8 | F9 | F10 | F11 | F12 |
* |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
* | | undo| redo|cutcp|paste|vol 0||prtsc| ins | rev.| stop| play| next|
* |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
* | | | | | |vol -||vol +| | home|pg dn|pg up| end |
* `------------------------------------------------------------------------'
*/
[_FN] = {
{TG(_FN),TG(_GM),MU_ON, _______,_______,RESET, RESET, UNI_LI, UNI_WN ,KC_WAKE,KC_SLEP,KC_PWR },
{KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12 },
{_______,UNDO, REDO, COPYCUT,PASTE, KC_MUTE,KC_PSCR,KC_INS, KC_MPRV,KC_MSTP,KC_MPLY,KC_MNXT},
{_______,_______,_______,_______,_______,KC_VOLD,KC_VOLU,_______,KC_HOME,KC_PGDN,KC_PGUP,KC_END }
},
/* Music layer
* ,-----------------------------------------------------------------------.
* | OFF |rec S| stop| play|sped^|spedv|cycle|.....|.....|.....|.....|.....|
* |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
* |.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|
* |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
* |.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|
* |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
* |.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|
* `-----------------------------------------------------------------------'
*/
[_MS] = {
{ MU_OFF, KC_LCTL, KC_LALT, KC_LGUI, KC_UP, KC_DOWN, MU_MOD, XXX, XXX, XXX, XXX, XXX },
{ XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX },
{ XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX },
{ XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }
}
};
// Set unicode method to linux.
void matrix_init_user(){
set_unicode_input_mode(UC_LNX);
}
// User defined keys
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
// This section is a bit tedious in VIM, so I shortened lines
// Check for shift letter
bool is_capital = ( keyboard_report->mods &
(MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)) ) ^
( keyboard_report->mods & MOD_BIT(KC_CAPS) );
switch (keycode) {
// Add music layer to music functionality
case MU_ON:
if (record->event.pressed) { layer_on(_MS); }
return true; break;
case MU_OFF:
if (record->event.pressed) { layer_off(_MS); }
return true; break;
// Turkish letters keycodes
case TUR_A:
if (record->event.pressed) {
if ( is_capital ) {
unicode_input_start(); register_hex(0x00c2); unicode_input_finish();
} else {
unicode_input_start(); register_hex(0x00e2); unicode_input_finish();
}
}
return false; break;
case TUR_U:
if (record->event.pressed) {
if ( is_capital ) {
unicode_input_start(); register_hex(0x00dc); unicode_input_finish();
} else {
unicode_input_start(); register_hex(0x00fc); unicode_input_finish();
}
}
return false; break;
case TUR_I:
if (record->event.pressed) {
if ( is_capital ) {
unicode_input_start(); register_hex(0x0130); unicode_input_finish();
} else {
unicode_input_start(); register_hex(0x0131); unicode_input_finish();
}
}
return false; break;
case TUR_O:
if (record->event.pressed) {
if ( is_capital ) {
unicode_input_start(); register_hex(0x00d6); unicode_input_finish();
} else {
unicode_input_start(); register_hex(0x00f6); unicode_input_finish();
}
}
return false; break;
case TUR_S:
if (record->event.pressed) {
if ( is_capital ) {
unicode_input_start(); register_hex(0x015e); unicode_input_finish();
} else {
unicode_input_start(); register_hex(0x015f); unicode_input_finish();
}
}
return false; break;
case TUR_G:
if (record->event.pressed) {
if ( is_capital ) {
unicode_input_start(); register_hex(0x011e); unicode_input_finish();
} else {
unicode_input_start(); register_hex(0x011f); unicode_input_finish();
}
}
return false; break;
case TUR_C:
if (record->event.pressed) {
if ( is_capital ) {
unicode_input_start(); register_hex(0x00c7); unicode_input_finish();
} else {
unicode_input_start(); register_hex(0x00e7); unicode_input_finish();
}
}
return false; break;
// Keys to change unicode mode
case UNI_LI:
if( record->event.pressed ) {
set_unicode_input_mode(UC_LNX);
}
return false; break;
case UNI_WN:
if( record->event.pressed ) {
set_unicode_input_mode(UC_WIN);
}
return false; break;
}
return true;
}
// Tap dance feature for the altgr implementation
void altgr_dvo_tap (qk_tap_dance_state_t *state, void *user_data) {
if (state->count == 1) {
register_code (KC_RALT);
} else if (state->count == 2) {
unregister_code (KC_RALT);
layer_on(_TD);
} else if (state->count == 3) {
layer_off(_TD);
}
}
void altgr_dvo_end (qk_tap_dance_state_t *state, void *user_data) {
if (state->count == 1) {
unregister_code (KC_RALT);
} else if (state->count == 2) {
layer_off(_TD);
}
}
// Shift vs capslock function
void caps_tap (qk_tap_dance_state_t *state, void *user_data) {
if (state->count == 1) {
register_code (KC_LSFT);
} else if (state->count == 2) {
unregister_code (KC_LSFT);
register_code (KC_CAPS);
}
}
void caps_tap_end (qk_tap_dance_state_t *state, void *user_data) {
if (state->count == 1) {
unregister_code (KC_LSFT);
} else {
unregister_code (KC_CAPS);
}
}
// Parantheses
void paranthesis_dance (qk_tap_dance_state_t *state, void *user_data) {
if (state->count == 1) {
SEND_STRING("()"); register_code(KC_LEFT); unregister_code(KC_LEFT);
} else if (state->count == 2) {
SEND_STRING("(");
} else if (state->count == 3) {
SEND_STRING(")");
}
}
void curly_dance (qk_tap_dance_state_t *state, void *user_data) {
if (state->count == 1) {
SEND_STRING("{}"); register_code(KC_LEFT); unregister_code(KC_LEFT);
} else if (state->count == 2) {
SEND_STRING("{");
} else if (state->count == 3) {
SEND_STRING("}");
}
}
void square_dance (qk_tap_dance_state_t *state, void *user_data) {
if (state->count == 1) {
SEND_STRING("[]"); register_code(KC_LEFT); unregister_code(KC_LEFT);
} else if (state->count == 2) {
SEND_STRING("[");
} else if (state->count == 3) {
SEND_STRING("]");
}
}
void angular_dance (qk_tap_dance_state_t *state, void *user_data) {
if (state->count == 1) {
SEND_STRING("<>"); register_code(KC_LEFT); unregister_code(KC_LEFT);
} else if (state->count == 2) {
SEND_STRING("<");
} else if (state->count == 3) {
SEND_STRING(">");
}
}
// Copy or cut feature
void copy_cut (qk_tap_dance_state_t *state, void *user_data) {
if (state->count == 1) {
register_code (KC_LCTL);
register_code (KC_C);
unregister_code (KC_C);
unregister_code (KC_LCTL);
} else if (state->count == 2) {
register_code (KC_LCTL);
register_code (KC_X);
unregister_code (KC_X);
unregister_code (KC_LCTL);
}
}
// Tap dance feature
qk_tap_dance_action_t tap_dance_actions[] = {
// Tap once for Left Ctrl, second one is momentory switch to layer TUR
[ATD] = ACTION_TAP_DANCE_FN_ADVANCED( altgr_dvo_tap, NULL, altgr_dvo_end )
// Advanced tap dance feature allows for immediate response to shift
,[CLS] = ACTION_TAP_DANCE_FN_ADVANCED( caps_tap, NULL, caps_tap_end )
// Shifting for double quote and semicolon
,[SCL] = ACTION_TAP_DANCE_DOUBLE( KC_SCLN, KC_COLN )
,[QUO] = ACTION_TAP_DANCE_DOUBLE( KC_QUOT, KC_DQUO )
// Tap dances for paranthesis, which sends macros
,[PAR] = ACTION_TAP_DANCE_FN_ADVANCED( NULL, NULL, paranthesis_dance )
,[CUR] = ACTION_TAP_DANCE_FN_ADVANCED( NULL, NULL, curly_dance )
,[SQU] = ACTION_TAP_DANCE_FN_ADVANCED( NULL, NULL, square_dance )
,[ANG] = ACTION_TAP_DANCE_FN_ADVANCED( NULL, NULL, angular_dance )
// Tap dance for copy/cutting
,[CPC] = ACTION_TAP_DANCE_FN( copy_cut )
// Main Dvorak layer
[_DV] = DVORAK,
// Turkish and special character overlay
[_AL] = ALTCHAR,
// Gaming layer
[_GA] = GAME,
// Numbers layer
[_NU] = NUMBERS,
// Settings layer
[_SE] = SETTINGS,
// Mouse emulation layer
[_MO] = MOUSE,
#ifdef MUSIC_ENABLE
// Music mode
[_MU] = MUSIC,
#endif
};

22
keyboards/planck/keymaps/bbaserdem/rules.mk Normal file → Executable file
View File

@@ -1,22 +1,10 @@
# Build options
# ENABLE
TAP_DANCE_ENABLE = yes
UNICODE_ENABLE = yes
MOUSEKEY_ENABLE = yes
EXTRAKEY_ENABLE = yes
NKRO_ENABLE = yes
BACKLIGHT_ENABLE = yes
AUDIO_ENABLE = yes
# DISABLE
BOOTMAGIC_ENABLE = no
MIDI_ENABLE = no
# Not for planck
RGBLIGHT_ENABLE = no #Clashes with audio
BLUETOOTH_ENABLE = no #No bluetooth
SLEEP_LED_ENABLE = no #Uses BACKLIGHT_ENABLE rimer
BACKLIGHT_ENABLE = yes # Switch LEDs
MOUSEKEY_ENABLE = yes # Emulates mouse key using keypresses
RGBLIGHT_ENABLE = yes # LED strips
TAP_DANCE_ENABLE = no # Use multi-tap features
AUDIO_ENABLE = no # Audio stuff
ifndef QUANTUM_DIR
include ../../../../Makefile

View File

@@ -0,0 +1,22 @@
/* Copyright 2017 REPLACE_WITH_YOUR_NAME
*
* 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/>.
*/
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
#include "../../config.h"
#endif

View File

@@ -0,0 +1,80 @@
#include "xd75.h"
#include "bbaserdem.h"
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Layout
* ,-----------------------------------------------------------.
* |Blt|Lck| ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = |
* |---+---+-----------------------------------------------+---|
* |Int|Trm| |Cps|
* |---+---| |---|
* |Clc|Psw| | \ |
* |---+---| PLANCK |---|
* |Rev|Ffw| | [ |
* |---+---| |---|
* |Tog|Mut| | ] |
* `-----------------------------------------------------------'
*/
[_DV] = KM(
BL_STEP, LGUI(KC_ESC), KC_GRV,KC_1,KC_2,KC_3,KC_4,KC_5,KC_6,KC_7,KC_8,KC_9,KC_0,KC_MINS,KC_EQL,
KC_WHOM, LGUI(KC_ENT), DVORAK_1, KC_CAPS,
KC_CALC, LGUI(KC_P), DVORAK_2, KC_BSLS,
KC_MPRV, KC_MNXT, DVORAK_3, KC_LBRC,
KC_MPLY, KC_MUTE, DVORAK_4, KC_RBRC ),
[_AL] = KM(
_______,_______,_______,_______,_______,_______,
_______,_______,_______,_______,_______,_______,
_______,_______,_______,
_______,_______, ALTCHAR_1, _______,
_______,_______, ALTCHAR_2, _______,
_______,_______, ALTCHAR_3, _______,
_______,_______, ALTCHAR_4, _______ ),
[_GA] = KM(
_______,_______,_______,_______,_______,_______,
_______,_______,_______,_______,_______,_______,
_______,_______,_______,
_______,_______, GAME_1, _______,
_______,_______, GAME_2, _______,
_______,_______, GAME_3, _______,
_______,_______, GAME_4, _______ ),
[_NU] = KM(
_______,_______,_______,_______,_______,_______,
_______,_______,_______,_______,_______,_______,
_______,_______,_______,
_______,_______, NUMBERS_1, _______,
_______,_______, NUMBERS_2, _______,
_______,_______, NUMBERS_3, _______,
_______,_______, NUMBERS_4, _______ ),
[_SE] = KM(
_______,_______,_______,_______,_______,_______,
_______,_______,_______,_______,_______,_______,
_______,_______,_______,
_______,_______, SETTINGS_1, _______,
_______,_______, SETTINGS_2, _______,
_______,_______, SETTINGS_3, _______,
_______,_______, SETTINGS_4, _______ ),
[_MO] = KM(
_______,_______,_______,_______,_______,_______,
_______,_______,_______,_______,_______,_______,
_______,_______,_______,
_______,_______, MOUSE_1, _______,
_______,_______, MOUSE_2, _______,
_______,_______, MOUSE_3, _______,
_______,_______, MOUSE_4, _______ ),
#ifdef AUDIO_ENABLE
[_MU] = KM(
XXX, XXX, MASK, XXX,
XXX, XXX, MASK, XXX,
XXX, XXX, MASK, XXX,
XXX, XXX, MASK, XXX,
XXX, XXX, MUSIC_4, XXX ),
#endif
};

View File

@@ -0,0 +1,12 @@
# XD75RE Setup
This layout is the xd75re layout, inspired by my planck keymap.
Contains some code from the original keymap here, but had to be modded.
# Make
Take the board into reset mode, then
```
make xd75:bbaserdem:dfu
```
Either sudo it or set permissions in udev.

View File

@@ -0,0 +1,10 @@
# Build options
BACKLIGHT_ENABLE = yes # Switch LEDs
MOUSEKEY_ENABLE = yes # Emulates mouse key using keypresses
RGBLIGHT_ENABLE = no # LED strips
TAP_DANCE_ENABLE = no # Use multi-tap features
AUDIO_ENABLE = no # Audio stuff
ifndef QUANTUM_DIR
include ../../../../Makefile
endif