haiku/docs/develop/servers/app_server/input.rst
PulkoMandy 53df6323c8 docs/develop: reorganize app_server documentation
Separate the "interface specification" into multiple individual, shorter
pages. Also update some outdated parts and replace references to
OpenBeOS with Haiku.

Change-Id: I86baa9a78c5f7a8a3c4c7aa3ac2992714afecae6
Reviewed-on: https://review.haiku-os.org/c/haiku/+/6084
Tested-by: Automation <automation@haiku-os.org>
Reviewed-by: Adrien Destugues <pulkomandy@pulkomandy.tk>
2023-03-09 12:45:34 +00:00

119 lines
2.2 KiB
ReStructuredText

Input Processing
================
Input Server messages
---------------------
The Input Server collects information about keyboard and mouse events
and forwards them to the app_server via messages. They are sent to port
specifically for such messages, and the port is monitored by a thread
whose task is to monitor, process, and dispatch them to the appropriate
recipients. The Input Server is a regular BApplication, and unlike other
applications, it requests a port to which it can send input messages.
Mouse
-----
Mouse events consist of button changes, mouse movements, and the mouse
wheel. The message will consist of the time of the event and attachments
appropriate for each message listed below:
B_MOUSE_DOWN
............
- when
- buttons' status
- location of the cursor
- modifiers
- clicks
B_MOUSE_UP
..........
- time
- buttons' status
- location of the cursor
- modifiers
B_MOUSE_MOVED
.............
- time
- location of the cursor
- buttons' status
B_MOUSE_WHEEL_CHANGED
.....................
- time
- location of the cursor
- transit - in or out
- x delta
- y delta
Keyboard
--------
Keyboard events consist of notification when a key is pressed or
released. Any keypress or release will evoke a message, regardless of
whether or not the key is mapped. The message will consist of the
appropriate code and attachments listed below:
B_KEY_DOWN
..........
- time
- key code
- repeat count
- modifiers
- states
- UTF-8 code
- string generated
- modifier-independent ASCII code
B_KEY_UP
........
- time
- key code
- modifiers
- states
- UTF-8 code
- string generated
- modifier-independent ASCII code
B_UNMAPPED_KEY_DOWN
...................
- time
- key code
- modifiers
- states
B_UNMAPPED_KEY_UP
.................
- time
- key code
- modifiers
- states
B_MODIFIERS_CHANGED
...................
sent when a modifier key changes
- time
- modifier states
- previous modifier states
- states
Nearly all keypresses received by the app_server are passed onto the
appropriate application. Control-Tab, when held, is sent to the Deskbar
for app switching. Command+F?? is intercepted and a workspace is
switched. Left Control + Alt + Delete is not even intercepted by the
app_server. The Input Server receives it and shows the Team Monitor
window.