A terminal's GL and GR sets can be mapped to 4 different registers g0 to
g3. The g0-g3 registers can be freely set by the application to predefined
or uploaded character-sets.
We implemented GL and GR as separate registers that are set to the current
g0-g3 states when the applications requests a remapping. So subsequent
changes to g0-g3 don't affect GL and GR. Unfortunately, it turns out this
is wrong. GL and GR should point to the g0-g3 registers instead of copying
them.
This commit fixes the GL and GR pointers to point to g0-g3 instead of
pointing to the underlying character sets. This fixes line-drawing
applications like alsamixer, make-menuconfig and other ncurses based
software.
Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
If we allow users to specify log functions, we should also allow them to
pass a context. This isn't used internally, but may be needed by external
users so provide it.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Major overhaul of the build system. This introduces symbol-versioning for
all exported libraries. Please note that none of these libraries is
stable, yet!
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
This mode is used to start/stop blinking cursors. As vim uses this
heavily, we should simply ignore it to avoid printing useless debug
messages.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
If Shift+Tab is pressed, most keyboard layouts map this to ISO_Left_Tab
which itself should be converted to \e[Z.
Reported-by: Vladimir Kravets
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Pressing the 'Pause/Break' key causes the VTE to hang with no apparent
way to recover (from within kmscon). It must turn on some software flow
control, XON/XOFF or whatever.
We might want to do something with this key, but certainly not *that*.
Signed-off-by: Ran Benita <ran234@gmail.com>
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
This value should not be sent to the application; currently pressing
Scroll Lock does some weird character transposing, which I believe to be
completely accidental.
Signed-off-by: Ran Benita <ran234@gmail.com>
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
It isn't clear from the xterm documentation which buffer to clear when
resetting private mode 1047. However, testing showed that the
alternate-screen is cleared, not the main-screen.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
On DECSET 47, 1047-1049 we switch between normal screen mode and alternate
screen mode. xterm and friends support a titeInhibit resource that
disables this feature, so we add a flag to set this, too. However, there
is currently no way to set this on the command-line. If someone needs
that, we can easily add that.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
If a user has multiple active XKB layouts but only one of them has ASCII
keysyms on the base level, then ctrl+<XY> might actually never work,
because these keys aren't available in the current layout. This patch
tries to find a layout of the user that actually _has_ ascii keysyms on
the base level and passes this information along with the normal keysym
information.
The TSM layer can now use this ascii keysym instead of the normal unicode
keysym to handle ctrl+<XY> shortcuts. This is the same way xterm et. al.
handle this, so it seems to be a good idea to do this in TSM, too.
Reported (and mainly written) by Ran Benita.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Before starting a pty on a terminal, we now perform a hard-reset to avoid
any left-overs from the previous pty.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
We really need to clean this up and allow parsing of grabs in conf.c
again. xkbcommon is now mandatory so we can fix all the input layers to
use it.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
This converts a warning into a debug message to avoid spending too much
time in the logger when parsing unknown content. This speeds up "cat
/dev/urandom" by like 1000x.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Sorry for the big commit, but I was working on the wlterm application and
then thought I can rework the whole configure-logic again. This mainly
renames all build-defines to BUILD_DEFINE_* and BUILD_HAVE_* and allows
specifying which applications to build via --enable-kmscon/--enable-wlterm
and similar.
wlterm is a new application which is a native wayland client with no
external dependencies. It serves several purposes:
* It uses TSM (not yet implemented, but will come soon) to create a
console independent from kmscon. This shows how TSM can easily be used
to create independent terminal emulators.
* It is a native wayland application (probably the first independent
wayland app so far?) and is used to test how well the wayland API
works. As wayland is still under heavy development, we need more
application-writers who report back whether the wayland-API makes
sense to them and whether it works correctly.
* A proper terminal-emulator for wayland! There is currently no proper
emulator so we really need something that we can work with.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Nearly all terminals behave differently regarding Shift+FX keys. We now
mimic the behavior of the classic VT220 instead of the new-style function
keys. Nearly all applications expect the old codes.
This might be changed in the future, though. It does make much more sense
to send the new codes as they provide more information to the application.
And remappings should be done via XKB instead of inside of kmscon.
However, as long as xkbcommon does not have a config-file, we will be
stuck with this little hack.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
We do not want to depend on uterm just for the modifiers so introduce new
modifier-names which are in-sync with the UTERM names.
Inside of kmscon we still use the UTERM names everywhere, but inside of
TSM we now rely on the new names.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Instead of accessing kmscon-state we now add a helper to select the
palette and make the terminal-subsystem use it on initialization.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>