Jump to content
Sign in to follow this  
PhilippRauch

More Access for Addondevelopers to Keymaps

Recommended Posts

If we can map any and endless (joystick)keys to actions, scripts and variables that would be nice.

I have several sticks with like 32 buttons and 8 rotary and whatnot... especially if i use a HOTAS setup there would be loads of possible switches and buttons and dials to attach to some functions.

i.e.

I mean that addonmakers can add their "actions" (or GlobalVariables etc) to the games keymap menu, where the player then can set his joystick buttons or keyboard or... as he likes.

for example:

I write some in my config like CfgUserInput or CfgHID or so...

class NewKeyMapMenuEntry {

     idp = 34 // position in Keymap list.

     isRemappable = 0; // if so user can change it to own inside game

     isKeyboard = 0; // for creating listentry

     isJoystick = 1;

     isWheel = 0;

     isPedal = 0;

     isAnalog = 0; // for sliders and dials or throttles

     isInputControl[] = "Button";

        // or "Rotary", "Dial", "Switch", "CoolieHatMouse",  depending on what type inputcontrol we want it to be

     HIDid = 32; // to set the DIK or HID id or such if  "isRemappable = 0"

     entryName = "Firebutton - SuperAddon";  // name appearing in list

     actions[] = {["this"] spawn Keychecksrc; VIG_keycheckFireBx32 = true}; // well what happens on keypress etc

            // if analog = 1 "this" will contain the momentary state of the dial/throttle i.e. 10%, 55% etc..

};

Which will give a entry under options/keysettings like:

Firebutton - SuperAddon  [JoyButton_32]

the [JoyButton_#] is made up from the isJoystick,isInputControl,HIDid

If you have isRemappable = 1 then it would be

Firebutton - SuperAddon  [JoyButton_XXXXXXXX]

with XXXXXXXX you new attached key. (HID id or such)

how about something like that?

i know it could be done via armalib with its pipes and an external keymapper, but that would be just a workaround

Share this post


Link to post
Share on other sites

I like this suggestion smile_o.gif

Would be very useful especially for mods like ACE. ACE already has custom controls and the ability to configure them like this would be much more user-friendly than the current method.

Share this post


Link to post
Share on other sites

is it there already???i am not really sure, but this might be useful to some..

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">class ControllerSchemes {

class Default {

name = $STR_XBOX_CONTROLER_SCHEME_DEFAULT;

class Gamepad {

class ButtonDeadZones : ButtonDeadZonesDefault {

deadZone_LeftTrigger[] = {192, 128};

deadZone_RightTrigger[] = {80, 64};

};

class ThumbStickDeadZones {

leftX = 0.21;

leftY = 0.23;

rightX = 0.21;

rightY = 0.23;

};

class Actions {

ToggleWeapons[] = {0x00050000 + 1};

DefaultAction[] = {0x00050000 + 13};

ReloadMagazine[] = {0x00050000 + 2};

LookAround[] = {0x00050000 + 12};

LockTarget[] = {};

RevealTarget[] = {0x00050000 + 12};

VehLockTargets[] = {0x00050000 + 14};

PrevAction[] = {0x00050000 + 4};

NextAction[] = {0x00050000 + 5};

Action[] = {0x00050000 + 0};

MenuSelect[] = {0x00050000 + 7};

MenuBack[] = {0x00050000 + 6};

CancelAction[] = {0x00050000 + 2};

Compass[] = {0x00050000 + 11};

ShowMap[] = {0x00050000 + 10};

HideMap[] = {0x00050000 + 10};

ZoomCont[] = {0x00050000 + 12};

PersonView[] = {0x00050000 + 9};

IngamePause[] = {0x00050000 + 8};

Optics[] = {0x00050000 + 15};

CommandLeft[] = {0x00050000 + 20, 0, {"Gamma", 1.0, 3}};

CommandRight[] = {0x00050000 + 16, 0, {"Gamma", 1.0, 3}};

CommandForward[] = {0x00050000 + 17, 0, {"Gamma", 1.0, 1.5}};

CommandBack[] = {0x00050000 + 21, 0, {"Gamma", 1.0, 1.5}};

CommandFast[] = {};

CommandSlow[] = {};

};

};

class Joystick {

class ButtonDeadZones : ButtonDeadZonesDefault {

deadZone_LeftTrigger[] = {192, 128};

deadZone_RightTrigger[] = {80, 64};

};

class ThumbStickDeadZones {

leftX = 0.21;

leftY = 0.23;

rightX = 0.21;

rightY = 0.23;

};

class Actions {

ToggleWeapons[] = {0x00050000 + 1};

DefaultAction[] = {0x00050000 + 0};

ReloadMagazine[] = {0x00050000 + 2};

LookAround[] = {0x00050000 + 15};

LockTarget[] = {};

RevealTarget[] = {0x00050000 + 15};

VehLockTargets[] = {0x00050000 + 11};

PrevAction[] = {0x00050000 + 4};

NextAction[] = {0x00050000 + 5};

Action[] = {0x00050000 + 14};

MenuSelect[] = {0x00050000 + 7};

MenuBack[] = {0x00050000 + 6};

CancelAction[] = {0x00050000 + 2};

Compass[] = {};

ShowMap[] = {0x00050000 + 10};

HideMap[] = {0x00050000 + 10};

ZoomCont[] = {0x00050000 + 15};

PersonView[] = {0x00050000 + 9};

IngamePause[] = {0x00050000 + 8};

Optics[] = {};

CommandLeft[] = {0x00050000 + 22, 0, {"Gamma", 1.0, 3}};

CommandRight[] = {0x00050000 + 18, 0, {"Gamma", 1.0, 3}};

CommandForward[] = {0x00050000 + 13, 0, {"Gamma", 1.0, 1.5}};

CommandBack[] = {0x00050000 + 12, 0, {"Gamma", 1.0, 1.5}};

CommandFast[] = {};

CommandSlow[] = {};

};

};

also there are entires for joystick and wheel.

is it possible to define own Actions, for above code?..

If so, where does it execute or how? (see example)

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">class CfgActions

{

class None

{

priority=0;

show=1;

showWindow=0;

hideOnUse=1;

shortcut="";

text="";

textDefault="";

textSimple="";

};

class GetInCommander: None

{

priority=0.899000;

showWindow=1;

text="$STR_ACTION_GETIN_COMMANDER";

textDefault="$STR_ACTION_GETIN_COMMANDER";

};

class NewSuperAction: None

{

priority=0.899000;

showWindow=1;

text="$STR_ACTION_NEW_SUPER";

textDefault="$STR_ACTION_NEW_SUPER";

action = "call somecode"; // huh.gif

init="call somecode"; // huh.gif

};

interesting... but still not what we want/are looking for i guess

Share this post


Link to post
Share on other sites

The main issue is that we have in ArmA 1 button assignments generic for all vehicles/weapons/units. Only granularity is that some are valid only for some vehicles/unit classes.

But what we really need is a keymapping that comes with each addon and the default values are inside the addon and BIS defines a common way to make the keybinding visible and changable for each user. The changes are stored at the client with a reference to a unique ID of the addon.

Keymappings should be even defined for each position in a vehicle and also for each "weapon".

Example: Button "W" might be in a truck "foreward", as a soldier in normal condition "walking" as a soldier holding the weapon (addon) mixer it turns on the kitchen-aid, conflicts should not appear.

But true, some functions need to be accessible in any situation like MAP or order menu. Hence a good solution is required to have fast access to common functions with a minimum of blocked keys.

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

×