summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOlivier Poitrey <rs@rhapsodyk.net>2019-01-25 12:57:10 -0800
committerDrashna Jaelre <drashna@live.com>2019-01-25 12:57:10 -0800
commite611433cb5a479d84b37088e64da01b556f314fa (patch)
treeabebed05c6dc72f99ed2e9927afcf4a3b52256fe
parent3542e573c8ee464f62fc5e9a0f618d3a244048c0 (diff)
downloadqmk_firmware-e611433cb5a479d84b37088e64da01b556f314fa.tar.gz
qmk_firmware-e611433cb5a479d84b37088e64da01b556f314fa.zip
rs: code friendly keymap for preonic, iris and my preonic clone (#4303)
I worked on those keymap to simplify the use of 60% keyboards for coders. Instead of trying to mimic planck, this keymap remove raise/lower layer complexity and keep some important sign keys for coder in the upper right side pretty much the same way as they are on a full keyboard. A karabiner configuration is also provided to mimic most of the keymap features on the macbook internal keyboard for when you are forced to use it.
-rw-r--r--keyboards/ergotravel/keymaps/rs/config.h38
-rw-r--r--keyboards/ergotravel/keymaps/rs/keymap.c59
-rw-r--r--keyboards/ergotravel/keymaps/rs/readme.md13
-rw-r--r--keyboards/ergotravel/keymaps/rs/rules.mk0
-rw-r--r--keyboards/handwired/rs60/README.md27
-rw-r--r--keyboards/handwired/rs60/config.h47
-rw-r--r--keyboards/handwired/rs60/keymaps/default/keymap.c207
-rw-r--r--keyboards/handwired/rs60/keymaps/default/readme.md1
-rw-r--r--keyboards/handwired/rs60/rs60.c18
-rw-r--r--keyboards/handwired/rs60/rs60.h36
-rw-r--r--keyboards/handwired/rs60/rules.mk61
-rw-r--r--keyboards/iris/keymaps/rs/config.h38
-rw-r--r--keyboards/iris/keymaps/rs/karabiner.json154
-rw-r--r--keyboards/iris/keymaps/rs/keymap.c48
-rw-r--r--keyboards/iris/keymaps/rs/readme.md13
-rw-r--r--keyboards/iris/keymaps/rs/rules.mk1
-rw-r--r--layouts/community/ortho_5x12/rs/config.h35
-rw-r--r--layouts/community/ortho_5x12/rs/karabiner.json154
-rw-r--r--layouts/community/ortho_5x12/rs/keymap.c63
-rw-r--r--layouts/community/ortho_5x12/rs/readme.md17
20 files changed, 1030 insertions, 0 deletions
diff --git a/keyboards/ergotravel/keymaps/rs/config.h b/keyboards/ergotravel/keymaps/rs/config.h
new file mode 100644
index 0000000000..eeca26ce1d
--- /dev/null
+++ b/keyboards/ergotravel/keymaps/rs/config.h
@@ -0,0 +1,38 @@
+/*
+Copyright 2017 Pierre Constantineau <jpconstantineau@gmail.com>
+
+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/>.
+*/
+
+#pragma once
+
+/* Use I2C or Serial, not both */
+
+#define USE_SERIAL
+// #define USE_I2C
+
+/* Select hand configuration */
+
+#define MASTER_LEFT
+// #define MASTER_RIGHT
+// #define EE_HANDS
+
+#undef RGBLED_NUM
+#define RGBLIGHT_ANIMATIONS
+#define RGBLED_NUM 12
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+
+
diff --git a/keyboards/ergotravel/keymaps/rs/keymap.c b/keyboards/ergotravel/keymaps/rs/keymap.c
new file mode 100644
index 0000000000..634e97c49c
--- /dev/null
+++ b/keyboards/ergotravel/keymaps/rs/keymap.c
@@ -0,0 +1,59 @@
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _QWERTY,
+ _HYPER,
+ _SIGN
+};
+
+
+#define KC_ KC_TRNS
+
+#define KC_ESCC MT(MOD_LCTL, KC_ESC)
+#define KC_ENTS MT(MOD_LSFT, KC_ENT)
+#define KC_HYPE MO(_HYPER)
+#define KC_SIGN MO(_SIGN)
+#define KC_RST RESET
+// Brightness
+#define KC_BRUP KC_PAUS
+#define KC_BRDN KC_SLCK
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_QWERTY] = LAYOUT_kc(
+ //,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
+ TAB , Q , W , E , R , T , GRV, BSLS, Y , U , I , O , P ,EQL ,
+ //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
+ ESCC, A , S , D , F , G ,PIPE, MINS, H , J , K , L ,SCLN,QUOT,
+ //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
+ LSFT, Z , X , C , V , B , SPC, BSPC, N , M ,COMM,DOT ,SLSH,ENTS,
+ //|----+----+----+----+----+----+----. .----+----+----+----+----+----+----|
+ SIGN, ,LCTL,LALT,LGUI, SPC, BSPC, HYPE,LEFT, UP ,DOWN,RIGHT
+ //`----+----+----+--+-+----/----/ \----\----+----+----+----+----'
+ ),
+
+
+ [_HYPER] = LAYOUT_kc(
+ //,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
+ GRV , 1 , 2 , 3 , 4 , 5 , , , 6 , 7 , 8 , 9 , 0 , ,
+ //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
+ , , ,PGUP, , , , , , , UP ,LBRC,RBRC,BSLS,
+ //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
+ , ,HOME,PGDN,END , , , VOLU, ,LEFT,DOWN,RGHT, ,PIPE,
+ //|----+----+----+----+----+----+----. .----+----+----+----+----+----+----|
+ , , , , , , VOLD, ,MUTE, , ,
+ //`----+----+----+----+----/----/ \----\----+----+----+----+----'
+ ),
+
+ [_SIGN] = LAYOUT_kc(
+ //,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
+ TILD,EXLM, AT ,HASH,DLR ,PERC, , ,CIRC,AMPR,ASTR,LBRC,RBRC, ,
+ //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
+ RST , F1 , F2 , F3 , F4 , F5 , F6 , , , , ,LCBR,RCBR,PIPE,
+ //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
+ , 1 , 2 , 3 , 4 , 5 , , BRUP, 6 , 7 , 8 , 9 , 0 , ,
+ //|----+----+----+----+----+----+----. .----+----+----+----+----+----+----|
+ , , , , , , BRDN, , , , ,
+ //`----+----+----+----+----/----/ \----\----+----+----+----+----'
+ ),
+}; \ No newline at end of file
diff --git a/keyboards/ergotravel/keymaps/rs/readme.md b/keyboards/ergotravel/keymaps/rs/readme.md
new file mode 100644
index 0000000000..93b87cc23a
--- /dev/null
+++ b/keyboards/ergotravel/keymaps/rs/readme.md
@@ -0,0 +1,13 @@
+# Code friendly 60% keymap
+
+I developped this keymap to make a better use of 60% ortho keyboards I use like the preonic of the iris. Instead of trying to mimic the Planck layout like the default preonic keymap, this keymap removes the raise and lower layers and offers a simpler hyper layer concept for a few missing sign keys and cursors / media keys.
+
+The important part for coders is that most important signs needed to code are available at their usual position on a full keyboard, without complex layer gymnastic. Access to [] and {} are available on the hyper layer at their usual emplacement.
+
+The right thumb is used for both backspace and hyper layer switching. On the hyper layer, in addition to some coding signs, you get the cursor keys arranged in cross, just under your right fingers, so you don't have to move your hand when navigating in code or command line. Other hand gets the home/end page up/down in a similar layout.
+
+Because you sometime have to use your internal keyboard when you use a macbook, a karabiner configuration is also provided to get most of the features of this keyboard, including the hyper layer / backspace on right command key etc.
+
+This keymap is also available for other keyboards:
+- [ortho_5x12/rs](../../../../layouts/community/ortho_5x12/rs/keymap.c)
+- [Iris/rs](../../../iris/keymaps/rs/keymap.c)
diff --git a/keyboards/ergotravel/keymaps/rs/rules.mk b/keyboards/ergotravel/keymaps/rs/rules.mk
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/keyboards/ergotravel/keymaps/rs/rules.mk
diff --git a/keyboards/handwired/rs60/README.md b/keyboards/handwired/rs60/README.md
new file mode 100644
index 0000000000..07c967e276
--- /dev/null
+++ b/keyboards/handwired/rs60/README.md
@@ -0,0 +1,27 @@
+# rs60: Handwired Slim Preonic Clone
+
+I wanted a preonic layout but with a very low profile. As Jack is still working on the Preonic PCB for Kailh Choc switches, I figured I could try to handwire one myself. It's my first custom keyboard, so I had a lot to learn.
+
+First I designed the case in fusion 360. I wanted to build it using acrylic, constrained myself to standard acrylic sheet thickness.
+
+![](https://imgur.com/NscS7Rd.jpg)
+
+You can download the model [here](https://a360.co/2OqiKLm).
+
+To test my design I 3D printed the parts.
+
+![](https://imgur.com/MSF7zLS.jpg)
+
+The result was encouraging, so I decided to build a prototype out of the printed plates using Kailh Choc brown switches. I tried to make the handwiring job as flat as possible so it can fit in my design.
+
+![](https://i.imgur.com/67yZx0V.jpg)
+![](https://i.imgur.com/ft72Cgj.jpg)
+
+I designed switch plate and the middle plates so that they would be glued together. The middle plate has inserts to attach the bottom plate using m8 screws.
+
+![](https://i.imgur.com/GstTohI.jpg)
+
+The end result is not too bad, but there is a few things I would do differently. Gluing 3D printed plates wasn't a good idea. The switch layer is so thin, that it bends when all the switches are slotted. As a result, the keyboard is not entirely flat. I will replace the bottom plate by a metal one so I get more weight and rigidity.
+
+Even with acrylic, I think I will have the same issue. I might switch to screws + bolts that go all the way through.
+
diff --git a/keyboards/handwired/rs60/config.h b/keyboards/handwired/rs60/config.h
new file mode 100644
index 0000000000..371150a79a
--- /dev/null
+++ b/keyboards/handwired/rs60/config.h
@@ -0,0 +1,47 @@
+/*
+Copyright 2018 QMK Contributors
+
+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/>.
+*/
+#pragma once
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x4260
+#define DEVICE_VER 0x0001
+#define MANUFACTURER rs
+#define PRODUCT rs60
+#define DESCRIPTION Preonic clone based on pro micro
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 12
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { B5, B6, B4, B2, E6 }
+#define MATRIX_COL_PINS { C6, D4, D0, D1, D2, D3, F4, F5, F6, F7, B1, B3}
+#define UNUSED_PINS { }
+
+#define QMK_ESC_OUTPUT C6
+#define QMK_ESC_INPUT B4
+#define QMK_LED B0
+// #define QMK_SPEAKER C6
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* key combination for command */
+#define IS_COMMAND() ( \
+ false \
+)
diff --git a/keyboards/handwired/rs60/keymaps/default/keymap.c b/keyboards/handwired/rs60/keymaps/default/keymap.c
new file mode 100644
index 0000000000..9fea769d05
--- /dev/null
+++ b/keyboards/handwired/rs60/keymaps/default/keymap.c
@@ -0,0 +1,207 @@
+/* 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/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _QWERTY,
+ _COLEMAK,
+ _DVORAK,
+ _LOWER,
+ _RAISE,
+ _ADJUST
+};
+
+enum keycodes {
+ QWERTY = SAFE_RANGE,
+ COLEMAK,
+ DVORAK,
+ LOWER,
+ RAISE,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Qwerty
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Tab | Q | W | E | R | T | Y | U | I | O | P | Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc | A | S | D | F | G | H | J | K | L | ; | " |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_QWERTY] = LAYOUT( \
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, \
+ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, \
+ _______, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+),
+
+/* Colemak
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc | A | R | S | T | D | H | N | E | I | O | " |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_COLEMAK] = LAYOUT( \
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
+ KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_DEL, \
+ KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, \
+ _______, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+),
+
+/* Dvorak
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Tab | " | , | . | P | Y | F | G | C | R | L | Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc | A | O | E | U | I | D | H | T | N | S | / |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_DVORAK] = LAYOUT( \
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
+ KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DEL, \
+ KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \
+ KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT, \
+ _______, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+),
+
+/* Lower
+ * ,-----------------------------------------------------------------------------------.
+ * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_LOWER] = LAYOUT( \
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, \
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),KC_HOME, KC_END, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+),
+
+/* Raise
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_RAISE] = LAYOUT( \
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+),
+
+/* Adjust (Lower + Raise)
+ * ,-----------------------------------------------------------------------------------.
+ * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | Reset| | | | | | | | | | Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | | |Aud on|AudOff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | |Voice-|Voice+|Mus on|MusOff|MidiOn|MidOff| | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_ADJUST] = LAYOUT( \
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
+ _______, RESET, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL, \
+ _______, _______, _______, _______, _______, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+)
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case QWERTY:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_QWERTY);
+ }
+ return false;
+ break;
+ case COLEMAK:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_COLEMAK);
+ }
+ return false;
+ break;
+ case DVORAK:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_DVORAK);
+ }
+ return false;
+ break;
+ case LOWER:
+ if (record->event.pressed) {
+ layer_on(_LOWER);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ } else {
+ layer_off(_LOWER);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ }
+ return false;
+ break;
+ case RAISE:
+ if (record->event.pressed) {
+ layer_on(_RAISE);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ } else {
+ layer_off(_RAISE);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ }
+ return false;
+ break;
+ }
+ return true;
+};
diff --git a/keyboards/handwired/rs60/keymaps/default/readme.md b/keyboards/handwired/rs60/keymaps/default/readme.md
new file mode 100644
index 0000000000..e911968dd9
--- /dev/null
+++ b/keyboards/handwired/rs60/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default Preonic layout - largely based on the Planck's \ No newline at end of file
diff --git a/keyboards/handwired/rs60/rs60.c b/keyboards/handwired/rs60/rs60.c
new file mode 100644
index 0000000000..f748740cbe
--- /dev/null
+++ b/keyboards/handwired/rs60/rs60.c
@@ -0,0 +1,18 @@
+/*
+Copyright 2018 QMK Community
+
+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/>.
+*/
+
+#include "rs60.h"
diff --git a/keyboards/handwired/rs60/rs60.h b/keyboards/handwired/rs60/rs60.h
new file mode 100644
index 0000000000..f2113f05c3
--- /dev/null
+++ b/keyboards/handwired/rs60/rs60.h
@@ -0,0 +1,36 @@
+/*
+Copyright 2018 QMK Community
+
+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/>.
+*/
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, \
+ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b } \
+}
+
+#define LAYOUT_ortho_5x12 LAYOUT
diff --git a/keyboards/handwired/rs60/rules.mk b/keyboards/handwired/rs60/rules.mk
new file mode 100644
index 0000000000..7b4ec69d0d
--- /dev/null
+++ b/keyboards/handwired/rs60/rules.mk
@@ -0,0 +1,61 @@
+# MCU name
+MCU = atmega32u4
+
+# Processor frequency.
+# This will define a symbol, F_CPU, in all source code files equal to the
+# processor frequency in Hz. You can then use this symbol in your source code to
+# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
+# automatically to create a 32-bit value in your source code.
+#
+# This will be an integer division of F_USB below, as it is sourced by
+# F_USB after it has run through any CPU prescalers. Note that this value
+# does not *change* the processor frequency - it should merely be updated to
+# reflect the processor speed set externally so that the code can use accurate
+# software delays.
+F_CPU = 16000000
+
+#
+# LUFA specific
+#
+# Target architecture (see library "Board Types" documentation).
+ARCH = AVR8
+
+# Input clock frequency.
+# This will define a symbol, F_USB, in all source code files equal to the
+# input clock frequency (before any prescaling is performed) in Hz. This value may
+# differ from F_CPU if prescaling is used on the latter, and is required as the
+# raw input clock is fed directly to the PLL sections of the AVR for high speed
+# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
+# at the end, this will be done automatically to create a 32-bit value in your
+# source code.
+#
+# If no clock division is performed on the input clock inside the AVR (via the
+# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
+F_USB = $(F_CPU)
+
+# Bootloader
+BOOTLOADER = qmk-dfu
+
+# Interrupt driven control endpoint task(+60)
+OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
+
+LAYOUTS = ortho_5x12
+
+# Boot Section Size in *bytes*
+#OPT_DEFS += -DBOOTLOADER_SIZE=4096
+
+
+# Build Options
+# comment out to disable the options.
+#
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE = no # Mouse keys(+4700)
+EXTRAKEY_ENABLE = no # Audio control and System control(+450)
+CONSOLE_ENABLE = yes # Console for debug(+400)
+COMMAND_ENABLE = no # Commands for debug and configuration
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+NKRO_ENABLE = no # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+BACKLIGHT_ENABLE = no # Custom backlighting code is used, so this should not be enabled
+AUDIO_ENABLE = no # This can be enabled if a speaker is connected to the expansion port. Not compatible with RGBLIGHT below
+RGBLIGHT_ENABLE = no # This can be enabled if a ws2812 strip is connected to the expansion port.
+
diff --git a/keyboards/iris/keymaps/rs/config.h b/keyboards/iris/keymaps/rs/config.h
new file mode 100644
index 0000000000..7c5b5ca433
--- /dev/null
+++ b/keyboards/iris/keymaps/rs/config.h
@@ -0,0 +1,38 @@
+/*
+Copyright 2017 Danny Nguyen <danny@hexwire.com>
+
+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/>.
+*/
+
+#pragma once
+
+/* Use I2C or Serial, not both */
+
+#define USE_SERIAL
+// #define USE_I2C
+
+/* Select hand configuration */
+
+#define MASTER_LEFT
+// #define MASTER_RIGHT
+// #define EE_HANDS
+
+#define TAPPING_TERM 150
+
+#undef RGBLED_NUM
+#define RGBLED_NUM 6
+#define RGBLIGHT_SLEEP
+#define RGBLIGHT_HUE_STEP 1
+#define RGBLIGHT_SAT_STEP 1
+#define RGBLIGHT_VAL_STEP 1 \ No newline at end of file
diff --git a/keyboards/iris/keymaps/rs/karabiner.json b/keyboards/iris/keymaps/rs/karabiner.json
new file mode 100644
index 0000000000..f5214650ad
--- /dev/null
+++ b/keyboards/iris/keymaps/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/keyboards/iris/keymaps/rs/keymap.c b/keyboards/iris/keymaps/rs/keymap.c
new file mode 100644
index 0000000000..43374e59f3
--- /dev/null
+++ b/keyboards/iris/keymaps/rs/keymap.c
@@ -0,0 +1,48 @@
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _QWERTY,
+ _HYPER,
+};
+
+#define KC_ KC_TRNS
+
+#define KC_ESCC MT(MOD_LCTL, KC_ESC)
+#define KC_ENTS MT(MOD_LSFT, KC_ENT)
+#define KC_HYPE MO(_HYPER)
+#define KC_RST RESET
+// Brightness
+#define KC_BRUP KC_PAUS
+#define KC_BRDN KC_SLCK
+#define KC_BLTG BL_TOGG
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_QWERTY] = LAYOUT_kc(
+ //,----+----+----+----+----+----. ,----+----+----+----+----+----.
+ GRV , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 ,MINS,
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ TAB , Q , W , E , R , T , Y , U , I , O , P ,EQL,
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ ESCC, A , S , D , F , G , H , J , K , L ,SCLN,QUOT,
+ //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
+ LSFT, Z , X , C , V , B ,SPC, BSPC, N , M ,COMM,DOT ,SLSH,ENTS,
+ //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----'
+ LALT,LGUI,SPC, BSPC,HYPE,ENT
+ // `----+----+----' `+---+----+----'
+ ), // |
+ // |
+ [_HYPER] = LAYOUT_kc( // V
+ //,----+----+----+----+----+----. ,----+----+----+----+----+----.
+ RST , F1 , F2 , F3 , F4 , F5 , F6 , F7 , F8 ,LBRC,RBRC, ,
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ , , ,PGUP, ,BRUP, , , UP ,LCBR,RCBR,BSLS,
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ , ,HOME,PGDN,END ,BRDN, MINS,LEFT,DOWN,RGHT, ,PIPE,
+ //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
+ , , , , , ,BLTG, VOLU, , , , , , ,
+ //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----'
+ , , , VOLD, ,MUTE
+ // `----+----+----' `----+----+----'
+ ),
+};
diff --git a/keyboards/iris/keymaps/rs/readme.md b/keyboards/iris/keymaps/rs/readme.md
new file mode 100644
index 0000000000..bdf44121e4
--- /dev/null
+++ b/keyboards/iris/keymaps/rs/readme.md
@@ -0,0 +1,13 @@
+# Code friendly 60% keymap
+
+I developped this keymap to make a better use of 60% ortho keyboards I use like the preonic of the iris. Instead of trying to mimic the Planck layout like the default preonic keymap, this keymap removes the raise and lower layers and offers a simpler hyper layer concept for a few missing sign keys and cursors / media keys.
+
+The important part for coders is that most important signs needed to code are available at their usual position on a full keyboard, without complex layer gymnastic. Access to [] and {} are available on the hyper layer at their usual emplacement.
+
+The right thumb is used for both backspace and hyper layer switching. On the hyper layer, in addition to some coding signs, you get the cursor keys arranged in cross, just under your right fingers, so you don't have to move your hand when navigating in code or command line. Other hand gets the home/end page up/down in a similar layout.
+
+Because you sometime have to use your internal keyboard when you use a macbook, a karabiner configuration is also provided to get most of the features of this keyboard, including the hyper layer / backspace on right command key etc.
+
+This keymap is also available for other keyboards:
+- [ortho_5x12/rs](../../../../layouts/community/ortho_5x12/rs/keymap.c)
+- [ErgoTravel/rs](../../../ergotravel/keymaps/rs/keymap.c)
diff --git a/keyboards/iris/keymaps/rs/rules.mk b/keyboards/iris/keymaps/rs/rules.mk
new file mode 100644
index 0000000000..bd518d8f27
--- /dev/null
+++ b/keyboards/iris/keymaps/rs/rules.mk
@@ -0,0 +1 @@
+BACKLIGHT_ENABLE = yes
diff --git a/layouts/community/ortho_5x12/rs/config.h b/layouts/community/ortho_5x12/rs/config.h
new file mode 100644
index 0000000000..02076e8728
--- /dev/null
+++ b/layouts/community/ortho_5x12/rs/config.h
@@ -0,0 +1,35 @@
+#pragma once
+
+#ifdef AUDIO_ENABLE
+//#define STARTUP_SONG SONG(PREONIC_SOUND)
+#define STARTUP_SONG SONG(NO_SOUND)
+
+#define DEFAULT_LAYER_SONGS \
+ { SONG(QWERTY_SOUND), SONG(COLEMAK_SOUND), SONG(DVORAK_SOUND) }
+#endif
+
+#define MUSIC_MASK (keycode != KC_NO)
+
+/*
+ * 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
diff --git a/layouts/community/ortho_5x12/rs/karabiner.json b/layouts/community/ortho_5x12/rs/karabiner.json
new file mode 100644
index 0000000000..f5214650ad
--- /dev/null
+++ b/layouts/community/ortho_5x12/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/layouts/community/ortho_5x12/rs/keymap.c b/layouts/community/ortho_5x12/rs/keymap.c
new file mode 100644
index 0000000000..f33dcc2536
--- /dev/null
+++ b/layouts/community/ortho_5x12/rs/keymap.c
@@ -0,0 +1,63 @@
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _QWERTY,
+ _HYPER,
+};
+
+#define KC_ KC_TRNS
+
+#define KC_ESCC MT(MOD_LCTL, KC_ESC)
+#define KC_RST RESET
+#define KC_BSPH LT(_HYPER, KC_BSPC)
+#define KC_ENTS MT(MOD_LSFT, KC_ENT)
+// Brightness
+#define KC_BRUP KC_PAUS
+#define KC_BRDN KC_SLCK
+
+// Used to create a keymap using only KC_ prefixed keys
+#define LAYOUT_kc( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, \
+ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b \
+ ) \
+ LAYOUT_ortho_5x12( \
+ KC_##k00, KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05, KC_##k06, KC_##k07, KC_##k08, KC_##k09, KC_##k0a, KC_##k0b, \
+ KC_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15, KC_##k16, KC_##k17, KC_##k18, KC_##k19, KC_##k1a, KC_##k1b, \
+ KC_##k20, KC_##k21, KC_##k22, KC_##k23, KC_##k24, KC_##k25, KC_##k26, KC_##k27, KC_##k28, KC_##k29, KC_##k2a, KC_##k2b, \
+ KC_##k30, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35, KC_##k36, KC_##k37, KC_##k38, KC_##k39, KC_##k3a, KC_##k3b, \
+ KC_##k40, KC_##k41, KC_##k42, KC_##k43, KC_##k44, KC_##k45, KC_##k46, KC_##k47, KC_##k48, KC_##k49, KC_##k4a, KC_##k4b \
+ )
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_QWERTY] = LAYOUT_kc( \
+ // ,-----------------------------------------------------------------------------------.
+ GRV , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 , MINS ,
+ // |------+------+------+------+------+------+------+------+------+------+------+------|
+ TAB , Q , W , E , R , T , Y , U , I , O , P , EQL ,
+ // |------+------+------+------+------+------+------+------+------+------+------+------|
+ ESCC , A , S , D , F , G , H , J , K , L , SCLN , QUOT ,
+ // |------+------+------+------+------+------+------+------+------+------+------+------|
+ LSFT , Z , X , C , V , B , N , M , COMM , DOT , SLSH , ENTS ,
+ // |------+------+------+------+------+------+------+------+------+------+------+------|
+ , LCTL , LALT , LGUI , SPC , SPC , BSPC , BSPH , LEFT , DOWN , UP , RGHT
+ // `---------------------------------------------------+-------------------------------'
+ ), // |
+ // |
+ [_HYPER] = LAYOUT_kc( /* V */ \
+ // ,-----------------------------------------------------------------------------------.
+ RST , F1 , F2 , F3 , F4 , F5 , F6 , F7 , F8 , LBRC , RBRC , ,
+ // |------+------+------+------+------+------+------+------+------+------+------+------|
+ , , , PGUP , , , , , UP , LCBR , RCBR , BSLS ,
+ // |------+------+------+------+------+------+------+------+------+------+------+------|
+ , , HOME , PGDN , END , , MINS , LEFT , DOWN , RGHT , , PIPE ,
+ // |------+------+------+------+------+------+------+------+------+------+------+------|
+ , , , , , , , , , BRDN , BRUP , ,
+ // |------+------+------+------+------+------+------+------+------+------+------+------|
+ , , , , , , , , MUTE , VOLD , VOLU , MPLY
+ // `-----------------------------------------------------------------------------------'
+ ),
+};
diff --git a/layouts/community/ortho_5x12/rs/readme.md b/layouts/community/ortho_5x12/rs/readme.md
new file mode 100644
index 0000000000..d75eefd5b9
--- /dev/null
+++ b/layouts/community/ortho_5x12/rs/readme.md
@@ -0,0 +1,17 @@
+# Code friendly 60% keymap
+
+I developped this keymap to make a better use of 60% ortho keyboards I use like the preonic of the iris. Instead of trying to mimic the Planck layout like the default preonic keymap, this keymap removes the raise and lower layers and offers a simpler hyper layer concept for a few missing sign keys and cursors / media keys.
+
+The important part for coders is that most important signs needed to code are available at their usual position on a full keyboard, without complex layer gymnastic. Access to [] and {} are available on the hyper layer at their usual emplacement.
+
+The right thumb is used for both backspace and hyper layer switching. On the hyper layer, in addition to some coding signs, you get the cursor keys arranged in cross, just under your right fingers, so you don't have to move your hand when navigating in code or command line. Other hand gets the home/end page up/down in a similar layout.
+
+Because you sometime have to use your internal keyboard when you use a macbook, a karabiner configuration is also provided to get most of the features of this keyboard, including the hyper layer / backspace on right command key etc.
+
+This keymap has been tested with those keyboards:
+- [Preonic](../../../../keyboards/preonic/)
+- [My preonic clone](../../../rs60/)
+
+Checkout an adaptation of this keymap for other keyboards:
+- [Iris/rs](../../../../keyboards/iris/keymaps/rs/keymap.c)
+- [ErgoTravel/rs](../../../../keyboards/ergotravel/keymaps/rs/keymap.c) \ No newline at end of file