mirror of
https://github.com/glfw/glfw.git
synced 2026-01-11 15:23:17 +01:00
Unlimited mouse button input mode
This adds the GLFW_UNLIMITED_MOUSE_BUTTONS input mode which permits mouse buttons over GLFW_MOUSE_BUTTON_LAST to be reported to the mouse button callback. Closes #2423
This commit is contained in:
@@ -492,6 +492,20 @@ a mouse button callback.
|
||||
glfwSetMouseButtonCallback(window, mouse_button_callback);
|
||||
```
|
||||
|
||||
@anchor GLFW_UNLIMITED_MOUSE_BUTTONS
|
||||
To handle all mouse buttons in the callback, instead of only ones with associated
|
||||
[button tokens](@ref buttons), set the @ref GLFW_UNLIMITED_MOUSE_BUTTONS
|
||||
input mode.
|
||||
|
||||
```c
|
||||
glfwSetInputMode(window, GLFW_UNLIMITED_MOUSE_BUTTONS, GLFW_TRUE);
|
||||
```
|
||||
|
||||
When this input mode is enabled, GLFW doesn't limit the reported mouse buttons
|
||||
to only those that have an associated button token, for compatibility with
|
||||
earlier versions of GLFW, which never reported any buttons over
|
||||
@ref GLFW_MOUSE_BUTTON_LAST, on which users could have relied on.
|
||||
|
||||
The callback function receives the [mouse button](@ref buttons), button action
|
||||
and [modifier bits](@ref mods).
|
||||
|
||||
@@ -503,11 +517,16 @@ void mouse_button_callback(GLFWwindow* window, int button, int action, int mods)
|
||||
}
|
||||
```
|
||||
|
||||
The mouse button is an integer that can be one of the
|
||||
[mouse button tokens](@ref buttons) or, if the
|
||||
@ref GLFW_UNLIMITED_MOUSE_BUTTONS input mode is set, any other positive value.
|
||||
|
||||
The action is one of `GLFW_PRESS` or `GLFW_RELEASE`.
|
||||
|
||||
The last reported state for every [supported mouse button](@ref buttons) is also
|
||||
The last reported state for every [mouse button token](@ref buttons) is also
|
||||
saved in per-window state arrays that can be polled with @ref
|
||||
glfwGetMouseButton.
|
||||
glfwGetMouseButton. This is not effected by the @ref GLFW_UNLIMITED_MOUSE_BUTTONS
|
||||
input mode.
|
||||
|
||||
```c
|
||||
int state = glfwGetMouseButton(window, GLFW_MOUSE_BUTTON_LEFT);
|
||||
@@ -540,7 +559,7 @@ had been processed in the meantime, the state will reset to `GLFW_RELEASE`,
|
||||
otherwise it will remain `GLFW_PRESS`.
|
||||
|
||||
The `GLFW_MOUSE_BUTTON_LAST` constant holds the highest value of any
|
||||
[supported mouse button](@ref buttons).
|
||||
[mouse button token](@ref buttons).
|
||||
|
||||
|
||||
### Scroll input {#scrolling}
|
||||
|
||||
11
docs/news.md
11
docs/news.md
@@ -5,6 +5,15 @@
|
||||
|
||||
## New features {#features}
|
||||
|
||||
### Unlimited mouse buttons {#unlimited_mouse_buttons}
|
||||
|
||||
GLFW now has an input mode which allows an unlimited number of mouse buttons to
|
||||
be reported by the mouse buttton callback, rather than just the associated
|
||||
[mouse button tokens](@ref buttons). This allows using mouse buttons with
|
||||
values over 8. For compatibility with older versions, the
|
||||
@ref GLFW_UNLIMITED_MOUSE_BUTTONS input mode needs to be set to make use of
|
||||
this.
|
||||
|
||||
## Caveats {#caveats}
|
||||
|
||||
## Deprecations {#deprecations}
|
||||
@@ -19,6 +28,8 @@
|
||||
|
||||
### New constants {#new_constants}
|
||||
|
||||
- @ref GLFW_UNLIMITED_MOUSE_BUTTONS
|
||||
|
||||
## Release notes for earlier versions {#news_archive}
|
||||
|
||||
- [Release notes for 3.4](https://www.glfw.org/docs/3.4/news.html)
|
||||
|
||||
Reference in New Issue
Block a user