Xlib mouse events and ButtonPressMask


 
Thread Tools Search this Thread
Top Forums Programming Xlib mouse events and ButtonPressMask
# 1  
Old 11-27-2009
Xlib mouse events and ButtonPressMask

I have written a simple program which will report key press and release events for a particular window. In my case, it is mostly the terminal since I invoke the program from the terminal. I am able to get the key press and release events taking place in the terminal window (I have used XSelectInput() with KeyPressMask and KeyReleaseMask on the terminal) but the same is not working with ButtonPress and ButtonRelease. Not just these, but any events related to the mouse are not being reported. Any idea why this is happening?

Code:
#include
#include
#include
#include
#include
#include

int main() {
Display *display = XOpenDisplay(NULL);
KeySym k;
int revert_to;
Window window;
XEvent event;

XGetInputFocus(display, &window, &revert_to);
XSelectInput(display, window, KeyPressMask | KeyReleaseMask | ButtonPressMask | ButtonReleaseMask);

while(1)
{
XNextEvent(display,&event);
switch (event.type) {

case KeyPress : printf("Key Pressed\n"); break;
case KeyRelease : printf("Key Released\n"); break;
case ButtonPress : printf("Button Pressed\n"); break;
case ButtonRelease : printf("Button Released\n"); break;
case EnterNotify : printf("Enter\n"); break;
}
}
XCloseDisplay(display);
return 0;
}

Login or Register to Ask a Question

Previous Thread | Next Thread

7 More Discussions You Might Find Interesting

1. Programming

Xlib registering

hey, Im new to the linux world. Lately, I have tried to create a glx window with xlib, making it a popup window(fullscreen) so I set override_redirect to true. Im happy with the removed borders, but apparantly, the application doesnt show up in the left bar in ubuntu, neither when I press alt... (4 Replies)
Discussion started by: thedardanius
4 Replies

2. UNIX for Advanced & Expert Users

xlib and keyboard events

1. If there's some better place where xlib experts hang out, please tell me. Despite an assiduous search, I could not find an xlib reflector. 2. My actual question: In an xterm, I want to grab and process all keyboard events in a program running inside the xterm. For example, with my program... (5 Replies)
Discussion started by: N7DR
5 Replies

3. UNIX for Dummies Questions & Answers

Xlib Errors

Hi, I am handling user issues in my team. Users have their Unix session running on Citrix MFU. Recently, I was suppose to address a user issue which is as below: Gets the below error when tries to open nedit: Xlib: connection to ":165.0" refused by server Xlib: Client is not... (1 Reply)
Discussion started by: mspatil0037
1 Replies

4. UNIX for Advanced & Expert Users

xlib error

Hello! Im running tight VNC on Red Hat Enterprise Linux 4.0. How can I increase the number of X clients that I can run in a VNC session?I need to run aproximately 500 programs in one VNC session, but at this time I can only 236 -> i've tryed to launch 250 xclock's in background and when it... (3 Replies)
Discussion started by: karpoand
3 Replies

5. Programming

How to get capture input events from keyboard and mouse

Hi, Is there any way to capture/record the input events from keyboard, as well as from mouse using C. Thanks in advance (4 Replies)
Discussion started by: yhacks
4 Replies

6. UNIX for Dummies Questions & Answers

Changing middle mouse button for pasting to right mouse button in cygwin rxvt

Hi, I'm using rxvt in Cygwin and I'm wondering how to change my mouse bindings from the middle button for pasting to the right button. The main reason why I want to do this is because my laptop doesn't have a middle mouse button. Thanks for any help! (2 Replies)
Discussion started by: sayeo
2 Replies

7. Shell Programming and Scripting

Building a better mouse trap, or How many lines of code does it take to trap a mouse?

Hello all, I'm hoping to get a little insight from some of the wily veterans amongst you. I've written a script to check for new outgoing files to our vendors located on our ssl server. It seems to be working ok, but the final question here, will be one of logic, and/or a better way to... (4 Replies)
Discussion started by: mph
4 Replies
Login or Register to Ask a Question
XSelectInput()															    XSelectInput()

Name
  XSelectInput - select the event types to be sent to a window.

Synopsis
  XSelectInput(display, w, event_mask)
	Display *display;
	Window w;
	long event_mask;

Arguments
  display   Specifies a connection to an X server; returned from XOpenDisplay().

  w	    Specifies the ID of the window interested in the events.

  event_mask
	    Specifies the event mask.  This mask is the bitwise OR of one or more of the valid event mask bits (see below).

Description
  XSelectInput()  defines  which  input  events  the  window is interested in.	If a window is not interested in a device event (button, key,
  motion, or border crossing), it propagates up to the closest ancestor unless otherwise specified in the do_not_propagate_mask attribute.

  The bits of the mask are defined in <X11/X.h> :

  ButtonPressMask	NoEventMask
  ButtonReleaseMask	KeyPressMask
  EnterWindowMask	KeyReleaseMask
  LeaveWindowMask	ExposureMask
  PointerMotionMask	VisibilityChangeMask
  PointerMotionHintMask StructureNotifyMask
  Button1MotionMask	ResizeRedirectMask
  Button2MotionMask	SubstructureNotifyMask
  Button3MotionMask	SubstructureRedirectMask
  Button4MotionMask	FocusChangeMask
  Button5MotionMask	PropertyChangeMask
  ButtonMotionMask	ColormapChangeMask
  KeymapStateMask	OwnerGrabButtonMask

  A call on XSelectInput() overrides any previous call on XSelectInput() for the same window from the same client but not for other  clients.
  Multiple  clients can select input on the same window; their event_mask window attributes are disjoint.  When an event is generated it will
  be reported to all interested clients.  However, only one client at a time can select for each of SubstructureRedirectMask, ResizeRedirect-
  Mask, and ButtonPress.

  If  a  window  has both ButtonPressMask and ButtonReleaseMask selected, then a ButtonPress event in that window will automatically grab the
  mouse until all buttons are released, with events sent to windows as described for XGrabPointer().  This ensures that a window will see the
  ButtonRelease event corresponding to the ButtonPress event, even though the mouse may have exited the window in the meantime.

  If  PointerMotionMask  is  selected,	events	will  be sent independent of the state of the mouse buttons.  If instead, one or more of But-
  ton1MotionMask, Button2MotionMask, Button3MotionMask, Button4MotionMask, or Button5MotionMask is selected, MotionNotify events will be gen-
  erated only when one or more of the specified buttons is depressed.

  XCreateWindow() and XChangeWindowAttributes() can also set the event_mask attribute.

  For more information, see Volume One, Chapter 8, Events.

Errors
  BadValue  Specified event mask invalid.

  BadWindow

See Also
  XQLength(),	XAllowEvents(),   XCheckIfEvent(),   XCheckMaskEvent(),  XCheckTypedEvent(),  XCheckTypedWindowEvent(),  XCheckWindowEvent(),
  XEventsQueued(), XGetInputFocus(), XGetMotionEvents(), XIfEvent(), XMaskEvent(), XNextEvent(),  XPeekEvent(),  XPeekIfEvent(),  XPending(),
  XPutBackEvent(), XSendEvent(), XSetInputFocus(), XSynchronize(), XWindowEvent().

Xlib - Input Handling														    XSelectInput()