private PathValueResultHelper WithResult(object value) => new PathValueResultHelper(Path, CurrentKeys, Results.Concat(CurrentKeys.Any() ? CurrentKeys.Select(k => new PathValue(Path.Append(k), value)) : new List <PathValue> { new PathValue(Path, value) }).ToList());
private CurrentKeys CopyCurrentKeys(CurrentKeys currentKeys) { var keys = new CurrentKeys { Path = currentKeys.Path, Operation = currentKeys.Operation }; return(keys); }
void ExecuteCommandName() { switch (SelectedItem) { case ApiTypes.Constant: CSharpSyntax += _constantTextViewer.GetCSharpSyntax(CurrentKeys.IndexOf(SelectedFunction)).Replace(ApiUtility.CSHP_SCOPE, "public"); break; case ApiTypes.Declares: CSharpSyntax += _dllImportTextViewer.GetCSharpSyntax(CurrentKeys.IndexOf(SelectedFunction)).Replace(ApiUtility.CSHP_SCOPE, "public"); break; case ApiTypes.Types: CSharpSyntax += _structTextViewer.GetCSharpSyntax(CurrentKeys.IndexOf(SelectedFunction)).Replace(ApiUtility.CSHP_SCOPE, "public"); break; default: throw new ArgumentOutOfRangeException(); } CSharpSyntax += System.Environment.NewLine; }
public override async Task PressKey(IAsyncStreamReader <Key> keyStream, IServerStreamWriter <Response> responseStream, ServerCallContext context) { while (await keyStream.MoveNext()) { var key = keyStream.Current; var keys = new VirtualKeyCode[] { (VirtualKeyCode)key.FirstId, key.SecondId == 0 ? (VirtualKeyCode)key.SecondId : 0 }; foreach (var k in keys) { if (k != 0 && (ushort)k != 0x9001) // Not a blank key { if (k == VirtualKeyCode.CANCEL) { foreach (var downKey in CurrentKeys) { KeyboardSim.KeyUp(downKey); if (downKey == VirtualKeyCode.LBUTTON) { MouseSim.LeftButtonUp(); } else if (downKey == VirtualKeyCode.RBUTTON) { MouseSim.RightButtonUp(); } } CurrentKeys.Clear(); } else if (k == VirtualKeyCode.VK_W || k == VirtualKeyCode.VK_A || k == VirtualKeyCode.VK_S || k == VirtualKeyCode.VK_D) // Directional, Mouse keys { if (CurrentKeys.Count > 1) { foreach (var downKey in CurrentKeys) { KeyboardSim.KeyUp(downKey); } CurrentKeys.Clear(); } CurrentKeys.Add(k); KeyboardSim.KeyDown(k); } else if (k == VirtualKeyCode.LBUTTON) { MouseSim.LeftButtonDown(); CurrentKeys.Add(k); } else if (k == VirtualKeyCode.RBUTTON) { MouseSim.RightButtonDown(); CurrentKeys.Add(k); } else // Treat as a button { // If HOLD enabled, just keydown, await key up // IF HOLD disabled, just a keypress if (Settings.BUTTON_TOGGLE) { KeyboardSim.KeyPress(k); } else // HOLD { CurrentKeys.Add(k); KeyboardSim.KeyDown(k); } } } } if (CurrentKeys.Count > 0) { Console.WriteLine(string.Join(",", CurrentKeys.ToArray())); } Response reply = new Response { Received = true }; await responseStream.WriteAsync(reply); } }