1 | /*
|
---|
2 | * This module converts keysym values into the corresponding ISO 10646
|
---|
3 | * (UCS, Unicode) values.
|
---|
4 | *
|
---|
5 | * The array keysymtab[] contains pairs of X11 keysym values for graphical
|
---|
6 | * characters and the corresponding Unicode value. The function
|
---|
7 | * keysym2ucs() maps a keysym onto a Unicode value using a binary search,
|
---|
8 | * therefore keysymtab[] must remain SORTED by keysym value.
|
---|
9 | *
|
---|
10 | * The keysym -> UTF-8 conversion will hopefully one day be provided
|
---|
11 | * by Xlib via XmbLookupString() and should ideally not have to be
|
---|
12 | * done in X applications. But we are not there yet.
|
---|
13 | *
|
---|
14 | * We allow to represent any UCS character in the range U-00000000 to
|
---|
15 | * U-00FFFFFF by a keysym value in the range 0x01000000 to 0x01ffffff.
|
---|
16 | * This admittedly does not cover the entire 31-bit space of UCS, but
|
---|
17 | * it does cover all of the characters up to U-10FFFF, which can be
|
---|
18 | * represented by UTF-16, and more, and it is very unlikely that higher
|
---|
19 | * UCS codes will ever be assigned by ISO. So to get Unicode character
|
---|
20 | * U+ABCD you can directly use keysym 0x0100abcd.
|
---|
21 | *
|
---|
22 | * Author: Markus G. Kuhn <[email protected]>, University of Cambridge, April 2001
|
---|
23 | *
|
---|
24 | * Special thanks to Richard Verhoeven <[email protected]> for preparing
|
---|
25 | * an initial draft of the mapping table.
|
---|
26 | *
|
---|
27 | * This software is in the public domain. Share and enjoy!
|
---|
28 | */
|
---|
29 |
|
---|
30 | #ifndef KEYSYM2UCS_H
|
---|
31 | #define KEYSYM2UCS_H 1
|
---|
32 |
|
---|
33 | extern long keysym2ucs(int keysym);
|
---|
34 | extern int ucs2keysym(long ucs);
|
---|
35 |
|
---|
36 | #endif /* KEYSYM2UCS_H */
|
---|