![Cheat sheet of gunp layout for Planck keyboards](https://drive.google.com/uc?export=view&id=1INtnZhzoHpPkZ2kueP1K0Dpr6T1spr4m)

# gunp layout for Planck keyboards

* Layout Maintainer: [Gun Pinyo](https://github.com/gunpinyo)

This is my personal layout for Planck keyboards. Almost all of important
information is already in the picture of the cheat sheet above. There is also a
text-version of this cheat sheet at the end of this readme file. If both of them
are not the same, then please trust the text-version more because the picture is
just a screenshot of the text.

The base layer is `LY-0000`. Next, we custom keycodes called `FuncA`, `FuncB`,
`FuncC`, and `FuncD` (`FuncX` for short) which will switch to layout `LY-ABCD`
depending on the binary state of each `FuncX` where the corresponded binary
digit is a boolean "keycode `FuncX` is currently being pressed". This mechanism
allows us to access up to 16 different layers, however, only some of them have
been used. A layer matches regex `LY-....` is currently used if and only if the
cheat sheet mentions it.

Once each of these non-based layers activates (by a combination of `FuncX`
keycodes):
  - the left-half (rows 0-3, columns 0-5) will switch according to its
    individual keymap on cheat sheet,
  - the right-half (rows 0-3, columns 6-11) will switch to the `RIGHT-HALF`
    keymap such that keycodes that matches the regex `(L....|Thai[ABC])` are
    disabled and (partially) being replaced by `FuncX` keycodes on the same
    position of the base layer and keycodes in binary numbers there are
    disabled.

Another keycode in the base layer is `Stick`. When it is press, the rules of
keyboard change into persistent mode. Here, the right-half is exactly the
`RIGHT-HALF` keymap in the cheat sheet. Keycodes in left-half are all no-op
initially and can be changed to other layers by tapping on the corresponded
keycodes `(L....|Thai[ABC])`. To switch back to the normal rules governed by
`FuncX` press a `Relax` keycode.

Remark:
  - Layers `LY-Thai[ABC]` are only accessible via persistent mode.
  - This layout doesn't employ any transparent keycode, therefore, empty
    keycodes (including dummy keycodes `XXX`) are all no-op.
  - Prefixes `S-`, `C-`, `A-`, and `G-` are combinators for `sft-๐Ÿ œ`, `ctl-๐Ÿ œ`,
    `alt-๐Ÿ œ`, and `gui-๐Ÿ œ`, respectively.
  - All keycodes that starts with a capital letter are custom keycodes. Except
    single letters which stand for their alphabet.
  - There is a conflict with dynamic macro (QMK's feature) with my layer
    switching mechanisms, so I disable it but keep its keycodes there for later
    implementation.

```
  {H| "LY-0000": base-layer -- "`[๐Ÿ ]` here becomes `FuncD` in other layers" |H}   {H| "RIGHT-HALF":  "when `Stick` is on" |H}
  {8| pgup|  Q  |  W  |  F  |  P  |  G  |  J  |  L  |  U  |  Y  |  K  | tab |8}   {8| L0110| [๐Ÿ œ] |bkspc| [๐Ÿ ž] | XXX | XXX  |8}
  {8| pgdn|  A  |  R  |  S  |  T  |  D  |  H  |  N  |  E  |  I  |  O  |Stick|8}   {8| L1111|ThaiA|ThaiB|ThaiC| XXX | XXX  |8}
  {8|sft-๐Ÿ œ|  Z  |  X  |  C  |  V  |  B  |  M  |FuncA|FuncB|FuncC| [๐Ÿ ] |sft-๐Ÿ ž|8}   {8| L0100|L1000|L1010|L0010|Relax|sft-๐Ÿ ž |8}
  {8|ctl-๐Ÿ œ|alt-๐Ÿ œ|gui-๐Ÿ œ| esc |bkspc|enter|FuncD|space|print| [๐Ÿ œ] | [๐Ÿ Ÿ] | [๐Ÿ ž] |8}   {8| Relax|space|enter|gui-๐Ÿ ž|alt-๐Ÿ ž|ctl-๐Ÿ ž |8}

  {H| "LY-0100": "col0 as no-op" |H}   {H|  "LY-1101" -- "Email: gunpinyo@gmail.com"  |H}   {x|  "LY-0110" -- "gunpinyo"  |x}
  {8| C-G  home  [๐Ÿ ]  end  C-[๐Ÿ ] |8}   {8| Sandbox XXX AudTog KeyLock RgbTog QmkReset |8}   {โœœ| S-f7 S-f8  f7 f8 f9  S-f9 |โœœ}
  {8| pgup  [๐Ÿ œ]  [๐Ÿ Ÿ]  [๐Ÿ ž]  C-[๐Ÿ Ÿ] |8}   {8| wake  caplock MyName Email RgbMod QmkDebug |8}   {โœœ| S-f4 S-f5  f4 f5 f6  S-f6 |โœœ}
  {8| pgdn  C-S  C-A  C-Z  SC-Z  |8}   {8| sleep numlock DmRec1 DmPlay1 XXX QmkEepRst |8}   {โœœ| S-f1 S-f2  f1 f2 f3  S-f3 |โœœ}
  {8|     C-[๐Ÿ œ]  C-F  C-[๐Ÿ ž]      |8}   {8| power scrlock DmRec2 DmPlay2 DmStop insert |8}   {โœœ|S-f10 S-f11 f10f11f12 S-f12|โœœ}

  {8|    "LY-1000"    |8}   {8|    "LY-1010"    |8}   {8|    "LY-0010"    |8}   {H| "LY-1111" - "powered by QMK firmware" |H}
  {H|  %  ?  !  `     |H}   {H|  #  7  8  9     |H}   {H|  &  |  ~  ^     |H}   {8| msAC1 msAC0  scr-๐Ÿ œ mov-๐Ÿ  scr-๐Ÿ ž  scr-๐Ÿ  |8}
  {H|  @  ,  .  '  =  |H}   {H|  *  4  5  6  +  |H}   {H|  {  [  (  <  /  |H}   {8| msAC2  XXX   mov-๐Ÿ œ mov-๐Ÿ Ÿ mov-๐Ÿ ž  scr-๐Ÿ Ÿ |8}
  {H|  $  ;  : \"  _  |H}   {H|  0  1  2  3  -  |H}   {H|  }  ]  )  >  \  |H}   {8| mPrev btn-๐Ÿ   mRWD  mPlay mFFD   btn-โœœ |8}
                                                                                {8| mNext btn-๐Ÿ Ÿ  pause mStop btn-๐Ÿ œ  btn-๐Ÿ ž |8}
  1. evdev pc105 (US: qwerty, TH: kedmanee)    5. "LY-1110" is `G-`+"LY-0110"
  2. `G-space` is used to switch XKB layout    6. "LY-1100" is `S-`+"LY-0100" except [C-S, C-A, C-Z, SC-Z, C-F] which become
  3. when `Stick` is off, layer switchers other than `FuncX` are disabled       [C-X, C-C, C-V,  C-L, C-R] respectively
  4. ["LY-1000", "LY-1010", "LY-0010"] omit col0 and row3, but they have all `mod-๐Ÿ œ` from the base-layer, the rest are no-op

  {H| "LY-0001" -- "`mod#๐Ÿ œ` is oneshot-mod" |H}   {8|    "LY-ThaiA"   |8}   {8|    "LY-ThaiB"   |8}   {8|    "LY-ThaiC"   |8}
  {8|  C-H C-0  SC-pgup bri-๐Ÿ  SC-pgdn vol-๐Ÿ  |8}   {H|  เธŒ โ€โ€โ€เธ… โ€เธ„  เธก เธค เธฆ  |H}   {H|  เนŒ โ€โ€โ€โ€โ€เน‡  เนˆ  เน‰  เนŠ  เน‹  |H}   {H|  เธ  โ€โ€เธƒ โ€เธ‚  เธฎ โ€โ€โ€เธŽ โ€โ€เธ  |H}
  {8| SC-T C-[+] C-pgup bri-๐Ÿ Ÿ  C-pgdn vol-๐Ÿ Ÿ |8}   {H|  เธ“ โ€เธง โ€โ€โ€โ€โ€เธ‡  โ€เธ™ โ€โ€เธฃ โ€เธฅ  |H}   {H|  เน‚ โ€เน โ€โ€โ€โ€โ€โ€โ€โ€โ€โ€โ€เน€ โ€โ€โ€โ€โ€โ€โ€โ€โ€โ€โ€โ€โ€เธฒ โ€โ€โ€โ€โ€โ€โ€โ€โ€โ€โ€โ€โ€เธฑ โ€โ€โ€โ€โ€โ€โ€โ€เธฐ  |H}   {H|  เธ– โ€โ€โ€โ€เธˆ โ€โ€โ€เธ  เธญ โ€โ€โ€เธ” โ€โ€เธ•  |H}
  {8| sft#๐Ÿ œ C-[-]  A-[๐Ÿ œ]  C-T  A-[๐Ÿ ž]  vol-โœœ |8}   {H|  เธ โ€โ€เธ˜ โ€โ€โ€เธ—  เธข เธŠโ€โ€โ€โ€โ€โ€โ€โ€โ€โ€โ€โ€โ€เธ‹  |H}   {H|  เนƒ โ€โ€โ€เน„ โ€โ€โ€โ€โ€โ€โ€โ€โ€โ€โ€โ€เธด โ€โ€โ€โ€โ€โ€เธต โ€โ€โ€โ€โ€โ€โ€โ€โ€โ€โ€เธถ โ€โ€โ€โ€โ€เธท  |H}   {H|  เธจ โ€เธฉ โ€โ€เธช  เธซ โ€เธš เธ›  |H}
  {8| ctl#๐Ÿ œ alt#๐Ÿ œ  gui#๐Ÿ œ  C-W  delete  menu |8}   {H|  เธ’ เธ† เธ‘ โ€โ€โ€โ€โ€โ€โ€โ€โ€โ€เธฌ เธžโ€โ€โ€โ€โ€โ€โ€โ€โ€โ€โ€เธŸ  |H}   {H|  โ€โ€โ€โ€เน… โ€โ€โ€โ€โ€โ€โ€เธบ  เน  เธณ  เธธ โ€โ€โ€โ€โ€โ€โ€โ€โ€โ€เธน  |H}   {H|  เธฏ โ€โ€เน† โ€โ€โ€โ€เธ  เธ‰ โ€โ€โ€เธœ โ€เธ  |H}
```