/// <summary> /// 指定されたキーの観察 /// </summary> private void WatchKeys() { int intervalSum = 0; KeyStateValue target = _keyStateValueList.First; while (stopFlag) { if (WatchKey(target.KeyCode)) { target.Record(); target = target.Next; // 押下判定 if (target.IsTerminal) // 最後のキーが押下されたか? { // 全入力の時間が閾値以下である事 if ((_keyStateValueList.Last.Time - _keyStateValueList.First.Time) < _thresholdTimeSpan) { // 見つかったらコールバック KeyPushed(this, new KeyWatcherEventArgs(_keyCodeArray)); } intervalSum = 0; target = _keyStateValueList.First; } } else { // 見つからない場合はウェイトする Thread.Sleep(_interval); intervalSum += _interval; } // 一定期間内に見つからない場合は最初に戻る if (intervalSum >= _threshold) { intervalSum = 0; target = _keyStateValueList.First; } } }
public void SetKeyState(int test) { currentState = (KeyStateValue)test; }
public void SetKeyCancle() { currentState = KeyStateValue.none; }