Terminal handling library.
[Thread Prev] | [Thread Next]
- Subject: Terminal handling library.
- From: Ori Bernstein <ori@xxxxxxxxxxxxxx>
- Date: Sat, 8 Apr 2017 18:55:26 -0700
- To: myrddin-dev@xxxxxxxxxxxxxx
Writing a text editor that I acutally like is something that's been on my
queue of things to write for ages. When I saw Kilo, I started poking through
it for inspiration. The editor itself is a toy, but the terminal handling
convinced me that it wouldn't be hard to bang out something quickly. More
quickly than my X11/XCB experiemnts (although they're also getting there...)
So, here it is:
http://git.eigenstate.org/ori/libtermios.git
And mirrored:
https://github.com/oridb/libtermios
The API is fairly simple, and somewhat resembles the termbox api (although
I didn't realize this until after I put the library together). Here it is:
pkg termios =
type color
type event = union
`Winsz (int, int)
`Gone /* lost the terminal fd */
`Kesc
`Kup
`Kdown
`Kleft
`Kright
`Khome
`Kend
`Kdel
`Kpgup
`Kpgdn
`Kc char
;;
const Black : color
const Red : color
const Green : color
const Yellow : color
const Blue : color
const Magenta : color
const Cyan : color
const White : color
const Default : color
const Normal : attr
const Bold : attr
const Italic : attr
const Underline : attr
const Blink : attr /* eww, blink tags */
const mk : (fd : std.fd -> term#)
const free : (t : term# -> void)
const raw : (t : term# -> void)
const size : (t : term# -> (int, int))
const move : (t : term#, r : int, c : int -> void)
const cls : (t : term# -> void)
const flush : (t : term# -> void)
const putc : (t : term#, c : char -> void)
const put : (t : term#, fmt : byte[:], args : ... -> void)
const setfg : (t : term#, c : color -> void)
const setbg : (t : term#, c : color -> void)
const setattr : (t : term#, c : attr -> void)
const event : (t : term# -> event)
;;
It also provides raw access to the termios api, although this is slightly
system specific:
const tcgetattr : (fd : std.fd, t : termios# -> sys.errno)
const tcsetattr : (fd : std.fd, opt : tioopt, t : termios# -> sys.errno)
const tcwinsize : (fd : std.fd, winsz : winsize# -> sys.errno)
Currently it's pretty rudimentary. It restricts itself to a common ANSI escape
code subset that it seems all terminals I have tested respect.
TODO:
- Event peeking
- Better color support
- Reading termcap/terminfo and respecting that
- Bugfixes?
--
Ori Bernstein
| Re: Terminal handling library. | Ori Bernstein <ori@xxxxxxxxxxxxxx> |
- Prev by Date: Re: Delta debugger written in myrddin
- Next by Date: Re: Terminal handling library.
- Previous by thread: Re: Delta debugger written in myrddin
- Next by thread: Re: Terminal handling library.
- Index(es):