37 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
	
| /*
 | |
|  * 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 <mkuhn@acm.org>, University of Cambridge, April 2001
 | |
|  *
 | |
|  * Special thanks to Richard Verhoeven <river@win.tue.nl> for preparing
 | |
|  * an initial draft of the mapping table.
 | |
|  *
 | |
|  * This software is in the public domain. Share and enjoy!
 | |
|  */
 | |
| 
 | |
| #ifndef KEYSYM2UCS_H
 | |
| #define KEYSYM2UCS_H 1
 | |
| 
 | |
| extern long keysym2ucs(int keysym);
 | |
| extern int ucs2keysym(long ucs);
 | |
| 
 | |
| #endif /* KEYSYM2UCS_H */
 |