Logo Tabmate Relay Overview

The Tabmate is a Bluetooth, hand-held device with 60 buttons in 4 groups that was designed to be used with Clip Studio Paint (CSP), a drawing and illustration application. There are 15 physical buttons plus the Celsys button on the bottom which functions as On / Off and also changes the group. Applications such as CSP typically rely on a large number of keystroke combinations to do various things. "]", for example, is commonly used for "Increase Brush Size, "Ctrl-Z" for undo. For those who work with touch-sensitive tablets like a Surface Book with the keyboard out of the way, this becomes an issue. The Tabmate goes a long way toward solving that problem, as you can associate the Tabmate buttons with keystroke combinations through a menu item in CSP so that pushing the button causes the desired action to happen. The Tabmate was designed to work with CSP and does that well. It could just as well be used with other programs, Photoshop, for example, but there is no interface to it in those programs.

Tabmate Relay is a C# Windows application designed to talk to the Tabmate and translate the button presses into key combinations that can be received by whatever application is in focus at the time (the Active Window). You configure in Tabmate Relay what sequences you want to be associated with which button press. The other program could be any program, not necessarily an art application.

The developer of Tabmate Relay is not associated with Celsys, its seller, nor CSP. There is also another application by this developer, ArtPad, which is a small keypad that stays on top of your application and allows you to enter these sequences by tapping on one of its keys. It can be used along with the Tabmate.

The Interface

This is a screen shot of the Tabmate Relay main interface. It consists of menu items and an area for logging information. The amount and detail of the logging is configurable.

Tabmate Relay Main Window

The other main window is the interface for configuring what each button does.

Tabmate Relay Main Window

Configurations can be stored as CSV files and loaded as needed. Note that the groups are denoted by the LED at the top, Solid Red, Solid Blue, Flash Red, and Flash Blue. Flashing Red and Blue indicates pairing mode.,

The application is designed to be in the System Tray, also known as the Notification Area, when in use. Double-clicking the icon in the System Tray maximizes it to the desktop. There is also a right-click context menu item on the icon that will Maximize or Quit it. It can be made to be started at system start up. There is a command-line option, -showOnStartup, that will set it to come up maximized when it is started. This can be abbreviated as -s, -S, /s, or /S. The default is to come up in the System Tray.

KeyString

Tabmate Relay uses SendKeys from the .Net Framework. Each sequence is represented by one or more characters. To send a single character (except for special characters) just enter the character. For the special characters +, ^, %, and ~, use {+}, { ^}, {%}, and {~}. For the special characters (, ), {, }, [, and ] enclose them in braces.

Here are some of the more commonly-used keys that are special or are not characters:

Key Code
^ Ctrl
+ Shift
% Alt
~ Enter
{ {{ } (Similar for })
( {(} (Similar for ))
INS or INSERT {INSERT} or {INS}
DEL or DELETE {DELETE} or {DEL}
BACKSPACE {BS} or {BKSP} or {BACKSPACE}
DOWN ARROW {DOWN} (Similar for UP, LEFT, RIGHT)
END {END} (Similar for HOME)
ESC {ESC}
TAB {TAB}
F1 {F1} (Similar for other function keys)
Keypad add {ADD} (Similar for subtract, multiply, divide)
PAGE DOWN {PGDN} (Similar for PAGE UP)
NUMLOCK {NUMLOCK}

Here are some examples:

Ctrl-C ^c
Alt-C %c
Shift-Ctrl-S ^S
Ctrl-E, Ctrl-C ^(ec) or ^e^c
Shift-E, Shift-C EC or +(EC) or +E+C or +e+c
Shift-E, C +EC
A A or +a or +A
Press h 10 times {h 10}
Press LEFT ARROW 5 times {LEFT 5}
Lorem Ipsum 2 Lorem Ipsum 2

For a complete list of the syntax see https://learn.microsoft.com/en-us/dotnet/api/system.windows.forms.sendkeys.send or search for SendKeys.

TYPE

NORMAL

This indicates that the key sends a normal key sequence with the KeyString as described above.

HOLD

This indicates that the key may be held down after it is sent. It is considered to be a single key on the keyboard. The KeyString syntax is different from the other keys. It may be one of ^, %, and +, representing Ctrl, Alt, and Shift. Other values are treated as being names of keys defined at https://learn.microsoft.com/en-us/dotnet/api/system.windows.forms.keys. Individual keys, such as A, B, C... are represented by A, B, C... (in upper case). For example, in many art programs holding down E temporarily invokes the eraser. E works as a hold key for Tabmate Relay. This covers many keys on the keyboard, but not all of them.

Strange behavior can occur if the keys Ctrl, Alt, or Shift are left in the hold state or were put in the hold state when the wrong application was the active window or when the active application changed while the buttons were held. Actions in other programs or even the desktop behave as if these keys are held, which usually means they do something different than without them held. In case of trouble it may work to press the physical key on the keyboard twice or to press both physical keys on the keyboard together. In the worst case, you many have to log off and back on or restart. Being careful about holding keys down is the best approach.

COMMAND

This indicates that instead of sending keys, a command is run. The KeyString is the path to the command. If the command is in your PATH, then entering the name of the command is sufficient. Otherwise the full path must be specified.

You can optionally type a comma after the command followed by options for the command. You should be able to use whatever you can use at a command prompt (except for the comma notation).

Onscreen Keyboards

There are two onscreen keyboards you may want to consider.

TabTip is the tablet keypad. In some applications it will come up automatically when you need to enter text, such as a file name for saving. Other applications don't support this feature, so you need a keypad. You can start TabTip with the following:

\Program Files\Common Files\Microsoft Shared\ink\TabTip.exe

OSK is another onscreen keyboard that has come with Windows for some time. On 64-bit Windows 10, you should be able to use:

\windows\system32\osk.exe

Whether you can use just osk.exe and whether it works at all depends on the version of Windows and on whether it is a 64-bit or 32-bit platform. You may have to experiment. Note that Tabmate Relay runs as 64-bit on 64-bit systems and 32-bit on 32-bit systems.

UNUSED

This indicates you don't want to use this key for now. There will be no label, and the configuration will be retained but ignored.

File Menu

Send to System Tray

Minimizes Tabmate Relay to the System Tray.

Exit

Exits the application. This can also be done via the notify icon.

Tools Menu

Configuration

Edit

Brings up the Configuration shown above. There are buttons to Reset to the configuration when you started the dialog, Cancel, and OK. When selecting OK, the configuration is then the one in use by Tabmate Relay. It is stored for the next time Tabmate Relay is started.

Open

Brings up a dialog to to open a CSV file, which determines the current configuration. The configuration is then stored for use next time. The CSV file is tab-delimited, not comma-delimited, so you can have commas in your configuration. You cannot have TABs. You may have to save it with extension .tsv to use it in some spreadsheets, but most also accept TAB as the separator. There is a header and 60 lines with columns, Button, Page, Number, Name, Label, KeyString, and Type. Page is which of the 4 groups (0 - 3), and number is the button number (0 - 59). You can edit the file and reopen it in Tabmate Relay. There will be issues if you do not use the proper syntax.

Save As

Brings up a dialog that let you save the current configuration as a CSV file.

Special

Allows you to load some default configurations, Default and Test. Default is what is loaded if you have never used the program. All keys are marked as UNUSED.

Logging

These control what is logged and if logging is enabled at all. Only the items specified will appear. The full format is:

hh:mm:sec AM/PM xxxxxxxxxxxxxxxxxx up/down/other Flag: xxxxxxxxxxxxxxxx {[number <button name:button Label > % type(up / down)]} active window title
The Input report is a hex byte sequence in Little Endian order. The first two bytes are 0504. The author does not know what these represent. The flag is a hex number representing the rest of the byte sequence. The lowest order position corresponds to the first button.

Log Input Report

Displays the bytes coming from the Tabmate and some other information. The bytes are in Little Endian order

Log Flag

The bytes can be converted to a 64-but flag, which shows which of the 60 buttons are pressed.

Log Index

This is the button number (0 - 59).

Log Type

The Type, N, H, C, or U for the types described above.

Log Label

The label you have given for the action to be performed.

Log Key String

The key string to be sent.

Log Name

The name of the Button (Button +, Button A, Wheel Up, etc.). The names are not configurable. The Labels are.

Log Active Window

Shows the title of the active window.

Logging On

Switch to turn logging on or off entirely. Error messages should still be shown.

Info

Number of events, device information about the Tabmate, and possibly other information.

Restart Tabmate

Searches for the Tabmate. Note that the Tabmate does not have to be found, on, or connected when Tabmate Relay starts. Its device properties are known, and Tabmate Relay will start receiving data when it becomes available. The Tabmate does have to be paired. If it is not found when it is turned on, it is likely a pairing problem. It only accepts a connection to one computer at a time. If it was connected to another computer and that computer is on and in range, it will not connect to another one. It may not connect, even when the other one is off, and it may not connect to the current computer, even though it is listed as paired. The solution in this case may be to un-pair, then re-pair it. This menu item may help resolve these sorts of problem. If it is paired and turned on, it should be found.

Also note Tabmate Relay has only been tested with one Tabmate device. It is possible the device properties and other things may change with different versions. Also note that it is listed as a Broadcom Bluetooth Wireless Keyboard, not TABMATE. It is listed the same way in Device Explorer and there are also other devices with the same name. Only one is the joystick. When pairing it will appear as TABMATE.

Tabmate Info

Gives technical information about the Tabmate if it is found.

HID Device Info

List all the Human Interface Devices found.

Help Menu

Overview

Brings up a window with this HTML file. It works as a rudimentary browser with links and Back and Forward buttons.

Overview Online

Access the Tabmate Relay online help.

About

Gives information about this application including the version.

Installation

If you are installing from a download, just unzip the files into a directory somewhere convenient. Then run it from there. If you are installing from a build, copy these files and directories from the bin/Release/net48 directory to a convenient directory.

To uninstall, just delete these files.

Acknowledgements

Tabmate Relay uses the NuGet packages Silons.SharpLib.Hid-x64, InputSimulator, Newtonsoft.Json, and Systems.Resources.Extensions from Microsoft. The Tabmate is a product of Celsys.