XIQueryVersion man page
XIQueryVersion — announce and query the support XI2 version.
Status XIQueryVersion( Display *display, int *major_version_inout, int *minor_version_inout);
display Specifies the connection to the X server.
major_version_inout Specifies the client's supported XI2 version, and returns the server's supported version.
minor_version_inout Specifies the client's supported XI2 version, and returns the server's supported version.
XIQueryVersion announces the client's supported XI2 version to the server and returns server's supported X Input version. Clients are required to use XIQueryVersion instead of XGetExtensionVersion if they use XI2 calls. The server may treat a client differently depending on the supported version announced by the client. The major_version_inout must be 2 or greater, otherwise a BadValue error occurs.
If the server does not support XI2, XIQueryVersion returns BadRequest to the client. Otherwise, XIQueryVersion returns Success. In both cases major_version_inout and minor_version_inout are set to the server's supported version.
If the client has previously called XIQueryVersion, then the result depends on the previously requested version and the currently requested version.
If either the previous or current requested versions is less than 2.2, or if the requested major version numbers do not match, then consecutive calls to XIQueryVersion by the same client always return the first returned major.minor version. If the client requests a version lower than the first returned major.minor version in a subsequent call, a BadValue error occurs.
If all of the requested versions are 2.2 or greater, then consecutive calls to XIQueryVersion by the same client with the same major version will return the requested version, but the server will operate according to the highest requested version number or the highest supported version, whichever is lower.
XIQueryVersion can generate a BadValue error.
int rc; int major = 2; int minor = 0;
rc = XIQueryVersion(dpy, &major, &minor); if (rc == Success) printf("XI2 supported. (%d.%d)\n", major, minor); else if (rc == BadRequest) printf("No XI2 support. (%d.%d only)\n", major, minor); else printf("Internal error\n");
BadValue A value is outside of the permitted range.