Posts with «keyboard» label

Stenography (Yes, with Arduinos)

What’s the fastest keyboard? Few subjects are as divisive in the geek community. Clicky or squishy? QWERTY or Dvorak? Old-school IBM or Microsoft Natural? The answer: none of the above.

The fastest normal-keyboard typists (Dvorak or Qwerty) can get around 220 words per minute (wpm) in bursts. That sounds fast, and it’s a lot faster than we type, but that’s still below the minimum speed allowable for certified court reporters or closed captioners. The fastest court reporters clock in around 350 to 375 wpm for testimony. But they do this by cheating — using a stenotype machine. We’ll talk more about stenography in a minute, but first a hack.

The Hack

[Kevin Nygaard] bought a used Stentura 200 stenotype machine off Ebay and it wasn’t working right, so naturally he opened it up to see if he could fix it. A normal stenotype operates stand-alone and prints out on paper tape, but many can also be connected to an external computer. [Kevin]’s machine had a serial output board installed, but it wasn’t outputting serial, so naturally he opened it up to see if he could fix it. In the end, he bypassed the serial output by soldering on an Arduino and writing a few lines of code.

The serial interface board in [Kevin]’s machine was basically a set of switches that made contact with the keys as they get pressed, and a few shift registers to read the state of these switches out over a serial connection. [Kevin] tapped into this line, read the switch state out into his Arduino, and then transmitted the correct characters to his computer via the Arduino’s serial over USB. (Video demo) As hardware types like to say, the rest is a simple matter of software.

Stenography 101

We’re big keyboard lovers. Maybe one third of Hackaday’s content is typed out on one or another vintage IBM Model M. No self-respecting geek who types for a living doesn’t have a near-religious keyboard preference. [Kevin]’s simple hack brought to our attention that we’ve never covered stenography. (Not steganography.) Frankly, we’re ashamed, and we’re fixing that right now.

The secret to the speed of steno is the use of a chorded, anatomically designed keyboard with an accompanying phonetic mnemonic shorthand system. Basically, one mashes down keys that correspond to sound of the word, and they’re interpreted according to a mnemonic system with a user-extensible dictionary. In short, it’s machine-assisted typing.

Many words are a single chord, and there are millions of possible chords, so there’s plenty of open space to add one’s own key combinations as the need arises.

But because stenography is a niche market, and because steno machines are designed to be used professionally by closed-captioners and court reporters, stenotype machines cost thousands of dollars. The software that runs them isn’t cheap either and is written for a very specific purpose, and is of course proprietary. In short, the market caters only to professionals, and there’s not much room for the steno enthusiast, until recently.

Plover: Open Software

Plover is free and open-source stenography software (Github), and is aiming to be the steno gateway drug. Specifically, Plover can turn a normal keyboard (with n-key rollover to support chording) into an emulated steno keyboard through software, allowing entry into the world of stenography for a hundred bucks instead of a few thousand.

Plover will also work with professional stenotypes that support serial output, like the one that [Kevin] modified that sent us down this rabbit hole in the first place. So once you’re hooked on steno, you can use your hard-earned dictionary with improved hardware if you want.

Note that the n-key rollover requirement is binding, and that’s where the $100 comes from. You can easily chord 20 keys on a stenotype machine because each finger has two buttons underneath it, and the chording systems are designed to take extensive use of hitting them two at a time. Some gaming keyboards have sufficient rollover capability, but it’s not a feature that’s demanded by the unwashed masses. In short, n-key rollover is going to cost you a little bit, or you can DIY. (Hint, hint.)

If you’ve played around with alternative keyboards (or just keyboard mappings) before, you’ll know that the Achilles’ Heel is how they handle the command and control characters that your favorite editor or IDE requires you to use. We had this hand-held device that made it nearly impossible to type control-x control-s, so it was goodbye keyboard or goodbye Emacs.

This is not a problem with a steno device, because you can define your own chord mappings. But you don’t have to stop with control characters or even Unicode. Map chords to commonly-used variable names. Map chords to entire flow-control structure skeletons (if-then-else). Think of steno strokes as being typing macros and you’ll get the idea.

The lead behind Plover, [Mirabai Knight], has a ton of info on getting started, including a live browser demo (a must-try!) and a video demonstrating Python (among other things) where you can see how chording works with coding. If you want to see how [Mirabai] transcribes live for clients using Plover and Vim, this video and its side pane are a great peek behind the curtains.

Open Steno Project: The Hardware

The Open Steno Project is an umbrella project on top of Plover to reduce the hardware and theory-learning hurdles. They list three keyboard options.

The Ergodox seems just to be a fancy ergonomic split keyboard, but one that would be particularly suited to stenography.

The Stenosaurus (Silicon-Valley-style empty sign-up page alert) looks sexy. That Stenosaurus is run by [Josh Lifton], the original coder heavyweight behind Plover who recently crowdfunded a batch of lightweight and quiet keyswitches, gives us hope. But hope and $4.35 will buy you a double-pump soy vanilla-whip latte; we like to see work in progress.

In contrast, the Stenoboard is an open project with actual designs, a 3D-printed case, code, and project examples. The firmware runs on an Arduino. StenoSpeak, an application based on the Stenoboard just won the second prize at the AT&T Connect Ability Hackathon, demonstrating that there’s other reasons to learn steno besides transcription. If you’re looking for some prior art for your own implementation, or a place to jump in and contribute, Stenoboard is a good bet.


We’re surprised that we found so few DIY projects on the steno front. The hardware is fundamentally simple, with obvious directions for improvements and personalizations. A stenotype is extremely costly to purchase, but cheap to DIY. The software side is well-established and open source. In short, the ball is set up for a quick hardware field goal.

On and the blog, there are tons of projects for making improved keyboards — many of them are chorded. But so far all of them ignore the stenotype, the current state of the art in high speed typing that’s been around since the late 1800s. We want to see this change, and we think the tide is high and the planets aligned and so on. Fly, winged monkeys, fly!

Filed under: Arduino Hacks, Featured, peripherals hacks

Keyboardio joins Arduino At Heart Program

After two and a half years of work and dozens of prototypes, Kaia Dekker and Jesse Vincent have launched Keyboardio Model 01 on Kickstarter: an heirloom-grade mechanical keyboard designed for serious typists.

As you’ll see from the video presentation below, the Model 01 is not just a keyboard. Kaia and Jesse actually re-envisioned the way we type to make it feel great. On top of that it has a beautiful hardwood enclosure and it ships with source code and a screwdriver. The Model 01’s firmware is a regular Arduino sketch you can explore and change yourself.

The project reached its target in the first few hours and you have a few more days to get one!

In the meantime they also joined the Arduino at Heart Program to make it fully customizable with the Arduino IDE:

We’ve built the Model 01 around the same ATmega32U4 microcontroller that Arduino uses in the Arduino Leonardo. Early on, we figured we’d eventually switch away to a cheaper ARM microcontroller, but then we fell in love with just how easy Arduino makes it for a new programmer to get up to speed. For all intents and purposes, the Model 01’s brain is a regular Arduino. You can update your keyboard from the Arduino IDE. If you want to make your keyboard do something special, there are thousands of Arduino resources online to help you out.


Learn more about Keyboardio on Kickstarter, where you can pre-order it and support Jesse & Kaia, who made it with love (and just a bit of obsession).

KeyMouSerial Solves Your Raspberry Pi Keyboard Problems

All laptops have a working keyboard and mouse built into them, the only problem is that you can’t use these tools on other computers that don’t have them. At least, until now. [Peter] has created the KeyMouSerial in order to use his laptop’s keyboard and mouse as physical devices on his Raspberry Pi, finally freeing the bonds holding our laptops’ human interface devices back.

The software for KeyMouSerial copies keystroke and mouse information and sends this out via a serial port on his laptop (using a USB to serial adapter). From there the information is translated by an Arduino into HID commands which are sent via USB to the target computer, in this case a Raspberry Pi. It’s a pretty elegant solution to carrying a bulky keyboard and mouse along just for a Raspberry Pi, or for any computer that might not have access to a network and SSH.

[Peter] has also been working on using his iPod as a serial-to-USB converter, so if you’re a Rockbox developer and want to help out then drop him a line. All of the software is available (for Windows, Mac, or Linux) including the Arduino sketch if you want to try this software out for yourself. And, if you don’t want to turn a computer into a keyboard and want to go the other direction and turn a keyboard into a computer, that is also an option.

Filed under: laptops hacks

Using HID Tricks to Drop Malicious Files

[Nikhil] has been experimenting with human interface devices (HID) in relation to security. We’ve seen in the past how HID can be exploited using inexpensive equipment. [Nikhil] has built his own simple device to drop malicious files onto target computers using HID technology.

The system runs on a Teensy 3.0. The Teensy is like a very small version of Arduino that has built-in functionality for emulating human interface devices, such as keyboards. This means that you can trick a computer into believing the Teensy is a keyboard. The computer will treat it as such, and the Teensy can enter keystrokes into the computer as though it were a human typing them. You can see how this might be a security problem.

[Nikhil’s] device uses a very simple trick to install files on a target machine. It simply opens up Powershell and runs a one-liner command. Generally, this commend will create a file based on input received from a web site controlled by the attacker. The script might download a trojan virus, or it might create a shortcut on the user’s desktop which will run a malicious script. The device can also create hot keys that will run a specific script every time the user presses that key.

Protecting from this type off attack can be difficult. Your primary option would be to strictly control USB devices, but this can be difficult to manage, especially in large organizations. Web filtering would also help in this specific case, since the attack relies on downloading files from the web. Your best bet might be to train users to not plug in any old USB device they find lying around. Regardless of the methodology, it’s important to know that this stuff is out there in the wild.

Filed under: Arduino Hacks, security hacks

Keystroke Sniffer Hides as a Wall Wart, is Scary

For those of us who worry about the security of our wireless devices, every now and then something comes along that scares even the already-paranoid. The latest is a device from [Samy] that is able to log the keystrokes from Microsoft keyboards by sniffing and decrypting the RF signals used in the keyboard’s wireless protocol. Oh, and the entire device is camouflaged as a USB wall wart-style power adapter.

The device is made possible by an Arduino or Teensy hooked up to an NRF24L01+ 2.4GHz RF chip that does the sniffing. Once the firmware for the Arduino is loaded, the two chips plus a USB charging circuit (for charging USB devices and maintaining the camouflage) are stuffed with a lithium battery into a plastic shell from a larger USB charger. The options for retrieving the sniffed data are either an SPI Serial Flash chip or a GSM module for sending the data automatically via SMS.

The scary thing here isn’t so much that this device exists, but that encryption for Microsoft keyboards was less than stellar and provides little more than a false sense of security. This also serves as a wake-up call that the things we don’t even give a passing glance at might be exactly where a less-honorable person might look to exploit whatever information they can get their hands on. Continue past the break for a video of this device in action, and be sure to check out the project in more detail, including source code and schematics, on [Samy]’s webpage.

Thanks to [Juddy] for the tip!

Filed under: security hacks, slider

Walkman-esque Human Interface Device

Cheap keyboards never come with extra buttons, and for [Pengu MC] this was simply unacceptable. Rather than go out and buy a nice keyboard, a microcontroller was found in the parts drawer and put to work building this USB multimedia button human interface device that has the added bonus of looking like an old-school Walkman.

The functions that [Pengu MC] wants don’t require their own drivers. All of the buttons on this device are part of the USB standard for keyboards: reverse, forward, play/pause, and volume. This simplifies the software side quite a bit, but [Pengu MC] still wrote his own HID descriptors, tied all of the buttons to the microcontroller, and put it in a custom-printed enclosure.

If you’re looking to build your own similar device, the Arduino Leonardo, Micro, or Due have this functionality built in, since the USB controller is integrated on the chip with everything else. Some of the older Arduinos can be programmed to do the same thing as well! And, with any of these projects, you can emulate any keypress that is available, not just the multimedia buttons.

Filed under: Arduino Hacks

A keyboard for Minecraft addicted to customize the gaming experience

The award-winning Minecraft is a very popular PC game and also pretty addictive. It was originally created  by Swedish programmer Markus “Notch” Persson, later developed and supported on different platforms and recently acquired by Microsoft for 2.5$ billions.

Arduino user lakhanm shared  a DIY keyboard prototyped with Arduino Uno and substituting the basic keyboard controls such as move forwards or backwards. The project is also compatible with most of the Arduino boards. 

Take a look at the circuit below and grab the sketch and bill of materials at this link.


Arduino Blog 22 Sep 16:57

A Wireless Computer Remote that Emulates a USB Keyboard

If you are anything like [Antoine], you would love to be able to control your PC with a simple hand-held remote control from anywhere in your house. [Antoine] wrote in to tell us about his wireless computer remote that emulates a USB keyboard, making it suitable for any device that uses a USB keyboard.

His blog post is very well written and contains a ton of design information and background on the project. He initially wanting to easily control his PC’s music from anywhere in his house without needing to be within line of site of his computer. The end result is a very handy remote that can be used to change music, video, and even launch applications on his computer. The system consists of a base station for his remote that connects to the computer and acts as a USB keyboard, and the remote itself. The base station uses V-USB on an Arduino to interface with the computer, and VirtualWire to handle the wireless protocol for the remote. For those of you who don’t know about VirtualWire (now superseded by RadioHead), it is a very cool Arduino library that lets you easily use raw wireless interfaces (also called vanilla wireless interfaces).

Without going into too much detail here (be sure to see the actual post for more information), the remote itself was redesigned after the initial proof of concept to maximize battery life. The final power consumption is very impressive, resulting in a battery life of more than two years! This remote system is very well put together and contains many aspects that can easily be reused for other projects.

Filed under: wireless hacks

Pair of musical hacks use sensor arrays as keyboards

This pair of musical keyboard hacks both use light to detect inputs. The pair of tips came in on the same day, which sparks talk of consipiracy theory here at Hackaday. Something in the weather must influence what types of projects people take on because we frequently see trends like this one. Video of both projects is embedded after the jump.

On the left is a light-sensitive keyboard which [Kaziem] is showing off. In this image he’s rolling a marble around on the surface. As it passes over the Cadmium Sulfide sensors (which are arranged in the pattern of white and black keys from a piano keyboard) the instrument plays pitches based on the changing light levels. [Thanks Michael via Make]

To the right is [Lex's] proximity sensor keyboard. It uses a half-dozen Infrared proximity sensor which pick up reflected light. He calls it a ‘quantised theremin’ and after seeing it in action we understand why. The overclocked Raspberry Pi playing the tones reacts differently based on distance from the keyboard itself, and hand alignment with the different sensors.

Filed under: musical hacks

An Arduino-based ADB-to-USB adapter for NeXT keyboards

Have you ever wondered to use your old-fashioned NeXT keyboard with your current, non-ADB computer? The main issue that needs to be solved regards how to interface this ADB keyboard (standing for Apple Desktop Bus, an old protocol used in former NeXT and Apple computers) with a standard USB interface.

In this nice tutorial, Ladyada and Pt describe the approach they have used, based on an Arduino Micro board and… some luck in searching for the right information about the scancode table of the keyboard  ^^.

More information can be found here.

[Via: Adafruit Learning System]


Arduino Blog 10 Jan 11:40