Esempio n. 1
0
        public ScrollOverlay(IMouseKeyHook Hook,
                             MouseClickSettings Settings)
        {
            _settings = Settings;

            Hook.MouseWheel += (S, E) => _lastArgs = E;
        }
Esempio n. 2
0
        public KeyOverlay(IMouseKeyHook Hook,
                          KeystrokesSettings Settings,
                          KeymapViewModel Keymap)
        {
            _settings = Settings;
            _keymap   = Keymap;

            _records = new KeyRecords(Settings.HistoryCount);

            Hook.KeyDown += OnKeyDown;
            Hook.KeyUp   += OnKeyUp;
        }
Esempio n. 3
0
        /// <summary>
        /// Creates a new instance of <see cref="MouseKeyHook"/>.
        /// </summary>
        public MouseKeyOverlay(IMouseKeyHook Hook,
                               MouseClickSettings MouseClickSettings,
                               KeymapViewModel Keymap,
                               string FileName,
                               Func <TimeSpan> Elapsed)
        {
            _keymap = Keymap;

            _hook = Hook;
            _mouseClickOverlay = new MouseClickOverlay(_hook, MouseClickSettings);
            _scrollOverlay     = new ScrollOverlay(_hook, MouseClickSettings);
        }
Esempio n. 4
0
        public MouseClickOverlay(IMouseKeyHook Hook,
                                 MouseClickSettings Settings)
        {
            _settings = Settings;

            Hook.MouseDown += (S, E) =>
            {
                _clicked = true;

                _buttons = E.Button;
            };

            Hook.MouseUp += (S, E) => _clicked = false;
        }
Esempio n. 5
0
        public StepsRecorder(IMouseKeyHook Hook,
                             IVideoFileWriter VideoWriter,
                             IImageProvider ImageProvider,
                             MouseClickSettings MouseClickSettings,
                             KeystrokesSettings KeystrokesSettings,
                             StepsSettings StepsSettings,
                             KeymapViewModel KeymapViewModel)
        {
            _hook               = Hook;
            _videoWriter        = VideoWriter;
            _imageProvider      = ImageProvider;
            _stepsSettings      = StepsSettings;
            _mouseClickSettings = MouseClickSettings;
            _keystrokesSettings = KeystrokesSettings;
            _keymap             = KeymapViewModel;

            var stepsObservable = Observe(_hook, _cancellationTokenSource.Token, out var shotObservable);

            _recordTask = Task.Factory.StartNew(() => DoRecord(stepsObservable, shotObservable), TaskCreationOptions.LongRunning);
        }
Esempio n. 6
0
        /// <summary>
        /// Creates a new instance of <see cref="MouseKeyHook"/>.
        /// </summary>
        public MouseKeyOverlay(MouseClickSettings MouseClickSettings,
                               KeystrokesSettings KeystrokesSettings,
                               KeymapViewModel Keymap,
                               string FileName,
                               Func <TimeSpan> Elapsed)
        {
            _keystrokesSettings = KeystrokesSettings;
            _keymap             = Keymap;

            _hook = new MouseKeyHook();
            _mouseClickOverlay = new MouseClickOverlay(_hook, MouseClickSettings);

            if (KeystrokesSettings.SeparateTextFile)
            {
                _textWriter = InitKeysToTextFile(FileName, Elapsed);
            }
            else
            {
                _keyOverlay = new KeyOverlay(_hook, KeystrokesSettings, Keymap);
            }
        }
Esempio n. 7
0
        IObservable <IRecordStep> Observe(IMouseKeyHook Hook, CancellationToken CancellationToken, out IObservable <Unit> ShotObservable)
        {
            var subject     = new Subject <IRecordStep>();
            var shotSubject = new Subject <Unit>();

            ShotObservable = shotSubject;

            void OnNext(IRecordStep NextStep)
            {
                if (_lastStep != null)
                {
                    if (_lastStep.Merge(NextStep))
                    {
                        return;
                    }

                    subject.OnNext(_lastStep);
                }

                shotSubject.OnNext(Unit.Default);

                _lastStep = NextStep;
            }

            Hook.MouseClick += (S, E) =>
            {
                var step = new MouseClickStep(_mouseClickSettings,
                                              _keystrokesSettings, E,
                                              _keymap);

                OnNext(step);
            };

            Hook.MouseDoubleClick += (S, E) =>
            {
                var step = new MouseClickStep(_mouseClickSettings,
                                              _keystrokesSettings, E,
                                              _keymap);

                OnNext(step);
            };

            Hook.MouseDragStarted += (S, E) =>
            {
                var step = new MouseDragBeginStep(E.Location,
                                                  _mouseClickSettings,
                                                  _keystrokesSettings,
                                                  _keymap);

                OnNext(step);
            };

            Hook.MouseDragFinished += (S, E) =>
            {
                var step = new MouseDragStep(E.Location,
                                             _mouseClickSettings,
                                             _keystrokesSettings,
                                             _keymap);

                OnNext(step);
            };

            if (_stepsSettings.IncludeScrolls)
            {
                // TODO: Event is not firing for touchpad scroll
                Hook.MouseWheel += (S, E) =>
                {
                    var step = new ScrollStep(E,
                                              _mouseClickSettings,
                                              _keystrokesSettings,
                                              _keymap);

                    OnNext(step);
                };
            }

            Hook.KeyDown += (S, E) =>
            {
                _modifierSingleDown = false;

                var record = new KeyRecord(E, _keymap);

                var display = record.Display;

                if (display == _keymap.Control ||
                    display == _keymap.Alt ||
                    display == _keymap.Shift)
                {
                    _modifierSingleDown = true;
                }
                else
                {
                    OnNext(new KeyStep(_keystrokesSettings, record));
                }
            };

            Hook.KeyUp += (S, E) =>
            {
                var record = new KeyRecord(E, _keymap);

                var display = record.Display;

                if (display == _keymap.Control ||
                    display == _keymap.Alt ||
                    display == _keymap.Shift)
                {
                    if (_modifierSingleDown)
                    {
                        OnNext(new KeyStep(_keystrokesSettings, record));
                    }
                }
            };

            CancellationToken.Register(() =>
            {
                shotSubject.OnCompleted();

                subject.OnNext(_lastStep);

                subject.OnCompleted();
            });

            return(subject
                   .Where(M => _recording));
        }