Documentation
¶
Overview ¶
Package virtual_pointer provides Go bindings for the wlr-virtual-pointer-unstable-v1 Wayland protocol.
This protocol allows clients to emulate a physical pointer device, enabling mouse input injection into Wayland compositors without requiring root privileges. This is a complete, working implementation built on neurlang/wayland.
Basic Usage ¶
// Create manager and pointer ctx := context.Background() manager, err := NewVirtualPointerManager(ctx) if err != nil { log.Fatal(err) } defer manager.Close() pointer, err := manager.CreatePointer() if err != nil { log.Fatal(err) } defer pointer.Close() // Move mouse cursor (relative movement) pointer.MoveRelative(100.0, 50.0) // Click buttons pointer.LeftClick() pointer.RightClick() pointer.MiddleClick() // Scroll (positive = down/right, negative = up/left) pointer.ScrollVertical(5.0) pointer.ScrollHorizontal(-3.0) // Manual control with timestamps pointer.Motion(time.Now(), 10.0, 5.0) pointer.Frame()
Protocol Specification ¶
Based on wlr-virtual-pointer-unstable-v1 from wlroots project. Supported by Hyprland, Sway, and other wlroots-based compositors.
Index ¶
- Constants
- type Axis
- type AxisSource
- type ButtonState
- type VirtualPointer
- func (p *VirtualPointer) Axis(timestamp time.Time, axis Axis, value float64) error
- func (p *VirtualPointer) AxisDiscrete(timestamp time.Time, axis Axis, value float64, discrete int32) error
- func (p *VirtualPointer) AxisSource(source AxisSource) error
- func (p *VirtualPointer) AxisStop(timestamp time.Time, axis Axis) error
- func (p *VirtualPointer) Button(timestamp time.Time, button uint32, state ButtonState) error
- func (p *VirtualPointer) Close() error
- func (p *VirtualPointer) Frame() error
- func (p *VirtualPointer) LeftClick() error
- func (p *VirtualPointer) MiddleClick() error
- func (p *VirtualPointer) Motion(timestamp time.Time, dx, dy float64) error
- func (p *VirtualPointer) MotionAbsolute(timestamp time.Time, x, y uint32, xExtent, yExtent uint32) error
- func (p *VirtualPointer) MoveRelative(dx, dy float64) error
- func (p *VirtualPointer) RightClick() error
- func (p *VirtualPointer) ScrollHorizontal(amount float64) error
- func (p *VirtualPointer) ScrollVertical(amount float64) error
- type VirtualPointerManager
Constants ¶
const ( BTN_LEFT = 0x110 BTN_RIGHT = 0x111 BTN_MIDDLE = 0x112 BTN_SIDE = 0x113 BTN_EXTRA = 0x114 )
Button constants for mouse buttons
const ( BUTTON_STATE_RELEASED = 0 BUTTON_STATE_PRESSED = 1 )
Button state constants
const ( AXIS_VERTICAL_SCROLL = 0 AXIS_HORIZONTAL_SCROLL = 1 )
Axis constants (from wl_pointer)
const ( AXIS_SOURCE_WHEEL = 0 AXIS_SOURCE_FINGER = 1 AXIS_SOURCE_CONTINUOUS = 2 AXIS_SOURCE_WHEEL_TILT = 3 )
Axis source constants (from wl_pointer)
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AxisSource ¶ added in v0.2.0
type AxisSource uint32
AxisSource represents the source of axis events
const ( AxisSourceWheel AxisSource = 0 AxisSourceFinger AxisSource = 1 AxisSourceContinuous AxisSource = 2 AxisSourceWheelTilt AxisSource = 3 )
type ButtonState ¶ added in v0.2.0
type ButtonState uint32
ButtonState represents the state of a button
const ( ButtonStateReleased ButtonState = 0 ButtonStatePressed ButtonState = 1 )
type VirtualPointer ¶
type VirtualPointer struct {
// contains filtered or unexported fields
}
VirtualPointer represents a virtual pointer device
func (*VirtualPointer) AxisDiscrete ¶
func (p *VirtualPointer) AxisDiscrete(timestamp time.Time, axis Axis, value float64, discrete int32) error
AxisDiscrete sends a discrete axis event
func (*VirtualPointer) AxisSource ¶
func (p *VirtualPointer) AxisSource(source AxisSource) error
AxisSource sets the axis source for subsequent axis events
func (*VirtualPointer) AxisStop ¶
func (p *VirtualPointer) AxisStop(timestamp time.Time, axis Axis) error
AxisStop sends an axis stop event
func (*VirtualPointer) Button ¶
func (p *VirtualPointer) Button(timestamp time.Time, button uint32, state ButtonState) error
Button sends a button press/release event
func (*VirtualPointer) Close ¶ added in v0.2.0
func (p *VirtualPointer) Close() error
Close releases the virtual pointer device
func (*VirtualPointer) Frame ¶
func (p *VirtualPointer) Frame() error
Frame indicates the end of a pointer event sequence
func (*VirtualPointer) LeftClick ¶ added in v0.2.0
func (p *VirtualPointer) LeftClick() error
LeftClick performs a left mouse button click
func (*VirtualPointer) MiddleClick ¶ added in v0.2.0
func (p *VirtualPointer) MiddleClick() error
MiddleClick performs a middle mouse button click
func (*VirtualPointer) Motion ¶
func (p *VirtualPointer) Motion(timestamp time.Time, dx, dy float64) error
Motion sends a relative motion event
func (*VirtualPointer) MotionAbsolute ¶
func (p *VirtualPointer) MotionAbsolute(timestamp time.Time, x, y uint32, xExtent, yExtent uint32) error
MotionAbsolute sends an absolute motion event
func (*VirtualPointer) MoveRelative ¶ added in v0.2.0
func (p *VirtualPointer) MoveRelative(dx, dy float64) error
MoveRelative moves the pointer by the specified amount
func (*VirtualPointer) RightClick ¶ added in v0.2.0
func (p *VirtualPointer) RightClick() error
RightClick performs a right mouse button click
func (*VirtualPointer) ScrollHorizontal ¶ added in v0.2.0
func (p *VirtualPointer) ScrollHorizontal(amount float64) error
ScrollHorizontal scrolls horizontally by the specified amount
func (*VirtualPointer) ScrollVertical ¶ added in v0.2.0
func (p *VirtualPointer) ScrollVertical(amount float64) error
ScrollVertical scrolls vertically by the specified amount
type VirtualPointerManager ¶
type VirtualPointerManager struct {
// contains filtered or unexported fields
}
VirtualPointerManager manages virtual pointer devices
func NewVirtualPointerManager ¶
func NewVirtualPointerManager(ctx context.Context) (*VirtualPointerManager, error)
NewVirtualPointerManager creates a new virtual pointer manager
func (*VirtualPointerManager) Close ¶ added in v0.2.0
func (m *VirtualPointerManager) Close() error
Close releases the virtual pointer manager
func (*VirtualPointerManager) CreatePointer ¶ added in v0.2.0
func (m *VirtualPointerManager) CreatePointer() (*VirtualPointer, error)
CreatePointer creates a new virtual pointer device