--[[ * * Singe 3 * Copyright (C) 2006-2026 Scott Duensing * * 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 3 * 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., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * * --]] -- Default Mappings -- How far an axis must move before it counts as pressed, in raw axis units: SDL reports 32767 at -- full deflection, so 15000 is a little under half way. It covers every axis of every gamepad, -- the two analogue triggers included. DEAD_ZONE = 15000 -- One axis at a time, for a stiff stick or a worn trigger, in the same raw units. Each entry is -- { axis, dead zone }, where the axis is any GAMEPAD_N axis entry -- the axis itself or either of -- its two directions, which all name the same axis. Anything not listed keeps DEAD_ZONE. DEAD_ZONES = { -- { GAMEPAD_0.AXIS_LEFT_X, 8000 }, -- { GAMEPAD_0.AXIS_LEFT_Y, 8000 }, } -- How far an analogue trigger must travel before it counts as a button, as a per cent of full -- travel: Hypseus's unit, where its own default is 99.5. Zero leaves the triggers on DEAD_ZONE, -- which is what Singe has always given them, and --trigger_threshold on the command line wins over -- whatever is set here. 15000 raw units is 45.8 per cent, for comparison. TRIGGER_THRESHOLD = 0 -- One table per switch, in the order the engine numbers them (SWITCH_UP = 0 ...). -- Each entry is a { name, value } pair from the SCANCODE, GAMEPAD_N, or MOUSE_N tables. INPUT_UP = { SCANCODE.UP, SCANCODE.KP_8, GAMEPAD_0.AXIS_LEFT_Y_U, GAMEPAD_0.AXIS_RIGHT_Y_U, GAMEPAD_0.DPAD_UP } INPUT_LEFT = { SCANCODE.LEFT, SCANCODE.KP_4, GAMEPAD_0.AXIS_LEFT_X_L, GAMEPAD_0.AXIS_RIGHT_X_L, GAMEPAD_0.DPAD_LEFT } INPUT_DOWN = { SCANCODE.DOWN, SCANCODE.KP_2, GAMEPAD_0.AXIS_LEFT_Y_D, GAMEPAD_0.AXIS_RIGHT_Y_D, GAMEPAD_0.DPAD_DOWN } INPUT_RIGHT = { SCANCODE.RIGHT, SCANCODE.KP_6, GAMEPAD_0.AXIS_LEFT_X_R, GAMEPAD_0.AXIS_RIGHT_X_R, GAMEPAD_0.DPAD_RIGHT } INPUT_1P_START = { SCANCODE.MAIN_1, GAMEPAD_0.BUTTON_RIGHT_BUMPER } INPUT_2P_START = { SCANCODE.MAIN_2 } INPUT_ACTION_1 = { SCANCODE.SPACE, SCANCODE.LCTRL, GAMEPAD_0.BUTTON_A, MOUSE_0.BUTTON_RIGHT } INPUT_ACTION_2 = { SCANCODE.LALT, GAMEPAD_0.BUTTON_B, MOUSE_0.BUTTON_MIDDLE } INPUT_ACTION_3 = { SCANCODE.LSHIFT, GAMEPAD_0.BUTTON_X, MOUSE_0.BUTTON_LEFT } INPUT_1P_COIN = { SCANCODE.MAIN_5, SCANCODE.C, GAMEPAD_0.BUTTON_LEFT_BUMPER } INPUT_2P_COIN = { SCANCODE.MAIN_6 } INPUT_SKILL_EASY = { SCANCODE.KP_DIVIDE } INPUT_SKILL_MEDIUM = { SCANCODE.KP_MULTIPLY } INPUT_SKILL_HARD = { SCANCODE.KP_MINUS } INPUT_SERVICE = { SCANCODE.MAIN_9 } INPUT_TEST_MODE = { SCANCODE.F2 } INPUT_RESET_CPU = { SCANCODE.F3 } INPUT_SCREENSHOT = { SCANCODE.F12, SCANCODE.F11, GAMEPAD_0.BUTTON_BACK } -- F12 is taken by some desktops and debuggers, so F11 works too. INPUT_QUIT = { SCANCODE.ESCAPE, SCANCODE.Q } INPUT_PAUSE = { SCANCODE.P, GAMEPAD_0.BUTTON_START } INPUT_CONSOLE = { SCANCODE.GRAVE } INPUT_ACTION_4 = { SCANCODE.RSHIFT, GAMEPAD_0.BUTTON_Y, MOUSE_0.BUTTON_X1 } INPUT_TILT = { SCANCODE.T } INPUT_GRAB = { SCANCODE.G } -- Not a control: the engine raises this one itself when a mouse or a light gun is unplugged, so a -- gun game can say so on screen. Bind a key to it as well if you want to test what the game does. INPUT_MOUSE_DISCONNECT = { }