by luca


Il codice sorgente è disponibile su Github.

Il programma è stato scritto utilizzando il compilatore PCW di Custom Computer Services e facendo uso delle librerie USB con esso fornite.


Il firmware contiene un bootloader che consente di programmare il PIC attraverso la connessione USB, senza più la necessità di un programmatore dedicato.

Per attivare il bootloader, è sufficiente tenere premuto il pulsante al momento del collegamento via USB al PC: il LED rimarrà acceso fisso e il PC riconoscerà il dispositivo come CCS CDC Bootloader:

Per caricare un nuovo firmware, possiamo utilizzare l’utility gratuita ccsbootloader.exe scaricabile dal sito di Custom Computer Services.

Il suo utilizzo è molto semplice: basta indicare la porta COM utilizzata (nell’esempio COM18) e il nome del file .hex:


Ho potuto realizzare Type4me grazie al supporto degli utenti del forum di Custom Computer Services e a quelli del forum Microchip.

Un particolare ringraziamento ad Embedded Adventures per aver rilasciato schemi e sorgenti del loro USB2Serial Platform: si tratta di un’ottima ed economica demoboard per il PIC 18F14K50.

Related Posts


Dario 14 gennaio 2013 - 20:16

Well done!
By the way, why CCS?

luca 14 gennaio 2013 - 21:36

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 14 gennaio 2013 - 23:29

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

luca 15 gennaio 2013 - 09:58

Hi Chris,

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

zaion 15 gennaio 2013 - 09:11

Good job. Now shrink it and sell it.

lucasvb 15 gennaio 2013 - 09:45

does the keyboard emulation work on linux too?

luca 15 gennaio 2013 - 09:55

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 15 gennaio 2013 - 18:21

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 15 gennaio 2013 - 20:11

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 15 gennaio 2013 - 23:12

[…] Type4me […]

chris shaffer 17 giugno 2013 - 18:47

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 17 giugno 2013 - 21:09

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 7 novembre 2013 - 17:04


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 18 marzo 2015 - 22:46

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 19 marzo 2015 - 11:25

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


Leave a Comment

11 + quindici =