class
Opal::UI::InputRemapper
- Opal::UI::InputRemapper
- Opal::UI::Control
- Opal::UI::Element
- Reference
- Object
Overview
Interactive Input Remapping UI Control for Opal TUIs and Lapis (Godot 4.8) game settings. Supports category tabs, live Press-Any-Key/Mouse capture modal, multi-slot bindings (Primary / Secondary), conflict detection badges, fuzzy search filtering, deadzone adjustment, DualShock/Xbox/Generic gamepad glyphs, and WCAG contrast-compliant theme integration.
Defined in:
opal/ui/components/input_remapper.crConstructors
- .new(model : Input::Core::InputRemapModel | Nil = nil, title : String = "Input Remapping", show_border : Bool = true, show_categories : Bool = true, show_deadzone : Bool = true, border_style : Symbol | Border = :rounded, width : Int32 | Nil = 68, height : Int32 | Nil = 18)
-
.new(title : String = "Input Remapping", conflict_policy : Input::Core::ConflictPolicy | Symbol | String = :allow, gamepad_style : Input::Core::GamepadStyle | Symbol | String = :dualshock, max_slots : Int32 = 2, show_border : Bool = true, show_categories : Bool = true, show_deadzone : Bool = true, width : Int32 | Nil = 68, height : Int32 | Nil = 18, &) : InputRemapper
Instantiates an InputRemapper with a declarative InputRemapBuilder block.
Instance Method Summary
- #active_border_color : Color | Nil
- #active_border_color=(active_border_color : Color | Nil)
- #active_slot : Int32
- #active_slot=(active_slot : Int32)
- #adjust_deadzone(delta : Float32) : Nil
- #apply_captured_binding(binding : Input::Core::InputBinding) : Bool
- #border_color : Color | Nil
- #border_color=(border_color : Color | Nil)
- #border_style : Symbol | Border
- #border_style=(border_style : Symbol | Border)
- #cancel_capture : Nil
-
#capture_gamepad(button_or_axis : String) : Bool
Simulates capturing a gamepad button/axis input directly (useful for Lapis/Citrine gamepad bridge & testing).
-
#capturing=(capturing : Bool)
Interactive states
-
#capturing? : Bool
Interactive states
-
#category_tabs : Array(String | Nil)
Returns all category tab names (
nilrepresents "All"). - #clear_selected_slot : Bool
- #confirmed=(confirmed : Bool)
- #confirmed? : Bool
- #cursor : Int32
- #cursor=(cursor : Int32)
- #cycle_gamepad_style : Nil
- #filtering=(filtering : Bool)
- #filtering? : Bool
-
#handle_key(key : Terminal::KeyEvent) : Bool
Default key event handler.
-
#handle_mouse(event : Terminal::MouseEvent) : Bool
Default mouse event handler.
- #height : Int32
- #height=(height : Int32)
- #last_h : Int32
- #last_h=(last_h : Int32)
- #last_w : Int32
- #last_w=(last_w : Int32)
- #last_x : Int32
- #last_x=(last_x : Int32)
- #last_y : Int32
- #last_y=(last_y : Int32)
- #model : Input::Core::InputRemapModel
- #model=(model : Input::Core::InputRemapModel)
-
#move_cursor(delta : Int32) : Nil
Navigation & Action API
- #move_slot(delta : Int32) : Nil
- #next_category : Nil
-
#on_change : Proc(Input::Core::InputRemapModel, Nil) | Nil
Callbacks
-
#on_change=(on_change : Proc(Input::Core::InputRemapModel, Nil) | Nil)
Callbacks
- #on_confirm : Proc(Input::Core::InputRemapModel, Nil) | Nil
- #on_confirm=(on_confirm : Proc(Input::Core::InputRemapModel, Nil) | Nil)
- #on_conflict : Proc(Array(Input::Core::BindingConflict), Nil) | Nil
- #on_conflict=(on_conflict : Proc(Array(Input::Core::BindingConflict), Nil) | Nil)
- #on_rebind : Proc(Input::Core::InputAction, Int32, Input::Core::InputBinding, Nil) | Nil
- #on_rebind=(on_rebind : Proc(Input::Core::InputAction, Int32, Input::Core::InputBinding, Nil) | Nil)
-
#preferred_print_size(available_w : Int32) : Tuple(Int32, Int32)
Returns the preferred size for one-shot print mode rendering, where height should expand to fit all content rather than clamping to viewport rows.
- #preferred_size(available_w : Int32, available_h : Int32) : Tuple(Int32, Int32)
- #prev_category : Nil
- #query : String
- #query=(query : String)
- #render(buffer : Buffer, x : Int32, y : Int32, width : Int32, height : Int32) : Nil
- #render(buffer : Buffer) : Nil
- #reset_all_actions : Bool
- #reset_selected_action : Bool
-
#selected_action : Input::Core::InputAction | Nil
Returns currently highlighted InputAction, or nil if visible list is empty.
- #selected_category : String | Nil
- #selected_category=(selected_category : String | Nil)
- #show_border=(show_border : Bool)
- #show_border? : Bool
- #show_categories=(show_categories : Bool)
- #show_categories? : Bool
- #show_deadzone=(show_deadzone : Bool)
- #show_deadzone? : Bool
- #start_capture : Bool
-
#status_message : String | Nil
Status feedback toast
-
#status_message=(status_message : String | Nil)
Status feedback toast
-
#title : String
Visual configuration
-
#title=(title : String)
Visual configuration
-
#visible_actions : Array(Input::Core::InputAction)
Returns actions filtered by the active category tab and fuzzy search query.
-
#width : Int32
Geometry & layout cache for mouse interaction
-
#width=(width : Int32)
Geometry & layout cache for mouse interaction
Constructor methods inherited from class Opal::UI::Control
new
new
Instance methods inherited from module Opal::UI::InputHookable
custom_inputs=(custom_inputs : Bool)
custom_inputs=,
custom_inputs? : Bool
custom_inputs?,
default_input_proc : Proc(InputEvent, Bool) | Nil
default_input_proc,
default_input_proc=(default_input_proc : Proc(InputEvent, Bool) | Nil)
default_input_proc=,
fallback_to_defaults!(enabled : Bool = true) : self
fallback_to_defaults!,
fallback_to_defaults=(fallback_to_defaults : Bool)
fallback_to_defaults=,
fallback_to_defaults? : Bool
fallback_to_defaults?,
focus : self
focus,
focused=(focused : Bool)
focused=,
focused? : Bool
focused?,
handle_default_input(event : InputEvent) : Bool
handle_default_input,
handle_input(event : InputEvent) : Bool
handle_input,
handle_key(key : Terminal::KeyEvent) : Bool
handle_key,
handle_mouse(event : Terminal::MouseEvent) : Bool
handle_mouse,
input_hook : Proc(InputEvent, Bool) | Nil
input_hook,
input_hook=(input_hook : Proc(InputEvent, Bool) | Nil)
input_hook=,
on_input(&block : self, InputEvent -> Bool) : self
on_input,
puppet(&block : self, InputEvent -> Bool) : self
puppet,
reset_inputs : self
reset_inputs,
setup_default_inputs : Nil
setup_default_inputs,
unfocus : self
unfocus,
use_custom_inputs!(enabled : Bool = true) : self
use_custom_inputs!
Instance methods inherited from class Opal::UI::Element
add_class(name : String) : self
add_class,
children : Array(Element)
children,
classes : Set(String)
classes,
classes=(classes : Set(String))
classes=,
has_class?(name : String) : Bool
has_class?,
id : String | Nil
id,
id=(id : String | Nil)
id=,
preferred_print_size(available_w : Int32) : Tuple(Int32, Int32)
preferred_print_size,
preferred_size(available_w : Int32, available_h : Int32) : Tuple(Int32, Int32)
preferred_size,
print(io : IO = STDOUT, width : Int32 | Nil = nil, color : Bool | Nil = nil, theme : Theme | Nil = nil) : Nil
print,
query(selector : String) : Array(Element)query(klass : T.class) : Array(T) forall T query, query_one(selector : String) : Element
query_one(klass : T.class) : T forall T query_one, query_one?(selector : String) : Element | Nil
query_one?(klass : T.class) : T | Nil forall T query_one?, remove_class(name : String) : self remove_class, render(buffer : Buffer, x : Int32, y : Int32, width : Int32, height : Int32) : Nil render, render_print(buffer : Buffer, width : Int32, height : Int32) : Nil render_print, to_print_s(width : Int32 | Nil = nil, color : Bool | Nil = nil, theme : Theme | Nil = nil) : String to_print_s, to_string(width : Int32 | Nil = nil, color : Bool | Nil = nil, theme : Theme | Nil = nil) : String to_string
Instance methods inherited from module Opal::UI::Themable
current_theme : Theme
current_theme,
style(&block : self -> Nil) : self
style,
theme : Theme | Nil
theme,
theme=(theme : Theme | Nil)
theme=,
with_theme(new_theme : Theme | Symbol | String) : self
with_theme
Constructor Detail
Instantiates an InputRemapper with a declarative InputRemapBuilder block.
Instance Method Detail
Simulates capturing a gamepad button/axis input directly (useful for Lapis/Citrine gamepad bridge & testing).
Default key event handler. Override in subclasses if not using @default_input_proc.
Default mouse event handler. Override in subclasses if not using @default_input_proc.
Returns the preferred size for one-shot print mode rendering, where height should expand to fit all content rather than clamping to viewport rows.
Returns currently highlighted InputAction, or nil if visible list is empty.
Returns actions filtered by the active category tab and fuzzy search query.