Keymap: Updates to personal userspace and keymaps (#4206)
* - updated personal userspace - updated fc660c, niu mini and planck keymaps - added prime_o keymap * Rename README.md to readme.md
This commit is contained in:
		
							parent
							
								
									e745144836
								
							
						
					
					
						commit
						704a2e8d3c
					
				
					 16 changed files with 411 additions and 54 deletions
				
			
		| 
						 | 
				
			
			@ -1,18 +1,29 @@
 | 
			
		|||
#include "spacebarracecar.h"
 | 
			
		||||
 | 
			
		||||
#ifdef GERMAN_ENABLE
 | 
			
		||||
// These indicate if left and right shift are physically pressed
 | 
			
		||||
bool lshift = false;
 | 
			
		||||
bool rshift = false;
 | 
			
		||||
 | 
			
		||||
// Interrupt and times for space cadet shift
 | 
			
		||||
bool lshiftp = false;
 | 
			
		||||
bool rshiftp = false;
 | 
			
		||||
uint16_t lshift_timer = 0;
 | 
			
		||||
uint16_t rshift_timer = 0;
 | 
			
		||||
 | 
			
		||||
// Number of items that are saved in prev_kcs
 | 
			
		||||
uint8_t prev_indx = 0;
 | 
			
		||||
// Used to save the last 6 actual keycodes activated by frankenkeycodes
 | 
			
		||||
uint16_t prev_kcs[6] = {0, 0, 0, 0, 0, 0};
 | 
			
		||||
 | 
			
		||||
// If true the deadkey characters grave and circonflexe are not automatically escaped
 | 
			
		||||
bool esct = false;
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
Used to add a keycode to a prev_kcs to remember it.
 | 
			
		||||
When full the last code gets discarded and replaced by
 | 
			
		||||
the new one.
 | 
			
		||||
*/
 | 
			
		||||
void add_to_prev(uint16_t kc){
 | 
			
		||||
  for (int i=0; i<prev_indx; i++){
 | 
			
		||||
    if (kc == prev_kcs[i])
 | 
			
		||||
| 
						 | 
				
			
			@ -29,6 +40,13 @@ void add_to_prev(uint16_t kc){
 | 
			
		|||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
Unregisters all codes saved in prev_kcs and resets prev_indx.
 | 
			
		||||
gets called on multiple occasions mainly when shift is released
 | 
			
		||||
and when frankenkeycodes are pressed. Prevents output of
 | 
			
		||||
wrong characters when really specific key combinations
 | 
			
		||||
that would never occur during normal usage are pressed.
 | 
			
		||||
*/
 | 
			
		||||
void unreg_prev(void){
 | 
			
		||||
  if (prev_indx == 0)
 | 
			
		||||
    return;
 | 
			
		||||
| 
						 | 
				
			
			@ -39,11 +57,14 @@ void unreg_prev(void){
 | 
			
		|||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// stuff for nav esc
 | 
			
		||||
// Interrupt and times for Nav/Esc
 | 
			
		||||
bool navesc = false;
 | 
			
		||||
uint16_t navesc_timer = 0;
 | 
			
		||||
 | 
			
		||||
// If true Gui keys and Space Cadet Shift get disabled
 | 
			
		||||
bool game = false;
 | 
			
		||||
 | 
			
		||||
// Interrupts all timers
 | 
			
		||||
void timer_timeout(void){
 | 
			
		||||
  #ifdef GERMAN_ENABLE
 | 
			
		||||
  lshiftp = false;
 | 
			
		||||
| 
						 | 
				
			
			@ -52,15 +73,19 @@ void timer_timeout(void){
 | 
			
		|||
  navesc = false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool process_record_userspace(uint16_t keycode, keyrecord_t *record) {
 | 
			
		||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
			
		||||
  switch (keycode) {
 | 
			
		||||
  case CU_GAME:
 | 
			
		||||
    if(record->event.pressed) {
 | 
			
		||||
      timer_timeout();
 | 
			
		||||
      game = !game;
 | 
			
		||||
    }
 | 
			
		||||
    return false;
 | 
			
		||||
    // allows keymap to execute further commands when CU_GAME is pressed, for example enabling a macro layer
 | 
			
		||||
    return process_record_keymap(keycode, record) && false;
 | 
			
		||||
  case KC_LGUI:
 | 
			
		||||
  case KC_RGUI:
 | 
			
		||||
    if (record->event.pressed)
 | 
			
		||||
      timer_timeout();
 | 
			
		||||
    if (game)
 | 
			
		||||
      return false;
 | 
			
		||||
    else
 | 
			
		||||
| 
						 | 
				
			
			@ -77,11 +102,21 @@ bool process_record_userspace(uint16_t keycode, keyrecord_t *record) {
 | 
			
		|||
      }
 | 
			
		||||
      layer_off(_NAV);
 | 
			
		||||
    }
 | 
			
		||||
  return false;
 | 
			
		||||
    return false;
 | 
			
		||||
  case KC_P00:
 | 
			
		||||
    if(record->event.pressed) {
 | 
			
		||||
      timer_timeout();
 | 
			
		||||
      register_code(KC_P0);
 | 
			
		||||
      unregister_code(KC_P0);
 | 
			
		||||
      register_code(KC_P0);
 | 
			
		||||
      unregister_code(KC_P0);
 | 
			
		||||
    }
 | 
			
		||||
    return false;
 | 
			
		||||
 | 
			
		||||
  #ifdef RGBLIGHT_ENABLE
 | 
			
		||||
  case CU_RGBV:
 | 
			
		||||
    if(record->event.pressed) {
 | 
			
		||||
      timer_timeout();
 | 
			
		||||
      if (rgblight_get_val()+32>255)
 | 
			
		||||
        rgblight_sethsv(rgblight_get_hue(), rgblight_get_sat(), 31);
 | 
			
		||||
      else
 | 
			
		||||
| 
						 | 
				
			
			@ -133,6 +168,7 @@ bool process_record_userspace(uint16_t keycode, keyrecord_t *record) {
 | 
			
		|||
    return false;
 | 
			
		||||
  case CU_ESCT:
 | 
			
		||||
    if(record->event.pressed) {
 | 
			
		||||
      timer_timeout();
 | 
			
		||||
      esct = !esct;
 | 
			
		||||
    }
 | 
			
		||||
    return false;
 | 
			
		||||
| 
						 | 
				
			
			@ -282,6 +318,7 @@ bool process_record_userspace(uint16_t keycode, keyrecord_t *record) {
 | 
			
		|||
  case KC_LCTL:
 | 
			
		||||
  case KC_RCTL:
 | 
			
		||||
    if(!record->event.pressed) {
 | 
			
		||||
      timer_timeout();
 | 
			
		||||
      unregister_code(KC_Z);
 | 
			
		||||
      unregister_code(KC_Y);
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			@ -300,6 +337,6 @@ bool process_record_userspace(uint16_t keycode, keyrecord_t *record) {
 | 
			
		|||
      #endif
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
    return true;
 | 
			
		||||
    return process_record_keymap(keycode, record);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,13 +4,14 @@
 | 
			
		|||
#include "keymap_german.h"
 | 
			
		||||
 | 
			
		||||
enum userspace_layers {
 | 
			
		||||
  _DEADKEY = 14,            //change if more than 16 layers are required
 | 
			
		||||
  _DEADKEY = 14,            // Change if more than 16 layers are required
 | 
			
		||||
  _NAV
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
enum userspace_custom_keycodes {
 | 
			
		||||
  CU_GAME = SAFE_RANGE,     // Toggle game mode on/off
 | 
			
		||||
  CU_NAV,                   // NAV | ESC
 | 
			
		||||
  KC_P00,                   // Numpad double zero
 | 
			
		||||
 | 
			
		||||
  #ifdef GERMAN_ENABLE
 | 
			
		||||
  CU_LSFT,                  // LSFT | (
 | 
			
		||||
| 
						 | 
				
			
			@ -52,10 +53,8 @@ enum userspace_custom_keycodes {
 | 
			
		|||
};
 | 
			
		||||
 | 
			
		||||
#ifdef GERMAN_ENABLE
 | 
			
		||||
// these save the current shift status
 | 
			
		||||
extern bool lshift;
 | 
			
		||||
extern bool rshift;
 | 
			
		||||
// stuff for custom space cadet shift
 | 
			
		||||
extern bool lshiftp;
 | 
			
		||||
extern bool rshiftp;
 | 
			
		||||
extern uint16_t lshift_timer;
 | 
			
		||||
| 
						 | 
				
			
			@ -63,14 +62,12 @@ extern uint16_t rshift_timer;
 | 
			
		|||
 | 
			
		||||
extern uint8_t prev_indx;
 | 
			
		||||
extern uint16_t prev_kcs[6];
 | 
			
		||||
 | 
			
		||||
void add_to_prev(uint16_t kc);
 | 
			
		||||
void unreg_prev(void);
 | 
			
		||||
 | 
			
		||||
extern bool esct;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// stuff for nav esc
 | 
			
		||||
extern bool navesc;
 | 
			
		||||
extern uint16_t navesc_timer;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -78,7 +75,7 @@ extern bool game;
 | 
			
		|||
 | 
			
		||||
void timer_timeout(void);
 | 
			
		||||
 | 
			
		||||
bool process_record_userspace(uint16_t keycode, keyrecord_t *record);
 | 
			
		||||
bool process_record_keymap(uint16_t keycode, keyrecord_t *record);
 | 
			
		||||
 | 
			
		||||
#define CTRLX LCTL(KC_X)
 | 
			
		||||
#define CTRLC LCTL(KC_C)
 | 
			
		||||
| 
						 | 
				
			
			@ -89,9 +86,9 @@ bool process_record_userspace(uint16_t keycode, keyrecord_t *record);
 | 
			
		|||
#define GUIL LGUI(KC_LEFT)
 | 
			
		||||
#define GUIR RGUI(KC_RIGHT)
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// Templates for Keys, with custom shifted and non shifted Characters
 | 
			
		||||
//
 | 
			
		||||
/*
 | 
			
		||||
Templates for Keys, with custom shifted and non shifted Characters
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
// Normal shift status
 | 
			
		||||
#define SHIFT_NORM(kc1, kc2) \
 | 
			
		||||
| 
						 | 
				
			
			@ -139,7 +136,7 @@ if (record->event.pressed) { \
 | 
			
		|||
} \
 | 
			
		||||
return false;
 | 
			
		||||
 | 
			
		||||
// All shift
 | 
			
		||||
// Always shifted
 | 
			
		||||
#define SHIFT_ALL(kc1, kc2) \
 | 
			
		||||
if (record->event.pressed) { \
 | 
			
		||||
  timer_timeout(); \
 | 
			
		||||
| 
						 | 
				
			
			@ -164,7 +161,7 @@ if (record->event.pressed) { \
 | 
			
		|||
} \
 | 
			
		||||
return false;
 | 
			
		||||
 | 
			
		||||
// All no shift
 | 
			
		||||
// Never shifted
 | 
			
		||||
#define SHIFT_NO(kc1, kc2) \
 | 
			
		||||
if (record->event.pressed) { \
 | 
			
		||||
  timer_timeout(); \
 | 
			
		||||
| 
						 | 
				
			
			@ -188,7 +185,7 @@ if (record->event.pressed) { \
 | 
			
		|||
} \
 | 
			
		||||
return false;
 | 
			
		||||
 | 
			
		||||
// All algr
 | 
			
		||||
// Always AltGr
 | 
			
		||||
#define SHIFT_ALGR(kc1, kc2) \
 | 
			
		||||
if (record->event.pressed) { \
 | 
			
		||||
  timer_timeout(); \
 | 
			
		||||
| 
						 | 
				
			
			@ -208,7 +205,7 @@ if (record->event.pressed) { \
 | 
			
		|||
} \
 | 
			
		||||
return false;
 | 
			
		||||
 | 
			
		||||
// Different keycode for ctrl
 | 
			
		||||
// Different keycode when Ctrl is pressed
 | 
			
		||||
#define CTRL(kc1, kc2) \
 | 
			
		||||
if(record->event.pressed) { \
 | 
			
		||||
  timer_timeout(); \
 | 
			
		||||
| 
						 | 
				
			
			@ -227,7 +224,7 @@ if(record->event.pressed) { \
 | 
			
		|||
} \
 | 
			
		||||
return false;
 | 
			
		||||
 | 
			
		||||
// Umlaute for deadkey layer
 | 
			
		||||
// Template for keys on deadkey layer (mostly Umlaute)
 | 
			
		||||
#define UML(kc) \
 | 
			
		||||
if(record->event.pressed) { \
 | 
			
		||||
  timer_timeout(); \
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue