libxkbcommon 0.4.2

Keysyms

Utility functions related to keysyms. More...

Enumerations

enum  xkb_keysym_flags {
  XKB_KEYSYM_NO_FLAGS = 0,
  XKB_KEYSYM_CASE_INSENSITIVE = (1 << 0)
}
 

Flags for xkb_keysym_from_name().

More...

Functions

int xkb_keysym_get_name (xkb_keysym_t keysym, char *buffer, size_t size)
 Get the name of a keysym.
xkb_keysym_t xkb_keysym_from_name (const char *name, enum xkb_keysym_flags flags)
 Get a keysym from its name.
int xkb_keysym_to_utf8 (xkb_keysym_t keysym, char *buffer, size_t size)
 Get the Unicode/UTF-8 representation of a keysym.
uint32_t xkb_keysym_to_utf32 (xkb_keysym_t keysym)
 Get the Unicode/UTF-32 representation of a keysym.

Detailed Description

Utility functions related to keysyms.


Enumeration Type Documentation

Flags for xkb_keysym_from_name().

Enumerator:
XKB_KEYSYM_NO_FLAGS 

Do not apply any flags.

XKB_KEYSYM_CASE_INSENSITIVE 

Find keysym by case-insensitive search.


Function Documentation

int xkb_keysym_get_name ( xkb_keysym_t  keysym,
char *  buffer,
size_t  size 
)

Get the name of a keysym.

For a description of how keysyms are named, see xkb_keysym_t.

Parameters:
[in]keysymThe keysym.
[out]bufferA string buffer to write the name into.
[in]sizeSize of the buffer.
Warning:
If the buffer passed is too small, the string is truncated (though still NUL-terminated); a size of at least 64 bytes is recommended.
Returns:
The number of bytes in the name, excluding the NUL byte. If the keysym is invalid, returns -1.

You may check if truncation has occurred by comparing the return value with the length of buffer, similarly to the snprintf(3) function.

See also:
xkb_keysym_t
xkb_keysym_t xkb_keysym_from_name ( const char *  name,
enum xkb_keysym_flags  flags 
)

Get a keysym from its name.

Parameters:
nameThe name of a keysym. See remarks in xkb_keysym_get_name(); this function will accept any name returned by that function.
flagsA set of flags controlling how the search is done. If invalid flags are passed, this will fail with XKB_KEY_NoSymbol.

If you use the XKB_KEYSYM_CASE_INSENSITIVE flag and two keysym names differ only by case, then the lower-case keysym is returned. For instance, for KEY_a and KEY_A, this function would return KEY_a for the case-insensitive search. If this functionality is needed, it is recommended to first call this function without this flag; and if that fails, only then to try with this flag, while possibly warning the user he had misspelled the name, and might get wrong results.

Returns:
The keysym. If the name is invalid, returns XKB_KEY_NoSymbol.
See also:
xkb_keysym_t
int xkb_keysym_to_utf8 ( xkb_keysym_t  keysym,
char *  buffer,
size_t  size 
)

Get the Unicode/UTF-8 representation of a keysym.

Parameters:
[in]keysymThe keysym.
[out]bufferA buffer to write the UTF-8 string into.
[in]sizeThe size of buffer. Must be at least 7.
Returns:
The number of bytes written to the buffer (including the terminating byte). If the keysym does not have a Unicode representation, returns 0. If the buffer is too small, returns -1.

This function does not perform any Keysym Transformations. Therefore, prefer to use xkb_state_key_get_utf8() if possible.

See also:
xkb_state_key_get_utf8()
uint32_t xkb_keysym_to_utf32 ( xkb_keysym_t  keysym)

Get the Unicode/UTF-32 representation of a keysym.

Returns:
The Unicode/UTF-32 representation of keysym, which is also compatible with UCS-4. If the keysym does not have a Unicode representation, returns 0.

This function does not perform any Keysym Transformations. Therefore, prefer to use xkb_state_key_get_utf32() if possible.

See also:
xkb_state_key_get_utf32()