mirror of
https://github.com/lightsoutgames/godot-accessibility.git
synced 2024-11-22 03:45:56 +00:00
Unify event generation to support both simple and keyfake strategies, using the latter on Android where necessary.
This commit is contained in:
parent
4281e3777d
commit
95bbbff780
|
@ -119,7 +119,17 @@ func _enter_tree():
|
||||||
connect("swipe_down", self, "swipe_down")
|
connect("swipe_down", self, "swipe_down")
|
||||||
|
|
||||||
|
|
||||||
func _press_and_release(action):
|
func _press_and_release(action, fake_via_keyboard = false):
|
||||||
|
if fake_via_keyboard:
|
||||||
|
for event in InputMap.get_action_list(action):
|
||||||
|
if event is InputEventKey:
|
||||||
|
event.pressed = true
|
||||||
|
Input.action_press(action)
|
||||||
|
get_tree().input_event(event)
|
||||||
|
event.pressed = false
|
||||||
|
Input.action_release(action)
|
||||||
|
get_tree().input_event(event)
|
||||||
|
return
|
||||||
var event = InputEventAction.new()
|
var event = InputEventAction.new()
|
||||||
event.action = action
|
event.action = action
|
||||||
event.pressed = true
|
event.pressed = true
|
||||||
|
@ -128,48 +138,42 @@ func _press_and_release(action):
|
||||||
get_tree().input_event(event)
|
get_tree().input_event(event)
|
||||||
|
|
||||||
|
|
||||||
func _send_via_keyboard(action):
|
func _ui_left(fake_via_keyboard = false):
|
||||||
for event in InputMap.get_action_list(action):
|
_press_and_release("ui_left", fake_via_keyboard)
|
||||||
if event is InputEventKey:
|
|
||||||
event.pressed = true
|
|
||||||
Input.action_press(action)
|
|
||||||
get_tree().input_event(event)
|
|
||||||
event.pressed = false
|
|
||||||
Input.action_release(action)
|
|
||||||
get_tree().input_event(event)
|
|
||||||
return
|
|
||||||
|
|
||||||
|
|
||||||
func _ui_left():
|
func _ui_right(fake_via_keyboard = false):
|
||||||
_send_via_keyboard("ui_left")
|
_press_and_release("ui_right", fake_via_keyboard)
|
||||||
|
|
||||||
|
|
||||||
func _ui_right():
|
func _ui_up(fake_via_keyboard = false):
|
||||||
_send_via_keyboard("ui_right")
|
_press_and_release("ui_up", fake_via_keyboard)
|
||||||
|
|
||||||
|
|
||||||
func _ui_up():
|
func _ui_down(fake_via_keyboard = false):
|
||||||
_send_via_keyboard("ui_up")
|
_press_and_release("ui_down", fake_via_keyboard)
|
||||||
|
|
||||||
|
|
||||||
func _ui_down():
|
func _ui_focus_next(fake_via_keyboard = false):
|
||||||
_send_via_keyboard("ui_down")
|
_press_and_release("ui_focus_next", fake_via_keyboard)
|
||||||
|
|
||||||
|
|
||||||
func _ui_focus_next():
|
func _ui_focus_prev(fake_via_keyboard = false):
|
||||||
_send_via_keyboard("ui_focus_next")
|
_press_and_release("ui_focus_prev", fake_via_keyboard)
|
||||||
|
|
||||||
|
|
||||||
func _ui_focus_prev():
|
|
||||||
_send_via_keyboard("ui_focus_prev")
|
|
||||||
|
|
||||||
|
|
||||||
func swipe_right():
|
func swipe_right():
|
||||||
_ui_focus_next()
|
var fake_via_keyboard = false
|
||||||
|
if OS.get_name() == "Android":
|
||||||
|
fake_via_keyboard = true
|
||||||
|
_ui_focus_next(fake_via_keyboard)
|
||||||
|
|
||||||
|
|
||||||
func swipe_left():
|
func swipe_left():
|
||||||
_ui_focus_prev()
|
var fake_via_keyboard = false
|
||||||
|
if OS.get_name() == "Android":
|
||||||
|
fake_via_keyboard = true
|
||||||
|
_ui_focus_prev(fake_via_keyboard)
|
||||||
|
|
||||||
|
|
||||||
func swipe_up():
|
func swipe_up():
|
||||||
|
@ -228,17 +232,17 @@ func _input(event):
|
||||||
return
|
return
|
||||||
in_focus_mode_handler = true
|
in_focus_mode_handler = true
|
||||||
if Input.is_action_just_pressed("ui_left"):
|
if Input.is_action_just_pressed("ui_left"):
|
||||||
_press_and_release("ui_left")
|
_ui_left()
|
||||||
elif Input.is_action_just_pressed("ui_right"):
|
elif Input.is_action_just_pressed("ui_right"):
|
||||||
_press_and_release("ui_right")
|
_ui_right()
|
||||||
elif Input.is_action_just_pressed("ui_up"):
|
elif Input.is_action_just_pressed("ui_up"):
|
||||||
_press_and_release("ui_up")
|
_ui_up()
|
||||||
elif Input.is_action_just_pressed("ui_down"):
|
elif Input.is_action_just_pressed("ui_down"):
|
||||||
_press_and_release("ui_down")
|
_ui_down()
|
||||||
elif Input.is_action_just_pressed("ui_focus_prev"):
|
elif Input.is_action_just_pressed("ui_focus_prev"):
|
||||||
_press_and_release("ui_focus_prev")
|
_ui_focus_prev()
|
||||||
elif Input.is_action_just_pressed("ui_focus_next"):
|
elif Input.is_action_just_pressed("ui_focus_next"):
|
||||||
_press_and_release("ui_focus_next")
|
_ui_focus_next()
|
||||||
get_tree().set_input_as_handled()
|
get_tree().set_input_as_handled()
|
||||||
in_focus_mode_handler = false
|
in_focus_mode_handler = false
|
||||||
return
|
return
|
||||||
|
|
Loading…
Reference in New Issue
Block a user