Move all documentation into EXTRA_DIST, otherwise it gets installed systemwide.
And probably no one is interested in having the README installed in the system.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
This is a first attempt of a freetype2 backend for the font drawing functions.
This avoids the heavy pango/cairo dependencies, although, we might lose
important font handling that pango does for us like correctly drawing combined
characters.
This is still a stub implementation. The drawing operations are not supported,
yet. Use --enable-pango during configure to enable the still working pango
backend.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
We use a new font factory which is used to create a new font. It will later also
be used to cache fonts and select proper system fonts.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Instead of allocating big buffers with kmscon_char's for every character we now
reduce a single character to an integer. This integer is either the Unicode
codepoint or an ID to an internally allocated string.
The so called kmscon_symbol_t integer can now be used as if it were a classic
"char" value without bothering with combining marks etc.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Just some renames/moving/prefixing to conform to the style of the
other files.
Signed-off-by: Ran Benita <ran234@gmail.com>
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
This commit introduces a new kmscon_input_event structure which is
delivered to the input consumer. The information provided is
- The evdev scancode (=physical keyboard key).
- The X keysym (a symbol representing what the typist really intended).
- The active modifiers (e.g. Shift, Control..)
- The unicode (UCS-4) value, when it makes sense.
To achieve this we add two dependencies:
- libxkbcommon (this entails xproto and kbproto, but shouldn't bring any of
big X dependencies)
- A function to translate keysyms to unicode values (taken from xlib,
copied in-tree).
libxkbcommon is not an all-around solution, and requires various degrees
of supporting code, depending on how much we wish to support. This
commit implements the common, basic uses:
- Choosing layouts, variants and options
- Switching groups
- Switching shift-levels
- Setting modifiers
Though some stuff is missing. Further information in the comments.
test_input.c is updated to use the new input event interface. You can
change the layouts in input.c:init_input() and see what works and what
doesn't.
Signed-off-by: Ran Benita <ran234@gmail.com>
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
It should:
- Capture your keypresses
- Announce when a device is added or removed (with --enable-debug)
- stop/start capturing on SIGQUIT (Ctrl-\)
Signed-off-by: Ran Benita <ran234@gmail.com>
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
This does all the boring stuff for an input subsystem:
- Input device discovery using udev
- Input device hotplug (add/remove)
- Reading the evdev data from the devices
- Publishing input events to a callback through the eloop
- Suspending and resuming the input capture
Currently the delivered input events are basically just evdev's
"struct input_event" (type, code, value). More work is required to
have it pass out useful data.
Signed-off-by: Ran Benita <ran234@gmail.com>
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
vte: This adds a dummy VTE subsystem. It will be used to emulate a vt100
terminal based on our console subsystem.
terminal: This ties together several subsystems including the output-, the
console- and the vte-subsystem.
The test_terminal test application can be used to test the terminal. It is
supposed to provide a full vt100 implementation which is displayed on all
available screens.
Most of the functionality here is not implemented yet and only a dummy function.
These will be added in later commits.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
This test app is used to stress test the buffer implementation and finding bugs
of the scrollback-buffer rotations etc.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
- Use C99 and gnu extensions.
- Explicitly link against libdrm (more strict linkers like gold would
complain).
- Consistently use *_CPPFLAGS where due.
- Clear the default CFLAGS.
Signed-off-by: Ran Benita <ran234@gmail.com>
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
The buffer object manages the cells and scrollback buffer. It is optimized for
speed: fast rotations, fast resize, etc.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
As long as we are run in a VT we need to correctly handle VT-switches to avoid
blocking the crtc/input.
This is copied from wayland-compositor demos and modified to fit to our needs.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
We simply forward all log messages to stderr. We use syslog/prink-like severity
prefixes. Use systemd or alike to forward stderr to syslog, kernel-log or
similar.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
This commit adds basic autoconf + automake files to build the project.
It also adds a main.c stub in order to simulate the main binary.
The configure script uses pkg-config to find the libraries. The usual
stuff should work. The only additional option right now is:
./configure --enable-debug [To enable debugging symbols]
The Makefile should also support the standard stuff:
make [To build the kmscon binary]
make check [To build the test_* binaries]
make dist [To create a tarball]
make clean
make install
etc.
To start from a clean tree (e.g. git clean -dfx), do something like the
following:
./autogen.sh
./configure --enable-debug CFLAGS=-O0
make
It all should work well enough for now.
Signed-off-by: Ran Benita <ran234@gmail.com>
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>