April 04, 2025
While I use a US layout keyboard for personal use, there are situations at work where I have to use a US keyboard with JIS layout settings due to lack of administrator privileges on the PC.
This causes particular issues with commonly used symbols like @
and _
not matching their physical key positions, leading to typing errors and reduced work efficiency.
Since we can't modify the OS settings, this article explores a hardware-level solution.
I chose the Keychron V1Max because it supports QMK Firmware flashing, which enables this customization.
The Keychron V1Max supports QMK Firmware, and its source code is publicly available.
This article explains how to customize the QMK firmware to achieve US layout key input even with JIS OS settings.
Note: According to Keychron's official statement, “Note: If everything works fine with your keyboard. Please don’t flash the firmware. There is a chance it can damage your keyboard.”, please proceed at your own risk.
Available here:
Install and set up QMK CLI
Install QMK Toolbox
Build QMK Firmware (assuming qmk home directory is ~/work/qmk_firmware
)
qmk compile -kb keychron/v1_max/ansi_encoder -km hnishi
Upon successful compilation, ~/work/qmk_firmware/keychron_v1_max_ansi_encoder_hnishi.bin
will be generated.
Connect the keyboard and flash the created firmware (Reference: How to Factory Reset (Firmware) for V1 Max)
First, fork the Keychron QMK firmware repository. Since V1 Max's source code is in the wireless_playground
branch, make sure to include this branch in your fork.
qmk setup hnishi/qmk_firmware -H qmk_firmware -b wireless_playground
This command clones the repository to ./qmk_firmware
in the current directory and performs necessary setup.
Specify the keyboard and keymap in QMK configuration:
qmk config user.keyboard=keychron/v1_max/ansi_encoderqmk config user.keymap=hnishi
These settings are saved in ~/Library/Application Support/qmk/qmk.ini
(on Mac).
qmk new-keymap
This command creates a new keymap in ~/work/qmk_firmware/keyboards/keychron/v1_max/ansi_encoder/keymaps/hnishi
.
Keymap customization is done by editing the keymaps/hnishi/keymap.c
file. For detailed configuration methods, refer to the QMK official documentation.
The code I created is available here:
I implemented the following customizations:
Compile the firmware with the created keymap:
qmk compile -kb keychron/v1_max/ansi_encoder -km hnishi
Upon successful compilation, ~/work/qmk_firmware/keychron_v1_max_ansi_encoder_hnishi.bin
will be generated.
The following articles and code were very helpful. Thank you.
I purchased the red switch version. Despite my modest expectations, I'm quite satisfied with its typing feel and value for money. This is my first keyboard with a knob, which can be used to adjust volume and keyboard LED brightness. With VIA customization, you could also assign zoom in/out functions to the knob rotation for added convenience.
I purchased my Keychron V1 Max from the official Keychron website as it was the cheapest option. However, since it ships from overseas, it took about two weeks to arrive. If you buy it on Amazon, it will be delivered quickly as it ships domestically.