Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number

Grabbing that mouse cursor in X11

by strredwolf (Chaplain)
on Apr 23, 2010 at 01:43 UTC ( #836388=perlquestion: print w/replies, xml ) Need Help??
strredwolf has asked for the wisdom of the Perl Monks concerning the following question:


I'm building a Perl script that follows the mouse in one screen, snapshots the area, and puts it into a window on a separate screen. I got 99% of it written using Gtk2 and tested; it's working great except for one thing.

In X11, the mouse cursor doesn't get grabbed.

Is there any way to grab the mouse cursor? Anyone try calling the XFIXES extension of X11 from Perl? If I can grab the data I can glue it into the screen and smack it to the destination window.

EDIT: Here's my code for ''. It grabs from the current screen. If you give it an argument (like, exactly like the DISPLAY env variable), it'll display it on that screen you gave. I have it going from my Linux box to my Mac running

#!/usr/bin/perl $|=1; use strict; use Gtk2 -init; use Glib qw/TRUE FALSE/; my $s = Gtk2::Gdk::Screen->get_default; my $iw = $s->get_root_window; my $isw = $s->get_width; my $ish = $s->get_height; my $ddisp; if($ARGV[0]=~/:/) { my $dest=$ARGV[0]; $ddisp=Gtk2::Gdk::Display->open($dest); } else { $ddisp=Gtk2::Gdk::Display->get_default; } my $scr = $ddisp->get_default_screen; my $win = Gtk2::Window->new('toplevel'); $win->set_screen($scr); $win->resize(640,480); $win->set_resizable(FALSE); my $img = Gtk2::Image->new(); $win->add($img); $win->show_all; Glib::Timeout->add(50,\&track); Gtk2->main; sub track { my ($sn,$x,$y,$m) = $iw->get_pointer; # print "$x, $y -->> "; $x=($x > 320 ? $x-320:0); $x=($x>$isw-640 ? $isw-640:$x); $y=($y > 240 ? $y-240:0); $y=($y>$ish-480 ? $ish-480:$y); # print "$x, $y\n"; my $p = Gtk2::Gdk::Pixbuf->get_from_drawable($iw,undef,$x,$y,0,0,6 +40,480); $img->set_from_pixbuf($p); return TRUE; }
Information doesn't want to be free. It wants to be feline.

Replies are listed 'Best First'.
Re: Grabbing that mouse cursor in X11
by Anonymous Monk on Apr 23, 2010 at 09:27 UTC
    In X11, the mouse cursor doesn't get grabbed.

    Do you get an error message? Can you post a short program for testing? Maybe its permissions maybe its a bug.

      No errors, just doesn't happen. I think it's just a X11 limitation that needs to be worked around; I see the same problem documented in the x11vnc app.


Re: Grabbing that mouse cursor in X11
by tospo (Hermit) on Apr 23, 2010 at 09:18 UTC
      Won't work. I need to grab the X11 mouse, and that uses XFIXES.


Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://836388]
Approved by ww
[Corion]: Meh, I found another Amazon "used" scam reseller... If a product sells for "almost new" at half the price, it's a scam, most likely...
[ambrus]: Corion: that's not true. Actually for Christmas and Thanksgiving, a lot of people buy electronics such as cameras as present, then many of them figure out they don't need it,
[ambrus]: and the electronics gets reselled almost new, but it has to be sold at half price because otherwise everyone chooses to buy the new product which has fewer risk of selling damaged products labelled as almost new.
[ambrus]: You can actually get a lot of useful cheap really almost new products that way, with only a little risk of scams.

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (15)
As of 2017-11-21 14:57 GMT
Find Nodes?
    Voting Booth?
    In order to be able to say "I know Perl", you must have:

    Results (304 votes). Check out past polls.