Add physical_scancode (keyboard layout independent keycodes) to InputEventKey and InputMap.

Fix non-latin keyboard layout keycodes on Linux/X11 (fallback to physical keycodes).
This commit is contained in:
bruvzg
2021-03-07 17:16:42 +02:00
parent 63391f645c
commit dab4cf3ed6
28 changed files with 458 additions and 35 deletions

View File

@@ -10,6 +10,14 @@
<link>https://docs.godotengine.org/en/3.3/tutorials/inputs/inputevent.html</link>
</tutorials>
<methods>
<method name="get_physical_scancode_with_modifiers" qualifiers="const">
<return type="int">
</return>
<description>
Returns the physical scancode combined with modifier keys such as [code]Shift[/code] or [code]Alt[/code]. See also [InputEventWithModifiers].
To get a human-readable representation of the [InputEventKey] with modifiers, use [code]OS.get_scancode_string(event.get_physical_scancode_with_modifiers())[/code] where [code]event[/code] is the [InputEventKey].
</description>
</method>
<method name="get_scancode_with_modifiers" qualifiers="const">
<return type="int">
</return>
@@ -23,11 +31,15 @@
<member name="echo" type="bool" setter="set_echo" getter="is_echo" default="false">
If [code]true[/code], the key was already pressed before this event. It means the user is holding the key down.
</member>
<member name="physical_scancode" type="int" setter="set_physical_scancode" getter="get_physical_scancode" default="0">
Key physical scancode, which corresponds to one of the [enum KeyList] constants. Represent the physical location of a key on the 101/102-key US QWERTY keyboard.
To get a human-readable representation of the [InputEventKey], use [code]OS.get_scancode_string(event.physical_scancode)[/code] where [code]event[/code] is the [InputEventKey].
</member>
<member name="pressed" type="bool" setter="set_pressed" getter="is_pressed" default="false">
If [code]true[/code], the key's state is pressed. If [code]false[/code], the key's state is released.
</member>
<member name="scancode" type="int" setter="set_scancode" getter="get_scancode" default="0">
The key scancode, which corresponds to one of the [enum KeyList] constants.
The key scancode, which corresponds to one of the [enum KeyList] constants. Represent key in the current keyboard layout.
To get a human-readable representation of the [InputEventKey], use [code]OS.get_scancode_string(event.scancode)[/code] where [code]event[/code] is the [InputEventKey].
</member>
<member name="unicode" type="int" setter="set_unicode" getter="get_unicode" default="0">