plover 5.1.0__tar.gz → 5.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {plover-5.1.0 → plover-5.2.0}/MANIFEST.in +2 -1
- {plover-5.1.0 → plover-5.2.0}/NEWS.md +41 -0
- {plover-5.1.0/plover.egg-info → plover-5.2.0}/PKG-INFO +5 -4
- {plover-5.1.0 → plover-5.2.0}/README.md +2 -2
- plover-5.2.0/doc/api/config.rst +188 -0
- plover-5.2.0/doc/api/engine.rst +148 -0
- plover-5.2.0/doc/api/machine_keyboard_capture.rst +20 -0
- plover-5.2.0/doc/api/machine_keymap.rst +7 -0
- {plover-5.1.0 → plover-5.2.0}/doc/conf.py +6 -5
- {plover-5.1.0 → plover-5.2.0}/doc/developer_guide.md +25 -5
- plover-5.2.0/doc/requirements.txt +4 -0
- {plover-5.1.0 → plover-5.2.0}/linux/README.md +1 -2
- {plover-5.1.0 → plover-5.2.0}/linux/appimage/build.sh +4 -28
- {plover-5.1.0 → plover-5.2.0}/osx/app_resources/Info.plist +1 -1
- {plover-5.1.0 → plover-5.2.0}/osx/dmg_resources/settings.py +3 -0
- {plover-5.1.0 → plover-5.2.0}/osx/make_app.sh +0 -32
- {plover-5.1.0 → plover-5.2.0}/plover/__init__.py +5 -3
- {plover-5.1.0 → plover-5.2.0}/plover/config.py +58 -14
- {plover-5.1.0 → plover-5.2.0}/plover/dictionary/loading_manager.py +1 -1
- {plover-5.1.0 → plover-5.2.0}/plover/engine.py +205 -37
- {plover-5.1.0 → plover-5.2.0}/plover/formatting.py +5 -2
- plover-5.2.0/plover/gui_qt/appearance.py +49 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/config_serial_widget.ui +1 -31
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/config_window.py +139 -33
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/config_window.ui +2 -2
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/console_widget.py +1 -1
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/machine_options.py +1 -19
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/main_window.py +13 -1
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/main_window.ui +43 -21
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/plugins_manager.py +9 -4
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/plugins_manager.ui +2 -2
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/trayicon.py +0 -2
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/utils.py +0 -1
- {plover-5.1.0 → plover-5.2.0}/plover/i18n.py +1 -1
- {plover-5.1.0 → plover-5.2.0}/plover/key_combo.py +3 -1
- {plover-5.1.0 → plover-5.2.0}/plover/log.py +2 -2
- {plover-5.1.0 → plover-5.2.0}/plover/machine/base.py +12 -2
- plover-5.2.0/plover/machine/keyboard_capture/__init__.py +41 -0
- {plover-5.1.0 → plover-5.2.0}/plover/machine/keymap.py +86 -10
- {plover-5.1.0 → plover-5.2.0}/plover/machine/plover_hid.py +46 -25
- {plover-5.1.0 → plover-5.2.0}/plover/machine/procat.py +0 -3
- {plover-5.1.0 → plover-5.2.0}/plover/messages/es/LC_MESSAGES/plover.po +2 -2
- {plover-5.1.0 → plover-5.2.0}/plover/messages/fr/LC_MESSAGES/plover.po +2 -2
- {plover-5.1.0 → plover-5.2.0}/plover/messages/it/LC_MESSAGES/plover.po +2 -2
- {plover-5.1.0 → plover-5.2.0}/plover/messages/nl/LC_MESSAGES/plover.po +2 -2
- {plover-5.1.0 → plover-5.2.0}/plover/messages/plover.pot +1 -1
- {plover-5.1.0 → plover-5.2.0}/plover/messages/zh_tw/LC_MESSAGES/plover.po +2 -2
- {plover-5.1.0 → plover-5.2.0}/plover/orthography.py +2 -1
- {plover-5.1.0 → plover-5.2.0}/plover/oslayer/controller.py +1 -1
- {plover-5.1.0 → plover-5.2.0}/plover/oslayer/linux/keyboardcontrol.py +4 -2
- {plover-5.1.0 → plover-5.2.0}/plover/oslayer/linux/keyboardcontrol_uinput.py +107 -343
- {plover-5.1.0 → plover-5.2.0}/plover/oslayer/linux/keyboardcontrol_x11.py +22 -13
- plover-5.2.0/plover/oslayer/linux/keyboardlayout_wayland.py +403 -0
- {plover-5.1.0 → plover-5.2.0}/plover/oslayer/linux/log.py +3 -1
- plover-5.2.0/plover/oslayer/linux/wayland_connection.py +293 -0
- {plover-5.1.0 → plover-5.2.0}/plover/oslayer/osx/keyboardlayout.py +1 -1
- {plover-5.1.0 → plover-5.2.0}/plover/plugins_manager/registry.py +4 -3
- {plover-5.1.0 → plover-5.2.0}/plover/registry.py +1 -1
- {plover-5.1.0 → plover-5.2.0}/plover/scripts/main.py +6 -3
- {plover-5.1.0 → plover-5.2.0}/plover/system/__init__.py +7 -7
- {plover-5.1.0 → plover-5.2.0/plover.egg-info}/PKG-INFO +5 -4
- {plover-5.1.0 → plover-5.2.0}/plover.egg-info/SOURCES.txt +7 -9
- {plover-5.1.0 → plover-5.2.0}/plover.egg-info/requires.txt +2 -1
- {plover-5.1.0 → plover-5.2.0}/plover_build_utils/check_requirements.py +0 -3
- {plover-5.1.0 → plover-5.2.0}/plover_build_utils/functions.sh +0 -11
- {plover-5.1.0 → plover-5.2.0}/plover_build_utils/testing/__init__.py +9 -0
- {plover-5.1.0 → plover-5.2.0}/plover_build_utils/testing/blackbox.py +3 -1
- {plover-5.1.0 → plover-5.2.0}/plover_build_utils/testing/steno_dictionary.py +2 -2
- {plover-5.1.0 → plover-5.2.0}/reqs/constraints.txt +2 -2
- plover-5.2.0/reqs/dev.txt +8 -0
- {plover-5.1.0 → plover-5.2.0}/reqs/dist.txt +2 -1
- {plover-5.1.0 → plover-5.2.0}/setup.py +7 -0
- {plover-5.1.0 → plover-5.2.0}/test/gui_qt/test_dictionaries_widget.py +2 -3
- {plover-5.1.0 → plover-5.2.0}/test/test_config.py +3 -1
- {plover-5.1.0 → plover-5.2.0}/test/test_engine.py +1 -1
- {plover-5.1.0 → plover-5.2.0}/test/test_keyboard.py +1 -1
- {plover-5.1.0 → plover-5.2.0}/test/test_steno_dictionary.py +10 -4
- {plover-5.1.0 → plover-5.2.0}/tox.ini +0 -16
- {plover-5.1.0 → plover-5.2.0}/windows/dist_build.sh +0 -24
- plover-5.1.0/doc/api/config.md +0 -254
- plover-5.1.0/doc/api/engine.md +0 -367
- plover-5.1.0/doc/api/machine_keyboard_capture.md +0 -42
- plover-5.1.0/doc/api/machine_keymap.md +0 -90
- plover-5.1.0/doc/requirements.txt +0 -3
- plover-5.1.0/linux/build_hidapi.sh +0 -8
- plover-5.1.0/osx/build_hidapi.sh +0 -9
- plover-5.1.0/plover/machine/keyboard_capture/__init__.py +0 -18
- plover-5.1.0/plover_build_utils/deps.sh +0 -2
- plover-5.1.0/reqs/dev.txt +0 -4
- plover-5.1.0/test/py37compat.py +0 -6
- plover-5.1.0/windows/build_hidapi.sh +0 -19
- {plover-5.1.0 → plover-5.2.0}/CONTRIBUTING.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/LICENSE.txt +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/SCOWL_README.txt +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/_static/board-layout.png +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/_static/custom.css +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/_static/de-speech.png +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/_static/dolores.svg +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/_static/engine-flow.png +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/_static/favicon.ico +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/_static/jp-speech.png +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/_static/keys-layout.png +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/_static/uncomfortable.png +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/_templates/breadcrumbs.html +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/_templates/layout.html +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/add_translation.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/api/dictionary.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/api/dictionary_lib.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/api/exception.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/api/formatting.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/api/i18n.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/api/key_combo.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/api/log.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/api/machine.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/api/misc.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/api/orthography.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/api/oslayer.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/api/oslayer_config.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/api/oslayer_controller.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/api/oslayer_i18n.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/api/oslayer_keyboardcontrol.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/api/oslayer_log.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/api/oslayer_wmctrl.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/api/output.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/api/plover.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/api/plover_stroke.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/api/qt.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/api/registry.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/api/resource.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/api/steno.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/api/steno_dictionary.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/api/suggestions.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/api/system.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/api/translation.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/api_reference.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/basic_usage.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/ci.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/cli_reference.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/configuration.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/contributing.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/design.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/dict_editor.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/dict_formats.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/dictionaries.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/hardware_communication.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/hardware_setup.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/i18n.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/index.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/installation.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/internals.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/platform_layer.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/plugin-dev/commands.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/plugin-dev/dictionaries.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/plugin-dev/extensions.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/plugin-dev/gui_tools.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/plugin-dev/machines.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/plugin-dev/macros.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/plugin-dev/metas.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/plugin-dev/publishing.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/plugin-dev/setup.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/plugin-dev/systems.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/plugin_dev.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/plugins.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/releases.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/system-dev/board-layout.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/system-dev/key-arrangement.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/system-dev/layout-test.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/system-dev/steno-system.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/system-dev/system.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/system_dev.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/doc/translation_language.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/linux/appimage/Dockerfile +0 -0
- {plover-5.1.0 → plover-5.2.0}/linux/appimage/apprun.sh +0 -0
- {plover-5.1.0 → plover-5.2.0}/linux/appimage/blacklist.txt +0 -0
- {plover-5.1.0 → plover-5.2.0}/linux/appimage/deps.sh +0 -0
- {plover-5.1.0 → plover-5.2.0}/linux/appimage/pyinfo.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/linux/plover.desktop +0 -0
- {plover-5.1.0 → plover-5.2.0}/news.d/api/.gitignore +0 -0
- {plover-5.1.0 → plover-5.2.0}/news.d/bugfix/.gitignore +0 -0
- {plover-5.1.0 → plover-5.2.0}/news.d/feature/.gitignore +0 -0
- {plover-5.1.0 → plover-5.2.0}/news.d/template.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/osx/README.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/osx/app_resources/dist_blacklist.txt +0 -0
- {plover-5.1.0 → plover-5.2.0}/osx/app_resources/plover.icns +0 -0
- {plover-5.1.0 → plover-5.2.0}/osx/app_resources/plover_launcher.c +0 -0
- {plover-5.1.0 → plover-5.2.0}/osx/deps.sh +0 -0
- {plover-5.1.0 → plover-5.2.0}/osx/dmg_resources/background.png +0 -0
- {plover-5.1.0 → plover-5.2.0}/osx/dmg_resources/background.psd +0 -0
- {plover-5.1.0 → plover-5.2.0}/osx/dmg_resources/background@2x.png +0 -0
- {plover-5.1.0 → plover-5.2.0}/osx/make_dmg.sh +0 -0
- {plover-5.1.0 → plover-5.2.0}/osx/notarize_app.sh +0 -0
- {plover-5.1.0 → plover-5.2.0}/osx/notarize_common.sh +0 -0
- {plover-5.1.0 → plover-5.2.0}/osx/notarize_dmg.sh +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/__main__.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/assets/american_english_words.txt +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/assets/commands.json +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/assets/main.json +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/assets/plover-icon.svg +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/assets/plover.ico +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/assets/plover.png +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/assets/user.json +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/command/__init__.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/command/set_config.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/dictionary/__init__.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/dictionary/base.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/dictionary/helpers.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/dictionary/json_dict.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/dictionary/rtfcre_dict.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/dictionary/rtfcre_parse.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/exception.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_none/__init__.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_none/add_translation.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_none/engine.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_none/main.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/__init__.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/about_dialog.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/about_dialog.ui +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/add_translation_dialog.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/add_translation_dialog.ui +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/add_translation_widget.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/add_translation_widget.ui +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/config_file_widget.ui +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/config_keyboard_widget.ui +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/config_plover_hid_widget.ui +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/console_widget.ui +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/dictionaries_widget.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/dictionaries_widget.ui +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/dictionary_editor.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/dictionary_editor.ui +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/engine.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/info_browser.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/log_qt.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/lookup_dialog.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/lookup_dialog.ui +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/main.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/paper_tape.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/paper_tape.ui +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/resources/__init__.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/resources/add.svg +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/resources/dictionary_error.svg +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/resources/dictionary_favorite.svg +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/resources/dictionary_loading.svg +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/resources/dictionary_normal.svg +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/resources/dictionary_readonly.svg +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/resources/down.svg +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/resources/folder.svg +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/resources/font_selector.svg +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/resources/git.png +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/resources/lightbulb.svg +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/resources/lookup.svg +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/resources/pencil.svg +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/resources/pin.svg +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/resources/plover.png +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/resources/plugins_manager.svg +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/resources/reconnect.svg +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/resources/remove.svg +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/resources/save.svg +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/resources/settings.svg +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/resources/state-disabled.svg +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/resources/state-disconnected.svg +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/resources/state-enabled.svg +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/resources/tape.svg +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/resources/translation_add.svg +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/resources/trash.svg +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/resources/undo.svg +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/resources/up.svg +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/resources.qrc +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/run_dialog.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/run_dialog.ui +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/steno_validator.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/suggestions_dialog.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/suggestions_dialog.ui +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/suggestions_widget.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/gui_qt/tool.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/machine/__init__.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/machine/gemini_pr.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/machine/keyboard.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/machine/passport.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/machine/stentura.py +5 -5
- {plover-5.1.0 → plover-5.2.0}/plover/machine/tx_bolt.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/macro/__init__.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/macro/repeat.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/macro/retro.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/macro/undo.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/meta/__init__.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/meta/attach.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/meta/case.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/meta/command.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/meta/conditional.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/meta/currency.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/meta/glue.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/meta/key_combo.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/meta/mode.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/meta/punctuation.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/meta/word_end.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/misc.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/oslayer/__init__.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/oslayer/config.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/oslayer/linux/__init__.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/oslayer/linux/display_server.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/oslayer/linux/i18n.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/oslayer/linux/log_dbus.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/oslayer/linux/serial.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/oslayer/linux/wmctrl.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/oslayer/linux/wmctrl_x11.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/oslayer/osx/__init__.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/oslayer/osx/i18n.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/oslayer/osx/keyboardcontrol.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/oslayer/osx/log.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/oslayer/osx/serial.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/oslayer/osx/wmctrl.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/oslayer/windows/__init__.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/oslayer/windows/i18n.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/oslayer/windows/keyboardcontrol.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/oslayer/windows/keyboardlayout.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/oslayer/windows/log.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/oslayer/windows/serial.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/oslayer/windows/wmctrl.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/output/__init__.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/output/keyboard.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/plugins_manager/__init__.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/plugins_manager/__main__.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/plugins_manager/global_registry.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/plugins_manager/local_registry.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/plugins_manager/package_index.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/plugins_manager/pip_wrapper.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/plugins_manager/plugin_metadata.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/plugins_manager/requests.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/plugins_manager/utils.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/resource.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/scripts/__init__.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/scripts/dist_main.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/scripts/send_command.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/steno.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/steno_dictionary.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/suggestions.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/system/english_stenotype.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover/translation.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover.egg-info/dependency_links.txt +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover.egg-info/entry_points.txt +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover.egg-info/top_level.txt +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover.egg-info/zip-safe +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover_build_utils/__init__.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover_build_utils/download.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover_build_utils/get_pip.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover_build_utils/install_wheels.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover_build_utils/pyqt.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover_build_utils/setup.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover_build_utils/source_less.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover_build_utils/testing/dict.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover_build_utils/testing/output.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover_build_utils/testing/parametrize.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover_build_utils/testing/steno.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover_build_utils/tree.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover_build_utils/trim.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/plover_build_utils/zipdir.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/pyproject.toml +0 -0
- {plover-5.1.0 → plover-5.2.0}/pytest.ini +0 -0
- {plover-5.1.0 → plover-5.2.0}/reqs/bootstrap.txt +0 -0
- {plover-5.1.0 → plover-5.2.0}/reqs/build.txt +0 -0
- {plover-5.1.0 → plover-5.2.0}/reqs/ci.txt +0 -0
- {plover-5.1.0 → plover-5.2.0}/reqs/code_quality.txt +0 -0
- {plover-5.1.0 → plover-5.2.0}/reqs/dist_extra_gui_qt.txt +0 -0
- {plover-5.1.0 → plover-5.2.0}/reqs/dist_extra_log.txt +0 -0
- {plover-5.1.0 → plover-5.2.0}/reqs/packaging.txt +0 -0
- {plover-5.1.0 → plover-5.2.0}/reqs/release.txt +0 -0
- {plover-5.1.0 → plover-5.2.0}/reqs/setup.txt +0 -0
- {plover-5.1.0 → plover-5.2.0}/reqs/test.txt +0 -0
- {plover-5.1.0 → plover-5.2.0}/setup.cfg +0 -0
- {plover-5.1.0 → plover-5.2.0}/test/__init__.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/test/conftest.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/test/gui_qt/__init__.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/test/gui_qt/test_steno_validator.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/test/test_blackbox.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/test/test_command.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/test/test_default_dict.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/test/test_formatting.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/test/test_json_dict.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/test/test_key_combo.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/test/test_keymap.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/test/test_loading_manager.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/test/test_log.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/test/test_machine.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/test/test_misc.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/test/test_orthography.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/test/test_passport.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/test/test_resource.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/test/test_rtfcre_dict.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/test/test_steno.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/test/test_stentura.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/test/test_translation.py +0 -0
- {plover-5.1.0 → plover-5.2.0}/windows/README.md +0 -0
- {plover-5.1.0 → plover-5.2.0}/windows/dist_blacklist.txt +0 -0
- {plover-5.1.0 → plover-5.2.0}/windows/dist_deps.sh +0 -0
- {plover-5.1.0 → plover-5.2.0}/windows/installer.bmp +0 -0
- {plover-5.1.0 → plover-5.2.0}/windows/installer.nsi +0 -0
|
@@ -5,6 +5,7 @@ recursive-include doc *.css
|
|
|
5
5
|
recursive-include doc *.html
|
|
6
6
|
recursive-include doc *.ico
|
|
7
7
|
recursive-include doc *.md
|
|
8
|
+
recursive-include doc *.rst
|
|
8
9
|
recursive-include doc *.png
|
|
9
10
|
recursive-include doc *.svg
|
|
10
11
|
recursive-include doc *.py
|
|
@@ -33,10 +34,10 @@ include test/*.py
|
|
|
33
34
|
include test/gui_qt/*.py
|
|
34
35
|
include tox.ini
|
|
35
36
|
include windows/*
|
|
36
|
-
exclude dev/*
|
|
37
37
|
exclude .pre-commit-config.yaml
|
|
38
38
|
# without first including it, exluding .readthedocs.yml results in a warning when running locally
|
|
39
39
|
include .readthedocs.yml
|
|
40
40
|
exclude .readthedocs.yml
|
|
41
41
|
exclude plover/gui_qt/*_rc.py
|
|
42
42
|
exclude plover/gui_qt/*_ui.py
|
|
43
|
+
exclude .mailmap
|
|
@@ -1,3 +1,44 @@
|
|
|
1
|
+
# v5.2.0 (2026-02-01)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
## Features
|
|
5
|
+
|
|
6
|
+
### Linux
|
|
7
|
+
|
|
8
|
+
- Support determining keyboard layout from Wayland with the `wayland-auto` layout. (#1807)
|
|
9
|
+
- Avoid unnecessary rapid modifier key press/release while typing. (#1810)
|
|
10
|
+
|
|
11
|
+
### macOS
|
|
12
|
+
|
|
13
|
+
- Add appearance configuration option. (#1786)
|
|
14
|
+
|
|
15
|
+
### Windows
|
|
16
|
+
|
|
17
|
+
- Add appearance configuration option. (#1786)
|
|
18
|
+
|
|
19
|
+
## Bugfixes
|
|
20
|
+
|
|
21
|
+
### Core
|
|
22
|
+
|
|
23
|
+
- Fix a corner case in `plover -s (script)`. (#1803)
|
|
24
|
+
|
|
25
|
+
### User Interface
|
|
26
|
+
|
|
27
|
+
- Fix default window sizes and extensions config table. (#1789)
|
|
28
|
+
- Update Thea's name and email. (#1792)
|
|
29
|
+
- Remove broken use_timeout checkbox in serial options. (#1793)
|
|
30
|
+
- Make the plugin manager handle some exceptional cases. (#1802)
|
|
31
|
+
|
|
32
|
+
### macOS
|
|
33
|
+
|
|
34
|
+
- Hide the Start Minimized setting on macOS due to bug in macOS 26. (#1788)
|
|
35
|
+
|
|
36
|
+
## API
|
|
37
|
+
|
|
38
|
+
### Core
|
|
39
|
+
|
|
40
|
+
- Migrate HID library to cython-hidapi. (#1812)
|
|
41
|
+
|
|
1
42
|
# v5.1.0 (2025-11-04)
|
|
2
43
|
|
|
3
44
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: plover
|
|
3
|
-
Version: 5.
|
|
3
|
+
Version: 5.2.0
|
|
4
4
|
Summary: Open Source Stenography Software
|
|
5
5
|
Home-page: http://www.openstenoproject.org/
|
|
6
6
|
Download-URL: http://www.openstenoproject.org/plover
|
|
@@ -35,7 +35,7 @@ Description-Content-Type: text/markdown
|
|
|
35
35
|
License-File: LICENSE.txt
|
|
36
36
|
Requires-Dist: appdirs
|
|
37
37
|
Requires-Dist: appnope; "darwin" in sys_platform
|
|
38
|
-
Requires-Dist:
|
|
38
|
+
Requires-Dist: hidapi
|
|
39
39
|
Requires-Dist: pkginfo
|
|
40
40
|
Requires-Dist: plover-stroke
|
|
41
41
|
Requires-Dist: plyer; "win32" in sys_platform
|
|
@@ -48,6 +48,7 @@ Requires-Dist: python-xlib; "linux" in sys_platform or "bsd" in sys_platform
|
|
|
48
48
|
Requires-Dist: evdev; "linux" in sys_platform or "bsd" in sys_platform
|
|
49
49
|
Requires-Dist: packaging
|
|
50
50
|
Requires-Dist: psutil; "linux" in sys_platform or "bsd" in sys_platform
|
|
51
|
+
Requires-Dist: xkbcommon<1.1; "linux" in sys_platform or "bsd" in sys_platform
|
|
51
52
|
Requires-Dist: readme-renderer[md]
|
|
52
53
|
Requires-Dist: requests-cache
|
|
53
54
|
Requires-Dist: requests-futures
|
|
@@ -165,7 +166,7 @@ including [StenoJig][] (JavaScript) and [StenoTray][] (Java).
|
|
|
165
166
|
- The [Plover Wiki][Wiki] discusses Plover and Open Steno in
|
|
166
167
|
general. Edits to the Wiki and new page ideas are welcome.
|
|
167
168
|
- Graphic art for Plover and stenography in general is always
|
|
168
|
-
appreciated. The app's icons are worked on at [
|
|
169
|
+
appreciated. The app's icons are worked on at [panathea/plover\_icons][].
|
|
169
170
|
You may consider reimagining or reposing [Plover's mascot, Dolores][Mascot].
|
|
170
171
|
- UX improvement suggestions are welcome. Plover runs on Windows, Mac,
|
|
171
172
|
and Linux, and should be powerful but out of the way, which poses
|
|
@@ -204,7 +205,7 @@ Please follow through for your system:
|
|
|
204
205
|
[Troubleshooting Common Issues]: https://plover.wiki/index.php/Troubleshooting_issues
|
|
205
206
|
[Wiki]: https://plover.wiki
|
|
206
207
|
[installation guide]: https://plover.wiki/index.php/Installation_Guide
|
|
207
|
-
[
|
|
208
|
+
[panathea/plover\_icons]: https://github.com/panathea/plover_icons
|
|
208
209
|
[Windows README]: https://github.com/openstenoproject/plover/blob/main/windows/README.md
|
|
209
210
|
[Linux README]: https://github.com/openstenoproject/plover/blob/main/linux/README.md
|
|
210
211
|
[macOS README]: https://github.com/openstenoproject/plover/blob/main/osx/README.md
|
|
@@ -98,7 +98,7 @@ including [StenoJig][] (JavaScript) and [StenoTray][] (Java).
|
|
|
98
98
|
- The [Plover Wiki][Wiki] discusses Plover and Open Steno in
|
|
99
99
|
general. Edits to the Wiki and new page ideas are welcome.
|
|
100
100
|
- Graphic art for Plover and stenography in general is always
|
|
101
|
-
appreciated. The app's icons are worked on at [
|
|
101
|
+
appreciated. The app's icons are worked on at [panathea/plover\_icons][].
|
|
102
102
|
You may consider reimagining or reposing [Plover's mascot, Dolores][Mascot].
|
|
103
103
|
- UX improvement suggestions are welcome. Plover runs on Windows, Mac,
|
|
104
104
|
and Linux, and should be powerful but out of the way, which poses
|
|
@@ -137,7 +137,7 @@ Please follow through for your system:
|
|
|
137
137
|
[Troubleshooting Common Issues]: https://plover.wiki/index.php/Troubleshooting_issues
|
|
138
138
|
[Wiki]: https://plover.wiki
|
|
139
139
|
[installation guide]: https://plover.wiki/index.php/Installation_Guide
|
|
140
|
-
[
|
|
140
|
+
[panathea/plover\_icons]: https://github.com/panathea/plover_icons
|
|
141
141
|
[Windows README]: https://github.com/openstenoproject/plover/blob/main/windows/README.md
|
|
142
142
|
[Linux README]: https://github.com/openstenoproject/plover/blob/main/linux/README.md
|
|
143
143
|
[macOS README]: https://github.com/openstenoproject/plover/blob/main/osx/README.md
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
``plover.config`` -- Configuration
|
|
2
|
+
==================================
|
|
3
|
+
|
|
4
|
+
.. automodule:: plover.config
|
|
5
|
+
:no-members:
|
|
6
|
+
|
|
7
|
+
.. autoclass:: plover.config.Config
|
|
8
|
+
:members:
|
|
9
|
+
:member-order: bysource
|
|
10
|
+
:special-members: __getitem__, __setitem__
|
|
11
|
+
|
|
12
|
+
.. autoexception:: plover.config.InvalidConfigOption
|
|
13
|
+
|
|
14
|
+
.. autoclass:: plover.config.DictionaryConfig
|
|
15
|
+
:members:
|
|
16
|
+
:member-order: bysource
|
|
17
|
+
|
|
18
|
+
.. _config-keys:
|
|
19
|
+
|
|
20
|
+
Configuration Options
|
|
21
|
+
---------------------
|
|
22
|
+
|
|
23
|
+
Below is the list of all available configuration keys:
|
|
24
|
+
|
|
25
|
+
Output
|
|
26
|
+
~~~~~~
|
|
27
|
+
|
|
28
|
+
.. describe:: space_placement
|
|
29
|
+
|
|
30
|
+
When writing translations, whether to add spaces before or after each
|
|
31
|
+
translation. Possible values are ``Before Output`` and ``After Output``.
|
|
32
|
+
By default, will add spaces *before* translations.
|
|
33
|
+
|
|
34
|
+
.. describe:: start_attached
|
|
35
|
+
|
|
36
|
+
Whether to delete the space before the translation when the initial
|
|
37
|
+
stroke is translated. ``False`` by default.
|
|
38
|
+
|
|
39
|
+
.. describe:: start_capitalized
|
|
40
|
+
|
|
41
|
+
Whether to capitalize the translation when the initial stroke is
|
|
42
|
+
translated. ``False`` by default.
|
|
43
|
+
|
|
44
|
+
.. describe:: undo_levels
|
|
45
|
+
|
|
46
|
+
The maximum number of translations Plover is allowed to undo. 100 by default.
|
|
47
|
+
|
|
48
|
+
Each stroke that performs a translation is added onto an undo stack, and
|
|
49
|
+
undo strokes (such as ``*``) remove translations from this stack.
|
|
50
|
+
``undo_levels`` defines the maximum number of translations in the stack.
|
|
51
|
+
|
|
52
|
+
Logging
|
|
53
|
+
~~~~~~~
|
|
54
|
+
|
|
55
|
+
.. describe:: log_file_name
|
|
56
|
+
|
|
57
|
+
The path to the stroke log file, either absolute or expressed relative to
|
|
58
|
+
:data:`CONFIG_DIR<plover.oslayer.config.CONFIG_DIR>`. ``strokes.log`` by default.
|
|
59
|
+
|
|
60
|
+
This only sets the path for stroke logs; main Plover logs are always
|
|
61
|
+
written to ``plover.log``.
|
|
62
|
+
|
|
63
|
+
.. describe:: enable_stroke_logging
|
|
64
|
+
|
|
65
|
+
Whether to log strokes. ``False`` by default.
|
|
66
|
+
|
|
67
|
+
.. describe:: enable_translation_logging
|
|
68
|
+
|
|
69
|
+
Whether to log translations. ``False`` by default.
|
|
70
|
+
|
|
71
|
+
Interface
|
|
72
|
+
~~~~~~~~~
|
|
73
|
+
|
|
74
|
+
.. describe:: start_minimized
|
|
75
|
+
|
|
76
|
+
Whether to hide the main window when Plover starts up. ``False`` by default.
|
|
77
|
+
|
|
78
|
+
.. describe:: show_stroke_display
|
|
79
|
+
|
|
80
|
+
Whether to show the paper tape when Plover starts up. ``False`` by default.
|
|
81
|
+
|
|
82
|
+
.. describe:: show_suggestions_display
|
|
83
|
+
|
|
84
|
+
Whether to show the suggestions window when Plover starts up. ``False`` by default.
|
|
85
|
+
|
|
86
|
+
.. describe:: translation_frame_opacity
|
|
87
|
+
|
|
88
|
+
The opacity of the Add Translation tool, in percent. 100 by default.
|
|
89
|
+
|
|
90
|
+
.. describe:: classic_dictionaries_display_order
|
|
91
|
+
|
|
92
|
+
The order the dictionaries are displayed in the main window.
|
|
93
|
+
``True`` displays the highest priority dictionary at the bottom;
|
|
94
|
+
``False`` displays it at the top. ``False`` by default.
|
|
95
|
+
|
|
96
|
+
Plugins
|
|
97
|
+
~~~~~~~
|
|
98
|
+
|
|
99
|
+
.. describe:: enabled_extensions
|
|
100
|
+
|
|
101
|
+
The list of extensions that are enabled.
|
|
102
|
+
|
|
103
|
+
Machine
|
|
104
|
+
~~~~~~~
|
|
105
|
+
|
|
106
|
+
.. describe:: auto_start
|
|
107
|
+
|
|
108
|
+
Whether to enable Plover output when it starts up. ``False`` by default.
|
|
109
|
+
|
|
110
|
+
.. describe:: machine_type
|
|
111
|
+
|
|
112
|
+
The name of the currently active machine. ``Keyboard`` by default.
|
|
113
|
+
|
|
114
|
+
.. describe:: machine_specific_options
|
|
115
|
+
|
|
116
|
+
A dictionary of configuration options specific to the current machine.
|
|
117
|
+
Consult your machine plugin's documentation to see the available properties.
|
|
118
|
+
For the default machine plugins, the following options are available:
|
|
119
|
+
|
|
120
|
+
.. describe:: arpeggiate
|
|
121
|
+
|
|
122
|
+
Whether to enable arpeggiate mode on the keyboard. ``False`` by default.
|
|
123
|
+
|
|
124
|
+
.. describe:: port
|
|
125
|
+
|
|
126
|
+
The serial port for serial connections. No default value.
|
|
127
|
+
|
|
128
|
+
The value will most likely be different between platforms; Windows uses COM
|
|
129
|
+
ports, e.g. ``COM3``, whereas Unix-like platforms use device paths, e.g.
|
|
130
|
+
``/dev/cu.usbmodem14403`` or ``/dev/ttyACM0``.
|
|
131
|
+
|
|
132
|
+
.. describe:: baudrate
|
|
133
|
+
|
|
134
|
+
The baud rate for serial connections. 9600 by default.
|
|
135
|
+
|
|
136
|
+
.. describe:: bytesize
|
|
137
|
+
|
|
138
|
+
The number of bits in a byte for serial connections. 8 by default.
|
|
139
|
+
|
|
140
|
+
.. describe:: parity
|
|
141
|
+
|
|
142
|
+
The parity bit mode for serial connections, one of
|
|
143
|
+
``N`` (none), ``O`` (odd), ``E`` (even), ``M`` (mark) or ``S`` (space).
|
|
144
|
+
``N`` by default.
|
|
145
|
+
|
|
146
|
+
.. describe:: stopbits
|
|
147
|
+
|
|
148
|
+
The number of stop bits for serial connections. 1 by default.
|
|
149
|
+
|
|
150
|
+
.. describe:: timeout
|
|
151
|
+
|
|
152
|
+
The read timeout for serial connections in seconds. 2.0 (2 seconds) by default.
|
|
153
|
+
|
|
154
|
+
.. describe:: xonxoff
|
|
155
|
+
|
|
156
|
+
Whether to use XON/XOFF flow control for serial connections.
|
|
157
|
+
``False`` by default.
|
|
158
|
+
|
|
159
|
+
.. describe:: rtscts
|
|
160
|
+
|
|
161
|
+
Whether to use RTS/CTS flow control for serial connections.
|
|
162
|
+
``False`` by default.
|
|
163
|
+
|
|
164
|
+
System
|
|
165
|
+
~~~~~~
|
|
166
|
+
|
|
167
|
+
.. describe:: system_name
|
|
168
|
+
|
|
169
|
+
The name of the current steno system. This is the same system that
|
|
170
|
+
:mod:`plover.system` refers to. ``English Stenotype`` by default.
|
|
171
|
+
|
|
172
|
+
.. describe:: system_keymap
|
|
173
|
+
|
|
174
|
+
A :class:`Keymap<plover.machine.keymap.Keymap>` mapping between machine
|
|
175
|
+
keys and steno keys in the current steno system.
|
|
176
|
+
|
|
177
|
+
If the system defines a keymap in :data:`KEYMAPS<plover.system.KEYMAPS>`
|
|
178
|
+
for the current machine type, that will be the default value; otherwise,
|
|
179
|
+
the machine may define a
|
|
180
|
+
:attr:`KEYMAP_MACHINE_TYPE<plover.machine.base.StenotypeBase.KEYMAP_MACHINE_TYPE>`
|
|
181
|
+
that describes a similar machine to fall back on. If that is not available
|
|
182
|
+
either, the default value is an empty keymap.
|
|
183
|
+
|
|
184
|
+
.. describe:: dictionaries
|
|
185
|
+
|
|
186
|
+
A list of :class:`DictionaryConfig` representing the list of dictionaries
|
|
187
|
+
Plover uses to translate strokes for the current steno system. The
|
|
188
|
+
dictionaries should be listed in order of decreasing priority.
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
``plover.engine`` -- Steno engine
|
|
2
|
+
====================================================================
|
|
3
|
+
|
|
4
|
+
.. automodule:: plover.engine
|
|
5
|
+
:no-members:
|
|
6
|
+
|
|
7
|
+
.. autoclass:: plover.engine.StenoEngine
|
|
8
|
+
|
|
9
|
+
.. automethod:: _in_engine_thread
|
|
10
|
+
|
|
11
|
+
.. automethod:: start
|
|
12
|
+
|
|
13
|
+
.. automethod:: quit
|
|
14
|
+
|
|
15
|
+
.. automethod:: restart
|
|
16
|
+
|
|
17
|
+
.. automethod:: run
|
|
18
|
+
|
|
19
|
+
.. automethod:: join
|
|
20
|
+
|
|
21
|
+
.. automethod:: load_config
|
|
22
|
+
|
|
23
|
+
.. automethod:: reset_machine
|
|
24
|
+
|
|
25
|
+
.. automethod:: _send_engine_command
|
|
26
|
+
|
|
27
|
+
.. automethod:: toggle_output
|
|
28
|
+
|
|
29
|
+
.. automethod:: set_output
|
|
30
|
+
|
|
31
|
+
.. automethod:: __getitem__
|
|
32
|
+
|
|
33
|
+
.. automethod:: __setitem__
|
|
34
|
+
|
|
35
|
+
.. automethod:: get_suggestions
|
|
36
|
+
|
|
37
|
+
.. automethod:: clear_translator_state
|
|
38
|
+
|
|
39
|
+
.. automethod:: hook_connect
|
|
40
|
+
|
|
41
|
+
.. automethod:: hook_disconnect
|
|
42
|
+
|
|
43
|
+
The following methods simply provide a way to access the underlying
|
|
44
|
+
:class:`StenoDictionaryCollection<plover.steno_dictionary.StenoDictionaryCollection>`.
|
|
45
|
+
See the documentation there for more complete information.
|
|
46
|
+
|
|
47
|
+
.. automethod:: lookup
|
|
48
|
+
|
|
49
|
+
.. automethod:: raw_lookup
|
|
50
|
+
|
|
51
|
+
.. automethod:: lookup_from_all
|
|
52
|
+
|
|
53
|
+
.. automethod:: raw_lookup_from_all
|
|
54
|
+
|
|
55
|
+
.. automethod:: reverse_lookup
|
|
56
|
+
|
|
57
|
+
.. automethod:: casereverse_lookup
|
|
58
|
+
|
|
59
|
+
.. automethod:: add_dictionary_filter
|
|
60
|
+
|
|
61
|
+
.. automethod:: remove_dictionary_filter
|
|
62
|
+
|
|
63
|
+
.. automethod:: add_translation
|
|
64
|
+
|
|
65
|
+
.. autoclass:: plover.engine.StartingStrokeState
|
|
66
|
+
|
|
67
|
+
.. autoclass:: plover.engine.MachineParams
|
|
68
|
+
|
|
69
|
+
.. autoclass:: plover.engine.ErroredDictionary
|
|
70
|
+
|
|
71
|
+
.. _engine-hooks:
|
|
72
|
+
|
|
73
|
+
Engine Hooks
|
|
74
|
+
------------
|
|
75
|
+
|
|
76
|
+
Plover uses engine hooks to allow plugins to listen to engine events. By
|
|
77
|
+
calling :meth:`engine.hook_connect<plover.engine.StenoEngine.hook_connect>` and passing the
|
|
78
|
+
name of one of the hooks below and a function, you can write handlers that are
|
|
79
|
+
called when Plover hooks get triggered.
|
|
80
|
+
|
|
81
|
+
.. plover:hook:: stroked(stroke: plover.steno.Stroke)
|
|
82
|
+
|
|
83
|
+
The user just sent a stroke.
|
|
84
|
+
|
|
85
|
+
.. plover:hook:: translated(old, new)
|
|
86
|
+
|
|
87
|
+
.. plover:hook:: machine_state_changed(machine_type: str, machine_state: str)
|
|
88
|
+
|
|
89
|
+
Either the machine type was changed by the user, or the connection state
|
|
90
|
+
of the machine changed. ``machine_type`` is the name of the machine
|
|
91
|
+
(e.g. ``Gemini PR``), and ``machine_state`` is one of ``stopped``,
|
|
92
|
+
``initializing``, ``connected`` or ``disconnected``.
|
|
93
|
+
|
|
94
|
+
.. plover:hook:: output_changed(enabled: bool)
|
|
95
|
+
|
|
96
|
+
The user requested to either enable or disable steno output. ``enabled`` is
|
|
97
|
+
``True`` if output is enabled, ``False`` otherwise.
|
|
98
|
+
|
|
99
|
+
.. plover:hook:: config_changed(config: Dict[str, Any])
|
|
100
|
+
|
|
101
|
+
The configuration was changed, or it was loaded for the first time.
|
|
102
|
+
``config`` is a dictionary containing *only* the changed fields. Call the
|
|
103
|
+
hook function with the :attr:`StenoEngine.config<plover.engine.StenoEngine.config>`
|
|
104
|
+
to initialize your plugin based on the full configuration.
|
|
105
|
+
|
|
106
|
+
.. plover:hook:: dictionaries_loaded(dictionaries: plover.steno_dictionary.StenoDictionaryCollection)
|
|
107
|
+
|
|
108
|
+
The dictionaries were loaded, either when Plover starts up or the system
|
|
109
|
+
is changed or when the engine is reset.
|
|
110
|
+
|
|
111
|
+
.. plover:hook:: send_string(s: str)
|
|
112
|
+
|
|
113
|
+
Plover just sent the string ``s`` over keyboard output.
|
|
114
|
+
|
|
115
|
+
.. plover:hook:: send_backspaces(b: int)
|
|
116
|
+
|
|
117
|
+
Plover just sent backspaces over keyboard output. ``b`` is the number of
|
|
118
|
+
backspaces sent.
|
|
119
|
+
|
|
120
|
+
.. plover:hook:: send_key_combination(c: str)
|
|
121
|
+
|
|
122
|
+
Plover just sent a keyboard combination over keyboard output. ``c`` is a
|
|
123
|
+
string representing the keyboard combination, for example ``Alt_L(Tab)``.
|
|
124
|
+
|
|
125
|
+
.. plover:hook:: add_translation()
|
|
126
|
+
|
|
127
|
+
The Add Translation command was activated -- open the Add Translation tool.
|
|
128
|
+
|
|
129
|
+
.. plover:hook:: focus()
|
|
130
|
+
|
|
131
|
+
The Show command was activated -- reopen Plover's main window and bring it
|
|
132
|
+
to the front.
|
|
133
|
+
|
|
134
|
+
.. plover:hook:: configure()
|
|
135
|
+
|
|
136
|
+
The Configure command was activated -- open the configuration window.
|
|
137
|
+
|
|
138
|
+
.. plover:hook:: lookup()
|
|
139
|
+
|
|
140
|
+
The Lookup command was activated -- open the Lookup tool.
|
|
141
|
+
|
|
142
|
+
.. plover:hook:: suggestions()
|
|
143
|
+
|
|
144
|
+
The Suggestions command was activated -- open the Suggestions tool.
|
|
145
|
+
|
|
146
|
+
.. plover:hook:: quit()
|
|
147
|
+
|
|
148
|
+
The Quit command was activated -- wrap up any pending tasks and quit Plover.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
``plover.machine.keyboard_capture`` -- Keyboard capture
|
|
2
|
+
================================================================
|
|
3
|
+
|
|
4
|
+
.. automodule:: plover.machine.keyboard_capture
|
|
5
|
+
:no-members:
|
|
6
|
+
|
|
7
|
+
.. autoclass:: plover.machine.keyboard_capture.Capture
|
|
8
|
+
|
|
9
|
+
.. automethod:: start
|
|
10
|
+
|
|
11
|
+
.. automethod:: cancel
|
|
12
|
+
|
|
13
|
+
.. automethod:: suppress
|
|
14
|
+
|
|
15
|
+
The following methods are available to implementors to hook into the
|
|
16
|
+
keyboard capture system:
|
|
17
|
+
|
|
18
|
+
.. automethod:: key_down
|
|
19
|
+
|
|
20
|
+
.. automethod:: key_up
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
# Configuration file for the Sphinx documentation builder.
|
|
2
|
+
from pygments.lexer import RegexLexer, bygroups
|
|
3
|
+
from pygments import token as t
|
|
4
|
+
from sphinx.highlighting import lexers
|
|
2
5
|
|
|
3
6
|
# -- Project information -----------------------------------------------------
|
|
4
7
|
|
|
@@ -6,7 +9,7 @@ project = "Plover"
|
|
|
6
9
|
copyright = "Open Steno Project"
|
|
7
10
|
author = copyright
|
|
8
11
|
|
|
9
|
-
release = "5.
|
|
12
|
+
release = "5.2.0"
|
|
10
13
|
version = release
|
|
11
14
|
|
|
12
15
|
# -- General configuration ---------------------------------------------------
|
|
@@ -14,6 +17,8 @@ version = release
|
|
|
14
17
|
extensions = [
|
|
15
18
|
"sphinx_plover",
|
|
16
19
|
"myst_parser",
|
|
20
|
+
"sphinx.ext.autodoc",
|
|
21
|
+
"sphinx.ext.napoleon",
|
|
17
22
|
"sphinx.ext.todo",
|
|
18
23
|
]
|
|
19
24
|
|
|
@@ -69,10 +74,6 @@ html_theme_options = {
|
|
|
69
74
|
"dark_logo": "dolores.svg",
|
|
70
75
|
}
|
|
71
76
|
|
|
72
|
-
from pygments.lexer import RegexLexer, bygroups
|
|
73
|
-
from pygments import token as t
|
|
74
|
-
from sphinx.highlighting import lexers
|
|
75
|
-
|
|
76
77
|
|
|
77
78
|
class RTFLexer(RegexLexer):
|
|
78
79
|
name = "rtf"
|
|
@@ -17,20 +17,20 @@ You also need [CMake](https://cmake.org) to build [hidapi](https://github.com/li
|
|
|
17
17
|
|
|
18
18
|
A typical development setup looks like this, assuming that `python` has the correct version:
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
## Linux/macOS (Bash):
|
|
21
21
|
|
|
22
22
|
```bash
|
|
23
23
|
cd path/to/plover
|
|
24
24
|
python -m venv .venv
|
|
25
25
|
source .venv/bin/activate
|
|
26
|
-
pip install -r reqs/dev.txt
|
|
26
|
+
pip install -c reqs/constraints.txt -r reqs/dev.txt
|
|
27
27
|
pre-commit install
|
|
28
28
|
pre-commit run --all-files
|
|
29
29
|
tox
|
|
30
30
|
tox -e launch -- -l debug
|
|
31
31
|
```
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
## Windows (PowerShell):
|
|
34
34
|
|
|
35
35
|
This assumes that you installed a Git version that includes Git Bash.
|
|
36
36
|
|
|
@@ -38,7 +38,7 @@ This assumes that you installed a Git version that includes Git Bash.
|
|
|
38
38
|
cd path\to\plover
|
|
39
39
|
python -m venv .venv
|
|
40
40
|
.venv\Scripts\Activate.ps1
|
|
41
|
-
pip install -r reqs\dev.txt
|
|
41
|
+
pip install -c reqs\constraints.txt -r reqs\dev.txt
|
|
42
42
|
pre-commit install
|
|
43
43
|
pre-commit run --all-files
|
|
44
44
|
& "C:\Program Files\Git\bin\bash.exe" -lc "tox"
|
|
@@ -47,6 +47,26 @@ pre-commit run --all-files
|
|
|
47
47
|
|
|
48
48
|
Some features require a Bash shell, which is why on Windows you need to run commands through Git Bash or similar.
|
|
49
49
|
|
|
50
|
+
## Read the Docs build (Docker)
|
|
51
|
+
|
|
52
|
+
To reproduce the Read the Docs build locally, use the official RTD build image.
|
|
53
|
+
The image defaults to a non-root user, so run as root to install packages.
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
docker run --rm -it --platform=linux/amd64 -u root -v "$PWD":/work -w /work readthedocs/build:ubuntu-24.04-2024.06.17 bash
|
|
57
|
+
|
|
58
|
+
apt-get update
|
|
59
|
+
apt-get install -y python3 python3-venv python3-dev build-essential
|
|
60
|
+
python3 -m venv .venv-rtd
|
|
61
|
+
. .venv-rtd/bin/activate
|
|
62
|
+
python -m pip install --upgrade pip setuptools
|
|
63
|
+
python -m pip install -c reqs/constraints.txt -r reqs/dist.txt
|
|
64
|
+
python -m pip install -r doc/requirements.txt
|
|
65
|
+
python -m sphinx -b html -W doc doc/_build/html
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
The HTML output is in `doc/_build/html/index.html`.
|
|
69
|
+
|
|
50
70
|
## Tox
|
|
51
71
|
|
|
52
72
|
The command for using tox is: `tox {-e envlist} {-- arguments}`. Use `tox -a
|
|
@@ -84,7 +104,7 @@ any other virtual environment](https://virtualenv.pypa.io/en/latest/user_guide.h
|
|
|
84
104
|
|
|
85
105
|
The configuration also provides support for lightweight tests only environment:
|
|
86
106
|
`pyX`, where `X` is the version of the Python interpreter to use. E.g. running
|
|
87
|
-
`tox -e 'py3,
|
|
107
|
+
`tox -e 'py3,py310,py311,py312` will execute the testsuite for each version
|
|
88
108
|
of Python we support.
|
|
89
109
|
|
|
90
110
|
# Creating a binary distribution
|
|
@@ -5,8 +5,7 @@
|
|
|
5
5
|
To be able to setup a complete development environment, you'll need to manually
|
|
6
6
|
install some system libraries (including the development version of your
|
|
7
7
|
distribution corresponding packages):
|
|
8
|
-
- Treal support: `libusb` (1.0) and `libudev` are needed by
|
|
9
|
-
the [`hidapi` package](https://pypi.org/project/hidapi/).
|
|
10
8
|
- log / notifications support: `libdbus` is needed.
|
|
9
|
+
- Uinput support: `libxkbcommon` is needed by the [`xkbcommon` package](https://pypi.org/project/xkbcommon)
|
|
11
10
|
|
|
12
11
|
For the rest of the steps, follow the [developer guide](../doc/developer_guide.md).
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
set -e
|
|
4
4
|
|
|
5
|
-
. ./plover_build_utils/deps.sh
|
|
6
5
|
. ./plover_build_utils/functions.sh
|
|
7
6
|
|
|
8
7
|
topdir="$PWD"
|
|
@@ -197,33 +196,10 @@ run "$linuxdeploy" \
|
|
|
197
196
|
# Install Plover and dependencies.
|
|
198
197
|
bootstrap_dist "$wheel"
|
|
199
198
|
|
|
200
|
-
#
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
. ./linux/build_hidapi.sh
|
|
205
|
-
|
|
206
|
-
echo "Downloading and unpacking hidapi ${hidapi_version}…"
|
|
207
|
-
fetch_hidapi "$hidapi_src" "$builddir"
|
|
208
|
-
|
|
209
|
-
echo "Building hidapi…"
|
|
210
|
-
cmake_build_linux "$hidapi_src" "$hidapi_bld" "Release"
|
|
211
|
-
|
|
212
|
-
# Locate the produced .so
|
|
213
|
-
hidapi_so="$(find "$hidapi_bld" -name 'libhidapi-hidraw.so*' -type f -print -quit)"
|
|
214
|
-
if [ -z "$hidapi_so" ] || [ ! -f "$hidapi_so" ]; then
|
|
215
|
-
echo "Error: built libhidapi-hidraw.so not found." >&2
|
|
216
|
-
exit 3
|
|
217
|
-
fi
|
|
218
|
-
|
|
219
|
-
# Bundle into the AppDir's lib directory
|
|
220
|
-
run cp -v "$hidapi_so" "$appdir/usr/lib/"
|
|
221
|
-
base="$(basename "$hidapi_so")"
|
|
222
|
-
# Add symlink for unversioned .so if needed
|
|
223
|
-
if [ ! -e "$appdir/usr/lib/libhidapi-hidraw.so" ]; then
|
|
224
|
-
ln -s "$base" "$appdir/usr/lib/libhidapi-hidraw.so"
|
|
225
|
-
fi
|
|
226
|
-
# ------- End: Build & bundle hidapi from source -------
|
|
199
|
+
# Reinstall hidapi with the hidraw backend; libusb reports usage/usage_page as 0,
|
|
200
|
+
# which results in HID keyboards not being detected by Plover.
|
|
201
|
+
run "$python" -m pip uninstall -y hidapi || true
|
|
202
|
+
run_eval "HIDAPI_WITH_HIDRAW=1 HIDAPI_WITH_LIBUSB=0 $python -m pip install --no-binary :all: --no-cache-dir hidapi"
|
|
227
203
|
|
|
228
204
|
# Trim the fat, second pass.
|
|
229
205
|
run "$python" -m plover_build_utils.trim "$appdir" "$builddir/blacklist.txt"
|