keysym2ucs.h 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839
  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. #ifndef KEYSYM2UCS_H
  30. #define KEYSYM2UCS_H 1
  31. extern long
  32. keysym2ucs(int keysym);
  33. extern int
  34. ucs2keysym(long ucs);
  35. #endif /* KEYSYM2UCS_H */