Compare commits
1 Commits
dd9a0904f7
...
Canary-1.2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6b55d158b7 |
@@ -2988,8 +2988,8 @@
|
||||
010015D003EE4000,"The Jackbox Party Pack 2",online-working,playable,2022-08-22 18:23:40
|
||||
0100CC80013D6000,"The Jackbox Party Pack 3",slow;online-working,playable,2022-08-22 18:41:06
|
||||
0100E1F003EE8000,"The Jackbox Party Pack 4",online-working,playable,2022-08-22 18:56:34
|
||||
01006fe0096ac000,"The Jackbox Party Pack 5",ldn-untested,boots,2025-02-03 22:32:00
|
||||
01005a400db52000,"The Jackbox Party Pack 6",ldn-untested,boots,2025-02-03 22:32:00
|
||||
01006fe0096ac000,"The Jackbox Party Pack 5",slow;online-working,ingame,2025-02-14 05:32:00
|
||||
01005a400db52000,"The Jackbox Party Pack 6",slow;online-working,ingame,2025-02-14 05:26:00
|
||||
010052C00B184000,"The Journey Down: Chapter One",nvdec,playable,2021-02-24 13:32:41
|
||||
01006BC00B188000,"The Journey Down: Chapter Three",nvdec,playable,2021-02-24 13:45:27
|
||||
01009AB00B186000,"The Journey Down: Chapter Two",nvdec,playable,2021-02-24 13:32:13
|
||||
|
||||
|
@@ -1,5 +1,3 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Ryujinx.Common.Configuration.Hid
|
||||
{
|
||||
public class KeyboardHotkeys
|
||||
@@ -15,6 +13,5 @@ namespace Ryujinx.Common.Configuration.Hid
|
||||
public Key VolumeDown { get; set; }
|
||||
public Key CustomVSyncIntervalIncrement { get; set; }
|
||||
public Key CustomVSyncIntervalDecrement { get; set; }
|
||||
public List<Key> CycleControllers { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,7 +40,6 @@ using Ryujinx.HLE;
|
||||
using Ryujinx.HLE.FileSystem;
|
||||
using Ryujinx.HLE.HOS;
|
||||
using Ryujinx.HLE.HOS.Services.Account.Acc;
|
||||
using Ryujinx.HLE.HOS.Services.Hid;
|
||||
using Ryujinx.HLE.HOS.SystemState;
|
||||
using Ryujinx.Input;
|
||||
using Ryujinx.Input.HLE;
|
||||
@@ -50,7 +49,6 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
@@ -1311,18 +1309,6 @@ namespace Ryujinx.Ava
|
||||
|
||||
_viewModel.Volume = Device.GetVolume();
|
||||
break;
|
||||
case KeyboardHotkeyState.CycleControllersPlayer1:
|
||||
case KeyboardHotkeyState.CycleControllersPlayer2:
|
||||
case KeyboardHotkeyState.CycleControllersPlayer3:
|
||||
case KeyboardHotkeyState.CycleControllersPlayer4:
|
||||
case KeyboardHotkeyState.CycleControllersPlayer5:
|
||||
case KeyboardHotkeyState.CycleControllersPlayer6:
|
||||
case KeyboardHotkeyState.CycleControllersPlayer7:
|
||||
case KeyboardHotkeyState.CycleControllersPlayer8:
|
||||
var player = currentHotkeyState - KeyboardHotkeyState.CycleControllersPlayer1;
|
||||
var ivm = new UI.ViewModels.Input.InputViewModel();
|
||||
Dispatcher.UIThread.Invoke(() => ivm.CyclePlayerDevice(player));
|
||||
break;
|
||||
case KeyboardHotkeyState.None:
|
||||
(_keyboardInterface as AvaloniaKeyboard).Clear();
|
||||
break;
|
||||
@@ -1405,15 +1391,6 @@ namespace Ryujinx.Ava
|
||||
state = KeyboardHotkeyState.CustomVSyncIntervalDecrement;
|
||||
}
|
||||
|
||||
foreach (var cycle in ConfigurationState.Instance.Hid.Hotkeys.Value.CycleControllers?.Select((value, index) => (value, index)) ?? [])
|
||||
{
|
||||
if (_keyboardInterface.IsPressed((Key)cycle.value))
|
||||
{
|
||||
state = KeyboardHotkeyState.CycleControllersPlayer1 + cycle.index;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return state;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -585,7 +585,7 @@
|
||||
"it_IT": "",
|
||||
"ja_JP": "",
|
||||
"ko_KR": "UI를 숨긴 상태에서 게임 시작",
|
||||
"no_NO": "",
|
||||
"no_NO": "Start Spillet med UI Gjemt",
|
||||
"pl_PL": "",
|
||||
"pt_BR": "Iniciar jogos ocultando a interface",
|
||||
"ru_RU": "",
|
||||
@@ -1535,7 +1535,7 @@
|
||||
"it_IT": "",
|
||||
"ja_JP": "",
|
||||
"ko_KR": "",
|
||||
"no_NO": "",
|
||||
"no_NO": "Utviklet av {0}",
|
||||
"pl_PL": "",
|
||||
"pt_BR": "Desenvolvido por {0}",
|
||||
"ru_RU": "",
|
||||
@@ -1835,7 +1835,7 @@
|
||||
"it_IT": "",
|
||||
"ja_JP": "",
|
||||
"ko_KR": "",
|
||||
"no_NO": "",
|
||||
"no_NO": "Kompatibilitet",
|
||||
"pl_PL": "",
|
||||
"pt_BR": "Compatibilidade:",
|
||||
"ru_RU": "",
|
||||
@@ -1860,7 +1860,7 @@
|
||||
"it_IT": "",
|
||||
"ja_JP": "",
|
||||
"ko_KR": "",
|
||||
"no_NO": "",
|
||||
"no_NO": "Tittel ID:",
|
||||
"pl_PL": "",
|
||||
"pt_BR": "ID do título:",
|
||||
"ru_RU": "",
|
||||
@@ -1885,7 +1885,7 @@
|
||||
"it_IT": "",
|
||||
"ja_JP": "",
|
||||
"ko_KR": "",
|
||||
"no_NO": "",
|
||||
"no_NO": "Spill som Arrangeres: {0}",
|
||||
"pl_PL": "",
|
||||
"pt_BR": "Jogos hospedados: {0}",
|
||||
"ru_RU": "",
|
||||
@@ -1910,7 +1910,7 @@
|
||||
"it_IT": "",
|
||||
"ja_JP": "",
|
||||
"ko_KR": "",
|
||||
"no_NO": "",
|
||||
"no_NO": "Online-spillere: {0}",
|
||||
"pl_PL": "",
|
||||
"pt_BR": "Jogadores Online: {0}",
|
||||
"ru_RU": "",
|
||||
@@ -2260,7 +2260,7 @@
|
||||
"it_IT": "",
|
||||
"ja_JP": "",
|
||||
"ko_KR": "PPTC 캐시 제거",
|
||||
"no_NO": "",
|
||||
"no_NO": "Tøm PPTC-bufferen",
|
||||
"pl_PL": "",
|
||||
"pt_BR": "Limpar cache PPTC",
|
||||
"ru_RU": "",
|
||||
@@ -2285,7 +2285,7 @@
|
||||
"it_IT": "",
|
||||
"ja_JP": "",
|
||||
"ko_KR": "앱의 모든 PPTC 캐시 파일 삭제",
|
||||
"no_NO": "",
|
||||
"no_NO": "Sletter alle PPTC-cache-filer for applikasjonen",
|
||||
"pl_PL": "",
|
||||
"pt_BR": "Apagar os arquivos de cache PPTC do aplicativo",
|
||||
"ru_RU": "",
|
||||
@@ -2760,7 +2760,7 @@
|
||||
"it_IT": "",
|
||||
"ja_JP": "",
|
||||
"ko_KR": "호환성 항목 표시",
|
||||
"no_NO": "",
|
||||
"no_NO": "Vis kompatibilitetsoppføring",
|
||||
"pl_PL": "",
|
||||
"pt_BR": "Mostrar entrada de compatibilidade",
|
||||
"ru_RU": "",
|
||||
@@ -2785,7 +2785,7 @@
|
||||
"it_IT": "",
|
||||
"ja_JP": "",
|
||||
"ko_KR": "일반적으로 도움말 메뉴를 통해 접근할 수 있는 호환성 목록에 선택한 게임을 표시합니다.",
|
||||
"no_NO": "",
|
||||
"no_NO": "Vis det valgte spillet i kompatibilitetslisten, som du vanligvis får tilgang til via Hjelp-menyen.",
|
||||
"pl_PL": "",
|
||||
"pt_BR": "Exibe o jogo selecionado na Lista de Compatibilidade, que normalmente pode ser acessada pelo menu Ajuda.",
|
||||
"ru_RU": "",
|
||||
@@ -2810,7 +2810,7 @@
|
||||
"it_IT": "",
|
||||
"ja_JP": "",
|
||||
"ko_KR": "게임 통계 표시",
|
||||
"no_NO": "",
|
||||
"no_NO": "Vis Spill Info",
|
||||
"pl_PL": "",
|
||||
"pt_BR": "Mostrar informações do jogo",
|
||||
"ru_RU": "",
|
||||
@@ -2835,7 +2835,7 @@
|
||||
"it_IT": "",
|
||||
"ja_JP": "",
|
||||
"ko_KR": "그리드 보기 레이아웃에서 누락된 현재 선택된 게임에 대한 다양한 정보를 표시합니다.",
|
||||
"no_NO": "",
|
||||
"no_NO": "Vis statistikk og detaljer om det valgte spillet.",
|
||||
"pl_PL": "",
|
||||
"pt_BR": "Mostrar estatísticas e detalhes sobre o jogo selecionado no momento.",
|
||||
"ru_RU": "",
|
||||
@@ -3360,7 +3360,7 @@
|
||||
"it_IT": "",
|
||||
"ja_JP": "",
|
||||
"ko_KR": "",
|
||||
"no_NO": "",
|
||||
"no_NO": "Se etter Oppdateringer:",
|
||||
"pl_PL": "",
|
||||
"pt_BR": "Verificar atualizações:",
|
||||
"ru_RU": "",
|
||||
@@ -3385,7 +3385,7 @@
|
||||
"it_IT": "",
|
||||
"ja_JP": "",
|
||||
"ko_KR": "",
|
||||
"no_NO": "",
|
||||
"no_NO": "Av",
|
||||
"pl_PL": "",
|
||||
"pt_BR": "Desligado",
|
||||
"ru_RU": "",
|
||||
@@ -3410,7 +3410,7 @@
|
||||
"it_IT": "",
|
||||
"ja_JP": "",
|
||||
"ko_KR": "",
|
||||
"no_NO": "",
|
||||
"no_NO": "Spør",
|
||||
"pl_PL": "",
|
||||
"pt_BR": "",
|
||||
"ru_RU": "",
|
||||
@@ -3435,7 +3435,7 @@
|
||||
"it_IT": "",
|
||||
"ja_JP": "",
|
||||
"ko_KR": "",
|
||||
"no_NO": "",
|
||||
"no_NO": "Bakgrunn",
|
||||
"pl_PL": "",
|
||||
"pt_BR": "Fundo",
|
||||
"ru_RU": "",
|
||||
@@ -3460,7 +3460,7 @@
|
||||
"it_IT": "",
|
||||
"ja_JP": "",
|
||||
"ko_KR": "",
|
||||
"no_NO": "",
|
||||
"no_NO": "På Emulator Fokus Tapt:",
|
||||
"pl_PL": "",
|
||||
"pt_BR": "Ao perder o Foco do emulador:",
|
||||
"ru_RU": "",
|
||||
@@ -3485,7 +3485,7 @@
|
||||
"it_IT": "",
|
||||
"ja_JP": "",
|
||||
"ko_KR": "",
|
||||
"no_NO": "",
|
||||
"no_NO": "Gjør Ingenting",
|
||||
"pl_PL": "",
|
||||
"pt_BR": "Não fazer nada",
|
||||
"ru_RU": "",
|
||||
@@ -3510,7 +3510,7 @@
|
||||
"it_IT": "",
|
||||
"ja_JP": "",
|
||||
"ko_KR": "",
|
||||
"no_NO": "",
|
||||
"no_NO": "Blokkinngang",
|
||||
"pl_PL": "",
|
||||
"pt_BR": "Bloquear entrada",
|
||||
"ru_RU": "",
|
||||
@@ -3535,7 +3535,7 @@
|
||||
"it_IT": "",
|
||||
"ja_JP": "",
|
||||
"ko_KR": "",
|
||||
"no_NO": "",
|
||||
"no_NO": "Demp Lyd",
|
||||
"pl_PL": "",
|
||||
"pt_BR": "Ficar mudo",
|
||||
"ru_RU": "",
|
||||
@@ -3560,7 +3560,7 @@
|
||||
"it_IT": "",
|
||||
"ja_JP": "",
|
||||
"ko_KR": "",
|
||||
"no_NO": "",
|
||||
"no_NO": "Blokker Inputs og demp Volumet",
|
||||
"pl_PL": "",
|
||||
"pt_BR": "Bloquear entrada & Ficar mudo",
|
||||
"ru_RU": "",
|
||||
@@ -3585,7 +3585,7 @@
|
||||
"it_IT": "",
|
||||
"ja_JP": "",
|
||||
"ko_KR": "",
|
||||
"no_NO": "",
|
||||
"no_NO": "Pause Emulatoren",
|
||||
"pl_PL": "",
|
||||
"pt_BR": "Pausar a emulação",
|
||||
"ru_RU": "",
|
||||
@@ -4635,7 +4635,7 @@
|
||||
"it_IT": "",
|
||||
"ja_JP": "",
|
||||
"ko_KR": "스웨덴어",
|
||||
"no_NO": "",
|
||||
"no_NO": "Svensk",
|
||||
"pl_PL": "",
|
||||
"pt_BR": "",
|
||||
"ru_RU": "",
|
||||
@@ -4735,7 +4735,7 @@
|
||||
"it_IT": "",
|
||||
"ja_JP": "",
|
||||
"ko_KR": "매치 시스템 시간",
|
||||
"no_NO": "",
|
||||
"no_NO": "Match systemtid",
|
||||
"pl_PL": "",
|
||||
"pt_BR": "Sincronizar data e hora com o sistema PC",
|
||||
"ru_RU": "",
|
||||
@@ -5922,31 +5922,6 @@
|
||||
"zh_TW": "啟用警告日誌"
|
||||
}
|
||||
},
|
||||
{
|
||||
"ID": "SettingsTabHotkeysCycleControllers",
|
||||
"Translations": {
|
||||
"ar_SA": "",
|
||||
"de_DE": "",
|
||||
"el_GR": "",
|
||||
"en_US": "Cycle Controllers",
|
||||
"es_ES": "",
|
||||
"fr_FR": "",
|
||||
"he_IL": "",
|
||||
"it_IT": "",
|
||||
"ja_JP": "",
|
||||
"ko_KR": "",
|
||||
"no_NO": "",
|
||||
"pl_PL": "",
|
||||
"pt_BR": "",
|
||||
"ru_RU": "",
|
||||
"sv_SE": "",
|
||||
"th_TH": "",
|
||||
"tr_TR": "",
|
||||
"uk_UA": "",
|
||||
"zh_CN": "",
|
||||
"zh_TW": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"ID": "SettingsTabLoggingEnableErrorLogs",
|
||||
"Translations": {
|
||||
@@ -6035,7 +6010,7 @@
|
||||
"it_IT": "",
|
||||
"ja_JP": "",
|
||||
"ko_KR": "",
|
||||
"no_NO": "",
|
||||
"no_NO": "Aktivere UI-logger",
|
||||
"pl_PL": "",
|
||||
"pt_BR": "Habilitar logs da IU",
|
||||
"ru_RU": "",
|
||||
@@ -6435,7 +6410,7 @@
|
||||
"it_IT": "",
|
||||
"ja_JP": "",
|
||||
"ko_KR": "",
|
||||
"no_NO": "",
|
||||
"no_NO": "Tilbakestill innstillinger",
|
||||
"pl_PL": "",
|
||||
"pt_BR": "Redefinir configurações",
|
||||
"ru_RU": "",
|
||||
@@ -6460,7 +6435,7 @@
|
||||
"it_IT": "",
|
||||
"ja_JP": "",
|
||||
"ko_KR": "",
|
||||
"no_NO": "",
|
||||
"no_NO": "Jeg vil tilbakestille innstillingene mine.",
|
||||
"pl_PL": "",
|
||||
"pt_BR": "Quero redefinir minhas configurações.",
|
||||
"ru_RU": "",
|
||||
@@ -8385,7 +8360,7 @@
|
||||
"it_IT": "",
|
||||
"ja_JP": "",
|
||||
"ko_KR": "비활성화",
|
||||
"no_NO": "",
|
||||
"no_NO": "Deaktiver",
|
||||
"pl_PL": "",
|
||||
"pt_BR": "",
|
||||
"ru_RU": "",
|
||||
@@ -8410,7 +8385,7 @@
|
||||
"it_IT": "",
|
||||
"ja_JP": "",
|
||||
"ko_KR": "레인보우",
|
||||
"no_NO": "",
|
||||
"no_NO": "Regnbue",
|
||||
"pl_PL": "",
|
||||
"pt_BR": "",
|
||||
"ru_RU": "",
|
||||
@@ -8435,7 +8410,7 @@
|
||||
"it_IT": "",
|
||||
"ja_JP": "",
|
||||
"ko_KR": "레인보우 속도",
|
||||
"no_NO": "",
|
||||
"no_NO": "Regnbue Hastighet",
|
||||
"pl_PL": "",
|
||||
"pt_BR": "",
|
||||
"ru_RU": "",
|
||||
@@ -8460,7 +8435,7 @@
|
||||
"it_IT": "",
|
||||
"ja_JP": "",
|
||||
"ko_KR": "색상",
|
||||
"no_NO": "",
|
||||
"no_NO": "Farge",
|
||||
"pl_PL": "",
|
||||
"pt_BR": "",
|
||||
"ru_RU": "",
|
||||
@@ -13710,7 +13685,7 @@
|
||||
"it_IT": "",
|
||||
"ja_JP": "",
|
||||
"ko_KR": "다음에서 모든 PPTC 데이터를 제거하려고 합니다:\n\n{0}\n\n계속하시겠습니까?",
|
||||
"no_NO": "",
|
||||
"no_NO": "Du er i ferd med å slette alle PPTC-data fra:\n\n{0}\n\n\nEr du sikker på at du vil fortsette?",
|
||||
"pl_PL": "",
|
||||
"pt_BR": "Você está prestes a limpar todos os dados PPTC de:\n\n{0}\n\nTem certeza de que deseja continuar?",
|
||||
"ru_RU": "",
|
||||
@@ -17035,7 +17010,7 @@
|
||||
"it_IT": "",
|
||||
"ja_JP": "",
|
||||
"ko_KR": "",
|
||||
"no_NO": "",
|
||||
"no_NO": "Skriver ut Avalonia (UI)-loggmeldinger i konsollen.",
|
||||
"pl_PL": "",
|
||||
"pt_BR": "Imprimir mensagens de log do Avalonia (IU) no console.",
|
||||
"ru_RU": "",
|
||||
@@ -17960,7 +17935,7 @@
|
||||
"it_IT": "",
|
||||
"ja_JP": "",
|
||||
"ko_KR": "",
|
||||
"no_NO": "",
|
||||
"no_NO": "Oppdatering tilgjengelig!",
|
||||
"pl_PL": "",
|
||||
"pt_BR": "Atualização disponível!",
|
||||
"ru_RU": "",
|
||||
@@ -19760,7 +19735,7 @@
|
||||
"it_IT": "",
|
||||
"ja_JP": "",
|
||||
"ko_KR": "LED 설정",
|
||||
"no_NO": "",
|
||||
"no_NO": "LED-innstillinger",
|
||||
"pl_PL": "",
|
||||
"pt_BR": "Configurações de LED",
|
||||
"ru_RU": "",
|
||||
@@ -23910,7 +23885,7 @@
|
||||
"it_IT": "",
|
||||
"ja_JP": "",
|
||||
"ko_KR": "",
|
||||
"no_NO": "",
|
||||
"no_NO": "Starter opp og spiller uten krasj eller GPU-feil av noe slag, og med en hastighet som er rask nok til å ha rimelig glede av på en gjennomsnittlig PC.",
|
||||
"pl_PL": "",
|
||||
"pt_BR": "Inicializa e roda sem travamentos ou bugs de GPU de qualquer tipo, e em uma velocidade rápida o suficiente para ser aproveitado em um PC comum.",
|
||||
"ru_RU": "",
|
||||
@@ -23935,7 +23910,7 @@
|
||||
"it_IT": "",
|
||||
"ja_JP": "",
|
||||
"ko_KR": "",
|
||||
"no_NO": "",
|
||||
"no_NO": "Starter og går i gang i spillet, men lider av ett eller flere av følgende: krasjer, fastlåser, GPU-feil, distraherende dårlig lyd eller er rett og slett for tregt. Spillet kan fortsatt spilles helt til ende, men ikke slik det er ment å spilles.",
|
||||
"pl_PL": "",
|
||||
"pt_BR": "Inicializa e entra no jogo, mas sofre de um ou mais dos seguintes: travamentos, deadlocks, bugs de GPU, áudio ruim que distrai ou é simplesmente muito lento. O jogo ainda pode ser jogado até o fim, mas não da forma como foi criado para ser jogado.",
|
||||
"ru_RU": "",
|
||||
@@ -23960,7 +23935,7 @@
|
||||
"it_IT": "",
|
||||
"ja_JP": "",
|
||||
"ko_KR": "",
|
||||
"no_NO": "",
|
||||
"no_NO": "Starter opp og går forbi tittelskjermen, men kommer ikke inn i hovedspillet.",
|
||||
"pl_PL": "",
|
||||
"pt_BR": "Inicializa e passa da tela de título, mas não entra no jogo principal.",
|
||||
"ru_RU": "",
|
||||
@@ -23985,7 +23960,7 @@
|
||||
"it_IT": "",
|
||||
"ja_JP": "",
|
||||
"ko_KR": "",
|
||||
"no_NO": "",
|
||||
"no_NO": "Starter, men kommer ikke lenger enn til tittelskjermen.",
|
||||
"pl_PL": "",
|
||||
"pt_BR": "Inizializa, mas não passa da tela de título.",
|
||||
"ru_RU": "",
|
||||
@@ -24010,7 +23985,7 @@
|
||||
"it_IT": "",
|
||||
"ja_JP": "",
|
||||
"ko_KR": "",
|
||||
"no_NO": "",
|
||||
"no_NO": "Starter ikke opp eller viser ingen tegn til aktivitet.",
|
||||
"pl_PL": "",
|
||||
"pt_BR": "Não inicializa ou não mostra sinais de atividade.",
|
||||
"ru_RU": "",
|
||||
@@ -24060,7 +24035,7 @@
|
||||
"it_IT": "",
|
||||
"ja_JP": "",
|
||||
"ko_KR": "",
|
||||
"no_NO": "",
|
||||
"no_NO": "Rikt nærværsbilde",
|
||||
"pl_PL": "",
|
||||
"pt_BR": "",
|
||||
"ru_RU": "",
|
||||
@@ -24085,7 +24060,7 @@
|
||||
"it_IT": "",
|
||||
"ja_JP": "",
|
||||
"ko_KR": "",
|
||||
"no_NO": "",
|
||||
"no_NO": "Dynamisk og rik tilstedeværelse",
|
||||
"pl_PL": "",
|
||||
"pt_BR": "",
|
||||
"ru_RU": "",
|
||||
|
||||
@@ -14,13 +14,5 @@ namespace Ryujinx.Ava.Common
|
||||
VolumeDown,
|
||||
CustomVSyncIntervalIncrement,
|
||||
CustomVSyncIntervalDecrement,
|
||||
CycleControllersPlayer1,
|
||||
CycleControllersPlayer2,
|
||||
CycleControllersPlayer3,
|
||||
CycleControllersPlayer4,
|
||||
CycleControllersPlayer5,
|
||||
CycleControllersPlayer6,
|
||||
CycleControllersPlayer7,
|
||||
CycleControllersPlayer8
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,11 +1,6 @@
|
||||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
using DynamicData;
|
||||
using Ryujinx.Ava.UI.Helpers;
|
||||
using Ryujinx.Ava.UI.ViewModels;
|
||||
using Ryujinx.Common.Configuration.Hid;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Linq;
|
||||
using System.Windows.Input;
|
||||
|
||||
namespace Ryujinx.Ava.UI.Models.Input
|
||||
{
|
||||
@@ -33,15 +28,8 @@ namespace Ryujinx.Ava.UI.Models.Input
|
||||
|
||||
[ObservableProperty] private Key _customVSyncIntervalDecrement;
|
||||
|
||||
public ObservableCollection<CycleController> CycleControllers { get; set; } = new ObservableCollection<CycleController>();
|
||||
public ICommand AddCycleController { get; set; }
|
||||
public ICommand RemoveCycleController { get; set; }
|
||||
public bool CanRemoveCycleController => CycleControllers.Count > 0 && CycleControllers.Count < 8;
|
||||
|
||||
public HotkeyConfig(KeyboardHotkeys config)
|
||||
{
|
||||
AddCycleController = MiniCommand.Create(() => CycleControllers.Add(new CycleController(CycleControllers.Count + 1, Key.Unbound)));
|
||||
RemoveCycleController = MiniCommand.Create(() => CycleControllers.Remove(CycleControllers.Last()));
|
||||
if (config == null)
|
||||
return;
|
||||
|
||||
@@ -56,7 +44,6 @@ namespace Ryujinx.Ava.UI.Models.Input
|
||||
VolumeDown = config.VolumeDown;
|
||||
CustomVSyncIntervalIncrement = config.CustomVSyncIntervalIncrement;
|
||||
CustomVSyncIntervalDecrement = config.CustomVSyncIntervalDecrement;
|
||||
CycleControllers.AddRange((config.CycleControllers ?? []).Select((x, i) => new CycleController(i + 1, x)));
|
||||
}
|
||||
|
||||
public KeyboardHotkeys GetConfig() =>
|
||||
@@ -73,7 +60,6 @@ namespace Ryujinx.Ava.UI.Models.Input
|
||||
VolumeDown = VolumeDown,
|
||||
CustomVSyncIntervalIncrement = CustomVSyncIntervalIncrement,
|
||||
CustomVSyncIntervalDecrement = CustomVSyncIntervalDecrement,
|
||||
CycleControllers = CycleControllers.Select(x => x.Hotkey).ToList()
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,48 +0,0 @@
|
||||
using Ryujinx.Ava.Common.Locale;
|
||||
using Ryujinx.Common.Configuration.Hid;
|
||||
|
||||
namespace Ryujinx.Ava.UI.ViewModels
|
||||
{
|
||||
public class CycleController : BaseModel
|
||||
{
|
||||
private string _player;
|
||||
private Key _hotkey;
|
||||
|
||||
public string Player
|
||||
{
|
||||
get => _player;
|
||||
set
|
||||
{
|
||||
_player = value;
|
||||
OnPropertyChanged(nameof(Player));
|
||||
}
|
||||
}
|
||||
|
||||
public Key Hotkey
|
||||
{
|
||||
get => _hotkey;
|
||||
set
|
||||
{
|
||||
_hotkey = value;
|
||||
OnPropertyChanged(nameof(Hotkey));
|
||||
}
|
||||
}
|
||||
|
||||
public CycleController(int v, Key x)
|
||||
{
|
||||
Player = v switch
|
||||
{
|
||||
1 => LocaleManager.Instance[LocaleKeys.ControllerSettingsPlayer1],
|
||||
2 => LocaleManager.Instance[LocaleKeys.ControllerSettingsPlayer2],
|
||||
3 => LocaleManager.Instance[LocaleKeys.ControllerSettingsPlayer3],
|
||||
4 => LocaleManager.Instance[LocaleKeys.ControllerSettingsPlayer4],
|
||||
5 => LocaleManager.Instance[LocaleKeys.ControllerSettingsPlayer5],
|
||||
6 => LocaleManager.Instance[LocaleKeys.ControllerSettingsPlayer6],
|
||||
7 => LocaleManager.Instance[LocaleKeys.ControllerSettingsPlayer7],
|
||||
8 => LocaleManager.Instance[LocaleKeys.ControllerSettingsPlayer8],
|
||||
_ => LocaleManager.Instance[LocaleKeys.ControllerSettingsPlayer] + " " + v
|
||||
};
|
||||
Hotkey = x;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -897,13 +897,5 @@ namespace Ryujinx.Ava.UI.ViewModels.Input
|
||||
|
||||
AvaloniaKeyboardDriver.Dispose();
|
||||
}
|
||||
|
||||
public void CyclePlayerDevice(int player)
|
||||
{
|
||||
LoadDevices();
|
||||
PlayerId = (PlayerIndex)player;
|
||||
Device = (Device + 1) % Devices.Count;
|
||||
Save();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<UserControl
|
||||
<UserControl
|
||||
x:Class="Ryujinx.Ava.UI.Views.Settings.SettingsHotkeysView"
|
||||
xmlns="https://github.com/avaloniaui"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
@@ -15,18 +15,17 @@
|
||||
<viewModels:SettingsViewModel />
|
||||
</Design.DataContext>
|
||||
<UserControl.Styles>
|
||||
<Style Selector="StackPanel StackPanel">
|
||||
<Style Selector="StackPanel > StackPanel">
|
||||
<Setter Property="Margin" Value="10, 0, 0, 0" />
|
||||
<Setter Property="Orientation" Value="Horizontal" />
|
||||
</Style>
|
||||
<Style Selector="StackPanel StackPanel > TextBlock">
|
||||
<Style Selector="StackPanel > StackPanel > TextBlock">
|
||||
<Setter Property="VerticalAlignment" Value="Center" />
|
||||
<Setter Property="Width" Value="230" />
|
||||
</Style>
|
||||
<Style Selector="ToggleButton, Button">
|
||||
<Style Selector="ToggleButton">
|
||||
<Setter Property="Width" Value="90" />
|
||||
<Setter Property="Height" Value="27" />
|
||||
<Setter Property="Padding" Value="0,5,0,5" /> <!-- Added vertical padding -->
|
||||
</Style>
|
||||
<Style Selector="ToggleButton > TextBlock">
|
||||
<Setter Property="TextAlignment" Value="Center" />
|
||||
@@ -40,123 +39,79 @@
|
||||
VerticalScrollBarVisibility="Auto">
|
||||
<Border Classes="settings">
|
||||
<StackPanel
|
||||
Name="SettingButtons"
|
||||
Margin="10"
|
||||
HorizontalAlignment="Stretch"
|
||||
Orientation="Vertical"
|
||||
Spacing="10"
|
||||
Name="SettingButtons">
|
||||
Spacing="10">
|
||||
<TextBlock
|
||||
Classes="h1"
|
||||
Text="{ext:Locale SettingsTabHotkeysHotkeys}" />
|
||||
<StackPanel
|
||||
Margin="10,0,0,0"
|
||||
Spacing="10"
|
||||
Orientation="Vertical">
|
||||
<StackPanel>
|
||||
<TextBlock Text="{ext:Locale SettingsTabHotkeysToggleVSyncModeHotkey}" />
|
||||
<ToggleButton Name="ToggleVSyncMode">
|
||||
<TextBlock Text="{Binding KeyboardHotkey.ToggleVSyncMode, Converter={x:Static helpers:KeyValueConverter.Instance}}" />
|
||||
</ToggleButton>
|
||||
</StackPanel>
|
||||
<StackPanel>
|
||||
<TextBlock Text="{ext:Locale SettingsTabHotkeysScreenshotHotkey}" />
|
||||
<ToggleButton Name="Screenshot">
|
||||
<TextBlock Text="{Binding KeyboardHotkey.Screenshot, Converter={x:Static helpers:KeyValueConverter.Instance}}" />
|
||||
</ToggleButton>
|
||||
</StackPanel>
|
||||
<StackPanel>
|
||||
<TextBlock Text="{ext:Locale SettingsTabHotkeysShowUiHotkey}" />
|
||||
<ToggleButton Name="ShowUI">
|
||||
<TextBlock Text="{Binding KeyboardHotkey.ShowUI, Converter={x:Static helpers:KeyValueConverter.Instance}}" />
|
||||
</ToggleButton>
|
||||
</StackPanel>
|
||||
<StackPanel>
|
||||
<TextBlock Text="{ext:Locale SettingsTabHotkeysPauseHotkey}" />
|
||||
<ToggleButton Name="Pause">
|
||||
<TextBlock Text="{Binding KeyboardHotkey.Pause, Converter={x:Static helpers:KeyValueConverter.Instance}}" />
|
||||
</ToggleButton>
|
||||
</StackPanel>
|
||||
<StackPanel>
|
||||
<TextBlock Text="{ext:Locale SettingsTabHotkeysToggleMuteHotkey}" />
|
||||
<ToggleButton Name="ToggleMute">
|
||||
<TextBlock Text="{Binding KeyboardHotkey.ToggleMute, Converter={x:Static helpers:KeyValueConverter.Instance}}" />
|
||||
</ToggleButton>
|
||||
</StackPanel>
|
||||
<StackPanel>
|
||||
<TextBlock Text="{ext:Locale SettingsTabHotkeysResScaleUpHotkey}" />
|
||||
<ToggleButton Name="ResScaleUp">
|
||||
<TextBlock Text="{Binding KeyboardHotkey.ResScaleUp, Converter={x:Static helpers:KeyValueConverter.Instance}}" />
|
||||
</ToggleButton>
|
||||
</StackPanel>
|
||||
<StackPanel>
|
||||
<TextBlock Text="{ext:Locale SettingsTabHotkeysResScaleDownHotkey}" />
|
||||
<ToggleButton Name="ResScaleDown">
|
||||
<TextBlock Text="{Binding KeyboardHotkey.ResScaleDown, Converter={x:Static helpers:KeyValueConverter.Instance}}" />
|
||||
</ToggleButton>
|
||||
</StackPanel>
|
||||
<StackPanel>
|
||||
<TextBlock Text="{ext:Locale SettingsTabHotkeysVolumeUpHotkey}" />
|
||||
<ToggleButton Name="VolumeUp">
|
||||
<TextBlock Text="{Binding KeyboardHotkey.VolumeUp, Converter={x:Static helpers:KeyValueConverter.Instance}}" />
|
||||
</ToggleButton>
|
||||
</StackPanel>
|
||||
<StackPanel>
|
||||
<TextBlock Text="{ext:Locale SettingsTabHotkeysVolumeDownHotkey}" />
|
||||
<ToggleButton Name="VolumeDown">
|
||||
<TextBlock Text="{Binding KeyboardHotkey.VolumeDown, Converter={x:Static helpers:KeyValueConverter.Instance}}" />
|
||||
</ToggleButton>
|
||||
</StackPanel>
|
||||
<StackPanel Margin="10,0,0,0" Orientation="Horizontal">
|
||||
<TextBlock Text="{ext:Locale SettingsTabHotkeysIncrementCustomVSyncIntervalHotkey}" />
|
||||
<ToggleButton Name="CustomVSyncIntervalIncrement">
|
||||
<TextBlock Text="{Binding KeyboardHotkey.CustomVSyncIntervalIncrement, Converter={x:Static helpers:KeyValueConverter.Instance}}" />
|
||||
</ToggleButton>
|
||||
</StackPanel>
|
||||
<StackPanel Margin="10,0,0,0" Orientation="Horizontal">
|
||||
<TextBlock Text="{ext:Locale SettingsTabHotkeysDecrementCustomVSyncIntervalHotkey}" />
|
||||
<ToggleButton Name="CustomVSyncIntervalDecrement">
|
||||
<TextBlock Text="{Binding KeyboardHotkey.CustomVSyncIntervalDecrement, Converter={x:Static helpers:KeyValueConverter.Instance}}" />
|
||||
</ToggleButton>
|
||||
</StackPanel>
|
||||
<StackPanel>
|
||||
<TextBlock Text="{ext:Locale SettingsTabHotkeysToggleVSyncModeHotkey}" />
|
||||
<ToggleButton Name="ToggleVSyncMode">
|
||||
<TextBlock Text="{Binding KeyboardHotkey.ToggleVSyncMode, Converter={x:Static helpers:KeyValueConverter.Instance}}" />
|
||||
</ToggleButton>
|
||||
</StackPanel>
|
||||
<Separator Height="1" />
|
||||
<StackPanel Margin="0">
|
||||
<TextBlock
|
||||
Classes="h1"
|
||||
Text="{ext:Locale SettingsTabHotkeysCycleControllers}" />
|
||||
<StackPanel Orientation="Horizontal" Spacing="10">
|
||||
<Button
|
||||
Content="{ext:Locale SettingsTabGeneralAdd}"
|
||||
Margin="10,0,0,0"
|
||||
Command="{Binding KeyboardHotkey.AddCycleController}" />
|
||||
<Button
|
||||
Content="{ext:Locale SettingsTabGeneralRemove}"
|
||||
IsEnabled="{Binding KeyboardHotkey.CanRemoveCycleController}"
|
||||
Command="{Binding KeyboardHotkey.RemoveCycleController}" />
|
||||
</StackPanel>
|
||||
<StackPanel>
|
||||
<TextBlock Text="{ext:Locale SettingsTabHotkeysScreenshotHotkey}" />
|
||||
<ToggleButton Name="Screenshot">
|
||||
<TextBlock Text="{Binding KeyboardHotkey.Screenshot, Converter={x:Static helpers:KeyValueConverter.Instance}}" />
|
||||
</ToggleButton>
|
||||
</StackPanel>
|
||||
<StackPanel>
|
||||
<TextBlock Text="{ext:Locale SettingsTabHotkeysShowUiHotkey}" />
|
||||
<ToggleButton Name="ShowUI">
|
||||
<TextBlock Text="{Binding KeyboardHotkey.ShowUI, Converter={x:Static helpers:KeyValueConverter.Instance}}" />
|
||||
</ToggleButton>
|
||||
</StackPanel>
|
||||
<StackPanel>
|
||||
<TextBlock Text="{ext:Locale SettingsTabHotkeysPauseHotkey}" />
|
||||
<ToggleButton Name="Pause">
|
||||
<TextBlock Text="{Binding KeyboardHotkey.Pause, Converter={x:Static helpers:KeyValueConverter.Instance}}" />
|
||||
</ToggleButton>
|
||||
</StackPanel>
|
||||
<StackPanel>
|
||||
<TextBlock Text="{ext:Locale SettingsTabHotkeysToggleMuteHotkey}" />
|
||||
<ToggleButton Name="ToggleMute">
|
||||
<TextBlock Text="{Binding KeyboardHotkey.ToggleMute, Converter={x:Static helpers:KeyValueConverter.Instance}}" />
|
||||
</ToggleButton>
|
||||
</StackPanel>
|
||||
<StackPanel>
|
||||
<TextBlock Text="{ext:Locale SettingsTabHotkeysResScaleUpHotkey}" />
|
||||
<ToggleButton Name="ResScaleUp">
|
||||
<TextBlock Text="{Binding KeyboardHotkey.ResScaleUp, Converter={x:Static helpers:KeyValueConverter.Instance}}" />
|
||||
</ToggleButton>
|
||||
</StackPanel>
|
||||
<StackPanel>
|
||||
<TextBlock Text="{ext:Locale SettingsTabHotkeysResScaleDownHotkey}" />
|
||||
<ToggleButton Name="ResScaleDown">
|
||||
<TextBlock Text="{Binding KeyboardHotkey.ResScaleDown, Converter={x:Static helpers:KeyValueConverter.Instance}}" />
|
||||
</ToggleButton>
|
||||
</StackPanel>
|
||||
<StackPanel>
|
||||
<TextBlock Text="{ext:Locale SettingsTabHotkeysVolumeUpHotkey}" />
|
||||
<ToggleButton Name="VolumeUp">
|
||||
<TextBlock Text="{Binding KeyboardHotkey.VolumeUp, Converter={x:Static helpers:KeyValueConverter.Instance}}" />
|
||||
</ToggleButton>
|
||||
</StackPanel>
|
||||
<StackPanel>
|
||||
<TextBlock Text="{ext:Locale SettingsTabHotkeysVolumeDownHotkey}" />
|
||||
<ToggleButton Name="VolumeDown">
|
||||
<TextBlock Text="{Binding KeyboardHotkey.VolumeDown, Converter={x:Static helpers:KeyValueConverter.Instance}}" />
|
||||
</ToggleButton>
|
||||
</StackPanel>
|
||||
<StackPanel Margin="10,0,0,0" Orientation="Horizontal">
|
||||
<TextBlock Text="{ext:Locale SettingsTabHotkeysIncrementCustomVSyncIntervalHotkey}" />
|
||||
<ToggleButton Name="CustomVSyncIntervalIncrement">
|
||||
<TextBlock Text="{Binding KeyboardHotkey.CustomVSyncIntervalIncrement, Converter={x:Static helpers:KeyValueConverter.Instance}}" />
|
||||
</ToggleButton>
|
||||
</StackPanel>
|
||||
<StackPanel Margin="10,0,0,0" Orientation="Horizontal">
|
||||
<TextBlock Text="{ext:Locale SettingsTabHotkeysDecrementCustomVSyncIntervalHotkey}" />
|
||||
<ToggleButton Name="CustomVSyncIntervalDecrement">
|
||||
<TextBlock Text="{Binding KeyboardHotkey.CustomVSyncIntervalDecrement, Converter={x:Static helpers:KeyValueConverter.Instance}}" />
|
||||
</ToggleButton>
|
||||
</StackPanel>
|
||||
<ItemsControl ItemsSource="{Binding KeyboardHotkey.CycleControllers}"
|
||||
Name="CycleControllers">
|
||||
<ItemsControl.ItemsPanel>
|
||||
<ItemsPanelTemplate>
|
||||
<StackPanel
|
||||
Margin="10,0,0,0"
|
||||
Orientation="Vertical"
|
||||
Spacing="10" />
|
||||
</ItemsPanelTemplate>
|
||||
</ItemsControl.ItemsPanel>
|
||||
<ItemsControl.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<StackPanel>
|
||||
<TextBlock Text="{Binding Player}" />
|
||||
<ToggleButton>
|
||||
<TextBlock
|
||||
Text="{Binding Hotkey, Converter={x:Static helpers:KeyValueConverter.Instance}}" />
|
||||
</ToggleButton>
|
||||
</StackPanel>
|
||||
</DataTemplate>
|
||||
</ItemsControl.ItemTemplate>
|
||||
</ItemsControl>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
</ScrollViewer>
|
||||
|
||||
@@ -3,14 +3,11 @@ using Avalonia.Controls.Primitives;
|
||||
using Avalonia.Input;
|
||||
using Avalonia.Interactivity;
|
||||
using Avalonia.LogicalTree;
|
||||
using Avalonia.VisualTree;
|
||||
using DynamicData;
|
||||
using Ryujinx.Ava.Input;
|
||||
using Ryujinx.Ava.UI.Helpers;
|
||||
using Ryujinx.Ava.UI.ViewModels;
|
||||
using Ryujinx.Input;
|
||||
using Ryujinx.Input.Assigner;
|
||||
using System.Linq;
|
||||
using Button = Ryujinx.Input.Button;
|
||||
using Key = Ryujinx.Common.Configuration.Hid.Key;
|
||||
|
||||
@@ -24,21 +21,16 @@ namespace Ryujinx.Ava.UI.Views.Settings
|
||||
public SettingsHotkeysView()
|
||||
{
|
||||
InitializeComponent();
|
||||
RegisterEvents();
|
||||
_avaloniaKeyboardDriver = new AvaloniaKeyboardDriver(this);
|
||||
CycleControllers.LayoutUpdated += (_, _1) => RegisterEvents();
|
||||
}
|
||||
|
||||
private void RegisterEvents()
|
||||
{
|
||||
foreach (ILogical visual in SettingButtons.GetLogicalDescendants())
|
||||
{
|
||||
if (visual is ToggleButton button and not CheckBox)
|
||||
{
|
||||
button.IsCheckedChanged -= Button_IsCheckedChanged;
|
||||
button.IsCheckedChanged += Button_IsCheckedChanged;
|
||||
}
|
||||
}
|
||||
|
||||
_avaloniaKeyboardDriver = new AvaloniaKeyboardDriver(this);
|
||||
}
|
||||
|
||||
protected override void OnPointerReleased(PointerReleasedEventArgs e)
|
||||
@@ -124,13 +116,6 @@ namespace Ryujinx.Ava.UI.Views.Settings
|
||||
case "CustomVSyncIntervalDecrement":
|
||||
viewModel.KeyboardHotkey.CustomVSyncIntervalDecrement = buttonValue.AsHidType<Key>();
|
||||
break;
|
||||
default:
|
||||
var index = button.FindAncestorOfType<ItemsControl>().GetLogicalDescendants().OfType<ToggleButton>().IndexOf(button);
|
||||
if (index >= 0 && viewModel.KeyboardHotkey.CycleControllers != null)
|
||||
{
|
||||
viewModel.KeyboardHotkey.CycleControllers[index].Hotkey = buttonValue.AsHidType<Key>();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user