Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
xcb_grab_keyboard(3)		  XCB Requests		    xcb_grab_keyboard(3)

NAME
     xcb_grab_keyboard - Grab the keyboard

SYNOPSIS
     #include <xcb/xproto.h>

   Request function
     xcb_grab_keyboard_cookie_t        xcb_grab_keyboard(xcb_connection_t *conn,
	    uint8_t owner_events,      xcb_window_t grab_window,       xcb_time-
	    stamp_t time, uint8_t pointer_mode, uint8_t keyboard_mode);

   Reply datastructure
     typedef struct xcb_grab_keyboard_reply_t {
	 uint8_t  response_type;
	 uint8_t  status;
	 uint16_t sequence;
	 uint32_t length;
     } xcb_grab_keyboard_reply_t;

   Reply function
     xcb_grab_keyboard_reply_t	*xcb_grab_keyboard_reply(xcb_connection_t *conn,
	    xcb_grab_keyboard_cookie_t cookie, xcb_generic_error_t **e);

REQUEST ARGUMENTS
     conn      The XCB connection to X11.

     owner_events
	       If 1, the grab_window will still get the pointer  events.  If  0,
	       events are not reported to the grab_window.

     grab_window
	       Specifies the window on which the pointer should be grabbed.

     time      Timestamp  to  avoid race conditions when running X over the net-
	       work.

	       The special value XCB_CURRENT_TIME will be replaced with the cur-
	       rent server time.

     pointer_mode
	       One of the following values:

	       XCB_GRAB_MODE_SYNC
			 The state of the keyboard appears to freeze: No further
			 keyboard events are generated by the server  until  the
			 grabbing  client issues a releasing AllowEvents request
			 or until the keyboard grab is released.

	       XCB_GRAB_MODE_ASYNC
			 Keyboard event processing continues normally.

     keyboard_mode
	       One of the following values:

	       XCB_GRAB_MODE_SYNC
			 The state of the keyboard appears to freeze: No further
			 keyboard events are generated by the server  until  the
			 grabbing  client issues a releasing AllowEvents request
			 or until the keyboard grab is released.

	       XCB_GRAB_MODE_ASYNC
			 Keyboard event processing continues normally.

REPLY FIELDS
     response_type
	       The type of this reply,	in  this  case	XCB_GRAB_KEYBOARD.  This
	       field  is also present in the xcb_generic_reply_t and can be used
	       to tell replies apart from each other.

     sequence  The sequence number of the last	request  processed  by	the  X11
	       server.

     length    The length of the reply, in words (a word is 4 bytes).

     status    One of the following values:

	       XCB_GRAB_STATUS_SUCCESS
			 TODO: NOT YET DOCUMENTED.

	       XCB_GRAB_STATUS_ALREADY_GRABBED
			 TODO: NOT YET DOCUMENTED.

	       XCB_GRAB_STATUS_INVALID_TIME
			 TODO: NOT YET DOCUMENTED.

	       XCB_GRAB_STATUS_NOT_VIEWABLE
			 TODO: NOT YET DOCUMENTED.

	       XCB_GRAB_STATUS_FROZEN
			 TODO: NOT YET DOCUMENTED.
	       TODO: NOT YET DOCUMENTED.

DESCRIPTION
     Actively  grabs  control of the keyboard and generates FocusIn and FocusOut
     events. Further key events are reported only to the grabbing client.

     Any active keyboard grab by this client is overridden. If the  keyboard  is
     actively  grabbed	by  some  other  client,  AlreadyGrabbed is returned. If
     grab_window is not viewable, GrabNotViewable is returned. If  the	keyboard
     is  frozen  by an active grab of another client, GrabFrozen is returned. If
     the specified time is earlier than the  last-keyboard-grab  time  or  later
     than the current X server time, GrabInvalidTime is returned. Otherwise, the
     last-keyboard-grab time is set to the specified time.

RETURN VALUE
     Returns an xcb_grab_keyboard_cookie_t. Errors have to be handled when call-
     ing the reply function xcb_grab_keyboard_reply.

     If  you  want to handle errors in the event loop instead, use xcb_grab_key-
     board_unchecked. See xcb-requests(3) for details.

ERRORS
     xcb_value_error_t
	       TODO: reasons?

     xcb_window_error_t
	       The specified window does not exist.

EXAMPLE
     /*
      * Grabs the keyboard actively
      *
      */
     void my_example(xcb_connection_t *conn, xcb_screen_t *screen) {
	 xcb_grab_keyboard_cookie_t cookie;
	 xcb_grab_keyboard_reply_t *reply;

	 cookie = xcb_grab_keyboard(
	     conn,
	     true,		  /* report events */
	     screen->root,	  /* grab the root window */
	     XCB_CURRENT_TIME,
	     XCB_GRAB_MODE_ASYNC, /* process events as normal, do not require sync */
	     XCB_GRAB_MODE_ASYNC
	 );

	 if ((reply = xcb_grab_keyboard_reply(conn, cookie, NULL))) {
	     if (reply->status == XCB_GRAB_STATUS_SUCCESS)
		 printf("successfully grabbed the keyboard\n");

	     free(reply);
	 }
     }

SEE ALSO
     xcb-requests(3), xcb-examples(3), xcb_grab_pointer(3)

AUTHOR
     Generated from xproto.xml. Contact  xcb@lists.freedesktop.org  for  correc-
     tions and improvements.

X Version 11			  libxcb 1.17.0 	    xcb_grab_keyboard(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=xcb_grab_keyboard&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help