PUB! Programmable USB Button

PUB! is a Programmable USB Button on which you can program a sequence of keystrokes. When you press the button those keystrokes are “replayed” over a USB connection.

PUB! Programmable USB Button

The button (which is really a rotary encoder with a built-in push button switch) is programmed using an innovative and slightly quirky interface that does not require any custom software to be installed on your computer. All you need is a text editor like Notepad (for Windows) or gedit (for Linux).


  • One-button design (a rotary encoder with a built in switch).
  • Programmed by using an ordinary text editor as a display (for example, gedit on Linux, or Notepad on Windows).
  • Up to 127 keystrokes can be recorded and played back.
  • Support for conditional logic. For example, Compare to value, Jump on zero, etc.
  • Support for 256 x 8-bit “registers” to record state.
  • Support for basic arithmetic. Add, subtract, etc.
  • Can send USB System Control codes (Power off, sleep, wake) to your PC
  • Can send USB Consumer Device functions (e.g. Mute, Play, Pause, Stop, etc.)
  • Requires NO drivers (or custom software) for Windows/Linux etc


The possibilities are fairly broad including:

  • Using a Bluetooth module to detect proximity of the button owner’s mobile phone so that the USB button is only enabled when its owner is near.
  • Addition of an external EEPROM for extra keystroke capacity.
  • The one-button user interface will be improved to make it easier to use.

Step 1: Parts

You will need the following parts:

Qty Value          Package       Parts         Description 
3   100nF          0805          C1, C2, C3    Ceramic capacitor SMT
1   4.7uF          SMC_A         C4            Tantalum capacitor SMT
1   470            1206          R1            Resistor SMT
1   ACTIVITY       1206          D1            LED (any color) SMT
1   EC12E_SW                     SW1           ALPS rotary Encoder EC12E series with switch 
1   MIKROPROG                    JP1           5x1 Pin header (right angle) 
1   PIC18F25K50    SOIC          IC1           PIC 18F25K50 microcontroller SMT
1   PICKIT                       JP2           6x1 Pin header (right angle) 
1   USB-MINIB-5PIN               JP3           Mini-USB Type B socket SMT

For more detail: PUB! Programmable USB Button

About The Author

Ibrar Ayyub

I am an experienced technical writer holding a Master's degree in computer science from BZU Multan, Pakistan University. With a background spanning various industries, particularly in home automation and engineering, I have honed my skills in crafting clear and concise content. Proficient in leveraging infographics and diagrams, I strive to simplify complex concepts for readers. My strength lies in thorough research and presenting information in a structured and logical format.

Follow Us:

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top