From 87cd78abfb0b398c5c2657d805c90e9574f0edf8 Mon Sep 17 00:00:00 2001 From: MayNiklas Date: Tue, 17 Feb 2026 14:46:11 +0100 Subject: [PATCH] add option to disable keybindings --- assets/js/register_events.js | 7 ++- docs/usage/keybindings.md | 15 ++++++ .../BehaviorSettings/BehaviorSettings.php | 3 ++ .../BehaviorSettings/KeybindingsSettings.php | 47 +++++++++++++++++++ templates/base.html.twig | 4 +- translations/messages.en.xlf | 18 +++++++ 6 files changed, 92 insertions(+), 2 deletions(-) create mode 100644 src/Settings/BehaviorSettings/KeybindingsSettings.php diff --git a/assets/js/register_events.js b/assets/js/register_events.js index 9732c0c1..547742ea 100644 --- a/assets/js/register_events.js +++ b/assets/js/register_events.js @@ -27,7 +27,12 @@ class RegisterEventHelper { constructor() { this.registerTooltips(); this.configureDropdowns(); - this.registerSpecialCharInput(); + + // Only register special character input if enabled in configuration + const keybindingsEnabled = document.body.dataset.keybindingsSpecialCharacters !== 'false'; + if (keybindingsEnabled) { + this.registerSpecialCharInput(); + } //Initialize ClipboardJS this.registerLoadHandler(() => { diff --git a/docs/usage/keybindings.md b/docs/usage/keybindings.md index 771d7684..f4b1980e 100644 --- a/docs/usage/keybindings.md +++ b/docs/usage/keybindings.md @@ -8,6 +8,21 @@ parent: Usage This page lists all the keybindings of Part-DB. Currently, there are only the special character keybindings. +## Disabling keybindings + +If you want to disable the special character keybindings (for example, because they conflict with your keyboard layout or system shortcuts), you can do so in two ways: + +### Via the System Settings UI (recommended) + +1. Navigate to **System Settings** (Tools → System Settings) +2. Go to **Behavior** → **Keybindings** +3. Uncheck **Enable special character keybindings** +4. Save the settings + +### Via Environment Variable + +Alternatively, you can set the environment variable `KEYBINDINGS_SPECIAL_CHARS_ENABLED=0` in your `.env.local` file or your server environment configuration. + ## Special characters Using the keybindings below (Alt + key) you can insert special characters into the text fields of Part-DB. This works on diff --git a/src/Settings/BehaviorSettings/BehaviorSettings.php b/src/Settings/BehaviorSettings/BehaviorSettings.php index 3053073f..ec849db3 100644 --- a/src/Settings/BehaviorSettings/BehaviorSettings.php +++ b/src/Settings/BehaviorSettings/BehaviorSettings.php @@ -41,4 +41,7 @@ class BehaviorSettings #[EmbeddedSettings] public ?PartInfoSettings $partInfo = null; + + #[EmbeddedSettings] + public ?KeybindingsSettings $keybindings = null; } diff --git a/src/Settings/BehaviorSettings/KeybindingsSettings.php b/src/Settings/BehaviorSettings/KeybindingsSettings.php new file mode 100644 index 00000000..2788de41 --- /dev/null +++ b/src/Settings/BehaviorSettings/KeybindingsSettings.php @@ -0,0 +1,47 @@ +. + */ + +declare(strict_types=1); + + +namespace App\Settings\BehaviorSettings; + +use App\Settings\SettingsIcon; +use Jbtronics\SettingsBundle\Metadata\EnvVarMode; +use Jbtronics\SettingsBundle\Settings\Settings; +use Jbtronics\SettingsBundle\Settings\SettingsParameter; +use Symfony\Component\Translation\TranslatableMessage as TM; + +#[Settings(name: "keybindings", label: new TM("settings.behavior.keybindings"))] +#[SettingsIcon('fa-keyboard')] +class KeybindingsSettings +{ + /** + * Whether to enable special character keybindings (Alt+key) in text input fields + * @var bool + */ + #[SettingsParameter( + label: new TM("settings.behavior.keybindings.enable_special_characters"), + description: new TM("settings.behavior.keybindings.enable_special_characters.help"), + envVar: "bool:KEYBINDINGS_SPECIAL_CHARS_ENABLED", + envVarMode: EnvVarMode::OVERWRITE + )] + public bool $enableSpecialCharacters = true; +} diff --git a/templates/base.html.twig b/templates/base.html.twig index 2db726ee..cecc5469 100644 --- a/templates/base.html.twig +++ b/templates/base.html.twig @@ -68,7 +68,9 @@ {{ encore_entry_script_tags('webauthn_tfa') }} {% endblock %} - + {% block body %}
diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf index d9418563..de4021f0 100644 --- a/translations/messages.en.xlf +++ b/translations/messages.en.xlf @@ -10287,6 +10287,24 @@ Please note, that you can not impersonate a disabled user. If you try you will g Show the image overlay with attachment details on hovering over the part image gallery. + + + settings.behavior.keybindings + Keybindings + + + + + settings.behavior.keybindings.enable_special_characters + Enable special character keybindings + + + + + settings.behavior.keybindings.enable_special_characters.help + Enable Alt+key shortcuts to insert special characters (Greek letters, mathematical symbols, etc.) in text input fields. Disable this if the shortcuts conflict with your keyboard layout or system shortcuts. + + perm.config.change_system_settings