Opened 6 years ago

Last modified 4 years ago

#9545 new enhancement

Add multitouch support

Reported by: X512 Owned by: nobody
Priority: normal Milestone: Unscheduled
Component: - General Version: R1/Development
Keywords: Cc:
Blocked By: #8338 Blocking: #8370
Has a Patch: no Platform: All


To use Haiku on tablet PCs it's required to support multitouch. To add this modifications to the API and OS services should be made.

Following components will be probably affected:

USB HID driver Get contact id and transmit it to add-on.

tablet input_server add-on Adapt mouse message generation.

app_server Add ability to have many cursors and track it independently.

interface kit Mayble correct B_ENTER_VIEW/B_LEAVE_VIEW MouseMoved codes generating.

I suggest following modifications to the API:

  • Add "be:tablet_contact_id" to mouse messages that represent id of touching position tracking. First id is 0, second is 1 and so on. When user release finger from touch screen contact id is recycled and can be used by following contacts. Note that released contact is is not always the last allocated id so id fragmentation can appear.
  • Add "B_MULTITOUCH_AWARE" BView flag. Without this flag view can accept only messages from one contact, other messages will be dropped. Also "be:tablet_contact_id" will be removed.
  • Add "B_MULTITOUCH_AWARE_WINDOW" BWindow flag. It enables ability to work with many views simultaneously. For example you can control 2 sliders by 2 fingers with this flag.

Some work is done in patch of #8338. Also I wrote some test that demonstrates multitouch.

If someone is interested in tablet PC and multitouch support please let me know.

Attachments (1)

Multitouch test.mp4 (2.2 MB) - added by X512 6 years ago.
Better compressed video

Change History (3)

comment:1 Changed 6 years ago by X512

Video of multitouch test application.

Changed 6 years ago by X512

Attachment: Multitouch test.mp4 added

Better compressed video

comment:2 Changed 4 years ago by pulkomandy

Milestone: R1Unscheduled
Note: See TracTickets for help on using tickets.