private void sendMsgButton_Click(object sender, EventArgs e) { // KeyboardSim keyboardSim = new KeyboardSim(); keyboardSim.SendToChat(sendMsgBox.Text, channel); }
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); } }