diff options
-rw-r--r-- | ChangeLog.2002 | 2 | ||||
-rw-r--r-- | doc/SetClassProcs.3 | 2 | ||||
-rw-r--r-- | doc/keysyms.n | 1813 | ||||
-rw-r--r-- | doc/ttk_Geometry.3 | 2 | ||||
-rw-r--r-- | generic/ks_names.h | 4 | ||||
-rw-r--r-- | generic/tkUtil.c | 14 | ||||
-rw-r--r-- | macosx/tkMacOSXFont.c | 2 | ||||
-rw-r--r-- | macosx/tkMacOSXMouseEvent.c | 69 | ||||
-rw-r--r-- | macosx/tkMacOSXNotify.c | 9 | ||||
-rw-r--r-- | macosx/tkMacOSXTest.c | 100 | ||||
-rw-r--r-- | tests/bind.test | 23 | ||||
-rw-r--r-- | tests/canvImg.test | 20 | ||||
-rw-r--r-- | tests/grab.test | 36 | ||||
-rw-r--r-- | win/tkWinPointer.c | 6 | ||||
-rw-r--r-- | xlib/X11/keysymdef.h | 2 |
15 files changed, 1166 insertions, 938 deletions
diff --git a/ChangeLog.2002 b/ChangeLog.2002 index b523e7d..b27b92b 100644 --- a/ChangeLog.2002 +++ b/ChangeLog.2002 @@ -5218,7 +5218,7 @@ 2000-05-31 Eric Melski <ericm@scriptics.com> * library/bgerror.tcl: Improved bgerror based on work by Donal - K. Fellows; no longer dependant on tk_dialog; features a + K. Fellows; no longer dependent on tk_dialog; features a Windows-esque "Details" button, and a customizable extra function button that allows the user to (for example) save the stack trace to a file. diff --git a/doc/SetClassProcs.3 b/doc/SetClassProcs.3 index 58618da..99eb81c 100644 --- a/doc/SetClassProcs.3 +++ b/doc/SetClassProcs.3 @@ -56,7 +56,7 @@ The \fIinstanceData\fR parameter passed to the \fIworldChangedProc\fR will be identical to the \fIinstanceData\fR parameter passed to \fBTk_SetClassProcs\fR. .PP -\fIcreateProc\fR is used to create platform-dependant windows. It is +\fIcreateProc\fR is used to create platform-dependent windows. It is invoked by \fBTk_MakeWindowExist\fR. \fIcreateProc\fR should have arguments and results that match the type \fBTk_ClassCreateProc\fR: .CS diff --git a/doc/keysyms.n b/doc/keysyms.n index 512c1a6..d5822a6 100644 --- a/doc/keysyms.n +++ b/doc/keysyms.n @@ -18,908 +18,941 @@ keysyms that will be recognized by Tk. Note that not all keysyms will be valid on all platforms, and some keysyms are also available on platforms that have a different native name for that key. For example, on Unix systems, the presence -of a particular keysym is dependant on the configuration of the +of a particular keysym is dependent on the configuration of the keyboard modifier map. This list shows keysyms along with their decimal and hexadecimal values. .PP .CS -space 32 0x0020 -exclam 33 0x0021 -quotedbl 34 0x0022 -numbersign 35 0x0023 -dollar 36 0x0024 -percent 37 0x0025 -ampersand 38 0x0026 -quoteright 39 0x0027 -parenleft 40 0x0028 -parenright 41 0x0029 -asterisk 42 0x002a -plus 43 0x002b -comma 44 0x002c -minus 45 0x002d -period 46 0x002e -slash 47 0x002f -0 48 0x0030 -1 49 0x0031 -2 50 0x0032 -3 51 0x0033 -4 52 0x0034 -5 53 0x0035 -6 54 0x0036 -7 55 0x0037 -8 56 0x0038 -9 57 0x0039 -colon 58 0x003a -semicolon 59 0x003b -less 60 0x003c -equal 61 0x003d -greater 62 0x003e -question 63 0x003f -at 64 0x0040 -A 65 0x0041 -B 66 0x0042 -C 67 0x0043 -D 68 0x0044 -E 69 0x0045 -F 70 0x0046 -G 71 0x0047 -H 72 0x0048 -I 73 0x0049 -J 74 0x004a -K 75 0x004b -L 76 0x004c -M 77 0x004d -N 78 0x004e -O 79 0x004f -P 80 0x0050 -Q 81 0x0051 -R 82 0x0052 -S 83 0x0053 -T 84 0x0054 -U 85 0x0055 -V 86 0x0056 -W 87 0x0057 -X 88 0x0058 -Y 89 0x0059 -Z 90 0x005a -bracketleft 91 0x005b -backslash 92 0x005c -bracketright 93 0x005d -asciicircum 94 0x005e -underscore 95 0x005f -quoteleft 96 0x0060 -a 97 0x0061 -b 98 0x0062 -c 99 0x0063 -d 100 0x0064 -e 101 0x0065 -f 102 0x0066 -g 103 0x0067 -h 104 0x0068 -i 105 0x0069 -j 106 0x006a -k 107 0x006b -l 108 0x006c -m 109 0x006d -n 110 0x006e -o 111 0x006f -p 112 0x0070 -q 113 0x0071 -r 114 0x0072 -s 115 0x0073 -t 116 0x0074 -u 117 0x0075 -v 118 0x0076 -w 119 0x0077 -x 120 0x0078 -y 121 0x0079 -z 122 0x007a -braceleft 123 0x007b -bar 124 0x007c -braceright 125 0x007d -asciitilde 126 0x007e -nobreakspace 160 0x00a0 -exclamdown 161 0x00a1 -cent 162 0x00a2 -sterling 163 0x00a3 -currency 164 0x00a4 -yen 165 0x00a5 -brokenbar 166 0x00a6 -section 167 0x00a7 -diaeresis 168 0x00a8 -copyright 169 0x00a9 -ordfeminine 170 0x00aa -guillemotleft 171 0x00ab -notsign 172 0x00ac -hyphen 173 0x00ad -registered 174 0x00ae -macron 175 0x00af -degree 176 0x00b0 -plusminus 177 0x00b1 -twosuperior 178 0x00b2 -threesuperior 179 0x00b3 -acute 180 0x00b4 -mu 181 0x00b5 -paragraph 182 0x00b6 -periodcentered 183 0x00b7 -cedilla 184 0x00b8 -onesuperior 185 0x00b9 -masculine 186 0x00ba -guillemotright 187 0x00bb -onequarter 188 0x00bc -onehalf 189 0x00bd -threequarters 190 0x00be -questiondown 191 0x00bf -Agrave 192 0x00c0 -Aacute 193 0x00c1 -Acircumflex 194 0x00c2 -Atilde 195 0x00c3 -Adiaeresis 196 0x00c4 -Aring 197 0x00c5 -AE 198 0x00c6 -Ccedilla 199 0x00c7 -Egrave 200 0x00c8 -Eacute 201 0x00c9 -Ecircumflex 202 0x00ca -Ediaeresis 203 0x00cb -Igrave 204 0x00cc -Iacute 205 0x00cd -Icircumflex 206 0x00ce -Idiaeresis 207 0x00cf -Eth 208 0x00d0 -Ntilde 209 0x00d1 -Ograve 210 0x00d2 -Oacute 211 0x00d3 -Ocircumflex 212 0x00d4 -Otilde 213 0x00d5 -Odiaeresis 214 0x00d6 -multiply 215 0x00d7 -Ooblique 216 0x00d8 -Ugrave 217 0x00d9 -Uacute 218 0x00da -Ucircumflex 219 0x00db -Udiaeresis 220 0x00dc -Yacute 221 0x00dd -Thorn 222 0x00de -ssharp 223 0x00df -agrave 224 0x00e0 -aacute 225 0x00e1 -acircumflex 226 0x00e2 -atilde 227 0x00e3 -adiaeresis 228 0x00e4 -aring 229 0x00e5 -ae 230 0x00e6 -ccedilla 231 0x00e7 -egrave 232 0x00e8 -eacute 233 0x00e9 -ecircumflex 234 0x00ea -ediaeresis 235 0x00eb -igrave 236 0x00ec -iacute 237 0x00ed -icircumflex 238 0x00ee -idiaeresis 239 0x00ef -eth 240 0x00f0 -ntilde 241 0x00f1 -ograve 242 0x00f2 -oacute 243 0x00f3 -ocircumflex 244 0x00f4 -otilde 245 0x00f5 -odiaeresis 246 0x00f6 -division 247 0x00f7 -oslash 248 0x00f8 -ugrave 249 0x00f9 -uacute 250 0x00fa -ucircumflex 251 0x00fb -udiaeresis 252 0x00fc -yacute 253 0x00fd -thorn 254 0x00fe -ydiaeresis 255 0x00ff -Aogonek 417 0x01a1 -breve 418 0x01a2 -Lstroke 419 0x01a3 -Lcaron 421 0x01a5 -Sacute 422 0x01a6 -Scaron 425 0x01a9 -Scedilla 426 0x01aa -Tcaron 427 0x01ab -Zacute 428 0x01ac +space 32 0x20 +exclam 33 0x21 +quotedbl 34 0x22 +numbersign 35 0x23 +dollar 36 0x24 +percent 37 0x25 +ampersand 38 0x26 +apostrophe 39 0x27 +parenleft 40 0x28 +parenright 41 0x29 +asterisk 42 0x2A +plus 43 0x2B +comma 44 0x2C +minus 45 0x2D +period 46 0x2E +slash 47 0x2F +0 48 0x30 +1 49 0x31 +2 50 0x32 +3 51 0x33 +4 52 0x34 +5 53 0x35 +6 54 0x36 +7 55 0x37 +8 56 0x38 +9 57 0x39 +colon 58 0x3A +semicolon 59 0x3B +less 60 0x3C +equal 61 0x3D +greater 62 0x3E +question 63 0x3F +at 64 0x40 +A 65 0x41 +B 66 0x42 +C 67 0x43 +D 68 0x44 +E 69 0x45 +F 70 0x46 +G 71 0x47 +H 72 0x48 +I 73 0x49 +J 74 0x4A +K 75 0x4B +L 76 0x4C +M 77 0x4D +N 78 0x4E +O 79 0x4F +P 80 0x50 +Q 81 0x51 +R 82 0x52 +S 83 0x53 +T 84 0x54 +U 85 0x55 +V 86 0x56 +W 87 0x57 +X 88 0x58 +Y 89 0x59 +Z 90 0x5A +bracketleft 91 0x5B +backslash 92 0x5C +bracketright 93 0x5D +asciicircum 94 0x5E +underscore 95 0x5F +grave 96 0x60 +a 97 0x61 +b 98 0x62 +c 99 0x63 +d 100 0x64 +e 101 0x65 +f 102 0x66 +g 103 0x67 +h 104 0x68 +i 105 0x69 +j 106 0x6A +k 107 0x6B +l 108 0x6C +m 109 0x6D +n 110 0x6E +o 111 0x6F +p 112 0x70 +q 113 0x71 +r 114 0x72 +s 115 0x73 +t 116 0x74 +u 117 0x75 +v 118 0x76 +w 119 0x77 +x 120 0x78 +y 121 0x79 +z 122 0x7A +braceleft 123 0x7B +bar 124 0x7C +braceright 125 0x7D +asciitilde 126 0x7E +nobreakspace 160 0xA0 +exclamdown 161 0xA1 +cent 162 0xA2 +sterling 163 0xA3 +currency 164 0xA4 +yen 165 0xA5 +brokenbar 166 0xA6 +section 167 0xA7 +diaeresis 168 0xA8 +copyright 169 0xA9 +ordfeminine 170 0xAA +guillemotleft 171 0xAB +notsign 172 0xAC +hyphen 173 0xAD +registered 174 0xAE +macron 175 0xAF +degree 176 0xB0 +plusminus 177 0xB1 +twosuperior 178 0xB2 +threesuperior 179 0xB3 +acute 180 0xB4 +mu 181 0xB5 +paragraph 182 0xB6 +periodcentered 183 0xB7 +cedilla 184 0xB8 +onesuperior 185 0xB9 +masculine 186 0xBA +guillemotright 187 0xBB +onequarter 188 0xBC +onehalf 189 0xBD +threequarters 190 0xBE +questiondown 191 0xBF +Agrave 192 0xC0 +Aacute 193 0xC1 +Acircumflex 194 0xC2 +Atilde 195 0xC3 +Adiaeresis 196 0xC4 +Aring 197 0xC5 +AE 198 0xC6 +Ccedilla 199 0xC7 +Egrave 200 0xC8 +Eacute 201 0xC9 +Ecircumflex 202 0xCA +Ediaeresis 203 0xCB +Igrave 204 0xCC +Iacute 205 0xCD +Icircumflex 206 0xCE +Idiaeresis 207 0xCF +ETH 208 0xD0 +Ntilde 209 0xD1 +Ograve 210 0xD2 +Oacute 211 0xD3 +Ocircumflex 212 0xD4 +Otilde 213 0xD5 +Odiaeresis 214 0xD6 +multiply 215 0xD7 +Oslash 216 0xD8 +Ugrave 217 0xD9 +Uacute 218 0xDA +Ucircumflex 219 0xDB +Udiaeresis 220 0xDC +Yacute 221 0xDD +THORN 222 0xDE +ssharp 223 0xDF +agrave 224 0xE0 +aacute 225 0xE1 +acircumflex 226 0xE2 +atilde 227 0xE3 +adiaeresis 228 0xE4 +aring 229 0xE5 +ae 230 0xE6 +ccedilla 231 0xE7 +egrave 232 0xE8 +eacute 233 0xE9 +ecircumflex 234 0xEA +ediaeresis 235 0xEB +igrave 236 0xEC +iacute 237 0xED +icircumflex 238 0xEE +idiaeresis 239 0xEF +eth 240 0xF0 +ntilde 241 0xF1 +ograve 242 0xF2 +oacute 243 0xF3 +ocircumflex 244 0xF4 +otilde 245 0xF5 +odiaeresis 246 0xF6 +division 247 0xF7 +oslash 248 0xF8 +ugrave 249 0xF9 +uacute 250 0xFA +ucircumflex 251 0xFB +udiaeresis 252 0xFC +yacute 253 0xFD +thorn 254 0xFE +ydiaeresis 255 0xFF +Aogonek 417 0x1A1 +breve 418 0x1A2 +Lstroke 419 0x1A3 +Lcaron 421 0x1A5 +Sacute 422 0x1A6 +Scaron 425 0x1A9 +Scedilla 426 0x1AA +Tcaron 427 0x1AB +Zacute 428 0x1AC .CE .CS -Zcaron 430 0x01ae -Zabovedot 431 0x01af -aogonek 433 0x01b1 -ogonek 434 0x01b2 -lstroke 435 0x01b3 -lcaron 437 0x01b5 -sacute 438 0x01b6 -caron 439 0x01b7 -scaron 441 0x01b9 -scedilla 442 0x01ba -tcaron 443 0x01bb -zacute 444 0x01bc -doubleacute 445 0x01bd -zcaron 446 0x01be -zabovedot 447 0x01bf -Racute 448 0x01c0 -Abreve 451 0x01c3 -Cacute 454 0x01c6 -Ccaron 456 0x01c8 -Eogonek 458 0x01ca -Ecaron 460 0x01cc -Dcaron 463 0x01cf -Nacute 465 0x01d1 -Ncaron 466 0x01d2 -Odoubleacute 469 0x01d5 -Rcaron 472 0x01d8 -Uring 473 0x01d9 -Udoubleacute 475 0x01db -Tcedilla 478 0x01de -racute 480 0x01e0 -abreve 483 0x01e3 -cacute 486 0x01e6 -ccaron 488 0x01e8 -eogonek 490 0x01ea -ecaron 492 0x01ec -dcaron 495 0x01ef -nacute 497 0x01f1 -ncaron 498 0x01f2 -odoubleacute 501 0x01f5 -rcaron 504 0x01f8 -uring 505 0x01f9 -udoubleacute 507 0x01fb -tcedilla 510 0x01fe -abovedot 511 0x01ff -Hstroke 673 0x02a1 -Hcircumflex 678 0x02a6 -Iabovedot 681 0x02a9 -Gbreve 683 0x02ab -Jcircumflex 684 0x02ac -hstroke 689 0x02b1 -hcircumflex 694 0x02b6 -idotless 697 0x02b9 -gbreve 699 0x02bb -jcircumflex 700 0x02bc -Cabovedot 709 0x02c5 -Ccircumflex 710 0x02c6 -Gabovedot 725 0x02d5 -Gcircumflex 728 0x02d8 -Ubreve 733 0x02dd -Scircumflex 734 0x02de -cabovedot 741 0x02e5 -ccircumflex 742 0x02e6 -gabovedot 757 0x02f5 -gcircumflex 760 0x02f8 -ubreve 765 0x02fd -scircumflex 766 0x02fe -kappa 930 0x03a2 -Rcedilla 931 0x03a3 -Itilde 933 0x03a5 -Lcedilla 934 0x03a6 -Emacron 938 0x03aa -Gcedilla 939 0x03ab -Tslash 940 0x03ac -rcedilla 947 0x03b3 -itilde 949 0x03b5 -lcedilla 950 0x03b6 -emacron 954 0x03ba -gacute 955 0x03bb -tslash 956 0x03bc -ENG 957 0x03bd -eng 959 0x03bf -Amacron 960 0x03c0 -Iogonek 967 0x03c7 -Eabovedot 972 0x03cc -Imacron 975 0x03cf -Ncedilla 977 0x03d1 -Omacron 978 0x03d2 -Kcedilla 979 0x03d3 -Uogonek 985 0x03d9 -Utilde 989 0x03dd -Umacron 990 0x03de -amacron 992 0x03e0 -iogonek 999 0x03e7 -eabovedot 1004 0x03ec -imacron 1007 0x03ef -ncedilla 1009 0x03f1 -omacron 1010 0x03f2 -kcedilla 1011 0x03f3 -uogonek 1017 0x03f9 -utilde 1021 0x03fd -umacron 1022 0x03fe -overline 1150 0x047e -kana_fullstop 1185 0x04a1 -kana_openingbracket 1186 0x04a2 -kana_closingbracket 1187 0x04a3 -kana_comma 1188 0x04a4 -kana_middledot 1189 0x04a5 -kana_WO 1190 0x04a6 -kana_a 1191 0x04a7 -kana_i 1192 0x04a8 -kana_u 1193 0x04a9 -kana_e 1194 0x04aa -kana_o 1195 0x04ab -kana_ya 1196 0x04ac -kana_yu 1197 0x04ad -kana_yo 1198 0x04ae -kana_tu 1199 0x04af -prolongedsound 1200 0x04b0 -kana_A 1201 0x04b1 -kana_I 1202 0x04b2 -kana_U 1203 0x04b3 -kana_E 1204 0x04b4 -kana_O 1205 0x04b5 -kana_KA 1206 0x04b6 -kana_KI 1207 0x04b7 -kana_KU 1208 0x04b8 -kana_KE 1209 0x04b9 -kana_KO 1210 0x04ba -kana_SA 1211 0x04bb -kana_SHI 1212 0x04bc -kana_SU 1213 0x04bd -kana_SE 1214 0x04be -kana_SO 1215 0x04bf -kana_TA 1216 0x04c0 -kana_TI 1217 0x04c1 -kana_TU 1218 0x04c2 -kana_TE 1219 0x04c3 -kana_TO 1220 0x04c4 -kana_NA 1221 0x04c5 -kana_NI 1222 0x04c6 -kana_NU 1223 0x04c7 -kana_NE 1224 0x04c8 -kana_NO 1225 0x04c9 -kana_HA 1226 0x04ca -kana_HI 1227 0x04cb -kana_HU 1228 0x04cc -kana_HE 1229 0x04cd -kana_HO 1230 0x04ce -kana_MA 1231 0x04cf -kana_MI 1232 0x04d0 -kana_MU 1233 0x04d1 -kana_ME 1234 0x04d2 -kana_MO 1235 0x04d3 -kana_YA 1236 0x04d4 -kana_YU 1237 0x04d5 -kana_YO 1238 0x04d6 -kana_RA 1239 0x04d7 -kana_RI 1240 0x04d8 -kana_RU 1241 0x04d9 -kana_RE 1242 0x04da -kana_RO 1243 0x04db -kana_WA 1244 0x04dc -kana_N 1245 0x04dd -voicedsound 1246 0x04de -semivoicedsound 1247 0x04df -Arabic_comma 1452 0x05ac -Arabic_semicolon 1467 0x05bb -Arabic_question_mark 1471 0x05bf -Arabic_hamza 1473 0x05c1 -Arabic_maddaonalef 1474 0x05c2 -Arabic_hamzaonalef 1475 0x05c3 -Arabic_hamzaonwaw 1476 0x05c4 -Arabic_hamzaunderalef 1477 0x05c5 -Arabic_hamzaonyeh 1478 0x05c6 -Arabic_alef 1479 0x05c7 -Arabic_beh 1480 0x05c8 -Arabic_tehmarbuta 1481 0x05c9 -Arabic_teh 1482 0x05ca -Arabic_theh 1483 0x05cb -Arabic_jeem 1484 0x05cc -Arabic_hah 1485 0x05cd -Arabic_khah 1486 0x05ce -Arabic_dal 1487 0x05cf -Arabic_thal 1488 0x05d0 -Arabic_ra 1489 0x05d1 -Arabic_zain 1490 0x05d2 -Arabic_seen 1491 0x05d3 -Arabic_sheen 1492 0x05d4 -Arabic_sad 1493 0x05d5 -Arabic_dad 1494 0x05d6 -Arabic_tah 1495 0x05d7 -Arabic_zah 1496 0x05d8 -Arabic_ain 1497 0x05d9 -Arabic_ghain 1498 0x05da -Arabic_tatweel 1504 0x05e0 -Arabic_feh 1505 0x05e1 -Arabic_qaf 1506 0x05e2 -Arabic_kaf 1507 0x05e3 -Arabic_lam 1508 0x05e4 -Arabic_meem 1509 0x05e5 +Zcaron 430 0x1AE +Zabovedot 431 0x1AF +aogonek 433 0x1B1 +ogonek 434 0x1B2 +lstroke 435 0x1B3 +lcaron 437 0x1B5 +sacute 438 0x1B6 +caron 439 0x1B7 +scaron 441 0x1B9 +scedilla 442 0x1BA +tcaron 443 0x1BB +zacute 444 0x1BC +doubleacute 445 0x1BD +zcaron 446 0x1BE +zabovedot 447 0x1BF +Racute 448 0x1C0 +Abreve 451 0x1C3 +Lacute 453 0x1C5 +Cacute 454 0x1C6 +Ccaron 456 0x1C8 +Eogonek 458 0x1CA +Ecaron 460 0x1CC +Dcaron 463 0x1CF +Dstroke 464 0x1D0 +Nacute 465 0x1D1 +Ncaron 466 0x1D2 +Odoubleacute 469 0x1D5 +Rcaron 472 0x1D8 +Uring 473 0x1D9 +Udoubleacute 475 0x1DB +Tcedilla 478 0x1DE +racute 480 0x1E0 +abreve 483 0x1E3 +lacute 485 0x1E5 +cacute 486 0x1E6 +ccaron 488 0x1E8 +eogonek 490 0x1EA +ecaron 492 0x1EC +dcaron 495 0x1EF +dstroke 496 0x1F0 +nacute 497 0x1F1 +ncaron 498 0x1F2 +odoubleacute 501 0x1F5 +rcaron 504 0x1F8 +uring 505 0x1F9 +udoubleacute 507 0x1FB +tcedilla 510 0x1FE +abovedot 511 0x1FF +Hstroke 673 0x2A1 +Hcircumflex 678 0x2A6 +Iabovedot 681 0x2A9 +Gbreve 683 0x2AB +Jcircumflex 684 0x2AC +hstroke 689 0x2B1 +hcircumflex 694 0x2B6 +idotless 697 0x2B9 +gbreve 699 0x2BB +jcircumflex 700 0x2BC +Cabovedot 709 0x2C5 +Ccircumflex 710 0x2C6 +Gabovedot 725 0x2D5 +Gcircumflex 728 0x2D8 +Ubreve 733 0x2DD +Scircumflex 734 0x2DE +cabovedot 741 0x2E5 +ccircumflex 742 0x2E6 +gabovedot 757 0x2F5 +gcircumflex 760 0x2F8 +ubreve 765 0x2FD +scircumflex 766 0x2FE +kra 930 0x3A2 +Rcedilla 931 0x3A3 +Itilde 933 0x3A5 +Lcedilla 934 0x3A6 +Emacron 938 0x3AA +Gcedilla 939 0x3AB +Tslash 940 0x3AC +rcedilla 947 0x3B3 +itilde 949 0x3B5 +lcedilla 950 0x3B6 +emacron 954 0x3BA +gcedilla 955 0x3BB +tslash 956 0x3BC +ENG 957 0x3BD +eng 959 0x3BF +Amacron 960 0x3C0 +Iogonek 967 0x3C7 +Eabovedot 972 0x3CC +Imacron 975 0x3CF +Ncedilla 977 0x3D1 +Omacron 978 0x3D2 +Kcedilla 979 0x3D3 +Uogonek 985 0x3D9 +Utilde 989 0x3DD +Umacron 990 0x3DE +amacron 992 0x3E0 +iogonek 999 0x3E7 +eabovedot 1004 0x3EC +imacron 1007 0x3EF +ncedilla 1009 0x3F1 +omacron 1010 0x3F2 +kcedilla 1011 0x3F3 +uogonek 1017 0x3F9 +utilde 1021 0x3FD +umacron 1022 0x3FE +overline 1150 0x47E +kana_fullstop 1185 0x4A1 +kana_openingbracket 1186 0x4A2 +kana_closingbracket 1187 0x4A3 +kana_comma 1188 0x4A4 +kana_conjunctive 1189 0x4A5 +kana_WO 1190 0x4A6 +kana_a 1191 0x4A7 +kana_i 1192 0x4A8 +kana_u 1193 0x4A9 +kana_e 1194 0x4AA +kana_o 1195 0x4AB +kana_ya 1196 0x4AC +kana_yu 1197 0x4AD +kana_yo 1198 0x4AE +kana_tsu 1199 0x4AF +prolongedsound 1200 0x4B0 +kana_A 1201 0x4B1 +kana_I 1202 0x4B2 +kana_U 1203 0x4B3 +kana_E 1204 0x4B4 +kana_O 1205 0x4B5 +kana_KA 1206 0x4B6 +kana_KI 1207 0x4B7 +kana_KU 1208 0x4B8 +kana_KE 1209 0x4B9 +kana_KO 1210 0x4BA +kana_SA 1211 0x4BB +kana_SHI 1212 0x4BC +kana_SU 1213 0x4BD +kana_SE 1214 0x4BE +kana_SO 1215 0x4BF +kana_TA 1216 0x4C0 +kana_CHI 1217 0x4C1 +kana_TSU 1218 0x4C2 +kana_TE 1219 0x4C3 +kana_TO 1220 0x4C4 +kana_NA 1221 0x4C5 +kana_NI 1222 0x4C6 +kana_NU 1223 0x4C7 +kana_NE 1224 0x4C8 +kana_NO 1225 0x4C9 +kana_HA 1226 0x4CA +kana_HI 1227 0x4CB +kana_FU 1228 0x4CC +kana_HE 1229 0x4CD +kana_HO 1230 0x4CE +kana_MA 1231 0x4CF +kana_MI 1232 0x4D0 +kana_MU 1233 0x4D1 +kana_ME 1234 0x4D2 +kana_MO 1235 0x4D3 +kana_YA 1236 0x4D4 +kana_YU 1237 0x4D5 +kana_YO 1238 0x4D6 +kana_RA 1239 0x4D7 +kana_RI 1240 0x4D8 +kana_RU 1241 0x4D9 +kana_RE 1242 0x4DA +kana_RO 1243 0x4DB +kana_WA 1244 0x4DC +kana_N 1245 0x4DD +voicedsound 1246 0x4DE +semivoicedsound 1247 0x4DF +Arabic_comma 1452 0x5AC +Arabic_semicolon 1467 0x5BB +Arabic_question_mark 1471 0x5BF +Arabic_hamza 1473 0x5C1 +Arabic_maddaonalef 1474 0x5C2 +Arabic_hamzaonalef 1475 0x5C3 +Arabic_hamzaonwaw 1476 0x5C4 +Arabic_hamzaunderalef 1477 0x5C5 +Arabic_hamzaonyeh 1478 0x5C6 +Arabic_alef 1479 0x5C7 +Arabic_beh 1480 0x5C8 +Arabic_tehmarbuta 1481 0x5C9 +Arabic_teh 1482 0x5CA +Arabic_theh 1483 0x5CB +Arabic_jeem 1484 0x5CC +Arabic_hah 1485 0x5CD +Arabic_khah 1486 0x5CE +Arabic_dal 1487 0x5CF +Arabic_thal 1488 0x5D0 +Arabic_ra 1489 0x5D1 +Arabic_zain 1490 0x5D2 +Arabic_seen 1491 0x5D3 +Arabic_sheen 1492 0x5D4 +Arabic_sad 1493 0x5D5 +Arabic_dad 1494 0x5D6 +Arabic_tah 1495 0x5D7 +Arabic_zah 1496 0x5D8 +Arabic_ain 1497 0x5D9 +Arabic_ghain 1498 0x5DA +Arabic_tatweel 1504 0x5E0 +Arabic_feh 1505 0x5E1 +Arabic_qaf 1506 0x5E2 +Arabic_kaf 1507 0x5E3 +Arabic_lam 1508 0x5E4 +Arabic_meem 1509 0x5E5 .CE .CS -Arabic_noon 1510 0x05e6 -Arabic_heh 1511 0x05e7 -Arabic_waw 1512 0x05e8 -Arabic_alefmaksura 1513 0x05e9 -Arabic_yeh 1514 0x05ea -Arabic_fathatan 1515 0x05eb -Arabic_dammatan 1516 0x05ec -Arabic_kasratan 1517 0x05ed -Arabic_fatha 1518 0x05ee -Arabic_damma 1519 0x05ef -Arabic_kasra 1520 0x05f0 -Arabic_shadda 1521 0x05f1 -Arabic_sukun 1522 0x05f2 -Serbian_dje 1697 0x06a1 -Macedonia_gje 1698 0x06a2 -Cyrillic_io 1699 0x06a3 -Ukranian_je 1700 0x06a4 -Macedonia_dse 1701 0x06a5 -Ukranian_i 1702 0x06a6 -Ukranian_yi 1703 0x06a7 -Serbian_je 1704 0x06a8 -Serbian_lje 1705 0x06a9 -Serbian_nje 1706 0x06aa -Serbian_tshe 1707 0x06ab -Macedonia_kje 1708 0x06ac -Byelorussian_shortu 1710 0x06ae -Serbian_dze 1711 0x06af -numerosign 1712 0x06b0 -Serbian_DJE 1713 0x06b1 -Macedonia_GJE 1714 0x06b2 -Cyrillic_IO 1715 0x06b3 -Ukranian_JE 1716 0x06b4 -Macedonia_DSE 1717 0x06b5 -Ukranian_I 1718 0x06b6 -Ukranian_YI 1719 0x06b7 -Serbian_JE 1720 0x06b8 -Serbian_LJE 1721 0x06b9 -Serbian_NJE 1722 0x06ba -Serbian_TSHE 1723 0x06bb -Macedonia_KJE 1724 0x06bc -Byelorussian_SHORTU 1726 0x06be -Serbian_DZE 1727 0x06bf -Cyrillic_yu 1728 0x06c0 -Cyrillic_a 1729 0x06c1 -Cyrillic_be 1730 0x06c2 -Cyrillic_tse 1731 0x06c3 -Cyrillic_de 1732 0x06c4 -Cyrillic_ie 1733 0x06c5 -Cyrillic_ef 1734 0x06c6 -Cyrillic_ghe 1735 0x06c7 -Cyrillic_ha 1736 0x06c8 -Cyrillic_i 1737 0x06c9 -Cyrillic_shorti 1738 0x06ca -Cyrillic_ka 1739 0x06cb -Cyrillic_el 1740 0x06cc -Cyrillic_em 1741 0x06cd -Cyrillic_en 1742 0x06ce -Cyrillic_o 1743 0x06cf -Cyrillic_pe 1744 0x06d0 -Cyrillic_ya 1745 0x06d1 -Cyrillic_er 1746 0x06d2 -Cyrillic_es 1747 0x06d3 -Cyrillic_te 1748 0x06d4 -Cyrillic_u 1749 0x06d5 -Cyrillic_zhe 1750 0x06d6 -Cyrillic_ve 1751 0x06d7 -Cyrillic_softsign 1752 0x06d8 -Cyrillic_yeru 1753 0x06d9 -Cyrillic_ze 1754 0x06da -Cyrillic_sha 1755 0x06db -Cyrillic_e 1756 0x06dc -Cyrillic_shcha 1757 0x06dd -Cyrillic_che 1758 0x06de -Cyrillic_hardsign 1759 0x06df -Cyrillic_YU 1760 0x06e0 -Cyrillic_A 1761 0x06e1 -Cyrillic_BE 1762 0x06e2 -Cyrillic_TSE 1763 0x06e3 -Cyrillic_DE 1764 0x06e4 -Cyrillic_IE 1765 0x06e5 -Cyrillic_EF 1766 0x06e6 -Cyrillic_GHE 1767 0x06e7 -Cyrillic_HA 1768 0x06e8 -Cyrillic_I 1769 0x06e9 -Cyrillic_SHORTI 1770 0x06ea -Cyrillic_KA 1771 0x06eb -Cyrillic_EL 1772 0x06ec -Cyrillic_EM 1773 0x06ed -Cyrillic_EN 1774 0x06ee -Cyrillic_O 1775 0x06ef -Cyrillic_PE 1776 0x06f0 -Cyrillic_YA 1777 0x06f1 -Cyrillic_ER 1778 0x06f2 -Cyrillic_ES 1779 0x06f3 -Cyrillic_TE 1780 0x06f4 -Cyrillic_U 1781 0x06f5 -Cyrillic_ZHE 1782 0x06f6 -Cyrillic_VE 1783 0x06f7 -Cyrillic_SOFTSIGN 1784 0x06f8 -Cyrillic_YERU 1785 0x06f9 -Cyrillic_ZE 1786 0x06fa -Cyrillic_SHA 1787 0x06fb -Cyrillic_E 1788 0x06fc -Cyrillic_SHCHA 1789 0x06fd -Cyrillic_CHE 1790 0x06fe -Cyrillic_HARDSIGN 1791 0x06ff -Greek_ALPHAaccent 1953 0x07a1 -Greek_EPSILONaccent 1954 0x07a2 -Greek_ETAaccent 1955 0x07a3 -Greek_IOTAaccent 1956 0x07a4 -Greek_IOTAdiaeresis 1957 0x07a5 -Greek_IOTAaccentdiaeresis 1958 0x07a6 -Greek_OMICRONaccent 1959 0x07a7 -Greek_UPSILONaccent 1960 0x07a8 -Greek_UPSILONdieresis 1961 0x07a9 -Greek_UPSILONaccentdieresis 1962 0x07aa -Greek_OMEGAaccent 1963 0x07ab -Greek_alphaaccent 1969 0x07b1 -Greek_epsilonaccent 1970 0x07b2 -Greek_etaaccent 1971 0x07b3 -Greek_iotaaccent 1972 0x07b4 -Greek_iotadieresis 1973 0x07b5 -Greek_iotaaccentdieresis 1974 0x07b6 -Greek_omicronaccent 1975 0x07b7 -Greek_upsilonaccent 1976 0x07b8 -Greek_upsilondieresis 1977 0x07b9 -Greek_upsilonaccentdieresis 1978 0x07ba -Greek_omegaaccent 1979 0x07bb -Greek_ALPHA 1985 0x07c1 -Greek_BETA 1986 0x07c2 -Greek_GAMMA 1987 0x07c3 -Greek_DELTA 1988 0x07c4 -Greek_EPSILON 1989 0x07c5 -Greek_ZETA 1990 0x07c6 -Greek_ETA 1991 0x07c7 -Greek_THETA 1992 0x07c8 -Greek_IOTA 1993 0x07c9 -Greek_KAPPA 1994 0x07ca -Greek_LAMBDA 1995 0x07cb -Greek_MU 1996 0x07cc -Greek_NU 1997 0x07cd -Greek_XI 1998 0x07ce -Greek_OMICRON 1999 0x07cf -Greek_PI 2000 0x07d0 -Greek_RHO 2001 0x07d1 -Greek_SIGMA 2002 0x07d2 -Greek_TAU 2004 0x07d4 -Greek_UPSILON 2005 0x07d5 -Greek_PHI 2006 0x07d6 -Greek_CHI 2007 0x07d7 -Greek_PSI 2008 0x07d8 -Greek_OMEGA 2009 0x07d9 -Greek_alpha 2017 0x07e1 -Greek_beta 2018 0x07e2 -Greek_gamma 2019 0x07e3 -Greek_delta 2020 0x07e4 -Greek_epsilon 2021 0x07e5 -Greek_zeta 2022 0x07e6 -Greek_eta 2023 0x07e7 -Greek_theta 2024 0x07e8 -Greek_iota 2025 0x07e9 -Greek_kappa 2026 0x07ea -Greek_lambda 2027 0x07eb -Greek_mu 2028 0x07ec -Greek_nu 2029 0x07ed -Greek_xi 2030 0x07ee -Greek_omicron 2031 0x07ef -Greek_pi 2032 0x07f0 -Greek_rho 2033 0x07f1 -Greek_sigma 2034 0x07f2 -Greek_finalsmallsigma 2035 0x07f3 -Greek_tau 2036 0x07f4 -Greek_upsilon 2037 0x07f5 -Greek_phi 2038 0x07f6 -Greek_chi 2039 0x07f7 -Greek_psi 2040 0x07f8 -Greek_omega 2041 0x07f9 -leftradical 2209 0x08a1 -topleftradical 2210 0x08a2 -horizconnector 2211 0x08a3 -topintegral 2212 0x08a4 -botintegral 2213 0x08a5 -vertconnector 2214 0x08a6 -topleftsqbracket 2215 0x08a7 -botleftsqbracket 2216 0x08a8 -toprightsqbracket 2217 0x08a9 -botrightsqbracket 2218 0x08aa -topleftparens 2219 0x08ab -botleftparens 2220 0x08ac -toprightparens 2221 0x08ad -botrightparens 2222 0x08ae -leftmiddlecurlybrace 2223 0x08af -rightmiddlecurlybrace 2224 0x08b0 -topleftsummation 2225 0x08b1 -botleftsummation 2226 0x08b2 -topvertsummationconnector 2227 0x08b3 -botvertsummationconnector 2228 0x08b4 -toprightsummation 2229 0x08b5 -botrightsummation 2230 0x08b6 -rightmiddlesummation 2231 0x08b7 +Arabic_noon 1510 0x5E6 +Arabic_ha 1511 0x5E7 +Arabic_waw 1512 0x5E8 +Arabic_alefmaksura 1513 0x5E9 +Arabic_yeh 1514 0x5EA +Arabic_fathatan 1515 0x5EB +Arabic_dammatan 1516 0x5EC +Arabic_kasratan 1517 0x5ED +Arabic_fatha 1518 0x5EE +Arabic_damma 1519 0x5EF +Arabic_kasra 1520 0x5F0 +Arabic_shadda 1521 0x5F1 +Arabic_sukun 1522 0x5F2 +Serbian_dje 1697 0x6A1 +Macedonia_gje 1698 0x6A2 +Cyrillic_io 1699 0x6A3 +Ukrainian_ie 1700 0x6A4 +Macedonia_dse 1701 0x6A5 +Ukrainian_i 1702 0x6A6 +Ukrainian_yi 1703 0x6A7 +Cyrillic_je 1704 0x6A8 +Cyrillic_lje 1705 0x6A9 +Cyrillic_nje 1706 0x6AA +Serbian_tshe 1707 0x6AB +Macedonia_kje 1708 0x6AC +Byelorussian_shortu 1710 0x6AE +Cyrillic_dzhe 1711 0x6AF +numerosign 1712 0x6B0 +Serbian_DJE 1713 0x6B1 +Macedonia_GJE 1714 0x6B2 +Cyrillic_IO 1715 0x6B3 +Ukrainian_IE 1716 0x6B4 +Macedonia_DSE 1717 0x6B5 +Ukrainian_I 1718 0x6B6 +Ukrainian_YI 1719 0x6B7 +Cyrillic_JE 1720 0x6B8 +Cyrillic_LJE 1721 0x6B9 +Cyrillic_NJE 1722 0x6BA +Serbian_TSHE 1723 0x6BB +Macedonia_KJE 1724 0x6BC +Byelorussian_SHORTU 1726 0x6BE +Cyrillic_DZHE 1727 0x6BF +Cyrillic_yu 1728 0x6C0 +Cyrillic_a 1729 0x6C1 +Cyrillic_be 1730 0x6C2 +Cyrillic_tse 1731 0x6C3 +Cyrillic_de 1732 0x6C4 +Cyrillic_ie 1733 0x6C5 +Cyrillic_ef 1734 0x6C6 +Cyrillic_ghe 1735 0x6C7 +Cyrillic_ha 1736 0x6C8 +Cyrillic_i 1737 0x6C9 +Cyrillic_shorti 1738 0x6CA +Cyrillic_ka 1739 0x6CB +Cyrillic_el 1740 0x6CC +Cyrillic_em 1741 0x6CD +Cyrillic_en 1742 0x6CE +Cyrillic_o 1743 0x6CF +Cyrillic_pe 1744 0x6D0 +Cyrillic_ya 1745 0x6D1 +Cyrillic_er 1746 0x6D2 +Cyrillic_es 1747 0x6D3 +Cyrillic_te 1748 0x6D4 +Cyrillic_u 1749 0x6D5 +Cyrillic_zhe 1750 0x6D6 +Cyrillic_ve 1751 0x6D7 +Cyrillic_softsign 1752 0x6D8 +Cyrillic_yeru 1753 0x6D9 +Cyrillic_ze 1754 0x6DA +Cyrillic_sha 1755 0x6DB +Cyrillic_e 1756 0x6DC +Cyrillic_shcha 1757 0x6DD +Cyrillic_che 1758 0x6DE +Cyrillic_hardsign 1759 0x6DF +Cyrillic_YU 1760 0x6E0 +Cyrillic_A 1761 0x6E1 +Cyrillic_BE 1762 0x6E2 +Cyrillic_TSE 1763 0x6E3 +Cyrillic_DE 1764 0x6E4 +Cyrillic_IE 1765 0x6E5 +Cyrillic_EF 1766 0x6E6 +Cyrillic_GHE 1767 0x6E7 +Cyrillic_HA 1768 0x6E8 +Cyrillic_I 1769 0x6E9 +Cyrillic_SHORTI 1770 0x6EA +Cyrillic_KA 1771 0x6EB +Cyrillic_EL 1772 0x6EC +Cyrillic_EM 1773 0x6ED +Cyrillic_EN 1774 0x6EE +Cyrillic_O 1775 0x6EF +Cyrillic_PE 1776 0x6F0 +Cyrillic_YA 1777 0x6F1 +Cyrillic_ER 1778 0x6F2 +Cyrillic_ES 1779 0x6F3 +Cyrillic_TE 1780 0x6F4 +Cyrillic_U 1781 0x6F5 +Cyrillic_ZHE 1782 0x6F6 +Cyrillic_VE 1783 0x6F7 +Cyrillic_SOFTSIGN 1784 0x6F8 +Cyrillic_YERU 1785 0x6F9 +Cyrillic_ZE 1786 0x6FA +Cyrillic_SHA 1787 0x6FB +Cyrillic_E 1788 0x6FC +Cyrillic_SHCHA 1789 0x6FD +Cyrillic_CHE 1790 0x6FE +Cyrillic_HARDSIGN 1791 0x6FF +Greek_ALPHAaccent 1953 0x7A1 +Greek_EPSILONaccent 1954 0x7A2 +Greek_ETAaccent 1955 0x7A3 +Greek_IOTAaccent 1956 0x7A4 +Greek_IOTAdieresis 1957 0x7A5 +Greek_IOTAaccentdiaeresis 1958 0x7A6 +Greek_OMICRONaccent 1959 0x7A7 +Greek_UPSILONaccent 1960 0x7A8 +Greek_UPSILONdieresis 1961 0x7A9 +Greek_UPSILONaccentdieresis 1962 0x7AA +Greek_OMEGAaccent 1963 0x7AB +Greek_accentdieresis 1966 0x7AE +Greek_horizbar 1967 0x7AF +Greek_alphaaccent 1969 0x7B1 +Greek_epsilonaccent 1970 0x7B2 +Greek_etaaccent 1971 0x7B3 +Greek_iotaaccent 1972 0x7B4 +Greek_iotadieresis 1973 0x7B5 +Greek_iotaaccentdieresis 1974 0x7B6 +Greek_omicronaccent 1975 0x7B7 +Greek_upsilonaccent 1976 0x7B8 +Greek_upsilondieresis 1977 0x7B9 +Greek_upsilonaccentdieresis 1978 0x7BA +Greek_omegaaccent 1979 0x7BB +Greek_ALPHA 1985 0x7C1 +Greek_BETA 1986 0x7C2 +Greek_GAMMA 1987 0x7C3 +Greek_DELTA 1988 0x7C4 +Greek_EPSILON 1989 0x7C5 +Greek_ZETA 1990 0x7C6 +Greek_ETA 1991 0x7C7 +Greek_THETA 1992 0x7C8 +Greek_IOTA 1993 0x7C9 +Greek_KAPPA 1994 0x7CA +Greek_LAMDA 1995 0x7CB +Greek_MU 1996 0x7CC +Greek_NU 1997 0x7CD +Greek_XI 1998 0x7CE +Greek_OMICRON 1999 0x7CF +Greek_PI 2000 0x7D0 +Greek_RHO 2001 0x7D1 +Greek_SIGMA 2002 0x7D2 +Greek_TAU 2004 0x7D4 +Greek_UPSILON 2005 0x7D5 +Greek_PHI 2006 0x7D6 +Greek_CHI 2007 0x7D7 +Greek_PSI 2008 0x7D8 +Greek_OMEGA 2009 0x7D9 +Greek_alpha 2017 0x7E1 +Greek_beta 2018 0x7E2 +Greek_gamma 2019 0x7E3 +Greek_delta 2020 0x7E4 +Greek_epsilon 2021 0x7E5 +Greek_zeta 2022 0x7E6 +Greek_eta 2023 0x7E7 +Greek_theta 2024 0x7E8 +Greek_iota 2025 0x7E9 +Greek_kappa 2026 0x7EA +Greek_lamda 2027 0x7EB +Greek_mu 2028 0x7EC +Greek_nu 2029 0x7ED +Greek_xi 2030 0x7EE +Greek_omicron 2031 0x7EF +Greek_pi 2032 0x7F0 +Greek_rho 2033 0x7F1 +Greek_sigma 2034 0x7F2 +Greek_finalsmallsigma 2035 0x7F3 +Greek_tau 2036 0x7F4 +Greek_upsilon 2037 0x7F5 +Greek_phi 2038 0x7F6 +Greek_chi 2039 0x7F7 +Greek_psi 2040 0x7F8 +Greek_omega 2041 0x7F9 +leftradical 2209 0x8A1 +topleftradical 2210 0x8A2 +horizconnector 2211 0x8A3 +topintegral 2212 0x8A4 +botintegral 2213 0x8A5 +vertconnector 2214 0x8A6 +topleftsqbracket 2215 0x8A7 +botleftsqbracket 2216 0x8A8 +toprightsqbracket 2217 0x8A9 +botrightsqbracket 2218 0x8AA +topleftparens 2219 0x8AB +botleftparens 2220 0x8AC +toprightparens 2221 0x8AD +botrightparens 2222 0x8AE +leftmiddlecurlybrace 2223 0x8AF +rightmiddlecurlybrace 2224 0x8B0 +topleftsummation 2225 0x8B1 +botleftsummation 2226 0x8B2 +topvertsummationconnector 2227 0x8B3 +botvertsummationconnector 2228 0x8B4 +toprightsummation 2229 0x8B5 +botrightsummation 2230 0x8B6 +rightmiddlesummation 2231 0x8B7 .CE .CS -lessthanequal 2236 0x08bc -notequal 2237 0x08bd -greaterthanequal 2238 0x08be -integral 2239 0x08bf -therefore 2240 0x08c0 -variation 2241 0x08c1 -infinity 2242 0x08c2 -nabla 2245 0x08c5 -approximate 2248 0x08c8 -similarequal 2249 0x08c9 -ifonlyif 2253 0x08cd -implies 2254 0x08ce -identical 2255 0x08cf -radical 2262 0x08d6 -includedin 2266 0x08da -includes 2267 0x08db -intersection 2268 0x08dc -union 2269 0x08dd -logicaland 2270 0x08de -logicalor 2271 0x08df -partialderivative 2287 0x08ef -function 2294 0x08f6 -leftarrow 2299 0x08fb -uparrow 2300 0x08fc -rightarrow 2301 0x08fd -downarrow 2302 0x08fe -blank 2527 0x09df -soliddiamond 2528 0x09e0 -checkerboard 2529 0x09e1 -ht 2530 0x09e2 -ff 2531 0x09e3 -cr 2532 0x09e4 -lf 2533 0x09e5 -nl 2536 0x09e8 -vt 2537 0x09e9 -lowrightcorner 2538 0x09ea -uprightcorner 2539 0x09eb -upleftcorner 2540 0x09ec -lowleftcorner 2541 0x09ed -crossinglines 2542 0x09ee -horizlinescan1 2543 0x09ef -horizlinescan3 2544 0x09f0 -horizlinescan5 2545 0x09f1 -horizlinescan7 2546 0x09f2 -horizlinescan9 2547 0x09f3 -leftt 2548 0x09f4 -rightt 2549 0x09f5 -bott 2550 0x09f6 -topt 2551 0x09f7 -vertbar 2552 0x09f8 -emspace 2721 0x0aa1 -enspace 2722 0x0aa2 -em3space 2723 0x0aa3 -em4space 2724 0x0aa4 -digitspace 2725 0x0aa5 -punctspace 2726 0x0aa6 -thinspace 2727 0x0aa7 -hairspace 2728 0x0aa8 -emdash 2729 0x0aa9 -endash 2730 0x0aaa -signifblank 2732 0x0aac -ellipsis 2734 0x0aae -doubbaselinedot 2735 0x0aaf -onethird 2736 0x0ab0 -twothirds 2737 0x0ab1 -onefifth 2738 0x0ab2 -twofifths 2739 0x0ab3 -threefifths 2740 0x0ab4 -fourfifths 2741 0x0ab5 -onesixth 2742 0x0ab6 -fivesixths 2743 0x0ab7 -careof 2744 0x0ab8 -figdash 2747 0x0abb -leftanglebracket 2748 0x0abc -decimalpoint 2749 0x0abd -rightanglebracket 2750 0x0abe -marker 2751 0x0abf -oneeighth 2755 0x0ac3 -threeeighths 2756 0x0ac4 -fiveeighths 2757 0x0ac5 -seveneighths 2758 0x0ac6 -trademark 2761 0x0ac9 -signaturemark 2762 0x0aca -trademarkincircle 2763 0x0acb -leftopentriangle 2764 0x0acc -rightopentriangle 2765 0x0acd -emopencircle 2766 0x0ace -emopenrectangle 2767 0x0acf -leftsinglequotemark 2768 0x0ad0 -rightsinglequotemark 2769 0x0ad1 -leftdoublequotemark 2770 0x0ad2 -rightdoublequotemark 2771 0x0ad3 -prescription 2772 0x0ad4 -minutes 2774 0x0ad6 -seconds 2775 0x0ad7 -latincross 2777 0x0ad9 -hexagram 2778 0x0ada -filledrectbullet 2779 0x0adb -filledlefttribullet 2780 0x0adc -filledrighttribullet 2781 0x0add -emfilledcircle 2782 0x0ade -emfilledrect 2783 0x0adf -enopencircbullet 2784 0x0ae0 -enopensquarebullet 2785 0x0ae1 -openrectbullet 2786 0x0ae2 -opentribulletup 2787 0x0ae3 -opentribulletdown 2788 0x0ae4 -openstar 2789 0x0ae5 -enfilledcircbullet 2790 0x0ae6 -enfilledsqbullet 2791 0x0ae7 -filledtribulletup 2792 0x0ae8 -filledtribulletdown 2793 0x0ae9 -leftpointer 2794 0x0aea -rightpointer 2795 0x0aeb -club 2796 0x0aec -diamond 2797 0x0aed -heart 2798 0x0aee -maltesecross 2800 0x0af0 -dagger 2801 0x0af1 -doubledagger 2802 0x0af2 -checkmark 2803 0x0af3 -ballotcross 2804 0x0af4 -musicalsharp 2805 0x0af5 -musicalflat 2806 0x0af6 -malesymbol 2807 0x0af7 -femalesymbol 2808 0x0af8 -telephone 2809 0x0af9 -telephonerecorder 2810 0x0afa -phonographcopyright 2811 0x0afb -caret 2812 0x0afc -singlelowquotemark 2813 0x0afd -doublelowquotemark 2814 0x0afe -cursor 2815 0x0aff -leftcaret 2979 0x0ba3 -rightcaret 2982 0x0ba6 -downcaret 2984 0x0ba8 -upcaret 2985 0x0ba9 -overbar 3008 0x0bc0 -downtack 3010 0x0bc2 -upshoe 3011 0x0bc3 -downstile 3012 0x0bc4 -underbar 3014 0x0bc6 -jot 3018 0x0bca -quad 3020 0x0bcc -uptack 3022 0x0bce -circle 3023 0x0bcf -upstile 3027 0x0bd3 -downshoe 3030 0x0bd6 -rightshoe 3032 0x0bd8 -leftshoe 3034 0x0bda -lefttack 3036 0x0bdc -righttack 3068 0x0bfc -hebrew_aleph 3296 0x0ce0 -hebrew_beth 3297 0x0ce1 -hebrew_gimmel 3298 0x0ce2 -hebrew_daleth 3299 0x0ce3 -hebrew_he 3300 0x0ce4 -hebrew_waw 3301 0x0ce5 -hebrew_zayin 3302 0x0ce6 -hebrew_het 3303 0x0ce7 -hebrew_teth 3304 0x0ce8 -hebrew_yod 3305 0x0ce9 -hebrew_finalkaph 3306 0x0cea -hebrew_kaph 3307 0x0ceb -hebrew_lamed 3308 0x0cec -hebrew_finalmem 3309 0x0ced -hebrew_mem 3310 0x0cee -hebrew_finalnun 3311 0x0cef -hebrew_nun 3312 0x0cf0 -hebrew_samekh 3313 0x0cf1 -hebrew_ayin 3314 0x0cf2 -hebrew_finalpe 3315 0x0cf3 -hebrew_pe 3316 0x0cf4 -hebrew_finalzadi 3317 0x0cf5 -hebrew_zadi 3318 0x0cf6 -hebrew_kuf 3319 0x0cf7 -hebrew_resh 3320 0x0cf8 -hebrew_shin 3321 0x0cf9 -hebrew_taf 3322 0x0cfa -BackSpace 65288 0xff08 -Tab 65289 0xff09 -Linefeed 65290 0xff0a -Clear 65291 0xff0b -Return 65293 0xff0d -Pause 65299 0xff13 -Scroll_Lock 65300 0xff14 -Sys_Req 65301 0xff15 -Escape 65307 0xff1b -Multi_key 65312 0xff20 -Kanji 65313 0xff21 -Home 65360 0xff50 -Left 65361 0xff51 -Up 65362 0xff52 -Right 65363 0xff53 -Down 65364 0xff54 -Prior 65365 0xff55 -Next 65366 0xff56 -End 65367 0xff57 -Begin 65368 0xff58 -Win_L 65371 0xff5b -Win_R 65372 0xff5c +lessthanequal 2236 0x8BC +notequal 2237 0x8BD +greaterthanequal 2238 0x8BE +integral 2239 0x8BF +therefore 2240 0x8C0 +variation 2241 0x8C1 +infinity 2242 0x8C2 +nabla 2245 0x8C5 +approximate 2248 0x8C8 +similarequal 2249 0x8C9 +ifonlyif 2253 0x8CD +implies 2254 0x8CE +identical 2255 0x8CF +radical 2262 0x8D6 +includedin 2266 0x8DA +includes 2267 0x8DB +intersection 2268 0x8DC +union 2269 0x8DD +logicaland 2270 0x8DE +logicalor 2271 0x8DF +partialderivative 2287 0x8EF +function 2294 0x8F6 +leftarrow 2299 0x8FB +uparrow 2300 0x8FC +rightarrow 2301 0x8FD +downarrow 2302 0x8FE +blank 2527 0x9DF +soliddiamond 2528 0x9E0 +checkerboard 2529 0x9E1 +ht 2530 0x9E2 +ff 2531 0x9E3 +cr 2532 0x9E4 +lf 2533 0x9E5 +nl 2536 0x9E8 +vt 2537 0x9E9 +lowrightcorner 2538 0x9EA +uprightcorner 2539 0x9EB +upleftcorner 2540 0x9EC +lowleftcorner 2541 0x9ED +crossinglines 2542 0x9EE +horizlinescan1 2543 0x9EF +horizlinescan3 2544 0x9F0 +horizlinescan5 2545 0x9F1 +horizlinescan7 2546 0x9F2 +horizlinescan9 2547 0x9F3 +leftt 2548 0x9F4 +rightt 2549 0x9F5 +bott 2550 0x9F6 +topt 2551 0x9F7 +vertbar 2552 0x9F8 +emspace 2721 0xAA1 +enspace 2722 0xAA2 +em3space 2723 0xAA3 +em4space 2724 0xAA4 +digitspace 2725 0xAA5 +punctspace 2726 0xAA6 +thinspace 2727 0xAA7 +hairspace 2728 0xAA8 +emdash 2729 0xAA9 +endash 2730 0xAAA +signifblank 2732 0xAAC +ellipsis 2734 0xAAE +doubbaselinedot 2735 0xAAF +onethird 2736 0xAB0 +twothirds 2737 0xAB1 +onefifth 2738 0xAB2 +twofifths 2739 0xAB3 +threefifths 2740 0xAB4 +fourfifths 2741 0xAB5 +onesixth 2742 0xAB6 +fivesixths 2743 0xAB7 +careof 2744 0xAB8 +figdash 2747 0xABB +leftanglebracket 2748 0xABC +decimalpoint 2749 0xABD +rightanglebracket 2750 0xABE +marker 2751 0xABF +oneeighth 2755 0xAC3 +threeeighths 2756 0xAC4 +fiveeighths 2757 0xAC5 +seveneighths 2758 0xAC6 +trademark 2761 0xAC9 +signaturemark 2762 0xACA +trademarkincircle 2763 0xACB +leftopentriangle 2764 0xACC +rightopentriangle 2765 0xACD +emopencircle 2766 0xACE +emopenrectangle 2767 0xACF +leftsinglequotemark 2768 0xAD0 +rightsinglequotemark 2769 0xAD1 +leftdoublequotemark 2770 0xAD2 +rightdoublequotemark 2771 0xAD3 +prescription 2772 0xAD4 +minutes 2774 0xAD6 +seconds 2775 0xAD7 +latincross 2777 0xAD9 +hexagram 2778 0xADA +filledrectbullet 2779 0xADB +filledlefttribullet 2780 0xADC +filledrighttribullet 2781 0xADD +emfilledcircle 2782 0xADE +emfilledrect 2783 0xADF +enopencircbullet 2784 0xAE0 +enopensquarebullet 2785 0xAE1 +openrectbullet 2786 0xAE2 +opentribulletup 2787 0xAE3 +opentribulletdown 2788 0xAE4 +openstar 2789 0xAE5 +enfilledcircbullet 2790 0xAE6 +enfilledsqbullet 2791 0xAE7 +filledtribulletup 2792 0xAE8 +filledtribulletdown 2793 0xAE9 +leftpointer 2794 0xAEA +rightpointer 2795 0xAEB +club 2796 0xAEC +diamond 2797 0xAED +heart 2798 0xAEE +maltesecross 2800 0xAF0 +dagger 2801 0xAF1 +doubledagger 2802 0xAF2 +checkmark 2803 0xAF3 +ballotcross 2804 0xAF4 +musicalsharp 2805 0xAF5 +musicalflat 2806 0xAF6 +malesymbol 2807 0xAF7 +femalesymbol 2808 0xAF8 +telephone 2809 0xAF9 +telephonerecorder 2810 0xAFA +phonographcopyright 2811 0xAFB +caret 2812 0xAFC +singlelowquotemark 2813 0xAFD +doublelowquotemark 2814 0xAFE +cursor 2815 0xAFF +leftcaret 2979 0xBA3 +rightcaret 2982 0xBA6 +downcaret 2984 0xBA8 +upcaret 2985 0xBA9 +overbar 3008 0xBC0 +downtack 3010 0xBC2 +upshoe 3011 0xBC3 +downstile 3012 0xBC4 +underbar 3014 0xBC6 +jot 3018 0xBCA +quad 3020 0xBCC +uptack 3022 0xBCE +circle 3023 0xBCF +upstile 3027 0xBD3 +downshoe 3030 0xBD6 +rightshoe 3032 0xBD8 +leftshoe 3034 0xBDA +lefttack 3036 0xBDC +righttack 3068 0xBFC +hebrew_doublelowline 3295 0xCDF +hebrew_aleph 3296 0xCE0 +hebrew_bet 3297 0xCE1 +hebrew_gimel 3298 0xCE2 +hebrew_dalet 3299 0xCE3 +hebrew_he 3300 0xCE4 +hebrew_waw 3301 0xCE5 +hebrew_zain 3302 0xCE6 +hebrew_chet 3303 0xCE7 +hebrew_tet 3304 0xCE8 +hebrew_yod 3305 0xCE9 +hebrew_finalkaph 3306 0xCEA +hebrew_kaph 3307 0xCEB +hebrew_lamed 3308 0xCEC +hebrew_finalmem 3309 0xCED +hebrew_mem 3310 0xCEE +hebrew_finalnun 3311 0xCEF +hebrew_nun 3312 0xCF0 +hebrew_samech 3313 0xCF1 +hebrew_ayin 3314 0xCF2 +hebrew_finalpe 3315 0xCF3 +hebrew_pe 3316 0xCF4 +hebrew_finalzade 3317 0xCF5 +hebrew_zade 3318 0xCF6 +hebrew_qoph 3319 0xCF7 +hebrew_resh 3320 0xCF8 +hebrew_shin 3321 0xCF9 +hebrew_taw 3322 0xCFA +BackSpace 65288 0xFF08 +Tab 65289 0xFF09 +Linefeed 65290 0xFF0A +Clear 65291 0xFF0B +Return 65293 0xFF0D +Pause 65299 0xFF13 +Scroll_Lock 65300 0xFF14 +Sys_Req 65301 0xFF15 +Escape 65307 0xFF1B +Multi_key 65312 0xFF20 +Kanji 65313 0xFF21 +Muhenkan 65314 0xFF22 +Henkan_Mode 65315 0xFF23 +Romaji 65316 0xFF24 +Hiragana 65317 0xFF25 +Katakana 65318 0xFF26 +Hiragana_Katakana 65319 0xFF27 +Zenkaku 65320 0xFF28 +Hankaku 65321 0xFF29 +Zenkaku_Hankaku 65322 0xFF2A +Touroku 65323 0xFF2B +Massyo 65324 0xFF2C +Kana_Lock 65325 0xFF2D +Kana_Shift 65326 0xFF2E +Eisu_Shift 65327 0xFF2F +Eisu_toggle 65328 0xFF30 +Home 65360 0xFF50 +Left 65361 0xFF51 +Up 65362 0xFF52 +Right 65363 0xFF53 +Down 65364 0xFF54 +Prior 65365 0xFF55 +Next 65366 0xFF56 +End 65367 0xFF57 +Begin 65368 0xFF58 +Win_L 65371 0xFF5B +Win_R 65372 0xFF5C .CE .CS -App 65373 0xff5d -Select 65376 0xff60 -Print 65377 0xff61 -Execute 65378 0xff62 -Insert 65379 0xff63 -Undo 65381 0xff65 -Redo 65382 0xff66 -Menu 65383 0xff67 -Find 65384 0xff68 -Cancel 65385 0xff69 -Help 65386 0xff6a -Break 65387 0xff6b -Hebrew_switch 65406 0xff7e -Num_Lock 65407 0xff7f -KP_Space 65408 0xff80 -KP_Tab 65417 0xff89 -KP_Enter 65421 0xff8d -KP_F1 65425 0xff91 -KP_F2 65426 0xff92 -KP_F3 65427 0xff93 -KP_F4 65428 0xff94 -KP_Multiply 65450 0xffaa -KP_Add 65451 0xffab -KP_Separator 65452 0xffac -KP_Subtract 65453 0xffad -KP_Decimal 65454 0xffae -KP_Divide 65455 0xffaf -KP_0 65456 0xffb0 -KP_1 65457 0xffb1 -KP_2 65458 0xffb2 -KP_3 65459 0xffb3 -KP_4 65460 0xffb4 -KP_5 65461 0xffb5 -KP_6 65462 0xffb6 -KP_7 65463 0xffb7 -KP_8 65464 0xffb8 -KP_9 65465 0xffb9 -KP_Equal 65469 0xffbd -F1 65470 0xffbe -F2 65471 0xffbf -F3 65472 0xffc0 -F4 65473 0xffc1 -F5 65474 0xffc2 -F6 65475 0xffc3 -F7 65476 0xffc4 -F8 65477 0xffc5 -F9 65478 0xffc6 -F10 65479 0xffc7 -L1 65480 0xffc8 -L2 65481 0xffc9 -L3 65482 0xffca -L4 65483 0xffcb -L5 65484 0xffcc -L6 65485 0xffcd -L7 65486 0xffce -L8 65487 0xffcf -L9 65488 0xffd0 -L10 65489 0xffd1 -R1 65490 0xffd2 -R2 65491 0xffd3 -R3 65492 0xffd4 -R4 65493 0xffd5 -R5 65494 0xffd6 -R6 65495 0xffd7 -R7 65496 0xffd8 -R8 65497 0xffd9 -R9 65498 0xffda -R10 65499 0xffdb -R11 65500 0xffdc -R12 65501 0xffdd -F33 65502 0xffde -R14 65503 0xffdf -R15 65504 0xffe0 -Shift_L 65505 0xffe1 -Shift_R 65506 0xffe2 -Control_L 65507 0xffe3 -Control_R 65508 0xffe4 -Caps_Lock 65509 0xffe5 -Shift_Lock 65510 0xffe6 -Meta_L 65511 0xffe7 -Meta_R 65512 0xffe8 -Alt_L 65513 0xffe9 -Alt_R 65514 0xffea -Super_L 65515 0xffeb -Super_R 65516 0xffec -Hyper_L 65517 0xffed -Hyper_R 65518 0xffee -Delete 65535 0xffff +App 65373 0xFF5D +Select 65376 0xFF60 +Print 65377 0xFF61 +Execute 65378 0xFF62 +Insert 65379 0xFF63 +Undo 65381 0xFF65 +Redo 65382 0xFF66 +Menu 65383 0xFF67 +Find 65384 0xFF68 +Cancel 65385 0xFF69 +Help 65386 0xFF6A +Break 65387 0xFF6B +Mode_switch 65406 0xFF7E +Num_Lock 65407 0xFF7F +KP_Space 65408 0xFF80 +KP_Tab 65417 0xFF89 +KP_Enter 65421 0xFF8D +KP_F1 65425 0xFF91 +KP_F2 65426 0xFF92 +KP_F3 65427 0xFF93 +KP_F4 65428 0xFF94 +KP_Home 65429 0xFF95 +KP_Left 65430 0xFF96 +KP_Up 65431 0xFF97 +KP_Right 65432 0xFF98 +KP_Down 65433 0xFF99 +KP_Prior 65434 0xFF9A +KP_Next 65435 0xFF9B +KP_End 65436 0xFF9C +KP_Begin 65437 0xFF9D +KP_Insert 65438 0xFF9E +KP_Delete 65439 0xFF9F +KP_Multiply 65450 0xFFAA +KP_Add 65451 0xFFAB +KP_Separator 65452 0xFFAC +KP_Subtract 65453 0xFFAD +KP_Decimal 65454 0xFFAE +KP_Divide 65455 0xFFAF +KP_0 65456 0xFFB0 +KP_1 65457 0xFFB1 +KP_2 65458 0xFFB2 +KP_3 65459 0xFFB3 +KP_4 65460 0xFFB4 +KP_5 65461 0xFFB5 +KP_6 65462 0xFFB6 +KP_7 65463 0xFFB7 +KP_8 65464 0xFFB8 +KP_9 65465 0xFFB9 +KP_Equal 65469 0xFFBD +F1 65470 0xFFBE +F2 65471 0xFFBF +F3 65472 0xFFC0 +F4 65473 0xFFC1 +F5 65474 0xFFC2 +F6 65475 0xFFC3 +F7 65476 0xFFC4 +F8 65477 0xFFC5 +F9 65478 0xFFC6 +F10 65479 0xFFC7 +F11 65480 0xFFC8 +F12 65481 0xFFC9 +F13 65482 0xFFCA +F14 65483 0xFFCB +F15 65484 0xFFCC +F16 65485 0xFFCD +F17 65486 0xFFCE +F18 65487 0xFFCF +F19 65488 0xFFD0 +F20 65489 0xFFD1 +F21 65490 0xFFD2 +F22 65491 0xFFD3 +F23 65492 0xFFD4 +F24 65493 0xFFD5 +F25 65494 0xFFD6 +F26 65495 0xFFD7 +F27 65496 0xFFD8 +F28 65497 0xFFD9 +F29 65498 0xFFDA +F30 65499 0xFFDB +F31 65500 0xFFDC +F32 65501 0xFFDD +F33 65502 0xFFDE +F34 65503 0xFFDF +F35 65504 0xFFE0 +Shift_L 65505 0xFFE1 +Shift_R 65506 0xFFE2 +Control_L 65507 0xFFE3 +Control_R 65508 0xFFE4 +Caps_Lock 65509 0xFFE5 +Shift_Lock 65510 0xFFE6 +Meta_L 65511 0xFFE7 +Meta_R 65512 0xFFE8 +Alt_L 65513 0xFFE9 +Alt_R 65514 0xFFEA +Super_L 65515 0xFFEB +Super_R 65516 0xFFEC +Hyper_L 65517 0xFFED +Hyper_R 65518 0xFFEE +Delete 65535 0xFFFF XF86AudioLowerVolume 269025041 0x1008FF11 XF86AudioMute 269025042 0x1008FF12 XF86AudioRaiseVolume 269025043 0x1008FF13 diff --git a/doc/ttk_Geometry.3 b/doc/ttk_Geometry.3 index 61015c5..09d59e0 100644 --- a/doc/ttk_Geometry.3 +++ b/doc/ttk_Geometry.3 @@ -212,7 +212,7 @@ See \fBTk_GetPixelsFromObj(3)\fR for the syntax of length specifications. .PP \fBTtk_GetBorderFromObj\fR is the same as \fBTtk_GetPaddingFromObj\fR except that the lengths are specified as integers -(i.e., resolution-dependant values like \fI3m\fR are not allowed). +(i.e., resolution-dependent values like \fI3m\fR are not allowed). .PP \fBTtk_GetStickyFromObj\fR converts the string in \fIobjPtr\fR to a \fIsticky\fR bitmask. The string contains zero or more diff --git a/generic/ks_names.h b/generic/ks_names.h index e38c35c..3386ec0 100644 --- a/generic/ks_names.h +++ b/generic/ks_names.h @@ -332,6 +332,7 @@ { "Otilde", 0xD5 }, { "Odiaeresis", 0xD6 }, { "multiply", 0xD7 }, +{ "Oslash", 0xD8 }, { "Ooblique", 0xD8 }, { "Ugrave", 0xD9 }, { "Uacute", 0xDA }, @@ -464,8 +465,8 @@ { "itilde", 0x3B5 }, { "lcedilla", 0x3B6 }, { "emacron", 0x3BA }, -{ "gacute", 0x3BB }, { "gcedilla", 0x3BB }, +{ "gacute", 0x3BB }, { "tslash", 0x3BC }, { "ENG", 0x3BD }, { "eng", 0x3BF }, @@ -720,6 +721,7 @@ { "Greek_EPSILONaccent", 0x7A2 }, { "Greek_ETAaccent", 0x7A3 }, { "Greek_IOTAaccent", 0x7A4 }, +{ "Greek_IOTAdieresis", 0x7A5 }, { "Greek_IOTAdiaeresis", 0x7A5 }, { "Greek_IOTAaccentdiaeresis", 0x7A6 }, { "Greek_OMICRONaccent", 0x7A7 }, diff --git a/generic/tkUtil.c b/generic/tkUtil.c index 1942975..8e3e2ee 100644 --- a/generic/tkUtil.c +++ b/generic/tkUtil.c @@ -1244,8 +1244,8 @@ TkUtfToUniChar( * * TkUniCharToUtf -- * - * Almost the same as Tcl_UniCharToUtf but producing surrogates if - * TCL_UTF_MAX==3. So, up to 6 bytes might be produced. + * Almost the same as Tcl_UniCharToUtf but producing 4-byte UTF-8 + * sequences even when TCL_UTF_MAX==3. So, up to 4 bytes might be produced. * * Results: * *buf is filled with the UTF-8 string, and the return value is the @@ -1262,10 +1262,12 @@ int TkUniCharToUtf(int ch, char *buf) int size = Tcl_UniCharToUtf(ch, buf); if ((((unsigned)(ch - 0x10000) <= 0xFFFFF)) && (size < 4)) { /* Hey, this is wrong, we must be running TCL_UTF_MAX==3 - * The best thing we can do is spit out 2 surrogates */ - ch -= 0x10000; - size = Tcl_UniCharToUtf(((ch >> 10) | 0xd800), buf); - size += Tcl_UniCharToUtf(((ch & 0x3ff) | 0xdc00), buf+size); + * The best thing we can do is spit out a 4-byte UTF-8 character */ + buf[3] = (char) ((ch | 0x80) & 0xBF); + buf[2] = (char) (((ch >> 6) | 0x80) & 0xBF); + buf[1] = (char) (((ch >> 12) | 0x80) & 0xBF); + buf[0] = (char) ((ch >> 18) | 0xF0); + size = 4; } return size; } diff --git a/macosx/tkMacOSXFont.c b/macosx/tkMacOSXFont.c index fb71e85..e68b09f 100644 --- a/macosx/tkMacOSXFont.c +++ b/macosx/tkMacOSXFont.c @@ -343,7 +343,7 @@ CreateNamedSystemFont( * * This procedure is called when an application is created. It * initializes all the structures that are used by the - * platform-dependant code on a per application basis. + * platform-dependent code on a per application basis. * Note that this is called before TkpInit() ! * * Results: diff --git a/macosx/tkMacOSXMouseEvent.c b/macosx/tkMacOSXMouseEvent.c index 074e36e..84b5fa1 100644 --- a/macosx/tkMacOSXMouseEvent.c +++ b/macosx/tkMacOSXMouseEvent.c @@ -36,6 +36,7 @@ static unsigned int ButtonModifiers2State(UInt32 buttonState, enum { NSWindowWillMoveEventType = 20 }; + /* * In OS X 10.6 an NSEvent of type NSMouseMoved would always have a non-Nil * window attribute pointing to the active window. As of 10.8 this behavior @@ -58,6 +59,7 @@ enum { NSTrackingArea *trackingArea = nil; NSInteger eventNumber, clickCount, buttonNumber; #endif + [NSEvent stopPeriodicEvents]; #ifdef TK_MAC_DEBUG_EVENTS TKLog(@"-[%@(%p) %s] %@", [self class], self, _cmd, theEvent); @@ -143,15 +145,28 @@ enum { } /* - * If another toplevel has a grab, we ignore the event. + * Ignore the event if a local grab is in effect and the Tk event window is + * not in the grabber's subtree. */ grabWinPtr = winPtr->dispPtr->grabWinPtr; - if (grabWinPtr && - grabWinPtr != winPtr && - !winPtr->dispPtr->grabFlags && /* this means the grab is local. */ - grabWinPtr->mainPtr == winPtr->mainPtr) { - return theEvent; + if (grabWinPtr && /* There is a grab in effect ... */ + !winPtr->dispPtr->grabFlags && /* and it is a local grab ... */ + grabWinPtr->mainPtr == winPtr->mainPtr){ /* in the same application. */ + Tk_Window tkwin2, tkEventWindow = Tk_CoordsToWindow(global.x, global.y, tkwin); + if (!tkEventWindow) { + return theEvent; + } + for (tkwin2 = tkEventWindow; + !Tk_IsTopLevel(tkwin2); + tkwin2 = Tk_Parent(tkwin2)) { + if (tkwin2 == (Tk_Window) grabWinPtr) { + break; + } + } + if (tkwin2 != (Tk_Window) grabWinPtr) { + return theEvent; + } } /* @@ -225,6 +240,7 @@ enum { } if (eventType != NSScrollWheel) { + /* * For normal mouse events, Tk_UpdatePointer will send the XEvent. */ @@ -235,6 +251,7 @@ enum { #endif Tk_UpdatePointer(tkwin, global.x, global.y, state); } else { + /* * For scroll wheel events we need to send the XEvent here. */ @@ -499,7 +516,7 @@ TkGenerateButtonEventForXPointer( * TkGenerateButtonEvent -- * * Given a global x & y position and the button key status this procedure - * generates the appropiate X button event. It also handles the state + * generates the appropriate X button event. It also handles the state * changes needed to implement implicit grabs. * * Results: @@ -573,6 +590,7 @@ GenerateButtonEvent( TkDisplay *dispPtr; #if UNUSED + /* * ButtonDown events will always occur in the front window. ButtonUp * events, however, may occur anywhere on the screen. ButtonUp events @@ -605,30 +623,46 @@ TkpWarpPointer( TkDisplay *dispPtr) { CGPoint pt; - UInt32 buttonState; + NSPoint loc; + int wNum; if (dispPtr->warpWindow) { int x, y; - + TkWindow *winPtr = (TkWindow *) dispPtr->warpWindow; + TkWindow *topPtr = winPtr->privatePtr->toplevel->winPtr; + NSWindow *w = TkMacOSXDrawableWindow(winPtr->window); + wNum = [w windowNumber]; Tk_GetRootCoords(dispPtr->warpWindow, &x, &y); pt.x = x + dispPtr->warpX; pt.y = y + dispPtr->warpY; + loc.x = dispPtr->warpX; + loc.y = Tk_Height(topPtr) - dispPtr->warpY; } else { - pt.x = dispPtr->warpX; + wNum = 0; + pt.x = loc.x = dispPtr->warpX; pt.y = dispPtr->warpY; + loc.y = tkMacOSXZeroScreenHeight - pt.y; } /* - * Tell the OSX core to generate the events to make it happen. + * Generate an NSEvent of type NSMouseMoved. + * + * It is not clear why this is necessary. For example, calling + * event generate $w <Motion> -warp 1 -x $X -y $Y + * will cause two <Motion> events to be added to the Tcl queue. */ - buttonState = [NSEvent pressedMouseButtons]; - CGEventType type = kCGEventMouseMoved; - CGEventRef theEvent = CGEventCreateMouseEvent(NULL, type, pt, - buttonState); CGWarpMouseCursorPosition(pt); - CGEventPost(kCGHIDEventTap, theEvent); - CFRelease(theEvent); + NSEvent *warpEvent = [NSEvent mouseEventWithType:NSMouseMoved + location:loc + modifierFlags:0 + timestamp:GetCurrentEventTime() + windowNumber:wNum + context:nil + eventNumber:0 + clickCount:1 + pressure:0.0]; + [NSApp postEvent:warpEvent atStart:NO]; } /* @@ -656,6 +690,7 @@ TkpSetCapture( while (winPtr && !Tk_IsTopLevel(winPtr)) { winPtr = winPtr->parentPtr; } + [NSEvent stopPeriodicEvents]; captureWinPtr = (Tk_Window) winPtr; } diff --git a/macosx/tkMacOSXNotify.c b/macosx/tkMacOSXNotify.c index a4a87c6..afee942 100644 --- a/macosx/tkMacOSXNotify.c +++ b/macosx/tkMacOSXNotify.c @@ -311,17 +311,16 @@ TkMacOSXEventsSetupProc( if (currentEvent) { if (currentEvent.type > 0) { Tcl_SetMaxBlockTime(&zeroBlockTime); - if (havePeriodicEvents) { - [NSEvent stopPeriodicEvents]; - havePeriodicEvents = NO; - } + [NSEvent stopPeriodicEvents]; + havePeriodicEvents = NO; } } else if (!havePeriodicEvents){ /* * When the user is not generating events we schedule a "hearbeat" * event to fire every 0.1 seconds. This helps to make the vwait - * command more responsive when there is no user input. + * command more responsive when there is no user input, e.g. when + * running the test suite. */ havePeriodicEvents = YES; diff --git a/macosx/tkMacOSXTest.c b/macosx/tkMacOSXTest.c index f109b7a..09736e6 100644 --- a/macosx/tkMacOSXTest.c +++ b/macosx/tkMacOSXTest.c @@ -13,6 +13,7 @@ */ #include "tkMacOSXPrivate.h" +#include "tkMacOSXConstants.h" /* * Forward declarations of procedures defined later in this file: @@ -22,6 +23,8 @@ static int DebuggerObjCmd (ClientData dummy, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); #endif +static int PressButtonObjCmd (ClientData dummy, Tcl_Interp *interp, + int objc, Tcl_Obj *const objv[]); /* @@ -52,6 +55,7 @@ TkplatformtestInit( #if MAC_OS_X_VERSION_MAX_ALLOWED < 1080 Tcl_CreateObjCommand(interp, "debugger", DebuggerObjCmd, NULL, NULL); #endif + Tcl_CreateObjCommand(interp, "pressbutton", PressButtonObjCmd, NULL, NULL); return TCL_OK; } @@ -119,6 +123,102 @@ TkTestLogDisplay(void) { } } +/* + *---------------------------------------------------------------------- + * + * PressButtonObjCmd -- + * + * This Tcl command simulates a button press at a specific screen + * location. It injects NSEvents into the NSApplication event queue, + * as opposed to adding events to the Tcl queue as event generate + * would do. One application is for testing the grab command. + * + * Results: + * A standard Tcl result. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + + /* ARGSUSED */ +static int +PressButtonObjCmd( + ClientData clientData, + Tcl_Interp *interp, + int objc, + Tcl_Obj *const objv[]) +{ + int x, y, i, value, wNum; + CGPoint pt; + NSPoint loc; + NSEvent *motion, *press, *release; + NSArray *screens = [NSScreen screens]; + CGFloat ScreenHeight = 0; + enum {X=1, Y}; + + if (screens && [screens count]) { + ScreenHeight = [[screens objectAtIndex:0] frame].size.height; + } + + if (objc != 3) { + Tcl_WrongNumArgs(interp, 1, objv, "x y"); + return TCL_ERROR; + } + for (i = 1; i < objc; i++) { + if (Tcl_GetIntFromObj(interp,objv[i],&value) != TCL_OK) { + return TCL_ERROR; + } + switch (i) { + case X: + x = value; + break; + case Y: + y = value; + break; + default: + break; + } + } + pt.x = loc.x = x; + pt.y = y; + loc.y = ScreenHeight - y; + wNum = 0; + CGWarpMouseCursorPosition(pt); + motion = [NSEvent mouseEventWithType:NSMouseMoved + location:loc + modifierFlags:0 + timestamp:GetCurrentEventTime() + windowNumber:wNum + context:nil + eventNumber:0 + clickCount:1 + pressure:0.0]; + [NSApp postEvent:motion atStart:NO]; + press = [NSEvent mouseEventWithType:NSLeftMouseDown + location:loc + modifierFlags:0 + timestamp:GetCurrentEventTime() + windowNumber:wNum + context:nil + eventNumber:1 + clickCount:1 + pressure:0.0]; + [NSApp postEvent:press atStart:NO]; + release = [NSEvent mouseEventWithType:NSLeftMouseUp + location:loc + modifierFlags:0 + timestamp:GetCurrentEventTime() + windowNumber:wNum + context:nil + eventNumber:2 + clickCount:1 + pressure:0.0]; + [NSApp postEvent:release atStart:NO]; + return TCL_OK; +} + /* * Local Variables: diff --git a/tests/bind.test b/tests/bind.test index a991f01..e7b3db3 100644 --- a/tests/bind.test +++ b/tests/bind.test @@ -5918,13 +5918,34 @@ test bind-28.8 {keysym names} -setup { } -cleanup { destroy .t.f } -result {X x {keysym X}} -test bind-28.9 {keysym names, deprecated X11 names (e.g. "Eth") are translated into non-deprecated version (like "ETH")} -body { +test bind-28.9 {keysym names, Eth -> ETH} -body { frame .t.f -class Test -width 150 -height 100 bind .t.f <Eth> foo bind .t.f } -cleanup { destroy .t.f } -result {<Key-ETH>} +test bind-28.10 {keysym names, Ooblique -> Oslash} -body { + frame .t.f -class Test -width 150 -height 100 + bind .t.f <Ooblique> foo + bind .t.f +} -cleanup { + destroy .t.f +} -result {<Key-Oslash>} +test bind-28.11 {keysym names, gcedilla} -body { + frame .t.f -class Test -width 150 -height 100 + bind .t.f <gcedilla> foo + bind .t.f +} -cleanup { + destroy .t.f +} -result {<Key-gcedilla>} +test bind-28.12 {keysym names, Greek_IOTAdiaeresis -> Greek_IOTAdieresis} -body { + frame .t.f -class Test -width 150 -height 100 + bind .t.f <Greek_IOTAdiaeresis> foo + bind .t.f +} -cleanup { + destroy .t.f +} -result {<Key-Greek_IOTAdieresis>} test bind-29.1 {Tcl_BackgroundError procedure} -setup { diff --git a/tests/canvImg.test b/tests/canvImg.test index aa6781d..ea4aa3a 100644 --- a/tests/canvImg.test +++ b/tests/canvImg.test @@ -166,12 +166,12 @@ test canvImg-4.2 {ConfigureImage procedure} -constraints testImageType -setup { update set x {} set y {} - set timer [after 300 {lappend y "timeout"}] + set timer [after 300 {lappend y "timed out"}] .c itemconfigure i1 -image foo2 update idletasks update # On MacOS we need to wait for the test image display procedure to run. - while {"timeout" ni $y && [lindex $y end 1] ne "display"} { + while {"timed out" ni $y && [lindex $y end 1] ne "display"} { vwait y } after cancel timer @@ -741,9 +741,10 @@ test canvImg-10.1 {TranslateImage procedure} -constraints testImageType -setup { .c create image 50 100 -image foo -tags image -anchor nw update set x {} + set timer [after 500 {lappend x "timed out"}] foo changed 2 4 6 8 30 15 - # macOS Catalina needs a delay here. - after 20 + vwait x + after cancel $timer update return $x } -cleanup { @@ -759,9 +760,10 @@ test canvImg-11.1 {TranslateImage procedure} -constraints testImageType -setup { .c create image 50 100 -image foo -tags image -anchor nw update set x {} + set timer [after 500 {lappend x "timed out"}] foo changed 2 4 6 8 40 50 - # macOS Catalina needs a delay here. - after 20 + vwait x + after cancel $timer update return $x } -cleanup { @@ -799,14 +801,14 @@ test canvImg-11.3 {ImageChangedProc procedure} -constraints { image create test foo2 -variable y foo changed 0 0 0 0 40 50 foo2 changed 0 0 0 0 80 60 - .c create image 50 100 -image foo -tags image -anchor nw .c create image 70 110 -image foo2 -anchor nw update set y {} + set timer [after 500 {lappend y "timed out"}] image create test foo -variable x - # macOS Catalina needs a delay here. - after 20 + vwait x + after cancel $timer update return $y } -cleanup { diff --git a/tests/grab.test b/tests/grab.test index 33399cb..653d756 100644 --- a/tests/grab.test +++ b/tests/grab.test @@ -12,10 +12,14 @@ eval tcltest::configure $argv tcltest::loadTestedCommands namespace import -force tcltest::test -# There's currently no way to test the actual grab effect, per se, -# in an automated test. Therefore, this test suite only covers the -# interface to the grab command (ie, error messages, etc.) +# The macOS test module includes the pressbutton command to simulate a +# mouse button press event by injecting events into the NSApplication +# event queue. On other platforms there is currently no way to test +# the actual grab effect, per se, in an automated test. Therefore, +# this test suite only covers the interface to the grab command (ie, +# error messages, etc.) on platforms other than macOS. +testConstraint pressbutton [llength [info commands pressbutton]] test grab-1.1 {Tk_GrabObjCmd} -body { grab @@ -182,6 +186,32 @@ test grab-5.2 {Tk_GrabObjCmd, grab set} -body { grab release . } -result {. global} +test grab-6.1 {local grab on child window} -constraints { + pressbutton +} -body { + wm geometry . 100x200+200+100 + set result {} + frame .f -background red -padx 10 -pady 10 -height 100 -width 80 + bind . <Button-1> {lappend result "outside"} + bind .f <Button-1> {lappend result "inside"} + pack .f + update idletasks + pressbutton 250 150 + update + lappend result ":" + pressbutton 250 250 + update + lappend result ":" + grab set .f + pressbutton 250 150 + update + lappend result ":" + pressbutton 250 250 + update + return $result +} -cleanup { + grab release .f +} -result {inside outside : outside : inside outside :} cleanupTests return diff --git a/win/tkWinPointer.c b/win/tkWinPointer.c index 896500c..2b8656b 100644 --- a/win/tkWinPointer.c +++ b/win/tkWinPointer.c @@ -362,10 +362,12 @@ void TkSetCursorPos( int y) { INPUT input; + unsigned xscreen = (GetSystemMetrics(SM_CXSCREEN) - 1); + unsigned yscreen = (GetSystemMetrics(SM_CYSCREEN) - 1); input.type = INPUT_MOUSE; - input.mi.dx = x * (65535.0 / (GetSystemMetrics(SM_CXSCREEN) - 1)); - input.mi.dy = y * (65535.0 / (GetSystemMetrics(SM_CYSCREEN) - 1)); + input.mi.dx = (x * 65535 + xscreen/2) / xscreen; + input.mi.dy = (y * 65535 + yscreen/2) / yscreen; input.mi.mouseData = 0; input.mi.dwFlags = MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE; input.mi.time = 0; diff --git a/xlib/X11/keysymdef.h b/xlib/X11/keysymdef.h index a7c654d..460c72d 100644 --- a/xlib/X11/keysymdef.h +++ b/xlib/X11/keysymdef.h @@ -397,6 +397,7 @@ SOFTWARE. #define XK_Otilde 0x0d5 #define XK_Odiaeresis 0x0d6 #define XK_multiply 0x0d7 +#define XK_Oslash 0x0d8 #define XK_Ooblique 0x0d8 #define XK_Ugrave 0x0d9 #define XK_Uacute 0x0da @@ -840,6 +841,7 @@ SOFTWARE. #define XK_Greek_EPSILONaccent 0x7a2 #define XK_Greek_ETAaccent 0x7a3 #define XK_Greek_IOTAaccent 0x7a4 +#define XK_Greek_IOTAdieresis 0x7a5 #define XK_Greek_IOTAdiaeresis 0x7a5 #define XK_Greek_OMICRONaccent 0x7a7 #define XK_Greek_UPSILONaccent 0x7a8 |