xserver

xserver with xephyr scale patch
git clone https://git.neptards.moe/u3shit/xserver.git
Log | Files | Refs | README | LICENSE

keysym2ucs.h (1506B)


      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 #define ARRAY_SIZE(a)  (sizeof((a)) / sizeof((a)[0]))
     34 
     35 extern long
     36 keysym2ucs(int keysym);
     37 extern int
     38 ucs2keysym(long ucs);
     39 
     40 #endif /* KEYSYM2UCS_H */