输入检测、格式化与图标¶
GFInputDetector 可放进改键界面中检测下一次输入。它通过 DetectionState 区分空闲、倒计时、预清理、正式检测和检测后清理阶段,wait_for_clear_before_detection 可避免“打开改键界面的确认键”立刻被记录,wait_for_clear_after_detection 可让项目等候检测到的按键或轴释放后再提交结果。
GFInputFormatter 提供轻量文本格式化,便于设置界面展示当前绑定。Joypad 默认会通过 GFInputDeviceTextProvider 输出抽象方位文本,例如 Button South、Left Stick X,也可通过 options 或注册自定义 GFInputTextProvider 替换为平台图标、图标字体或本地化文本。
需要 RichTextLabel 图标输出时,可继承 GFInputIconProvider 把输入事件映射为项目自己的 Texture2D 或 BBCode,input_event_as_rich_text() 会优先使用图标 provider,再回退到文本。GFInputIconAtlasProvider 是内置的可配置图标 provider:它把按键、鼠标、手柄按钮和手柄轴归一化成 key:k、mouse:left、joy_button:south、joy_axis:left_x_positive 这类通用键,再通过显式路径、纹理映射或 {root}/{style}/{platform}/{icon}.png 模板解析图标。
var icons := GFInputIconAtlasProvider.new()
icons.root_path = "res://ui/input_icons"
icons.style = &"line"
icons.platform = &"generic"
icons.set_icon_path(&"key:space", "res://ui/input_icons/line/generic/key_space.png")
GFInputFormatter.add_icon_provider(icons)
var rich_text := GFInputFormatter.input_event_as_rich_text(jump_binding.input_event)
图标 provider 不附带任何图片资源,也不规定平台品牌、按钮文案或美术风格。项目可以用 icon_paths 精确映射少量按钮,也可以用路径模板批量组织素材;split_key_modifiers 会把 Ctrl/Shift/Alt/Meta 组合键拆成多个图标,便于设置界面显示。
GFInputConflictAnalyzer 可在保存重绑定前检查同一上下文或跨上下文的有效输入冲突,也可以通过 build_rebind_report() 一次性获取有效绑定条目和冲突列表。它只读取资源和重映射配置,不接管运行时输入逻辑。编辑器中的 GFInputMappingDock 渲染 GF Workspace > Input 页面,复用同一套资源与冲突分析能力,用标准校验报告字段描述 GFInputContext 中的动作、绑定和结构问题;页面只读查看资源,不保存项目按键配置,也不规定输入设置界面布局。