Esempio n. 1
0
        /// <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;
            }
        }
Esempio n. 2
0
        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);
            }
        }
Esempio n. 3
0
        public RepeatKeyRecord(KeyRecord Repeated, KeystrokesSettings Settings)
        {
            this.Repeated = Repeated;
            _settings     = Settings;

            Increment();
        }
Esempio n. 4
0
 public KeyModifiedStep(KeystrokesSettings Settings,
                        KeymapViewModel Keymap)
 {
     _keymap             = Keymap;
     _keystrokesSettings = Settings;
     _modifierStates     = ModifierStates.GetCurrent();
 }
Esempio n. 5
0
 public MouseDragStep(Point EndPoint,
                      MouseClickSettings Settings,
                      KeystrokesSettings KeystrokesSettings,
                      KeymapViewModel Keymap) : base(KeystrokesSettings, Keymap)
 {
     this.EndPoint = EndPoint;
     _settings     = Settings;
 }
Esempio n. 6
0
 public MouseDragBeginStep(Point StartPoint,
                           MouseClickSettings Settings,
                           KeystrokesSettings KeystrokesSettings,
                           KeymapViewModel Keymap) : base(KeystrokesSettings, Keymap)
 {
     _start    = StartPoint;
     _settings = Settings;
 }
Esempio n. 7
0
        public ScrollStep(MouseEventArgs Args,
                          MouseClickSettings Settings,
                          KeystrokesSettings KeystrokesSettings,
                          KeymapViewModel Keymap) : base(KeystrokesSettings, Keymap)
        {
            this.Args = Args;

            _settings = Settings;
        }
Esempio n. 8
0
        public MouseClickStep(MouseClickSettings Settings,
                              KeystrokesSettings KeystrokesSettings,
                              MouseEventArgs Args,
                              KeymapViewModel Keymap) : base(KeystrokesSettings, Keymap)
        {
            _settings = Settings;
            this.Args = Args;

            Timestamp = DateTime.Now;
        }
Esempio n. 9
0
        public KeyStep(KeystrokesSettings Settings,
                       KeyRecord KeyRecord)
        {
            _settings = Settings;

            // TODO: Handle Modifiers keys on KeyUp like in KeyOverlay
            Text = KeyRecord.Display;

            _mergeable = Text.Length == 1;
        }
Esempio n. 10
0
        /// <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;
            }
        }
Esempio n. 11
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. 12
0
        /// <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;
        }
Esempio n. 13
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. 14
0
        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);
                }
            }
        }
Esempio n. 15
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. 16
0
        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);
        }
Esempio n. 17
0
        /// <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;
        }