1337-sp34k Keyboard

What started off as a quick prank-hack to re-map a colleague’s keyboard turned into a deep dive in understanding how keyboards work. [ch00f] and his other work place colleagues are in a habit of pulling pranks on each other. When [ch00f]’s buddy, who is an avid gamer and montage parody 1337-sp34k (leet speak) fan, went off on a holiday, [ch00f] set about re-mapping his friend’s keyboard to make it spit out words his friend uses a lot – “SWAG” “YOLO” and “420”. But remapping in software is too simple, his hack is a hardware remapping!

The keyboard in question used mechanical keys mounted on a keyboard sized PCB. Further, it was single sided, with jumper links used in place of front side tracks. This made hacking easier. The plan was to use keys not commonly used – Scroll Lock, Print Screen, and Pause/Break – and get them to print out the words instead. The signal tracks from these three keys were cut away and replaced with outputs from a microcontroller. The original connections were also routed to the microcontroller, and a toggle switch used to select between the remapped and original versions. This was eventually not implemented due to a lack of space to install the toggle switch. [ch00f] decided to just replace the keyboard if his friend complained about the hack. A bit of work on the ATMega PCB and firmware, and he was able to get the selected keys to type out SWAG, YOLO and 420.

And this is where a whole can of worms opened up. [ch00f] delves in to an explanation on the various issues at hand – keyboard scanning/multiplexing, how body-diodes in switching FET’s affected the scanning, ghosting and the use of blocking diodes. Towards the end, he just had the word SWAG activated by pressing the Pause/Break key. But he does get to the bottom of why the keyboard was behaving odd after he had wired in his hack, which makes for some interesting reading. Don’t miss theĀ video of the hack in action after the break.

13 thoughts on “1337-sp34k Keyboard

  1. How can you call this a leet speak keyboard?
    It just prints out normal words/abriviations.

    Don’t get me wrong it’s a cool hack and deserves to be here but whoever named it the leet speak keyboard might not understand what leet speak is…

    1. Agreed! It should at least remap E to 3, T to 7, A to @, and so on…maybe even implement some macros for the fancier stuff where H -> |-|, etc… type 1337 without the p41|\|!

  2. My favourite trick to pull on people in the office who leave their computers unlocked is to both physical swap the M and N keys, then edit HKLM\SYSTEM\CurrentControlSet\Control\Keyboard Layout to swap them back, so they work correctly ;-)

  3. Back when I was evil me, I used to put a bit of machine code that added 1 to the ASCII code or pick a random character or toggle the upper/lower case then point the input routine vector to my evil routine.

    To stop the “victim” simple rebooting, I modified their DOS boot floppy so it loaded my bit of code at boot up.

    Worked on Apple II and IBM PC/XT/AT machines really well, it usually took the “victim” a couple of reboots to figure out they needed a new boot floppy.

    I’m better now and don’t use my hacker foo for evil.

    most of the time

  4. Even better, just swap the keys around, a British qwerty keyboard quite happily can be reconfigured as a wanker keyboard. Great for those older colleagues that one finger type and know no better.
    Either that or cress seeds sprinkled liberally and watered a few times works wonders to annoy

    1. At first I thought that the seeds might swell slightly and make key contacts more difficult. You should have added this picture (wikipedia):

      BTW, that is funny AND evil.

  5. Back when my Acorm Atom still was working, I modified my electric typewriter to use it as a printer. It was relative easy to do. First figure out how the t.w. was working. The easy way was to ‘press’ the keys, the keyboard was an 8 by 8 matrix. I used two 4051 8-to-1 transmission-gates, one connected to the rows, the other to the columns and the common pins connected together. This way there was 7 bits to control. Some extra for the shift key and also a busy/ready signal.
    The second part was to write assembler on the Acorn to drive this and redirect the printer output to the new ‘driver’.
    It worked but wasn’t so easy to use, because you have to load the new printer driver from tape each time the computer was switched on. It survived a reset, at least. HMM, let me see, somewhere I have seen my notes about this…

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.