Custom Computer Keyboard

I built a custom keyboard for a woman with cerebral palsy.

This project started at ITP camp in 2016 in a class taught by ITP alumni Claire Kearney-Volpe and Ben Light. The goal of the class was to build custom keyboards for disabled people who have difficulty using traditional keyboards.

In the class we met with several members of Adapt Community Network and discussed their experiences using computer keyboards. Traditional keyboards often do not meet the needs of disabled people. We talked about ways we could re-design a keyboard to make computers more accessible and meet their usability needs.

I worked with a woman named Shaniqua. She didn't like the traditional key arrangement of a QWERTY keyboard and often found it difficult to find the next key she needed to type. There were some keys she didn't use at all and she thought the keys were too close together.

me sitting next to a woman with a piece of paper in front of us as we draw what the keyboard should look like.

I designed a keyboard layout in Inkscape and used ITP's 60 Watt laser cutter to cut and etch all of the parts. There are 73 keys on this keyboard so the cutting took almost 4 hours to complete.

laser cutter cutting through sheets of acrylic

Next I needed to understand the electronics that go inside the keyboard. I had not used a shift register before so I did some experimenting to understand how this is supposed to work:

breadboards with circuits and wires connecting 16 buttons to an Arduino using shift registers.

Finally, the actual assembly. This part was very difficult and it took me a long time to figure out something that made sense and seemed achievable. There are so many buttons...how am I supposed to organize the buttons, the wires, the shift registers, and the resistors?

I started by soldering the buttons into place in their correct locations on each circuit-board along with resistors and wires for power and ground. Each circuit-board connected the power and ground wires to each other so I only had to add two wires from one board to the next to power the buttons.

circuit board with five buttons on it in a vice. wires connecting the buttons are being soldered together.

Then I divided up the circuit-boards into "key regions." Each region is controlled by shift registers in that region. The circuit-boards in each region share power and ground with each other.

groups of circuitboards with buttons on them, connected with wires to other buttons in the same group.

I completed the soldering for each key region and tested them with an Arduino to verify that the buttons worked. Then I linked the regions together, connecting the shift registers' data, latch, and clock wires and adding power and ground. Everything was attached to the acrylic using velcro to keep the circuit-boards in the proper place.

all of the circuit boards together on an acrylic sheet, with buttons facing up and lots of wires connecting everything together.

Clearly that's a messy collection of wires, and the solder joints on the other side aren't any better. There's about 50 ft of wire on both sides of the circuit-boards and hundreds of solder joints. Nevertheless, the buttons work like they're supposed to. I added some scotch tape to keep the wires under control and assembled the keyboard buttons.

The keys are multi-colored using a collection of Sharpie markers I bought for this purpose. When I met with Shaniqua we came up with the idea of using colors to make the keys easier to find. The numbers and vowels are Shaniqua's favorite color, pink.

Below is the final keyboard. The keyboard is resting on a specially made stand designed to prop up the keyboard on a small incline. Shaniqua didn't want the keyboard to be flat on the table.

computer keyboard with large square buttons arranged in a grid pattern in alphabetical order. Non-alphanumeric characters are across the top and a number pad on the right.

I wrote documentation explaining how to configure the action keys at the top of the keyboard and other information to help someone repair the keyboard if need-be. The Arduino code is also available online.

Here are my blog posts for this project:

There are some things about this project that didn't go so well. The arrangement of the buttons and wires was hard to manage and caused many problems and mistakes. I did it that way because the only way I understood how to build this with the resources I had available to me was to have all of the components together on a single plane of circuit-boards. On the other hand, I learned a lot about good and bad solder joints and I got a lot of practice diagnosing problems with a multimeter and de-soldering. The electronics work but they caused a lot of late nights and stress. In the future I will be much more disciplined about how I solder connections in circuits.

The keyboard was built as a prototype, and one that Shaniqua can experiment with and provide feedback on to help build future keyboards for herself and other members of United Cerebral Palsy. This keyboard isn't perfect but it is something that she can use at her job doing office work. I am very happy to have built this. I am also looking forward to the opportunity to build more tools like this for disabled people as an ITP student; I learned a lot from this process and know I can do even better next time.