minicurses.lua - a stripped-down, easy-to-use access to the ncurses
library
local MC = require 'minicurses' local LINES, COLS = MC.initscr() MC.move(0,15); MC.addstr('Welcome to minicurses :-)') MC.mvaddstr(2, 10, 'All those moments will be lost in time,') MC.mvaddstr(3, 16, 'like tears in the rain. ') MC.refresh() MC.echo(); c = MC.getch(); MC.noecho() MC.endwin()
This module is a highly minimalised, stripped-down
replacement for the abandoned lcurses module.
It works under Lua 5.4
Be aware that, following curses tradition,
the arguments of move, mvaddstr and mvgetnstr
are row, column
where row zero is at the top, and column zero is on the left.
This is not the same as x,y
it's the other way round.
stdscr
is hidden, because it is the only window offered.
Since version 0.5, the wrapper-function
getkey is provided,
which returns the strings
'UP' 'DOWN' 'RIGHT' 'LEFT' 'END' 'HOME' 'PAGEUP'
or 'PAGEDOWN'
when those corresponding keys are pressed.
addstr(str)
attrset(attribute)
(attribute is BOLD, REVERSE, or NORMAL)
cbreak()
clear()
clrtobot()
clrtoeol()
echo()
endwin()
getch()
getnstr(len)
hline(n)
LINES, COLS = initscr()
move(row, col)
mvaddstr(row, col, str)
mvgetnstr(row, col, len)
noecho()
nonl()
refresh()
vline(n)
getkey()
This function, which is not part of curses,
is a thin wrapper round getch()
which interprets the byte-sequences
^[[A ^[[B ^[[C^ [[D ^[[F ^[[H ^[[2~ ^[[3~ ^[[5~
or ^[[6~
and returns
'UP' 'DOWN' 'RIGHT' 'LEFT' 'END' 'INSERT' 'DELETE' 'HOME' 'PAGEUP'
or 'PAGEDOWN'
accordingly.
These escape-sequences are very portable.
Other keys, such as the Function Keys, are not provided.
BOLD REVERSE NORMAL LINES COLS
This module is a LuaRock in
luarocks.org/modules/peterbillam
so you should be able to install it with the command:
$ su
Password:
# luarocks install minicurses
or:
# luarocks install https://www.pjb.com.au/comp/lua/minicurses-0.8-0.rockspec
20220105 0.8 getkey() handles INS and DEL keys
20220101 0.7 remove keypad(); and initscr() returns LINES, COLS
20211230 0.6 add nonl()
20211213 0.5 add getkey(), hline(n), vline(n)
20211210 0.4 add mvgetnstr(row,col,len)
20211209 0.3 add getnstr(len)
20211206 0.2 add addstr, attrset, clrtobot, clrtoeol, keypad
20211204 0.1 first released version
Peter J Billam, pjb.com.au/comp/contact.html
luarocks.org/modules/jjandresson/lcurses
github.com/lcurses/lcurses/issues/13
apt install ncurses-doc
man ncurses
/usr/include/ncurses.h
gitlab.com/peterbillam/pjb_lua/-/tree/master/minicurses-0.0
pjb.com.au/midi/midithru.html
en.wikipedia.org/wiki/Box-drawing_character#Box_Drawing