public KeybindHandler() { handler = this; Console.WriteLine("Starting key thread"); for (char c = (char)0; c < 0xFF; c++) { downBuffs.Add(c, 0); noKey.Add(c, true); } for (char c = (char)0; c < 0xFF; c++) { releaseBuffs.Add(c, 0); yesKey.Add(c, true); } Program.mainLoop += (object sen, EventArgs e) => { if (MCM.isMinecraftFocused()) { for (char c = (char)0; c < 0xFF; c++) { noKey[c] = true; yesKey[c] = false; if (MCM.GetAsyncKeyState(c)) { if (clientKeyHeldEvent != null) { clientKeyHeldEvent.Invoke(this, new clientKeyEvent(c)); } noKey[c] = false; if (downBuffs[c] > 0) { continue; } downBuffs[c]++; OverlayHost.ui.Invalidate(); try { if (clientKeyDownEvent != null) { clientKeyDownEvent.Invoke(this, new clientKeyEvent(c)); //DBG.Debug("Dispatched key down [" + c.ToString() + "]"); } } catch (Exception) { } } else { yesKey[c] = true; if (releaseBuffs[c] > 0) { continue; } releaseBuffs[c]++; OverlayHost.ui.Invalidate(); if (clientKeyUpEvent != null) { try { clientKeyUpEvent.Invoke(this, new clientKeyEvent(c)); //DBG.Debug("Dispatched key up [" + c.ToString() + "]"); } catch (Exception) { } } } if (noKey[c]) { downBuffs[c] = 0; } if (!yesKey[c]) { releaseBuffs[c] = 0; } } } }; clientKeyDownEvent += dispatchKeybinds; Console.WriteLine("key shit started"); }
public static bool isKeyDown(char key) { return(MCM.GetAsyncKeyState(key)); }