tech talk

2019 Nov 11

Key cluster and trackball module progress

By |2019-11-11T21:30:08+00:002019-11-11 20:11|demo, modules, news, prototype, tech talk|2 Comments

Hi there, and welcome to the monthly UHK status update!

TL;DR: The key cluster module is now fully functional, and the trackball module is partially functional. Some awesome UHK reviews have been released.

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.

UHK reviews

Minimalistik is a powerhouse when it comes to keyboard reviews, and he's just made a UHK review. I believe he's captured the essence of the UHK very well.

The Techne has also reviewed the UHK in his contagiously enthusiastic style which I particularly enjoy.

As an internationally known strength coach/personal trainer, Bernd Stößlein is not our typical customer, which is exactly what makes his UHK review so interesting.

Your tweets

You guys keep sending your awesome tweets, and we're always eager to read and feature them! If you got your UHK, please share your love!

We'll be keeping you updated on all things UHK, and are looking forward to talking to you on 2019-12-10.

2019 Oct 11

New Agent release and module progress

By |2019-10-11T19:50:10+00:002019-10-11 19:10|agent, demo, electronics, features, modules, news, prototype, tech talk|6 Comments

Hi there, and welcome to our monthly status update!

TL;DR: We've released a new Agent version after a long time without changes. We've made a functional key cluster module, and made progress with the trackpoint module.

New Agent release

It's been a whopping ten months since we released the latest Agent version. We've actually been working on Agent since the latest release quite consistently, but weren't able to publish a release due to the lack of a valid Windows Authenticode certificate. Long story short, we finally have a certificate, and recently released new Agent versions.

Feel free to check out the changelog on the GitHub Agent releases page. We've mostly fixed and polished a number of issues. A particularly useful feature is a dedicated Mac pointer speed preset which you should try out if the UHK mouse pointer movement feels slow on your Mac.

We've also implemented the fanciest UHK feature to this day: Agent shows whether the UHK is split or merged, and displays whether the left half is connected. Obligatory demo follows:

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

Admittedly, this feature is pretty useless in itself, but it'll actually be useful in the future. The same mechanism will be used to show the modules. Imagine connecting your modules, seeing them show up, and be able to configure them with a click of a button. And talking about modules…

Functional key cluster module

After a fair deal of prototyping, the key cluster module actually works. Again, obligatory demo follows:

You probably noticed the little thingie at the bottom of the key cluster module.

As you can see, it's an FFC cable. Our current FFC cable manufacturer couldn't make a cable of merely 13 mm length, so we used a much longer off-the-shelf cable for the time being. I actually doubt whether an FFC cable of such short length can be made, but an FPC (flexible printed circuit) can surely be made. But we'll probably end up using a rigid-flex board as the best solution.

Apart from the above slight change, there's another issue. I noticed that the responsiveness of the trackball is lacking compared to the previous prototype. The new, smaller hall-effect sensors are probably not sufficiently sensitive to pick up all the magnetic state changes of the mini trackball.

I wired the old mini trackball breakout board to the key cluster trackball board to be able to test it with the key cluster module, and the change in responsiveness was immediately apparent. The right board is super responsive, and the left one skips the beat very often, especially when moving it quickly.

I think we'll revert to the previous hall-effect sensor, and try to pack them tighter to be able to fit them on the board.

Trackpoint module

We've made progress regarding the interconnection of the top and bottom trackpoint boards. There isn't enough space for an FFC connector on the top trackpoint board which contains the actual trackball sensor, so the cable needs to be directly soldered to it. I designed an FPC for this purpose, and we plan to use hot bar soldering to affix it to the top board.

I used a soldering iron for prototyping purposes. So far, so good!

This module should work well, and I'm excited to write firmware for it, and for the rest of the modules.

UHK unboxing video

ShopzadaPH has made an awesome unboxing video of the UHK which you're welcome to watch:

Your tweets

You guys keep sending your awesome tweets, and we're always eager to read and feature them! If you got your UHK, please share your love!

We'll be keeping you updated on all things UHK, and are looking forward to talking to you on 2019-11-11.

2019 Sep 10

Module PCBs assembled

By |2019-09-10T21:30:03+00:002019-09-10 20:31|electronics, modules, news, prototype, tech talk|0 Comments

Hi there, and welcome to our monthly status update!

First things first, we've finally delivered every UHK, including the ones with non-black cases! If you want to order a UHK, possibly with a non-black case, now's the time. New orders ship in a week.

As for the modules, we keep making progress. Each of the module PCBs has been assembled since our last update.

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.

Trackball

The trackball board came out pretty nicely. It's also completely useless, unfortunately.

While soldering the parts, I realized that the pinout of the ADNS-3530 optical sensors is backwards. The datasheet features the "top side" of the component, but as far as we're concerned that's the bottom side. Unlike trackballs, regular mice probably use this component in a reverse-mounted fashion, hence the misunderstanding.

Istvan has redesigned this board, and it'll be fabbed soon.

Trackpoint

There's not much to say about the trackpoint PCB. I haven't found any issues yet. I think it'll work well once I write firmware for it.

Touchpad

The touchpad PCB has turned out pretty well, too.

This board is hardly our final iteration though. Azoteq, the manufacturer of the IQS572 touch sensor IC that we use, reached out to us and offered to review our design.

They made suggestions on how to improve the ESD immunity of the design, but perhaps even more importantly, they suggested to use a finer pitched sensor matrix to improve the resolution and increase the sensing area of the touchpad.

We plan to implement their suggestions, and then we'll send some samples to them for further review. The sensor IC is very sophisticated and has a myriad of configuration parameters, so having it tweaked by Azoteq will be extremely helpful. Azoteq provides the best support I've witnessed so far, and I'm very impressed by them.

As previously mentioned, we don't have an ETA on the modules yet. We keep making progress, and we'll announce the ETA when the time comes.

Your tweets

You guys keep sending your awesome tweets, and we're always eager to read and feature them! If you got your UHK, please share your love!

We'll be keeping you updated on all things UHK, and are looking forward to talking to you on 2019-10-10.

2019 Aug 13

Module PCBs are ready

By |2019-08-13T20:40:32+00:002019-08-13 20:40|design, electronics, features, modules, news, prototype, tech talk|4 Comments

Hi there, and welcome to our monthly status update!

István, our PCB designer, has been on steroids, and he finished the PCBs for every module! The boards are being fabricated right now, and are expected to arrive in a week – at which point I'll assemble them.

We already showed an inside look of the key cluster module in an earlier post, so this time, I'd like to showcase the right-side modules. I'll feature three images per module: the assembled version, the half-assembled version, and the latest PCB which is being fabricated.

Please note that the following modules are only prototypes. Their color is not representative, and neither is their surface quality, which will be way smoother once the modules get injection-molded. The color of the PCBs will also differ, as we'll use black soldermask for the final boards.

Trackball

The trackball only has a single PCB. It utilizes the ADNS-3530 optical sensor, which happens to be the most compact optical sensor according to my knowledge. The retaining ring can be removed by rotating it counter-clockwise, so one can easily clean the ball.

Trackpoint

The trackpoint is composed of two boards. The top board is provided by our supplier and contains the actual trackpoint module. The bottom board is designed by us, and its purpose is to do protocol translation between the PS/2 protocol of the trackball PCB and the I2C module protocol of the UHK.

Touchpad

The touchpad module is composed of two boards. The bottom board is a trivial one which simply routes the pogo pin header to an FFC connector, supplying power and data to the top board. The top board does the actual sensing using the Azoteq IQS572 touchpad sensor IC. The top side of the touchpad will be covered by black film.

When I said that that the boards are ready, what I really meant is that these boards should be fully functional. Their design is not set in stone yet, but we expect only very minor changes going forward. Even our mechanical design is fairly advanced and should contain the mechanical features needed for injection-molding.

As I previously mentioned, we don't have a solid ETA on the modules yet. As you can see, we're making rapid progress, and we'll get there, but we surely won't rush them, as we want to get them right.

Your feedback

You guys keep sending your awesome tweets, and we're always eager to read and feature them! If you got your UHK, please share your love!

We'll be keeping you updated on all things UHK, and are looking forward to talking to you on 2019-09-10.

2019 Jun 13

Key cluster and trackpoint module progress

By |2019-06-14T00:20:19+00:002019-06-13 23:23|demo, design, electronics, firmware, modules, news, prototype, tech talk|6 Comments

TL;DR: We've been making progress with the key cluster and trackpoint modules. New orders ship in a week, except non-black UHK cases.

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

Production status

If you want your UHK shipped in a week, you should pick the black UHK case option. Otherwise your order will take longer due to temporary parts shortages. This shortage was mentioned in our previous monthly update, and we've been working on resolving it, but it's taking more time than anticipated.

If you have any questions about the ETA of your order, please do read the delivery status page. We keep this page up-to-date, and we're unable to provide more accurate information, not even if you email us.

Module progress

In our previous monthly update, I included a picture of the development board for the key cluster module. In the meantime, I've also written firmware to drive it, so here comes its obligatory demonstration:

From a technical standpoint, the BlackBerry trackball is an interesting little beast. The ball itself is not even electrically connected to the PCB. Instead, its four spindles rotate when pushed in the four directions. The spindles contain magnets which alter their magnetic fields about 9 times during a 360 degree rotation, and the alternating magnetic field is detected by the hall-effect sensors on the PCB.

Given its limited resolution, the BlackBerry trackball is hardly an ideal device for controlling the mouse pointer (right-sided modules will perform far better in that department), but it's very well suited for scrolling in every direction. I'm actually surprised how well it's already working, even though it's the first working prototype. Over time, we'll make the acceleration and speed of the mini trackball configurable, which will make it even more useful.

As far as the firmware goes, firstly, I slightly extended the UHK module protocol responsible for the keyboard halves and modules to communicate with each other. This allowed for the transmission of not only key states, but also pointer movement information. Then I wrote a driver for the BlackBerry trackball purely using interrupt handlers, which is the most efficient approach there is. Finally, I made the key cluster transmit the pointer movement information of the BlackBerry trackball to the right keyboard half which is the brain of the UHK.

The above pictures feature our most recent mechanical key cluster prototype. The creation of a working PCB is underway.

We've also made a mechanical prototype of the inside of the trackpoint module:

We may change the trackpoint component depending on various design constraints, but the overall mechanical design is expected to be close to final.

We've actually made progress with every one of the modules, but haven't yet prototyped the others. We'll be sharing all their juicy details in our upcoming newsletters.

Your feedback

You keep sending your nice tweets which we're grateful for! Please keep them coming!

We'll be keeping you updated on all things UHK, and we're looking forward to talking to you on 2019-07-10.

2019 May 16

New orders ship in a week

By |2019-05-16T21:20:32+00:002019-05-16 20:25|design, electronics, firmware, modules, news, prototype, tech talk|5 Comments

TL;DR: We caught up with pre-orders, and new orders ship in a week! Our customers made some awesome carrying cases for their UHKs. The UHK mouse mode is surprisingly useful, and viable for creating digital art. We're making progress with the key cluster module.

Hi there, and welcome to our monthly status update! Ready for warp? Let's punch it!

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.

DIY UHK carrying cases

Some of you shared your DIY UHK cases, and they're so awesome that I ended up writing a dedicated blog post about DIY UHK cases. I'm very impressed by these cases, and I'm sure they're of interest of many UHK owners.

Creating digital art with the UHK

There are few keyboards with a dedicated mouse mode, and the UHK might just have the best implementation of all. Brandon Yu's drawing is a testament to this.

I'm super impressed by Brandon's work, and wouldn't have ever thought that anyone would create such a beautiful drawing purely with the UHK.

The UHK mouse mode will never be as good as a dedicated mouse, but it's surprisingly capable in the right hands. This is due to the implementation of the mouse pointer acceleration and its number of configuration options.

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.

Your feedback

You've been sharing more than your fair share of tweets over the last month. Thanks so much, and as always, please keep them coming!

We'll be keeping you updated on all things UHK, and we're looking forward to talking to you on 2019-06-13.

2019 Feb 14

Shipping is about to resume

By |2019-07-19T09:06:01+00:002019-02-14 21:14|agent, manufacturing, news, tech talk|0 Comments

TL;DR: Delivery temporarily stopped due to the shortage of packaging material which should resume around February 20. We expect to ship every non-module preorder by the end of March. Regarding the ETA of your order, please check out the delivery status page, including its FAQ section.

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

Manufacturing progress

Since our previous monthly update, we've built plenty of UHKs, but we couldn't ship most of them due to a temporary shortage of packaging boxes.

It's taken more time for the printing factory to get up to speed after new year, and they expect to deliver the packaging boxes to us on February 20. We'll make quick progress once the boxes arrive, and expect to deliver every non-module preorder by the end of March.

We didn't simply ask for another batch of packaging material to be honest. We redesigned the boxes because they weren't sufficiently robust. The new boxes are not only fancy, but more robust (and more expensive).

I added a news section to the top of the delivery status page which you're welcome to check any time. This way, you can keep informed about delivery status the easiest way possible.

DeveloperWeek cancelled

In our previous monthly update, we told you that the we'll exhibit at DeveloperWeek in the Bay Area on February 21-22. Unfortunately, we won't be able to make it.

The reason is that our marketing contractor, Nikolai Lebedovsky of Crowdtoolz was fired because I found his work ethics to be poor. Without him, we can't staff our booth, so I ended up cancelling the event.

With the event cancelled, we won't be able to give away the free passes offered in our previous monthly update. I'm sorry about this, but now that we have cancelled the event, we can't do anything. I'll email all of you who asked for free passes shortly after publishing this update.

As far as the project is considered, I think not attending to DeveloperWeek is actually a good thing. We should fully focus on the delivery of preorders at this point. We'll have plenty of time to do expos later.

Module progress

Robi has implemented the kboot bootloader protocol natively in Agent. Previously, Agent used the external blhost command line utility which was unreliable. This will make firmware updates more reliable which is very important because the modules will require a new firmware version flashed to your UHKs. We have yet to release a new Agent version that contains this improvement.

In the meantime, András advanced the mechanical design of the key cluster module, so it's closer to the final design to be mass produced.

As stated in earlier updates, we can't fully focus on the modules yet. Only after shipping every non-module preorder and transitioning to on-demand manufacturing will be able to make heavier progress regarding the modules.

Your feedback

Mikko Ahlroth wrote a very nice UHK review on his blog. I love reviews like his which go into details and capture many facets of the UHK.

In the meantime, Brett Terpstra has been exploring the wonderful world of custom keycap sets. He pimped up his UHK, and wrote a blog post titled The addictive hobby of customizing mechanical keyboards.

We'll be keeping you updated on all things UHK, and we're looking forward to talking to you on 2019-03-14.

2018 Sep 13

Lunar UHKs, Unicorns, and the Freeze bug

By |2018-10-23T20:00:41+00:002018-09-13 22:37|agent, features, manufacturing, news, tech talk|0 Comments

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.

2018 Jun 23

How can I type accented characters with my UHK?

By |2019-11-19T19:26:30+00:002018-06-23 23:55|agent, howto, tech talk|30 Comments

We get this question from time to time, and the answer is not so obvious as one might think. I'm about to explain it in depth, but first I'll give you the 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 a 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 which 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 of the screen of the American, the German and the 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 now a unicode number is expected. At this point, enter "2764" followed by Enter and ❤ will magically get inserted. Linux Alt codes are the most powerful and most 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. Merely 375 different characters can be included this way.
  • 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 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.

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.

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.

2018 Jun 14

Production and module progress

By |2018-10-23T19:59:20+00:002018-06-14 16:58|modules, news, prototype, tech talk|8 Comments

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.