Added new GUI options to "macro special action" screen (run on release, repeat, synchronized run, keep key state). Added tooltip explanation texts to these macro options.

This commit is contained in:
mika-n 2019-08-11 21:54:54 +03:00
parent 6815c53fde
commit 45bfd2043a
9 changed files with 344 additions and 298 deletions

View File

@ -2231,209 +2231,7 @@ namespace DS4Windows
}
}
/*
private static async void PlayMacro(int device, bool[] macrocontrol, string macro, DS4Controls control, DS4KeyType keyType)
{
if (macro.StartsWith("164/9/9/164") || macro.StartsWith("18/9/9/18"))
{
string[] skeys;
int wait = 1000;
if (!string.IsNullOrEmpty(macro))
{
skeys = macro.Split('/');
ushort delay;
if (ushort.TryParse(skeys[skeys.Length - 1], out delay) && delay > 300)
wait = delay - 300;
}
AltTabSwapping(wait, device);
if (control != DS4Controls.None)
macrodone[DS4ControltoInt(control)] = true;
}
else
{
string[] skeys;
int[] keys;
if (!string.IsNullOrEmpty(macro))
{
skeys = macro.Split('/');
keys = new int[skeys.Length];
}
else
{
skeys = new string[0];
keys = new int[0];
}
for (int i = 0; i < keys.Length; i++)
keys[i] = int.Parse(skeys[i]);
bool[] keydown = new bool[286];
if (control == DS4Controls.None || !macrodone[DS4ControltoInt(control)])
{
if (control != DS4Controls.None)
macrodone[DS4ControltoInt(control)] = true;
foreach (int i in keys)
{
if (i >= 1000000000)
{
if (i > 1000000000)
{
string lb = i.ToString().Substring(1);
byte r = (byte)(int.Parse(lb[0].ToString()) * 100 + int.Parse(lb[1].ToString()) * 10 + int.Parse(lb[2].ToString()));
byte g = (byte)(int.Parse(lb[3].ToString()) * 100 + int.Parse(lb[4].ToString()) * 10 + int.Parse(lb[5].ToString()));
byte b = (byte)(int.Parse(lb[6].ToString()) * 100 + int.Parse(lb[7].ToString()) * 10 + int.Parse(lb[8].ToString()));
DS4LightBar.forcelight[device] = true;
DS4LightBar.forcedFlash[device] = 0;
DS4LightBar.forcedColor[device] = new DS4Color(r, g, b);
}
else
{
DS4LightBar.forcedFlash[device] = 0;
DS4LightBar.forcelight[device] = false;
}
}
else if (i >= 1000000)
{
DS4Device d = Program.rootHub.DS4Controllers[device];
string r = i.ToString().Substring(1);
byte heavy = (byte)(int.Parse(r[0].ToString()) * 100 + int.Parse(r[1].ToString()) * 10 + int.Parse(r[2].ToString()));
byte light = (byte)(int.Parse(r[3].ToString()) * 100 + int.Parse(r[4].ToString()) * 10 + int.Parse(r[5].ToString()));
d.setRumble(light, heavy);
}
else if (i >= 300) //ints over 300 used to delay
await Task.Delay(i - 300);
else if (!keydown[i])
{
if (i == 256) InputMethods.MouseEvent(InputMethods.MOUSEEVENTF_LEFTDOWN); //anything above 255 is not a keyvalue
else if (i == 257) InputMethods.MouseEvent(InputMethods.MOUSEEVENTF_RIGHTDOWN);
else if (i == 258) InputMethods.MouseEvent(InputMethods.MOUSEEVENTF_MIDDLEDOWN);
else if (i == 259) InputMethods.MouseEvent(InputMethods.MOUSEEVENTF_XBUTTONDOWN, 1);
else if (i == 260) InputMethods.MouseEvent(InputMethods.MOUSEEVENTF_XBUTTONDOWN, 2);
else if (i == 261) { macroControl[0] = true; macroCount++; }
else if (i == 262) { macroControl[1] = true; macroCount++; }
else if (i == 263) { macroControl[2] = true; macroCount++; }
else if (i == 264) { macroControl[3] = true; macroCount++; }
else if (i == 265) { macroControl[4] = true; macroCount++; }
else if (i == 266) { macroControl[5] = true; macroCount++; }
else if (i == 267) { macroControl[6] = true; macroCount++; }
else if (i == 268) { macroControl[7] = true; macroCount++; }
else if (i == 269) { macroControl[8] = true; macroCount++; }
else if (i == 270) { macroControl[9] = true; macroCount++; }
else if (i == 271) { macroControl[10] = true; macroCount++; }
else if (i == 272) { macroControl[11] = true; macroCount++; }
else if (i == 273) { macroControl[12] = true; macroCount++; }
else if (i == 274) { macroControl[13] = true; macroCount++; }
else if (i == 275) { macroControl[14] = true; macroCount++; }
else if (i == 276) { macroControl[15] = true; macroCount++; }
else if (i == 277) { macroControl[16] = true; macroCount++; }
else if (i == 278) { macroControl[17] = true; macroCount++; }
else if (i == 279) { macroControl[18] = true; macroCount++; }
else if (i == 280) { macroControl[19] = true; macroCount++; }
else if (i == 281) { macroControl[20] = true; macroCount++; }
else if (i == 282) { macroControl[21] = true; macroCount++; }
else if (i == 283) { macroControl[22] = true; macroCount++; }
else if (i == 284) { macroControl[23] = true;macroCount++; }
else if (i == 285) { macroControl[24] = true; macroCount++; }
else if (keyType.HasFlag(DS4KeyType.ScanCode))
InputMethods.performSCKeyPress((ushort)i);
else
InputMethods.performKeyPress((ushort)i);
keydown[i] = true;
}
else
{
if (i == 256) InputMethods.MouseEvent(InputMethods.MOUSEEVENTF_LEFTUP); //anything above 255 is not a keyvalue
else if (i == 257) InputMethods.MouseEvent(InputMethods.MOUSEEVENTF_RIGHTUP);
else if (i == 258) InputMethods.MouseEvent(InputMethods.MOUSEEVENTF_MIDDLEUP);
else if (i == 259) InputMethods.MouseEvent(InputMethods.MOUSEEVENTF_XBUTTONUP, 1);
else if (i == 260) InputMethods.MouseEvent(InputMethods.MOUSEEVENTF_XBUTTONUP, 2);
else if (i == 261) { macroControl[0] = false; if (macroCount > 0) macroCount--; }
else if (i == 262) { macroControl[1] = false; if (macroCount > 0) macroCount--; }
else if (i == 263) { macroControl[2] = false; if (macroCount > 0) macroCount--; }
else if (i == 264) { macroControl[3] = false; if (macroCount > 0) macroCount--; }
else if (i == 265) { macroControl[4] = false; if (macroCount > 0) macroCount--; }
else if (i == 266) { macroControl[5] = false; if (macroCount > 0) macroCount--; }
else if (i == 267) { macroControl[6] = false; if (macroCount > 0) macroCount--; }
else if (i == 268) { macroControl[7] = false; if (macroCount > 0) macroCount--; }
else if (i == 269) { macroControl[8] = false; if (macroCount > 0) macroCount--; }
else if (i == 270) { macroControl[9] = false; if (macroCount > 0) macroCount--; }
else if (i == 271) { macroControl[10] = false; if (macroCount > 0) macroCount--; }
else if (i == 272) { macroControl[11] = false; if (macroCount > 0) macroCount--; }
else if (i == 273) { macroControl[12] = false; if (macroCount > 0) macroCount--; }
else if (i == 274) { macroControl[13] = false; if (macroCount > 0) macroCount--; }
else if (i == 275) { macroControl[14] = false; if (macroCount > 0) macroCount--; }
else if (i == 276) { macroControl[15] = false; if (macroCount > 0) macroCount--; }
else if (i == 277) { macroControl[16] = false; if (macroCount > 0) macroCount--; }
else if (i == 278) { macroControl[17] = false; if (macroCount > 0) macroCount--; }
else if (i == 279) { macroControl[18] = false; if (macroCount > 0) macroCount--; }
else if (i == 280) { macroControl[19] = false; if (macroCount > 0) macroCount--; }
else if (i == 281) { macroControl[20] = false; if (macroCount > 0) macroCount--; }
else if (i == 282) { macroControl[21] = false; if (macroCount > 0) macroCount--; }
else if (i == 283) { macroControl[22] = false; if (macroCount > 0) macroCount--; }
else if (i == 284) { macroControl[23] = false; if (macroCount > 0) macroCount--; }
else if (i == 285) { macroControl[24] = false; if (macroCount > 0) macroCount--; }
else if (keyType.HasFlag(DS4KeyType.ScanCode))
InputMethods.performSCKeyRelease((ushort)i);
else
InputMethods.performKeyRelease((ushort)i);
keydown[i] = false;
}
}
for (int i = 0, arlength = keydown.Length; i < arlength; i++)
{
if (keydown[i])
{
if (i == 256) InputMethods.MouseEvent(InputMethods.MOUSEEVENTF_LEFTUP); //anything above 255 is not a keyvalue
else if (i == 257) InputMethods.MouseEvent(InputMethods.MOUSEEVENTF_RIGHTUP);
else if (i == 258) InputMethods.MouseEvent(InputMethods.MOUSEEVENTF_MIDDLEUP);
else if (i == 259) InputMethods.MouseEvent(InputMethods.MOUSEEVENTF_XBUTTONUP, 1);
else if (i == 260) InputMethods.MouseEvent(InputMethods.MOUSEEVENTF_XBUTTONUP, 2);
else if (i == 261) { macroControl[0] = false; if (macroCount > 0) macroCount--; }
else if (i == 262) { macroControl[1] = false; if (macroCount > 0) macroCount--; }
else if (i == 263) { macroControl[2] = false; if (macroCount > 0) macroCount--; }
else if (i == 264) { macroControl[3] = false; if (macroCount > 0) macroCount--; }
else if (i == 265) { macroControl[4] = false; if (macroCount > 0) macroCount--; }
else if (i == 266) { macroControl[5] = false; if (macroCount > 0) macroCount--; }
else if (i == 267) { macroControl[6] = false; if (macroCount > 0) macroCount--; }
else if (i == 268) { macroControl[7] = false; if (macroCount > 0) macroCount--; }
else if (i == 269) { macroControl[8] = false; if (macroCount > 0) macroCount--; }
else if (i == 270) { macroControl[9] = false; if (macroCount > 0) macroCount--; }
else if (i == 271) { macroControl[10] = false; if (macroCount > 0) macroCount--; }
else if (i == 272) { macroControl[11] = false; if (macroCount > 0) macroCount--; }
else if (i == 273) { macroControl[12] = false; if (macroCount > 0) macroCount--; }
else if (i == 274) { macroControl[13] = false; if (macroCount > 0) macroCount--; }
else if (i == 275) { macroControl[14] = false; if (macroCount > 0) macroCount--; }
else if (i == 276) { macroControl[15] = false; if (macroCount > 0) macroCount--; }
else if (i == 277) { macroControl[16] = false; if (macroCount > 0) macroCount--; }
else if (i == 278) { macroControl[17] = false; if (macroCount > 0) macroCount--; }
else if (i == 279) { macroControl[18] = false; if (macroCount > 0) macroCount--; }
else if (i == 280) { macroControl[19] = false; if (macroCount > 0) macroCount--; }
else if (i == 281) { macroControl[20] = false; if (macroCount > 0) macroCount--; }
else if (i == 282) { macroControl[21] = false; if (macroCount > 0) macroCount--; }
else if (i == 283) { macroControl[22] = false; if (macroCount > 0) macroCount--; }
else if (i == 284) { macroControl[23] = false; if (macroCount > 0) macroCount--; }
else if (i == 285) { macroControl[24] = false; if (macroCount > 0) macroCount--; }
else if (keyType.HasFlag(DS4KeyType.ScanCode))
InputMethods.performSCKeyRelease((ushort)i);
else
InputMethods.performKeyRelease((ushort)i);
}
}
DS4LightBar.forcedFlash[device] = 0;
DS4LightBar.forcelight[device] = false;
Program.rootHub.DS4Controllers[device].setRumble(0, 0);
if (keyType.HasFlag(DS4KeyType.HoldMacro))
{
await Task.Delay(50);
if (control != DS4Controls.None)
macrodone[DS4ControltoInt(control)] = false;
}
}
}
}
*/
// PlayMacro as a background task. If the macroPlayQueueName is defined then play macro only when the previous macro in the same queue
// has completed already (ie. if the same macro trigger key has both key down and key release macros then those are run synchronized).
// Play macro as a background task
private static void PlayMacro(int device, bool[] macrocontrol, string macroStr, List<int> macroLst, int[] macroArr, DS4Controls control, DS4KeyType keyType, SpecialAction action = null, ActionState actionDoneState = null)
{
if (action != null && action.synchronized)
@ -2451,7 +2249,7 @@ namespace DS4Windows
}
// Play through a macro. The macro steps are defined either as string, List or Array object (always only one of those parameters is set to a valid value)
private static /*async*/ void PlayMacroTask(int device, bool[] macrocontrol, string macroStr, List<int> macroLst, int[] macroArr, DS4Controls control, DS4KeyType keyType, SpecialAction action, ActionState actionDoneState)
private static void PlayMacroTask(int device, bool[] macrocontrol, string macroStr, List<int> macroLst, int[] macroArr, DS4Controls control, DS4KeyType keyType, SpecialAction action, ActionState actionDoneState)
{
if(!String.IsNullOrEmpty(macroStr))
{
@ -2499,7 +2297,6 @@ namespace DS4Windows
{
macroCodeValue = macroLst[i];
if (PlayMacroCodeValue(device, macrocontrol, keyType, macroCodeValue, keydown))
//await Task.Delay(macroCodeValue - 300);
Task.Delay(macroCodeValue - 300).Wait();
}
}
@ -2509,7 +2306,6 @@ namespace DS4Windows
{
macroCodeValue = macroArr[i];
if (PlayMacroCodeValue(device, macrocontrol, keyType, macroCodeValue, keydown))
//await Task.Delay(macroCodeValue - 300);
Task.Delay(macroCodeValue - 300).Wait();
}
}
@ -2527,13 +2323,12 @@ namespace DS4Windows
DS4LightBar.forcedFlash[device] = 0;
DS4LightBar.forcelight[device] = false;
// No need to zero out rumble after a macro because it may conflict with a game generated rumble events (ie. macro would stop a game generated rumble effect).
// If macro generated rumble effects then the macro proabbly sends a "rumble zero" event also. If it doesn't then a rumble watchdog timer will eventually stop the rumble.
// Commented out rumble reset. No need to zero out rumble after a macro because it may conflict with a game generated rumble events (ie. macro would stop a game generated rumble effect).
// If macro generates rumble effects then the macro can stop the rumble as a last step or wait for rumble watchdog timer to do it after few seconds.
//Program.rootHub.DS4Controllers[device].setRumble(0, 0);
if (keyType.HasFlag(DS4KeyType.HoldMacro))
{
//await Task.Delay(50);
Task.Delay(50).Wait();
if (control != DS4Controls.None)
macrodone[DS4ControltoInt(control)] = false;

View File

@ -4468,7 +4468,7 @@ namespace DS4Windows
}
if (extras.Contains("Scan Code"))
keyType |= DS4KeyType.ScanCode;
if (extras.Contains("Release"))
if (extras.Contains("RunOnRelease"))
pressRelease = true;
if (extras.Contains("Sync"))
synchronized = true;

View File

@ -55,9 +55,14 @@
this.lbHoldForProg = new System.Windows.Forms.Label();
this.lbSecsProg = new System.Windows.Forms.Label();
this.pnlMacro = new System.Windows.Forms.Panel();
this.cBMacroRepeat = new System.Windows.Forms.CheckBox();
this.cBMacroKeepKeyState = new System.Windows.Forms.CheckBox();
this.cBMacroSyncRun = new System.Windows.Forms.CheckBox();
this.cBMacroRunOnRelease = new System.Windows.Forms.CheckBox();
this.cBMacroScanCode = new System.Windows.Forms.CheckBox();
this.lbMacroRecorded = new System.Windows.Forms.Label();
this.pnlProfile = new System.Windows.Forms.Panel();
this.cbProfileAutoUntrigger = new System.Windows.Forms.CheckBox();
this.lbUnloadTipProfile = new System.Windows.Forms.Label();
this.pnlDisconnectBT = new System.Windows.Forms.Panel();
this.nUDDCBT = new System.Windows.Forms.NumericUpDown();
@ -86,7 +91,7 @@
this.lbDTapDVR = new System.Windows.Forms.Label();
this.lbHoldDVR = new System.Windows.Forms.Label();
this.lbTapDVR = new System.Windows.Forms.Label();
this.cbProfileAutoUntrigger = new System.Windows.Forms.CheckBox();
this.tp = new System.Windows.Forms.ToolTip(this.components);
((System.ComponentModel.ISupportInitialize)(this.pBProgram)).BeginInit();
this.pnlProgram.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.nUDProg)).BeginInit();
@ -365,12 +370,40 @@
//
// pnlMacro
//
this.pnlMacro.Controls.Add(this.cBMacroRepeat);
this.pnlMacro.Controls.Add(this.cBMacroKeepKeyState);
this.pnlMacro.Controls.Add(this.cBMacroSyncRun);
this.pnlMacro.Controls.Add(this.cBMacroRunOnRelease);
this.pnlMacro.Controls.Add(this.cBMacroScanCode);
this.pnlMacro.Controls.Add(this.btnRecordMacro);
this.pnlMacro.Controls.Add(this.lbMacroRecorded);
resources.ApplyResources(this.pnlMacro, "pnlMacro");
this.pnlMacro.Name = "pnlMacro";
//
// cBMacroRepeat
//
resources.ApplyResources(this.cBMacroRepeat, "cBMacroRepeat");
this.cBMacroRepeat.Name = "cBMacroRepeat";
this.cBMacroRepeat.UseVisualStyleBackColor = true;
//
// cBMacroKeepKeyState
//
resources.ApplyResources(this.cBMacroKeepKeyState, "cBMacroKeepKeyState");
this.cBMacroKeepKeyState.Name = "cBMacroKeepKeyState";
this.cBMacroKeepKeyState.UseVisualStyleBackColor = true;
//
// cBMacroSyncRun
//
resources.ApplyResources(this.cBMacroSyncRun, "cBMacroSyncRun");
this.cBMacroSyncRun.Name = "cBMacroSyncRun";
this.cBMacroSyncRun.UseVisualStyleBackColor = true;
//
// cBMacroRunOnRelease
//
resources.ApplyResources(this.cBMacroRunOnRelease, "cBMacroRunOnRelease");
this.cBMacroRunOnRelease.Name = "cBMacroRunOnRelease";
this.cBMacroRunOnRelease.UseVisualStyleBackColor = true;
//
// cBMacroScanCode
//
resources.ApplyResources(this.cBMacroScanCode, "cBMacroScanCode");
@ -391,6 +424,12 @@
resources.ApplyResources(this.pnlProfile, "pnlProfile");
this.pnlProfile.Name = "pnlProfile";
//
// cbProfileAutoUntrigger
//
resources.ApplyResources(this.cbProfileAutoUntrigger, "cbProfileAutoUntrigger");
this.cbProfileAutoUntrigger.Name = "cbProfileAutoUntrigger";
this.cbProfileAutoUntrigger.UseVisualStyleBackColor = true;
//
// lbUnloadTipProfile
//
resources.ApplyResources(this.lbUnloadTipProfile, "lbUnloadTipProfile");
@ -598,17 +637,12 @@
resources.ApplyResources(this.lbTapDVR, "lbTapDVR");
this.lbTapDVR.Name = "lbTapDVR";
//
// cbProfileAutoUntrigger
//
resources.ApplyResources(this.cbProfileAutoUntrigger, "cbProfileAutoUntrigger");
this.cbProfileAutoUntrigger.Name = "cbProfileAutoUntrigger";
this.cbProfileAutoUntrigger.UseVisualStyleBackColor = true;
//
// SpecActions
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.SystemColors.Control;
this.Controls.Add(this.pnlMacro);
this.Controls.Add(this.pnlGameDVR);
this.Controls.Add(this.tBName);
this.Controls.Add(this.cBActions);
@ -619,7 +653,6 @@
this.Controls.Add(this.lVUnloadTrigger);
this.Controls.Add(this.btnBorder);
this.Controls.Add(this.pnlKeys);
this.Controls.Add(this.pnlMacro);
this.Controls.Add(this.pnlProfile);
this.Controls.Add(this.pnlProgram);
this.Controls.Add(this.pnlBatteryCheck);
@ -633,6 +666,7 @@
this.pnlMacro.ResumeLayout(false);
this.pnlMacro.PerformLayout();
this.pnlProfile.ResumeLayout(false);
this.pnlProfile.PerformLayout();
this.pnlDisconnectBT.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.nUDDCBT)).EndInit();
this.pnlKeys.ResumeLayout(false);
@ -707,5 +741,10 @@
public System.Windows.Forms.Button btnHoldT;
public System.Windows.Forms.Button btnSTapT;
private System.Windows.Forms.CheckBox cbProfileAutoUntrigger;
private System.Windows.Forms.CheckBox cBMacroKeepKeyState;
private System.Windows.Forms.CheckBox cBMacroSyncRun;
private System.Windows.Forms.CheckBox cBMacroRunOnRelease;
private System.Windows.Forms.CheckBox cBMacroRepeat;
private System.Windows.Forms.ToolTip tp;
}
}

View File

@ -61,6 +61,13 @@ namespace DS4Windows.Forms
advColorDialog = new AdvancedColorDialog();
advColorDialog.FullOpen = true;
advColorDialog.OnUpdateColor += new AdvancedColorDialog.ColorUpdateHandler(this.advColorDialog_OnUpdateColor);
tp.SetToolTip(cBMacroScanCode, Properties.Resources.MacroScanCodeTip);
tp.SetToolTip(cBMacroRunOnRelease, Properties.Resources.MacroRunOnReleaseTip);
tp.SetToolTip(cBMacroRepeat, Properties.Resources.MacroRepeatTip);
tp.SetToolTip(cBMacroSyncRun, Properties.Resources.MacroSynchronizedRunTip);
tp.SetToolTip(cBMacroKeepKeyState, Properties.Resources.MacroKeepKeyStateTip);
}
void LoadAction()
@ -81,6 +88,10 @@ namespace DS4Windows.Forms
macrostag = act.macro;
lbMacroRecorded.Text = "Macro Recored";
cBMacroScanCode.Checked = act.keyType.HasFlag(DS4KeyType.ScanCode);
cBMacroRunOnRelease.Checked = act.pressRelease;
cBMacroSyncRun.Checked = act.synchronized;
cBMacroKeepKeyState.Checked = act.keepKeyState;
cBMacroRepeat.Checked = act.keyType.HasFlag(DS4KeyType.RepeatMacro);
break;
case "Program":
cBActions.SelectedIndex = 2;
@ -251,7 +262,13 @@ namespace DS4Windows.Forms
actRe = true;
if (!string.IsNullOrEmpty(oldprofilename) && oldprofilename != tBName.Text)
Global.RemoveAction(oldprofilename);
Global.SaveAction(tBName.Text, String.Join("/", controls), cBActions.SelectedIndex, String.Join("/", macrostag), edit, (cBMacroScanCode.Checked ? "Scan Code" : ""));
Global.SaveAction(tBName.Text, String.Join("/", controls), cBActions.SelectedIndex, String.Join("/", macrostag), edit, String.Join("/", new string[] {
(cBMacroScanCode.Checked ? "Scan Code" : null),
(cBMacroRunOnRelease.Checked ? "RunOnRelease" : null),
(cBMacroSyncRun.Checked ? "Sync" : null),
(cBMacroKeepKeyState.Checked ? "KeepKeyState" : null),
(cBMacroRepeat.Checked ? "Repeat" : null) }.Where(s => !String.IsNullOrEmpty(s))
));
}
break;
case 2:

View File

@ -202,6 +202,21 @@
<value>Kytke pois painamalla</value>
</data>
<data name="cbProfileAutoUntrigger.Text" xml:space="preserve">
<value>Poiskytkentä liipaisimen vapautuksella</value>
<value>Poiskytkentä painikkeen vapautuksella</value>
</data>
<data name="cBActions.Items8" xml:space="preserve">
<value>Sixaxis rattiohjainemuloinnin kalibrointi</value>
</data>
<data name="cBMacroKeepKeyState.Text" xml:space="preserve">
<value>Säilytä napin tila</value>
</data>
<data name="cBMacroRepeat.Text" xml:space="preserve">
<value>Toista painettaessa</value>
</data>
<data name="cBMacroRunOnRelease.Text" xml:space="preserve">
<value>Suorita painikkeen vapautuksella</value>
</data>
<data name="cBMacroSyncRun.Text" xml:space="preserve">
<value>Synkronoitu suoritus</value>
</data>
</root>

View File

@ -814,7 +814,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;lVTrigger.ZOrder" xml:space="preserve">
<value>6</value>
<value>7</value>
</data>
<data name="btnRecordMacro.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
@ -841,7 +841,7 @@
<value>pnlMacro</value>
</data>
<data name="&gt;&gt;btnRecordMacro.ZOrder" xml:space="preserve">
<value>1</value>
<value>5</value>
</data>
<data name="btnBrowse.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
@ -889,7 +889,7 @@
<value>pnlProfile</value>
</data>
<data name="&gt;&gt;cBProfiles.ZOrder" xml:space="preserve">
<value>1</value>
<value>2</value>
</data>
<data name="btnSave.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
@ -922,7 +922,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;btnSave.ZOrder" xml:space="preserve">
<value>4</value>
<value>5</value>
</data>
<data name="btnCancel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
@ -952,7 +952,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;btnCancel.ZOrder" xml:space="preserve">
<value>3</value>
<value>4</value>
</data>
<data name="lbName.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
@ -982,7 +982,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;lbName.ZOrder" xml:space="preserve">
<value>5</value>
<value>6</value>
</data>
<data name="tBName.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
@ -1006,7 +1006,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;tBName.ZOrder" xml:space="preserve">
<value>1</value>
<value>2</value>
</data>
<data name="cBActions.Items" xml:space="preserve">
<value>-Select an Action-</value>
@ -1054,7 +1054,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;cBActions.ZOrder" xml:space="preserve">
<value>2</value>
<value>3</value>
</data>
<metadata name="openFileDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
@ -1147,7 +1147,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;btnBorder.ZOrder" xml:space="preserve">
<value>8</value>
<value>9</value>
</data>
<data name="btnSetUTriggerProfile.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
@ -1174,7 +1174,7 @@
<value>pnlProfile</value>
</data>
<data name="&gt;&gt;btnSetUTriggerProfile.ZOrder" xml:space="preserve">
<value>2</value>
<value>3</value>
</data>
<data name="lVUnloadTrigger.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left</value>
@ -1870,7 +1870,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;lVUnloadTrigger.ZOrder" xml:space="preserve">
<value>7</value>
<value>8</value>
</data>
<data name="tBArg.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 91</value>
@ -2031,6 +2031,114 @@
<data name="&gt;&gt;pnlProgram.ZOrder" xml:space="preserve">
<value>12</value>
</data>
<data name="cBMacroRepeat.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="cBMacroRepeat.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 120</value>
</data>
<data name="cBMacroRepeat.Size" type="System.Drawing.Size, System.Drawing">
<value>111, 17</value>
</data>
<data name="cBMacroRepeat.TabIndex" type="System.Int32, mscorlib">
<value>21</value>
</data>
<data name="cBMacroRepeat.Text" xml:space="preserve">
<value>Repeat while held</value>
</data>
<data name="&gt;&gt;cBMacroRepeat.Name" xml:space="preserve">
<value>cBMacroRepeat</value>
</data>
<data name="&gt;&gt;cBMacroRepeat.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;cBMacroRepeat.Parent" xml:space="preserve">
<value>pnlMacro</value>
</data>
<data name="&gt;&gt;cBMacroRepeat.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="cBMacroKeepKeyState.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="cBMacroKeepKeyState.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 97</value>
</data>
<data name="cBMacroKeepKeyState.Size" type="System.Drawing.Size, System.Drawing">
<value>97, 17</value>
</data>
<data name="cBMacroKeepKeyState.TabIndex" type="System.Int32, mscorlib">
<value>20</value>
</data>
<data name="cBMacroKeepKeyState.Text" xml:space="preserve">
<value>Keep key state</value>
</data>
<data name="&gt;&gt;cBMacroKeepKeyState.Name" xml:space="preserve">
<value>cBMacroKeepKeyState</value>
</data>
<data name="&gt;&gt;cBMacroKeepKeyState.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;cBMacroKeepKeyState.Parent" xml:space="preserve">
<value>pnlMacro</value>
</data>
<data name="&gt;&gt;cBMacroKeepKeyState.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="cBMacroSyncRun.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="cBMacroSyncRun.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 74</value>
</data>
<data name="cBMacroSyncRun.Size" type="System.Drawing.Size, System.Drawing">
<value>108, 17</value>
</data>
<data name="cBMacroSyncRun.TabIndex" type="System.Int32, mscorlib">
<value>19</value>
</data>
<data name="cBMacroSyncRun.Text" xml:space="preserve">
<value>Synchronized run</value>
</data>
<data name="&gt;&gt;cBMacroSyncRun.Name" xml:space="preserve">
<value>cBMacroSyncRun</value>
</data>
<data name="&gt;&gt;cBMacroSyncRun.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;cBMacroSyncRun.Parent" xml:space="preserve">
<value>pnlMacro</value>
</data>
<data name="&gt;&gt;cBMacroSyncRun.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="cBMacroRunOnRelease.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="cBMacroRunOnRelease.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 51</value>
</data>
<data name="cBMacroRunOnRelease.Size" type="System.Drawing.Size, System.Drawing">
<value>130, 17</value>
</data>
<data name="cBMacroRunOnRelease.TabIndex" type="System.Int32, mscorlib">
<value>18</value>
</data>
<data name="cBMacroRunOnRelease.Text" xml:space="preserve">
<value>Run on trigger release</value>
</data>
<data name="&gt;&gt;cBMacroRunOnRelease.Name" xml:space="preserve">
<value>cBMacroRunOnRelease</value>
</data>
<data name="&gt;&gt;cBMacroRunOnRelease.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;cBMacroRunOnRelease.Parent" xml:space="preserve">
<value>pnlMacro</value>
</data>
<data name="&gt;&gt;cBMacroRunOnRelease.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="cBMacroScanCode.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
@ -2038,7 +2146,7 @@
<value>NoControl</value>
</data>
<data name="cBMacroScanCode.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 30</value>
<value>4, 29</value>
</data>
<data name="cBMacroScanCode.Size" type="System.Drawing.Size, System.Drawing">
<value>79, 17</value>
@ -2059,13 +2167,13 @@
<value>pnlMacro</value>
</data>
<data name="&gt;&gt;cBMacroScanCode.ZOrder" xml:space="preserve">
<value>0</value>
<value>4</value>
</data>
<data name="lbMacroRecorded.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="lbMacroRecorded.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 50</value>
<value>0, 141</value>
</data>
<data name="lbMacroRecorded.Size" type="System.Drawing.Size, System.Drawing">
<value>153, 23</value>
@ -2086,13 +2194,13 @@
<value>pnlMacro</value>
</data>
<data name="&gt;&gt;lbMacroRecorded.ZOrder" xml:space="preserve">
<value>2</value>
<value>6</value>
</data>
<data name="pnlMacro.Location" type="System.Drawing.Point, System.Drawing">
<value>206, 58</value>
</data>
<data name="pnlMacro.Size" type="System.Drawing.Size, System.Drawing">
<value>163, 94</value>
<value>163, 165</value>
</data>
<data name="pnlMacro.TabIndex" type="System.Int32, mscorlib">
<value>261</value>
@ -2110,66 +2218,6 @@
<value>$this</value>
</data>
<data name="&gt;&gt;pnlMacro.ZOrder" xml:space="preserve">
<value>10</value>
</data>
<data name="lbUnloadTipProfile.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="lbUnloadTipProfile.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 95</value>
</data>
<data name="lbUnloadTipProfile.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 23</value>
</data>
<data name="lbUnloadTipProfile.TabIndex" type="System.Int32, mscorlib">
<value>259</value>
</data>
<data name="&gt;&gt;lbUnloadTipProfile.Name" xml:space="preserve">
<value>lbUnloadTipProfile</value>
</data>
<data name="&gt;&gt;lbUnloadTipProfile.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;lbUnloadTipProfile.Parent" xml:space="preserve">
<value>pnlProfile</value>
</data>
<data name="&gt;&gt;lbUnloadTipProfile.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="pnlProfile.Location" type="System.Drawing.Point, System.Drawing">
<value>206, 58</value>
</data>
<data name="pnlProfile.Size" type="System.Drawing.Size, System.Drawing">
<value>161, 121</value>
</data>
<data name="pnlProfile.TabIndex" type="System.Int32, mscorlib">
<value>262</value>
</data>
<data name="pnlProfile.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="&gt;&gt;pnlProfile.Name" xml:space="preserve">
<value>pnlProfile</value>
</data>
<data name="&gt;&gt;pnlProfile.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;pnlProfile.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;pnlProfile.ZOrder" xml:space="preserve">
<value>11</value>
</data>
<data name="&gt;&gt;cbProfileAutoUntrigger.Name" xml:space="preserve">
<value>cbProfileAutoUntrigger</value>
</data>
<data name="&gt;&gt;cbProfileAutoUntrigger.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;cbProfileAutoUntrigger.Parent" xml:space="preserve">
<value>pnlProfile</value>
</data>
<data name="&gt;&gt;cbProfileAutoUntrigger.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="cbProfileAutoUntrigger.AutoSize" type="System.Boolean, mscorlib">
@ -2199,6 +2247,54 @@
<data name="&gt;&gt;cbProfileAutoUntrigger.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="lbUnloadTipProfile.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="lbUnloadTipProfile.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 95</value>
</data>
<data name="lbUnloadTipProfile.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 23</value>
</data>
<data name="lbUnloadTipProfile.TabIndex" type="System.Int32, mscorlib">
<value>259</value>
</data>
<data name="&gt;&gt;lbUnloadTipProfile.Name" xml:space="preserve">
<value>lbUnloadTipProfile</value>
</data>
<data name="&gt;&gt;lbUnloadTipProfile.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;lbUnloadTipProfile.Parent" xml:space="preserve">
<value>pnlProfile</value>
</data>
<data name="&gt;&gt;lbUnloadTipProfile.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="pnlProfile.Location" type="System.Drawing.Point, System.Drawing">
<value>206, 58</value>
</data>
<data name="pnlProfile.Size" type="System.Drawing.Size, System.Drawing">
<value>161, 121</value>
</data>
<data name="pnlProfile.TabIndex" type="System.Int32, mscorlib">
<value>262</value>
</data>
<data name="pnlProfile.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="&gt;&gt;pnlProfile.Name" xml:space="preserve">
<value>pnlProfile</value>
</data>
<data name="&gt;&gt;pnlProfile.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;pnlProfile.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;pnlProfile.ZOrder" xml:space="preserve">
<value>11</value>
</data>
<data name="nUDDCBT.Location" type="System.Drawing.Point, System.Drawing">
<value>56, 3</value>
</data>
@ -2446,7 +2542,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;pnlKeys.ZOrder" xml:space="preserve">
<value>9</value>
<value>10</value>
</data>
<data name="pBGraident.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
@ -2941,8 +3037,11 @@
<value>$this</value>
</data>
<data name="&gt;&gt;pnlGameDVR.ZOrder" xml:space="preserve">
<value>0</value>
<value>1</value>
</data>
<metadata name="tp.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>267, 17</value>
</metadata>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
@ -2979,6 +3078,12 @@
<data name="&gt;&gt;cHUnloadTrigger.Type" xml:space="preserve">
<value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;tp.Name" xml:space="preserve">
<value>tp</value>
</data>
<data name="&gt;&gt;tp.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolTip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>SpecActions</value>
</data>

View File

@ -1280,6 +1280,15 @@ namespace DS4Windows.Properties {
}
}
/// <summary>
/// Looks up a localized string similar to Keep the last key state when macro execution is completed (ie. if a key is left in down state then it is not automatically reset back to default state).
/// </summary>
public static string MacroKeepKeyStateTip {
get {
return ResourceManager.GetString("MacroKeepKeyStateTip", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Macro Recorded.
/// </summary>
@ -1289,6 +1298,42 @@ namespace DS4Windows.Properties {
}
}
/// <summary>
/// Looks up a localized string similar to Repeat a macro while the trigger key is held down.
/// </summary>
public static string MacroRepeatTip {
get {
return ResourceManager.GetString("MacroRepeatTip", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Run a macro on the trigger key release.
/// </summary>
public static string MacroRunOnReleaseTip {
get {
return ResourceManager.GetString("MacroRunOnReleaseTip", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Use a scan code value of keyboard keys in a macro.
/// </summary>
public static string MacroScanCodeTip {
get {
return ResourceManager.GetString("MacroScanCodeTip", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Run multiple macros in synchronized order if the same trigger has several macros (key down macro completed before key release macro is run).
/// </summary>
public static string MacroSynchronizedRunTip {
get {
return ResourceManager.GetString("MacroSynchronizedRunTip", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Make a New Profile.
/// </summary>

View File

@ -615,4 +615,19 @@
<data name="EnableTouchToggle" xml:space="preserve">
<value>Salli kosketuslevyhiiriohjaimen päälle-pois kytkentä PS + kosketuslevynapautuksella.</value>
</data>
<data name="MacroScanCodeTip" xml:space="preserve">
<value>Käytä scan code näppäinkoodeja makrossa</value>
</data>
<data name="MacroRunOnReleaseTip" xml:space="preserve">
<value>Suorita makro painikkeen vapautuksella</value>
</data>
<data name="MacroSynchronizedRunTip" xml:space="preserve">
<value>Suorita useampi makro synkronoidussa järjestyksessä (esim painikkeen aktivoinnin makro suoritetaan kokonaisuudessa ennen painikkeen vapautuksen makroa)</value>
</data>
<data name="MacroRepeatTip" xml:space="preserve">
<value>Toista makron suoritusta painikkeen painamisen ajan</value>
</data>
<data name="MacroKeepKeyStateTip" xml:space="preserve">
<value>Säilytä napin tilatieto kun makron suoritus on päättynyt (jos makro jättää napin Painettu-tilaan, niin makron suoritus ei automaattisesti palauta napin tilatietoa takaisin oletustilaan)</value>
</data>
</root>

View File

@ -832,4 +832,19 @@
<data name="ShowAutoProfileDebugLogTip" xml:space="preserve">
<value>If enabled then Log tab page shows detailed messages of auto-profile events.</value>
</data>
<data name="MacroScanCodeTip" xml:space="preserve">
<value>Use a scan code value of keyboard keys in a macro</value>
</data>
<data name="MacroRunOnReleaseTip" xml:space="preserve">
<value>Run a macro on the trigger key release</value>
</data>
<data name="MacroSynchronizedRunTip" xml:space="preserve">
<value>Run multiple macros in synchronized order if the same trigger has several macros (key down macro completed before key release macro is run)</value>
</data>
<data name="MacroRepeatTip" xml:space="preserve">
<value>Repeat a macro while the trigger key is held down</value>
</data>
<data name="MacroKeepKeyStateTip" xml:space="preserve">
<value>Keep the last key state when macro execution is completed (ie. if a key is left in down state then it is not automatically reset back to default state)</value>
</data>
</root>