В предыдущем примере предполагается, что вы хотите проверить, есть ли кнопки по-прежнему нажата или нет. Мы были не уверены, если это то, что вы пытаетесь отслеживать. Если вы просто хотите, чтобы отслеживать, была ли кнопка была нажата один раз быстро, что немного отличается. Вы можете использовать "Hook" плагин с переменными в этой второй ситуации.
В следующем примере мы отслеживаем ли "Z" кнопка была нажата один раз быстро. Если нет, то программа будет нажать и отпустить кнопку "Z". Но после того, как кнопка была нажата один раз, то программа никогда не будет снова нажать кнопку, поскольку переменная остается "True". Вы можете изменить условия. Это лишь пример.
<?xml version="1.0" encoding="utf-16"?>
<!--VoxCommando 2.1.3.6-->
<commandGroup open="True" name="Elite Dangerous test" enabled="True" prefix="" priority="0" requiredProcess="" description="">
<command id="444" name="Switch on (включать)" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
<if ifBlockDisabled="False" ifNot="False">
<ifType>(A)==(B)</ifType>
<ifParams>{var.toggle-z}&&True</ifParams>
<then>
<action>
<cmdType>OSD.ShowText</cmdType>
<params>
<param>Я не буду ничего делать. Это было сделано раньше.</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>VC.TriggerEvent</cmdType>
<params>
<param>Hook.Z</param>
</params>
<cmdRepeat>0</cmdRepeat>
</action>
</then>
<else>
<action>
<cmdType>OSD.ShowText</cmdType>
<params>
<param>включать</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>DxInput.KeyPress</cmdType>
<params>
<param>z</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
</else>
</if>
<phrase>Switch on, включать</phrase>
</command>
<command id="446" name="Set the variable (установить переменную)" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
<if ifBlockDisabled="False" ifNot="False">
<ifType>(A)==(B)</ifType>
<ifParams>{var.toggle-z}&&False</ifParams>
<then>
<action>
<cmdType>Results.SetVar</cmdType>
<params>
<param>toggle-z</param>
<param>True</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
</then>
<else>
<action>
<cmdType>Results.SetVar</cmdType>
<params>
<param>toggle-z</param>
<param>False</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
</else>
</if>
<event>VC.Loaded</event>
<event>Hook.Z</event>
</command>
</commandGroup>
The example in the previous post assumes that you want to check if a key combination is still pressed down or not. We were not sure if this is what you are actually trying to monitor. If you just want to keep track of whether the key has been pressed once, quickly, that is a little different. You can use the "Hook" plugin with variables in this second situation.
In the following example, we keep track of whether the "Z" key was pressed once quickly. If not, the program will press and release the "Z" key. But after it has been pressed once, the program will never again press the button, because the variable remains "true". You can change these conditions to be more sophisticated. This is just an example.