--- /dev/null
+///////////////////////////////////////////////////////////////////////////////
+// Name: wx/kbdstate.h
+// Purpose: Declaration of wxKeyboardState class
+// Author: Vadim Zeitlin
+// Created: 2008-09-19
+// RCS-ID: $Id$
+// Copyright: (c) 2008 Vadim Zeitlin <vadim@wxwidgets.org>
+// Licence: wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_KBDSTATE_H_
+#define _WX_KBDSTATE_H_
+
+#include "wx/defs.h"
+
+// ----------------------------------------------------------------------------
+// wxKeyboardState stores the state of the keyboard modifier keys
+// ----------------------------------------------------------------------------
+
+class WXDLLIMPEXP_CORE wxKeyboardState
+{
+public:
+ wxKeyboardState()
+ : m_controlDown(false),
+ m_shiftDown(false),
+ m_altDown(false),
+ m_metaDown(false)
+ {
+ }
+
+ // default copy ctor, assignment operator and dtor are ok
+
+
+ // accessors for the various modifier keys
+ // ---------------------------------------
+
+ // should be used check if the key event has exactly the given modifiers:
+ // "GetModifiers() = wxMOD_CONTROL" is easier to write than "ControlDown()
+ // && !MetaDown() && !AltDown() && !ShiftDown()"
+ int GetModifiers() const
+ {
+ return (m_controlDown ? wxMOD_CONTROL : 0) |
+ (m_shiftDown ? wxMOD_SHIFT : 0) |
+ (m_metaDown ? wxMOD_META : 0) |
+ (m_altDown ? wxMOD_ALT : 0);
+ }
+
+ // returns true if any modifiers at all are pressed
+ bool HasModifiers() const { return GetModifiers() != wxMOD_NONE; }
+
+ // accessors for individual modifier keys
+ bool ControlDown() const { return m_controlDown; }
+ bool ShiftDown() const { return m_shiftDown; }
+ bool MetaDown() const { return m_metaDown; }
+ bool AltDown() const { return m_altDown; }
+
+ // "Cmd" is a pseudo key which is Control for PC and Unix platforms but
+ // Apple ("Command") key under Macs: it makes often sense to use it instead
+ // of, say, ControlDown() because Cmd key is used for the same thing under
+ // Mac as Ctrl elsewhere (but Ctrl still exists, just not used for this
+ // purpose under Mac)
+ bool CmdDown() const
+ {
+#if defined(__WXMAC__) || defined(__WXCOCOA__)
+ return MetaDown();
+#else
+ return ControlDown();
+#endif
+ }
+
+ // these functions are mostly used by wxWidgets itself
+ // ---------------------------------------------------
+
+ void SetControlDown(bool down) { m_controlDown = down; }
+ void SetShiftDown(bool down) { m_shiftDown = down; }
+ void SetAltDown(bool down) { m_altDown = down; }
+ void SetMetaDown(bool down) { m_metaDown = down; }
+
+
+ // for backwards compatibility with the existing code accessing these
+ // members of wxKeyEvent directly, these variables are public, however you
+ // should not use them in any new code, please use the accessors instead
+public:
+ bool m_controlDown : 1;
+ bool m_shiftDown : 1;
+ bool m_altDown : 1;
+ bool m_metaDown : 1;
+};
+
+#endif // _WX_KBDSTATE_H_
+