summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBill Spitzak <spitzak@gmail.com>1999-04-20 04:43:24 +0000
committerBill Spitzak <spitzak@gmail.com>1999-04-20 04:43:24 +0000
commit2f22abf4e2713eee5a4bf199cd86cd807e08e4fd (patch)
tree345517d34e51108b2dfdb54b0a4eea77ce75984f
parentdf8016354cc3b15968043e347de73609180e5c9e (diff)
Compose for Icelandic thorn character is "TH" or "th". Also fixed the
comments in Fl_Input.cxx and fixed the documentation. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.0@552 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
-rw-r--r--documentation/events.html225
-rw-r--r--src/Fl_Input.cxx49
2 files changed, 132 insertions, 142 deletions
diff --git a/documentation/events.html b/documentation/events.html
index a7fcdb44c..e43066dd5 100644
--- a/documentation/events.html
+++ b/documentation/events.html
@@ -182,147 +182,130 @@ characters. The two characters can be in either order. The [compose]
key is any of: Ctrl+Q, the righthand control key, or any key your X server
calls <TT>XK_Multi_key</TT>.
-<center><table border=1>
+<p><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>
+ <th>Keys<th>Char<th>
+ <th>Keys<th>Char<th>
+ <th>Keys<th>Char<th>
+ <th>Keys<th>Char<th>
+ <th>Keys<th>Char<th>
+ <th>Keys<th>Char
<tr>
- <td align=center><TT>sp</TT></td><td align=center>nbsp</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>ð</td>
-</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><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>ñ</td>
-</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><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>ò</td>
-</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><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>ó</td>
-</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><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>ô</td>
-</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><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>õ</td>
-</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><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>ö</td>
-</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><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>÷</td>
-</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><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>ø</td>
-</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><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>ù</td>
-</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><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>ú</td>
-</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><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>û</td>
-</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><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>ü</td>
-</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><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>ý</td>
-</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><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>DD</TT></td><td align=center>Þ</td>
- <td align=center><TT>i^</TT></td><td align=center>î</td>
- <td align=center><TT>dd</TT></td><td align=center>þ</td>
-</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><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>ÿ</td>
-</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>
-For instance, to type "á" type [compose][a]['] or [compose]['][a].
+<p>For instance, to type "á" type [compose][a]['] or [compose]['][a].
<P>The character "nbsp" (non-breaking space) is typed by using
[compose][space].
diff --git a/src/Fl_Input.cxx b/src/Fl_Input.cxx
index 95b0de087..d0e1fc8a3 100644
--- a/src/Fl_Input.cxx
+++ b/src/Fl_Input.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Input.cxx,v 1.10 1999/01/24 15:28:59 mike Exp $"
+// "$Id: Fl_Input.cxx,v 1.10.2.1 1999/04/20 04:43:24 bill Exp $"
//
// Input widget for the Fast Light Tool Kit (FLTK).
//
@@ -54,29 +54,36 @@ int Fl_Input::shift_up_down_position(int p) {
////////////////////////////////////////////////////////////////
// Fltk "compose"
-// I tried to do compose characters "correctly" with much more user
-// feedback. They can see the character they will get, rather than
-// the "dead key" effect. Notice that I completely ignore that horrid
-// XIM extension!
-// Although the current scheme only works for Latin-NR1 character sets
-// the intention is to expand this to UTF-8 someday, to allow you to
-// compose all characters in all languages with no stupid "locale"
-// setting.
-// To use, you call "fl_compose()" for each keystroke. You pass it
-// the characters it displayed last time plus the new character. It
-// returns a new set of characters to replace the old one with. If
-// it returns zero length you should leave the old set unchanged and
-// treat the new key normally.
-// Pressing any function keys or moving the cursor should set the
-// compose state back to zero.
-
-// This string lists a pair for each possible foreign letter in Latin-NR1
+//
+// This is a demonstration of a IMHO "correct" interface to compose
+// character sequences. It does not have a "dead key" effect: the
+// user has feedback at all times, and sees exactly the symbol they
+// will get if they stop typing at that point. Notice that I totally
+// ignore the horrid XIM extension!
+//
+// You only need to keep track of your normal text buffer and a
+// single integer "state". Call fl_compose() for each character
+// keystroke. The return value is the new "state" that must be passed
+// the next time you call fl_compose(). It also returns the number of
+// characters to delete to the left, a buffer of new characters, and
+// the number of characters in that buffer. Obey these editing
+// instructions. Reset the state to zero if the user types any
+// function keys or clicks the mouse.
+//
+// Fl_Input does not call fl_compose unless you hit the "compose" key
+// first. It may be interesting and useful to always call it, though...
+
+// Although this simple code is only for ISO-8859-1 character
+// encodings, I think the interface can be expanded to UTF-8 (encoded
+// Unicode) someday.
+
+// This string lists a pair for each possible foreign letter in ISO-8859-1
// starting at code 0xa0 (nbsp). If the second character is a space then
// only the first character needs to by typed:
static const char* const compose_pairs =
" ! % # $ y=| & : c a <<~ - r _ * +-2 3 ' u p . , 1 o >>141234? "
-"A`A'A^A~A:A*AEC,E`E'E^E:I`I'I^I:D-N~O`O'O^O~O:x O/U`U'U^U:Y'DDss"
-"a`a'a^a~a:a*aec,e`e'e^e:i`i'i^i:d-n~o`o'o^o~o:-:o/u`u'u^u:y'ddy:";
+"A`A'A^A~A:A*AEC,E`E'E^E:I`I'I^I:D-N~O`O'O^O~O:x O/U`U'U^U:Y'THss"
+"a`a'a^a~a:a*aec,e`e'e^e:i`i'i^i:d-n~o`o'o^o~o:-:o/u`u'u^u:y'thy:";
int fl_compose(int state, char c, int& del, char* buffer, int& ins) {
del = 0; ins = 1; buffer[0] = c;
@@ -330,5 +337,5 @@ Fl_Input::Fl_Input(int x, int y, int w, int h, const char *l)
}
//
-// End of "$Id: Fl_Input.cxx,v 1.10 1999/01/24 15:28:59 mike Exp $".
+// End of "$Id: Fl_Input.cxx,v 1.10.2.1 1999/04/20 04:43:24 bill Exp $".
//