From ae18d8c4b6f7f918aa5ec496ca32899793cbe41e Mon Sep 17 00:00:00 2001 From: Simon Howard Date: Fri, 21 Nov 2008 18:03:06 +0000 Subject: Move setup/ into src/ and merge with main codebase. Remove duplicated code. Split out I_Endoom to separate i_endoom.c file. Subversion-branch: /branches/raven-branch Subversion-revision: 1384 --- src/setup/keyboard.c | 143 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 143 insertions(+) create mode 100644 src/setup/keyboard.c (limited to 'src/setup/keyboard.c') diff --git a/src/setup/keyboard.c b/src/setup/keyboard.c new file mode 100644 index 00000000..3a7ccb8f --- /dev/null +++ b/src/setup/keyboard.c @@ -0,0 +1,143 @@ +// Emacs style mode select -*- C++ -*- +//----------------------------------------------------------------------------- +// +// Copyright(C) 2006 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. +// +#include "textscreen.h" +#include "doomtype.h" + +#include "execute.h" +#include "txt_keyinput.h" + +#include "joystick.h" +#include "keyboard.h" + +int key_left = KEY_LEFTARROW; +int key_right = KEY_RIGHTARROW; +int key_up = KEY_UPARROW; +int key_down = KEY_DOWNARROW; +int key_strafeleft = ','; +int key_straferight = '.'; +int key_fire = KEY_RCTRL; +int key_use = ' '; +int key_strafe = KEY_RALT; +int key_speed = KEY_RSHIFT; + +int vanilla_keyboard_mapping = 1; + +static int always_run = 0; + +static int *allkeys[] = {&key_left, &key_right, &key_up, &key_down, + &key_strafeleft, &key_straferight, &key_fire, + &key_use, &key_strafe, &key_speed}; + +static void UpdateJoybSpeed(TXT_UNCAST_ARG(widget), TXT_UNCAST_ARG(var)) +{ + if (always_run) + { + /* + if you want to pick one for chocolate doom to use, + pick 29, since that is the most universal one that + also works with heretic, hexen and strife =P + + NB. This choice also works with original, ultimate and final exes. + */ + + joybspeed = 29; + } + else + { + joybspeed = 0; + } +} + +// Callback invoked when a key control is set + +static void KeySetCallback(TXT_UNCAST_ARG(widget), TXT_UNCAST_ARG(variable)) +{ + TXT_CAST_ARG(int, variable); + unsigned int i; + + for (i=0; i= 20; + + window = TXT_NewWindow("Keyboard configuration"); + + TXT_AddWidgets(window, + TXT_NewSeparator("Movement"), + movement_table = TXT_NewTable(2), + + TXT_NewSeparator("Action"), + action_table = TXT_NewTable(2), + + TXT_NewSeparator("Misc."), + run_control = TXT_NewCheckBox("Always run", &always_run), + TXT_NewInvertedCheckBox("Use native keyboard mapping", + &vanilla_keyboard_mapping), + NULL); + + TXT_SetColumnWidths(movement_table, 20, 8); + + TXT_SignalConnect(run_control, "changed", UpdateJoybSpeed, NULL); + + AddKeyControl(movement_table, "Move Forward", &key_up); + AddKeyControl(movement_table, "Move Backward", &key_down); + AddKeyControl(movement_table, "Turn Left", &key_left); + AddKeyControl(movement_table, "Turn Right", &key_right); + AddKeyControl(movement_table, "Strafe Left", &key_strafeleft); + AddKeyControl(movement_table, "Strafe Right", &key_straferight); + AddKeyControl(movement_table, "Speed On", &key_speed); + AddKeyControl(movement_table, "Strafe On", &key_strafe); + + TXT_SetColumnWidths(action_table, 20, 8); + + AddKeyControl(action_table, "Use", &key_use); + AddKeyControl(action_table, "Fire", &key_fire); + + TXT_SetWindowAction(window, TXT_HORIZ_CENTER, TestConfigAction()); +} + -- cgit v1.2.3