2014-10-14 00:08:15 +02:00
|
|
|
termo
|
|
|
|
=====
|
2014-10-09 23:47:24 +02:00
|
|
|
|
2014-10-14 00:08:15 +02:00
|
|
|
`termo' is a library providing an alternative to ncurses' handling of terminal
|
|
|
|
input. ncurses does a really terrible job at that, mainly wrt. mouse support
|
|
|
|
which seems to be utterly broken. If you can drag things in a terminal
|
2014-10-09 23:47:24 +02:00
|
|
|
application, such as in VIM, I can assure you it's not using ncurses for that.
|
|
|
|
|
|
|
|
Since terminal I/O is really complicated and full of special cases, this project
|
|
|
|
doesn't aspire to also replace the output part of ncurses, but is rather
|
|
|
|
complementary to it. In the end it makes use of its terminfo library.
|
|
|
|
|
|
|
|
The API isn't stable yet. Tell me what needs to be done so I can fix it first.
|
|
|
|
|
|
|
|
Building and Installing
|
|
|
|
-----------------------
|
2015-02-26 22:59:41 +01:00
|
|
|
Build dependencies: cmake >= 2.8.5, pkg-config
|
2014-10-09 23:47:24 +02:00
|
|
|
Optional dependencies: Unibilium (alternative for curses), GLib (for the demos)
|
|
|
|
|
2014-10-14 00:08:15 +02:00
|
|
|
$ git clone https://github.com/pjanouch/termo.git
|
2015-09-27 01:20:11 +02:00
|
|
|
$ mkdir termo/build
|
|
|
|
$ cd termo/build
|
2015-02-26 22:59:41 +01:00
|
|
|
$ cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Debug
|
2014-10-09 23:47:24 +02:00
|
|
|
|
|
|
|
To install the library, you can do either the usual:
|
2015-02-26 22:59:41 +01:00
|
|
|
# make install
|
2014-10-09 23:47:24 +02:00
|
|
|
|
|
|
|
Or you can try telling CMake to make a package for you. For Debian it is:
|
|
|
|
$ cpack -G DEB
|
2014-10-14 00:08:15 +02:00
|
|
|
# dpkg -i termo-*.deb
|
2014-10-09 23:47:24 +02:00
|
|
|
|
|
|
|
To see the library in action, you can try running the demos, which are
|
|
|
|
statically linked against the library, and hence they can be run as they are:
|
|
|
|
|
|
|
|
$ make demos
|
|
|
|
|
|
|
|
What's Different From the Original termkey?
|
|
|
|
-------------------------------------------
|
|
|
|
The main change is throwing away any UTF-8 dependent code, making the library
|
|
|
|
capable of handling all unibyte and multibyte encodings supported by iconv on
|
2014-10-14 00:08:15 +02:00
|
|
|
your system. The characters are still presented as Unicode in the end, however,
|
2014-10-09 23:47:24 +02:00
|
|
|
as the other sensible option is wchar_t and that doesn't really work well, see
|
|
|
|
http://gnu.org/software/libunistring/manual/libunistring.html#The-wchar_005ft-mess
|
|
|
|
|
2014-11-19 02:47:28 +01:00
|
|
|
To make the mouse parsing support actually useful, some API has been added to
|
|
|
|
set the proper modes on request, and unset them appropriately while destroying.
|
|
|
|
You can have a look at demo-draw.c for an example.
|
|
|
|
|
2014-10-09 23:47:24 +02:00
|
|
|
Another change worth mentioning is the usage of CMake instead of the problematic
|
|
|
|
libtool-based Makefile. Now you can include this project in your other CMake-
|
|
|
|
-based projects and simply import the target. No package maintainer action is
|
|
|
|
needed for you to enjoy the benefits of proper terminal input.
|
|
|
|
|
|
|
|
The rest is just me going silly over formatting and various unimportant stuff.
|
|
|
|
Oh, and I've deleted the manpages. It needs more Doxygen. :) TBD
|
|
|
|
|
2015-09-27 01:20:11 +02:00
|
|
|
Contributing and Support
|
|
|
|
------------------------
|
|
|
|
Use this project's GitHub to report any bugs, request features, or submit pull
|
|
|
|
requests. If you want to discuss this project, or maybe just hang out with
|
|
|
|
the developer, feel free to join me at irc://anathema.irc.so, channel #anathema.
|
|
|
|
|
2014-10-09 23:47:24 +02:00
|
|
|
License
|
|
|
|
-------
|
2014-11-19 02:47:28 +01:00
|
|
|
`termo' is based on the `termkey' library, originally written by Paul Evans
|
2014-10-09 23:47:24 +02:00
|
|
|
<leonerd@leonerd.org.uk>, with additional changes made by Přemysl Janouch
|
|
|
|
<p.janouch@gmail.com>.
|
|
|
|
|
|
|
|
You may use the software under the terms of the MIT license, the text of which
|
|
|
|
is included within the package, see the file LICENSE.
|