input: Implement software button areas (disabled by default)

input touchpad settings header:
- software button areas (enabled by default)
- Emulation of buttons clicks based on which small area
  assinged by each button is pressed. For instance, a
  software button area on the bottom of the touchpad
  could be divided on 3 subareas one for each button.

This new feature is useful for clickpads that are input devices
lacking a separated set of buttons from the touch area. However,
we may prefer to make the GUI better suppot "single button" devices.
Disabled by default as we don't currently have a way to adjust the
default settings according to the presence of physical buttons,
and having this disabled yields an OK experience on all machines.
Having the soft buttons in addition to physical buttons would just
be too strange.

input preflet:
- Implement software button areas

input mouse:
- Handle and provide new settings for software button areas

input mouse mm:
- Implement software button areas in the user space
- At the moment only a bottom located software button area
  simulating 3 different buttons is enabled.
  There is a working implementation 2 buttons only but not
  enabled in the code base.
  TODO for other type of software button areas is there.

Change-Id: I255cb1a7eac0d18064c63a2a0d4b158be7370a17
Reviewed-on: https://review.haiku-os.org/c/haiku/+/9922
Reviewed-by: Adrien Destugues <[email protected]>
This commit is contained in:
Samuel Rodríguez Pérez
2026-01-02 11:01:29 +00:00
committed by Adrien Destugues
parent 696c694dbb
commit f44235f7e5
7 changed files with 89 additions and 10 deletions
+4 -1
View File
@@ -33,6 +33,8 @@ typedef struct {
// 0x02: edge motion on tap drag
// 0x04: edge motion on button click move
// 0x08: edge motion on button click drag
bool software_button_areas;
} touchpad_settings;
@@ -50,7 +52,8 @@ const static touchpad_settings kDefaultTouchpadSettings = {
65536,
false,
true,
0x02
0x02,
false
};
#define TOUCHPAD_SETTINGS_FILE "Touchpad_settings"