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.
|
||
|
|
||
|
|