actionKeys: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Text replacement - " " to " ")
m (Fix SQF)
 
(20 intermediate revisions by 3 users not shown)
Line 22: Line 22:


|descr= Returns [[Array]] containing [[DIK_KeyCodes|dikCodes]] of keys, buttons and combos assigned to the given user action. Action names could be found in config class ControllerSchemes or [[:Category:Key Actions|user action names]] or user profile, for example:
|descr= Returns [[Array]] containing [[DIK_KeyCodes|dikCodes]] of keys, buttons and combos assigned to the given user action. Action names could be found in config class ControllerSchemes or [[:Category:Key Actions|user action names]] or user profile, for example:
<syntaxhighlight lang=cpp>
<syntaxhighlight lang="cpp">
keyWatch[] = { 24 };
keyWatch[] = { 24 };
</syntaxhighlight>
</syntaxhighlight>
To retrieve the value, use the property name without 'key':
To retrieve the value, use the property name without 'key':
<code>[[actionKeys]] "Watch"; {{cc|24}}</code>
<sqf>actionKeys "Watch"; // 24</sqf>
In addition, some of the actions are also listed in here: [[inputAction/actions]]
In addition, some of the actions are also listed in here: [[inputAction/actions]]


Line 35: Line 35:
|r1= [[Array]] of [[Number]]s
|r1= [[Array]] of [[Number]]s


|x1= <code>_array = [[actionKeys]] "ReloadMagazine"</code>
|s2= [[actionKeys]] [userAction]
|s2since=Arma3 2.08


|seealso= [[actionKeysNames]], [[actionKeysNamesArray]], [[actionKeysImages]], [[actionName]], [[inputAction]]
|p21= userAction: [[String]]
 
|r2= [[Array]] of [[String]]s
 
|x1= <sqf>_arrayOfNumbers = actionKeys "ReloadMagazine";</sqf>
|x2= From {{arma3}} v2.08: <sqf>_arrayOfStrings = actionKeys ["ReloadMagazine"];</sqf>
 
|seealso= [[actionKeysNames]] [[actionKeysNamesArray]] [[actionKeysImages]] [[actionName]] [[inputAction]] [[addUserActionEventHandler]]
}}
}}


<dl class="command_description">
{{Note
<dt></dt>
|user= AgentRev
<dd class="notedate">Posted on May 11, 2016 - 02:36 (UTC)</dd>
|timestamp= 20160511023600
<dt class="note">[[User:AgentRevolution|AgentRev]]</dt>
|text= If an action key is configured with a modifier (e.g. "Right Ctrl + M" for "MiniMapToggle"), the DIK code returned by this command has a weird value, equivalent to the following:<br>
<dd class="note">
: Left Ctrl + Key = 486539264 + DIK
If an action key is configured with a modifier (e.g. "Right Ctrl + M" for "MiniMapToggle"), the DIK code returned by this command has a weird value, equivalent to the following:<br>
: Left Shift + Key = 704643072 + DIK
<code>Left Ctrl + Key = 486539264 + DIK
: Left Alt + Key = 939524096 + DIK
Left Shift + Key = 704643072 + DIK
: Right Ctrl + Key = -1660944384 + DIK
Left Alt + Key = 939524096 + DIK
: Right Shift + Key = 905969664 + DIK
Right Ctrl + Key = -1660944384 + DIK
: Right Alt + Key = -1207959552 + DIK</sqf>
Right Shift + Key = 905969664 + DIK
 
Right Alt + Key = -1207959552 + DIK</code>
This increases the difficulty of accurately comparing key codes to actionKeys in [[User_Interface_Event_Handlers|UI event handlers]]. Those strange numbers are probably due to bit flags being added to the DIK value by the game engine for easier storage in the [[Profile|ArmaProfile]].<br>
This increases the difficulty of accurately comparing key codes to actionKeys in [[User_Interface_Event_Handlers|UI event handlers]]. Those strange numbers are probably due to bit flags being added to the DIK value by the game engine for easier storage in the ArmaProfile.<br>
In case of mouse buttons, actionKeys will also return values that are different from those in "MouseButton" UI events:<br>
In case of mouse buttons, actionKeys will also return values that are different from those in "MouseButton" UI events:<br>
<br>
: LMB: MouseButton 0 = actionKeys 65536
<code>LMB: MouseButton 0 = actionKeys 65536
: RMB: MouseButton 1 = actionKeys 65665 (65536 + 1 + 128)
RMB: MouseButton 1 = actionKeys 65665 (65536 + 1 + 128)
: MMB: MouseButton 2 = actionKeys 65538 (65536 + 2)
MMB: MouseButton 2 = actionKeys 65538 (65536 + 2)
: 4MB: MouseButton 3 = actionKeys 65539 (65536 + 3)
4MB: MouseButton 3 = actionKeys 65539 (65536 + 3)
: 5MB: MouseButton 4 = actionKeys 65540 (65536 + 4)
5MB: MouseButton 4 = actionKeys 65540 (65536 + 4)</code>
The values above are valid for a right-handed mouse configuration, and may or may not differ for a left-handed config.
The values above are valid for a right-handed mouse configuration, and may or may not differ for a left-handed config.
<br><small>''Note edited by [[User:R3vo|R3vo]] ([[User talk:R3vo|talk]]) 13:04, 19 March 2021 (CET)''</small>
<br><small>''Note edited by [[User:R3vo|R3vo]] ([[User talk:R3vo|talk]]) 13:04, 19 March 2021 (CET)''</small>
</dd>
}}
<dt><dt>
 
<dd class="notedate">Posted on August 6, 2016 - 12:24 (UTC)</dd>
{{Note
<dt class="note">[[User:Commy2|Commy2]]</dt>
|user= Commy2
<dd class="note">
|timestamp= 20160806122400
'''The method described by {{User|AgentRev}} does not work <u>reliably</u>.''' All numbers in SQF are floats and those are only precise up to 6...7 digits.<br>
|text= '''The values described by {{User|AgentRev}} cannot be compared <u>reliably</u>.''' All numbers in SQF are floats and those are only precise up to 7 digits.<br>
<code>486539264 + 19 == 486539264 + 20{{cc|Returns [[true]]}}</code>
<sqf>486539264 + 19 == 486539264 + 20 // returns true</sqf>
The DIK codes for <tt>LCtrl + R</tt> and <tt>LCtrl + T</tt> are indistinguishable.
The DIK codes for {{hl|LCtrl + R}} and {{hl|LCtrl + T}} are indistinguishable.
<br><small>''Note edited by [[User:R3vo|R3vo]] ([[User talk:R3vo|talk]]) 13:04, 19 March 2021 (CET)''</small>
<br><small>''Note edited by [[User:R3vo|R3vo]] ([[User talk:R3vo|talk]]) 13:04, 19 March 2021 (CET)''</small>
</dd>
}}
</dl>

Latest revision as of 17:06, 1 November 2022

Hover & click on the images for description

Description

Description:
Returns Array containing dikCodes of keys, buttons and combos assigned to the given user action. Action names could be found in config class ControllerSchemes or user action names or user profile, for example:
keyWatch[] = { 24 };

To retrieve the value, use the property name without 'key':

actionKeys "Watch"; // 24

In addition, some of the actions are also listed in here: inputAction/actions
Groups:
Interaction

Syntax

Syntax:
actionKeys userAction
Parameters:
userAction: String
Return Value:
Array of Numbers

Alternative Syntax

Syntax:
actionKeys [userAction]
Parameters:
userAction: String
Return Value:
Array of Strings

Examples

Example 1:
_arrayOfNumbers = actionKeys "ReloadMagazine";
Example 2:
From Arma 3 v2.08:
_arrayOfStrings = actionKeys ["ReloadMagazine"];

Additional Information

See also:
actionKeysNames actionKeysNamesArray actionKeysImages actionName inputAction addUserActionEventHandler

Notes

Report bugs on the Feedback Tracker and/or discuss them on the Arma Discord or on the Forums.
Only post proven facts here! Add Note
AgentRev - c
Posted on May 11, 2016 - 02:36 (UTC)
If an action key is configured with a modifier (e.g. "Right Ctrl + M" for "MiniMapToggle"), the DIK code returned by this command has a weird value, equivalent to the following:
Left Ctrl + Key = 486539264 + DIK
Left Shift + Key = 704643072 + DIK
Left Alt + Key = 939524096 + DIK
Right Ctrl + Key = -1660944384 + DIK
Right Shift + Key = 905969664 + DIK
Right Alt + Key = -1207959552 + DIK</sqf>
This increases the difficulty of accurately comparing key codes to actionKeys in UI event handlers. Those strange numbers are probably due to bit flags being added to the DIK value by the game engine for easier storage in the ArmaProfile.
In case of mouse buttons, actionKeys will also return values that are different from those in "MouseButton" UI events:
LMB: MouseButton 0 = actionKeys 65536
RMB: MouseButton 1 = actionKeys 65665 (65536 + 1 + 128)
MMB: MouseButton 2 = actionKeys 65538 (65536 + 2)
4MB: MouseButton 3 = actionKeys 65539 (65536 + 3)
5MB: MouseButton 4 = actionKeys 65540 (65536 + 4)
The values above are valid for a right-handed mouse configuration, and may or may not differ for a left-handed config.
Note edited by R3vo (talk) 13:04, 19 March 2021 (CET)
Commy2 - c
Posted on Aug 06, 2016 - 12:24 (UTC)
The values described by AgentRev cannot be compared reliably. All numbers in SQF are floats and those are only precise up to 7 digits.
486539264 + 19 == 486539264 + 20 // returns true
The DIK codes for LCtrl + R and LCtrl + T are indistinguishable.
Note edited by R3vo (talk) 13:04, 19 March 2021 (CET)