iTranslated by AI

The content below is an AI-generated translation. This is an experimental feature, and may contain errors. View original article
⌨️

EPOMAKER Alice 66: An Alice Layout Keyboard

に公開

I'll introduce the EPOMAKER Alice 66, which is currently the best keyboard for me!

Photo

Hi. I'm a maniac who buys a new keyboard almost every week.

However, I have a feeling that encountering this keyboard (or rather, the Alice layout) is going to be a major turning point, so in a way, it’s an epoch-making encounter. (Pun intended, because it's EPOMAKER.)

Wait, what happened to your EPOMAKER Split65?

https://zenn.dev/kickbase/articles/5af7aa27854994

I was raving about how great it was in that article! But there were a few things that bothered me slightly. Specifically, these three:

  • The thumb keys are slightly long, making it difficult to access the side keys.
  • The plastic on the split parts of the body is thin, and it bothers me that it makes a clicking sound when touched.
  • Having two Space keys side-by-side for the left thumb feels weird (this is a configuration issue).

You could say these are trivial matters not worth worrying about, but once you start noticing them, you just can't stop—it's human nature. So, I decided to try an Alice layout instead of a split keyboard, and it was a hit.

Naturally, a split keyboard allows your shoulders to open up more, but even with an Alice layout, I think the burden on the shoulders can be sufficiently reduced. Also, this model has two B keys, which is interesting (I haven't found a great way to use them yet, so I've temporarily assigned one to BackSpace on Layer 0). Of course, I chose this model specifically for its small thumb keys to solve the aforementioned problems, so it's a pretty ideal environment.

Because of the integrated body, the flimsiness of the housing isn't very noticeable, and the switches are the "thocky" type, which I really like.
Eventually, I might migrate to something like a Keychron Q Max, but I feel that this EPOMAKER Alice 66 has more than enough potential to be my main driver.

Between Keychron and CIDOO, even with the same aluminum chassis, the layouts are slightly different, so it's a tough choice. It's hard with minor genres because you don't get a chance to try the actual devices.

The keymap is almost the same as the EPOMAKER Split65, so please refer to that article for details, but I did struggle a bit with the VIA settings, so let me introduce those.

Precautions for Keymap Settings

First, Remap was not recognized correctly, and the keyboard graphics were displayed all scrambled. So, I had no choice but to use VIA for the configuration.

However, even though it was recognized, the keyboard wasn't displayed, and I couldn't change the keymap. After some research, I found the following site.

https://bunktiruu.com/?p=3763

I don't think I had to go through such trouble when I configured the DOIO KB16 before, so there might be some issue with the Web application's authentication.

By the way, once configured, it was automatically recognized the next time I connected to VIA. That's a relief.

Keymap Settings

While tools like Remap offer a great UX because everything is completed within the GUI, VIA is a bit of a hassle as you need to look up the configuration values yourself. I've listed some sites that were helpful below.

https://salicylic-acid3.hatenablog.com/entry/via-manual

https://qiita.com/82cb82b8/items/4d023d4e9cef4fe74702

https://docs.qmk.fm/keycodes

Actual Settings

For your reference.

Layer 0
Layer 1
Layer 2
Layer 3

Setting Value Operation
LALT(KC_GRV) Alt+`
LGUI(KC_D) Win+D
LSG(KC_S) Shift+Win+S
LSG(KC_RGHT) Shift+Win+→
RCS(KC_ESC) Ctrl+Shift+ESC
RCS(KC_D) Ctrl+Shift+D
RCS(KC_W) Ctrl+Shift+D
RCS(KC_C) Ctrl+Shift+C
RCS(KC_V) Ctrl+Shift+V
RCS(KC_TAB) Ctrl+Shift+TAB
C(KC_TAB) Ctrl+TAB
LGUI(KC_SLASH) Win+/
A(KC_DEL) ALT+DEL
C(KC_DEL) Ctrl+DEL
RCS(KC_O) Ctrl+Shift+O
LT(2,KC_ENT) Tap for ENTER, hold to move to Layer 2

The final JSON file is available for download here.

I'll also include the code below.

epomaker_alice66.layout.json
{
  "name": "EPOMAKER Alice66",
  "vendorProductId": 917516298,
  "macros": ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""],
  "layers": [
    [
      "KC_ESC",
      "KC_1",
      "KC_2",
      "KC_3",
      "KC_4",
      "KC_5",
      "KC_6",
      "KC_7",
      "KC_8",
      "KC_9",
      "KC_0",
      "KC_MINS",
      "KC_EQL",
      "KC_BSPC",
      "KC_NO",
      "KC_NO",
      "KC_TAB",
      "KC_Q",
      "KC_W",
      "KC_E",
      "KC_R",
      "KC_T",
      "KC_Y",
      "KC_U",
      "KC_I",
      "KC_O",
      "KC_P",
      "KC_LBRC",
      "KC_RBRC",
      "KC_BSLS",
      "KC_HOME",
      "KC_NO",
      "KC_LCTL",
      "KC_A",
      "KC_S",
      "KC_D",
      "KC_F",
      "KC_G",
      "KC_H",
      "KC_J",
      "KC_K",
      "KC_L",
      "KC_SCLN",
      "KC_QUOT",
      "KC_NO",
      "TO(3)",
      "KC_DEL",
      "KC_NO",
      "KC_LSFT",
      "KC_Z",
      "KC_X",
      "KC_C",
      "KC_V",
      "KC_B",
      "KC_BSPC",
      "KC_N",
      "KC_M",
      "KC_COMM",
      "KC_DOT",
      "KC_SLSH",
      "KC_NO",
      "KC_RSFT",
      "KC_UP",
      "KC_NO",
      "KC_LALT",
      "KC_LGUI",
      "MO(1)",
      "KC_NO",
      "KC_NO",
      "KC_SPC",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "LT(2,KC_ENT)",
      "KC_RCTL",
      "KC_NO",
      "KC_NO",
      "KC_LEFT",
      "KC_DOWN",
      "KC_RGHT"
    ],
    [
      "KC_GRV",
      "KC_F1",
      "KC_F2",
      "KC_F3",
      "KC_F4",
      "KC_F5",
      "KC_F6",
      "KC_F7",
      "KC_F8",
      "KC_F9",
      "KC_F10",
      "KC_F11",
      "KC_F12",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_TAB",
      "KC_NO",
      "KC_NO",
      "KC_MPRV",
      "KC_MNXT",
      "KC_HOME",
      "KC_NO",
      "KC_P7",
      "KC_P8",
      "KC_P9",
      "KC_PMNS",
      "KC_PSLS",
      "KC_NO",
      "KC_NO",
      "KC_PGUP",
      "KC_NO",
      "KC_ESC",
      "LSG(KC_RGHT)",
      "LSG(KC_S)",
      "G(KC_D)",
      "KC_MPLY",
      "KC_END",
      "KC_NO",
      "KC_P4",
      "KC_P5",
      "KC_P6",
      "KC_PPLS",
      "KC_PAST",
      "KC_NO",
      "KC_EQL",
      "KC_PGDN",
      "KC_NO",
      "RCS(KC_ESC)",
      "RCS(KC_D)",
      "RCS(KC_W)",
      "RCS(KC_C)",
      "RCS(KC_V)",
      "KC_NO",
      "KC_NO",
      "KC_P0",
      "KC_P1",
      "KC_P2",
      "KC_P3",
      "KC_PDOT",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "CUSTOM(8)",
      "KC_LALT",
      "KC_TRNS",
      "KC_NO",
      "KC_NO",
      "KC_SPC",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_DEL",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "A(KC_DEL)",
      "C(KC_DEL)",
      "RCS(KC_O)"
    ],
    [
      "S(KC_GRV)",
      "KC_F1",
      "KC_F2",
      "KC_F3",
      "KC_F4",
      "KC_F5",
      "KC_F6",
      "KC_F7",
      "KC_F8",
      "KC_F9",
      "KC_F10",
      "KC_F11",
      "KC_F12",
      "KC_BSPC",
      "KC_NO",
      "KC_NO",
      "KC_GRV",
      "S(KC_1)",
      "S(KC_2)",
      "S(KC_3)",
      "S(KC_4)",
      "S(KC_5)",
      "KC_Y",
      "KC_U",
      "KC_I",
      "KC_MINS",
      "KC_P",
      "KC_LBRC",
      "KC_RBRC",
      "KC_BSLS",
      "KC_HOME",
      "KC_NO",
      "KC_QUOT",
      "KC_BSLS",
      "S(KC_6)",
      "S(KC_7)",
      "S(KC_9)",
      "S(KC_0)",
      "KC_LEFT",
      "KC_DOWN",
      "KC_UP",
      "KC_RGHT",
      "KC_EQL",
      "KC_QUOT",
      "KC_NO",
      "KC_ENT",
      "KC_DEL",
      "KC_NO",
      "S(KC_COMM)",
      "S(KC_DOT)",
      "KC_LBRC",
      "KC_RBRC",
      "S(KC_LBRC)",
      "S(KC_RBRC)",
      "KC_NO",
      "RCS(KC_TAB)",
      "C(KC_TAB)",
      "KC_COMM",
      "KC_DOT",
      "G(KC_SLSH)",
      "KC_NO",
      "KC_RSFT",
      "KC_UP",
      "KC_NO",
      "KC_LCTL",
      "KC_LALT",
      "S(KC_MINS)",
      "KC_NO",
      "KC_NO",
      "A(KC_GRV)",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_SPC",
      "KC_RALT",
      "KC_NO",
      "KC_NO",
      "KC_LEFT",
      "KC_DOWN",
      "KC_RGHT"
    ],
    [
      "KC_GESC",
      "KC_1",
      "KC_2",
      "KC_3",
      "KC_4",
      "KC_5",
      "KC_6",
      "KC_7",
      "KC_8",
      "KC_9",
      "KC_0",
      "KC_MINS",
      "KC_EQL",
      "KC_BSPC",
      "KC_NO",
      "KC_NO",
      "KC_TAB",
      "S(KC_Q)",
      "S(KC_W)",
      "S(KC_E)",
      "S(KC_R)",
      "S(KC_T)",
      "S(KC_Y)",
      "S(KC_U)",
      "S(KC_I)",
      "S(KC_O)",
      "S(KC_P)",
      "KC_LBRC",
      "KC_RBRC",
      "KC_BSLS",
      "KC_HOME",
      "KC_NO",
      "KC_CAPS",
      "S(KC_A)",
      "S(KC_S)",
      "S(KC_D)",
      "S(KC_F)",
      "S(KC_G)",
      "S(KC_H)",
      "S(KC_J)",
      "S(KC_K)",
      "S(KC_L)",
      "KC_SCLN",
      "KC_QUOT",
      "KC_NO",
      "TO(0)",
      "KC_DEL",
      "KC_NO",
      "KC_LSFT",
      "S(KC_Z)",
      "S(KC_X)",
      "S(KC_C)",
      "S(KC_V)",
      "S(KC_B)",
      "KC_BSPC",
      "S(KC_N)",
      "S(KC_M)",
      "KC_COMM",
      "KC_DOT",
      "KC_SLSH",
      "KC_NO",
      "KC_RSFT",
      "KC_UP",
      "KC_NO",
      "KC_LCTL",
      "KC_LALT",
      "S(KC_MINS)",
      "KC_NO",
      "KC_NO",
      "KC_SPC",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_ENT",
      "KC_RALT",
      "KC_NO",
      "KC_NO",
      "KC_LEFT",
      "KC_DOWN",
      "KC_RGHT"
    ]
  ],
  "encoders": []
}

Discussion