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.