static void keyDown(Keys key) { perform(WinApiConsts.Msg.WM_KEYDOWN, key); Yellers.ForEach(y => { if (key == y.ShutUpKey) { y.StartToYell(); } else { if (isALT(key)) { y.Yell(y.ShutUpKey); } } }); }
static void keyUp(Keys key) { Yellers.ForEach(y => { if (isALT(key)) { y.Yell(y.ShutUpKey); } else { y.Yell(key); } }); if (!SendKeyUp) { return; } perform(WinApiConsts.Msg.WM_KEYUP, key); }
public static void AddSpecifyKey(Keys startKey) { if (startKey == Keys.None) { specifier = null; return; } var s = Yellers.FirstOrDefault(y => y.Name == nameof(startKey)); if (s != null) { if (s.IsYelling) { return; } s.ShutUpKey = startKey; return; } specifier = new Yeller(startKey); specifier.Name = nameof(startKey); specifier.Yelling += (y, e) => { switch (e.Index) { case Yeller.STARTED: y.Tag = new KeysQueue(); break; case Yeller.TERMINALED: SpecifyFunction((KeysQueue)y.Tag); y.Tag = null; break; default: var tag = (KeysQueue)y.Tag; tag.Insert(e.Key); y.Tag = tag; return; } }; }