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.