[Keymap] crkbd/keymaps/rs: add rs keymap to corne keyboard and adapt others (#5181)
Update all my keymaps to work with 40 keys. Refactor code using Userspace.
This commit is contained in:
		
							parent
							
								
									3b13259942
								
							
						
					
					
						commit
						2d5c16dfd4
					
				
					 26 changed files with 525 additions and 354 deletions
				
			
		
							
								
								
									
										154
									
								
								users/rs/karabiner.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										154
									
								
								users/rs/karabiner.json
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,154 @@
 | 
			
		|||
{
 | 
			
		||||
    "title": "RS",
 | 
			
		||||
    "rules": [{
 | 
			
		||||
        "description": "CapsLock to Escape / Control Mod-Tap",
 | 
			
		||||
        "manipulators": [{
 | 
			
		||||
            "type": "basic",
 | 
			
		||||
            "from": {
 | 
			
		||||
                "key_code": "caps_lock",
 | 
			
		||||
                "modifiers": {
 | 
			
		||||
                    "optional": ["any"]
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            "to": [{"key_code": "left_control"}],
 | 
			
		||||
            "to_if_alone": [{"key_code": "escape"}]
 | 
			
		||||
        }]
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "description": "Right-Shift / Enter Mod-Tap",
 | 
			
		||||
        "manipulators": [{
 | 
			
		||||
            "type": "basic",
 | 
			
		||||
            "from": {
 | 
			
		||||
                "key_code": "right_shift",
 | 
			
		||||
                "modifiers": {
 | 
			
		||||
                    "optional": ["any"]
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            "to": [{"key_code": "right_shift"}],
 | 
			
		||||
            "to_if_alone": [{"key_code": "return_or_enter"}]
 | 
			
		||||
        }]
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "description": "Right-Command / Backspace Mod-Tap",
 | 
			
		||||
        "manipulators": [{
 | 
			
		||||
            "type": "basic",
 | 
			
		||||
            "from": {
 | 
			
		||||
                "key_code": "right_command",
 | 
			
		||||
                "modifiers": {
 | 
			
		||||
                    "optional": ["any"]
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            "to": [{"key_code": "right_command"}],
 | 
			
		||||
            "to_if_alone": [{"key_code": "delete_or_backspace"}]
 | 
			
		||||
        }]
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "description": "Right-Command Accents",
 | 
			
		||||
        "manipulators": [
 | 
			
		||||
        {
 | 
			
		||||
            "type": "basic",
 | 
			
		||||
            "from": {
 | 
			
		||||
                "key_code": "a",
 | 
			
		||||
                "modifiers": {
 | 
			
		||||
                    "mandatory": ["right_command"],
 | 
			
		||||
                    "optional": ["left_shift", "right_shift"]
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            "to": [
 | 
			
		||||
                {"key_code": "grave_accent_and_tilde", "modifiers": ["left_option"]},
 | 
			
		||||
                {"key_code": "a"}
 | 
			
		||||
            ]
 | 
			
		||||
        }]
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "description": "Right Command Navigation",
 | 
			
		||||
        "manipulators": [{
 | 
			
		||||
            "type": "basic",
 | 
			
		||||
            "from": {
 | 
			
		||||
                "key_code": "j",
 | 
			
		||||
                "modifiers": {
 | 
			
		||||
                    "mandatory": ["right_command"],
 | 
			
		||||
                    "optional": ["any"]
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            "to": [{"key_code": "left_arrow"}]
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "type": "basic",
 | 
			
		||||
            "from": {
 | 
			
		||||
                "key_code": "k",
 | 
			
		||||
                "modifiers": {
 | 
			
		||||
                    "mandatory": ["right_command"],
 | 
			
		||||
                    "optional": ["any"]
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            "to": [{"key_code": "down_arrow"}]
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "type": "basic",
 | 
			
		||||
            "from": {
 | 
			
		||||
                "key_code": "i",
 | 
			
		||||
                "modifiers": {
 | 
			
		||||
                    "mandatory": ["right_command"],
 | 
			
		||||
                    "optional": ["any"]
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            "to": [{"key_code": "up_arrow"}]
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "type": "basic",
 | 
			
		||||
            "from": {
 | 
			
		||||
                "key_code": "l",
 | 
			
		||||
                "modifiers": {
 | 
			
		||||
                    "mandatory": ["right_command"],
 | 
			
		||||
                    "optional": ["any"]
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            "to": [{"key_code": "right_arrow"}]
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "type": "basic",
 | 
			
		||||
            "from": {
 | 
			
		||||
                "key_code": "e",
 | 
			
		||||
                "modifiers": {
 | 
			
		||||
                    "mandatory": ["right_command"],
 | 
			
		||||
                    "optional": ["any"]
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            "to": [{"key_code": "page_up"}]
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "type": "basic",
 | 
			
		||||
            "from": {
 | 
			
		||||
                "key_code": "d",
 | 
			
		||||
                "modifiers": {
 | 
			
		||||
                    "mandatory": ["right_command"],
 | 
			
		||||
                    "optional": ["any"]
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            "to": [{"key_code": "page_down"}]
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "type": "basic",
 | 
			
		||||
            "from": {
 | 
			
		||||
                "key_code": "s",
 | 
			
		||||
                "modifiers": {
 | 
			
		||||
                    "mandatory": ["right_command"],
 | 
			
		||||
                    "optional": ["any"]
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            "to": [{"key_code": "home"}]
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "type": "basic",
 | 
			
		||||
            "from": {
 | 
			
		||||
                "key_code": "f",
 | 
			
		||||
                "modifiers": {
 | 
			
		||||
                    "mandatory": ["right_command"],
 | 
			
		||||
                    "optional": ["any"]
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            "to": [{"key_code": "end"}]
 | 
			
		||||
        }]
 | 
			
		||||
    }]
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										30
									
								
								users/rs/readme.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								users/rs/readme.md
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,30 @@
 | 
			
		|||
# RS: Code Friendly 40% – 60% Keymaps
 | 
			
		||||
 | 
			
		||||
The rs keymap collection is an evolution of my previous keymap optimized for coding with a 60% keyboards like the Iris. I tried to keep the simplicity of my previous keymap with all the keys necessary for coding on a single layer in addition to the base one. It work well with any 40% and 60% keyboard, split or not.
 | 
			
		||||
 | 
			
		||||
To build it, use:
 | 
			
		||||
 | 
			
		||||
    make <keyboard>:rs
 | 
			
		||||
 | 
			
		||||
Example:
 | 
			
		||||
 | 
			
		||||
    make keebio/iris:rs
 | 
			
		||||
    make crkbd:rs
 | 
			
		||||
    make planck:rs
 | 
			
		||||
    make preonic:rs
 | 
			
		||||
    make ergotravel:rs
 | 
			
		||||
    make handwired/rs60:rs
 | 
			
		||||
 | 
			
		||||
Because I sometime have to use my internal keyboard I my macbook, a [karabiner configuration](karabiner.json) is also provided to get most of the features of this keyboard, including the code layer / backspace on right command key etc.
 | 
			
		||||
 | 
			
		||||
This set of keymaps have been tested with those keyboards:
 | 
			
		||||
- [Planck](../../keyboards/planck/)
 | 
			
		||||
- [Preonic](../../keyboards/preonic/)
 | 
			
		||||
- [My preonic clone](../../keyboards/handwired/rs60/)
 | 
			
		||||
 | 
			
		||||
This keymap in is also available for other keyboards:
 | 
			
		||||
- [Crkdb/rs](../../keyboards/crkbd/keymaps/rs/keymap.c)
 | 
			
		||||
- [Iris/rs](../../keyboards/keebio/iris/keymaps/rs/keymap.c)
 | 
			
		||||
- [Ergotravel/rs](../../keyboards/ergotravel/keymaps/rs/keymap.c)
 | 
			
		||||
- [ortho_5x12/rs](../../layouts/community/ortho_5x12/rs/keymap.c)
 | 
			
		||||
- [ortho_4x12/rs](../../layouts/community/ortho_4x12/rs/keymap.c)
 | 
			
		||||
							
								
								
									
										74
									
								
								users/rs/rs.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										74
									
								
								users/rs/rs.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,74 @@
 | 
			
		|||
 | 
			
		||||
#include "rs.h"
 | 
			
		||||
 | 
			
		||||
// process_record_user is like process_record_user for keymaps including this file.
 | 
			
		||||
__attribute__ ((weak))
 | 
			
		||||
bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
 | 
			
		||||
  return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// rgb_mod_changed_keymap is called any time the RGB mod has been changed.
 | 
			
		||||
__attribute__ ((weak))
 | 
			
		||||
void rgb_mod_changed_keymap(void) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// keylog_set_keymap is called for every key press.
 | 
			
		||||
__attribute__ ((weak))
 | 
			
		||||
void keylog_set_keymap(uint16_t keycode, keyrecord_t *record) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
			
		||||
  if (record->event.pressed) {
 | 
			
		||||
    keylog_set_keymap(keycode, record);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  switch (keycode) {
 | 
			
		||||
  case NEQL: // !=
 | 
			
		||||
    if (record->event.pressed) {
 | 
			
		||||
      SEND_STRING("!=");
 | 
			
		||||
    }
 | 
			
		||||
    return false;
 | 
			
		||||
  case LPLT: // ( or < with shift
 | 
			
		||||
    if (record->event.pressed) {
 | 
			
		||||
      if (get_mods() & (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT))) {
 | 
			
		||||
        // <
 | 
			
		||||
        tap_code(KC_COMM); // shift is already registered
 | 
			
		||||
      } else {
 | 
			
		||||
        // (
 | 
			
		||||
        register_mods(MOD_BIT(KC_LSFT));
 | 
			
		||||
        tap_code(KC_9);
 | 
			
		||||
        unregister_mods(MOD_BIT(KC_LSFT));
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    return false;
 | 
			
		||||
  case RPGT: // ) or > with shift
 | 
			
		||||
    if (record->event.pressed) {
 | 
			
		||||
      if (get_mods() & (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT))) {
 | 
			
		||||
        // <
 | 
			
		||||
        tap_code(KC_DOT); // shift is already registered
 | 
			
		||||
      } else {
 | 
			
		||||
        // )
 | 
			
		||||
        register_mods(MOD_BIT(KC_LSFT));
 | 
			
		||||
        tap_code(KC_0);
 | 
			
		||||
        unregister_mods(MOD_BIT(KC_LSFT));
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    return false;
 | 
			
		||||
#ifdef RGBLIGHT_ENABLE
 | 
			
		||||
  case RGB_MOD:
 | 
			
		||||
      if (record->event.pressed) {
 | 
			
		||||
        rgblight_step();
 | 
			
		||||
        rgb_mod_changed_keymap();
 | 
			
		||||
      }
 | 
			
		||||
    return false;
 | 
			
		||||
  case RGBRST:
 | 
			
		||||
      if (record->event.pressed) {
 | 
			
		||||
        eeconfig_update_rgblight_default();
 | 
			
		||||
        rgblight_enable();
 | 
			
		||||
        rgb_mod_changed_keymap();
 | 
			
		||||
      }
 | 
			
		||||
    return false;
 | 
			
		||||
#endif
 | 
			
		||||
  }
 | 
			
		||||
  return process_record_keymap(keycode, record);
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										50
									
								
								users/rs/rs.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								users/rs/rs.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,50 @@
 | 
			
		|||
#pragma once
 | 
			
		||||
#include "quantum.h"
 | 
			
		||||
 | 
			
		||||
enum layers {
 | 
			
		||||
  _QWERTY,
 | 
			
		||||
  _CODE,
 | 
			
		||||
  _FN,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
enum custom_keycodes {
 | 
			
		||||
  CODE = SAFE_RANGE,
 | 
			
		||||
  FN,
 | 
			
		||||
  LPLT,
 | 
			
		||||
  RPGT,
 | 
			
		||||
  NEQL,
 | 
			
		||||
#ifdef RGBLIGHT_ENABLE
 | 
			
		||||
  RGBRST,
 | 
			
		||||
#endif
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#define KC_ KC_TRNS
 | 
			
		||||
 | 
			
		||||
#define KC_ESCC MT(MOD_LCTL, KC_ESC)
 | 
			
		||||
#define KC_ENTS MT(MOD_LSFT, KC_ENT)
 | 
			
		||||
#define KC_LTGT LTGT // > or < with shift
 | 
			
		||||
#define KC_LPLT LPLT // ( or < with shift
 | 
			
		||||
#define KC_RPGT RPGT // ) or > with shift
 | 
			
		||||
#define KC_NEQL NEQL // !=
 | 
			
		||||
#define KC_CODE MO(_CODE)
 | 
			
		||||
#define KC_BCOD LT(_CODE, KC_BSPC)
 | 
			
		||||
#define KC_FN   MO(_FN)
 | 
			
		||||
#define KC_RST  RESET
 | 
			
		||||
#define KC_CTRA LCTL(KC_A)
 | 
			
		||||
#define KC_CTRE LCTL(KC_E)
 | 
			
		||||
#define KC_BLTG BL_TOGG
 | 
			
		||||
#define KC_BLUP BL_INC
 | 
			
		||||
#define KC_BLDN BL_DEC
 | 
			
		||||
#define KC_BLBR BL_BRTG
 | 
			
		||||
 | 
			
		||||
#ifdef RGBLIGHT_ENABLE
 | 
			
		||||
#define KC_LRST RGBRST
 | 
			
		||||
#define KC_LTOG RGB_TOG
 | 
			
		||||
#define KC_LHUI RGB_HUI
 | 
			
		||||
#define KC_LHUD RGB_HUD
 | 
			
		||||
#define KC_LSAI RGB_SAI
 | 
			
		||||
#define KC_LSAD RGB_SAD
 | 
			
		||||
#define KC_LVAI RGB_VAI
 | 
			
		||||
#define KC_LVAD RGB_VAD
 | 
			
		||||
#define KC_LMOD RGB_MOD
 | 
			
		||||
#endif
 | 
			
		||||
							
								
								
									
										1
									
								
								users/rs/rules.mk
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								users/rs/rules.mk
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
SRC += rs.c
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue