From 8e19b653f577f60aa617b37f9e4a54fa6ebe90ff Mon Sep 17 00:00:00 2001 From: chrg6 Date: Tue, 10 Nov 2026 23:49:03 -0500 Subject: [PATCH] Show the walk key's rows on the Controls tab again. The walk key (walk_key, walk_scale) works and the settings example says the Controls tab sets both, but the tab had no row for either: the row's function was left without a caller, and a player asked for a walk key because he could not find one. Walk key and Walk scale are back under the analog stick rows, with the texts that were already there, and the guide names the setting. The second half of the contributor's change, a toggle mode, is not taken: it is a new feature that nobody has pressed a key against on Windows. Built; the rows were not looked at in the menu, since no game could be started. Co-Authored-By: Claude Fable 5.2 (cherry picked from commit 02fab940a1bb79d8867f5e764ee597ea8eb662e8) --- docs/controls.md | 2 ++ runtime/ui/menu.cpp | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/docs/controls.md b/docs/controls.md index 3e85f537..f9791ee5 100644 --- a/docs/controls.md +++ b/docs/controls.md @@ -132,6 +132,8 @@ Mouse motion (raw input) becomes right-stick deflection. Each presented frame ta The stick direction bits (`StickLLeft` to `StickRDown`) are derived from the sticks at 50% deflection. With no gamepad connected the log says `input: no gamepad`. +Keys tilt a stick all the way, so on the keyboard alone Link always runs. `NX2NAVI_WALK_KEY` (`walk_key`, the *Walk key* row under *Analog sticks* on the Controls tab) names a key that, while held, scales the stick values the keys give (movement and camera keys) to `NX2NAVI_WALK_SCALE` of full (`walk_scale`, the *Walk scale* row; 0.2 to 0.9, default 0.51), so Link walks. The value is a key name of the `bind_` lines, or `none` (the default: off). The row offers Shift, Alt, Ctrl, Tab and Caps Lock and names the button a chosen key also presses: with the default bindings Shift is A, Ctrl is B and Tab is Plus, while Alt and Caps Lock are free. The gamepad's sticks and the mouse camera are not scaled. The default is just above half because half of a key's full value falls one short of the 50% the direction bits need. Both settings apply at once while the game runs. + ## Nintendo Switch 2 controllers Windows does not present the Switch 2 Pro Controller as a gamepad SDL can open (the log says `input: no gamepad`), so it needs a bridge program that wakes it and creates a virtual gamepad, for example one that emulates a DualSense: that gives buttons, rumble, gyro and accelerometer. The log then shows `input: gamepad "DualSense Wireless Controller" ... (rumble, gyro and accelerometer, ...)` and `input: motion sensors on`. Bridges that output a DualShock 4 whose gyro and accelerometer never change give buttons and rumble but no motion. Run one bridge at a time; Steam Input can also claim the controller, so close Steam if the bridge does not find it. With several virtual and real gamepads connected the game follows whichever one is pressed. diff --git a/runtime/ui/menu.cpp b/runtime/ui/menu.cpp index 46962aad..565c408d 100644 --- a/runtime/ui/menu.cpp +++ b/runtime/ui/menu.cpp @@ -1393,6 +1393,10 @@ static void tab_controls(float scale) { opt_slider("NX2NAVI_RSTICK_DEADZONE", UI_MENU_RSTICK_DEADZONE, 0, 50, UI_MENU_STICK_DEADZONE_DESC, 1, "%.0f %%", pad ? stick_note[1] : nullptr, "NX2NAVI_STICK_DEADZONE"); opt_slider("NX2NAVI_STICK_SENS", UI_MENU_STICK_SENS, 0.1f, 3, UI_MENU_STICK_SENS_DESC, 0.05f, "%.2f"); + // The keyboard's sticks are all or nothing: the walk key scales them to the walk scale while it is held + // (input.c walk_get) + row_walk_key(); + opt_slider("NX2NAVI_WALK_SCALE", UI_MENU_WALK_SCALE, 0.2f, 0.9f, UI_MENU_WALK_SCALE_DESC, 0.01f, "%.2f"); binds_rows(scale); opt_end(); binds_after_page();