The A to Z of Building Your Own Keyboard

We’ve featured a number of people who’ve taken the plunge and created their own customized keyboard; at this point it’s safe to say that there’s enough information and source code out there that anyone who’s looking to build their own board won’t have much trouble figuring out how to do so. That being said, it’s nice to have a comprehensive at a process from start to finish. Why sift through forum posts and image galleries looking for crumbs if you don’t have to?

That’s precisely what makes this write-up by [Maarten Tromp] so interesting. He walks the reader through every step of the design and creation of his customized keyboard, from coming up with the rather unique layout to writing the firmware for its AVR microcontroller. It’s a long read, filled with plenty of tips and tricks from a multitude of disciplines.

After looking at other custom boards for inspiration, [Maarten] used OpenSCAD to create a 3D model of his proposed design, and had it printed at Shapeways. His electronics are based around an Atmel ATMega328P using vUSB, and Microchip MCP23017 I/O expanders to connect all the keys. He wrapped it all up by designing a PCB in gEDA PCB and having it sent off for production. As a testament to his attention to detail, everything mated up on the first try.

[Maarten] is happy with the final product, but mentions that in a future revision he would like to add RGB lighting and use a microcontroller that has native USB support. He’d also like to drop the I/O expanders and switch over to Charlieplexing for the key matrix.

From uncommon layouts to diminutive technicolor beauties, it seems there’s no end of custom keyboards in sight. We aren’t complaining.

Sonar in Your Hand

Sonar measures distance by emitting a sound and clocking how long it takes the sound to travel. This works in any medium capable of transmitting sound such as water, air, or in the case of FingerPing, flesh and bone. FingerPing is a project at Georgia Tech headed by [Cheng Zhang] which measures hand position by sending soundwaves through the thumb and measuring the time on four different receivers. These readings tell which bones the sound travels through and allow the device to figure out where the thumb is touching. Hand positions like this include American Sign Language one through ten.

From the perspective of discreetly one through ten on a mobile device, this opens up a lot of possibilities for computer input while remaining pretty unobtrusive. We see prototypes which are more capable of reading gestures but also draw attention if you wear them on a bus. It is a classic trade-off between convenience and function but this type of reading is unique and could combine with other bio signals for finer results.

Continue reading “Sonar in Your Hand”

Trackball Gets Bolt-On Button Upgrade

The question of whether to use a mouse versus a trackball is something of a Holy War on the level of Vi versus Emacs. We at Hackaday want no part of such things, use whatever you want, and leave us out of it. But we will go as far as to say that Team Trackball seems to take things mighty seriously. We’ve never met a casual trackball user: if they’ve got a trackball on their desk then get ready to hear all about it.

With that in mind, the lengths [LayeredDesigns] went to just to add a couple extra buttons to his CST trackball make a bit more sense. Obviously enamored with this particular piece of pointing technology, he designed a 3D printed “sidecar” that you can mount to the left side of the stock trackball. Matching the shape of the original case pretty closely, this add-on module currently hosts a pair of MX mechanical keys, but the plans don’t stop there.

[LayeredDesigns] mentions that all the free room inside the shell for this two-button modification has got him thinking of what else he could fit in there. The logical choice is a Teensy emulating a USB HID device, which could allow for all sorts of cool programmable input possibilities. One potential feature he mentioned was adding a scroll wheel, which the Teensy could easily interface with and present to the operating system.

We’ve seen our fair share of 3D printed keyboards and keyboard modifications, but we can’t say the same about the legendary trackball. Ones made of cardboard, sure. Pulled out of a military installation and hacked to add USB? You bet. This project is just more evidence of what’s possible with a 3D printer, a caliper, and some patience.

[via /r/functionalprint]

Chromebook Trades Camera for WiFi Freedom

There are a number of companies now providing turn-key computers that meet the Free Software Foundation’s criteria for their “Respects Your Freedom” certification. This means, in a general sense, that the computer is guaranteed not to spy on you or otherwise do anything else you didn’t explicitly ask it to. Unfortunately these machines often have a hefty premium tacked on, making it an unpleasant decision between privacy and performance.

Freedom-loving hacker [SolidHal] writes in to tell us about his quest to create a FSF-compliant laptop without breaking the bank. Based on a cheap Asus C201 Chromebook, his custom machine checks off all the appropriate boxes. The operating system was easy enough with an install of Debian, and the bootloader was rid of any Intel Management Engine shenanigans with a healthy dose of Libreboot. But there was one problem: the permanently installed WiFi hardware that required proprietary firmware. To remedy the issue, he decided to install an internal USB Wi-Fi adapter that has the FSF seal of approval.

As the Chromebook obviously doesn’t have an internal USB port, this was easier said than done. But as [SolidHal] is not the kind of guy who would want his laptop taking pictures of him in the first place, he had the idea to take the internal USB connection used by the integrated webcam and use that. He pulled the webcam out, studied the wiring, and determined which wires corresponded to the normal USB pinout.

The FSF approved ThinkPenguin Wi-Fi adapter he chose is exceptionally small, so it was easy enough to tuck it inside some empty space inside of the Chromebook. [SolidHal] just needed to solder it to the old webcam connection, and wrap it up in Kapton tape to prevent any possible shorts. The signal probably isn’t great considering the antenna is stuck inside the machine with all the noisy components, but it’s a trade-off for having a fully free and open source driver. But as already established, sometimes these are the kind of tough choices you have to make when walking in the righteous footsteps of Saint Ignucius.

Internal laptop modifications like this one remind us of the Ye Olden Days of Hackaday, when Eee PC modifications were all the rage and we still ran black and white pictures “taped” to the screen. Ah, the memories.

A Custom Keypad with Vision

A combination of cheap USB HID capable microcontrollers, the ability to buy individual mechanical keys online, and 3D printing has opened up a whole new world of purpose-built input devices. Occasionally these take the form of full keyboards, but more often than not they are small boards with six or so keys that are dedicated to specific tasks or occasionally a particular game or program. An easy and cheap project with tangible benefits to anyone who spends a decent amount of time sitting in front of the computer certainly sounds like a win to us.

But this build by [r0ckR2] takes the concept one step farther. Rather than just being a simple 3×3 keypad, his includes a small screen that shows the current assignments for each key. Not only does this look really cool on the desk (always important), but it also allows assigning multiple functions to each key. The screen enables the user to switch between different pages of key assignments, potentially allowing a different set of hot keys or macros for every piece of software they use.

The case is entirely 3D printed, as are the key caps. To keep things simple, [r0ckR2] didn’t bother to design a full enclosure, leaving all the electronics exposed on the back. Some might think it’s a little messy, but we appreciate the fact that it gives you easy access to the internals if you need to fix anything. Rubber feet were added to the bottom so it doesn’t slide around while in use, but otherwise the case is a pretty straightforward affair.

As for the electronics, [r0ckR2] went with an STM32 “Blue Pill” board, simply because it’s what he had on hand. The screen is a ST7735 1.44 inch SPI TFT, and the keys themselves are Cherry MX Red clones he got off of eBay. All in all, most of the gear came from his parts bins or else was only a couple bucks online.

If you’re looking for something a bit bigger, check out this gorgeous Arduino-powered version, or this far more utilitarian version. Both are almost entirely 3D printed, proving the technology is capable of more than making little boats.

[via /r/functionalprint]

USB Reverse Engineering: A Universal Guide

Every hacker knows what it is to venture down a rabbit hole. Whether it lasts an afternoon, a month, or decades, finding a new niche topic and exploring where it leads is a familiar experience for Hackaday readers.

[Glenn ‘devalias’ Grant] is a self-proclaimed regular rabbit hole diver and is conscious that, between forays into specific topics, short-term knowledge and state of mind can be lost. This time, whilst exploring reverse engineering USB devices, [Glenn] captured the best resources, information and tools – for his future self as well as others.

His guide is impressively comprehensive, and covers all the necessary areas in hardware and software. After formally defining a USB system, [Glenn] refers us to [LinuxVoice], for a nifty tutorial on writing a linux USB driver for an RC car, in Python. Moving on to hardware, a number of open-source and commercial options are discussed, including GoodFET, FaceDancer, and Daisho – an FPGA based monitoring tool for analysing USB 3.0, HDMI and Gigabit Ethernet. If you only need to sniff low speed USB, here’s a beautifully small packet snooper from last year’s Hackaday prize.

This is a guide which is well-informed, clearly structured, and includes TL;DR sections in the perfect places. It gives due credit to LibUSB and PyUSB, and even includes resources for USB over IP.

If you’re worried about USB hacks like BadUSB, perhaps you should checkout GoodUSB – a hardware firewall for USB devices.

Header image: Ed g2s (CC-SA 3.0).


This Thermal Printer has Serious Game

[Dhole], like the fox, isn’t the first to connect his computer to a Game Boy printer but he has done a remarkable job of documenting the process so well that anyone can follow. The operation is described well enough that it isn’t necessary to scrutinize his code, so don’t be put off if C and Rust are not your first choices. The whole thing is written like a story in three chapters.

The first chapter is about hacking a link cable between two Game Boys. First, he explains the necessity and process of setting the speed of his microcontroller, a NUCLEO-F411RE development board by STMicroelectronics. Once the rate is set, he builds a sniffer by observing the traffic on the cable and listens in on two Game Boys playing Tetris in competition mode. We can’t help but think that some 8-bit cheating would be possible if Tetris thought your opponent instantly had a screen overflowing with tetrominoes. Spying on a couple of Game Boys meant that no undue stress was put on the printer.

Chapter two built on the first chapter by using the protocol to understand how the printer expects to be spoken to. There is plenty of documentation about this already, and it is thoughtfully referenced. It becomes possible to convince a Game Boy that the connected microcontroller is a printer so it will oblige by sending an image. Since there isn’t a reason to wait for printing hardware, the transfer is nearly instantaneous. In the image above, you can see a picture of [Dhole] taken by a Game Boy camera.

The final chapter, now that all the protocols are understood, is also the climax where the computer and microcontroller convince the printer they are a Game Boy that wants to print an image. In the finale, we get another lesson about measuring controller frequency without an oscilloscope. If you are looking for the hack, there it is. There is a handful of success in the form of old receipts with superimposed grayscale images since virgin thermal printer paper by Nintendo costs as much as a used printer.

This story had a happy ending but grab your reading glasses for the smallest Game Boy and here’s someone who wrote their own Game Boy color game.