예제 #1
0
 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());
예제 #2
0
        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;
        }
예제 #4
0
        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);
            }
        }