mirror of
https://github.com/redphx/better-xcloud.git
synced 2025-06-06 07:37:19 +02:00
Update better-xcloud.user.js
This commit is contained in:
parent
962b57f0a6
commit
4c593a298e
284
dist/better-xcloud.user.js
vendored
284
dist/better-xcloud.user.js
vendored
@ -246,7 +246,7 @@ var createButton = (options) => {
|
|||||||
$btn.href = options.url;
|
$btn.href = options.url;
|
||||||
$btn.target = "_blank";
|
$btn.target = "_blank";
|
||||||
} else {
|
} else {
|
||||||
$btn = CE("button", { class: "bx-button" });
|
$btn = CE("button", { class: "bx-button", type: "button" });
|
||||||
}
|
}
|
||||||
const style = options.style || 0;
|
const style = options.style || 0;
|
||||||
style && ButtonStyleIndices.forEach((index) => {
|
style && ButtonStyleIndices.forEach((index) => {
|
||||||
@ -443,19 +443,19 @@ var Texts = {
|
|||||||
"高级选项"
|
"高级选项"
|
||||||
],
|
],
|
||||||
"android-app-settings": [
|
"android-app-settings": [
|
||||||
,
|
"Android App Einstellungen",
|
||||||
,
|
"Pengaturan aplikasi",
|
||||||
"Android app settings",
|
"Android app settings",
|
||||||
"Ajustes de la aplicación para Android",
|
"Ajustes de la aplicación para Android",
|
||||||
,
|
"Paramètres de l’application Android",
|
||||||
,
|
"Impostazioni App Android",
|
||||||
"Androidアプリ設定",
|
"Androidアプリ設定",
|
||||||
|
"안드로이드 앱 설정",
|
||||||
,
|
,
|
||||||
,
|
"Configurações do aplicativo Android",
|
||||||
,
|
"Настройки приложения Android",
|
||||||
,
|
"Android uygulama ayarları",
|
||||||
,
|
"Налаштування програми Android",
|
||||||
,
|
|
||||||
"Thiết lập ứng dụng Android"
|
"Thiết lập ứng dụng Android"
|
||||||
],
|
],
|
||||||
apply: [
|
apply: [
|
||||||
@ -684,7 +684,7 @@ var Texts = {
|
|||||||
"Kanan bawah",
|
"Kanan bawah",
|
||||||
"Bottom-right",
|
"Bottom-right",
|
||||||
"Inferior derecha",
|
"Inferior derecha",
|
||||||
"Bas-droit",
|
"En bas à droite",
|
||||||
"In basso a destra",
|
"In basso a destra",
|
||||||
"右下",
|
"右下",
|
||||||
"우측 하단",
|
"우측 하단",
|
||||||
@ -721,7 +721,7 @@ var Texts = {
|
|||||||
"Votre navigateur ne supporte pas cette fonctionnalité",
|
"Votre navigateur ne supporte pas cette fonctionnalité",
|
||||||
"Il tuo browser non supporta questa funzione",
|
"Il tuo browser non supporta questa funzione",
|
||||||
"お使いのブラウザはこの機能をサポートしていません。",
|
"お使いのブラウザはこの機能をサポートしていません。",
|
||||||
"브라우저에서 이 기능을 지원하지 않습니다.",
|
"이 브라우저에서 이 기능을 지원하지 않습니다.",
|
||||||
"Twoja przeglądarka nie obsługuje tej funkcji",
|
"Twoja przeglądarka nie obsługuje tej funkcji",
|
||||||
"Seu navegador não suporta este recurso",
|
"Seu navegador não suporta este recurso",
|
||||||
"Ваш браузер не поддерживает эту функцию",
|
"Ваш браузер не поддерживает эту функцию",
|
||||||
@ -800,7 +800,7 @@ var Texts = {
|
|||||||
],
|
],
|
||||||
"clarity-boost-warning": [
|
"clarity-boost-warning": [
|
||||||
"Diese Einstellungen funktionieren nicht, wenn \"Clarity Boost\" aktiviert ist",
|
"Diese Einstellungen funktionieren nicht, wenn \"Clarity Boost\" aktiviert ist",
|
||||||
"Pengaturan ini tidak bekerja ketika mode \"Kejernihan\" aktif",
|
"Pengaturan ini tidak bekerja ketika mode \"Kejernihan Extra \" aktif",
|
||||||
"These settings don't work when the Clarity Boost mode is ON",
|
"These settings don't work when the Clarity Boost mode is ON",
|
||||||
"Estos ajustes no funcionan cuando el modo Clarity Boost está activado",
|
"Estos ajustes no funcionan cuando el modo Clarity Boost está activado",
|
||||||
"Ces paramètres ne fonctionnent pas lorsque le mode Clarity Boost est activé",
|
"Ces paramètres ne fonctionnent pas lorsque le mode Clarity Boost est activé",
|
||||||
@ -885,7 +885,7 @@ var Texts = {
|
|||||||
],
|
],
|
||||||
"conditional-formatting": [
|
"conditional-formatting": [
|
||||||
"Zustandsabhängige Textfarbe",
|
"Zustandsabhängige Textfarbe",
|
||||||
"Format teks kondisional",
|
"Pewarnaan Format teks kondisional",
|
||||||
"Conditional formatting text color",
|
"Conditional formatting text color",
|
||||||
"Color condicional de formato de texto",
|
"Color condicional de formato de texto",
|
||||||
"Couleur du texte de mise en forme conditionnelle",
|
"Couleur du texte de mise en forme conditionnelle",
|
||||||
@ -991,7 +991,7 @@ var Texts = {
|
|||||||
"Kontroler",
|
"Kontroler",
|
||||||
"Controller",
|
"Controller",
|
||||||
"Joystick",
|
"Joystick",
|
||||||
"Contrôle",
|
"Manette",
|
||||||
,
|
,
|
||||||
"コントローラー",
|
"コントローラー",
|
||||||
"컨트롤러",
|
"컨트롤러",
|
||||||
@ -1124,13 +1124,13 @@ var Texts = {
|
|||||||
],
|
],
|
||||||
"device-unsupported-touch": [
|
"device-unsupported-touch": [
|
||||||
"Dein Gerät hat keine Touch-Unterstützung",
|
"Dein Gerät hat keine Touch-Unterstützung",
|
||||||
"Perangkat anda tidak mendukung layar sentuh",
|
"Perangkat anda tidak mendukung sentuhan Layar",
|
||||||
"Your device doesn't have touch support",
|
"Your device doesn't have touch support",
|
||||||
"Tu dispositivo no tiene soporte táctil",
|
"Tu dispositivo no tiene soporte táctil",
|
||||||
"Votre appareil n'a pas de support tactile",
|
"Votre appareil n'a pas de support tactile",
|
||||||
"Il tuo dispositivo non supporta i comandi su schermo",
|
"Il tuo dispositivo non supporta i comandi su schermo",
|
||||||
"お使いのデバイスはタッチ機能をサポートしていません。",
|
"お使いのデバイスはタッチ機能をサポートしていません。",
|
||||||
"브라우저에서 터치를 지원하지 않습니다.",
|
"이 장치에서 터치 기능을 지원하지 않습니다.",
|
||||||
"Twoje urządzenie nie obsługuję tej funkcji",
|
"Twoje urządzenie nie obsługuję tej funkcji",
|
||||||
"Seu dispositivo não possui suporte de toque",
|
"Seu dispositivo não possui suporte de toque",
|
||||||
"Ваше устройство не поддерживает сенсорное управление",
|
"Ваше устройство не поддерживает сенсорное управление",
|
||||||
@ -1175,7 +1175,7 @@ var Texts = {
|
|||||||
],
|
],
|
||||||
disable: [
|
disable: [
|
||||||
"Deaktiviert",
|
"Deaktiviert",
|
||||||
"Mati",
|
"Menonaktifkan",
|
||||||
"Disable",
|
"Disable",
|
||||||
"Deshabilitar",
|
"Deshabilitar",
|
||||||
"Désactiver",
|
"Désactiver",
|
||||||
@ -1190,15 +1190,31 @@ var Texts = {
|
|||||||
"Vô hiệu hóa",
|
"Vô hiệu hóa",
|
||||||
"禁用"
|
"禁用"
|
||||||
],
|
],
|
||||||
|
"disable-native-mkb": [
|
||||||
|
"Native Maus- & Tastaturunterstützung deaktivieren",
|
||||||
|
"Matikan Mouse & Keyboard bawaan",
|
||||||
|
"Disable native Mouse & Keyboard feature",
|
||||||
|
"Desactivar función nativa de ratón y teclado",
|
||||||
|
"Désactiver la fonction native Souris et Clavier",
|
||||||
|
"Disabilita il supporto nativo per Mouse e Tastiera",
|
||||||
|
"ネイティブ版マウス&キーボードの機能を無効化",
|
||||||
|
"마우스 및 키보드 공식지원 기능 비활성화",
|
||||||
|
,
|
||||||
|
"Desabilitar recurso nativo do Mouse e Teclado",
|
||||||
|
,
|
||||||
|
"Yerleşik klavye ve fare özelliğini kapat",
|
||||||
|
"Вимкнути функцію рідної миші та клавіатури",
|
||||||
|
"Tắt tính năng Chuột và Bàn phím chính thức"
|
||||||
|
],
|
||||||
"disable-post-stream-feedback-dialog": [
|
"disable-post-stream-feedback-dialog": [
|
||||||
"Feedback-Dialog beim Beenden deaktivieren",
|
"Feedback-Dialog beim Beenden deaktivieren",
|
||||||
"Matikan umpan balik dialog stream",
|
"Matikan umpan balik dialog pasca-stream",
|
||||||
"Disable post-stream feedback dialog",
|
"Disable post-stream feedback dialog",
|
||||||
"Desactivar diálogo de retroalimentación post-stream",
|
"Desactivar diálogo de retroalimentación post-stream",
|
||||||
"Désactiver la boîte de dialogue de commentaires post-stream",
|
"Désactiver la boîte de dialogue de commentaires post-stream",
|
||||||
"Disabilita la finestra di feedback al termine dello stream",
|
"Disabilita la finestra di feedback al termine dello stream",
|
||||||
"ストリーミング終了後のフィードバック画面を非表示",
|
"ストリーミング終了後のフィードバック画面を非表示",
|
||||||
"스트림 후 피드백 다이얼 비활성화",
|
"스트림 후 품질 조사요청 비활성화",
|
||||||
"Wyłącz okno opinii po zakończeniu transmisji",
|
"Wyłącz okno opinii po zakończeniu transmisji",
|
||||||
"Desativar o diálogo de comentários pós-transmissão",
|
"Desativar o diálogo de comentários pós-transmissão",
|
||||||
"Отключить диалог обратной связи после стрима",
|
"Отключить диалог обратной связи после стрима",
|
||||||
@ -1297,10 +1313,10 @@ var Texts = {
|
|||||||
"Nyalakan pintas kontroler",
|
"Nyalakan pintas kontroler",
|
||||||
"Enable controller shortcuts",
|
"Enable controller shortcuts",
|
||||||
"Habilitar accesos directos del Joystick",
|
"Habilitar accesos directos del Joystick",
|
||||||
"Activer les raccourcis du contrôle",
|
"Activer les raccourcis de la manette",
|
||||||
"Consenti scorciatoie da controller",
|
"Consenti scorciatoie da controller",
|
||||||
"コントローラーショートカットを有効化",
|
"コントローラーショートカットを有効化",
|
||||||
"컨트롤러 숏컷 활성화",
|
"컨트롤러 단축키 활성화",
|
||||||
"Włącz skróty kontrolera",
|
"Włącz skróty kontrolera",
|
||||||
"Ativar atalhos do controle",
|
"Ativar atalhos do controle",
|
||||||
"Включить быстрые клавиши контроллера",
|
"Включить быстрые клавиши контроллера",
|
||||||
@ -1365,7 +1381,7 @@ var Texts = {
|
|||||||
"Tirukan kontroler menggunakan Mouse & Keyboard",
|
"Tirukan kontroler menggunakan Mouse & Keyboard",
|
||||||
"Emulate controller with Mouse & Keyboard",
|
"Emulate controller with Mouse & Keyboard",
|
||||||
"Emular mandos con teclado y ratón",
|
"Emular mandos con teclado y ratón",
|
||||||
"Émuler le contrôleur avec la souris et le clavier",
|
"Émuler la manette avec la souris et le clavier",
|
||||||
"Abilita il supporto per mouse e tastiera",
|
"Abilita il supporto per mouse e tastiera",
|
||||||
"マウス&キーボード操作をコントローラー化",
|
"マウス&キーボード操作をコントローラー化",
|
||||||
"마우스 및 키보드를 컨트롤러로 에뮬레이트",
|
"마우스 및 키보드를 컨트롤러로 에뮬레이트",
|
||||||
@ -1533,7 +1549,12 @@ var Texts = {
|
|||||||
"game-bar": [
|
"game-bar": [
|
||||||
,
|
,
|
||||||
,
|
,
|
||||||
"Game Bar"
|
"Game Bar",
|
||||||
|
,
|
||||||
|
,
|
||||||
|
,
|
||||||
|
,
|
||||||
|
"게임 바"
|
||||||
],
|
],
|
||||||
"getting-consoles-list": [
|
"getting-consoles-list": [
|
||||||
"Rufe Liste der Konsolen ab...",
|
"Rufe Liste der Konsolen ab...",
|
||||||
@ -1744,7 +1765,7 @@ var Texts = {
|
|||||||
"Tata letak",
|
"Tata letak",
|
||||||
"Layout",
|
"Layout",
|
||||||
"Diseño",
|
"Diseño",
|
||||||
"Mise en page",
|
"Disposition",
|
||||||
,
|
,
|
||||||
"レイアウト",
|
"レイアウト",
|
||||||
"레이아웃",
|
"레이아웃",
|
||||||
@ -1843,7 +1864,7 @@ var Texts = {
|
|||||||
],
|
],
|
||||||
"menu-stream-settings": [
|
"menu-stream-settings": [
|
||||||
"Stream Einstellungen",
|
"Stream Einstellungen",
|
||||||
"Pengaturan stream",
|
"Pengaturan streaming",
|
||||||
"Stream settings",
|
"Stream settings",
|
||||||
"Ajustes del stream",
|
"Ajustes del stream",
|
||||||
"Réglages Stream",
|
"Réglages Stream",
|
||||||
@ -2183,7 +2204,7 @@ var Texts = {
|
|||||||
],
|
],
|
||||||
"powered-on": [
|
"powered-on": [
|
||||||
"Eingeschaltet",
|
"Eingeschaltet",
|
||||||
"Menyala",
|
"Dihidupkan",
|
||||||
"Powered on",
|
"Powered on",
|
||||||
"Activado",
|
"Activado",
|
||||||
"Démarrer",
|
"Démarrer",
|
||||||
@ -2291,7 +2312,7 @@ var Texts = {
|
|||||||
"Appuyez sur une touche ou faites un clic de souris pour associer...",
|
"Appuyez sur une touche ou faites un clic de souris pour associer...",
|
||||||
"Premi un tasto o fai un clic del mouse per associare...",
|
"Premi un tasto o fai un clic del mouse per associare...",
|
||||||
"キーを押すかマウスをクリックして割り当て...",
|
"キーを押すかマウスをクリックして割り当て...",
|
||||||
"정지하려면 아무키나 마우스를 클릭해주세요...",
|
"키를 누르거나 마우스를 클릭하여 할당하기",
|
||||||
"Naciśnij klawisz lub kliknij myszą, aby przypisać...",
|
"Naciśnij klawisz lub kliknij myszą, aby przypisać...",
|
||||||
"Pressione uma tecla ou clique do mouse para vincular...",
|
"Pressione uma tecla ou clique do mouse para vincular...",
|
||||||
"Нажмите клавишу или щелкните мышкой, чтобы связать...",
|
"Нажмите клавишу или щелкните мышкой, чтобы связать...",
|
||||||
@ -2342,7 +2363,7 @@ var Texts = {
|
|||||||
"Réduire les animations dans l’interface",
|
"Réduire les animations dans l’interface",
|
||||||
"Animazioni ridottte",
|
"Animazioni ridottte",
|
||||||
"UIアニメーションを減らす",
|
"UIアニメーションを減らす",
|
||||||
"애니메이션 감소",
|
"인터페이스 애니메이션 감소",
|
||||||
"Ogranicz animacje interfejsu",
|
"Ogranicz animacje interfejsu",
|
||||||
"Reduzir animações da interface",
|
"Reduzir animações da interface",
|
||||||
"Убрать анимации интерфейса",
|
"Убрать анимации интерфейса",
|
||||||
@ -2747,10 +2768,10 @@ var Texts = {
|
|||||||
"Sederhanakan menu Stream",
|
"Sederhanakan menu Stream",
|
||||||
"Simplify Stream's menu",
|
"Simplify Stream's menu",
|
||||||
"Simplificar el menú del stream",
|
"Simplificar el menú del stream",
|
||||||
"Simplifier le menu Stream",
|
"Simplifier le menu de Stream",
|
||||||
"Semplifica il menu della trasmissione",
|
"Semplifica il menu della trasmissione",
|
||||||
"ストリーミングメニューのラベルを非表示",
|
"ストリーミングメニューのラベルを非表示",
|
||||||
"메뉴 간단히 보기",
|
"스트리밍 메뉴 간단히 보기",
|
||||||
"Uprość menu strumienia",
|
"Uprość menu strumienia",
|
||||||
"Simplificar menu de transmissão",
|
"Simplificar menu de transmissão",
|
||||||
"Упростить меню потока",
|
"Упростить меню потока",
|
||||||
@ -2767,7 +2788,7 @@ var Texts = {
|
|||||||
"Ignorer la vidéo de démarrage Xbox",
|
"Ignorer la vidéo de démarrage Xbox",
|
||||||
"Salta il logo Xbox iniziale",
|
"Salta il logo Xbox iniziale",
|
||||||
"Xboxの起動画面をスキップ",
|
"Xboxの起動画面をスキップ",
|
||||||
"Xbox 스플래시 건너뛰기",
|
"Xbox 스플래시 영상 건너뛰기",
|
||||||
"Pomiń wstępne intro Xbox",
|
"Pomiń wstępne intro Xbox",
|
||||||
"Pular introdução do Xbox",
|
"Pular introdução do Xbox",
|
||||||
"Пропустить видео с заставкой Xbox",
|
"Пропустить видео с заставкой Xbox",
|
||||||
@ -3039,7 +3060,7 @@ var Texts = {
|
|||||||
"Étirer",
|
"Étirer",
|
||||||
"Riempi",
|
"Riempi",
|
||||||
"引き伸ばし",
|
"引き伸ばし",
|
||||||
"채우기",
|
"늘이기",
|
||||||
"Rozciągnij",
|
"Rozciągnij",
|
||||||
"Esticar",
|
"Esticar",
|
||||||
"Растянуть",
|
"Растянуть",
|
||||||
@ -3048,6 +3069,22 @@ var Texts = {
|
|||||||
"Kéo giãn",
|
"Kéo giãn",
|
||||||
"拉伸"
|
"拉伸"
|
||||||
],
|
],
|
||||||
|
"stretch-note": [
|
||||||
|
,
|
||||||
|
,
|
||||||
|
"Don't use with native touch games",
|
||||||
|
"No usar con juegos nativos táctiles",
|
||||||
|
,
|
||||||
|
,
|
||||||
|
,
|
||||||
|
,
|
||||||
|
,
|
||||||
|
,
|
||||||
|
,
|
||||||
|
,
|
||||||
|
,
|
||||||
|
"Không dùng với các game cảm ứng trực tiếp"
|
||||||
|
],
|
||||||
"support-better-xcloud": [
|
"support-better-xcloud": [
|
||||||
'"Better xCloud" unterstützen',
|
'"Better xCloud" unterstützen',
|
||||||
"Dukung Better xCloud",
|
"Dukung Better xCloud",
|
||||||
@ -3220,7 +3257,7 @@ var Texts = {
|
|||||||
],
|
],
|
||||||
"tc-muted-colors": [
|
"tc-muted-colors": [
|
||||||
"Matte Farben",
|
"Matte Farben",
|
||||||
"Warna redup",
|
"Warna Semu",
|
||||||
"Muted colors",
|
"Muted colors",
|
||||||
"Colores apagados",
|
"Colores apagados",
|
||||||
"Couleurs adoucies",
|
"Couleurs adoucies",
|
||||||
@ -3240,7 +3277,7 @@ var Texts = {
|
|||||||
"Gaya tata letak tombol standar",
|
"Gaya tata letak tombol standar",
|
||||||
"Standard layout's button style",
|
"Standard layout's button style",
|
||||||
"Estilo de botones de diseño estándar",
|
"Estilo de botones de diseño estándar",
|
||||||
"Style standard des boutons",
|
"Disposition standard des boutons",
|
||||||
"Layout dei tasti standard",
|
"Layout dei tasti standard",
|
||||||
"標準レイアウト",
|
"標準レイアウト",
|
||||||
"표준 레이아웃의 버튼 스타일",
|
"표준 레이아웃의 버튼 스타일",
|
||||||
@ -3291,7 +3328,7 @@ var Texts = {
|
|||||||
"Kiri atas",
|
"Kiri atas",
|
||||||
"Top-left",
|
"Top-left",
|
||||||
"Superior izquierdo",
|
"Superior izquierdo",
|
||||||
"Haut-gauche",
|
"En haut à gauche",
|
||||||
"In alto a sinistra",
|
"In alto a sinistra",
|
||||||
"左上",
|
"左上",
|
||||||
"좌측 상단",
|
"좌측 상단",
|
||||||
@ -3345,7 +3382,7 @@ var Texts = {
|
|||||||
(e) => `Disposition du contrôleur tactile par ${e.name}`,
|
(e) => `Disposition du contrôleur tactile par ${e.name}`,
|
||||||
(e) => `Configurazione dei comandi su schermo creata da ${e.name}`,
|
(e) => `Configurazione dei comandi su schermo creata da ${e.name}`,
|
||||||
(e) => `タッチ操作レイアウト作成者: ${e.name}`,
|
(e) => `タッチ操作レイアウト作成者: ${e.name}`,
|
||||||
(e) => `터치 컨트롤 레이아웃: ${e.name}`,
|
(e) => `${e.name} 제작, 터치 컨트롤 레이아웃`,
|
||||||
(e) => `Układ sterowania dotykowego stworzony przez ${e.name}`,
|
(e) => `Układ sterowania dotykowego stworzony przez ${e.name}`,
|
||||||
(e) => `Disposição de controle por toque feito por ${e.name}`,
|
(e) => `Disposição de controle por toque feito por ${e.name}`,
|
||||||
(e) => `Сенсорная раскладка по ${e.name}`,
|
(e) => `Сенсорная раскладка по ${e.name}`,
|
||||||
@ -3678,7 +3715,7 @@ var Texts = {
|
|||||||
],
|
],
|
||||||
"wait-time-estimated": [
|
"wait-time-estimated": [
|
||||||
"Geschätzte Endzeit",
|
"Geschätzte Endzeit",
|
||||||
"Perkiraan waktu",
|
"Perkiraan waktu Selesai ",
|
||||||
"Estimated finish time",
|
"Estimated finish time",
|
||||||
"Tiempo estimado de finalización",
|
"Tiempo estimado de finalización",
|
||||||
"Temps estimé avant la fin",
|
"Temps estimé avant la fin",
|
||||||
@ -3876,7 +3913,10 @@ var SettingElementType;
|
|||||||
|
|
||||||
class SettingElement {
|
class SettingElement {
|
||||||
static #renderOptions(key, setting, currentValue, onChange) {
|
static #renderOptions(key, setting, currentValue, onChange) {
|
||||||
const $control = CE("select");
|
const $control = CE("select", {
|
||||||
|
title: setting.label,
|
||||||
|
tabindex: 0
|
||||||
|
});
|
||||||
for (let value in setting.options) {
|
for (let value in setting.options) {
|
||||||
const label = setting.options[value];
|
const label = setting.options[value];
|
||||||
const $option = CE("option", { value }, label);
|
const $option = CE("option", { value }, label);
|
||||||
@ -3894,7 +3934,11 @@ class SettingElement {
|
|||||||
return $control;
|
return $control;
|
||||||
}
|
}
|
||||||
static #renderMultipleOptions(key, setting, currentValue, onChange, params = {}) {
|
static #renderMultipleOptions(key, setting, currentValue, onChange, params = {}) {
|
||||||
const $control = CE("select", { multiple: true });
|
const $control = CE("select", {
|
||||||
|
title: setting.label,
|
||||||
|
multiple: true,
|
||||||
|
tabindex: 0
|
||||||
|
});
|
||||||
if (params && params.size) {
|
if (params && params.size) {
|
||||||
$control.setAttribute("size", params.size.toString());
|
$control.setAttribute("size", params.size.toString());
|
||||||
}
|
}
|
||||||
@ -3926,7 +3970,7 @@ class SettingElement {
|
|||||||
return $control;
|
return $control;
|
||||||
}
|
}
|
||||||
static #renderNumber(key, setting, currentValue, onChange) {
|
static #renderNumber(key, setting, currentValue, onChange) {
|
||||||
const $control = CE("input", { type: "number", min: setting.min, max: setting.max });
|
const $control = CE("input", { tabindex: 0, type: "number", min: setting.min, max: setting.max });
|
||||||
$control.value = currentValue;
|
$control.value = currentValue;
|
||||||
onChange && $control.addEventListener("change", (e) => {
|
onChange && $control.addEventListener("change", (e) => {
|
||||||
const target = e.target;
|
const target = e.target;
|
||||||
@ -3937,7 +3981,7 @@ class SettingElement {
|
|||||||
return $control;
|
return $control;
|
||||||
}
|
}
|
||||||
static #renderCheckbox(key, setting, currentValue, onChange) {
|
static #renderCheckbox(key, setting, currentValue, onChange) {
|
||||||
const $control = CE("input", { type: "checkbox" });
|
const $control = CE("input", { type: "checkbox", tabindex: 0 });
|
||||||
$control.checked = currentValue;
|
$control.checked = currentValue;
|
||||||
onChange && $control.addEventListener("change", (e) => {
|
onChange && $control.addEventListener("change", (e) => {
|
||||||
onChange(e, e.target.checked);
|
onChange(e, e.target.checked);
|
||||||
@ -3967,9 +4011,25 @@ class SettingElement {
|
|||||||
}
|
}
|
||||||
return textContent;
|
return textContent;
|
||||||
};
|
};
|
||||||
const $wrapper = CE("div", { class: "bx-number-stepper" }, $decBtn = CE("button", { "data-type": "dec" }, "-"), $text = CE("span", {}, renderTextValue(value)), $incBtn = CE("button", { "data-type": "inc" }, "+"));
|
const $wrapper = CE("div", { class: "bx-number-stepper" }, $decBtn = CE("button", {
|
||||||
|
"data-type": "dec",
|
||||||
|
type: "button",
|
||||||
|
tabindex: -1
|
||||||
|
}, "-"), $text = CE("span", {}, renderTextValue(value)), $incBtn = CE("button", {
|
||||||
|
"data-type": "inc",
|
||||||
|
type: "button",
|
||||||
|
tabindex: -1
|
||||||
|
}, "+"));
|
||||||
if (!options.disabled && !options.hideSlider) {
|
if (!options.disabled && !options.hideSlider) {
|
||||||
$range = CE("input", { type: "range", min: MIN, max: MAX, value, step: STEPS });
|
$range = CE("input", {
|
||||||
|
id: `bx_setting_${key}`,
|
||||||
|
type: "range",
|
||||||
|
min: MIN,
|
||||||
|
max: MAX,
|
||||||
|
value,
|
||||||
|
step: STEPS,
|
||||||
|
tabindex: 0
|
||||||
|
});
|
||||||
$range.addEventListener("input", (e) => {
|
$range.addEventListener("input", (e) => {
|
||||||
value = parseInt(e.target.value);
|
value = parseInt(e.target.value);
|
||||||
$text.textContent = renderTextValue(value);
|
$text.textContent = renderTextValue(value);
|
||||||
@ -4069,7 +4129,9 @@ class SettingElement {
|
|||||||
static render(type, key, setting, currentValue, onChange, options) {
|
static render(type, key, setting, currentValue, onChange, options) {
|
||||||
const method = SettingElement.#METHOD_MAP[type];
|
const method = SettingElement.#METHOD_MAP[type];
|
||||||
const $control = method(...Array.from(arguments).slice(1));
|
const $control = method(...Array.from(arguments).slice(1));
|
||||||
$control.id = `bx_setting_${key}`;
|
if (type !== SettingElementType.NUMBER_STEPPER) {
|
||||||
|
$control.id = `bx_setting_${key}`;
|
||||||
|
}
|
||||||
if (type === SettingElementType.OPTIONS || type === SettingElementType.MULTIPLE_OPTIONS) {
|
if (type === SettingElementType.OPTIONS || type === SettingElementType.MULTIPLE_OPTIONS) {
|
||||||
$control.name = $control.id;
|
$control.name = $control.id;
|
||||||
}
|
}
|
||||||
@ -4557,6 +4619,7 @@ var PrefKey;
|
|||||||
PrefKey2["CONTROLLER_ENABLE_VIBRATION"] = "controller_enable_vibration";
|
PrefKey2["CONTROLLER_ENABLE_VIBRATION"] = "controller_enable_vibration";
|
||||||
PrefKey2["CONTROLLER_DEVICE_VIBRATION"] = "controller_device_vibration";
|
PrefKey2["CONTROLLER_DEVICE_VIBRATION"] = "controller_device_vibration";
|
||||||
PrefKey2["CONTROLLER_VIBRATION_INTENSITY"] = "controller_vibration_intensity";
|
PrefKey2["CONTROLLER_VIBRATION_INTENSITY"] = "controller_vibration_intensity";
|
||||||
|
PrefKey2["NATIVE_MKB_DISABLED"] = "native_mkb_disabled";
|
||||||
PrefKey2["MKB_ENABLED"] = "mkb_enabled";
|
PrefKey2["MKB_ENABLED"] = "mkb_enabled";
|
||||||
PrefKey2["MKB_HIDE_IDLE_CURSOR"] = "mkb_hide_idle_cursor";
|
PrefKey2["MKB_HIDE_IDLE_CURSOR"] = "mkb_hide_idle_cursor";
|
||||||
PrefKey2["MKB_ABSOLUTE_MOUSE"] = "mkb_absolute_mouse";
|
PrefKey2["MKB_ABSOLUTE_MOUSE"] = "mkb_absolute_mouse";
|
||||||
@ -4888,6 +4951,10 @@ class Preferences {
|
|||||||
}, "⚠️ " + note);
|
}, "⚠️ " + note);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
[PrefKey.NATIVE_MKB_DISABLED]: {
|
||||||
|
label: t("disable-native-mkb"),
|
||||||
|
default: false
|
||||||
|
},
|
||||||
[PrefKey.MKB_DEFAULT_PRESET_ID]: {
|
[PrefKey.MKB_DEFAULT_PRESET_ID]: {
|
||||||
default: 0
|
default: 0
|
||||||
},
|
},
|
||||||
@ -5482,7 +5549,7 @@ class Dialog {
|
|||||||
style: ButtonStyle.GHOST,
|
style: ButtonStyle.GHOST,
|
||||||
title: t("help"),
|
title: t("help"),
|
||||||
url: helpUrl
|
url: helpUrl
|
||||||
})), this.$content = CE("div", { class: "bx-dialog-content" }, content), !hideCloseButton && ($close = CE("button", {}, t("close"))));
|
})), this.$content = CE("div", { class: "bx-dialog-content" }, content), !hideCloseButton && ($close = CE("button", { type: "button" }, t("close"))));
|
||||||
$close && $close.addEventListener("click", (e) => {
|
$close && $close.addEventListener("click", (e) => {
|
||||||
this.hide(e);
|
this.hide(e);
|
||||||
});
|
});
|
||||||
@ -6639,6 +6706,7 @@ class MkbRemapper {
|
|||||||
const $fragment = document.createDocumentFragment();
|
const $fragment = document.createDocumentFragment();
|
||||||
for (let i = 0;i < keysPerButton; i++) {
|
for (let i = 0;i < keysPerButton; i++) {
|
||||||
$elm = CE("button", {
|
$elm = CE("button", {
|
||||||
|
type: "button",
|
||||||
"data-prompt": buttonPrompt,
|
"data-prompt": buttonPrompt,
|
||||||
"data-button-index": buttonIndex,
|
"data-button-index": buttonIndex,
|
||||||
"data-key-slot": i
|
"data-key-slot": i
|
||||||
@ -8346,6 +8414,9 @@ var BxExposed = {
|
|||||||
modifyTitleInfo: (titleInfo) => {
|
modifyTitleInfo: (titleInfo) => {
|
||||||
titleInfo = structuredClone(titleInfo);
|
titleInfo = structuredClone(titleInfo);
|
||||||
let supportedInputTypes = titleInfo.details.supportedInputTypes;
|
let supportedInputTypes = titleInfo.details.supportedInputTypes;
|
||||||
|
if (getPref(PrefKey.NATIVE_MKB_DISABLED) || UserAgent.isMobile()) {
|
||||||
|
supportedInputTypes = supportedInputTypes.filter((i) => i !== InputType.MKB);
|
||||||
|
}
|
||||||
titleInfo.details.hasMkbSupport = supportedInputTypes.includes(InputType.MKB);
|
titleInfo.details.hasMkbSupport = supportedInputTypes.includes(InputType.MKB);
|
||||||
if (STATES.hasTouchSupport) {
|
if (STATES.hasTouchSupport) {
|
||||||
let touchControllerAvailability = getPref(PrefKey.STREAM_TOUCH_CONTROLLER);
|
let touchControllerAvailability = getPref(PrefKey.STREAM_TOUCH_CONTROLLER);
|
||||||
@ -8360,9 +8431,6 @@ var BxExposed = {
|
|||||||
}
|
}
|
||||||
gamepadFound && (touchControllerAvailability = "off");
|
gamepadFound && (touchControllerAvailability = "off");
|
||||||
}
|
}
|
||||||
if (UserAgent.isMobile()) {
|
|
||||||
supportedInputTypes = supportedInputTypes.filter((i) => i !== InputType.MKB);
|
|
||||||
}
|
|
||||||
if (touchControllerAvailability === "off") {
|
if (touchControllerAvailability === "off") {
|
||||||
supportedInputTypes = supportedInputTypes.filter((i) => i !== InputType.CUSTOM_TOUCH_OVERLAY && i !== InputType.GENERIC_TOUCH);
|
supportedInputTypes = supportedInputTypes.filter((i) => i !== InputType.CUSTOM_TOUCH_OVERLAY && i !== InputType.GENERIC_TOUCH);
|
||||||
}
|
}
|
||||||
@ -8371,8 +8439,8 @@ var BxExposed = {
|
|||||||
titleInfo.details.hasFakeTouchSupport = true;
|
titleInfo.details.hasFakeTouchSupport = true;
|
||||||
supportedInputTypes.push(InputType.GENERIC_TOUCH);
|
supportedInputTypes.push(InputType.GENERIC_TOUCH);
|
||||||
}
|
}
|
||||||
titleInfo.details.supportedInputTypes = supportedInputTypes;
|
|
||||||
}
|
}
|
||||||
|
titleInfo.details.supportedInputTypes = supportedInputTypes;
|
||||||
STATES.currentStream.titleInfo = titleInfo;
|
STATES.currentStream.titleInfo = titleInfo;
|
||||||
BxEvent.dispatch(window, BxEvent.TITLE_INFO_READY);
|
BxEvent.dispatch(window, BxEvent.TITLE_INFO_READY);
|
||||||
return titleInfo;
|
return titleInfo;
|
||||||
@ -8438,7 +8506,6 @@ function addCss() {
|
|||||||
--bx-danger-button-hover-color: #e61d1d;
|
--bx-danger-button-hover-color: #e61d1d;
|
||||||
--bx-danger-button-disabled-color: #a26c6c;
|
--bx-danger-button-disabled-color: #a26c6c;
|
||||||
--bx-toast-z-index: 9999;
|
--bx-toast-z-index: 9999;
|
||||||
--bx-reload-button-z-index: 9200;
|
|
||||||
--bx-dialog-z-index: 9101;
|
--bx-dialog-z-index: 9101;
|
||||||
--bx-dialog-overlay-z-index: 9100;
|
--bx-dialog-overlay-z-index: 9100;
|
||||||
--bx-remote-play-popup-z-index: 9090;
|
--bx-remote-play-popup-z-index: 9090;
|
||||||
@ -8620,19 +8687,9 @@ a.bx-button.bx-full-width {
|
|||||||
display: inline-block;
|
display: inline-block;
|
||||||
margin-left: 4px;
|
margin-left: 4px;
|
||||||
}
|
}
|
||||||
.bx-settings-reload-button-wrapper {
|
.bx-settings-reload-button {
|
||||||
z-index: var(--bx-reload-button-z-index);
|
margin-top: 10px;
|
||||||
position: fixed;
|
height: calc(var(--bx-button-height) * 1.5);
|
||||||
bottom: 0;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
text-align: center;
|
|
||||||
background: rgba(0,0,0,0.812);
|
|
||||||
padding: 10px;
|
|
||||||
}
|
|
||||||
.bx-settings-reload-button-wrapper button {
|
|
||||||
max-width: 450px;
|
|
||||||
margin: 0 !important;
|
|
||||||
}
|
}
|
||||||
.bx-settings-container {
|
.bx-settings-container {
|
||||||
background-color: #151515;
|
background-color: #151515;
|
||||||
@ -8706,24 +8763,25 @@ a.bx-button.bx-full-width {
|
|||||||
}
|
}
|
||||||
.bx-settings-row {
|
.bx-settings-row {
|
||||||
display: flex;
|
display: flex;
|
||||||
margin-bottom: 8px;
|
padding: 6px 12px;
|
||||||
padding: 2px 4px;
|
position: relative;
|
||||||
}
|
}
|
||||||
.bx-settings-row label {
|
.bx-settings-row label {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
align-self: center;
|
align-self: center;
|
||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
padding-left: 10px;
|
|
||||||
}
|
}
|
||||||
@media (hover: none) {
|
.bx-settings-row:hover,
|
||||||
.bx-settings-row:focus-within {
|
.bx-settings-row:focus-within {
|
||||||
background-color: #242424;
|
background-color: #242424;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
.bx-settings-row input {
|
.bx-settings-row input {
|
||||||
align-self: center;
|
align-self: center;
|
||||||
accent-color: var(--bx-primary-button-color);
|
accent-color: var(--bx-primary-button-color);
|
||||||
}
|
}
|
||||||
|
.bx-settings-row input:focus {
|
||||||
|
accent-color: var(--bx-danger-button-color);
|
||||||
|
}
|
||||||
.bx-settings-row select:disabled {
|
.bx-settings-row select:disabled {
|
||||||
-webkit-appearance: none;
|
-webkit-appearance: none;
|
||||||
background: transparent;
|
background: transparent;
|
||||||
@ -8731,6 +8789,20 @@ a.bx-button.bx-full-width {
|
|||||||
border: none;
|
border: none;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
}
|
}
|
||||||
|
.bx-settings-row input[type=checkbox]:focus,
|
||||||
|
.bx-settings-row select:focus {
|
||||||
|
filter: drop-shadow(1px 0 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 1px 0 #fff) drop-shadow(0 -1px 0 #fff);
|
||||||
|
}
|
||||||
|
.bx-settings-row:has(input:focus)::before,
|
||||||
|
.bx-settings-row:has(select:focus)::before {
|
||||||
|
content: ' ';
|
||||||
|
border-radius: 4px;
|
||||||
|
border: 2px solid #fff;
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
bottom: 0;
|
||||||
|
}
|
||||||
.bx-settings-group-label b,
|
.bx-settings-group-label b,
|
||||||
.bx-settings-row label b {
|
.bx-settings-row label b {
|
||||||
display: block;
|
display: block;
|
||||||
@ -8761,6 +8833,9 @@ a.bx-button.bx-full-width {
|
|||||||
.bx-donation-link:hover {
|
.bx-donation-link:hover {
|
||||||
color: #6dd72b;
|
color: #6dd72b;
|
||||||
}
|
}
|
||||||
|
.bx-donation-link:focus {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
.bx-settings-custom-user-agent {
|
.bx-settings-custom-user-agent {
|
||||||
display: block;
|
display: block;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
@ -10412,7 +10487,7 @@ function setupSettingsUi() {
|
|||||||
}
|
}
|
||||||
const PREF_PREFERRED_REGION = getPreferredServerRegion();
|
const PREF_PREFERRED_REGION = getPreferredServerRegion();
|
||||||
const PREF_LATEST_VERSION = getPref(PrefKey.LATEST_VERSION);
|
const PREF_LATEST_VERSION = getPref(PrefKey.LATEST_VERSION);
|
||||||
let $reloadBtnWrapper;
|
let $btnReload;
|
||||||
const $container = CE("div", {
|
const $container = CE("div", {
|
||||||
class: "bx-settings-container bx-gone"
|
class: "bx-settings-container bx-gone"
|
||||||
});
|
});
|
||||||
@ -10421,7 +10496,12 @@ function setupSettingsUi() {
|
|||||||
class: "bx-settings-title",
|
class: "bx-settings-title",
|
||||||
href: SCRIPT_HOME,
|
href: SCRIPT_HOME,
|
||||||
target: "_blank"
|
target: "_blank"
|
||||||
}, "Better xCloud " + SCRIPT_VERSION), createButton({ icon: BxIcon.QUESTION, label: t("help"), url: "https://better-xcloud.github.io/features/" })));
|
}, "Better xCloud " + SCRIPT_VERSION), createButton({
|
||||||
|
icon: BxIcon.QUESTION,
|
||||||
|
style: ButtonStyle.FOCUSABLE,
|
||||||
|
label: t("help"),
|
||||||
|
url: "https://better-xcloud.github.io/features/"
|
||||||
|
})));
|
||||||
$updateAvailable = CE("a", {
|
$updateAvailable = CE("a", {
|
||||||
class: "bx-settings-update bx-gone",
|
class: "bx-settings-update bx-gone",
|
||||||
href: "https://github.com/redphx/better-xcloud/releases",
|
href: "https://github.com/redphx/better-xcloud/releases",
|
||||||
@ -10454,16 +10534,14 @@ function setupSettingsUi() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
const onChange = (e) => {
|
const onChange = (e) => {
|
||||||
if (!$reloadBtnWrapper) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
$reloadBtnWrapper.classList.remove("bx-gone");
|
|
||||||
PatcherCache.clear();
|
PatcherCache.clear();
|
||||||
|
$btnReload.classList.add("bx-danger");
|
||||||
|
const $btnHeaderSettings = document.querySelector(".bx-header-settings-button");
|
||||||
|
$btnHeaderSettings && $btnHeaderSettings.classList.add("bx-danger");
|
||||||
if (e.target.id === "bx_setting_" + PrefKey.BETTER_XCLOUD_LOCALE) {
|
if (e.target.id === "bx_setting_" + PrefKey.BETTER_XCLOUD_LOCALE) {
|
||||||
refreshCurrentLocale();
|
refreshCurrentLocale();
|
||||||
const $btn = $reloadBtnWrapper.firstElementChild;
|
$btnReload.textContent = t("settings-reloading");
|
||||||
$btn.textContent = t("settings-reloading");
|
$btnReload.click();
|
||||||
$btn.click();
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
for (let groupLabel in SETTINGS_UI) {
|
for (let groupLabel in SETTINGS_UI) {
|
||||||
@ -10497,10 +10575,13 @@ function setupSettingsUi() {
|
|||||||
}
|
}
|
||||||
let $control;
|
let $control;
|
||||||
let $inpCustomUserAgent;
|
let $inpCustomUserAgent;
|
||||||
let labelAttrs = {};
|
let labelAttrs = {
|
||||||
|
tabindex: "-1"
|
||||||
|
};
|
||||||
if (settingId === PrefKey.USER_AGENT_PROFILE) {
|
if (settingId === PrefKey.USER_AGENT_PROFILE) {
|
||||||
let defaultUserAgent = window.navigator.orgUserAgent || window.navigator.userAgent;
|
let defaultUserAgent = window.navigator.orgUserAgent || window.navigator.userAgent;
|
||||||
$inpCustomUserAgent = CE("input", {
|
$inpCustomUserAgent = CE("input", {
|
||||||
|
id: `bx_setting_inp_${settingId}`,
|
||||||
type: "text",
|
type: "text",
|
||||||
placeholder: defaultUserAgent,
|
placeholder: defaultUserAgent,
|
||||||
class: "bx-settings-custom-user-agent"
|
class: "bx-settings-custom-user-agent"
|
||||||
@ -10519,11 +10600,15 @@ function setupSettingsUi() {
|
|||||||
$inpCustomUserAgent.value = userAgent2;
|
$inpCustomUserAgent.value = userAgent2;
|
||||||
$inpCustomUserAgent.readOnly = !isCustom;
|
$inpCustomUserAgent.readOnly = !isCustom;
|
||||||
$inpCustomUserAgent.disabled = !isCustom;
|
$inpCustomUserAgent.disabled = !isCustom;
|
||||||
onChange(e);
|
!e.target.disabled && onChange(e);
|
||||||
});
|
});
|
||||||
} else if (settingId === PrefKey.SERVER_REGION) {
|
} else if (settingId === PrefKey.SERVER_REGION) {
|
||||||
let selectedValue;
|
let selectedValue;
|
||||||
$control = CE("select", { id: `bx_setting_${settingId}` });
|
$control = CE("select", {
|
||||||
|
id: `bx_setting_${settingId}`,
|
||||||
|
title: settingLabel,
|
||||||
|
tabindex: 0
|
||||||
|
});
|
||||||
$control.name = $control.id;
|
$control.name = $control.id;
|
||||||
$control.addEventListener("change", (e) => {
|
$control.addEventListener("change", (e) => {
|
||||||
setPref(settingId, e.target.value);
|
setPref(settingId, e.target.value);
|
||||||
@ -10559,11 +10644,18 @@ function setupSettingsUi() {
|
|||||||
} else {
|
} else {
|
||||||
$control = toPrefElement(settingId, onChange);
|
$control = toPrefElement(settingId, onChange);
|
||||||
}
|
}
|
||||||
labelAttrs = { for: $control.id, tabindex: 0 };
|
}
|
||||||
|
if (!!$control.id) {
|
||||||
|
labelAttrs["for"] = $control.id;
|
||||||
|
} else {
|
||||||
|
labelAttrs["for"] = `bx_setting_${settingId}`;
|
||||||
}
|
}
|
||||||
if (setting.unsupported) {
|
if (setting.unsupported) {
|
||||||
$control.disabled = true;
|
$control.disabled = true;
|
||||||
}
|
}
|
||||||
|
if ($control.disabled && !!$control.getAttribute("tabindex")) {
|
||||||
|
$control.setAttribute("tabindex", -1);
|
||||||
|
}
|
||||||
const $label = CE("label", labelAttrs, settingLabel);
|
const $label = CE("label", labelAttrs, settingLabel);
|
||||||
if (settingNote) {
|
if (settingNote) {
|
||||||
$label.appendChild(CE("b", {}, settingNote));
|
$label.appendChild(CE("b", {}, settingNote));
|
||||||
@ -10572,23 +10664,30 @@ function setupSettingsUi() {
|
|||||||
$wrapper.appendChild($elm);
|
$wrapper.appendChild($elm);
|
||||||
if (settingId === PrefKey.USER_AGENT_PROFILE) {
|
if (settingId === PrefKey.USER_AGENT_PROFILE) {
|
||||||
$wrapper.appendChild($inpCustomUserAgent);
|
$wrapper.appendChild($inpCustomUserAgent);
|
||||||
|
$control.disabled = true;
|
||||||
$control.dispatchEvent(new Event("change"));
|
$control.dispatchEvent(new Event("change"));
|
||||||
|
$control.disabled = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const $reloadBtn = createButton({
|
$btnReload = createButton({
|
||||||
label: t("settings-reload"),
|
label: t("settings-reload"),
|
||||||
style: ButtonStyle.DANGER | ButtonStyle.FOCUSABLE | ButtonStyle.FULL_WIDTH,
|
classes: ["bx-settings-reload-button"],
|
||||||
|
style: ButtonStyle.FOCUSABLE | ButtonStyle.FULL_WIDTH,
|
||||||
onClick: (e) => {
|
onClick: (e) => {
|
||||||
window.location.reload();
|
window.location.reload();
|
||||||
$reloadBtn.disabled = true;
|
$btnReload.disabled = true;
|
||||||
$reloadBtn.textContent = t("settings-reloading");
|
$btnReload.textContent = t("settings-reloading");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
$reloadBtn.setAttribute("tabindex", "0");
|
$btnReload.setAttribute("tabindex", "0");
|
||||||
$reloadBtnWrapper = CE("div", { class: "bx-settings-reload-button-wrapper bx-gone" }, $reloadBtn);
|
$wrapper.appendChild($btnReload);
|
||||||
$wrapper.appendChild($reloadBtnWrapper);
|
const $donationLink = CE("a", {
|
||||||
const $donationLink = CE("a", { class: "bx-donation-link", href: "https://ko-fi.com/redphx", target: "_blank" }, `❤️ ${t("support-better-xcloud")}`);
|
class: "bx-donation-link",
|
||||||
|
href: "https://ko-fi.com/redphx",
|
||||||
|
target: "_blank",
|
||||||
|
tabindex: 0
|
||||||
|
}, `❤️ ${t("support-better-xcloud")}`);
|
||||||
$wrapper.appendChild($donationLink);
|
$wrapper.appendChild($donationLink);
|
||||||
try {
|
try {
|
||||||
const appVersion = document.querySelector("meta[name=gamepass-app-version]").content;
|
const appVersion = document.querySelector("meta[name=gamepass-app-version]").content;
|
||||||
@ -10639,6 +10738,7 @@ var SETTINGS_UI = {
|
|||||||
},
|
},
|
||||||
[t("mouse-and-keyboard")]: {
|
[t("mouse-and-keyboard")]: {
|
||||||
items: [
|
items: [
|
||||||
|
PrefKey.NATIVE_MKB_DISABLED,
|
||||||
PrefKey.MKB_ENABLED,
|
PrefKey.MKB_ENABLED,
|
||||||
PrefKey.MKB_HIDE_IDLE_CURSOR
|
PrefKey.MKB_HIDE_IDLE_CURSOR
|
||||||
]
|
]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user