public bool Equals(KeyboardPosition other) { if (ReferenceEquals(null, other)) return false; if (ReferenceEquals(this, other)) return true; return other.row == row && other.column == column; }
public void TestAbKeyboard() { var keyboard = new Keyboard(new[]{2},SetUtil.NewHash('a','b')); var firstPos = new KeyboardPosition(0,0); var secondPos = new KeyboardPosition(0,1); var times = new TransitionTimes(keyboard); times[firstPos, secondPos] = 1; times[firstPos, firstPos] = 2; times[secondPos, secondPos] = 2; times[secondPos, firstPos] = 2; var goodLayout = new KeyboardLayout("ab", keyboard); var badLayout = new KeyboardLayout("ba",keyboard); var occurrences = new double[keyboard.AllChars.Count, keyboard.AllChars.Count]; var corpus = new Corpus(occurrences, 1000,keyboard); corpus['a', 'b'] = 100; var goodScore = KeyboardEPAlgorithm.Score(goodLayout, corpus, times); var badScore = KeyboardEPAlgorithm.Score(badLayout, corpus, times); Assert.That(goodScore > badScore); }
void KeyReleased(Keys releasedKey) { var releasedChar = GetKeyChar(releasedKey); if (releasedKey == Keys.Space || releasedChar == null) { lastPosition = null; return; } var now = DateTime.Now; var elapsedTime = (now - lastTime).TotalMilliseconds; var currentPosition = KeyboardLayout.QWERTY.GetCharPosition(releasedChar.Value); if (lastPosition != null && elapsedTime < MAXIMUM_TIME_BETWEEN_KEYS) { times[currentPosition, lastPosition].AddMeasurement(elapsedTime); Console.WriteLine(string.Format("adding measurement {0}", elapsedTime)); } lastPosition = currentPosition; lastTime = now; }