mirror of https://github.com/jetkvm/kvm.git
47 lines
855 B
Go
47 lines
855 B
Go
package jiggler
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/jetkvm/kvm/internal/hardware"
|
|
"github.com/jetkvm/kvm/internal/logging"
|
|
)
|
|
|
|
var lastUserInput = time.Now()
|
|
|
|
func ResetUserInputTime() {
|
|
lastUserInput = time.Now()
|
|
}
|
|
|
|
var jigglerEnabled = false
|
|
|
|
func RPCSetJigglerState(enabled bool) {
|
|
jigglerEnabled = enabled
|
|
}
|
|
func RPCGetJigglerState() bool {
|
|
return jigglerEnabled
|
|
}
|
|
|
|
func init() {
|
|
go runJiggler()
|
|
}
|
|
|
|
func runJiggler() {
|
|
for {
|
|
if jigglerEnabled {
|
|
if time.Since(lastUserInput) > 20*time.Second {
|
|
//TODO: change to rel mouse
|
|
err := hardware.RPCAbsMouseReport(1, 1, 0)
|
|
if err != nil {
|
|
logging.Logger.Warnf("Failed to jiggle mouse: %v", err)
|
|
}
|
|
err = hardware.RPCAbsMouseReport(0, 0, 0)
|
|
if err != nil {
|
|
logging.Logger.Warnf("Failed to reset mouse position: %v", err)
|
|
}
|
|
}
|
|
}
|
|
time.Sleep(20 * time.Second)
|
|
}
|
|
}
|