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 33extern long keysym2ucs(int keysym); 34extern int ucs2keysym(long ucs); 35 36#endif /* KEYSYM2UCS_H */ 37