public ScrollOverlay(IMouseKeyHook Hook, MouseClickSettings Settings) { _settings = Settings; Hook.MouseWheel += (S, E) => _lastArgs = E; }
public KeyOverlay(IMouseKeyHook Hook, KeystrokesSettings Settings, KeymapViewModel Keymap) { _settings = Settings; _keymap = Keymap; _records = new KeyRecords(Settings.HistoryCount); Hook.KeyDown += OnKeyDown; Hook.KeyUp += OnKeyUp; }
/// <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); }
public MouseClickOverlay(IMouseKeyHook Hook, MouseClickSettings Settings) { _settings = Settings; Hook.MouseDown += (S, E) => { _clicked = true; _buttons = E.Button; }; Hook.MouseUp += (S, E) => _clicked = false; }
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); }
/// <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); } }
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)); }