Fix typo in reference manual
|2 weeks ago|
|.github/workflows||4 months ago|
|.vscode||2 weeks ago|
|cla||2 weeks ago|
|doc||4 months ago|
|doc-dev||2 weeks ago|
|keycluster||7 months ago|
|left||7 months ago|
|lib||1 year ago|
|right||1 month ago|
|scripts||2 months ago|
|shared||7 months ago|
|touchpad||7 months ago|
|trackball||7 months ago|
|trackpoint||7 months ago|
|.clang-format||6 years ago|
|.drone.yml||7 months ago|
|.gitattributes||6 years ago|
|.gitignore||2 years ago|
|.gitmodules||3 years ago|
|CHANGELOG.md||2 months ago|
|CONTRIBUTING.md||2 years ago|
|ISSUE_TEMPLATE||2 years ago|
|LICENSE||3 years ago|
|README.md||2 months ago|
|VERSIONING.md||1 year ago|
Ultimate Hacking Keyboard firmware
This repository hosts the firmware of the Ultimate Hacking Keyboard.
If you want to use the latest firmware version for your UHK, then instead of going through the pain of building the firmware, simply download the latest release of Agent and update to the latest firmware version within Agent with a click of a button.
If you're one of the brave few who wants to hack the firmware then read on.
- Make sure to clone this repo with:
git clone --recursive email@example.com:UltimateHackingKeyboard/firmware.git
Then, depending whether you want a full IDE experience or just minimal tools for building and flashing firmware, read IDE setup or Minimal development setup (if you prefer a text editor + command line).
Download and install MCUXpresso IDE for Linux, Mac, or Windows.
Install the GNU ARM Eclipse Plugins for in McuXpresso IDE. This is needed to make indexing work, and to avoid the "Orphaned configuration" error message in project properties.
- In MCUXpresso IDE, go to Help > "Install New Software...", then a new dialog will appear.
- In the Name field type
Eclipse Embedded CDT Plug-insand in the Location field type
https://download.eclipse.org/embed-cdt/updates/neon, then click on the Add button.
- Go with the flow and install the plugin.
In the IDE, import this project by invoking File -> Import -> General -> Existing Projects into Workspace, select the left or right directory depending on the desired firmware, then click on the Finish button.
In order to be able to flash the firmware via USB from the IDE, you must build Agent which is Git submodule of the this repo and located in the
Finally, in the IDE, click on Run -> External Tools -> External Tools Configurations, then select a release firmware to be flashed such as uhk60-right_release_kboot, and click on the Run button.
Going forward, it's easier to flash the firmware of your choice by using the downwards toolbar icon which is located rightwards of the green play + toolbox icon.
Minimal development setup
Install the ARM cross-compiler, cross-assembler and stdlib implementation. Eg. on Arch Linux the packages
Install Node.js. You find the expected Node.js version in
lib/agent/.nvmrcfile. Use your OS package manager to install it. Check the NodeJS site for more info. Mac OS users can simply
brew install nodeto get both. Should you need multiple Node.js versions on the same computer, use Node Version Manager for Mac/Linux or for Windows
Build UHK Agent.
cd lib/agent && npm ci && npm run build.
Still inside the Agent submodule, compile flashing util scripts.
cd packages/usb && npx tsc.
cd scripts && npm ci && ./generate-versions-h.js
When developing, cd to the directory you're working on (
right). To build and flash the firmware, run
make flash. Plain
makejust builds without flashing.
- To build a full firmware tarball:
scripts/make-release.js --allowShafor development purposes.)
- Now, the created tarball
scripts/uhk-firmware-VERSION.tar.gzcan be flashed with UHK Agent.
Want to contribute? Let us show you how.
Extended macro commands are built in by default, but need to be enabled by
set macroEngine.extendedCommands 1 macro command. It is also possible to build with
make-release.js --extendedMacros, or
make CUSTOM_CFLAGS=-DEXTENDED_MACROS. Further documentation is available in Agent's macro reference side pane, or (in more technical terms) in doc-dev.
The following list contains unofficial forks of the firmware. These forks provide functionality unavailable in the official firmware, but come without guarantees of any kind:
https://github.com/kareltucek/firmware - firmware featuring macro engine extended by a set of custom commands, allowing more advanced configurations including custom layer switching logic, doubletap bindings, alternative secondary roles etc.
https://github.com/p4elkin/firmware - firmware fork which comes with an alternative implementation of the secondary key role mechanism making it possible to use the feature for keys actively involved in typing (e.g. alphanumeric ones).