key.hpp

00001 /*      _______   __   __   __   ______   __   __   _______   __   __
00002  *     / _____/\ / /\ / /\ / /\ / ____/\ / /\ / /\ / ___  /\ /  |\/ /\
00003  *    / /\____\// / // / // / // /\___\// /_// / // /\_/ / // , |/ / /
00004  *   / / /__   / / // / // / // / /    / ___  / // ___  / // /| ' / /
00005  *  / /_// /\ / /_// / // / // /_/_   / / // / // /\_/ / // / |  / /
00006  * /______/ //______/ //_/ //_____/\ /_/ //_/ //_/ //_/ //_/ /|_/ /
00007  * \______\/ \______\/ \_\/ \_____\/ \_\/ \_\/ \_\/ \_\/ \_\/ \_\/
00008  *
00009  * Copyright (c) 2004, 2005, 2006 Olof Naessén and Per Larsson
00010  *
00011  *                                                         Js_./
00012  * Per Larsson a.k.a finalman                          _RqZ{a<^_aa
00013  * Olof Naessén a.k.a jansem/yakslem                _asww7!uY`>  )\a//
00014  *                                                 _Qhm`] _f "'c  1!5m
00015  * Visit: http://guichan.darkbits.org             )Qk<P ` _: :+' .'  "{[
00016  *                                               .)j(] .d_/ '-(  P .   S
00017  * License: (BSD)                                <Td/Z <fP"5(\"??"\a.  .L
00018  * Redistribution and use in source and          _dV>ws?a-?'      ._/L  #'
00019  * binary forms, with or without                 )4d[#7r, .   '     )d`)[
00020  * modification, are permitted provided         _Q-5'5W..j/?'   -?!\)cam'
00021  * that the following conditions are met:       j<<WP+k/);.        _W=j f
00022  * 1. Redistributions of source code must       .$%w\/]Q  . ."'  .  mj$
00023  *    retain the above copyright notice,        ]E.pYY(Q]>.   a     J@\
00024  *    this list of conditions and the           j(]1u<sE"L,. .   ./^ ]{a
00025  *    following disclaimer.                     4'_uomm\.  )L);-4     (3=
00026  * 2. Redistributions in binary form must        )_]X{Z('a_"a7'<a"a,  ]"[
00027  *    reproduce the above copyright notice,       #}<]m7`Za??4,P-"'7. ).m
00028  *    this list of conditions and the            ]d2e)Q(<Q(  ?94   b-  LQ/
00029  *    following disclaimer in the                <B!</]C)d_, '(<' .f. =C+m
00030  *    documentation and/or other materials      .Z!=J ]e []('-4f _ ) -.)m]'
00031  *    provided with the distribution.          .w[5]' _[ /.)_-"+?   _/ <W"
00032  * 3. Neither the name of Guichan nor the      :$we` _! + _/ .        j?
00033  *    names of its contributors may be used     =3)= _f  (_yQmWW$#(    "
00034  *    to endorse or promote products derived     -   W,  sQQQQmZQ#Wwa]..
00035  *    from this software without specific        (js, \[QQW$QWW#?!V"".
00036  *    prior written permission.                    ]y:.<\..          .
00037  *                                                 -]n w/ '         [.
00038  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT       )/ )/           !
00039  * HOLDERS AND CONTRIBUTORS "AS IS" AND ANY         <  (; sac    ,    '
00040  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING,               ]^ .-  %
00041  * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF            c <   r
00042  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR            aga<  <La
00043  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE          5%  )P'-3L
00044  * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR        _bQf` y`..)a
00045  * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,          ,J?4P'.P"_(\?d'.,
00046  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES               _Pa,)!f/<[]/  ?"
00047  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT      _2-..:. .r+_,.. .
00048  * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,     ?a.<%"'  " -'.a_ _,
00049  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION)                     ^
00050  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
00051  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
00052  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
00053  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
00054  * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00055  */
00056 
00057 #ifndef GCN_KEY_HPP
00058 #define GCN_KEY_HPP
00059 
00060 #include "guichan/platform.hpp"
00061 
00062 namespace gcn
00063 {
00067     class GCN_CORE_DECLSPEC Key
00068     {
00069     public:
00070 
00076         Key(int value = 0);
00077 
00083         bool isCharacter() const;
00084 
00090         bool isNumber() const;
00091 
00097         bool isLetter() const;
00098 
00104         bool isShiftPressed() const;
00105 
00111         void setShiftPressed(bool pressed);
00112 
00118         bool isControlPressed() const;
00119 
00125         void setControlPressed(bool pressed);
00126 
00132         bool isAltPressed() const;
00133 
00139         void setAltPressed(bool pressed);
00140 
00146         bool isMetaPressed() const;
00147 
00153         void setMetaPressed(bool pressed);
00154 
00160         bool isNumericPad() const;
00161 
00167         void setNumericPad(bool numpad);
00168 
00175         int getValue() const;
00176 
00182         void setValue(int value);
00183 
00187         enum
00188         {
00189             SPACE              = ' ',
00190             TAB                = '\t',
00191             ENTER              = '\n',
00192             LEFT_ALT           = 1000,
00193             RIGHT_ALT,
00194             LEFT_SHIFT,
00195             RIGHT_SHIFT,
00196             LEFT_CONTROL,
00197             RIGHT_CONTROL,
00198             LEFT_META,
00199             RIGHT_META,
00200             LEFT_SUPER,
00201             RIGHT_SUPER,
00202             INSERT,
00203             HOME,
00204             PAGE_UP,
00205             DELETE,
00206             END,
00207             PAGE_DOWN,
00208             ESCAPE,
00209             CAPS_LOCK,
00210             BACKSPACE,
00211             F1,
00212             F2,
00213             F3,
00214             F4,
00215             F5,
00216             F6,
00217             F7,
00218             F8,
00219             F9,
00220             F10,
00221             F11,
00222             F12,
00223             F13,
00224             F14,
00225             F15,
00226             PRINT_SCREEN,
00227             SCROLL_LOCK,
00228             PAUSE,
00229             NUM_LOCK,
00230             ALT_GR,
00231             LEFT,
00232             RIGHT,
00233             UP,
00234             DOWN
00235         };
00236 
00237     protected:
00238         int mValue;
00239         bool mShiftPressed;
00240         bool mControlPressed;
00241         bool mAltPressed;
00242         bool mMetaPressed;
00243         bool mNumericPad;
00244     };
00245 }
00246 
00247 #endif // end GCN_KEY_HPP

Generated on Sat Jul 29 19:38:48 2006 for Guichan by  doxygen 1.4.7