Any questions, please search our knowledgebase.

Hi there, and welcome to our monthly status update! Let’s get right to it!

Crowd Supply order delivery progress

Just as promised in our previous newsletter, and according to our delivery status page, we’ve shipped every non-module Crowd Supply order. If you haven’t received yours, Crowd Supply has yet to forward it to you which might take days to weeks. You should be good to go, but any questions, feel free to contact Crowd Supply for support.

Speaking of Crowd Supply, they’re in the process of transitioning their support system, and as a result, your recent emails destined to crowdsupply.com might have been lost. If you haven’t received a reply from them in two business days, then ping them again.

UHK webshop order delivery progress

The assembly of UHK webshop orders is well underway. The reason we haven’t yet shipped any UGL webshop orders is because I haven’t yet finished overhauling our order fulfillment system which is necessary for shipping UHK webshop orders.

I’m nearly ready, we’ll start to ship UHK webshop orders within days, and we’ll ship about 200 orders before the holiday season kicks in.

Estimated delivery dates

As you may already know, we have a delivery status page which contains the estimated delivery dates of pre-orders.

I must emphasize that despite our best effort, these delivery dates are fundamentally inaccurate because numerous factors affect production. There are two main factors we’re already aware of which will affect upcoming delivery dates.

First, our factory will be shut down during the holiday season. The delivery estimation algorithm assumes a constant manufacturing pace, so the estimations will move forward during the holiday season. I’m sorry about this, but I won’t dedicate any more time to tweak the estimation algorithm because I have to focus on more important issues, and we’ll deliver every pre-order soon anyways at which point the delivery page won’t be useful anymore.

Second, a temporary shortage of various components are expected including product boxes and plastic cases. Admittedly, we should have managed inventory better, and we’ll do better going forward, but this will probably delay the delivery of pre-orders in January. We’ll do our best to mitigate the situation.

All things considered, we expect to deliver every non-module UHK webshop pre-order in January to February. Thank you for your continued patience and support!

New Agent feature

The “double tap to lock layer” feature of the UHK is a blessing for most, and a curse for some. Some of you told us that sometimes you accidentally toggle layers (most notably the frequently used Mod layer) due to this feature.

Fear not! The most recently released Agent 1.2.12 is here for the rescue, as it allows you to disable this feature on a per-key basis according to the following screenshot.

Unchecking the “Lock layer when double tapping this key” checkbox will magically disable this feature for the relevant key. Just to clean up any confusion, this feature is only available for layer switcher keys (Mod, Fn, and Mouse) as it wouldn’t make sense for other keys.

This Agent version also makes the warnings that told you that macro support is not yet available disappear. If you still see this message, update your UHK to the latest firmware in Agent, and the macro warning should disappear.

On a somewhat related note, I have written an article titled “How can I type accented characters with my UHK?”. The title gives you a good idea whether it’s for you. It’s also worth reading if you’re interested about the difference between USB scancodes and characters, or if you want to know more about Alt codes.

Pimped UHKs

Some of you keep pimping your UHKs, and we’re always glad to feature your beautiful creations!

A very fancy UHK by @menyao. See Twitter thread.
A runic UHK by @ElDanDanito. See Twitter thread.

Your feedback

The feedback you keep giving us is nothing short of amazing. Sometimes we shake our heads in disbelief when we see loads of enthusiastic tweets pouring in. These are some of the many recent tweets we got from you.

As a closing word, we wish you a Merry Christmas, and Happy New Year! 2018 was quite a year for us, and we’re just getting started! Thank you so much for believing in us and supporting us!

We’ll be keeping you updated on all things UHK, and we’re looking forward to talking to you on 2019-01-17.

  • We’ll be exhibiting at TechCrunch Disrupt in Berlin on November 30. Come and meet us!
  • Share Your UHK experience with Quora readers and help us to be the the best split mechanical keyboard for programmers.
  • Early-bird special pricing will end on December 1st. Pre-order Your UHK now, or as many did, get the 2nd one before the early-bird pricing expires.
  • Feel free to check out our delivery status page for the estimated delivery date of your order.

Hi there, and welcome to our monthly status update! Let’s get right to it!

Delivery progress

We keep churning out the mini batches. With this pace, we’ll deliver every Crowd Supply order in 1-2 weeks. (This doesn’t include the modules which we’ll deliver later.)

As it turned out, the fulfillment process of Crowd Supply orders differs substantially from our own webshop. Shipping Crowd Supply and UHK webshop orders together would have resulted in quite a chaos, so we opted to ship them separately.

Given the above, we’ll only start the delivery of the orders from our own webshop after delivering every Crowd Supply order. Originally, we believed that we will be able to deliver every non-module order by the end of December, including the orders of our own webshop, but the recent sales volume has been higher than anticipated, and some orders will slip to January.

This is not ideal, but we’re doing so much better than recently. Not so long ago, our earliest backers were waiting for 2 and half years to get their orders. We’ve been gradually closing the gap, and by the end of the year the wait time will be reduced to about a month, and then we’ll transition to on-demand manufacturing which will reduce the wait time to less than a week, and possibly to a work day or two.

We’re not sure which orders we will be able to deliver by Christmas or before the new year. Please feel free to check the always up-to-date delivery status page any time.

What is the best keyboard for a programmer?

As surprising as it might sound, some people have never heard about the UHK! Please help us to let them know by sharing your experience with the UHK and showing your support by upvoting on Quora.

Early-Bird Pricing

As most of the Crowd Supply orders should be shipped in the next two weeks, we will stop early-bird pricing for the UHK on December 1st, so if you haven’t done so yet, pre-order your UHK now, before the special pricing expires. If you have ordered your UHK, now it’s the best time to get a second one too.

Mechanicon

I’ve had a blast at Mechanicon! It’s been great to meet so many of you, and talk about keyboards, although I’m jealous of you guys, because I really wanted to check all the weird and wonderful keyboards at the meetup, but I had to stay at our booth.

Christian Bäuerlein, the organizer of Mechanicon, is a super nice guy with a huge passion for mechanical keyboards. Pulling together such an event is no small feat, and he’s done a great job. According to the Meetup page, there were 266 attendees this year, which gets doubled on a yearly basis, based on its track record so far. Feel free to check out the photo collection of Mechanicon 2018.

Max wanted to make it, but couldn’t, so he was feeling blue. So blue that he felt an irresistible urge to express his deepest feelings via his most authentic way by assembling a blue UHK.

Being true to his spirit, he posted the details on Reddit, so you can pimp out your UHK the same way he did.

Review video

Jemin You reached out to us, asking for a UHK to be reviewed, and as soon as he received it, he made a review video of it in no time. His enthusiasm is contagious, I like his style a lot, and I think he’s done an outstanding job capturing the essence of the UHK, and demonstrating every major feature.

To be perfectly honest, I don’t know a word of Korean, but YouTube offers translated captions, which help a bit.

The state of the modules

András has been hard at work lately. Besides running our factory, he was busy with the key cluster module, so let’s take a peek.

But I know you guys aren’t just interested in the outside. The inside is at least as interesting.

We’re getting increasingly closer to a manufacturable product. The shape of the PCB is crazy and nearly final. Fitting the mini trackball into the module is quite a challenge, but it seems to be solvable.

Luckily, the other modules are simpler than the key cluster from a mechanical standpoint. At this point, we can see quite clearly how they’ll fit together. Here are some renders of them.

I’m extremely pleased by the looks of these modules. The initial design looked neat, but András has truly taken them to the next level.

As previously stated, there’s no ETA on the modules yet. We’ll announce it as soon as we get sufficiently close to their production.

Thank you for reading this update! We’ll be keeping you updated on all things UHK, and we’re looking forward to talking to you on 2018-12-13.

We’ll be at Mechanicon, Frankfurt on November 3.

Feel free to check out our delivery status page for the estimated delivery date of your order.

Hi there, and welcome to our monthly status update! Let’s get right to it!

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.

Progress on the freeze bug

Miraculously, I was able to reproduce the freeze bug since our last monthly update, I believe I made a lot of progress after that, and committed a fix. Unfortunately, I don’t have a sufficiently large amount of feedback to confidently say so.

Given the unusually rare occurrence of the bug, there’s only one way to figure out whether the firmware is sufficiently stable: to flash it to production UHKs in the factory, which is exactly what we’ll do soon. Worst case scenario: some of you will have to downgrade to firmware 8.2.5. In my mind, this is way better than having to stick to an old firmware version till the end of times.

Brett’s review

An awesome UHK backer, Brett Terpstra wrote a very nice and aptly named article “I wrote a review of the Ultimate Hacking Keyboard for you nerds” on his blog which you’re welcome to read.

To my surprise, Brett also talked about his UHK on his podcast called Overtired. Listen to episode 77, and jump to ~30:40 for the UHK part.

Max’s new keycap set

Max’s never-ending journey of pimping his UHK continues. His current creation is a black and white UHK.

In his true style, Max shared the keycap sets he used on Reddit, and posted a fair number of nice photos on Imgur.

In an interesting turn of events, Max and I have actually met in person since our last monthly update. It just so happened that he was crossing through Hungary, which served as the perfect excuse for the two of us to meet. We ended up talking for hours, mostly about keyboards as you can imagine. He’s a great guy, I enjoyed his company very much, and I’m looking forward to seeing him again.

Module ETA

The standing ETA of the modules is December, but it’s blindingly obvious that we won’t make it in time.

This year has been unusually eventful. We had to scale up production which called for a manufacturing execution and fulfillment system that I developed from the ground up. Then we set up and fine-tuned our webshop. Soon, we’ll have to transition to on-demand manufacturing which will call for quite a few backend system changes. And amidst all these happenings, we’ve been pushing the firmware and Agent further, and answering an increasing rate of customer inquiries.

We keep churning out the mini batches at a steady rate, and things are expected to settle down by the end of the year. Only from that point on we will be able to truly focus on the modules.

In the past, we have always laid out an ETA, often missed it, then updated the ETA. It’s alluring to lay out estimates because it temporarily calms people down, and stops the seemingly endless flow of “When will my order arrive?” questions. But every time the ETA is not met, it erodes trust just a little bit more. We didn’t mean to lay out bullshit ETAs on purpose, it’s only so that hardware is incredibly hard to make, much more so than software, which is very hard by itself.

Given the above, I decided to not lay out an ETA for modules right now, only later when we'll be sufficiently close to their production. I’m confident that we’ll make tremendous progress with them as soon as things settle down, and I welcome you to join to our journey of making the modules by following us via our blog or newsletter.

Thank you for reading this update! We’ll be keeping you updated on all things UHK, and we’re looking forward to talking to you on 2018-11-15.

Although we did our best to make Agent as intuitive as possible, we get questions from time to time. By far, the most usual question is how to exchange the keys of the bottom row.

Let's say you want to exchange Alt and Fn.

Now select the base layer of your default keymap in Agent. You should see something like this:

The important thing to understand is that each key has an associated action. Let's click on Alt.

A popover appears that contains the type and properties of the action. The Keypress tab is active, so this is a keypress action (type) featuring no scancode and the left Alt modifier (properties).

Now let's see the action of the Fn key by clicking on it.

Now the Layer tab is active, which means that it's a layer switch action that activates the Fn layer while holding this key.

You simply have to exchange the actions of the Alt and Fn keys by clicking on them and setting their action type and properties. Make sure to check the "Remap on all layers" checkbox for modifier keys before clicking on the "Remap key" button.

Lastly, click on the "Save to keyboard" button in the bottom right corner.

Last but not least, you can play with the web demo of Agent in the browser without installing it on your computer. Give it a try!

That's about it! Happy remapping!

Hi there, and welcome to our monthly status update!

TL;DR: Please update to the latest UHK firmware for macro support, and to help us fix the freeze bug that plagues recent firmware versions. Agent now visualizes secondary roles. We’ve churned out 6 mini batches since our last update. The development of the modules is going slowly while delivering the pre-orders, but we’ll switch to high-gear afterwards.

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.

Fancy UHKs

If you’re a regular reader of our monthly updates then Max is no stranger to you, as he’s on a never ending quest to pimp his UHK. This time, he used the Godspeed Cockpit keycap set to customize his UHK and in his true style, he shared the gory details on Reddit.

In the same spirit, Richard was also busy, and ended up creating the most unicornish UHK with extra rainbow flavour!

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.

Production progress

The 6 mini batches we have produced over the last month have not constituted our fastest pace, but they’re in line with our recent progress. Manufacturing progress occasionally suffers a bit due to a number of factors. For example, our palm rest supplier was on vacation recently, and had to catch up with production. Such cases only cause temporary hiccups, and they can occasionally affect the sizes of mini batches positively or negatively, but we always manage them quite well.

In the meantime, we’ve already pre-ordered the parts of the second large batch of UHKs. The first large batch contained 2,000 UHKs, and the second large batch contains 1,000 UHKs. We’re not VC-funded and fully rely on your support, so being able to pre-order the parts of a large batch is a big achievement for us. This means that production will be uninterrupted in the future, even after delivering the pre-orders. A sincere thank you to every one of our backers for making this huge milestone possible!

Development progress

As you can see, we keep pushing Agent and the firmware, but it’s quite a challenge to do heavy R&D these days because production and related tasks are so demanding.

Customer support is time consuming, as well as developing and fine-tuning backend systems. These tasks are not visible from the outside, but they’re absolutely necessary to keep things going.

Transitioning to our own webshop did end up heavily affecting our backend systems, including the integration and implementation of the webshop, factory automation, order fulfillment, and invoicing systems. Pre-ordering the parts of the second large batch also called for a procurement system which is up and running, but it has taken quite some time to set up.

Due to the above, we could only make a little progress with the modules. András has further refined their mechanical design, and will hand them off to a mold designer to finalize their mechanical features. I figured out how to optimally panelize their PCBs and factory-flash their firmware the most efficient way. We’re mindful about the modules, and will switch to high-gear once the delivery of the pre-orders is over.

Thank you for reading this update! We’ll be keeping you updated on all things UHK, and we’re looking forward to talking with you on 2018-10-12.

Effective immediately, the Crowd Supply UHK pre-order page is closed. You can place orders in our own webshop from now on. Please read on for the details.

Hi there, and welcome to our monthly status update!

TL;DR: We’ve opened our own webshop! We’ve churned out 7 mini batches since our last update, which is the fastest we’ve ever produced. A ton of firmware progress has been made, but we need testers to fix a very hard to reproduce bug. We’ve received a lot of nice feedback from you, including a review.

Let’s start with the webshop migration, which is admittedly quite boring, but important.

Webshop migration

If you don’t plan to purchase more items from us, feel free to skip to the next section.

Crowd Supply has served us well. We launched a successful campaign, and they have been taking pre-orders up until this point, but now it’s time for us to take our own orders.

We have always wanted to run our webshop, because it allows us to provide the best possible customer experience. But setting up a decent shop is easier said than done. We’ve been very busy with bringing the UHK to market, so it’s taken quite some time for us to make our shop happen. Luckily, our efforts have come to fruition, and now our webshop is up and running.

At the same time, we’ve closed our Crowd Supply shop, so going forward, you can only order from our webshop. In the spirit of transparency, we’ll share everything you ever need to know about our shop. Please read on.

Delivery status

The delivery status page that contains the order ids of Crowd Supply orders will also contain the order ids of our webshop. I’m working on integrating this page with our webshop, which may take a week or two.

Please note that our webshop has just recently started, so its order ids are in the hundreds vs the order ids of Crowd Supply which are in the tens of thousands. To make this distinction clear, the order ids of our webshop will be prefixed by “#”.

Our first-come, first-served delivery policy will not be affected by this transition regardless of which webshop you ordered from.

New shop features

Our new shop offers quite a few advantages:

First, you can choose three separate currencies: USD, EUR, and HUF. The prices of the relevant currency will be shown. This results in no conversion fees if you happen to use one of these currencies.

Second, you can pay not only with your credit card, but also with PayPal. Over time, we plan to introduce further payment methods.

Third, there are separate product pages, and the pages of configurable products contain a visual product configurator. You can see a preview image that shows the exact product that you’ll receive.

Fourth, our webshop generates proper invoices. This is mainly beneficial for company purchases.

Shipping

When it comes to shipping, the first thing to highlight is delivery times. So far, we’ve directly delivered from Hungary to the EU, which is great, because it only takes about a day or two for the packages to arrive. Delivering outside of the EU however has been less than ideal because we previously sent those packages via Crowd Supply (Portland, USA). It takes a couple of days for them to receive the packages, then it can take a week or two until they forward them. It’s especially painful for countries outside the EU and USA because it can take as much as a month to receive the package starting from the day we shipped it!

This had to change, so going forward, when you order from our webshop, we’ll send the package directly from our factory in Hungary to you which shouldn’t take more than a couple of days regardless of your country.

When it comes to shipping costs, Crowd Supply has a very simple pricing structure: shipping free to the US, and $24 to everywhere else. This clearly doesn’t reflect the actual cost of shipping, because it does cost money to ship goods to the US, and the shipment of smallish packages is often cheaper than $24 outside the US.

Our philosophy is that we don’t want to earn or loose on shipping. We will simply pass the shipping cost to our customers. We use DHL, and we’ve made quite a good deal with them. The current shipping costs are based on the weight of the package, and your destination. You can see the actual shipping cost on the cart page of our webshop. For example, it currently costs $15.14 to ship a UHK to Switzerland, $19.03 to the USA, and $29.93 to Japan. For some of you, it’ll be cheaper, but for those of you who will pay more (mostly because of your location), it’ll be a lot faster!

Multiple / aggregated orders

If you have made orders on Crowd Supply, feel free to make further orders in our shop. In this case, please specify the same email address as on Crowd Supply. This way, we’ll be able to aggregate your Crowd Supply and non Crowd Supply orders, and ship them once if you happen to be from the EU. The reason order aggregation only works for EU customers is because we need to ship non-EU orders separately via Crowd Supply.

If you make multiple orders in our own webshop then the shipping cost will always added for every single order. Given that we’ll ship your orders together, the actual shipping cost will be lower. The way we’ll make this fair is that upon delivery, we’ll take the sum of the shipping costs you paid, subtract the actual shipping cost of the package that contains all your orders, then refund the difference to you.

EU VAT

Please note that this section only applies to EU citizens and companies. Feel free to skip to the next section if it’s not relevant to you.

According to tax laws, VAT must be paid when purchasing goods within the EU. The VAT rate of the origin country applies, which is 27% in Hungary. This means that given a $100 product, the final price will be $127 with VAT included, unless you’re a company.

Some of you may have noticed that this seemingly wasn’t the case so far. Our items did cost the same worldwide, the EU included. This was possible because we actually reduced the net prices of items for EU customers to offset the VAT, so we were willing to take a heavy hit on our margin for making our pricing more competitive for EU customers.

Starting from now, we won’t offset our prices anymore, and VAT will be applied. If you don’t want to pay VAT in the EU, your only choice is to purchase the goods as a company. In this case, you’ll have to provide your company’s valid EU VAT number on the checkout page, and then VAT will not be added, and it will not be featured on the invoice.

Discounts

The 10% discounts are still in effect in our new shop. We’ll remove the discounts of non-module items once all these pre-orders shipped. Afterwards, we’ll remove the discounts of module items once all these pre-orders are shipped.

Who to contact?

Regarding the items that you purchased on Crowd Supply, contact them at [email protected]. Regarding the items that you purchased in our webshop, contact us at [email protected].

Manufacturing progress

Since our last update, we’ve sent out mini batches 16, 17, 18, 19, 20, 21, and 22, which is, yet again, the highest volume batch we’ve produced so far. The production throughput of the last month is 84% of what we planned, so we’re quite close, and working to increase it further.

We’ve just looked into the stats and realized that we’ve already shipped most of the pre-orders. We shall proceed further.

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.

Your feedback

Kyle Holgate, an awesome backers of ours wrote a review about his UHK. It’s a very nice write up, and you’re welcome to read it.

Meanwhile, Max, in this true style, was busy with pimping his UHK yet another time, created the most nuclear UHK to this day, and made quite some noise on reddit. Please keep up the great work, Max!

You guys keep sending us your nice mods and feedback all over the interwebs. We’re honored and delighted!

Thank you for reading this update! We’ll be keeping you updated on all things UHK, and we’re looking forward to talking with you on 2018-09-13.

Important: Please make sure that your shipping address is up to date! You can change it on your Crowd Supply account page. Please also check out the delivery status page.

Hi there, and welcome to our monthly status update!

TL;DR: Since our last update, we’ve sent out mini batches 10, 11, 12, 13, 14, and 15, which is, yet again, the highest volume batch we’ve produced so far, but not as high as we aim for. We had to allow a week of vacation for our staff in the middle of summer. Without the vacation, we’d have likely hit our target volume, so the ramp-up is still not over. Apart from manufacturing, Agent and the firmware keep advancing, and some major progress is expected soon.

Your recent feedback

A monthly UHK update wouldn’t be complete without featuring your awesome feedback.

Our first English review is out on Reddit, which you’re welcome to read! As creators, reading such nice words is all we can wish for.

But Max, the writer of this review didn’t stop there, and pimped his UHK with the third-party Canvas XDA keycap set.

And Max still couldn’t get enough, so he ended up writing a full-blown UHK keycap replacement guide on Reddit! Thanks so much for the great work, Max!

Third-party keycap sets are clearly in the vogue nowadays. We believe the following picture is quite a sight!

And you keep sending us your nice tweets:

Last but not least, even Michael Bolton approves the UHK.

Please keep it up! We love hearing from you.

Agent and firmware progress

We keep pushing Agent and the firmware at a steady pace. Most of these improvements come in small increments, and many of them are under the hood changes, so it’s hard to notice them. But they add up in a big way over time, and every now and then some user-facing changes are committed.

Some of you found it cumbersome to remap keys on all keymaps and/or layers, so we extended the UI of Agent accordingly. The tooltip should speak for itself.

We also added a separator line between the halves, so it’s easier to locate keys.

The above are frontend changes, but there’s a lot more going on under the surface.

Recently, we’ve been working hard on fixing a Windows-specific firmware bug that is responsible for media key repetition, and not letting your computer go to sleep on Windows. We’ve managed to fix this bug, but then a nondeterministic bug emerged which made the UHK hang sometimes only after hours, which turned out to be very problematic to fix. We believe that we did fix it, but I want to test it thoroughly before releasing a new firmware version.

The new firmware release will also contain a major feature: the macro engine! We promised macro support a long time ago, so we’re super excited to make it happen. Agent is already capable of editing macros, but the macro engine of the firmware is a critical piece of the puzzle to make macros actually work on your UHKs.

Let me just say that we’re super focused on implementing the promised features, and even more so on fixing bugs. One reason is that they directly translate to a great user experience. The other reason is that as more and more UHKs make their way to you, we keep getting a lot of reports of the same issues, so fixed bugs directly translate to lower overhead. Please do keep reporting bugs, but always use the latest Agent and latest stable firmware versions.

Running production, developing Agent and the firmware, and answering messages is a lot to deal with at the same time, and as a result, we couldn’t devote time for the modules over the last month. We’re asking for your patience, as we’re rather overloaded nowadays.

Thank you for reading this update! We’ll be keeping you updated on all things UHK, and we’re looking forward to talking with you on 2018-08-16.

We get this question from time to time, and the answer is not as obvious as one might think. I'm about to explain it in-depth, but first, I'll give you a short answer in case you're in a hurry. Please consider the relevant tooltip of Agent:

Hopefully, this explains what to do. You're welcome to suggest better phrasing in the comments, but this is the short and sweet version. And now on to the more detailed explanation.

Characters vs Scancodes

The most important thing to understand is that USB keyboards (the UHK included) do not send characters to your computer. No, Sir. They send scancodes. When you press a key, a scancode of 1 to 255 gets sent to the computer. It's not a character but a number!

Now think about this: There are 255 different scancodes that must be mapped to more than 100,000 characters that are used on planet Earth! How so? This is how:

Your operating system translates scancodes to characters based on your actual operating system keyboard layout.

Let me give you an example to make you realize the crucial role of your OS layout. Let's say that an American, a German, and a Russian user purchase USB keyboards of the same physical layout. Now let's take the semicolon key according to the American layout. On all three keyboards, when pressing this key, the scancode 51 gets sent to the computer, yet, the character ";", "ö", and "ж" appear on the screen of the American, German, and Russian users, respectively, merely because they use different OS keymaps.

When it comes to mapping scancodes to characters, the situation is actually slightly more nuanced because modifiers also affect the mapped characters. For example, on the US layout, Shift + 4 produces "$", and on the Hungarian layout, AltGr + U produces "€", but this doesn't alter the nature of the beast.

Alt codes

There's a mechanism called "Alt codes", which allows users to produce various accented characters in a way that is (mostly) independent of the current OS keymap.

  • On Linux, press Shift+Ctrl+U, which prefixes your cursor with an "u", indicating that a Unicode number is now expected. At this point, enter "2764" followed by Enter, and ❤ will magically get inserted. Linux Alt codes are the most powerful and standard, given that they're backed by Unicode numbers.
  • On Windows, first, you have to have Num Lock enabled. Then, hold an Alt key and press a Windows-specific numeric code, and finally release the Alt key, at which point the relevant character will be included. 375 different characters can be included this way, but there is a way to unlock additional Alt codes to be able to access otherwise non-typeable Unicode characters
  • On Macintosh, there's also a similar mechanism that is better called Accent Codes. Let's say you want to put an accent to the "o" letter. You press Option+E, then press "o," which results in "ó". The set of characters that can be produced this way is similarly limited as on Windows, although in true Mac fashion, the implementation is much more intuitive.

Alt codes provide a way to output various characters in a way that is mostly independent of the current OS keymap, but they're OS-specific, and they don't work in every environment. For example, let's say that your hard drive is encrypted, and you have to type a password before the OS boots up. Depending on your OS, Alt codes may not be available at this point. On Linux, they also can't be used in terminals outside of the X server, so you can't rely on them in every environment.

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 are very handy since they're saved to the on-board memory of your UHK and always available 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 laborious, 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.

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, ergonomic, 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 a semicolon. Users should actually understand how things work when it comes to this topic.

Scancodes vs Characters in the UHK

When remapping UHK keys, you should keep in mind that:

  • Agent accepts characters:
    • In regular actions, Agent implicitly translates characters to scancodes according to the en-US mapping (and also back whenever it needs to show the corresponding label).  (So the saved configuration contains scancodes.)
    • In macros (the Text and Command action), Agent just leaves characters for the firmware to interpret. (So the saved configuration contains characters.)
  • Internally, the UHK works with the macro Text and Command actions as with regular text (i.e., characters).
  • However, the UHK always produces scancodes.
    • For regular actions, the configuration already contains scancodes, so the UHK just sends them to the computer.
    • If the UHK produces scancodes based on macro text (i.e., based on characters), the UHK translates them back to scancodes according to en-US mapping.
  • The OS transforms scancodes (received from the UHK) back to characters according to its current language keymap.

That's it, folks! If you're still reading, then you're truly one of the brave few. Any questions, feel free to shoot them in the comments.

Custom scancodes

You can specify custom scancodes on the UHK. See how.

Important: Please make sure that your shipping address is up to date! You can change it on your Crowd Supply account page. Please also check out the delivery status page.

Hi there, and welcome to our monthly status update!

TL;DR: Since our last update, we’ve sent out mini batches 5, 6, 7, 8, and 9. This is the highest volume we’ve produced so far, but not as high as we ultimately aim for. We’ve fallen behind with pre-assembly due to the aforementioned staffing issues, but we’re catching up, and the ramp up is still underway. The development of the modules is in progress.

First up, let us share a beautiful and very original picture that we love very much. It’s made by Yukio Miyamoto. He is a masterful illustrator who also happens to be an awesome backer of ours.

Your recent feedback

The feedback you keep giving to us continue to be amazing.

The following is an interesting one. Did you know that when armed with a USB OTG cable, you can connect your UHK to your Android phone, and you can probably also control the mouse pointer? (Recent Android kernels tend to support USB mice.)

Lastly, this one made us laugh out loud:

Please keep them coming! We’re excited to hear about y’all.

Module progress

Production does keep us busy, and we can’t yet devote as much time for development as we’d like to, but we’ve made some progress with the modules.

The following is sitting on my desk, and it might just be the weirdest keyboard ever.

But most importantly, this Frankenstein keyboard is a proof of concept! This is 1 UHK right half and 3 left halves interconnected. The top left half simulates a left module, and the top right half (which is a left UHK half) simulates a right module.

The keyboard halves and modules communicate via the main I2C bus of the UHK. The right UHK half is the I2C master which initiates all communication on the bus. The rest of the devices are I2C slaves. From the standpoint of the firmware, there is no difference between the left keyboard half and the modules.

I basically dremeled a protoboard to size, and created a passive 4 port 4P4C hub out of it to interconnect the pieces. Then I added test keymaps for the modules, and reflashed the firmwares of the left module and the right module, so that their I2C addresses don’t clash with the I2C address of the left UHK half.

This proof of concept works as intended, and now I can type on all the 4 keyboard halves, making me seem like I overcompensate for something.

As you can imagine, this is the first step of many to follow. Next up, I will extract the part of the firmware that will be shared across the modules and the left half, and then create separate firmware projects for the modules, utilizing the extracted code.

Then I’ll attach the peripherials specific to the individual modules to these development UHK left halves, and write firmware code to drive them.

In the meantime, András will finalize the plastic cases and mechanical design of the modules, so that they’ll be optimized for manufacturing. This will, in turn, enable me to design the custom PCBs of the modules.

In a way, developing the modules is like developing additional products - 4 products to be exact, and even though we’ve gained a lot of experience, realistically speaking, there’s no way the modules will be ready by the end of August as originally planned.

Given the above, we’re changing the estimated delivery date of the modules to the end of December which should be more realistic. None of us are happy with delays, but we’d much rather take our time than compromise the quality of the product even the slightest bit. According to your feedback, it’s the right thing to do.

Thank you for reading this update! As always, we’ll be keeping you updated on all things UHK, and we’re looking forward to talking with you on 2018-07-12.

Important: Please make sure that your shipping address is up to date! You can change it on your Crowd Supply account page. Please also check out the delivery status page.

Hi there, and welcome to our monthly status update!

TL;DR: Since our last update, we’ve sent out mini batches 2, 3, and 4, and mini batch 5 is almost finished. Due to staffing issues, this volume is about half of our production target. We hired new employees, and expect to reach our target production capacity in about two weeks. The feedback we received from you has been overwhelmingly positive, and we’ll be working hard to keep it that way.

We get the hint, and feel inclined to advertise the UHK in coffee shops all around the world. Be careful though, your UHK doesn’t like coffee as much as you do.

Production progress

Almost four mini batches (about 240 UHKs with accessories) per month is a decent amount of output compared to our earlier progress, but we need to do eight in order to fulfill every current pre-order by the end of August.

The reason for this slow performance is staffing issues. Two of our assembly workers left recently: one permanently and another temporarily. Their timing couldn't have been more unfortunate, and deeply affected manufacturing progress.

We've hired two assembly workers recently, will hire another very soon, and the person who temporarily left will be back in 2 weeks. We're confident that assembly will ramp up very soon and proceed just as planned.

Delivery progress estimation

The delivery status page I originally created was decent, but not great, as backers couldn’t see their place in the queue and their estimated delivery date. Given the endless storm of “when will my order be delivered” emails, I ended up extending the page functionality.

Meet the always up-to-date delivery estimation section of the delivery status page that will tell you the estimated date of your order using a sophisticated set of algorithms and deep neural networks. Seriously though, it’s pretty simple, but does the job.

Please disregard the estimation date of your orders on Crowd Supply, and instead check out our page as it contains much more accurate estimation.

Development progress

Since our last update, we’ve published two Agent releases and four firmware releases. These releases contain bug fixes and improvements. You’re welcome to check out the list of changes and update if you want to.

Both András and I have been very busy with manufacturing as of late. We couldn’t be more excited to work on the modules, but production takes priority now. We’re doing our best to streamline the manufacturing process and dedicate more time to development, which will surely happen soon.

That’s it for now! Thank you for reading this update! We’re excited to talk to you again on 2018-06-14.