Ultimate hacking keyboard review: pricey developers’ tool

Bottom Line

The UHK is a well-built, customizable mechanical keyboard designed with ergonomics and typing efficiency in mind. In that respect, the product can be considered a success. There are some really neat ideas at play, like the built-in mouse pointer functionality, and the AGENT software that makes remapping keys a snap

But it comes with an exorbitantly high price tag. Sticker shock is exacerbated by the fact that if you want the improved ergonomics of a wrist rest, you’ll be paying an additional $75 for the privilege. This doesn’t even take into account the extra cash you’ll need to lay out to snag the as-yet-unreleased modules and the fact that you’ll be paying VAT if you’re in a non-EU territory. If you add up the UHK, wrist rest and track ball module, that’s $410 before VAT, making eye wateringly expensive keyboards like Metadot’s Das Keyboard 5Q seem like a bargain in comparison.

While what is currently available is certainly compelling for the niche audience for whom it is intended, it is disappointing that we weren’t  able to test the additional modules as of press time, but that does not change the fact that the UHK is a very specific product for a very specific audience that may be willing to shell out the princely sum required to have it shipped to their door.

If you’re the average user, the UHK’s design and layout may leave you scratching your head. However, if you are a developer or sysadmin obsessed with ergonomics and desire near complete control over your keyboard’s layout and functionality, there’s a lot to love. 

MORE: Best Gaming Keyboards

MORE: All Keyboard Content

Module demos

This update is quite late, but I think it’s the coolest one so far. I’ve been knee-deep in the firmware of the modules recently which bore some delicious fruits… I mean functional modules.

The trackpoint turned out great, and it’s very precise. Thanks to the dexterity of the thumb, I find the usability of the trackpoint module to be excellent despite the unusual trackpoint nib position compared to other trackpoint implementations.

The touchpad is also finally usable now. It’s excellent for swift, long distance movements, but it has to be optimized a bit more for precision movements. The touchpad IC has numerous parameters, so my hopes are high that precision control can be sufficiently improved purely on the firmware side.

For the sake of completeness and comparison, see the trackball module demo, too. This demo was featured in our previous update.

As you can see, all of the four module prototypes are functional. This is a huge milestone as far as the modules are concerned. Now that we have functional prototypes, it’s time to mass produce them.

Mass production will take a number of steps such as creating tooling, procuring parts, doing EMC tests, and minor manufacturing optimizations – just to name a few. Luckily, many of these steps can be done in parallel, but they’ll still take months. We’ll announce an ETA in our next monthly update.

Built to Last

High-end mechanical key-switches are used for a flawless typing experience. Unlike the switches of regular keyboards, these provide a satisfying tactile feel. They endure not 5 but 50 million keystrokes, do not degrade over their lifetime, and are replaceable.

The halves are connected by precision-machined, hardened-steel guides mounted to the stainless steel plates that form the endoskeleton of the keyboard. These guides, combined with a pair of neodymium magnets, not only result in a smooth connect/split experience but also create supreme durability.

Take a Closer Look

Geek out with a 3D model! You can rotate, zoom, and pan the keyboard rendering. Go full screen to see all the little details, and cycle through the annotations for even more info.

Key cluster module progress

We’ve been making progress with the key cluster module. András got the latest CAD model 3D printed, and we’re glad to say it’s more robust than ever.

In the meantime, I’ve been doing some electronics prototyping.

On the right side, you can see a breakout board designed by SparkFun, featuring a BlackBerry trackball – the kind of mini trackball that will be put into the key cluster. It’s wired to an old hand-soldered UHK left half. The left half of the UHK is just like a module from an electrical, firmware, and protocol standpoint, so it’s a great development board for modules. The design of the key cluster PCBs is in progress, and this is the whole Frankenstein keyboard on my desk:

(Yes, my UHK is backlit. We’ll release a backlight upgrade kit eventually.)

I also started to extend the firmware, and created a dedicated project for the key cluster module based on the firmware of the left keyboard half. The two projects contain a lot of duplicate code right now, so I’ll be gradually extracting the shared code to a module API which will be consumed by all the modules.

Ultimate Configurability

The factory keymap is just the start! You can redefine the mapping in any way you see fit — and create multiple, custom, application-specific keymaps. Do you prefer exotic layouts? Looking for a Dvorak keyboard or a Colemak keyboard? Or do you want to use the Vim keymap? How about swapping Space and Mod? Any other crazy remapping ideas? Or do you just want to make your life a little easier with some convenient shortcuts? We’ve got you covered!

  • A number of keymaps can be defined.
  • Within a keymap there are 4 layers (Base layer, Mod layer, Fn layer, Mouse layer).
  • By default the base layer is active. Other layers can be activated by pressing the relevant layer switcher key (Mod, Fn, or Mouse). Any key of the base layer can be made a layer switcher key.
  • Within a layer any action can be bound to any key.
  • An action can be a key action, mouse action, macro action, or a keymap switcher action.
  • A key action emits a scancode like «L», along with optional modifiers, so it can also emit Left Shift + Left Alt + Tab, for example. These shortcuts compose with regular modifiers. A key action can also be dual-role which acts as a normal modifier, like Control when pressed along with another key but behaves as another key like Escape when pressed in itself.
  • A mouse action is move {left, right, up, down}, scroll {left, right , up, down}, or click {left, middle, right}.
  • A macro action is a sequence of key actions, mouse actions and delays.
  • A keymap switcher action switches to the specified keymap.
  • All the above items must fit into the 32 kbyte onboard EEPROM which basically means dozens of keymaps and macros.
  • Various other parameters can also be specified such as the speed and acceleration of the mouse pointer.

New Agent features and security fix

Bill Gates used to say that 640K ought to be enough for everybody. I’m here to say that 32K is enough for every UHK user. Well, as far as the on-board memory of the UHK goes.

Now that Agent shows the allocation of the on-board EEPROM memory of the UHK, it’s easy to see that about 4K is used by the default configuration of the total 32K. Even if you have dozens of keymaps and macros, it should still be enough.

If you take another look at the above picture, you can notice the newly added configuration history section. Every time you save your configuration, a new entry gets created here, and you can restore any previous configuration with a click of a button.

Last, but not least, we’ve fixed a major security bug which affected the Linux versions of Agent. We suggest installing the latest Agent version which will fix the affected udev file upon starting it. Mad props go to Joel Eriksson of ClevCode for spotting this one!

Trackball and touchpad module progress

I recently thought I’d finished the firmware for the trackball module and it would be ready to demonstrate for all of you. I can give you a demonstration, but it’s not what I was hoping for.

As you can see, the pointer moves in highly erratic fashion, and it heavily drifts toward the top right corner. I can affect the pointer by moving the trackball toward the bottom left corner, but the erratic movement usually overpowers my movements. I believe that this is a side-effect of insufficient filtering on the PCB, but it’s really just a wild guess on my part, and I’ve contacted PixArt, the manufacturer of the optical sensor who will help.

As for the touchpad, we’ve increased its resolution and sensing area.

The big footprint is for an optionally solderable 2×20 pin 0.1″ connector that directly mates with the Azoteq CT210A-S dongle for configuration and diagnostics purposes.

The new design is a clear improvement over the old one, but we still have some work to do based Azoteq’s new feedback. The ground must be routed in a very specific way to maximize sensor performance. It’s not rocket science, just finicky. István is working on the next PCB version.

Next up, I’ll be working on the firmware for the trackpoint module, and will implement the suggestions of PixArt to make the trackball module work flawlessly. I hope that I’ll be able to showcase at least one, but hopefully both of these modules in our next monthly update. The key cluster module prototype is already fully functional, and the touchpad module will come last.

Production status

We’re thrilled to say that we’ve finally caught up with pre-orders, and incoming orders now ship in a week!

There are two exceptions regarding order parameters, though. If you want your UHK shipped in a week, you should pick the black UHK case option and a non-blank keycap printing option. Otherwise your order will take a bit longer due to temporary parts shortages. Feel free to check out the delivery status page for more information.

Please note that the order numbers have been removed from the delivery page. If your order hasn’t shipped yet, it’s because of the above exceptions. According to the delivery status page, you can shoot us a mail to change your order parameters to expedite delivery.

Module portability

The modules make the UHK less portable in the sense that one can’t just merge the halves and pick them up with one hand, but as it turns out, even with the modules, portability is exceptionally good for a modular keyboard.

It spontaneously occurred to us when playing with the modules that the left and right modules merge, just as the keyboard halves. This isn’t surprising given that the keyboard halves merge, and the shape of the modules is the inverse of the keyboard halves.

Then it also occurred to us that, given that the back of the modules feature magnets and magnet counterparts just as the UHK does, the modules and the UHK can be stuck together.

This allows for great portability despite the modular nature of the UHK, and as a bonus, it’s quite a conversation piece.

The Four Layers of the Factory Keymap

Layers provide a way to map multiple functions to a single key. Think of the Fn key of laptops, but unlike laptops, there is not one but three layer-switcher keys, namely Mod, Fn, and Mouse. These three, in addition to the Base Layer, give you four separate layers.

Please realize that touch typists all around the world only utilize nine of their ten fingers on regular keyboards because everyone presses space with either the left or right thumb, leaving the other thumb unutilized. The Mod keys are strategically placed so that both of your thumbs can be utilized, allowing you to reach the Mod layer’s navigation functionality quicker than navigating on regular keyboards.

The Base layer contains the regular alphanumeric keys. It also includes the Super key, which acts as the Windows key on Microsoft Windows platforms or as the Command key on Apple Macintosh platforms.

The mod layer contains often-used navigation and function keys. The Mod keys are thumb activated and thus very easily accessible. You’re able to navigate quickly without moving your hands around, saving you a lot of time over the long run.

The Fn layer contains media keys to adjust the volume, navigate across tracks and launch often-used applications. Many of these functions can often be found on laptops.

The Mouse layer enables you to control the mouse pointer and trigger mouse clicks and scroll-wheel movements, purely using keys and without leaving your keyboard.

Accented characters in Agent

Some of you were wondering why Agent doesn’t offer or display accented characters. This is one of those features that seem like a no-brainer from a user perspective, but in practice, it’s not only incredibly hard to implement, but cannot be implemented properly. Let me tell you why.

In order for Agent to expose accented characters, it must be aware of the current OS keymap. Being a cross-platform application, it’d have to query the actual keymap on Linux, Mac and Windows. A quick search reveals ways to query this information (often rather obscure ways) via OS-specific APIs, but I have found no way to query the actual mappings between scancodes and characters which is critical.

Without the exact, per-key mappings, Agent would have to have a database of every single OS-specific layout, such as «French (Bepo, eronomic, Dvorak way, Latin-9 only)», or «Russian (Ukraine, standard RSTU)». We could extract such a database from the relevant Linux packages, but these layout names are not standardized so they’re inconsistent across OSes and the mappings surely differ in some ways.

The bottom line is that it’d take huge resources to implement the above, and we’d end up with a half-assed implementation given that a perfect implementation is practically infeasible. Even if we were able to implement this perfectly, I don’t think it would be a good idea. I can foresee users complaining that they set up the é key in Agent, then plugged their UHK into another machine (featuring a different OS keymap), and the é key suddenly became semicolon. Users should actually understand how things work when it comes to this topic.

Module demos

This update is quite late, but I think it’s the coolest one so far. I’ve been knee-deep in the firmware of the modules recently which bore some delicious fruits… I mean functional modules.

The trackpoint turned out great, and it’s very precise. Thanks to the dexterity of the thumb, I find the usability of the trackpoint module to be excellent despite the unusual trackpoint nib position compared to other trackpoint implementations.

The touchpad is also finally usable now. It’s excellent for swift, long distance movements, but it has to be optimized a bit more for precision movements. The touchpad IC has numerous parameters, so my hopes are high that precision control can be sufficiently improved purely on the firmware side.

For the sake of completeness and comparison, see the trackball module demo, too. This demo was featured in our previous update.

As you can see, all of the four module prototypes are functional. This is a huge milestone as far as the modules are concerned. Now that we have functional prototypes, it’s time to mass produce them.

Mass production will take a number of steps such as creating tooling, procuring parts, doing EMC tests, and minor manufacturing optimizations – just to name a few. Luckily, many of these steps can be done in parallel, but they’ll still take months. We’ll announce an ETA in our next monthly update.

Firmware progress

Eric, our intern has been hard at work. He’s implemented the macro engine, vastly improved the debouncing algorithm, fixed various bugs related to secondary role handling, and more. What a huge step forward! All of these changes are part of the latest pre-released 8.4.4 firmware.

And still, the latest stable firmware release that is recommended and which is flashed in our factory is 8.2.5 which is 152 commits behind the tip of the master branch! This drives me crazy. And why’s that? Because of the freeze bug.

This bloody bug makes the UHK freeze once in a while. The trick is that it’s extremely hard to reproduce. On my UHK, it hits less than once in a month. On some others, it’s considerably more frequent, and occurs on a daily basis.

I could go on and on about this bug, but the bottom line is that if you want to use the new features and improvements while still having stability, then please flash the latest pre-release firmware, subscribe to the freeze bug GitHub issue, and let us know your findings. We’ll release new firmware versions shortly, and will ask you to test them for stability and share your feedback. The faster and more detailed feedback you provide, the quicker we can fix this bug. And you can always downgrade to 8.2.5 if the freeze bug hits too often before we fix it.

Update to the latest firmware!

If you’re reading this and already have your UHK, please flash the latest 8.4.5 firmware by selecting the .tar.bz2 file from the «Choose firmware and flash it» option in Agent > Firmware. This will result in many goodies over the factory-flashed 8.2.5 firmware, including macro support and numerous bug fixes.

The only gotcha is the freeze bug. Recent firmware versions cause occasional freezes on some UHKs. This is a longstanding bug, and the only reason we haven’t yet fixed it is because we can’t reproduce it. That’s why we need your help! The more people who use the most recent firmware, the easier we can fix the freeze bug based on your feedback.

If your UHK freezes, please be sure to report it according to the freeze bug issue. No worries, you can always downgrade to 8.2.5 to regain stability.

Alt codes on the UHK

Given that Alt codes are sequences of keystrokes, they’re ideally suited to be assigned to keys using UHK macros. For example, you can bind the Alt code of «é» to Mod+e. UHK macros very handy, since they’re saved to the on-board memory of your UHK, and always availblable without running special software once you set them up via Agent. I’m about to elaborate on implementing Alt codes on your UHK.

The macro editor of Agent is very intuitive to use, and based on the above one should be able to create macros that implement Alt codes. There are some gotchas, though.

First up, Alt codes are OS-specific which will pose a problem if you use multiple OSes. If so, you’ll have to create all your Alt code macros for every OS you use, and then create OS-specific keymaps in Agent and bind the macros of the respective OSes. This is clearly laborous, but there’s no way around it. We won’t implement USB fingerprinting in the UHK firmware to detect OSes because it’s fundamentally unreliable.

The second gotcha is that you won’t be able to compose Alt codes with modifiers. Imagine holding Shift, then typing Alt code key sequences, then releasing Shift. Modifiers clearly mess with Alt codes.

Third, some Alt codes are dependent on the state of your OS. You have to have NumLock enabled for Windows Alt codes, and Mac accent codes are dependent on the OS keymap in use.

Secondary role visualization in Agent

Dual-role keys are powerful. When tapping them they trigger their primary role. While holding them and pressing other keys, the secondary role kicks in. The UHK has always supported dual-role keys, but Agent hadn’t visualized them. Thankfully, this has just changed with Agent version 1.2.9.

Now Agent can render quite complex scenarios, such as a scancode featuring modifiers and a secondary role. This makes the rendering engine of Agent complete, so you can take a look at any layer and know exactly what each key does based on its visual representation.

As an added bonus, we’ve made modifiers show up according to your OS, so for example, Super is Command on OSX and it’s the Windows key on Windows.

Secondary role visualization in Agent

Dual-role keys are powerful. When tapping them they trigger their primary role. While holding them and pressing other keys, the secondary role kicks in. The UHK has always supported dual-role keys, but Agent hadn’t visualized them. Thankfully, this has just changed with Agent version 1.2.9.

Now Agent can render quite complex scenarios, such as a scancode featuring modifiers and a secondary role. This makes the rendering engine of Agent complete, so you can take a look at any layer and know exactly what each key does based on its visual representation.

As an added bonus, we’ve made modifiers show up according to your OS, so for example, Super is Command on OSX and it’s the Windows key on Windows.

Design

The first thing to note about the UHK is that it has a very-compact, 60-percent keyboard layout. That means that it has no function row, no dedicated arrow keys and no numeric keypad. You can, of course, activate F1, F2, F3, etc or arrows by using a combination of the function key and another key on the keyboard. Folks who like this kind of compact design will appreciate it, but for others, it can be polarizing. 

The UHK splits in two, and the keyboard halves can be placed up to a 1 foot (30.5cm) apart. There is a handy indicator LED in the top left half of the keyboard displaying which keyboard layout is currently active. The underside of the keyboard features detachable feet and several mount points to enable tenting, positive tilting and negative tilting when combined with the optional, wooden palm rest add-on. The keycaps are ABS plastic, though UHK plans to make PBT keycaps available in the future.

The UHK’s optional palm wrest attaches firmly to the keyboard body with the included screws and has an attractive wood finish. The palm rest slopes downward on the inside of each half, making it comfortable to use whether the keyboard is split or joined.  

While the UHK is certainly a fine tool on its own, the palm rest greatly improves the overall feel of the keyboard, so it’s a shame that it is not included in the package. Instead, it adds an extra $75, which isn’t cheap, especially considering our favorite wrist rest of all time, the HyperX Wrist Rest, is $15 at the time of writing, but it isn’t made for split keyboards.

The UHK measures a compact 11.4 x  5.2 x 1.1 inches (289 x 132 x 29mm) without the wrist rest add-on, which will occupy an additional 3 inches (75mm) of desk space when attached. Build quality is solid, the body of the board being nearly impervious to flex and weighty enough at 2.2 pounds (1kg) to stay put. 

Our review unit came in Blue, but the UHK is also available in black, dark red, yellow and white. There is no keyboard backlight, which may be problematic for those who like to work in low light.

Mechanicon

We got a nice invitation from Christian Bäuerlein, organizer of Mechanicon, the largest German meetup for mechanical keyboard enthusiasts. Based on the video and photos of Mechanicon 2017, it’s quite an event, so we’ll be there!

By “we”, I really mean myself. I’ll make sure to bring a couple of UHKs, so that you’ll be able to give them a try. I’ve never been to Frankfurt, so I’m excited to be there, and meet with fellow keyboard enthusiasts.

I hope we can stretch the fun times, and nerd out even after Mechanicon ends at 20:00. Speaking of afterwards, if any of you could offer a couchsurfing opportunity in Frankfurt, I’d be more than happy to take it. I’d only stay for a night after the event.

Key cluster

The main key cluster PCB didn’t create any unexpected surprises.

His little brother, the key cluster trackball PCB, however, has proven to be more difficult.

The surface area of this board is merely 1 square centimeter or 0.15 square inch. This is not a whole lot of room for a dozen components, and we can’t make it larger due to the lack of space.

The PCB fab kept rejecting this board because the components were too close to the edges. The only solution was to use smaller magnetic sensor (which detect the rotation of the mini trackball). 

We ended up using a sensor with the HVSOF5 footprint, which is ridiculously small compared to the other components we use. I’m waiting for this part, and it’ll be quite an exercise to solder it. But I’m ready for the challenge, and so is my new microscope.

Key cluster and trackball module progress

In our previous update, we shared a video about the latest key cluster module prototype. It worked reasonably well, but the responsiveness of its mini trackball left a lot to be desired. I’m happy to report that we’ve fixed this issue as you can see in the following video.

(UHKs are not backlit yet. We’ll release a backlight upgrade kit at some point, and future UHK hardware versions will be backlit.)

As it turned out, the mini trackball only works well with bipolar hall-effect sensors, and now that we’re using the right kind of sensor, it picks up every tiny movement just as expected. I’m very pleased with the usability and responsivity of the mini trackball, and it feels like a great tool for scrolling in all directions.

As for the trackball module, I assembled the new PCB and gave it a try. As seen in the above video, the buttons work as expected. I haven’t yet implemented the most important part, which is the communication with the optical sensor IC – this will be my next task.

I’d like to make every module prototype work by the end of the year. The key cluster module already works well. The electronics of the trackball and trackpoint modules seem fine so far, and I have yet to write firmware for them, so they should be in close reach. The touchpad PCB is expected to be redesigned soon according to Azoteq’s instructions, so it may take a bit more time.

Following the prototyping phase of the modules, mass production will take additional time. We don’t have a solid ETA on the modules yet, and we’ll be keeping you updated.

Trackball and touchpad module progress

I recently thought I’d finished the firmware for the trackball module and it would be ready to demonstrate for all of you. I can give you a demonstration, but it’s not what I was hoping for.

As you can see, the pointer moves in highly erratic fashion, and it heavily drifts toward the top right corner. I can affect the pointer by moving the trackball toward the bottom left corner, but the erratic movement usually overpowers my movements. I believe that this is a side-effect of insufficient filtering on the PCB, but it’s really just a wild guess on my part, and I’ve contacted PixArt, the manufacturer of the optical sensor who will help.

As for the touchpad, we’ve increased its resolution and sensing area.

The big footprint is for an optionally solderable 2×20 pin 0.1″ connector that directly mates with the Azoteq CT210A-S dongle for configuration and diagnostics purposes.

The new design is a clear improvement over the old one, but we still have some work to do based Azoteq’s new feedback. The ground must be routed in a very specific way to maximize sensor performance. It’s not rocket science, just finicky. István is working on the next PCB version.

Next up, I’ll be working on the firmware for the trackpoint module, and will implement the suggestions of PixArt to make the trackball module work flawlessly. I hope that I’ll be able to showcase at least one, but hopefully both of these modules in our next monthly update. The key cluster module prototype is already fully functional, and the touchpad module will come last.

Trackball and touchpad module progress

I recently thought I’d finished the firmware for the trackball module and it would be ready to demonstrate for all of you. I can give you a demonstration, but it’s not what I was hoping for.

As you can see, the pointer moves in highly erratic fashion, and it heavily drifts toward the top right corner. I can affect the pointer by moving the trackball toward the bottom left corner, but the erratic movement usually overpowers my movements. I believe that this is a side-effect of insufficient filtering on the PCB, but it’s really just a wild guess on my part, and I’ve contacted PixArt, the manufacturer of the optical sensor who will help.

As for the touchpad, we’ve increased its resolution and sensing area.

The big footprint is for an optionally solderable 2×20 pin 0.1″ connector that directly mates with the Azoteq CT210A-S dongle for configuration and diagnostics purposes.

The new design is a clear improvement over the old one, but we still have some work to do based Azoteq’s new feedback. The ground must be routed in a very specific way to maximize sensor performance. It’s not rocket science, just finicky. István is working on the next PCB version.

Next up, I’ll be working on the firmware for the trackpoint module, and will implement the suggestions of PixArt to make the trackball module work flawlessly. I hope that I’ll be able to showcase at least one, but hopefully both of these modules in our next monthly update. The key cluster module prototype is already fully functional, and the touchpad module will come last.

Agent and firmware progress

We’ve been publishing about one Agent and one firmware release per month over the past couple years. These releases contain numerous improvements, so feel free to check out recent Agent releases and recent firmware releases to see them along with their changelog. Also make sure to star these projects to get notifications about their activity on GitHub.

Regarding the firmware, it’s worth mentioning a recent fix which made the UHK play nicely with Ryzen PCs. Previously, in some cases, the UHK only worked via USB hubs when connected to Ryzen PCs. Strictly speaking, the UHK firmware was actually bug-free in this respect. The Ryzen platform just happens to be unreasonably picky regarding USB descriptors.

Speaking of Agent, a new feature makes key swapping extremely easy. You just have to drag a key to another key to swap them.

Now we’re working on making Agent handle the modules. Agent will display the actual state of the UHK just as previously demonstrated, but with the modules included. This will result in a very seamless and intuitive experience.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector