PSMouseJiggler is a PowerShell module designed to simulate mouse movements to prevent your computer from going idle. This project provides both a command-line interface and a graphical user interface (GUI) for ease of use.
- Mouse Movement Simulation: Simulates mouse movements to keep your computer awake
- Advanced Keep-Awake Methods: Multiple techniques including hardware input, keyboard, and System API
- Graphical User Interface: Modern tabbed GUI with Basic, Advanced, and Quick Launch modes
- Quick Launch Profiles: Pre-configured profiles for common scenarios with one-click start
- Custom Movement Patterns: Choose from Random, Horizontal, Vertical, or Circular patterns
- Incognito Mode: Minimizes GUI and clears console for discreet operation
- Scheduled Jiggling: Set up automatic jiggling at specified times using scheduled tasks
- Configuration Management: Load and save user preferences for a personalized experience
- PowerShell Module: Properly structured as a PowerShell module for easy installation and management
- Testing Framework: Includes unit tests to ensure core functionalities work as expected
- PowerShell 5.1 or later
- Windows operating system
- .NET Framework 4.7.2 or later
Install-Module -Name PSMouseJiggler -Scope CurrentUser.\install.ps1-
Copy the
PSMouseJigglerfolder fromsrc/PSMouseJigglerto your PowerShell modules directory:- Windows PowerShell:
$env:USERPROFILE\Documents\WindowsPowerShell\Modules\ - PowerShell Core:
$env:USERPROFILE\Documents\PowerShell\Modules\
- Windows PowerShell:
-
Import the module:
Import-Module PSMouseJigglerShow-PSMouseJigglerGUIThe GUI provides three modes:
- Basic Mode: Simple mouse jiggling with pattern selection
- Advanced Mode: Combine multiple keep-awake methods for maximum effectiveness
- Quick Launch: One-click pre-configured profiles for common scenarios
# Basic mouse jiggling
Start-PSMouseJiggler
# With custom settings
Start-PSMouseJiggler -Interval 2000 -MovementPattern Circular -Duration 3600
# Incognito mode (discrete operation)
Start-PSMouseJiggler -Incognito
# Advanced keep-awake with multiple methods
Start-KeepAwake -Methods @('MouseHardware', 'Keyboard', 'SystemAPI') -Interval 30000
# Stop jiggling
Stop-PSMouseJigglerStart-PSMouseJiggler- Start basic mouse jiggling with pattern-based movementStop-PSMouseJiggler- Stop the currently running mouse jiggler or keep-awakeStart-KeepAwake- Advanced multi-method keep-awake functionalityShow-PSMouseJigglerGUI- Launch the graphical user interface
Get-Configuration- Get current configuration settingsSave-Configuration- Save configuration to fileUpdate-Configuration- Update specific configuration valuesReset-Configuration- Reset to default configuration
Get-PSMJScheduledTasks- List PSMouseJiggler scheduled tasksNew-PSMJScheduledTask- Create a new scheduled taskRemove-PSMJScheduledTask- Remove a scheduled taskStart-PSMJScheduledTask- Manually start a scheduled taskStop-PSMJScheduledTask- Stop a running scheduled task
Prevent-SystemIdle- Directly prevent system idle using Windows APISend-KeyboardInput- Send keyboard input (F15 key)Send-MouseInput- Send hardware-level mouse inputMove-Mouse- Move mouse cursor to specific coordinatesGet-NewMousePosition- Calculate new mouse position based on patternStart-MovementPattern- Start a custom movement patternStop-MovementPattern- Stop custom movement pattern
For detailed usage instructions, please refer to the USAGE.md file.
The GUI includes five pre-configured profiles for common scenarios:
- [Mouse] Basic Discrete - Random mouse movements every 1 second with incognito mode
- [Lock] Maximum Security - Hardware mouse + System API for strict security policies
- [Key] Keyboard Only - Keyboard input only, no mouse movement
- [API] System API Only - Direct Windows power management control
- [MAX] All Methods - Maximum reliability using all available techniques
PSMouseJiggler/
├── src/
│ └── PSMouseJiggler/
│ ├── PSMouseJiggler.psd1 # Module manifest
│ ├── PSMouseJiggler.psm1 # Main module file
│ ├── config/
│ │ └── default.json # Default configuration
│ └── README.md # Module documentation
├── tests/
│ └── PSMouseJiggler.Tests.ps1 # Pester tests
├── docs/
│ ├── CONTRIBUTING.md # Contribution guidelines
│ └── USAGE.md # Detailed usage guide
├── .github/
│ └── workflows/
│ ├── ci.yml # Continuous integration
│ └── publish.yml # Publishing workflow
├── QuickStart.ps1 # Quick start demo script
├── Validate.ps1 # Validation script
└── README.md # This file
- Presentations: Keep your screen active during long presentations
- Remote Work: Maintain active status in communication apps
- Long Downloads: Prevent sleep during large file transfers
- Video Rendering: Keep system awake during lengthy rendering processes
- Monitoring: Maintain visibility of monitoring dashboards
- Testing: Prevent idle during automated test runs
We welcome contributions! Please read the CONTRIBUTING.md file for guidelines on how to contribute to the project.
Ensure you're running PowerShell 5.1 or later and have the required .NET Framework version installed.
Check that System.Windows.Forms and System.Drawing assemblies are available on your system.
Make sure the module is imported: Import-Module PSMouseJiggler -Force
If you have other modules with scheduled task functions, use the PSMJ-prefixed versions: Get-PSMJScheduledTasks, etc.
This project is licensed under the MIT License. See the LICENSE file for more details.
- Report issues on GitHub Issues
- View documentation in
docs/USAGE.md - Get help:
Get-Help <CommandName> -Full
Thanks to the PowerShell community for their support and contributions to the PSMouseJiggler project!
Version: 1.1.0 Author: Steven Wight (PowerShell Young Team) Last Updated: October 2025