Wednesday 29 November 2017

KP2A plugin v1.13

If your plugin no longer works:

What's new in KP2A InputStick plugin v1.13:

Masked password option for field actions:

you can now open masked password screen by clicking on a password field. This option must be enabled in plugin settings (Displayed UI Actions sectionField actions). Note: this works only for password fields and will be ignored for all other fields.

Open Masked Password screen directly from password field

This option must be enabled in settings

Quick shortcuts:

It is now possible to define up to three keyboard shortcuts that can be executed from Entry Menu. See Quick Shortcuts section in plugin settings.

Quickly send key combination to USB host
Go to plugin settings to manage Quick Shortcuts

Important: key labels always refer to US keyboard layout (even if you set different layout in settings). If you use German keyboard layout and want to define Ctrl+Z shortcut, you must use Ctrl+Y instead (because in US layout, "Y" key is in place of "Z" key in German keyboard layout)


  • added Close button for masked password screen
  • added missing key (empty key, NumLock section keys) definitions (macros/templates)
  • moved ChangeLog to About app section

Tuesday 28 November 2017

If your KP2A plugin no longer works (fix)

If your KP2A InputStick plugin no longer works correctly it is possible that this happened due to a KP2A bug: once a plugin is disabled, its access scope is lost. After re-enabling the plugin from KP2A settings it will appear as enabled, but it will no longer be activated when an entry is opened (due to missing access scope).

To fix this, you must disable and re-enable the plugin, but from plugin settings (*NOT* from KP2A settings):
KP2A InputStick Settings → Configure as plugin → Deny → Configure as plugin → Accept

Do NOT re-enable the plugin from KP2A settings!

More info about the bug (already fixed in latest KP2A release):

Thursday 23 November 2017

USB Remote v1.81

What's new in USB Remote v1.81:

Added shortcut for switching PC layout:

It is now possible to define a shortcut for quickly switching PC keyboard layout (example: Shift+Alt for USB hosts running Windows). Shortcut can be edited in settings.

Change PC keyboard layout with a single click


  • changes in Settings section
  • fixed auto-connect bug  
  • minor changes in Macro Editor

Tuesday 31 October 2017

USB Remote v1.80

USB Remote v1.80 will be released tomorrow. Here's what's new in this version:

Added support for sub-directories:

You can now create sub-directories in /USBRemote/Macros/ directory to better organize your macros. Use external file manager app to create directories and move macro files. Macros stored in internal app memory can now be accessed using virtual directory: "Application memory".


Macro editor:

Macros can be now created and edited using graphical editor:
  • edit macro: select macro → Edit (preview) → Macro editor
  • create macro: New → provide name & select Editor mode → Next

Macro editor


  • external and internal storage modes are supported at the same time (macros)
  • parameters are now also supported for macros stored in internal memory (but for text values only)
  • Google Slides shortcuts (presentation tab)
  • minor layout changes
  • bug fixes

Wednesday 4 October 2017

USB Remote v1.71

Added clipboard action:

<clipboard> macro action allows to type content of system clipboard. Content of the clipboard is loaded just before a macro is being executed and is NOT updated during the execution.


%max_length - max allowed text length - if text in clipboard exceeds this value it will not be typed. Use 0 for unlimited text length.

Example 1:
type content of clipboard only it it is no longer than 100 characters

Example 2:
type content of clipboard, no matter how much text is stored in the clipboard.

Example 3:
content of system clipboard is pre-loaded before first macro action. Both <clipboard> actions will type the same text even is content of system clipboard is modified during the 10 seconds delay.

Modified syntax for <keyboard> action:

  • it is now possible to use human readable key labels for <keyboard> macro actions. Use key labels from US keyboard layout. Always use "primary" label, for example, to get ! character you press shift+1 not "!" key.
  • when HID keycodes are used it is now possible to use shorter format: when a single key is pressed or when a single key is pressed together with modifier (ctrl, shift...) key(s).

<keyboard> action represents state of the keyboard at a given moment. Remember that you must manually release keys (use <keyboard> action with no parameters) or they will remain in pressed state until next macro action that affects keyboard state is executed or maco execution is finished.

macros containing <keyboard> actions with new syntax (key labels) are NOT compatible with previous app releases New syntax is now used when recording macros. Current app version is compatible with macros recorded using previous app versions.

<keyboard>%modifiers, 0x00, %key0, %key1*, %key2*, %key3*, %key4*, %key5*
(HID keycodes, before v1.70)

<keyboard>%modifiers, %key
(HID keycodes, v1.71 and later)

<keyboard>%modifiers + %key
(key labels)

%modifiers - pressed modifier keys: ctrl (0x01), shift (0x02), alt (0x04), GUI/Win key (0x08)
%key, %key0, ... - pressed non-modifier key(s): use HID keycodes, decimal/hex format or key labels from US keyboard layout
* - optional parameters

For a list of HID keycodes see this document.

Example 1:
(key labels)
(HID keycodes, a = 0x04, short format when just one non-modifier key is pressed)
press "A" key.

Example 2:
<keyboard>shift + a
(key labels)
<keyboard>0x02, 0x04
(HID keycodes, shift = 0x02, a = 0x04, short format when single non-modifier key is pressed together with modifier keys)
press "Shift+A" keys combination (to get capital "A").

Example 3:
(key labels)
<keyboard>0x05, 0x4C
(HID keycodes, hex format, ctrl = 0x01, alt = 0x04, delete = 0x4C)
press "Ctrl+Alt+Delete" keys combination.

Example 4:
press A key, wait 2 seconds (while keeping the key pressed), release all keys.

Example 5:
press "Shift+1" keys combination (to get "!" character)


  • bug fixes

Tuesday 3 October 2017

KP2A plugin v1.12

New field actions

  • Type+Enter: type content of selected field, immediately press Enter key after typing
  • Type+Tab: type content of selected field, immediately press Tab key after typing (switch to next text field)

New field actions

New actions must be manually enabled: plugin settings → Displayed UI Actions → Field Actions

Added keys for Masked Password

Following keys can be pressed directly from Masked Password screen: Esc, Tab, left & right arrow keys, Enter.

Improved smart auto-connect

If smart auto-connect is enabled (plugin settings → Auto-connect → Smart), the plugin will try to connect every time an (KP2A) entry is opened. Application will temporarily disable smart auto-connect when:

  • connection attempt fails (InputStick out of range)
  • no device is selected (if you have more than once device added in InputStickUtility)
  • you refuse to enable Bluetooth

when disabled, application will no longer try to auto-connect when an (KP2A) entry is opened. Smart auto-connect will be re-enabled after you manually request typing.

Smart auto-connect works best when you use InputStick frequently (so most of the time you want it to auto-connect), but you don't take it with you when going for vacation, business trips or just forget to take it with you sometimes (and when that happens you don't want to be bugged with connection attempts that will fail anyway).


  • only single action will be queued if not connected (avoid executing multiple actions once connected)
  • bug fixes

Saturday 30 September 2017

InputStickUtility v1.50

InputStickUtility v1.50 will be available on Google Play in a few hours. What's new:

Firmware update:

if you haven't already manually updated your firmware to v0.99 it will now be recommended by the application (once you connect to a device with older firmware version). More info about the v0.99 InputStick firmware. If necessary, it is always possible to flash previous firmware version (v0.98).


  • firmware upgrade improvements (additional dialog messages)
  • uses latest InputStick API (bug fixes, apps can now detect if user cancelled connection process by not selecting any InputStick device or did not allow to enable Bluetooth)
  • bug fixes 

Tuesday 5 September 2017

KP2A plugin v1.10

KP2A plugin v1.10 will be available on Google Play in a few hours. What's new in this version:

*** Important ***

plugin will ask for KP2A database action notification access. It allows the plugin to know when KP2A database is opened, locked and closed. This allows the plugin to disconnect and stop once the database is locked or closed. It is highly recommended to grant the access to database actions, otherwise the plugin may not work as intended. 
To do this manually: open KP2A plugin settings -> click on Configure as plugin -> Accept    

Connection settings:

connection-related settings were completely redesigned, as a result configuration should be now easier and more intuitive:

Auto-connect: select option that best matches your plugin usage pattern. If you use the plugin often, you most likely want it to start connection process as soon as possible (so it is ready to type even before you select an action). Otherwise you most likely want to avoid connection-related messages (enable Bluetooth dialog screen, connection errors, etc.) until you actually decide to type using InputStick.

  • Disabled (default) - plugin will connect only when typing is requested. Recommended when the plugin is used occasionally.
  • Smart (default) - plugin will connect once KP2A entry is opened. If the plugin is unable to connect to InputStick (out of range connection error) it will assume that you don't have your InputStick with you and will temporarily disable auto-connect (you will no longer be bugged with connection messages and errors). Auto-connect will be re-enabled after next successful connection (when typing is requested). Recommended when the plugin is used frequently.
  • Always - plugin will connect once KP2A entry is opened. Recommended when the plugin is used all the time.
Max inactivity period: allows to specify how long the plugin will stay connected since last typing action. If you usually access only single entry, set shortest period (1 min) to reduce battery drain. If you often work with multiple KP2A entries (boot password, system password, email password, etc. all typed within a few minutes) consider selecting higher values to prevent the plugin form disconnecting too early.

The plugin will stay connected until max inactivity period is reached or KP2A database is locked or closed.

Important: old connection options are no longer used (will be ignored).


plugin will now display notification while active. Notification will disappear once plugin stops (when KP2A database is locked or closed). You can use the notification to disconnect and immediately stop the plugin. Notification can be disabled in settings.

Fixed delay bug:

the update fixes a bug that on some devices caused actions to be executed after a delay.


fixed bugs and potential security issues, several minor improvements.

Monday 14 August 2017

USB Remote v1.70

What's new in USB Remote v1.70:

Text tab:

  • redesigned layout 
  • Paste, Speak, Scan, Settings actions can now be accessed by clicking on More & Help button
  • added detailed help (More & Help → Text Tab help)
  • added Keyboard Input mode and Dictation Input mode. When in Dictation Input mode, additional options can be activated
  • added toggle button for turning voice commands on/off. Voice commands can be activated only when in Auto Typing and Dictation Input mode.
  • added new voice commands (see below)

Text tab - new layout

New voice commands:

  • <erase> (default keyword "erase") - clear text area, delete text from PC 
  • <speech_clear> (default keyword "clear") - clear text area
  • <speech_delete_word> (default keyword "delete") - delete last word from text area (can be called multiple times)
  • <speech_undo> (default keyword "undo") - undo last text area change (only last change can be undone)
  • <speech_cancel> (default keyword "cancel") - cancel execution of any other commands from current voice input
  • <speech_run_macro>%path - run macro file (stored in USBRemote/Macros or use full path) specified by %path, for example: test<speech_run_macro>test.txt"

How to use new voice commands:

Macro Panels tab:

  • redesigned layout
  • added navigation buttons (Back - load previous panel, Home - load default panel)
  • buttons can now link to panels, what allows for fast and easy navigation
Click on a button to load another panel

Another panel loaded ("OS")

Custom keyboard screen:

  • long click to press and hold key: when "Press and hold action" (in Settings → Keyboard (custom) is set to "Nothing until key is released" it is now possible to enabled "Long-click" to press and hold button

Friday 28 July 2017

Firmware 0.99

What's new in latest InputStick firmware:

Touchscreen interface:

Touchscreen interface allows to control mouse pointer in a different way than mouse interface. It uses absolute screen coordinates and allows to move the mouse pointer directly to desired point on the screen, no matter what is current position of the cursor. In case of mouse interface, relative coordinates are used, so the final position of the mouse cursor always depends on its initial position. It is also affected by mouse sensitivity and acceleration settings and even by Bluetooth latency.
Touchscreen is supported latest version of USB Remote app, it must be enabled in Settings Mouse → Mousepad mode → Touch-screen. It is also supported by InputStick API.

How does touchscreen mode work? When you touch mousepad area, X and Y coordinates are calculated as a percentage of width and height of the area and then sent to USB host. Example: if you touch center of the area (X = 50%, Y = 50%), mouse pointer will be moved directly to the center of your PC's screen.

Using touchscreen interface is recommended for:
  • macros: cursor will be always moved into exactly the same point, no matter its initial position
  • systems with high resolution screens: touchscreen will move cursor directly to desired position, without having to move finger multiple times across mousepad area
Using touchscreen interface is NOT recommended for:
tasks requiring very high precision, like clicking small UI elements

Supported by:
Windows 7 and later, Linux (most distributions), macOS

NOT supported by:
Windows XP and earlier, Fedora (Wayland), most embedded systems

Raw HID interface:

Raw HID interface allows to exchange raw data between USB host and Android smartphone using InputStick as a proxy. You will need your own application that can communicate directly with USB device. Raw HID must be manually enabled using InputStickUtility app (USB Configuration). It will replace consumer control interface (media and playback control, touchscreen, gamepad).  For more information about raw HID, examples and source code, please visit PJRC raw HID webpage.

Supported by:
Windows, Linux, macOS. In all cases custom software will be required.

Both touchscreen and raw HID interfaces have already been available since 0.98D version. Click here for more info.

Modified keyboard interface:

Keyboard interface was slightly modified to make InputStick compatible with more USB hosts.
If necessary, it is possible to go back to previous implementation by selecting different USB configuration using InputStickUtility app.


  • Bluetooth will be periodically restarted, in some cases this should help with connectivity issues
  • added missing USB features (GET_IDLE, SET_IDLE, GET_REPORT)
  • bug fixes

How to flash new firmware:

0.99 firmware can be flashed using latest version (v1.493 update will be available in a few hours) of InputStickUtility application:
Run InputStickUtility → My devices → Select device → More (dots icon) → Firmware upgrade → make sure that v0.99 is selected → Flash 

Important remarks:
  • if InputStick is NOT password protected, flashing process can be started only during first 30 seconds after plugging it into USB port. Plug InputStick into USB port just before pressing Flash button
  • do not interrupt flashing process until it is finished
  • if you discover any problems with the new firmware, please let me know
  • it is always possible to go back to previous firmware version

Saturday 13 May 2017

KP2A plugin v1.09

What's new in KP2A plugin v1.09:

Launching custom app:

It is now possible to choose which app will be launched when "Type from clipboard" action is selected. Previously only Google Authenticator app was supported.

Check "Launch custom app" checkbox and click "Custom app" button to select app to launch.

Select one of installed apps.

When an entry is opened, "Clipboard/Messages" option will be available:

Select "Clipboard/Messages" to activate typing from clipboard and launch "Messages" app.

When "Clipboard/Messages" is selected, typing from clipboard will be activated and Messages app will be launched. If you are about to receive SMS with authentication code, select the code and copy it to clipboard: it will be automatically typed using InputStick.

In next update it should be possible to assign custom app for each entry.

Friday 7 April 2017

KP2A plugin v1.08

What's new in v1.08:

Faster text typing:

It is now possible to increase text typing speed by >200% (typing speed can be changed in app Settings).
Important: fastest typing speed may not work properly on some USB hosts or with some systems (BIOS, UEFI). Test it first!

Native language names:

Keyboard layouts are now named in both English and its native language (example: German / Deutsch). Additionally, country code is also displayed.

Thursday 6 April 2017

InputStickUtility v1.492

What's new in InputStickUtility v1.492:


FW 0.98E optional firmware update: 

Firmware 0.98E fixes HP UEFI bug (InputStick is not being recognized as USB keyboard). This is a temporary fix, the update is NOT recommended if the bug does not affect you: it can cause problems when used with other USB hosts. 

How to update firmware: InputStickUtility → My devices → select device → Moe (dots icon) → Firmware Upgrade → Yes → select v.098E → Plug InputStick into USB port, wait few seconds → Flash.

Native language names:

Keyboard layouts are now named in both English and its native language (example: German / Deutsch). Additionally, country code is also displayed.

Faster text typing:

It is now possible to increase text typing speed by >200% for apps using HID Service (broadcasts). See app Settings.

About section for HID Service:

The section briefly explains when HID Service is used.

Wednesday 5 April 2017

USB Remote v1.62

What's new in USB Remote v1.62:

Faster text typing:

It is now possible to increase text typing speed by >200% when using Macros, Text tab and Type with InputStick action (typing text files). See Settings -> General.

Important: fastest typing speed may not work properly on some USB hosts. Test it first!

Native language names:

Keyboard layouts are now named in both English and its native language (example: German / Deutsch). Additionally, country code is also displayed.

Keynote keyboard shortcuts:

It is now possible to switch between PowerPoint, Impress and Keynote keyboard shortcut for starting presentation (F5 vs Option+Command+P) when using Presentation tab. See Settings -> Presentation.

New macro actions:

SET_LAYOUT - allows to override currently selected keyboard layout. List of keyboard layout codes.

SET_SPEED - allows to override currently selected typing speed. Use 0 for fastest typing speed, 1 for normal typing speed, 2 for 50% typing speed, 3 for 33% typing speed, ..., 10 for 10% typing speed.

Example 1:
#use fastest typing speed (about 200% of default typing speed)
#use German keyboard layout in this macro

Example 2:
#reduce typing speed to 25% of normal typing speed
#use Polish keyboard layout in this macro

Bug fixes:

Several bug fixes, mostly related to macros.

Saturday 4 March 2017

InputStick Mod

Shameless Self-Promotion:

In several hours, I'll be launching InputStick Mod campaign as a part of "Transform the Smartphone Challenge". If you are an owner of Moto Z series device, you should definitely check it out.

Even if you your device is not compatible with MotoMods, this campaign is an excellent opportunity to get InputStick BT4.0 receiver at a reduced price. And if you already own one and do not need another one, there will be also a possibility to support app development and get new features. If you know people who might be interested in this, please share the campaign URL.

Sunday 8 January 2017

USB Remote v1.61

What's new in USB Remote v1.61.

Secondary keyboard layout.

It is now possible to set "secondary" keyboard layout and quickly toggle between primary and secondary keyboard layouts. To set secondary keyboard layout go to SettingsGeneral -> Keyboard layout (secondary).

Select keyboard layout with just a single click.

Touch screen interface.

This version supports touch screen interface that was introduced in InputStick 0.98D optional firmware update. See this post for more details. 

How is touch screen interface different from mouse interface? Instead of moving cursor left/right/up/down from its current position, it is instantly moved to a desired location on the screen (corresponding to where mousepad area was clicked: touch center of the mousepad area - cursor will be moved to center of your PCs screen). Touch screen interface is most useful when used in macros: you can always be sure that cursor will be moved to desired point on the PCs screen, no matter what was its initial position. For controlling cursor in real time, most users will most likely still get better experience when using standard mouse interface.
If you do decide to try touch screen mode, it is recommended to adjust proportions of mousepad area, so that it matches resolution of your screen (for example: 16:9). This will give you better approximation of there mouse cursor will be moved to. Touch screen mode works best when mousepad areas are large: when "mouse" tab is used or if the app is running on a tablet.

Default mousepad area (fills entire available space)

Mousepad area with ratio set to 16:9

To enable touch screen mode: Settings  Mouse tab and mousepads  Mousepad mode  select Touch-screen. When Mousepad mode is set to Touch-screen mode you can also change Mousepad ratio to make it the same as your PCs screen ratio. Select one of pre-defined values or enter custom one.

When creating macros, in most cases touch screen interface will get you much better results than using mouse interface: you can always be sure that the mouse cursor will be moved to desired location (but changing screen resolution or running the macro on a different PC may require adjustments). Here's a very simple example of a macro using touch screen interface:


Running the macro will move cursor to the center of the screen and then double click left mouse button (using standard mouse interface to press and release button). 

Touch macro action parameters are: button,X,Y.
  • button: 0 - released, 1 - pressed. Touch screen interface has one button which behaves the same way as left mouse button. Press the button to drag objects. For clicks you can use click macro action (uses mouse interface)
  • X and Y coordinates are in range from 0 to 10000, where 10000 corresponds to 100% of vertical/horizontal resolution of PCs screen.

New keyboard layouts.

Added Greek (el-GR), Belgian (fr-BE), Croatian (hr-HR), Czech (cs-CZ, programmers) keyboard layouts.

Thursday 5 January 2017

KP2A plugin v1.07

What's new in latest update of KP2A InputStick Plugin:

  • added Greek (el-GR), Belgian (fr-BE), Croatian (hr-HR) keyboard layouts,
  • added option to select "Data transfer method".

Here's some more information about "Data transfer method" options. In most cases the plugin should work just fine and there is no need to change anything. However, some users may be experiencing following problems:
  • often failures when Bluetooth connection is being established (and as a result text can be typed twice when connection is finally established),
  • text not being typed typed sometimes,
in such case you should change "Data transfer method" option to "Use broadcasts". It is possible that this option will perform better with your device. To change "Data transfer method" go to plugin Settings and scroll down to "InputStick connection settings" section.

Wednesday 4 January 2017

InputStickUtility v1.49

What's new in latest InputStickUtility v1.49 update:

  • Remind-to-remove notification sound can be changed: if you don't like system-default notification sound or simply don't want to confuse remind-to-remove warning with other notifications, you can now choose one from three sounds available. See application Settings section.
  • FW 0.98D optional firmware update: adds touch screen and raw HID (must be enabled manually) interfaces. For more information and instructions, see previous post: Firmware 0.98D and API update.
  • Added Greek (el-GR), Belgian (fr-BE), Polish Linux (pl-PL), French Linux (fr-FR) keyboard layouts. 

Tuesday 3 January 2017

Firmware 0.98D and API update

Firmware 0.98D

Next update of InputStickUtility application will come with optional 0.98D firmware. This optional update will allow you to test new features: touch screen and raw HID interfaces.

How to update to 0.98D firmware:

  • make sure you have InputStickUtility v1.49 (will be released in about a day),
  • run app → My Devices → select your InputStick device → click on more (dots icon) → Firmware Upgrade,
  • InputStickUtility cannot tell if your device is using 0.98 or newer version (0,98B etc.) so it will display dialog informing that you are already using the most recent firmware version. Select Yes option,
  • select v0.98D → Flash.

Touch screen interface:

by emulating touch screen it allows to move mouse (touch) pointer to a desired point on the screen. The point is specified by X and Y coordinates, each in range of 0 - 10000, where 10000 is 100% of vertical or horizontal resolution. Example: 5000, 5000 always moves pointer to the center of the screen. 
What makes it different from USB mouse interface, is the fact that the coordinates are absolute, so you can always be sure that pointer will be moved to the same point of the screen, no matter what was the initial position of the mouse pointer. This makes touch screen interface better choice for macros, while USB mouse interface feels more natural (similar to touchpad) for controlling mouse pointer in real time.
Next update of USB Remote application will add support for touch screen interface (all mousepad areas and macros). Touch screen interface was tested and works properly on: Windows 7 and up, Linux Mint, OS X (10.12). Does not work when Android OS is used as USB host.

Raw HID interface:

allows for two-way communication with USB host by sending and receiving 64 bytes packets via USB HID reports. Requires no drivers and is supported on Windows, Linux and OS X. For more information about raw HID, examples and source code, please visit PJRC raw HID webpage.

Important: raw HID interface is not enabled in default configuration! Raw HID replaces consumer control (multimedia keys), gamepad and touch screen interfaces! 

How to enable raw HID interface:

  • make sure you have InputStickUtility v1.49,
  • run app → my devices → select your InputStick device → configuration (padlock icon),
  • if your device is not password protected unplug it and plug it again now,
  • Connect → USB Config → Select "Keyboard, Mouse, Raw HID..." option → (optionally modify USB VID and PID, see tip below) → Set configuration.

Tip: if you want to use demo applications from PJRC website without and software modifications, in USB Config step, select "Show advanced" and modify values for USB VID and PID to: 16C0 and 0480 respectively. This will make InputStick pretend to be Teensy board.

API update

What's new in latest InputStickAPI update:

  •  supports touch screen interface (com.inputstick.api.basic.InputStickTouchScreen),
  •  supports raw HID interface  (com.inputstick.api.basic.InputStickRawHID), to receive raw HID packets you must implement InputStickRawHIDListener,
  •  added Greek (el-GR) and Belgian (fr-BE) keyboard layouts.