30inline constexpr u8 kAxisDirections = 4;
32inline constexpr u8 kAxisKeysPerDirection = 2;
34inline constexpr u8 kMaxAxisKeyHalves = kAxisDirections * kAxisKeysPerDirection;
44 return static_cast<u8
>(alternate * kAxisDirections + direction + 1);
53 return static_cast<u8
>((axis_slot - 1) % kAxisDirections);
61 std::string_view description;
65 PadAxes
axes = PadAxes::kNone;
91 [[nodiscard]]
virtual size_t GetCount()
const = 0;
97 [[nodiscard]]
virtual std::span<const InputSource>
GetSources(
size_t binding)
const = 0;
116 virtual bool SetSources(
size_t binding, std::span<const InputSource> sources) = 0;
125 virtual bool Clear(
size_t binding) = 0;
134 virtual bool Reset(
size_t binding) = 0;
151 [[nodiscard]]
virtual std::optional<size_t>
FindConflict(
size_t binding,
161 std::string_view setting_name)
const = 0;
184 u32 pad_cancel_mask = (1u <<
static_cast<u32
>(PadInput::kLeftTrigger)) |
185 (1u <<
static_cast<u32
>(PadInput::kRightTrigger));
214 [[nodiscard]]
virtual std::optional<InputSource>
Poll(
215 std::chrono::steady_clock::time_point now = std::chrono::steady_clock::now()) = 0;
constexpr u8 GetAxisSlot(u8 direction, u8 alternate)
Definition binding.h:43
constexpr u8 GetAxisDirection(u8 axis_slot)
Definition binding.h:52
REX_HID_API std::span< const VirtualKey > GetBindableKeys()
Definition settings_registry.h:38
virtual std::optional< size_t > FindBySetting(std::string_view setting_name) const =0
virtual void Unregister()=0
virtual bool Clear(size_t binding)=0
virtual bool Reset(size_t binding)=0
virtual bool ResetGroup(u32 group)=0
virtual std::optional< size_t > FindConflict(size_t binding, const InputSource &source) const =0
virtual std::span< const InputSource > GetSources(size_t binding) const =0
virtual Result< void > Register(ISettingsRegistry &settings)=0
virtual bool SetSources(size_t binding, std::span< const InputSource > sources)=0
virtual std::vector< std::string > TakeParseErrors()=0
virtual u32 GetGeneration() const =0
virtual bool SetSource(size_t binding, size_t slot, const InputSource &source)=0
virtual void SetPadButtons(u32 buttons)=0
virtual bool IsPending() const =0
virtual std::optional< InputSource > Poll(std::chrono::steady_clock::time_point now=std::chrono::steady_clock::now())=0
virtual bool WasCanceled() const =0
std::expected< T, Error > Result
Definition result.h:98
The registry of every registered setting.
u32 group
Definition binding.h:63
std::string_view defaults
Definition binding.h:60
std::string_view name
Definition binding.h:58
PadAxes axes
Definition binding.h:65
std::chrono::milliseconds cancel_hold
Definition binding.h:182
Integer types, byte order wrappers and size literals.