53df6323c8
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>
119 lines
2.2 KiB
ReStructuredText
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.
|
|
|
|
|