diff --git a/exec/ftn-setup.js b/exec/ftn-setup.js index 710271bbe3e5eb929445bc86b73f3f4835bb17e2..8d932658f77da0d61022672c8d8873c3c343a72b 100644 --- a/exec/ftn-setup.js +++ b/exec/ftn-setup.js @@ -4,11 +4,20 @@ load('sbbsdefs.js'); load('frame.js'); load('tree.js'); const fidoaddr = load({}, 'fidoaddr.js'); +require("mouse_getkey.js", "mouse_getkey"); +const ansiterm = load({}, 'ansiterm_lib.js'); + +function mouse_enable(enable) { + if (!console.term_supports(USER_ANSI)) return; + ansiterm.send('mouse', enable ? 'set' : 'clear', 'normal_tracking'); +} js.on_exit('console.attributes = ' + console.attributes); js.on_exit('bbs.sys_status = ' + bbs.sys_status); +js.on_exit('mouse_enable(false);'); bbs.sys_status|=SS_MOFF; +mouse_enable(true); const addrs = {}; system.fido_addr_list.forEach(function (e) { @@ -60,34 +69,36 @@ frame.open(); tree.open(); frame.cycle(); +var t; var key; var zone; console.ungetstr(KEY_UP); while (!js.terminated) { - key = console.getkey(); - if (key.toLowerCase() == 'q') break; - tree.getcmd(key); - if (key == KEY_UP || key == KEY_DOWN || key == KEY_HOME || key == KEY_END) { + key = mouse_getkey(K_NONE, undefined, true); + //key = console.getkey(); + if (key.key.toLowerCase() == 'q') break; + t = tree.getcmd(key); + if ((key.mouse && t) || key.key == KEY_UP || key.key == KEY_DOWN || key.key == KEY_HOME || key.key == KEY_END) { zone = tree.currentItem.__ftn_setup; info_frame.erase(' '); info_frame.putmsg('\1h\1w' + zone.name + '\r\n'); if (zone.desc) { - info_frame.putmsg('\1n\1w' + zone.desc + '\r\n\r\n'); - } + info_frame.putmsg('\1n\1w' + zone.desc + '\r\n\r\n'); + } if (zone.info) { - info_frame.putmsg('\1h\1cInformation\1w:\r\n'); - info_frame.putmsg('\1n' + zone.info + '\r\n\r\n'); - } + info_frame.putmsg('\1h\1cInformation\1w:\r\n'); + info_frame.putmsg('\1n' + zone.info + '\r\n\r\n'); + } if (zone.coord) { - info_frame.putmsg('\1h\1cCoordinator\1w:\r\n'); - info_frame.putmsg('\1n' + zone.coord + '\r\n\r\n'); - } + info_frame.putmsg('\1h\1cCoordinator\1w:\r\n'); + info_frame.putmsg('\1n' + zone.coord + '\r\n\r\n'); + } if (zone.email) { - info_frame.putmsg('\1h\1cEmail\1w:\r\n'); - info_frame.putmsg('\1n' + zone.email + '\r\n\r\n'); - } + info_frame.putmsg('\1h\1cEmail\1w:\r\n'); + info_frame.putmsg('\1n' + zone.email + '\r\n\r\n'); + } if (addrs[zone._zone_number]) { - info_frame.putmsg('\1h\1rExisting address found: ' + addrs[zone._zone_number] + '\r\n'); + info_frame.putmsg('\1h\1rExisting address found: ' + addrs[zone._zone_number] + '\r\n'); } } if (frame.cycle()) console.gotoxy(console.screen_columns, console.screen_rows);