Beispiel #1
0
        private void TestKeyHandler_SequenceWithOptionalKeys_OneTry()
        {
            var sequenceHandler = new KeySequenceHandler(
                new KeyCombinationHandler(VirtualKeyCode.Print),
                new KeyOrCombinationHandler(
                    new KeyCombinationHandler(VirtualKeyCode.Shift, VirtualKeyCode.KeyA),
                    new KeyCombinationHandler(VirtualKeyCode.Shift, VirtualKeyCode.KeyB))
                )
            {
                Timeout = null
            };

            bool result;

            // Print key
            result = sequenceHandler.Handle(KeyDown(VirtualKeyCode.Print));
            Assert.False(result);
            result = sequenceHandler.Handle(KeyUp(VirtualKeyCode.Print));
            Assert.False(result);

            // Shift KeyB
            result = sequenceHandler.Handle(KeyDown(VirtualKeyCode.Shift));
            Assert.False(result);
            result = sequenceHandler.Handle(KeyDown(VirtualKeyCode.KeyB));
            Assert.True(result);
            // Shift KeyB
            result = sequenceHandler.Handle(KeyUp(VirtualKeyCode.KeyB));
            Assert.False(result);
            result = sequenceHandler.Handle(KeyUp(VirtualKeyCode.Shift));
            Assert.False(result);
        }
Beispiel #2
0
        private void TestKeyHandler_KeySequenceHandler_Right()
        {
            var sequenceHandler = new KeySequenceHandler(
                new KeyCombinationHandler(VirtualKeyCode.Print),
                new KeyCombinationHandler(VirtualKeyCode.Shift, VirtualKeyCode.KeyA))
            {
                Timeout = null
            };

            var result = sequenceHandler.Handle(KeyDown(VirtualKeyCode.Print));

            Assert.False(result);
            result = sequenceHandler.Handle(KeyUp(VirtualKeyCode.Print));
            Assert.False(result);
            result = sequenceHandler.Handle(KeyDown(VirtualKeyCode.Control));
            Assert.False(result);
            result = sequenceHandler.Handle(KeyDown(VirtualKeyCode.Control));
            Assert.False(result);
            result = sequenceHandler.Handle(KeyUp(VirtualKeyCode.Control));
            Assert.False(result);
            result = sequenceHandler.Handle(KeyDown(VirtualKeyCode.Shift));
            Assert.False(result);
            result = sequenceHandler.Handle(KeyDown(VirtualKeyCode.KeyA));
            Assert.True(result);
        }
Beispiel #3
0
        private void TestKeyHandler_KeySequenceHandler_Wrong_Right()
        {
            var sequenceHandler = new KeySequenceHandler(
                new KeyCombinationHandler(VirtualKeyCode.Print),
                new KeyCombinationHandler(VirtualKeyCode.Shift, VirtualKeyCode.KeyA))
            {
                // Prevent debug issues, we are not testing the timeout here!
                Timeout = null
            };

            var result = sequenceHandler.Handle(KeyDown(VirtualKeyCode.Print));

            Assert.False(result);
            result = sequenceHandler.Handle(KeyDown(VirtualKeyCode.Shift));
            Assert.False(result);
            result = sequenceHandler.Handle(KeyDown(VirtualKeyCode.KeyB));
            Assert.False(result);
            result = sequenceHandler.Handle(KeyUp(VirtualKeyCode.KeyB));
            Assert.False(result);
            result = sequenceHandler.Handle(KeyUp(VirtualKeyCode.Shift));
            Assert.False(result);
            result = sequenceHandler.Handle(KeyUp(VirtualKeyCode.Print));
            Assert.False(result);

            result = sequenceHandler.Handle(KeyDown(VirtualKeyCode.Shift));
            Assert.False(result);
            result = sequenceHandler.Handle(KeyDown(VirtualKeyCode.KeyA));
            Assert.True(result);
            result = sequenceHandler.Handle(KeyUp(VirtualKeyCode.KeyA));
            Assert.False(result);
            result = sequenceHandler.Handle(KeyUp(VirtualKeyCode.Shift));
            Assert.False(result);
            Assert.False(sequenceHandler.HasKeysPressed);
        }
Beispiel #4
0
        private async Task TestKeyHandler_Sequence_InputGenerator()
        {
            int pressCount      = 0;
            var sequenceHandler = new KeySequenceHandler(
                new KeyCombinationHandler(VirtualKeyCode.Print)
            {
                IgnoreInjected = false
            },
                new KeyCombinationHandler(VirtualKeyCode.Shift, VirtualKeyCode.KeyA)
            {
                IgnoreInjected = false
            });


            using (KeyboardHook.KeyboardEvents.Where(sequenceHandler).Subscribe(keyboardHookEventArgs => pressCount++))
            {
                await Task.Delay(20);

                KeyboardInputGenerator.KeyCombinationPress(VirtualKeyCode.Print);
                await Task.Delay(20);

                Assert.True(pressCount == 0);
                KeyboardInputGenerator.KeyCombinationPress(VirtualKeyCode.Shift, VirtualKeyCode.KeyB);
                await Task.Delay(20);

                Assert.True(pressCount == 0);
                KeyboardInputGenerator.KeyCombinationPress(VirtualKeyCode.Print);
                await Task.Delay(20);

                KeyboardInputGenerator.KeyCombinationPress(VirtualKeyCode.Shift, VirtualKeyCode.KeyA);
                await Task.Delay(20);

                Assert.True(pressCount == 1);
            }
        }
Beispiel #5
0
        private async Task TestKeyHandler_SequenceWithOptionalKeys_KeyboardInputGenerator()
        {
            int pressCount      = 0;
            var sequenceHandler = new KeySequenceHandler(
                new KeyCombinationHandler(VirtualKeyCode.Print)
            {
                IgnoreInjected = false
            },
                new KeyOrCombinationHandler(
                    new KeyCombinationHandler(VirtualKeyCode.Shift, VirtualKeyCode.KeyA)
            {
                IgnoreInjected = false
            },
                    new KeyCombinationHandler(VirtualKeyCode.Shift, VirtualKeyCode.KeyB)
            {
                IgnoreInjected = false
            })
                )
            {
                // Timeout for test
                Timeout = TimeSpan.FromMilliseconds(200)
            };

            using (KeyboardHook.KeyboardEvents.Where(sequenceHandler).Subscribe(keyboardHookEventArgs => pressCount++))
            {
                await Task.Delay(20);

                KeyboardInputGenerator.KeyCombinationPress(VirtualKeyCode.Print);
                await Task.Delay(20);

                Assert.Equal(0, pressCount);
                KeyboardInputGenerator.KeyCombinationPress(VirtualKeyCode.Shift, VirtualKeyCode.KeyB);
                await Task.Delay(20);

                Assert.Equal(1, pressCount);
                KeyboardInputGenerator.KeyCombinationPress(VirtualKeyCode.Print);
                await Task.Delay(20);

                KeyboardInputGenerator.KeyCombinationPress(VirtualKeyCode.Shift, VirtualKeyCode.KeyA);
                await Task.Delay(20);

                Assert.Equal(2, pressCount);

                // Test with timeout, waiting to long
                KeyboardInputGenerator.KeyCombinationPress(VirtualKeyCode.Print);
                await Task.Delay(400);

                KeyboardInputGenerator.KeyCombinationPress(VirtualKeyCode.Shift, VirtualKeyCode.KeyA);
                await Task.Delay(20);

                Assert.Equal(2, pressCount);
            }
        }
Beispiel #6
0
        private async Task TestKeyHandler_SequenceWithOptionalKeys_Timeout()
        {
            var sequenceHandler = new KeySequenceHandler(
                new KeyCombinationHandler(VirtualKeyCode.Print),
                new KeyOrCombinationHandler(
                    new KeyCombinationHandler(VirtualKeyCode.Shift, VirtualKeyCode.KeyA),
                    new KeyCombinationHandler(VirtualKeyCode.Shift, VirtualKeyCode.KeyB))
                )
            {
                Timeout = TimeSpan.FromMilliseconds(200)
            };

            bool result;

            // Print key
            result = sequenceHandler.Handle(KeyDown(VirtualKeyCode.Print));
            Assert.False(result);
            result = sequenceHandler.Handle(KeyUp(VirtualKeyCode.Print));
            Assert.False(result);

            // Shift KeyB
            result = sequenceHandler.Handle(KeyDown(VirtualKeyCode.Shift));
            Assert.True(sequenceHandler.HasKeysPressed);
            Assert.False(result);
            await Task.Delay(400);

            result = sequenceHandler.Handle(KeyDown(VirtualKeyCode.KeyB));
            Assert.True(sequenceHandler.HasKeysPressed);
            Assert.False(result);
            result = sequenceHandler.Handle(KeyUp(VirtualKeyCode.KeyB));
            Assert.True(sequenceHandler.HasKeysPressed);
            Assert.False(result);
            result = sequenceHandler.Handle(KeyUp(VirtualKeyCode.Shift));
            Assert.False(sequenceHandler.HasKeysPressed);
            Assert.False(result);
        }