Fix controller text entry without native keyboards
This commit is contained in:
parent
57df54d82d
commit
abedd64782
5 changed files with 79 additions and 11 deletions
|
|
@ -189,9 +189,22 @@ func _run() -> void:
|
|||
accept_button.button_index = JOY_BUTTON_A
|
||||
accept_button.pressed = true
|
||||
assert(bool(game_ui.call("_handle_controller_chat_controls", accept_button)))
|
||||
assert(typed_chat_entry.virtual_keyboard_enabled)
|
||||
await process_frame
|
||||
assert(typed_chat_entry.has_focus())
|
||||
var ui_pixelation := main.get("_ui_pixelation") as UIPixelationPresenter
|
||||
assert(ui_pixelation != null)
|
||||
var on_screen_keyboard := ui_pixelation.get(
|
||||
"_on_screen_keyboard"
|
||||
) as OnScreenKeyboard
|
||||
assert(on_screen_keyboard != null)
|
||||
if DisplayServer.has_feature(DisplayServer.FEATURE_VIRTUAL_KEYBOARD):
|
||||
assert(typed_chat_entry.virtual_keyboard_enabled)
|
||||
assert(not on_screen_keyboard.is_open())
|
||||
await process_frame
|
||||
assert(typed_chat_entry.has_focus())
|
||||
else:
|
||||
assert(not typed_chat_entry.virtual_keyboard_enabled)
|
||||
assert(on_screen_keyboard.is_open())
|
||||
on_screen_keyboard.call("_close_keyboard", true)
|
||||
assert(typed_chat_entry.has_focus())
|
||||
var left_bumper := InputEventJoypadButton.new()
|
||||
left_bumper.button_index = JOY_BUTTON_LEFT_SHOULDER
|
||||
left_bumper.pressed = true
|
||||
|
|
|
|||
|
|
@ -20,6 +20,9 @@ func _run() -> void:
|
|||
func _validate_default_and_persistence() -> void:
|
||||
var defaults := PlayerSettings.new()
|
||||
assert(not defaults.on_screen_keyboard_enabled)
|
||||
assert(KeyboardType.should_enable_for_controller(false, false))
|
||||
assert(not KeyboardType.should_enable_for_controller(false, true))
|
||||
assert(KeyboardType.should_enable_for_controller(true, true))
|
||||
var manager := SettingsManagerType.new()
|
||||
root.add_child(manager)
|
||||
assert(manager.load_settings())
|
||||
|
|
@ -43,11 +46,24 @@ func _validate_keyboard_entry() -> void:
|
|||
var keyboard := KeyboardType.new()
|
||||
host.add_child(keyboard)
|
||||
await process_frame
|
||||
keyboard.set_enabled(true)
|
||||
edit.grab_focus()
|
||||
keyboard.set_enabled(false)
|
||||
assert(
|
||||
keyboard.is_enabled()
|
||||
== not DisplayServer.has_feature(
|
||||
DisplayServer.FEATURE_VIRTUAL_KEYBOARD
|
||||
)
|
||||
)
|
||||
var activate_event := InputEventJoypadButton.new()
|
||||
activate_event.button_index = JOY_BUTTON_A
|
||||
activate_event.pressed = true
|
||||
if keyboard.is_enabled():
|
||||
edit.grab_focus()
|
||||
keyboard.call("_input", activate_event)
|
||||
assert(keyboard.is_open())
|
||||
keyboard.call("_close_keyboard", true)
|
||||
assert(not keyboard.is_open())
|
||||
keyboard.set_enabled(true)
|
||||
edit.grab_focus()
|
||||
keyboard.call("_input", activate_event)
|
||||
assert(keyboard.is_open())
|
||||
keyboard.call("_type_character", "a")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue