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.

Monday, 21 November 2016

USB Remote for iOS v1.10

What's new in USB Remote v1.10 for iOS:


  • separated settings into categories,
  • updated help section in “About & Help“,
  • fixed several bugs.

Remote Tab:

  • added option to auto reset state of modifier keys switches after any non-modifier key is pressed (soft keyboard or FnKeys screen),
  • current state of modifier keys switches is now displayed by Mouse/FnKeys screens,
  • added QucikMacro option (more info in Macros section).

Text Tab:

  • “type in real-time” option was renamed to “auto typing mode” and “manual typing mode”
  • added QR/barcode scanner,
  • application will now use arrow keys to navigate through previously typed text in case corrections are made,
  • added QucikMacro option (more info in Macros section),
  • added option to type text when new line is started for “manual typing mode”,
  • added option to clear text area when new line is started for “auto typing mode”,
  • added option to clear text area when dictation is finished for “auto typing mode”,
  • text can be now typed in real time when voice recognition is used,
  • added option to clear text field when voice recognition is initiated,
  • added option to add additional character(s) (dot, space, enter) after voice recognition is finished. This allows to automatically separate sentences or paragraphs, without having to insert punctuation characters with voice commands.

Media Tab:

  • added more actions (Home, Back, Forward, Refresh, Search, Launch browser, Launch email, Launch calculator),
  • added option to run action with custom usage ID from HID consumer control page,
  • added QucikMacro option (more info in Macros section).

Macros Tab / Macros:

  • new actions: mouse click, mouse move, mouse scroll, media action,
  • added option to hold key(s) for a specified number of milliseconds for Key action (instead of always immediately releasing),
  • fixed issues with dialog screen displayed when macro is being executed,
  • 100ms delay is now added after every keyboard macro action (Text/Key). This short delay should give host PC additional time to process keyboard input, even if user thinks it is not necessary to add delay or forgets to do this. It is no longer necessary to manually add short delays, what makes macros easier to read and edit. This feature can be disabled in settings,
  • added QuickMacros for Text, Remote, Mouse, FnKeys and Media screens. You can assign a macro to one of six available QuickMacros slots. You can quickly execute such macros directly from previously mentioned screens, without having to switch to Macros tab and scroll through list of all macros,
  • added option to duplicate macro and macro action,
  • long pressing a macro or macro action will now open pop-up menu.

Tuesday, 11 October 2016

USB Remote v1.60

What's new in latest version:

Macro Panels tab:

Macro Panels allow you to group your macros and easily execute them, with just a single click (or a long click).

Macro Panels tab

Color of text and background can be easily modified.

For each panel consists of rows and columns of buttons. For each button you can assign standard-click and long-click macro, text and background color. You can also show/hide individual buttons.
To add, modify and delete panels, click on "Panel" button. Mark a panel as the default one, to make sure it will be automatically loaded each time the app is started.
To edit properties of a button, click on "Button" button, select which button you want to modify and finally, select one of available actions: edit name and color, assign macro, show or hide.

Panels are stored as .txt files in /USBRemote/Panels directory and can be manually edited. For more info, go to USB Remote web page and select Macro Panels link.

Text tab:

Interface of Text tab was slightly redesigned: there is now a "Auto" and "Manual" typing mode switch. It is no longer necessary to open settings screen to change typing mode.

"Manual typing" mode - use this mode when you want to be 100% sure that the text is correct before it is typed on your PC. When ready, press "Type" button. If you enable "Type on enter" option in settings, instead of pressing "Type" button, it is enough to start a new line: by pressing Enter key on your soft keyboard or starting a new line when using voice input (you can do this by saying "new line" when using Swype+Dragon keyboard).

"Auto typing" mode - text is typed as soon as it appears in the text field. Since this version, application will also apply all corrections and changes to the text that was already typed on the PC. To make this process faster, application navigates through text using arrow keys when necessary. It is assumed that you are using text editor in which pressing arrow key moves cursor by one character left or right. If your text editor behaves differently, this feature will not work correctly and you should use "Manual typing" mode. Application also assumes that text was not modified in any other way: by you or auto-correct/auto complete mechanism. Application only keeps track of text that is currently present in text field, so it is HIGHLY recommended to clear the text field (use clear button on the right side of the text field) frequently (after each sentence), to avoid accidental changes to the text that was already typed. To help you with this, by default "Clear on Enter" option is enabled: text field will be automatically cleared when you start a new line. IMPORTANT: when in "Auto typing" mode, do not use backspace key on your keyboard to clear text as this will also do the same to the text on your PC, use clear button instead.

As a result of the changes, some options were removed from text tab settings and it is no longer necessary to set keyboard compatibility. Also, text can be no longer cleared as as you type, but that only messed up with text prediction anyway. 

There were also some modification made to voice commands. Now it is necessary to say activation keyword (if enabled) directly before each command keyword, for example: "command save command enter" (previously, "command save enter" would also work). Also, text field is now by default cleared each time a voice command is executed.

Added more actions to media tab:

New consumer control actions:

  • home (launches homepage on system-default browser, acts like a home button on Android OS),
  • back (goes back to a previous webpage, acts like a back button on Android OS),
  • forward,
  • refresh,
  • search,
  • launch browser,
  • launch email client,
  • launch calculator
  • custom

Selecting "custom" action allows to manually provide "Usage ID" (in decimal format) from HID consumer page (0x0C). Here is pdf file with list of all Usage IDs. List starts from page 75.
Consumer control actions may have different behavior, or may not be supported at all, depending on USB host, OS and currently running application.

Several minor modifications and bug fixes:

  • fixed bug when macro executed from widget/tasker plugin could get stuck,
  • fixed timing problems with macros,
  • improved execution of macros containing JUMP action: dialog screen will no longer disappear on rotation, added stop button to the dialog,
  • improved support for permission system (Android 6.0 and later),
  • state of "switchable" keys row in custom keyboard tab is now correctly restored after screen rotation,