~ruther/qmk_firmware

738a9fc16c833d79831c5a26eb33880661e33524 — Batuhan Baserdem 7 years ago b89cec9
Userspace update for user bbaserdem (#3443)

* 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

* Lets split eh

* Finalized things regarding keymap
M keyboards/gherkin/keymaps/bbaserdem/config.h => keyboards/gherkin/keymaps/bbaserdem/config.h +2 -2
@@ 1,5 1,5 @@
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
#ifndef CONFIG_KEYMAP_H
#define CONFIG_KEYMAP_H

#include "../../config.h"
#define RGB_DI_PIN F6

M keyboards/gherkin/keymaps/bbaserdem/keymap.c => keyboards/gherkin/keymaps/bbaserdem/keymap.c +1 -1
@@ 21,7 21,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    )
};

void matrix_init_keymap(void) {
void matrix_init_user(void) {
    // Set LED's to max
    _delay_us(300);
    backlight_config.level = 2;

M keyboards/gherkin/keymaps/bbaserdem/rules.mk => keyboards/gherkin/keymaps/bbaserdem/rules.mk +4 -1
@@ 2,13 2,16 @@ ifndef QUANTUM_DIR
  include ../../../../Makefile
endif

USER_NAME := bbaserdem-nouserspace

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

NKRO_ENABLE = yes      # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
RGBLIGHT_ENABLE = yes  # Enable RBG light strips
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality

M keyboards/lets_split/keymaps/bbaserdem/config.h => keyboards/lets_split/keymaps/bbaserdem/config.h +2 -2
@@ 1,5 1,5 @@
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
#ifndef CONFIG_KEYMAP_H
#define CONFIG_KEYMAP_H

#include "../../config.h"


M keyboards/lets_split/keymaps/bbaserdem/keymap.c => keyboards/lets_split/keymaps/bbaserdem/keymap.c +8 -9
@@ 20,18 20,17 @@ uint32_t layer_state_set_keymap(uint32_t state) {

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    // Main Dvorak layer
    [_DV] = DVORAK,
    [_DV] = LAYOUT_letssplit_wrapper(DVORAK),
    // Turkish and special character overlay
    [_AL] = ALTCHAR,
    [_AL] = LAYOUT_letssplit_wrapper(ALTCHAR),
    // Gaming layer
    [_GA] = GAME,
    [_GA] = LAYOUT_letssplit_wrapper(GAME),
    // Numbers layer
    [_NU] = NUMBERS,
    [_NU] = LAYOUT_letssplit_wrapper(NUMBERS),
    // Settings layer
    [_SE] = SETTINGS,
    [_SE] = LAYOUT_letssplit_wrapper(SETTINGS),
    // Mouse emulation layer
    [_MO] = MOUSE,
#ifdef AUDIO_ENABLE
    [_MU] = MUSIC,
#endif
    [_MO] = LAYOUT_letssplit_wrapper(MOUSE),
    // Music layer
    [_MU] = LAYOUT_letssplit_wrapper(MUSIC),
};

M keyboards/lets_split/keymaps/bbaserdem_right/config.h => keyboards/lets_split/keymaps/bbaserdem_right/config.h +2 -2
@@ 1,5 1,5 @@
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
#ifndef CONFIG_KEYMAP_H
#define CONFIG_KEYMAP_H

#include "../../config.h"


M keyboards/lets_split/keymaps/bbaserdem_right/keymap.c => keyboards/lets_split/keymaps/bbaserdem_right/keymap.c +5 -5
@@ 22,10 22,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   * `-----------------------' `-----------------------'
   */
  // Main Dvorak layer
  [0] = LAYOUT(
    LCTL(LALT(KC_DEL)), 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
  [0] = LAYOUT_ortho_4x12(
    LCTL(LALT(KC_DEL)), 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   \
  )
};

M keyboards/lets_split/keymaps/bbaserdem_right/rules.mk => keyboards/lets_split/keymaps/bbaserdem_right/rules.mk +2 -0
@@ 1,5 1,7 @@
# Build options

USER_NAME := bbaserdem-without-userspace

BACKLIGHT_ENABLE = no		# Switch LEDs
MOUSEKEY_ENABLE = no		# Emulates mouse key using keypresses
RGBLIGHT_ENABLE = no 		# LED strips

A keyboards/lets_split_eh/keymaps/bbaserdem/README.md => keyboards/lets_split_eh/keymaps/bbaserdem/README.md +7 -0
@@ 0,0 1,7 @@
# Lets Split Eh Layout

Check out [user readme](../../../../users/bbaserdem/README.md) for more info.

# Usage

Fill in after flashing

A keyboards/lets_split_eh/keymaps/bbaserdem/config.h => keyboards/lets_split_eh/keymaps/bbaserdem/config.h +4 -0
@@ 0,0 1,4 @@
#ifndef CONFIG_KEYMAP_H
#define CONFIG_KEYMAP_H
#include "../../config.h"
#endif

A keyboards/lets_split_eh/keymaps/bbaserdem/keymap.c => keyboards/lets_split_eh/keymaps/bbaserdem/keymap.c +27 -0
@@ 0,0 1,27 @@
#include "lets_split_eh.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] = LAYOUT_letssplit_wrapper(DVORAK),
    // Turkish and special character overlay
    [_AL] = LAYOUT_letssplit_wrapper(ALTCHAR),
    // Gaming layer
    [_GA] = LAYOUT_letssplit_wrapper(GAME),
    // Numbers layer
    [_NU] = LAYOUT_letssplit_wrapper(NUMBERS),
    // Settings layer
    [_SE] = LAYOUT_letssplit_wrapper(SETTINGS),
    // Mouse emulation layer
    [_MO] = LAYOUT_letssplit_wrapper(MOUSE),
    // Music layer
    [_MU] = LAYOUT_letssplit_wrapper(MUSIC),
};

A keyboards/lets_split_eh/keymaps/bbaserdem/rules.mk => keyboards/lets_split_eh/keymaps/bbaserdem/rules.mk +11 -0
@@ 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

M keyboards/planck/keymaps/bbaserdem/config.h => keyboards/planck/keymaps/bbaserdem/config.h +5 -3
@@ 1,7 1,7 @@
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
#ifndef CONFIG_KEYMAP_H
#define CONFIG_KEYMAP_H

#include "../../config.h"
#include "config_common.h"

// LED strip stuff
#ifdef RGBLIGHT_ENABLE


@@ 19,4 19,6 @@
#define RGBLIGHT_EFFECT_CHRISTMAS_STEP 1
#endif

#define ENCODER_RESOLUTION 4

#endif

M keyboards/planck/keymaps/bbaserdem/keymap.c => keyboards/planck/keymaps/bbaserdem/keymap.c +8 -10
@@ 6,25 6,23 @@
 * Check qmk_firmware/users/bbaserdem for the main part of the code
 */

#pragma message "You may need to add LAYOUT_planck_grid to your keymap layers - see default for an example"
#include "planck.h"
#include "bbaserdem.h"


const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    // Main Dvorak layer
    [_DV] = DVORAK,
    [_DV] = LAYOUT_planck_wrapper(DVORAK),
    // Turkish and special character overlay
    [_AL] = ALTCHAR,
    [_AL] = LAYOUT_planck_wrapper(ALTCHAR),
    // Gaming layer
    [_GA] = GAME,
    [_GA] = LAYOUT_planck_wrapper(GAME),
    // Numbers layer
    [_NU] = NUMBERS,
    [_NU] = LAYOUT_planck_wrapper(NUMBERS),
    // Settings layer
    [_SE] = SETTINGS,
    [_SE] = LAYOUT_planck_wrapper(SETTINGS),
    // Mouse emulation layer
    [_MO] = MOUSE,
#ifdef MUSIC_ENABLE
    [_MO] = LAYOUT_planck_wrapper(MOUSE),
    // Music mode
    [_MU] = MUSIC,
#endif
    [_MU] = LAYOUT_planck_wrapper(MUSIC),
};

M keyboards/planck/keymaps/bbaserdem/rules.mk => keyboards/planck/keymaps/bbaserdem/rules.mk +1 -5
@@ 4,8 4,4 @@ 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
endif
AUDIO_ENABLE = yes			# Audio stuff

M keyboards/xd75/keymaps/bbaserdem/config.h => keyboards/xd75/keymaps/bbaserdem/config.h +2 -18
@@ 1,21 1,5 @@
/* 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
#ifndef CONFIG_KEYMAP_H
#define CONFIG_KEYMAP_H

#include "../../config.h"


M keyboards/xd75/keymaps/bbaserdem/keymap.c => keyboards/xd75/keymaps/bbaserdem/keymap.c +2 -61
@@ 15,66 15,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 * |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

[0] = KM( FKLAVYE ),
[1] = KM( AYARLAR ),
};


M keyboards/xd75/keymaps/bbaserdem/readme.md => keyboards/xd75/keymaps/bbaserdem/readme.md +4 -2
@@ 1,7 1,9 @@
# 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.
(WIP) F keyboard for turkish, using unicode.

* Write down keymap in userspace
* Figure out LED indicators

# Make


M users/bbaserdem/README.md => users/bbaserdem/README.md +11 -9
@@ 6,6 6,7 @@ For this purpose, I collected them here.
I have the following keymaps:

* Gherkin (Does not use the user space)
* XD75RE (Uses different keymap)
* Let's Split
* Let's Split It Up
* Planck


@@ 13,37 14,38 @@ I have the following keymaps:
# Layout

I use DVORAK with an unorthodox Turkish layout.
If you wanna grab my code, andused a previous layout with a persistent base
If you wanna grab my code, and you used a layout with a persistent base
layer change, change it to layer 0 before proceeding.

# Layers

* **Dvorak**: Base layer,withdvorak layout.
* **Dvorak**: Base layer,with dvorak layout.
* **Alternative**: Has alternate characters.
* **Game**: Toggled from *Function*, comfortable for gaming use.
* **Numeric**: Has numericals and symbols. Can be locked.
* **Function**: Layer has media and function keys.
* **Mouse**: Manipulates mouse. Can be locked.
* **Music** Allows playing sounds like a keyboard.
* **Music** Allows playing sounds.

# Functionality

* **RGB Backlight**: With layer indication, and ability to change base layer lighting mode.
* **Secrets**: By placing a secrets.h, and not tracking it, you can store passwords etc.
* **Secrets**: By placing a secrets.h, and not tracking it, passwords can be stored.
* **Mouse**: Mouse emulation, complete with diagonal keys.
* **Turkish**: An AltGr-like overlay that allows some non-common letters, in unicode.

I suggest checking out how I enabled shifting for Turkish layer,
how I planned out RGB lighting, and my mouse implementation; they might offer
some insight into fringe user cases.
I suggest checking out how I enabled Turkish keys,
how I planned out RGB lighting,
and my mouse implementation;
they might offer some insight into fringe user cases.

# Issues

All features are too big for the 32kB bootloader.
Offenders are audio and rgb lights; it comes down to one or the other.
~The Proton board, and rev 6 should fix that.~

~The Proton board, and rev 6 might fix that.~

# Credits

I have previously written my keymap by myself before, but I rewrote it here,
heavily inspired by @drashna's user folder.

M users/bbaserdem/bbaserdem.c => users/bbaserdem/bbaserdem.c +34 -52
@@ 14,6 14,12 @@
#include "rgblight.h"
#endif

/*-------------*\
|*---UNICODE---*|
\*-------------*/
#ifdef UNICODE_ENABLE
#endif

/*-----------------*\
|*-----SECRETS-----*|
\*-----------------*/


@@ 61,8 67,6 @@ __attribute__ ((weak)) void led_set_keymap(uint8_t usb_led) { }
/* ----------------------- *\
 * -----RGB Functions----- *
\* ----------------------- */


#ifdef RGBLIGHT_ENABLE
// Storage variables
extern  rgblight_config_t rgblight_config;


@@ 106,7 110,7 @@ void rgblight_colorStatic( int hu, int sa, int va ) {
    rgblight_mode(1);
    rgblight_sethsv(hu,sa,va);
}
/* HSV values, thank you @drashna!
/* HSV values
 * white        (  0,   0, 255)
 * red          (  0, 255, 255)
 * coral        ( 16, 176, 255)


@@ 126,16 130,15 @@ void rgblight_colorStatic( int hu, int sa, int va ) {
 * magenta      (300, 255, 255)
 * pink         (330, 128, 255)
 */

// Set RGBLIGHT state depending on layer
void rgblight_change( uint8_t last_layer ) {
void rgblight_change( uint8_t this_layer ) {
    // Save state, if saving is requested
    /*
    if ( base_sta ) {
        rgblight_saveBase();
    }
    */
    // Change RGB light
    switch ( last_layer ) {
    switch ( this_layer ) {
        case _DV:
            // Load base layer
            rgblight_loadBase();


@@ 160,12 163,10 @@ void rgblight_change( uint8_t last_layer ) {
            // Do green for mouse
            rgblight_colorStatic(120,255,255);
            break;
#ifdef AUDIO_ENABLE
        case _MU:
            // Do orange for music
            rgblight_colorStatic( 39,255,255);
            break;
#endif
        default:
            // Something went wrong
            rgblight_colorStatic(  0,255,255);


@@ 184,7 185,9 @@ void matrix_init_user (void) {
    matrix_init_keymap();

    // Correct unicode
#ifdef UNICODE_ENABLE
    set_unicode_input_mode(UC_LNX);
#endif

    // Make beginning layer DVORAK
    set_single_persistent_default_layer(_DV);


@@ 212,7 215,6 @@ void matrix_init_user (void) {
void matrix_scan_user (void) {
    // Keymap specific, do it first
    matrix_scan_keymap();
    // Moved RGB check to layer_state_set_user
}

/*------------------*\


@@ 227,15 229,29 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {

    switch (keycode) {
        // Secrets implementation
        case SECRET1 ... SECRET3:
#if (__has_include("secrets.h"))
        case SECRET1:
            if( !record->event.pressed ) {
                send_string_P( secret[ keycode - SECRET1 ] );
            }
#endif
            return false;
            break;
        case SECRET2:
            if( !record->event.pressed ) {
                send_string_P( secret[ keycode - SECRET2 ] );
            }
            return false;
            break;
        case SECRET3:
            if( !record->event.pressed ) {
                send_string_P( secret[ keycode - SECRET3 ] );
            }
            return false;
            break;
#endif 

        // If these keys are pressed, load base layer config, and mark saving
#ifdef RGBLIGHT_ENABLE
        case RGB_TOG:
        case RGB_MOD:
        case RGB_VAI:


@@ 244,13 260,12 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
        case RGB_SAD:
        case RGB_HUI:
        case RGB_HUD:
#ifdef RGBLIGHT_ENABLE
            if ( !base_sta ) {
                rgblight_loadBase(); 
            }
#endif
            return true;
            break;
#endif

        // Lock functionality: These layers are locked if the LOCKED buttons are
        // pressed. Otherwise, they are momentary toggles


@@ 261,7 276,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
            return false;
            break;
        case K_MOUSE:
#ifdef MOUSEKEY_ENABLE
            if (record->event.pressed) {
                layer_on(_MO);
                lock_flag = false;


@@ 272,7 286,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
                    layer_off(_MO);
                }
            }
#endif
            return false;
            break;
        case K_NUMBR:


@@ 314,7 327,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
            return false;
            break;
        case MU_TOG:
#ifdef AUDIO_ENABLE
            if (record->event.pressed) {
                // On press, turn off layer if active
                if ( layer == _SE ) {


@@ 324,14 336,13 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
                    layer_off(_MU);
                }
            }
#endif
            return true;
            break;

//------UNICODE
        // Unicode switches with sound
        case UNI_LI:
#ifdef UNICODE_ENABLE
        case UNI_LI:
            if (record->event.pressed) {
#ifdef AUDIO_ENABLE
                stop_all_notes();


@@ 339,11 350,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
#endif
                set_unicode_input_mode(UC_LNX);
            }
#endif
            return false;
            break;
        case UNI_WN:
#ifdef UNICODE_ENABLE
            if (record->event.pressed) {
#ifdef AUDIO_ENABLE
                stop_all_notes();


@@ 351,13 360,11 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
#endif
                set_unicode_input_mode(UC_WIN);
            }
#endif
            return false;
            break;

        // Turkish letters, with capital functionality
        case TUR_A:
#ifdef UNICODE_ENABLE
            if (record->event.pressed) {
                if ( is_capital ) {
                    unicode_input_start();


@@ 369,11 376,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
                    unicode_input_finish();
                }
            }
#endif
            return false;
            break;
        case TUR_O:
#ifdef UNICODE_ENABLE
            if (record->event.pressed) {
                if ( is_capital ) {
                    unicode_input_start();


@@ 385,11 390,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
                    unicode_input_finish();
                }
            }
#endif
            return false;
            break;
        case TUR_U:
#ifdef UNICODE_ENABLE
            if (record->event.pressed) {
                if ( is_capital ) {
                    unicode_input_start();


@@ 401,11 404,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
                    unicode_input_finish();
                }
            }
#endif
            return false;
            break;
        case TUR_I:
#ifdef UNICODE_ENABLE
            if (record->event.pressed) {
                if ( is_capital ) {
                    unicode_input_start();


@@ 417,11 418,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
                    unicode_input_finish();
                }
            }
#endif
            return false;
            break;
        case TUR_G:
#ifdef UNICODE_ENABLE
            if (record->event.pressed) {
                if ( is_capital ) {
                    unicode_input_start();


@@ 433,11 432,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
                    unicode_input_finish();
                }
            }
#endif
            return false;
            break;
        case TUR_C:
#ifdef UNICODE_ENABLE
            if (record->event.pressed) {
                if ( is_capital ) {
                    unicode_input_start();


@@ 449,11 446,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
                    unicode_input_finish();
                }
            }
#endif
            return false;
            break;
        case TUR_S:
#ifdef UNICODE_ENABLE
            if (record->event.pressed) {
                if ( is_capital ) {
                    unicode_input_start();


@@ 465,13 460,13 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
                    unicode_input_finish();
                }
            }
#endif
            return false;
            break;
#endif

//-------Diagonal mouse movements
        case MO_NE:
#ifdef MOUSEKEY_ENABLE
        case MO_NE:
            if( record->event.pressed ) {
                mousekey_on(MO_N);
                mousekey_on(MO_E);


@@ 481,11 476,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
                mousekey_off(MO_E);
                mousekey_send();
            }
#endif
            return false;
            break;
        case MO_NW:
#ifdef MOUSEKEY_ENABLE
            if( record->event.pressed ) {
                mousekey_on(MO_N);
                mousekey_on(MO_W);


@@ 495,11 488,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
                mousekey_off(MO_W);
                mousekey_send();
            }
#endif
            return false;
            break;
        case MO_SE:
#ifdef MOUSEKEY_ENABLE
            if( record->event.pressed ) {
                mousekey_on(MO_S);
                mousekey_on(MO_E);


@@ 509,11 500,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
                mousekey_off(MO_E);
                mousekey_send();
            }
#endif
            return false;
            break;
        case MO_SW:
#ifdef MOUSEKEY_ENABLE
            if( record->event.pressed ) {
                mousekey_on(MO_S);
                mousekey_on(MO_W);


@@ 523,11 512,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
                mousekey_off(MO_W);
                mousekey_send();
            }
#endif
            return false;
            break;
        case MO_S_NE:
#ifdef MOUSEKEY_ENABLE
            if( record->event.pressed ) {
                mousekey_on(MO_S_N);
                mousekey_on(MO_S_E);


@@ 537,11 524,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
                mousekey_off(MO_S_E);
                mousekey_send();
            }
#endif
            return false;
            break;
        case MO_S_NW:
#ifdef MOUSEKEY_ENABLE
            if( record->event.pressed ) {
                mousekey_on(MO_S_N);
                mousekey_on(MO_S_W);


@@ 551,11 536,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
                mousekey_off(MO_S_W);
                mousekey_send();
            }
#endif
            return false;
            break;
        case MO_S_SE:
#ifdef MOUSEKEY_ENABLE
            if( record->event.pressed ) {
                mousekey_on(MO_S_S);
                mousekey_on(MO_S_E);


@@ 565,11 548,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
                mousekey_off(MO_S_E);
                mousekey_send();
            }
#endif
            return false;
            break;
        case MO_S_SW:
#ifdef MOUSEKEY_ENABLE
            if( record->event.pressed ) {
                mousekey_on(MO_S_S);
                mousekey_on(MO_S_W);


@@ 579,9 560,10 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
                mousekey_off(MO_S_W);
                mousekey_send();
            }
#endif
            return false;
            break;
#endif

//------DOUBLE PRESS, with added left navigation
        case DBL_SPC:
            if( record->event.pressed ) {

M users/bbaserdem/bbaserdem.h => users/bbaserdem/bbaserdem.h +54 -63
@@ 23,7 23,7 @@
#define CUT     LCTL(KC_X)
#define PASTE   LCTL(KC_V)

// Rename mouse keys
// Rename mouse keys with 7 letters
#ifdef MOUSEKEY_ENABLE
#define MO_S_N  KC_MS_WH_UP
#define MO_S_S  KC_MS_WH_DOWN


@@ 60,6 60,25 @@
#define MO_AC_2 KC_NO
#endif

// Rename music keys with <8 letters
#ifdef AUDIO_ENABLE
#define MU_REC  KC_LCTL
#define MU_STOP KC_LALT
#define MU_PLAY KC_LGUI
#define MU_PLAY KC_LGUI
#define MU_FAST KC_UP
#define MU_SLOW KC_DOWN
#define MU_MASK KC_A
#else
#define MU_REC  KC_NO
#define MU_STOP KC_NO
#define MU_PLAY KC_NO
#define MU_PLAY KC_NO
#define MU_FAST KC_NO
#define MU_SLOW KC_NO
#define MU_MASK KC_NO
#endif

// Define non-capitalized UTF shortcuts here
#ifdef UNICODE_ENABLE
#define PHY_HBR UC(0x0127)


@@ 79,11 98,6 @@
#define CUR_YEN KC_NO
#endif

// Make only KC_NO be grabbed by music mode
#ifdef AUDIO_ENABLE
#define MUSIC_MASK keycode == XXX
#endif

// Custom keycodes
enum userspace_custom_keycodes {
    // Turkish letters, with shifting


@@ 128,8 142,6 @@ enum userspace_custom_keycodes {

// Do tap dancable semicolon key if available
#ifdef TAP_DANCE_ENABLE
#define TAPPING_TERM 300
#define TAPPING_TOGGLE 1
enum {
    SCL = 0
};


@@ 139,7 151,8 @@ enum {
#endif

// Shared keymaps
#define KM(...) KEYMAP(__VA_ARGS__) // Required to expand the CSVs
#define LAYOUT_planck_wrapper(...) LAYOUT_planck_grid(__VA_ARGS__)
#define LAYOUT_letssplit_wrapper(...) LAYOUT_ortho_4x12(__VA_ARGS__)

/* Dvorak
 * ,------------------------------------------------------------------------.


@@ 151,15 164,11 @@ enum {
 * |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
 * | TUR | OS  | Ctrl| Alt | Shf | Spc || Ent | Lft | Dwn |  Up | Rght| MSE |
 * `------------------------------------------------------------------------' */
#define DVORAK_1 \
    KC_ESC, KC_QUOT,KC_COMM,KC_DOT, KC_P,   KC_Y,   KC_F,   KC_G,   KC_C,   KC_R,   KC_L,   KC_BSPC
#define DVORAK_2 \
    KC_TAB, KC_A,   KC_O,   KC_E,   KC_U,   KC_I,   KC_D,   KC_H,   KC_T,   KC_N,   KC_S,   KC_SLSH
#define DVORAK_3 \
    K_NUMBR,MY_SCL, KC_Q,   KC_J,   KC_K,   KC_X,   KC_B,   KC_M,   KC_W,   KC_V,   KC_Z,   MO(_SE)
#define DVORAK_4 \
    MO(_AL),KC_LGUI,KC_LCTL,KC_LALT,KC_LSFT,KC_SPC, KC_ENT, KC_LEFT,KC_DOWN,KC_RGHT,KC_UP,  K_MOUSE
#define DVORAK KM(DVORAK_1,DVORAK_2,DVORAK_3,DVORAK_4)
#define DVORAK \
    KC_ESC, KC_QUOT,KC_COMM,KC_DOT, KC_P,   KC_Y,   KC_F,   KC_G,   KC_C,   KC_R,   KC_L,   KC_BSPC, \
    KC_TAB, KC_A,   KC_O,   KC_E,   KC_U,   KC_I,   KC_D,   KC_H,   KC_T,   KC_N,   KC_S,   KC_SLSH, \
    K_NUMBR,MY_SCL, KC_Q,   KC_J,   KC_K,   KC_X,   KC_B,   KC_M,   KC_W,   KC_V,   KC_Z,   MO(_SE), \
    MO(_AL),KC_LGUI,KC_LCTL,KC_LALT,KC_LSFT,KC_SPC, KC_ENT, KC_LEFT,KC_DOWN,KC_UP,  KC_RGHT,K_MOUSE

/* Alternative character overlay
 * ,------------------------------------------------------------------------.


@@ 171,15 180,11 @@ enum {
 * |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
 * |     |     |     |     |     |     ||     | Home|PgDwn| PgUp| End |     |
 * `------------------------------------------------------------------------' */
#define ALTCHAR_1 \
    _______,DBL_QUO,UNDO,   REDO,   CUR_BPN,CUR_YEN,_______,TUR_G,  TUR_C,  _______,CUR_LIR,KC_DEL
#define ALTCHAR_2 \
    _______,TUR_A,  TUR_O,  CUR_EUR,TUR_U,  TUR_I,  PHY_DEG,PHY_HBR,_______,_______,TUR_S,  KC_INS
#define ALTCHAR_3 \
    _______,DBL_DQT,CUT,    COPY,   PASTE,  _______,CUR_BIT,DBL_ANG,DBL_PAR,DBL_SQR,DBL_BRC,_______
#define ALTCHAR_4 \
    _______,_______,_______,_______,_______,_______,_______,KC_HOME,KC_PGDN,KC_PGUP,KC_END,_______
#define ALTCHAR KM(ALTCHAR_1,ALTCHAR_2,ALTCHAR_3,ALTCHAR_4)
#define ALTCHAR \
    _______,DBL_QUO,UNDO,   REDO,   CUR_BPN,CUR_YEN,_______,TUR_G,  TUR_C,  _______,CUR_LIR,KC_DEL , \
    _______,TUR_A,  TUR_O,  CUR_EUR,TUR_U,  TUR_I,  PHY_DEG,PHY_HBR,_______,_______,TUR_S,  KC_INS , \
    _______,DBL_DQT,CUT,    COPY,   PASTE,  DBL_GRV,CUR_BIT,DBL_ANG,DBL_PAR,DBL_SQR,DBL_BRC,_______, \
    _______,_______,_______,_______,_______,DBL_SPC,_______,KC_HOME,KC_PGDN,KC_PGUP,KC_END, _______

/* Game layer
 * ,------------------------------------------------------------------------.


@@ 191,15 196,11 @@ enum {
 * |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
 * |  /  |  `  |     |     |     | Spc || Spc | Ent |  0  |  <  |  v  |  >  |
 * `------------------------------------------------------------------------' */
#define GAME_1 \
    K_GAMES,KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,   KC_ESC, KC_P7,  KC_P8,  KC_P9,  KC_NLCK,KC_BSPC
#define GAME_2 \
    KC_TAB, KC_A,   KC_S,   KC_D,   KC_F,   KC_G,   KC_F1,  KC_P4,  KC_P5,  KC_P6,  KC_BSLS,KC_ENT 
#define GAME_3 \
    _______,KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_F2,  KC_P1,  KC_P2,  KC_P3,  KC_UP,  _______
#define GAME_4 \
#define GAME \
    K_GAMES,KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,   KC_ESC, KC_P7,  KC_P8,  KC_P9,  KC_NLCK,KC_BSPC, \
    KC_TAB, KC_A,   KC_S,   KC_D,   KC_F,   KC_G,   KC_F1,  KC_P4,  KC_P5,  KC_P6,  KC_BSLS,KC_ENT , \
    _______,KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_F2,  KC_P1,  KC_P2,  KC_P3,  KC_UP,  _______, \
    KC_SLSH,KC_GRV, _______,_______,_______,KC_SPC, KC_SPC, KC_ENT, KC_P0,  KC_LEFT,KC_DOWN,KC_RGHT
#define GAME KM(GAME_1,GAME_2,GAME_3,GAME_4)

/* Symbols layer
 * ,------------------------------------------------------------------------.


@@ 209,17 210,13 @@ enum {
 * |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
 * |     |  !  |  @  |  #  |  $  |  %  ||  ^  |  &  |  *  |  (  |  )  | LCK |
 * |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
 * |  |  |     |     |  |  |     |     ||     |     |     |     |     |     |
 * |  |  |     |     |     |     |     ||     |     |     |     |     |     |
 * `------------------------------------------------------------------------' */
#define NUMBERS_1 \
    K_NUMBR,KC_GRV, KC_TILD,KC_LBRC,KC_RBRC,KC_LCBR,KC_RCBR,KC_MINS,KC_UNDS,KC_EQL, KC_PLUS,_______
#define NUMBERS_2 \
    _______,KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,   KC_BSLS
#define NUMBERS_3 \
    _______,KC_EXLM,KC_AT,  KC_HASH,KC_DLR, KC_PERC,KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,K_LOCK
#define NUMBERS_4 \
#define NUMBERS \
    K_NUMBR,KC_GRV, KC_TILD,KC_LBRC,KC_RBRC,KC_LCBR,KC_RCBR,KC_MINS,KC_UNDS,KC_EQL, KC_PLUS,_______, \
    _______,KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,   KC_BSLS, \
    _______,KC_EXLM,KC_AT,  KC_HASH,KC_DLR, KC_PERC,KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,K_LOCK , \
    KC_PIPE,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______
#define NUMBERS KM(NUMBERS_1,NUMBERS_2,NUMBERS_3,NUMBERS_4)

/* Settings layer
 * ,------------------------------------------------------------------------.


@@ 231,15 228,11 @@ enum {
 * |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
 * |Musir|     |     |     |     |Vol -||Vol +| Prev| Stop|TogMu| Next|     |
 * `------------------------------------------------------------------------' */
#define SETTINGS_1 \
    BL_STEP,KC_F1,  KC_F2,  KC_F3,  KC_F4,  UNI_LI, UNI_WN, KC_WAKE,_______,RGB_HUD,RGB_HUI,RESET  
#define SETTINGS_2 \
    _______,KC_F5,  KC_F6,  KC_F7,  KC_F8,  _______,_______,_______,RGB_TOG,RGB_SAD,RGB_SAI,_______
#define SETTINGS_3 \
    K_GAMES,KC_F9,  KC_F10, KC_F11, KC_F12, KC_MUTE,KC_PSCR,_______,RGB_MOD,RGB_VAD,RGB_VAI,_______
#define SETTINGS_4 \
#define SETTINGS \
    BL_STEP,KC_F1,  KC_F2,  KC_F3,  KC_F4,  UNI_LI, UNI_WN, KC_WAKE,_______,RGB_HUD,RGB_HUI,RESET  , \
    _______,KC_F5,  KC_F6,  KC_F7,  KC_F8,  _______,_______,_______,RGB_TOG,RGB_SAD,RGB_SAI,_______, \
    K_GAMES,KC_F9,  KC_F10, KC_F11, KC_F12, KC_MUTE,KC_PSCR,_______,RGB_MOD,RGB_VAD,RGB_VAI,_______, \
    MU_TOG, _______,_______,_______,_______,KC_VOLD,KC_VOLU,KC_MPRV,KC_MSTP,KC_MPLY,KC_MNXT,_______
#define SETTINGS KM(SETTINGS_1,SETTINGS_2,SETTINGS_3,SETTINGS_4)

/* Mouse layer
 * ,------------------------------------------------------------------------.


@@ 251,15 244,11 @@ enum {
 * |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
 * |     |     |     |     |     | Left||Right|     |     |Accl0|Accl1|Accl2|
 * `------------------------------------------------------------------------' */
#define MOUSE_1 \
    K_MOUSE,MO_NW,  MO_N,   MO_NE,  XXX,    XXX    ,XXX,    XXX,    MO_S_NW,MO_S_N, MO_S_NE,_______
#define MOUSE_2 \
    _______,MO_W,   MO_CL_M,MO_E,   MO_CL_4,XXX    ,XXX,    MO_CL_5,MO_S_W, MO_CL_M,MO_S_E, _______
#define MOUSE_3 \
    _______,MO_SW,  MO_S,   MO_SE,  XXX,    XXX    ,XXX,    XXX,    MO_S_SW,MO_S_S, MO_S_SE,K_LOCK
#define MOUSE_4 \
#define MOUSE \
    K_MOUSE,MO_NW,  MO_N,   MO_NE,  XXX,    XXX    ,XXX,    XXX,    MO_S_NW,MO_S_N, MO_S_NE,_______, \
    _______,MO_W,   MO_CL_M,MO_E,   MO_CL_4,XXX    ,XXX,    MO_CL_5,MO_S_W, MO_CL_M,MO_S_E, _______, \
    _______,MO_SW,  MO_S,   MO_SE,  XXX,    XXX    ,XXX,    XXX,    MO_S_SW,MO_S_S, MO_S_SE,K_LOCK , \
    _______,_______,_______,_______,_______,MO_CL_L,MO_CL_R,_______,MO_AC_0,MO_AC_1,MO_AC_2,_______
#define MOUSE KM(MOUSE_1,MOUSE_2,MOUSE_3,MOUSE_4)

/* Music layer
 * ,------------------------------------------------------------------------.


@@ 272,8 261,10 @@ enum {
 * | togg| rec | stop| play| slow| fast||modes|.....|.....|.....|.....|.....|
 * `------------------------------------------------------------------------'
 */
#define MASK XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX
#define MUSIC_4 MU_TOG, KC_LCTL, KC_LALT, KC_LGUI, KC_DOWN, KC_UP, MU_MOD, XXX, XXX, XXX, XXX, XXX
#define MUSIC KM(MASK,MASK,MASK,MUSIC_4)
#define MUSIC \
    MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK, \
    MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK, \
    MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK, \
    MU_TOG, MU_REC, MU_STOP,MU_PLAY,MU_SLOW,MU_FAST,MU_MOD, MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK

#endif

A users/bbaserdem/config.h => users/bbaserdem/config.h +9 -0
@@ 0,0 1,9 @@
#ifndef USERSPACE_CONFIG_H
#define USERSPACE_CONFIG_H

#ifdef TAP_DANCE_ENABLE
    #define TAPPING_TERM 300
    #define TAPPING_TOGGLE 1
#endif

#endif // !USERSPACE_CONFIG_H

M users/bbaserdem/rules.mk => users/bbaserdem/rules.mk +8 -6
@@ 1,13 1,15 @@
SRC += bbaserdem.c
EXTRAFLAGS += -flto
EXTRAFLAGS += -flto			# Used to make code smaller

# ENABLE
UNICODE_ENABLE = yes		# Used for unicode character emulation
EXTRAKEY_ENABLE = yes		# OS signals like volume control
UNICODE_ENABLE = yes	# Used for unicode character emulation
EXTRAKEY_ENABLE = yes 	# OS signals like volume control

# DISABLE
BLUETOOTH_ENABLE = no 		# No bluetooth
COMMAND_ENABLE = no			# Some bootmagic thing
ifndef BLUETOOTH_ENABLE 
	BLUETOOTH_ENABLE = no 	# No bluetooth
endif
COMMAND_ENABLE = no			# Some bootmagic thing i dont use
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.


@@ 18,5 20,5 @@ 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

# Disabling this makes it compile, prob bad upstream code
# Disabling this makes it compile, i dont know why
# VARIABLE_TRACE = no 		# Allows debugging variables