Compare commits

...

65 commits

Author SHA1 Message Date
Neo
e8f82e43b0 Merge branch 'ui-input-and-mapping-simplification' into 'master'
UI: Settings → Input Updates (Improved)

See merge request [ryubing/ryujinx!231](https://git.ryujinx.app/ryubing/ryujinx/-/merge_requests/231)
2026-03-06 19:07:08 -06:00
KeatonTheBot
4b42087bd4 Linux: Fix file picker not launching from disabling core dumps (ryubing/ryujinx!249)
Some checks failed
Canary CI / Release for linux-arm64 (push) Has been cancelled
Canary CI / Release for linux-x64 (push) Has been cancelled
Canary CI / Release for win-x64 (push) Has been cancelled
Canary CI / Release MacOS universal (push) Has been cancelled
Canary CI / Create GitLab Release (push) Has been cancelled
See merge request ryubing/ryujinx!249
2026-03-06 19:04:42 -06:00
Neo
f2d71a2de8 Merge branch ryujinx:master into ui-input-and-mapping-simplification 2026-02-20 11:15:42 -06:00
Neo
17224c4b72 Merge branch ryujinx:master into ui-input-and-mapping-simplification 2026-02-10 02:13:40 -06:00
Neo
8a67262180 Merge branch ryujinx:master into ui-input-and-mapping-simplification 2026-02-01 03:06:11 -06:00
Neo
307f9b3914 Merge branch ryujinx:master into ui-input-and-mapping-simplification 2026-01-31 05:12:14 -06:00
Neo
77baf71804 Merge branch ryujinx:master into ui-input-and-mapping-simplification 2026-01-30 06:17:54 -06:00
Neo
8b7b5cb853 Merge branch ryujinx:master into ui-input-and-mapping-simplification 2026-01-29 09:01:55 -06:00
Neo
085a660503 Merge branch ryujinx:master into ui-input-and-mapping-simplification 2026-01-22 05:18:53 -06:00
Neo
6c26241636 Merge branch ryujinx:master into ui-input-and-mapping-simplification 2026-01-21 04:07:54 -06:00
Neo
61790517cc Merge branch ryujinx:master into ui-input-and-mapping-simplification 2026-01-03 12:41:58 -06:00
Neo
ffdc589f97 Merge branch ryujinx:master into ui-input-and-mapping-simplification 2026-01-01 05:00:14 -06:00
Neo
b570da9b47 Merge branch ryujinx:master into ui-input-and-mapping-simplification 2025-12-28 07:05:06 -06:00
Neo
ca8bd66aab Merge branch ryujinx:master into ui-input-and-mapping-simplification 2025-12-26 02:54:34 -06:00
Neo
f185e4f967 Merge branch ryujinx:master into ui-input-and-mapping-simplification 2025-12-23 02:26:09 -06:00
Neo
6d73b92e08 Merge branch ryujinx:master into ui-input-and-mapping-simplification 2025-12-22 02:44:51 -06:00
Neo
79805c151b Merge branch ryujinx:master into ui-input-and-mapping-simplification 2025-12-19 04:58:17 -06:00
Neo
26650a4f1b Merge branch ryujinx:master into ui-input-and-mapping-simplification 2025-12-18 03:52:31 -06:00
Neo
89c3daccb4 Merge branch ryujinx:master into ui-input-and-mapping-simplification 2025-12-13 05:08:16 -06:00
_Neo_
3820e220e7 Removing/Merging duplicate locales 2025-12-09 15:31:15 +02:00
Neo
13baa792e9 Merge branch ryujinx:master into ui-input-and-mapping-simplification 2025-12-07 03:33:39 -06:00
Neo
a6f79557b1 Merge branch ryujinx:master into ui-input-and-mapping-simplification 2025-12-05 08:06:19 -06:00
Neo
3265beea4e Merge branch ryujinx:master into ui-input-and-mapping-simplification 2025-12-05 04:07:25 -06:00
Neo
c9f5538bb6 Merge branch ryujinx:master into ui-input-and-mapping-simplification 2025-12-03 07:16:54 -06:00
_Neo_
da928f5e5d Merge branch 'input-mapping-simplification' into ui-input-and-mapping-simplification 2025-11-29 14:03:56 +02:00
_Neo_
9ea76e0127 Locale Adjustments 2025-11-28 20:26:23 +02:00
_Neo_
4a8f512fd4 Remove unnecessary stackpanel nesting 2025-11-28 20:08:25 +02:00
_Neo_
1618854f2c Couple of Margin Adjustments 2025-11-28 19:53:09 +02:00
_Neo_
1e4f936e25 Fix a margin 2025-11-28 16:35:08 +02:00
_Neo_
96a6a57ed2 Simplified Solution To Jagged Resizing 2025-11-26 15:07:20 +02:00
_Neo_
c00f8aad58 Revert some changes for testing 2025-11-26 12:07:32 +02:00
_Neo_
cdbe4921e6 Improve Motion/Rumble/LED Windows
Due to resizing issues.
2025-11-20 19:43:09 +02:00
Neo
359af1d310 Merge branch ryujinx:master into ui-settings-input 2025-11-20 02:51:32 -06:00
Neo
902603888a Merge branch ryujinx:master into input-mapping-simplification 2025-11-20 02:51:24 -06:00
Neo
cf6b243e48 Merge branch ryujinx:master into input-mapping-simplification 2025-11-18 02:21:44 -06:00
Neo
312c5390ef Merge branch ryujinx:master into ui-settings-input 2025-11-18 02:21:36 -06:00
Neo
adb42adb56 Merge branch ryujinx:master into ui-settings-input 2025-11-17 02:42:55 -06:00
Neo
89bcc9e653 Merge branch ryujinx:master into input-mapping-simplification 2025-11-17 02:42:40 -06:00
Neo
e7b08fd6b0 Merge branch ryujinx:master into input-mapping-simplification 2025-11-16 02:22:19 -06:00
Neo
3aa0c6ae65 Merge branch ryujinx:master into ui-settings-input 2025-11-16 02:22:07 -06:00
_Neo_
48affd0b69 Some margins and formatting adjustments 2025-11-15 18:54:35 +02:00
_Neo_
45263b8f95 Fix "Global" on "Match System Time" in Custom Config. 2025-11-15 14:32:24 +02:00
_Neo_
93e6a18f15 Tiny adjustment 2025-11-15 14:30:43 +02:00
_Neo_
7830be31e7 More Adjustments 2025-11-15 14:27:07 +02:00
Neo
8fc5c7d8c3 Merge branch ryujinx:master into input-mapping-simplification 2025-11-15 03:23:42 -06:00
Neo
ab0571ec2b Merge branch ryujinx:master into ui-settings-input 2025-11-15 03:23:32 -06:00
Neo
f9923030e4 Merge branch ryujinx:master into ui-settings-input 2025-11-14 05:54:36 -06:00
Neo
f69dbcfeaa Merge branch ryujinx:master into input-mapping-simplification 2025-11-14 05:54:28 -06:00
_Neo_
ffb0989a05 Adjust "Print Screen" 2025-11-13 17:40:25 +02:00
_Neo_
c5916bae95 Update locales.json 2025-11-12 21:57:13 +02:00
_Neo_
28510a3f43 EMBEDDED RESOURCE!!!! 2025-11-12 21:38:10 +02:00
_Neo_
fa320d2a34 Testing 2025-11-12 21:25:33 +02:00
_Neo_
a849d17906 More Adjustments 2025-11-12 21:14:12 +02:00
_Neo_
7c8b28ead3 More Adjustments 2025-11-12 20:30:24 +02:00
_Neo_
e7be3d4be6 Input Settings 2025-11-12 19:49:33 +02:00
_Neo_
99204e9f0c Fix Shift Right 2025-11-12 19:04:26 +02:00
Neo
16d0e55fba Merge branch ryujinx:master into input-mapping-simplification 2025-11-12 08:57:53 -06:00
Neo
7031381cac Merge branch ryujinx:master into input-mapping-simplification 2025-11-11 13:26:02 -06:00
Neo
1f068777cc Merge branch ryujinx:master into input-mapping-simplification 2025-11-11 13:03:47 -06:00
_Neo_
acde25bf3a Quick Updates. 2025-11-11 16:18:40 +02:00
_Neo_
84d8fcdb24 New Input Adjustments 2025-11-11 15:56:29 +02:00
Neo
4c7630e6b2 Merge branch ryujinx:master into input-mapping-simplification 2025-11-11 02:36:59 -06:00
Neo
bf5254f6c1 Merge branch ryujinx:master into input-mapping-simplification 2025-11-10 13:33:47 -06:00
_Neo_
666dfdeea3 Adjusting Ctrl Left for French/Spanish 2025-11-10 20:16:08 +02:00
_Neo_
557e0769dc Input Mapping Simplification 2025-11-10 15:13:19 +02:00
29 changed files with 2359 additions and 3929 deletions

File diff suppressed because it is too large Load diff

View file

@ -22,10 +22,11 @@ namespace Ryujinx.Common.Utilities
}
// "dumpable" attribute of the calling process
private const int PR_GET_DUMPABLE = 3;
private const int PR_SET_DUMPABLE = 4;
[DllImport("libc", SetLastError = true)]
private static extern int prctl(int option, int arg2);
[LibraryImport("libc", SetLastError = true)]
private static partial int prctl(int option, int arg2);
public static void SetCoreDumpable(bool dumpable)
{
@ -36,5 +37,13 @@ namespace Ryujinx.Common.Utilities
Debug.Assert(result == 0);
}
}
// Use the below line to display dumpable status in the console:
// Console.WriteLine($"{OsUtils.IsCoreDumpable()}");
public static bool IsCoreDumpable()
{
int result = prctl(PR_GET_DUMPABLE, 0);
return result == 1;
}
}
}

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 67 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 65 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 74 KiB

85
src/Ryujinx/Assets/Icons/Controller_ProCon.svg Normal file → Executable file
View file

@ -1,84 +1 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 996.25 690.92">
<defs>
<style>
.cls-1 {
stroke: #fff;
stroke-miterlimit: 10;
stroke-width: 2px;
}
.cls-1, .cls-2 {
fill: #444542;
}
.cls-3 {
fill: #3b3b3b;
}
.cls-3, .cls-4, .cls-2, .cls-5, .cls-6, .cls-7 {
stroke-width: 0px;
}
.cls-4 {
fill: #3b3c3a;
}
.cls-5 {
fill: #454644;
}
.cls-6 {
fill: #20221f;
}
.cls-7 {
fill: #121212;
}
</style>
</defs>
<g id="Front">
<path id="Right_Grip" data-name="Right Grip" class="cls-6" d="m739.17,492.09c34,28.2,27.6,35.9,68.5,108.5,36.7,74.7,64.4,104.4,125.1,84.1h0c95.3-57.9,59.3-145.3,43.6-275.2-10-60.6-35.6-190.3-35.6-190.3l-201.6,272.9Z"/>
<path id="Left_Grip" data-name="Left Grip" class="cls-6" d="m55.47,219.19s-25.6,129.7-35.6,190.3c-15.7,129.9-51.7,217.2,43.6,275.1h0c60.8,20.3,88.4-9.4,125.1-84.1,40.9-72.7,34.5-80.3,68.5-108.5L55.47,219.19Z"/>
<path id="Right_Bumper" data-name="Right Bumper" class="cls-3" d="m649.47,19.99c10.1-4.3,39.7-22.5,58.7-19.7,59.5.9,166.7,17.7,172.6,81.2"/>
<path id="Left_Bumper" data-name="Left Bumper" class="cls-3" d="m115.57,81.49C121.47,18.09,228.57,1.29,288.17.29c19-2.8,48.6,15.4,58.7,19.7"/>
<path id="Background" class="cls-7" d="m739.17,492.09c35.5-30.8,68.5-74.7,96-113.5,26.9-36.3,94.7-136.7,105.6-159.3,0-2.4-6.3-30.1-12.8-56.2C892.27,3.49,675.37,19.69,498.17,19.69S104.07,3.49,68.27,162.99c-6.5,26-12.8,53.8-12.8,56.2,10.9,22.6,78.8,123,105.6,159.3,27.5,38.8,60.5,82.8,96,113.5"/>
<g id="Directional_Pad" data-name="Directional Pad">
<path id="Background-2" data-name="Background" class="cls-2" d="m439.37,325.09h-40c-2.8,0-5-2.2-5-5v-40c0-2.8-2.2-5-5-5h-30c-2.8,0-5,2.2-5,5v40c0,2.8-2.2,5-5,5h-40c-2.8,0-5,2.2-5,5v30c0,2.8,2.2,5,5,5h40c2.8,0,5,2.2,5,5v40c0,2.8,2.2,5,5,5h30c2.8,0,5-2.2,5-5v-40c0-2.8,2.2-5,5-5h40c2.8,0,5-2.2,5-5v-30c0-2.7-2.2-5-5-5Z"/>
</g>
<g id="R_Thumbstick" data-name="R Thumbstick">
<circle id="Background-3" data-name="Background" class="cls-6" cx="623.77" cy="345.09" r="55"/>
<circle id="Stick" class="cls-1" cx="623.77" cy="345.09" r="45"/>
</g>
<g id="L_Thumbstick" data-name="L Thumbstick">
<circle id="Background-4" data-name="Background" class="cls-6" cx="213.37" cy="206.39" r="55"/>
<circle id="Stick-2" data-name="Stick" class="cls-1" cx="213.37" cy="206.39" r="45" transform="translate(-24.53 383.95) rotate(-80.78)"/>
</g>
<g id="Minus_Button" data-name="Minus Button">
<circle id="_Background" data-name=" Background" class="cls-5" cx="374.17" cy="130.89" r="22.5"/>
</g>
<g id="Plus_Button" data-name="Plus Button">
<circle id="_Background-2" data-name=" Background" class="cls-5" cx="623.57" cy="131.19" r="22.5"/>
</g>
<g id="Home_Button" data-name="Home Button">
<circle id="_Background-3" data-name=" Background" class="cls-5" cx="578.57" cy="206.39" r="22.5"/>
</g>
<g id="Capture_Button" data-name="Capture Button">
<path class="cls-5" d="m441.77,228.09h-30c-2.8,0-5-2.2-5-5v-29.5c0-2.8,2.2-5,5-5h30c2.8,0,5,2.2,5,5v29.5c0,2.7-2.2,5-5,5Z"/>
</g>
<g id="Buttons">
<g id="A_Button" data-name="A Button">
<circle id="Background-5" data-name="Background" class="cls-4" cx="837.07" cy="206.39" r="35"/>
</g>
<g id="X_Button" data-name="X Button">
<circle id="Background-6" data-name="Background" class="cls-4" cx="767.07" cy="136.39" r="35"/>
</g>
<g id="Y_Button" data-name="Y Button">
<circle id="Background-7" data-name="Background" class="cls-4" cx="697.07" cy="206.39" r="35"/>
</g>
<g id="B_Button" data-name="B Button">
<circle id="Background-8" data-name="Background" class="cls-4" cx="767.07" cy="276.39" r="35"/>
</g>
</g>
</g>
</svg>
<svg enable-background="new 0 0 1050 1050.5" viewBox="0 0 1050 1050.5" xmlns="http://www.w3.org/2000/svg"><path d="m766 850.5c34 28.2 27.6 35.9 68.5 108.5 36.7 74.7 64.4 104.4 125.1 84.1 95.3-57.9 59.3-145.3 43.6-275.2-10-60.6-35.6-190.3-35.6-190.3z" fill="#20221f"/><path d="m82.3 577.6s-25.6 129.7-35.6 190.3c-15.7 129.9-51.7 217.2 43.6 275.1 60.8 20.3 88.4-9.4 125.1-84.1 40.9-72.7 34.5-80.3 68.5-108.5z" fill="#20221f"/><path d="m676.3 378.4c10.1-4.3 39.7-22.5 58.7-19.7 59.5.9 166.7 17.7 172.6 81.2" fill="#3b3b3b"/><path d="m142.4 439.9c5.9-63.4 113-80.2 172.6-81.2 19-2.8 48.6 15.4 58.7 19.7" fill="#3b3b3b"/><path d="m766 850.5c35.5-30.8 68.5-74.7 96-113.5 26.9-36.3 94.7-136.7 105.6-159.3 0-2.4-6.3-30.1-12.8-56.2-35.7-159.6-252.6-143.4-429.8-143.4-177.4 0-394.1-16.2-429.9 143.3-6.5 26-12.8 53.8-12.8 56.2 10.9 22.6 78.8 123 105.6 159.3 27.5 38.8 60.5 82.8 96 113.5" fill="#121212"/><path d="m466.2 683.5h-40c-2.8 0-5-2.2-5-5v-40c0-2.8-2.2-5-5-5h-30c-2.8 0-5 2.2-5 5v40c0 2.8-2.2 5-5 5h-40c-2.8 0-5 2.2-5 5v30c0 2.8 2.2 5 5 5h40c2.8 0 5 2.2 5 5v40c0 2.8 2.2 5 5 5h30c2.8 0 5-2.2 5-5v-40c0-2.8 2.2-5 5-5h40c2.8 0 5-2.2 5-5v-30c0-2.7-2.2-5-5-5z" fill="#444542"/><g fill="#fff"><path d="m393.7 746h15l-7.5 15z"/><path d="m358.7 696v15l-15-7.5z"/><path d="m408.7 661h-15l7.5-15z"/><path d="m443.7 711v-15l15 7.5z"/></g><circle cx="650.6" cy="703.5" fill="#20221f" r="55"/><circle cx="650.6" cy="703.5" fill="#444542" r="45" stroke="#fff" stroke-miterlimit="10" stroke-width="2"/><circle cx="240.2" cy="564.8" fill="#20221f" r="55"/><circle cx="240.2" cy="564.8" fill="#444542" r="45" stroke="#fff" stroke-miterlimit="10" stroke-width="2"/><circle cx="401" cy="489.3" fill="#454644" r="22.5"/><path d="m386.2 491.8v-5h30v5" fill="#fff"/><circle cx="650.4" cy="489.6" fill="#454644" r="22.5"/><path d="m665.6 487.1h-12.5v-12.7h-5v12.7h-12.5v5h12.5v12.3h5v-12.3h12.5z" fill="#fff"/><circle cx="605.4" cy="564.8" fill="#454644" r="22.5"/><path d="m605.4 549.8-15 15h5v15h20v-15h5zm5 25h-10v-10h10z" fill="#fff"/><path d="m468.6 586.5h-30c-2.8 0-5-2.2-5-5v-29.5c0-2.8 2.2-5 5-5h30c2.8 0 5 2.2 5 5v29.5c0 2.7-2.2 5-5 5z" fill="#454644"/><circle cx="453.6" cy="566.7" fill="#454644" r="15" stroke="#fff" stroke-miterlimit="10" stroke-width="2"/><circle cx="863.9" cy="564.8" fill="#3b3c3a" r="35"/><text fill="#fff" font-family="'Helvetica-Bold'" font-size="40" transform="translate(849.4224 578.6607)">A</text><circle cx="793.9" cy="494.8" fill="#3b3c3a" r="35"/><text fill="#fff" font-family="'Helvetica-Bold'" font-size="40" transform="translate(780.5266 508.6604)">X</text><circle cx="723.9" cy="564.8" fill="#3b3c3a" r="35"/><text fill="#fff" font-family="'Helvetica-Bold'" font-size="40" transform="translate(710.5263 578.661)">Y</text><circle cx="793.9" cy="634.8" fill="#3b3c3a" r="35"/><text fill="#fff" font-family="'Helvetica-Bold'" font-size="40" transform="translate(780.9706 648.6605)">B</text><path d="m219.2 78.5c-12.5-17.6-25.9-42.3-45.6-58.6-20.1-16.6-61.5-24.6-86.5-14.1-13.9 5.8-33.4 33.1-42.7 52.8-10.5 22.3-14 51.3-12.4 82.8 1.2 25.1 5.3 51.7 14.2 78.6 0 0 14.3 53.8 42.8 80.8 11.2 10.6 35 26.6 35 26.6l116-217.5s-15.4-23.7-20.8-31.4z" fill="#20221f"/><path d="m828.6 78.5c12.5-17.6 25.9-42.3 45.6-58.6 20.1-16.6 61.4-24.5 86.5-14.1 13.9 5.8 33.4 33.1 42.7 52.8 10.5 22.3 13.9 51.3 12.4 82.8-1.2 25.1-5.3 51.7-14.2 78.6 0 0-14.3 53.8-42.8 80.8-11.2 10.6-35 26.6-35 26.6l-116-217.5s15.4-23.7 20.8-31.4z" fill="#20221f"/><path d="m866 122.2c66.3 18.7 85.1 128.8 69 186-2.5 54.2-148.9 15.3-265.1 31.2-41.1 1.7-91.8 2.4-145.9 2.3-54.1 0-104.8-.6-145.9-2.3-116.2-15.9-262.6 23.1-265.1-31.2-16.1-57.1 2.6-167.3 69-186l60.5-18.8 38.9-1.9c40.2.1 142.8 0 242.7 0s202.4.1 242.7 0l38.9 1.9z" fill="#0d0d0a"/><path d="m145.9 239.2c15.2-97.4 38.1-147.2 141.7-137 8.2 16.4 43.3 83 50.6 105.7-57.6 19.3-133.5 17.7-192.3 31.3z" fill="#3b3b3b"/><text fill="#fff" font-family="'Helvetica-Bold'" font-size="40" transform="matrix(1.0139 0 0 1 218.3906 179.3992)">ZL</text><path d="m716.2 207.9c7.4-22.7 42.5-89.3 50.6-105.7 103.7-10.2 126.5 39.6 141.7 137-58.7-13.6-134.7-12-192.3-31.3z" fill="#3b3b3b"/><text fill="#fff" font-family="'Helvetica-Bold'" font-size="40" transform="matrix(1.0139 0 0 1 784.2356 179.3992)">ZR</text><path d="m664 318.5c7-10.1 27.8-78.4 45.4-78.7 331.4 3.9 187.7 94.2-45.4 78.7z" fill="#3b3b3b"/><text fill="#fff" font-family="'Helvetica-Bold'" font-size="40" transform="translate(769.6461 292.8947)">R</text><path d="m340.6 238.6c17.6.3 38.4 68.6 45.4 78.7-233.1 15.5-376.8-74.7-45.4-78.7z" fill="#3b3b3b"/><text fill="#fff" font-family="'Helvetica-Bold'" font-size="40" transform="translate(253.7327 291.7279)">L</text></svg>

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 23 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 54 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 32 KiB

View file

@ -0,0 +1 @@
<svg height="1000" viewBox="0 0 1000 1000" width="1000" xmlns="http://www.w3.org/2000/svg"><path d="m741 647c34 28.200012 27.599976 35.900024 68.5 108.5 36.700012 74.699951 64.400024 104.400024 125.099976 84.099976 95.300048-57.899964 59.300048-145.299988 43.600036-275.199952-10-60.600036-35.600036-190.300048-35.600036-190.300048z" fill="#20221f"/><path d="m57.300003 374.099976s-25.600002 129.700012-35.600002 190.300048c-15.700001 129.899964-51.700001 217.199952 43.600002 275.099976 60.800003 20.300049 88.399994-9.400024 125.099991-84.099976 40.899994-72.700012 34.5-80.300048 68.5-108.5z" fill="#20221f"/><path d="m651.299988 174.900024c10.100036-4.300048 39.700012-22.5 58.700012-19.700012 59.5.899964 166.700012 17.700012 172.599976 81.200012" fill="#3b3b3b"/><path d="m117.399994 236.400024c5.900009-63.400024 113-80.200012 172.600006-81.200012 19-2.799988 48.600006 15.399964 58.700012 19.700012" fill="#3b3b3b"/><path d="m741 647c35.5-30.799988 68.5-74.700012 96-113.5 26.900024-36.299988 94.700012-136.700012 105.599976-159.299988 0-2.400024-6.299988-30.100036-12.799988-56.200012-35.700012-159.599976-252.599976-143.400024-429.799988-143.400024-177.399994 0-394.100006-16.199952-429.900002 143.300048-6.5 26-12.799995 53.799988-12.799995 56.199952 10.899994 22.600036 78.800003 123 105.599991 159.300048 27.5 38.799988 60.5 82.799988 96 113.5" fill="#121212"/><path d="m441.200012 480h-40c-2.800018 0-5-2.200012-5-5v-40c0-2.799988-2.200012-5-5-5h-30c-2.800018 0-5 2.200012-5 5v40c0 2.799988-2.200012 5-5 5h-40c-2.800018 0-5 2.200012-5 5v30c0 2.799988 2.199982 5 5 5h40c2.799988 0 5 2.200012 5 5v40c0 2.799988 2.199982 5 5 5h30c2.799988 0 5-2.200012 5-5v-40c0-2.799988 2.199982-5 5-5h40c2.799988 0 5-2.200012 5-5v-30c0-2.700012-2.200012-5-5-5z" fill="#444542"/><g fill="#fff"><path d="m368.700012 542.5h15l-7.5 15z"/><path d="m333.700012 492.5v15l-15-7.5z"/><path d="m383.700012 457.5h-15l7.5-15z"/><path d="m418.700012 507.5v-15l15 7.5z"/></g><path d="m680.599976 500c0 30.375671-24.624329 55-55 55-30.375611 0-55-24.624329-55-55s24.624389-55 55-55c30.375671 0 55 24.624329 55 55z" fill="#20221f"/><path d="m670.599976 500c0 24.852844-20.147156 45-45 45-24.852784 0-45-20.147156-45-45s20.147216-45 45-45c24.852844 0 45 20.147156 45 45z" fill="#444542" stroke="#fff" stroke-width="2"/><path d="m270.200012 361.299988c0 30.375671-24.624359 55-55.000015 55s-55-24.624329-55-55c0-30.375672 24.624344-55 55-55s55.000015 24.624328 55.000015 55z" fill="#20221f"/><path d="m260.200012 361.299988c0 24.852844-20.147186 45-45.000015 45-24.852814 0-45-20.147156-45-45 0-24.852783 20.147186-45 45-45 24.852829 0 45.000015 20.147217 45.000015 45z" fill="#444542" stroke="#fff" stroke-width="2"/><path d="m398.5 285.799988c0 12.426452-10.073578 22.5-22.5 22.5s-22.5-10.073548-22.5-22.5c0-12.426392 10.073578-22.5 22.5-22.5s22.5 10.073608 22.5 22.5z" fill="#454644"/><path d="m361.200012 288.299988v-5h30v5" fill="#fff"/><path d="m647.900024 286.099976c0 12.426391-10.073608 22.5-22.5 22.5-12.426452 0-22.5-10.073609-22.5-22.5 0-12.426392 10.073548-22.5 22.5-22.5 12.426392 0 22.5 10.073608 22.5 22.5z" fill="#454644"/><path d="m640.599976 283.599976h-12.5v-12.699952h-5v12.699952h-12.5v5h12.5v12.300048h5v-12.300048h12.5z" fill="#fff"/><path d="m602.900024 361.299988c0 12.426391-10.073608 22.5-22.5 22.5-12.426452 0-22.5-10.073609-22.5-22.5 0-12.426392 10.073548-22.5 22.5-22.5 12.426392 0 22.5 10.073608 22.5 22.5z" fill="#454644"/><path d="m580.400024 346.299988-15 15h5v15h20v-15h5zm5 25h-10v-10h10z" fill="#fff"/><path d="m443.600006 383h-30c-2.800018 0-5-2.200012-5-5v-29.5c0-2.799988 2.199982-5 5-5h30c2.799988 0 5 2.200012 5 5v29.5c0 2.700012-2.200012 5-5 5z" fill="#454644"/><path d="m443.600006 363.200012c0 8.284241-6.715729 15-15 15s-15-6.715759-15-15c0-8.284302 6.715729-15 15-15s15 6.715698 15 15z" fill="#454644" stroke="#fff" stroke-width="2"/><path d="m873.900024 361.299988c0 19.329956-15.670044 35-35 35-19.330017 0-35-15.670044-35-35s15.669983-35 35-35c19.329956 0 35 15.670044 35 35z" fill="#3b3c3a"/><text fill="#fff" font-family="Helvetica" font-size="40" font-weight="700" x="823" y="377">A</text><path d="m803.900024 291.299988c0 19.329956-15.670044 35-35 35-19.330017 0-35-15.670044-35-35s15.669983-35 35-35c19.329956 0 35 15.670044 35 35z" fill="#3b3c3a"/><text fill="#fff" font-family="Helvetica" font-size="40" font-weight="700" x="755" y="307">X</text><path d="m733.900024 361.299988c0 19.329956-15.670044 35-35 35-19.330017 0-35-15.670044-35-35s15.669983-35 35-35c19.329956 0 35 15.670044 35 35z" fill="#3b3c3a"/><text fill="#fff" font-family="Helvetica" font-size="40" font-weight="700" x="685" y="377">Y</text><path d="m803.900024 431.299988c0 19.329956-15.670044 35-35 35-19.330017 0-35-15.670044-35-35s15.669983-35 35-35c19.329956 0 35 15.670044 35 35z" fill="#3b3c3a"/><text fill="#fff" font-family="Helvetica" font-size="40" font-weight="700" x="755" y="447">B</text></svg>

After

Width:  |  Height:  |  Size: 4.8 KiB

View file

@ -42,6 +42,7 @@ namespace Ryujinx.Ava
public static bool PreviewerDetached { get; private set; }
public static bool UseHardwareAcceleration { get; private set; }
public static string BackendThreadingArg { get; private set; }
public static bool CoreDumpArg { get; private set; }
private const uint MbIconwarning = 0x30;
@ -81,6 +82,8 @@ namespace Ryujinx.Ava
bool noGuiArg = ConsumeCommandLineArgument(ref args, "--no-gui") || ConsumeCommandLineArgument(ref args, "nogui");
bool coreDumpArg = ConsumeCommandLineArgument(ref args, "--core-dumps");
CoreDumpArg = coreDumpArg;
// TODO: Ryujinx causes core dumps on Linux when it exits "uncleanly", eg. through an unhandled exception.
// This is undesirable and causes very odd behavior during development (the process stops responding,
// the .NET debugger freezes or suddenly detaches, /tmp/ gets filled etc.), unless explicitly requested by the user.

View file

@ -158,9 +158,13 @@
</EmbeddedResource>
<EmbeddedResource Include="Assets\Styles\Styles.xaml" />
<EmbeddedResource Include="Assets\Icons\Controller_JoyConLeft.svg" />
<EmbeddedResource Include="Assets\Icons\Simplified_JoyConLeft.svg" />
<EmbeddedResource Include="Assets\Icons\Controller_JoyConPair.svg" />
<EmbeddedResource Include="Assets\Icons\Simplified_JoyConPair.svg" />
<EmbeddedResource Include="Assets\Icons\Controller_JoyConRight.svg" />
<EmbeddedResource Include="Assets\Icons\Simplified_JoyConRight.svg" />
<EmbeddedResource Include="Assets\Icons\Controller_ProCon.svg" />
<EmbeddedResource Include="Assets\Icons\Simplified_ProCon.svg" />
<EmbeddedResource Include="Assets\UIImages\Icon_NCA.png" />
<EmbeddedResource Include="Assets\UIImages\Icon_NRO.png" />
<EmbeddedResource Include="Assets\UIImages\Icon_NSO.png" />

View file

@ -78,7 +78,7 @@ namespace Ryujinx.Ava.UI.Applet
title,
message,
string.Empty,
LocaleManager.Instance[LocaleKeys.DialogOpenSettingsWindowLabel],
LocaleManager.Instance[LocaleKeys.Settings],
string.Empty,
LocaleManager.Instance[LocaleKeys.SettingsButtonClose],
(int)Symbol.Important,

View file

@ -11,13 +11,13 @@
Focusable="True"
x:DataType="applet:ControllerAppletDialog">
<Grid
HorizontalAlignment="Stretch"
HorizontalAlignment="Stretch" Margin ="10"
VerticalAlignment="Stretch" RowDefinitions="Auto,*,Auto" ColumnDefinitions="*,Auto">
<Border
Grid.Column="0"
Grid.Row="0"
Grid.ColumnSpan="2"
Margin="0 0 0 10"
Margin="0,0,0,10"
BorderBrush="{DynamicResource ThemeControlBorderColor}"
BorderThickness="1"
CornerRadius="5">
@ -38,7 +38,7 @@
BorderBrush="{DynamicResource ThemeControlBorderColor}"
BorderThickness="1"
CornerRadius="5"
Margin="0 0 10 0">
Margin="0,0,10,0">
<StackPanel
Margin="10"
Spacing="10"
@ -109,7 +109,7 @@
</StackPanel>
</Border>
<Panel
Margin="0 24 0 0"
Margin="0,30,0,0"
Grid.Column="0"
Grid.Row="2"
Grid.ColumnSpan="2">
@ -121,7 +121,7 @@
Name="SaveButton"
MinWidth="90"
Command="{Binding OpenSettingsWindow}">
<TextBlock Text="{ext:Locale DialogOpenSettingsWindowLabel}" />
<TextBlock Text="{ext:Locale Settings}" />
</Button>
<Button
Name="CancelButton"

View file

@ -16,10 +16,10 @@ namespace Ryujinx.Ava.UI.Applet
{
internal partial class ControllerAppletDialog : UserControl
{
private const string ProControllerResource = "Ryujinx/Assets/Icons/Controller_ProCon.svg";
private const string JoyConPairResource = "Ryujinx/Assets/Icons/Controller_JoyConPair.svg";
private const string JoyConLeftResource = "Ryujinx/Assets/Icons/Controller_JoyConLeft.svg";
private const string JoyConRightResource = "Ryujinx/Assets/Icons/Controller_JoyConRight.svg";
private const string ProControllerResource = "Ryujinx/Assets/Icons/Simplified_ProCon.svg";
private const string JoyConPairResource = "Ryujinx/Assets/Icons/Simplified_JoyConPair.svg";
private const string JoyConLeftResource = "Ryujinx/Assets/Icons/Simplified_JoyConLeft.svg";
private const string JoyConRightResource = "Ryujinx/Assets/Icons/Simplified_JoyConRight.svg";
public static SvgImage ProControllerImage => GetResource(ProControllerResource);
public static SvgImage JoyconPairImage => GetResource(JoyConPairResource);

View file

@ -82,13 +82,7 @@ namespace Ryujinx.Ava.UI.Helpers
_isWaitingForInput = false;
ToggledButton.IsChecked = false;
if (pressedButton.HasValue && pressedButton.Value.AsHidType<Key>() == Key.BackSpace)
{
ButtonAssigned?.Invoke(this, new ButtonAssignedEventArgs(ToggledButton, new Button(Key.Unbound)));
return;
}
ButtonAssigned?.Invoke(this, new ButtonAssignedEventArgs(ToggledButton, pressedButton));
});
}

View file

@ -82,6 +82,7 @@ namespace Ryujinx.Ava.UI.Helpers
{ Key.Period, LocaleKeys.KeyPeriod },
{ Key.Slash, LocaleKeys.KeySlash },
{ Key.BackSlash, LocaleKeys.KeyBackSlash },
{ Key.Menu, LocaleKeys.KeyMenu },
{ Key.Unbound, LocaleKeys.KeyUnbound },
};
@ -93,13 +94,13 @@ namespace Ryujinx.Ava.UI.Helpers
{ GamepadInputId.RightShoulder, LocaleKeys.GamepadRightShoulder },
{ GamepadInputId.LeftTrigger, LocaleKeys.GamepadLeftTrigger },
{ GamepadInputId.RightTrigger, LocaleKeys.GamepadRightTrigger },
{ GamepadInputId.DpadUp, LocaleKeys.GamepadDpadUp},
{ GamepadInputId.DpadDown, LocaleKeys.GamepadDpadDown},
{ GamepadInputId.DpadLeft, LocaleKeys.GamepadDpadLeft},
{ GamepadInputId.DpadRight, LocaleKeys.GamepadDpadRight},
{ GamepadInputId.DpadUp, LocaleKeys.KeyUp},
{ GamepadInputId.DpadDown, LocaleKeys.KeyDown},
{ GamepadInputId.DpadLeft, LocaleKeys.KeyLeft},
{ GamepadInputId.DpadRight, LocaleKeys.KeyRight},
{ GamepadInputId.Minus, LocaleKeys.GamepadMinus},
{ GamepadInputId.Plus, LocaleKeys.GamepadPlus},
{ GamepadInputId.Guide, LocaleKeys.GamepadGuide},
{ GamepadInputId.Guide, LocaleKeys.KeyMenu},
{ GamepadInputId.Misc1, LocaleKeys.GamepadMisc1},
{ GamepadInputId.Paddle1, LocaleKeys.GamepadPaddle1},
{ GamepadInputId.Paddle2, LocaleKeys.GamepadPaddle2},

View file

@ -328,7 +328,7 @@ namespace Ryujinx.Ava.UI.ViewModels.Input
PlayerIndexes.Add(new(PlayerIndex.Player6, LocaleManager.Instance[LocaleKeys.ControllerSettingsPlayer6]));
PlayerIndexes.Add(new(PlayerIndex.Player7, LocaleManager.Instance[LocaleKeys.ControllerSettingsPlayer7]));
PlayerIndexes.Add(new(PlayerIndex.Player8, LocaleManager.Instance[LocaleKeys.ControllerSettingsPlayer8]));
PlayerIndexes.Add(new(PlayerIndex.Handheld, LocaleManager.Instance[LocaleKeys.ControllerSettingsHandheld]));
PlayerIndexes.Add(new(PlayerIndex.Handheld, LocaleManager.Instance[LocaleKeys.Handheld]));
}
@ -508,7 +508,7 @@ namespace Ryujinx.Ava.UI.ViewModels.Input
if (_playerId == PlayerIndex.Handheld)
{
Controllers.Add(new(ControllerType.Handheld, LocaleManager.Instance[LocaleKeys.ControllerSettingsControllerTypeHandheld]));
Controllers.Add(new(ControllerType.Handheld, LocaleManager.Instance[LocaleKeys.Handheld]));
Controller = 0;
}

View file

@ -29,7 +29,7 @@ namespace Ryujinx.Ava.UI.ViewModels.Input
[ObservableProperty]
public partial Color LedColor { get; set; }
public string RainbowSpeedText => RainbowSpeed.ToString(CultureInfo.CurrentCulture).Truncate(4, string.Empty);
public string RainbowSpeedText => RainbowSpeed.ToString("F2", CultureInfo.CurrentCulture);
public float RainbowSpeed
{

View file

@ -45,7 +45,7 @@
BorderBrush="{DynamicResource ThemeControlBorderColor}"
BorderThickness="1"
IsVisible="{Binding IsLeft}"
MinHeight="90"
Height="90"
CornerRadius="5">
<Grid
Margin="10"
@ -106,7 +106,8 @@
BorderThickness="1"
IsVisible="{Binding IsLeft}"
Margin="0,5,0,0"
CornerRadius="5">
CornerRadius="5"
Height="375">
<StackPanel
Margin="10"
Orientation="Vertical">
@ -116,22 +117,6 @@
Text="{ext:Locale ControllerSettingsLStick}" />
<!-- Left Joystick Controller -->
<StackPanel Orientation="Vertical">
<!-- Left Joystick Button -->
<StackPanel
Orientation="Horizontal">
<TextBlock
Margin="0,0,10,0"
Width="120"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{ext:Locale ControllerSettingsStickButton}"
TextAlignment="Center" />
<ToggleButton Name="LeftStickButton">
<TextBlock
Text="{Binding Config.LeftStickButton, Converter={x:Static helpers:KeyValueConverter.Instance}}"
TextAlignment="Center" />
</ToggleButton>
</StackPanel>
<!-- Left Joystick Stick -->
<StackPanel
Margin="0,4,0,4"
@ -149,8 +134,24 @@
TextAlignment="Center" />
</ToggleButton>
</StackPanel>
<!-- Left Joystick Button -->
<StackPanel
Orientation="Horizontal">
<TextBlock
Margin="0,0,10,0"
Width="120"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{ext:Locale ControllerSettingsStickButton}"
TextAlignment="Center" />
<ToggleButton Name="LeftStickButton">
<TextBlock
Text="{Binding Config.LeftStickButton, Converter={x:Static helpers:KeyValueConverter.Instance}}"
TextAlignment="Center" />
</ToggleButton>
</StackPanel>
<Separator
Margin="0,8,0,8"
Margin="0,16,0,8"
Height="1" />
<CheckBox IsChecked="{Binding Config.LeftInvertStickX}">
<TextBlock Text="{ext:Locale ControllerSettingsStickInvertXAxis}" />
@ -162,7 +163,7 @@
<TextBlock Text="{ext:Locale ControllerSettingsRotate90}" />
</CheckBox>
<Separator
Margin="0,8,0,8"
Margin="0,8,0,16"
Height="1" />
<StackPanel Orientation="Vertical">
<TextBlock
@ -173,7 +174,7 @@
VerticalAlignment="Center"
Orientation="Horizontal">
<controls:SliderScroll
Width="130"
Width="120"
Maximum="1"
TickFrequency="0.01"
IsSnapToTickEnabled="True"
@ -182,8 +183,10 @@
Value="{Binding Config.DeadzoneLeft, Mode=TwoWay}" />
<TextBlock
VerticalAlignment="Center"
HorizontalAlignment="Center"
Width="25"
Text="{Binding Config.DeadzoneLeft, StringFormat=\{0:0.00\}}" />
Text="{Binding Config.DeadzoneLeft, StringFormat=\{0:0.00\}}"
Margin="5,0,5,1" />
</StackPanel>
<TextBlock
HorizontalAlignment="Center"
@ -193,7 +196,7 @@
VerticalAlignment="Center"
Orientation="Horizontal">
<controls:SliderScroll
Width="130"
Width="120"
Maximum="2"
TickFrequency="0.01"
IsSnapToTickEnabled="True"
@ -202,8 +205,10 @@
Value="{Binding Config.RangeLeft, Mode=TwoWay}" />
<TextBlock
VerticalAlignment="Center"
HorizontalAlignment="Center"
Width="25"
Text="{Binding Config.RangeLeft, StringFormat=\{0:0.00\}}" />
Text="{Binding Config.RangeLeft, StringFormat=\{0:0.00\}}"
Margin="5,0,5,1" />
</StackPanel>
</StackPanel>
</StackPanel>
@ -216,7 +221,8 @@
VerticalAlignment="Top"
IsVisible="{Binding IsLeft}"
Margin="0,5,0,0"
CornerRadius="5">
CornerRadius="5"
Height="170">
<StackPanel
Margin="10"
Orientation="Vertical">
@ -234,7 +240,7 @@
Width="120"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{ext:Locale ControllerSettingsDPadUp}"
Text="{ext:Locale ControllerSettingsUp}"
TextAlignment="Center" />
<ToggleButton Name="DpadUp">
<TextBlock
@ -251,7 +257,7 @@
Width="120"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{ext:Locale ControllerSettingsDPadDown}"
Text="{ext:Locale ControllerSettingsDown}"
TextAlignment="Center" />
<ToggleButton Name="DpadDown">
<TextBlock
@ -268,7 +274,7 @@
Width="120"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{ext:Locale ControllerSettingsDPadLeft}"
Text="{ext:Locale ControllerSettingsLeft}"
TextAlignment="Center" />
<ToggleButton Name="DpadLeft">
<TextBlock
@ -285,7 +291,7 @@
Width="120"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{ext:Locale ControllerSettingsDPadRight}"
Text="{ext:Locale ControllerSettingsRight}"
TextAlignment="Center" />
<ToggleButton Name="DpadRight">
<TextBlock
@ -307,17 +313,17 @@
BorderBrush="{DynamicResource ThemeControlBorderColor}"
BorderThickness="1"
CornerRadius="5"
Margin="0,0, 0, 5"
MinHeight="90">
Margin="0,0,0,5"
Height="470">
<StackPanel Orientation="Vertical">
<Image
Margin="5,10"
MaxHeight="300"
Margin="5,10,5,10"
MaxHeight="325"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Source="{Binding Image}" />
<StackPanel
Margin="10"
Margin="5,5,5,11"
Orientation="Horizontal"
Spacing="20"
HorizontalAlignment="Center">
@ -395,39 +401,67 @@
<Border
BorderBrush="{DynamicResource ThemeControlBorderColor}"
BorderThickness="1"
CornerRadius="5">
<StackPanel
Margin="8"
Orientation="Vertical">
<TextBlock
HorizontalAlignment="Center"
Text="{ext:Locale ControllerSettingsTriggerThreshold}" />
<StackPanel
HorizontalAlignment="Center"
Orientation="Horizontal">
<controls:SliderScroll
Width="130"
Maximum="1"
TickFrequency="0.01"
IsSnapToTickEnabled="True"
SmallChange="0.01"
Minimum="0"
Value="{Binding Config.TriggerThreshold, Mode=TwoWay}" />
<TextBlock
Width="25"
Text="{Binding Config.TriggerThreshold, StringFormat=\{0:0.00\}}" />
</StackPanel>
<StackPanel
Orientation="Vertical"
IsVisible="{Binding HasSides}">
CornerRadius="5"
Height="80">
<StackPanel
Margin="10,10,10,0"
Spacing="50"
Orientation="Horizontal"
VerticalAlignment="Center"
HorizontalAlignment="Center">
<StackPanel Orientation="Vertical">
<TextBlock
VerticalAlignment="Center"
HorizontalAlignment="Center"
Text="{ext:Locale ControllerSettingsTriggerThreshold}" />
<StackPanel
HorizontalAlignment="Center"
VerticalAlignment="Center"
Orientation="Horizontal">
<controls:SliderScroll
Width="130"
Maximum="1"
TickFrequency="0.01"
IsSnapToTickEnabled="True"
SmallChange="0.01"
Minimum="0"
Value="{Binding Config.TriggerThreshold, Mode=TwoWay}" />
<TextBlock
Margin="5,0,5,1"
Width="25"
Text="{Binding Config.TriggerThreshold, StringFormat=\{0:0.00\}}" />
</StackPanel>
</StackPanel>
<StackPanel
Orientation="Horizontal"
IsVisible="{Binding HasSides}">
<StackPanel
Margin="0,0,10,0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
IsVisible="{Binding IsLeft}"
Orientation="Horizontal">
<TextBlock
Width="20"
Margin="0,0,5,0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{ext:Locale ControllerSettingsLeftSL}"
TextAlignment="Center" />
<ToggleButton Name="LeftButtonSl">
<TextBlock
Text="{Binding Config.LeftButtonSl, Converter={x:Static helpers:KeyValueConverter.Instance}}"
TextAlignment="Center" />
</ToggleButton>
</StackPanel>
<StackPanel
Margin="0,4,0,0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
IsVisible="{Binding IsLeft}"
Orientation="Horizontal">
<TextBlock
Width="20"
Margin="0,0,5,0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{ext:Locale ControllerSettingsLeftSR}"
@ -439,49 +473,14 @@
</ToggleButton>
</StackPanel>
<StackPanel
Margin="0,4,0,0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
IsVisible="{Binding IsLeft}"
Orientation="Horizontal">
<TextBlock
Width="20"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{ext:Locale ControllerSettingsLeftSL}"
TextAlignment="Center" />
<ToggleButton Name="LeftButtonSl">
<TextBlock
Text="{Binding Config.LeftButtonSl, Converter={x:Static helpers:KeyValueConverter.Instance}}"
TextAlignment="Center" />
</ToggleButton>
</StackPanel>
<StackPanel
Margin="0,4,0,0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
IsVisible="{Binding IsRight}"
Orientation="Horizontal">
<TextBlock
Width="20"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{ext:Locale ControllerSettingsRightSR}"
TextAlignment="Center" />
<ToggleButton Name="RightButtonSr">
<TextBlock
Text="{Binding Config.RightButtonSr, Converter={x:Static helpers:KeyValueConverter.Instance}}"
TextAlignment="Center" />
</ToggleButton>
</StackPanel>
<StackPanel
Margin="0,4,0,0"
Margin="0,0,10,0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
IsVisible="{Binding IsRight}"
Orientation="Horizontal">
<TextBlock
Width="20"
Margin="0,0,5,0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{ext:Locale ControllerSettingsRightSL}"
@ -492,6 +491,24 @@
TextAlignment="Center" />
</ToggleButton>
</StackPanel>
<StackPanel
HorizontalAlignment="Center"
VerticalAlignment="Center"
IsVisible="{Binding IsRight}"
Orientation="Horizontal">
<TextBlock
Width="20"
Margin="0,0,5,0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{ext:Locale ControllerSettingsRightSR}"
TextAlignment="Center" />
<ToggleButton Name="RightButtonSr">
<TextBlock
Text="{Binding Config.RightButtonSr, Converter={x:Static helpers:KeyValueConverter.Instance}}"
TextAlignment="Center" />
</ToggleButton>
</StackPanel>
</StackPanel>
</StackPanel>
</Border>
@ -506,7 +523,8 @@
BorderThickness="1"
CornerRadius="5"
VerticalAlignment="Bottom"
HorizontalAlignment="Stretch">
HorizontalAlignment="Stretch"
Height="85">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
<StackPanel Orientation="Vertical" Spacing="5">
<CheckBox
@ -536,7 +554,7 @@
</Button>
</StackPanel>
<controls:MiniVerticalSeparator Height="64" IsVisible="{Binding ParentModel.HasLed}"/>
<StackPanel Orientation="Vertical" Spacing="5">
<StackPanel Orientation="Vertical" Spacing="5" IsVisible="{Binding ParentModel.HasLed}">
<CheckBox
Margin="10, 10, 10, 0"
MinWidth="0"
@ -563,7 +581,7 @@
BorderBrush="{DynamicResource ThemeControlBorderColor}"
BorderThickness="1"
IsVisible="{Binding IsRight}"
MinHeight="90"
Height="90"
CornerRadius="5">
<Grid
Margin="10"
@ -628,7 +646,8 @@
BorderThickness="1"
IsVisible="{Binding IsRight}"
Margin="0,5,0,0"
CornerRadius="5">
CornerRadius="5"
Height="170">
<StackPanel
Margin="10"
Orientation="Vertical">
@ -716,7 +735,8 @@
BorderThickness="1"
CornerRadius="5"
IsVisible="{Binding IsRight}"
Margin="0,5,0,0">
Margin="0,5,0,0"
Height="375">
<StackPanel Orientation="Vertical">
<TextBlock
Margin="0,0,0,10"
@ -724,22 +744,6 @@
Text="{ext:Locale ControllerSettingsRStick}" />
<!-- Right Joystick Controller -->
<StackPanel Orientation="Vertical">
<!-- Right Joystick Button -->
<StackPanel
Orientation="Horizontal">
<TextBlock
Margin="0,0,10,0"
Width="120"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{ext:Locale ControllerSettingsStickButton}"
TextAlignment="Center" />
<ToggleButton Name="RightStickButton">
<TextBlock
Text="{Binding Config.RightStickButton, Converter={x:Static helpers:KeyValueConverter.Instance}}"
TextAlignment="Center" />
</ToggleButton>
</StackPanel>
<!-- Right Joystick Stick -->
<StackPanel
Margin="0,4,0,4"
@ -758,7 +762,23 @@
TextAlignment="Center" />
</ToggleButton>
</StackPanel>
<Separator Margin="0,8,0,8" Height="1" />
<!-- Right Joystick Button -->
<StackPanel
Orientation="Horizontal">
<TextBlock
Margin="0,0,10,0"
Width="120"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{ext:Locale ControllerSettingsStickButton}"
TextAlignment="Center" />
<ToggleButton Name="RightStickButton">
<TextBlock
Text="{Binding Config.RightStickButton, Converter={x:Static helpers:KeyValueConverter.Instance}}"
TextAlignment="Center" />
</ToggleButton>
</StackPanel>
<Separator Margin="0,16,0,8" Height="1" />
<CheckBox IsChecked="{Binding Config.RightInvertStickX}">
<TextBlock Text="{ext:Locale ControllerSettingsStickInvertXAxis}" />
</CheckBox>
@ -768,7 +788,7 @@
<CheckBox IsChecked="{Binding Config.RightRotate90}">
<TextBlock Text="{ext:Locale ControllerSettingsRotate90}" />
</CheckBox>
<Separator Margin="0,8,0,8" Height="1" />
<Separator Margin="0,8,0,16" Height="1" />
<StackPanel Orientation="Vertical">
<TextBlock
HorizontalAlignment="Center"
@ -778,7 +798,7 @@
VerticalAlignment="Center"
Orientation="Horizontal">
<controls:SliderScroll
Width="130"
Width="120"
Maximum="1"
TickFrequency="0.01"
IsSnapToTickEnabled="True"
@ -789,8 +809,10 @@
Value="{Binding Config.DeadzoneRight, Mode=TwoWay}" />
<TextBlock
VerticalAlignment="Center"
HorizontalAlignment="Center"
Width="25"
Text="{Binding Config.DeadzoneRight, StringFormat=\{0:0.00\}}" />
Text="{Binding Config.DeadzoneRight, StringFormat=\{0:0.00\}}"
Margin="5,0,5,1" />
</StackPanel>
<TextBlock
HorizontalAlignment="Center"
@ -800,7 +822,7 @@
VerticalAlignment="Center"
Orientation="Horizontal">
<controls:SliderScroll
Width="130"
Width="120"
Maximum="2"
TickFrequency="0.01"
IsSnapToTickEnabled="True"
@ -809,8 +831,10 @@
Value="{Binding Config.RangeRight, Mode=TwoWay}" />
<TextBlock
VerticalAlignment="Center"
HorizontalAlignment="Center"
Width="25"
Text="{Binding Config.RangeRight, StringFormat=\{0:0.00\}}" />
Text="{Binding Config.RangeRight, StringFormat=\{0:0.00\}}"
Margin="5,0,5,1" />
</StackPanel>
</StackPanel>
</StackPanel>

View file

@ -20,217 +20,70 @@
<Design.DataContext>
<viewModels:InputViewModel />
</Design.DataContext>
<UserControl.Styles>
<Style Selector="ToggleButton">
<Setter Property="Width" Value="90" />
<Setter Property="Height" Value="27" />
<Setter Property="HorizontalAlignment" Value="Stretch" />
</Style>
</UserControl.Styles>
<StackPanel
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Orientation="Vertical">
<StackPanel
Margin="0 0 0 5"
Orientation="Vertical"
Spacing="5">
<Grid ColumnDefinitions="*,10,*">
<!-- Player Selection -->
<Grid
Grid.Column="0"
Margin="2"
HorizontalAlignment="Stretch"
VerticalAlignment="Center" ColumnDefinitions="Auto,*,Auto">
<StackPanel
Orientation="Vertical"
Margin="5,0,10,0"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Width="90">
<TextBlock
Text="{ext:Locale ControllerSettingsPlayer}" />
<TextBlock
Classes="pending"
Text ="{ext:Locale ControllerSettingsModifiedNotification}"
IsVisible="{Binding IsModified}"/>
</StackPanel>
<ComboBox
Grid.Column="1"
Name="PlayerIndexBox"
HorizontalAlignment="Stretch"
VerticalAlignment="Center"
SelectionChanged="PlayerIndexBox_OnSelectionChanged"
ItemsSource="{Binding PlayerIndexes}"
SelectedIndex="{Binding PlayerId}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
<Button
Grid.Column="2"
MinWidth="0"
Margin="5,0,0,0"
VerticalAlignment="Center"
ToolTip.Tip="{ext:Locale ControllerSettingsCancelCurrentChangesToolTip}"
Command="{Binding RevertChanges}">
<ui:SymbolIcon
Symbol="Undo"
FontSize="15"
Height="20" />
</Button>
</Grid>
<!-- Profile Selection -->
<Grid
Grid.Column="2"
Margin="2"
HorizontalAlignment="Stretch"
VerticalAlignment="Center" ColumnDefinitions="Auto,*,Auto,Auto,Auto">
<TextBlock
Margin="5,0,10,0"
Width="90"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Text="{ext:Locale ControllerSettingsProfile}" />
<ui:FAComboBox
Grid.Column="1"
IsEditable="True"
Name="ProfileBox"
HorizontalAlignment="Stretch"
VerticalAlignment="Center"
SelectedItem="{Binding ChosenProfile, Mode=TwoWay}"
SelectionChanged="ComboBox_SelectionChanged"
ItemsSource="{Binding ProfilesList}"
Text="{Binding ProfileName, Mode=TwoWay}" />
<Button
Grid.Column="2"
MinWidth="0"
Margin="5,0,0,0"
VerticalAlignment="Center"
ToolTip.Tip="{ext:Locale ControllerSettingsLoadProfileToolTip}"
Command="{Binding LoadProfileButton}">
<ui:SymbolIcon
Symbol="View"
FontSize="15"
Height="20" />
</Button>
<Button
Grid.Column="3"
MinWidth="0"
Margin="5,0,0,0"
VerticalAlignment="Center"
ToolTip.Tip="{ext:Locale ControllerSettingsSaveProfileToolTip}"
Command="{Binding SaveProfile}">
<ui:SymbolIcon
Symbol="Save"
FontSize="15"
Height="20" />
</Button>
<Button
Grid.Column="4"
MinWidth="0"
Margin="5,0,0,0"
VerticalAlignment="Center"
ToolTip.Tip="{ext:Locale ControllerSettingsRemoveProfileToolTip}"
Command="{Binding RemoveProfile}">
<ui:SymbolIcon
Symbol="Delete"
FontSize="15"
Height="20" />
</Button>
</Grid>
<Grid ColumnDefinitions="Auto,1.65*,Auto,1.5*" Margin="0,0,0,15">
<Grid Grid.Column="0" Margin="0,2,10,2" HorizontalAlignment="Stretch" VerticalAlignment="Center" ColumnDefinitions="Auto,*,Auto">
<ComboBox Grid.Column="1" Name="PlayerIndexBox" HorizontalAlignment="Stretch" VerticalAlignment="Center" SelectionChanged="PlayerIndexBox_OnSelectionChanged" ItemsSource="{Binding PlayerIndexes}" SelectedIndex="{Binding PlayerId}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
<Button Grid.Column="2" MinWidth="0" Margin="5,0,0,0" VerticalAlignment="Center" ToolTip.Tip="{ext:Locale ControllerSettingsCancelCurrentChangesToolTip}" Command="{Binding RevertChanges}">
<ui:SymbolIcon Symbol="Undo" FontSize="15" Height="20" />
</Button>
</Grid>
<Separator />
<Grid ColumnDefinitions="*,10,*">
<!-- Input Device -->
<Grid
Grid.Column="0"
Margin="2"
HorizontalAlignment="Stretch" ColumnDefinitions="Auto,*,Auto">
<TextBlock
Grid.Column="0"
Margin="5,0,10,0"
Width="90"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Text="{ext:Locale ControllerSettingsInputDevice}" />
<ComboBox
Grid.Column="1"
Name="DeviceBox"
HorizontalAlignment="Stretch"
VerticalAlignment="Center"
ItemsSource="{Binding DeviceList}"
SelectedIndex="{Binding Device}" />
<Button
Grid.Column="2"
MinWidth="0"
Margin="5,0,0,0"
VerticalAlignment="Center"
Command="{Binding LoadDevice}">
<ui:SymbolIcon
Symbol="Refresh"
FontSize="15"
Height="20"/>
</Button>
</Grid>
<!-- Controller Type -->
<Grid
Grid.Column="2"
Margin="2"
HorizontalAlignment="Stretch"
VerticalAlignment="Center" ColumnDefinitions="Auto,*">
<TextBlock
Margin="5,0,10,0"
Width="90"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Text="{ext:Locale ControllerSettingsControllerType}" />
<ComboBox
Grid.Column="1"
HorizontalAlignment="Stretch"
ItemsSource="{Binding Controllers}"
SelectedIndex="{Binding Controller}">
<ComboBox.ItemTemplate>
<DataTemplate DataType="models:ControllerModel">
<TextBlock Text="{Binding Name}" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</Grid>
<Grid Grid.Column="1" Margin="10,2,10,2" HorizontalAlignment="Stretch" VerticalAlignment="Center" ColumnDefinitions="Auto,*,Auto">
<ComboBox Grid.Column="1" Name="DeviceBox" HorizontalAlignment="Stretch" VerticalAlignment="Center" ItemsSource="{Binding DeviceList}" SelectedIndex="{Binding Device}" />
<Button Grid.Column="2" MinWidth="0" Margin="5,0,0,0" VerticalAlignment="Center" Command="{Binding LoadDevice}">
<ui:SymbolIcon Symbol="Refresh" FontSize="15" Height="20"/>
</Button>
</Grid>
</StackPanel>
<Grid Grid.Column="2" Margin="10,2,10,2" HorizontalAlignment="Stretch" VerticalAlignment="Center" ColumnDefinitions="Auto,*">
<ComboBox Grid.Column="1" HorizontalAlignment="Stretch" ItemsSource="{Binding Controllers}" SelectedIndex="{Binding Controller}">
<ComboBox.ItemTemplate>
<DataTemplate DataType="models:ControllerModel">
<TextBlock Text="{Binding Name}" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</Grid>
<Grid Grid.Column="3" Margin="10,2,0,2" HorizontalAlignment="Stretch" VerticalAlignment="Center" ColumnDefinitions="Auto,*,Auto,Auto,Auto">
<ui:FAComboBox Grid.Column="1" IsEditable="True" Name="ProfileBox" HorizontalAlignment="Stretch" VerticalAlignment="Center" SelectedItem="{Binding ChosenProfile, Mode=TwoWay}" SelectionChanged="ComboBox_SelectionChanged" ItemsSource="{Binding ProfilesList}" Text="{Binding ProfileName, Mode=TwoWay}" />
<Button Grid.Column="2" MinWidth="0" Margin="5,0,0,0" VerticalAlignment="Center" ToolTip.Tip="{ext:Locale ControllerSettingsLoadProfileToolTip}" Command="{Binding LoadProfileButton}">
<ui:SymbolIcon Symbol="View" FontSize="15" Height="20" />
</Button>
<Button Grid.Column="3" MinWidth="0" Margin="5,0,0,0" VerticalAlignment="Center" ToolTip.Tip="{ext:Locale ControllerSettingsSaveProfileToolTip}" Command="{Binding SaveProfile}">
<ui:SymbolIcon Symbol="Save" FontSize="15" Height="20" />
</Button>
<Button Grid.Column="4" MinWidth="0" Margin="5,0,0,0" VerticalAlignment="Center" ToolTip.Tip="{ext:Locale ControllerSettingsRemoveProfileToolTip}" Command="{Binding RemoveProfile}">
<ui:SymbolIcon Symbol="Delete" FontSize="15" Height="20" />
</Button>
</Grid>
</Grid>
<ContentControl IsVisible="{Binding NotificationIsVisible}">
<ContentControl.Content>
<StackPanel>
<TextBlock
Margin="5,20,0,0"
Text="{Binding NotificationText}" />
<Button
MinWidth="0"
Width="90"
Height="27"
Margin="0,10,0,0"
VerticalAlignment="Center"
Command="{Binding UnlinkDevice}">
<TextBlock
Text="{ext:Locale ControllerSettingsUnlink}"
VerticalAlignment="Center"
HorizontalAlignment="Center" />
<TextBlock Margin="5,20,0,0" Text="{Binding NotificationText}" />
<Button MinWidth="0" Width="90" Height="27" Margin="0,10,0,0" VerticalAlignment="Center" Command="{Binding UnlinkDevice}">
<TextBlock Text="{ext:Locale ControllerSettingsUnlink}" VerticalAlignment="Center" HorizontalAlignment="Center" />
</Button>
</StackPanel>
</ContentControl.Content>
</ContentControl>
<ContentControl Content="{Binding ConfigViewModel}" IsVisible="{Binding ShowSettings}">
<ContentControl.DataTemplates>
<DataTemplate DataType="viewModels:ControllerInputViewModel">
<views:ControllerInputView />
</DataTemplate>
<DataTemplate DataType="viewModels:KeyboardInputViewModel">
<views:KeyboardInputView />
</DataTemplate>
</ContentControl.DataTemplates>
</ContentControl>
<ContentControl Content="{Binding ConfigViewModel}" IsVisible="{Binding ShowSettings}">
<ContentControl.DataTemplates>
<DataTemplate DataType="viewModels:ControllerInputViewModel">
<views:ControllerInputView />
</DataTemplate>
<DataTemplate DataType="viewModels:KeyboardInputViewModel">
<views:KeyboardInputView />
</DataTemplate>
</ContentControl.DataTemplates>
</ContentControl>
</StackPanel>
</UserControl>

View file

@ -140,7 +140,7 @@
Width="120"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{ext:Locale ControllerSettingsStickUp}"
Text="{ext:Locale ControllerSettingsUp}"
TextAlignment="Center" />
<ToggleButton Name="LeftStickUp">
<TextBlock
@ -157,7 +157,7 @@
Width="120"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{ext:Locale ControllerSettingsStickDown}"
Text="{ext:Locale ControllerSettingsDown}"
TextAlignment="Center" />
<ToggleButton Name="LeftStickDown">
<TextBlock
@ -174,7 +174,7 @@
Width="120"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{ext:Locale ControllerSettingsStickLeft}"
Text="{ext:Locale ControllerSettingsLeft}"
TextAlignment="Center" />
<ToggleButton Name="LeftStickLeft">
<TextBlock
@ -191,7 +191,7 @@
Width="120"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{ext:Locale ControllerSettingsStickRight}"
Text="{ext:Locale ControllerSettingsRight}"
TextAlignment="Center" />
<ToggleButton Name="LeftStickRight">
<TextBlock
@ -227,7 +227,7 @@
Width="120"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{ext:Locale ControllerSettingsDPadUp}"
Text="{ext:Locale ControllerSettingsUp}"
TextAlignment="Center" />
<ToggleButton Name="DpadUp">
<TextBlock
@ -244,7 +244,7 @@
Width="120"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{ext:Locale ControllerSettingsDPadDown}"
Text="{ext:Locale ControllerSettingsDown}"
TextAlignment="Center" />
<ToggleButton Name="DpadDown">
<TextBlock
@ -261,7 +261,7 @@
Width="120"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{ext:Locale ControllerSettingsDPadLeft}"
Text="{ext:Locale ControllerSettingsLeft}"
TextAlignment="Center" />
<ToggleButton Name="DpadLeft">
<TextBlock
@ -278,7 +278,7 @@
Width="120"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{ext:Locale ControllerSettingsDPadRight}"
Text="{ext:Locale ControllerSettingsRight}"
TextAlignment="Center" />
<ToggleButton Name="DpadRight">
<TextBlock
@ -300,7 +300,7 @@
BorderBrush="{DynamicResource ThemeControlBorderColor}"
BorderThickness="1"
CornerRadius="5"
Margin="0,10"
Margin="0,0,0,5"
MinHeight="90">
<StackPanel
Margin="10"
@ -373,37 +373,22 @@
BorderBrush="{DynamicResource ThemeControlBorderColor}"
BorderThickness="1"
CornerRadius="5"
MinHeight="90"
Height="80"
IsVisible="{Binding HasSides}">
<StackPanel
Margin="8"
Orientation="Vertical">
Orientation="Horizontal"
VerticalAlignment="Center"
HorizontalAlignment="Center">
<StackPanel
Margin="0,4,0,0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
IsVisible="{Binding IsLeft}"
Orientation="Horizontal">
<TextBlock
Width="20"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{ext:Locale ControllerSettingsLeftSR}"
TextAlignment="Center" />
<ToggleButton Name="LeftButtonSr">
<TextBlock
Text="{Binding Config.LeftButtonSr, Converter={x:Static helpers:KeyValueConverter.Instance}}"
TextAlignment="Center" />
</ToggleButton>
</StackPanel>
<StackPanel
Margin="0,4,0,0"
Margin="0,0,10,0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
IsVisible="{Binding IsLeft}"
Orientation="Horizontal">
<TextBlock
Width="20"
Margin="0,0,5,0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{ext:Locale ControllerSettingsLeftSL}"
@ -415,31 +400,32 @@
</ToggleButton>
</StackPanel>
<StackPanel
Margin="0,4,0,0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
IsVisible="{Binding IsRight}"
IsVisible="{Binding IsLeft}"
Orientation="Horizontal">
<TextBlock
Width="20"
Margin="0,0,5,0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{ext:Locale ControllerSettingsRightSR}"
Text="{ext:Locale ControllerSettingsLeftSR}"
TextAlignment="Center" />
<ToggleButton Name="RightButtonSr">
<ToggleButton Name="LeftButtonSr">
<TextBlock
Text="{Binding Config.RightButtonSr, Converter={x:Static helpers:KeyValueConverter.Instance}}"
Text="{Binding Config.LeftButtonSr, Converter={x:Static helpers:KeyValueConverter.Instance}}"
TextAlignment="Center" />
</ToggleButton>
</StackPanel>
<StackPanel
Margin="0,4,0,0"
Margin="0,0,10,0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
IsVisible="{Binding IsRight}"
Orientation="Horizontal">
<TextBlock
Width="20"
Margin="0,0,5,0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{ext:Locale ControllerSettingsRightSL}"
@ -450,6 +436,24 @@
TextAlignment="Center" />
</ToggleButton>
</StackPanel>
<StackPanel
HorizontalAlignment="Center"
VerticalAlignment="Center"
IsVisible="{Binding IsRight}"
Orientation="Horizontal">
<TextBlock
Width="20"
Margin="0,0,5,0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{ext:Locale ControllerSettingsRightSR}"
TextAlignment="Center" />
<ToggleButton Name="RightButtonSr">
<TextBlock
Text="{Binding Config.RightButtonSr, Converter={x:Static helpers:KeyValueConverter.Instance}}"
TextAlignment="Center" />
</ToggleButton>
</StackPanel>
</StackPanel>
</Border>
</StackPanel>
@ -650,7 +654,7 @@
Width="120"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{ext:Locale ControllerSettingsStickUp}"
Text="{ext:Locale ControllerSettingsUp}"
TextAlignment="Center" />
<ToggleButton Name="RightStickUp">
<TextBlock
@ -667,7 +671,7 @@
Width="120"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{ext:Locale ControllerSettingsStickDown}"
Text="{ext:Locale ControllerSettingsDown}"
TextAlignment="Center" />
<ToggleButton Name="RightStickDown">
<TextBlock
@ -684,7 +688,7 @@
Width="120"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{ext:Locale ControllerSettingsStickLeft}"
Text="{ext:Locale ControllerSettingsLeft}"
TextAlignment="Center" />
<ToggleButton Name="RightStickLeft">
<TextBlock
@ -701,7 +705,7 @@
Width="120"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{ext:Locale ControllerSettingsStickRight}"
Text="{ext:Locale ControllerSettingsRight}"
TextAlignment="Center" />
<ToggleButton Name="RightStickRight">
<TextBlock

View file

@ -9,46 +9,32 @@
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:DataType="viewModels:LedInputViewModel"
x:Class="Ryujinx.UI.Views.Input.LedInputView">
<StackPanel Orientation="Vertical" HorizontalAlignment="Center">
<StackPanel Orientation="Horizontal" IsVisible="{Binding ParentModel.CanClearLed}">
<TextBlock MinWidth="75" MaxWidth="200" Text="{ext:Locale ControllerSettingsLedColorDisable}" />
<CheckBox
Margin="5"
MinWidth="0"
IsChecked="{Binding TurnOffLed, Mode=TwoWay}"
Command="{Binding LedDisabledChanged}">
</CheckBox>
</StackPanel>
<StackPanel Orientation="Horizontal" IsEnabled="{Binding !TurnOffLed}">
<TextBlock MinWidth="75" MaxWidth="200" Text="{ext:Locale ControllerSettingsLedColorRainbow}" />
<CheckBox
Margin="5"
MinWidth="0"
IsChecked="{Binding UseRainbowLed, Mode=TwoWay}">
</CheckBox>
</StackPanel>
<StackPanel Orientation="Horizontal" IsEnabled="{Binding !TurnOffLed}">
<TextBlock MinWidth="75" MaxWidth="200" Text="{ext:Locale ControllerSettingsLedColorRainbowSpeed}" />
<Slider HorizontalAlignment="Center"
Value="{Binding RainbowSpeed}"
Width="175"
Margin="0,-3,0,0"
Height="32"
Padding="0,-5"
TickFrequency="0.25"
LargeChange="1"
SmallChange="0.25"
VerticalAlignment="Center"
Minimum="1"
Maximum="10" />
<TextBlock Margin="5,0"
MinWidth="75"
Text="{Binding RainbowSpeedText}" />
<StackPanel Margin="10" HorizontalAlignment="Center">
<CheckBox Margin="0,0,0,2.5" IsChecked="{Binding TurnOffLed, Mode=TwoWay}"
Command="{Binding LedDisabledChanged}" IsVisible="{Binding ParentModel.CanClearLed}">
<TextBlock Text="{ext:Locale ControllerSettingsLedColorDisable}" />
</CheckBox>
<CheckBox Margin="0,0,0,2.5" IsChecked="{Binding UseRainbowLed, Mode=TwoWay}">
<TextBlock Text="{ext:Locale ControllerSettingsLedColorRainbow}" />
</CheckBox>
<StackPanel Orientation="Horizontal" Margin="0,0,0,2.5" IsEnabled="{Binding !TurnOffLed}">
<TextBlock Margin="0,0,10,0" VerticalAlignment="Center" Text="{ext:Locale ControllerSettingsLedColorRainbowSpeed}" />
<controls:SliderScroll
Width="150"
VerticalAlignment="Center"
Value="{Binding RainbowSpeed}"
TickFrequency="0.25"
IsSnapToTickEnabled="True"
LargeChange="1"
SmallChange="0.25"
Minimum="0"
Maximum="10" />
<TextBlock Width="40" Margin="5,0,0,1" VerticalAlignment="Center" Text="{Binding RainbowSpeedText}" />
</StackPanel>
<StackPanel Orientation="Horizontal" IsEnabled="{Binding ShowLedColorPicker}">
<TextBlock MinWidth="75" MaxWidth="200" Text="{ext:Locale ControllerSettingsLedColor}" />
<TextBlock VerticalAlignment="Center" Text="{ext:Locale ControllerSettingsLedColor}" />
<ui:ColorPickerButton
Margin="5"
Margin="20,0,0,0"
IsMoreButtonVisible="False"
UseColorPalette="False"
UseColorTriangle="False"

View file

@ -11,145 +11,113 @@
x:Class="Ryujinx.Ava.UI.Views.Input.MotionInputView"
x:DataType="viewModels:MotionInputViewModel"
Focusable="True">
<Grid Margin="10" RowDefinitions="Auto,*">
<StackPanel Orientation="Vertical">
<StackPanel
Orientation="Horizontal"
HorizontalAlignment="Center">
<TextBlock
Margin="0"
HorizontalAlignment="Center"
Text="{ext:Locale ControllerSettingsMotionGyroSensitivity}" />
<controls:SliderScroll
Margin="0,-5,0,-5"
Width="150"
MaxWidth="150"
TickFrequency="1"
IsSnapToTickEnabled="True"
SmallChange="0.01"
Maximum="100"
Minimum="0"
Value="{Binding Sensitivity, Mode=TwoWay}" />
<TextBlock
HorizontalAlignment="Center"
Margin="5, 0"
Text="{Binding Sensitivity, StringFormat=\{0:0\}%}" />
</StackPanel>
<StackPanel
Orientation="Horizontal"
HorizontalAlignment="Center">
<TextBlock
Margin="0"
HorizontalAlignment="Center"
Text="{ext:Locale ControllerSettingsMotionGyroDeadzone}" />
<controls:SliderScroll
Margin="0,-5,0,-5"
Width="150"
MaxWidth="150"
TickFrequency="1"
IsSnapToTickEnabled="True"
SmallChange="0.01"
Maximum="100"
Minimum="0"
Value="{Binding GyroDeadzone, Mode=TwoWay}" />
<TextBlock
VerticalAlignment="Center"
Margin="5, 0"
Text="{Binding GyroDeadzone, StringFormat=\{0:0.00\}}" />
</StackPanel>
<Separator
Height="1"
Margin="0,5" />
<CheckBox
Margin="5"
IsChecked="{Binding EnableCemuHookMotion}">
<TextBlock
Margin="0,3,0,0"
VerticalAlignment="Center"
Text="{ext:Locale ControllerSettingsMotionUseCemuhookCompatibleMotion}" />
</CheckBox>
</StackPanel>
<Border
Grid.Row="1"
Padding="20,5"
BorderBrush="{DynamicResource ThemeControlBorderColor}"
BorderThickness="1"
CornerRadius="5"
HorizontalAlignment="Stretch">
<Grid VerticalAlignment="Top" RowDefinitions="Auto,*">
<StackPanel
Grid.Row="1"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Orientation="Vertical">
<StackPanel
HorizontalAlignment="Center"
VerticalAlignment="Center"
Orientation="Horizontal">
<TextBlock
Margin="5"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{ext:Locale ControllerSettingsMotionServerHost}" />
<TextBox
Height="30"
MinWidth="100"
MaxWidth="100"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{Binding DsuServerHost, Mode=TwoWay}" />
<TextBlock
Margin="5"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text=":" />
<TextBox
Height="30"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{Binding DsuServerPort, Mode=TwoWay}" />
</StackPanel>
<StackPanel Orientation="Vertical">
<Grid RowDefinitions="*,*" ColumnDefinitions="*,*">
<TextBlock
Margin="0,10,0,0"
VerticalAlignment="Center"
Text="{ext:Locale ControllerSettingsMotionControllerSlot}" />
<ui:NumberBox
Grid.Row="0"
Grid.Column="1"
Name="CemuHookSlotUpDown"
SmallChange="1"
LargeChange="1"
Maximum="4"
Minimum="0"
Value="{Binding Slot}" />
<TextBlock
Margin="0,10,0,0"
Grid.Row="1"
Grid.Column="0"
VerticalAlignment="Center"
Text="{ext:Locale ControllerSettingsMotionRightJoyConSlot}" />
<ui:NumberBox
Grid.Row="1"
Grid.Column="1"
Name="CemuHookRightJoyConSlotUpDown"
SmallChange="1"
LargeChange="1"
Maximum="4"
Minimum="0"
Value="{Binding AltSlot}" />
</Grid>
</StackPanel>
<CheckBox
HorizontalAlignment="Center"
IsChecked="{Binding MirrorInput, Mode=TwoWay}">
<TextBlock
HorizontalAlignment="Center"
Text="{ext:Locale ControllerSettingsMotionMirrorInput}" />
</CheckBox>
<StackPanel Orientation="Vertical">
<Grid Margin="10,0,10,0" RowDefinitions="Auto,Auto" ColumnDefinitions="Auto,*,45">
<TextBlock
Grid.Row="0"
Grid.Column="0"
VerticalAlignment="Center"
HorizontalAlignment="Center"
Margin="5,0,10,0"
Text="{ext:Locale ControllerSettingsMotionGyroSensitivity}" />
<controls:SliderScroll
Grid.Row="0"
Grid.Column="1"
VerticalAlignment="Center"
HorizontalAlignment="Center"
Width="150"
TickFrequency="1"
IsSnapToTickEnabled="True"
SmallChange="0.01"
Maximum="100"
Minimum="0"
Value="{Binding Sensitivity, Mode=TwoWay}" />
<TextBlock
Grid.Row="0"
Grid.Column="2"
Margin="5,0,0,1"
Text="{Binding Sensitivity, StringFormat=\{0:0\}%}" />
<TextBlock
Grid.Row="1"
Grid.Column="0"
VerticalAlignment="Center"
HorizontalAlignment="Center"
Margin="5,0,10,0"
Text="{ext:Locale ControllerSettingsMotionGyroDeadzone}" />
<controls:SliderScroll
Grid.Row="1"
Grid.Column="1"
VerticalAlignment="Center"
HorizontalAlignment="Center"
Width="150"
TickFrequency="1"
IsSnapToTickEnabled="True"
SmallChange="0.01"
Maximum="100"
Minimum="0"
Value="{Binding GyroDeadzone, Mode=TwoWay}" />
<TextBlock
Grid.Row="1"
Grid.Column="2"
Margin="5,0,0,1"
Text="{Binding GyroDeadzone, StringFormat=\{0:0.00\}}" />
</Grid>
<Separator Height="1" Margin="0,0,0,5" />
<CheckBox Margin="0,5,0,5" HorizontalAlignment="Center" IsChecked="{Binding EnableCemuHookMotion}">
<TextBlock VerticalAlignment="Center" Text="{ext:Locale ControllerSettingsMotionUseCemuhookCompatibleMotion}" />
</CheckBox>
<Border Padding="20,10,20,5" BorderBrush="{DynamicResource ThemeControlBorderColor}" BorderThickness="1" CornerRadius="5" HorizontalAlignment="Stretch">
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center" Orientation="Vertical">
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center" Orientation="Horizontal" Margin="0,0,0,7.5">
<TextBlock Margin="0,0,5,0" HorizontalAlignment="Center" VerticalAlignment="Center" Text="{ext:Locale ControllerSettingsMotionServerHost}" />
<TextBox Height="30" MinWidth="100" MaxWidth="100" HorizontalAlignment="Center" VerticalAlignment="Center" Text="{Binding DsuServerHost, Mode=TwoWay}" />
<TextBlock Margin="5" HorizontalAlignment="Center" VerticalAlignment="Center" Text=":" />
<TextBox Height="30" HorizontalAlignment="Center" VerticalAlignment="Center" Text="{Binding DsuServerPort, Mode=TwoWay}" />
</StackPanel>
</Grid>
<StackPanel Orientation="Vertical">
<Grid ColumnDefinitions="Auto,*,Auto" RowDefinitions="Auto,Auto" Margin="0,0,0,7.5">
<TextBlock
Grid.Column="0"
Grid.Row="0"
Margin="0,0,0,7.5"
VerticalAlignment="Center"
HorizontalAlignment="Center"
Text="{ext:Locale ControllerSettingsMotionControllerSlot}" />
<ui:NumberBox
Grid.Column="1"
Grid.Row="0"
Margin="0,0,0,7.5"
VerticalAlignment="Center"
HorizontalAlignment="Center"
Name="CemuHookSlotUpDown"
SmallChange="1"
LargeChange="1"
Maximum="4"
Minimum="0"
Value="{Binding Slot}" />
<TextBlock
Grid.Column="0"
Grid.Row="1"
VerticalAlignment="Center"
HorizontalAlignment="Center"
Text="{ext:Locale ControllerSettingsMotionRightJoyConSlot}" />
<ui:NumberBox
Grid.Column="1"
Grid.Row="1"
VerticalAlignment="Center"
HorizontalAlignment="Center"
Name="CemuHookRightJoyConSlotUpDown"
SmallChange="1"
LargeChange="1"
Maximum="4"
Minimum="0"
Value="{Binding AltSlot}" />
</Grid>
</StackPanel>
<CheckBox HorizontalAlignment="Center" IsChecked="{Binding MirrorInput, Mode=TwoWay}">
<TextBlock HorizontalAlignment="Center" Text="{ext:Locale ControllerSettingsMotionMirrorInput}" />
</CheckBox>
</StackPanel>
</Border>
</Grid>
</StackPanel>
</UserControl>

View file

@ -10,49 +10,46 @@
x:Class="Ryujinx.Ava.UI.Views.Input.RumbleInputView"
x:DataType="viewModels:RumbleInputViewModel"
Focusable="True">
<Grid Margin="10" RowDefinitions="Auto,*">
<StackPanel Orientation="Vertical">
<StackPanel Orientation="Horizontal">
<TextBlock
Width="100"
TextWrapping="WrapWithOverflow"
HorizontalAlignment="Center"
Text="{ext:Locale ControllerSettingsRumbleStrongMultiplier}" />
<controls:SliderScroll
Margin="0,-5,0,-5"
Width="200"
TickFrequency="0.01"
IsSnapToTickEnabled="True"
SmallChange="0.01"
Maximum="10"
Minimum="0"
Value="{Binding StrongRumble, Mode=TwoWay}" />
<TextBlock
VerticalAlignment="Center"
Margin="5,0"
Text="{Binding StrongRumble, StringFormat=\{0:0.00\}}" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock
Width="100"
TextWrapping="WrapWithOverflow"
HorizontalAlignment="Center"
Text="{ext:Locale ControllerSettingsRumbleWeakMultiplier}" />
<controls:SliderScroll
Margin="0,-5,0,-5"
Width="200"
MaxWidth="200"
Maximum="10"
TickFrequency="0.01"
IsSnapToTickEnabled="True"
SmallChange="0.01"
Minimum="0"
Value="{Binding WeakRumble, Mode=TwoWay}" />
<TextBlock
VerticalAlignment="Center"
Margin="5,0"
Text="{Binding WeakRumble, StringFormat=\{0:0.00\}}" />
</StackPanel>
</StackPanel>
<Grid Margin="10,10,10,0" RowDefinitions="Auto,Auto" ColumnDefinitions="Auto,*,45">
<TextBlock
Grid.Row="0"
Grid.Column="0"
Margin="0,0,10,0"
Text="{ext:Locale ControllerSettingsRumbleStrongMultiplier}" />
<controls:SliderScroll
Grid.Row="0"
Grid.Column="1"
Width="150"
TickFrequency="0.01"
IsSnapToTickEnabled="True"
SmallChange="0.01"
Maximum="10"
Minimum="0"
Value="{Binding StrongRumble, Mode=TwoWay}" />
<TextBlock
Grid.Row="0"
Grid.Column="2"
Margin="5,0,0,1"
Text="{Binding StrongRumble, StringFormat=\{0:0.00\}}" />
<TextBlock
Grid.Row="1"
Grid.Column="0"
Margin="0,0,10,0"
Text="{ext:Locale ControllerSettingsRumbleWeakMultiplier}" />
<controls:SliderScroll
Grid.Row="1"
Grid.Column="1"
Width="150"
Maximum="10"
TickFrequency="0.01"
IsSnapToTickEnabled="True"
SmallChange="0.01"
Minimum="0"
Value="{Binding WeakRumble, Mode=TwoWay}" />
<TextBlock
Grid.Row="1"
Grid.Column="2"
Margin="5,0,0,1"
Text="{Binding WeakRumble, StringFormat=\{0:0.00\}}" />
</Grid>
</UserControl>

View file

@ -43,6 +43,7 @@
Spacing="10">
<CheckBox
ToolTip.Tip="{ext:Locale UseGlobalInputTooltip}"
ToolTip.Placement="Right"
MinWidth="0"
IsChecked="{Binding UseGlobalInputConfig}">
<TextBlock
@ -50,6 +51,7 @@
</CheckBox>
<CheckBox
ToolTip.Tip="{ext:Locale DockModeToggleTooltip}"
ToolTip.Placement="Right"
MinWidth="0"
IsChecked="{Binding EnableDockedMode}">
<TextBlock
@ -57,12 +59,14 @@
</CheckBox>
<CheckBox
ToolTip.Tip="{ext:Locale DirectKeyboardTooltip}"
ToolTip.Placement="Right"
IsChecked="{Binding EnableKeyboard}">
<TextBlock
Text="{ext:Locale SettingsTabInputDirectKeyboardAccess}" />
</CheckBox>
<CheckBox
ToolTip.Tip="{ext:Locale DirectMouseTooltip}"
ToolTip.Placement="Right"
IsChecked="{Binding EnableMouse}">
<TextBlock
Text="{ext:Locale SettingsTabInputDirectMouseAccess}" />

View file

@ -164,8 +164,7 @@
ToolTip.Tip="{ext:Locale MatchTimeTooltip}">
<TextBlock
VerticalAlignment="Center"
Text="{ext:Locale SettingsTabSystemSystemTimeMatch}"
Width="250"/>
Text="{ext:Locale SettingsTabSystemSystemTimeMatch}" />
</CheckBox>
<TextBlock Classes="globalConfigMarker" IsVisible="{Binding IsGameTitleNotNull}"/>
</StackPanel>

View file

@ -29,6 +29,8 @@ namespace Ryujinx.Ava.UI.Windows
ConfigurationState.Instance.ShowOldUI
? NavigationViewPaneDisplayMode.Left
: NavigationViewPaneDisplayMode.Top;
NavPanel.IsPaneOpen = false;
Height = ConfigurationState.Instance.ShowOldUI
? 906

View file

@ -1,5 +1,7 @@
using Avalonia.Platform.Storage;
using Gommon;
using Ryujinx.Common.Utilities;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
@ -11,29 +13,42 @@ namespace Ryujinx.Ava.Utilities
extension(IStorageProvider storageProvider)
{
public Task<Optional<IStorageFolder>> OpenSingleFolderPickerAsync(FolderPickerOpenOptions openOptions = null) =>
storageProvider.OpenFolderPickerAsync(FixOpenOptions(openOptions, false))
CoreDumpable(() => storageProvider.OpenFolderPickerAsync(FixOpenOptions(openOptions, false)))
.Then(folders => folders.FindFirst());
public Task<Optional<IStorageFile>> OpenSingleFilePickerAsync(FilePickerOpenOptions openOptions = null) =>
storageProvider.OpenFilePickerAsync(FixOpenOptions(openOptions, false))
CoreDumpable(() => storageProvider.OpenFilePickerAsync(FixOpenOptions(openOptions, false)))
.Then(files => files.FindFirst());
public Task<Optional<IReadOnlyList<IStorageFolder>>> OpenMultiFolderPickerAsync(FolderPickerOpenOptions openOptions = null) =>
storageProvider.OpenFolderPickerAsync(FixOpenOptions(openOptions, true))
CoreDumpable(() => storageProvider.OpenFolderPickerAsync(FixOpenOptions(openOptions, true)))
.Then(folders => folders.Count > 0 ? Optional.Of(folders) : default);
public Task<Optional<IReadOnlyList<IStorageFile>>> OpenMultiFilePickerAsync(FilePickerOpenOptions openOptions = null) =>
storageProvider.OpenFilePickerAsync(FixOpenOptions(openOptions, true))
CoreDumpable(() => storageProvider.OpenFilePickerAsync(FixOpenOptions(openOptions, true)))
.Then(files => files.Count > 0 ? Optional.Of(files) : default);
}
private static async Task<T> CoreDumpable<T>(Func<Task<T>> picker)
{
OsUtils.SetCoreDumpable(true);
try
{
return await picker();
}
finally
{
if (!Program.CoreDumpArg)
OsUtils.SetCoreDumpable(false);
}
}
private static FilePickerOpenOptions FixOpenOptions(this FilePickerOpenOptions openOptions, bool allowMultiple)
{
if (openOptions is null)
return new FilePickerOpenOptions { AllowMultiple = allowMultiple };
openOptions.AllowMultiple = allowMultiple;
return openOptions;
}
@ -43,7 +58,6 @@ namespace Ryujinx.Ava.Utilities
return new FolderPickerOpenOptions { AllowMultiple = allowMultiple };
openOptions.AllowMultiple = allowMultiple;
return openOptions;
}
}