To insert them, type the [compose] key and then one or two characters. The two characters can be in either order. The [compose] key is any of: Control+Q, the right-hand control key, or any key your X server calls XK_Multi_key).
  nbsp
| *     °
| A`    À
| D-    Ð
| a`    à
| d-    ð
|
!     ¡
| +-    ±
| A'    Á
| N~    Ñ
| a'    á
| n~    ñ
|
%     ¢
| 2     ²
| A^    Â
| O`    Ò
| a^    â
| o`    ò
|
#     £
| 3     ³
| A~    Ã
| O'    Ó
| a~    ã
| o'    ó
|
$     ¤
| '     ´
| A:    Ä
| O^    Ô
| a:    ä
| o^    ô
|
y=    ¥
| u     µ
| A*    Å
| O~    Õ
| a*    å
| o~    õ
|
|     ¦
| p     ¶
| AE    Æ
| O:    Ö
| ae    æ
| o:    ö
|
&     §
| .     ·
| C,    Ç
| x     ×
| c,    ç
| -:    ÷
|
:     ¨
| ,     ¸
| E`    È
| O/    Ø
| e`    è
| o/    ø
|
c     ©
| 1     ¹
| E'    É
| U`    Ù
| e'    é
| u`    ù
|
a     ª
| o     º
| E^    Ê
| U'    Ú
| e^    ê
| u'    ú
|
<<    «
| >>    »
| E:    Ë
| U^    Û
| e:    ë
| u^    û
|
~     ¬
| 14    ¼
| I`    Ì
| U:    Ü
| i`    ì
| u:    ü
|
-     
| 12    ½
| I'    Í
| Y'    Ý
| i'    í
| y'    ý
|
r     ®
| 34    ¾
| I^    Î
| DD    Þ
| i^    î
| dd    þ
|
_     ¯
| ?     ¿
| I:    Ï
| ss    ß
| i:    ï
| y:    ÿ
|
For instance, to type "á" type [compose][a]['] or [compose]['][a].
The character "nbsp" (non-breaking space) is typed by using [compose][space].
The single-character sequences may be followed by a space if necessary to remove ambiguity. For instance, if you really want to type "ª~" rather than "ã" you must type [compose][a][space][~].
If you wish to use the compose function in your own code, you can make your widget's handle() call this in response to keystrokes:
int fl_compose(int state, char c, int& del, char* buffer,
int& ins)
state must either be the return value of the last call to fl_compose or zero to start a new compose sequence. Be sure to reset to zero if the user ever moves the cursor.
c is the ascii character the user typed.
del is set to the number of bytes to delete backwards. This will always be less or equal to the ins from the last call to fl_compose, and will be zero if state is zero.
buffer will have the first ins bytes set to the data to insert and display (it is not null-terminated).
ins will be the number of characters to insert.