US ANSI keyboard layout converted to accept Portuguese and German special characters.
It uses dead keys to include all the other characters, for example, AltGr + ' a will return 'ã'.
More information about dead keys here.
ã ñ õ Ã Ñ Õ â ê î ô û Â Ê Î Ô Û á é í ó ú ý Á É Í Ó Ú Ý à è ì ò ù À È Ì Ò Ù
ä ë ï ö ü ÿ Ä Ë Ï Ö Ü Ÿ ç Ç ¹ ² ³ ⁴ ⁵ ⁶ ⁷ ⁸ ⁹ ⁰ ≠ Σ € º ª ß ° ≤ ≥ ₁ ₂ ₃ ₄ ₅ ₆ ₇ ₈ ₉ ₀ ≈ §
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ q │ w │ e │ r │ t │ y │ u │ i │ o │ p │ [ │ ] │ \ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
* │ │ a │ s │ d │ f │ g │ h │ j │ k │ l │ ; │ ' │ │
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤
* │ │ z │ x │ c │ v │ b │ n │ m │ , │ . │ / │ │
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ { │ } │ | │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
* │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ : │ " │ │
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤
* │ │ Z │ X │ C │ V │ B │ N │ M │ < │ > │ ? │ │
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ │ ¹ │ ² │ ³ │ ⁴ │ ⁵ │ ⁶ │ ⁷ │ ⁸ │ ⁹ │ ⁰ │ ≠ │ Σ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ │ │ € │ │ │ │ μ │ │ º │ │ │ │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
* │ │ ª │ ß │ ° │ │ │ │ │ │ │ ´ │ ~ │ │
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤
* │ │ │ │ ç │ │ │ │ │ ≤ │ ≥ │ │ │
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ │ ₁ │ ₂ │ ₃ │ ₄ │ ₅ │ ₆ │ ₇ │ ₈ │ ₉ │ ₀ │ │ ≈ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
* │ │ │ § │ │ │ │ │ │ │ │ ` │ ¨ │ │
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤
* │ │ │ │ Ç │ │ │ │ │ │ │ │ │
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
- This was developed on Microsoft Keyboard Layout Creator MKLC 1.4.
- You can learn how to use the MKLC 1.4 here.
- It was useful to look at this digital Brazilian ABNT2 layout and the German layout.
- Keyboard Keychron K6 Pro which can be customized with QMK & VIA, however the setup should work in any US ANSI layout.
If you want to modify the layout but want to keep the same name, then you need to do three things:
- Remove the layout from your language settings
- Uninstall your laguage from the system
- Delete the folder generated for the DLL
Only after these previous steps you will be able to use the same name for the layout, and keep everything nice and clean.
Initially, I tried to customize everything using the VIA website. However it was quite basic, there was no option to add these custom Brazilian/German letters. As it is based on the QMK firmware, I went to this page https://docs.qmk.fm/#/keycodes and tried to find a code to use on the VIA configurator. I even tried to use a macro trick to get to ALT code.
As nothing worked, I moved on to the QMK firmware.
This tool is quite powerful, you can customize almost everything on your keyboard. First I managed to clone the Keychron K6 Pro repository. Which was a pain, because their Bluetooth repository is not on the same branch as the rest of QMK Firmware. Initially I downloaded the whole repository with all available keyboard firmware (1GB+). Then I learned how to download just a repository branch (thanks ChatGPT). This firmware is based in the C language, for that, you have to either install the MSYS or their QMK_MSYS, which in this case makes things a bit easier. Updating the keyboard functions was quite easy, I just had to edit the "keymap.c". I also used their language-specific Keycodes. After that, I changed the keyboard to access the special character I wanted and flashed the firmware. After all that I finally discovered that it doesn't matter how the firmware is configured if the windows language input is not configured properly. It means that I would have to alternate the language input between US, ABNT2, and DE in the taskbar, which is exactly what I was trying to avoid.
- MKLC 1.4 is quite basic but does the work of merging different layout languages.
- VIA should be used to create simple shortcuts and macros.
- QMK can be used for everything else (really, the sky is the limit there).