Skip to content

Instantly share code, notes, and snippets.

@mickimnet
Last active December 20, 2022 13:47
Show Gist options
  • Save mickimnet/4d26251366bf1d4b987511f98474672a to your computer and use it in GitHub Desktop.
Save mickimnet/4d26251366bf1d4b987511f98474672a to your computer and use it in GitHub Desktop.
How To Change Keys On Your Custom Mechanical Keyboard

How To Change Keys On Your Custom Mechanical Keyboard

Anything you need to understand customizing the keys of your (custom mechanical) keyboard. Especially if English is not the language you are using.

How Do Keyboard (Firmware) Work

The keyboard does neither care about the legends on the keycaps, nor about any language. The information the keyboard sends to the Operating System is always the same. The keycodes for the keys you type, are based on English (US) and the Operating System translates it to your actual language--based on what you selected as a keyboard language in your System preferences / settings. Meaning that if you press the key to the right of the L, you may get a ;, ö, m or something else.

Therefore, in order to get the correct result (based on the keyboard language you configured in your Operating System), you need to know which keycode to use for which key. For example, if your keyboard language set to German / Deutsch and you would like to get a Z you would need to use the keycode KC_Y. Below is a list of all keycodes and their respective letter for German and French. If you're using a different language, you can use an image of a US keyboard (like ISO-US (Wikipedia) or ANSI-US (Wikipedia)) and compare it to the keys you're used to entering. Alternatively, there are keyboard viewers on both macOS (see: Use the Keyboard Viewer on Mac)and on Windows (see: Use the On-Screen Keyboard (OSK) to type) as well.

Key Translations (Examples)

The following table shows the different results based on the keyboard language selected in the Operating System. The columns with the language names show the letters, which are actually used (//wording). There are some differences depending on the keyboard layout, shown in the Layout column. The keycodes listed in the Keycode column are based on the QMK Keycode documentation. Other firmware may have different names for the keycodes, and they still work the same.

Layout Firmware keycode Shown in VIA English (US) English (UK) German (DE) French (FR)
== == Number Row == == == == ==
ANSI or ISO KC_GRAVE ` ~ ` and ~ ` and ¬ ^ and ° ² and >
ANSI or ISO KC_1 1 ! 1 and ! 1 and ! 1 and ! & and 1
ANSI or ISO KC_2 2 @ 2 and @ 2 and " 2 and " é and 2
ANSI or ISO KC_3 3 # 3 and # 3 and £ 3 and § " and 3
ANSI or ISO KC_4 4 $ 4 and $ 4 and $ 4 and $ ' and 4
ANSI or ISO KC_5 5 % 5 and % 5 and % 5 and % ( and 5
ANSI or ISO KC_6 6 ^ 6 and ^ 6 and ^ 6 and & - and 6
ANSI or ISO KC_7 7 & 7 and & 7 and & 7 and / è and 7
ANSI or ISO KC_8 8 _ 8 and _ 8 and * 8 and ( _ and 8
ANSI or ISO KC_9 9 ( 9 and ( 9 and ( 9 and ) ç and 9
ANSI or ISO KC_0 0 ) 0 and ) 0 and ) 0 and = à and 0
ANSI or ISO KC_MINUS - _ - and _ - and _ ß and ? ) and °
ANSI or ISO KC_EQUAL = + = and + = and + ´ and ` = and +
== == Tabulator Row == == == == == ==
ANSI or ISO KC_Q Q q and Q q and Q q and Q a and A
ANSI or ISO KC_W W w and W w and W w and W z and Z
ANSI or ISO KC_E E e and E e and E e and E e and E
ANSI or ISO KC_R R r and R r and R r and R r and R
ANSI or ISO KC_T T t and T t and T t and T t and T
ANSI or ISO KC_Y Y y and Y y and Y z and Z y and Y
ANSI or ISO KC_U U u and U u and U u and U u and U
ANSI or ISO KC_I I i and I i and I i and I i and I
ANSI or ISO KC_O O o and O o and O o and O o and O
ANSI or ISO KC_P P p and P p and P p and P p and P
ANSI or ISO KC_LEFT_BRACKET [ { [ and { [ and { ü and Ü ^ and ¨
ANSI or ISO KC_RIGHT_BRACKET ] } ] and } ] and } + and * $ and £
ANSI only KC_BACKSLASH `\ ` \ and ` ` # and ~
== == Caps Lock Row == == == == == ==
ANSI or ISO KC_A A a and A a and A a and A q and Q
ANSI or ISO KC_S S s and S s and S s and S s and S
ANSI or ISO KC_D D d and D d and D d and D d and D
ANSI or ISO KC_F F f and F f and F f and F f and F
ANSI or ISO KC_G G g and G g and G g and G g and G
ANSI or ISO KC_H H h and H h and H h and H h and H
ANSI or ISO KC_J J j and J j and J j and J j and J
ANSI or ISO KC_K K k and K k and K k and K k and K
ANSI or ISO KC_L L l and L l and L l and L l and L
ANSI or ISO KC_SEMICOLON ; : ; and : ; and : ö and Ö m and M
ANSI or ISO KC_QUOTE ' " ' and " ' and @ ä and Ä ù and %
ISO only KC_NONUS_HASH NUHS \ and ` ` # and ~ # and '
== == Shift Row == == == == == ==
ISO only KC_NONUS_BACKSLASH NUBS § and ± \ and ` ` < and >
ANSI or ISO KC_Z Z z and Z z and Z z and Z w and W
ANSI or ISO KC_X X x and X x and X x and X x and X
ANSI or ISO KC_C C c and C c and C c and C c and C
ANSI or ISO KC_V V v and V v and V v and V v and V
ANSI or ISO KC_B B b and B b and B b and B b and B
ANSI or ISO KC_N N n and N n and N n and N n and N
ANSI or ISO KC_M M m and M m and M m and M , and ?
ANSI or ISO KC_COMMA , < , and < , and < , and ; ; and .
ANSI or ISO KC_DOT . > . and > . and > . and : : and /
ANSI or ISO KC_SLASH / ? / and ? / and ? - and _ ! and §

QMK and VIA only use the Keycodes or labels shown in the table above, the Vial app and the Remap website offer the option to show the language specific legends for the keys.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment