00001 #ifndef GOSU_BUTTONS_HPP 00002 #define GOSU_BUTTONS_HPP 00003 00004 #include <Gosu/Platform.hpp> 00005 00006 #ifdef GOSU_IS_MAC 00007 #define GOSU_SCANCODE(mac, windows_or_linux) mac 00008 #define GOSU_SPECIAL_SCANCODE(mac, windows, linux) mac 00009 #else 00010 #define GOSU_SCANCODE(mac, linux_or_windows) linux_or_windows 00011 #ifdef GOSU_IS_WIN 00012 #define GOSU_SPECIAL_SCANCODE(mac, windows, linux) windows 00013 #else 00014 #define GOSU_SPECIAL_SCANCODE(mac, windows, linux) linux 00015 #endif 00016 #endif 00017 00018 namespace Gosu 00019 { 00023 enum ButtonName 00024 { 00025 kbRangeBegin, 00026 kbEscape = GOSU_SCANCODE(0x35, 0x01), 00027 kbF1 = GOSU_SCANCODE(0x7a, 0x3b), 00028 kbF2 = GOSU_SCANCODE(0x78, 0x3c), 00029 kbF3 = GOSU_SCANCODE(0x63, 0x3d), 00030 kbF4 = GOSU_SCANCODE(0x76, 0x3e), 00031 kbF5 = GOSU_SCANCODE(0x60, 0x3f), 00032 kbF6 = GOSU_SCANCODE(0x61, 0x40), 00033 kbF7 = GOSU_SCANCODE(0x62, 0x41), 00034 kbF8 = GOSU_SCANCODE(0x64, 0x42), 00035 kbF9 = GOSU_SCANCODE(0x65, 0x43), 00036 kbF10 = GOSU_SCANCODE(0x6d, 0x44), 00037 kbF11 = GOSU_SCANCODE(0x67, 0x57), 00038 kbF12 = GOSU_SCANCODE(0x6f, 0x58), 00039 kb0 = GOSU_SCANCODE(0x1d, 0x0b), 00040 kb1 = GOSU_SCANCODE(0x12, 0x02), 00041 kb2 = GOSU_SCANCODE(0x13, 0x03), 00042 kb3 = GOSU_SCANCODE(0x14, 0x04), 00043 kb4 = GOSU_SCANCODE(0x15, 0x05), 00044 kb5 = GOSU_SCANCODE(0x17, 0x06), 00045 kb6 = GOSU_SCANCODE(0x16, 0x07), 00046 kb7 = GOSU_SCANCODE(0x1a, 0x08), 00047 kb8 = GOSU_SCANCODE(0x1c, 0x09), 00048 kb9 = GOSU_SCANCODE(0x19, 0x0a), 00049 kbTab = GOSU_SCANCODE(0x30, 0x0f), 00050 kbReturn = GOSU_SCANCODE(0x24, 0x1c), 00051 kbSpace = GOSU_SCANCODE(0x31, 0x39), 00052 kbLeftShift = GOSU_SCANCODE(0x38, 0x2a), 00053 kbRightShift = GOSU_SCANCODE(0x3c, 0x36), 00054 kbLeftControl = GOSU_SCANCODE(0x3b, 0x1d), 00055 kbRightControl = GOSU_SPECIAL_SCANCODE(0x3e, 0x9d, 0x61), 00056 kbLeftAlt = GOSU_SCANCODE(0x3a, 0x38), 00057 kbRightAlt = GOSU_SPECIAL_SCANCODE(0x3d, 0xb8, 0x64), 00058 kbLeftMeta = GOSU_SPECIAL_SCANCODE(0x37, 0xdb, 0x7d), 00059 kbRightMeta = GOSU_SPECIAL_SCANCODE(0x36, 0xdc, 0x7e), 00060 kbBackspace = GOSU_SCANCODE(0x33, 0x0e), 00061 kbLeft = GOSU_SPECIAL_SCANCODE(0x7b, 0xcb, 0x69), 00062 kbRight = GOSU_SPECIAL_SCANCODE(0x7c, 0xcd, 0x6a), 00063 kbUp = GOSU_SPECIAL_SCANCODE(0x7e, 0xc8, 0x67), 00064 kbDown = GOSU_SPECIAL_SCANCODE(0x7d, 0xd0, 0x6c), 00065 kbHome = GOSU_SPECIAL_SCANCODE(0x73, 0xc7, 0x66), 00066 kbEnd = GOSU_SPECIAL_SCANCODE(0x77, 0xcf, 0x6b), 00067 kbInsert = GOSU_SPECIAL_SCANCODE(0x72, 0xd2, 0x6e), 00068 kbDelete = GOSU_SPECIAL_SCANCODE(0x75, 0xd3, 0x6f), 00069 kbPageUp = GOSU_SPECIAL_SCANCODE(0x74, 0xc9, 0x68), 00070 kbPageDown = GOSU_SPECIAL_SCANCODE(0x79, 0xd1, 0x6d), 00071 kbEnter = GOSU_SPECIAL_SCANCODE(0x4c, 0x9c, 0x60), 00072 kbBacktick = GOSU_SCANCODE(0x32, 0x29), 00073 kbMinus = GOSU_SCANCODE(0x1b, 0x0c), 00074 kbEqual = GOSU_SCANCODE(0x18, 0x0d), 00075 kbBracketLeft = GOSU_SCANCODE(0x21, 0x1a), 00076 kbBracketRight = GOSU_SCANCODE(0x1e, 0x1b), 00077 kbBackslash = GOSU_SCANCODE(0x2a, 0x2b), 00078 kbSemicolon = GOSU_SCANCODE(0x29, 0x27), 00079 kbApostrophe = GOSU_SCANCODE(0x27, 0x28), 00080 kbComma = GOSU_SCANCODE(0x2b, 0x33), 00081 kbPeriod = GOSU_SCANCODE(0x2f, 0x34), 00082 kbSlash = GOSU_SCANCODE(0x2c, 0x35), 00083 kbA = GOSU_SCANCODE(0x00, 0x1e), 00084 kbB = GOSU_SCANCODE(0x0b, 0x30), 00085 kbC = GOSU_SCANCODE(0x08, 0x2e), 00086 kbD = GOSU_SCANCODE(0x02, 0x20), 00087 kbE = GOSU_SCANCODE(0x0e, 0x12), 00088 kbF = GOSU_SCANCODE(0x03, 0x21), 00089 kbG = GOSU_SCANCODE(0x05, 0x22), 00090 kbH = GOSU_SCANCODE(0x04, 0x23), 00091 kbI = GOSU_SCANCODE(0x22, 0x17), 00092 kbJ = GOSU_SCANCODE(0x26, 0x24), 00093 kbK = GOSU_SCANCODE(0x28, 0x25), 00094 kbL = GOSU_SCANCODE(0x25, 0x26), 00095 kbM = GOSU_SCANCODE(0x2e, 0x32), 00096 kbN = GOSU_SCANCODE(0x2d, 0x31), 00097 kbO = GOSU_SCANCODE(0x1f, 0x18), 00098 kbP = GOSU_SCANCODE(0x23, 0x19), 00099 kbQ = GOSU_SCANCODE(0x0c, 0x10), 00100 kbR = GOSU_SCANCODE(0x0f, 0x13), 00101 kbS = GOSU_SCANCODE(0x01, 0x1f), 00102 kbT = GOSU_SCANCODE(0x11, 0x14), 00103 kbU = GOSU_SCANCODE(0x20, 0x16), 00104 kbV = GOSU_SCANCODE(0x09, 0x2f), 00105 kbW = GOSU_SCANCODE(0x0d, 0x11), 00106 kbX = GOSU_SCANCODE(0x07, 0x2d), 00107 kbY = GOSU_SCANCODE(0x10, 0x15), 00108 kbZ = GOSU_SCANCODE(0x06, 0x2c), 00109 kbNumpad0 = GOSU_SCANCODE(0x52, 0x52), 00110 kbNumpad1 = GOSU_SCANCODE(0x53, 0x4f), 00111 kbNumpad2 = GOSU_SCANCODE(0x54, 0x50), 00112 kbNumpad3 = GOSU_SCANCODE(0x55, 0x51), 00113 kbNumpad4 = GOSU_SCANCODE(0x56, 0x4b), 00114 kbNumpad5 = GOSU_SCANCODE(0x57, 0x4c), 00115 kbNumpad6 = GOSU_SCANCODE(0x58, 0x4d), 00116 kbNumpad7 = GOSU_SCANCODE(0x59, 0x47), 00117 kbNumpad8 = GOSU_SCANCODE(0x5b, 0x48), 00118 kbNumpad9 = GOSU_SCANCODE(0x5c, 0x49), 00119 kbNumpadAdd = GOSU_SCANCODE(0x45, 0x4e), 00120 kbNumpadSubtract = GOSU_SCANCODE(0x4e, 0x4a), 00121 kbNumpadMultiply = GOSU_SCANCODE(0x43, 0x37), 00122 kbNumpadDivide = GOSU_SCANCODE(0x4b, 0xb5), 00123 kbRangeEnd = 0xff, 00124 00125 msRangeBegin, 00126 msLeft = msRangeBegin, 00127 msRight, 00128 msMiddle, 00129 msWheelUp, 00130 msWheelDown, 00131 msOther0, 00132 msOther1, 00133 msOther2, 00134 msOther3, 00135 msOther4, 00136 msOther5, 00137 msOther6, 00138 msOther7, 00139 msRangeEnd = 0x110, 00140 00141 gpRangeBegin, 00142 gpLeft = gpRangeBegin, 00143 gpRight, 00144 gpUp, 00145 gpDown, 00146 gpButton0, 00147 gpButton1, 00148 gpButton2, 00149 gpButton3, 00150 gpButton4, 00151 gpButton5, 00152 gpButton6, 00153 gpButton7, 00154 gpButton8, 00155 gpButton9, 00156 gpButton10, 00157 gpButton11, 00158 gpButton12, 00159 gpButton13, 00160 gpButton14, 00161 gpButton15, 00162 00163 gp0Left, 00164 gp0Right, 00165 gp0Up, 00166 gp0Down, 00167 gp0Button0, 00168 gp0Button1, 00169 gp0Button2, 00170 gp0Button3, 00171 gp0Button4, 00172 gp0Button5, 00173 gp0Button6, 00174 gp0Button7, 00175 gp0Button8, 00176 gp0Button9, 00177 gp0Button10, 00178 gp0Button11, 00179 gp0Button12, 00180 gp0Button13, 00181 gp0Button14, 00182 gp0Button15, 00183 00184 gp1Left, 00185 gp1Right, 00186 gp1Up, 00187 gp1Down, 00188 gp1Button0, 00189 gp1Button1, 00190 gp1Button2, 00191 gp1Button3, 00192 gp1Button4, 00193 gp1Button5, 00194 gp1Button6, 00195 gp1Button7, 00196 gp1Button8, 00197 gp1Button9, 00198 gp1Button10, 00199 gp1Button11, 00200 gp1Button12, 00201 gp1Button13, 00202 gp1Button14, 00203 gp1Button15, 00204 00205 gp2Left, 00206 gp2Right, 00207 gp2Up, 00208 gp2Down, 00209 gp2Button0, 00210 gp2Button1, 00211 gp2Button2, 00212 gp2Button3, 00213 gp2Button4, 00214 gp2Button5, 00215 gp2Button6, 00216 gp2Button7, 00217 gp2Button8, 00218 gp2Button9, 00219 gp2Button10, 00220 gp2Button11, 00221 gp2Button12, 00222 gp2Button13, 00223 gp2Button14, 00224 gp2Button15, 00225 00226 gp3Left, 00227 gp3Right, 00228 gp3Up, 00229 gp3Down, 00230 gp3Button0, 00231 gp3Button1, 00232 gp3Button2, 00233 gp3Button3, 00234 gp3Button4, 00235 gp3Button5, 00236 gp3Button6, 00237 gp3Button7, 00238 gp3Button8, 00239 gp3Button9, 00240 gp3Button10, 00241 gp3Button11, 00242 gp3Button12, 00243 gp3Button13, 00244 gp3Button14, 00245 gp3Button15, 00246 00247 gpRangeEnd = gp3Button15, 00248 00249 numButtons = gpRangeEnd + 1, 00250 numGamepads = 4, 00251 noButton = 0xffffffff, 00252 00253 kbNum = kbRangeEnd - kbRangeBegin + 1, 00254 msNum = msRangeEnd - msRangeBegin + 1, 00255 gpNum = gpRangeEnd - gpRangeBegin + 1, 00256 gpNumPerGamepad = gpNum / (numGamepads + 1), 00257 }; 00258 } 00259 00260 #undef GOSU_SCANCODE 00261 #undef GOSU_SPECIAL_SCANCODE 00262 00263 #endif