Ejemplo n.º 1
0
        private void sendMsgButton_Click(object sender, EventArgs e)
        {
            //
            KeyboardSim keyboardSim = new KeyboardSim();

            keyboardSim.SendToChat(sendMsgBox.Text, channel);
        }
Ejemplo n.º 2
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);
            }
        }