summaryrefslogtreecommitdiffstats
path: root/kdecore/kkeynative.h
diff options
context:
space:
mode:
Diffstat (limited to 'kdecore/kkeynative.h')
-rw-r--r--kdecore/kkeynative.h258
1 files changed, 258 insertions, 0 deletions
diff --git a/kdecore/kkeynative.h b/kdecore/kkeynative.h
new file mode 100644
index 000000000..47b4ad677
--- /dev/null
+++ b/kdecore/kkeynative.h
@@ -0,0 +1,258 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2002 Ellis Whitehead <ellis@kde.org>
+
+ Win32 port:
+ Copyright (C) 2004 Jaroslaw Staniek <js@iidea.pl>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#ifndef __KKEYNATIVE_H
+#define __KKEYNATIVE_H
+
+#include <kshortcut.h>
+
+#ifdef Q_WS_X11
+typedef union _XEvent XEvent;
+#endif
+
+class KKeyNativePrivate;
+/**
+ * Representation of a key in the format native of the windowing system (eg. X11).
+ * @see KKey
+ */
+class KDECORE_EXPORT KKeyNative
+{
+ public:
+ /**
+ * Creates a new null KKey.
+ * @see clear()
+ * @see isNull()
+ * @see null()
+ */
+ KKeyNative();
+
+#ifdef Q_WS_X11
+ /**
+ * Extracts a new native key from the given xevent.
+ * @param xevent the XEvent that contains the key
+ */
+ KKeyNative( const XEvent* xevent );
+#endif
+
+ /**
+ * Creates a new native key for the given KKey code.
+ * @param key the KKey that contains the generic key
+ */
+ KKeyNative( const KKey& key );
+
+ /**
+ * Copy constructor.
+ */
+ KKeyNative( const KKeyNative& );
+
+ /**
+ * @internal
+ */
+ KKeyNative( uint code, uint mod, uint sym );
+ ~KKeyNative();
+
+ /**
+ * Clears the key. The key is null after calling this function.
+ * @see isNull()
+ */
+ void clear();
+
+#ifdef Q_WS_X11
+ /**
+ * Initializes the native key by extracting the information
+ * from the given xevent.
+ * @param xevent the XEvent that contains the key
+ * @return true if successful, false otherwise
+ */
+ bool init( const XEvent* xevent );
+#endif
+
+ /**
+ * Creates a new native key for the given KKey code.
+ * @param key the KKey that contains the generic key
+ * @return true if successful, false otherwise
+ */
+ bool init( const KKey& key );
+
+ /**
+ * Copies the given key into this key.
+ * @param key the key to copy
+ * @return true if successful, false otherwise
+ */
+ bool init( const KKeyNative& key );
+
+ /**
+ * Copies the given key into this key.
+ * @param key the key to copy
+ * @return this key
+ */
+ KKeyNative& operator =( const KKeyNative& key )
+ { init( key ); return *this; }
+
+ /**
+ * Returns the qt key code.
+ * @return the qt key code or 0 if there is no key set.
+ * @see Qt::Key
+ */
+
+ int keyCodeQt() const;
+
+ /**
+ * Returns the KKey representation of this key.
+ * @return the KKey representation
+ */
+ KKey key() const;
+
+ /**
+ * Converts this key to its KKey representation.
+ * @return the KKey representation
+ * @see key()
+ */
+ operator KKey() const { return key(); }
+
+ /**
+ * The native keycode of the key.
+ * @return the native keycode
+ */
+ uint code() const;
+
+ /**
+ * The native modifier flags of the key.
+ * @return the native modifier flags
+ */
+ uint mod() const;
+
+ /**
+ * The native symbol (KeySym) of the key.
+ * @return the native symbol (KeySym)
+ */
+ uint sym() const;
+
+ /**
+ * Returns true if the key is null (after clear() or empty
+ * constructor).
+ * @return true if the key is null
+ * @see clear()
+ * @see null()
+ */
+ bool isNull() const;
+
+ /**
+ * Compares this key with the given KKeyNative object. Returns a
+ * negative number if the given KKeyNative is larger, 0 if they
+ * are equal and a positive number this KKeyNative is larger. The
+ * returned value is the difference between the symbol, modifier
+ * or code, whatever is non-zero first.
+ *
+ * @param key the key to compare with this key
+ * @return a negative number if the given KKeyNative is larger, 0 if
+ * they are equal and a positive number this KKeyNative is larger
+ */
+ int compare( const KKeyNative& key ) const;
+
+ /**
+ * Compares the symbol, modifiers and code of both keys.
+ * @see compare()
+ */
+ bool operator == ( const KKeyNative& key ) const
+ { return compare( key ) == 0; }
+
+ /**
+ * Compares the symbol, modifiers and code of both keys.
+ * @see compare()
+ */
+ bool operator != ( const KKeyNative& key ) const
+ { return compare( key ) != 0; }
+
+ /**
+ * Compares the symbol, modifiers and code of both keys.
+ * @see compare()
+ */
+ bool operator < ( const KKeyNative& key ) const
+ { return compare( key ) < 0; }
+
+ /**
+ * Returns a null key.
+ * @return the null key
+ * @see isNull()
+ * @see clear()
+ */
+ static KKeyNative& null();
+
+ // General query functions. //
+ /**
+ * Checks whether the keyboard has a Win key.
+ * @return true if the keyboard has a Win key
+ */
+ static bool keyboardHasWinKey();
+
+#ifdef Q_WS_X11
+ /**
+ * Returns the equivalent X modifier mask of the given modifier flag.
+ * @param modFlag the mod flags to test
+ * @return the equivalent native flags of the window system
+ */
+ static uint modX( KKey::ModFlag modFlag );
+
+ /**
+ * Returns bitwise OR'ed mask containing Shift, Ctrl, Alt, and
+ * Win (if available).
+ * @return the mask of Shift, Ctrl, Alt and Win.
+ */
+ static uint accelModMaskX();
+
+ /**
+ * Returns the X11 NumLock modifier mask/flag.
+ * @return the X11 NumLock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ static uint modXNumLock();
+
+ /**
+ * Returns the X11 Lock modifier mask/flag.
+ * @return the X11 Lock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ static uint modXLock();
+
+ /**
+ * Returns the X11 ScrollLock modifier mask/flag.
+ * @return the X11 ScrollLock modifier mask/flag.
+ * @see accelModMaskX()
+ */
+ static uint modXScrollLock();
+
+ /**
+ * Returns the X11 Mode_switch modifier mask/flag.
+ * @return the X11 Mode_switch modifier mask/flag.
+ * @see accelModMaskX()
+ * @since 3.5
+ */
+ static uint modXModeSwitch();
+#endif
+
+ private:
+ uint m_code, m_mod, m_sym;
+ KKeyNativePrivate* d;
+};
+
+#endif // !__KKEYNATIVE_H