by luca


I drew the PCB – using CADSoft Eagle – for it was possible to made it with hobbistic methods:

  • all the components have through-hole packages;
  • it is single-sided (= all signals are routed on the bottom layer);
  • minimum track width is 15mil.


After having made the PCB (at home or using an external service – for this project I tested OSHPark I’m going to review in a coming post), solder the components starting as usual from the smallest ones (resistors, capacitors…).

Download from Github’s repository the firmware Type4me.hex.

Connect your PIC programmer to the ICSP connector – please make sure Type4me is not connected to the USB port – and program the firmware:

In this PIC, PGC and PGD signals share the same PINs with D+ and D-. Those PINs are not 5V tolerant. Please verify that your programmer is able to choose the correct voltage or use the adapter Microchip sells.

Related Posts


Dario Monday January 14th, 2013 - 08:16 PM

Well done!
By the way, why CCS?

luca Monday January 14th, 2013 - 09:36 PM

Hi Dario,

thanks! I chose CCS mostly because of its great ready-to-use libraries, especially the USB stack. I tried to use the new “XC” microchip compiler but at the moment it’s not very mature and it’s hard to use it with Microchip USB stack so I gave up.

Chris Monday January 14th, 2013 - 11:29 PM

This is a perfect solution for me? Any kit availability?

luca Tuesday January 15th, 2013 - 09:58 AM

Hi Chris,

not at the moment… but if you need a pre-programmed PIC or help for building it write me!

zaion Tuesday January 15th, 2013 - 09:11 AM

Good job. Now shrink it and sell it.

lucasvb Tuesday January 15th, 2013 - 09:45 AM

does the keyboard emulation work on linux too?

luca Tuesday January 15th, 2013 - 09:55 AM

Yes: it’s a HID device so under Linux you don’t need any drivers.
Actually CDC drivers are only for Windows, I haven’t tried if you can use “generic” drivers under Linux.

Chris Tuesday January 15th, 2013 - 06:21 PM

Does this have the ability to store multiple pieces of text? For instance, can I store 3 or 4 different items, and then pick which one I want?

luca Tuesday January 15th, 2013 - 08:11 PM

Hi Chris,

not at the moment, the v1 of Type4me was kept intentionally simple… v2 will have more buttons (I think 4) and a GUI (to create complex sequences like the one shown to play MAME).

lucadentella.it – Type4me GUI Tuesday January 15th, 2013 - 11:12 PM

[…] Type4me […]

chris shaffer Monday June 17th, 2013 - 06:47 PM

I’m looking for a device that will enter Ctl-N with a button push. i want to put this button on the top of a bar code scanner. I’m thinking that your device will do this and it wouldn’t be a big deal to make the buttom remote from the board. Your thoughts?


luca Monday June 17th, 2013 - 09:09 PM

Hi Chris

sending CTRL-N is not a problem at all! About remoting… I’d probably choose a couple of inexpensive nRF24L01.
If you like, write me an email!

Mike Gordon Thursday November 7th, 2013 - 05:04 PM


This device would be perfect for a particular use case: copying a long complex password from a password vault running on 1 PC and “typing” it into the Windows password field on another.

Could we remove the “save to EEPROM” routine and just put a small battery on it to maintain the memory while moving it from one PC to the other? I’d also add an on/off switch to save battery when not in use and to force an erasure of the password. This would also prevent a technician from storing a password permanently in the unit, as sooner or later the battery would run out.

Also, could you add toggles in the GUI for !enter! vs !noenter!! and !save! vs not doing a !save! on each copy?

Aldo Wednesday March 18th, 2015 - 10:46 PM

Hi Luca,
can I use this device to automatic typing ctrl-alt-canc and user/password for windows7 logging on a specified time?

Aldo from Palermo

luca Thursday March 19th, 2015 - 11:25 AM

Hi Aldo, with some firmware modification, yes. A user has already implemented something similar to automatically change the BIOS password.


Leave a Reply to Dario Cancel Reply

3 × five =