Commit Graph
68455 Commits
Author SHA1 Message Date
Christof Meerwald 5fed29dcb0 IPv6: implement multicast support
* Copied and adapted deliver_multicast from IPv4

* However, we still need special handling for the Neighbor Discovery
  Protocol as there is no associated socket. So for now we just pass
  any multicast ICMPv6 packets to the ICMPv6 module's receive_data
  that in turn passes it to the NDP module.

Change-Id: Idc9db0ec2132dffcf65c3b767dd1e428c44b27ba
Reviewed-on: https://review.haiku-os.org/c/haiku/+/10169
Reviewed-by: Jérôme Duval <[email protected]>
Reviewed-by: waddlesplash <[email protected]>
Tested-by: Commit checker robot <[email protected]>
2026-01-08 20:17:42 +00:00
Augustin Cavalier 04ebf3d669 libroot: Appease GCC2 for strtok_r. 2026-01-07 18:23:43 -05:00
Augustin Cavalier da0529e546 kernel/team: Add set_foreground_process_group failure case with EPERM.
As specified in POSIX.

Fixes Sortix os-test/tcsetpgrp-wrong-session, part of #19877.
2026-01-07 18:18:36 -05:00
Augustin Cavalier 35061cc3cb limits.h: Add missing _POSIX2_CHARCLASS_NAME_MAX. 2026-01-07 17:08:43 -05:00
Augustin Cavalier 713e7b2c54 locale: Implement getlocalename_l.
Specified in POSIX-2024.

GNUlib currently has a nasty Haiku-specific hack to implement
equivalent functionality; after this it should be able to use
this function instead.
2026-01-07 16:27:46 -05:00
Augustin Cavalier 571ec77bf1 kernel: Add new strtok_r.c to the Jamfile. 2026-01-07 16:05:27 -05:00
Augustin Cavalier 95b41d5986 libroot/posix: Replace strtok_r with musl's.
And rewrite/cleanup strtok.c also.
2026-01-07 16:04:18 -05:00
Augustin Cavalier ac46a180d8 kernel/fs: Check if the existing node is a directory in create_vnode.
Otherwise, calling open(O_CREAT) on a path that exists but is
a directory will succeed.

Fixes Sortix os-test open-tmpdir-rdonly-creat. (Interestingly
many other OSes also fail this test; only Linux, FreeBSD, Solaris,
and Sortix, and now also Haiku, properly return EISDIR.)

While at it, fix the doc comment, which appears to have been
copied from open_vnode.
2026-01-07 14:02:46 -05:00
Humdinger a75b98ed11 DriveSetup: Use clearer file dialog titles + button labels
It's a good idea to be more descriptive in those file dialogs'
window title and button labels. That way you can be sure the
file dialog does what you intended.
Esp. using "Write" for the button that starts writing an image
onto a volume.

Change-Id: I0ddb71aae1962d107b8d848d772541366c6bba36
Reviewed-on: https://review.haiku-os.org/c/haiku/+/10215
Reviewed-by: Adrien Destugues <[email protected]>
Tested-by: Commit checker robot <[email protected]>
2026-01-07 17:49:52 +00:00
PulkoMandy b31ff5b650 ImageRules: remove dependency on bc
POSIX shell now supports $((expression)) for arithmetic expression
evaluation. This removes the need for an external command, which may not
be available on the build host.

Change-Id: Ibd1342c723c2320d77c4de5b1620be32086daa56
Reviewed-on: https://review.haiku-os.org/c/haiku/+/9238
Reviewed-by: Adrien Destugues <[email protected]>
Tested-by: Commit checker robot <[email protected]>
2026-01-07 13:06:57 +00:00
Augustin Cavalier a76a638355 uname: C89 fix to appease GCC2. 2026-01-06 19:57:18 -05:00
Augustin Cavalier b0570368f3 limits.h: Clean up and fix _POSIX_* values.
These aren't actual limits, but rather the minimum limit
as specified in POSIX (e.g. _POSIX_NAME_MAX is the minimum
allowed value for NAME_MAX).

Add missing values as defined in POSIX-2024, at least for
features we support, and change wrong values to be the ones
specified in POSIX.

No behavioral intended change (nothing should be using these directly.)
2026-01-06 19:57:07 -05:00
Augustin Cavalier d763a3829a semaphore.h: Add SEM_VALUE_MAX.
It's specified in POSIX, and FreeBSD puts it in this file.

Distinguish it from _POSIX_SEM_VALUE_MAX (which is really a
"minimum value this can have" as specified in POSIX.)
2026-01-06 19:40:23 -05:00
Augustin Cavalier ca5c5d531e unistd: Add _POSIX_DEVICE_CONTROL.
We have posix_devctl, so we should declare this now.
2026-01-06 19:38:49 -05:00
Augustin Cavalier 1e4c529aeb search.h: Declare posix_tnode as specified in POSIX-2024.
FreeBSD does the same.
2026-01-06 19:37:53 -05:00
Augustin Cavalier f869860377 kernel: Return B_HAIKU_VERSION for kernel_version & handle it in uname().
We have returned "1" here since this code was originally written
in 2004 (hrev7290). BeOS R5 apparently returns "1000009" for this
value, while the Be Book gives no details about what this value means.

So, return an actually useful value of the Haiku version, and then
in uname() process this to return a string indicating the Haiku
version. This makes "uname" print the actual system version,
not just the hrev.

It appears Linux and other systems give non-integer values in
info->release, so this should be fine.

Fixes #17030.
2026-01-06 19:30:44 -05:00
Augustin Cavalier 6a1ad86129 Debugger: Fix jobs trying to re-add dependencies.
Linked lists are used to manage these, so if we re-add
jobs we'll corrupt the linked lists and cause crashes.

Fixes #19864 and possibly others.
2026-01-06 18:01:24 -05:00
Dancsó Róbert 327215ce38 DriveSetup: add "disk image menu"
Allows to register and unregister disk images, as well as backup a
partition to an image or restore an image to a partition.

Change-Id: I4e377b1d521ceb7a91e1a5c0d1bb3d37b24fcd68
Reviewed-on: https://review.haiku-os.org/c/haiku/+/330
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: Adrien Destugues <[email protected]>
2026-01-06 21:28:27 +00:00
Christof Meerwald 68c1d4b3a8 IPv6: Path MTU Discovery
* Copied and adapted IPv4 error handling code for IPv6 (to handle
  ICMP6_PACKET_TOO_BIG)

Change-Id: Id14cf6221626b5c723fbe77f19aa0d6b9d25f36a
Reviewed-on: https://review.haiku-os.org/c/haiku/+/10170
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: waddlesplash <[email protected]>
2026-01-06 21:25:16 +00:00
Oscar Lesta ed66661307 Use B_DEV_NAME_LENGTH instead of 128, where appropiate.
Kind of a follow up, after 9d432d1b00.

Change-Id: Id8e0c18216ef505a7698044ecd04a69219008a4e
Reviewed-on: https://review.haiku-os.org/c/haiku/+/10213
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: waddlesplash <[email protected]>
2026-01-06 21:24:42 +00:00
Augustin Cavalier 708d8e42c3 ps2: Disable v2.
It isn't working properly; see #19874.

Leave the others enable for testing for now. We can disable them
in the beta6 branch if necessary (if nobody reports that they are
indeed working.)
2026-01-06 16:24:03 -05:00
Kacper Kasper d620b23279 Implement missing methods in PictureBoundingBoxPlayer
* Remove const from gradient in StrokeLineGradient.
  BoundingBoxPlayer needs to apply transform to it.
* Extend LayersTest.
* Use BStackOrHeapArray for polygons.
* Fixes #12937.

Change-Id: If0a4abec0168dbe9afe7ea92bb29017ea8c89c79
Reviewed-on: https://review.haiku-os.org/c/haiku/+/10211
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: waddlesplash <[email protected]>
2026-01-06 21:22:30 +00:00
PulkoMandy a65ba286ee PoseView: improve drag bitmap computations
Tracker creates a drag bitmap containing the selection being dragged.
There is a size limit if the selection is too large to avoid moving a
huge bitmap around.

There were two problems with the way this was done:

- The smaller rectangle was always centered on the cursor, even if that
  was near the edge of the selection being dragged. In that situation,
  most of the drag bitmap would end up being empty. Instead, move the
  rectangle to align it with the edges of the selection if it goes
  outside them. This makes sure we always use as much of the drag
  rectangle as possible for useful data.
- Moreover, there was a regression on the rendering of the
  "fade" at the edge of the rectangle. This is a transparency gradient
  that should be at the edge only, to indicate that the drag bitmap has
  been truncated, and that more (invisible) things are also being
  dragged. In hrev58665, this transparency gradient was changed to cover
  the entire width and height of the dragged bitmap, instead of just the
  edge. This lead to most of the text being almost invisible in a lot of
  cases. Change the code to use a gradient only near edges again.

Fixes #19429.

Change-Id: I395fda191dc61732e4bdc5287a09882cdc2b5f55
Reviewed-on: https://review.haiku-os.org/c/haiku/+/10177
Reviewed-by: John Scipione <[email protected]>
Reviewed-by: waddlesplash <[email protected]>
Tested-by: Commit checker robot <[email protected]>
2026-01-06 13:29:09 +00:00
Oscar Lesta 95225b150f fs_shell: use FSSH_B_DEV_NAME_LENGTH instead of 128.
Follow up to 9d432d1b00.

Change-Id: Ie7013573a0682058849e84aa939bc38a821f3ae6
Reviewed-on: https://review.haiku-os.org/c/haiku/+/10209
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: waddlesplash <[email protected]>
2026-01-06 13:28:44 +00:00
X512 2a4448e033 PicturePlayer: Use C++ virtual interface instead of C function table
Also use C function table instead of `void*` table function casts.

Improve type safety and readability.

Change-Id: Ie5f544b5c2bb9f2333fe3353462325dbfb4453ec
Reviewed-on: https://review.haiku-os.org/c/haiku/+/9656
Reviewed-by: Adrien Destugues <[email protected]>
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: waddlesplash <[email protected]>
2026-01-04 22:56:43 +00:00
X512 ceaf2dd2d6 app_server: add gradient stroke support
TODO: HTML5 remote desktop client.

Change-Id: Ie2a32c4a498462578476d29a7000ea0b6f86810b
Reviewed-on: https://review.haiku-os.org/c/haiku/+/9625
Reviewed-by: waddlesplash <[email protected]>
2026-01-04 22:56:43 +00:00
beaglejoe 3f38072551 Fix platform.h for C compilation
Allow platform.h to be used by POC files

Change-Id: I809749422e12f4c4b2c616ca0994b158f3cd054c
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4251
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: Adrien Destugues <[email protected]>
2026-01-04 07:24:21 +00:00
SED4906 64f088f495 BAlert: play user-selected sound
* Alert sounds are separate from notifications

Change-Id: I9e5545084faea354ddd339154c10b54d6479b404
Reviewed-on: https://review.haiku-os.org/c/haiku/+/8477
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: Adrien Destugues <[email protected]>
2026-01-03 13:41:24 +00:00
Autocomitter f081c0202d Update translations from Pootle 2026-01-03 08:12:43 +00:00
Nathan Patrizi 6f8c212378 Kernel: Fix write overlay handling of existing directories
* Write overlay will check if a directory being created already
  exists. This fixes an issue where creating a directory that already
  exists and is empty would remove and recreate it
  instead of returning a directory exists error.
* Check if file exists when creating with O_EXCL and VFS did not catch it.
* Add check to Open() to check and fail correctly if we are opening a
  non-directory with O_DIRECTORY. Fixes error when trying to copy/move a
  file over another (with cp/mv).
* Correctly return file exists when creating a symlink that already
  exists.

Fixes #19640

Change-Id: I82f65d06db0f2ba3cd8facbf7114af60d6987a95
Reviewed-on: https://review.haiku-os.org/c/haiku/+/10172
Reviewed-by: waddlesplash <[email protected]>
2026-01-02 22:47:12 +00:00
Lt-Henry 8323a6694e i2c_hid: some fixes and improvements
* input reports are no longer requested, devices send them when available and we only have to wait for interrupt to come. This is written on Microsoft i2c hid reference document. In fact, as some devices may have more than one input report (ie: trackpad and fallback mouse), we were requesting (and receiving) an input report for each of them. Worse than that, our driver was missassigning reports to handlers.
* fix: i2c report type did not match specification
* implemented send feature report
* The driver sets the device to fallback mode (mouse emulation). This is a short/mid term solution, because right now we can't handle multi-touch trackpads properly. On some laptops this feature is there but ignores request.
* The driver fetches a windows 8 blob (if available). It looks like some devices refuses to work if this blob (I think is a certificate) is not fetched.
* Should we reset the device at Open()?

* Some style fixes
* Added some comments and links where things become ugly
* Some refactor is still missing

Change-Id: Ibb73e0d9dfa7184d35ed8f2adf377c277c53ce18
Reviewed-on: https://review.haiku-os.org/c/haiku/+/8942
Reviewed-by: Adrien Destugues <[email protected]>
2026-01-02 22:42:26 +00:00
nipos 5c1e12f601 Installer: Scale EULA window for HiDPI
Fixes #16182

Change-Id: I05f7394a1276772eb2c1882cfb340389cde8fcb1
Reviewed-on: https://review.haiku-os.org/c/haiku/+/9385
Reviewed-by: John Scipione <[email protected]>
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: Adrien Destugues <[email protected]>
Reviewed-by: nephele nephele <[email protected]>
2026-01-02 20:27:33 +00:00
Jim906 be9bccd08f Tracker: expand use of mime sniffer
* Add Model::SniffMimeIfNeeded as a faster alternative to
  Model::Mimeset, useful for ensuring that Model::fMimeType is
  initialized regardless of whether the filesystem supports MIME.
* Use SniffMimeIfNeeded when the user interacts with a file.
* Change the return value of Model::Mimeset to match the comment in
  Model.h, although currently no client functions pay attention to the
  return value.
* Fixes #19284.

The SniffMimeIfNeeded calls provide the following behavior:
* AddOneRefSignatures - Populate Open With
* SearchForSignatureEntryList::Relation - Populate Open With
* SearchForSignatureEntryList::RelationDescription - Populate Open
  With descriptions (e.g. "Preferred for Text file").
* TTracker::OpenInfoWindows - Set up Get Info window

Change-Id: Icd0aa98781e191d3f804235b0ab8acfdbe47582d
Reviewed-on: https://review.haiku-os.org/c/haiku/+/9683
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: Adrien Destugues <[email protected]>
2026-01-02 16:32:15 +00:00
cafeina 0681754858 Haiku Book: Added MailAttachment, MailDaemon and mail_encoding
Modified book, MailComponent and TextMailComponent to add libmail group.

Change-Id: I958ff0188c5ae33745bff061ee24e80d5af7845f
Reviewed-on: https://review.haiku-os.org/c/haiku/+/8683
Reviewed-by: Adrien Destugues <[email protected]>
2026-01-02 12:33:49 +00:00
Samuel Rodríguez Pérez f3ba3dd008 ps/2 elantech: Enable v4 devices
Missing are v1, v2, and v3 devices that will
be enabled in separated commits.

This should help fixing the following tickets:
  #5179,  #5604,  #7755,  #9154,  #9173,
  #10059, #12669, #15340, #15729,
and perhaps many others.

Change-Id: I0cae0e1a61fc7f5a7304983170148681ebd8fe09
Reviewed-on: https://review.haiku-os.org/c/haiku/+/10015
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: Adrien Destugues <[email protected]>
2026-01-02 11:01:29 +00:00
Samuel Rodríguez Pérez 2c81764326 ps/2 elantech: add finger hack with TODO to remove it later
Add finger hack to simulate statuses on finger width based
on synaptic hardware and TODO to remove this in the future
when those flags are splited out from finger with values
on all devices and on user space.

Change-Id: Iecba7612ad7041bb948132754c4ea263c9b331ac
Reviewed-on: https://review.haiku-os.org/c/haiku/+/9957
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: Adrien Destugues <[email protected]>
2026-01-02 11:01:29 +00:00
Samuel Rodríguez Pérez 494ae23c3d ps/2 elantech: trackpoint support (untested)
Threat trackpoint packets to mouse_movement values instead of
touchpad_movement. This required changes on ioctl handling
effectely making this as kind of hybrid device which reports
back MS_READ events for touchpad and MS_READ_TOUCHPAD for
touchpad related processed packets.
The logic is similar to the ioctl and movement handling
funtions of the Haiku ps/2 alps driver.

Packet descriptions based on FreeBSD 14.3 psm driver.
Constant bit checks based on FreeBSD 14.3 psm driver.
Packet processing code based on OpenBSD 7.8 pms driver with variable
naming adjustments to match FreeBSD and Haiku.

Change-Id: I42b62ccbb410060cceba4f17d299c7daf0c38b66
Reviewed-on: https://review.haiku-os.org/c/haiku/+/9956
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: Adrien Destugues <[email protected]>
2026-01-02 11:01:29 +00:00
Samuel Rodríguez Pérez cf37429032 ps/2 elantech: v1 support (untested)
Packet description information taken from Linux documentation
and formated matching on FreeBSD 14.3 driver entries.
Introduce parity check and other packet validations.
Packet processing code based on OpenBSD 7.8 pms driver with variable
naming adjustments to match FreeBSD and Haiku.
Fix packet size and supporting reg functions.

Change-Id: Iad2d0856a1f9bc7291c7e4f6f8a81c2ddb9f58a4
Reviewed-on: https://review.haiku-os.org/c/haiku/+/9955
Reviewed-by: Adrien Destugues <[email protected]>
2026-01-02 11:01:29 +00:00
Samuel Rodríguez Pérez 44e945d9cd ps/2 elantech: v2 support (untested)
Packet descriptions based on FreeBSD 14.3 psm driver.
Constant bit checks based on FreeBSD psm.c and Linux drivers.
Packet processing code based on OpenBSD 7.8 pms driver with variable
naming adjustments to match FreeBSD and Haiku.
Complete get_rage for v2 devices based on Linux driver.
Special middle button handling for EF113 devices handled by compile
time options being the default to report middle button instead of
left and right pressed at the same time.

Change-Id: Ic23e9a889987a5f150af57c13f8c3b5244b747f5
Reviewed-on: https://review.haiku-os.org/c/haiku/+/9954
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: Adrien Destugues <[email protected]>
2026-01-02 11:01:29 +00:00
Samuel Rodríguez Pérez 35e407488a ps/2 elantech: v3 support (untested)
Trackpoint related packets are ignored as of now.
Packet description and validations based on FreeBSD 14.3 psm driver.
Packet processing code based on OpenBSD 7.8 pms driver with variable
naming adjustments to match FreeBSD and Haiku.
Excluded v3 faulty devices as described on Linux ETPS/2 driver.

Change-Id: I5493128557b72fe72f0ea72e225854b745da459a
Reviewed-on: https://review.haiku-os.org/c/haiku/+/9953
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: Adrien Destugues <[email protected]>
2026-01-02 11:01:29 +00:00
Samuel Rodríguez Pérez 42c5c30bc7 ps/2 elantech: v4 - implement v4 (funtional)
v4 - HEAD packet: Handling of finger id 0 only

Process finger id 0 keeping code separated handling preparing for
multifinger support.
Add extra checks with hardware limits.
Keep separated event and cookie position handling.
Improve tracing.

v4 - Improved pressure handling

Do not provide pressure when there are not fingers touching and
set a default pressure valud pressuming it will be taken into
account for tapping on the user space on packets where pressure
information is not provided by hardware.

v4 - Hardcode fingerWitdh to defaut value

Always provide default finger width value which is not a Synaptics
w flag to enable tapping getting rid of previous 0 value which is
the Synaptics flag for 2-fingers on that variable.

This gives the chance to decide from the user space when to issue
tapping or scrolling instead of being hardcoded on the kernel driver.
At the same time it makes MOTION packets that contain information of
2 fingers on the same packet to be taken into account for cursor
movement if applicable for instance when two-finger scroll is disabled.

v4 - Fix tracing text and comment

The value provided is not the number of fingers or fingers map
but a finger id number.
Move comment to the next line as that applies to next if condition
and not to the trace instruction.

v4 - MOTION packet: Fix getting finger 0 info

Sometimes the information on MOTION packet which contains
2 finger positions could come on descending order by id.
For insteance finger 1 on the first location of the packet
and finger 0 coming on the second one.

Get finger 0 values from first or second finger information
location in the packet if available instead of checking for
the first position only. Report to ignore packet otherwise.

Provide extra checks and improve tracing.

The set of changes of this commit fixes suttle cursor jumps
caused by missing finger 0 information when that is provided
on the second location of the MOTION packet instead of coming
from the first location. On that scenario, if a following HEAD
packet containing absulute positioning for finger 0 is comming
the issue was reproduced.

v4 - MOTION limit positions to boundaries

This fixes cursor jumps and cursor disapearing among other
misbehaviours when relative positions for the movement added
up to the expected previous absolute position of the finger
id on touchpad coordinates result on underflow or overflow.

v4 - Manipulate finger bitmap computation based on previous packets with TODO

There is no consensus on BSDs and Linux drivers, nor even clear
documented behaviour for this so this is implemented based on
experimentation.

FreeBSD considers STATUS packet comes first prividing the list of
fingers detected following a sequence of HEAD packets prividing
absolute positioning for fingers that hadn't prevously been tracked
 and MOTION packets for relative positions for subsequent movement
packing 2 finger information per packet until interation with the
touch area stops so a final STATUS packet with no fingers detected
and filled out with zeroes for other fields signals the end of
movement. Motion packets with fingers ids not mapped form the HEAD
are discarted as invalid data.

On Linux there is not such restriction so HEAD or STATUS packets
are taking into account regardless fingers on STATUS information
matches with next packet.

So that, the implementation here uses the STATUS information as
informative for the following events. For instance if a status
packet signals that two-fingers are pressed and the next packet
is a HEAD packet, the latter only can provide information for
one finger only, then the number of fingers reported is 2 on the
head packet if the id of the finger overlaps with the ones from
the HEAD packet or 3 fingers in case the id is a new one.
Same logic applies to MOTION packets.

This makes the asumption that a started event can only retain or
increment the number of fingers until a movement action is finished
providing continuity for dragging actions and scrolling actions.

A TODO is added to investigate which should be the right behaviour
for this and check if differnt v4 hardware and firmware match.

v4 - Implement hardware palm detection as compile option disabled by default

Fixed hardware palm detection to be taken into account on a separate field instead of
being a hack messing with the number of fingers reported on STATUS packet and complete
the conditions propagating the palm detected value on HEAD and MOTION packets fixing
some previous non-accurated conditions.

This fixes incorrect reports for taps among others on both cases whether the compile
option is enabled or not.

Apart from that a TODO is added from completeness to encourage looking for software
palm detection instead that will benefit other devices as well.

Palm detection will be more accurate to do by software so is is disabled by default.
Some posible options are:
- Improvements on padblocker input filter.
- Improvements in user mode input_server device.
- General input_server modifications.
- Other inprovements on this driver.

v4 - Initialise event structure so that new or unasigend fields will be zeroed

This prevents potential misbehavious by dealing with incorrect data in case
the event structure is modified in the future with new fields after recompiling
this driver with unchanged code.
At least those field will be zeroed with usually mean that they are at least
initialised.

Change-Id: Iccfdd356ff2834e5dea64481259fd890dd95406b
Reviewed-on: https://review.haiku-os.org/c/haiku/+/10013
Reviewed-by: Adrien Destugues <[email protected]>
2026-01-02 11:01:29 +00:00
Samuel Rodríguez Pérez 3c60f80ae5 ps/2 elantech: v4 - Implement buttons, position, preliminary presure, fingers bitmap
v4 - Implement buttons

v4 - STATUS. Hardcode position to special (0,0) coordinates

This fixes mouse disapearing on first iteration and fixes scrolling a bit.
Provide tracing for coordinates provided on the cookie as STATUS packet
does not contain them.
Commented is assinged cookie position to (0,0) as this is used to restrict
MOTION positions in a visible way as workaround for its correct
implementation. This will be cleaned up later.

v4 - Add presure handling for HEAD and MOTION packets

Initial change to enable tapping on v4 devices.

v4 - Use fingers bitmap from STATUS on all packets

Provide fingers event with finger bitmap value from last STATUS packet
as neither HEAD nor MOTION packet provide that detailed information.

This change is essential to implement clickfinger behaviour, better
tapping conditions, two-finger scrolling, etc.

Change-Id: I7908bac305431d436f4bf6273a700036f4e483e3
Reviewed-on: https://review.haiku-os.org/c/haiku/+/10012
Reviewed-by: Adrien Destugues <[email protected]>
2026-01-02 11:01:29 +00:00
Samuel Rodríguez Pérez 1861f096a2 ps/2 elantech: Return B_BAD_DATA when there is no new event from the touchpad
This fixes many unstabilities and unexpected behaviours, as returning B_ERROR
triggers a device restart and returning B_OK with incomplete or not initialised
data makes movement makers and mouse input server device add-on code to process
that as if it were completely correct.

That would trigger many phantom clicks, cursor jumping, coursor desapearing and other
collection of misbehaviours.

Change-Id: I05c40cb4f17e28a6b93f6e17984d6a1171fdd00a
Reviewed-on: https://review.haiku-os.org/c/haiku/+/9937
Reviewed-by: Adrien Destugues <[email protected]>
2026-01-02 11:01:29 +00:00
Samuel Rodríguez Pérez d7a262944a ps/2 elantech: v4 - Replace dprintf by TRACE for known packets
Change-Id: I10ff681301d206d86a8c7aa852a8bc3674102ce5
Reviewed-on: https://review.haiku-os.org/c/haiku/+/9936
Reviewed-by: waddlesplash <[email protected]>
Tested-by: Commit checker robot <[email protected]>
2026-01-02 11:01:29 +00:00
Samuel Rodríguez Pérez c7e9c982a8 ps/2 elantech: v4 - Fix validation checks and improve tracing
Based on FreeBSD and Linux drivers to provide missing validations.

Change-Id: Ibc9559fb973e019e9f1f1cb61ab95aa6c54d5e69
Reviewed-on: https://review.haiku-os.org/c/haiku/+/9934
Reviewed-by: Adrien Destugues <[email protected]>
2026-01-02 11:01:29 +00:00
Samuel Rodríguez Pérez bffef3fd1d ps/2 elantech: v4 - Add common legend and packet descriptions from FreeBSD 14.3 psm driver
This includes common legend for all packet versions and packet
descriptions for STATUS, HEAD and MOTION v4 packet types

Change-Id: Ibbb2296f8df7b63ac7beee000b208d7b2744084d
Reviewed-on: https://review.haiku-os.org/c/haiku/+/9933
Reviewed-by: waddlesplash <[email protected]>
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: Adrien Destugues <[email protected]>
2026-01-02 11:01:29 +00:00
Samuel Rodríguez Pérez 82678d33d6 ps/2 elantech: Split get_elantech_movement into 2 functions
Keep separated common code from specific v4 code leaving room
for implementing other versions on another stage.

Change-Id: I7e02a395a867c79fcf646125d41add77626d2cac
Reviewed-on: https://review.haiku-os.org/c/haiku/+/9932
Reviewed-by: waddlesplash <[email protected]>
Reviewed-by: Adrien Destugues <[email protected]>
Tested-by: Commit checker robot <[email protected]>
2026-01-02 11:01:29 +00:00
Samuel Rodríguez Pérez 5578783036 ps/2 elantech: Initial cleanups and fixes to support input devices
- Add references for driver implementation.
  References from FreeBSD 14.3, OpenBSD 7.8, Linux 6.17 sources
  and Linux 4.16 documentation.
- Add pragma marks for easy navigation
- Add missing define to fetch firware info from hardware
- Reduce size of version field
- Update probe function to be able to enable supported devices
- Update open function to add missing v4 devices
- Fix enable_absolute_mode and use same snooze time as BSDs and Linux drivers
- Fix get_resolution_v4 and set sane defaults instead of failing with error
- Update license for ps2_elantech.{h,cpp}

Change-Id: I76fba3be04d7b940079fc78c3b7fe7d8bf8dfa06
Reviewed-on: https://review.haiku-os.org/c/haiku/+/10011
Reviewed-by: Adrien Destugues <[email protected]>
2026-01-02 11:01:29 +00:00
Samuel Rodríguez Pérez a3f6c4d484 input: Implement click finger behaviour (enabled by default)
input touchpad settings header:
- click finger behaviour (enabled by default)
- Emulation of different button clicks depending on the
  number of fingers that are pressed at the same time on
  any location of the touchable surface of the device.
    - Clicking with 1 finger triggers a primary button click,
      usually left button click.
    - Clicking with 2 fingers triggers a secondary button click,
      usually right button click.
    - Clicking with 3 fingers triggers a terciary button click,
      usually middle button click.

  This feature is useful for clickpads that are input devices
  lacking a separated set of buttons from the touch area.

input preflet:
- Implement clickfinger

input mouse:
- Handle and provide new settings for clickfinger behaviour

input mouse mm:
- Implement clickfinger in the user space
- Enables button emulation based on the number of fingers pressing
  at the same time the touch surface.

  Userful feature for clickpads.

Change-Id: Ibaa06df3887793158093cc08f6281fc080e85c3b
Reviewed-on: https://review.haiku-os.org/c/haiku/+/9923
Reviewed-by: Adrien Destugues <[email protected]>
2026-01-02 11:01:29 +00:00
Samuel Rodríguez Pérez f44235f7e5 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]>
2026-01-02 11:01:29 +00:00