tables.c 79 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912
  1. /******************************************************************************
  2. * This file is part of TinTin++ *
  3. * *
  4. * Copyright 2004-2019 Igor van den Hoven *
  5. * *
  6. * TinTin++ is free software; you can redistribute it and/or modify *
  7. * it under the terms of the GNU General Public License as published by *
  8. * the Free Software Foundation; either version 3 of the License, or *
  9. * (at your option) any later version. *
  10. * *
  11. * This program is distributed in the hope that it will be useful, *
  12. * but WITHOUT ANY WARRANTY; without even the implied warranty of *
  13. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
  14. * GNU General Public License for more details. *
  15. * *
  16. * *
  17. * You should have received a copy of the GNU General Public License *
  18. * along with TinTin++. If not, see https://www.gnu.org/licenses. *
  19. ******************************************************************************/
  20. /******************************************************************************
  21. * (T)he K(I)cki(N) (T)ickin D(I)kumud Clie(N)t *
  22. * *
  23. * coded by Igor van den Hoven 2004 *
  24. ******************************************************************************/
  25. #include "tintin.h"
  26. #include "telnet.h"
  27. struct command_type command_table[] =
  28. {
  29. { "action", do_action, TOKEN_TYPE_COMMAND },
  30. { "advertise", do_advertise, TOKEN_TYPE_COMMAND },
  31. { "alias", do_alias, TOKEN_TYPE_COMMAND },
  32. { "all", do_all, TOKEN_TYPE_COMMAND },
  33. { "bell", do_bell, TOKEN_TYPE_COMMAND },
  34. { "break", do_nop, TOKEN_TYPE_BREAK },
  35. { "buffer", do_buffer, TOKEN_TYPE_COMMAND },
  36. { "button", do_button, TOKEN_TYPE_COMMAND },
  37. { "case", do_nop, TOKEN_TYPE_CASE },
  38. { "chat", do_chat, TOKEN_TYPE_COMMAND },
  39. { "class", do_class, TOKEN_TYPE_COMMAND },
  40. { "commands", do_commands, TOKEN_TYPE_COMMAND },
  41. { "config", do_configure, TOKEN_TYPE_COMMAND },
  42. { "continue", do_nop, TOKEN_TYPE_CONTINUE},
  43. { "cr", do_cr, TOKEN_TYPE_COMMAND },
  44. { "cursor", do_cursor, TOKEN_TYPE_COMMAND },
  45. { "debug", do_debug, TOKEN_TYPE_COMMAND },
  46. { "default", do_nop, TOKEN_TYPE_DEFAULT },
  47. { "delay", do_delay, TOKEN_TYPE_COMMAND },
  48. { "draw", do_draw, TOKEN_TYPE_COMMAND },
  49. { "echo", do_echo, TOKEN_TYPE_COMMAND },
  50. { "else", do_nop, TOKEN_TYPE_ELSE },
  51. { "elseif", do_nop, TOKEN_TYPE_ELSEIF },
  52. { "end", do_end, TOKEN_TYPE_COMMAND },
  53. { "event", do_event, TOKEN_TYPE_COMMAND },
  54. { "forall", do_forall, TOKEN_TYPE_COMMAND },
  55. { "foreach", do_nop, TOKEN_TYPE_FOREACH },
  56. { "format", do_format, TOKEN_TYPE_COMMAND },
  57. { "function", do_function, TOKEN_TYPE_COMMAND },
  58. { "gag", do_gag, TOKEN_TYPE_COMMAND },
  59. { "grep", do_grep, TOKEN_TYPE_COMMAND },
  60. { "help", do_help, TOKEN_TYPE_COMMAND },
  61. { "highlight", do_highlight, TOKEN_TYPE_COMMAND },
  62. { "history", do_history, TOKEN_TYPE_COMMAND },
  63. { "if", do_nop, TOKEN_TYPE_IF },
  64. { "ignore", do_ignore, TOKEN_TYPE_COMMAND },
  65. { "info", do_info, TOKEN_TYPE_COMMAND },
  66. { "killall", do_kill, TOKEN_TYPE_COMMAND },
  67. { "line", do_line, TOKEN_TYPE_COMMAND },
  68. { "list", do_list, TOKEN_TYPE_COMMAND },
  69. { "local", do_local, TOKEN_TYPE_COMMAND },
  70. { "log", do_log, TOKEN_TYPE_COMMAND },
  71. { "loop", do_nop, TOKEN_TYPE_LOOP },
  72. { "macro", do_macro, TOKEN_TYPE_COMMAND },
  73. { "map", do_map, TOKEN_TYPE_COMMAND },
  74. { "math", do_math, TOKEN_TYPE_COMMAND },
  75. { "message", do_message, TOKEN_TYPE_COMMAND },
  76. { "nop", do_nop, TOKEN_TYPE_COMMAND },
  77. { "parse", do_nop, TOKEN_TYPE_PARSE },
  78. { "path", do_path, TOKEN_TYPE_COMMAND },
  79. { "pathdir", do_pathdir, TOKEN_TYPE_COMMAND },
  80. { "port", do_port, TOKEN_TYPE_COMMAND },
  81. { "prompt", do_prompt, TOKEN_TYPE_COMMAND },
  82. { "read", do_read, TOKEN_TYPE_COMMAND },
  83. { "regexp", do_regexp, TOKEN_TYPE_REGEX },
  84. { "replace", do_replace, TOKEN_TYPE_COMMAND },
  85. { "return", do_nop, TOKEN_TYPE_RETURN },
  86. { "run", do_run, TOKEN_TYPE_COMMAND },
  87. { "scan", do_scan, TOKEN_TYPE_COMMAND },
  88. { "screen", do_screen, TOKEN_TYPE_COMMAND },
  89. { "script", do_script, TOKEN_TYPE_COMMAND },
  90. { "send", do_send, TOKEN_TYPE_COMMAND },
  91. { "session", do_session, TOKEN_TYPE_COMMAND },
  92. { "showme", do_showme, TOKEN_TYPE_COMMAND },
  93. { "snoop", do_snoop, TOKEN_TYPE_COMMAND },
  94. { "split", do_split, TOKEN_TYPE_COMMAND },
  95. { "ssl", do_ssl, TOKEN_TYPE_COMMAND },
  96. { "substitute", do_substitute, TOKEN_TYPE_COMMAND },
  97. { "switch", do_nop, TOKEN_TYPE_SWITCH },
  98. { "system", do_system, TOKEN_TYPE_COMMAND },
  99. { "tab", do_tab, TOKEN_TYPE_COMMAND },
  100. { "test", do_test, TOKEN_TYPE_COMMAND },
  101. { "textin", do_textin, TOKEN_TYPE_COMMAND },
  102. { "ticker", do_tick, TOKEN_TYPE_COMMAND },
  103. { "unaction", do_unaction, TOKEN_TYPE_COMMAND },
  104. { "unalias", do_unalias, TOKEN_TYPE_COMMAND },
  105. { "unbutton", do_unbutton, TOKEN_TYPE_COMMAND },
  106. { "undelay", do_undelay, TOKEN_TYPE_COMMAND },
  107. { "unevent", do_unevent, TOKEN_TYPE_COMMAND },
  108. { "unfunction", do_unfunction, TOKEN_TYPE_COMMAND },
  109. { "ungag", do_ungag, TOKEN_TYPE_COMMAND },
  110. { "unhighlight", do_unhighlight, TOKEN_TYPE_COMMAND },
  111. { "unmacro", do_unmacro, TOKEN_TYPE_COMMAND },
  112. { "unpathdir", do_unpathdir, TOKEN_TYPE_COMMAND },
  113. { "unprompt", do_unprompt, TOKEN_TYPE_COMMAND },
  114. { "unsplit", do_unsplit, TOKEN_TYPE_COMMAND },
  115. { "unsubstitute", do_unsubstitute, TOKEN_TYPE_COMMAND },
  116. { "untab", do_untab, TOKEN_TYPE_COMMAND },
  117. { "unticker", do_untick, TOKEN_TYPE_COMMAND },
  118. { "unvariable", do_unvariable, TOKEN_TYPE_COMMAND },
  119. { "variable", do_variable, TOKEN_TYPE_COMMAND },
  120. { "while", do_nop, TOKEN_TYPE_WHILE },
  121. { "write", do_write, TOKEN_TYPE_COMMAND },
  122. { "zap", do_zap, TOKEN_TYPE_COMMAND },
  123. { "", NULL, TOKEN_TYPE_COMMAND }
  124. };
  125. struct list_type list_table[LIST_MAX] =
  126. {
  127. { "ACTION", "ACTIONS", SORT_PRIORITY, 3, LIST_FLAG_MESSAGE|LIST_FLAG_READ|LIST_FLAG_WRITE|LIST_FLAG_CLASS|LIST_FLAG_INHERIT|LIST_FLAG_REGEX|LIST_FLAG_PRIORITY },
  128. { "ALIAS", "ALIASES", SORT_PRIORITY, 3, LIST_FLAG_MESSAGE|LIST_FLAG_READ|LIST_FLAG_WRITE|LIST_FLAG_CLASS|LIST_FLAG_INHERIT|LIST_FLAG_REGEX|LIST_FLAG_PRIORITY },
  129. { "BUTTON", "BUTTONS", SORT_PRIORITY, 3, LIST_FLAG_MESSAGE|LIST_FLAG_READ|LIST_FLAG_WRITE|LIST_FLAG_CLASS|LIST_FLAG_INHERIT|LIST_FLAG_PRIORITY },
  130. { "CLASS", "CLASSES", SORT_PRIORITY, 2, LIST_FLAG_MESSAGE|LIST_FLAG_READ|LIST_FLAG_INHERIT },
  131. { "COMMAND", "COMMANDS", SORT_APPEND, 1, LIST_FLAG_MESSAGE },
  132. { "CONFIG", "CONFIGURATIONS", SORT_ALPHA, 2, LIST_FLAG_MESSAGE|LIST_FLAG_READ|LIST_FLAG_WRITE|LIST_FLAG_INHERIT },
  133. { "DELAY", "DELAYS", SORT_DELAY, 3, LIST_FLAG_MESSAGE|LIST_FLAG_READ },
  134. { "EVENT", "EVENTS", SORT_ALPHA, 2, LIST_FLAG_MESSAGE|LIST_FLAG_READ|LIST_FLAG_WRITE|LIST_FLAG_CLASS|LIST_FLAG_INHERIT },
  135. { "FUNCTION", "FUNCTIONS", SORT_ALPHA, 2, LIST_FLAG_MESSAGE|LIST_FLAG_READ|LIST_FLAG_WRITE|LIST_FLAG_CLASS|LIST_FLAG_INHERIT },
  136. { "GAG", "GAGS", SORT_ALPHA, 1, LIST_FLAG_MESSAGE|LIST_FLAG_READ|LIST_FLAG_WRITE|LIST_FLAG_CLASS|LIST_FLAG_INHERIT },
  137. { "HIGHLIGHT", "HIGHLIGHTS", SORT_PRIORITY, 3, LIST_FLAG_MESSAGE|LIST_FLAG_READ|LIST_FLAG_WRITE|LIST_FLAG_CLASS|LIST_FLAG_INHERIT|LIST_FLAG_REGEX|LIST_FLAG_PRIORITY },
  138. { "HISTORY", "HISTORIES", SORT_APPEND, 1, LIST_FLAG_MESSAGE },
  139. { "MACRO", "MACROS", SORT_ALPHA, 2, LIST_FLAG_MESSAGE|LIST_FLAG_READ|LIST_FLAG_WRITE|LIST_FLAG_CLASS|LIST_FLAG_INHERIT },
  140. { "PATH", "PATHS", SORT_APPEND, 2, LIST_FLAG_MESSAGE },
  141. { "PATHDIR", "PATHDIRS", SORT_ALPHA, 3, LIST_FLAG_MESSAGE|LIST_FLAG_READ|LIST_FLAG_WRITE|LIST_FLAG_CLASS|LIST_FLAG_INHERIT },
  142. { "PROMPT", "PROMPTS", SORT_PRIORITY, 4, LIST_FLAG_MESSAGE|LIST_FLAG_READ|LIST_FLAG_WRITE|LIST_FLAG_CLASS|LIST_FLAG_INHERIT|LIST_FLAG_REGEX|LIST_FLAG_PRIORITY },
  143. { "SUBSTITUTE", "SUBSTITUTES", SORT_PRIORITY, 3, LIST_FLAG_MESSAGE|LIST_FLAG_READ|LIST_FLAG_WRITE|LIST_FLAG_CLASS|LIST_FLAG_INHERIT|LIST_FLAG_REGEX|LIST_FLAG_PRIORITY },
  144. { "TAB", "TABS", SORT_ALPHA, 1, LIST_FLAG_MESSAGE|LIST_FLAG_READ|LIST_FLAG_WRITE|LIST_FLAG_CLASS|LIST_FLAG_INHERIT },
  145. { "TICKER", "TICKERS", SORT_ALPHA, 3, LIST_FLAG_MESSAGE|LIST_FLAG_READ|LIST_FLAG_WRITE|LIST_FLAG_CLASS|LIST_FLAG_INHERIT },
  146. { "VARIABLE", "VARIABLES", SORT_ALPHA, 2, LIST_FLAG_MESSAGE|LIST_FLAG_READ|LIST_FLAG_WRITE|LIST_FLAG_CLASS|LIST_FLAG_INHERIT|LIST_FLAG_NEST }
  147. };
  148. struct substitution_type substitution_table[] =
  149. {
  150. { "ARGUMENTS", 1 },
  151. { "VARIABLES", 2 },
  152. { "FUNCTIONS", 4 },
  153. { "COLORS", 8 },
  154. { "ESCAPES", 16 },
  155. // { "COMMANDS", 32 },
  156. { "SECURE", 64 },
  157. { "EOL", 128 },
  158. { "LNF", 256 },
  159. // { "FIX", 512 },
  160. { "COMPRESS", 1024 },
  161. { "", 0 }
  162. };
  163. struct config_type config_table[] =
  164. {
  165. {
  166. "AUTO TAB",
  167. "",
  168. "Scroll back buffer lines used for tab completion",
  169. config_autotab
  170. },
  171. {
  172. "BUFFER SIZE",
  173. "",
  174. "The size of the scroll back buffer",
  175. config_buffersize
  176. },
  177. {
  178. "CHARSET",
  179. "",
  180. "The character set encoding used by TinTin++",
  181. config_charset
  182. },
  183. {
  184. "CHILD LOCK",
  185. "TinTin++ is child locked.",
  186. "TinTin++ is not child locked.",
  187. config_childlock
  188. },
  189. {
  190. "COLOR MODE",
  191. "",
  192. "The color code encoding used by TinTin++",
  193. config_colormode
  194. },
  195. {
  196. "COLOR PATCH",
  197. "TinTin++ will properly color the start of each line",
  198. "TinTin++ will leave color handling to the server",
  199. config_colorpatch
  200. },
  201. {
  202. "COMMAND COLOR",
  203. "",
  204. "The color of echoed commands",
  205. config_commandcolor
  206. },
  207. {
  208. "COMMAND ECHO",
  209. "Your commands are echoed in split mode",
  210. "Your commands are not echoed in split mode",
  211. config_commandecho
  212. },
  213. {
  214. "CONNECT RETRY",
  215. "",
  216. "Seconds TinTin++ sessions try to connect on failure",
  217. config_connectretry
  218. },
  219. {
  220. "CONVERT META",
  221. "TinTin++ converts meta prefixed characters",
  222. "TinTin++ doesn't convert meta prefixed characters",
  223. config_convertmeta
  224. },
  225. {
  226. "DEBUG TELNET",
  227. "You see telnet negotiations",
  228. "You do not see telnet negotatiations",
  229. config_debugtelnet
  230. },
  231. {
  232. "HISTORY SIZE",
  233. "",
  234. "The size of the command history",
  235. config_historysize
  236. },
  237. {
  238. "INHERITANCE",
  239. "The startup session is inherited",
  240. "The startup session is not inherited",
  241. config_inheritance
  242. },
  243. {
  244. "LOG MODE",
  245. "",
  246. "The data type mode of log files",
  247. config_logmode
  248. },
  249. {
  250. "LOG LEVEL",
  251. "TinTin++ only logs low level mud data",
  252. "TinTin++ only logs high level mud data",
  253. config_loglevel
  254. },
  255. {
  256. "MCCP",
  257. "MCCP is enabled.",
  258. "MCCP is disabled.",
  259. config_mccp
  260. },
  261. {
  262. "MOUSE TRACKING",
  263. "Your terminal generates mouse events.",
  264. "Your terminal does not generate mouse events.",
  265. config_mousetracking
  266. },
  267. {
  268. "PACKET PATCH",
  269. "",
  270. "Seconds TinTin++ will try to patch broken packets",
  271. config_packetpatch
  272. },
  273. {
  274. "RANDOM SEED",
  275. "",
  276. "Seed value used for the random number engine",
  277. config_randomseed
  278. },
  279. {
  280. "REPEAT ENTER",
  281. "You send the last command on an enter",
  282. "You send a carriage return on an enter",
  283. config_repeatenter
  284. },
  285. {
  286. "REPEAT CHAR",
  287. "",
  288. "The character used for repeating commands",
  289. config_repeatchar
  290. },
  291. {
  292. "SCREEN READER",
  293. "You are using a screen reader",
  294. "You are not using a screen reader",
  295. config_screenreader
  296. },
  297. {
  298. "SCROLL LOCK",
  299. "You do not see mud output while scrolling",
  300. "You see mud output while scrolling",
  301. config_scrolllock
  302. },
  303. {
  304. "SPEEDWALK",
  305. "Your input is scanned for speedwalk directions",
  306. "Your input is not scanned for speedwalk directions",
  307. config_speedwalk
  308. },
  309. {
  310. "TELNET",
  311. "TELNET support is enabled.",
  312. "TELNET support is disabled.",
  313. config_telnet
  314. },
  315. {
  316. "TINTIN CHAR",
  317. "",
  318. "The character used for TinTin++ commands",
  319. config_tintinchar
  320. },
  321. {
  322. "VERBATIM",
  323. "Your keyboard input isn't modified by TinTin++",
  324. "Your keyboard input is parsed by TinTin++",
  325. config_verbatim
  326. },
  327. {
  328. "VERBATIM CHAR",
  329. "",
  330. "The character used for unparsed text",
  331. config_verbatimchar
  332. },
  333. {
  334. "VERBOSE",
  335. "Messages while reading in a script file are echoed",
  336. "Messages while reading in a script file are gagged",
  337. config_verbose
  338. },
  339. {
  340. "WORDWRAP",
  341. "Mud output is word wrapped",
  342. "Mud output is line wrapped",
  343. config_wordwrap
  344. },
  345. {
  346. "",
  347. "",
  348. 0,
  349. 0
  350. }
  351. };
  352. struct color_type color_table[] =
  353. {
  354. { "azure", "<abd>" },
  355. { "ebony", "<g04>" },
  356. { "jade", "<adb>" },
  357. { "lime", "<bda>" },
  358. { "orange", "<dba>" },
  359. { "pink", "<dab>" },
  360. { "silver", "<ccc>" },
  361. { "tan", "<cba>" },
  362. { "violet", "<bad>" },
  363. { "light azure", "<acf>" },
  364. { "light ebony", "<bbb>" },
  365. { "light jade", "<afc>" },
  366. { "light lime", "<cfa>" },
  367. { "light orange", "<fca>" },
  368. { "light pink", "<fac>" },
  369. { "light silver", "<eee>" },
  370. { "light tan", "<eda>" },
  371. { "light violet", "<caf>" },
  372. { "reset", "<088>" },
  373. { "light", "<188>" },
  374. { "bold", "<188>" },
  375. { "faint", "<288>" },
  376. { "dim", "<288>" },
  377. { "dark", "<288>" },
  378. { "underscore", "<488>" },
  379. { "blink", "<588>" },
  380. { "reverse", "<788>" },
  381. { "no-underscore", "\e[24m"},
  382. { "no-blink", "\e[25m"},
  383. { "no-reverse", "\e[27m"},
  384. { "black", "<808>" },
  385. { "red", "<818>" },
  386. { "green", "<828>" },
  387. { "yellow", "<838>" },
  388. { "blue", "<848>" },
  389. { "magenta", "<858>" },
  390. { "cyan", "<868>" },
  391. { "white", "<878>" },
  392. { "b black", "<880>" },
  393. { "b red", "<881>" },
  394. { "b green", "<882>" },
  395. { "b yellow", "<883>" },
  396. { "b blue", "<884>" },
  397. { "b magenta", "<885>" },
  398. { "b cyan", "<886>" },
  399. { "b white", "<887>" },
  400. { "b azure", "<ABD>" },
  401. { "b ebony", "<G04>" },
  402. { "b jade", "<ADB>" },
  403. { "b lime", "<BDA>" },
  404. { "b orange", "<DBA>" },
  405. { "b pink", "<DAB>" },
  406. { "b silver", "<CCC>" },
  407. { "b tan", "<CBA>" },
  408. { "b violet", "<BAD>" },
  409. { "", "<888>" }
  410. };
  411. struct color_type map_color_table[] =
  412. {
  413. { "AVOID", "<118>" },
  414. { "BACKGROUND", "" },
  415. { "EXITS", "<278>" },
  416. { "HIDE", "<168>" },
  417. { "INVISIBLE", "<208>" },
  418. { "PATHS", "<138>" },
  419. { "ROOMS", "<178>" },
  420. { "SYMBOLS", "<128>" },
  421. { "USER", "<258>" },
  422. { NULL, "<888>" }
  423. };
  424. struct class_type class_table[] =
  425. {
  426. { "OPEN", class_open },
  427. { "CLOSE", class_close },
  428. { "LIST", class_list },
  429. { "READ", class_read },
  430. { "SIZE", class_size },
  431. { "WRITE", class_write },
  432. { "KILL", class_kill },
  433. { "", NULL },
  434. };
  435. struct chat_type chat_table[] =
  436. {
  437. { "ACCEPT", chat_accept, 0, 1, "Accept a file transfer" },
  438. { "CALL", chat_call, 0, 0, "Call a buddy" },
  439. { "CANCELFILE", chat_cancelfile, 1, 0, "Cancel a file transfer" },
  440. { "COLOR", chat_color, 1, 0, "Set the default chat color" },
  441. { "DECLINE", chat_decline, 1, 0, "Decline a file transfer" },
  442. { "DND", chat_dnd, 0, 0, "Decline new connections" },
  443. { "DOWNLOADDIR", chat_downloaddir, 1, 0, "Set the download directory" },
  444. { "EMOTE", chat_emote, 0, 1, "Send an emoted chat message" },
  445. { "FORWARD", chat_forward, 1, 0, "Forward all chat messages to a buddy" },
  446. { "FORWARDALL", chat_forwardall, 1, 0, "Forward all chat/mud messages to a buddy" },
  447. { "FILESTAT", chat_filestat, 1, 0, "Show file transfer data" },
  448. { "GROUP", chat_group, 0, 1, "Assign a group to a buddy" },
  449. { "IGNORE", chat_ignore, 1, 0, "Ignore all messages from a buddy" },
  450. { "INITIALIZE", chat_initialize, 1, 0, "Initialize chat with an optional port number" },
  451. { "INFO", chat_info, 0, 0, "Display the chat settings" },
  452. { "IP", chat_ip, 1, 0, "Change the IP address, unset by default" },
  453. { "MESSAGE", chat_message, 0, 1, "Send a private message to a buddy" },
  454. { "NAME", chat_name, 1, 0, "Change the chat name" },
  455. { "PASTE", chat_paste, 0, 1, "Paste a block of text to a buddy" },
  456. { "PEEK", chat_peek, 1, 0, "Show a buddy's public connections" },
  457. { "PING", chat_ping, 1, 0, "Display a buddy's response time" },
  458. { "PREFIX", chat_prefix, 1, 0, "Prefix before each chat message" },
  459. { "PRIVATE", chat_private, 1, 0, "Do not share a buddy's IP address" },
  460. { "PUBLIC", chat_public, 1, 0, "Share a buddy's IP address" },
  461. { "REPLY", chat_reply, 1, 0, "Reply to last private message" },
  462. { "REQUEST", chat_request, 1, 0, "Request a buddy's public connections" },
  463. { "SEND", chat_send, 0, 1, "Send a raw data message to a buddy" },
  464. { "SENDFILE", chat_sendfile, 0, 1, "Send a file to a buddy" },
  465. { "SERVE", chat_serve, 1, 0, "Forward all public chat messages to a buddy" },
  466. { "UNINITIALIZE", chat_uninitialize, 0, 0, "Uninitializes the chat server" },
  467. { "WHO", chat_who, 0, 0, "Show all connections" },
  468. { "ZAP", chat_zap, 1, 0, "Close the connection to a buddy" },
  469. { "", NULL, 0, 0, "" }
  470. };
  471. struct port_type port_table[] =
  472. {
  473. { "CALL", port_call, 0, 0, "Create outgoing socket connection" },
  474. { "COLOR", port_color, 1, 0, "Set the default port message color" },
  475. { "FLAG", port_flag, 0, 0, "Set various flags." },
  476. { "GROUP", port_group, 0, 1, "Assign a group to a socket" },
  477. { "IGNORE", port_ignore, 1, 0, "Ignore all messages from a socket" },
  478. { "INITIALIZE", port_initialize, 0, 0, "Initialize port with optional file name" },
  479. { "INFO", port_info, 0, 0, "Display the port settings" },
  480. { "NAME", port_name, 0, 0, "Change a socket name" },
  481. { "PREFIX", port_prefix, 1, 0, "Prefix before each port message" },
  482. { "RANK", port_rank, 0, 0, "Assign a rank to a socket" },
  483. { "SEND", port_send, 0, 1, "Send a message to a socket" },
  484. { "UNINITIALIZE", port_uninitialize, 0, 0, "Uninitializes the port" },
  485. { "WHO", port_who, 0, 0, "Show all socket connections" },
  486. { "ZAP", port_zap, 1, 0, "Close the connection to a socket" },
  487. { "", NULL, 0, 0, "" }
  488. };
  489. struct rank_type rank_table[] =
  490. {
  491. { "SPY", 0 },
  492. { "SCOUT", RANK_FLAG_SCOUT }
  493. };
  494. struct array_type array_table[] =
  495. {
  496. { "ADD", array_add },
  497. { "CLEAR", array_clear },
  498. { "CLR", array_clear },
  499. { "CREATE", array_create },
  500. { "DELETE", array_delete },
  501. { "FIND", array_find },
  502. { "FND", array_find },
  503. { "GET", array_get },
  504. { "INSERT", array_insert },
  505. { "LENGTH", array_size },
  506. { "SET", array_set },
  507. { "SIMPLIFY", array_simplify },
  508. { "SIZE", array_size },
  509. { "SORT", array_sort },
  510. { "SRT", array_sort },
  511. { "TOKENIZE", array_tokenize },
  512. { "", NULL }
  513. };
  514. // 0 no map, 1 has map, 2 is inside map
  515. struct map_type map_table[] =
  516. {
  517. { "AT", map_at, 0, 2 },
  518. { "COLOR", map_color, MAP_FLAG_VTMAP, 1 },
  519. { "CREATE", map_create, MAP_FLAG_VTMAP, 0 },
  520. { "DEBUG", map_debug, 0, 2 },
  521. { "DELETE", map_delete, MAP_FLAG_VTMAP, 1 },
  522. { "DESTROY", map_destroy, MAP_FLAG_VTMAP, 1 },
  523. { "DIG", map_dig, MAP_FLAG_VTMAP, 2 },
  524. { "EXIT", map_exit, MAP_FLAG_VTMAP, 2 },
  525. { "EXITFLAG", map_exitflag, MAP_FLAG_VTMAP, 2 },
  526. { "EXPLORE", map_explore, MAP_FLAG_VTMAP, 2 },
  527. { "FIND", map_find, MAP_FLAG_VTMAP, 2 },
  528. { "FLAG", map_flag, MAP_FLAG_VTMAP, 1 },
  529. { "GET", map_get, 0, 2 },
  530. { "GLOBAL", map_global, 0, 1 },
  531. { "GOTO", map_goto, MAP_FLAG_VTMAP, 1 },
  532. { "INFO", map_info, 0, 1 },
  533. { "INSERT", map_insert, MAP_FLAG_VTMAP, 2 },
  534. { "JUMP", map_jump, MAP_FLAG_VTMAP, 2 },
  535. { "LEAVE", map_leave, MAP_FLAG_VTMAP, 2 },
  536. { "LEGENDA", map_legend, MAP_FLAG_VTMAP, 1 },
  537. { "LINK", map_link, MAP_FLAG_VTMAP, 2 },
  538. { "LIST", map_list, 0, 2 },
  539. { "MAP", map_map, 0, 2 },
  540. { "MOVE", map_move, MAP_FLAG_VTMAP, 2 },
  541. { "NAME", map_name, MAP_FLAG_VTMAP, 2 },
  542. { "OFFSET", map_offset, MAP_FLAG_VTMAP, 1 },
  543. { "READ", map_read, MAP_FLAG_VTMAP, 0 },
  544. { "RESIZE", map_resize, 0, 1 },
  545. { "RETURN", map_return, MAP_FLAG_VTMAP, 1 },
  546. { "ROOMFLAG", map_roomflag, MAP_FLAG_VTMAP, 2 },
  547. { "RUN", map_run, MAP_FLAG_VTMAP, 2 },
  548. { "SET", map_set, MAP_FLAG_VTMAP, 2 },
  549. { "TRAVEL", map_travel, MAP_FLAG_VTMAP, 2 },
  550. { "UNDO", map_undo, MAP_FLAG_VTMAP, 2 },
  551. { "UNINSERT", map_uninsert, MAP_FLAG_VTMAP, 2 },
  552. { "UNLINK", map_unlink, MAP_FLAG_VTMAP, 2 },
  553. { "UPDATE", map_update, 0, 0 },
  554. { "VNUM", map_vnum, MAP_FLAG_VTMAP, 2 },
  555. { "WRITE", map_write, 0, 1 },
  556. { "", NULL, 0 }
  557. };
  558. struct cursor_type cursor_table[] =
  559. {
  560. {
  561. "AUTO TAB BACKWARD",
  562. "Tab completion from scrollback buffer, backward",
  563. "",
  564. CURSOR_FLAG_GET_ALL,
  565. cursor_auto_tab_backward
  566. },
  567. {
  568. "AUTO TAB FORWARD",
  569. "Tab completion from scrollback buffer, forward",
  570. "",
  571. CURSOR_FLAG_GET_ALL,
  572. cursor_auto_tab_forward
  573. },
  574. {
  575. "BACKSPACE",
  576. "Delete backward character",
  577. "",
  578. CURSOR_FLAG_GET_ONE,
  579. cursor_backspace
  580. },
  581. {
  582. "BRACE OPEN",
  583. "Insert the { character",
  584. "",
  585. CURSOR_FLAG_GET_ALL,
  586. cursor_brace_open
  587. },
  588. {
  589. "BRACE CLOSE",
  590. "Insert the } character",
  591. "",
  592. CURSOR_FLAG_GET_ALL,
  593. cursor_brace_close
  594. },
  595. {
  596. "BACKWARD",
  597. "Move cursor backward",
  598. "",
  599. CURSOR_FLAG_GET_ALL,
  600. cursor_left
  601. },
  602. {
  603. "CLEAR",
  604. "Delete the input line",
  605. "",
  606. CURSOR_FLAG_GET_ALL,
  607. cursor_clear_line
  608. },
  609. {
  610. "CLEAR LEFT",
  611. "Delete from cursor to start of input",
  612. "",
  613. CURSOR_FLAG_GET_ALL,
  614. cursor_clear_left
  615. },
  616. {
  617. "CLEAR LINE", /* obsolete */
  618. "Delete the input line",
  619. "",
  620. CURSOR_FLAG_GET_ALL,
  621. cursor_clear_line
  622. },
  623. {
  624. "CLEAR RIGHT",
  625. "Delete from cursor to end of input",
  626. " ",
  627. CURSOR_FLAG_GET_ALL,
  628. cursor_clear_right
  629. },
  630. {
  631. "CONVERT META",
  632. "Meta convert the next character",
  633. "",
  634. CURSOR_FLAG_GET_ALL,
  635. cursor_convert_meta
  636. },
  637. {
  638. "CTRL DELETE",
  639. "Delete one character, exit on an empty line",
  640. "",
  641. CURSOR_FLAG_GET_ALL,
  642. cursor_delete_or_exit
  643. },
  644. {
  645. "DELETE",
  646. "Delete character at cursor",
  647. "\e[3~",
  648. CURSOR_FLAG_GET_ALL,
  649. cursor_delete
  650. },
  651. {
  652. "DELETE WORD LEFT",
  653. "Delete backwards till next space",
  654. "",
  655. CURSOR_FLAG_GET_ALL,
  656. cursor_delete_word_left
  657. },
  658. {
  659. "DELETE WORD RIGHT",
  660. "Delete forwards till next space",
  661. "",
  662. CURSOR_FLAG_GET_ALL,
  663. cursor_delete_word_right
  664. },
  665. {
  666. "ECHO",
  667. "Turn local echoing on or off",
  668. "",
  669. CURSOR_FLAG_GET_ONE,
  670. cursor_echo
  671. },
  672. {
  673. "END",
  674. "Move cursor to end of input",
  675. "",
  676. CURSOR_FLAG_GET_ALL,
  677. cursor_end
  678. },
  679. {
  680. "ENTER",
  681. "Process the input line",
  682. "",
  683. CURSOR_FLAG_GET_ALL,
  684. cursor_enter
  685. },
  686. {
  687. "EXIT",
  688. "Exit current session",
  689. "",
  690. CURSOR_FLAG_GET_ALL,
  691. cursor_exit
  692. },
  693. {
  694. "FORWARD",
  695. "Move cursor forward",
  696. "",
  697. CURSOR_FLAG_GET_ALL,
  698. cursor_right
  699. },
  700. {
  701. "GET",
  702. "Copy input line to given variable",
  703. "",
  704. CURSOR_FLAG_GET_ONE,
  705. cursor_get
  706. },
  707. {
  708. "HISTORY NEXT",
  709. "Select next command history entry",
  710. "",
  711. CURSOR_FLAG_GET_ALL,
  712. cursor_history_next
  713. },
  714. {
  715. "HISTORY PREV",
  716. "Select previous command history entry",
  717. "",
  718. CURSOR_FLAG_GET_ALL,
  719. cursor_history_prev
  720. },
  721. {
  722. "HISTORY SEARCH",
  723. "Search command history",
  724. "",
  725. CURSOR_FLAG_GET_ALL,
  726. cursor_history_search
  727. },
  728. {
  729. "HOME",
  730. "Move the cursor to start of input",
  731. "",
  732. CURSOR_FLAG_GET_ALL,
  733. cursor_home
  734. },
  735. {
  736. "INFO",
  737. "Print debugging information",
  738. "",
  739. CURSOR_FLAG_GET_ALL,
  740. cursor_info
  741. },
  742. {
  743. "INSERT",
  744. "Turn insert mode on or off",
  745. "",
  746. CURSOR_FLAG_GET_ONE,
  747. cursor_insert
  748. },
  749. {
  750. "MIXED TAB BACKWARD",
  751. "Tab completion on last word, search backward",
  752. "\e[Z", // shift-tab
  753. CURSOR_FLAG_GET_ALL,
  754. cursor_mixed_tab_backward
  755. },
  756. {
  757. "MIXED TAB FORWARD",
  758. "Tab completion on last word, search forward",
  759. "\t",
  760. CURSOR_FLAG_GET_ALL,
  761. cursor_mixed_tab_forward
  762. },
  763. {
  764. "NEXT WORD",
  765. "Move cursor to the next word",
  766. "\ef",
  767. CURSOR_FLAG_GET_ALL,
  768. cursor_right_word
  769. },
  770. {
  771. "PASTE BUFFER",
  772. "Paste the previously deleted input text",
  773. "",
  774. CURSOR_FLAG_GET_ALL,
  775. cursor_paste_buffer
  776. },
  777. {
  778. "PREV WORD",
  779. "Move cursor to the previous word",
  780. "\eb",
  781. CURSOR_FLAG_GET_ALL,
  782. cursor_left_word
  783. },
  784. {
  785. "REDRAW INPUT",
  786. "Redraw the input line",
  787. " ",
  788. CURSOR_FLAG_GET_ALL,
  789. cursor_redraw_input
  790. },
  791. {
  792. "SCREEN FOCUS IN",
  793. "Window is focussed in event",
  794. "\e[I",
  795. CURSOR_FLAG_GET_ALL|CURSOR_FLAG_ALWAYS,
  796. cursor_screen_focus_in
  797. },
  798. {
  799. "SCREEN FOCUS OUT",
  800. "Window is focussed out event",
  801. "\e[O",
  802. CURSOR_FLAG_GET_ALL|CURSOR_FLAG_ALWAYS,
  803. cursor_screen_focus_out
  804. },
  805. {
  806. "SET",
  807. "Copy given string to input line",
  808. "",
  809. CURSOR_FLAG_GET_ONE,
  810. cursor_set
  811. },
  812. {
  813. "SUSPEND",
  814. "Suspend program, return with fg",
  815. "",
  816. CURSOR_FLAG_GET_ALL,
  817. cursor_suspend
  818. },
  819. {
  820. "TAB BACKWARD",
  821. "Tab completion from tab list, backward",
  822. "",
  823. CURSOR_FLAG_GET_ALL,
  824. cursor_tab_backward
  825. },
  826. {
  827. "TAB FORWARD",
  828. "Tab completion from tab list, forward",
  829. "",
  830. CURSOR_FLAG_GET_ALL,
  831. cursor_tab_forward
  832. },
  833. {
  834. "", "", "\e[5~", 0, cursor_buffer_up
  835. },
  836. {
  837. "", "", "\e[6~", 0, cursor_buffer_down
  838. },
  839. {
  840. "", "", "", 0, cursor_buffer_lock
  841. },
  842. {
  843. "", "", "\eOM", 0, cursor_enter
  844. },
  845. {
  846. "", "", "\e[7~", 0, cursor_home
  847. },
  848. {
  849. "", "", "\e[1~", 0, cursor_home
  850. },
  851. {
  852. "", "", "\eOH", 0, cursor_home
  853. },
  854. {
  855. "", "", "\e[H", 0, cursor_home
  856. },
  857. {
  858. "", "", "\eOD", 0, cursor_left
  859. },
  860. {
  861. "", "", "\e[D", 0, cursor_left
  862. },
  863. {
  864. "", "", "\e[8~", 0, cursor_end
  865. },
  866. {
  867. "", "", "\e[4~", 0, cursor_end
  868. },
  869. {
  870. "", "", "\eOF", 0, cursor_end
  871. },
  872. {
  873. "", "", "\e[F", 0, cursor_end
  874. },
  875. {
  876. "", "", "\eOC", 0, cursor_right
  877. },
  878. {
  879. "", "", "\e[C", 0, cursor_right
  880. },
  881. {
  882. "", "", "\x7F", 0, cursor_backspace
  883. },
  884. {
  885. "", "", "\eOB", 0, cursor_history_next
  886. },
  887. {
  888. "", "", "\e[B", 0, cursor_history_next
  889. },
  890. {
  891. "", "", "\eOA", 0, cursor_history_prev
  892. },
  893. {
  894. "", "", "\e[A", 0, cursor_history_prev
  895. },
  896. {
  897. "", "", "\e\x7F", 0, cursor_delete_word_left
  898. },
  899. {
  900. "", "", "\ed", 0, cursor_delete_word_right
  901. },
  902. {
  903. "", "", "", 0, NULL
  904. }
  905. };
  906. struct draw_type draw_table[] =
  907. {
  908. {
  909. "BLANK SQUARE",
  910. "Draw a blank square.",
  911. draw_blank
  912. },
  913. {
  914. "BOTTOM SIDE",
  915. "Draw the bottom side of a box.",
  916. draw_bot_line
  917. },
  918. {
  919. "BOX",
  920. "Draw a box.",
  921. draw_box
  922. },
  923. {
  924. "BOX TEXT",
  925. "Draw a box with given text.",
  926. draw_box_text
  927. },
  928. {
  929. "CENTER LEFT LINE",
  930. "Draw the center left line of two boxes.",
  931. draw_center_left_line
  932. },
  933. {
  934. "CENTER RIGHT LINE",
  935. "Draw the center right line of two boxes.",
  936. draw_center_right_line
  937. },
  938. {
  939. "HORIZONTAL LINE",
  940. "Draw a horizontal line.",
  941. draw_horizontal_line
  942. },
  943. {
  944. "LEFT SIDE",
  945. "Draw the left side of a box.",
  946. draw_left_line
  947. },
  948. {
  949. "MIDDLE TOP LINE",
  950. "Draw the middle top line of two boxes.",
  951. draw_middle_top_line
  952. },
  953. {
  954. "MIDDLE BOTTOM LINE",
  955. "Draw the middle bottom line of two boxes.",
  956. draw_middle_bot_line
  957. },
  958. {
  959. "RIGHT SIDE",
  960. "Draw the right side of a box.",
  961. draw_right_line
  962. },
  963. {
  964. "SIDE LINES",
  965. "Draw the left and right sides of a box.",
  966. draw_side_lines
  967. },
  968. {
  969. "SIDE LINES TEXT",
  970. "Draw the side lines of a box with given text.",
  971. draw_side_lines_text
  972. },
  973. {
  974. "TOP LINE",
  975. "Draw the bottom lines of a box.",
  976. draw_top_line
  977. },
  978. {
  979. "TEXT",
  980. "Draw given text without a frame.",
  981. draw_text
  982. },
  983. {
  984. "VERTICAL LINE",
  985. "Draw a vertical line.",
  986. draw_vertical_line
  987. },
  988. {
  989. "",
  990. "",
  991. NULL
  992. }
  993. };
  994. struct screen_type screen_table[] =
  995. {
  996. {
  997. "BLUR",
  998. "Shuffle the screen to the back of the desktop.",
  999. SCREEN_FLAG_GET_ONE,
  1000. SCREEN_FLAG_GET_ONE,
  1001. SCREEN_FLAG_CSIP,
  1002. screen_blur
  1003. },
  1004. {
  1005. "CLEAR",
  1006. "Clear the screen.",
  1007. SCREEN_FLAG_GET_ONE,
  1008. SCREEN_FLAG_GET_NONE,
  1009. SCREEN_FLAG_CSIP,
  1010. screen_clear
  1011. },
  1012. {
  1013. "CURSOR",
  1014. "Cursor settings.",
  1015. SCREEN_FLAG_GET_ONE,
  1016. SCREEN_FLAG_GET_ONE,
  1017. SCREEN_FLAG_CSIP,
  1018. screen_cursor
  1019. },
  1020. {
  1021. "FOCUS",
  1022. "Shuffle the screen to the front of the desktop.",
  1023. SCREEN_FLAG_GET_ONE,
  1024. SCREEN_FLAG_GET_ONE,
  1025. SCREEN_FLAG_CSIP,
  1026. screen_focus
  1027. },
  1028. {
  1029. "FULLSCREEN",
  1030. "Toggle fullscreen mode.",
  1031. SCREEN_FLAG_GET_ONE,
  1032. SCREEN_FLAG_GET_ONE,
  1033. SCREEN_FLAG_CSIP,
  1034. screen_fullscreen
  1035. },
  1036. {
  1037. "GET",
  1038. "Save screen information to given variable.",
  1039. SCREEN_FLAG_GET_ONE,
  1040. SCREEN_FLAG_GET_ONE,
  1041. SCREEN_FLAG_CSIP,
  1042. screen_get
  1043. },
  1044. {
  1045. "INFO",
  1046. "Show some debugging information.",
  1047. SCREEN_FLAG_GET_ONE,
  1048. SCREEN_FLAG_GET_ONE,
  1049. SCREEN_FLAG_CSIP,
  1050. screen_info
  1051. },
  1052. {
  1053. "LOAD",
  1054. "Load screen information from memory.",
  1055. SCREEN_FLAG_GET_ONE,
  1056. SCREEN_FLAG_GET_ONE,
  1057. SCREEN_FLAG_OSCT,
  1058. screen_load
  1059. },
  1060. {
  1061. "MAXIMIZE",
  1062. "Maximize or restore the screen.",
  1063. SCREEN_FLAG_GET_ONE,
  1064. SCREEN_FLAG_GET_ONE,
  1065. SCREEN_FLAG_CSIP,
  1066. screen_maximize
  1067. },
  1068. {
  1069. "MINIMIZE",
  1070. "Minimize or restore the screen.",
  1071. SCREEN_FLAG_GET_ONE,
  1072. SCREEN_FLAG_GET_ONE,
  1073. SCREEN_FLAG_CSIP,
  1074. screen_minimize
  1075. },
  1076. {
  1077. "MOVE",
  1078. "Move the screen to the given position.",
  1079. SCREEN_FLAG_GET_ONE,
  1080. SCREEN_FLAG_GET_ONE,
  1081. SCREEN_FLAG_CSIP,
  1082. screen_move
  1083. },
  1084. {
  1085. "RAISE",
  1086. "Raise a screen event.",
  1087. SCREEN_FLAG_GET_ALL,
  1088. SCREEN_FLAG_GET_ALL,
  1089. SCREEN_FLAG_CSIP,
  1090. screen_raise
  1091. },
  1092. {
  1093. "REFRESH",
  1094. "Refresh the screen. (may not do much)",
  1095. SCREEN_FLAG_GET_ONE,
  1096. SCREEN_FLAG_GET_ONE,
  1097. SCREEN_FLAG_CSIP,
  1098. screen_refresh
  1099. },
  1100. {
  1101. "RESCALE",
  1102. "Rescale the screen to {height} {width} pixels.",
  1103. SCREEN_FLAG_GET_ONE,
  1104. SCREEN_FLAG_GET_ONE,
  1105. SCREEN_FLAG_CSIP,
  1106. screen_rescale
  1107. },
  1108. {
  1109. "RESIZE",
  1110. "Resize the screen to {rows} {cols} characters.",
  1111. SCREEN_FLAG_GET_ONE,
  1112. SCREEN_FLAG_GET_ONE,
  1113. SCREEN_FLAG_CSIP,
  1114. screen_resize
  1115. },
  1116. {
  1117. "SAVE",
  1118. "Save screen information to memory.",
  1119. SCREEN_FLAG_GET_ONE,
  1120. SCREEN_FLAG_GET_ONE,
  1121. SCREEN_FLAG_CSIP,
  1122. screen_save
  1123. },
  1124. {
  1125. "SCROLLBAR",
  1126. "Scrollbar settings.",
  1127. SCREEN_FLAG_GET_ONE,
  1128. SCREEN_FLAG_GET_ONE,
  1129. SCREEN_FLAG_CSIP,
  1130. screen_scrollbar
  1131. },
  1132. {
  1133. "SET",
  1134. "Set screen information.",
  1135. SCREEN_FLAG_GET_ONE,
  1136. SCREEN_FLAG_GET_ONE,
  1137. SCREEN_FLAG_OSCT,
  1138. screen_set
  1139. },
  1140. {
  1141. "", "", 0, 0, 0, NULL
  1142. }
  1143. };
  1144. struct timer_type timer_table[] =
  1145. {
  1146. { "Poll Stdin" },
  1147. { "Poll Sessions" },
  1148. { "Poll Chat Server" },
  1149. { "Poll Port Sessions" },
  1150. { "Update Tickers" },
  1151. { "Update Delays" },
  1152. { "Update Packet Patcher" },
  1153. { "Update Chat Server" },
  1154. { "Update Terminal" },
  1155. { "Update Time Events" },
  1156. { "Update Memory" },
  1157. { "Stall Program" }
  1158. };
  1159. struct event_type event_table[] =
  1160. {
  1161. { "CATCH ", "Triggers on catch events." },
  1162. { "CHAT MESSAGE", "Triggers on any chat related message." },
  1163. { "CLASS ACTIVATED", "Triggers on class activations." },
  1164. { "CLASS CREATED", "Triggers on class creation." },
  1165. { "CLASS DEACTIVATED", "Triggers on class deactivations." },
  1166. { "CLASS DESTROYED", "Triggers on class destruction." },
  1167. { "DATE", "Triggers on the given date." },
  1168. { "DAY", "Triggers each day or given day." },
  1169. { "DOUBLE-CLICKED ", "Triggers when mouse is double-clicked" },
  1170. { "END OF PATH", "Triggers when walking the last room." },
  1171. { "HOUR", "Triggers each hour or given hour." },
  1172. { "IAC ", "Triggers on telopt negotiation." },
  1173. { "LONG-CLICKED ", "Triggers when mouse is long-clicked." },
  1174. { "MAP DOUBLE-CLICKED ", "Triggers on vt map click." },
  1175. { "MAP ENTER MAP", "Triggers when entering the map." },
  1176. { "MAP ENTER ROOM", "Triggers when entering a map room." },
  1177. { "MAP EXIT MAP", "Triggers when exiting the map." },
  1178. { "MAP EXIT ROOM", "Triggers when exiting a map room." },
  1179. { "MAP FOLLOW MAP", "Triggers when moving to a map room." },
  1180. { "MAP LONG-CLICKED ", "Triggers on vt map click." },
  1181. { "MAP PRESSED ", "Triggers on vt map click." },
  1182. { "MAP RELEASED ", "Triggers on vt map click." },
  1183. { "MAP SHORT-CLICKED ", "Triggers on vt map click." },
  1184. { "MAP TRIPLE-CLICKED ", "Triggers on vt map click." },
  1185. { "MAP UPDATED VTMAP", "Triggers on vt map update." },
  1186. { "MINUTE", "Triggers each minute or given minute." },
  1187. { "MONTH", "Triggers each month or given month." },
  1188. { "MOVED ", "Triggers when mouse is moved." },
  1189. { "PORT CONNECTION", "Triggers when socket connects." },
  1190. { "PORT DISCONNECTION", "Triggers when socket disconnects." },
  1191. { "PORT LOG MESSAGE", "Triggers on local port log messages." },
  1192. { "PORT MESSAGE", "Triggers on local port messages." },
  1193. { "PORT RECEIVED MESSAGE", "Triggers when socket data is received." },
  1194. { "PRESSED ", "Triggers when mouse button is pressed." },
  1195. { "PROGRAM START", "Triggers when main session starts." },
  1196. { "PROGRAM TERMINATION", "Triggers when main session exists." },
  1197. { "RECEIVED INPUT", "Triggers when new input is received." },
  1198. { "RECEIVED KEYPRESS", "Triggers when a keypress is received." },
  1199. { "RECEIVED LINE", "Triggers when a new line is received." },
  1200. { "RECEIVED OUTPUT", "Triggers when new output is received." },
  1201. { "RECEIVED PROMPT", "Triggers when a prompt is received." },
  1202. { "RELEASED ", "Triggers when mouse button is released." },
  1203. { "SCAN CSV HEADER", "Triggers when scanning a csv file." },
  1204. { "SCAN CSV LINE", "Triggers when scanning a csv file." },
  1205. { "SCAN TSV HEADER", "Triggers when scanning a tsv file." },
  1206. { "SCAN TSV LINE", "Triggers when scanning a tsv file." },
  1207. { "SCREEN CHARACTER DIMENSIONS", "Triggers when called by #screen raise." },
  1208. { "SCREEN DESKTOP DIMENSIONS", "Triggers when called by #screen raise." },
  1209. { "SCREEN DIMENSIONS", "Triggers when called by #screen raise." },
  1210. { "SCREEN MINIMIZED", "Triggers when called by #screen raise." },
  1211. { "SCREEN POSITION", "Triggers when called by #screen raise." },
  1212. { "SCREEN RESIZE", "Triggers when the screen is resized." },
  1213. { "SCROLLED ", "Triggers when mouse wheel is scrolled." },
  1214. { "SECOND", "Triggers each second or given second." },
  1215. { "SEND OUTPUT", "Triggers before sending output." },
  1216. { "SENT OUTPUT", "Triggers after sending output." },
  1217. { "SESSION ACTIVATED", "Triggers when a session is activated." },
  1218. { "SESSION CONNECTED", "Triggers when a new session connects." },
  1219. { "SESSION CREATED", "Triggers when a new session is created." },
  1220. { "SESSION DEACTIVATED", "Triggers when a session is deactivated." },
  1221. { "SESSION DISCONNECTED", "Triggers when a session disconnects." },
  1222. { "SESSION TIMED OUT", "Triggers when a session doesn't connect."},
  1223. { "SHORT-CLICKED", "Triggers when mouse is short-clicked." },
  1224. { "SYSTEM ERROR", "Triggers on system errors." },
  1225. { "TIME", "Triggers on the given time." },
  1226. { "TRIPLE-CLICKED", "Triggers when mouse is triple-clicked." },
  1227. { "UNKNOWN COMMAND", "Triggers on unknown tintin command." },
  1228. { "VARIABLE UPDATE ", "Triggers on a variable update." },
  1229. { "VT100 CPR", "Triggers on an ESC [ 6 n call." },
  1230. { "VT100 DA", "Triggers on an ESC [ c call." },
  1231. { "VT100 DECID", "Triggers on an ESC Z call." },
  1232. { "VT100 DSR", "Triggers on an ESC [ 5 n call." },
  1233. { "VT100 ENQ", "Triggers on an \\x05 call." },
  1234. { "VT100 SCROLL REGION", "Triggers on vt100 scroll region change." },
  1235. { "WEEK", "Triggers each week or given week." },
  1236. { "WINDOW FOCUS IN", "Triggers on window focussing in." },
  1237. { "WINDOW FOCUS OUT", "Triggers on window focussing out." },
  1238. { "YEAR", "Triggers each year or given year." },
  1239. { "", "" }
  1240. };
  1241. struct path_type path_table[] =
  1242. {
  1243. { "CREATE", path_create, "Clear the path and start path mapping." },
  1244. { "DELETE", path_delete, "Delete the last command from the path." },
  1245. { "DESCRIBE", path_describe, "Describe the path and current position." },
  1246. { "DESTROY", path_destroy, "Clear the path and stop path mapping." },
  1247. { "END", path_end, "" },
  1248. { "GOTO", path_goto, "Move position to given index." },
  1249. { "INSERT", path_insert, "Insert a command to the end of the path." },
  1250. { "LOAD", path_load, "Load a path from a variable." },
  1251. { "MAP", path_map, "Display the path and current position." },
  1252. { "MOVE", path_move, "Move one position forward or backward." },
  1253. { "NEW", path_new, "" },
  1254. { "RUN", path_run, "Execute the current path with optional delay." },
  1255. { "SAVE", path_save, "Save the current path to the given variable." },
  1256. { "SHOW", path_map, "" },
  1257. { "START", path_start, "Start path mapping." },
  1258. { "STOP", path_stop, "Stop path mapping." },
  1259. { "SWAP", path_swap, "Reverse the path, forward becoming backward." },
  1260. { "UNDO", path_undo, "Undo last step." },
  1261. { "UNZIP", path_unzip, "Turn speedwalk into a path." },
  1262. { "WALK", path_walk, "Walk one step forward or backward." },
  1263. { "ZIP", path_zip, "Turn path into a speedwalk." },
  1264. { "", NULL, "" }
  1265. };
  1266. struct line_type line_table[] =
  1267. {
  1268. { "BACKGROUND", line_background },
  1269. { "GAG", line_gag },
  1270. { "IGNORE", line_ignore },
  1271. { "LOG", line_log },
  1272. { "LOGMODE", line_logmode },
  1273. { "LOGVERBATIM", line_logverbatim },
  1274. { "QUIET", line_quiet },
  1275. { "STRIP", line_strip },
  1276. { "SUBSTITUTE", line_substitute },
  1277. { "VERBATIM", line_verbatim },
  1278. { "VERBOSE", line_verbose },
  1279. { "", NULL }
  1280. };
  1281. struct history_type history_table[] =
  1282. {
  1283. /* { "CHARACTER", history_character, "Set the character used for repeating commands." }, */
  1284. { "DELETE", history_delete, "Delete last command history entry." },
  1285. { "INSERT", history_insert, "Insert a new command history entry." },
  1286. { "LIST", history_list, "Display command history list." },
  1287. { "READ", history_read, "Read a command history list from file." },
  1288. /* { "SIZE", history_size, "The size of the command history." }, */
  1289. { "WRITE", history_write, "Write a command history list to file." },
  1290. { "", NULL, "" }
  1291. };
  1292. struct buffer_type buffer_table[] =
  1293. {
  1294. { "CLEAR", buffer_clear, "Clear buffer." },
  1295. { "DOWN", buffer_down, "Scroll down one page." },
  1296. { "END", buffer_end, "Scroll down to the end of the buffer." },
  1297. { "FIND", buffer_find, "Move to the given string in the buffer." },
  1298. { "GET", buffer_get, "Store in given variable a given line or range." },
  1299. { "HOME", buffer_home, "Scroll up to the start of the buffer." },
  1300. { "INFO", buffer_info, "Display statistics about the buffer." },
  1301. { "LOCK", buffer_lock, "Toggle the locking state of the buffer." },
  1302. { "UP", buffer_up, "Scroll up one page." },
  1303. { "WRITE", buffer_write, "Write the buffer to file." },
  1304. { "", NULL, "" }
  1305. };
  1306. char *telcmds[] =
  1307. {
  1308. "EOF", "SUSP", "ABORT", "EOR", "SE",
  1309. "NOP", "DMARK", "BRK", "IP", "AO",
  1310. "AYT", "EC", "EL", "GA", "SB",
  1311. "WILL", "WONT", "DO", "DONT", "IAC",
  1312. };
  1313. struct telopt_type telopt_table[] =
  1314. {
  1315. { "BINARY", TEL_N, 0 },
  1316. { "ECHO", TEL_Y, 0 },
  1317. { "RCP", TEL_N, 0 },
  1318. { "SGA", TEL_Y, 0 },
  1319. { "NAME", TEL_N, 0 },
  1320. { "STATUS", TEL_N, 0 },
  1321. { "TIMING MARK", TEL_N, 0 },
  1322. { "RCTE", TEL_N, 0 },
  1323. { "NAOL", TEL_N, 0 },
  1324. { "NAOP", TEL_N, 0 },
  1325. { "NAORCD", TEL_N, 0 }, /* 10 */
  1326. { "NAOHTS", TEL_N, 0 },
  1327. { "NAOHTD", TEL_N, 0 },
  1328. { "NAOFFD", TEL_N, 0 },
  1329. { "NAOVTS", TEL_N, 0 },
  1330. { "NAOVTD", TEL_N, 0 },
  1331. { "NAOLFD", TEL_N, 0 },
  1332. { "EXTEND ASCII", TEL_N, 0 },
  1333. { "LOGOUT", TEL_N, 0 },
  1334. { "BYTE MACRO", TEL_N, 0 },
  1335. { "DATA ENTRY TERML", TEL_N, 0 }, /* 20 */
  1336. { "SUPDUP", TEL_N, 0 },
  1337. { "SUPDUP OUTPUT", TEL_N, 0 },
  1338. { "SEND LOCATION", TEL_N, 0 },
  1339. { "TERMINAL TYPE", TEL_Y, ANNOUNCE_DO },
  1340. { "EOR", TEL_Y, 0 },
  1341. { "TACACS UID", TEL_N, 0 },
  1342. { "OUTPUT MARKING", TEL_N, 0 },
  1343. { "TTYLOC", TEL_N, 0 },
  1344. { "3270 REGIME", TEL_N, 0 },
  1345. { "X.3 PAD", TEL_N, 0 }, /* 30 */
  1346. { "NAWS", TEL_Y, ANNOUNCE_DO },
  1347. { "TSPEED", TEL_Y, 0 },
  1348. { "LFLOW", TEL_N, 0 },
  1349. { "LINEMODE", TEL_N, 0 },
  1350. { "XDISPLOC", TEL_N, 0 },
  1351. { "OLD-ENVIRON", TEL_N, 0 },
  1352. { "AUTH", TEL_N, 0 },
  1353. { "ENCRYPT", TEL_N, 0 },
  1354. { "NEW-ENVIRON", TEL_N, ANNOUNCE_DO },
  1355. { "TN3270E", TEL_N, 0 }, /* 40 */
  1356. { "XAUTH", TEL_N, 0 },
  1357. { "CHARSET", TEL_Y, ANNOUNCE_WILL },
  1358. { "RSP", TEL_N, 0 },
  1359. { "COM PORT", TEL_N, 0 },
  1360. { "SLE", TEL_N, 0 },
  1361. { "STARTTLS", TEL_N, 0 },
  1362. { "KERMIT", TEL_N, 0 },
  1363. { "SEND-URL", TEL_N, 0 },
  1364. { "FORWARD_X", TEL_N, 0 },
  1365. { "50", TEL_N, 0 }, /* 50 */
  1366. { "51", TEL_N, 0 },
  1367. { "52", TEL_N, 0 },
  1368. { "53", TEL_N, 0 },
  1369. { "54", TEL_N, 0 },
  1370. { "55", TEL_N, 0 },
  1371. { "56", TEL_N, 0 },
  1372. { "57", TEL_N, 0 },
  1373. { "58", TEL_N, 0 },
  1374. { "59", TEL_N, 0 },
  1375. { "60", TEL_N, 0 }, /* 60 */
  1376. { "61", TEL_N, 0 },
  1377. { "62", TEL_N, 0 },
  1378. { "63", TEL_N, 0 },
  1379. { "64", TEL_N, 0 },
  1380. { "65", TEL_N, 0 },
  1381. { "66", TEL_N, 0 },
  1382. { "67", TEL_N, 0 },
  1383. { "68", TEL_N, 0 },
  1384. { "MSDP", TEL_N, ANNOUNCE_WILL }, /* Mud Server Data Protocol */
  1385. { "MSSP", TEL_N, ANNOUNCE_WILL }, /* Mud Server Status Protocol */
  1386. { "71", TEL_N, 0 },
  1387. { "72", TEL_N, 0 },
  1388. { "73", TEL_N, 0 },
  1389. { "74", TEL_N, 0 },
  1390. { "75", TEL_N, 0 },
  1391. { "76", TEL_N, 0 },
  1392. { "77", TEL_N, 0 },
  1393. { "78", TEL_N, 0 },
  1394. { "79", TEL_N, 0 },
  1395. { "80", TEL_N, 0 }, /* 80 */
  1396. { "81", TEL_N, 0 },
  1397. { "82", TEL_N, 0 },
  1398. { "83", TEL_N, 0 },
  1399. { "84", TEL_N, 0 },
  1400. { "MCCP1", TEL_N, 0 }, /* Obsolete */
  1401. { "MCCP2", TEL_Y, ANNOUNCE_WILL }, /* Mud Client Compression Protocol v2 */
  1402. { "MCCP3", TEL_N, ANNOUNCE_WILL }, /* Mud Client Compression Protocol v3 */
  1403. { "88", TEL_N, 0 },
  1404. { "89", TEL_N, 0 },
  1405. { "MSP", TEL_N, 0 }, /* Mud Sound Protocl */
  1406. { "MXP", TEL_N, 0 }, /* Mud eXtension Protocol */
  1407. { "92", TEL_N, 0 }, /* Unadopted - MSP2 draft */
  1408. { "ZMP", TEL_N, 0 }, /* Unadopted - Zenith Mud Protocl draft */
  1409. { "94", TEL_N, 0 },
  1410. { "95", TEL_N, 0 },
  1411. { "96", TEL_N, 0 },
  1412. { "97", TEL_N, 0 },
  1413. { "98", TEL_N, 0 },
  1414. { "99", TEL_N, 0 },
  1415. { "100", TEL_N, 0 },
  1416. { "101", TEL_N, 0 },
  1417. { "102", TEL_N, 0 }, /* Obsolete - Aardwolf */
  1418. { "103", TEL_N, 0 },
  1419. { "104", TEL_N, 0 },
  1420. { "105", TEL_N, 0 },
  1421. { "106", TEL_N, 0 },
  1422. { "107", TEL_N, 0 },
  1423. { "108", TEL_N, 0 },
  1424. { "109", TEL_N, 0 },
  1425. { "110", TEL_N, 0 },
  1426. { "111", TEL_N, 0 },
  1427. { "112", TEL_N, 0 },
  1428. { "113", TEL_N, 0 },
  1429. { "114", TEL_N, 0 },
  1430. { "115", TEL_N, 0 },
  1431. { "116", TEL_N, 0 },
  1432. { "117", TEL_N, 0 },
  1433. { "118", TEL_N, 0 },
  1434. { "119", TEL_N, 0 },
  1435. { "120", TEL_N, 0 },
  1436. { "121", TEL_N, 0 },
  1437. { "122", TEL_N, 0 },
  1438. { "123", TEL_N, 0 },
  1439. { "124", TEL_N, 0 },
  1440. { "125", TEL_N, 0 },
  1441. { "126", TEL_N, 0 },
  1442. { "127", TEL_N, 0 },
  1443. { "128", TEL_N, 0 },
  1444. { "129", TEL_N, 0 },
  1445. { "130", TEL_N, 0 },
  1446. { "131", TEL_N, 0 },
  1447. { "132", TEL_N, 0 },
  1448. { "133", TEL_N, 0 },
  1449. { "134", TEL_N, 0 },
  1450. { "135", TEL_N, 0 },
  1451. { "136", TEL_N, 0 },
  1452. { "137", TEL_N, 0 },
  1453. { "138", TEL_N, 0 },
  1454. { "139", TEL_N, 0 },
  1455. { "140", TEL_N, 0 },
  1456. { "141", TEL_N, 0 },
  1457. { "142", TEL_N, 0 },
  1458. { "143", TEL_N, 0 },
  1459. { "144", TEL_N, 0 },
  1460. { "145", TEL_N, 0 },
  1461. { "146", TEL_N, 0 },
  1462. { "147", TEL_N, 0 },
  1463. { "148", TEL_N, 0 },
  1464. { "149", TEL_N, 0 },
  1465. { "150", TEL_N, 0 },
  1466. { "151", TEL_N, 0 },
  1467. { "152", TEL_N, 0 },
  1468. { "153", TEL_N, 0 },
  1469. { "154", TEL_N, 0 },
  1470. { "155", TEL_N, 0 },
  1471. { "156", TEL_N, 0 },
  1472. { "157", TEL_N, 0 },
  1473. { "158", TEL_N, 0 },
  1474. { "159", TEL_N, 0 },
  1475. { "160", TEL_N, 0 },
  1476. { "161", TEL_N, 0 },
  1477. { "162", TEL_N, 0 },
  1478. { "163", TEL_N, 0 },
  1479. { "164", TEL_N, 0 },
  1480. { "165", TEL_N, 0 },
  1481. { "166", TEL_N, 0 },
  1482. { "167", TEL_N, 0 },
  1483. { "168", TEL_N, 0 },
  1484. { "169", TEL_N, 0 },
  1485. { "170", TEL_N, 0 },
  1486. { "171", TEL_N, 0 },
  1487. { "172", TEL_N, 0 },
  1488. { "173", TEL_N, 0 },
  1489. { "174", TEL_N, 0 },
  1490. { "175", TEL_N, 0 },
  1491. { "176", TEL_N, 0 },
  1492. { "177", TEL_N, 0 },
  1493. { "178", TEL_N, 0 },
  1494. { "179", TEL_N, 0 },
  1495. { "180", TEL_N, 0 },
  1496. { "181", TEL_N, 0 },
  1497. { "182", TEL_N, 0 },
  1498. { "183", TEL_N, 0 },
  1499. { "184", TEL_N, 0 },
  1500. { "185", TEL_N, 0 },
  1501. { "186", TEL_N, 0 },
  1502. { "187", TEL_N, 0 },
  1503. { "188", TEL_N, 0 },
  1504. { "189", TEL_N, 0 },
  1505. { "190", TEL_N, 0 },
  1506. { "191", TEL_N, 0 },
  1507. { "192", TEL_N, 0 },
  1508. { "193", TEL_N, 0 },
  1509. { "194", TEL_N, 0 },
  1510. { "195", TEL_N, 0 },
  1511. { "196", TEL_N, 0 },
  1512. { "197", TEL_N, 0 },
  1513. { "198", TEL_N, 0 },
  1514. { "199", TEL_N, 0 },
  1515. { "ATCP", TEL_N, 0 }, /* Obsolete - Achaea Telnet Communication Protocol */
  1516. { "GMCP", TEL_N, ANNOUNCE_WILL }, /* MSDP over GMCP */
  1517. { "202", TEL_N, 0 },
  1518. { "203", TEL_N, 0 },
  1519. { "204", TEL_N, 0 },
  1520. { "205", TEL_N, 0 },
  1521. { "206", TEL_N, 0 },
  1522. { "207", TEL_N, 0 },
  1523. { "208", TEL_N, 0 },
  1524. { "209", TEL_N, 0 },
  1525. { "210", TEL_N, 0 },
  1526. { "211", TEL_N, 0 },
  1527. { "212", TEL_N, 0 },
  1528. { "213", TEL_N, 0 },
  1529. { "214", TEL_N, 0 },
  1530. { "215", TEL_N, 0 },
  1531. { "216", TEL_N, 0 },
  1532. { "217", TEL_N, 0 },
  1533. { "218", TEL_N, 0 },
  1534. { "219", TEL_N, 0 },
  1535. { "220", TEL_N, 0 },
  1536. { "221", TEL_N, 0 },
  1537. { "222", TEL_N, 0 },
  1538. { "223", TEL_N, 0 },
  1539. { "224", TEL_N, 0 },
  1540. { "225", TEL_N, 0 },
  1541. { "226", TEL_N, 0 },
  1542. { "227", TEL_N, 0 },
  1543. { "228", TEL_N, 0 },
  1544. { "229", TEL_N, 0 },
  1545. { "230", TEL_N, 0 },
  1546. { "231", TEL_N, 0 },
  1547. { "232", TEL_N, 0 },
  1548. { "233", TEL_N, 0 },
  1549. { "234", TEL_N, 0 },
  1550. { "235", TEL_N, 0 },
  1551. { "236", TEL_N, 0 },
  1552. { "237", TEL_N, 0 },
  1553. { "238", TEL_N, 0 },
  1554. { "239", TEL_N, 0 },
  1555. { "240", TEL_N, 0 },
  1556. { "NOP", TEL_N, 0 },
  1557. { "242", TEL_N, 0 },
  1558. { "243", TEL_N, 0 },
  1559. { "244", TEL_N, 0 },
  1560. { "245", TEL_N, 0 },
  1561. { "246", TEL_N, 0 },
  1562. { "247", TEL_N, 0 },
  1563. { "248", TEL_N, 0 },
  1564. { "249", TEL_N, 0 },
  1565. { "250", TEL_N, 0 },
  1566. { "251", TEL_N, 0 },
  1567. { "252", TEL_N, 0 },
  1568. { "253", TEL_N, 0 },
  1569. { "254", TEL_N, 0 },
  1570. { "255", TEL_N, 0 }
  1571. };
  1572. struct map_legend_type map_legend_table[] =
  1573. {
  1574. { "NO EXITS", "ASCII NESW LINE", "x", "1x1" },
  1575. { "N", "ASCII NESW LINE", "o", "1x1" },
  1576. { " E", "ASCII NESW LINE", "o", "1x1" },
  1577. { "N E", "ASCII NESW LINE", "+", "1x1" },
  1578. { " S", "ASCII NESW LINE", "o", "1x1" },
  1579. { "N S", "ASCII NESW LINE", "|", "1x1" },
  1580. { " E S", "ASCII NESW LINE", "+", "1x1" },
  1581. { "N E S", "ASCII NESW LINE", "+", "1x1" },
  1582. { " W", "ASCII NESW LINE", "o", "1x1" },
  1583. { "N W", "ASCII NESW LINE", "+", "1x1" },
  1584. { " E W", "ASCII NESW LINE", "-", "1x1" },
  1585. { "N E W", "ASCII NESW LINE", "+", "1x1" },
  1586. { " S W", "ASCII NESW LINE", "+", "1x1" },
  1587. { "N S W", "ASCII NESW LINE", "+", "1x1" },
  1588. { " E S W", "ASCII NESW LINE", "+", "1x1" },
  1589. { "N E S W", "ASCII NESW LINE", "+", "1x1" },
  1590. { "USER", "ASCII NESW MISC", "x", "1x1" },
  1591. { "DIR UNKNOWN", "ASCII NESW MISC", "+", "1x1" },
  1592. { "N S VOID", "ASCII NESW MISC", "|", "1x1" },
  1593. { "E W VOID", "ASCII NESW MISC", "-", "1x1" },
  1594. { "N E CURVED", "ASCII NESW CURVED", "+", "1x1" },
  1595. { "S E CURVED", "ASCII NESW CURVED", "+", "1x1" },
  1596. { "S W CURVED", "ASCII NESW CURVED", "+", "1x1" },
  1597. { "N W CURVED", "ASCII NESW CURVED", "+", "1x1" },
  1598. { "DIR N", "ASCII NESW DIRS", "|", "1x1" },
  1599. { "DIR NE", "ASCII NESW DIRS", "/", "1x1" },
  1600. { "DIR E", "ASCII NESW DIRS", "-", "1x1" },
  1601. { "DIR SE", "ASCII NESW DIRS", "\\", "1x1" },
  1602. { "DIR S", "ASCII NESW DIRS", "|", "1x1" },
  1603. { "DIR SW", "ASCII NESW DIRS", "/", "1x1" },
  1604. { "DIR W", "ASCII NESW DIRS", "-", "1x1" },
  1605. { "DIR NW", "ASCII NESW DIRS", "\\", "1x1" },
  1606. { "NO EXITS", "NESW LINE", "1x1", "1x1" },
  1607. { "N", "NESW LINE", "1x1", "1x1" },
  1608. { " E", "NESW LINE", "1x1", "1x1" },
  1609. { "N E", "NESW LINE", "1x1", "1x1" },
  1610. { " S", "NESW LINE", "1x1", "1x1" },
  1611. { "N S", "NESW LINE", "1x1", "1x1" },
  1612. { " E S", "NESW LINE", "1x1", "1x1" },
  1613. { "N E S", "NESW LINE", "1x1", "1x1" },
  1614. { " W", "NESW LINE", "1x1", "1x1" },
  1615. { "N W", "NESW LINE", "1x1", "1x1" },
  1616. { " E W", "NESW LINE", "1x1", "1x1" },
  1617. { "N E W", "NESW LINE", "1x1", "1x1" },
  1618. { " S W", "NESW LINE", "1x1", "1x1" },
  1619. { "N S W", "NESW LINE", "1x1", "1x1" },
  1620. { " E S W", "NESW LINE", "1x1", "1x1" },
  1621. { "N E S W", "NESW LINE", "1x1", "1x1" },
  1622. { "USER", "NESW MISC", "1x1", "1x1" },
  1623. { "DIR UNKNOWN", "NESW MISC", "1x1", "1x1" },
  1624. { "N S VOID", "NESW MISC", "1x1", "1x1" },
  1625. { "E W VOID", "NESW MISC", "1x1", "1x1" },
  1626. { "N E CURVED", "NESW CURVED", "1x1", "1x1" },
  1627. { "S E CURVED", "NESW CURVED", "1x1", "1x1" },
  1628. { "S W CURVED", "NESW CURVED", "1x1", "1x1" },
  1629. { "N W CURVED", "NESW CURVED", "1x1", "1x1" },
  1630. { "DIR N", "NESW DIRS", "1x1", "1x1" },
  1631. { "DIR NE", "NESW DIRS", "1x1", "1x1" },
  1632. { "DIR E", "NESW DIRS", "1x1", "1x1" },
  1633. { "DIR SE", "NESW DIRS", "1x1", "1x1" },
  1634. { "DIR S", "NESW DIRS", "1x1", "1x1" },
  1635. { "DIR SW", "NESW DIRS", "1x1", "1x1" },
  1636. { "DIR W", "NESW DIRS", "1x1", "1x1" },
  1637. { "DIR NW", "NESW DIRS", "1x1", "1x1" },
  1638. { "NO EXITS", "MUDFONT NWS", "1x2", "1x2" },
  1639. { "N", "MUDFONT NWS", "1x2", "1x2" },
  1640. { " NW", "MUDFONT NWS", "1x2", "1x2" },
  1641. { "N NW", "MUDFONT NWS", "1x2", "1x2" },
  1642. { " W", "MUDFONT NWS", "1x2", "1x2" },
  1643. { "N W", "MUDFONT NWS", "1x2", "1x2" },
  1644. { " NW W", "MUDFONT NWS", "1x2", "1x2" },
  1645. { "N NW W", "MUDFONT NWS", "1x2", "1x2" },
  1646. { " SW", "MUDFONT NWS", "1x2", "1x2" },
  1647. { "N SW", "MUDFONT NWS", "1x2", "1x2" },
  1648. { " NW SW", "MUDFONT NWS", "1x2", "1x2" },
  1649. { "N NW SW", "MUDFONT NWS", "1x2", "1x2" },
  1650. { " W SW", "MUDFONT NWS", "1x2", "1x2" },
  1651. { "N W SW", "MUDFONT NWS", "1x2", "1x2" },
  1652. { " NW W SW", "MUDFONT NWS", "1x2", "1x2" },
  1653. { "N NW W SW", "MUDFONT NWS", "1x2", "1x2" },
  1654. { " S", "MUDFONT NWS", "1x2", "1x2" },
  1655. { "N S", "MUDFONT NWS", "1x2", "1x2" },
  1656. { " NW S", "MUDFONT NWS", "1x2", "1x2" },
  1657. { "N NW S", "MUDFONT NWS", "1x2", "1x2" },
  1658. { " W S", "MUDFONT NWS", "1x2", "1x2" },
  1659. { "N W S", "MUDFONT NWS", "1x2", "1x2" },
  1660. { " NW W S", "MUDFONT NWS", "1x2", "1x2" },
  1661. { "N NW W S", "MUDFONT NWS", "1x2", "1x2" },
  1662. { " SW S", "MUDFONT NWS", "1x2", "1x2" },
  1663. { "N SW S", "MUDFONT NWS", "1x2", "1x2" },
  1664. { " NW SW S", "MUDFONT NWS", "1x2", "1x2" },
  1665. { "N NW SW S", "MUDFONT NWS", "1x2", "1x2" },
  1666. { " W SW S", "MUDFONT NWS", "1x2", "1x2" },
  1667. { "N W SW S", "MUDFONT NWS", "1x2", "1x2" },
  1668. { " NW W SW S", "MUDFONT NWS", "1x2", "1x2" },
  1669. { "N NW W SW S", "MUDFONT NWS", "1x2", "1x2" },
  1670. { "NO EXITS", "MUDFONT NES", "1x2", "1x2" },
  1671. { "N", "MUDFONT NES", "1x2", "1x2" },
  1672. { " NE", "MUDFONT NES", "1x2", "1x2" },
  1673. { "N NE", "MUDFONT NES", "1x2", "1x2" },
  1674. { " W", "MUDFONT NES", "1x2", "1x2" },
  1675. { "N W", "MUDFONT NES", "1x2", "1x2" },
  1676. { " NE W", "MUDFONT NES", "1x2", "1x2" },
  1677. { "N NE W", "MUDFONT NES", "1x2", "1x2" },
  1678. { " SE", "MUDFONT NES", "1x2", "1x2" },
  1679. { "N SE", "MUDFONT NES", "1x2", "1x2" },
  1680. { " NE SE", "MUDFONT NES", "1x2", "1x2" },
  1681. { "N NE SE", "MUDFONT NES", "1x2", "1x2" },
  1682. { " W SE", "MUDFONT NES", "1x2", "1x2" },
  1683. { "N W SE", "MUDFONT NES", "1x2", "1x2" },
  1684. { " NE W SE", "MUDFONT NES", "1x2", "1x2" },
  1685. { "N NE W SE", "MUDFONT NES", "1x2", "1x2" },
  1686. { " S", "MUDFONT NES", "1x2", "1x2" },
  1687. { "N S", "MUDFONT NES", "1x2", "1x2" },
  1688. { " NE S", "MUDFONT NES", "1x2", "1x2" },
  1689. { "N NE S", "MUDFONT NES", "1x2", "1x2" },
  1690. { " W S", "MUDFONT NES", "1x2", "1x2" },
  1691. { "N W S", "MUDFONT NES", "1x2", "1x2" },
  1692. { " NE W S", "MUDFONT NES", "1x2", "1x2" },
  1693. { "N NE W S", "MUDFONT NES", "1x2", "1x2" },
  1694. { " SE S", "MUDFONT NES", "1x2", "1x2" },
  1695. { "N SE S", "MUDFONT NES", "1x2", "1x2" },
  1696. { " NE SE S", "MUDFONT NES", "1x2", "1x2" },
  1697. { "N NE SE S", "MUDFONT NES", "1x2", "1x2" },
  1698. { " W SE S", "MUDFONT NES", "1x2", "1x2" },
  1699. { "N W SE S", "MUDFONT NES", "1x2", "1x2" },
  1700. { " NE W SE S", "MUDFONT NES", "1x2", "1x2" },
  1701. { "N NE W SE S", "MUDFONT NES", "1x2", "1x2" },
  1702. { "NO EXITS", "MUDFONT VOID NWS", "1x2", "1x2" },
  1703. { "N", "MUDFONT VOID NWS", "1x2", "1x2" },
  1704. { " NW", "MUDFONT VOID NWS", "1x2", "1x2" },
  1705. { "N NW", "MUDFONT VOID NWS", "1x2", "1x2" },
  1706. { " W", "MUDFONT VOID NWS", "1x2", "1x2" },
  1707. { "N W", "MUDFONT VOID NWS", "1x2", "1x2" },
  1708. { " NW W", "MUDFONT VOID NWS", "1x2", "1x2" },
  1709. { "N NW W", "MUDFONT VOID NWS", "1x2", "1x2" },
  1710. { " SW", "MUDFONT VOID NWS", "1x2", "1x2" },
  1711. { "N SW", "MUDFONT VOID NWS", "1x2", "1x2" },
  1712. { " NW SW", "MUDFONT VOID NWS", "1x2", "1x2" },
  1713. { "N NW SW", "MUDFONT VOID NWS", "1x2", "1x2" },
  1714. { " W SW", "MUDFONT VOID NWS", "1x2", "1x2" },
  1715. { "N W SW", "MUDFONT VOID NWS", "1x2", "1x2" },
  1716. { " NW W SW", "MUDFONT VOID NWS", "1x2", "1x2" },
  1717. { "N NW W SW", "MUDFONT VOID NWS", "1x2", "1x2" },
  1718. { " S", "MUDFONT VOID NWS", "1x2", "1x2" },
  1719. { "N S", "MUDFONT VOID NWS", "1x2", "1x2" },
  1720. { " NW S", "MUDFONT VOID NWS", "1x2", "1x2" },
  1721. { "N NW S", "MUDFONT VOID NWS", "1x2", "1x2" },
  1722. { " W S", "MUDFONT VOID NWS", "1x2", "1x2" },
  1723. { "N W S", "MUDFONT VOID NWS", "1x2", "1x2" },
  1724. { " NW W S", "MUDFONT VOID NWS", "1x2", "1x2" },
  1725. { "N NW W S", "MUDFONT VOID NWS", "1x2", "1x2" },
  1726. { " SW S", "MUDFONT VOID NWS", "1x2", "1x2" },
  1727. { "N SW S", "MUDFONT VOID NWS", "1x2", "1x2" },
  1728. { " NW SW S", "MUDFONT VOID NWS", "1x2", "1x2" },
  1729. { "N NW SW S", "MUDFONT VOID NWS", "1x2", "1x2" },
  1730. { " W SW S", "MUDFONT VOID NWS", "1x2", "1x2" },
  1731. { "N W SW S", "MUDFONT VOID NWS", "1x2", "1x2" },
  1732. { " NW W SW S", "MUDFONT VOID NWS", "1x2", "1x2" },
  1733. { "N NW W SW S", "MUDFONT VOID NWS", "1x2", "1x2" },
  1734. { "NO EXITS", "MUDFONT VOID NES", "1x2", "1x2" },
  1735. { "N", "MUDFONT VOID NES", "1x2", "1x2" },
  1736. { " NE", "MUDFONT VOID NES", "1x2", "1x2" },
  1737. { "N NE", "MUDFONT VOID NES", "1x2", "1x2" },
  1738. { " W", "MUDFONT VOID NES", "1x2", "1x2" },
  1739. { "N W", "MUDFONT VOID NES", "1x2", "1x2" },
  1740. { " NE W", "MUDFONT VOID NES", "1x2", "1x2" },
  1741. { "N NE W", "MUDFONT VOID NES", "1x2", "1x2" },
  1742. { " SE", "MUDFONT VOID NES", "1x2", "1x2" },
  1743. { "N SE", "MUDFONT VOID NES", "1x2", "1x2" },
  1744. { " NE SE", "MUDFONT VOID NES", "1x2", "1x2" },
  1745. { "N NE SE", "MUDFONT VOID NES", "1x2", "1x2" },
  1746. { " W SE", "MUDFONT VOID NES", "1x2", "1x2" },
  1747. { "N W SE", "MUDFONT VOID NES", "1x2", "1x2" },
  1748. { " NE W SE", "MUDFONT VOID NES", "1x2", "1x2" },
  1749. { "N NE W SE", "MUDFONT VOID NES", "1x2", "1x2" },
  1750. { " S", "MUDFONT VOID NES", "1x2", "1x2" },
  1751. { "N S", "MUDFONT VOID NES", "1x2", "1x2" },
  1752. { " NE S", "MUDFONT VOID NES", "1x2", "1x2" },
  1753. { "N NE S", "MUDFONT VOID NES", "1x2", "1x2" },
  1754. { " W S", "MUDFONT VOID NES", "1x2", "1x2" },
  1755. { "N W S", "MUDFONT VOID NES", "1x2", "1x2" },
  1756. { " NE W S", "MUDFONT VOID NES", "1x2", "1x2" },
  1757. { "N NE W S", "MUDFONT VOID NES", "1x2", "1x2" },
  1758. { " SE S", "MUDFONT VOID NES", "1x2", "1x2" },
  1759. { "N SE S", "MUDFONT VOID NES", "1x2", "1x2" },
  1760. { " NE SE S", "MUDFONT VOID NES", "1x2", "1x2" },
  1761. { "N NE SE S", "MUDFONT VOID NES", "1x2", "1x2" },
  1762. { " W SE S", "MUDFONT VOID NES", "1x2", "1x2" },
  1763. { "N W SE S", "MUDFONT VOID NES", "1x2", "1x2" },
  1764. { " NE W SE S", "MUDFONT VOID NES", "1x2", "1x2" },
  1765. { "N NE W SE S", "MUDFONT VOID NES", "1x2", "1x2" },
  1766. { "N E", "MUDFONT CURVED", "1x2", "1x2" },
  1767. { "S E", "MUDFONT CURVED", "1x2", "1x2" },
  1768. { "S W", "MUDFONT CURVED", "1x2", "1x2" },
  1769. { "N W", "MUDFONT CURVED", "1x2", "1x2" },
  1770. { NULL, NULL, NULL, NULL }
  1771. };
  1772. struct map_group_type map_group_table[] =
  1773. {
  1774. { "ALL", "", 1, 1, 1, 2, 0, 0, "" },
  1775. { "ASCII NESW", "ASCII NESW", 1, 1, 1, 1, 0, 0, "{x} {o} {o} {+} {o} {|} {+} {+} {o} {+} {-} {+} {+} {+} {+} {+} {x} {+} {|} {-} {+} {+} {+} {+} {|} {/} {-} {\\\\} {|} {/} {-} {\\\\}" },
  1776. { "ASCII NESW LINE", "ASCII NESW LINE", 1, 1, 1, 1, 0, 0, "{x} {o} {o} {+} {o} {|} {+} {+} {o} {+} {-} {+} {+} {+} {+} {+}" },
  1777. { "ASCII NESW MISC", "ASCII NESW MISC", 1, 1, 1, 1, 0, 0, "{x} {+} {|} {-}" },
  1778. { "ASCII NESW CURVED", "ASCII NESW CURVED", 1, 1, 1, 1, 0, 0, "{+} {+} {+} {+}" },
  1779. { "ASCII NESW DIRS", "ASCII NESW DIRS", 1, 1, 1, 1, 0, 0, "{|} {/} {-} {\\\\} {|} {/} {-} {\\\\}" },
  1780. { "NESW", "NESW", 1, 1, 1, 1, 0, 0, "{\\u2B51} {\\u2579} {\\u257A} {\\u2517} {\\u257B} {\\u2503} {\\u250F} {\\u2523} {\\u2578} {\\u251B} {\\u2501} {\\u253B} {\\u2513} {\\u252B} {\\u2533} {\\u254B} {\\u2B51} {\\u2012} {\\u2507} {\\u254D} {\\u2570} {\\u256D} {\\u256E} {\\u256F} {\\u2191} {\\u2B08} {\\u2B95} {\\u2b0A} {\\u2193} {\\u2B0B} {\\u2B05} {\\u2B09}" },
  1781. { "NESW TUBE", "NESW", 1, 1, 1, 1, 0, 0, "{\\u25AB}{\\U01F791}{\\U01F791}{\\u255A}{\\U01F791}{\\u2551}{\\u2554} {\\u2560}{\\U01F791}{\\u255D} {\\u2550} {\\u2569} {\\u2557} {\\u2563} {\\u2566} {\\u256C} {\\u25CF} {} {\\u2502} {\\u2500} {\\u2570} {\\u256D} {\\u256E} {\\u256F} {\\u2191} {\\u2B08} {\\u2B95} {\\u2b0A} {\\u2193} {\\u2B0B} {\\u2B05} {\\u2B09}" },
  1782. { "NESW LINE", "NESW LINE", 1, 1, 1, 1, 0, 0, "{\\u25AA} {\\u2579} {\\u257A} {\\u2517} {\\u257B} {\\u2503} {\\u250F} {\\u2523} {\\u2578} {\\u251B} {\\u2501} {\\u253B} {\\u2513} {\\u252B} {\\u2533} {\\u254B}" },
  1783. { "NESW MISC", "NESW MISC", 1, 1, 1, 1, 0, 0, "{\\u2B51} {\\u2012} {\\u2507} {\\u254D}" },
  1784. { "NESW CURVED", "NESW CURVED", 1, 1, 1, 1, 0, 0, "{\\u2570} {\\u256D} {\\u256E} {\\u256F}" },
  1785. { "NESW DIRS", "NESW DIRS", 1, 1, 1, 1, 0, 0, "{\\u2191} {\\u2B08} {\\u2B95} {\\u2b0A} {\\u2193} {\\u2B0B} {\\u2B05} {\\u2B09}" },
  1786. // { "NESW DIRS", "NESW DIRS", 1, 1, 1, 1, 0, 0, "{\\U01F805}{\\u2B08}{\\U01F806}{\\u2b0A}{\\U01F807}{\\u2B0B}{\\U01F804}{\\u2B09}" }, poor cross-platform support.
  1787. { "MUDFONT", "MUDFONT", 1, 2, 1, 2, 0, 0, "" },
  1788. { "MUDFONT PRIVATE", "MUDFONT", 1, 2, 1, 2, 0, 0, "{\\uE000} {\\uE001} {\\uE002} {\\uE003} {\\uE004} {\\uE005} {\\uE006} {\\uE007} {\\uE008} {\\uE009} {\\uE00A} {\\uE00B} {\\uE00C} {\\uE00D} {\\uE00E} {\\uE00F} {\\uE010} {\\uE011} {\\uE012} {\\uE013} {\\uE014} {\\uE015} {\\uE016} {\\uE017} {\\uE018} {\\uE019} {\\uE01A} {\\uE01B} {\\uE01C} {\\uE01D} {\\uE01E} {\\uE01F} {\\uE020} {\\uE021} {\\uE022} {\\uE023} {\\uE024} {\\uE025} {\\uE026} {\\uE027} {\\uE028} {\\uE029} {\\uE02A} {\\uE02B} {\\uE02C} {\\uE02D} {\\uE02E} {\\uE02F} {\\uE030} {\\uE031} {\\uE032} {\\uE033} {\\uE034} {\\uE035} {\\uE036} {\\uE037} {\\uE038} {\\uE039} {\\uE03A} {\\uE03B} {\\uE03C} {\\uE03D} {\\uE03E} {\\uE03F} {\\uE040} {\\uE041} {\\uE042} {\\uE043} {\\uE044} {\\uE045} {\\uE046} {\\uE047} {\\uE048} {\\uE049} {\\uE04A} {\\uE04B} {\\uE04C} {\\uE04D} {\\uE04E} {\\uE04F} {\\uE050} {\\uE051} {\\uE052} {\\uE053} {\\uE054} {\\uE055} {\\uE056} {\\uE057} {\\uE058} {\\uE059} {\\uE05A} {\\uE05B} {\\uE05C} {\\uE05D} {\\uE05E} {\\uE05F} {\\uE060} {\\uE061} {\\uE062} {\\uE063} {\\uE064} {\\uE065} {\\uE066} {\\uE067} {\\uE068} {\\uE069} {\\uE06A} {\\uE06B} {\\uE06C} {\\uE06D} {\\uE06E} {\\uE06F} {\\uE070} {\\uE071} {\\uE072} {\\uE073} {\\uE074} {\\uE075} {\\uE076} {\\uE077} {\\uE078} {\\uE079} {\\uE07A} {\\uE07B} {\\uE07C} {\\uE07D} {\\uE07E} {\\uE07F} {\\uE080} {\\uE081} {\\uE082} {\\uE083} {\\uE084} {\\uE085} {\\uE086} {\\uE087}" },
  1789. { "MUDFONT BRAILLE TUBE", "MUDFONT", 1, 2, 1, 2, 0, 0, "{\\u28CF} {\\u28C7} {\\u28CE} {\\u28C6} {\\u28C9} {\\u28C1} {\\u28C8} {\\u28C0} {\\u288F} {\\u2887} {\\u288E} {\\u2886} {\\u2889} {\\u2881} {\\u2888} {\\u2880} {\\u284F} {\\u2847} {\\u284E} {\\u2846} {\\u2849} {\\u2841} {\\u2848} {\\u2880} {\\u280F} {\\u2807} {\\u280E} {\\u2806} {\\u2809} {\\u2801} {\\u2808} {\\u2800} {\\u28F9} {\\u28F8} {\\u28F1} {\\u28F0} {\\u28C9} {\\u28C8} {\\u28C2} {\\u28C0} {\\u2879} {\\u2878} {\\u2871} {\\u2870} {\\u2849} {\\u2848} {\\u2842} {\\u2840} {\\u28B9} {\\u28B8} {\\u28B1} {\\u28B0} {\\u2889} {\\u2888} {\\u2882} {\\u2880} {\\u2839} {\\u2838} {\\u2831} {\\u2830} {\\u2809} {\\u2808} {\\u2802} {\\u2800} {\\u2830} {\\u2838} {\\u2831} {\\u2839} {\\u2836} {\\u283E} {\\u2837} {\\u283F} {\\u2870} {\\u2878} {\\u2871} {\\u2879} {\\u2876} {\\u287E} {\\u2877} {\\u287F} {\\u28B0} {\\u28B8} {\\u28B1} {\\u28B9} {\\u28B6} {\\u28BE} {\\u28B7} {\\u28BF} {\\u28F0} {\\u28F8} {\\u28F1} {\\u28F9} {\\u28F6} {\\u28FE} {\\u28F7} {\\u28FF} {\\u2806} {\\u2807} {\\u280E} {\\u280F} {\\u2836} {\\u2837} {\\u283E} {\\u283F} {\\u2886} {\\u2887} {\\u288E} {\\u288F} {\\u28B6} {\\u28B7} {\\u28BE} {\\u28BF} {\\u2846} {\\u2847} {\\u284E} {\\u284F} {\\u2876} {\\u2877} {\\u287E} {\\u287F} {\\u28C6} {\\u28C7} {\\u28CE} {\\u28CF} {\\u28F6} {\\u28F7} {\\u28FE} {\\u28FF} {\\u2818} {\\u28A0} {\\u2844} {\\u2803} {} {} {} {}" },
  1790. { "MUDFONT BRAILLE LINE", "MUDFONT", 1, 2, 1, 2, 0, 0, "{\\u2830} {\\u2838} {\\u2831} {\\u2839} {\\u2836} {\\u283E} {\\u2837} {\\u283F} {\\u2870} {\\u2878} {\\u2871} {\\u2879} {\\u2876} {\\u287E} {\\u2877} {\\u287F} {\\u28B0} {\\u28B8} {\\u28B1} {\\u28B9} {\\u28B6} {\\u28BE} {\\u28B7} {\\u28BF} {\\u28F0} {\\u28F8} {\\u28F1} {\\u28F9} {\\u28F6} {\\u28FE} {\\u28F7} {\\u28FF} {\\u2806} {\\u2807} {\\u280E} {\\u280F} {\\u2836} {\\u2837} {\\u283E} {\\u283F} {\\u2886} {\\u2887} {\\u288E} {\\u288F} {\\u28B6} {\\u28B7} {\\u28BE} {\\u28BF} {\\u2846} {\\u2847} {\\u284E} {\\u284F} {\\u2876} {\\u2877} {\\u287E} {\\u287F} {\\u28C6} {\\u28C7} {\\u28CE} {\\u28CF} {\\u28F6} {\\u28F7} {\\u28FE} {\\u28FF} {\\u2800} {\\u2808} {\\u2801} {\\u2809} {\\u2806} {\\u280E} {\\u2807} {\\u280F} {\\u2840} {\\u2848} {\\u2841} {\\u2849} {\\u2846} {\\u284E} {\\u2847} {\\u284F} {\\u2880} {\\u2888} {\\u2881} {\\u2889} {\\u2886} {\\u288E} {\\u2887} {\\u288F} {\\u28C0} {\\u28C8} {\\u28C1} {\\u28C9} {\\u28C6} {\\u28CE} {\\u28C7} {\\u28CF} {\\u2800} {\\u2801} {\\u2808} {\\u2809} {\\u2830} {\\u2831} {\\u2838} {\\u2839} {\\u2880} {\\u2881} {\\u2888} {\\u2889} {\\u28B0} {\\u28B1} {\\u28B8} {\\u28B9} {\\u2840} {\\u2841} {\\u2848} {\\u2849} {\\u2870} {\\u2871} {\\u2878} {\\u2879} {\\u28C0} {\\u28C1} {\\u28C8} {\\u28C9} {\\u28F0} {\\u28F1} {\\u28F8} {\\u28F9} {\\u2818} {\\u28A0} {\\u2844} {\\u2803} {} {} {} {}" },
  1791. { "MUDFONT NWS", "MUDFONT NWS", 1, 2, 1, 2, 0, 0, "" },
  1792. { "MUDFONT NES", "MUDFONT NES", 1, 2, 1, 2, 0, 0, "" },
  1793. { "MUDFONT VOID NWS", "MUDFONT VOID NWS", 1, 2, 1, 2, 0, 0, "" },
  1794. { "MUDFONT VOID NES", "MUDFONT VOID NES", 1, 2, 1, 2, 0, 0, "" },
  1795. { "MUDFONT CURVED", "MUDFONT CURVED", 1, 2, 1, 2, 0, 0, "" },
  1796. { "MUDFONT CURVED BRAILLE", "MUDFONT CURVED", 1, 2, 1, 2, 0, 0, "{\\u2818} {\\u28A0} {\\u2844} {\\u2803} {} {} {} {}" },
  1797. { NULL, NULL, 0, 0, 0, 0, 0, 0, "" }
  1798. };