summary refs log tree commit diff
path: root/users/rs
diff options
context:
space:
mode:
authorOlivier Poitrey <rs@rhapsodyk.net>2019-05-07 10:43:08 -0700
committerDrashna Jaelre <drashna@live.com>2019-05-07 10:43:08 -0700
commit2d5c16dfd4ef193c4f692722157aa2b526a4c877 (patch)
tree527c5e5f51cf75c4476616a3c6ed91e385f1e1b2 /users/rs
parent3b132599427a648b1f14aaf30312f05f855625ea (diff)
[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.
Diffstat (limited to 'users/rs')
-rw-r--r--users/rs/karabiner.json154
-rw-r--r--users/rs/readme.md30
-rw-r--r--users/rs/rs.c74
-rw-r--r--users/rs/rs.h50
-rw-r--r--users/rs/rules.mk1
5 files changed, 309 insertions, 0 deletions
diff --git a/users/rs/karabiner.json b/users/rs/karabiner.json
new file mode 100644
index 0000000000..f5214650ad
--- /dev/null
+++ b/users/rs/karabiner.json
@@ -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"}]
+        }]
+    }]
+}
diff --git a/users/rs/readme.md b/users/rs/readme.md
new file mode 100644
index 0000000000..60b34ea32f
--- /dev/null
+++ b/users/rs/readme.md
@@ -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)
diff --git a/users/rs/rs.c b/users/rs/rs.c
new file mode 100644
index 0000000000..fa634bb928
--- /dev/null
+++ b/users/rs/rs.c
@@ -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);
+}
\ No newline at end of file
diff --git a/users/rs/rs.h b/users/rs/rs.h
new file mode 100644
index 0000000000..722d6ed19e
--- /dev/null
+++ b/users/rs/rs.h
@@ -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
\ No newline at end of file
diff --git a/users/rs/rules.mk b/users/rs/rules.mk
new file mode 100644
index 0000000000..edb5be0f5b
--- /dev/null
+++ b/users/rs/rules.mk
@@ -0,0 +1 @@
+SRC += rs.c
\ No newline at end of file