design

The feet and palm rest design is nearly complete

Howdy all! It’s time for our regular monthly progress report. Let’s get right to it!

Feet and palm rest design

András has been busy designing the feet and palm rest of the UHK. The current design is close to final, so we’re excited to show it off.

But first, please fasten your seatbelts. The UHK is highly modular and configurable in nature and the feet and palm rest are no exceptions. There are a lot of combinations of feet configuration so let’s dive in!

The design

There are 4 feet mounting positions per keyboard half located in the corners of the halves:

feet mounting positions without palm rest

When using the palm rest, the number of feet mounting positions (4) is unchanged, but their location spreads across a larger area because the bottom 2 feet per keyboard half are mounted to the palm rest:

feet mounting positions with palm rest

A foot can be mounted with 3 screws and can be rotated in 90 degree increments:

foot-degree-animation-640

In any of the 8 positions, a feet can be unmounted (no elevation), mounted and closed (slight elevation), or mounted and opened (large elevation):

foot mounting animation

The bottom of the feet are rubberized, even sideways, and the UHK has its own small rubber feet so the keyboard won’t slide in any configuration:

Rubberized foot

The palm rest is fixed to the keyboard with 2 screws per keyboard half, screwed into the stainless steel inserts of the UHK:

palm rest screws

Given the number of combinations, we can’t go over every possibility, but we’d like to highlight the most popular ones.

Positive tilting

4 closed feet are used in the top positions of this configuration. The palm rest is not featured on these pictures but you can use it if you want to.

Side view

Side view

Isometric view

Isometric view

Bottom view

Bottom view

Negative tilting

In this configuration, 4 closed feet are used in the top positions and another 4 opened at the bottom positions mounted to the palm rest.

Side view

Side view

Isometric view

Isometric view

Bottom view

Bottom view

Tenting

4 opened feet are used in the inner positions and oriented towards the center of the keyboard.

Side view

Side view

Isometric view

Isometric view

Botttom view

Botttom view

There are so many possibilities that we’ll surely end up writing a manual just on this topic. Stay tuned!

Mold and cutting tool progress

It is apparent that our Serbian contractor is hard at work. This is the sheet metal contour cutting and bending tool. It’s already functional, but we have to wait for the assembly of the rest of the tooling so that the holes of the MX switches will be cut, too.

sheet-metal-contour-cutting-and-bending-tools

And this is the injection molding tool of the case buttons which is also functional:

injection molding tool of the case buttons

We’re happy about the progress of our Serbian contractor and can’t wait to see even more hunks of steel.

The 6th generation PCBs are being fabricated

Lately, I’ve been working on redesigning the schematic and PCBs of our latest prototype. These are the fruits of my labor:

The back side of the right PCB

The back side of the right PCB

The back side of the left PCB

The back side of the left PCB

The improvements are plentiful, featuring:

  • the super powerful MK22FN512VLH12 and MKL03Z8VFK4 MCUs
  • IS31FL3731-SALS2 LED driver ICs per keyboard half allowing for per LED backlighting (we can’t provide LEDs and translucent keycaps yet but the ICs will be on board)
  • 2x5 0.05” ARM programming header + Tag-Connect TC2030-NL header + TC2030 header per board for extra developer goodness
  • optionally solderable reed switch per board to reset the MCU without disassembling the case to make it easy to hack the firmware even if jump to bootloader feature gets screwed
  • optionally solderable I2C breakout header for developing modules in a breadboard friendly fashion
  • optionally solderable test LED per board for debugging purposes
  • pogo pins and I2C (versus the previous UART protocol) between the keyboard halves enabling the use of modules mechanically and electronically

A small batch of these boards are being fabricated right now at Eurocircuits and can arrive in any moment. I’m also about to order loads of components real soon which will be soldered onto the boards. These PCBs are supposed to resemble the final production boards very closely, so we’ll make sure to give them a fair amount of testing.

If you are one of those people who grok electronics please don’t hesitate to check out our electronics GitHub repo and give us feedback about the schematic and boards. We consider every single suggestion as we really want to get the design right.

Progress on Agent

Agent has been heavily refactored lately as we port the legacy jQuery codebase to Angular 2 step by step. This is one of those things that’s hard to notice by looking the application but it’s very significant regarding the long-term development of Agent.

This brings me to the star of the month. Give it up for Mr Nejc Zdovc from the beautiful town of Celje, Slovenia!

nejc

My name is Nejc Zdovc and I have been programming for the last seven years. I have a Master’s degree in Computer Science and Information Technologies. I was drawn to Angular 2 community last year and ever since, I’ve enjoyed pushing its boundaries. At the beginning of this year, I was having wrist problems and that’s why I was looking for a new ergonomic keyboard. I stumbled on the UHK and, with a little research, I found out that this is an awesome project, so I decided to start contributing. For the last few months I have been helping József with Agent.

Nejc has been helping out a ton with the Angular 2 port. Previously, only keymaps were managed by Angular 2, but he made the whole application governed by Angular 2 by componentizing it. He ported the side menu to Angular 2 and wrapped select2 into a component. This is serious progress and requires a lot of dedication. The work is not over yet but his help has been a quantum leap forward.

You know what’s crazy? Nejc and Sam don’t have a UHK at their hands yet and still, their contribution has been above and beyond expectations. I wouldn’t have expected developers contributing substantially before we deliver the hardware, but apparently it’s already happening. This is Free and Open Source at its best, folks! I can’t even imagine what will happen after delivery. I’d love to see our GitHub repos blown away by contributors!

As a token of our appreciation, Nejc and Sam will get a well-deserved developer unit soon, then eventually a final UHK with all the bells and whistles. It’s really the least we can do for them.

We’ve just arrived to the end of this update. I hope you enjoyed it, and talk to you on 2016-08-18.

Tooling is progressing

Yet another month has passed by, and so it’s time for our regular monthly update. Let’s see what’s been going on!

The tools are in the works

On the 21st of May, we made a trip to Serbia to visit our contractor who is responsible for designing and machining the cutting tools for the steel plates and the molds for the plastic case.

As soon as they welcomed us to their facility, we were having a thorough conversation about the tools to be made. At this point, the cutting tools were already being manufactured and we had discussed all the small details about the molds so that they can start to manufacture them, too.

table-discussion

The participants of the conversation included the owner of the factory, his son, their chief mechanical engineer, our two consultants who have a vast amount of experience regarding plastic molds, András, and myself. Admittedly, I was the most clueless of the team given that I’m not a mechanical engineer. Still, what was said made sense to me even if I didn’t catch some details.

Then we hit their workshop to see the progress on the cutting tools for the metal plates in which the MX switches sit. I’m happy to report that they did not disappoint.

The parts of the cutting tools, take 1

The parts of the cutting tools, take 1

The parts of the cutting tools, take 2

The parts of the cutting tools, take 2

A part of the a cutting tool is being machined on an electrical discharge machine (EDM)

A part of the a cutting tool is being machined on an electrical discharge machine (EDM)

Our Serbian contractors have been making great progress. At this pace, they should finish with the cutting tools soon.

After touring their workshop and discussing everything there is to discuss, we hit the nearby pub and had a great conversation with the whole team. We discovered that they’re not only master craftsmen but great people. We are very pleased that everything’s on track, and it was very nice to get to know them personally.

Since our visit, they’ve also been making crazy progress with the molds. Check out the following picture. This was a block of steel when we visited them and now it’s rapidly taking shape.

The mold of a case button

The mold of a case button

Testing the mechanical prototype

We’ve assembled the 6th generation mechanical prototype with both MX switches and Matias switches. Here’s the Matias version.

Matias UHK prototype

Just to avoid any misunderstanding, we won’t be able to provide a Matias version anytime soon because we can’t source Matias keycaps yet, and additional tooling will have to be made. But we plan to provide Matias switches in the future so we want to future-proof the design.

Assembling the mechanical prototype was necessary to ensure that there is no mechanical interference at all. We’re happy to report that everything fits together very nicely, even despite the inaccuracies of 3D printing. This test ensures that the molds will have no issues when they’ll be made.

Kinetis PCB redesign

The PCBs are getting redesigned as we move from AVR microcontrollers to the insanely powerful NXP Kinetis platform. But as you may imagine it all starts with the schematic and here’s how the schematic of the left keyboard half looks like right now:

UHK PCB v6pre left schematic

Mad props go to the always awesome Mr. Jan Rychter for reviewing the schematic, catching a couple of issues, and providing valuable suggestions. According to Jan, schematics review is even more important in the hardware world than code review in the software world. I can certainly endorse his viewpoint, as you can always update software but you can’t magically rearrange the atoms of hardware once it’s made.

This is the semi-routed left PCB:

UHK PCB v6pre left semi-routed

This redesign is a major overhaul which is certainly quite disruptive, but the end is near, and the end result will be worth it. The schematic is almost finalized and then there’s some routing left to be done. I expect a couple of fully functional PCBs pretty soon.

Recent progress of Agent

We had a day long get together with Árpi and Józsi recently, to work on Agent. Data-binding is finally working for some key actions. If you select the factory keymap under the Keymaps-ng2 main menu item, then click on a key, and select a Layer action, a Keymap action, or a None action, and finally click on the Remap Key button, then the relevant key gets rendered accordingly.

So far so good! The UI will be a tad smoother than the current version, and every key action will be implemented soon.

Our site has been redesigned

We weren’t quite satisfied with our website, so we redesigned it. Now the UHK is presented the way it deserves. You’re welcome to head over to UltimateHackingKeyboard.com to check it out, and let us know what you think.

Thanks and congratulations for making it to the end of the post! Talk to you on 2016-07-14.

The mold design is almost finished

This is a beautiful day, as it marks our 5th post-campaign update, just as scheduled. Let's get right to it!

Our Serbian contractor is hard at work. So much so that they're almost ready with the design of the mold. We thought you'd appreciate a couple of CAD images, so here they are.

The mold for the top-left keyboard half

The mold for the top-left keyboard half

The mold for the bottom-left keyboard half

The mold for the bottom-left keyboard half

The mold for the case buttons

The mold for the case buttons

So far so good! They're pretty close to starting the actual manufacturing of the molds. We're visiting them in Serbia this weekend to discuss the last details of the molds before getting them manufactured.

Expect real life photos of hunks of steel in future updates.

Mechanically testing the 6th generation prototype

Due to the nature of mold making, it's critical to get everything from the beginning, because it's hard to go back. And what better way to test the design than to build an up-to-date prototype?

András has made some final changes to the case to make it accommodate Matias switches, not just Cherries. This 3D printed case has the same design as the mass-produced injection molded case will - apart from the vast difference in quality because 3D printing vs injection molded plastic are worlds apart in terms of quality and accuracy.

6th generation UHK case prototype, top view

6th generation UHK case prototype, top view

6th generation UHK case prototype, close view

6th generation UHK case prototype, close view

In the meantime, I've been busy updating our PCBs to correspondwith the new mechanical CAD files. The shape of the PCB should now be finalized, (including the positions of the mechanical components), but the electronics routing has yet to be fully redesigned. Let's see the fruits of my labor.

The panelized PCB

The panelized PCB

Once the PCBs are depanelized, and some components soldered in, it starts to resemble the UHK much closely.

The depanelized PCBs with all the mechanical components (but the switches) soldered in

The depanelized PCBs with all the mechanical components (but the switches) soldered in

I’m especially pleased with the way the pogo pin connector turned out. This connector has a crucial role in interconnecting the keyboard halves with the modules. The new solution features 2.5mm-thick PCBs perpendicularly soldered onto the main PCBs. Pogo pins are stuck through the male PCB, and flat pads are featured on its female counterpart. The new design is a lot more robust and pleasing to the eye than the previous battery spring connector.

The male and female pogo pin connectors

The male and female pogo pin connectors

This mechanical PCB is useful without the electronics because it allows for mechanical testing. The schematic is being updated from AVR to the Kinetis platform, and as soon as it gets done, the PCB will be rerouted, fabricated, and tested.

We have almost finished creating a Cherry and a Matias mechanical UHK prototype, but we're waiting for the new metal plates to arrive to finish them off.

Our GitHub repos are on fire

Since our previous status update, a whopping 222 commits have landed in our GitHub repos! Now that's what I call true teamwork! This leads me to some much deserved words on our newest contributor!

Let me introduce Mr. Samuel Rang!

SamHello everyone!

I'm Sam Rang, and I've been helping out with the serialization and deserialization of configuration files for Agent. I am a graduate of Duke Engineering with a degree in Computer Science and Electrical & Computer Engineering, and work for Red Hat Consulting. I am a big mech keyboard nut (much to my fiance's chagrin) and was really excited when I heard about this project and that excitement is still going strong! I'm so glad that the team has let me in and I'll keep contributing as long as they let me.

Sam got in touch with us about a month ago. He asked me what could he contribute. It was quite a challenging question because Agent is in heavy flux at this point, and isolating a discrete part that can be worked on is far from trivial. But I found something: the configuration serializer.

That's why I was working so heavily on the serializer a month before: to lay down its foundation and hand it off to Sam. And boy, did he deliver! He went berserk and ended up implementing all the 37 classes to be serialized.

Sam is still working on Agent a bit, then he'll put on his firmware hacker hat, and implement the configurator deserializer of the firmware. What a journey it will be!

In the meantime, Józsi is on a mission to put the Angular 2 application logic behind Agent, making it not only beautiful, but also functional. At this pace, you'll be able to get stuff done with Agent by the next month.

Árpi is continuing to refine the frontend of Agent until perfection is attained. He's pretty close to finishing the keymap editor, and then he'll transition to other parts of Agent. He's just pushed the latest and greatest version of Agent to GitHub Pages, so be sure to take a look at it!

And that's it, Ladies and Gents! Excited to talk to you again on 2016-06-16!

2nd UHK post-campaign update: PCB design now supports LEDs and Matias switches

Time flies! We promised to touch base every month - so let’s get right into what we’ve been working on!

The mechanical design is being sent to manufacturing

András has been having his fair share of CAD-filled days lately, and as a result we’re days away from sending the design of the case off to manufacturing. He’s made a million little tweaks and a couple of more significant changes.

Foot design - adjustability and portability

The fixation mechanism of the feet is definitely a major one. We brainstormed foot design ideas for a while, and finally found the best option. To keep the UHK as compact as possible, it will feature adjustable (flip open) feet that are entirely removable in addition to the small, flat rubber feet. This way if you decide not to use the adjustable feet, they won’t occupy any extra space. And if you do want them, they can be easily installed with 3 screws per foot. Once you do, you’re able to flip them open in a moment. The current design allows for positive tiling, negative tilting, and tenting - The best of every world! András has yet to finish the design of the adjustable feet so stay tuned for more news.

8 feet in total, 3 mounting holes around individual rubber feet
8 feet in total, 3 mounting holes around individual rubber feet
Mounting bosses - 3 per foot, as seen from inside the case
Mounting bosses - 3 per foot, as seen from inside the case

PCB design - LEDs and Matias switches

We’re also stoked about having added pins for LEDs and Matias switches! We use universal switch footprints that combine the pins of Cherry switches (optionally with fixation pins), Matias switches, and LEDs. We designed the stiffening ribs of the bottom case in a future proof manner by routing them around the hybrid switch footprints to avoid mechanical interference. Please note that we won’t be able provide either an LED, or a Matias UHK version for a while, but the opportunity will be there for modders. You can see the pins on the following section view.

Back section view

Physical layout - finalized

Another major change is the finalization of the physical layout. Fear not, you shouldn’t even notice the subtleties if you aren’t watching very closely. Space and Mod has been split right where the G and H keys meet. This is the best option ergonomically, as it’s right between the hands of touch typists. This gave us an opportunity to use more standard keycaps so those of you who want to replace keycaps will be in a better situation. Lo and behold, our final ANSI physical layout:

UHK ANSI layout

And the ISO version:

UHK ISO layout

Funny thing is, poor András has been working day and night to implement this seemingly small change, as it affected the geometry of the CAD model in major ways. He definitely deserves a day off... only to work even harder as we march towards manufacturing!

Speaking of the above, I’ve created a dedicated layouts and keycaps FAQ page on our site lately, and while being there also spruced up the main FAQ quite a bit to satisfy your endless curiosity.

The state of the ARM port

In our previous update we were looking for a firmware developer to port our existing firmware to NXP’s Kinetis platform and develop it further. We’ve been getting quite a few impressive applications and suggestions.

Say hi to Mr. Jan Rychter, who has been eager to help us, and offer his very valuable advice. Since first contact we’ve been exchanging emails full of geek talk. And did I mention that he’s also a most esteemed backer of the UHK?

Jan got me up to speed in no time. As it turned out, Teensyduino is not the best foundation for a serious firmware application. It’s nice for prototyping purposes but NXP’s sophisticated Kinetis SDK is a much better platform for this purpose.

Unfortunately, the MK20DX256VLH7 processor that we originally planned to use is not a good choice because KSDK won’t ever target it. As crazy as it might seem, there’s a more powerful, fully supported, and cheaper alternative on the market: the MK22FN512VLH12.

How powerful and cheap, you ask? Let’s compare!

Processor name ATmega32U4 MK20DX256VLH7 MK22FN512VLH12
Processor core AVR8 ARM Cortex-M4 ARM Cortex-M4
Rated speed 16 72 120 Mhz
Flash memory 32 256 512 kbytes
RAM 2.5 64 128 kbytes
Price 3.6 4.55 4.04 US Dollars

Mind blown. Twice the power for less price? I’ll take that on any day of the week!

Right now, there are a couple FRDM development boards on my table, one of which running our Kinetis firmware port which enumerates as a keyboard + mouse USB device. This is already looking great, and you can expect further major progress shortly, so the port is definitely within reach, and I’m happy taking this direction.

Agent is coming along nicely

Árpi is on a mission to make Agent the most beautiful keyboard configurator application ever crafted. He never ceases to amaze me as he massively cleans up the UI of my original mockup while keeping the original functionality intact. This is the most up-to-date screenshot of Agent:

Agent with final side menu

You’re welcome to check out Agent in the browser. Please note that there’s only a minimal UX code behind the UI, but it should give you a good idea about the final interface.

Thanks for reading, and talk to you on 2016-03-17!

Agent is coming together, looking for a firmware developer!

A month ago in our previous newsletter we promised to send you an update on the post-campaign happenings on January 14th, so here it is! There is a lot of ground to cover, so fasten your seatbelts and we’ll get right to it!

Extra keyboard cases & keycap sets are for sale

UHK cases

Some of you contacted us to purchase extra keycap sets and cases, and we’ve been very much willing to serve your needs, so why not offer them as extra perks? You’re welcome to purchase them on our campaign page.

Meet Agent, the configuration application for the UHK

UHK Agent main window

We’re proud to show you the first screenshot of Agent, our cross-platform configuration application. It’s being developed by Árpi, a new developer of ours. Please keep reading for more.

The mechanical design is being finalized

András is hard at work finalizing the mechanical design of the keyboard case. Mold making is by far the most time consuming task of the manufacturing process, so it’s supremely important we start as quickly as possible in order to deliver on time.

We’ve already struck a deal with the manufacturing firm for the injection molding tool for the plastic case and the cutting tool for the steel plates, and we’re in the process of discussing relevant design issues with them. Sourcing of the raw material for the steel guides is also in progress - from a well-esteemed Austrian company.

From the very beginning, we’ve been mindful to design the UHK for manufacturing, but there are some details yet to be finalized. One such detail is the connection between the two halves and the modules.

pogo-pins

Originally, we used a battery connector because it was easier to use an off-the-shelf part - but later we figured out a much better way: dedicated pogo pins. This is a more robust and better looking solution than the battery connector. The 6P4C connector was also replaced by a 4P4C connector and its wiring has been reversed. This way a standard telephone cable can be used to interconnect the two keyboard halves.

There are a couple of details like the above, and András is rapidly moving forward to address them, so that we can submit the CAD files to manufacturing as soon as possible.

Two developers have joined to our ranks

Árpi

Back in August we were contacted by Árpád Csányi, who expressed interest in the UHK. Fast-forward to November, and we managed to meet in person over a couple of beers after I gave a talk on the UHK in Szeged, Hungary. It was apparent that he was interested in the project, but I wouldn’t have thought in my wildest dreams that he’d end up being the front-end developer of Agent, our configuration application! Árpi is not only a powerhouse of UI/UX ideas, but he’s very much willing and able to implement them.

After I created some mockups of Agent he quickly followed up to present his ideas and improvements. He then started to write HTML and CSS to make the mockups go alive! We’re making rapid progress and are aiming to freeze the UI/UX specification of Agent by the end of January.

Please note that these mockups are a work in progress but you’re welcome to add your suggestions to the docs. Don’t forget to uncheck the View -> Print layout option in Google Docs or else some pictures will be cropped.

Spencer

Right after open-sourcing our design a, mysterious GitHub user started contributing to our electronics repo. Say hi to Mr. Spencer Owen, who is very much into devops and using his rad skills, he set up a visual diff mechanism in our electronics repo, so that now we can actually see the changes of the circuit boards that get modified by contributors. This is very much needed because unlike plaintext files, circuit boards can’t be diffed in the traditional way.

Right now Spencer is working on making the PCB compatible with Matias switches. Due to the lack of compatible keycaps, this doesn’t mean that we’ll be able to provide Matias switches from the get go, but we’re trying to future-proof the PCB so that the opportunity will be there, and eventually we can make it happen.

Moving to ARM, and looking for a firmware developer

It’s been a pleasure and privilege to work with Árpi and Spencer and I’m very much looking forward to further expand our team. It may surprise you, but we’re not actually primarily looking for an AVR developer. We’re looking for an ARM Cortex-M4 developer! Why’s that? Let’s consider the following table:

Processor name ATmega32U4 MK20DX256VLH7 Units
Processor core AVR8 ARM Cortex-M4
Rated speed 16 72 Mhz
Flash memory 32 256 kbytes
RAM 2.5 64 kbytes
Price 3.6 4.55 US Dollars

The above numbers are pretty telling. The ARM processor costs only a buck more than the AVR but it’s about 10 times more powerful! The plan is to replace the AVR on the right keyboard half with ARM, and keep using AVRs in the left keyboard half and in the modules - which don’t need as many resources as the right half.

We could possibly stick to the ATmega32U4 and implement the planned feature set, but the available 2.5 RAM is very tight. It’d require us to always think about how to not exceed memory and vastly optimize the firmware for memory consumption. This would slow down development and wouldn’t give us room to implement more sophisticated features later on. Bulkier AVRs are moderately more powerful and considerably more expensive, so I truly believe that ARM is the way forward.

It’s also very important to note that the MK20DX256VLH7 is not just another ARM microcontroller, but the brain of the Teensy 3.1 and 3.2 development boards. This is great news because there’s a huge amount of support available out there!

Are you familiar with the Teensy 3 platform, or do you know somebody who is? Do you enjoy the thrill of Open Source? Would you love to work on a one-of-a-kind mechanical keyboard, and help push innovation further? If so, we’d love to have you on our team!

What’s next?

We’re making rapid progress on multiple fronts, but there’s still a lot to do! We plan to finalize the UI/UX specification of Agent by the end of January. I’m sure that we’ll have a lot to talk about in our upcoming updates.

Thanks for reading, and talk to you soon - on February 18th!

Reddit AMA (Ask Me Anything) Top Questions

Reddit mascot holding the UHK

Thank you everyone for participating in the Reddit AMA! You’ve asked loads of thoughtful questions, so I thought I’d share some of the particularly interesting ones.

Q: Will you offer alternative keycap printing other than QWERTY? Like country-specific prints or Dvorak / Colemak?

A: Andras is currently looking into the possibility of offering fully custom keycap printing. If we can make it happen, then we’ll send out an update and you’ll be able to update your order accordingly. If this is an option, we may also be able to create layout design software, allowing you to design your own keycap printing layout!

Q: Assuming everything goes good with the Crowd Supply stuff and so on, i.e. everything goes according to plan and all the backers receive their keyboards in July\August some time, then what? What are the plans further, if you actually have made any yet, that is :) What I’m most curious about here, is, when I get my keyboard, and presumably love it, I will definitely want one or two more, any idea when that will that be possible?

A: There’s no shortage of plans. :)

After shipping every unit in July, we plan to spin up production so you’ll definitely be able to order some more UHKs / modules pretty quickly.

Going forward, we plan to design other UHK variants of different shapes and sizes based on our unique hardware-software architecture. We also plan to design additional modules based on community feedback and demand.

Q: What are your thoughts about alternative split keyboards? What do you think the UHK does better, other than the extension modules?

A: I believe that the UHK has a couple of benefits compared to other split keyboards, apart from the extension modules:

The UHK is very compact, especially for a split mechanical keyboard, enabling you to easily carry it around.

The UHK is modular and extensible. I don’t only mean the modules but the whole design from the ground up. For example, the palm rest is also an optional accessory. You can even use the stainless steel inserts on the back of the UHK to mount it to your armchair or almost any object.

The UHK uses a sophisticated protocol to communicate between the keyboard halves and the modules, making it quite advanced compared to other keyboards. Imagine using our configuration application, then merging and splitting the halves, adding and removing modules and witnessing these actions happening visually in the configuration application real-time. Then you can click on the trackball module for example and adjust its pointer movement speed.

When you reconfigure other keyboards, you generally reflash the whole firmware of the keyboard. The UHK implements a custom protocol and uses an internal EEPROM for storing configuration data. I think our approach is beneficial because we don’t need a compiler toolchain to produce the firmware, just an application that speaks the protocol. It’s also faster to transfer the updated configuration, and it’s possible for the configuration software the read the configuration from the EEPROM. Reconfiguring the UHK is a one-click action, instead of using an external web configurator, then downloading a firmware, then uploading it to the keyboard with another application.

Q: I’m very excited to hear that you’re going open source. What was the biggest influence on that decision?

A: Being a Linux user and software developer, open source is very natural to me. On top of that, I’ve had various negative experiences with closed products. One of my routers didn’t allow me to use a 3rd party dynamic DNS providers that would be trivial to script if I had shell access. Then my sister bought a DVD player, the subtitle fonts were too damn small and there was no way to enlarge them. We’re surrounded by devices driven by general purpose processors that’d enable us to do pretty much anything with them, but if the firmware / software / protocols are closed then we’re disabled to improve / customize these devices. I’d hate to disable people by building yet another black box.

Q: How are you guys combining this with your "real" job? Maybe you do this full time, or do you plan to in the near future? Good luck with the project. Can’t wait to get mine.

A: I was working as a freelance software developer for various companies over the years, and Andras has a family business going on. It was originally super challenging to develop the UHK due to the lack of free time.

Starting from 2015 September, I cancelled my freelancing gig in order to prepare for the campaign. Andras also started to put more and more resources into the project, and development significantly accelerated.

Going forward, I’ll be working on the UHK full time by earning the absolute minimum required until we grow. Andras will also handle the project as his number one priority after the campaign. Full time is the only way at this point to create a truly exceptional product and deliver on time.

Q: Will there be a DIY version any time soon? I guess there must be more keyboard hipsters like me who have their exotic choice of lubed MX switches with custom springs laying around so a DIY version would be easier to assemble (rather than desoldering the stock ones) and also would cost a little bit less.

A: We’ve actually already had a backer who wanted his UHK without switches and without the case. Being quite DIY-friendly, we offered him such a version at a reduced price point and he took the offer.

I think we’ll offer assembled PCBs forever, but bare, unpopulated PCBs are not planned. Given the potential errors in assembly, customer support would likely be too crazy.

That’s it for the top AMA questions! But if you have any that have remained unanswered, please ask!

The UHK modules and palm rest are for sale!

The UHK with palm rest

Good news, everyone: From this moment on, every one of the 4 originally suggested modules, along with the palm rest, are available for purchase! Here’s the full list of new perks to purchase:

  • a module for $50
  • 2 modules for $80
  • 2 modules and 1 palm rest for just $100
  • 1 palm rest for $30

We will cover shipping costs for the modules, so there is no additional fee for you!

Plus: the first 100 people to get modules will enjoy special early-bird pricing, so get yours now!

None of these perks are stretch goals. As it turned out, the tooling costs of these additions are fairly reasonable - so we wanted to make them immediately available to you.

Module poll results

UHK modules stats

We included a poll in the previous update, and according to the results, you were super eager to participate. Here are the results as we are writing this message:

Our main goal behind running a poll was to find out if there were any modules that people just didn’t really want. But according to the results, each module has a healthy demand! This gives us good reason to make every one of them.

Most of you opted for a key cluster, which is reasonable because it’s the only left-handed module, and it complements any of the others quite nicely.

Most popular questions

There was a comment field in the poll which you’ve made a good use of. When the comments started to flow in, I diligently wrote response emails to all of you, one by one. But I quickly realized that it’s a fight against windmills, and I’m simply not able to keep up with the heavy flow of seemingly endless comments.

So I decided to extract the most popular thoughts into the following FAQ to address them. If these FAQ entries don’t cover your own question, and you still didn’t receive an answer from me, then you either didn’t specify your email address or you’re one of the 5 people whose email requires further, longer discussion and I haven’t answered yet.

Q: The trackpoint needs to be up by the Y/H keys, not down by the N/Space.

A: Believe it or not, we found only a single kind of trackpoint module in all of the Internet. This trackpoint sits in the middle of a 3x3 cm sized printed circuit board, so not only we can’t put it near the Y/H keys but we can’t even move it higher because the stainless steel guides that hold the module and the keyboard together are in the way.

Q: Is there an option to make the pointer modules attach higher, roughly between g and h keys, so that they could be easier to reach with the index finger as opposed to the thumb?

A: In most cases, this is not possible because, again, the stainless steel guides that hold the module and the keyboard together are in the way. It’d also make the modules very bulky because they connect electrically via the bottom connectors of the UHK so the module would have to stretch all they way down.

Q: Is the touchpad multi-touch capable?

A: Unfortunately, it isn’t. A while back, I contacted with Synaptics, another huge multi-touch touchpad manufacturer. When I asked for their datasheets, they wanted me to sign an NDA (non-disclosure agreement). I didn’t want to corrupt the open source spirit of the UHK, so I refused. Based on your comments, I’m sure that many of you feel the same way. If any of you know a multi-touch touchpad manufacturer who doesn’t insist on NDAs, then please get in touch with me and I’ll contact them.

Q: Can

[your favorite module] be switched from moving the pointer to scrolling by keeping another key pressed?

A: Yes, this will be possible. You’ll be able to specify a set of layer switcher keys (of Mod, Fn, Mouse), and keeping one of those key pressed will activate the non-default mode of pointer modules (moving vs scrolling). You’ll also be able to specify the default mode for each module, of course.

Q: Is it possible to right click and scroll with the touchpad alone?

A: Yes! By default, these features are supported out of the box. The upper right region of the trackpad emulates right click. There’s also a scroll zone on the right side and an outer drag and drop zone.

Q: Is there a way to design these modules to plug into either half of the keyboard? Currently, it looks like each given module will only work with one half (for instance, the trackpoint only docks on the right half).

A: It’s possible to design the trackball, trackpoint and touchpad modules to be both-sided but that’d make them very bulky and unappealing, so we decided against it. We’d like to make other-sided modules available at some point in the future.

Q: I’d like to have extra buttons on the trackball / trackpoint module.

A: We’ll try to add 2 buttons to these modules, but we’re not sure whether there’ll be enough space for them. We’ll keep you updated on this.

Q: I worry about the ergonomics/usability/quality of [your favorite module].

A: We’re very serious about these issues. We’ll get all modules tested by many of you backers, and iterate accordingly to make sure that ergonomics/usability/quality is up to very high standards. The ergonomics and shape of the modules are not finalized yet.

Q: Will the modules be compatible with the palm rest?

A: Yes!

Q: Will 3rd parties be able to make and sell their own modules? Open API, 3D-printable CAD data, and easy-to-buy connectors are really expected for 3rd party module developers.

A: The answer is yes to all of the above. We’d love to see more modules and empower the community to make them!

Suggested modules

You were really creative when it comes to new module possibilities. Here are some of the suggestions:

  • LED/LCD display
  • USB hub
  • Fingerprint scanner
  • Analog joystick
  • 8-way directional thumb-pad
  • NFC module
  • Wireless charger
  • Motion sensor like Leap Motion or Project Soli

Not all of these modules are feasible - only low-bandwidth (no more than 10-100 kbps) and low-power (no more than tens of milliamps) modules can be implemented. This means that the USB hub, the NFC module, and the wireless charger are out of question. And I’m not sure how bandwidth-intensive the fingerprint scanner is. The rest should be feasible, I believe.

We’re super stoked about all the extra perks, so now is the time to make them come to life!

If you have any questions, please ask us!

Introducing UHK modules!

The UHK with modules

The key design principles of the Ultimate Hacking Keyboard are productivity and ergonomics. Over the past 4 weeks the UHK has taken the Internet by storm - proving that our philosophy is on-target. The encouragement we got led us to announce something nobody else has done before.

To take productivity and ergonomics even further, we’re excited to introduce modules to the UHK. A video shows so much more than I could ever tell:

As far as we know, this is the first time anyone has created a truly extendable keyboard - and it really opens up a whole new realm of possibilities. Let’s take a closer look at the modules featured in the video.

UHK key cluster module

The key cluster module features 3 regular keys, 2 buttons and a mini trackball which can also be pressed - acting as an extra button.

In-line with the UHK itself, all of these keys and buttons are fully programmable, and you’ll even be able to configure whether you want the trackball to move the pointer or scroll in documents.

Moving vs scrolling is not only configurable for the key cluster module, but for every other module featured below! The modules can be used in conjunction with each-other, so personally, I’d use the mini trackball of the key cluster for scrolling and one of the modules below to move the pointer.

UHK trackpoint module

The trackpoint module surely brings back fond memories for those of you who have owned an IBM ThinkPad laptop in the past. With it, you can not only move the pointer, but click by pressing it.

UHK touchpad module

The touchpad module shouldn’t be stranger to anyone, given that it’s a part of pretty much every laptop and netbook ever manufactured. This module takes it to another level by placing the touchpad where it’s easier to reach - right at the middle of the keyboard. Of course, you can emulate clicking with a simple tap.

UHK trackball module

The trackball module features excellent precision and usability and is well-suited to be used by a thumb.

The UHK is an extensible platform

I cannot emphasize enough that the UHK is a truly extensible platform. In addition to the above modules, we plan to design and manufacture countless others in the future. But we at UGL shouldn’t be the only people able to make new modules.

Just as promised, we’ll open-source the firmware, the electronics and the host-side software. We’ll also extensively document the protocol via which the modules communicate with the keyboard and publish the 3D files that enable you to design new modules yourself. We even use I2C as the basis of our protocol, enabling crazy stuff like chaining multiple modules, or creating submodules of modules.

I personally get all excited when thinking about the range of possibilities. Wanna build a scroll wheel, or a joystick module? How about a mouse sensor that would make the UHK slide and act as a mouse? The possibilities are truly endless!

Which modules do you want?

uhk-modules

So which modules should we start with? You tell us! We’re interested in your preferences and opinions. Given enough interest, we may end up manufacturing every one of the above modules during the campaign.

Even though there are standalone pointing devices with which you can both move the pointer and click, we recommend using 2 modules for improved productivity. That’s because even though you can emulate left click with the trackpoint, drag and drop is a pain and you can’t emulate multiple buttons. The thumb cluster provides you all the 3 mouse buttons, drag and drop becomes easier and you can configure its small trackball to scroll instead of moving the pointer. Basically, you can offset the downsides of any pointing device simply with another module!

Just to avoid any misunderstandings, we want to make clear that the key cluster module mounts to the left keyboard half, and the rest of the modules mount to the right keyboard half. Although it’s possible to design both-sided modules, such modules would be more bulky so we’d rather not make the sacrifice. Over time, we may end up designing both left-handed and right-handed versions of these modules. It all depends on your level of support.

The modules that get chosen will be made available for purchase on Tuesday. The expected price is around $50 per module but we’re planning to offer some good deals if you choose at least 2 modules.

The tale of 5 prototypes

Semi-assembled UHK prototype

You purchase the gadget of your dreams and open the box with excitement - it’s beautiful, functional, well-designed and puts a smile on your face. It’s hard to imagine that at one point, your gadget was nothing more than a big mess of wires. The final product has come a long way, and in many stages, from wires to being ready for a campaign.

Engineers shed blood and tears working out endless technical challenges all for the sake of a fully functional and reliably working prototype. This is our condensed story of trials and tribulations.

Prototype 1

The basic goals were clear - build a truly split, compact mechanical keyboard that merges as one piece. This is a good start, but still pretty vague. So it’s not surprising that our first prototype ended up like this:

UHK prototype 1

As you can see, we were flirting with the idea of building a USB hub into the UHK, which was ditched later on because of the lack of space. Small Molex connectors were used to connect the two keyboard halves, which saved space but they lacked robustness and repeatability, so they had to go.

The above PCB (printed circuit board) didn’t have any wires, so it wasn’t functional by any means. We really just wanted to get an idea how the keyboard would look. Making the electronics work started on a breadboard like this one:

The UHK on the breadboard

The development boards at the bottom are the brains of the left and right keyboard halves. The buttons above them implement a 2x2 key matrix, yielding 4 keys per keyboard half. The boards are connected by a wire, making the left board able to send key press and key release events to the right half. The massive board at the top is an Open Bench Logic Sniffer, enabling me to see the communication between the two boards for troubleshooting purposes.

Prototype 2

Finishing the electronics breadboarding, it was time to turn the wires into traces on a PCB to have a functional prototype. This time, we tried a retractable S-Video cable to connect the keyboard halves. The bulkiness of the plugs is obvious, but what you can’t tell is their lack of reliability. 3 LEDs were used per keyboard half to display status information just because it was a simple solution to implement at that time.

UHK prototype 2

Prototype 3

With the PCB started, it was finally time to come up with the final shape of the UHK and get its case 3D printed. On the following picture, the left half was printed using an EOS SLS (selective laser synthesis) machine and the right half was printed on an Objet polyjet. Unlike the left half, the right half is painted and polished. We ended up using SLS for our prototypes because even though it has lower resolution than polyjets, its shape reflects the shape of the CAD model more accurately, and its mechanical qualities are better. This time we switched to an RJ11 retractable cable, which is a lot less bulky than the previous S-Video cable - but it turned out to be similarly unreliable.

UHK prototype 3

Prototype 4

Apart from fixing a lot of errors on the PCB, we added stainless steel inserts to this prototype, letting users to mount the keyboard halves onto many objects. The other day, a disabled person emailed us who will use the inserts to mount the keyboard halves onto his armchair. We’re very glad that our keyboard supports such scenarios out of the box.

At this point, we realized that retractable cables of all kinds are supremely unreliable, and only a cord cable would do the job.

The back of the left keyboard half

The inclusion of stainless steel inserts reshaped the contour of the PCB quite a bit, as you can see below:

UHK prototype PCB

Prototype 5

Our last generation prototype featured only very minor improvements to the PCB. We also found a super talented professional who polished and painted the 3D printed case to make it resemble the final look of the injection molded plastic case.

During the course of working on the UHK, we put more than 10,000 hours into it, and failed numerous times. Every failure taught us a lesson - a way to do something better. There is an industry term called MVP, which stands for Minimum Viable Prototype. The UHK is already far beyond this point.

UHK prototype 5

The prototyping is done, but it’s not quite the end of the story. We have yet to unveil some one-of-a-kind, game changing addons. Stay tuned!

Ultimate configurability

Many of you have asked us to talk more about the various ways in which the UHK can be configured. It’s certainly not a trivial matter, so let’s take a detailed look.

To explain configuration as precisely as possible, we should start by examining the exact definition of a key.

UHK key IDs

It’s actually pretty misleading to describe keys by their standard function (the Tab key, the Backspace key, “A”, etc.). A better way to talk about keys is using their explicit location, like A1, B5, or C10 (see above graphic).

This is because a key like Backspace is really just a scan code that the keyboard sends to the host computer. On the UHK any of these scan codes can be triggered by any of the keys. So using the base layer, the following correlations are made:

  • A14 yields Backspace
  • B1 yields Tab
  • C2 yields letter “A”

But what are layers? A layer binds actions to keys and 4 layers compose a keymap. Let’s visualize the 4 layers of the factory keymap.

UHK layers

Given the above, in a way, the UHK is not 1 keyboard but 4 keyboards right on top of each one another. “But how can I move across layers?” - you may ask.

Layer switcher keys to the rescue! Let’s see the default ones.

UHK layer switcher keys

While keeping a layer switcher key pressed, the relevant layer gets activated - and as soon as you release it, the base layer becomes the active one again. It’s that simple! (Of course, with the UHK, you can make any key a layer switcher key)

As mentioned above within a layer, keys are mapped to actions. But there various kinds of actions. 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, additional, modifiers. So the single keypress can also emit shortcuts like Left Alt + Tab. 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. (We may add a user-specifiable interval for the latter case so no accidental keypresses will be emitted.)

A mouse action is one of movement {left, right, up, down}, scrolling {left, right , up, down}, or clicking {left, middle, right}. The mouse layer of the factory keymap contains every one of these sub-actions intuitively laid out.

UHK mouse keys

A macro action is composed of a sequence of key actions, mouse actions and delays. It will also have a loop flag which will loop the macro until the associated key is pressed.

A keymap switcher action switches to the specified keymap. This allows you to make many different keymaps, each for their own use-case.

When you make your configuration comprised of keymaps of layers of actions, it’s all saved right in the UHK’s on-board memory. So when you plug it into another computer, your configuration remains intact! The on-board EEPROM has enough to store a very large amount of configurations.

There are even more parameters that you can control with the UHK, like maximum speed and acceleration of the mouse pointer.

As you can see, you are given a lot of freedom configurability-wise. And with this freedom comes the chance that you can screw up your own keymaps! But fear not, that’s exactly why there’s a factory reset switch on the back on the UHK which you can press with a toothpick. No worries, this won’t erase your configuration, merely restore the factory keymap.

That’s it! Hopefully, I was able to clear up any questions you may have had about UHK configuration functionality.

Title