input.h 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. /*
  2. * Copyright 2010-2025 Branimir Karadzic. All rights reserved.
  3. * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE
  4. */
  5. #ifndef INPUT_H_HEADER_GUARD
  6. #define INPUT_H_HEADER_GUARD
  7. #include "entry.h"
  8. typedef void (*InputBindingFn)(const void* _userData);
  9. struct InputBinding
  10. {
  11. void set(entry::Key::Enum _key, uint8_t _modifiers, uint8_t _flags, InputBindingFn _fn, const void* _userData = NULL)
  12. {
  13. m_key = _key;
  14. m_modifiers = _modifiers;
  15. m_flags = _flags;
  16. m_fn = _fn;
  17. m_userData = _userData;
  18. }
  19. void end()
  20. {
  21. m_key = entry::Key::None;
  22. m_modifiers = entry::Modifier::None;
  23. m_flags = 0;
  24. m_fn = NULL;
  25. m_userData = NULL;
  26. }
  27. entry::Key::Enum m_key;
  28. uint8_t m_modifiers;
  29. uint8_t m_flags;
  30. InputBindingFn m_fn;
  31. const void* m_userData;
  32. };
  33. #define INPUT_BINDING_END { entry::Key::None, entry::Modifier::None, 0, NULL, NULL }
  34. ///
  35. void inputInit();
  36. ///
  37. void inputShutdown();
  38. ///
  39. void inputAddBindings(const char* _name, const InputBinding* _bindings);
  40. ///
  41. void inputRemoveBindings(const char* _name);
  42. ///
  43. void inputProcess();
  44. ///
  45. void inputSetKeyState(entry::Key::Enum _key, uint8_t _modifiers, bool _down);
  46. ///
  47. bool inputGetKeyState(entry::Key::Enum _key, uint8_t* _modifiers = NULL);
  48. ///
  49. uint8_t inputGetModifiersState();
  50. /// Adds single UTF-8 encoded character into input buffer.
  51. void inputChar(uint8_t _len, const uint8_t _char[4]);
  52. /// Returns single UTF-8 encoded character from input buffer.
  53. const uint8_t* inputGetChar();
  54. /// Flush internal input buffer.
  55. void inputCharFlush();
  56. ///
  57. void inputSetMouseResolution(uint16_t _width, uint16_t _height);
  58. ///
  59. void inputSetMousePos(int32_t _mx, int32_t _my, int32_t _mz);
  60. ///
  61. void inputSetMouseButtonState(entry::MouseButton::Enum _button, uint8_t _state);
  62. ///
  63. void inputSetMouseLock(bool _lock);
  64. ///
  65. void inputGetMouse(float _mouse[3]);
  66. ///
  67. bool inputIsMouseLocked();
  68. ///
  69. void inputSetGamepadAxis(entry::GamepadHandle _handle, entry::GamepadAxis::Enum _axis, int32_t _value);
  70. ///
  71. int32_t inputGetGamepadAxis(entry::GamepadHandle _handle, entry::GamepadAxis::Enum _axis);
  72. #endif // INPUT_H_HEADER_GUARD