Ejemplo n.º 1
0
 public static void UnregisterKeyReleased(int key, KeyReleasedEventHandler eventHandler)
 {
     if (keyReleased.ContainsKey(key))
     {
         keyReleased[key] -= eventHandler;
     }
 }
Ejemplo n.º 2
0
        private void ScanThreadMethod()
        {
            var prevKey = -1;

            while (_scanThreadActive)
            {
                var nbKey = 0;
                // Scans the matrix
                for (var i = 0; i < 4; i++)
                {
                    for (var j = 0; j < 3; j++)
                    {
                        if (!ReadMatrix(i, j))
                        {
                            continue;
                        }
                        // A key has been pressed
                        var keyNum = (i * 3) + j + 1;
                        nbKey += keyNum;
                        if ((prevKey != keyNum) && (prevKey == -1))  // A key has been pressed and no other is currently pressed (avoids dealing with multiple keys at the same time)
                        {
                            prevKey = keyNum;
                            KeyPressedEventHandler tempEvent = KeyPressed;
                            tempEvent(this, new KeyPressedEventArgs(keyNum, KeytoChar(keyNum)));
                        }
                        break;
                    }
                }
                if (nbKey == 0)  // No key pressed in this pass
                {
                    // Was there a key pressed before ?
                    if (prevKey != -1)
                    {
                        KeyReleasedEventHandler tempEvent = KeyReleased;
                        tempEvent(this, new KeyReleasedEventArgs(prevKey, KeytoChar(prevKey)));
                    }
                    prevKey = -1;
                }
                // Leave time for other processes
                Thread.Sleep(50);
            }
        }