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