/// <summary> /// Creates a new instance of <see cref="MouseKeyHook"/>. /// </summary> public MouseKeyHook(MouseClickSettings MouseClickSettings, KeystrokesSettings KeystrokesSettings, KeymapViewModel Keymap, string FileName, Func <TimeSpan> Elapsed) { _mouseClickSettings = MouseClickSettings; _keystrokesSettings = KeystrokesSettings; _keymap = Keymap; _hook = Hook.GlobalEvents(); _hook.MouseDown += (S, E) => { _mouseClicked = true; _mouseButtons = E.Button; }; _hook.MouseUp += (S, E) => _mouseClicked = false; if (KeystrokesSettings.SeparateTextFile) { _textWriter = InitKeysToTextFile(FileName, Elapsed); } else { _records = new KeyRecords(KeystrokesSettings.HistoryCount); _hook.KeyDown += OnKeyDown; _hook.KeyUp += OnKeyUp; } }
static void DrawKeys(KeystrokesSettings KeystrokesSettings, IEditableFrame Editor, string Text, IFont Font, byte Opacity, float OffsetY) { var size = Editor.MeasureString(Text, Font); int paddingX = KeystrokesSettings.HorizontalPadding, paddingY = KeystrokesSettings.VerticalPadding; var rect = new RectangleF(GetLeft(KeystrokesSettings, Editor.Width, size.Width), GetTop(KeystrokesSettings, Editor.Height, size.Height, OffsetY), size.Width + 2 * paddingX, size.Height + 2 * paddingY); Editor.FillRectangle(Color.FromArgb(Opacity, KeystrokesSettings.BackgroundColor), rect, KeystrokesSettings.CornerRadius); Editor.DrawString(Text, Font, Color.FromArgb(Opacity, KeystrokesSettings.FontColor), new RectangleF(rect.Left + paddingX, rect.Top + paddingY, size.Width, size.Height)); var border = KeystrokesSettings.BorderThickness; if (border > 0) { rect = new RectangleF(rect.Left - border / 2f, rect.Top - border / 2f, rect.Width + border, rect.Height + border); Editor.DrawRectangle(Color.FromArgb(Opacity, KeystrokesSettings.BorderColor), border, rect, KeystrokesSettings.CornerRadius); } }
public RepeatKeyRecord(KeyRecord Repeated, KeystrokesSettings Settings) { this.Repeated = Repeated; _settings = Settings; Increment(); }
public KeyModifiedStep(KeystrokesSettings Settings, KeymapViewModel Keymap) { _keymap = Keymap; _keystrokesSettings = Settings; _modifierStates = ModifierStates.GetCurrent(); }
public MouseDragStep(Point EndPoint, MouseClickSettings Settings, KeystrokesSettings KeystrokesSettings, KeymapViewModel Keymap) : base(KeystrokesSettings, Keymap) { this.EndPoint = EndPoint; _settings = Settings; }
public MouseDragBeginStep(Point StartPoint, MouseClickSettings Settings, KeystrokesSettings KeystrokesSettings, KeymapViewModel Keymap) : base(KeystrokesSettings, Keymap) { _start = StartPoint; _settings = Settings; }
public ScrollStep(MouseEventArgs Args, MouseClickSettings Settings, KeystrokesSettings KeystrokesSettings, KeymapViewModel Keymap) : base(KeystrokesSettings, Keymap) { this.Args = Args; _settings = Settings; }
public MouseClickStep(MouseClickSettings Settings, KeystrokesSettings KeystrokesSettings, MouseEventArgs Args, KeymapViewModel Keymap) : base(KeystrokesSettings, Keymap) { _settings = Settings; this.Args = Args; Timestamp = DateTime.Now; }
public KeyStep(KeystrokesSettings Settings, KeyRecord KeyRecord) { _settings = Settings; // TODO: Handle Modifiers keys on KeyUp like in KeyOverlay Text = KeyRecord.Display; _mergeable = Text.Length == 1; }
/// <summary> /// Creates a new instance of <see cref="MouseKeyHook"/>. /// </summary> public MouseKeyHook(MouseClickSettings MouseClickSettings, KeystrokesSettings KeystrokesSettings, KeymapViewModel Keymap, string FileName, Func <TimeSpan> Elapsed) { _mouseClickSettings = MouseClickSettings; _keystrokesSettings = KeystrokesSettings; _keymap = Keymap; _hook = Hook.GlobalEvents(); _hook.MouseDown += (S, E) => { _mouseClicked = true; _mouseButtons = E.Button; }; _hook.MouseUp += (S, E) => _mouseClicked = false; if (KeystrokesSettings.SeparateTextFile) { _elapsed = Elapsed; var dir = Path.GetDirectoryName(FileName); var fileNameWoExt = Path.GetFileNameWithoutExtension(FileName); var targetName = $"{fileNameWoExt}.keys.txt"; var path = dir == null ? targetName : Path.Combine(dir, targetName); _keystrokeFileStream = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write, FileShare.Read); _textWriter = new StreamWriter(_keystrokeFileStream); _hook.KeyDown += (S, E) => { if (!_keystrokesSettings.Display) { return; } var record = new KeyRecord(E, _keymap); _textWriter.WriteLine($"{_elapsed.Invoke()}: {record.Display}"); }; } else { _records = new KeyRecords(KeystrokesSettings.HistoryCount); _hook.KeyDown += OnKeyDown; _hook.KeyUp += OnKeyUp; } }
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 MouseKeyHook(MouseClickSettings MouseClickSettings, KeystrokesSettings KeystrokesSettings) { _mouseClickSettings = MouseClickSettings; _keystrokesSettings = KeystrokesSettings; _hook = Hook.GlobalEvents(); _hook.MouseDown += (S, E) => _mouseClicked = true; _hook.MouseUp += (S, E) => _mouseClicked = false; _records = new KeyRecords(KeystrokesSettings.HistoryCount); _hook.KeyDown += OnKeyDown; _hook.KeyUp += OnKeyUp; }
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); }
public static void DrawString(IEditableFrame Editor, string Text, KeystrokesSettings Settings) { if (string.IsNullOrWhiteSpace(Text)) { return; } using (var font = Editor.GetFont(Settings.FontFamily, Settings.FontSize)) { var size = Editor.MeasureString(Text, font); int paddingX = Settings.HorizontalPadding, paddingY = Settings.VerticalPadding; var rect = new RectangleF(KeyOverlay.GetLeft(Settings, Editor.Width, size.Width), KeyOverlay.GetTop(Settings, Editor.Height, size.Height), size.Width + 2 * paddingX, size.Height + 2 * paddingY); Editor.FillRectangle(Settings.BackgroundColor, rect, Settings.CornerRadius); Editor.DrawString(Text, font, Settings.FontColor, new RectangleF(rect.Left + paddingX, rect.Top + paddingY, size.Width, size.Height)); var border = Settings.BorderThickness; if (border > 0) { rect = new RectangleF(rect.Left - border / 2f, rect.Top - border / 2f, rect.Width + border, rect.Height + border); Editor.DrawRectangle(Settings.BorderColor, border, rect, Settings.CornerRadius); } } }
/// <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); } }
private Controls.LayerFrame Keystrokes(KeystrokesSettings settings) { var control = Text(settings, "Keystrokes"); void SetVisibility() { control.Visibility = settings.SeparateTextFile ? Visibility.Collapsed : Visibility; } SetVisibility(); settings.PropertyChanged += (s, e) => { switch (e.PropertyName) { case nameof(settings.SeparateTextFile): SetVisibility(); break; } }; return(control); }
/// <summary> /// Creates a new instance of <see cref="MouseKeyHook"/>. /// </summary> public MouseKeyHook(MouseClickSettings MouseClickSettings, KeystrokesSettings KeystrokesSettings, KeymapViewModel Keymap, KeyVector keyVector) { _mouseClickSettings = MouseClickSettings; _keystrokesSettings = KeystrokesSettings; _keymap = Keymap; _keyVector = keyVector; _hook = Hook.GlobalEvents(); _hook.MouseDown += (S, E) => { _mouseClicked = true; _mouseButtons = E.Button; }; _hook.MouseUp += (S, E) => _mouseClicked = false; _records = new KeyRecords(KeystrokesSettings.HistoryCount); _hook.KeyDown += OnKeyDown; _hook.KeyUp += OnKeyUp; }