
Security News
npm ‘is’ Package Hijacked in Expanding Supply Chain Attack
The ongoing npm phishing campaign escalates as attackers hijack the popular 'is' package, embedding malware in multiple versions.
plover-platform-specific-translation
Advanced tools
Define multiple platform (OS) specific translations in a single steno outline.
This Plover extension plugin contains a meta that allows you to specify different outline translation values depending on what operating system (platform) you are using.
This can be helpful in times where if you use the same dictionaries with Plover across, say, Windows and macOS, and want to have a single outline for "copy" to translate as Control-C on Windows, but Command-C on macOS.
Tools
menu, select Plugins Manager
).plover-platform-specific-translation
Preferences...
)plover_platform_specific_translation
to activate the
pluginUsing the example of an outline for "copy", here are the different ways you can create a platform-specific translation in your steno dictionaries.
Specify a translation for all possible (and unknown) platforms:
"KP*EU": "{:PLATFORM:WINDOWS:#CONTROL(C),MAC:#SUPER(C),LINUX:#CONTROL(C),OTHER:#CONTROL(C)}"
Specify a translation for only some platforms, and provide a default fallback translation for any other platform:
"KP*EU": "{:PLATFORM:MAC:#SUPER(C),OTHER:#CONTROL(C)}"
Specify a translation for only some platforms, but without a fallback for other platforms (will show an error if current platform is not found, but if you are confident you know what platforms you work with, this should be fine):
"KP*EU": "{:PLATFORM:WINDOWS:#CONTROL(C),MAC:#SUPER(C)}"
Specify only a default fallback for other platforms (pointless, but supported):
"KP*EU": "{:PLATFORM:OTHER:#CONTROL(C)}"
Note that the translation values are not limited to keyboard shortcuts, and can contain commands to run:
"TO*LG": "{:PLATFORM:WINDOWS:PLOVER:TOGGLE_DICT:+win_dict.py,MAC::COMMAND:TOGGLE_DICT:+mac_dict.py}"
Both command prefixes of
{PLOVER:<command>}
and{:COMMAND:<command>}
are supported.
Naturally, plain text output is also supported:
"H-L": "{:PLATFORM:WINDOWS:Hello,MAC:Hi,LINUX:Good day,OTHER:Whassup}"
When a platform-specific translation is successfully determined from an outline,
the result is stored in the local Plover configuration directory on your
machine in a file called platform_specific_translation.json
. This is done in
order to prevent determination actions from being done multiple times for the
same outline, and hence speed up lookups for already known translations.
You should not need to manually add any entries to the configuration, but if you find any obsolete entries, feel free to delete them.
The heart of this plugin is essentially Python's platform.system()
function, which will tell you what operating system you are running Plover on.
It will return one of the following values:
"Windows"
"Darwin"
(macOS)"Linux"
"Java"
(this looks like a value for potentially deprecated Jython
environments, in which Plover will very likely never run in, so it is not
supported in this plugin)""
(unknown platform)When the extension starts, the value returned from platform.system()
gets
cached to avoid checking it every time an outline is stroked.
All the platform-specific translations also get cached, so subsequent stroking of outlines that contain them should feel snappier than the first time they are used.
Pressing the "Disconnect and reconnect the machine" button on the Plover UI resets the translation cache. If you make any changes to a specific platform-specific translation in an outline, make sure to press it so it can be re-read in again properly.
Clone from GitHub with git:
git clone git@github.com:paulfioravanti/plover-platform-specific-translation.git
cd plover-platform-specific-translation
python -m pip install --editable ".[test]"
If you are a Tmuxinator user, you may find my plover_platform_specific_translation project file of reference.
Plover's Python environment currently uses version 3.9 (see Plover's
workflow_context.yml
to confirm the current version).
So, in order to avoid unexpected issues, use your runtime version manager to make sure your local development environment also uses Python 3.9.x.
Currently, the only parts able to be tested are ones that do not rely directly on Plover.
Run tests, coverage, and linting with the following commands:
pytest --cov --cov-report=term-missing
pylint plover_local_env_var
mypy plover_local_env_var
To get a HTML test coverage report:
coverage run --module pytest
coverage html
open htmlcov/index.html
If you are a just
user, you may find the justfile
useful during
development in running multiple test commands. You can run the following command
from the project root directory:
just --working-directory . --justfile test/justfile
After making any code changes, deploy the plugin into Plover with the following command:
plover --script plover_plugins install --editable .
Where
plover
in the command is a reference to your locally installed version of Plover. See the Invoke Plover from the command line page for details on how to create that reference.
When necessary, the plugin can be uninstalled via the command line with the following command:
plover --script plover_plugins uninstall plover-platform-specific-translation
FAQs
Define multiple platform (OS) specific translations in a single steno outline.
We found that plover-platform-specific-translation demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
The ongoing npm phishing campaign escalates as attackers hijack the popular 'is' package, embedding malware in multiple versions.
Security News
A critical flaw in the popular npm form-data package could allow HTTP parameter pollution, affecting millions of projects until patched versions are adopted.
Security News
Bun 1.2.19 introduces isolated installs for smoother monorepo workflows, along with performance boosts, new tooling, and key compatibility fixes.