| 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 <mkuhn@acm.org>, University of Cambridge, April 2001 |
| 23 | * |
| 24 | * Special thanks to Richard Verhoeven <river@win.tue.nl> 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 |
| 34 | keysym2ucs(int keysym); |
| 35 | extern int |
| 36 | ucs2keysym(long ucs); |
| 37 | |
| 38 | #endif /* KEYSYM2UCS_H */ |