CMSWindowsKeyState Class Reference

Microsoft Windows key mapper. More...

#include <CMSWindowsKeyState.h>

Inherits CKeyState.

Collaboration diagram for CMSWindowsKeyState:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 CMSWindowsKeyState (CMSWindowsDesks *desks, void *eventTarget)
virtual void fakeKeyDown (KeyID id, KeyModifierMask mask, KeyButton button)
 Fake a key press.
virtual void fakeKeyRepeat (KeyID id, KeyModifierMask mask, SInt32 count, KeyButton button)
 Fake a key repeat.
virtual bool fakeCtrlAltDel ()
 Fake ctrl+alt+del.
virtual KeyModifierMask pollActiveModifiers () const
 Get the active modifiers from OS.
virtual SInt32 pollActiveGroup () const
 Get the active keyboard layout from OS.
virtual void pollPressedKeys (KeyButtonSet &pressedKeys) const
 Get the keys currently pressed from OS.
virtual void onKey (KeyButton button, bool down, KeyModifierMask newState)
 Handle key event.
virtual void sendKeyEvent (void *target, bool press, bool isAutoRepeat, KeyID key, KeyModifierMask mask, SInt32 count, KeyButton button)
 Post a key event.
manipulators



void disable ()
 Handle screen disabling.
void setKeyLayout (HKL keyLayout)
 Set the active keyboard layout.
bool testAutoRepeat (bool press, bool isRepeat, KeyButton)
 Test and set autorepeat state.
void saveModifiers ()
 Remember modifier state.
void useSavedModifiers (bool enable)
 Set effective modifier state.

Protected Member Functions

virtual void getKeyMap (CKeyMap &keyMap)
 Get the keyboard map.
virtual void fakeKey (const Keystroke &keystroke)
 Fake a key event.
virtual KeyModifierMask & getActiveModifiersRValue ()
 Get the active modifiers.

accessors



KeyButton virtualKeyToButton (UINT virtualKey) const
 Map a virtual key to a button.
KeyID mapKeyFromEvent (WPARAM charAndVirtKey, LPARAM info, KeyModifierMask *maskOut) const
 Map key event to a key.
bool didGroupsChange () const
 Check if keyboard groups have changed.
UINT mapKeyToVirtualKey (KeyID key) const
 Map key to virtual key.
static KeyID getKeyID (UINT virtualKey, KeyButton button)
 Map virtual key and button to KeyID.

Detailed Description

Microsoft Windows key mapper.

This class maps KeyIDs to keystrokes.

Definition at line 32 of file CMSWindowsKeyState.h.


Member Function Documentation

bool CMSWindowsKeyState::didGroupsChange (  )  const

Check if keyboard groups have changed.

Returns true iff the number or order of the keyboard groups have changed since the last call to updateKeys().

Definition at line 710 of file CMSWindowsKeyState.cpp.

void CMSWindowsKeyState::disable (  ) 

Handle screen disabling.

Called when screen is disabled. This is needed to deal with platform brokenness.

Definition at line 597 of file CMSWindowsKeyState.cpp.

References CEvent::kTimer.

Referenced by CMSWindowsScreen::disable().

bool CMSWindowsKeyState::fakeCtrlAltDel (  )  [virtual]

Fake ctrl+alt+del.

Synthesize a press of ctrl+alt+del. Return true if processing is complete and false if normal key processing should continue.

Implements CKeyState.

Definition at line 781 of file CMSWindowsKeyState.cpp.

References fakeKeyDown(), virtualKeyToButton(), and CThread::wait().

void CMSWindowsKeyState::fakeKey ( const Keystroke keystroke  )  [protected, virtual]
void CMSWindowsKeyState::fakeKeyDown ( KeyID  id,
KeyModifierMask  mask,
KeyButton  button 
) [virtual]

Fake a key press.

Synthesizes a key press event and updates the key state.

Reimplemented from CKeyState.

Definition at line 767 of file CMSWindowsKeyState.cpp.

Referenced by fakeCtrlAltDel().

void CMSWindowsKeyState::fakeKeyRepeat ( KeyID  id,
KeyModifierMask  mask,
SInt32  count,
KeyButton  button 
) [virtual]

Fake a key repeat.

Synthesizes a key repeat event and updates the key state.

Reimplemented from CKeyState.

Definition at line 774 of file CMSWindowsKeyState.cpp.

KeyModifierMask & CMSWindowsKeyState::getActiveModifiersRValue (  )  [protected, virtual]

Get the active modifiers.

Returns the modifiers that are currently active according to our shadowed state. The state may be modified.

Reimplemented from CKeyState.

Definition at line 1243 of file CMSWindowsKeyState.cpp.

Referenced by useSavedModifiers().

KeyID CMSWindowsKeyState::getKeyID ( UINT  virtualKey,
KeyButton  button 
) [static]

Map virtual key and button to KeyID.

Returns the KeyID for virtual key virtualKey and button button (button should include the extended key bit), or kKeyNone if there is no such key.

Definition at line 1367 of file CMSWindowsKeyState.cpp.

Referenced by getKeyMap(), and mapKeyFromEvent().

void CMSWindowsKeyState::getKeyMap ( CKeyMap keyMap  )  [protected, virtual]
KeyID CMSWindowsKeyState::mapKeyFromEvent ( WPARAM  charAndVirtKey,
LPARAM  info,
KeyModifierMask *  maskOut 
) const

Map key event to a key.

Converts a key event into a KeyID and the shadow modifier state to a modifier mask.

Definition at line 656 of file CMSWindowsKeyState.cpp.

References CKeyState::getActiveModifiers(), and getKeyID().

UINT CMSWindowsKeyState::mapKeyToVirtualKey ( KeyID  key  )  const

Map key to virtual key.

Returns the virtual key for key key or 0 if there's no such virtual key.

Definition at line 717 of file CMSWindowsKeyState.cpp.

Referenced by CMSWindowsScreen::registerHotKey().

void CMSWindowsKeyState::onKey ( KeyButton  button,
bool  down,
KeyModifierMask  newState 
) [virtual]

Handle key event.

Sets the state of button to down or up and updates the current modifier state to newState. This method should be called by primary screens only in response to local events. For auto-repeat set down to true. Overrides must forward to the superclass.

Reimplemented from CKeyState.

Definition at line 732 of file CMSWindowsKeyState.cpp.

SInt32 CMSWindowsKeyState::pollActiveGroup (  )  const [virtual]

Get the active keyboard layout from OS.

Returns the active keyboard layout according to the operating system.

Implements CKeyState.

Definition at line 848 of file CMSWindowsKeyState.cpp.

Referenced by fakeKey().

KeyModifierMask CMSWindowsKeyState::pollActiveModifiers (  )  const [virtual]

Get the active modifiers from OS.

Returns the modifiers that are currently active according to the operating system.

Implements CKeyState.

Definition at line 821 of file CMSWindowsKeyState.cpp.

References CKeyState::isKeyDown(), and virtualKeyToButton().

void CMSWindowsKeyState::pollPressedKeys ( KeyButtonSet &  pressedKeys  )  const [virtual]

Get the keys currently pressed from OS.

Adds any keys that are currently pressed according to the operating system to pressedKeys.

Implements CKeyState.

Definition at line 868 of file CMSWindowsKeyState.cpp.

void CMSWindowsKeyState::saveModifiers (  ) 

Remember modifier state.

Records the current non-toggle modifier state.

Definition at line 635 of file CMSWindowsKeyState.cpp.

References CKeyState::getActiveModifiers().

Referenced by CMSWindowsScreen::leave().

void CMSWindowsKeyState::sendKeyEvent ( void *  target,
bool  press,
bool  isAutoRepeat,
KeyID  key,
KeyModifierMask  mask,
SInt32  count,
KeyButton  button 
) [virtual]

Post a key event.

Posts a key event. This may adjust the event or post additional events in some circumstances. If this is overridden it must forward to the superclass.

Reimplemented from CKeyState.

Definition at line 741 of file CMSWindowsKeyState.cpp.

void CMSWindowsKeyState::setKeyLayout ( HKL  keyLayout  ) 

Set the active keyboard layout.

Uses keyLayout when querying the keyboard.

Definition at line 614 of file CMSWindowsKeyState.cpp.

Referenced by CMSWindowsScreen::leave().

bool CMSWindowsKeyState::testAutoRepeat ( bool  press,
bool  isRepeat,
KeyButton  button 
)

Test and set autorepeat state.

Returns true if the given button is autorepeating and updates internal state.

Definition at line 620 of file CMSWindowsKeyState.cpp.

void CMSWindowsKeyState::useSavedModifiers ( bool  enable  ) 

Set effective modifier state.

Temporarily sets the non-toggle modifier state to those saved by the last call to saveModifiers if enable is true. Restores the modifier state to the current modifier state if enable is false. This is for synthesizing keystrokes on the primary screen when the cursor is on a secondary screen. When on a secondary screen we capture all non-toggle modifier state, track the state internally and do not pass it on. So if Alt+F1 synthesizes Alt+X we need to synthesize not just X but also Alt, despite the fact that our internal modifier state indicates Alt is down, because local apps never saw the Alt down event.

Definition at line 642 of file CMSWindowsKeyState.cpp.

References CKeyState::getActiveModifiers(), and getActiveModifiersRValue().

Referenced by CMSWindowsScreen::fakeInputBegin(), and CMSWindowsScreen::fakeInputEnd().

KeyButton CMSWindowsKeyState::virtualKeyToButton ( UINT  virtualKey  )  const

Map a virtual key to a button.

Returns the button for the virtualKey.

Definition at line 608 of file CMSWindowsKeyState.cpp.

Referenced by fakeCtrlAltDel(), and pollActiveModifiers().


The documentation for this class was generated from the following files:

Generated on 12 Nov 2010 for synergy-plus by  doxygen 1.6.1