Commit Graph

38 Commits

Author SHA1 Message Date
PulkoMandy
49efa33dd0 ps2 synaptics: implement 'extended W' mode.
"Newer" synaptics touchpad support a new mode where they can report more
information to the host. In this mode, there is a different packet
format for tracking extra data from the touchpad, including a wheel
encoder (mousewheel) if available, and multitouch finger tracking.

This mode is documented in the Synaptics touchpad interfacing guide
(Synaptics document 511-000275-01 Rev. B), but was not yet implemented
in our driver.

It should help with detecting multiple fingers, or finger position on
clickpads to determine right or left click.

This change implements the following items from the Synaptics
interfacing guide:

- Cleanup and clarify the code for features detection to properly report
  clickpads
- Enable "extended W" mode if supported
- Process extended W values 0 (mouse wheels, reported in the
  touchpad_event structure and could be used by input_server for
  scrolling), 1 (secondary finger), and 2 (finger count)
- Fix handling of wValue, which is not always a finger width
- Add handling of vValuen which indicates the finger width when wValue
  doesn't

Overall, this should provide the movement_maker with a better picture of
what's happening.

Also improve tracing to show received packets and the corresponding
WValue since that's an important value in identifying which type of
packet it is.

Unfortunately I currently don't have a laptop with synaptics touchpad to
test this with.

Change-Id: If334392f4eb2a146955f6c8c897f0ab64d79b8d9
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4425
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Adrien Destugues <pulkomandy@pulkomandy.tk>
Reviewed-by: nephele <nep@packageloss.eu>
2023-01-28 14:57:53 +00:00
Augustin Cavalier
5e596efecf Refactor touchpad movement generation by migrating MovementMaker to userland.
This considerably overhauls touchpad event generation, simplifying and
cleaning it up considerably:

 * Return the touchpad specifications through the MS_IS_TOUCHPAD ioctl.

 * There is now a dedicated MS_READ_TOUCHPAD ioctl, as touchpads
   can either return touchpad_movement structures or mouse_movement
   ones depending on what mode they are operating in.

 * Event repeating on timeouts is now handled in MovementMaker and
   the input_server control thread, so MS_READ_TOUCHPAD takes
   a timeout value. This means we can drop all the EventProducers.

 * Use the real floating-point math functions in MovementMaker now
   that we are running in userland.

 * Drop unused structures, constants, headers, and other things
   related to touchpad support.

Change-Id: I28cdb28e4100393a9338a8ebb865573cec13fc1e
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5455
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2022-07-18 16:00:29 +00:00
X512
03fd479633 virtio_input: add new virtio input driver
Change-Id: I10af2b30c79d1e8ff890d45642988f362d3d0a1e
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4012
Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com>
2021-08-20 12:43:16 +00:00
Lt-Henry
52a54e1b51 usb_hid: Enable digitizers to produce button events from tip and barrel switches
Change-Id: Ifcf542e6b04f2f210c80528279e70e0fdd1bb4e3
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2685
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
2021-01-26 18:56:32 +00:00
Preetpal Kaur
13b45a2ea3 Integrate PadBlocker in input preferences
- Import padblocker sources
- Add slider to set padblocking time
- Generates PadBlocker settings

Fixes #11673

Change-Id: Ic88416215aabb1ae6aba79ff41cb55a7f0f8008d
Reviewed-on: https://review.haiku-os.org/c/haiku/+/1590
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
2020-06-22 15:08:48 +00:00
CodeforEvolution
29ae0e0f61 wacom: SMAP Fixes and Refactoring
Utilize user_memcpy and IS_USER_ADDRESS when necessary to prevent SMAP violations.
Also add a "wacom_device_header" struct to more easily share data between the wacom
kernel driver and input_server addon.

Should fix #14589

Change-Id: Ie2784020b21523f82fd450a2db2de60ccf9d6620
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2783
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
2020-06-20 18:26:45 +00:00
Adrien Destugues
696d127d12 Live update of Input preferences device list
- Implement watch_input_devices in input_server, as it was TODO. For
  now, only one watcher is allowed at a time.
- Use it in Input preferences to get notified about added and removed
  devices and update the device list accordingly.

Change-Id: I52018af53738e68271d6d63b5bea31fd7cab1b3b
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2041
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
2020-01-25 11:58:48 +00:00
François Revol
0fa3181d95 Implemented the patch on #7963 in a different way.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43037 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-10-31 18:09:24 +00:00
Axel Dörfler
2c49465329 * Removed the at_kbd_io and AT keyboard stuff; this is now done within the PS/2
driver, and that driver is using the raw_key_info structure as well.
* Renamed kb_mouse_driver.h to keyboard_mouse_driver.h.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36267 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-04-14 19:19:14 +00:00
Axel Dörfler
19049c8bd3 * Removed now unused header.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36266 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-04-14 19:16:30 +00:00
Axel Dörfler
897ca37d52 * Introduced a new debugger access to the keyboard drivers, and implemented that
in the PS/2 driver for now. The basic idea is to allow everyone to open the
  device, but only allow one key reader (as usual). However, once someone
  registers itself as a debugger, the original reader is blocked, and the
  debugger can read the key presses instead.
* Renamed ps2_keyboard.c to .cpp.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36256 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-04-14 12:30:23 +00:00
Axel Dörfler
fc548b41f3 * Removed the pretty useless "Multifinger scrolling" option - it's now always
the same as the two finger scrolling option (could be disabled, too, opinions
  welcome).
* Added a new settings to disable horizontal two finger scrolling, since it's
  not that easy to only scroll in one direction with this. Maybe a higher
  starting boundary would also be an option for this instead, Clemens what do
  you think?
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33468 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-06 14:30:57 +00:00
Jérôme Duval
2bbb828870 added get_modifier_key() as proposed by Olivier Cortes. Thanks.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28812 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-12-14 14:43:49 +00:00
Stephan Aßmus
6849a22864 Patch by Clemens Zeilder:
* Implemented Synaptics touchpad support in the PS2 bus_manager by
  refactoring/splitting the structure some and adding touchpad device
  handling.
* Implemented Touchpad input_server device add-on
* Created Touchpad preflet for configuring advances Synaptics touchpad
  options like scroll region (both horizontal and vertical) as well
  as other neat stuff

Thanks a lot, Clemens!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28416 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-01 10:48:35 +00:00
Axel Dörfler
ea9d4cd0f7 Slightly increased the default key repeat rate to make it at least
bearable.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24059 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-02-22 10:53:27 +00:00
Jérôme Duval
d57634f732 the keymap is now saved when key locks or key modifiers are changed
this fixes bug #1282


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21625 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-07-16 18:40:32 +00:00
Jérôme Duval
8703696801 input_server saves its settings on change, sending itself a 'Save' request message
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18052 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-07-07 15:38:53 +00:00
Marcus Overhagen
fbe9b0b6eb This fixes bug #149.
Input server now saves keyboard typematic settings whenever they are modified,
instead of wating until it is shutdown (which never happens, either the
system will crash, or the input_server will stay active after a normal shut down)
Same problems might apply to mouse and keymap settings.
Input server shutdown handling should be reviewed.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16380 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-02-13 17:35:05 +00:00
Axel Dörfler
26b02ddc80 The input_server is now notified when the screen resolution is changed.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15165 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-26 16:22:06 +00:00
Axel Dörfler
128ddaa3e3 Some work on the input_server:
* Rewrote event handling: instead of writing every single device message to
  the event port, they are just queued in a list, and the event loop is only
  notified if necessary (ie. if a notification has been sent already, new
  events are just queued up until the input_server found the time to process
  them).
* This also fixed a big memory leak: every message processed by EnqueueDeviceMessage()
  (IOW every key or mouse event) was leaked!
* no longer abuses gInputMethodListLocker to lock the method event queue
  (it now uses the standard event queue lock).
* removed the completely superfluous, weird and decelerating event caching mechanism
* tried to find a better distribution of work between _SanitizeEvents(),
  _MethodizeEvents(), and _DispatchEvents().
* HandleSetMousePosition() now only does what it's supposed to do (this currently
  causes the mouse to jump at the start, though).
* now uses the "Message4" for message sending if available.
* fixed "kb_mouse_settings.h" to include all headers it needs.
* some more cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14966 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-16 17:25:58 +00:00
Axel Dörfler
6c17d02551 * Introduced a new handshake between input_server and app_server, and some
temporary handling code in the app_server.
* RootLayer no longer creates the input_server messaging port - this is now
  the responsibility of the input_server.
* Moved AS_CREATE_[OFFSCREEN_]WINDOW from ServerApp::_MessageLooper() to
  _DispatchMessage().
* The RootLayer thread is now started as soon as the input_server is there.
* removed or disabled any input_server stuff in the AppServer class.
* removed old message commmands to the app_server.
* Removed the R5_CURSOR_COMM and HAIKU_APPSERVER_COMM definitions: the
  input_server is now automatically built correctly depending on the target.
* InputServer::EventLoop() plays now safe and checks for error conditions.
* InputServer::EnqueueDeviceMessage() seems to leak memory, added TODO about
  this.
* InputServer event loop messaging uses ports for inner-app communication - why?
* The InputServer event loop thread is no longer killed on exit, it just quits
  when its port is gone.
* Minor cleanup in input_server.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14949 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-15 19:59:53 +00:00
Jérôme Duval
875d858766 added a tablet_movement struct
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12454 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-04-20 21:53:21 +00:00
Jérôme Duval
f8f38c4c4b stripped out comments because their license is unknown
removed unused definitions


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11726 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-14 10:32:10 +00:00
Jérôme Duval
95e5262abe Added spacebar keycode
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10665 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-01-11 00:36:41 +00:00
Jérôme Duval
fa1e0b9c50 added codes for adding and removing
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9562 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-28 15:40:56 +00:00
Jérôme Duval
10996598fa moved cbuf_adapter.h from ps2mouse directory
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9245 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-07 15:03:59 +00:00
Jérôme Duval
e1130011b7 improved ioctl codes naming
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9209 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-05 16:01:12 +00:00
Jérôme Duval
7d5d344bf1 Some mice have two wheels
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9088 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-28 11:20:45 +00:00
Jérôme Duval
59fda8c176 change the mouse io struct
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9064 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-26 22:34:57 +00:00
Jérôme Duval
d0a8891742 fix no newline at end of file
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9056 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-24 12:46:01 +00:00
Jérôme Duval
767560b14e Splitted kb_mouse_driver.h to avoid mixing driver and settings
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9043 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-23 15:35:37 +00:00
Stefano Ceccherini
1fec91104a Added newline at the end of the file
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9029 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-22 07:05:56 +00:00
Jérôme Duval
6bd2c5e573 fix the naming
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8631 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-08-24 13:44:35 +00:00
Jérôme Duval
91180f23e0 Added some other method replicant message ids
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8630 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-08-24 13:39:33 +00:00
Jérôme Duval
d92d0a2423 Update to R5 operation values, added a prefix IS_
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8603 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-08-18 15:42:59 +00:00
Jérôme Duval
87e2c83aed input_server message ids are now here
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8507 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-07-29 13:31:14 +00:00
Jérôme Duval
3e82153545 fixes a typo
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8486 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-07-27 10:23:18 +00:00
ejakowatz
52a3801208 It is accomplished ...
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-07-09 12:24:59 +00:00