diff --git a/ui/localization/messages/da.json b/ui/localization/messages/da.json index 7ddf11bdf..c1520ff01 100644 --- a/ui/localization/messages/da.json +++ b/ui/localization/messages/da.json @@ -384,6 +384,13 @@ "jiggler_save_jiggler_config": "Gem Jiggler-konfiguration", "jiggler_timezone_description": "Tidszone for cron-plan", "jiggler_timezone_label": "Tidszone", + "keyboard_capture_active": "Active", + "keyboard_capture_description": "Capture browser shortcuts (Cmd/Ctrl+Tab, Alt+Tab) and send them to the remote machine", + "keyboard_capture_disabled": "Keyboard Capture disabled", + "keyboard_capture_enabled": "Keyboard Capture enabled", + "keyboard_capture_fullscreen_hint": "Enter fullscreen to capture all keyboard shortcuts including Alt+Tab", + "keyboard_capture_limited": "Limited", + "keyboard_capture_title": "Keyboard Capture", "keyboard_description": "Konfigurer tastaturindstillinger for din enhed", "keyboard_layout_description": "Tastaturlayout for måloperativsystemet", "keyboard_layout_error": "Kunne ikke indstille tastaturlayout: {error}", diff --git a/ui/localization/messages/de.json b/ui/localization/messages/de.json index 5f7f54f19..da5b7be8b 100644 --- a/ui/localization/messages/de.json +++ b/ui/localization/messages/de.json @@ -384,6 +384,13 @@ "jiggler_save_jiggler_config": "Jiggler-Konfiguration speichern", "jiggler_timezone_description": "Zeitzone für Cron-Zeitplan", "jiggler_timezone_label": "Zeitzone", + "keyboard_capture_active": "Active", + "keyboard_capture_description": "Capture browser shortcuts (Cmd/Ctrl+Tab, Alt+Tab) and send them to the remote machine", + "keyboard_capture_disabled": "Keyboard Capture disabled", + "keyboard_capture_enabled": "Keyboard Capture enabled", + "keyboard_capture_fullscreen_hint": "Enter fullscreen to capture all keyboard shortcuts including Alt+Tab", + "keyboard_capture_limited": "Limited", + "keyboard_capture_title": "Keyboard Capture", "keyboard_description": "Konfigurieren Sie die Tastatureinstellungen für Ihr Gerät", "keyboard_layout_description": "Tastaturlayout des Zielbetriebssystems", "keyboard_layout_error": "Tastaturlayout konnte nicht festgelegt werden: {error}", diff --git a/ui/localization/messages/en.json b/ui/localization/messages/en.json index 6ad2c6b62..cffcd7668 100644 --- a/ui/localization/messages/en.json +++ b/ui/localization/messages/en.json @@ -389,6 +389,13 @@ "jiggler_save_jiggler_config": "Save Jiggler Config", "jiggler_timezone_description": "Timezone for cron schedule", "jiggler_timezone_label": "Timezone", + "keyboard_capture_active": "Active", + "keyboard_capture_description": "Capture browser shortcuts (Cmd/Ctrl+Tab, Alt+Tab) and send them to the remote machine", + "keyboard_capture_disabled": "Keyboard Capture disabled", + "keyboard_capture_enabled": "Keyboard Capture enabled", + "keyboard_capture_fullscreen_hint": "Enter fullscreen to capture all keyboard shortcuts including Alt+Tab", + "keyboard_capture_limited": "Limited", + "keyboard_capture_title": "Keyboard Capture", "keyboard_description": "Configure keyboard settings for your device", "keyboard_layout_description": "Keyboard layout of target operating system", "keyboard_layout_error": "Failed to set keyboard layout: {error}", diff --git a/ui/localization/messages/es.json b/ui/localization/messages/es.json index 957e2f5f0..303c02d84 100644 --- a/ui/localization/messages/es.json +++ b/ui/localization/messages/es.json @@ -384,6 +384,13 @@ "jiggler_save_jiggler_config": "Guardar configuración de Jiggler", "jiggler_timezone_description": "Zona horaria para la programación cron", "jiggler_timezone_label": "Zona horaria", + "keyboard_capture_active": "Active", + "keyboard_capture_description": "Capture browser shortcuts (Cmd/Ctrl+Tab, Alt+Tab) and send them to the remote machine", + "keyboard_capture_disabled": "Keyboard Capture disabled", + "keyboard_capture_enabled": "Keyboard Capture enabled", + "keyboard_capture_fullscreen_hint": "Enter fullscreen to capture all keyboard shortcuts including Alt+Tab", + "keyboard_capture_limited": "Limited", + "keyboard_capture_title": "Keyboard Capture", "keyboard_description": "Configure los ajustes del teclado para su dispositivo", "keyboard_layout_description": "Disposición del teclado del sistema operativo de destino", "keyboard_layout_error": "No se pudo establecer la distribución del teclado: {error}", diff --git a/ui/localization/messages/fr.json b/ui/localization/messages/fr.json index 1e21e0b8a..3a6fdf607 100644 --- a/ui/localization/messages/fr.json +++ b/ui/localization/messages/fr.json @@ -384,6 +384,13 @@ "jiggler_save_jiggler_config": "Enregistrer la configuration de Jiggler", "jiggler_timezone_description": "Fuseau horaire pour la planification cron", "jiggler_timezone_label": "Fuseau horaire", + "keyboard_capture_active": "Active", + "keyboard_capture_description": "Capture browser shortcuts (Cmd/Ctrl+Tab, Alt+Tab) and send them to the remote machine", + "keyboard_capture_disabled": "Keyboard Capture disabled", + "keyboard_capture_enabled": "Keyboard Capture enabled", + "keyboard_capture_fullscreen_hint": "Enter fullscreen to capture all keyboard shortcuts including Alt+Tab", + "keyboard_capture_limited": "Limited", + "keyboard_capture_title": "Keyboard Capture", "keyboard_description": "Configurer les paramètres du clavier pour votre appareil", "keyboard_layout_description": "Disposition du clavier du système d'exploitation cible", "keyboard_layout_error": "Échec de la définition de la disposition du clavier : {error}", diff --git a/ui/localization/messages/it.json b/ui/localization/messages/it.json index 7886685d9..565db4ff7 100644 --- a/ui/localization/messages/it.json +++ b/ui/localization/messages/it.json @@ -384,6 +384,13 @@ "jiggler_save_jiggler_config": "Salva la configurazione di Jiggler", "jiggler_timezone_description": "Fuso orario per la pianificazione cron", "jiggler_timezone_label": "Fuso orario", + "keyboard_capture_active": "Active", + "keyboard_capture_description": "Capture browser shortcuts (Cmd/Ctrl+Tab, Alt+Tab) and send them to the remote machine", + "keyboard_capture_disabled": "Keyboard Capture disabled", + "keyboard_capture_enabled": "Keyboard Capture enabled", + "keyboard_capture_fullscreen_hint": "Enter fullscreen to capture all keyboard shortcuts including Alt+Tab", + "keyboard_capture_limited": "Limited", + "keyboard_capture_title": "Keyboard Capture", "keyboard_description": "Configura le impostazioni della tastiera per il tuo dispositivo", "keyboard_layout_description": "Layout della tastiera del sistema operativo di destinazione", "keyboard_layout_error": "Impossibile impostare il layout della tastiera: {error}", diff --git a/ui/localization/messages/ja.json b/ui/localization/messages/ja.json index dbc98da12..b7c927b7c 100644 --- a/ui/localization/messages/ja.json +++ b/ui/localization/messages/ja.json @@ -389,6 +389,13 @@ "jiggler_save_jiggler_config": "ジグラー設定を保存", "jiggler_timezone_description": "Cronスケジュールのタイムゾーン", "jiggler_timezone_label": "タイムゾーン", + "keyboard_capture_active": "Active", + "keyboard_capture_description": "Capture browser shortcuts (Cmd/Ctrl+Tab, Alt+Tab) and send them to the remote machine", + "keyboard_capture_disabled": "Keyboard Capture disabled", + "keyboard_capture_enabled": "Keyboard Capture enabled", + "keyboard_capture_fullscreen_hint": "Enter fullscreen to capture all keyboard shortcuts including Alt+Tab", + "keyboard_capture_limited": "Limited", + "keyboard_capture_title": "Keyboard Capture", "keyboard_description": "デバイスのキーボード設定を構成します", "keyboard_layout_description": "ターゲットOSのキーボードレイアウト", "keyboard_layout_error": "キーボードレイアウトの設定に失敗しました: {error}", diff --git a/ui/localization/messages/nb.json b/ui/localization/messages/nb.json index 29d2cf83c..92009c301 100644 --- a/ui/localization/messages/nb.json +++ b/ui/localization/messages/nb.json @@ -384,6 +384,13 @@ "jiggler_save_jiggler_config": "Lagre Jiggler-konfigurasjon", "jiggler_timezone_description": "Tidssone for cron-plan", "jiggler_timezone_label": "Tidssone", + "keyboard_capture_active": "Active", + "keyboard_capture_description": "Capture browser shortcuts (Cmd/Ctrl+Tab, Alt+Tab) and send them to the remote machine", + "keyboard_capture_disabled": "Keyboard Capture disabled", + "keyboard_capture_enabled": "Keyboard Capture enabled", + "keyboard_capture_fullscreen_hint": "Enter fullscreen to capture all keyboard shortcuts including Alt+Tab", + "keyboard_capture_limited": "Limited", + "keyboard_capture_title": "Keyboard Capture", "keyboard_description": "Konfigurer tastaturinnstillinger for enheten din", "keyboard_layout_description": "Tastaturoppsett for måloperativsystemet", "keyboard_layout_error": "Klarte ikke å angi tastaturoppsett: {error}", diff --git a/ui/localization/messages/pt.json b/ui/localization/messages/pt.json index bd090d86e..7252c4e73 100644 --- a/ui/localization/messages/pt.json +++ b/ui/localization/messages/pt.json @@ -389,6 +389,13 @@ "jiggler_save_jiggler_config": "Salvar Configuração do Jiggler", "jiggler_timezone_description": "Fuso horário para agendamento cron", "jiggler_timezone_label": "Fuso Horário", + "keyboard_capture_active": "Active", + "keyboard_capture_description": "Capture browser shortcuts (Cmd/Ctrl+Tab, Alt+Tab) and send them to the remote machine", + "keyboard_capture_disabled": "Keyboard Capture disabled", + "keyboard_capture_enabled": "Keyboard Capture enabled", + "keyboard_capture_fullscreen_hint": "Enter fullscreen to capture all keyboard shortcuts including Alt+Tab", + "keyboard_capture_limited": "Limited", + "keyboard_capture_title": "Keyboard Capture", "keyboard_description": "Configure as opções de teclado para o seu dispositivo", "keyboard_layout_description": "Layout do teclado do sistema operacional de destino", "keyboard_layout_error": "Falha ao definir layout do teclado: {error}", diff --git a/ui/localization/messages/sv.json b/ui/localization/messages/sv.json index dfc8ff008..230d5d1d8 100644 --- a/ui/localization/messages/sv.json +++ b/ui/localization/messages/sv.json @@ -384,6 +384,13 @@ "jiggler_save_jiggler_config": "Spara Jiggler-konfiguration", "jiggler_timezone_description": "Tidszon för cron-schema", "jiggler_timezone_label": "Tidszon", + "keyboard_capture_active": "Active", + "keyboard_capture_description": "Capture browser shortcuts (Cmd/Ctrl+Tab, Alt+Tab) and send them to the remote machine", + "keyboard_capture_disabled": "Keyboard Capture disabled", + "keyboard_capture_enabled": "Keyboard Capture enabled", + "keyboard_capture_fullscreen_hint": "Enter fullscreen to capture all keyboard shortcuts including Alt+Tab", + "keyboard_capture_limited": "Limited", + "keyboard_capture_title": "Keyboard Capture", "keyboard_description": "Konfigurera tangentbordsinställningar för din enhet", "keyboard_layout_description": "Tangentbordslayout för måloperativsystemet", "keyboard_layout_error": "Misslyckades med att ställa in tangentbordslayout: {error}", diff --git a/ui/localization/messages/zh-tw.json b/ui/localization/messages/zh-tw.json index c07fa76d5..4bbf80da0 100644 --- a/ui/localization/messages/zh-tw.json +++ b/ui/localization/messages/zh-tw.json @@ -389,6 +389,13 @@ "jiggler_save_jiggler_config": "儲存防休眠設定", "jiggler_timezone_description": "Cron 排程的時區", "jiggler_timezone_label": "時區", + "keyboard_capture_active": "Active", + "keyboard_capture_description": "Capture browser shortcuts (Cmd/Ctrl+Tab, Alt+Tab) and send them to the remote machine", + "keyboard_capture_disabled": "Keyboard Capture disabled", + "keyboard_capture_enabled": "Keyboard Capture enabled", + "keyboard_capture_fullscreen_hint": "Enter fullscreen to capture all keyboard shortcuts including Alt+Tab", + "keyboard_capture_limited": "Limited", + "keyboard_capture_title": "Keyboard Capture", "keyboard_description": "設定您裝置的鍵盤設定", "keyboard_layout_description": "目標作業系統的鍵盤配置", "keyboard_layout_error": "設定鍵盤配置失敗:{error}", diff --git a/ui/localization/messages/zh.json b/ui/localization/messages/zh.json index 615276188..9b4345ed7 100644 --- a/ui/localization/messages/zh.json +++ b/ui/localization/messages/zh.json @@ -384,6 +384,13 @@ "jiggler_save_jiggler_config": "保存防休眠配置", "jiggler_timezone_description": "Cron 计划所使用的时区。", "jiggler_timezone_label": "时区", + "keyboard_capture_active": "Active", + "keyboard_capture_description": "Capture browser shortcuts (Cmd/Ctrl+Tab, Alt+Tab) and send them to the remote machine", + "keyboard_capture_disabled": "Keyboard Capture disabled", + "keyboard_capture_enabled": "Keyboard Capture enabled", + "keyboard_capture_fullscreen_hint": "Enter fullscreen to capture all keyboard shortcuts including Alt+Tab", + "keyboard_capture_limited": "Limited", + "keyboard_capture_title": "Keyboard Capture", "keyboard_description": "为您的设备配置键盘相关设置。", "keyboard_layout_description": "目标操作系统的键盘布局。", "keyboard_layout_error": "设置键盘布局失败:{error}", diff --git a/ui/src/components/ActionBar.tsx b/ui/src/components/ActionBar.tsx index 364845193..5de14dcc6 100644 --- a/ui/src/components/ActionBar.tsx +++ b/ui/src/components/ActionBar.tsx @@ -1,12 +1,21 @@ import { Fragment, useCallback, useRef } from "react"; import { MdOutlineContentPasteGo } from "react-icons/md"; -import { LuCable, LuHardDrive, LuMaximize, LuSettings, LuSignal } from "react-icons/lu"; +import { + LuCable, + LuHardDrive, + LuLock, + LuLockOpen, + LuMaximize, + LuSettings, + LuSignal, +} from "react-icons/lu"; import { FaKeyboard } from "react-icons/fa6"; import { Popover, PopoverButton, PopoverPanel } from "@headlessui/react"; import { CommandLineIcon } from "@heroicons/react/20/solid"; import { cx } from "@/cva.config"; import { useHidStore, useMountMediaStore, useSettingsStore, useUiStore } from "@hooks/stores"; +import notifications from "@/notifications"; import { useDeviceUiNavigation } from "@hooks/useAppNavigation"; import { Button } from "@components/Button"; import Container from "@components/Container"; @@ -26,7 +35,7 @@ export default function Actionbar({ const { setDisableVideoFocusTrap, terminalType, setTerminalType, toggleSidebarView } = useUiStore(); const { remoteVirtualMediaState } = useMountMediaStore(); - const { developerMode } = useSettingsStore(); + const { developerMode, keyboardCaptureMode, setKeyboardCaptureMode } = useSettingsStore(); // This is the only way to get a reliable state change for the popover // at time of writing this there is no mount, or unmount event for the popover @@ -188,6 +197,21 @@ export default function Actionbar({ +