Buttons.hpp
Go to the documentation of this file.
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