This commit ports the XKB handling to the new kbd interface, and makes
the input subsystem use it without any direct knowledge of XKB.
Some code is moved around but there are no functional changes.
Signed-off-by: Ran Benita <ran234@gmail.com>
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
This defines the API the keyboard backends will need to implement. It is
based on what's in input_xkb.h but cleaned up and simplified.
Signed-off-by: Ran Benita <ran234@gmail.com>
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
We now properly draw fonts with OpenGL. We now use FreeType2 instead of
pango to avoid big dependencies.
We also add a DejaVu font so we currently don't have to deal with font
selection.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
To avoid cairo dependencies we now take a compositor reference in the
font backend so fonts can be drawn with GL textures instead of cairo.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
OpenGL pulls in lot of X dependencies on linux. To avoid this we also
support OpenGLES2 now. This will also allow to run kmscon on
embedded/mobile platforms.
We still get X dependencies through EGL which we cannot avoid as EGL is
compiled with multiple backends on most systems. However, switching to
GLES2 reduces memory footprint by 30MB which is pretty good.
This also enables GLES2 as default in autogen.sh. However, default
behaviour of configure will still be GL.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
We should first create a GL context before we try to find GL functions
to avoid errors on some platforms.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
We should use the context of the compositor instead of directly calling
the GL functions to avoid direct dependencies.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
We have no use for Control_L or Alt_R by themselves, the information is
in the "mods" field.
Signed-off-by: Ran Benita <ran234@gmail.com>
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Instead of drawing with fixed-function GL pipeline we now use our own
shader for texture drawing. This also fixes test_console to no longer
depend on GL.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
We use a 4x4 matrix so we should use the correct uniform handler.
Otherwise we might get errors on some GL implementations.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
To switch to the new drawing subsystem we need a reference to a valid
compositor object so we can retrieve the GL context.
This also applies to the terminal object.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Besides the texture shader this also adds a second shader (def/default)
which is used to draw arbitrary colored vertices to the screen.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Allow other subsystems to retrieve the context of a compositor. The
context has no reference count as it is tied to the compositor.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
To avoid the fixed function pipeline we should use shaders instead of
old glBegin/glEnd. This patch adds two basic shaders and functions that
load and initialize them.
To avoid loading the shaders at runtime we generate a source file which
contains them as strings so they are embedded in the binary.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
This splits off all EGL/GL calls into output_context.c. This way we can
replace the backend of the drawing functions very easily.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
There is no need to retrieve the fd of the compositor as we now have an
eloop subsystem which takes care of event handling.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
These are the only open() calls missing the flag.
Signed-off-by: Ran Benita <ran234@gmail.com>
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
This makes things easier in the common case of
<some error> -> <log error> -> <goto error handler> - <do something with
errno>
Signed-off-by: Ran Benita <ran234@gmail.com>
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>
Allow converting a ucs4 string into a utf8 string. Also export the default
symbol so other subsystems may use it.
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 a direct mapping to X modifiers for now (= Shift, Control,
Lock, Mod1-5).
This gives us more flexibility to adapt it to our needs in the future.
Also we don't have to include libxkbcommon headers just for the modifier
definitions.
Signed-off-by: Ran Benita <ran234@gmail.com>
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
0 is actually a valid unicode value, so instead we use
KMSCON_INPUT_INVALID which is not legal unicode.
Signed-off-by: Ran Benita <ran234@gmail.com>
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>
- Use the number of groups we actually have instead of the maximum
number of groups, when wrapping according to group_wrap control.
- Be careful with negative relative group actions. The group fields of
xkb_state are all unsigned (and have a weird FIXME..), so don't use
them directly.
- Add the grp:ctrl_shift_toggle option to the rmlvo set to also test
locking the previous group (i.e. a negative relative group action).
Signed-off-by: Ran Benita <ran234@gmail.com>
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>