Physical security for your personal data

Jan 10, 2018

Project update 20 of 26

Keyboard Layout Management Release

After a number of development and testing cycles, and with the help and input of multiple backers on GitHub, I am pleased to announce the latest Signet release. The most significant update is the addition of keyboard layout management support, which will allow backers using keyboard layouts other than English (US) to make use of the device’s typing functions. You can download the latest release here.

Keyboard Layout Management


Keyboards send codes corresponding to key positions and not the labels on the keys caps. Operating systems translate these codes to characters using the systems keyboard layout configuration. Since Signet identifies as keyboard, in order to work correctly Signet needs to know the systems currently selected keyboard layout.

Signet Client’s Solution

To support a wide variety keyboard layouts without needing close integration with the operating system, the Signet client detects the keyboard layout by generating a sequence of key codes and modifiers (Shift, Alt, etc) and captures the characters generated to derive the system’s keyboard layout. The GIF below shows the process in action:

The client then saves the detected keyboard layout to a settings file so that you only need to perform the configuration once. You can configure the keyboard layout from the menu selection "device->settings" on PC and Linux, and from "preferences" on MacOS.


The detection process has some limitations currently: It can detect keys used to add modifiers/accent to other keys such as ` or ~ (so called "dead keys") but currently it only detects the character for the modifier itself. This has been filed as a bug and will be fixed in a later release. If a character cannot be typed for any reason you will get a prompt to optionally copy the data into the clipboard instead.

Improved GNU/Linux Portability

The GNU/Linux build should be more portable this release. The previous GNU/Linux build was built using a fairly recent gcc 5.3 compiler. This resulted in it not linking on older Linux distributions. The latest build was built on a system with an older version of gcc (4.8). It should run on distros based on Ubuntu 14.04+, Debian 8.10+ (Jesse), Linux Mint 17+ (Qiana), and Slackware 14.2. Other distributions may work but I haven’t tested or researched their compatibility. If it doesn’t work for you send me an email at contact (at) In the long term I plan on also releasing packages for different distros and possibly operating a PPA.

Future Releases

I’ve decided against having Signet automatically check for new releases. Given the sensitivity of the data Signet manages I think many users would be more comfortable with it being a strictly offline application.

However, to encourage users to regularly update the software, the client will ask you if you want to check for an update a certain number of days after the client was released. If you click yes the client will request that your default browser open the Signet downloads web page. For this release the update check reminder will occur a month after the release (Feb 8th). As the releases become more stable I will increase the update check period to a few months.

Sign up to receive future updates for Signet.

Subscribe to the Crowd Supply newsletter, highlighting the latest creators and projects