class_inputeventkey.rst 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357
  1. :github_url: hide
  2. .. DO NOT EDIT THIS FILE!!!
  3. .. Generated automatically from Godot engine sources.
  4. .. Generator: https://github.com/godotengine/godot/tree/master/doc/tools/make_rst.py.
  5. .. XML source: https://github.com/godotengine/godot/tree/master/doc/classes/InputEventKey.xml.
  6. .. _class_InputEventKey:
  7. InputEventKey
  8. =============
  9. **Inherits:** :ref:`InputEventWithModifiers<class_InputEventWithModifiers>` **<** :ref:`InputEventFromWindow<class_InputEventFromWindow>` **<** :ref:`InputEvent<class_InputEvent>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
  10. Represents a key on a keyboard being pressed or released.
  11. .. rst-class:: classref-introduction-group
  12. Description
  13. -----------
  14. An input event for keys on a keyboard. Supports key presses, key releases and :ref:`echo<class_InputEventKey_property_echo>` events. It can also be received in :ref:`Node._unhandled_key_input<class_Node_private_method__unhandled_key_input>`.
  15. \ **Note:** Events received from the keyboard usually have all properties set. Event mappings should have only one of the :ref:`keycode<class_InputEventKey_property_keycode>`, :ref:`physical_keycode<class_InputEventKey_property_physical_keycode>` or :ref:`unicode<class_InputEventKey_property_unicode>` set.
  16. When events are compared, properties are checked in the following priority - :ref:`keycode<class_InputEventKey_property_keycode>`, :ref:`physical_keycode<class_InputEventKey_property_physical_keycode>` and :ref:`unicode<class_InputEventKey_property_unicode>`. Events with the first matching value will be considered equal.
  17. .. rst-class:: classref-introduction-group
  18. Tutorials
  19. ---------
  20. - :doc:`Using InputEvent <../tutorials/inputs/inputevent>`
  21. .. rst-class:: classref-reftable-group
  22. Properties
  23. ----------
  24. .. table::
  25. :widths: auto
  26. +---------------------------------------------------+------------------------------------------------------------------------+-----------+
  27. | :ref:`bool<class_bool>` | :ref:`echo<class_InputEventKey_property_echo>` | ``false`` |
  28. +---------------------------------------------------+------------------------------------------------------------------------+-----------+
  29. | :ref:`Key<enum_@GlobalScope_Key>` | :ref:`key_label<class_InputEventKey_property_key_label>` | ``0`` |
  30. +---------------------------------------------------+------------------------------------------------------------------------+-----------+
  31. | :ref:`Key<enum_@GlobalScope_Key>` | :ref:`keycode<class_InputEventKey_property_keycode>` | ``0`` |
  32. +---------------------------------------------------+------------------------------------------------------------------------+-----------+
  33. | :ref:`KeyLocation<enum_@GlobalScope_KeyLocation>` | :ref:`location<class_InputEventKey_property_location>` | ``0`` |
  34. +---------------------------------------------------+------------------------------------------------------------------------+-----------+
  35. | :ref:`Key<enum_@GlobalScope_Key>` | :ref:`physical_keycode<class_InputEventKey_property_physical_keycode>` | ``0`` |
  36. +---------------------------------------------------+------------------------------------------------------------------------+-----------+
  37. | :ref:`bool<class_bool>` | :ref:`pressed<class_InputEventKey_property_pressed>` | ``false`` |
  38. +---------------------------------------------------+------------------------------------------------------------------------+-----------+
  39. | :ref:`int<class_int>` | :ref:`unicode<class_InputEventKey_property_unicode>` | ``0`` |
  40. +---------------------------------------------------+------------------------------------------------------------------------+-----------+
  41. .. rst-class:: classref-reftable-group
  42. Methods
  43. -------
  44. .. table::
  45. :widths: auto
  46. +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------+
  47. | :ref:`String<class_String>` | :ref:`as_text_key_label<class_InputEventKey_method_as_text_key_label>`\ (\ ) |const| |
  48. +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------+
  49. | :ref:`String<class_String>` | :ref:`as_text_keycode<class_InputEventKey_method_as_text_keycode>`\ (\ ) |const| |
  50. +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------+
  51. | :ref:`String<class_String>` | :ref:`as_text_location<class_InputEventKey_method_as_text_location>`\ (\ ) |const| |
  52. +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------+
  53. | :ref:`String<class_String>` | :ref:`as_text_physical_keycode<class_InputEventKey_method_as_text_physical_keycode>`\ (\ ) |const| |
  54. +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------+
  55. | :ref:`Key<enum_@GlobalScope_Key>` | :ref:`get_key_label_with_modifiers<class_InputEventKey_method_get_key_label_with_modifiers>`\ (\ ) |const| |
  56. +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------+
  57. | :ref:`Key<enum_@GlobalScope_Key>` | :ref:`get_keycode_with_modifiers<class_InputEventKey_method_get_keycode_with_modifiers>`\ (\ ) |const| |
  58. +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------+
  59. | :ref:`Key<enum_@GlobalScope_Key>` | :ref:`get_physical_keycode_with_modifiers<class_InputEventKey_method_get_physical_keycode_with_modifiers>`\ (\ ) |const| |
  60. +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------+
  61. .. rst-class:: classref-section-separator
  62. ----
  63. .. rst-class:: classref-descriptions-group
  64. Property Descriptions
  65. ---------------------
  66. .. _class_InputEventKey_property_echo:
  67. .. rst-class:: classref-property
  68. :ref:`bool<class_bool>` **echo** = ``false`` :ref:`🔗<class_InputEventKey_property_echo>`
  69. .. rst-class:: classref-property-setget
  70. - |void| **set_echo**\ (\ value\: :ref:`bool<class_bool>`\ )
  71. - :ref:`bool<class_bool>` **is_echo**\ (\ )
  72. If ``true``, the key was already pressed before this event. An echo event is a repeated key event sent when the user is holding down the key.
  73. \ **Note:** The rate at which echo events are sent is typically around 20 events per second (after holding down the key for roughly half a second). However, the key repeat delay/speed can be changed by the user or disabled entirely in the operating system settings. To ensure your project works correctly on all configurations, do not assume the user has a specific key repeat configuration in your project's behavior.
  74. .. rst-class:: classref-item-separator
  75. ----
  76. .. _class_InputEventKey_property_key_label:
  77. .. rst-class:: classref-property
  78. :ref:`Key<enum_@GlobalScope_Key>` **key_label** = ``0`` :ref:`🔗<class_InputEventKey_property_key_label>`
  79. .. rst-class:: classref-property-setget
  80. - |void| **set_key_label**\ (\ value\: :ref:`Key<enum_@GlobalScope_Key>`\ )
  81. - :ref:`Key<enum_@GlobalScope_Key>` **get_key_label**\ (\ )
  82. Represents the localized label printed on the key in the current keyboard layout, which corresponds to one of the :ref:`Key<enum_@GlobalScope_Key>` constants or any valid Unicode character.
  83. For keyboard layouts with a single label on the key, it is equivalent to :ref:`keycode<class_InputEventKey_property_keycode>`.
  84. To get a human-readable representation of the **InputEventKey**, use ``OS.get_keycode_string(event.key_label)`` where ``event`` is the **InputEventKey**.
  85. .. code:: text
  86. +-----+ +-----+
  87. | Q | | Q | - "Q" - keycode
  88. | Й | | ض | - "Й" and "ض" - key_label
  89. +-----+ +-----+
  90. .. rst-class:: classref-item-separator
  91. ----
  92. .. _class_InputEventKey_property_keycode:
  93. .. rst-class:: classref-property
  94. :ref:`Key<enum_@GlobalScope_Key>` **keycode** = ``0`` :ref:`🔗<class_InputEventKey_property_keycode>`
  95. .. rst-class:: classref-property-setget
  96. - |void| **set_keycode**\ (\ value\: :ref:`Key<enum_@GlobalScope_Key>`\ )
  97. - :ref:`Key<enum_@GlobalScope_Key>` **get_keycode**\ (\ )
  98. Latin label printed on the key in the current keyboard layout, which corresponds to one of the :ref:`Key<enum_@GlobalScope_Key>` constants.
  99. To get a human-readable representation of the **InputEventKey**, use ``OS.get_keycode_string(event.keycode)`` where ``event`` is the **InputEventKey**.
  100. .. code:: text
  101. +-----+ +-----+
  102. | Q | | Q | - "Q" - keycode
  103. | Й | | ض | - "Й" and "ض" - key_label
  104. +-----+ +-----+
  105. .. rst-class:: classref-item-separator
  106. ----
  107. .. _class_InputEventKey_property_location:
  108. .. rst-class:: classref-property
  109. :ref:`KeyLocation<enum_@GlobalScope_KeyLocation>` **location** = ``0`` :ref:`🔗<class_InputEventKey_property_location>`
  110. .. rst-class:: classref-property-setget
  111. - |void| **set_location**\ (\ value\: :ref:`KeyLocation<enum_@GlobalScope_KeyLocation>`\ )
  112. - :ref:`KeyLocation<enum_@GlobalScope_KeyLocation>` **get_location**\ (\ )
  113. Represents the location of a key which has both left and right versions, such as :kbd:`Shift` or :kbd:`Alt`.
  114. .. rst-class:: classref-item-separator
  115. ----
  116. .. _class_InputEventKey_property_physical_keycode:
  117. .. rst-class:: classref-property
  118. :ref:`Key<enum_@GlobalScope_Key>` **physical_keycode** = ``0`` :ref:`🔗<class_InputEventKey_property_physical_keycode>`
  119. .. rst-class:: classref-property-setget
  120. - |void| **set_physical_keycode**\ (\ value\: :ref:`Key<enum_@GlobalScope_Key>`\ )
  121. - :ref:`Key<enum_@GlobalScope_Key>` **get_physical_keycode**\ (\ )
  122. Represents the physical location of a key on the 101/102-key US QWERTY keyboard, which corresponds to one of the :ref:`Key<enum_@GlobalScope_Key>` constants.
  123. To get a human-readable representation of the **InputEventKey**, use :ref:`OS.get_keycode_string<class_OS_method_get_keycode_string>` in combination with :ref:`DisplayServer.keyboard_get_keycode_from_physical<class_DisplayServer_method_keyboard_get_keycode_from_physical>`:
  124. .. tabs::
  125. .. code-tab:: gdscript
  126. func _input(event):
  127. if event is InputEventKey:
  128. var keycode = DisplayServer.keyboard_get_keycode_from_physical(event.physical_keycode)
  129. print(OS.get_keycode_string(keycode))
  130. .. code-tab:: csharp
  131. public override void _Input(InputEvent @event)
  132. {
  133. if (@event is InputEventKey inputEventKey)
  134. {
  135. var keycode = DisplayServer.KeyboardGetKeycodeFromPhysical(inputEventKey.PhysicalKeycode);
  136. GD.Print(OS.GetKeycodeString(keycode));
  137. }
  138. }
  139. .. rst-class:: classref-item-separator
  140. ----
  141. .. _class_InputEventKey_property_pressed:
  142. .. rst-class:: classref-property
  143. :ref:`bool<class_bool>` **pressed** = ``false`` :ref:`🔗<class_InputEventKey_property_pressed>`
  144. .. rst-class:: classref-property-setget
  145. - |void| **set_pressed**\ (\ value\: :ref:`bool<class_bool>`\ )
  146. - :ref:`bool<class_bool>` **is_pressed**\ (\ )
  147. If ``true``, the key's state is pressed. If ``false``, the key's state is released.
  148. .. rst-class:: classref-item-separator
  149. ----
  150. .. _class_InputEventKey_property_unicode:
  151. .. rst-class:: classref-property
  152. :ref:`int<class_int>` **unicode** = ``0`` :ref:`🔗<class_InputEventKey_property_unicode>`
  153. .. rst-class:: classref-property-setget
  154. - |void| **set_unicode**\ (\ value\: :ref:`int<class_int>`\ )
  155. - :ref:`int<class_int>` **get_unicode**\ (\ )
  156. The key Unicode character code (when relevant), shifted by modifier keys. Unicode character codes for composite characters and complex scripts may not be available unless IME input mode is active. See :ref:`Window.set_ime_active<class_Window_method_set_ime_active>` for more information.
  157. .. rst-class:: classref-section-separator
  158. ----
  159. .. rst-class:: classref-descriptions-group
  160. Method Descriptions
  161. -------------------
  162. .. _class_InputEventKey_method_as_text_key_label:
  163. .. rst-class:: classref-method
  164. :ref:`String<class_String>` **as_text_key_label**\ (\ ) |const| :ref:`🔗<class_InputEventKey_method_as_text_key_label>`
  165. Returns a :ref:`String<class_String>` representation of the event's :ref:`key_label<class_InputEventKey_property_key_label>` and modifiers.
  166. .. rst-class:: classref-item-separator
  167. ----
  168. .. _class_InputEventKey_method_as_text_keycode:
  169. .. rst-class:: classref-method
  170. :ref:`String<class_String>` **as_text_keycode**\ (\ ) |const| :ref:`🔗<class_InputEventKey_method_as_text_keycode>`
  171. Returns a :ref:`String<class_String>` representation of the event's :ref:`keycode<class_InputEventKey_property_keycode>` and modifiers.
  172. .. rst-class:: classref-item-separator
  173. ----
  174. .. _class_InputEventKey_method_as_text_location:
  175. .. rst-class:: classref-method
  176. :ref:`String<class_String>` **as_text_location**\ (\ ) |const| :ref:`🔗<class_InputEventKey_method_as_text_location>`
  177. Returns a :ref:`String<class_String>` representation of the event's :ref:`location<class_InputEventKey_property_location>`. This will be a blank string if the event is not specific to a location.
  178. .. rst-class:: classref-item-separator
  179. ----
  180. .. _class_InputEventKey_method_as_text_physical_keycode:
  181. .. rst-class:: classref-method
  182. :ref:`String<class_String>` **as_text_physical_keycode**\ (\ ) |const| :ref:`🔗<class_InputEventKey_method_as_text_physical_keycode>`
  183. Returns a :ref:`String<class_String>` representation of the event's :ref:`physical_keycode<class_InputEventKey_property_physical_keycode>` and modifiers.
  184. .. rst-class:: classref-item-separator
  185. ----
  186. .. _class_InputEventKey_method_get_key_label_with_modifiers:
  187. .. rst-class:: classref-method
  188. :ref:`Key<enum_@GlobalScope_Key>` **get_key_label_with_modifiers**\ (\ ) |const| :ref:`🔗<class_InputEventKey_method_get_key_label_with_modifiers>`
  189. Returns the localized key label combined with modifier keys such as :kbd:`Shift` or :kbd:`Alt`. See also :ref:`InputEventWithModifiers<class_InputEventWithModifiers>`.
  190. To get a human-readable representation of the **InputEventKey** with modifiers, use ``OS.get_keycode_string(event.get_key_label_with_modifiers())`` where ``event`` is the **InputEventKey**.
  191. .. rst-class:: classref-item-separator
  192. ----
  193. .. _class_InputEventKey_method_get_keycode_with_modifiers:
  194. .. rst-class:: classref-method
  195. :ref:`Key<enum_@GlobalScope_Key>` **get_keycode_with_modifiers**\ (\ ) |const| :ref:`🔗<class_InputEventKey_method_get_keycode_with_modifiers>`
  196. Returns the Latin keycode combined with modifier keys such as :kbd:`Shift` or :kbd:`Alt`. See also :ref:`InputEventWithModifiers<class_InputEventWithModifiers>`.
  197. To get a human-readable representation of the **InputEventKey** with modifiers, use ``OS.get_keycode_string(event.get_keycode_with_modifiers())`` where ``event`` is the **InputEventKey**.
  198. .. rst-class:: classref-item-separator
  199. ----
  200. .. _class_InputEventKey_method_get_physical_keycode_with_modifiers:
  201. .. rst-class:: classref-method
  202. :ref:`Key<enum_@GlobalScope_Key>` **get_physical_keycode_with_modifiers**\ (\ ) |const| :ref:`🔗<class_InputEventKey_method_get_physical_keycode_with_modifiers>`
  203. Returns the physical keycode combined with modifier keys such as :kbd:`Shift` or :kbd:`Alt`. See also :ref:`InputEventWithModifiers<class_InputEventWithModifiers>`.
  204. To get a human-readable representation of the **InputEventKey** with modifiers, use ``OS.get_keycode_string(event.get_physical_keycode_with_modifiers())`` where ``event`` is the **InputEventKey**.
  205. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
  206. .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
  207. .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
  208. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
  209. .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
  210. .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`
  211. .. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)`
  212. .. |void| replace:: :abbr:`void (No return value.)`