[deadcyclo layout] Added unicode layer
authorBrendan Johan Lee <deadcyclo@vanntett.net>
Tue, 24 Jan 2017 20:54:34 +0000 (21:54 +0100)
committerBrendan Johan Lee <deadcyclo@vanntett.net>
Tue, 24 Jan 2017 20:54:34 +0000 (21:54 +0100)
keyboards/ergodox/keymaps/deadcyclo/Makefile [new file with mode: 0644]
keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-2-media-and-mouse.png
keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-3-navigation.png
keyboards/ergodox/keymaps/deadcyclo/keymap.c
keyboards/ergodox/keymaps/deadcyclo/readme.md

diff --git a/keyboards/ergodox/keymaps/deadcyclo/Makefile b/keyboards/ergodox/keymaps/deadcyclo/Makefile
new file mode 100644 (file)
index 0000000..039f07c
--- /dev/null
@@ -0,0 +1 @@
+UNICODE_ENABLE = yes
dissimilarity index 99%
index 481e63e..a267ff2 100644 (file)
Binary files a/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-2-media-and-mouse.png and b/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-2-media-and-mouse.png differ
dissimilarity index 99%
index 9ebba67..6d73495 100644 (file)
Binary files a/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-3-navigation.png and b/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-3-navigation.png differ
index 208f671..c14ca69 100644 (file)
@@ -12,7 +12,10 @@ enum custom_keycodes {
   PLACEHOLDER = SAFE_RANGE, // can always be here
   EPRM,
   VRSN,
-  RGB_SLD
+  RGB_SLD,
+  SHRUG,
+  YAY,
+  HUG
 };
 
 // TODO: Get rid of of keys I don't want. Make others that I do. Set up lots of makros (Using hyper (and meh)) keys (where to put them?)
@@ -103,14 +106,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
        KC_TRNS,
        EPRM, KC_DEL, KC_TRNS
 ),
-/* Keymap 2: Media and mouse keys
+/* Keymap 2: Media, mouse and navigation
  *
  * ,--------------------------------------------------.           ,--------------------------------------------------.
  * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
  * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
+ * |        |      |      | MsUp |      |      |      |           |      |      |      |  Up  |      |      |        |
  * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
+ * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      | Left | Down | Right|      |  Play  |
  * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
  * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
  * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
@@ -124,7 +127,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  *                                 |      |      |      |       |      |      |      |
  *                                 `--------------------'       `--------------------'
  */
-// MEDIA AND MOUSE
+// MEDIA , MOUSE and NAVIGATION
 [MDIA] = KEYMAP(
        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
        KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
@@ -135,24 +138,24 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
                                                     KC_TRNS,
                                   KC_TRNS, KC_TRNS, KC_TRNS,
     // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
-                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_UP,   KC_TRNS,  KC_TRNS, KC_TRNS,
+                 KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_MPLY,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT,  KC_TRNS, KC_TRNS,
+                          KC_VOLU, KC_VOLD, KC_MUTE,  KC_TRNS, KC_TRNS,
        KC_TRNS, KC_TRNS,
        KC_TRNS,
        KC_TRNS, KC_TRNS, KC_WBAK
 ),
 
-/* Keymap 3: Navigation TODO: Printscreen, pg up down, home, end, others? Insert for example
+/* Keymap 3: Unicode
  *
  * ,--------------------------------------------------.           ,--------------------------------------------------.
  * |        | VER  |      |      |      |      |      |           |      |      |      |      |      |      |        |
  * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      |  up  |      |      |      |           |      |      |      |      |      |      |        |
+ * |        | Shrug| yay  | hug  |      |      |      |           |      |  ■   |  λ   |  →   |  ➙   |  ▻   |        |
  * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      | left | down | right|      |------|           |------|      |      |      |      |      |        |
+ * |        |      |      |      |      |      |------|           |------|      |      |      |      |      |        |
  * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
  * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
  * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
@@ -166,11 +169,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  *                                 |      |      |      |       |      |      |      |
  *                                 `--------------------'       `--------------------'
  */
-// NAVIGATION
+// Unicode
 [NAVG] = KEYMAP(
        KC_TRNS, VRSN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS,
+       KC_TRNS, SHRUG, YAY, HUG, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
                                            KC_TRNS, KC_TRNS,
@@ -178,7 +181,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
                                   KC_TRNS, KC_TRNS, KC_TRNS,
     // right hand
        KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  UC(0x25a0), UC(0x03bb), UC(0x2192), UC(0x2799), UC(0x25bb), KC_TRNS,
                  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
        KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_TRNS, KC_TRNS, KC_TRNS,
                           KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
@@ -192,6 +195,25 @@ const uint16_t PROGMEM fn_actions[] = {
     [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
 };
 
+static void ang_tap (uint16_t code, ...) {
+  uint16_t kc = code;
+  va_list ap;
+
+  va_start(ap, code);
+
+  do {
+    register_code16(kc);
+    unregister_code16(kc);
+    wait_ms(50);
+    kc = va_arg(ap, int);
+  } while (kc != 0);
+  va_end(ap);
+}
+
+#define TAP_ONCE(code)  \
+  register_code (code); \
+  unregister_code (code)
+
 const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
 {
   // MACRODOWN only works in this function
@@ -233,13 +255,46 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
       }
       return false;
       break;
+  case SHRUG:
+      if (record->event.pressed) {
+         unicode_input_start(); register_hex(0xaf); unicode_input_finish();
+         TAP_ONCE (KC_BSLS);
+         register_code (KC_RSFT); TAP_ONCE (KC_MINS); TAP_ONCE (KC_9); unregister_code (KC_RSFT);
+         unicode_input_start (); register_hex(0x30c4); unicode_input_finish();
+         register_code (KC_RSFT); TAP_ONCE (KC_0); TAP_ONCE (KC_MINS); unregister_code (KC_RSFT);
+         TAP_ONCE (KC_SLSH);
+         unicode_input_start (); register_hex(0xaf); unicode_input_finish();
+      }
+      return false;
+      break;
+  case YAY:
+      if (record->event.pressed) {
+       ang_tap (KC_BSLS, KC_O, KC_SLSH, 0);
+      }
+      return false;
+      break;
+ case HUG:
+   if (record->event.pressed) {
+     unicode_input_start(); register_hex(0x0f3c); unicode_input_finish();
+     TAP_ONCE (KC_SPC);
+     unicode_input_start(); register_hex(0x3064); unicode_input_finish();
+     TAP_ONCE (KC_SPC);
+     unicode_input_start(); register_hex(0x25d5); unicode_input_finish();
+     unicode_input_start(); register_hex(0x005f); unicode_input_finish();
+     unicode_input_start(); register_hex(0x25d5); unicode_input_finish();
+     TAP_ONCE (KC_SPC);
+     unicode_input_start(); register_hex(0x0f3d); unicode_input_finish();
+     unicode_input_start(); register_hex(0x3064); unicode_input_finish();
+   }
+      return false;
+      break;
   }
   return true;
 }
 
 // Runs just one time when the keyboard initializes.
 void matrix_init_user(void) {
-
+  set_unicode_input_mode(UC_LNX);
 };
 
 // Runs constantly in the background, in a loop.
index a937cfc..5426057 100644 (file)
@@ -28,26 +28,41 @@ TOG, are dual purpose. Hence for example the top left key produces ESC
 if tapped, and temporarilly toggles L3 when hold down. The two center
 L1 TOG keys toggle L1 on and off for more permanent layer toggling.
 
-## Layer 1 - Symbols
+## Layer 1 - Symbols and RGB
 
-[![Layer 1 - Symbols](images/deadcyclo-layer-1-symbols.png)](http://www.keyboard-layout-editor.com/#/gists/96714e198054c9115bafb5267cc6bc73)
+[![Layer 1 - Symbols and RGB](images/deadcyclo-layer-1-symbols.png)](http://www.keyboard-layout-editor.com/#/gists/96714e198054c9115bafb5267cc6bc73)
 
-## Layer 2 - Media and Mouse
+The Symbols and RGB layer contains function keys, commonly used
+symbols, a numpad and if you have the new Ergodox Ez shine keys for
+controlling various RGB-led functions. In addition, it provides an up
+and a down key for easy scrolling. RGB controller keys are yellow.
 
-[![Layer 2 - Media and Mouse](images/deadcyclo-layer-2-media-and-mouse.png)](http://www.keyboard-layout-editor.com/#/gists/824759486e378bcec30784309a7e5731)
+## Layer 2 - Media, Mouse and Navigation
 
-## Layer 3 - Navigation
+[![Layer 2 - Media, Mouse and Navigation](images/deadcyclo-layer-2-media-and-mouse.png)](http://www.keyboard-layout-editor.com/#/gists/824759486e378bcec30784309a7e5731)
 
-[![Layer 3 - Navigation](images/deadcyclo-layer-3-navigation.png)](http://www.keyboard-layout-editor.com/#/gists/67d9613dcd873c68693d11863d0fd289)
+The Media, Mouse and unicode layer contains special keys for moving
+the mouse and clicking on it with the keyboard. In addition it
+provides standard media control keys, and default arrow keys.
+
+## Layer 3 - Unicode
+
+[![Layer 3 - Unicode](images/deadcyclo-layer-3-navigation.png)](http://www.keyboard-layout-editor.com/#/gists/67d9613dcd873c68693d11863d0fd289)
+
+The unicode layer provides keys for directly typing unicode (utf-8)
 
 # Changelog
 
 - 02.01.2017 Added delete key on second layer
 - 10.01.2017 Added layer images to readme
 - 24.01.2017 Added support for Ergodox Shine. Added secondary L2 switch key on left hand
+- 24.01.2017 Added unicode keys. Added shrug hug and yay. Moved Navigation to layer 2
 
 # TODO
 
-- Add unicode support (direct input and indirect? see algernon layout for examples)
-- Add descriptions below each layer image of any special functions/keys
-- Move Navigation keys to Layer 2 on right side, add a layer switch to L2 on left side as well, and use L3 for unicode stuff
+- Add support for unicode by name? (See algernon layout for example)
+- Add macros for lots of stuff. (Lastpass cli, pushbullet cli, other push service cli, linode cli, more?)
+- Make macros for gnu screen and i3wm
+- Look into the app launch macros in algernon keymap
+- Make other smileys like shrug and yay ¯\_(ツ)_/¯ and \o/ and others (see amon others [http://dongerlist.com](http://dongerlist.com)
+