$mouse

From Scriptwiki
Revision as of 12:32, 8 July 2014 by Cail (talk | contribs) (Added .cx/.cy)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
Differences between $mouse.x/y .mx/my and .dx/dy

Returns the x, y position of the current mouse event, and whether the left mouse button, shift key, and/or control key are pressed. The $mouse identifier can be used in the mouse/click events.

$mouse

Properties:

.win     property returns the name of the active window.
.x/.y    returns mouse x- and y-coordinates relative to active window.
.mx/.my  returns mouse x- and y-coordinates relative to mirc window.
.dx/.dy  returns mouse x- and y-coordinates relative to desktop.
.cx/.cy  returns mouse x- and y-coordinates relative to primary monitor. (Use for multi-monitor purposes rather than .dx/.dy.)
.lb      property returns $true if a mouse event occurred over a listbox, or $false if it didn't.
.key     returns a bitwise value of the key(s) being pressed.

For $mouse.key you can use the & bitwise operator to check if the left button, shift key, and/or control key are pressed:

if ($mouse.key & 1) echo left button is pressed.
if ($mouse.key & 2) echo control key is pressed.
if ($mouse.key & 4) echo shift key is pressed.
if ($mouse.key & 8) echo alt key is pressed.
if ($mouse.key & 16) echo right mouse button is pressed.

The following menu commands are available for mouse actions:

mouse:   triggers when mouse moves in a window
sclick:  triggers on single left-click (mouse1; left button)
dclick:  triggers on double click (mouse1; left button)
uclick:  triggers when button is released inside window, triggers before drop (mouse1; left button)
rclick:  triggers on single right-click (mouse2; right button)
lbclick: triggers when user single clicks on window listbox
leave:   triggers when mouse moves outside from window area $leftwin = windowname, $leftwinwid = windowID
drop:    triggers when button is released inside the window (mouse1; left button)

Example

; First we'll need to create a picture window from editbox:
; -p means it's a picture window, first @test is the name of the window, the second @test is the name of the popupfile 
; (we'll use the window's name so we can use the menu prefix in remote script)
/window -p @test @test

; the menu for our @test window
menu @test {
  ; "mouse" triggers whenever mouse moves in the window, and executes draw alias
  mouse:draw

  ; "dclick" triggers whenever user doubleclicks in the window, we'll use this to clear the window
  dclick:clear @test
}

; this is the alias that is executed everytime mouse moves in @test window
alias draw { 
  ; an if to check if left mouse button is pressed, if so draw a dot into the window with colorcode 4, size 2px, 
  ; and read the X and Y location for the dot from $mouse.x and $mouse.y
  if ($mouse.key & 1) { drawdot @test 4 2 $mouse.x $mouse.y } 

  ; else if left mouse button wasn't pressed, see if right mouse button was
  ; we'll do the drawdot like earlier, but use background color as the color (erase) and make it a bit bigger
  elseif ($mouse.key & 16) { drawdot @test $color(background) 6 $mouse.x $mouse.y }
}

See Also

* $click Stores a history of x/y clicks in a window.
* Menu Prefix Various mouse events inside the custom menus.