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 %}