UI: Settings → Input Updates (Improved)

Welcome to UI → Input Updates!

This MR updates the Input tab in Options → Settings → Input. This MR is an improved version of !160 (closed), and this has additional improvements (apart from being ready for merge).

MR consists of 2 parts:

  • Input tab UI overhaul
  • Input mapping label simplification

NOTE: This is NOT a feature MR - this MR simplifies and improves the UI/UX by fixing some visual issues. It does not improve any "features", such as JoyCon input mapping.

INPUT TAB UI OVERHAUL:
  • Top section (Player, Profile, Input Device, Controller Type) is compressed into a single row for a more compact UI
    • Spacing is adjusted for New UI, Classic UI, and Custom Game Configurations
    • Box labels were removed, with dropdown options clarified
    • “Modified” label was removed (users must press apply to save changes; as no dialog exists to confirm input changes, it is not needed)
  • Updated Controller Images:
    • Brought back original Ryujinx Pro Controller and JoyCon images with small adjustments
    • New images show actual button labels for easier mapping
      • Pro Controller has an overhead view for L/R/ZL/ZR buttons. JoyCon has an overhead and horizontal views to show SL/SR button positions (images below).
    • NOTE: MR also includes "Simplified" images, specifically for the Controller Applet. The "Simplified" images look similar to the current images, but are based on the new controller images (just with some elements removed). Controller Applet window was also given a subtle UI improvement
  • Classic Interface → Settings → Navigation Panel is now closed (by default).
    • Visually, it looks better closed, but it doesn’t impact UI/UX since navigation stays visible. Experienced users aren’t affected, and new users still understand the icons. Tab tooltips appear faster than regular ones, and new users can quickly expand and collapse the menu if needed. This change can be easily (and quickly) reverted if need be. There are further plans to add a checkbox in the interface tab to allow users to customise this behaviour.
    • Doesn't impact Custom Game Configuration navigation, as that is still open by default.
  • Renamed controller “Button” to “Press" (since sticks are "pressed")
    • “Stick” is now above “Press” 
  • Improved layout for Motion, Rumble, and LED settings.
    • Fixed LED options showing on controllers without LEDs (added "IsVisible" parameter).
  • Fixed tooltip flickering on macOS for Global Input, Docked Mode, and Direct Keyboard/Mouse Access by specifying tooltip placement
    • Flickering doesn’t occur on Windows or Linux (from my tests). Recent Avalonia updates partially improved this, but flickering still happens except when the cursor is positioned precisely, which can be tricky for some users.
  • Fixed "Global" label position on "Match System Time" in Custom Game Configurations
  • Locale improvements and general spacing and layout improvements

Before (Latest Canary):

Screenshot 2025-11-29 at 18.07.12.png

THIS MR:

Screenshot 2025-11-29 at 17.48.31.png

New JoyCon (Pair):

Screenshot 2025-10-12 at 03.35.55.png

New JoyCon (Left):

Screenshot 2025-10-12 at 03.36.37.png

New JoyCon (Right):

Screenshot 2025-10-12 at 03.37.01.png

Motion Settings (Before/After):

Motion Settings.jpeg

Rumble Settings (Before/After):

Rumble Settings.jpeg

LED Settings (Before/After):

LED Settings.jpeg

INPUT MAPPING SIMPLIFICATION:

This second part of this MR is about simplifying keyboard and controller input labels.

Why simplify labels:

  • Long labels can get cut off by fixed toggle box sizes (or forced into two rows).
  • Symbols provide clearer meaning than text in some cases.
  • Missing translations made labels unreadable for some users.

RPCS3 uses a mix of symbols and words in labels. Applied a similar approach here. Since Ryujinx has a language switcher, symbols that are likely to vary between keyboards were unchanged, while those that could be simplified without losing clarity were so.

Main changes:

  • Replacing some labels with Unicode symbols.
  • Standardizing label structure (e.g., Left shift, Right shift).
  • Removing unused locales.

UX is unaffected as users know their mappings or can easily remap to check labels. Changes were tested to ensure symbols remain clear without changing screen zoom or resolution.

CHANGES:

  • Shift, Ctrl, Control, Alt, Command, Windows keys were standardised.
    • Ex. Left shift key turned from "Shift Left" to "⇧ Left". "Shift Right" to "⇧ Right". Similarly for other keys.
  • Menu became "☰", since it's most similar to an actual menu key.
    • Was also used for the GamePadGuide (or "Home" button) as ☰ usually indicates a menu.
    • Menu key was added to the KeyValueConverter.cs
  • KeyUp/Down/Left/Right turned from words into arrow symbols: ↑, ↓, ←, →
  • Enter:
  • Escape: ⎋
  • Tab:
  • Backspace: ⌫ (Backspace was, for some reason, unable to be mapped, even though it had a label. This was changed.)
  • Insert standardised to "Insert" (where applicable)
  • Delete:
  • Page Up standardised to Pg. Up (where applicable)
  • Page Down standardised to Pg. Down (where applicable)
  • Home:  ↖️ (icon isn't the emoji - GitLab refuses to place the proper arrow)
  • End: ↘️ (icon isn't the emoji - GitLab refuses to place the proper arrow)
  • Caps Lock:
  • Print Screen standardised to PrtSc (where applicable)
  • Pause standardised to Pause (where applicable)
  • Clear:
  • Keypad keys standardised to include (#) (indicating key is on the number (#) pad)
  • Unbound was given locales
  • L Stick Button turned into LS ⌾, with the circle to indicate the "press" (the label for "Press" also has a circle to indicate this)
    • This was done as the labels are quite long.
    • This change is also applied to "R Stick Button".
  • Left/Right Shoulder: "L" or "R".
    • The other part !(new input mr) includes new images of the controllers, which have labeled buttons, and so it's easy to see what "L" actually is.
    • GamepadLeftTrigger/RightTrigger were turned into "ZL" and "ZR" as well.
  • GamePadMisc was given locales.
  • Paddle 1/2/3/4: X1/X2/X3/X4
    • Paddles are extra buttons. A symbol isn't appropriate, so it's best to use a character which users are already aware of, like - X, as well as a number to indicate that it's not the regular "X" button.
  • Touchpad locales were adjusted.
  • GamepadSingleLeftTrigger0/1 and GamepadSingleRightTrigger0/1 were turned into SL 0/1 and SR 0/1 for similar reasons.
  • StickLeft/StickRight turned into LS/RS for similar reasons.

REMOVALS (no references, unused, or replaced):

  • ControllerSettingsTriggersLeft, ControllerSettingsTriggersRight, ControllerSettingsTriggersButtonsLeft, ControllerSettingsTriggersButtonsRight, ControllerSettingsTriggers, ControllerSettingsExtraButtonsLeft, ControllerSettingsExtraButtonsRight
  • ControllerSettingsMisc - wasn't used; there's another misc. set.
  • GamePadDPad Left/Right/Up/Down replaced with Key Left/Right/Up/Down sets.
  • GamePadGuide replaced by KeyMenu set.

(Thank you @babib3l for helping with the testing of this MR!)

Edited by Neo

Merge request reports

Loading