// Emacs style mode select -*- C++ -*- //----------------------------------------------------------------------------- // // Copyright(C) 2007 Simon Howard // // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // as published by the Free Software Foundation; either version 2 // of the License, or (at your option) any later version. // // This program 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 General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA // 02111-1307, USA. // // DESCRIPTION: // System-specific joystick interface. // //----------------------------------------------------------------------------- #ifndef __I_JOYSTICK__ #define __I_JOYSTICK__ // If this bit is set in a configuration file axis value, the axis is // not actually a joystick axis, but instead is a "button axis". This // means that instead of reading an SDL joystick axis, we read the // state of two buttons to get the axis value. This is needed for eg. // the PS3 SIXAXIS controller, where the D-pad buttons register as // buttons, not as two axes. #define BUTTON_AXIS 0x10000 // Query whether a given axis value describes a button axis. #define IS_BUTTON_AXIS(axis) ((axis) >= 0 && ((axis) & BUTTON_AXIS) != 0) // Get the individual buttons from a button axis value. #define BUTTON_AXIS_NEG(axis) ((axis) & 0xff) #define BUTTON_AXIS_POS(axis) (((axis) >> 8) & 0xff) // Create a button axis value from two button values. #define CREATE_BUTTON_AXIS(neg, pos) (BUTTON_AXIS | (neg) | ((pos) << 8)) void I_InitJoystick(void); void I_ShutdownJoystick(void); void I_UpdateJoystick(void); void I_BindJoystickVariables(void); #endif /* #ifndef __I_JOYSTICK__ */