41 lines
1.5 KiB
C
41 lines
1.5 KiB
C
/*
|
|
* This module converts keysym values into the corresponding ISO 10646
|
|
* (UCS, Unicode) values.
|
|
*
|
|
* The array keysymtab[] contains pairs of X11 keysym values for graphical
|
|
* characters and the corresponding Unicode value. The function
|
|
* keysym2ucs() maps a keysym onto a Unicode value using a binary search,
|
|
* therefore keysymtab[] must remain SORTED by keysym value.
|
|
*
|
|
* The keysym -> UTF-8 conversion will hopefully one day be provided
|
|
* by Xlib via XmbLookupString() and should ideally not have to be
|
|
* done in X applications. But we are not there yet.
|
|
*
|
|
* We allow to represent any UCS character in the range U-00000000 to
|
|
* U-00FFFFFF by a keysym value in the range 0x01000000 to 0x01ffffff.
|
|
* This admittedly does not cover the entire 31-bit space of UCS, but
|
|
* it does cover all of the characters up to U-10FFFF, which can be
|
|
* represented by UTF-16, and more, and it is very unlikely that higher
|
|
* UCS codes will ever be assigned by ISO. So to get Unicode character
|
|
* U+ABCD you can directly use keysym 0x0100abcd.
|
|
*
|
|
* Author: Markus G. Kuhn <mkuhn@acm.org>, University of Cambridge, April 2001
|
|
*
|
|
* Special thanks to Richard Verhoeven <river@win.tue.nl> for preparing
|
|
* an initial draft of the mapping table.
|
|
*
|
|
* This software is in the public domain. Share and enjoy!
|
|
*/
|
|
|
|
#ifndef KEYSYM2UCS_H
|
|
#define KEYSYM2UCS_H 1
|
|
|
|
#define ARRAY_SIZE(a) (sizeof((a)) / sizeof((a)[0]))
|
|
|
|
extern long
|
|
keysym2ucs(int keysym);
|
|
extern int
|
|
ucs2keysym(long ucs);
|
|
|
|
#endif /* KEYSYM2UCS_H */
|