Skip to content

Commit 3c4860a

Browse files
committed
Fix controller stick remap and tweak input remap icon sizes
1 parent ecfb26c commit 3c4860a

File tree

5 files changed

+43
-42
lines changed

5 files changed

+43
-42
lines changed

scenes/config/settings/InputSettings.gd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ func _on_ControllerButtonRemap_remap_done(key, old_button, new_button):
171171

172172
func _on_CNAxis_pressed(axis):
173173
var button := get_viewport().gui_get_focus_owner()
174-
var pos := button.global_position - Vector2(n_ctrl_button_remap_popup.size.x + 10, 0)
174+
var pos := button.get_global_transform_with_canvas().origin - Vector2(n_ctrl_button_remap_popup.size.x + 10, 0)
175175
n_ctrl_axis_remap_popup.start(axis, pos)
176176

177177
func _on_ControllerAxisRemap_remap_done(action, old_axis, new_axis):

scenes/config/settings/InputSettings.tscn

Lines changed: 22 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ size_flags_vertical = 0
115115
text = "Accept"
116116

117117
[node name="KBAccept" type="Button" parent="ScrollContainer/VBoxContainer/TabContainerHandler/InputTab/Keyboard/HBoxContainer/VBoxContainer/HBoxContainer"]
118-
custom_minimum_size = Vector2(48, 48)
118+
custom_minimum_size = Vector2(60, 60)
119119
layout_mode = 2
120120
tooltip_text = "Accept"
121121
focus_neighbor_left = NodePath("../../../../KBReset")
@@ -137,7 +137,7 @@ text = "Back
137137
"
138138

139139
[node name="KBBack" type="Button" parent="ScrollContainer/VBoxContainer/TabContainerHandler/InputTab/Keyboard/HBoxContainer/VBoxContainer/HBoxContainer2"]
140-
custom_minimum_size = Vector2(48, 48)
140+
custom_minimum_size = Vector2(60, 60)
141141
layout_mode = 2
142142
tooltip_text = "Back"
143143
focus_neighbor_right = NodePath("../../../VBoxContainer2/HBoxContainer2/KBMoveDown")
@@ -157,7 +157,7 @@ size_flags_vertical = 0
157157
text = "Major option"
158158

159159
[node name="KBMajorOpt" type="Button" parent="ScrollContainer/VBoxContainer/TabContainerHandler/InputTab/Keyboard/HBoxContainer/VBoxContainer/HBoxContainer3"]
160-
custom_minimum_size = Vector2(48, 48)
160+
custom_minimum_size = Vector2(60, 60)
161161
layout_mode = 2
162162
tooltip_text = "Major option"
163163
focus_neighbor_right = NodePath("../../../VBoxContainer2/HBoxContainer3/KBMoveLeft")
@@ -178,7 +178,7 @@ text = "Minor option
178178
"
179179

180180
[node name="KBMinorOpt" type="Button" parent="ScrollContainer/VBoxContainer/TabContainerHandler/InputTab/Keyboard/HBoxContainer/VBoxContainer/HBoxContainer4"]
181-
custom_minimum_size = Vector2(48, 48)
181+
custom_minimum_size = Vector2(60, 60)
182182
layout_mode = 2
183183
tooltip_text = "Minor option"
184184
focus_neighbor_right = NodePath("../../../VBoxContainer2/HBoxContainer4/KBMoveRight")
@@ -199,7 +199,7 @@ text = "RetroHub menu
199199
"
200200

201201
[node name="KBRetroHubMenu" type="Button" parent="ScrollContainer/VBoxContainer/TabContainerHandler/InputTab/Keyboard/HBoxContainer/VBoxContainer/HBoxContainer5"]
202-
custom_minimum_size = Vector2(48, 48)
202+
custom_minimum_size = Vector2(60, 60)
203203
layout_mode = 2
204204
tooltip_text = "RetroHub menu"
205205
focus_neighbor_right = NodePath("../../../VBoxContainer2/HBoxContainer5/KBSlideLeft")
@@ -219,7 +219,7 @@ size_flags_vertical = 0
219219
text = "Theme menu"
220220

221221
[node name="KBThemeMenu" type="Button" parent="ScrollContainer/VBoxContainer/TabContainerHandler/InputTab/Keyboard/HBoxContainer/VBoxContainer/HBoxContainer6"]
222-
custom_minimum_size = Vector2(48, 48)
222+
custom_minimum_size = Vector2(60, 60)
223223
layout_mode = 2
224224
tooltip_text = "Theme menu"
225225
focus_neighbor_right = NodePath("../../../VBoxContainer2/HBoxContainer6/KBSlideRight")
@@ -245,7 +245,7 @@ size_flags_vertical = 0
245245
text = "Move up"
246246

247247
[node name="KBMoveUp" type="Button" parent="ScrollContainer/VBoxContainer/TabContainerHandler/InputTab/Keyboard/HBoxContainer/VBoxContainer2/HBoxContainer"]
248-
custom_minimum_size = Vector2(48, 48)
248+
custom_minimum_size = Vector2(60, 60)
249249
layout_mode = 2
250250
tooltip_text = "Move up"
251251
icon = ExtResource("11")
@@ -264,7 +264,7 @@ size_flags_vertical = 0
264264
text = "Move down"
265265

266266
[node name="KBMoveDown" type="Button" parent="ScrollContainer/VBoxContainer/TabContainerHandler/InputTab/Keyboard/HBoxContainer/VBoxContainer2/HBoxContainer2"]
267-
custom_minimum_size = Vector2(48, 48)
267+
custom_minimum_size = Vector2(60, 60)
268268
layout_mode = 2
269269
tooltip_text = "Move down"
270270
focus_neighbor_left = NodePath("../../../VBoxContainer/HBoxContainer2/KBBack")
@@ -284,7 +284,7 @@ size_flags_vertical = 0
284284
text = "Move left"
285285

286286
[node name="KBMoveLeft" type="Button" parent="ScrollContainer/VBoxContainer/TabContainerHandler/InputTab/Keyboard/HBoxContainer/VBoxContainer2/HBoxContainer3"]
287-
custom_minimum_size = Vector2(48, 48)
287+
custom_minimum_size = Vector2(60, 60)
288288
layout_mode = 2
289289
tooltip_text = "Move left"
290290
focus_neighbor_left = NodePath("../../../VBoxContainer/HBoxContainer3/KBMajorOpt")
@@ -305,7 +305,7 @@ text = "Move right
305305
"
306306

307307
[node name="KBMoveRight" type="Button" parent="ScrollContainer/VBoxContainer/TabContainerHandler/InputTab/Keyboard/HBoxContainer/VBoxContainer2/HBoxContainer4"]
308-
custom_minimum_size = Vector2(48, 48)
308+
custom_minimum_size = Vector2(60, 60)
309309
layout_mode = 2
310310
tooltip_text = "Move right"
311311
focus_neighbor_left = NodePath("../../../VBoxContainer/HBoxContainer4/KBMinorOpt")
@@ -326,7 +326,7 @@ text = "Slide left
326326
"
327327

328328
[node name="KBSlideLeft" type="Button" parent="ScrollContainer/VBoxContainer/TabContainerHandler/InputTab/Keyboard/HBoxContainer/VBoxContainer2/HBoxContainer5"]
329-
custom_minimum_size = Vector2(48, 48)
329+
custom_minimum_size = Vector2(60, 60)
330330
layout_mode = 2
331331
tooltip_text = "Slide left"
332332
focus_neighbor_left = NodePath("../../../VBoxContainer/HBoxContainer5/KBRetroHubMenu")
@@ -346,7 +346,7 @@ size_flags_vertical = 0
346346
text = "Slide right"
347347

348348
[node name="KBSlideRight" type="Button" parent="ScrollContainer/VBoxContainer/TabContainerHandler/InputTab/Keyboard/HBoxContainer/VBoxContainer2/HBoxContainer6"]
349-
custom_minimum_size = Vector2(48, 48)
349+
custom_minimum_size = Vector2(60, 60)
350350
layout_mode = 2
351351
tooltip_text = "Slide right"
352352
focus_neighbor_left = NodePath("../../../VBoxContainer/HBoxContainer6/KBThemeMenu")
@@ -540,7 +540,7 @@ size_flags_vertical = 0
540540
text = "Accept"
541541

542542
[node name="CNAccept" type="Button" parent="ScrollContainer/VBoxContainer/TabContainerHandler/InputTab/Controller/HBoxContainer2/VBoxContainer/HBoxContainer"]
543-
custom_minimum_size = Vector2(48, 48)
543+
custom_minimum_size = Vector2(60, 60)
544544
layout_mode = 2
545545
tooltip_text = "Accept"
546546
focus_neighbor_right = NodePath("../../../VBoxContainer2/HBoxContainer6/CNThemeMenu")
@@ -561,7 +561,7 @@ text = "Back
561561
"
562562

563563
[node name="CNBack" type="Button" parent="ScrollContainer/VBoxContainer/TabContainerHandler/InputTab/Controller/HBoxContainer2/VBoxContainer/HBoxContainer2"]
564-
custom_minimum_size = Vector2(48, 48)
564+
custom_minimum_size = Vector2(60, 60)
565565
layout_mode = 2
566566
tooltip_text = "Back"
567567
focus_neighbor_right = NodePath("../../../VBoxContainer2/HBoxContainer/CNPrimaryMov")
@@ -581,7 +581,7 @@ size_flags_vertical = 0
581581
text = "Major option"
582582

583583
[node name="CNMajorOpt" type="Button" parent="ScrollContainer/VBoxContainer/TabContainerHandler/InputTab/Controller/HBoxContainer2/VBoxContainer/HBoxContainer3"]
584-
custom_minimum_size = Vector2(48, 48)
584+
custom_minimum_size = Vector2(60, 60)
585585
layout_mode = 2
586586
tooltip_text = "Major option"
587587
focus_neighbor_right = NodePath("../../../VBoxContainer2/HBoxContainer2/CNSecondaryMov")
@@ -602,7 +602,7 @@ text = "Minor option
602602
"
603603

604604
[node name="CNMinorOpt" type="Button" parent="ScrollContainer/VBoxContainer/TabContainerHandler/InputTab/Controller/HBoxContainer2/VBoxContainer/HBoxContainer4"]
605-
custom_minimum_size = Vector2(48, 48)
605+
custom_minimum_size = Vector2(60, 60)
606606
layout_mode = 2
607607
tooltip_text = "Minor option"
608608
focus_neighbor_right = NodePath("../../../VBoxContainer2/HBoxContainer3/CNSlideLeft")
@@ -623,7 +623,7 @@ text = "RetroHub menu
623623
"
624624

625625
[node name="CNRetroHubMenu" type="Button" parent="ScrollContainer/VBoxContainer/TabContainerHandler/InputTab/Controller/HBoxContainer2/VBoxContainer/HBoxContainer5"]
626-
custom_minimum_size = Vector2(48, 48)
626+
custom_minimum_size = Vector2(60, 60)
627627
layout_mode = 2
628628
tooltip_text = "RetroHub menu"
629629
focus_neighbor_right = NodePath("../../../VBoxContainer2/HBoxContainer4/CNSlideRight")
@@ -637,7 +637,6 @@ force_type = 2
637637
[node name="VBoxContainer2" type="VBoxContainer" parent="ScrollContainer/VBoxContainer/TabContainerHandler/InputTab/Controller/HBoxContainer2"]
638638
layout_mode = 2
639639
size_flags_horizontal = 3
640-
size_flags_vertical = 3
641640

642641
[node name="HBoxContainer6" type="HBoxContainer" parent="ScrollContainer/VBoxContainer/TabContainerHandler/InputTab/Controller/HBoxContainer2/VBoxContainer2"]
643642
layout_mode = 2
@@ -649,7 +648,7 @@ size_flags_vertical = 0
649648
text = "Theme menu"
650649

651650
[node name="CNThemeMenu" type="Button" parent="ScrollContainer/VBoxContainer/TabContainerHandler/InputTab/Controller/HBoxContainer2/VBoxContainer2/HBoxContainer6"]
652-
custom_minimum_size = Vector2(48, 48)
651+
custom_minimum_size = Vector2(60, 60)
653652
layout_mode = 2
654653
tooltip_text = "Theme menu"
655654
focus_neighbor_left = NodePath("../../../VBoxContainer/HBoxContainer/CNAccept")
@@ -670,7 +669,7 @@ text = "Main axis
670669
(movement/selection)"
671670

672671
[node name="CNPrimaryMov" type="Button" parent="ScrollContainer/VBoxContainer/TabContainerHandler/InputTab/Controller/HBoxContainer2/VBoxContainer2/HBoxContainer"]
673-
custom_minimum_size = Vector2(48, 48)
672+
custom_minimum_size = Vector2(60, 60)
674673
layout_mode = 2
675674
tooltip_text = "Main axis for movement and selection"
676675
focus_neighbor_left = NodePath("../../../VBoxContainer/HBoxContainer2/CNBack")
@@ -691,7 +690,7 @@ text = "Secondary axis
691690
(view/scroll)"
692691

693692
[node name="CNSecondaryMov" type="Button" parent="ScrollContainer/VBoxContainer/TabContainerHandler/InputTab/Controller/HBoxContainer2/VBoxContainer2/HBoxContainer2"]
694-
custom_minimum_size = Vector2(48, 48)
693+
custom_minimum_size = Vector2(60, 60)
695694
layout_mode = 2
696695
tooltip_text = "Secondary axis for viewing and scrolling"
697696
focus_neighbor_left = NodePath("../../../VBoxContainer/HBoxContainer3/CNMajorOpt")
@@ -712,7 +711,7 @@ text = "Slide left
712711
"
713712

714713
[node name="CNSlideLeft" type="Button" parent="ScrollContainer/VBoxContainer/TabContainerHandler/InputTab/Controller/HBoxContainer2/VBoxContainer2/HBoxContainer3"]
715-
custom_minimum_size = Vector2(48, 48)
714+
custom_minimum_size = Vector2(60, 60)
716715
layout_mode = 2
717716
tooltip_text = "Slide left"
718717
focus_neighbor_left = NodePath("../../../VBoxContainer/HBoxContainer4/CNMinorOpt")
@@ -732,7 +731,7 @@ size_flags_vertical = 0
732731
text = "Slide right"
733732

734733
[node name="CNSlideRight" type="Button" parent="ScrollContainer/VBoxContainer/TabContainerHandler/InputTab/Controller/HBoxContainer2/VBoxContainer2/HBoxContainer4"]
735-
custom_minimum_size = Vector2(48, 48)
734+
custom_minimum_size = Vector2(60, 60)
736735
layout_mode = 2
737736
tooltip_text = "Slide right"
738737
focus_neighbor_left = NodePath("../../../VBoxContainer/HBoxContainer5/CNRetroHubMenu")

scenes/config/settings/input/ControllerAxisRemap.gd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ func start(curr_action: String, pos: Vector2):
2424
var icon : Button = n_icons[map_idx]
2525
icon.disabled = true
2626
icon.focus_mode = Control.FOCUS_NONE
27-
focus_holder = icon
27+
focus_holder = n_icons[map_idx+1 if map_idx+1 < n_icons.size() else 0]
2828
else:
2929
focus_holder = n_icons[0]
3030

scenes/config/settings/input/ControllerAxisRemap.tscn

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ script = ExtResource("5")
1414
anchors_preset = 15
1515
anchor_right = 1.0
1616
anchor_bottom = 1.0
17-
offset_left = 8.0
18-
offset_top = 8.0
19-
offset_right = -8.0
20-
offset_bottom = -8.0
17+
offset_left = 4.0
18+
offset_top = 4.0
19+
offset_right = 112.0
20+
offset_bottom = 60.0
2121

2222
[node name="LStick" type="Button" parent="HBoxContainer"]
2323
unique_name_in_owner = true

source/Config.gd

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -113,21 +113,16 @@ func handle_key_remaps():
113113
InputMap.action_erase_event(key, ev)
114114
if key in _implicit_mappings:
115115
for impl_ev in InputMap.action_get_events(_implicit_mappings[key]):
116-
InputMap.action_erase_event(_implicit_mappings[key], impl_ev)
116+
if impl_ev is InputEventKey:
117+
InputMap.action_erase_event(_implicit_mappings[key], impl_ev)
117118
for code in keys[key]:
118-
handle_key_remap(key, KEY_NONE, code)
119+
handle_key_remap(key, code)
119120
if _implicit_mappings.has(key):
120-
handle_key_remap(_implicit_mappings[key], KEY_NONE, code)
121+
handle_key_remap(_implicit_mappings[key], code)
121122
# Signal ControllerIcons to update icons
122123
ControllerIcons.refresh()
123124

124-
func handle_key_remap(key: String, old: Key, new: Key):
125-
# Find existing actions to remove them first
126-
var events := InputMap.action_get_events(key)
127-
for e in events:
128-
if e is InputEventKey and _get_scancode(e) == old:
129-
InputMap.action_erase_event(key, e)
130-
break
125+
func handle_key_remap(key: String, new: Key):
131126
# ui_up/ui_down are replaced by ui_focus_next/ui_focus_prev when screen readers are enabled
132127
if RetroHubConfig.config.accessibility_screen_reader_enabled:
133128
match key:
@@ -145,10 +140,13 @@ func handle_controller_button_remaps():
145140
# Add implicit mappings as well (aka existing Godot actions that manage UI events)
146141
for key in keys:
147142
for ev in InputMap.action_get_events(key):
148-
if ev is InputEventJoypadButton or ev is InputEventJoypadMotion:
143+
# TODO: Figure out axis inputs
144+
if ev is InputEventJoypadButton:
149145
InputMap.action_erase_event(key, ev)
150146
if key in _implicit_mappings:
151-
InputMap.action_erase_event(_implicit_mappings[key], ev)
147+
for impl_ev in InputMap.action_get_events(_implicit_mappings[key]):
148+
if impl_ev is InputEventJoypadButton:
149+
InputMap.action_erase_event(_implicit_mappings[key], impl_ev)
152150
for button in keys[key]:
153151
handle_controller_button_remap(key, 0, button)
154152
if _implicit_mappings.has(key):
@@ -187,7 +185,9 @@ func handle_controller_axis_remaps():
187185
if ev is InputEventJoypadMotion:
188186
InputMap.action_erase_event(key, ev)
189187
if key in _implicit_mappings:
190-
InputMap.action_erase_event(_implicit_mappings[key], ev)
188+
for impl_ev in InputMap.action_get_events(_implicit_mappings[key]):
189+
if impl_ev is InputEventJoypadMotion:
190+
InputMap.action_erase_event(_implicit_mappings[key], impl_ev)
191191
var ev := InputEventJoypadMotion.new()
192192
ev.axis = data[key][0]
193193
ev.axis_value = data[key][1]
@@ -208,6 +208,8 @@ func handle_controller_axis_remaps():
208208
InputMap.action_add_event(_implicit_mappings[key], ev)
209209

210210
# Signal ControllerIcons to update icons
211+
for ev in InputMap.action_get_events("ui_left"):
212+
print(ev)
211213
ControllerIcons.refresh()
212214

213215
func handle_controller_button_remap(key: String, old: int, new: int):

0 commit comments

Comments
 (0)