Javelin: Difference between revisions

From Plover Wiki
(Created page with "Javelin is an embedded steno engine that can run in a keyboard's firmware. This allows the keyboard to directly translate the strokes to text, thereby bypassing the need to install Plover (or anything) on the host machine. All the dictionaries and translation occurs in the keyboard itself. Javelin allows for "plug and play stenography". It is compatible with the following hobbyist steno writers: * StarBoard * StenoKeyboards Asterisk * StenoKeyboards Polyglot * StenoKeyb...")
 
(Fix grammar in non-WSI section)
 
(8 intermediate revisions by 3 users not shown)
Line 1: Line 1:
Javelin is an embedded steno engine that can run in a keyboard's firmware. This allows the keyboard to directly translate the strokes to text, thereby bypassing the need to install Plover (or anything) on the host machine. All the dictionaries and translation occurs in the keyboard itself. Javelin allows for "plug and play stenography". It is compatible with the following hobbyist steno writers:
'''Javelin''' is an embedded steno engine that is installed as a keyboard firmware. Javelin translates steno strokes to text in exactly the same way that [[Plover]] does. However, as Javelin's steno engine is embedded in the keyboard firmware itself, no extra software (such as Plover) is required on the host device.


* StarBoard
[[File:Javelin embedded steno engine on Pixel 4.mp4|thumb|Demo of Javelin's embedded steno engine on an Android phone.]]
* StenoKeyboards Asterisk
* StenoKeyboards Polyglot
* StenoKeyboards Uni


Javelin is also compatible with several DIY steno writers.
All translations are contained within the keyboard itself ("plug-and-play stenography"). Javelin outputs the translations as if they were coming from a regular keyboard. Therefore, Javelin is compatible with any device that accepts regular USB keyboard input.
 
Javelin is written in C++, and authored and maintained by community member [[Tharelia]]. The recommended method of downloading and customizing Javelin is through their [https://lim.au personal website].
 
Popular use cases include:
*Typing on smartphones (which cannot run Plover)
*Typing on work computers (where the installation of Plover may not be an option)
*Moving between multiple devices with the same dictionary
 
==Compatibility==
Javelin is compatible with several [[Choosing a hobbyist steno writer#Table summary|commercially available hobbyist writers]]. For a complete list, visit the [https://lim.au/#/software/javelin-steno firmware builder] and check the hardware dropdown.
 
As of May 2025, the following writers are supported:
*[[Asterisk]]
*[[Corne]]
*[[Ecosteno]]
*[[Jarne]]
*[[Jarne Blade]]
*[[Kyria]]
*[[Multisteno]]
*[[Picosteno]]
*[[Polyglot]]
*[[Starboard]]
*[[The Uni]]
 
Typing on a device equipped with Javelin works on any modern device that accepts USB keyboard input. This includes smartphones, Chromebooks, tablets, etc.
 
For iPhones with a lightning connector, a camera kit is required.
 
==Installation Instructions==
To use Javelin on your hobbyist steno writer, you will need to update the firmware. This involves downloading a Javelin firmware file, and copying it to your device.
 
The following video by community member [[Aerick]] goes through this process at 1:06:
 
<youtube>nLBu5DZI4fY</youtube>
 
{{Info|text=You will need a computer running a desktop OS (e.g. Linux, macOS, Windows) to update your steno writer's firmware. You cannot update firmware using an Android or iOS device.}}
 
=== 1. Select your steno writer ===
Firmware files can be downloaded from the [https://lim.au/#/software/javelin-steno Javelin firmware builder]. Before proceeding, make sure the correct device is selected.
[[File:Javelin firmware builder device.png|center|thumb|420x420px|Make sure you have selected the right device before proceeding.]]
 
=== 2. Download a firmware file ===
 
==== 2a. New users ====
For new users, download either the <code>Default Plover</code> or <code>Default Lapwing</code> files depending on which theory you want to use.
[[File:Javelin Firmware Builder Default.png|center|thumb|420x420px|Download either <code>Default Plover</code> or <code>Default Lapwing</code>.]]
 
==== 2b. Advanced users ====
If you wish to customize your Javelin configuration, select the options you want, and download either incremental or standalone depending on your needs.
 
=== 3. Copying the file to your device ===
The instructions to update your device differ depending on the board you are using; make sure you have selected the right board as outlined in step 1. You can find instructions to update your file's firmware at the bottom of the page. In general, most boards require you to hold down a button while plugging it in, and copying the firmware file you downloaded (in step 2) to the new drive.
 
== Web Tools ==
Since Javelin is not a computer application, many of the same features that Plover offers are accessible through the [https://lim.au/#/software/javelin-steno-tools web tools] on the Javelin website.
 
This includes GUI tools for Add Translation, Lookup, Paper Tape, Suggestions, and more. The key layout can also be modified through this tool.
 
Web tools connect to Javelin-equipped writers with WebHID, which is currently supported on Chrome, Edge, and Opera only.
 
===Troubleshooting web tools connection on Linux===
If you see <code>Error connecting</code> while trying to connect to your device with the web tools, you need to add a udev rule. Create a file at <code>/etc/udev/rules.d/99-keyboard-javelin.rules</code> with the following content:
<pre>SUBSYSTEM=="hidraw", ATTRS{idVendor}=="9000", ATTRS{idProduct}=="400d", MODE="0666"</pre>After creating the file, reload the rule with the following commands:<pre>sudo udevadm control --reload-rules
sudo udevadm trigger</pre>{{Info|text=If this does not work, try replacing <code>9000</code> with <code>feed</code>.}}
 
== Features ==
This section covers some noteworthy features of Javelin. If you wish to view all of the available settings and features, have a look through the [https://lim.au/#/software/javelin-steno Javelin firmware builder]. You may have to select <code>Show expert options</code> to find the option you are looking for.
 
=== Embedded steno engine ===
 
==== Dictionary management ====
[[File:Javelin dictionaries section.png|thumb|Several programmatic dictionaries are implemented in Javelin, and arbitrary JSON dictionaries can be added.]]
Adding your own arbitrary JSON dictionaries is fully supported. Using the web tools or custom defined outlines, it is possible to temporarily disable dictionaries.
 
Compared to Plover, however, it is not possible to add your own [[programmatic dictionaries]] (such as Python dictionaries) using the firmware builder. Some popular Python dictionaries have been implemented in Javelin, such as Emily's symbols and Jeff's phrasing. That is to say, they have been rewritten in C++ and added to the firmware builder as options. Currently, there is no officially documented way to write a programmatic dictionary for Javelin (although it is possible).
 
==== Non-WSI layouts ====
By default, Javelin uses Extended Stenotype layout; Javelin supports non-WSI layouts by specifying a System file in the firmware builder. Expert options must be enabled to see this, and example system files are linked from the firmware builder page.
 
It is currently not possible to have more than one system on a device at a time.
 
==== Unicode characters ====
Javelin supports several methods to write Unicode characters, which are all dependent on the host device. Using the settings in the web tools, the Unicode mode can be set to allow writing such characters on Linux, macOS, and Windows. Using the firmware builder, the default Unicode mode can be specified.
[[File:Javelin keyboard emulation section.png|center|thumb|1021x1021px|All the methods that Javelin supports to write Unicode characters.]]
 
==== Key map customization ====
Like with Plover, the key map can be set in Javelin to allow for tweaks such as top `S` number key, or changing the placement of the thumb keys on various boards.
[[File:Javelin key map section.png|center|thumb|1009x1009px|Javelin supports setting an arbitrary key map.]]
 
==== Adding translations ====
Using the web tools or a defined outline, it is possible to add translations to a user dictionary just like in Plover.
[[File:Adding translation with Javelin's TUI.mp4|center|thumb|562x562px|On-the-fly translations can be added with Javelin. In this case, <nowiki><code>POEUT</code></nowiki> is a free outline, and "potato" is being fingerspelled for the translation.]]
 
==== First-up and chord repeat ====
Using the firmware builder, it is trivial to add first-up chord send or chord repeat functionality to your board.
[[File:Javelin first up-chord repeat section.png|center|thumb|1015x1015px|Javelin makes it very easy to add first-up/chord repeat compared to other keyboard firmwares.]]
 
=== Compatibility with existing steno protocols ===
Instead of outputting regular text, Javelin is also capable of outputting steno protocols such as Gemini PR or Plover HID. The Default Plover and Default Lapwing firmware files already have such layers configured. This is useful if you plan to still use Plover.
 
==Public GitHub Repositories==
In select situations, one may desire to build firmware without the use of the lim.au website.
 
The public Javelin GitHub repository and its readme can be accessed [https://github.com/jthlim/javelin-steno here].
 
The Raspberry Pi Pico bindings can be found in [https://github.com/jthlim/javelin-steno-pico this repository].
 
[[Category:Javelin]]

Latest revision as of 17:40, 1 June 2025

Javelin is an embedded steno engine that is installed as a keyboard firmware. Javelin translates steno strokes to text in exactly the same way that Plover does. However, as Javelin's steno engine is embedded in the keyboard firmware itself, no extra software (such as Plover) is required on the host device.

Demo of Javelin's embedded steno engine on an Android phone.

All translations are contained within the keyboard itself ("plug-and-play stenography"). Javelin outputs the translations as if they were coming from a regular keyboard. Therefore, Javelin is compatible with any device that accepts regular USB keyboard input.

Javelin is written in C++, and authored and maintained by community member Tharelia. The recommended method of downloading and customizing Javelin is through their personal website.

Popular use cases include:

  • Typing on smartphones (which cannot run Plover)
  • Typing on work computers (where the installation of Plover may not be an option)
  • Moving between multiple devices with the same dictionary

Compatibility

Javelin is compatible with several commercially available hobbyist writers. For a complete list, visit the firmware builder and check the hardware dropdown.

As of May 2025, the following writers are supported:

Typing on a device equipped with Javelin works on any modern device that accepts USB keyboard input. This includes smartphones, Chromebooks, tablets, etc.

For iPhones with a lightning connector, a camera kit is required.

Installation Instructions

To use Javelin on your hobbyist steno writer, you will need to update the firmware. This involves downloading a Javelin firmware file, and copying it to your device.

The following video by community member Aerick goes through this process at 1:06:

format=frameless
format=frameless

You will need a computer running a desktop OS (e.g. Linux, macOS, Windows) to update your steno writer's firmware. You cannot update firmware using an Android or iOS device.



1. Select your steno writer

Firmware files can be downloaded from the Javelin firmware builder. Before proceeding, make sure the correct device is selected.

Make sure you have selected the right device before proceeding.

2. Download a firmware file

2a. New users

For new users, download either the Default Plover or Default Lapwing files depending on which theory you want to use.

Download either Default Plover or Default Lapwing.

2b. Advanced users

If you wish to customize your Javelin configuration, select the options you want, and download either incremental or standalone depending on your needs.

3. Copying the file to your device

The instructions to update your device differ depending on the board you are using; make sure you have selected the right board as outlined in step 1. You can find instructions to update your file's firmware at the bottom of the page. In general, most boards require you to hold down a button while plugging it in, and copying the firmware file you downloaded (in step 2) to the new drive.

Web Tools

Since Javelin is not a computer application, many of the same features that Plover offers are accessible through the web tools on the Javelin website.

This includes GUI tools for Add Translation, Lookup, Paper Tape, Suggestions, and more. The key layout can also be modified through this tool.

Web tools connect to Javelin-equipped writers with WebHID, which is currently supported on Chrome, Edge, and Opera only.

Troubleshooting web tools connection on Linux

If you see Error connecting while trying to connect to your device with the web tools, you need to add a udev rule. Create a file at /etc/udev/rules.d/99-keyboard-javelin.rules with the following content:

SUBSYSTEM=="hidraw", ATTRS{idVendor}=="9000", ATTRS{idProduct}=="400d", MODE="0666"

After creating the file, reload the rule with the following commands:

sudo udevadm control --reload-rules
sudo udevadm trigger
format=frameless
format=frameless

If this does not work, try replacing 9000 with feed.



Features

This section covers some noteworthy features of Javelin. If you wish to view all of the available settings and features, have a look through the Javelin firmware builder. You may have to select Show expert options to find the option you are looking for.

Embedded steno engine

Dictionary management

Several programmatic dictionaries are implemented in Javelin, and arbitrary JSON dictionaries can be added.

Adding your own arbitrary JSON dictionaries is fully supported. Using the web tools or custom defined outlines, it is possible to temporarily disable dictionaries.

Compared to Plover, however, it is not possible to add your own programmatic dictionaries (such as Python dictionaries) using the firmware builder. Some popular Python dictionaries have been implemented in Javelin, such as Emily's symbols and Jeff's phrasing. That is to say, they have been rewritten in C++ and added to the firmware builder as options. Currently, there is no officially documented way to write a programmatic dictionary for Javelin (although it is possible).

Non-WSI layouts

By default, Javelin uses Extended Stenotype layout; Javelin supports non-WSI layouts by specifying a System file in the firmware builder. Expert options must be enabled to see this, and example system files are linked from the firmware builder page.

It is currently not possible to have more than one system on a device at a time.

Unicode characters

Javelin supports several methods to write Unicode characters, which are all dependent on the host device. Using the settings in the web tools, the Unicode mode can be set to allow writing such characters on Linux, macOS, and Windows. Using the firmware builder, the default Unicode mode can be specified.

All the methods that Javelin supports to write Unicode characters.

Key map customization

Like with Plover, the key map can be set in Javelin to allow for tweaks such as top `S` number key, or changing the placement of the thumb keys on various boards.

Javelin supports setting an arbitrary key map.

Adding translations

Using the web tools or a defined outline, it is possible to add translations to a user dictionary just like in Plover.

On-the-fly translations can be added with Javelin. In this case, <code>POEUT</code> is a free outline, and "potato" is being fingerspelled for the translation.

First-up and chord repeat

Using the firmware builder, it is trivial to add first-up chord send or chord repeat functionality to your board.

Javelin makes it very easy to add first-up/chord repeat compared to other keyboard firmwares.

Compatibility with existing steno protocols

Instead of outputting regular text, Javelin is also capable of outputting steno protocols such as Gemini PR or Plover HID. The Default Plover and Default Lapwing firmware files already have such layers configured. This is useful if you plan to still use Plover.

Public GitHub Repositories

In select situations, one may desire to build firmware without the use of the lim.au website.

The public Javelin GitHub repository and its readme can be accessed here.

The Raspberry Pi Pico bindings can be found in this repository.