Forgot to commit the header files and fixed documentation!

git-svn-id: file:///fltk/svn/fltk/branches/branch-1.0@1008 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
Bill Spitzak 2000-02-21 10:45:59 +00:00
parent b5529a0aea
commit b583a643de
3 changed files with 215 additions and 181 deletions

View File

@ -1,5 +1,5 @@
// //
// "$Id: Fl.H,v 1.8.2.1 1999/04/17 01:02:27 bill Exp $" // "$Id: Fl.H,v 1.8.2.2 2000/02/21 10:45:58 bill Exp $"
// //
// Main header file for the Fast Light Tool Kit (FLTK). // Main header file for the Fast Light Tool Kit (FLTK).
// //
@ -57,6 +57,7 @@ public: // should be private!
static FL_EXPORT Fl_Widget* selection_owner_; static FL_EXPORT Fl_Widget* selection_owner_;
static FL_EXPORT Fl_Window* modal_; static FL_EXPORT Fl_Window* modal_;
static FL_EXPORT Fl_Window* grab_; static FL_EXPORT Fl_Window* grab_;
static FL_EXPORT int compose_state;
static void damage(int x) {damage_ = x;} static void damage(int x) {damage_ = x;}
@ -87,7 +88,7 @@ public:
static FL_EXPORT int ready(); static FL_EXPORT int ready();
static FL_EXPORT int run(); static FL_EXPORT int run();
static FL_EXPORT Fl_Widget* readqueue(); static FL_EXPORT Fl_Widget* readqueue();
static FL_EXPORT void add_timeout(double t,void (*cb)(void*),void* = 0); static FL_EXPORT void add_timeout(double t,void (*cb)(void*),void* v = 0);
static FL_EXPORT void remove_timeout(void (*cb)(void*), void* = 0); static FL_EXPORT void remove_timeout(void (*cb)(void*), void* = 0);
static FL_EXPORT void add_fd(int fd, int when, void (*cb)(int,void*),void* =0); static FL_EXPORT void add_fd(int fd, int when, void (*cb)(int,void*),void* =0);
static FL_EXPORT void add_fd(int fd, void (*cb)(int, void*), void* = 0); static FL_EXPORT void add_fd(int fd, void (*cb)(int, void*), void* = 0);
@ -125,6 +126,8 @@ public:
static FL_EXPORT int get_key(int); static FL_EXPORT int get_key(int);
static FL_EXPORT const char* event_text() {return e_text;} static FL_EXPORT const char* event_text() {return e_text;}
static FL_EXPORT int event_length() {return e_length;} static FL_EXPORT int event_length() {return e_length;}
static FL_EXPORT int compose(int &del);
static FL_EXPORT void compose_reset() {compose_state = 0;}
static FL_EXPORT int event_inside(int,int,int,int); static FL_EXPORT int event_inside(int,int,int,int);
static FL_EXPORT int event_inside(const Fl_Widget*); static FL_EXPORT int event_inside(const Fl_Widget*);
static FL_EXPORT int test_shortcut(int); static FL_EXPORT int test_shortcut(int);
@ -205,5 +208,5 @@ public:
#endif #endif
// //
// End of "$Id: Fl.H,v 1.8.2.1 1999/04/17 01:02:27 bill Exp $". // End of "$Id: Fl.H,v 1.8.2.2 2000/02/21 10:45:58 bill Exp $".
// //

View File

@ -27,16 +27,23 @@ will correctly display anything, using ^X notation for unprintable
control characters and \nnn notation for unprintable characters with control characters and \nnn notation for unprintable characters with
the high bit set. It assummes the font can draw any characters in the the high bit set. It assummes the font can draw any characters in the
ISO8859-1 character set. ISO8859-1 character set.
<p>
<CENTER><TABLE border=1 WIDTH=90%> <CENTER><TABLE border=1 WIDTH=90%>
<TR><TD WIDTH=200><B>Mouse button 1</B></TD><TD>Moves the cursor to this point.
Drag selects characters. Double click selects words. Triple click <TR><TD WIDTH=200><B>Mouse button 1</B></TD><TD>Moves the cursor to
selects all text. Shift+click extends the selection.</TD></TR> this point. Drag selects characters. Double click selects words.
<TR><TD><B>Mouse button 2</B></TD><TD>Insert the current X selection at Triple click selects all text. Shift+click extends the selection.
the cursor (unlike Motif this does not move the insertion point to the When you select text it is automatically copied to the clipboard.
mouse). If the widget does not have the input focus (and thus no </TD></TR>
cursor) it puts the cursor where clicked and inserts the selection
there.</TD></TR> <TR><TD><B>Mouse button 2</B></TD><TD>Insert the clipboard at
the point clicked. You can also select a region to replace with the
clipboard by selecting a region with mouse button 2.
</TD></TR>
<TR><TD><B>Mouse button 3</B></TD><TD>Currently acts like button 1.</TD></TR> <TR><TD><B>Mouse button 3</B></TD><TD>Currently acts like button 1.</TD></TR>
<TR><TD><B>Backspace</B></TD><TD>Deletes one character to the left, or <TR><TD><B>Backspace</B></TD><TD>Deletes one character to the left, or
deletes the selected region.</TD></TR> deletes the selected region.</TD></TR>
<TR><TD><B>Enter</B></TD><TD>May cause the callback, see when().</TD></TR> <TR><TD><B>Enter</B></TD><TD>May cause the callback, see when().</TD></TR>
@ -44,9 +51,7 @@ deletes the selected region.</TD></TR>
<TR><TD><B>^B or Left</B></TD><TD>Move left</TD></TR> <TR><TD><B>^B or Left</B></TD><TD>Move left</TD></TR>
<TR><TD><B>^C</B></TD><TD>Copy the selection to the clipboard</TD></TR> <TR><TD><B>^C</B></TD><TD>Copy the selection to the clipboard</TD></TR>
<TR><TD><B>^D or Delete</B></TD><TD>Deletes one character to the right <TR><TD><B>^D or Delete</B></TD><TD>Deletes one character to the right
or deletes the selected region. <I>Due to silly historical X problems, or deletes the selected region.</TD></TR>
the Delete key will act like Backspace until you type a &quot;real&quot;
backspace.</I></TD></TR>
<TR><TD><B>^E or End</B></TD><TD>Go to the end of line.</TD></TR> <TR><TD><B>^E or End</B></TD><TD>Go to the end of line.</TD></TR>
<TR><TD><B>^F or Right</B></TD><TD>Move right</TD></TR> <TR><TD><B>^F or Right</B></TD><TD>Move right</TD></TR>
<TR><TD><B>^K</B></TD><TD>Delete to the end of line (next \n character) <TR><TD><B>^K</B></TD><TD>Delete to the end of line (next \n character)
@ -56,11 +61,6 @@ into the clipboard.</TD></TR>
only, otherwise it moves to the next input field).</TD></TR> only, otherwise it moves to the next input field).</TD></TR>
<TR><TD><B>^P or Up</B></TD><TD>Move up (for Fl_Multiline_Input only, <TR><TD><B>^P or Up</B></TD><TD>Move up (for Fl_Multiline_Input only,
otherwise it moves to the previous input field).</TD></TR> otherwise it moves to the previous input field).</TD></TR>
<TR><TD><B>^Q or
<BR>RightCtrl or
<BR>Compose</B></TD><TD>Start a <A href="events.html#compose">compose-character</A>
sequence. The next one or two keys typed define the character to
insert. This also can be used to &quot;quote&quot; control characters.</TD></TR>
<TR><TD><B>^U</B></TD><TD>Delete everything.</TD></TR> <TR><TD><B>^U</B></TD><TD>Delete everything.</TD></TR>
<TR><TD><B>^V or ^Y</B></TD><TD>Paste the clipboard</TD></TR> <TR><TD><B>^V or ^Y</B></TD><TD>Paste the clipboard</TD></TR>
<TR><TD><B>^X or ^W</B></TD><TD>Copy the region to the clipboard and <TR><TD><B>^X or ^W</B></TD><TD>Copy the region to the clipboard and
@ -71,6 +71,158 @@ into a single &quot;undo&quot;. Often this will undo a lot more than you
expected.</TD></TR> expected.</TD></TR>
<TR><TD><B>Shift+move</B></TD><TD>Move the cursor but also extend the <TR><TD><B>Shift+move</B></TD><TD>Move the cursor but also extend the
selection.</TD></TR> selection.</TD></TR>
<TR><TD><B>RightCtrl or
<BR>Compose</B></TD><TD><a name=compose>
Start a <A href="events.html#compose">compose-character</A>
sequence. The next one or two keys typed define the character to insert:
<br><center><table border=1>
<tr>
<th>Keys</th><th>Char</th>
<th>Keys</th><th>Char</th>
<th>Keys</th><th>Char</th>
<th>Keys</th><th>Char</th>
<th>Keys</th><th>Char</th>
<th>Keys</th><th>Char</th>
</tr><tr>
<td align=center><small>space</small></td><td align=center><small>nbsp</small></td>
<td align=center><TT>*</tt></td><td align=center>°</td>
<td align=center><TT>`A</tt></td><td align=center>À</td>
<td align=center><TT>D-</tt></td><td align=center>Ð</td>
<td align=center><TT>`a</tt></td><td align=center>à</td>
<td align=center><TT>d-</tt></td><td align=center>ð
</tr><tr>
<td align=center><TT>!</tt></td><td align=center>¡</td>
<td align=center><TT>+-</tt></td><td align=center>±</td>
<td align=center><TT>'A</tt></td><td align=center>Á</td>
<td align=center><TT>~N</tt></td><td align=center>Ñ</td>
<td align=center><TT>'a</tt></td><td align=center>á</td>
<td align=center><TT>~n</tt></td><td align=center>ñ
</tr><tr>
<td align=center><TT>%</tt></td><td align=center>¢</td>
<td align=center><TT>2</tt></td><td align=center>²</td>
<td align=center><TT>A^</tt></td><td align=center>Â</td>
<td align=center><TT>`O</tt></td><td align=center>Ò</td>
<td align=center><TT>^a</tt></td><td align=center>â</td>
<td align=center><TT>`o</tt></td><td align=center>ò
</tr><tr>
<td align=center><TT>#</tt></td><td align=center>£</td>
<td align=center><TT>3</tt></td><td align=center>³</td>
<td align=center><TT>~A</tt></td><td align=center>Ã</td>
<td align=center><TT>'O</tt></td><td align=center>Ó</td>
<td align=center><TT>~a</tt></td><td align=center>ã</td>
<td align=center><TT>'o</tt></td><td align=center>ó
</tr><tr>
<td align=center><TT>$</tt></td><td align=center>¤</td>
<td align=center><TT>'</tt></td><td align=center>´</td>
<td align=center><TT>:A</tt></td><td align=center>Ä</td>
<td align=center><TT>^O</tt></td><td align=center>Ô</td>
<td align=center><TT>:a</tt></td><td align=center>ä</td>
<td align=center><TT>^o</tt></td><td align=center>ô
</tr><tr>
<td align=center><TT>y=</tt></td><td align=center>¥</td>
<td align=center><TT>u</tt></td><td align=center>µ</td>
<td align=center><TT>*A</tt></td><td align=center>Å</td>
<td align=center><TT>~O</tt></td><td align=center>Õ</td>
<td align=center><TT>*a</tt></td><td align=center>å</td>
<td align=center><TT>~o</tt></td><td align=center>õ
</tr><tr>
<td align=center><TT>|</tt></td><td align=center>¦</td>
<td align=center><TT>p</tt></td><td align=center></td>
<td align=center><TT>AE</tt></td><td align=center>Æ</td>
<td align=center><TT>:O</tt></td><td align=center>Ö</td>
<td align=center><TT>ae</tt></td><td align=center>æ</td>
<td align=center><TT>:o</tt></td><td align=center>ö
</tr><tr>
<td align=center><TT>&amp;</tt></td><td align=center>§</td>
<td align=center><TT>.</tt></td><td align=center>·</td>
<td align=center><TT>,C</tt></td><td align=center>Ç</td>
<td align=center><TT>x</tt></td><td align=center>×</td>
<td align=center><TT>,c</tt></td><td align=center>ç</td>
<td align=center><TT>-:</tt></td><td align=center>÷
</tr><tr>
<td align=center><TT>:</tt></td><td align=center>¨</td>
<td align=center><TT>,</tt></td><td align=center>¸</td>
<td align=center><TT>E`</tt></td><td align=center>È</td>
<td align=center><TT>O/</tt></td><td align=center>Ø</td>
<td align=center><TT>`e</tt></td><td align=center>è</td>
<td align=center><TT>o/</tt></td><td align=center>ø
</tr><tr>
<td align=center><TT>c</tt></td><td align=center>©</td>
<td align=center><TT>1</tt></td><td align=center>¹</td>
<td align=center><TT>'E</tt></td><td align=center>É</td>
<td align=center><TT>`U</tt></td><td align=center>Ù</td>
<td align=center><TT>'e</tt></td><td align=center>é</td>
<td align=center><TT>`u</tt></td><td align=center>ù
</tr><tr>
<td align=center><TT>a</tt></td><td align=center>ª</td>
<td align=center><TT>o</tt></td><td align=center>º</td>
<td align=center><TT>^E</tt></td><td align=center>Ê</td>
<td align=center><TT>'U</tt></td><td align=center>Ú</td>
<td align=center><TT>^e</tt></td><td align=center>ê</td>
<td align=center><TT>'u</tt></td><td align=center>ú
</tr><tr>
<td align=center><TT>&lt;&lt;</tt></td><td align=center>«</td>
<td align=center><TT>>></tt></td><td align=center>»</td>
<td align=center><TT>:E</tt></td><td align=center>Ë</td>
<td align=center><TT>^U</tt></td><td align=center>Û</td>
<td align=center><TT>:e</tt></td><td align=center>ë</td>
<td align=center><TT>^u</tt></td><td align=center>û
</tr><tr>
<td align=center><TT>~</tt></td><td align=center>¬</td>
<td align=center><TT>14</tt></td><td align=center>¼</td>
<td align=center><TT>`I</tt></td><td align=center>Ì</td>
<td align=center><TT>:U</tt></td><td align=center>Ü</td>
<td align=center><TT>`i</tt></td><td align=center>ì</td>
<td align=center><TT>:u</tt></td><td align=center>ü
</tr><tr>
<td align=center><TT>-</tt></td><td align=center>­</td>
<td align=center><TT>12</tt></td><td align=center>½</td>
<td align=center><TT>'I</tt></td><td align=center>Í</td>
<td align=center><TT>'Y</tt></td><td align=center>Ý</td>
<td align=center><TT>'i</tt></td><td align=center>í</td>
<td align=center><TT>'y</tt></td><td align=center>ý
</tr><tr>
<td align=center><TT>r</tt></td><td align=center>®</td>
<td align=center><TT>34</tt></td><td align=center>¾</td>
<td align=center><TT>^I</tt></td><td align=center>Î</td>
<td align=center><TT>TH</tt></td><td align=center>Þ</td>
<td align=center><TT>^i</tt></td><td align=center>î</td>
<td align=center><TT>th</tt></td><td align=center>þ
</tr><tr>
<td align=center><TT>_</tt></td><td align=center>¯</td>
<td align=center><TT>?</tt></td><td align=center>¿</td>
<td align=center><TT>:I</tt></td><td align=center>Ï</td>
<td align=center><TT>ss</tt></td><td align=center>ß</td>
<td align=center><TT>:i</tt></td><td align=center>ï</td>
<td align=center><TT>:y</tt></td><td align=center>ÿ
</table></center>
<p>For instance, to type "á" type [compose][a]['] or [compose]['][a].
<P>The character "nbsp" (non-breaking space) is typed by using
[compose][space].
<P>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][~].
<p>The same key may be used to "quote" control characters into the
text. If you need a <tt>^Q</tt> character you can get one by typing
[compose][Control+Q].
<p>X may have a key on the keyboard
defined as <tt>XK_Multi_key</tt>. If so this key may be used as well
as the right-hand control key. You can set this up with the program
<tt>xmodmap</tt>.
<p>If your keyboard is set to support a foreign language you should
also be able to type "dead key" prefix characters. On X you will
actually be able to see what dead key you typed, and if you then move
the cursor without completing the sequence the accent will remain
inserted.
</TABLE></CENTER> </TABLE></CENTER>
<H3>Methods</H3> <H3>Methods</H3>
<CENTER> <CENTER>

View File

@ -80,6 +80,10 @@ event.
<P>To receive <CODE>FL_KEYBOARD</CODE> events you must also respond to the <P>To receive <CODE>FL_KEYBOARD</CODE> events you must also respond to the
<CODE>FL_FOCUS</CODE> and <CODE>FL_UNFOCUS</CODE> events. <CODE>FL_FOCUS</CODE> and <CODE>FL_UNFOCUS</CODE> events.
<p>If you are writing a text-editing widget you may also want to call
the <a href=#compose>Fl::compose()</a> function to translate
individual keystrokes into foreign characters.
<H3>FL_SHORTCUT</H3> <H3>FL_SHORTCUT</H3>
If the <A href=functions.html#focus><TT>Fl::focus()</TT></A> widget is zero If the <A href=functions.html#focus><TT>Fl::focus()</TT></A> widget is zero
or ignores an <TT>FL_KEYBOARD</TT> event then FLTK tries sending this or ignores an <TT>FL_KEYBOARD</TT> event then FLTK tries sending this
@ -102,7 +106,8 @@ active_r()</TT> to check this).
This widget is now active, due to <A href=Fl_Widget.html#Fl_Widget.activate> This widget is now active, due to <A href=Fl_Widget.html#Fl_Widget.activate>
<TT>activate()</TT></A> being called on it or one of its parents. <TT>activate()</TT></A> being called on it or one of its parents.
<H3>FL_HIDE</H3> <H3>FL_HIDE</H3>
This widget is no longer visible, due to <A #Fl_Widget.show" href="#Fl_Widget.hide><tt>hide()</tt></a> being called on it or one of its
This widget is no longer visible, due to <A href=Fl_Widget.html#Fl_Widget.hide><tt>hide()</tt></a> being called on it or one of its
parents, or due to a parent window being minimized. <tt>visible()</tt> parents, or due to a parent window being minimized. <tt>visible()</tt>
may still be true after this, but the widget is visible only if may still be true after this, but the widget is visible only if
<tt>visible()</tt> is true for it and all its parents (use <tt>visible()</tt> is true for it and all its parents (use
@ -111,7 +116,7 @@ may still be true after this, but the widget is visible only if
<h3>FL_SHOW</h3> <h3>FL_SHOW</h3>
This widget is visible again, due to <a This widget is visible again, due to <a
href="> href=Fl_Widget.html#Fl_Widget.show>
<TT>show()</TT></A> being called on it or one of its parents, or due to <TT>show()</TT></A> being called on it or one of its parents, or due to
a parent window being restored. <I>Child <TT>Fl_Window</TT>s respond to a parent window being restored. <I>Child <TT>Fl_Window</TT>s respond to
this by actually creating the window if not done already, so if you this by actually creating the window if not done already, so if you
@ -128,7 +133,8 @@ Fl::event_length()</TT></A>.
The <A href=functions.html#selection_owner>Fl::selection_owner()</A> The <A href=functions.html#selection_owner>Fl::selection_owner()</A>
will get this event before the selection is moved to another widget. will get this event before the selection is moved to another widget.
This indicates that some other widget or program has claimed the This indicates that some other widget or program has claimed the
selection. selection. Motif programs used this to clear the selection
indication. Most modern programs ignore this.
<H2><A name=event_xxx>Fl::event_*() methods</A></H2> <H2><A name=event_xxx>Fl::event_*() methods</A></H2>
FLTK keeps the information about the most recent event in static FLTK keeps the information about the most recent event in static
storage. This information is good until the next event is processed. storage. This information is good until the next event is processed.
@ -181,172 +187,45 @@ to leaf widgets. These procedures control those leaf widgets: </P>
<H2><A name=compose>FLTK Compose-Character Sequences</A></H2> <H2><A name=compose>FLTK Compose-Character Sequences</A></H2>
The <A href="#Fl_Input"><tt>Fl_Input</tt></a> widget lets you type all the The foreign-letter compose processing done by the <A
characters in the standard ISO-8859-1 character set. Most fonts will href=Fl_Input.html#compose><tt>Fl_Input</tt></a> widget is provided in
display these characters correctly. a function that you can call if you are writing your own text editor
widget.
<P>To insert them, type the [compose] key and then one or two <p>Fltk uses it's own compose processing to allow "preview" of the
characters. The two characters can be in either order. The [compose] partially composed sequence, which is impossible with the usual
key is any of: Ctrl+Q, the righthand control key, or any key your X server "dead key" processing.
calls <TT>XK_Multi_key</TT>.
<p><center><table border=1> <p>Although currently only characters in the ISO-8859-1 character set are
<tr> handled, you should call this in case any enhancements to the
<th>Keys<th>Char<th> processing are done in the future. The interface has been designed to
<th>Keys<th>Char<th> handle arbitrary UTF-8 encoded text.
<th>Keys<th>Char<th>
<th>Keys<th>Char<th>
<th>Keys<th>Char<th>
<th>Keys<th>Char
<tr>
<td align=center><small>space</small><td align=center><small>nbsp</small><td>
<td align=center><TT>*</TT><td align=center>°<td>
<td align=center><TT>A`</TT><td align=center>À<td>
<td align=center><TT>D-</TT><td align=center>Ð<td>
<td align=center><TT>a`</TT><td align=center>à<td>
<td align=center><TT>d-</TT><td align=center>ð
<tr>
<td align=center><TT>!</TT><td align=center>¡<td>
<td align=center><TT>+-</TT><td align=center>±<td>
<td align=center><TT>A'</TT><td align=center>Á<td>
<td align=center><TT>N~</TT><td align=center>Ñ<td>
<td align=center><TT>a'</TT><td align=center>á<td>
<td align=center><TT>n~</TT><td align=center>ñ
<tr>
<td align=center><TT>%</TT><td align=center>¢<td>
<td align=center><TT>2</TT><td align=center>²<td>
<td align=center><TT>A^</TT><td align=center>Â<td>
<td align=center><TT>O`</TT><td align=center>Ò<td>
<td align=center><TT>a^</TT><td align=center>â<td>
<td align=center><TT>o`</TT><td align=center>ò
<tr>
<td align=center><TT>#</TT><td align=center>£<td>
<td align=center><TT>3</TT><td align=center>³<td>
<td align=center><TT>A~</TT><td align=center>Ã<td>
<td align=center><TT>O'</TT><td align=center>Ó<td>
<td align=center><TT>a~</TT><td align=center>ã<td>
<td align=center><TT>o'</TT><td align=center>ó
<tr>
<td align=center><TT>$</TT><td align=center>¤<td>
<td align=center><TT>'</TT><td align=center>´<td>
<td align=center><TT>A:</TT><td align=center>Ä<td>
<td align=center><TT>O^</TT><td align=center>Ô<td>
<td align=center><TT>a:</TT><td align=center>ä<td>
<td align=center><TT>o^</TT><td align=center>ô
<tr>
<td align=center><TT>y=</TT><td align=center>¥<td>
<td align=center><TT>u</TT><td align=center>µ<td>
<td align=center><TT>A*</TT><td align=center>Å<td>
<td align=center><TT>O~</TT><td align=center>Õ<td>
<td align=center><TT>a*</TT><td align=center>å<td>
<td align=center><TT>o~</TT><td align=center>õ
<tr>
<td align=center><TT>|</TT><td align=center>¦<td>
<td align=center><TT>p</TT><td align=center><td>
<td align=center><TT>AE</TT><td align=center>Æ<td>
<td align=center><TT>O:</TT><td align=center>Ö<td>
<td align=center><TT>ae</TT><td align=center>æ<td>
<td align=center><TT>o:</TT><td align=center>ö
<tr>
<td align=center><TT>&amp;</TT><td align=center>§<td>
<td align=center><TT>.</TT><td align=center>·<td>
<td align=center><TT>C,</TT><td align=center>Ç<td>
<td align=center><TT>x</TT><td align=center>×<td>
<td align=center><TT>c,</TT><td align=center>ç<td>
<td align=center><TT>-:</TT><td align=center>÷
<tr>
<td align=center><TT>:</TT><td align=center>¨<td>
<td align=center><TT>,</TT><td align=center>¸<td>
<td align=center><TT>E`</TT><td align=center>È<td>
<td align=center><TT>O/</TT><td align=center>Ø<td>
<td align=center><TT>e`</TT><td align=center>è<td>
<td align=center><TT>o/</TT><td align=center>ø
<tr>
<td align=center><TT>c</TT><td align=center>©<td>
<td align=center><TT>1</TT><td align=center>¹<td>
<td align=center><TT>E'</TT><td align=center>É<td>
<td align=center><TT>U`</TT><td align=center>Ù<td>
<td align=center><TT>e'</TT><td align=center>é<td>
<td align=center><TT>u`</TT><td align=center>ù
<tr>
<td align=center><TT>a</TT><td align=center>ª<td>
<td align=center><TT>o</TT><td align=center>º<td>
<td align=center><TT>E^</TT><td align=center>Ê<td>
<td align=center><TT>U'</TT><td align=center>Ú<td>
<td align=center><TT>e^</TT><td align=center>ê<td>
<td align=center><TT>u'</TT><td align=center>ú
<tr>
<td align=center><TT>&lt;&lt;</TT><td align=center>«<td>
<td align=center><TT>>></TT><td align=center>»<td>
<td align=center><TT>E:</TT><td align=center>Ë<td>
<td align=center><TT>U^</TT><td align=center>Û<td>
<td align=center><TT>e:</TT><td align=center>ë<td>
<td align=center><TT>u^</TT><td align=center>û
<tr>
<td align=center><TT>~</TT><td align=center>¬<td>
<td align=center><TT>14</TT><td align=center>¼<td>
<td align=center><TT>I`</TT><td align=center>Ì<td>
<td align=center><TT>U:</TT><td align=center>Ü<td>
<td align=center><TT>i`</TT><td align=center>ì<td>
<td align=center><TT>u:</TT><td align=center>ü
<tr>
<td align=center><TT>-</TT><td align=center>­<td>
<td align=center><TT>12</TT><td align=center>½<td>
<td align=center><TT>I'</TT><td align=center>Í<td>
<td align=center><TT>Y'</TT><td align=center>Ý<td>
<td align=center><TT>i'</TT><td align=center>í<td>
<td align=center><TT>y'</TT><td align=center>ý
<tr>
<td align=center><TT>r</TT><td align=center>®<td>
<td align=center><TT>34</TT><td align=center>¾<td>
<td align=center><TT>I^</TT><td align=center>Î<td>
<td align=center><TT>TH</TT><td align=center>Þ<td>
<td align=center><TT>i^</TT><td align=center>î<td>
<td align=center><TT>th</TT><td align=center>þ
<tr>
<td align=center><TT>_</TT><td align=center>¯<td>
<td align=center><TT>?</TT><td align=center>¿<td>
<td align=center><TT>I:</TT><td align=center>Ï<td>
<td align=center><TT>ss</TT><td align=center>ß<td>
<td align=center><TT>i:</TT><td align=center>ï<td>
<td align=center><TT>y:</TT><td align=center>ÿ
</table>
</center>
<p>For instance, to type "á" type [compose][a]['] or [compose]['][a]. <h4><tt>int Fl::compose(int&amp; del)</tt></h4>
<P>The character "nbsp" (non-breaking space) is typed by using <p>Use of this function is very simple. Any text editing widget should
[compose][space]. call this for each <tt>FL_KEYBOARD</tt> event.
<P>The single-character sequences may be followed by a space if <p>If <i>true</i> is returned, then it has modified the
necessary to remove ambiguity. For instance, if you really want to Fl::event_text() and Fl::event_length() to a set of <i>bytes</i> to
type "ª~" rather than "ã" you must type [compose][a][space][~]. insert (it may be of zero length!). In will also set the "del"
parameter to the number of <i>bytes</i> to the left of the cursor to
delete, this is used to delete the results of the previous call to
Fl::compose().
<P>If you wish to use the compose function in your own code, your <p>If <i>false</i> is returned, the keys should be treated as function
widget's <tt>handle()</tt> method must call <tt>fl_compose()</tt> keys, and del is set to zero. You could insert the text anyways, if
in response to <tt>FL_KEYPRESS</tt> events: you don't know what else to do.
<h4><TT>int fl_compose(int state, char c, int &amp;del, char *buffer, int &amp;ins)</TT></h4> <p>Though the current implementation returns immediately, future
versions may take quite awhile, as they may pop up a window or do
other user-interface things to allow characters to be selected.
Starts or adds a single ASCII character to a compose sequence. This <h4><tt>int Fl::compose_reset()</tt></h4>
will return the number of old bytes to delete and a set of new bytes to
insert, and a new <tt>state</tt> value. If this returns zero you can
ignore the result (which just says to insert the character unchanged)
and handle the keystroke yourself.
<P><tt>state</tt> must either be the return value of the last call to <p>If the user moves the cursor, be sure to call Fl::compose_reset().
<tt>fl_compose()</tt> or zero to start a new compose sequence. Be sure to reset The next call to Fl::compose() will start out in an initial state. In
to zero if the user ever moves the cursor. particular it will not set "del" to non-zero. This call is very fast
so it is ok to call it many times and in many places.
<P><tt>c</tt> is the ASCII character that the user typed. </body></html>
<P><tt>del</tt> is set to the number of bytes to delete backwards. This
will always be less or equal to the <tt>ins</tt> from the last call to
<tt>fl_compose()</tt>, and will be zero if <tt>state</tt> is zero.
<P><tt>buffer</tt> will have the first <tt>ins</tt> bytes set to the data
to insert and display (it is <I>not</I> nul-terminated).
<P><tt>ins</tt> will be the number of characters to insert.
</BODY></HTML>