TWedge Version History

Version history, improvements, updates, hot-fixes and bug-fixes for the data collection and keyboard wedge software TWedge.

This software wedge provides universal data acquisition for arbitrary devices (e.g. barcode scanners, bar code readers, scales and gauges). The following interfaces are supported: USB HID, serial ports (RS-232, RS-485, virtual COM ports), TCP, UDP and Bluetooth.




  • Added key constants F13 to F24 for function SendKeyStrokes()
  • Fixed wrong label: TCP 'Keep-Alive Interval' renamed to 'Keep-Alive Timeout'
  • Fixed error in GET protocol for HTTP forwarding (missing TCP port number)
  • Fixed some file references in the action parameters



  • Security Hotfix: zlib 1.2.12
    The updated zlib version 1.2.12 fixes security issue CVE-2018-25032.
  • OpenSSL
    Updated to OpenSSL version 1.1.1h.



  • License Info
    Display the correct text in the license info e-mail.



  • High DPI Display Support
    The user interface was adapted to support high DPI displays.



  • JavaScript: FindFiles
    The new function TFileSystem.FindFiles returns all file names in the specified directory that match the specified search pattern.
    For a demonstration of this function, please refer to the samples section in the script reference.
  • JavaScript: GetFileInfo
    The new function TFileSystem.GetFileInfo returns information about the given file. The returned value is a TFileInfo object with file attributes, file size and file dates. For a demonstration of this function, please refer to the samples section in the script reference.



  • USB HID Input Device
    TWedge V3.4.0 extends the existing USB HID data capture functionality with a new method for collecting USB HID input data. This new "Synchronized" method uses a more sophisticated data collection technique to process the received keystrokes. This synchronized keystroke logger mode also works with the Windows 10 on-screen touch keyboard (TabTip.exe).
  • JavaScript: HtmlMessageBox
    The new function HtmlMessageBox displays HTML text and returns the href text when clicking a link. The action template "Write Data to CSV File with HTML Confirmation Dialog" demonstrates this function.
  • JavaScript: NotifyInfo, MessageBox
    Fixed a crash when passing a non-string value as text parameter.
  • Additional User Interface Languages
    TWedge is now available in Italian and Spanish.



  • WebSockets
    Updated to libwebsockets 2.1.


  • WebSocket Client
    Sending data from a WebSocket client to a WebSocket server does not fail anymore.



  • JavaScript: WindowExists
    The new function WindowExists checks if a window with the given title exists.


  • JavaScript: ActivateWindow
    The function ActivateWindow does no longer change the window size. It just brings the window into the foreground.
  • USB HID Input Device Configuration
    Fixed a problem with saving the HID input device language.



  • Setup
    Updated to Microsoft Visual C++ 2015 Runtime.


  • Delimiter
    Fixed a crash when the delimiter was longer than the received data.



  • New Interface Types
    Added the new interface types WebSocket Client and WebSocket Server.
  • New Template
    Added a new action template for printing barcode labels via the TFORMer SDK command line tool tfprint.
  • JavaScript: ShellExecute
    The new function ShellExecute executes a command, waits until the process has terminated and then return its exit code.
  • Serial Devices
    Adjustable method for COM port monitoring. This may be useful for detecting the connection state of virtual COM port (VCP) drivers. Choose between two testing methods: Get/SetCommState and GetDefaultCommConfig. Both methods are undocumented and thus may not work reliably with your VCP driver.
  • Improved User Manual
    Starting with Version (2016/6/14) the user manual has been improved and updated.



  • Multiple Application Instances
    The user may now configure whether only one or more instances of TWedge can be started.


  • JavaScript: Date.toLocalDateString
    Fixed a crash when calling the JavaScript function Date.toLocalDateString



  • Clipboard
    The function TClipboard.Write now accepts all data types (not only strings).


  • SendKey Strokes
    The modifier key constants SHIFT, CTRL and ALT are now defined.
  • TRecordSet
    On the last record the function MoveNext did not behave like described in the JavaScript reference.



  • New File and Directory Functions
    The new JavaScript class TFileSystem provides functions for files and directories.
  • Clipboard Functions
    The new JavaScript class TClipboard replaces existing clipboard functions.
  • Extended Error Information
    The property LastError now returns a TError object with a (new) numerical error code and an error description. In previous versions LastError only returned the plain error description.



  • Low Level Logging
    Added a command line option that activates device logging on a low-level basis.


  • USB HID Input Devices
    Fixed a problem that occurred when plugging the keyboard (or scanner) on and off while TWedge is running.
  • Serial Devices
    The virtual COM port monitoring caused a crash with specific VCP drivers. This is now fixed.
  • Disconnecting Devices
    Fixed a crash that potentially occurred when disconnecting a device.



  • Serial Devices
    If a device is connected through a virtual COM port (via USB) the removal of this port can now be detected (e.g., if the device was unplugged or powered off).
  • Reconnects
    Reconnect handling was revised. Handling is now more reasonable for many device types.
  • TCP Disconnects
    The log message lets the user distinguish between a graceful disconnect and a faulty connection loss.
  • Recover Connection Feature Removed
    The feature Recover Connection is removed from the device types TCP Server and Bluetooth Server.


  • Menus
    The flag Enabled cannot be changed anymore when the device is running.
  • StartListen
    Avoid a possible crash if connection is not opened correctly before calling StartListen.
  • Log
    The All Devices log now contains all log entries from the specific devices independent of the log level.



TWedge version 3 was rewritten from scratch. It is a completely new product with unmatched possibilities, advantages and capabilities. The configuration files of earlier TWedge versions are NOT upward compatible with V3. We are aware that this may cause inconveniences for some customers but we hope that the benefits of V3 outweigh this possible drawback.


  • Multiple Devices
    A single TWedge instance is now able to handle multiple devices in parallel. The maximal number of devices is limited by the license kind and the available system resources.
  • New Interface Types
    TWedge supports the following interfaces: serial COM ports, TCP client, TCP server, UDP client, UDP server, Bluetooth client, Bluetooth server, USB HID.
  • Native Windows System Service
    TWedge provides a standard desktop application which may also be operated as Windows system service. Additional software or extra configuration efforts are not required.
  • Integrated Microsoft Excel Support
    Data can be forwarded to Excel worksheets via DDE (dynamic data exchange).
  • Ready-to-Use Data Acquisition Templates
    TWedge provides ready-to-use action templates which cover common data collection and data acquisition scenarios.
  • Multiple Hotkeys and Timers
    For each device multiple user-defined hotkeys and/or timers are supported.
  • Connection Recovery
    Interrupted TCP or Bluetooth connections can be re-established automatically.
  • New User Interface
    V3 provides a clearly structured user interface to operate and control multiple devices.
  • Password Protected Settings and Controls
    All aspects of the TWedge configuration can be password protected. Privacy and security are enhanced, user errors are reduced.
  • Database, File, Excel and Clipboard Access
    TWedge extends standard JavaScript with access-methods for files, ODBC databases and other applications.
  • Versatile Scripting
    TWedge generates JavaScript code which encapsulates the data acquisition logic. If required, every aspect of device connectivity or the data acquisition logic can be customized.
  • High-Performance JavaScript Engine
    TWedge embeds the well-know V8 JavaScript engine (as used in the Chrome browser).
  • Logging and Debugging
    Troubleshooting is easy with the help of JavaScript debugger support and round-robin log files.



  • Locking of the Preferences Dialog
    When saving password protected configuration files you can specify whether you want to lock the preferences dialog or not.


Bug Fixes:
  • Loading Password Protected Files
    Password protected files with empty scripts failed to load. This is now fixed.


  • Connection Retries
    The upper limits for the connection retry count and for the retry delay were raised.
  • Additional Information in the Protocol Window
    Now the log shows the success or failure of connection retries.
Bug Fixes:
  • Connection Retry Count
    If the retry count was set to zero, TWedge did not connect at all.


  • Allow Interface Changes for Password Protected Files
    When saving password protected files you can specify whether you want to lock the interface settings or not.
  • New TCP Keep-Alive Setting
    The interface configuration dialog now offers the possibility to adjust the keep-alive timer (in previous versions a lost connections was detected after 2 hours).
Bug Fixes:
  • Re-Establish Lost Bluetooth and TCP Connections
    If a Bluetooth or WLAN connection is lost (e.g. out of range), TWedge now correctly tries to reconnect to the respective device.


  • Sending Binary Data to a Device
    The function WriteToDevice was extended with a new parameter for specifying the encoding mode. This optional parameter must be set to ENCODING_RAW when sending binary data (0x00-0xff) to a device.


  • Binary Data
    New JavaScript variable DATARAW allows full access to the received binary data (byte value 0x00 - 0xFF without any unwanted Unicode conversions).
Bug Fixes:
  • Null-Bytes
    Received data with byte value 0x00 at first position was truncated.


Bug Fixes:
  • Online Product Activation
    Some systems displayed the activating/licensing dialogs in German instead of English language.


Bug Fixes:
  • TCP/IP and Bluetooth Connectivity
    Under some circumstances a new TCP/IP or Bluetooth connection timed out during open (e.g. with slow network speed).
  • Null-Byte Awareness
    Some problems were fixed.
  • Online Activation
    From now the online activation works only with V2.4 or higher.


  • Display Device Data
    TWedge usually displays received device data in the protocol window. This behavior is now adjustable in the Preferences dialog.
  • Display Hexadecimal Data
    Instead of displaying the received device data as ASCII characters, the data can be logged in hexadecimal notation. This behavior is now adjustable in the Preferences dialog.
  • Online Activation
    TWedge can now be activated online. Manual licensing is still possible if no Internet connectivity is given or if this method is preferred for some other reason.
  • RFID Controller Access
    Included are now Javascript samples for reading RFID Tags from EMS RFID Controllers (ABx Fast protocol).
Bug Fixes:
  • Null-Byte Awareness
    The new version of TWedge sends and receives data with 0-bytes (NUL - \x00). In previous versions data containing 0-bytes was truncated.
  • Input Validation
    The user input in the dialog Data Packets is now validated correctly.


  • Native Bluetooth Support
    Version 2.2 is now able to connect to Bluetooth devices directly. What's the advantage? Virtual COM ports are not needed anymore and TWedge reconnects to lost connections automatically! Just select the Bluetooth device in the Interface dialog or enter the address of your Bluetooth device directly (e.g. 00:0c:a7:01:ce:de). The Bluetooth address is usually printed on devices like Bluetooth barcode readers. Another possibility to check out this address is in the Bluetooth Devices section of the Windows Control Panel Control Panel\Hardware and Sound\Bluetooth Devices.
  • Automatic Connection Restore
    For Bluetooth® and TCP/IP connections TWedge restores lost connections (e.g. out of range in the case of Bluetooth) automatically.
  • Update Check
    You can check if there is a newer version of TWedge available by clicking Help -> Check for Update...
Bug Fixes:
  • JavaScript
    The function MessageBox() now returns correct values and the return values are now defined in the script editor.
  • Help-Texts
    The help-texts for some database functions were corrected.



Due to customer feedback the keystroke simulation was improved to offer better support for Remote Desktop Clients (RDP) and Citrix® XenApp®:

  • SendKeyStrokes Function
    The SendKeyStrokes() function can now be called with an additional parameter to wait for some time after every character was sent. This is useful when the receiving application needs some time to process the keystroke (e.g. sending over a remote desktop connection). If no delay is specified, TWedge uses by default 10 milliseconds.
  • Clipboard Functions
    The clipboard functions CopyToClipboard() and GetFromClipboard() were enhanced to retry the operation if the function fails. The number of retries and the time to wait after every retry can be specified by calling the function with 2 additional parameters. Default values are 5 retries with 100 milliseconds delay between retries.


Bug Fix:
  • The format of the TWI files was changed. This ensures that saving TWedge settings also works if special characters (like STX, ETX, EOT, DC1, DC2, ...) are part of the script. TWI files from previous version can be loaded without problems.

    TWI files are saved always in the new format! Previous versions cannot read the Javascript of V2.1.1 format!


  • The new function InputBox() can be used to ask the user for input during runtime (supports optional input validation).
  • The clipboard access functions CopyToClipboard() and GetFromClipboard() were introduced. These functions are useful for larger amounts of data, where a simulation of keystrokes is not feasible or too slow.
  • The function SendKeyStrokes() now accepts combinations of key constants and modifier keys. The keys have to be separated by a + character (e.g.: "{CTRL+f}" or "{CTRL+SHIFT+h}").
  • Toolbar and application icons were redesigned.


  • JavaScript support (script-based data-acquisition)
  • Direct database access via ODBC
  • Direct file access (read/write)
  • Hot key support (freely adjustable, script-based hotkey function)
  • Timer support (freely adjustable, script-based timer function)
  • Bi-directional device communication
  • Encrypted and password protected configuration files, end-users are not able to change data acquisition scripts.
  • Easy deployment of data acquisition scripts (self-licensed scripts)
  • Test-data functionality for script-development


  • Beep sound when pressing the Hot Key can be turned on/off in the TWI file now


Bug Fix:
  • Problem with AVM Bluetooth stick was solved.


  • Hotkey function for sending data.


Bug Fix:
  • There is no semicolon saved in the translation table (it can't be read from the INI-file).


  • A "negative" time out was introduced. This is intended for scales which sends data continuously (until its load stabilizes). This timeout must be at least elapsed, before the last data package will be sent.


Bug Fix:
  • If the "=" sign was used as trigger for the control sequence table, this setting will not be read when the INI-files are reloaded.


Bug Fix:
  • Fixed the HTTP OnClose Event.


Bug Fix:
  • A problem with Act: Window in Win98 was corrected.


First release of TWedge.