Senior software engineer at Qualia Labs · Co-founder of Fox.Build Makerspace · Former co-founder of FarmBot

40% 키보드 첫 인상

Pasted image 20250804085911.png
Pasted image 20250831095133.png
Pasted image 20250731132341.png
사진: EPOMAKER TH40
업데이트 2: 기본으로 온 키캡은 한국어 입력하기에 불편했어요. 그래서 Yuzu에서 새 키캡을 구매했습니다.

참고: 이 문서는 외국인이 한국어를 배우기 위해 작성한 쓰기 연습이며, 아직 완성되지 않은 상태입니다.

40% 키보드는 정말 작고 미니멀한 키보드다. 예전에 처음 이 키보드에 대해 들었을 때는 과연 이런 배열로 코드를 제대로 작성할 수 있을지 궁금했다. 이 레이아웃에만 익숙해지면 모바일에서도 훨씬 편하게 코딩할 수 있을 것 같았다.

표준 키보드가 104키인 반면, 40% 키보드는 단 44키만 있다. 그 외에는 크기가 작고, 가방에 넣어 다닐 수 있어 휴대성이 뛰어나다. 대신 사용할 때는 ‘레이어’라는 개념이 필요하다. 마치 스마트폰 키보드처럼, 다른 키 조합으로 기능을 전환하는 방식이다.

하지만 이 복잡한 레이어 시스템은 배우기도, 설정하기도 쉽지 않다. 예를 들어 숫자를 입력하려면 Fn 키를 눌러야 하고, 원하는 기능을 불러오기까지 여러 단계를 거쳐야 한다. 기대감도 컸지만, 그만큼 우려도 있었다.

이 키보드는 Bluetooth 기능도 있어서 모바일에서도 편리하게 입력할 수 있을 거라고 생각했다. 결국 이번 주말에 결심하고 아마존에서 TH40 키보드를 구매했다. 처음에는 설정 애플리케이션이 제대로 연결되지 않았고, 올바른 JSON 설정 파일을 찾는 것도 쉽지 않았다. 첫 인상은 다소 복합적이었다. 휴대용 스트랩도 불편해서 바로 제거했다.

키캡에는 한글이나 기호 키가 없어서 Yuzu에서 따로 구매했다.
택배가 도착하면 새로 장착한 키캡 사진도 함께 올릴 예정이다.

수정된 QMK JSON 파일

{
    "name": "EPOMAKER TH40",
    "vendorId": "0x36B0",
    "productId": "0x304E",
    "keycodes": ["qmk_lighting"],
    "menus":
    [
        {
            "label": "Lighting",
            "content":
            [
                {
                    "label": "Backlight",
                    "content":
                    [
                        {
                            "showIf": "{id_qmk_rgb_matrix_effect} != 0",
                            "label": "Brightness",
                            "type": "range",
                            "options": [0, 180],
                            "content": ["id_qmk_rgb_matrix_brightness", 3, 1]
                        },
                        {
                            "label": "Effect",
                            "type": "dropdown",
                            "content": ["id_qmk_rgb_matrix_effect", 3, 2],
                            "options":
                            [
                                [ "none", 0 ],
                                [ "solid_color", 1 ],
                                [ "alphas_mods", 2 ],
                                [ "gradient_up_down", 3 ],
                                [ "gradient_left_right", 4 ],
                                [ "breathing", 5 ],
                                [ "band_sat", 6 ],
                                [ "band_val", 7 ],
                                [ "band_pinwheel_sat", 8 ],
                                [ "band_pinwheel_val", 9 ],
                                [ "band_spiral_sat", 10 ],
                                [ "band_spiral_val", 11 ],
                                [ "cycle_all", 12 ],
                                [ "cycle_left_right", 13 ],
                                [ "cycle_up_down", 14 ],
                                [ "cycle_out_in", 15 ],
                                [ "cycle_out_in_dual", 16 ],
                                [ "rainbow_moving_chevron", 17 ],
                                [ "cycle_pinwheel", 18 ],
                                [ "cycle_spiral", 19 ],
                                [ "dual_beacon", 20 ],
                                [ "rainbow_beacon", 21 ],
                                [ "rainbow_pinwheels", 22 ],
                                [ "flower_blooming", 23 ],
                                [ "raindrops", 24 ],
                                [ "jellybean_raindrops", 25 ],
                                [ "hue_breathing", 26 ],
                                [ "hue_pendulum", 27 ],
                                [ "hue_wave", 28 ],
                                [ "pixel_flow", 29 ],
                                [ "digital_rain", 30 ],
                                [ "solid_reactive", 31 ],
                                [ "solid_reactive_wide", 32 ],
                                [ "solid_reactive_multiwide", 33 ],
                                [ "solid_reactive_cross", 34 ],
                                [ "solid_reactive_multicross", 35 ],
                                [ "solid_reactive_nexus", 36 ],
                                [ "solid_reactive_multinexus", 37 ],
                                [ "splash", 38 ],
                                [ "multisplash", 39 ],
                                [ "solid_splash", 40 ],
                                [ "solid_multisplash", 41 ],
                                [ "starlight", 42 ],
                                [ "starlight_dual_hue", 43 ],
                                [ "starlight_dual_sat", 44 ],
                                [ "riverflow", 45 ]
                            ]
                        },
                        {
                            "showIf": "{id_qmk_rgb_matrix_effect} != 0",
                            "label": "Effect Speed",
                            "type": "range",
                            "options": [0, 255],
                            "content": ["id_qmk_rgb_matrix_effect_speed", 3, 3]
                        },
                        {
                            "showIf": "{id_qmk_rgb_matrix_effect} != 0 && {id_qmk_rgb_matrix_effect} != 24 && {id_qmk_rgb_matrix_effect} != 28 && {id_qmk_rgb_matrix_effect} != 29 && {id_qmk_rgb_matrix_effect} != 32",
                            "label": "Color",
                            "type": "color",
                            "content": ["id_qmk_rgb_matrix_color", 3, 4]
                        }
                    ]
                }
            ]
        }
    ],
    "customKeycodes": [
        {"name": "2.4G",     "title": "Set to 2.4G working mode",                "shortName": "MD_24G"  },
        {"name": "BLE1",     "title": "Set to Bluetooth Channel 1 working mode", "shortName": "MD_BLE1" },
        {"name": "BLE2",     "title": "Set to Bluetooth Channel 2 working mode", "shortName": "MD_BLE2" },
        {"name": "BLE3",     "title": "Set to Bluetooth Channel 3 working mode", "shortName": "MD_BLE3" },
        {"name": "USB",      "title": "Set to USB working mode",                 "shortName": "MD_USB"  },
        {"name": "BAT",      "title": "Querying Battery Status",                 "shortName": "QK_BAT"  },
        {"name": "WLO",      "title": "Lock WIN",                                "shortName": "QK_WLO"  },
        {"name": "SIX_N",    "title": "Full-key six-key switch",                 "shortName": "SIX_N"   },
        {"name": "MW_CH",    "title": "MAC/Windows system change",               "shortName": "MW_CH"   },
        {"name": "RTOG",    "title": "Switch the backlight",                     "shortName": "RGB_RTOG"},
        {"name": "U_EE_CLR", "title": "Customize the reset button",              "shortName": "U_EE_CLR"}
    ],
    "matrix": { "rows": 5, "cols": 12 },
    "layouts": {
        "keymap": [
            [
                { "c":"#cccccc" },
                { "w":1.5,  "h":1.0,  "x":0.0 },  "0,0",
                { "w":1.0,  "h":1.0,  "x":0.0 },  "1,1",
                { "w":1.0,  "h":1.0,  "x":0.0 },  "1,2",
                { "w":1.0,  "h":1.0,  "x":0.0 },  "1,3",
                { "w":1.0,  "h":1.0,  "x":0.0 },  "1,4",
                { "w":1.0,  "h":1.0,  "x":0.0 },  "1,5",
                { "w":1.0,  "h":1.0,  "x":0.0 },  "1,6",
                { "w":1.0,  "h":1.0,  "x":0.0 },  "1,7",
                { "w":1.0,  "h":1.0,  "x":0.0 },  "1,8",
                { "w":1.0,  "h":1.0,  "x":0.0 },  "1,9",
                { "w":1.0,  "h":1.0,  "x":0.0 },  "1,10",
                { "c":"#aaaaaa" },
                { "w":1.5,  "h":1.0,  "x":0.0 },  "1,11"
            ],

            [
                { "c":"#aaaaaa" },
                { "w":1.75, "h":1.0,  "x":0.0 },  "2,0",
                { "c":"#cccccc" },
                { "w":1.0,  "h":1.0,  "x":0.0 },  "2,1",
                { "w":1.0,  "h":1.0,  "x":0.0 },  "2,2",
                { "w":1.0,  "h":1.0,  "x":0.0 },  "2,3",
                { "w":1.0,  "h":1.0,  "x":0.0 },  "2,4",
                { "w":1.0,  "h":1.0,  "x":0.0 },  "2,5",
                { "w":1.0,  "h":1.0,  "x":0.0 },  "2,6",
                { "w":1.0,  "h":1.0,  "x":0.0 },  "2,7",
                { "w":1.0,  "h":1.0,  "x":0.0 },  "2,8",
                { "w":1.0,  "h":1.0,  "x":0.0 },  "2,9",
                { "c":"#aaaaaa" },
                { "w":2.25, "h":1.0,  "x":0.0 },  "2,10"
            ],

            [
                { "c":"#aaaaaa" },
                { "w":1.25, "h":1.0,  "x":0.0 },  "3,0",
                { "c":"#cccccc" },
                { "w":1.0,  "h":1.0,  "x":0.0 },  "3,1",
                { "w":1.0,  "h":1.0,  "x":0.0 },  "3,2",
                { "w":1.0,  "h":1.0,  "x":0.0 },  "3,3",
                { "w":1.0,  "h":1.0,  "x":0.0 },  "3,4",
                { "w":1.0,  "h":1.0,  "x":0.0 },  "3,5",
                { "w":1.0,  "h":1.0,  "x":0.0 },  "3,6",
                { "w":1.0,  "h":1.0,  "x":0.0 },  "3,7",
                { "w":1.0,  "h":1.0,  "x":0.0 },  "3,8",
                { "w":1.0,  "h":1.0,  "x":0.0 },  "3,9",
                { "w":1.0,  "h":1.0,  "x":0.0 },  "3,10",
                { "c":"#aaaaaa" },
                { "w":1.75, "h":1.0,  "x":0.0 },  "3,11"
            ],

            [
                { "c":"#aaaaaa" },
                { "w":1.25, "h":1.0,  "x":0.0 },  "4,0",
                { "w":1.0,  "h":1.0,  "x":0.0 },  "4,2",
                { "w":1.25, "h":1.0,  "x":0.0 },  "4,3",
                { "c":"#cccccc" },
                { "w":2.25, "h":1.0,  "x":0.0 },  "4,4",
                { "c":"#aaaaaa" },
                { "w":1.0,  "h":1.0,  "x":0.0 },  "4,6",
                { "c":"#cccccc" },
                { "w":2.75, "h":1.0,  "x":0.0 },  "4,7",
                { "c":"#aaaaaa" },
                { "w":1.25, "h":1.0,  "x":0.0 },  "4,8",
                { "w":1.0,  "h":1.0,  "x":0.0 },  "4,9",
                { "w":1.25, "h":1.0,  "x":0.0 },  "4,10"
            ]
        ]
    }
}