Пример #1
0
        protected override void ExecuteAfterDelay()
        {
            if (Key == Keys.None)
            {
                return;
            }

            KeyboardInjection.StrokeKey(Key);
        }
Пример #2
0
        protected override void ExecuteAfterDelay()
        {
            if (string.IsNullOrEmpty(Text))
            {
                return;
            }

            KeyboardInjection.EnterCharacters(Text);
        }
Пример #3
0
        private async Task InjectWindowsKeyPress()
        {
            if (!_isTouchInjectionSuspended)
            {
                _isTouchInjectionSuspended = true;

                _pointerTouchInfos.Clear();
                InjectPointerTouchInfos();

                KeyboardInjection.Send(KeyboardInputSequence.WindowsKeyPress);

                await Task.Delay(TimeSpan.FromMilliseconds(750));

                _isTouchInjectionSuspended = false;

                _pointerTouchInfos.Clear();
                InjectPointerTouchInfos();
            }
        }
        public MainWindow()
        {
            InitializeComponent();

            this.SetBorderless();
            this.SetInactive();
            MouseLeftButtonDown += (o, e) => DragMove();

            KeysStates         = KeysMap.Keys.ToDictionary(x => x, x => new ReactiveProperty <bool>());
            KirbyButtonsStates = KirbyButtonsMap.Keys.ToDictionary(x => x, x => new ReactiveProperty <bool>());

            var gamepadButtons = GamepadButtonsPanel.Children.OfType <TextBlock>();

            foreach (var button in gamepadButtons)
            {
                var key     = KeysMap[button.Text];
                var pressed = KeysStates[button.Text];

                pressed
                .ObserveOnDispatcher()
                .Do(b => button.Background = b ? PressedBrush : NormalBrush)
                .Subscribe(b =>
                {
                    if (b)
                    {
                        KeyboardInjection.KeyDown(key);
                    }
                    else
                    {
                        KeyboardInjection.KeyUp(key);
                    }
                });

                button.TouchDown += (o, e) => pressed.Value = true;
                button.TouchUp   += (o, e) => pressed.Value = false;
            }

            var kirbyButtons = KirbyButtonsPanel.Children.OfType <TextBlock>();

            foreach (var button in kirbyButtons)
            {
                var key     = KeysStates[KirbyButtonsMap[button.Text]];
                var pressed = KirbyButtonsStates[button.Text];

                pressed
                .ObserveOnDispatcher()
                .Do(b => button.Background = b ? PressedBrush : NormalBrush)
                .Subscribe(b => key.Value  = b);

                button.TouchDown += (o, e) => pressed.Value = true;
                button.TouchUp   += (o, e) => pressed.Value = false;
            }

            appModel.IsRightOriented.Subscribe(b => KirbyButtonsStates["進"].Value = b);
            appModel.IsLeftOriented.Subscribe(b => KirbyButtonsStates["退"].Value  = b);
            appModel.AreHandsAbove.Subscribe(b => KirbyButtonsStates["翔"].Value   = b);
            appModel.IsJumping.Subscribe(b => KirbyButtonsStates["跳"].Value       = b);
            appModel.IsSquat.Subscribe(b => KirbyButtonsStates["屈"].Value         = b);
            appModel.IsMouthOpen.Subscribe(b => KirbyButtonsStates["吸"].Value     = b);
            appModel.IsHandHit.Subscribe(b => KirbyButtonsStates["扉"].Value       = b);
        }