]> git.donarmstrong.com Git - qmk_firmware.git/commitdiff
Merge pull request #607 from jeebak/jeebak
authorJack Humbert <jack.humb@gmail.com>
Mon, 8 Aug 2016 16:07:39 +0000 (12:07 -0400)
committerGitHub <noreply@github.com>
Mon, 8 Aug 2016 16:07:39 +0000 (12:07 -0400)
Update Jeebak's keymap, w/ KC_COPY, etc. workaround.

keyboards/planck/keymaps/jeebak/keymap.c
keyboards/planck/keymaps/jeebak/readme.md

index ec142ecbb53d911daa33c7aa91a8ec05fa535198..cb7ccb58842f919a76bdcae9669dc1cd17570a51 100644 (file)
@@ -21,9 +21,10 @@ extern keymap_config_t keymap_config;
 #define _RAISE 4
 #define _PLOVER 5
 #define _TOUCHCURSOR 6
-#define _MOUSE 7
+#define _MOUSECURSOR 7
 #define _ADJUST 16
 
+// Keycodes
 enum planck_keycodes {
   QWERTY = SAFE_RANGE,
   COLEMAK,
@@ -35,24 +36,60 @@ enum planck_keycodes {
   EXT_PLV
 };
 
+enum macro_keycodes {
+  KC_ALT_TAB,
+  KC_CMD_TAB,
+  KC_CTL_TAB,
+  KC_CMD_SLSH,
+  KC_AG_FIND,
+  KC_AG_AGAIN,
+  KC_AG_UNDO,
+  KC_AG_CUT,
+  KC_AG_COPY,
+  KC_AG_PASTE,
+  KC_AG_DESK_L,
+  KC_AG_DESK_R,
+  KC_AG_TAB_C,
+  KC_AG_TAB_N,
+  KC_AG_TAB_R,
+};
+
 // Fillers to make layering more clear
 #define _______ KC_TRNS
 #define XXXXXXX KC_NO
 
 // Custom macros
 #define CTL_ESC     CTL_T(KC_ESC)               // Tap for Esc, hold for Ctrl
-#define LT_TC       LT(_TOUCHCURSOR, KC_SPC)    // L-ayer T-ap T-ouch C-ursor
-//                  ^-- Requires KC_TRNS / _______ for the trigger key in the destination layer
 #define SFT_ENT     SFT_T(KC_ENT)               // Tap for Enter, hold for Shift
-#define LT_ML       LT(_MOUSE, KC_A)            // L-ayer T-ap M-ouse C-ursor (on A)
+#define HPR_TAB     ALL_T(KC_TAB)               // Tap for Tab, hold for Hyper
+#define GUI_SEM     GUI_T(KC_SCLN)              // Tap for Semicolon, hold for GUI
+#define ALT_QUO     ALT_T(KC_QUOT)              // Tap for Quote, hold for Alt
+// Requires KC_TRNS/_______ for the trigger key in the destination layer
+#define LT_TC       LT(_TOUCHCURSOR, KC_SPC)    // L-ayer T-ap T-ouch C-ursor
+#define LT_MC(kc)   LT(_MOUSECURSOR, kc)        // L-ayer T-ap M-ouse C-ursor
+#define ALT_TAB     M(KC_ALT_TAB)               // Macro for Alt-Tab
+#define CMD_TAB     M(KC_CMD_TAB)               // Macro for Cmd-Tab
+#define CTL_TAB     M(KC_CTL_TAB)               // Macro for Ctl-Tab
+#define CMD_SLSH    M(KC_CMD_SLSH)              // Macro for Cmd-Slash (personal shortcut to toggle iTerm2 visibility)
+#define AG_FIND     M(KC_AG_FIND)               // Macros for Cmd-[x] vs Ctrl-[x] based on current AG_NORM or AG_SWAP settings
+#define AG_AGAIN    M(KC_AG_AGAIN)
+#define AG_UNDO     M(KC_AG_UNDO)
+#define AG_CUT      M(KC_AG_CUT)
+#define AG_COPY     M(KC_AG_COPY)
+#define AG_PASTE    M(KC_AG_PASTE)
+#define AG_D_L      M(KC_AG_DESK_L)             // For Virtual Desktop Switching: Left, and
+#define AG_D_R      M(KC_AG_DESK_R)             //                                Right
+#define AG_T_C      M(KC_AG_TAB_C)              // For Chrome, etc. Tab Close,
+#define AG_T_N      M(KC_AG_TAB_N)              //                  Tab New, and
+#define AG_T_R      M(KC_AG_TAB_R)              //                  Tab Reopen Closed
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
 /* Qwerty
  * ,-----------------------------------------------------------------------------------------.
- * | Tab      |   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  |  Bksp  |
+ * | Hyper/Tab|   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  |  Bksp  |
  * |----------+------+------+------+------+-------------+------+------+------+------+--------|
- * | Ctrl/Esc | ML/A |   S  |   D  |   F  |   G  |   H  |   J  |   K  |   L  |   ;  |   "    |
+ * | Ctrl/Esc |   A  |   S  | MC/D |   F  |   G  |   H  |   J  |   K  |   L  |GUI/; | Alt/"  |
  * |----------+------+------+------+------+------|------+------+------+------+------+--------|
  * | Shift    |   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  |Sft/Ent |
  * |----------+------+------+------+------+------+------+------+------+------+------+--------|
@@ -60,17 +97,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * `-----------------------------------------------------------------------------------------'
  */
 [_QWERTY] = {
-  {KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC},
-  {CTL_ESC, LT_ML,   KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT},
+  {HPR_TAB, KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC},
+  {CTL_ESC, KC_A,    KC_S, LT_MC(KC_D),KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    GUI_SEM, ALT_QUO},
   {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, SFT_ENT},
   {KC_PSCR, KC_RGUI, KC_LALT, KC_LGUI, LOWER,   LT_TC,   LT_TC,   RAISE,   KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
 },
 
 /* Colemak
  * ,-----------------------------------------------------------------------------------------.
- * | Tab      |   Q  |   W  |   F  |   P  |   G  |   J  |   L  |   U  |   Y  |   ;  |  Bksp  |
+ * | Hyper/Tab|   Q  |   W  |   F  |   P  |   G  |   J  |   L  |   U  |   Y  |   ;  |  Bksp  |
  * |----------+------+------+------+------+-------------+------+------+------+------+--------|
- * | Ctrl/Esc | ML/A |   R  |   S  |   T  |   D  |   H  |   N  |   E  |   I  |   O  |   "    |
+ * | Ctrl/Esc |   A  |   R  | MC/S |   T  |   D  |   H  |   N  |   E  |   I  |   O  |   "    |
  * |----------+------+------+------+------+------|------+------+------+------+------+--------|
  * | Shift    |   Z  |   X  |   C  |   V  |   B  |   K  |   M  |   ,  |   .  |   /  |Sft/Ent |
  * |----------+------+------+------+------+------+------+------+------+------+------+--------|
@@ -78,17 +115,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * `-----------------------------------------------------------------------------------------'
  */
 [_COLEMAK] = {
-  {KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC},
-  {CTL_ESC, LT_ML,   KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT},
+  {HPR_TAB, KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC},
+  {CTL_ESC, KC_A,    KC_R, LT_MC(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, SFT_ENT},
   {KC_PSCR, KC_RGUI, KC_LALT, KC_LGUI, LOWER,   LT_TC,   LT_TC,   RAISE,   KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
 },
 
 /* Dvorak
  * ,-----------------------------------------------------------------------------------------.
- * | Tab      |   "  |   ,  |   .  |   P  |   Y  |   F  |   G  |   C  |   R  |   L  |  Bksp  |
+ * | Hyper/Tab|   "  |   ,  |   .  |   P  |   Y  |   F  |   G  |   C  |   R  |   L  |  Bksp  |
  * |----------+------+------+------+------+-------------+------+------+------+------+--------|
- * | Ctrl/Esc | ML/A |   O  |   E  |   U  |   I  |   D  |   H  |   T  |   N  |   S  |   /    |
+ * | Ctrl/Esc |   A  |   O  | MC/E |   U  |   I  |   D  |   H  |   T  |   N  |   S  |   /    |
  * |----------+------+------+------+------+------|------+------+------+------+------+--------|
  * | Shift    |   ;  |   Q  |   J  |   K  |   X  |   B  |   M  |   W  |   V  |   Z  |Sft/Ent |
  * |----------+------+------+------+------+------+------+------+------+------+------+--------|
@@ -96,8 +133,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * `-----------------------------------------------------------------------------------------'
  */
 [_DVORAK] = {
-  {KC_TAB,  KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_BSPC},
-  {CTL_ESC, LT_ML,   KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_SLSH},
+  {HPR_TAB, KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_BSPC},
+  {CTL_ESC, KC_A,    KC_O, LT_MC(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,    SFT_ENT},
   {KC_PSCR, KC_RGUI, KC_LALT, KC_LGUI, LOWER,   LT_TC,   LT_TC,   RAISE,   KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
 },
@@ -124,27 +161,27 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * ,-----------------------------------------------------------------------------------.
  * |   0  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp |
  * |------+------+------+------+------+-------------+------+------+------+------+------|
- * |   $  |   4  |   5  |   6  |   .  |   +  |   *  |   4  |   5  |   6  |   -  |  |   |
+ * |   $  |   4  |   5  |   6  |   .  |   +  |   .  |   4  |   5  |   6  |   *  |  |   |
  * |------+------+------+------+------+------|------+------+------+------+------+------|
- * |   =  |   7  |   8  |   9  |   0  |   -  |   /  |   1  |   2  |   3  |   .  |  \   |
+ * |   =  |   7  |   8  |   9  |   0  |   -  |   .  |   1  |   2  |   3  |   /  |  \   |
  * |------+------+------+------+------+------+------+------+------+------+------+------|
  * |Brite |      |      |      |      |             |      | Prev | Stop | Slct | Mute |
  * `-----------------------------------------------------------------------------------'
  */
 [_RAISE] = {
   {KC_0,    KC_1,    KC_2,    KC_3,    KC_4,   KC_5,     KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
-  {KC_DLR,  KC_4,    KC_5,    KC_6,    KC_DOT, KC_PLUS,  KC_ASTR, KC_4,    KC_5,    KC_6,    KC_MINS, KC_PIPE},
-  {KC_EQL,  KC_7,    KC_8,    KC_9,    KC_0,   KC_MINS,  KC_SLSH, KC_1,    KC_2,    KC_3,    KC_DOT,  KC_BSLS},
+  {KC_DLR,  KC_4,    KC_5,    KC_6,    KC_DOT, KC_PLUS,  KC_DOT,  KC_4,    KC_5,    KC_6,    KC_ASTR, KC_PIPE},
+  {KC_EQL,  KC_7,    KC_8,    KC_9,    KC_0,   KC_MINS,  KC_DOT,  KC_1,    KC_2,    KC_3,    KC_SLSH, KC_BSLS},
   {BACKLIT, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MSTP, KC_MSEL, KC_MUTE}
 },
 
 /* TouchCursor layer (http://martin-stone.github.io/touchcursor/) plus personal customizations
  * ,-----------------------------------------------------------------------------------.
- * |      |      |      |Shift | GUI  |  ~   |Insert| Home |  Up  | End  | Bksp |      |
+ * |AltTab|CmdTab|CtlTab| GUI  |Shift |  ~   |Insert| Home |  Up  | End  | Bksp |      |
  * |------+------+------+------+------+-------------+------+------+------+------+------|
- * |      | Alt  |Space |      | Find |Again | PgUp | Left | Down |Right |      |      |
+ * |      | Alt  |Space |Tab_C | Find |Again | PgUp | Left | Down |Right |Desk_L|Desk_R|
  * |------+------+------+------+------+------|------+------+------+------+------+------|
- * |      | Undo | Cut  | Copy |Paste |  `   | PgDn | Del  |      |      |      |      |
+ * |      | Undo | Cut  | Copy |Paste |  `   | PgDn | Del  |Tab_N |Tab_R |iTerm2|      |
  * |------+------+------+------+------+------+------+------+------+------+------+------|
  * |      |      |      |      |      |             |      |      |      |      |      |
  * `-----------------------------------------------------------------------------------'
@@ -154,28 +191,28 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  */
 
 [_TOUCHCURSOR] = {
-  {_______, _______, _______, KC_LSFT, KC_LGUI, KC_TILD, KC_INS,  KC_HOME, KC_UP,   KC_END,  KC_BSPC, _______},
-  {_______, KC_LALT, KC_SPC,  _______, KC_FIND,KC_AGAIN, KC_PGUP, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______},
-  {_______, KC_UNDO, KC_CUT,  KC_COPY, KC_PASTE,KC_GRV,  KC_PGDN, KC_DEL,  _______, _______, _______, _______},
+  {ALT_TAB, CMD_TAB, CTL_TAB, KC_LGUI, KC_LSFT, KC_TILD, KC_INS,  KC_HOME, KC_UP,   KC_END,  KC_BSPC, _______},
+  {_______, KC_LALT, KC_SPC,  AG_T_C, AG_FIND,AG_AGAIN, KC_PGUP, KC_LEFT, KC_DOWN, KC_RGHT, AG_D_L,  AG_D_R },
+  {_______, AG_UNDO, AG_CUT,  AG_COPY, AG_PASTE,KC_GRV,  KC_PGDN, KC_DEL,  AG_T_N,  AG_T_R,  CMD_SLSH,_______},
   {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
 },
 
 /* Mouse Layer
  * ,-----------------------------------------------------------------------------------.
- * |      |      |ACCL0 |ACCL1 |ACCL2 |ACCL2 |      |WHL_L |  Up  |WHL_R | BTN2 |      |
+ * |      |      |ACCL0 |      |      |      |      |WHL_L |  Up  |WHL_R | BTN2 |      |
  * |------+------+------+------+------+-------------+------+------+------+------+------|
- * |      |      |      | BTN3 | BTN1 | BTN4 |WHL_Up| Left | Down |Right |      |      |
+ * |      |ACCL2 | BTN2 |      | BTN1 |ACCL1 |WHL_Up| Left | Down |Right | BTN4 | BTN5 |
  * |------+------+------+------+------+------|------+------+------+------+------+------|
- * |      |      |      |      | BTN2 | BTN5 |WHL_Dn| BTN1 |      |      |      |      |
+ * |      |      |      |      | BTN3 |      |WHL_Dn| BTN1 |      |      | BTN3 |      |
  * |------+------+------+------+------+------+------+------+------+------+------+------|
  * |      |      |      |      |      |             |      |      |      |      |      |
  * `-----------------------------------------------------------------------------------'
  */
 
-[_MOUSE] = {
-  {_______, _______, KC_ACL0, KC_ACL1, KC_ACL2, KC_ACL2, _______, KC_WH_L, KC_MS_U, KC_WH_R, KC_BTN2, _______},
-  {_______, _______, _______, KC_BTN3, KC_BTN1, KC_BTN4, KC_WH_U, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______},
-  {_______, _______, _______, _______, KC_BTN2, KC_BTN5, KC_WH_D, KC_BTN1, _______, _______, _______, _______},
+[_MOUSECURSOR] = {
+  {_______, _______, KC_ACL0, _______, _______, _______, _______, KC_WH_L, KC_MS_U, KC_WH_R, KC_BTN2, _______},
+  {_______, KC_ACL2, KC_BTN2, _______, KC_BTN1, KC_ACL1, KC_WH_U, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN4, KC_BTN5},
+  {_______, _______, _______, _______, KC_BTN3, _______, KC_WH_D, KC_BTN1, _______, _______, KC_BTN3, _______},
   {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
 },
 
@@ -330,6 +367,64 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
   return true;
 }
 
+/*
+ * Macro definition
+ */
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+    if (!eeconfig_is_enabled()) {
+      eeconfig_init();
+    }
+
+    bool use_cmd = true;    // Use, for example, Cmd-Tab, Cmd-C, Cmd-V, etc.
+    // Compare to MAGIC_SWAP_ALT_GUI and MAGIC_UNSWAP_ALT_GUI configs, set in:
+    // quantum/quantum.c
+    if(keymap_config.swap_lalt_lgui == 1 && keymap_config.swap_ralt_rgui == 1) {
+      use_cmd = false;      // ... or, Alt-Tab, Ctrl-C, Ctrl-V, etc.
+    }
+
+    switch (id) {
+      case KC_ALT_TAB:
+        if(use_cmd) { return (record->event.pressed ? MACRO( D(LALT),  D(TAB), END ) : MACRO( U(TAB), END )); }
+        else        { return (record->event.pressed ? MACRO( D(LGUI),  D(TAB), END ) : MACRO( U(TAB), END )); }
+      case KC_CMD_TAB:
+        if(use_cmd) { return (record->event.pressed ? MACRO( D(LGUI),  D(TAB), END ) : MACRO( U(TAB), END )); }
+        else        { return (record->event.pressed ? MACRO( D(LALT),  D(TAB), END ) : MACRO( U(TAB), END )); }
+
+      case KC_CTL_TAB:
+        return (record->event.pressed ? MACRO( D(LCTRL), D(TAB), END ) : MACRO( U(TAB), END ));
+      case KC_CMD_SLSH:
+        return (record->event.pressed ? MACRO( D(LGUI),  D(SLSH),END ) : MACRO( U(SLSH),END ));
+
+      case KC_AG_FIND:
+        return use_cmd ? MACRODOWN( D(LGUI), T(F), END ) : MACRODOWN( D(LCTRL), T(F), END );
+      case KC_AG_AGAIN:
+        return use_cmd ? MACRODOWN( D(LGUI), T(G), END ) : MACRODOWN( D(LCTRL), T(G), END );
+      case KC_AG_UNDO:
+        return use_cmd ? MACRODOWN( D(LGUI), T(Z), END ) : MACRODOWN( D(LCTRL), T(Z), END );
+      case KC_AG_CUT:
+        return use_cmd ? MACRODOWN( D(LGUI), T(X), END ) : MACRODOWN( D(LCTRL), T(X), END );
+      case KC_AG_COPY:
+        return use_cmd ? MACRODOWN( D(LGUI), T(C), END ) : MACRODOWN( D(LCTRL), T(C), END );
+      case KC_AG_PASTE:
+        return use_cmd ? MACRODOWN( D(LGUI), T(V), END ) : MACRODOWN( D(LCTRL), T(V), END );
+
+      case KC_AG_DESK_L:
+        return use_cmd ? MACRODOWN( D(LGUI), D(LCTRL), T(SCLN), END ) : MACRODOWN( D(LALT), D(LCTRL), T(SCLN), END );
+      case KC_AG_DESK_R:
+        return use_cmd ? MACRODOWN( D(LGUI), D(LCTRL), T(QUOT), END ) : MACRODOWN( D(LALT), D(LCTRL), T(QUOT), END );
+
+      case KC_AG_TAB_C:
+        return use_cmd ? MACRODOWN( D(LGUI),            T(W), END ) : MACRODOWN( D(LCTRL),            T(W), END );
+      case KC_AG_TAB_N:
+        return use_cmd ? MACRODOWN( D(LGUI),            T(T), END ) : MACRODOWN( D(LCTRL),            T(T), END );
+      case KC_AG_TAB_R:
+        return use_cmd ? MACRODOWN( D(LGUI), D(LSHIFT), T(T), END ) : MACRODOWN( D(LCTRL), D(LSHIFT), T(T), END );
+    }
+
+    return MACRO_NONE;
+}
+
 void matrix_init_user(void) {
     #ifdef AUDIO_ENABLE
         startup_user();
index eb8104379d3abaecfc7a81db034f0bc4ac225cbf..e1dd1dca511336b27ccde0d981c970674062a28c 100644 (file)
@@ -7,36 +7,47 @@ the exact changes. The diagrams in this README shows the highlights of the
 changes from the default mappings.
 
 I also decided to change all calls to `persistant_default_layer_set()` to
-`update_tri_layer()` since this is my personal perference.
+`default_layer_set()` since this is my personal perference.
+
+## Macros
+```
+#define ALT_TAB     M(KC_ALT_TAB)
+```
 
 ## Base Layers (Qwerty/Colemak/Dvorak)
 These base layers are mostly the same as the default mappings. The interesting
-changes are shown below. The `Ctrl/Esc`, mapped using `CTL_T(KC_ESC)` will emit
-an `Escape` when tapped, and act as a `Control` key when held. A `TODO` item is
-to see if it can also act as a `CapsLock` when double-tapped. The right shift
-key acts as `Enter` when tapped, and as a `Shift` key when held. The arrow
-keys, which have been moved to the
+changes are shown below.
+
+- The `Ctrl/Esc`, will emit an `Escape` when tapped, and act as a `Control` key when held,
+- `GUI/;` as `;` and `GUI`,
+- `Alt/"` as `"` and `Alt`,
+- `Sft/Ent` as `Enter` and `Shift`, and
+- `Hyper/Tab` as `Tab` and `Hyper`
+
+A `TODO` item is to see if it can also act as a `CapsLock` when double-tapped.
+The arrow keys, which have been moved to the
 [TouchCursor](http://martin-stone.github.io/touchcursor/) layer, have been
-replaced with the Media keys as shown. The `ML/A` key activates the Mouse layer
-when held, and emits an `A` when tapped.
+replaced with the Media keys as shown. The `MC/kc` key activates the
+`MouseCursor` layer when held, and emits the corresponding `kc` for its layer,
+when tapped.
 ```
   ,-----------------------------------------------------------------------------------------.
-  |          |      |      |      |      |      |      |      |      |      |      |        |
+  | Hyper/Tab|      |      |      |      |      |      |      |      |      |      |        |
   |----------+------+------+------+------+-------------+------+------+------+------+--------|
-  | Ctrl/Esc | ML/A |      |      |      |      |      |      |      |      |      |        |
+  | Ctrl/Esc |      |      |MC/kc |      |      |      |      |      |      |GUI/; | Alt/"  |
   |----------+------+------+------+------+------|------+------+------+------+------+--------|
   |          |      |      |      |      |      |      |      |      |      |      |Sft/Ent |
   |----------+------+------+------+------+------+------+------+------+------+------+--------|
   | PrntScrn | RGUI | Alt  | GUI  |Lower |  TC/Space   |Raise | Next | Vol- | Vol+ |  Play  |
   `-----------------------------------------------------------------------------------------'
-``` 
-  
+```
+
 ## Lower Layer (Symbols and Function Keys)
 The symbols and functions keys are essentially the same as the default mapping.
 The most notable changes are that the symbol keys from the `RAISE` layer have
 been moved here. The remaining Media keys replace those that are now on the
 base layers. The `BACKLIT` key has also been moved here.
-``` 
+```
   ,-----------------------------------------------------------------------------------.
   |   ~  |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  | Bksp |
   |------+------+------+------+------+-------------+------+------+------+------+------|
@@ -46,62 +57,71 @@ base layers. The `BACKLIT` key has also been moved here.
   |------+------+------+------+------+------+------+------+------+------+------+------|
   |Brite |      |      |      |      |             |      | Prev | Stop | Slct | Mute |
   `-----------------------------------------------------------------------------------'
-``` 
-  
+```
+
 ## Raise Layer (Numbers and Arithmetic Operators)
 All of the numbers and arithmetic operators are available on this layer. Some
 keys are duplicated for the convenience of their positions. The `0` and `$`
 keys at the far left are for quick access to beginning and end of line in vim.
-``` 
+```
   ,-----------------------------------------------------------------------------------.
   |   0  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp |
   |------+------+------+------+------+-------------+------+------+------+------+------|
-  |   $  |   4  |   5  |   6  |   .  |   +  |   *  |   4  |   5  |   6  |   -  |  |   |
+  |   $  |   4  |   5  |   6  |   .  |   +  |   .  |   4  |   5  |   6  |   *  |  |   |
   |------+------+------+------+------+------|------+------+------+------+------+------|
-  |   =  |   7  |   8  |   9  |   0  |   -  |   /  |   1  |   2  |   3  |   .  |  \   |
+  |   =  |   7  |   8  |   9  |   0  |   -  |   .  |   1  |   2  |   3  |   /  |  \   |
   |------+------+------+------+------+------+------+------+------+------+------+------|
   |Brite |      |      |      |      |             |      | Prev | Stop | Slct | Mute |
   `-----------------------------------------------------------------------------------'
-``` 
-  
+```
+
 ## TouchCursor layer plus personal customizations
 [TouchCursor](http://martin-stone.github.io/touchcursor/) uses the `Space` key
 as the modifier, with the `IJKL` home row keys representing the inverted-T of
 the arrow keys. All of the default TouchCursor keymappings for the right hand
 are represented below. My personalizations include all of the keys shown for
-the left hand. Having the `Alt` and `Shift` keys readily accessible from the
-home row allows quick word jumps and highlighting when used in conjunction with
-the arrow keys. The `KC_UNDO, KC_CUT, KC_COPY, KC_PASTE, KC_FIND,` and
-`KC_AGAIN` keycodes have been mapped but they don't seem to work on Mac.
-Presumably they'll work under Windows.
-``` 
+the left hand. Having the `Alt` and `Shift` keys (as well as the `Control` key
+from the base layers) readily accessible from the home row allows quick word
+jumps and highlighting when used in conjunction with the arrow keys. The
+`Alt-Tab` macro is not only useful under Windows, but also under Mac when used
+with alternative switchers like [HyperSwitch](https://bahoom.com/hyperswitch).
+The `Cmd-Tab` and `Ctrl-Tab` sequences are duplicated for easy access while in
+this layer. The `KC_UNDO, KC_CUT, KC_COPY, KC_PASTE, KC_FIND,` and `KC_AGAIN`
+keycodes do not seem to work. There are macros in place that'll "automatically"
+choose the correct version (`Cmd-Tab` vs. `Alt-Tab`, `Cmd-C` vs. `Ctrl-C`,
+etc.) depending on which layout you've currently selected (`AG_NORM` or
+`AG_SWAP`) in the `_ADJUST` layer. The `Desk_L` and `Desk_R` macros are what I
+use to switch between Virtual Desktops Left/Right. The `Tab_C`, `Tab_N` and
+`Tab_R` are for "Close Tab," "New Tab" and "Reopen Closed Tab" for apps such as
+Google Chrome.
+```
   ,-----------------------------------------------------------------------------------.
-  |      |      |      |Shift | GUI  |  ~   |Insert| Home |  Up  | End  | Bksp |      |
+  |AltTab|CmdTab|CtlTab|  GUI |Shift |  ~   |Insert| Home |  Up  | End  | Bksp |      |
   |------+------+------+------+------+-------------+------+------+------+------+------|
-  |      | Alt  |Space |      | Find |Again | PgUp | Left | Down |Right |      |      |
+  |      | Alt  |Space |Tab_C | Find |Again | PgUp | Left | Down |Right |Desk_L|Desk_R|
   |------+------+------+------+------+------|------+------+------+------+------+------|
-  |      | Undo | Cut  | Copy |Paste |  `   | PgDn | Del  |      |      |      |      |
+  |      | Undo | Cut  | Copy |Paste |  `   | PgDn | Del  |Tab_N |Tab_R |iTerm2|      |
   |------+------+------+------+------+------+------+------+------+------+------+------|
   |      |      |      |      |      |             |      |      |      |      |      |
   `-----------------------------------------------------------------------------------'
-``` 
+```
 
 ## Mouse Layer
 The Mouse layer, closely mimics the layout/behaviour of the TouchCursor layer.
-The `A` key is used to activate this layer. All 16 keycodes for the mouse from
-the `doc/keycode.txt` file are represented, and logically located, IMHO. The
-left and right click buttons are duplicated; on the right hand side, for a
-quick click here and there, and again on the left hand side for when the
+The `D` key (on QWERTY) is used to activate this layer. All 16 keycodes for the
+mouse from the `doc/keycode.txt` file are represented, and logically located,
+IMHO. The left and right click buttons are duplicated; on the right hand side,
+for a quick click here and there, and again on the left hand side for when the
 buttons need to be held for dragging things or highlighting text, thus allowing
 the right hand to be free to use the up/down/left/right actions.
-``` 
+```
   ,-----------------------------------------------------------------------------------.
-  |      |      |ACCL0 |ACCL1 |ACCL2 |ACCL2 |      |WHL_L |  Up  |WHL_R | BTN2 |      |
+  |      |      |ACCL0 |      |      |      |      |WHL_L |  Up  |WHL_R | BTN2 |      |
   |------+------+------+------+------+-------------+------+------+------+------+------|
-  |      |      |      | BTN3 | BTN1 | BTN4 |WHL_Up| Left | Down |Right |      |      |
+  |      |ACCL2 | BTN2 |      | BTN1 |ACCL1 |WHL_Up| Left | Down |Right | BTN4 | BTN5 |
   |------+------+------+------+------+------|------+------+------+------+------+------|
-  |      |      |      |      | BTN2 | BTN5 |WHL_Dn| BTN1 |      |      |      |      |
+  |      |      |      |      | BTN3 |      |WHL_Dn| BTN1 |      |      | BTN3 |      |
   |------+------+------+------+------+------+------+------+------+------+------+------|
   |      |      |      |      |      |             |      |      |      |      |      |
   `-----------------------------------------------------------------------------------'
-``` 
+```