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

FreeBSD Manual Pages

  
 
  

home | help
XkbGetControlsChanges(3)	 XKB FUNCTIONS	      XkbGetControlsChanges(3)

NAME
       XkbGetControlsChanges  -	Updates	a local	copy of	a keyboard description
       with the	changes	previously noted by one	or more	calls  to  XkbNoteCon-
       trolsChanges

SYNOPSIS

       XkbGetControlsChanges  (Display *dpy, XkbDescPtr	xkb, XkbNameChangesPtr
	      changes);

ARGUMENTS
       dpy    connection to X server

       xkb    xkb->ctrls will be updated

       changes
	      indicates	which parts of xkb->ctrls to update

DESCRIPTION
       Whenever	a field	in the controls	structure changes in the server's key-
       board description, the server sends an XkbControlsNotify	event  to  all
       interested clients.To receive XkbControlsNotify events under all	possi-
       ble  conditions,	 use XkbSelectEvents and pass XkbControlsNotifyMask in
       both bits_to_change and values_for_bits.

       To receive XkbControlsNotify events only	under certain conditions,  use
       XkbSelectEventDetails  using  XkbControlsNotify	as  the	event_type and
       specifying  the	desired	 state	changes	 in  bits_to_change  and  val-
       ues_for_bits using mask bits from Table 1.

       Table  1	 shows	the actual values for the individual mask bits used to
       select controls for modification	and to enable and disable the control.
       Note that the same mask bit is used to specify general modifications to
       the parameters used to configure	the control (which), and to enable and
       disable the control (enabled_ctrls). The	anomalies  in  the  table  (no
       "ok"  in	column)	are for	controls that have no configurable attributes;
       and for controls	that are not boolean controls and therefore cannot  be
       enabled or disabled.

			       Table 1 Controls	Mask Bits
       ---------------------------------------------------------------------------
       Mask Bit			which or	enabled	  Value
				changed_ctrls	_ctrls
       ---------------------------------------------------------------------------
       XkbRepeatKeysMask	ok		ok	  (1L<<0)
       XkbSlowKeysMask		ok		ok	  (1L<<1)
       XkbBounceKeysMask	ok		ok	  (1L<<2)
       XkbStickyKeysMask	ok		ok	  (1L<<3)
       XkbMouseKeysMask		ok		ok	  (1L<<4)
       XkbMouseKeysAccelMask	ok		ok	  (1L<<5)
       XkbAccessXKeysMask	ok		ok	  (1L<<6)
       XkbAccessXTimeoutMask	ok		ok	  (1L<<7)
       XkbAccessXFeedbackMask	ok		ok	  (1L<<8)
       XkbAudibleBellMask			ok	  (1L<<9)
       XkbOverlay1Mask				ok	  (1L<<10)
       XkbOverlay2Mask				ok	  (1L<<11)
       XkbIgnoreGroupLockMask			ok	  (1L<<12)
       XkbGroupsWrapMask	ok			  (1L<<27)
       XkbInternalModsMask	ok			  (1L<<28)
       XkbIgnoreLockModsMask	ok			  (1L<<29)
       XkbPerKeyRepeatMask	ok			  (1L<<30)
       XkbControlsEnabledMask	ok			  (1L<<31)
       XkbAccessXOptionsMask	ok		ok	  (XkbStickyKeysMask |
							  XkbAccessXFeedbackMask)
       XkbAllBooleanCtrlsMask			ok	  (0x00001FFF)
       XkbAllControlsMask	ok			  (0xF8001FFF)

       The  changed_ctrls  field  specifies  the controls components that have
       changed and consists of bits taken from the masks defined in Table 10.7
       with "ok" in the	changed_ctrls column.

       The controls currently enabled in the server are	reported  in  the  en-
       abled_ctrls  field. If any controls were	just enabled or	disabled (that
       is, the contents	of the enabled_ctrls field changed), they are  flagged
       in  the enabled_ctrl_changes field. The valid bits for these fields are
       the masks listed	in Table 10.7 with "ok"	in the	enabled_ctrls  column.
       The  num_groups field reports the number	of groups bound	to the key be-
       longing to the most number of groups and	is automatically updated  when
       the keyboard mapping changes.

       If  the	change	was caused by a	request	from a client, the keycode and
       event_type fields are set to  zero  and	the  req_major	and  req_minor
       fields identify the request. The	req_major value	is the same as the ma-
       jor extension opcode. Otherwise,	event_type is set to the type of event
       that  caused  the  change (one of KeyPress, KeyRelease, DeviceKeyPress,
       DeviceKeyRelease, ButtonPress  or  ButtonRelease),  and	req_major  and
       req_minor  are  undefined.  If  event_type is KeyPress, KeyRelease, De-
       viceKeyPress, or	DeviceKeyRelease, the keycode field is set to the  key
       that  caused the	change.	If event_type is ButtonPress or	ButtonRelease,
       keycode contains	the button number.

       When a client receives an XkbControlsNotify  event,  it	can  note  the
       changes in a changes structure using XkbNoteControlsChanges.

       XkbGetControlsChanges  examines	the  changes  parameter,  queries  the
       server for the necessary	information, and copies	the results  into  the
       xkb->ctrls keyboard description.	If the ctrls field of xkb is NULL, Xk-
       bGetControlsChanges  allocates  and  initializes	 it. To	free the ctrls
       field, use XkbFreeControls.

       XkbGetControlsChanges returns Success if	successful  and	 can  generate
       BadAlloc, BadImplementation, and	BadMatch errors.

RETURN VALUES
       Success	      The  XkbGetControlsChanges  function  returns Success if
		      the query	of the server was successful.

STRUCTURES
       The structure for the XkbControlsNotify event is	defined	as follows:

       typedef struct {
	   int		 type;		/* Xkb extension base event code */
	   unsigned long serial;	/* X server serial number for event */
	   Bool		 send_event;	/* True	=> synthetically generated */
	   Display *	 display;	/* server connection where event generated */
	   Time		 time;		/* server time when event generated */
	   int		 xkb_type;	/* XkbCompatMapNotify */
	   int		 device;	/* Xkb device ID, will not be XkbUseCoreKbd */
	   unsigned int	 changed_ctrls;	/* bits	indicating which controls data have changed*/
	   unsigned int	 enabled_ctrls;	/* controls currently enabled in server	*/
	   unsigned int	 enabled_ctrl_changes; /* bits indicating enabled/disabled controls */
	   int		 num_groups;	/* current number of keyboard groups */
	   KeyCode	 keycode;	/* != 0	=> keycode of key causing change */
	   char		 event_type;	/* Type	of event causing change	*/
	   char		 req_major;	/* major event code of event causing change */
	   char		 req_minor;	/* minor event code of event causing change */
       } XkbControlsNotifyEvent;

DIAGNOSTICS
       BadAlloc	      Unable to	allocate storage

       BadImplementation
		      Invalid reply from server

       BadMatch	      A	compatible version of Xkb was  not  available  in  the
		      server or	an argument has	correct	type and range,	but is
		      otherwise	invalid

SEE ALSO
       XkbFreeControls(3),     XkbNoteControlsChanges(3),    XkbSelectEventDe-
       tails(3), XkbSelectEvents(3)

X Version 11			 libX11	1.8.12	      XkbGetControlsChanges(3)

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

home | help