blob: 1d91834487fc72ab4596e9745f9083bbe3f2b6cb (plain
/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/keysym2ucs.h,v 1.1 2003/11/01 08:13:08 torrey Exp $
* 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 <email@example.com>, University of Cambridge, April 2001
* Special thanks to Richard Verhoeven <firstname.lastname@example.org> for preparing
* an initial draft of the mapping table.
* This software is in the public domain. Share and enjoy!
#define KEYSYM2UCS_H 1
extern long keysym2ucs(int keysym);
extern int ucs2keysym(long ucs);
#endif /* KEYSYM2UCS_H */