diff --git a/README.md b/README.md
index e37acc8..3ec6009 100644
--- a/README.md
+++ b/README.md
@@ -1,14 +1,15 @@
cool-old-term is a terminal emulator which tries to mimic the look and feel of the old cathode tube screens.
It has been designed to be eye-candy, customizable, and reasonably lightweight.
-It is a fork of another qt5 terminal emulator: https://github.com/jorgen/yat
+It now uses the konsole engine which is powerful and stable.
To build and launch it (Qt5.2 are required):
- git clone https://github.com/Swordifish90/cool-old-term
+ git clone https://github.com/Swordifish90/cool-old-term.git
cd cool-old-term
- qmake
- make
+ cd konsole-qml-plugin
+ qmake && make && make install
+ cd ..
./cool-old-term
This is still an eary release, but you are free to test it and tell me what do you think.
diff --git a/qml/cool-old-term/ColorButton.qml b/app/ColorButton.qml
similarity index 100%
rename from qml/cool-old-term/ColorButton.qml
rename to app/ColorButton.qml
diff --git a/qml/cool-old-term/HighlightArea.qml b/app/HighlightArea.qml
similarity index 100%
rename from qml/cool-old-term/HighlightArea.qml
rename to app/HighlightArea.qml
diff --git a/qml/cool-old-term/SettingComponent.qml b/app/SettingComponent.qml
similarity index 100%
rename from qml/cool-old-term/SettingComponent.qml
rename to app/SettingComponent.qml
diff --git a/qml/cool-old-term/SettingsWindow.qml b/app/SettingsWindow.qml
similarity index 100%
rename from qml/cool-old-term/SettingsWindow.qml
rename to app/SettingsWindow.qml
diff --git a/qml/cool-old-term/ShaderManager.qml b/app/ShaderManager.qml
similarity index 100%
rename from qml/cool-old-term/ShaderManager.qml
rename to app/ShaderManager.qml
diff --git a/qml/cool-old-term/ShaderSettings.qml b/app/ShaderSettings.qml
similarity index 100%
rename from qml/cool-old-term/ShaderSettings.qml
rename to app/ShaderSettings.qml
diff --git a/qml/cool-old-term/Storage.qml b/app/Storage.qml
similarity index 100%
rename from qml/cool-old-term/Storage.qml
rename to app/Storage.qml
diff --git a/qml/cool-old-term/TerminalWindow.qml b/app/TerminalWindow.qml
similarity index 86%
rename from qml/cool-old-term/TerminalWindow.qml
rename to app/TerminalWindow.qml
index 7b1927f..8b5db42 100644
--- a/qml/cool-old-term/TerminalWindow.qml
+++ b/app/TerminalWindow.qml
@@ -23,6 +23,7 @@ import QtQuick.Window 2.0
import QtQuick.Controls 1.0
import QtGraphicalEffects 1.0
+import org.kde.konsole 0.1
ApplicationWindow{
id: terminalWindow
@@ -95,15 +96,29 @@ ApplicationWindow{
source: shadersettings.frame_source
}
- TerminalScreen {
+ KTerminal {
id: terminal
- anchors.fill: parent
- //FIXME: Ugly forced clear terminal at the beginning
+ font.pointSize: 15
+ font.family: "Pet Me"
+
+ colorScheme: "WhiteOnBlack"
+ width: parent.width
+ height: parent.height
+
+ session: KSession {
+ id: ksession
+ kbScheme: "linux"
+
+ onFinished: {
+ Qt.quit()
+ }
+ }
+
Component.onCompleted: {
- terminal.screen.sendKey("l", 76, 67108864);
- terminal.setTerminalHeight();
- terminal.setTerminalWidth();
+ font.pointSize = 15;
+ font.family = "Pet Me";
+
}
}
diff --git a/app/app.qmlproject.user b/app/app.qmlproject.user
new file mode 100644
index 0000000..c73232a
--- /dev/null
+++ b/app/app.qmlproject.user
@@ -0,0 +1,139 @@
+
+
+
+
+
+ ProjectExplorer.Project.ActiveTarget
+ 0
+
+
+ ProjectExplorer.Project.EditorSettings
+
+ true
+ false
+ true
+
+ Cpp
+
+ CppGlobal
+
+
+
+ QmlJS
+
+ QmlJSGlobal
+
+
+ 2
+ UTF-8
+ false
+ 4
+ false
+ true
+ 1
+ true
+ 0
+ true
+ 0
+ 8
+ true
+ 1
+ true
+ true
+ true
+ false
+
+
+
+ ProjectExplorer.Project.PluginSettings
+
+
+
+ ProjectExplorer.Project.Target.0
+
+ Desktop Qt 5.2.0 GCC 64bit
+ Desktop Qt 5.2.0 GCC 64bit
+ qt.520.gcc_64.essentials_kit
+ -1
+ 0
+ 0
+ 0
+
+
+ 0
+ Deploy
+
+ ProjectExplorer.BuildSteps.Deploy
+
+ 1
+ Deploy locally
+
+ ProjectExplorer.DefaultDeployConfiguration
+
+ 1
+
+
+
+ false
+ false
+ false
+ false
+ true
+ 0.01
+ 10
+ true
+ 1
+ 25
+
+ 1
+ true
+ false
+ true
+ valgrind
+
+ 0
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+ 10
+ 11
+ 12
+ 13
+ 14
+
+ 0
+
+
+ QML Scene
+ QmlProjectManager.QmlRunConfiguration.QmlScene
+ CurrentFile
+
+ 3768
+ false
+ true
+ false
+ true
+ false
+
+ 1
+
+
+
+ ProjectExplorer.Project.TargetCount
+ 1
+
+
+ ProjectExplorer.Project.Updater.EnvironmentId
+ {76aa359f-2663-43c5-a318-565e5b679f49}
+
+
+ ProjectExplorer.Project.Updater.FileVersion
+ 15
+
+
diff --git a/qml/cool-old-term/fonts/Atari8bit/ATARI400800_original.TTF b/app/fonts/Atari8bit/ATARI400800_original.TTF
similarity index 100%
rename from qml/cool-old-term/fonts/Atari8bit/ATARI400800_original.TTF
rename to app/fonts/Atari8bit/ATARI400800_original.TTF
diff --git a/qml/cool-old-term/fonts/Atari8bit/ATARI400800_rounded.TTF b/app/fonts/Atari8bit/ATARI400800_rounded.TTF
similarity index 100%
rename from qml/cool-old-term/fonts/Atari8bit/ATARI400800_rounded.TTF
rename to app/fonts/Atari8bit/ATARI400800_rounded.TTF
diff --git a/qml/cool-old-term/fonts/Atari8bit/ATARI400800_squared.TTF b/app/fonts/Atari8bit/ATARI400800_squared.TTF
similarity index 100%
rename from qml/cool-old-term/fonts/Atari8bit/ATARI400800_squared.TTF
rename to app/fonts/Atari8bit/ATARI400800_squared.TTF
diff --git a/qml/cool-old-term/fonts/Atari8bit/ReadMe.rtf b/app/fonts/Atari8bit/ReadMe.rtf
similarity index 100%
rename from qml/cool-old-term/fonts/Atari8bit/ReadMe.rtf
rename to app/fonts/Atari8bit/ReadMe.rtf
diff --git a/qml/cool-old-term/fonts/Commodore64/C64_Elite_Mono_v1.0-STYLE.ttf b/app/fonts/Commodore64/C64_Elite_Mono_v1.0-STYLE.ttf
similarity index 100%
rename from qml/cool-old-term/fonts/Commodore64/C64_Elite_Mono_v1.0-STYLE.ttf
rename to app/fonts/Commodore64/C64_Elite_Mono_v1.0-STYLE.ttf
diff --git a/qml/cool-old-term/fonts/Commodore64/C64_Pro_Mono_v1.0-STYLE.ttf b/app/fonts/Commodore64/C64_Pro_Mono_v1.0-STYLE.ttf
similarity index 100%
rename from qml/cool-old-term/fonts/Commodore64/C64_Pro_Mono_v1.0-STYLE.ttf
rename to app/fonts/Commodore64/C64_Pro_Mono_v1.0-STYLE.ttf
diff --git a/qml/cool-old-term/fonts/Commodore64/C64_Pro_v1.0-STYLE.ttf b/app/fonts/Commodore64/C64_Pro_v1.0-STYLE.ttf
similarity index 100%
rename from qml/cool-old-term/fonts/Commodore64/C64_Pro_v1.0-STYLE.ttf
rename to app/fonts/Commodore64/C64_Pro_v1.0-STYLE.ttf
diff --git a/qml/cool-old-term/fonts/Commodore64/C64_User_Mono_v1.0-STYLE.ttf b/app/fonts/Commodore64/C64_User_Mono_v1.0-STYLE.ttf
similarity index 100%
rename from qml/cool-old-term/fonts/Commodore64/C64_User_Mono_v1.0-STYLE.ttf
rename to app/fonts/Commodore64/C64_User_Mono_v1.0-STYLE.ttf
diff --git a/qml/cool-old-term/fonts/Commodore64/C64_User_v1.0-STYLE.ttf b/app/fonts/Commodore64/C64_User_v1.0-STYLE.ttf
similarity index 100%
rename from qml/cool-old-term/fonts/Commodore64/C64_User_v1.0-STYLE.ttf
rename to app/fonts/Commodore64/C64_User_v1.0-STYLE.ttf
diff --git a/qml/cool-old-term/fonts/Commodore64/license.txt b/app/fonts/Commodore64/license.txt
similarity index 100%
rename from qml/cool-old-term/fonts/Commodore64/license.txt
rename to app/fonts/Commodore64/license.txt
diff --git a/qml/cool-old-term/fonts/CommodorePET/COMMODORE_PET.ttf b/app/fonts/CommodorePET/COMMODORE_PET.ttf
similarity index 100%
rename from qml/cool-old-term/fonts/CommodorePET/COMMODORE_PET.ttf
rename to app/fonts/CommodorePET/COMMODORE_PET.ttf
diff --git a/qml/cool-old-term/fonts/CommodorePET/COMMODORE_PET_128.ttf b/app/fonts/CommodorePET/COMMODORE_PET_128.ttf
similarity index 100%
rename from qml/cool-old-term/fonts/CommodorePET/COMMODORE_PET_128.ttf
rename to app/fonts/CommodorePET/COMMODORE_PET_128.ttf
diff --git a/qml/cool-old-term/fonts/CommodorePET/COMMODORE_PET_128_2y.ttf b/app/fonts/CommodorePET/COMMODORE_PET_128_2y.ttf
similarity index 100%
rename from qml/cool-old-term/fonts/CommodorePET/COMMODORE_PET_128_2y.ttf
rename to app/fonts/CommodorePET/COMMODORE_PET_128_2y.ttf
diff --git a/qml/cool-old-term/fonts/CommodorePET/COMMODORE_PET_2x.ttf b/app/fonts/CommodorePET/COMMODORE_PET_2x.ttf
similarity index 100%
rename from qml/cool-old-term/fonts/CommodorePET/COMMODORE_PET_2x.ttf
rename to app/fonts/CommodorePET/COMMODORE_PET_2x.ttf
diff --git a/qml/cool-old-term/fonts/CommodorePET/COMMODORE_PET_2y.ttf b/app/fonts/CommodorePET/COMMODORE_PET_2y.ttf
similarity index 100%
rename from qml/cool-old-term/fonts/CommodorePET/COMMODORE_PET_2y.ttf
rename to app/fonts/CommodorePET/COMMODORE_PET_2y.ttf
diff --git a/qml/cool-old-term/fonts/CommodorePET/COMMODORE_PET_64.ttf b/app/fonts/CommodorePET/COMMODORE_PET_64.ttf
similarity index 100%
rename from qml/cool-old-term/fonts/CommodorePET/COMMODORE_PET_64.ttf
rename to app/fonts/CommodorePET/COMMODORE_PET_64.ttf
diff --git a/qml/cool-old-term/fonts/CommodorePET/COMMODORE_PET_64_2y.ttf b/app/fonts/CommodorePET/COMMODORE_PET_64_2y.ttf
similarity index 100%
rename from qml/cool-old-term/fonts/CommodorePET/COMMODORE_PET_64_2y.ttf
rename to app/fonts/CommodorePET/COMMODORE_PET_64_2y.ttf
diff --git a/qml/cool-old-term/fonts/CommodorePET/FreeLicense.txt b/app/fonts/CommodorePET/FreeLicense.txt
similarity index 100%
rename from qml/cool-old-term/fonts/CommodorePET/FreeLicense.txt
rename to app/fonts/CommodorePET/FreeLicense.txt
diff --git a/qml/cool-old-term/fonts/Dos/Perfect DOS VGA 437 Win.ttf b/app/fonts/Dos/Perfect DOS VGA 437 Win.ttf
similarity index 100%
rename from qml/cool-old-term/fonts/Dos/Perfect DOS VGA 437 Win.ttf
rename to app/fonts/Dos/Perfect DOS VGA 437 Win.ttf
diff --git a/qml/cool-old-term/fonts/Dos/Perfect DOS VGA 437.ttf b/app/fonts/Dos/Perfect DOS VGA 437.ttf
similarity index 100%
rename from qml/cool-old-term/fonts/Dos/Perfect DOS VGA 437.ttf
rename to app/fonts/Dos/Perfect DOS VGA 437.ttf
diff --git a/qml/cool-old-term/fonts/Dos/dos437.txt b/app/fonts/Dos/dos437.txt
similarity index 100%
rename from qml/cool-old-term/fonts/Dos/dos437.txt
rename to app/fonts/Dos/dos437.txt
diff --git a/qml/cool-old-term/frames/BlackRoughFrame.qml b/app/frames/BlackRoughFrame.qml
similarity index 100%
rename from qml/cool-old-term/frames/BlackRoughFrame.qml
rename to app/frames/BlackRoughFrame.qml
diff --git a/qml/cool-old-term/frames/NoFrame.qml b/app/frames/NoFrame.qml
similarity index 100%
rename from qml/cool-old-term/frames/NoFrame.qml
rename to app/frames/NoFrame.qml
diff --git a/qml/cool-old-term/frames/WhiteSimpleFrame.qml b/app/frames/WhiteSimpleFrame.qml
similarity index 100%
rename from qml/cool-old-term/frames/WhiteSimpleFrame.qml
rename to app/frames/WhiteSimpleFrame.qml
diff --git a/qml/cool-old-term/frames/images/black-frame-normals.png b/app/frames/images/black-frame-normals.png
similarity index 100%
rename from qml/cool-old-term/frames/images/black-frame-normals.png
rename to app/frames/images/black-frame-normals.png
diff --git a/qml/cool-old-term/frames/images/black-frame.png b/app/frames/images/black-frame.png
similarity index 100%
rename from qml/cool-old-term/frames/images/black-frame.png
rename to app/frames/images/black-frame.png
diff --git a/qml/cool-old-term/frames/images/screen-frame-normals.png b/app/frames/images/screen-frame-normals.png
similarity index 100%
rename from qml/cool-old-term/frames/images/screen-frame-normals.png
rename to app/frames/images/screen-frame-normals.png
diff --git a/qml/cool-old-term/frames/images/screen-frame.png b/app/frames/images/screen-frame.png
similarity index 100%
rename from qml/cool-old-term/frames/images/screen-frame.png
rename to app/frames/images/screen-frame.png
diff --git a/qml/cool-old-term/frames/utils/NoFrameShader.qml b/app/frames/utils/NoFrameShader.qml
similarity index 100%
rename from qml/cool-old-term/frames/utils/NoFrameShader.qml
rename to app/frames/utils/NoFrameShader.qml
diff --git a/qml/cool-old-term/frames/utils/TerminalFrame.qml b/app/frames/utils/TerminalFrame.qml
similarity index 100%
rename from qml/cool-old-term/frames/utils/TerminalFrame.qml
rename to app/frames/utils/TerminalFrame.qml
diff --git a/qml/cool-old-term/frames/utils/WhiteFrameShader.qml b/app/frames/utils/WhiteFrameShader.qml
similarity index 100%
rename from qml/cool-old-term/frames/utils/WhiteFrameShader.qml
rename to app/frames/utils/WhiteFrameShader.qml
diff --git a/qml/cool-old-term/main.qml b/app/main.qml
similarity index 97%
rename from qml/cool-old-term/main.qml
rename to app/main.qml
index ffabe48..0ef3762 100644
--- a/qml/cool-old-term/main.qml
+++ b/app/main.qml
@@ -21,6 +21,9 @@
import QtQuick 2.1
import QtQuick.Window 2.0
import QtQuick.Controls 1.0
+
+import org.kde.konsole 0.1
+
Item{
ShaderSettings{
id: shadersettings
diff --git a/cool-old-term b/cool-old-term
new file mode 100755
index 0000000..1ecde91
--- /dev/null
+++ b/cool-old-term
@@ -0,0 +1,2 @@
+#!/bin/bash
+qmlscene -I imports app/main.qml
diff --git a/cool-old-term.pro b/cool-old-term.pro
index 05ef0d0..a478cea 100644
--- a/cool-old-term.pro
+++ b/cool-old-term.pro
@@ -1,52 +1,4 @@
-QT += widgets quick core-private gui-private qml-private quick quick-private
-
-include(yat/yat_declarative/yat_declarative.pro)
-
-# If your application uses the Qt Mobility libraries, uncomment the following
-# lines and add the respective components to the MOBILITY variable.
-# CONFIG += mobility
-# MOBILITY +=
-
-# The .cpp file which was generated for your project. Feel free to hack it.
-SOURCES += main.cpp
-
-# Installation path
-# target.path =
-
-OTHER_FILES += \
- $$PWD/qml/cool-old-term/main.qml \
- $$PWD/qml/cool-old-term/TerminalLine.qml \
- $$PWD/qml/cool-old-term/TerminalScreen.qml \
- $$PWD/qml/cool-old-term/TerminalText.qml \
- $$PWD/qml/cool-old-term/HighlightArea.qml \
- $$PWD/qml/cool-old-term/ShaderSettings.qml \
- $$PWD/qml/images/frame.png \
- $$PWD/qml/cool-old-term/SettingsWindow.qml \
- $$PWD/qml/cool-old-term/SettingComponent.qml \
- $$PWD/qml/cool-old-term/ColorButton.qml \
- $$PWD/qml/cool-old-term/TerminalFrame.qml \
- $$PWD/qml/cool-old-term/WhiteFrameShader.qml \
- $$PWD/qml/cool-old-term/NoFrameShader.qml \
- $$PWD/qml/cool-old-term/WhiteSimpleFrame.qml \
- qml/cool-old-term/BlackRoughFrame.qml \
- qml/cool-old-term/Frames/BlackRoughFrame.qml \
- qml/cool-old-term/Frames/NoFrameShader.qml \
- qml/cool-old-term/Frames/WhiteFrameShader.qml \
- qml/cool-old-term/Frames/WhiteSimpleFrame.qml \
- qml/cool-old-term/Frames/TerminalFrame.qml \
- qml/cool-old-term/Frames/utils/NoFrameShader.qml \
- qml/cool-old-term/Frames/utils/TerminalFrame.qml \
- qml/cool-old-term/Frames/utils/WhiteFrameShader.qml \
- qml/cool-old-term/frames/WhiteSimpleFrame.qml \
- qml/cool-old-term/frames/BlackRoughFrame.qml \
- qml/cool-old-term/frames/utils/NoFrameShader.qml \
- qml/cool-old-term/frames/utils/TerminalFrame.qml \
- qml/cool-old-term/frames/utils/WhiteFrameShader.qml \
- qml/cool-old-term/frames/images/screen-frame.png \
- qml/cool-old-term/frames/images/screen-frame-normals.png \
- qml/cool-old-term/frames/images/black-frame.png \
- qml/cool-old-term/frames/images/black-frame-normals.png \
- qml/cool-old-term/frames/NoFrame.qml \
- qml/cool-old-term/TerminalWindow.qml \
- qml/cool-old-term/Storage.qml \
- qml/cool-old-term/ShaderManager.qml
+TEMPLATE =subdirs
+CONFIG += ordered
+SUBDIRS= konsole-qml-plugin\
+ app
diff --git a/konsole-qml-plugin/Makefile b/konsole-qml-plugin/Makefile
new file mode 100644
index 0000000..c78ed92
--- /dev/null
+++ b/konsole-qml-plugin/Makefile
@@ -0,0 +1,5523 @@
+#############################################################################
+# Makefile for building: libkdekonsole.so
+# Generated by qmake (3.0) (Qt 5.2.1)
+# Project: konsole-qml-plugin.pro
+# Template: lib
+# Command: /usr/lib/x86_64-linux-gnu/qt5/bin/qmake -o Makefile konsole-qml-plugin.pro
+#############################################################################
+
+MAKEFILE = Makefile
+
+####### Compiler, tools and options
+
+CC = gcc
+CXX = g++
+DEFINES = -DHAVE_POSIX_OPENPT -DHAVE_SYS_TIME_H -DHAVE_UPDWTMPX -DQ_WS_UBUNTU -DQT_NO_DEBUG -DQT_PLUGIN -DQT_QUICK_LIB -DQT_QML_LIB -DQT_WIDGETS_LIB -DQT_NETWORK_LIB -DQT_GUI_LIB -DQT_CORE_LIB
+CFLAGS = -m64 -pipe -O2 -fvisibility=hidden -D_REENTRANT -Wall -W -fPIC $(DEFINES)
+CXXFLAGS = -m64 -pipe -O2 -fvisibility=hidden -fvisibility-inlines-hidden -D_REENTRANT -Wall -W -fPIC $(DEFINES)
+INCPATH = -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 -I. -I/usr/include/qt5 -I/usr/include/qt5/QtQuick -I/usr/include/qt5/QtQml -I/usr/include/qt5/QtWidgets -I/usr/include/qt5/QtNetwork -I/usr/include/qt5/QtGui -I/usr/include/qt5/QtCore -I.moc
+LINK = g++
+LFLAGS = -m64 -Wl,-O1 -shared
+LIBS = $(SUBLIBS) -L/usr/X11R6/lib64 -lQt5Quick -L/usr/lib/x86_64-linux-gnu -lQt5Qml -lQt5Widgets -lQt5Network -lQt5Gui -lQt5Core -lGL -lpthread
+AR = ar cqs
+RANLIB =
+QMAKE = /usr/lib/x86_64-linux-gnu/qt5/bin/qmake
+TAR = tar -cf
+COMPRESS = gzip -9f
+COPY = cp -f
+SED = sed
+COPY_FILE = cp -f
+COPY_DIR = cp -f -R
+STRIP = strip
+INSTALL_FILE = install -m 644 -p
+INSTALL_DIR = $(COPY_DIR)
+INSTALL_PROGRAM = install -m 755 -p
+DEL_FILE = rm -f
+SYMLINK = ln -f -s
+DEL_DIR = rmdir
+MOVE = mv -f
+CHK_DIR_EXISTS= test -d
+MKDIR = mkdir -p
+
+####### Output directory
+
+OBJECTS_DIR = .obj/
+
+####### Files
+
+SOURCES = src/plugin.cpp \
+ src/Pty.cpp \
+ src/kptyprocess.cpp \
+ src/kptydevice.cpp \
+ src/kpty.cpp \
+ src/kprocess.cpp \
+ src/ShellCommand.cpp \
+ src/Vt102Emulation.cpp \
+ src/tools.cpp \
+ src/Session.cpp \
+ src/Screen.cpp \
+ src/KeyboardTranslator.cpp \
+ src/Emulation.cpp \
+ src/History.cpp \
+ src/BlockArray.cpp \
+ src/TerminalCharacterDecoder.cpp \
+ src/konsole_wcwidth.cpp \
+ src/ScreenWindow.cpp \
+ src/Filter.cpp \
+ src/ColorScheme.cpp \
+ src/TerminalDisplay.cpp \
+ src/ksession.cpp .moc/moc_plugin.cpp \
+ .moc/moc_Pty.cpp \
+ .moc/moc_kptyprocess.cpp \
+ .moc/moc_kptydevice.cpp \
+ .moc/moc_kprocess.cpp \
+ .moc/moc_Vt102Emulation.cpp \
+ .moc/moc_Session.cpp \
+ .moc/moc_Emulation.cpp \
+ .moc/moc_ScreenWindow.cpp \
+ .moc/moc_Filter.cpp \
+ .moc/moc_TerminalDisplay.cpp \
+ .moc/moc_ksession.cpp
+OBJECTS = .obj/plugin.o \
+ .obj/Pty.o \
+ .obj/kptyprocess.o \
+ .obj/kptydevice.o \
+ .obj/kpty.o \
+ .obj/kprocess.o \
+ .obj/ShellCommand.o \
+ .obj/Vt102Emulation.o \
+ .obj/tools.o \
+ .obj/Session.o \
+ .obj/Screen.o \
+ .obj/KeyboardTranslator.o \
+ .obj/Emulation.o \
+ .obj/History.o \
+ .obj/BlockArray.o \
+ .obj/TerminalCharacterDecoder.o \
+ .obj/konsole_wcwidth.o \
+ .obj/ScreenWindow.o \
+ .obj/Filter.o \
+ .obj/ColorScheme.o \
+ .obj/TerminalDisplay.o \
+ .obj/ksession.o \
+ .obj/moc_plugin.o \
+ .obj/moc_Pty.o \
+ .obj/moc_kptyprocess.o \
+ .obj/moc_kptydevice.o \
+ .obj/moc_kprocess.o \
+ .obj/moc_Vt102Emulation.o \
+ .obj/moc_Session.o \
+ .obj/moc_Emulation.o \
+ .obj/moc_ScreenWindow.o \
+ .obj/moc_Filter.o \
+ .obj/moc_TerminalDisplay.o \
+ .obj/moc_ksession.o
+DIST = /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/shell-unix.conf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/unix.conf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/linux.conf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base.conf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base-unix.conf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-base.conf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-unix.conf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/qconfig.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3d.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3d_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquick.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquick_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_designer.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_help.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_location.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimedia.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_platformsupport_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_positioning.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qml.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qml_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmldevtools_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmltest.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmltest_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quick.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quick_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickparticles_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_script.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_scripttools.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sensors.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_svg.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uitools.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkit.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkit_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkitwidgets.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkitwidgets_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xmlpatterns.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_functions.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_config.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64/qmake.conf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_post.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exclusive_builds.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_pre.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resolve_config.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_post.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/hide_symbols.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resources.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/moc.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/opengl.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/uic.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/thread.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/gdb_dwarf_index.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/warn_on.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/testcase_targets.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exceptions.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/yacc.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/lex.prf \
+ konsole-qml-plugin.pro \
+ konsole-qml-plugin.pro
+QMAKE_TARGET = kdekonsole
+DESTDIR = #avoid trailing-slash linebreak
+TARGET = libkdekonsole.so
+TARGETD = libkdekonsole.so
+
+
+first: all
+####### Implicit rules
+
+.SUFFIXES: .o .c .cpp .cc .cxx .C
+
+.cpp.o:
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
+
+.cc.o:
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
+
+.cxx.o:
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
+
+.C.o:
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
+
+.c.o:
+ $(CC) -c $(CFLAGS) $(INCPATH) -o "$@" "$<"
+
+####### Build rules
+
+all: Makefile $(TARGET)
+
+$(TARGET): $(OBJECTS) $(SUBLIBS) $(OBJCOMP)
+ -$(DEL_FILE) $(TARGET)
+ $(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(LIBS) $(OBJCOMP)
+
+
+
+Makefile: konsole-qml-plugin.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64/qmake.conf /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/shell-unix.conf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/unix.conf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/linux.conf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base.conf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base-unix.conf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-base.conf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-unix.conf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/qconfig.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3d.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3d_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquick.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquick_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_designer.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_help.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_location.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimedia.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_platformsupport_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_positioning.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qml.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qml_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmldevtools_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmltest.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmltest_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quick.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quick_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickparticles_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_script.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_scripttools.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sensors.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_svg.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uitools.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkit.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkit_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkitwidgets.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkitwidgets_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xmlpatterns.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_functions.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_config.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64/qmake.conf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_post.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exclusive_builds.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_pre.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resolve_config.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_post.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/hide_symbols.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resources.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/moc.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/opengl.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/uic.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/thread.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/gdb_dwarf_index.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/warn_on.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/testcase_targets.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exceptions.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/yacc.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/lex.prf \
+ konsole-qml-plugin.pro \
+ /usr/lib/x86_64-linux-gnu/libQt5Quick.prl \
+ /usr/lib/x86_64-linux-gnu/libQt5Qml.prl \
+ /usr/lib/x86_64-linux-gnu/libQt5Network.prl \
+ /usr/lib/x86_64-linux-gnu/libQt5Core.prl \
+ /usr/lib/x86_64-linux-gnu/libQt5Gui.prl \
+ /usr/lib/x86_64-linux-gnu/libQt5Widgets.prl
+ $(QMAKE) -o Makefile konsole-qml-plugin.pro
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/shell-unix.conf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/unix.conf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/linux.conf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base.conf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base-unix.conf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-base.conf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-unix.conf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/qconfig.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3d.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3d_private.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquick.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquick_private.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent_private.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core_private.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus_private.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_designer.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui_private.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_help.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_location.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimedia.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network_private.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl_private.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_platformsupport_private.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_positioning.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport_private.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qml.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qml_private.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmldevtools_private.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmltest.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmltest_private.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quick.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quick_private.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickparticles_private.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_script.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_scripttools.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sensors.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql_private.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_svg.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib_private.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uitools.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkit.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkit_private.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkitwidgets.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkitwidgets_private.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets_private.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml_private.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xmlpatterns.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_functions.prf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_config.prf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64/qmake.conf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_post.prf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exclusive_builds.prf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_pre.prf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resolve_config.prf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_post.prf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/hide_symbols.prf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt.prf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resources.prf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/moc.prf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/opengl.prf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/uic.prf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/thread.prf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/gdb_dwarf_index.prf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/warn_on.prf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/testcase_targets.prf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exceptions.prf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/yacc.prf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/lex.prf:
+konsole-qml-plugin.pro:
+/usr/lib/x86_64-linux-gnu/libQt5Quick.prl:
+/usr/lib/x86_64-linux-gnu/libQt5Qml.prl:
+/usr/lib/x86_64-linux-gnu/libQt5Network.prl:
+/usr/lib/x86_64-linux-gnu/libQt5Core.prl:
+/usr/lib/x86_64-linux-gnu/libQt5Gui.prl:
+/usr/lib/x86_64-linux-gnu/libQt5Widgets.prl:
+qmake: FORCE
+ @$(QMAKE) -o Makefile konsole-qml-plugin.pro
+
+qmake_all: FORCE
+
+dist:
+ @test -d .obj/kdekonsole1.0.0 || mkdir -p .obj/kdekonsole1.0.0
+ $(COPY_FILE) --parents $(SOURCES) $(DIST) .obj/kdekonsole1.0.0/ && $(COPY_FILE) --parents src/plugin.h src/Pty.h src/kptyprocess.h src/kptydevice.h src/kpty.h src/kpty_p.h src/kprocess.h src/ShellCommand.h src/Vt102Emulation.h src/tools.h src/Session.h src/Screen.h src/KeyboardTranslator.h src/Emulation.h src/Character.h src/History.h src/CharacterColor.h src/BlockArray.h src/TerminalCharacterDecoder.h src/konsole_wcwidth.h src/ScreenWindow.h src/DefaultTranslatorText.h src/LineFont.h src/Filter.h src/ExtendedDefaultTranslator.h src/ColorTables.h src/ColorScheme.h src/TerminalDisplay.h src/ksession.h .obj/kdekonsole1.0.0/ && $(COPY_FILE) --parents src/plugin.cpp src/Pty.cpp src/kptyprocess.cpp src/kptydevice.cpp src/kpty.cpp src/kprocess.cpp src/ShellCommand.cpp src/Vt102Emulation.cpp src/tools.cpp src/Session.cpp src/Screen.cpp src/KeyboardTranslator.cpp src/Emulation.cpp src/History.cpp src/BlockArray.cpp src/TerminalCharacterDecoder.cpp src/konsole_wcwidth.cpp src/ScreenWindow.cpp src/Filter.cpp src/ColorScheme.cpp src/TerminalDisplay.cpp src/ksession.cpp .obj/kdekonsole1.0.0/ && (cd `dirname .obj/kdekonsole1.0.0` && $(TAR) kdekonsole1.0.0.tar kdekonsole1.0.0 && $(COMPRESS) kdekonsole1.0.0.tar) && $(MOVE) `dirname .obj/kdekonsole1.0.0`/kdekonsole1.0.0.tar.gz . && $(DEL_FILE) -r .obj/kdekonsole1.0.0
+
+
+clean:compiler_clean
+ -$(DEL_FILE) $(OBJECTS)
+ -$(DEL_FILE) *~ core *.core
+
+
+####### Sub-libraries
+
+distclean: clean
+ -$(DEL_FILE) $(TARGET)
+ -$(DEL_FILE) Makefile
+
+
+mocclean: compiler_moc_header_clean compiler_moc_source_clean
+
+mocables: compiler_moc_header_make_all compiler_moc_source_make_all
+
+check: first
+
+compiler_rcc_make_all:
+compiler_rcc_clean:
+compiler_moc_header_make_all: .moc/moc_plugin.cpp .moc/moc_Pty.cpp .moc/moc_kptyprocess.cpp .moc/moc_kptydevice.cpp .moc/moc_kprocess.cpp .moc/moc_Vt102Emulation.cpp .moc/moc_Session.cpp .moc/moc_Emulation.cpp .moc/moc_ScreenWindow.cpp .moc/moc_Filter.cpp .moc/moc_TerminalDisplay.cpp .moc/moc_ksession.cpp
+compiler_moc_header_clean:
+ -$(DEL_FILE) .moc/moc_plugin.cpp .moc/moc_Pty.cpp .moc/moc_kptyprocess.cpp .moc/moc_kptydevice.cpp .moc/moc_kprocess.cpp .moc/moc_Vt102Emulation.cpp .moc/moc_Session.cpp .moc/moc_Emulation.cpp .moc/moc_ScreenWindow.cpp .moc/moc_Filter.cpp .moc/moc_TerminalDisplay.cpp .moc/moc_ksession.cpp
+.moc/moc_plugin.cpp: src/TerminalDisplay.h \
+ /usr/include/qt5/QtGui/QColor \
+ /usr/include/qt5/QtGui/qcolor.h \
+ /usr/include/qt5/QtGui/qrgb.h \
+ /usr/include/qt5/QtCore/qglobal.h \
+ /usr/include/qt5/QtCore/qconfig.h \
+ /usr/include/qt5/QtCore/qfeatures.h \
+ /usr/include/qt5/QtCore/qsystemdetection.h \
+ /usr/include/qt5/QtCore/qprocessordetection.h \
+ /usr/include/qt5/QtCore/qcompilerdetection.h \
+ /usr/include/qt5/QtCore/qglobalstatic.h \
+ /usr/include/qt5/QtCore/qatomic.h \
+ /usr/include/qt5/QtCore/qbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_bootstrap.h \
+ /usr/include/qt5/QtCore/qgenericatomic.h \
+ /usr/include/qt5/QtCore/qatomic_msvc.h \
+ /usr/include/qt5/QtCore/qatomic_integrity.h \
+ /usr/include/qt5/QtCore/qoldbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_vxworks.h \
+ /usr/include/qt5/QtCore/qatomic_power.h \
+ /usr/include/qt5/QtCore/qatomic_alpha.h \
+ /usr/include/qt5/QtCore/qatomic_armv7.h \
+ /usr/include/qt5/QtCore/qatomic_armv6.h \
+ /usr/include/qt5/QtCore/qatomic_armv5.h \
+ /usr/include/qt5/QtCore/qatomic_bfin.h \
+ /usr/include/qt5/QtCore/qatomic_ia64.h \
+ /usr/include/qt5/QtCore/qatomic_mips.h \
+ /usr/include/qt5/QtCore/qatomic_s390.h \
+ /usr/include/qt5/QtCore/qatomic_sh4a.h \
+ /usr/include/qt5/QtCore/qatomic_sparc.h \
+ /usr/include/qt5/QtCore/qatomic_gcc.h \
+ /usr/include/qt5/QtCore/qatomic_x86.h \
+ /usr/include/qt5/QtCore/qatomic_cxx11.h \
+ /usr/include/qt5/QtCore/qatomic_unix.h \
+ /usr/include/qt5/QtCore/qmutex.h \
+ /usr/include/qt5/QtCore/qlogging.h \
+ /usr/include/qt5/QtCore/qflags.h \
+ /usr/include/qt5/QtCore/qtypeinfo.h \
+ /usr/include/qt5/QtCore/qtypetraits.h \
+ /usr/include/qt5/QtCore/qsysinfo.h \
+ /usr/include/qt5/QtCore/qnamespace.h \
+ /usr/include/qt5/QtCore/qstringlist.h \
+ /usr/include/qt5/QtCore/qalgorithms.h \
+ /usr/include/qt5/QtCore/qdatastream.h \
+ /usr/include/qt5/QtCore/qscopedpointer.h \
+ /usr/include/qt5/QtCore/qiodevice.h \
+ /usr/include/qt5/QtCore/qobject.h \
+ /usr/include/qt5/QtCore/qobjectdefs.h \
+ /usr/include/qt5/QtCore/qobjectdefs_impl.h \
+ /usr/include/qt5/QtCore/qstring.h \
+ /usr/include/qt5/QtCore/qchar.h \
+ /usr/include/qt5/QtCore/qbytearray.h \
+ /usr/include/qt5/QtCore/qrefcount.h \
+ /usr/include/qt5/QtCore/qarraydata.h \
+ /usr/include/qt5/QtCore/qstringbuilder.h \
+ /usr/include/qt5/QtCore/qlist.h \
+ /usr/include/qt5/QtCore/qiterator.h \
+ /usr/include/qt5/QtCore/qcoreevent.h \
+ /usr/include/qt5/QtCore/qmetatype.h \
+ /usr/include/qt5/QtCore/qvarlengtharray.h \
+ /usr/include/qt5/QtCore/qcontainerfwd.h \
+ /usr/include/qt5/QtCore/qisenum.h \
+ /usr/include/qt5/QtCore/qobject_impl.h \
+ /usr/include/qt5/QtCore/qpair.h \
+ /usr/include/qt5/QtCore/qregexp.h \
+ /usr/include/qt5/QtCore/qstringmatcher.h \
+ /usr/include/qt5/QtCore/QPointer \
+ /usr/include/qt5/QtCore/qpointer.h \
+ /usr/include/qt5/QtCore/qsharedpointer.h \
+ /usr/include/qt5/QtCore/qshareddata.h \
+ /usr/include/qt5/QtCore/qsharedpointer_impl.h \
+ /usr/include/qt5/QtCore/qhash.h \
+ src/Filter.h \
+ /usr/include/qt5/QtWidgets/QAction \
+ /usr/include/qt5/QtWidgets/qaction.h \
+ /usr/include/qt5/QtGui/qkeysequence.h \
+ /usr/include/qt5/QtWidgets/qwidget.h \
+ /usr/include/qt5/QtGui/qwindowdefs.h \
+ /usr/include/qt5/QtGui/qwindowdefs_win.h \
+ /usr/include/qt5/QtCore/qmargins.h \
+ /usr/include/qt5/QtCore/qrect.h \
+ /usr/include/qt5/QtCore/qsize.h \
+ /usr/include/qt5/QtCore/qpoint.h \
+ /usr/include/qt5/QtGui/qpaintdevice.h \
+ /usr/include/qt5/QtGui/qpalette.h \
+ /usr/include/qt5/QtGui/qbrush.h \
+ /usr/include/qt5/QtCore/qvector.h \
+ /usr/include/qt5/QtGui/qmatrix.h \
+ /usr/include/qt5/QtGui/qpolygon.h \
+ /usr/include/qt5/QtGui/qregion.h \
+ /usr/include/qt5/QtCore/qline.h \
+ /usr/include/qt5/QtGui/qtransform.h \
+ /usr/include/qt5/QtGui/qpainterpath.h \
+ /usr/include/qt5/QtGui/qimage.h \
+ /usr/include/qt5/QtGui/qpixmap.h \
+ /usr/include/qt5/QtGui/qfont.h \
+ /usr/include/qt5/QtGui/qfontmetrics.h \
+ /usr/include/qt5/QtGui/qfontinfo.h \
+ /usr/include/qt5/QtWidgets/qsizepolicy.h \
+ /usr/include/qt5/QtGui/qcursor.h \
+ /usr/include/qt5/QtGui/qevent.h \
+ /usr/include/qt5/QtCore/qvariant.h \
+ /usr/include/qt5/QtCore/qmap.h \
+ /usr/include/qt5/QtCore/qdebug.h \
+ /usr/include/qt5/QtCore/qtextstream.h \
+ /usr/include/qt5/QtCore/qlocale.h \
+ /usr/include/qt5/QtCore/qset.h \
+ /usr/include/qt5/QtCore/qcontiguouscache.h \
+ /usr/include/qt5/QtCore/qurl.h \
+ /usr/include/qt5/QtCore/qurlquery.h \
+ /usr/include/qt5/QtCore/qfile.h \
+ /usr/include/qt5/QtCore/qfiledevice.h \
+ /usr/include/qt5/QtGui/qvector2d.h \
+ /usr/include/qt5/QtGui/qtouchdevice.h \
+ /usr/include/qt5/QtGui/qicon.h \
+ /usr/include/qt5/QtWidgets/qactiongroup.h \
+ /usr/include/qt5/QtCore/QList \
+ /usr/include/qt5/QtCore/QObject \
+ /usr/include/qt5/QtCore/QStringList \
+ /usr/include/qt5/QtCore/QHash \
+ /usr/include/qt5/QtCore/QRegExp \
+ src/Character.h \
+ src/CharacterColor.h \
+ src/ksession.h \
+ src/Session.h \
+ /usr/include/qt5/QtCore/QTimer \
+ /usr/include/qt5/QtCore/qtimer.h \
+ /usr/include/qt5/QtCore/qbasictimer.h \
+ /usr/include/qt5/QtGui/QWindow \
+ /usr/include/qt5/QtGui/qwindow.h \
+ /usr/include/qt5/QtCore/QEvent \
+ /usr/include/qt5/QtCore/QMargins \
+ /usr/include/qt5/QtCore/QRect \
+ /usr/include/qt5/QtGui/qsurface.h \
+ /usr/include/qt5/QtGui/qsurfaceformat.h \
+ src/History.h \
+ /usr/include/qt5/QtCore/QBitRef \
+ /usr/include/qt5/QtCore/qbitarray.h \
+ /usr/include/qt5/QtCore/QVector \
+ /usr/include/qt5/QtCore/QTemporaryFile \
+ /usr/include/qt5/QtCore/qtemporaryfile.h \
+ src/BlockArray.h \
+ /usr/include/qt5/QtQuick/QQuickItem \
+ /usr/include/qt5/QtQuick/qquickitem.h \
+ /usr/include/qt5/QtQuick/qtquickglobal.h \
+ /usr/include/qt5/QtQml/qqml.h \
+ /usr/include/qt5/QtQml/qqmlprivate.h \
+ /usr/include/qt5/QtQml/qtqmlglobal.h \
+ /usr/include/qt5/QtQml/qqmlparserstatus.h \
+ /usr/include/qt5/QtQml/qqmlpropertyvaluesource.h \
+ /usr/include/qt5/QtQml/qqmllist.h \
+ /usr/include/qt5/QtCore/qmetaobject.h \
+ /usr/include/qt5/QtQml/qqmlcomponent.h \
+ /usr/include/qt5/QtQml/qqmlerror.h \
+ /usr/include/qt5/QtQml/qjsvalue.h \
+ /usr/include/qt5/QtGui/qaccessible.h \
+ /usr/include/qt5/QtCore/qcoreapplication.h \
+ /usr/include/qt5/QtCore/qeventloop.h \
+ /usr/include/qt5/QtQuick/QQuickPaintedItem \
+ /usr/include/qt5/QtQuick/qquickpainteditem.h \
+ /usr/include/qt5/QtQml/QQmlEngine \
+ /usr/include/qt5/QtQml/qqmlengine.h \
+ /usr/include/qt5/QtQml/qjsengine.h \
+ /usr/include/qt5/QtQml/qqmldebug.h \
+ /usr/include/qt5/QtQml/QQmlExtensionPlugin \
+ /usr/include/qt5/QtQml/qqmlextensionplugin.h \
+ /usr/include/qt5/QtCore/qplugin.h \
+ /usr/include/qt5/QtCore/qjsonobject.h \
+ /usr/include/qt5/QtCore/qjsonvalue.h \
+ /usr/include/qt5/QtCore/QUrl \
+ /usr/include/qt5/QtQml/qqmlextensioninterface.h \
+ src/plugin.h
+ /usr/lib/x86_64-linux-gnu/qt5/bin/moc $(DEFINES) $(INCPATH) -I/usr/include/c++/4.8 -I/usr/include/x86_64-linux-gnu/c++/4.8 -I/usr/include/c++/4.8/backward -I/usr/lib/gcc/x86_64-linux-gnu/4.8/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include src/plugin.h -o .moc/moc_plugin.cpp
+
+.moc/moc_Pty.cpp: /usr/include/qt5/QtCore/QStringList \
+ /usr/include/qt5/QtCore/qstringlist.h \
+ /usr/include/qt5/QtCore/qalgorithms.h \
+ /usr/include/qt5/QtCore/qglobal.h \
+ /usr/include/qt5/QtCore/qconfig.h \
+ /usr/include/qt5/QtCore/qfeatures.h \
+ /usr/include/qt5/QtCore/qsystemdetection.h \
+ /usr/include/qt5/QtCore/qprocessordetection.h \
+ /usr/include/qt5/QtCore/qcompilerdetection.h \
+ /usr/include/qt5/QtCore/qglobalstatic.h \
+ /usr/include/qt5/QtCore/qatomic.h \
+ /usr/include/qt5/QtCore/qbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_bootstrap.h \
+ /usr/include/qt5/QtCore/qgenericatomic.h \
+ /usr/include/qt5/QtCore/qatomic_msvc.h \
+ /usr/include/qt5/QtCore/qatomic_integrity.h \
+ /usr/include/qt5/QtCore/qoldbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_vxworks.h \
+ /usr/include/qt5/QtCore/qatomic_power.h \
+ /usr/include/qt5/QtCore/qatomic_alpha.h \
+ /usr/include/qt5/QtCore/qatomic_armv7.h \
+ /usr/include/qt5/QtCore/qatomic_armv6.h \
+ /usr/include/qt5/QtCore/qatomic_armv5.h \
+ /usr/include/qt5/QtCore/qatomic_bfin.h \
+ /usr/include/qt5/QtCore/qatomic_ia64.h \
+ /usr/include/qt5/QtCore/qatomic_mips.h \
+ /usr/include/qt5/QtCore/qatomic_s390.h \
+ /usr/include/qt5/QtCore/qatomic_sh4a.h \
+ /usr/include/qt5/QtCore/qatomic_sparc.h \
+ /usr/include/qt5/QtCore/qatomic_gcc.h \
+ /usr/include/qt5/QtCore/qatomic_x86.h \
+ /usr/include/qt5/QtCore/qatomic_cxx11.h \
+ /usr/include/qt5/QtCore/qatomic_unix.h \
+ /usr/include/qt5/QtCore/qmutex.h \
+ /usr/include/qt5/QtCore/qlogging.h \
+ /usr/include/qt5/QtCore/qflags.h \
+ /usr/include/qt5/QtCore/qtypeinfo.h \
+ /usr/include/qt5/QtCore/qtypetraits.h \
+ /usr/include/qt5/QtCore/qsysinfo.h \
+ /usr/include/qt5/QtCore/qdatastream.h \
+ /usr/include/qt5/QtCore/qscopedpointer.h \
+ /usr/include/qt5/QtCore/qiodevice.h \
+ /usr/include/qt5/QtCore/qobject.h \
+ /usr/include/qt5/QtCore/qobjectdefs.h \
+ /usr/include/qt5/QtCore/qnamespace.h \
+ /usr/include/qt5/QtCore/qobjectdefs_impl.h \
+ /usr/include/qt5/QtCore/qstring.h \
+ /usr/include/qt5/QtCore/qchar.h \
+ /usr/include/qt5/QtCore/qbytearray.h \
+ /usr/include/qt5/QtCore/qrefcount.h \
+ /usr/include/qt5/QtCore/qarraydata.h \
+ /usr/include/qt5/QtCore/qstringbuilder.h \
+ /usr/include/qt5/QtCore/qlist.h \
+ /usr/include/qt5/QtCore/qiterator.h \
+ /usr/include/qt5/QtCore/qcoreevent.h \
+ /usr/include/qt5/QtCore/qmetatype.h \
+ /usr/include/qt5/QtCore/qvarlengtharray.h \
+ /usr/include/qt5/QtCore/qcontainerfwd.h \
+ /usr/include/qt5/QtCore/qisenum.h \
+ /usr/include/qt5/QtCore/qobject_impl.h \
+ /usr/include/qt5/QtCore/qpair.h \
+ /usr/include/qt5/QtCore/qregexp.h \
+ /usr/include/qt5/QtCore/qstringmatcher.h \
+ /usr/include/qt5/QtCore/QVector \
+ /usr/include/qt5/QtCore/qvector.h \
+ /usr/include/qt5/QtCore/qpoint.h \
+ /usr/include/qt5/QtCore/QList \
+ /usr/include/qt5/QtCore/QSize \
+ /usr/include/qt5/QtCore/qsize.h \
+ src/kptyprocess.h \
+ src/kprocess.h \
+ /usr/include/qt5/QtCore/QProcess \
+ /usr/include/qt5/QtCore/qprocess.h \
+ /usr/include/qt5/QtCore/qshareddata.h \
+ src/kptydevice.h \
+ src/kpty_p.h \
+ src/kpty.h \
+ /usr/include/qt5/QtCore/QtCore \
+ /usr/include/qt5/QtCore/QtCoreDepends \
+ /usr/include/qt5/QtCore/qabstractanimation.h \
+ /usr/include/qt5/QtCore/qanimationgroup.h \
+ /usr/include/qt5/QtCore/qparallelanimationgroup.h \
+ /usr/include/qt5/QtCore/qpauseanimation.h \
+ /usr/include/qt5/QtCore/qpropertyanimation.h \
+ /usr/include/qt5/QtCore/qvariantanimation.h \
+ /usr/include/qt5/QtCore/qeasingcurve.h \
+ /usr/include/qt5/QtCore/qvariant.h \
+ /usr/include/qt5/QtCore/qmap.h \
+ /usr/include/qt5/QtCore/qdebug.h \
+ /usr/include/qt5/QtCore/qhash.h \
+ /usr/include/qt5/QtCore/qtextstream.h \
+ /usr/include/qt5/QtCore/qlocale.h \
+ /usr/include/qt5/QtCore/qset.h \
+ /usr/include/qt5/QtCore/qcontiguouscache.h \
+ /usr/include/qt5/QtCore/qsequentialanimationgroup.h \
+ /usr/include/qt5/QtCore/qtextcodec.h \
+ /usr/include/qt5/QtCore/qendian.h \
+ /usr/include/qt5/QtCore/qlibraryinfo.h \
+ /usr/include/qt5/QtCore/qdatetime.h \
+ /usr/include/qt5/QtCore/qsharedpointer.h \
+ /usr/include/qt5/QtCore/qsharedpointer_impl.h \
+ /usr/include/qt5/QtCore/qnumeric.h \
+ /usr/include/qt5/QtCore/qbuffer.h \
+ /usr/include/qt5/QtCore/qdir.h \
+ /usr/include/qt5/QtCore/qfileinfo.h \
+ /usr/include/qt5/QtCore/qfile.h \
+ /usr/include/qt5/QtCore/qfiledevice.h \
+ /usr/include/qt5/QtCore/qdiriterator.h \
+ /usr/include/qt5/QtCore/qfileselector.h \
+ /usr/include/qt5/QtCore/QObject \
+ /usr/include/qt5/QtCore/qfilesystemwatcher.h \
+ /usr/include/qt5/QtCore/qlockfile.h \
+ /usr/include/qt5/QtCore/qloggingcategory.h \
+ /usr/include/qt5/QtCore/qresource.h \
+ /usr/include/qt5/QtCore/qsavefile.h \
+ /usr/include/qt5/QtCore/qsettings.h \
+ /usr/include/qt5/QtCore/qstandardpaths.h \
+ /usr/include/qt5/QtCore/qtemporarydir.h \
+ /usr/include/qt5/QtCore/QScopedPointer \
+ /usr/include/qt5/QtCore/qtemporaryfile.h \
+ /usr/include/qt5/QtCore/qurl.h \
+ /usr/include/qt5/QtCore/qurlquery.h \
+ /usr/include/qt5/QtCore/qabstractitemmodel.h \
+ /usr/include/qt5/QtCore/qabstractproxymodel.h \
+ /usr/include/qt5/QtCore/qidentityproxymodel.h \
+ /usr/include/qt5/QtCore/qitemselectionmodel.h \
+ /usr/include/qt5/QtCore/qsortfilterproxymodel.h \
+ /usr/include/qt5/QtCore/qstringlistmodel.h \
+ /usr/include/qt5/QtCore/qjsonarray.h \
+ /usr/include/qt5/QtCore/qjsonvalue.h \
+ /usr/include/qt5/QtCore/qjsondocument.h \
+ /usr/include/qt5/QtCore/qjsonobject.h \
+ /usr/include/qt5/QtCore/qabstracteventdispatcher.h \
+ /usr/include/qt5/QtCore/qeventloop.h \
+ /usr/include/qt5/QtCore/qabstractnativeeventfilter.h \
+ /usr/include/qt5/QtCore/qbasictimer.h \
+ /usr/include/qt5/QtCore/qcoreapplication.h \
+ /usr/include/qt5/QtCore/qmath.h \
+ /usr/include/qt5/QtCore/qmetaobject.h \
+ /usr/include/qt5/QtCore/qmimedata.h \
+ /usr/include/qt5/QtCore/qobjectcleanuphandler.h \
+ /usr/include/qt5/QtCore/qpointer.h \
+ /usr/include/qt5/QtCore/qsharedmemory.h \
+ /usr/include/qt5/QtCore/qsignalmapper.h \
+ /usr/include/qt5/QtCore/qsocketnotifier.h \
+ /usr/include/qt5/QtCore/qsystemsemaphore.h \
+ /usr/include/qt5/QtCore/qtimer.h \
+ /usr/include/qt5/QtCore/qtranslator.h \
+ /usr/include/qt5/QtCore/qwineventnotifier.h \
+ /usr/include/qt5/QtCore/qmimedatabase.h \
+ /usr/include/qt5/QtCore/qmimetype.h \
+ /usr/include/qt5/QtCore/qfactoryinterface.h \
+ /usr/include/qt5/QtCore/qlibrary.h \
+ /usr/include/qt5/QtCore/qplugin.h \
+ /usr/include/qt5/QtCore/qpluginloader.h \
+ /usr/include/qt5/QtCore/quuid.h \
+ /usr/include/qt5/QtCore/qabstractstate.h \
+ /usr/include/qt5/QtCore/qabstracttransition.h \
+ /usr/include/qt5/QtCore/qeventtransition.h \
+ /usr/include/qt5/QtCore/qfinalstate.h \
+ /usr/include/qt5/QtCore/qhistorystate.h \
+ /usr/include/qt5/QtCore/qsignaltransition.h \
+ /usr/include/qt5/QtCore/qstate.h \
+ /usr/include/qt5/QtCore/qstatemachine.h \
+ /usr/include/qt5/QtCore/qexception.h \
+ /usr/include/qt5/QtCore/qfuture.h \
+ /usr/include/qt5/QtCore/qfutureinterface.h \
+ /usr/include/qt5/QtCore/qrunnable.h \
+ /usr/include/qt5/QtCore/qresultstore.h \
+ /usr/include/qt5/QtCore/qfuturesynchronizer.h \
+ /usr/include/qt5/QtCore/qfuturewatcher.h \
+ /usr/include/qt5/QtCore/qreadwritelock.h \
+ /usr/include/qt5/QtCore/qsemaphore.h \
+ /usr/include/qt5/QtCore/qthread.h \
+ /usr/include/qt5/QtCore/qthreadpool.h \
+ /usr/include/qt5/QtCore/qthreadstorage.h \
+ /usr/include/qt5/QtCore/qwaitcondition.h \
+ /usr/include/qt5/QtCore/qarraydataops.h \
+ /usr/include/qt5/QtCore/qarraydatapointer.h \
+ /usr/include/qt5/QtCore/qbitarray.h \
+ /usr/include/qt5/QtCore/qbytearraymatcher.h \
+ /usr/include/qt5/QtCore/qcache.h \
+ /usr/include/qt5/QtCore/qcollator.h \
+ /usr/include/qt5/QtCore/qcommandlineoption.h \
+ /usr/include/qt5/QtCore/qcommandlineparser.h \
+ /usr/include/qt5/QtCore/qcryptographichash.h \
+ /usr/include/qt5/QtCore/qelapsedtimer.h \
+ /usr/include/qt5/QtCore/qline.h \
+ /usr/include/qt5/QtCore/qlinkedlist.h \
+ /usr/include/qt5/QtCore/qmargins.h \
+ /usr/include/qt5/QtCore/qrect.h \
+ /usr/include/qt5/QtCore/qmessageauthenticationcode.h \
+ /usr/include/qt5/QtCore/qqueue.h \
+ /usr/include/qt5/QtCore/qregularexpression.h \
+ /usr/include/qt5/QtCore/qscopedvaluerollback.h \
+ /usr/include/qt5/QtCore/qstack.h \
+ /usr/include/qt5/QtCore/qtextboundaryfinder.h \
+ /usr/include/qt5/QtCore/qtimeline.h \
+ /usr/include/qt5/QtCore/qtimezone.h \
+ /usr/include/qt5/QtCore/qxmlstream.h \
+ /usr/include/qt5/QtCore/qtcoreversion.h \
+ /usr/include/qt5/QtCore/QByteArray \
+ /usr/include/qt5/QtCore/QIODevice \
+ src/Pty.h
+ /usr/lib/x86_64-linux-gnu/qt5/bin/moc $(DEFINES) $(INCPATH) -I/usr/include/c++/4.8 -I/usr/include/x86_64-linux-gnu/c++/4.8 -I/usr/include/c++/4.8/backward -I/usr/lib/gcc/x86_64-linux-gnu/4.8/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include src/Pty.h -o .moc/moc_Pty.cpp
+
+.moc/moc_kptyprocess.cpp: src/kprocess.h \
+ /usr/include/qt5/QtCore/QProcess \
+ /usr/include/qt5/QtCore/qprocess.h \
+ /usr/include/qt5/QtCore/qiodevice.h \
+ /usr/include/qt5/QtCore/qglobal.h \
+ /usr/include/qt5/QtCore/qconfig.h \
+ /usr/include/qt5/QtCore/qfeatures.h \
+ /usr/include/qt5/QtCore/qsystemdetection.h \
+ /usr/include/qt5/QtCore/qprocessordetection.h \
+ /usr/include/qt5/QtCore/qcompilerdetection.h \
+ /usr/include/qt5/QtCore/qglobalstatic.h \
+ /usr/include/qt5/QtCore/qatomic.h \
+ /usr/include/qt5/QtCore/qbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_bootstrap.h \
+ /usr/include/qt5/QtCore/qgenericatomic.h \
+ /usr/include/qt5/QtCore/qatomic_msvc.h \
+ /usr/include/qt5/QtCore/qatomic_integrity.h \
+ /usr/include/qt5/QtCore/qoldbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_vxworks.h \
+ /usr/include/qt5/QtCore/qatomic_power.h \
+ /usr/include/qt5/QtCore/qatomic_alpha.h \
+ /usr/include/qt5/QtCore/qatomic_armv7.h \
+ /usr/include/qt5/QtCore/qatomic_armv6.h \
+ /usr/include/qt5/QtCore/qatomic_armv5.h \
+ /usr/include/qt5/QtCore/qatomic_bfin.h \
+ /usr/include/qt5/QtCore/qatomic_ia64.h \
+ /usr/include/qt5/QtCore/qatomic_mips.h \
+ /usr/include/qt5/QtCore/qatomic_s390.h \
+ /usr/include/qt5/QtCore/qatomic_sh4a.h \
+ /usr/include/qt5/QtCore/qatomic_sparc.h \
+ /usr/include/qt5/QtCore/qatomic_gcc.h \
+ /usr/include/qt5/QtCore/qatomic_x86.h \
+ /usr/include/qt5/QtCore/qatomic_cxx11.h \
+ /usr/include/qt5/QtCore/qatomic_unix.h \
+ /usr/include/qt5/QtCore/qmutex.h \
+ /usr/include/qt5/QtCore/qlogging.h \
+ /usr/include/qt5/QtCore/qflags.h \
+ /usr/include/qt5/QtCore/qtypeinfo.h \
+ /usr/include/qt5/QtCore/qtypetraits.h \
+ /usr/include/qt5/QtCore/qsysinfo.h \
+ /usr/include/qt5/QtCore/qobject.h \
+ /usr/include/qt5/QtCore/qobjectdefs.h \
+ /usr/include/qt5/QtCore/qnamespace.h \
+ /usr/include/qt5/QtCore/qobjectdefs_impl.h \
+ /usr/include/qt5/QtCore/qstring.h \
+ /usr/include/qt5/QtCore/qchar.h \
+ /usr/include/qt5/QtCore/qbytearray.h \
+ /usr/include/qt5/QtCore/qrefcount.h \
+ /usr/include/qt5/QtCore/qarraydata.h \
+ /usr/include/qt5/QtCore/qstringbuilder.h \
+ /usr/include/qt5/QtCore/qlist.h \
+ /usr/include/qt5/QtCore/qalgorithms.h \
+ /usr/include/qt5/QtCore/qiterator.h \
+ /usr/include/qt5/QtCore/qcoreevent.h \
+ /usr/include/qt5/QtCore/qscopedpointer.h \
+ /usr/include/qt5/QtCore/qmetatype.h \
+ /usr/include/qt5/QtCore/qvarlengtharray.h \
+ /usr/include/qt5/QtCore/qcontainerfwd.h \
+ /usr/include/qt5/QtCore/qisenum.h \
+ /usr/include/qt5/QtCore/qobject_impl.h \
+ /usr/include/qt5/QtCore/qstringlist.h \
+ /usr/include/qt5/QtCore/qdatastream.h \
+ /usr/include/qt5/QtCore/qpair.h \
+ /usr/include/qt5/QtCore/qregexp.h \
+ /usr/include/qt5/QtCore/qstringmatcher.h \
+ /usr/include/qt5/QtCore/qshareddata.h \
+ src/kptydevice.h \
+ src/kpty_p.h \
+ src/kpty.h \
+ /usr/include/qt5/QtCore/QtCore \
+ /usr/include/qt5/QtCore/QtCoreDepends \
+ /usr/include/qt5/QtCore/qabstractanimation.h \
+ /usr/include/qt5/QtCore/qanimationgroup.h \
+ /usr/include/qt5/QtCore/qparallelanimationgroup.h \
+ /usr/include/qt5/QtCore/qpauseanimation.h \
+ /usr/include/qt5/QtCore/qpropertyanimation.h \
+ /usr/include/qt5/QtCore/qvariantanimation.h \
+ /usr/include/qt5/QtCore/qeasingcurve.h \
+ /usr/include/qt5/QtCore/qvector.h \
+ /usr/include/qt5/QtCore/qpoint.h \
+ /usr/include/qt5/QtCore/qvariant.h \
+ /usr/include/qt5/QtCore/qmap.h \
+ /usr/include/qt5/QtCore/qdebug.h \
+ /usr/include/qt5/QtCore/qhash.h \
+ /usr/include/qt5/QtCore/qtextstream.h \
+ /usr/include/qt5/QtCore/qlocale.h \
+ /usr/include/qt5/QtCore/qset.h \
+ /usr/include/qt5/QtCore/qcontiguouscache.h \
+ /usr/include/qt5/QtCore/qsequentialanimationgroup.h \
+ /usr/include/qt5/QtCore/qtextcodec.h \
+ /usr/include/qt5/QtCore/qendian.h \
+ /usr/include/qt5/QtCore/qlibraryinfo.h \
+ /usr/include/qt5/QtCore/qdatetime.h \
+ /usr/include/qt5/QtCore/qsharedpointer.h \
+ /usr/include/qt5/QtCore/qsharedpointer_impl.h \
+ /usr/include/qt5/QtCore/qnumeric.h \
+ /usr/include/qt5/QtCore/qbuffer.h \
+ /usr/include/qt5/QtCore/qdir.h \
+ /usr/include/qt5/QtCore/qfileinfo.h \
+ /usr/include/qt5/QtCore/qfile.h \
+ /usr/include/qt5/QtCore/qfiledevice.h \
+ /usr/include/qt5/QtCore/qdiriterator.h \
+ /usr/include/qt5/QtCore/qfileselector.h \
+ /usr/include/qt5/QtCore/QObject \
+ /usr/include/qt5/QtCore/QStringList \
+ /usr/include/qt5/QtCore/qfilesystemwatcher.h \
+ /usr/include/qt5/QtCore/qlockfile.h \
+ /usr/include/qt5/QtCore/qloggingcategory.h \
+ /usr/include/qt5/QtCore/qresource.h \
+ /usr/include/qt5/QtCore/qsavefile.h \
+ /usr/include/qt5/QtCore/qsettings.h \
+ /usr/include/qt5/QtCore/qstandardpaths.h \
+ /usr/include/qt5/QtCore/qtemporarydir.h \
+ /usr/include/qt5/QtCore/QScopedPointer \
+ /usr/include/qt5/QtCore/qtemporaryfile.h \
+ /usr/include/qt5/QtCore/qurl.h \
+ /usr/include/qt5/QtCore/qurlquery.h \
+ /usr/include/qt5/QtCore/qabstractitemmodel.h \
+ /usr/include/qt5/QtCore/qabstractproxymodel.h \
+ /usr/include/qt5/QtCore/qidentityproxymodel.h \
+ /usr/include/qt5/QtCore/qitemselectionmodel.h \
+ /usr/include/qt5/QtCore/qsortfilterproxymodel.h \
+ /usr/include/qt5/QtCore/qstringlistmodel.h \
+ /usr/include/qt5/QtCore/qjsonarray.h \
+ /usr/include/qt5/QtCore/qjsonvalue.h \
+ /usr/include/qt5/QtCore/qjsondocument.h \
+ /usr/include/qt5/QtCore/qjsonobject.h \
+ /usr/include/qt5/QtCore/qabstracteventdispatcher.h \
+ /usr/include/qt5/QtCore/qeventloop.h \
+ /usr/include/qt5/QtCore/qabstractnativeeventfilter.h \
+ /usr/include/qt5/QtCore/qbasictimer.h \
+ /usr/include/qt5/QtCore/qcoreapplication.h \
+ /usr/include/qt5/QtCore/qmath.h \
+ /usr/include/qt5/QtCore/qmetaobject.h \
+ /usr/include/qt5/QtCore/qmimedata.h \
+ /usr/include/qt5/QtCore/qobjectcleanuphandler.h \
+ /usr/include/qt5/QtCore/qpointer.h \
+ /usr/include/qt5/QtCore/qsharedmemory.h \
+ /usr/include/qt5/QtCore/qsignalmapper.h \
+ /usr/include/qt5/QtCore/qsocketnotifier.h \
+ /usr/include/qt5/QtCore/qsystemsemaphore.h \
+ /usr/include/qt5/QtCore/qtimer.h \
+ /usr/include/qt5/QtCore/qtranslator.h \
+ /usr/include/qt5/QtCore/qwineventnotifier.h \
+ /usr/include/qt5/QtCore/qmimedatabase.h \
+ /usr/include/qt5/QtCore/qmimetype.h \
+ /usr/include/qt5/QtCore/qfactoryinterface.h \
+ /usr/include/qt5/QtCore/qlibrary.h \
+ /usr/include/qt5/QtCore/qplugin.h \
+ /usr/include/qt5/QtCore/qpluginloader.h \
+ /usr/include/qt5/QtCore/quuid.h \
+ /usr/include/qt5/QtCore/qabstractstate.h \
+ /usr/include/qt5/QtCore/qabstracttransition.h \
+ /usr/include/qt5/QtCore/qeventtransition.h \
+ /usr/include/qt5/QtCore/qfinalstate.h \
+ /usr/include/qt5/QtCore/qhistorystate.h \
+ /usr/include/qt5/QtCore/qsignaltransition.h \
+ /usr/include/qt5/QtCore/qstate.h \
+ /usr/include/qt5/QtCore/qstatemachine.h \
+ /usr/include/qt5/QtCore/qexception.h \
+ /usr/include/qt5/QtCore/qfuture.h \
+ /usr/include/qt5/QtCore/qfutureinterface.h \
+ /usr/include/qt5/QtCore/qrunnable.h \
+ /usr/include/qt5/QtCore/qresultstore.h \
+ /usr/include/qt5/QtCore/qfuturesynchronizer.h \
+ /usr/include/qt5/QtCore/qfuturewatcher.h \
+ /usr/include/qt5/QtCore/qreadwritelock.h \
+ /usr/include/qt5/QtCore/qsemaphore.h \
+ /usr/include/qt5/QtCore/qthread.h \
+ /usr/include/qt5/QtCore/qthreadpool.h \
+ /usr/include/qt5/QtCore/qthreadstorage.h \
+ /usr/include/qt5/QtCore/qwaitcondition.h \
+ /usr/include/qt5/QtCore/qarraydataops.h \
+ /usr/include/qt5/QtCore/qarraydatapointer.h \
+ /usr/include/qt5/QtCore/qbitarray.h \
+ /usr/include/qt5/QtCore/qbytearraymatcher.h \
+ /usr/include/qt5/QtCore/qcache.h \
+ /usr/include/qt5/QtCore/qcollator.h \
+ /usr/include/qt5/QtCore/qcommandlineoption.h \
+ /usr/include/qt5/QtCore/qcommandlineparser.h \
+ /usr/include/qt5/QtCore/qcryptographichash.h \
+ /usr/include/qt5/QtCore/qelapsedtimer.h \
+ /usr/include/qt5/QtCore/qline.h \
+ /usr/include/qt5/QtCore/qlinkedlist.h \
+ /usr/include/qt5/QtCore/qmargins.h \
+ /usr/include/qt5/QtCore/qrect.h \
+ /usr/include/qt5/QtCore/qsize.h \
+ /usr/include/qt5/QtCore/qmessageauthenticationcode.h \
+ /usr/include/qt5/QtCore/qqueue.h \
+ /usr/include/qt5/QtCore/qregularexpression.h \
+ /usr/include/qt5/QtCore/qscopedvaluerollback.h \
+ /usr/include/qt5/QtCore/qstack.h \
+ /usr/include/qt5/QtCore/qtextboundaryfinder.h \
+ /usr/include/qt5/QtCore/qtimeline.h \
+ /usr/include/qt5/QtCore/qtimezone.h \
+ /usr/include/qt5/QtCore/qxmlstream.h \
+ /usr/include/qt5/QtCore/qtcoreversion.h \
+ /usr/include/qt5/QtCore/QByteArray \
+ /usr/include/qt5/QtCore/QIODevice \
+ src/kptyprocess.h
+ /usr/lib/x86_64-linux-gnu/qt5/bin/moc $(DEFINES) $(INCPATH) -I/usr/include/c++/4.8 -I/usr/include/x86_64-linux-gnu/c++/4.8 -I/usr/include/c++/4.8/backward -I/usr/lib/gcc/x86_64-linux-gnu/4.8/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include src/kptyprocess.h -o .moc/moc_kptyprocess.cpp
+
+.moc/moc_kptydevice.cpp: src/kpty_p.h \
+ src/kpty.h \
+ /usr/include/qt5/QtCore/QtCore \
+ /usr/include/qt5/QtCore/QtCoreDepends \
+ /usr/include/qt5/QtCore/qabstractanimation.h \
+ /usr/include/qt5/QtCore/qobject.h \
+ /usr/include/qt5/QtCore/qobjectdefs.h \
+ /usr/include/qt5/QtCore/qnamespace.h \
+ /usr/include/qt5/QtCore/qglobal.h \
+ /usr/include/qt5/QtCore/qconfig.h \
+ /usr/include/qt5/QtCore/qfeatures.h \
+ /usr/include/qt5/QtCore/qsystemdetection.h \
+ /usr/include/qt5/QtCore/qprocessordetection.h \
+ /usr/include/qt5/QtCore/qcompilerdetection.h \
+ /usr/include/qt5/QtCore/qglobalstatic.h \
+ /usr/include/qt5/QtCore/qatomic.h \
+ /usr/include/qt5/QtCore/qbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_bootstrap.h \
+ /usr/include/qt5/QtCore/qgenericatomic.h \
+ /usr/include/qt5/QtCore/qatomic_msvc.h \
+ /usr/include/qt5/QtCore/qatomic_integrity.h \
+ /usr/include/qt5/QtCore/qoldbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_vxworks.h \
+ /usr/include/qt5/QtCore/qatomic_power.h \
+ /usr/include/qt5/QtCore/qatomic_alpha.h \
+ /usr/include/qt5/QtCore/qatomic_armv7.h \
+ /usr/include/qt5/QtCore/qatomic_armv6.h \
+ /usr/include/qt5/QtCore/qatomic_armv5.h \
+ /usr/include/qt5/QtCore/qatomic_bfin.h \
+ /usr/include/qt5/QtCore/qatomic_ia64.h \
+ /usr/include/qt5/QtCore/qatomic_mips.h \
+ /usr/include/qt5/QtCore/qatomic_s390.h \
+ /usr/include/qt5/QtCore/qatomic_sh4a.h \
+ /usr/include/qt5/QtCore/qatomic_sparc.h \
+ /usr/include/qt5/QtCore/qatomic_gcc.h \
+ /usr/include/qt5/QtCore/qatomic_x86.h \
+ /usr/include/qt5/QtCore/qatomic_cxx11.h \
+ /usr/include/qt5/QtCore/qatomic_unix.h \
+ /usr/include/qt5/QtCore/qmutex.h \
+ /usr/include/qt5/QtCore/qlogging.h \
+ /usr/include/qt5/QtCore/qflags.h \
+ /usr/include/qt5/QtCore/qtypeinfo.h \
+ /usr/include/qt5/QtCore/qtypetraits.h \
+ /usr/include/qt5/QtCore/qsysinfo.h \
+ /usr/include/qt5/QtCore/qobjectdefs_impl.h \
+ /usr/include/qt5/QtCore/qstring.h \
+ /usr/include/qt5/QtCore/qchar.h \
+ /usr/include/qt5/QtCore/qbytearray.h \
+ /usr/include/qt5/QtCore/qrefcount.h \
+ /usr/include/qt5/QtCore/qarraydata.h \
+ /usr/include/qt5/QtCore/qstringbuilder.h \
+ /usr/include/qt5/QtCore/qlist.h \
+ /usr/include/qt5/QtCore/qalgorithms.h \
+ /usr/include/qt5/QtCore/qiterator.h \
+ /usr/include/qt5/QtCore/qcoreevent.h \
+ /usr/include/qt5/QtCore/qscopedpointer.h \
+ /usr/include/qt5/QtCore/qmetatype.h \
+ /usr/include/qt5/QtCore/qvarlengtharray.h \
+ /usr/include/qt5/QtCore/qcontainerfwd.h \
+ /usr/include/qt5/QtCore/qisenum.h \
+ /usr/include/qt5/QtCore/qobject_impl.h \
+ /usr/include/qt5/QtCore/qanimationgroup.h \
+ /usr/include/qt5/QtCore/qparallelanimationgroup.h \
+ /usr/include/qt5/QtCore/qpauseanimation.h \
+ /usr/include/qt5/QtCore/qpropertyanimation.h \
+ /usr/include/qt5/QtCore/qvariantanimation.h \
+ /usr/include/qt5/QtCore/qeasingcurve.h \
+ /usr/include/qt5/QtCore/qvector.h \
+ /usr/include/qt5/QtCore/qpoint.h \
+ /usr/include/qt5/QtCore/qvariant.h \
+ /usr/include/qt5/QtCore/qmap.h \
+ /usr/include/qt5/QtCore/qpair.h \
+ /usr/include/qt5/QtCore/qdebug.h \
+ /usr/include/qt5/QtCore/qhash.h \
+ /usr/include/qt5/QtCore/qtextstream.h \
+ /usr/include/qt5/QtCore/qiodevice.h \
+ /usr/include/qt5/QtCore/qlocale.h \
+ /usr/include/qt5/QtCore/qshareddata.h \
+ /usr/include/qt5/QtCore/qset.h \
+ /usr/include/qt5/QtCore/qcontiguouscache.h \
+ /usr/include/qt5/QtCore/qstringlist.h \
+ /usr/include/qt5/QtCore/qdatastream.h \
+ /usr/include/qt5/QtCore/qregexp.h \
+ /usr/include/qt5/QtCore/qstringmatcher.h \
+ /usr/include/qt5/QtCore/qsequentialanimationgroup.h \
+ /usr/include/qt5/QtCore/qtextcodec.h \
+ /usr/include/qt5/QtCore/qendian.h \
+ /usr/include/qt5/QtCore/qlibraryinfo.h \
+ /usr/include/qt5/QtCore/qdatetime.h \
+ /usr/include/qt5/QtCore/qsharedpointer.h \
+ /usr/include/qt5/QtCore/qsharedpointer_impl.h \
+ /usr/include/qt5/QtCore/qnumeric.h \
+ /usr/include/qt5/QtCore/qbuffer.h \
+ /usr/include/qt5/QtCore/qdir.h \
+ /usr/include/qt5/QtCore/qfileinfo.h \
+ /usr/include/qt5/QtCore/qfile.h \
+ /usr/include/qt5/QtCore/qfiledevice.h \
+ /usr/include/qt5/QtCore/qdiriterator.h \
+ /usr/include/qt5/QtCore/qfileselector.h \
+ /usr/include/qt5/QtCore/QObject \
+ /usr/include/qt5/QtCore/QStringList \
+ /usr/include/qt5/QtCore/qfilesystemwatcher.h \
+ /usr/include/qt5/QtCore/qlockfile.h \
+ /usr/include/qt5/QtCore/qloggingcategory.h \
+ /usr/include/qt5/QtCore/qprocess.h \
+ /usr/include/qt5/QtCore/qresource.h \
+ /usr/include/qt5/QtCore/qsavefile.h \
+ /usr/include/qt5/QtCore/qsettings.h \
+ /usr/include/qt5/QtCore/qstandardpaths.h \
+ /usr/include/qt5/QtCore/qtemporarydir.h \
+ /usr/include/qt5/QtCore/QScopedPointer \
+ /usr/include/qt5/QtCore/qtemporaryfile.h \
+ /usr/include/qt5/QtCore/qurl.h \
+ /usr/include/qt5/QtCore/qurlquery.h \
+ /usr/include/qt5/QtCore/qabstractitemmodel.h \
+ /usr/include/qt5/QtCore/qabstractproxymodel.h \
+ /usr/include/qt5/QtCore/qidentityproxymodel.h \
+ /usr/include/qt5/QtCore/qitemselectionmodel.h \
+ /usr/include/qt5/QtCore/qsortfilterproxymodel.h \
+ /usr/include/qt5/QtCore/qstringlistmodel.h \
+ /usr/include/qt5/QtCore/qjsonarray.h \
+ /usr/include/qt5/QtCore/qjsonvalue.h \
+ /usr/include/qt5/QtCore/qjsondocument.h \
+ /usr/include/qt5/QtCore/qjsonobject.h \
+ /usr/include/qt5/QtCore/qabstracteventdispatcher.h \
+ /usr/include/qt5/QtCore/qeventloop.h \
+ /usr/include/qt5/QtCore/qabstractnativeeventfilter.h \
+ /usr/include/qt5/QtCore/qbasictimer.h \
+ /usr/include/qt5/QtCore/qcoreapplication.h \
+ /usr/include/qt5/QtCore/qmath.h \
+ /usr/include/qt5/QtCore/qmetaobject.h \
+ /usr/include/qt5/QtCore/qmimedata.h \
+ /usr/include/qt5/QtCore/qobjectcleanuphandler.h \
+ /usr/include/qt5/QtCore/qpointer.h \
+ /usr/include/qt5/QtCore/qsharedmemory.h \
+ /usr/include/qt5/QtCore/qsignalmapper.h \
+ /usr/include/qt5/QtCore/qsocketnotifier.h \
+ /usr/include/qt5/QtCore/qsystemsemaphore.h \
+ /usr/include/qt5/QtCore/qtimer.h \
+ /usr/include/qt5/QtCore/qtranslator.h \
+ /usr/include/qt5/QtCore/qwineventnotifier.h \
+ /usr/include/qt5/QtCore/qmimedatabase.h \
+ /usr/include/qt5/QtCore/qmimetype.h \
+ /usr/include/qt5/QtCore/qfactoryinterface.h \
+ /usr/include/qt5/QtCore/qlibrary.h \
+ /usr/include/qt5/QtCore/qplugin.h \
+ /usr/include/qt5/QtCore/qpluginloader.h \
+ /usr/include/qt5/QtCore/quuid.h \
+ /usr/include/qt5/QtCore/qabstractstate.h \
+ /usr/include/qt5/QtCore/qabstracttransition.h \
+ /usr/include/qt5/QtCore/qeventtransition.h \
+ /usr/include/qt5/QtCore/qfinalstate.h \
+ /usr/include/qt5/QtCore/qhistorystate.h \
+ /usr/include/qt5/QtCore/qsignaltransition.h \
+ /usr/include/qt5/QtCore/qstate.h \
+ /usr/include/qt5/QtCore/qstatemachine.h \
+ /usr/include/qt5/QtCore/qexception.h \
+ /usr/include/qt5/QtCore/qfuture.h \
+ /usr/include/qt5/QtCore/qfutureinterface.h \
+ /usr/include/qt5/QtCore/qrunnable.h \
+ /usr/include/qt5/QtCore/qresultstore.h \
+ /usr/include/qt5/QtCore/qfuturesynchronizer.h \
+ /usr/include/qt5/QtCore/qfuturewatcher.h \
+ /usr/include/qt5/QtCore/qreadwritelock.h \
+ /usr/include/qt5/QtCore/qsemaphore.h \
+ /usr/include/qt5/QtCore/qthread.h \
+ /usr/include/qt5/QtCore/qthreadpool.h \
+ /usr/include/qt5/QtCore/qthreadstorage.h \
+ /usr/include/qt5/QtCore/qwaitcondition.h \
+ /usr/include/qt5/QtCore/qarraydataops.h \
+ /usr/include/qt5/QtCore/qarraydatapointer.h \
+ /usr/include/qt5/QtCore/qbitarray.h \
+ /usr/include/qt5/QtCore/qbytearraymatcher.h \
+ /usr/include/qt5/QtCore/qcache.h \
+ /usr/include/qt5/QtCore/qcollator.h \
+ /usr/include/qt5/QtCore/qcommandlineoption.h \
+ /usr/include/qt5/QtCore/qcommandlineparser.h \
+ /usr/include/qt5/QtCore/qcryptographichash.h \
+ /usr/include/qt5/QtCore/qelapsedtimer.h \
+ /usr/include/qt5/QtCore/qline.h \
+ /usr/include/qt5/QtCore/qlinkedlist.h \
+ /usr/include/qt5/QtCore/qmargins.h \
+ /usr/include/qt5/QtCore/qrect.h \
+ /usr/include/qt5/QtCore/qsize.h \
+ /usr/include/qt5/QtCore/qmessageauthenticationcode.h \
+ /usr/include/qt5/QtCore/qqueue.h \
+ /usr/include/qt5/QtCore/qregularexpression.h \
+ /usr/include/qt5/QtCore/qscopedvaluerollback.h \
+ /usr/include/qt5/QtCore/qstack.h \
+ /usr/include/qt5/QtCore/qtextboundaryfinder.h \
+ /usr/include/qt5/QtCore/qtimeline.h \
+ /usr/include/qt5/QtCore/qtimezone.h \
+ /usr/include/qt5/QtCore/qxmlstream.h \
+ /usr/include/qt5/QtCore/qtcoreversion.h \
+ /usr/include/qt5/QtCore/QByteArray \
+ /usr/include/qt5/QtCore/QIODevice \
+ src/kptydevice.h
+ /usr/lib/x86_64-linux-gnu/qt5/bin/moc $(DEFINES) $(INCPATH) -I/usr/include/c++/4.8 -I/usr/include/x86_64-linux-gnu/c++/4.8 -I/usr/include/c++/4.8/backward -I/usr/lib/gcc/x86_64-linux-gnu/4.8/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include src/kptydevice.h -o .moc/moc_kptydevice.cpp
+
+.moc/moc_kprocess.cpp: /usr/include/qt5/QtCore/QProcess \
+ /usr/include/qt5/QtCore/qprocess.h \
+ /usr/include/qt5/QtCore/qiodevice.h \
+ /usr/include/qt5/QtCore/qglobal.h \
+ /usr/include/qt5/QtCore/qconfig.h \
+ /usr/include/qt5/QtCore/qfeatures.h \
+ /usr/include/qt5/QtCore/qsystemdetection.h \
+ /usr/include/qt5/QtCore/qprocessordetection.h \
+ /usr/include/qt5/QtCore/qcompilerdetection.h \
+ /usr/include/qt5/QtCore/qglobalstatic.h \
+ /usr/include/qt5/QtCore/qatomic.h \
+ /usr/include/qt5/QtCore/qbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_bootstrap.h \
+ /usr/include/qt5/QtCore/qgenericatomic.h \
+ /usr/include/qt5/QtCore/qatomic_msvc.h \
+ /usr/include/qt5/QtCore/qatomic_integrity.h \
+ /usr/include/qt5/QtCore/qoldbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_vxworks.h \
+ /usr/include/qt5/QtCore/qatomic_power.h \
+ /usr/include/qt5/QtCore/qatomic_alpha.h \
+ /usr/include/qt5/QtCore/qatomic_armv7.h \
+ /usr/include/qt5/QtCore/qatomic_armv6.h \
+ /usr/include/qt5/QtCore/qatomic_armv5.h \
+ /usr/include/qt5/QtCore/qatomic_bfin.h \
+ /usr/include/qt5/QtCore/qatomic_ia64.h \
+ /usr/include/qt5/QtCore/qatomic_mips.h \
+ /usr/include/qt5/QtCore/qatomic_s390.h \
+ /usr/include/qt5/QtCore/qatomic_sh4a.h \
+ /usr/include/qt5/QtCore/qatomic_sparc.h \
+ /usr/include/qt5/QtCore/qatomic_gcc.h \
+ /usr/include/qt5/QtCore/qatomic_x86.h \
+ /usr/include/qt5/QtCore/qatomic_cxx11.h \
+ /usr/include/qt5/QtCore/qatomic_unix.h \
+ /usr/include/qt5/QtCore/qmutex.h \
+ /usr/include/qt5/QtCore/qlogging.h \
+ /usr/include/qt5/QtCore/qflags.h \
+ /usr/include/qt5/QtCore/qtypeinfo.h \
+ /usr/include/qt5/QtCore/qtypetraits.h \
+ /usr/include/qt5/QtCore/qsysinfo.h \
+ /usr/include/qt5/QtCore/qobject.h \
+ /usr/include/qt5/QtCore/qobjectdefs.h \
+ /usr/include/qt5/QtCore/qnamespace.h \
+ /usr/include/qt5/QtCore/qobjectdefs_impl.h \
+ /usr/include/qt5/QtCore/qstring.h \
+ /usr/include/qt5/QtCore/qchar.h \
+ /usr/include/qt5/QtCore/qbytearray.h \
+ /usr/include/qt5/QtCore/qrefcount.h \
+ /usr/include/qt5/QtCore/qarraydata.h \
+ /usr/include/qt5/QtCore/qstringbuilder.h \
+ /usr/include/qt5/QtCore/qlist.h \
+ /usr/include/qt5/QtCore/qalgorithms.h \
+ /usr/include/qt5/QtCore/qiterator.h \
+ /usr/include/qt5/QtCore/qcoreevent.h \
+ /usr/include/qt5/QtCore/qscopedpointer.h \
+ /usr/include/qt5/QtCore/qmetatype.h \
+ /usr/include/qt5/QtCore/qvarlengtharray.h \
+ /usr/include/qt5/QtCore/qcontainerfwd.h \
+ /usr/include/qt5/QtCore/qisenum.h \
+ /usr/include/qt5/QtCore/qobject_impl.h \
+ /usr/include/qt5/QtCore/qstringlist.h \
+ /usr/include/qt5/QtCore/qdatastream.h \
+ /usr/include/qt5/QtCore/qpair.h \
+ /usr/include/qt5/QtCore/qregexp.h \
+ /usr/include/qt5/QtCore/qstringmatcher.h \
+ /usr/include/qt5/QtCore/qshareddata.h \
+ src/kprocess.h
+ /usr/lib/x86_64-linux-gnu/qt5/bin/moc $(DEFINES) $(INCPATH) -I/usr/include/c++/4.8 -I/usr/include/x86_64-linux-gnu/c++/4.8 -I/usr/include/c++/4.8/backward -I/usr/lib/gcc/x86_64-linux-gnu/4.8/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include src/kprocess.h -o .moc/moc_kprocess.cpp
+
+.moc/moc_Vt102Emulation.cpp: /usr/include/qt5/QtGui/QKeyEvent \
+ /usr/include/qt5/QtGui/qevent.h \
+ /usr/include/qt5/QtGui/qwindowdefs.h \
+ /usr/include/qt5/QtCore/qglobal.h \
+ /usr/include/qt5/QtCore/qconfig.h \
+ /usr/include/qt5/QtCore/qfeatures.h \
+ /usr/include/qt5/QtCore/qsystemdetection.h \
+ /usr/include/qt5/QtCore/qprocessordetection.h \
+ /usr/include/qt5/QtCore/qcompilerdetection.h \
+ /usr/include/qt5/QtCore/qglobalstatic.h \
+ /usr/include/qt5/QtCore/qatomic.h \
+ /usr/include/qt5/QtCore/qbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_bootstrap.h \
+ /usr/include/qt5/QtCore/qgenericatomic.h \
+ /usr/include/qt5/QtCore/qatomic_msvc.h \
+ /usr/include/qt5/QtCore/qatomic_integrity.h \
+ /usr/include/qt5/QtCore/qoldbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_vxworks.h \
+ /usr/include/qt5/QtCore/qatomic_power.h \
+ /usr/include/qt5/QtCore/qatomic_alpha.h \
+ /usr/include/qt5/QtCore/qatomic_armv7.h \
+ /usr/include/qt5/QtCore/qatomic_armv6.h \
+ /usr/include/qt5/QtCore/qatomic_armv5.h \
+ /usr/include/qt5/QtCore/qatomic_bfin.h \
+ /usr/include/qt5/QtCore/qatomic_ia64.h \
+ /usr/include/qt5/QtCore/qatomic_mips.h \
+ /usr/include/qt5/QtCore/qatomic_s390.h \
+ /usr/include/qt5/QtCore/qatomic_sh4a.h \
+ /usr/include/qt5/QtCore/qatomic_sparc.h \
+ /usr/include/qt5/QtCore/qatomic_gcc.h \
+ /usr/include/qt5/QtCore/qatomic_x86.h \
+ /usr/include/qt5/QtCore/qatomic_cxx11.h \
+ /usr/include/qt5/QtCore/qatomic_unix.h \
+ /usr/include/qt5/QtCore/qmutex.h \
+ /usr/include/qt5/QtCore/qlogging.h \
+ /usr/include/qt5/QtCore/qflags.h \
+ /usr/include/qt5/QtCore/qtypeinfo.h \
+ /usr/include/qt5/QtCore/qtypetraits.h \
+ /usr/include/qt5/QtCore/qsysinfo.h \
+ /usr/include/qt5/QtCore/qobjectdefs.h \
+ /usr/include/qt5/QtCore/qnamespace.h \
+ /usr/include/qt5/QtCore/qobjectdefs_impl.h \
+ /usr/include/qt5/QtGui/qwindowdefs_win.h \
+ /usr/include/qt5/QtCore/qobject.h \
+ /usr/include/qt5/QtCore/qstring.h \
+ /usr/include/qt5/QtCore/qchar.h \
+ /usr/include/qt5/QtCore/qbytearray.h \
+ /usr/include/qt5/QtCore/qrefcount.h \
+ /usr/include/qt5/QtCore/qarraydata.h \
+ /usr/include/qt5/QtCore/qstringbuilder.h \
+ /usr/include/qt5/QtCore/qlist.h \
+ /usr/include/qt5/QtCore/qalgorithms.h \
+ /usr/include/qt5/QtCore/qiterator.h \
+ /usr/include/qt5/QtCore/qcoreevent.h \
+ /usr/include/qt5/QtCore/qscopedpointer.h \
+ /usr/include/qt5/QtCore/qmetatype.h \
+ /usr/include/qt5/QtCore/qvarlengtharray.h \
+ /usr/include/qt5/QtCore/qcontainerfwd.h \
+ /usr/include/qt5/QtCore/qisenum.h \
+ /usr/include/qt5/QtCore/qobject_impl.h \
+ /usr/include/qt5/QtGui/qregion.h \
+ /usr/include/qt5/QtCore/qrect.h \
+ /usr/include/qt5/QtCore/qsize.h \
+ /usr/include/qt5/QtCore/qpoint.h \
+ /usr/include/qt5/QtCore/qdatastream.h \
+ /usr/include/qt5/QtCore/qiodevice.h \
+ /usr/include/qt5/QtCore/qpair.h \
+ /usr/include/qt5/QtGui/qkeysequence.h \
+ /usr/include/qt5/QtCore/qvariant.h \
+ /usr/include/qt5/QtCore/qmap.h \
+ /usr/include/qt5/QtCore/qdebug.h \
+ /usr/include/qt5/QtCore/qhash.h \
+ /usr/include/qt5/QtCore/qtextstream.h \
+ /usr/include/qt5/QtCore/qlocale.h \
+ /usr/include/qt5/QtCore/qshareddata.h \
+ /usr/include/qt5/QtCore/qvector.h \
+ /usr/include/qt5/QtCore/qset.h \
+ /usr/include/qt5/QtCore/qcontiguouscache.h \
+ /usr/include/qt5/QtCore/qstringlist.h \
+ /usr/include/qt5/QtCore/qregexp.h \
+ /usr/include/qt5/QtCore/qstringmatcher.h \
+ /usr/include/qt5/QtCore/qurl.h \
+ /usr/include/qt5/QtCore/qurlquery.h \
+ /usr/include/qt5/QtCore/qfile.h \
+ /usr/include/qt5/QtCore/qfiledevice.h \
+ /usr/include/qt5/QtGui/qvector2d.h \
+ /usr/include/qt5/QtGui/qtouchdevice.h \
+ /usr/include/qt5/QtCore/QHash \
+ /usr/include/qt5/QtCore/QTimer \
+ /usr/include/qt5/QtCore/qtimer.h \
+ /usr/include/qt5/QtCore/qbasictimer.h \
+ src/Emulation.h \
+ /usr/include/qt5/QtCore/QTextCodec \
+ /usr/include/qt5/QtCore/qtextcodec.h \
+ /usr/include/qt5/QtCore/QTextStream \
+ src/Screen.h \
+ /usr/include/qt5/QtCore/QRect \
+ /usr/include/qt5/QtCore/QVarLengthArray \
+ src/Character.h \
+ src/CharacterColor.h \
+ /usr/include/qt5/QtGui/QColor \
+ /usr/include/qt5/QtGui/qcolor.h \
+ /usr/include/qt5/QtGui/qrgb.h \
+ src/History.h \
+ /usr/include/qt5/QtCore/QBitRef \
+ /usr/include/qt5/QtCore/qbitarray.h \
+ /usr/include/qt5/QtCore/QVector \
+ /usr/include/qt5/QtCore/QTemporaryFile \
+ /usr/include/qt5/QtCore/qtemporaryfile.h \
+ src/BlockArray.h \
+ src/Vt102Emulation.h
+ /usr/lib/x86_64-linux-gnu/qt5/bin/moc $(DEFINES) $(INCPATH) -I/usr/include/c++/4.8 -I/usr/include/x86_64-linux-gnu/c++/4.8 -I/usr/include/c++/4.8/backward -I/usr/lib/gcc/x86_64-linux-gnu/4.8/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include src/Vt102Emulation.h -o .moc/moc_Vt102Emulation.cpp
+
+.moc/moc_Session.cpp: /usr/include/qt5/QtCore/QStringList \
+ /usr/include/qt5/QtCore/qstringlist.h \
+ /usr/include/qt5/QtCore/qalgorithms.h \
+ /usr/include/qt5/QtCore/qglobal.h \
+ /usr/include/qt5/QtCore/qconfig.h \
+ /usr/include/qt5/QtCore/qfeatures.h \
+ /usr/include/qt5/QtCore/qsystemdetection.h \
+ /usr/include/qt5/QtCore/qprocessordetection.h \
+ /usr/include/qt5/QtCore/qcompilerdetection.h \
+ /usr/include/qt5/QtCore/qglobalstatic.h \
+ /usr/include/qt5/QtCore/qatomic.h \
+ /usr/include/qt5/QtCore/qbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_bootstrap.h \
+ /usr/include/qt5/QtCore/qgenericatomic.h \
+ /usr/include/qt5/QtCore/qatomic_msvc.h \
+ /usr/include/qt5/QtCore/qatomic_integrity.h \
+ /usr/include/qt5/QtCore/qoldbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_vxworks.h \
+ /usr/include/qt5/QtCore/qatomic_power.h \
+ /usr/include/qt5/QtCore/qatomic_alpha.h \
+ /usr/include/qt5/QtCore/qatomic_armv7.h \
+ /usr/include/qt5/QtCore/qatomic_armv6.h \
+ /usr/include/qt5/QtCore/qatomic_armv5.h \
+ /usr/include/qt5/QtCore/qatomic_bfin.h \
+ /usr/include/qt5/QtCore/qatomic_ia64.h \
+ /usr/include/qt5/QtCore/qatomic_mips.h \
+ /usr/include/qt5/QtCore/qatomic_s390.h \
+ /usr/include/qt5/QtCore/qatomic_sh4a.h \
+ /usr/include/qt5/QtCore/qatomic_sparc.h \
+ /usr/include/qt5/QtCore/qatomic_gcc.h \
+ /usr/include/qt5/QtCore/qatomic_x86.h \
+ /usr/include/qt5/QtCore/qatomic_cxx11.h \
+ /usr/include/qt5/QtCore/qatomic_unix.h \
+ /usr/include/qt5/QtCore/qmutex.h \
+ /usr/include/qt5/QtCore/qlogging.h \
+ /usr/include/qt5/QtCore/qflags.h \
+ /usr/include/qt5/QtCore/qtypeinfo.h \
+ /usr/include/qt5/QtCore/qtypetraits.h \
+ /usr/include/qt5/QtCore/qsysinfo.h \
+ /usr/include/qt5/QtCore/qdatastream.h \
+ /usr/include/qt5/QtCore/qscopedpointer.h \
+ /usr/include/qt5/QtCore/qiodevice.h \
+ /usr/include/qt5/QtCore/qobject.h \
+ /usr/include/qt5/QtCore/qobjectdefs.h \
+ /usr/include/qt5/QtCore/qnamespace.h \
+ /usr/include/qt5/QtCore/qobjectdefs_impl.h \
+ /usr/include/qt5/QtCore/qstring.h \
+ /usr/include/qt5/QtCore/qchar.h \
+ /usr/include/qt5/QtCore/qbytearray.h \
+ /usr/include/qt5/QtCore/qrefcount.h \
+ /usr/include/qt5/QtCore/qarraydata.h \
+ /usr/include/qt5/QtCore/qstringbuilder.h \
+ /usr/include/qt5/QtCore/qlist.h \
+ /usr/include/qt5/QtCore/qiterator.h \
+ /usr/include/qt5/QtCore/qcoreevent.h \
+ /usr/include/qt5/QtCore/qmetatype.h \
+ /usr/include/qt5/QtCore/qvarlengtharray.h \
+ /usr/include/qt5/QtCore/qcontainerfwd.h \
+ /usr/include/qt5/QtCore/qisenum.h \
+ /usr/include/qt5/QtCore/qobject_impl.h \
+ /usr/include/qt5/QtCore/qpair.h \
+ /usr/include/qt5/QtCore/qregexp.h \
+ /usr/include/qt5/QtCore/qstringmatcher.h \
+ /usr/include/qt5/QtCore/QTimer \
+ /usr/include/qt5/QtCore/qtimer.h \
+ /usr/include/qt5/QtCore/qbasictimer.h \
+ /usr/include/qt5/QtGui/QWindow \
+ /usr/include/qt5/QtGui/qwindow.h \
+ /usr/include/qt5/QtCore/QObject \
+ /usr/include/qt5/QtCore/QEvent \
+ /usr/include/qt5/QtCore/QMargins \
+ /usr/include/qt5/QtCore/qmargins.h \
+ /usr/include/qt5/QtCore/qrect.h \
+ /usr/include/qt5/QtCore/qsize.h \
+ /usr/include/qt5/QtCore/qpoint.h \
+ /usr/include/qt5/QtCore/QRect \
+ /usr/include/qt5/QtGui/qsurface.h \
+ /usr/include/qt5/QtGui/qsurfaceformat.h \
+ /usr/include/qt5/QtGui/qwindowdefs.h \
+ /usr/include/qt5/QtGui/qwindowdefs_win.h \
+ /usr/include/qt5/QtGui/qicon.h \
+ /usr/include/qt5/QtGui/qpixmap.h \
+ /usr/include/qt5/QtGui/qpaintdevice.h \
+ /usr/include/qt5/QtGui/qcolor.h \
+ /usr/include/qt5/QtGui/qrgb.h \
+ /usr/include/qt5/QtCore/qsharedpointer.h \
+ /usr/include/qt5/QtCore/qshareddata.h \
+ /usr/include/qt5/QtCore/qsharedpointer_impl.h \
+ /usr/include/qt5/QtCore/qhash.h \
+ /usr/include/qt5/QtGui/qimage.h \
+ /usr/include/qt5/QtGui/qtransform.h \
+ /usr/include/qt5/QtGui/qmatrix.h \
+ /usr/include/qt5/QtGui/qpolygon.h \
+ /usr/include/qt5/QtCore/qvector.h \
+ /usr/include/qt5/QtGui/qregion.h \
+ /usr/include/qt5/QtCore/qline.h \
+ /usr/include/qt5/QtGui/qpainterpath.h \
+ /usr/include/qt5/QtGui/qcursor.h \
+ src/History.h \
+ /usr/include/qt5/QtCore/QBitRef \
+ /usr/include/qt5/QtCore/qbitarray.h \
+ /usr/include/qt5/QtCore/QHash \
+ /usr/include/qt5/QtCore/QVector \
+ /usr/include/qt5/QtCore/QTemporaryFile \
+ /usr/include/qt5/QtCore/qtemporaryfile.h \
+ /usr/include/qt5/QtCore/qfile.h \
+ /usr/include/qt5/QtCore/qfiledevice.h \
+ src/BlockArray.h \
+ src/Character.h \
+ src/CharacterColor.h \
+ /usr/include/qt5/QtGui/QColor \
+ src/Session.h
+ /usr/lib/x86_64-linux-gnu/qt5/bin/moc $(DEFINES) $(INCPATH) -I/usr/include/c++/4.8 -I/usr/include/x86_64-linux-gnu/c++/4.8 -I/usr/include/c++/4.8/backward -I/usr/lib/gcc/x86_64-linux-gnu/4.8/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include src/Session.h -o .moc/moc_Session.cpp
+
+.moc/moc_Emulation.cpp: /usr/include/qt5/QtGui/QKeyEvent \
+ /usr/include/qt5/QtGui/qevent.h \
+ /usr/include/qt5/QtGui/qwindowdefs.h \
+ /usr/include/qt5/QtCore/qglobal.h \
+ /usr/include/qt5/QtCore/qconfig.h \
+ /usr/include/qt5/QtCore/qfeatures.h \
+ /usr/include/qt5/QtCore/qsystemdetection.h \
+ /usr/include/qt5/QtCore/qprocessordetection.h \
+ /usr/include/qt5/QtCore/qcompilerdetection.h \
+ /usr/include/qt5/QtCore/qglobalstatic.h \
+ /usr/include/qt5/QtCore/qatomic.h \
+ /usr/include/qt5/QtCore/qbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_bootstrap.h \
+ /usr/include/qt5/QtCore/qgenericatomic.h \
+ /usr/include/qt5/QtCore/qatomic_msvc.h \
+ /usr/include/qt5/QtCore/qatomic_integrity.h \
+ /usr/include/qt5/QtCore/qoldbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_vxworks.h \
+ /usr/include/qt5/QtCore/qatomic_power.h \
+ /usr/include/qt5/QtCore/qatomic_alpha.h \
+ /usr/include/qt5/QtCore/qatomic_armv7.h \
+ /usr/include/qt5/QtCore/qatomic_armv6.h \
+ /usr/include/qt5/QtCore/qatomic_armv5.h \
+ /usr/include/qt5/QtCore/qatomic_bfin.h \
+ /usr/include/qt5/QtCore/qatomic_ia64.h \
+ /usr/include/qt5/QtCore/qatomic_mips.h \
+ /usr/include/qt5/QtCore/qatomic_s390.h \
+ /usr/include/qt5/QtCore/qatomic_sh4a.h \
+ /usr/include/qt5/QtCore/qatomic_sparc.h \
+ /usr/include/qt5/QtCore/qatomic_gcc.h \
+ /usr/include/qt5/QtCore/qatomic_x86.h \
+ /usr/include/qt5/QtCore/qatomic_cxx11.h \
+ /usr/include/qt5/QtCore/qatomic_unix.h \
+ /usr/include/qt5/QtCore/qmutex.h \
+ /usr/include/qt5/QtCore/qlogging.h \
+ /usr/include/qt5/QtCore/qflags.h \
+ /usr/include/qt5/QtCore/qtypeinfo.h \
+ /usr/include/qt5/QtCore/qtypetraits.h \
+ /usr/include/qt5/QtCore/qsysinfo.h \
+ /usr/include/qt5/QtCore/qobjectdefs.h \
+ /usr/include/qt5/QtCore/qnamespace.h \
+ /usr/include/qt5/QtCore/qobjectdefs_impl.h \
+ /usr/include/qt5/QtGui/qwindowdefs_win.h \
+ /usr/include/qt5/QtCore/qobject.h \
+ /usr/include/qt5/QtCore/qstring.h \
+ /usr/include/qt5/QtCore/qchar.h \
+ /usr/include/qt5/QtCore/qbytearray.h \
+ /usr/include/qt5/QtCore/qrefcount.h \
+ /usr/include/qt5/QtCore/qarraydata.h \
+ /usr/include/qt5/QtCore/qstringbuilder.h \
+ /usr/include/qt5/QtCore/qlist.h \
+ /usr/include/qt5/QtCore/qalgorithms.h \
+ /usr/include/qt5/QtCore/qiterator.h \
+ /usr/include/qt5/QtCore/qcoreevent.h \
+ /usr/include/qt5/QtCore/qscopedpointer.h \
+ /usr/include/qt5/QtCore/qmetatype.h \
+ /usr/include/qt5/QtCore/qvarlengtharray.h \
+ /usr/include/qt5/QtCore/qcontainerfwd.h \
+ /usr/include/qt5/QtCore/qisenum.h \
+ /usr/include/qt5/QtCore/qobject_impl.h \
+ /usr/include/qt5/QtGui/qregion.h \
+ /usr/include/qt5/QtCore/qrect.h \
+ /usr/include/qt5/QtCore/qsize.h \
+ /usr/include/qt5/QtCore/qpoint.h \
+ /usr/include/qt5/QtCore/qdatastream.h \
+ /usr/include/qt5/QtCore/qiodevice.h \
+ /usr/include/qt5/QtCore/qpair.h \
+ /usr/include/qt5/QtGui/qkeysequence.h \
+ /usr/include/qt5/QtCore/qvariant.h \
+ /usr/include/qt5/QtCore/qmap.h \
+ /usr/include/qt5/QtCore/qdebug.h \
+ /usr/include/qt5/QtCore/qhash.h \
+ /usr/include/qt5/QtCore/qtextstream.h \
+ /usr/include/qt5/QtCore/qlocale.h \
+ /usr/include/qt5/QtCore/qshareddata.h \
+ /usr/include/qt5/QtCore/qvector.h \
+ /usr/include/qt5/QtCore/qset.h \
+ /usr/include/qt5/QtCore/qcontiguouscache.h \
+ /usr/include/qt5/QtCore/qstringlist.h \
+ /usr/include/qt5/QtCore/qregexp.h \
+ /usr/include/qt5/QtCore/qstringmatcher.h \
+ /usr/include/qt5/QtCore/qurl.h \
+ /usr/include/qt5/QtCore/qurlquery.h \
+ /usr/include/qt5/QtCore/qfile.h \
+ /usr/include/qt5/QtCore/qfiledevice.h \
+ /usr/include/qt5/QtGui/qvector2d.h \
+ /usr/include/qt5/QtGui/qtouchdevice.h \
+ /usr/include/qt5/QtCore/QTextCodec \
+ /usr/include/qt5/QtCore/qtextcodec.h \
+ /usr/include/qt5/QtCore/QTextStream \
+ /usr/include/qt5/QtCore/QTimer \
+ /usr/include/qt5/QtCore/qtimer.h \
+ /usr/include/qt5/QtCore/qbasictimer.h \
+ src/Emulation.h
+ /usr/lib/x86_64-linux-gnu/qt5/bin/moc $(DEFINES) $(INCPATH) -I/usr/include/c++/4.8 -I/usr/include/x86_64-linux-gnu/c++/4.8 -I/usr/include/c++/4.8/backward -I/usr/lib/gcc/x86_64-linux-gnu/4.8/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include src/Emulation.h -o .moc/moc_Emulation.cpp
+
+.moc/moc_ScreenWindow.cpp: /usr/include/qt5/QtCore/QObject \
+ /usr/include/qt5/QtCore/qobject.h \
+ /usr/include/qt5/QtCore/qobjectdefs.h \
+ /usr/include/qt5/QtCore/qnamespace.h \
+ /usr/include/qt5/QtCore/qglobal.h \
+ /usr/include/qt5/QtCore/qconfig.h \
+ /usr/include/qt5/QtCore/qfeatures.h \
+ /usr/include/qt5/QtCore/qsystemdetection.h \
+ /usr/include/qt5/QtCore/qprocessordetection.h \
+ /usr/include/qt5/QtCore/qcompilerdetection.h \
+ /usr/include/qt5/QtCore/qglobalstatic.h \
+ /usr/include/qt5/QtCore/qatomic.h \
+ /usr/include/qt5/QtCore/qbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_bootstrap.h \
+ /usr/include/qt5/QtCore/qgenericatomic.h \
+ /usr/include/qt5/QtCore/qatomic_msvc.h \
+ /usr/include/qt5/QtCore/qatomic_integrity.h \
+ /usr/include/qt5/QtCore/qoldbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_vxworks.h \
+ /usr/include/qt5/QtCore/qatomic_power.h \
+ /usr/include/qt5/QtCore/qatomic_alpha.h \
+ /usr/include/qt5/QtCore/qatomic_armv7.h \
+ /usr/include/qt5/QtCore/qatomic_armv6.h \
+ /usr/include/qt5/QtCore/qatomic_armv5.h \
+ /usr/include/qt5/QtCore/qatomic_bfin.h \
+ /usr/include/qt5/QtCore/qatomic_ia64.h \
+ /usr/include/qt5/QtCore/qatomic_mips.h \
+ /usr/include/qt5/QtCore/qatomic_s390.h \
+ /usr/include/qt5/QtCore/qatomic_sh4a.h \
+ /usr/include/qt5/QtCore/qatomic_sparc.h \
+ /usr/include/qt5/QtCore/qatomic_gcc.h \
+ /usr/include/qt5/QtCore/qatomic_x86.h \
+ /usr/include/qt5/QtCore/qatomic_cxx11.h \
+ /usr/include/qt5/QtCore/qatomic_unix.h \
+ /usr/include/qt5/QtCore/qmutex.h \
+ /usr/include/qt5/QtCore/qlogging.h \
+ /usr/include/qt5/QtCore/qflags.h \
+ /usr/include/qt5/QtCore/qtypeinfo.h \
+ /usr/include/qt5/QtCore/qtypetraits.h \
+ /usr/include/qt5/QtCore/qsysinfo.h \
+ /usr/include/qt5/QtCore/qobjectdefs_impl.h \
+ /usr/include/qt5/QtCore/qstring.h \
+ /usr/include/qt5/QtCore/qchar.h \
+ /usr/include/qt5/QtCore/qbytearray.h \
+ /usr/include/qt5/QtCore/qrefcount.h \
+ /usr/include/qt5/QtCore/qarraydata.h \
+ /usr/include/qt5/QtCore/qstringbuilder.h \
+ /usr/include/qt5/QtCore/qlist.h \
+ /usr/include/qt5/QtCore/qalgorithms.h \
+ /usr/include/qt5/QtCore/qiterator.h \
+ /usr/include/qt5/QtCore/qcoreevent.h \
+ /usr/include/qt5/QtCore/qscopedpointer.h \
+ /usr/include/qt5/QtCore/qmetatype.h \
+ /usr/include/qt5/QtCore/qvarlengtharray.h \
+ /usr/include/qt5/QtCore/qcontainerfwd.h \
+ /usr/include/qt5/QtCore/qisenum.h \
+ /usr/include/qt5/QtCore/qobject_impl.h \
+ /usr/include/qt5/QtCore/QPoint \
+ /usr/include/qt5/QtCore/qpoint.h \
+ /usr/include/qt5/QtCore/QRect \
+ /usr/include/qt5/QtCore/qrect.h \
+ /usr/include/qt5/QtCore/qsize.h \
+ src/Character.h \
+ /usr/include/qt5/QtCore/QHash \
+ /usr/include/qt5/QtCore/qhash.h \
+ /usr/include/qt5/QtCore/qpair.h \
+ src/CharacterColor.h \
+ /usr/include/qt5/QtGui/QColor \
+ /usr/include/qt5/QtGui/qcolor.h \
+ /usr/include/qt5/QtGui/qrgb.h \
+ /usr/include/qt5/QtCore/qstringlist.h \
+ /usr/include/qt5/QtCore/qdatastream.h \
+ /usr/include/qt5/QtCore/qiodevice.h \
+ /usr/include/qt5/QtCore/qregexp.h \
+ /usr/include/qt5/QtCore/qstringmatcher.h \
+ src/ScreenWindow.h
+ /usr/lib/x86_64-linux-gnu/qt5/bin/moc $(DEFINES) $(INCPATH) -I/usr/include/c++/4.8 -I/usr/include/x86_64-linux-gnu/c++/4.8 -I/usr/include/c++/4.8/backward -I/usr/lib/gcc/x86_64-linux-gnu/4.8/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include src/ScreenWindow.h -o .moc/moc_ScreenWindow.cpp
+
+.moc/moc_Filter.cpp: /usr/include/qt5/QtWidgets/QAction \
+ /usr/include/qt5/QtWidgets/qaction.h \
+ /usr/include/qt5/QtGui/qkeysequence.h \
+ /usr/include/qt5/QtCore/qnamespace.h \
+ /usr/include/qt5/QtCore/qglobal.h \
+ /usr/include/qt5/QtCore/qconfig.h \
+ /usr/include/qt5/QtCore/qfeatures.h \
+ /usr/include/qt5/QtCore/qsystemdetection.h \
+ /usr/include/qt5/QtCore/qprocessordetection.h \
+ /usr/include/qt5/QtCore/qcompilerdetection.h \
+ /usr/include/qt5/QtCore/qglobalstatic.h \
+ /usr/include/qt5/QtCore/qatomic.h \
+ /usr/include/qt5/QtCore/qbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_bootstrap.h \
+ /usr/include/qt5/QtCore/qgenericatomic.h \
+ /usr/include/qt5/QtCore/qatomic_msvc.h \
+ /usr/include/qt5/QtCore/qatomic_integrity.h \
+ /usr/include/qt5/QtCore/qoldbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_vxworks.h \
+ /usr/include/qt5/QtCore/qatomic_power.h \
+ /usr/include/qt5/QtCore/qatomic_alpha.h \
+ /usr/include/qt5/QtCore/qatomic_armv7.h \
+ /usr/include/qt5/QtCore/qatomic_armv6.h \
+ /usr/include/qt5/QtCore/qatomic_armv5.h \
+ /usr/include/qt5/QtCore/qatomic_bfin.h \
+ /usr/include/qt5/QtCore/qatomic_ia64.h \
+ /usr/include/qt5/QtCore/qatomic_mips.h \
+ /usr/include/qt5/QtCore/qatomic_s390.h \
+ /usr/include/qt5/QtCore/qatomic_sh4a.h \
+ /usr/include/qt5/QtCore/qatomic_sparc.h \
+ /usr/include/qt5/QtCore/qatomic_gcc.h \
+ /usr/include/qt5/QtCore/qatomic_x86.h \
+ /usr/include/qt5/QtCore/qatomic_cxx11.h \
+ /usr/include/qt5/QtCore/qatomic_unix.h \
+ /usr/include/qt5/QtCore/qmutex.h \
+ /usr/include/qt5/QtCore/qlogging.h \
+ /usr/include/qt5/QtCore/qflags.h \
+ /usr/include/qt5/QtCore/qtypeinfo.h \
+ /usr/include/qt5/QtCore/qtypetraits.h \
+ /usr/include/qt5/QtCore/qsysinfo.h \
+ /usr/include/qt5/QtCore/qstring.h \
+ /usr/include/qt5/QtCore/qchar.h \
+ /usr/include/qt5/QtCore/qbytearray.h \
+ /usr/include/qt5/QtCore/qrefcount.h \
+ /usr/include/qt5/QtCore/qarraydata.h \
+ /usr/include/qt5/QtCore/qstringbuilder.h \
+ /usr/include/qt5/QtCore/qobjectdefs.h \
+ /usr/include/qt5/QtCore/qobjectdefs_impl.h \
+ /usr/include/qt5/QtWidgets/qwidget.h \
+ /usr/include/qt5/QtGui/qwindowdefs.h \
+ /usr/include/qt5/QtGui/qwindowdefs_win.h \
+ /usr/include/qt5/QtCore/qobject.h \
+ /usr/include/qt5/QtCore/qlist.h \
+ /usr/include/qt5/QtCore/qalgorithms.h \
+ /usr/include/qt5/QtCore/qiterator.h \
+ /usr/include/qt5/QtCore/qcoreevent.h \
+ /usr/include/qt5/QtCore/qscopedpointer.h \
+ /usr/include/qt5/QtCore/qmetatype.h \
+ /usr/include/qt5/QtCore/qvarlengtharray.h \
+ /usr/include/qt5/QtCore/qcontainerfwd.h \
+ /usr/include/qt5/QtCore/qisenum.h \
+ /usr/include/qt5/QtCore/qobject_impl.h \
+ /usr/include/qt5/QtCore/qmargins.h \
+ /usr/include/qt5/QtCore/qrect.h \
+ /usr/include/qt5/QtCore/qsize.h \
+ /usr/include/qt5/QtCore/qpoint.h \
+ /usr/include/qt5/QtGui/qpaintdevice.h \
+ /usr/include/qt5/QtGui/qpalette.h \
+ /usr/include/qt5/QtGui/qcolor.h \
+ /usr/include/qt5/QtGui/qrgb.h \
+ /usr/include/qt5/QtCore/qstringlist.h \
+ /usr/include/qt5/QtCore/qdatastream.h \
+ /usr/include/qt5/QtCore/qiodevice.h \
+ /usr/include/qt5/QtCore/qpair.h \
+ /usr/include/qt5/QtCore/qregexp.h \
+ /usr/include/qt5/QtCore/qstringmatcher.h \
+ /usr/include/qt5/QtGui/qbrush.h \
+ /usr/include/qt5/QtCore/qvector.h \
+ /usr/include/qt5/QtGui/qmatrix.h \
+ /usr/include/qt5/QtGui/qpolygon.h \
+ /usr/include/qt5/QtGui/qregion.h \
+ /usr/include/qt5/QtCore/qline.h \
+ /usr/include/qt5/QtGui/qtransform.h \
+ /usr/include/qt5/QtGui/qpainterpath.h \
+ /usr/include/qt5/QtGui/qimage.h \
+ /usr/include/qt5/QtGui/qpixmap.h \
+ /usr/include/qt5/QtCore/qsharedpointer.h \
+ /usr/include/qt5/QtCore/qshareddata.h \
+ /usr/include/qt5/QtCore/qsharedpointer_impl.h \
+ /usr/include/qt5/QtCore/qhash.h \
+ /usr/include/qt5/QtGui/qfont.h \
+ /usr/include/qt5/QtGui/qfontmetrics.h \
+ /usr/include/qt5/QtGui/qfontinfo.h \
+ /usr/include/qt5/QtWidgets/qsizepolicy.h \
+ /usr/include/qt5/QtGui/qcursor.h \
+ /usr/include/qt5/QtGui/qevent.h \
+ /usr/include/qt5/QtCore/qvariant.h \
+ /usr/include/qt5/QtCore/qmap.h \
+ /usr/include/qt5/QtCore/qdebug.h \
+ /usr/include/qt5/QtCore/qtextstream.h \
+ /usr/include/qt5/QtCore/qlocale.h \
+ /usr/include/qt5/QtCore/qset.h \
+ /usr/include/qt5/QtCore/qcontiguouscache.h \
+ /usr/include/qt5/QtCore/qurl.h \
+ /usr/include/qt5/QtCore/qurlquery.h \
+ /usr/include/qt5/QtCore/qfile.h \
+ /usr/include/qt5/QtCore/qfiledevice.h \
+ /usr/include/qt5/QtGui/qvector2d.h \
+ /usr/include/qt5/QtGui/qtouchdevice.h \
+ /usr/include/qt5/QtGui/qicon.h \
+ /usr/include/qt5/QtWidgets/qactiongroup.h \
+ /usr/include/qt5/QtCore/QList \
+ /usr/include/qt5/QtCore/QObject \
+ /usr/include/qt5/QtCore/QStringList \
+ /usr/include/qt5/QtCore/QHash \
+ /usr/include/qt5/QtCore/QRegExp \
+ src/Character.h \
+ src/CharacterColor.h \
+ /usr/include/qt5/QtGui/QColor \
+ src/Filter.h
+ /usr/lib/x86_64-linux-gnu/qt5/bin/moc $(DEFINES) $(INCPATH) -I/usr/include/c++/4.8 -I/usr/include/x86_64-linux-gnu/c++/4.8 -I/usr/include/c++/4.8/backward -I/usr/lib/gcc/x86_64-linux-gnu/4.8/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include src/Filter.h -o .moc/moc_Filter.cpp
+
+.moc/moc_TerminalDisplay.cpp: /usr/include/qt5/QtGui/QColor \
+ /usr/include/qt5/QtGui/qcolor.h \
+ /usr/include/qt5/QtGui/qrgb.h \
+ /usr/include/qt5/QtCore/qglobal.h \
+ /usr/include/qt5/QtCore/qconfig.h \
+ /usr/include/qt5/QtCore/qfeatures.h \
+ /usr/include/qt5/QtCore/qsystemdetection.h \
+ /usr/include/qt5/QtCore/qprocessordetection.h \
+ /usr/include/qt5/QtCore/qcompilerdetection.h \
+ /usr/include/qt5/QtCore/qglobalstatic.h \
+ /usr/include/qt5/QtCore/qatomic.h \
+ /usr/include/qt5/QtCore/qbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_bootstrap.h \
+ /usr/include/qt5/QtCore/qgenericatomic.h \
+ /usr/include/qt5/QtCore/qatomic_msvc.h \
+ /usr/include/qt5/QtCore/qatomic_integrity.h \
+ /usr/include/qt5/QtCore/qoldbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_vxworks.h \
+ /usr/include/qt5/QtCore/qatomic_power.h \
+ /usr/include/qt5/QtCore/qatomic_alpha.h \
+ /usr/include/qt5/QtCore/qatomic_armv7.h \
+ /usr/include/qt5/QtCore/qatomic_armv6.h \
+ /usr/include/qt5/QtCore/qatomic_armv5.h \
+ /usr/include/qt5/QtCore/qatomic_bfin.h \
+ /usr/include/qt5/QtCore/qatomic_ia64.h \
+ /usr/include/qt5/QtCore/qatomic_mips.h \
+ /usr/include/qt5/QtCore/qatomic_s390.h \
+ /usr/include/qt5/QtCore/qatomic_sh4a.h \
+ /usr/include/qt5/QtCore/qatomic_sparc.h \
+ /usr/include/qt5/QtCore/qatomic_gcc.h \
+ /usr/include/qt5/QtCore/qatomic_x86.h \
+ /usr/include/qt5/QtCore/qatomic_cxx11.h \
+ /usr/include/qt5/QtCore/qatomic_unix.h \
+ /usr/include/qt5/QtCore/qmutex.h \
+ /usr/include/qt5/QtCore/qlogging.h \
+ /usr/include/qt5/QtCore/qflags.h \
+ /usr/include/qt5/QtCore/qtypeinfo.h \
+ /usr/include/qt5/QtCore/qtypetraits.h \
+ /usr/include/qt5/QtCore/qsysinfo.h \
+ /usr/include/qt5/QtCore/qnamespace.h \
+ /usr/include/qt5/QtCore/qstringlist.h \
+ /usr/include/qt5/QtCore/qalgorithms.h \
+ /usr/include/qt5/QtCore/qdatastream.h \
+ /usr/include/qt5/QtCore/qscopedpointer.h \
+ /usr/include/qt5/QtCore/qiodevice.h \
+ /usr/include/qt5/QtCore/qobject.h \
+ /usr/include/qt5/QtCore/qobjectdefs.h \
+ /usr/include/qt5/QtCore/qobjectdefs_impl.h \
+ /usr/include/qt5/QtCore/qstring.h \
+ /usr/include/qt5/QtCore/qchar.h \
+ /usr/include/qt5/QtCore/qbytearray.h \
+ /usr/include/qt5/QtCore/qrefcount.h \
+ /usr/include/qt5/QtCore/qarraydata.h \
+ /usr/include/qt5/QtCore/qstringbuilder.h \
+ /usr/include/qt5/QtCore/qlist.h \
+ /usr/include/qt5/QtCore/qiterator.h \
+ /usr/include/qt5/QtCore/qcoreevent.h \
+ /usr/include/qt5/QtCore/qmetatype.h \
+ /usr/include/qt5/QtCore/qvarlengtharray.h \
+ /usr/include/qt5/QtCore/qcontainerfwd.h \
+ /usr/include/qt5/QtCore/qisenum.h \
+ /usr/include/qt5/QtCore/qobject_impl.h \
+ /usr/include/qt5/QtCore/qpair.h \
+ /usr/include/qt5/QtCore/qregexp.h \
+ /usr/include/qt5/QtCore/qstringmatcher.h \
+ /usr/include/qt5/QtCore/QPointer \
+ /usr/include/qt5/QtCore/qpointer.h \
+ /usr/include/qt5/QtCore/qsharedpointer.h \
+ /usr/include/qt5/QtCore/qshareddata.h \
+ /usr/include/qt5/QtCore/qsharedpointer_impl.h \
+ /usr/include/qt5/QtCore/qhash.h \
+ src/Filter.h \
+ /usr/include/qt5/QtWidgets/QAction \
+ /usr/include/qt5/QtWidgets/qaction.h \
+ /usr/include/qt5/QtGui/qkeysequence.h \
+ /usr/include/qt5/QtWidgets/qwidget.h \
+ /usr/include/qt5/QtGui/qwindowdefs.h \
+ /usr/include/qt5/QtGui/qwindowdefs_win.h \
+ /usr/include/qt5/QtCore/qmargins.h \
+ /usr/include/qt5/QtCore/qrect.h \
+ /usr/include/qt5/QtCore/qsize.h \
+ /usr/include/qt5/QtCore/qpoint.h \
+ /usr/include/qt5/QtGui/qpaintdevice.h \
+ /usr/include/qt5/QtGui/qpalette.h \
+ /usr/include/qt5/QtGui/qbrush.h \
+ /usr/include/qt5/QtCore/qvector.h \
+ /usr/include/qt5/QtGui/qmatrix.h \
+ /usr/include/qt5/QtGui/qpolygon.h \
+ /usr/include/qt5/QtGui/qregion.h \
+ /usr/include/qt5/QtCore/qline.h \
+ /usr/include/qt5/QtGui/qtransform.h \
+ /usr/include/qt5/QtGui/qpainterpath.h \
+ /usr/include/qt5/QtGui/qimage.h \
+ /usr/include/qt5/QtGui/qpixmap.h \
+ /usr/include/qt5/QtGui/qfont.h \
+ /usr/include/qt5/QtGui/qfontmetrics.h \
+ /usr/include/qt5/QtGui/qfontinfo.h \
+ /usr/include/qt5/QtWidgets/qsizepolicy.h \
+ /usr/include/qt5/QtGui/qcursor.h \
+ /usr/include/qt5/QtGui/qevent.h \
+ /usr/include/qt5/QtCore/qvariant.h \
+ /usr/include/qt5/QtCore/qmap.h \
+ /usr/include/qt5/QtCore/qdebug.h \
+ /usr/include/qt5/QtCore/qtextstream.h \
+ /usr/include/qt5/QtCore/qlocale.h \
+ /usr/include/qt5/QtCore/qset.h \
+ /usr/include/qt5/QtCore/qcontiguouscache.h \
+ /usr/include/qt5/QtCore/qurl.h \
+ /usr/include/qt5/QtCore/qurlquery.h \
+ /usr/include/qt5/QtCore/qfile.h \
+ /usr/include/qt5/QtCore/qfiledevice.h \
+ /usr/include/qt5/QtGui/qvector2d.h \
+ /usr/include/qt5/QtGui/qtouchdevice.h \
+ /usr/include/qt5/QtGui/qicon.h \
+ /usr/include/qt5/QtWidgets/qactiongroup.h \
+ /usr/include/qt5/QtCore/QList \
+ /usr/include/qt5/QtCore/QObject \
+ /usr/include/qt5/QtCore/QStringList \
+ /usr/include/qt5/QtCore/QHash \
+ /usr/include/qt5/QtCore/QRegExp \
+ src/Character.h \
+ src/CharacterColor.h \
+ src/ksession.h \
+ src/Session.h \
+ /usr/include/qt5/QtCore/QTimer \
+ /usr/include/qt5/QtCore/qtimer.h \
+ /usr/include/qt5/QtCore/qbasictimer.h \
+ /usr/include/qt5/QtGui/QWindow \
+ /usr/include/qt5/QtGui/qwindow.h \
+ /usr/include/qt5/QtCore/QEvent \
+ /usr/include/qt5/QtCore/QMargins \
+ /usr/include/qt5/QtCore/QRect \
+ /usr/include/qt5/QtGui/qsurface.h \
+ /usr/include/qt5/QtGui/qsurfaceformat.h \
+ src/History.h \
+ /usr/include/qt5/QtCore/QBitRef \
+ /usr/include/qt5/QtCore/qbitarray.h \
+ /usr/include/qt5/QtCore/QVector \
+ /usr/include/qt5/QtCore/QTemporaryFile \
+ /usr/include/qt5/QtCore/qtemporaryfile.h \
+ src/BlockArray.h \
+ /usr/include/qt5/QtQuick/QQuickItem \
+ /usr/include/qt5/QtQuick/qquickitem.h \
+ /usr/include/qt5/QtQuick/qtquickglobal.h \
+ /usr/include/qt5/QtQml/qqml.h \
+ /usr/include/qt5/QtQml/qqmlprivate.h \
+ /usr/include/qt5/QtQml/qtqmlglobal.h \
+ /usr/include/qt5/QtQml/qqmlparserstatus.h \
+ /usr/include/qt5/QtQml/qqmlpropertyvaluesource.h \
+ /usr/include/qt5/QtQml/qqmllist.h \
+ /usr/include/qt5/QtCore/qmetaobject.h \
+ /usr/include/qt5/QtQml/qqmlcomponent.h \
+ /usr/include/qt5/QtQml/qqmlerror.h \
+ /usr/include/qt5/QtQml/qjsvalue.h \
+ /usr/include/qt5/QtGui/qaccessible.h \
+ /usr/include/qt5/QtCore/qcoreapplication.h \
+ /usr/include/qt5/QtCore/qeventloop.h \
+ /usr/include/qt5/QtQuick/QQuickPaintedItem \
+ /usr/include/qt5/QtQuick/qquickpainteditem.h \
+ src/TerminalDisplay.h
+ /usr/lib/x86_64-linux-gnu/qt5/bin/moc $(DEFINES) $(INCPATH) -I/usr/include/c++/4.8 -I/usr/include/x86_64-linux-gnu/c++/4.8 -I/usr/include/c++/4.8/backward -I/usr/lib/gcc/x86_64-linux-gnu/4.8/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include src/TerminalDisplay.h -o .moc/moc_TerminalDisplay.cpp
+
+.moc/moc_ksession.cpp: /usr/include/qt5/QtCore/QObject \
+ /usr/include/qt5/QtCore/qobject.h \
+ /usr/include/qt5/QtCore/qobjectdefs.h \
+ /usr/include/qt5/QtCore/qnamespace.h \
+ /usr/include/qt5/QtCore/qglobal.h \
+ /usr/include/qt5/QtCore/qconfig.h \
+ /usr/include/qt5/QtCore/qfeatures.h \
+ /usr/include/qt5/QtCore/qsystemdetection.h \
+ /usr/include/qt5/QtCore/qprocessordetection.h \
+ /usr/include/qt5/QtCore/qcompilerdetection.h \
+ /usr/include/qt5/QtCore/qglobalstatic.h \
+ /usr/include/qt5/QtCore/qatomic.h \
+ /usr/include/qt5/QtCore/qbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_bootstrap.h \
+ /usr/include/qt5/QtCore/qgenericatomic.h \
+ /usr/include/qt5/QtCore/qatomic_msvc.h \
+ /usr/include/qt5/QtCore/qatomic_integrity.h \
+ /usr/include/qt5/QtCore/qoldbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_vxworks.h \
+ /usr/include/qt5/QtCore/qatomic_power.h \
+ /usr/include/qt5/QtCore/qatomic_alpha.h \
+ /usr/include/qt5/QtCore/qatomic_armv7.h \
+ /usr/include/qt5/QtCore/qatomic_armv6.h \
+ /usr/include/qt5/QtCore/qatomic_armv5.h \
+ /usr/include/qt5/QtCore/qatomic_bfin.h \
+ /usr/include/qt5/QtCore/qatomic_ia64.h \
+ /usr/include/qt5/QtCore/qatomic_mips.h \
+ /usr/include/qt5/QtCore/qatomic_s390.h \
+ /usr/include/qt5/QtCore/qatomic_sh4a.h \
+ /usr/include/qt5/QtCore/qatomic_sparc.h \
+ /usr/include/qt5/QtCore/qatomic_gcc.h \
+ /usr/include/qt5/QtCore/qatomic_x86.h \
+ /usr/include/qt5/QtCore/qatomic_cxx11.h \
+ /usr/include/qt5/QtCore/qatomic_unix.h \
+ /usr/include/qt5/QtCore/qmutex.h \
+ /usr/include/qt5/QtCore/qlogging.h \
+ /usr/include/qt5/QtCore/qflags.h \
+ /usr/include/qt5/QtCore/qtypeinfo.h \
+ /usr/include/qt5/QtCore/qtypetraits.h \
+ /usr/include/qt5/QtCore/qsysinfo.h \
+ /usr/include/qt5/QtCore/qobjectdefs_impl.h \
+ /usr/include/qt5/QtCore/qstring.h \
+ /usr/include/qt5/QtCore/qchar.h \
+ /usr/include/qt5/QtCore/qbytearray.h \
+ /usr/include/qt5/QtCore/qrefcount.h \
+ /usr/include/qt5/QtCore/qarraydata.h \
+ /usr/include/qt5/QtCore/qstringbuilder.h \
+ /usr/include/qt5/QtCore/qlist.h \
+ /usr/include/qt5/QtCore/qalgorithms.h \
+ /usr/include/qt5/QtCore/qiterator.h \
+ /usr/include/qt5/QtCore/qcoreevent.h \
+ /usr/include/qt5/QtCore/qscopedpointer.h \
+ /usr/include/qt5/QtCore/qmetatype.h \
+ /usr/include/qt5/QtCore/qvarlengtharray.h \
+ /usr/include/qt5/QtCore/qcontainerfwd.h \
+ /usr/include/qt5/QtCore/qisenum.h \
+ /usr/include/qt5/QtCore/qobject_impl.h \
+ src/Session.h \
+ /usr/include/qt5/QtCore/QStringList \
+ /usr/include/qt5/QtCore/qstringlist.h \
+ /usr/include/qt5/QtCore/qdatastream.h \
+ /usr/include/qt5/QtCore/qiodevice.h \
+ /usr/include/qt5/QtCore/qpair.h \
+ /usr/include/qt5/QtCore/qregexp.h \
+ /usr/include/qt5/QtCore/qstringmatcher.h \
+ /usr/include/qt5/QtCore/QTimer \
+ /usr/include/qt5/QtCore/qtimer.h \
+ /usr/include/qt5/QtCore/qbasictimer.h \
+ /usr/include/qt5/QtGui/QWindow \
+ /usr/include/qt5/QtGui/qwindow.h \
+ /usr/include/qt5/QtCore/QEvent \
+ /usr/include/qt5/QtCore/QMargins \
+ /usr/include/qt5/QtCore/qmargins.h \
+ /usr/include/qt5/QtCore/qrect.h \
+ /usr/include/qt5/QtCore/qsize.h \
+ /usr/include/qt5/QtCore/qpoint.h \
+ /usr/include/qt5/QtCore/QRect \
+ /usr/include/qt5/QtGui/qsurface.h \
+ /usr/include/qt5/QtGui/qsurfaceformat.h \
+ /usr/include/qt5/QtGui/qwindowdefs.h \
+ /usr/include/qt5/QtGui/qwindowdefs_win.h \
+ /usr/include/qt5/QtGui/qicon.h \
+ /usr/include/qt5/QtGui/qpixmap.h \
+ /usr/include/qt5/QtGui/qpaintdevice.h \
+ /usr/include/qt5/QtGui/qcolor.h \
+ /usr/include/qt5/QtGui/qrgb.h \
+ /usr/include/qt5/QtCore/qsharedpointer.h \
+ /usr/include/qt5/QtCore/qshareddata.h \
+ /usr/include/qt5/QtCore/qsharedpointer_impl.h \
+ /usr/include/qt5/QtCore/qhash.h \
+ /usr/include/qt5/QtGui/qimage.h \
+ /usr/include/qt5/QtGui/qtransform.h \
+ /usr/include/qt5/QtGui/qmatrix.h \
+ /usr/include/qt5/QtGui/qpolygon.h \
+ /usr/include/qt5/QtCore/qvector.h \
+ /usr/include/qt5/QtGui/qregion.h \
+ /usr/include/qt5/QtCore/qline.h \
+ /usr/include/qt5/QtGui/qpainterpath.h \
+ /usr/include/qt5/QtGui/qcursor.h \
+ src/History.h \
+ /usr/include/qt5/QtCore/QBitRef \
+ /usr/include/qt5/QtCore/qbitarray.h \
+ /usr/include/qt5/QtCore/QHash \
+ /usr/include/qt5/QtCore/QVector \
+ /usr/include/qt5/QtCore/QTemporaryFile \
+ /usr/include/qt5/QtCore/qtemporaryfile.h \
+ /usr/include/qt5/QtCore/qfile.h \
+ /usr/include/qt5/QtCore/qfiledevice.h \
+ src/BlockArray.h \
+ src/Character.h \
+ src/CharacterColor.h \
+ /usr/include/qt5/QtGui/QColor \
+ src/ksession.h
+ /usr/lib/x86_64-linux-gnu/qt5/bin/moc $(DEFINES) $(INCPATH) -I/usr/include/c++/4.8 -I/usr/include/x86_64-linux-gnu/c++/4.8 -I/usr/include/c++/4.8/backward -I/usr/lib/gcc/x86_64-linux-gnu/4.8/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include src/ksession.h -o .moc/moc_ksession.cpp
+
+compiler_moc_source_make_all:
+compiler_moc_source_clean:
+compiler_uic_make_all:
+compiler_uic_clean:
+compiler_yacc_decl_make_all:
+compiler_yacc_decl_clean:
+compiler_yacc_impl_make_all:
+compiler_yacc_impl_clean:
+compiler_lex_make_all:
+compiler_lex_clean:
+compiler_clean: compiler_moc_header_clean
+
+####### Compile
+
+.obj/plugin.o: src/plugin.cpp /usr/include/qt5/QtCore/QString \
+ /usr/include/qt5/QtCore/qstring.h \
+ /usr/include/qt5/QtCore/qchar.h \
+ /usr/include/qt5/QtCore/qglobal.h \
+ /usr/include/qt5/QtCore/qconfig.h \
+ /usr/include/qt5/QtCore/qfeatures.h \
+ /usr/include/qt5/QtCore/qsystemdetection.h \
+ /usr/include/qt5/QtCore/qprocessordetection.h \
+ /usr/include/qt5/QtCore/qcompilerdetection.h \
+ /usr/include/qt5/QtCore/qglobalstatic.h \
+ /usr/include/qt5/QtCore/qatomic.h \
+ /usr/include/qt5/QtCore/qbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_bootstrap.h \
+ /usr/include/qt5/QtCore/qgenericatomic.h \
+ /usr/include/qt5/QtCore/qatomic_msvc.h \
+ /usr/include/qt5/QtCore/qatomic_integrity.h \
+ /usr/include/qt5/QtCore/qoldbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_vxworks.h \
+ /usr/include/qt5/QtCore/qatomic_power.h \
+ /usr/include/qt5/QtCore/qatomic_alpha.h \
+ /usr/include/qt5/QtCore/qatomic_armv7.h \
+ /usr/include/qt5/QtCore/qatomic_armv6.h \
+ /usr/include/qt5/QtCore/qatomic_armv5.h \
+ /usr/include/qt5/QtCore/qatomic_bfin.h \
+ /usr/include/qt5/QtCore/qatomic_ia64.h \
+ /usr/include/qt5/QtCore/qatomic_mips.h \
+ /usr/include/qt5/QtCore/qatomic_s390.h \
+ /usr/include/qt5/QtCore/qatomic_sh4a.h \
+ /usr/include/qt5/QtCore/qatomic_sparc.h \
+ /usr/include/qt5/QtCore/qatomic_gcc.h \
+ /usr/include/qt5/QtCore/qatomic_x86.h \
+ /usr/include/qt5/QtCore/qatomic_cxx11.h \
+ /usr/include/qt5/QtCore/qatomic_unix.h \
+ /usr/include/qt5/QtCore/qmutex.h \
+ /usr/include/qt5/QtCore/qlogging.h \
+ /usr/include/qt5/QtCore/qflags.h \
+ /usr/include/qt5/QtCore/qtypeinfo.h \
+ /usr/include/qt5/QtCore/qtypetraits.h \
+ /usr/include/qt5/QtCore/qsysinfo.h \
+ /usr/include/qt5/QtCore/qbytearray.h \
+ /usr/include/qt5/QtCore/qrefcount.h \
+ /usr/include/qt5/QtCore/qnamespace.h \
+ /usr/include/qt5/QtCore/qarraydata.h \
+ /usr/include/qt5/QtCore/qstringbuilder.h \
+ /usr/include/qt5/QtCore/QDir \
+ /usr/include/qt5/QtCore/qdir.h \
+ /usr/include/qt5/QtCore/qfileinfo.h \
+ /usr/include/qt5/QtCore/qfile.h \
+ /usr/include/qt5/QtCore/qfiledevice.h \
+ /usr/include/qt5/QtCore/qiodevice.h \
+ /usr/include/qt5/QtCore/qobject.h \
+ /usr/include/qt5/QtCore/qobjectdefs.h \
+ /usr/include/qt5/QtCore/qobjectdefs_impl.h \
+ /usr/include/qt5/QtCore/qlist.h \
+ /usr/include/qt5/QtCore/qalgorithms.h \
+ /usr/include/qt5/QtCore/qiterator.h \
+ /usr/include/qt5/QtCore/qcoreevent.h \
+ /usr/include/qt5/QtCore/qscopedpointer.h \
+ /usr/include/qt5/QtCore/qmetatype.h \
+ /usr/include/qt5/QtCore/qvarlengtharray.h \
+ /usr/include/qt5/QtCore/qcontainerfwd.h \
+ /usr/include/qt5/QtCore/qisenum.h \
+ /usr/include/qt5/QtCore/qobject_impl.h \
+ /usr/include/qt5/QtCore/qshareddata.h \
+ /usr/include/qt5/QtCore/qstringlist.h \
+ /usr/include/qt5/QtCore/qdatastream.h \
+ /usr/include/qt5/QtCore/qpair.h \
+ /usr/include/qt5/QtCore/qregexp.h \
+ /usr/include/qt5/QtCore/qstringmatcher.h \
+ src/plugin.h \
+ src/TerminalDisplay.h \
+ /usr/include/qt5/QtGui/QColor \
+ /usr/include/qt5/QtGui/qcolor.h \
+ /usr/include/qt5/QtGui/qrgb.h \
+ /usr/include/qt5/QtCore/QPointer \
+ /usr/include/qt5/QtCore/qpointer.h \
+ /usr/include/qt5/QtCore/qsharedpointer.h \
+ /usr/include/qt5/QtCore/qsharedpointer_impl.h \
+ /usr/include/qt5/QtCore/qhash.h \
+ src/Filter.h \
+ /usr/include/qt5/QtWidgets/QAction \
+ /usr/include/qt5/QtWidgets/qaction.h \
+ /usr/include/qt5/QtGui/qkeysequence.h \
+ /usr/include/qt5/QtWidgets/qwidget.h \
+ /usr/include/qt5/QtGui/qwindowdefs.h \
+ /usr/include/qt5/QtGui/qwindowdefs_win.h \
+ /usr/include/qt5/QtCore/qmargins.h \
+ /usr/include/qt5/QtCore/qrect.h \
+ /usr/include/qt5/QtCore/qsize.h \
+ /usr/include/qt5/QtCore/qpoint.h \
+ /usr/include/qt5/QtGui/qpaintdevice.h \
+ /usr/include/qt5/QtGui/qpalette.h \
+ /usr/include/qt5/QtGui/qbrush.h \
+ /usr/include/qt5/QtCore/qvector.h \
+ /usr/include/qt5/QtGui/qmatrix.h \
+ /usr/include/qt5/QtGui/qpolygon.h \
+ /usr/include/qt5/QtGui/qregion.h \
+ /usr/include/qt5/QtCore/qline.h \
+ /usr/include/qt5/QtGui/qtransform.h \
+ /usr/include/qt5/QtGui/qpainterpath.h \
+ /usr/include/qt5/QtGui/qimage.h \
+ /usr/include/qt5/QtGui/qpixmap.h \
+ /usr/include/qt5/QtGui/qfont.h \
+ /usr/include/qt5/QtGui/qfontmetrics.h \
+ /usr/include/qt5/QtGui/qfontinfo.h \
+ /usr/include/qt5/QtWidgets/qsizepolicy.h \
+ /usr/include/qt5/QtGui/qcursor.h \
+ /usr/include/qt5/QtGui/qevent.h \
+ /usr/include/qt5/QtCore/qvariant.h \
+ /usr/include/qt5/QtCore/qmap.h \
+ /usr/include/qt5/QtCore/qdebug.h \
+ /usr/include/qt5/QtCore/qtextstream.h \
+ /usr/include/qt5/QtCore/qlocale.h \
+ /usr/include/qt5/QtCore/qset.h \
+ /usr/include/qt5/QtCore/qcontiguouscache.h \
+ /usr/include/qt5/QtCore/qurl.h \
+ /usr/include/qt5/QtCore/qurlquery.h \
+ /usr/include/qt5/QtGui/qvector2d.h \
+ /usr/include/qt5/QtGui/qtouchdevice.h \
+ /usr/include/qt5/QtGui/qicon.h \
+ /usr/include/qt5/QtWidgets/qactiongroup.h \
+ /usr/include/qt5/QtCore/QList \
+ /usr/include/qt5/QtCore/QObject \
+ /usr/include/qt5/QtCore/QStringList \
+ /usr/include/qt5/QtCore/QHash \
+ /usr/include/qt5/QtCore/QRegExp \
+ src/Character.h \
+ src/CharacterColor.h \
+ src/ksession.h \
+ src/Session.h \
+ /usr/include/qt5/QtCore/QTimer \
+ /usr/include/qt5/QtCore/qtimer.h \
+ /usr/include/qt5/QtCore/qbasictimer.h \
+ /usr/include/qt5/QtGui/QWindow \
+ /usr/include/qt5/QtGui/qwindow.h \
+ /usr/include/qt5/QtCore/QEvent \
+ /usr/include/qt5/QtCore/QMargins \
+ /usr/include/qt5/QtCore/QRect \
+ /usr/include/qt5/QtGui/qsurface.h \
+ /usr/include/qt5/QtGui/qsurfaceformat.h \
+ src/History.h \
+ /usr/include/qt5/QtCore/QBitRef \
+ /usr/include/qt5/QtCore/qbitarray.h \
+ /usr/include/qt5/QtCore/QVector \
+ /usr/include/qt5/QtCore/QTemporaryFile \
+ /usr/include/qt5/QtCore/qtemporaryfile.h \
+ src/BlockArray.h \
+ /usr/include/qt5/QtQuick/QQuickItem \
+ /usr/include/qt5/QtQuick/qquickitem.h \
+ /usr/include/qt5/QtQuick/qtquickglobal.h \
+ /usr/include/qt5/QtQml/qqml.h \
+ /usr/include/qt5/QtQml/qqmlprivate.h \
+ /usr/include/qt5/QtQml/qtqmlglobal.h \
+ /usr/include/qt5/QtQml/qqmlparserstatus.h \
+ /usr/include/qt5/QtQml/qqmlpropertyvaluesource.h \
+ /usr/include/qt5/QtQml/qqmllist.h \
+ /usr/include/qt5/QtCore/qmetaobject.h \
+ /usr/include/qt5/QtQml/qqmlcomponent.h \
+ /usr/include/qt5/QtQml/qqmlerror.h \
+ /usr/include/qt5/QtQml/qjsvalue.h \
+ /usr/include/qt5/QtGui/qaccessible.h \
+ /usr/include/qt5/QtCore/qcoreapplication.h \
+ /usr/include/qt5/QtCore/qeventloop.h \
+ /usr/include/qt5/QtQuick/QQuickPaintedItem \
+ /usr/include/qt5/QtQuick/qquickpainteditem.h \
+ /usr/include/qt5/QtQml/QQmlEngine \
+ /usr/include/qt5/QtQml/qqmlengine.h \
+ /usr/include/qt5/QtQml/qjsengine.h \
+ /usr/include/qt5/QtQml/qqmldebug.h \
+ /usr/include/qt5/QtQml/QQmlExtensionPlugin \
+ /usr/include/qt5/QtQml/qqmlextensionplugin.h \
+ /usr/include/qt5/QtCore/qplugin.h \
+ /usr/include/qt5/QtCore/qjsonobject.h \
+ /usr/include/qt5/QtCore/qjsonvalue.h \
+ /usr/include/qt5/QtCore/QUrl \
+ /usr/include/qt5/QtQml/qqmlextensioninterface.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/plugin.o src/plugin.cpp
+
+.obj/Pty.o: src/Pty.cpp src/Pty.h \
+ /usr/include/qt5/QtCore/QStringList \
+ /usr/include/qt5/QtCore/qstringlist.h \
+ /usr/include/qt5/QtCore/qalgorithms.h \
+ /usr/include/qt5/QtCore/qglobal.h \
+ /usr/include/qt5/QtCore/qconfig.h \
+ /usr/include/qt5/QtCore/qfeatures.h \
+ /usr/include/qt5/QtCore/qsystemdetection.h \
+ /usr/include/qt5/QtCore/qprocessordetection.h \
+ /usr/include/qt5/QtCore/qcompilerdetection.h \
+ /usr/include/qt5/QtCore/qglobalstatic.h \
+ /usr/include/qt5/QtCore/qatomic.h \
+ /usr/include/qt5/QtCore/qbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_bootstrap.h \
+ /usr/include/qt5/QtCore/qgenericatomic.h \
+ /usr/include/qt5/QtCore/qatomic_msvc.h \
+ /usr/include/qt5/QtCore/qatomic_integrity.h \
+ /usr/include/qt5/QtCore/qoldbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_vxworks.h \
+ /usr/include/qt5/QtCore/qatomic_power.h \
+ /usr/include/qt5/QtCore/qatomic_alpha.h \
+ /usr/include/qt5/QtCore/qatomic_armv7.h \
+ /usr/include/qt5/QtCore/qatomic_armv6.h \
+ /usr/include/qt5/QtCore/qatomic_armv5.h \
+ /usr/include/qt5/QtCore/qatomic_bfin.h \
+ /usr/include/qt5/QtCore/qatomic_ia64.h \
+ /usr/include/qt5/QtCore/qatomic_mips.h \
+ /usr/include/qt5/QtCore/qatomic_s390.h \
+ /usr/include/qt5/QtCore/qatomic_sh4a.h \
+ /usr/include/qt5/QtCore/qatomic_sparc.h \
+ /usr/include/qt5/QtCore/qatomic_gcc.h \
+ /usr/include/qt5/QtCore/qatomic_x86.h \
+ /usr/include/qt5/QtCore/qatomic_cxx11.h \
+ /usr/include/qt5/QtCore/qatomic_unix.h \
+ /usr/include/qt5/QtCore/qmutex.h \
+ /usr/include/qt5/QtCore/qlogging.h \
+ /usr/include/qt5/QtCore/qflags.h \
+ /usr/include/qt5/QtCore/qtypeinfo.h \
+ /usr/include/qt5/QtCore/qtypetraits.h \
+ /usr/include/qt5/QtCore/qsysinfo.h \
+ /usr/include/qt5/QtCore/qdatastream.h \
+ /usr/include/qt5/QtCore/qscopedpointer.h \
+ /usr/include/qt5/QtCore/qiodevice.h \
+ /usr/include/qt5/QtCore/qobject.h \
+ /usr/include/qt5/QtCore/qobjectdefs.h \
+ /usr/include/qt5/QtCore/qnamespace.h \
+ /usr/include/qt5/QtCore/qobjectdefs_impl.h \
+ /usr/include/qt5/QtCore/qstring.h \
+ /usr/include/qt5/QtCore/qchar.h \
+ /usr/include/qt5/QtCore/qbytearray.h \
+ /usr/include/qt5/QtCore/qrefcount.h \
+ /usr/include/qt5/QtCore/qarraydata.h \
+ /usr/include/qt5/QtCore/qstringbuilder.h \
+ /usr/include/qt5/QtCore/qlist.h \
+ /usr/include/qt5/QtCore/qiterator.h \
+ /usr/include/qt5/QtCore/qcoreevent.h \
+ /usr/include/qt5/QtCore/qmetatype.h \
+ /usr/include/qt5/QtCore/qvarlengtharray.h \
+ /usr/include/qt5/QtCore/qcontainerfwd.h \
+ /usr/include/qt5/QtCore/qisenum.h \
+ /usr/include/qt5/QtCore/qobject_impl.h \
+ /usr/include/qt5/QtCore/qpair.h \
+ /usr/include/qt5/QtCore/qregexp.h \
+ /usr/include/qt5/QtCore/qstringmatcher.h \
+ /usr/include/qt5/QtCore/QVector \
+ /usr/include/qt5/QtCore/qvector.h \
+ /usr/include/qt5/QtCore/qpoint.h \
+ /usr/include/qt5/QtCore/QList \
+ /usr/include/qt5/QtCore/QSize \
+ /usr/include/qt5/QtCore/qsize.h \
+ src/kptyprocess.h \
+ src/kprocess.h \
+ /usr/include/qt5/QtCore/QProcess \
+ /usr/include/qt5/QtCore/qprocess.h \
+ /usr/include/qt5/QtCore/qshareddata.h \
+ src/kptydevice.h \
+ src/kpty_p.h \
+ src/kpty.h \
+ /usr/include/qt5/QtCore/QtCore \
+ /usr/include/qt5/QtCore/QtCoreDepends \
+ /usr/include/qt5/QtCore/qabstractanimation.h \
+ /usr/include/qt5/QtCore/qanimationgroup.h \
+ /usr/include/qt5/QtCore/qparallelanimationgroup.h \
+ /usr/include/qt5/QtCore/qpauseanimation.h \
+ /usr/include/qt5/QtCore/qpropertyanimation.h \
+ /usr/include/qt5/QtCore/qvariantanimation.h \
+ /usr/include/qt5/QtCore/qeasingcurve.h \
+ /usr/include/qt5/QtCore/qvariant.h \
+ /usr/include/qt5/QtCore/qmap.h \
+ /usr/include/qt5/QtCore/qdebug.h \
+ /usr/include/qt5/QtCore/qhash.h \
+ /usr/include/qt5/QtCore/qtextstream.h \
+ /usr/include/qt5/QtCore/qlocale.h \
+ /usr/include/qt5/QtCore/qset.h \
+ /usr/include/qt5/QtCore/qcontiguouscache.h \
+ /usr/include/qt5/QtCore/qsequentialanimationgroup.h \
+ /usr/include/qt5/QtCore/qtextcodec.h \
+ /usr/include/qt5/QtCore/qendian.h \
+ /usr/include/qt5/QtCore/qlibraryinfo.h \
+ /usr/include/qt5/QtCore/qdatetime.h \
+ /usr/include/qt5/QtCore/qsharedpointer.h \
+ /usr/include/qt5/QtCore/qsharedpointer_impl.h \
+ /usr/include/qt5/QtCore/qnumeric.h \
+ /usr/include/qt5/QtCore/qbuffer.h \
+ /usr/include/qt5/QtCore/qdir.h \
+ /usr/include/qt5/QtCore/qfileinfo.h \
+ /usr/include/qt5/QtCore/qfile.h \
+ /usr/include/qt5/QtCore/qfiledevice.h \
+ /usr/include/qt5/QtCore/qdiriterator.h \
+ /usr/include/qt5/QtCore/qfileselector.h \
+ /usr/include/qt5/QtCore/QObject \
+ /usr/include/qt5/QtCore/qfilesystemwatcher.h \
+ /usr/include/qt5/QtCore/qlockfile.h \
+ /usr/include/qt5/QtCore/qloggingcategory.h \
+ /usr/include/qt5/QtCore/qresource.h \
+ /usr/include/qt5/QtCore/qsavefile.h \
+ /usr/include/qt5/QtCore/qsettings.h \
+ /usr/include/qt5/QtCore/qstandardpaths.h \
+ /usr/include/qt5/QtCore/qtemporarydir.h \
+ /usr/include/qt5/QtCore/QScopedPointer \
+ /usr/include/qt5/QtCore/qtemporaryfile.h \
+ /usr/include/qt5/QtCore/qurl.h \
+ /usr/include/qt5/QtCore/qurlquery.h \
+ /usr/include/qt5/QtCore/qabstractitemmodel.h \
+ /usr/include/qt5/QtCore/qabstractproxymodel.h \
+ /usr/include/qt5/QtCore/qidentityproxymodel.h \
+ /usr/include/qt5/QtCore/qitemselectionmodel.h \
+ /usr/include/qt5/QtCore/qsortfilterproxymodel.h \
+ /usr/include/qt5/QtCore/qstringlistmodel.h \
+ /usr/include/qt5/QtCore/qjsonarray.h \
+ /usr/include/qt5/QtCore/qjsonvalue.h \
+ /usr/include/qt5/QtCore/qjsondocument.h \
+ /usr/include/qt5/QtCore/qjsonobject.h \
+ /usr/include/qt5/QtCore/qabstracteventdispatcher.h \
+ /usr/include/qt5/QtCore/qeventloop.h \
+ /usr/include/qt5/QtCore/qabstractnativeeventfilter.h \
+ /usr/include/qt5/QtCore/qbasictimer.h \
+ /usr/include/qt5/QtCore/qcoreapplication.h \
+ /usr/include/qt5/QtCore/qmath.h \
+ /usr/include/qt5/QtCore/qmetaobject.h \
+ /usr/include/qt5/QtCore/qmimedata.h \
+ /usr/include/qt5/QtCore/qobjectcleanuphandler.h \
+ /usr/include/qt5/QtCore/qpointer.h \
+ /usr/include/qt5/QtCore/qsharedmemory.h \
+ /usr/include/qt5/QtCore/qsignalmapper.h \
+ /usr/include/qt5/QtCore/qsocketnotifier.h \
+ /usr/include/qt5/QtCore/qsystemsemaphore.h \
+ /usr/include/qt5/QtCore/qtimer.h \
+ /usr/include/qt5/QtCore/qtranslator.h \
+ /usr/include/qt5/QtCore/qwineventnotifier.h \
+ /usr/include/qt5/QtCore/qmimedatabase.h \
+ /usr/include/qt5/QtCore/qmimetype.h \
+ /usr/include/qt5/QtCore/qfactoryinterface.h \
+ /usr/include/qt5/QtCore/qlibrary.h \
+ /usr/include/qt5/QtCore/qplugin.h \
+ /usr/include/qt5/QtCore/qpluginloader.h \
+ /usr/include/qt5/QtCore/quuid.h \
+ /usr/include/qt5/QtCore/qabstractstate.h \
+ /usr/include/qt5/QtCore/qabstracttransition.h \
+ /usr/include/qt5/QtCore/qeventtransition.h \
+ /usr/include/qt5/QtCore/qfinalstate.h \
+ /usr/include/qt5/QtCore/qhistorystate.h \
+ /usr/include/qt5/QtCore/qsignaltransition.h \
+ /usr/include/qt5/QtCore/qstate.h \
+ /usr/include/qt5/QtCore/qstatemachine.h \
+ /usr/include/qt5/QtCore/qexception.h \
+ /usr/include/qt5/QtCore/qfuture.h \
+ /usr/include/qt5/QtCore/qfutureinterface.h \
+ /usr/include/qt5/QtCore/qrunnable.h \
+ /usr/include/qt5/QtCore/qresultstore.h \
+ /usr/include/qt5/QtCore/qfuturesynchronizer.h \
+ /usr/include/qt5/QtCore/qfuturewatcher.h \
+ /usr/include/qt5/QtCore/qreadwritelock.h \
+ /usr/include/qt5/QtCore/qsemaphore.h \
+ /usr/include/qt5/QtCore/qthread.h \
+ /usr/include/qt5/QtCore/qthreadpool.h \
+ /usr/include/qt5/QtCore/qthreadstorage.h \
+ /usr/include/qt5/QtCore/qwaitcondition.h \
+ /usr/include/qt5/QtCore/qarraydataops.h \
+ /usr/include/qt5/QtCore/qarraydatapointer.h \
+ /usr/include/qt5/QtCore/qbitarray.h \
+ /usr/include/qt5/QtCore/qbytearraymatcher.h \
+ /usr/include/qt5/QtCore/qcache.h \
+ /usr/include/qt5/QtCore/qcollator.h \
+ /usr/include/qt5/QtCore/qcommandlineoption.h \
+ /usr/include/qt5/QtCore/qcommandlineparser.h \
+ /usr/include/qt5/QtCore/qcryptographichash.h \
+ /usr/include/qt5/QtCore/qelapsedtimer.h \
+ /usr/include/qt5/QtCore/qline.h \
+ /usr/include/qt5/QtCore/qlinkedlist.h \
+ /usr/include/qt5/QtCore/qmargins.h \
+ /usr/include/qt5/QtCore/qrect.h \
+ /usr/include/qt5/QtCore/qmessageauthenticationcode.h \
+ /usr/include/qt5/QtCore/qqueue.h \
+ /usr/include/qt5/QtCore/qregularexpression.h \
+ /usr/include/qt5/QtCore/qscopedvaluerollback.h \
+ /usr/include/qt5/QtCore/qstack.h \
+ /usr/include/qt5/QtCore/qtextboundaryfinder.h \
+ /usr/include/qt5/QtCore/qtimeline.h \
+ /usr/include/qt5/QtCore/qtimezone.h \
+ /usr/include/qt5/QtCore/qxmlstream.h \
+ /usr/include/qt5/QtCore/qtcoreversion.h \
+ /usr/include/qt5/QtCore/QByteArray \
+ /usr/include/qt5/QtCore/QIODevice
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/Pty.o src/Pty.cpp
+
+.obj/kptyprocess.o: src/kptyprocess.cpp src/kptyprocess.h \
+ src/kprocess.h \
+ /usr/include/qt5/QtCore/QProcess \
+ /usr/include/qt5/QtCore/qprocess.h \
+ /usr/include/qt5/QtCore/qiodevice.h \
+ /usr/include/qt5/QtCore/qglobal.h \
+ /usr/include/qt5/QtCore/qconfig.h \
+ /usr/include/qt5/QtCore/qfeatures.h \
+ /usr/include/qt5/QtCore/qsystemdetection.h \
+ /usr/include/qt5/QtCore/qprocessordetection.h \
+ /usr/include/qt5/QtCore/qcompilerdetection.h \
+ /usr/include/qt5/QtCore/qglobalstatic.h \
+ /usr/include/qt5/QtCore/qatomic.h \
+ /usr/include/qt5/QtCore/qbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_bootstrap.h \
+ /usr/include/qt5/QtCore/qgenericatomic.h \
+ /usr/include/qt5/QtCore/qatomic_msvc.h \
+ /usr/include/qt5/QtCore/qatomic_integrity.h \
+ /usr/include/qt5/QtCore/qoldbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_vxworks.h \
+ /usr/include/qt5/QtCore/qatomic_power.h \
+ /usr/include/qt5/QtCore/qatomic_alpha.h \
+ /usr/include/qt5/QtCore/qatomic_armv7.h \
+ /usr/include/qt5/QtCore/qatomic_armv6.h \
+ /usr/include/qt5/QtCore/qatomic_armv5.h \
+ /usr/include/qt5/QtCore/qatomic_bfin.h \
+ /usr/include/qt5/QtCore/qatomic_ia64.h \
+ /usr/include/qt5/QtCore/qatomic_mips.h \
+ /usr/include/qt5/QtCore/qatomic_s390.h \
+ /usr/include/qt5/QtCore/qatomic_sh4a.h \
+ /usr/include/qt5/QtCore/qatomic_sparc.h \
+ /usr/include/qt5/QtCore/qatomic_gcc.h \
+ /usr/include/qt5/QtCore/qatomic_x86.h \
+ /usr/include/qt5/QtCore/qatomic_cxx11.h \
+ /usr/include/qt5/QtCore/qatomic_unix.h \
+ /usr/include/qt5/QtCore/qmutex.h \
+ /usr/include/qt5/QtCore/qlogging.h \
+ /usr/include/qt5/QtCore/qflags.h \
+ /usr/include/qt5/QtCore/qtypeinfo.h \
+ /usr/include/qt5/QtCore/qtypetraits.h \
+ /usr/include/qt5/QtCore/qsysinfo.h \
+ /usr/include/qt5/QtCore/qobject.h \
+ /usr/include/qt5/QtCore/qobjectdefs.h \
+ /usr/include/qt5/QtCore/qnamespace.h \
+ /usr/include/qt5/QtCore/qobjectdefs_impl.h \
+ /usr/include/qt5/QtCore/qstring.h \
+ /usr/include/qt5/QtCore/qchar.h \
+ /usr/include/qt5/QtCore/qbytearray.h \
+ /usr/include/qt5/QtCore/qrefcount.h \
+ /usr/include/qt5/QtCore/qarraydata.h \
+ /usr/include/qt5/QtCore/qstringbuilder.h \
+ /usr/include/qt5/QtCore/qlist.h \
+ /usr/include/qt5/QtCore/qalgorithms.h \
+ /usr/include/qt5/QtCore/qiterator.h \
+ /usr/include/qt5/QtCore/qcoreevent.h \
+ /usr/include/qt5/QtCore/qscopedpointer.h \
+ /usr/include/qt5/QtCore/qmetatype.h \
+ /usr/include/qt5/QtCore/qvarlengtharray.h \
+ /usr/include/qt5/QtCore/qcontainerfwd.h \
+ /usr/include/qt5/QtCore/qisenum.h \
+ /usr/include/qt5/QtCore/qobject_impl.h \
+ /usr/include/qt5/QtCore/qstringlist.h \
+ /usr/include/qt5/QtCore/qdatastream.h \
+ /usr/include/qt5/QtCore/qpair.h \
+ /usr/include/qt5/QtCore/qregexp.h \
+ /usr/include/qt5/QtCore/qstringmatcher.h \
+ /usr/include/qt5/QtCore/qshareddata.h \
+ src/kptydevice.h \
+ src/kpty_p.h \
+ src/kpty.h \
+ /usr/include/qt5/QtCore/QtCore \
+ /usr/include/qt5/QtCore/QtCoreDepends \
+ /usr/include/qt5/QtCore/qabstractanimation.h \
+ /usr/include/qt5/QtCore/qanimationgroup.h \
+ /usr/include/qt5/QtCore/qparallelanimationgroup.h \
+ /usr/include/qt5/QtCore/qpauseanimation.h \
+ /usr/include/qt5/QtCore/qpropertyanimation.h \
+ /usr/include/qt5/QtCore/qvariantanimation.h \
+ /usr/include/qt5/QtCore/qeasingcurve.h \
+ /usr/include/qt5/QtCore/qvector.h \
+ /usr/include/qt5/QtCore/qpoint.h \
+ /usr/include/qt5/QtCore/qvariant.h \
+ /usr/include/qt5/QtCore/qmap.h \
+ /usr/include/qt5/QtCore/qdebug.h \
+ /usr/include/qt5/QtCore/qhash.h \
+ /usr/include/qt5/QtCore/qtextstream.h \
+ /usr/include/qt5/QtCore/qlocale.h \
+ /usr/include/qt5/QtCore/qset.h \
+ /usr/include/qt5/QtCore/qcontiguouscache.h \
+ /usr/include/qt5/QtCore/qsequentialanimationgroup.h \
+ /usr/include/qt5/QtCore/qtextcodec.h \
+ /usr/include/qt5/QtCore/qendian.h \
+ /usr/include/qt5/QtCore/qlibraryinfo.h \
+ /usr/include/qt5/QtCore/qdatetime.h \
+ /usr/include/qt5/QtCore/qsharedpointer.h \
+ /usr/include/qt5/QtCore/qsharedpointer_impl.h \
+ /usr/include/qt5/QtCore/qnumeric.h \
+ /usr/include/qt5/QtCore/qbuffer.h \
+ /usr/include/qt5/QtCore/qdir.h \
+ /usr/include/qt5/QtCore/qfileinfo.h \
+ /usr/include/qt5/QtCore/qfile.h \
+ /usr/include/qt5/QtCore/qfiledevice.h \
+ /usr/include/qt5/QtCore/qdiriterator.h \
+ /usr/include/qt5/QtCore/qfileselector.h \
+ /usr/include/qt5/QtCore/QObject \
+ /usr/include/qt5/QtCore/QStringList \
+ /usr/include/qt5/QtCore/qfilesystemwatcher.h \
+ /usr/include/qt5/QtCore/qlockfile.h \
+ /usr/include/qt5/QtCore/qloggingcategory.h \
+ /usr/include/qt5/QtCore/qresource.h \
+ /usr/include/qt5/QtCore/qsavefile.h \
+ /usr/include/qt5/QtCore/qsettings.h \
+ /usr/include/qt5/QtCore/qstandardpaths.h \
+ /usr/include/qt5/QtCore/qtemporarydir.h \
+ /usr/include/qt5/QtCore/QScopedPointer \
+ /usr/include/qt5/QtCore/qtemporaryfile.h \
+ /usr/include/qt5/QtCore/qurl.h \
+ /usr/include/qt5/QtCore/qurlquery.h \
+ /usr/include/qt5/QtCore/qabstractitemmodel.h \
+ /usr/include/qt5/QtCore/qabstractproxymodel.h \
+ /usr/include/qt5/QtCore/qidentityproxymodel.h \
+ /usr/include/qt5/QtCore/qitemselectionmodel.h \
+ /usr/include/qt5/QtCore/qsortfilterproxymodel.h \
+ /usr/include/qt5/QtCore/qstringlistmodel.h \
+ /usr/include/qt5/QtCore/qjsonarray.h \
+ /usr/include/qt5/QtCore/qjsonvalue.h \
+ /usr/include/qt5/QtCore/qjsondocument.h \
+ /usr/include/qt5/QtCore/qjsonobject.h \
+ /usr/include/qt5/QtCore/qabstracteventdispatcher.h \
+ /usr/include/qt5/QtCore/qeventloop.h \
+ /usr/include/qt5/QtCore/qabstractnativeeventfilter.h \
+ /usr/include/qt5/QtCore/qbasictimer.h \
+ /usr/include/qt5/QtCore/qcoreapplication.h \
+ /usr/include/qt5/QtCore/qmath.h \
+ /usr/include/qt5/QtCore/qmetaobject.h \
+ /usr/include/qt5/QtCore/qmimedata.h \
+ /usr/include/qt5/QtCore/qobjectcleanuphandler.h \
+ /usr/include/qt5/QtCore/qpointer.h \
+ /usr/include/qt5/QtCore/qsharedmemory.h \
+ /usr/include/qt5/QtCore/qsignalmapper.h \
+ /usr/include/qt5/QtCore/qsocketnotifier.h \
+ /usr/include/qt5/QtCore/qsystemsemaphore.h \
+ /usr/include/qt5/QtCore/qtimer.h \
+ /usr/include/qt5/QtCore/qtranslator.h \
+ /usr/include/qt5/QtCore/qwineventnotifier.h \
+ /usr/include/qt5/QtCore/qmimedatabase.h \
+ /usr/include/qt5/QtCore/qmimetype.h \
+ /usr/include/qt5/QtCore/qfactoryinterface.h \
+ /usr/include/qt5/QtCore/qlibrary.h \
+ /usr/include/qt5/QtCore/qplugin.h \
+ /usr/include/qt5/QtCore/qpluginloader.h \
+ /usr/include/qt5/QtCore/quuid.h \
+ /usr/include/qt5/QtCore/qabstractstate.h \
+ /usr/include/qt5/QtCore/qabstracttransition.h \
+ /usr/include/qt5/QtCore/qeventtransition.h \
+ /usr/include/qt5/QtCore/qfinalstate.h \
+ /usr/include/qt5/QtCore/qhistorystate.h \
+ /usr/include/qt5/QtCore/qsignaltransition.h \
+ /usr/include/qt5/QtCore/qstate.h \
+ /usr/include/qt5/QtCore/qstatemachine.h \
+ /usr/include/qt5/QtCore/qexception.h \
+ /usr/include/qt5/QtCore/qfuture.h \
+ /usr/include/qt5/QtCore/qfutureinterface.h \
+ /usr/include/qt5/QtCore/qrunnable.h \
+ /usr/include/qt5/QtCore/qresultstore.h \
+ /usr/include/qt5/QtCore/qfuturesynchronizer.h \
+ /usr/include/qt5/QtCore/qfuturewatcher.h \
+ /usr/include/qt5/QtCore/qreadwritelock.h \
+ /usr/include/qt5/QtCore/qsemaphore.h \
+ /usr/include/qt5/QtCore/qthread.h \
+ /usr/include/qt5/QtCore/qthreadpool.h \
+ /usr/include/qt5/QtCore/qthreadstorage.h \
+ /usr/include/qt5/QtCore/qwaitcondition.h \
+ /usr/include/qt5/QtCore/qarraydataops.h \
+ /usr/include/qt5/QtCore/qarraydatapointer.h \
+ /usr/include/qt5/QtCore/qbitarray.h \
+ /usr/include/qt5/QtCore/qbytearraymatcher.h \
+ /usr/include/qt5/QtCore/qcache.h \
+ /usr/include/qt5/QtCore/qcollator.h \
+ /usr/include/qt5/QtCore/qcommandlineoption.h \
+ /usr/include/qt5/QtCore/qcommandlineparser.h \
+ /usr/include/qt5/QtCore/qcryptographichash.h \
+ /usr/include/qt5/QtCore/qelapsedtimer.h \
+ /usr/include/qt5/QtCore/qline.h \
+ /usr/include/qt5/QtCore/qlinkedlist.h \
+ /usr/include/qt5/QtCore/qmargins.h \
+ /usr/include/qt5/QtCore/qrect.h \
+ /usr/include/qt5/QtCore/qsize.h \
+ /usr/include/qt5/QtCore/qmessageauthenticationcode.h \
+ /usr/include/qt5/QtCore/qqueue.h \
+ /usr/include/qt5/QtCore/qregularexpression.h \
+ /usr/include/qt5/QtCore/qscopedvaluerollback.h \
+ /usr/include/qt5/QtCore/qstack.h \
+ /usr/include/qt5/QtCore/qtextboundaryfinder.h \
+ /usr/include/qt5/QtCore/qtimeline.h \
+ /usr/include/qt5/QtCore/qtimezone.h \
+ /usr/include/qt5/QtCore/qxmlstream.h \
+ /usr/include/qt5/QtCore/qtcoreversion.h \
+ /usr/include/qt5/QtCore/QByteArray \
+ /usr/include/qt5/QtCore/QIODevice
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/kptyprocess.o src/kptyprocess.cpp
+
+.obj/kptydevice.o: src/kptydevice.cpp src/kptydevice.h \
+ src/kpty_p.h \
+ src/kpty.h \
+ /usr/include/qt5/QtCore/QtCore \
+ /usr/include/qt5/QtCore/QtCoreDepends \
+ /usr/include/qt5/QtCore/qabstractanimation.h \
+ /usr/include/qt5/QtCore/qobject.h \
+ /usr/include/qt5/QtCore/qobjectdefs.h \
+ /usr/include/qt5/QtCore/qnamespace.h \
+ /usr/include/qt5/QtCore/qglobal.h \
+ /usr/include/qt5/QtCore/qconfig.h \
+ /usr/include/qt5/QtCore/qfeatures.h \
+ /usr/include/qt5/QtCore/qsystemdetection.h \
+ /usr/include/qt5/QtCore/qprocessordetection.h \
+ /usr/include/qt5/QtCore/qcompilerdetection.h \
+ /usr/include/qt5/QtCore/qglobalstatic.h \
+ /usr/include/qt5/QtCore/qatomic.h \
+ /usr/include/qt5/QtCore/qbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_bootstrap.h \
+ /usr/include/qt5/QtCore/qgenericatomic.h \
+ /usr/include/qt5/QtCore/qatomic_msvc.h \
+ /usr/include/qt5/QtCore/qatomic_integrity.h \
+ /usr/include/qt5/QtCore/qoldbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_vxworks.h \
+ /usr/include/qt5/QtCore/qatomic_power.h \
+ /usr/include/qt5/QtCore/qatomic_alpha.h \
+ /usr/include/qt5/QtCore/qatomic_armv7.h \
+ /usr/include/qt5/QtCore/qatomic_armv6.h \
+ /usr/include/qt5/QtCore/qatomic_armv5.h \
+ /usr/include/qt5/QtCore/qatomic_bfin.h \
+ /usr/include/qt5/QtCore/qatomic_ia64.h \
+ /usr/include/qt5/QtCore/qatomic_mips.h \
+ /usr/include/qt5/QtCore/qatomic_s390.h \
+ /usr/include/qt5/QtCore/qatomic_sh4a.h \
+ /usr/include/qt5/QtCore/qatomic_sparc.h \
+ /usr/include/qt5/QtCore/qatomic_gcc.h \
+ /usr/include/qt5/QtCore/qatomic_x86.h \
+ /usr/include/qt5/QtCore/qatomic_cxx11.h \
+ /usr/include/qt5/QtCore/qatomic_unix.h \
+ /usr/include/qt5/QtCore/qmutex.h \
+ /usr/include/qt5/QtCore/qlogging.h \
+ /usr/include/qt5/QtCore/qflags.h \
+ /usr/include/qt5/QtCore/qtypeinfo.h \
+ /usr/include/qt5/QtCore/qtypetraits.h \
+ /usr/include/qt5/QtCore/qsysinfo.h \
+ /usr/include/qt5/QtCore/qobjectdefs_impl.h \
+ /usr/include/qt5/QtCore/qstring.h \
+ /usr/include/qt5/QtCore/qchar.h \
+ /usr/include/qt5/QtCore/qbytearray.h \
+ /usr/include/qt5/QtCore/qrefcount.h \
+ /usr/include/qt5/QtCore/qarraydata.h \
+ /usr/include/qt5/QtCore/qstringbuilder.h \
+ /usr/include/qt5/QtCore/qlist.h \
+ /usr/include/qt5/QtCore/qalgorithms.h \
+ /usr/include/qt5/QtCore/qiterator.h \
+ /usr/include/qt5/QtCore/qcoreevent.h \
+ /usr/include/qt5/QtCore/qscopedpointer.h \
+ /usr/include/qt5/QtCore/qmetatype.h \
+ /usr/include/qt5/QtCore/qvarlengtharray.h \
+ /usr/include/qt5/QtCore/qcontainerfwd.h \
+ /usr/include/qt5/QtCore/qisenum.h \
+ /usr/include/qt5/QtCore/qobject_impl.h \
+ /usr/include/qt5/QtCore/qanimationgroup.h \
+ /usr/include/qt5/QtCore/qparallelanimationgroup.h \
+ /usr/include/qt5/QtCore/qpauseanimation.h \
+ /usr/include/qt5/QtCore/qpropertyanimation.h \
+ /usr/include/qt5/QtCore/qvariantanimation.h \
+ /usr/include/qt5/QtCore/qeasingcurve.h \
+ /usr/include/qt5/QtCore/qvector.h \
+ /usr/include/qt5/QtCore/qpoint.h \
+ /usr/include/qt5/QtCore/qvariant.h \
+ /usr/include/qt5/QtCore/qmap.h \
+ /usr/include/qt5/QtCore/qpair.h \
+ /usr/include/qt5/QtCore/qdebug.h \
+ /usr/include/qt5/QtCore/qhash.h \
+ /usr/include/qt5/QtCore/qtextstream.h \
+ /usr/include/qt5/QtCore/qiodevice.h \
+ /usr/include/qt5/QtCore/qlocale.h \
+ /usr/include/qt5/QtCore/qshareddata.h \
+ /usr/include/qt5/QtCore/qset.h \
+ /usr/include/qt5/QtCore/qcontiguouscache.h \
+ /usr/include/qt5/QtCore/qstringlist.h \
+ /usr/include/qt5/QtCore/qdatastream.h \
+ /usr/include/qt5/QtCore/qregexp.h \
+ /usr/include/qt5/QtCore/qstringmatcher.h \
+ /usr/include/qt5/QtCore/qsequentialanimationgroup.h \
+ /usr/include/qt5/QtCore/qtextcodec.h \
+ /usr/include/qt5/QtCore/qendian.h \
+ /usr/include/qt5/QtCore/qlibraryinfo.h \
+ /usr/include/qt5/QtCore/qdatetime.h \
+ /usr/include/qt5/QtCore/qsharedpointer.h \
+ /usr/include/qt5/QtCore/qsharedpointer_impl.h \
+ /usr/include/qt5/QtCore/qnumeric.h \
+ /usr/include/qt5/QtCore/qbuffer.h \
+ /usr/include/qt5/QtCore/qdir.h \
+ /usr/include/qt5/QtCore/qfileinfo.h \
+ /usr/include/qt5/QtCore/qfile.h \
+ /usr/include/qt5/QtCore/qfiledevice.h \
+ /usr/include/qt5/QtCore/qdiriterator.h \
+ /usr/include/qt5/QtCore/qfileselector.h \
+ /usr/include/qt5/QtCore/QObject \
+ /usr/include/qt5/QtCore/QStringList \
+ /usr/include/qt5/QtCore/qfilesystemwatcher.h \
+ /usr/include/qt5/QtCore/qlockfile.h \
+ /usr/include/qt5/QtCore/qloggingcategory.h \
+ /usr/include/qt5/QtCore/qprocess.h \
+ /usr/include/qt5/QtCore/qresource.h \
+ /usr/include/qt5/QtCore/qsavefile.h \
+ /usr/include/qt5/QtCore/qsettings.h \
+ /usr/include/qt5/QtCore/qstandardpaths.h \
+ /usr/include/qt5/QtCore/qtemporarydir.h \
+ /usr/include/qt5/QtCore/QScopedPointer \
+ /usr/include/qt5/QtCore/qtemporaryfile.h \
+ /usr/include/qt5/QtCore/qurl.h \
+ /usr/include/qt5/QtCore/qurlquery.h \
+ /usr/include/qt5/QtCore/qabstractitemmodel.h \
+ /usr/include/qt5/QtCore/qabstractproxymodel.h \
+ /usr/include/qt5/QtCore/qidentityproxymodel.h \
+ /usr/include/qt5/QtCore/qitemselectionmodel.h \
+ /usr/include/qt5/QtCore/qsortfilterproxymodel.h \
+ /usr/include/qt5/QtCore/qstringlistmodel.h \
+ /usr/include/qt5/QtCore/qjsonarray.h \
+ /usr/include/qt5/QtCore/qjsonvalue.h \
+ /usr/include/qt5/QtCore/qjsondocument.h \
+ /usr/include/qt5/QtCore/qjsonobject.h \
+ /usr/include/qt5/QtCore/qabstracteventdispatcher.h \
+ /usr/include/qt5/QtCore/qeventloop.h \
+ /usr/include/qt5/QtCore/qabstractnativeeventfilter.h \
+ /usr/include/qt5/QtCore/qbasictimer.h \
+ /usr/include/qt5/QtCore/qcoreapplication.h \
+ /usr/include/qt5/QtCore/qmath.h \
+ /usr/include/qt5/QtCore/qmetaobject.h \
+ /usr/include/qt5/QtCore/qmimedata.h \
+ /usr/include/qt5/QtCore/qobjectcleanuphandler.h \
+ /usr/include/qt5/QtCore/qpointer.h \
+ /usr/include/qt5/QtCore/qsharedmemory.h \
+ /usr/include/qt5/QtCore/qsignalmapper.h \
+ /usr/include/qt5/QtCore/qsocketnotifier.h \
+ /usr/include/qt5/QtCore/qsystemsemaphore.h \
+ /usr/include/qt5/QtCore/qtimer.h \
+ /usr/include/qt5/QtCore/qtranslator.h \
+ /usr/include/qt5/QtCore/qwineventnotifier.h \
+ /usr/include/qt5/QtCore/qmimedatabase.h \
+ /usr/include/qt5/QtCore/qmimetype.h \
+ /usr/include/qt5/QtCore/qfactoryinterface.h \
+ /usr/include/qt5/QtCore/qlibrary.h \
+ /usr/include/qt5/QtCore/qplugin.h \
+ /usr/include/qt5/QtCore/qpluginloader.h \
+ /usr/include/qt5/QtCore/quuid.h \
+ /usr/include/qt5/QtCore/qabstractstate.h \
+ /usr/include/qt5/QtCore/qabstracttransition.h \
+ /usr/include/qt5/QtCore/qeventtransition.h \
+ /usr/include/qt5/QtCore/qfinalstate.h \
+ /usr/include/qt5/QtCore/qhistorystate.h \
+ /usr/include/qt5/QtCore/qsignaltransition.h \
+ /usr/include/qt5/QtCore/qstate.h \
+ /usr/include/qt5/QtCore/qstatemachine.h \
+ /usr/include/qt5/QtCore/qexception.h \
+ /usr/include/qt5/QtCore/qfuture.h \
+ /usr/include/qt5/QtCore/qfutureinterface.h \
+ /usr/include/qt5/QtCore/qrunnable.h \
+ /usr/include/qt5/QtCore/qresultstore.h \
+ /usr/include/qt5/QtCore/qfuturesynchronizer.h \
+ /usr/include/qt5/QtCore/qfuturewatcher.h \
+ /usr/include/qt5/QtCore/qreadwritelock.h \
+ /usr/include/qt5/QtCore/qsemaphore.h \
+ /usr/include/qt5/QtCore/qthread.h \
+ /usr/include/qt5/QtCore/qthreadpool.h \
+ /usr/include/qt5/QtCore/qthreadstorage.h \
+ /usr/include/qt5/QtCore/qwaitcondition.h \
+ /usr/include/qt5/QtCore/qarraydataops.h \
+ /usr/include/qt5/QtCore/qarraydatapointer.h \
+ /usr/include/qt5/QtCore/qbitarray.h \
+ /usr/include/qt5/QtCore/qbytearraymatcher.h \
+ /usr/include/qt5/QtCore/qcache.h \
+ /usr/include/qt5/QtCore/qcollator.h \
+ /usr/include/qt5/QtCore/qcommandlineoption.h \
+ /usr/include/qt5/QtCore/qcommandlineparser.h \
+ /usr/include/qt5/QtCore/qcryptographichash.h \
+ /usr/include/qt5/QtCore/qelapsedtimer.h \
+ /usr/include/qt5/QtCore/qline.h \
+ /usr/include/qt5/QtCore/qlinkedlist.h \
+ /usr/include/qt5/QtCore/qmargins.h \
+ /usr/include/qt5/QtCore/qrect.h \
+ /usr/include/qt5/QtCore/qsize.h \
+ /usr/include/qt5/QtCore/qmessageauthenticationcode.h \
+ /usr/include/qt5/QtCore/qqueue.h \
+ /usr/include/qt5/QtCore/qregularexpression.h \
+ /usr/include/qt5/QtCore/qscopedvaluerollback.h \
+ /usr/include/qt5/QtCore/qstack.h \
+ /usr/include/qt5/QtCore/qtextboundaryfinder.h \
+ /usr/include/qt5/QtCore/qtimeline.h \
+ /usr/include/qt5/QtCore/qtimezone.h \
+ /usr/include/qt5/QtCore/qxmlstream.h \
+ /usr/include/qt5/QtCore/qtcoreversion.h \
+ /usr/include/qt5/QtCore/QByteArray \
+ /usr/include/qt5/QtCore/QIODevice \
+ /usr/include/qt5/QtCore/QSocketNotifier
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/kptydevice.o src/kptydevice.cpp
+
+.obj/kpty.o: src/kpty.cpp src/kpty_p.h \
+ src/kpty.h \
+ /usr/include/qt5/QtCore/QtCore \
+ /usr/include/qt5/QtCore/QtCoreDepends \
+ /usr/include/qt5/QtCore/qabstractanimation.h \
+ /usr/include/qt5/QtCore/qobject.h \
+ /usr/include/qt5/QtCore/qobjectdefs.h \
+ /usr/include/qt5/QtCore/qnamespace.h \
+ /usr/include/qt5/QtCore/qglobal.h \
+ /usr/include/qt5/QtCore/qconfig.h \
+ /usr/include/qt5/QtCore/qfeatures.h \
+ /usr/include/qt5/QtCore/qsystemdetection.h \
+ /usr/include/qt5/QtCore/qprocessordetection.h \
+ /usr/include/qt5/QtCore/qcompilerdetection.h \
+ /usr/include/qt5/QtCore/qglobalstatic.h \
+ /usr/include/qt5/QtCore/qatomic.h \
+ /usr/include/qt5/QtCore/qbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_bootstrap.h \
+ /usr/include/qt5/QtCore/qgenericatomic.h \
+ /usr/include/qt5/QtCore/qatomic_msvc.h \
+ /usr/include/qt5/QtCore/qatomic_integrity.h \
+ /usr/include/qt5/QtCore/qoldbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_vxworks.h \
+ /usr/include/qt5/QtCore/qatomic_power.h \
+ /usr/include/qt5/QtCore/qatomic_alpha.h \
+ /usr/include/qt5/QtCore/qatomic_armv7.h \
+ /usr/include/qt5/QtCore/qatomic_armv6.h \
+ /usr/include/qt5/QtCore/qatomic_armv5.h \
+ /usr/include/qt5/QtCore/qatomic_bfin.h \
+ /usr/include/qt5/QtCore/qatomic_ia64.h \
+ /usr/include/qt5/QtCore/qatomic_mips.h \
+ /usr/include/qt5/QtCore/qatomic_s390.h \
+ /usr/include/qt5/QtCore/qatomic_sh4a.h \
+ /usr/include/qt5/QtCore/qatomic_sparc.h \
+ /usr/include/qt5/QtCore/qatomic_gcc.h \
+ /usr/include/qt5/QtCore/qatomic_x86.h \
+ /usr/include/qt5/QtCore/qatomic_cxx11.h \
+ /usr/include/qt5/QtCore/qatomic_unix.h \
+ /usr/include/qt5/QtCore/qmutex.h \
+ /usr/include/qt5/QtCore/qlogging.h \
+ /usr/include/qt5/QtCore/qflags.h \
+ /usr/include/qt5/QtCore/qtypeinfo.h \
+ /usr/include/qt5/QtCore/qtypetraits.h \
+ /usr/include/qt5/QtCore/qsysinfo.h \
+ /usr/include/qt5/QtCore/qobjectdefs_impl.h \
+ /usr/include/qt5/QtCore/qstring.h \
+ /usr/include/qt5/QtCore/qchar.h \
+ /usr/include/qt5/QtCore/qbytearray.h \
+ /usr/include/qt5/QtCore/qrefcount.h \
+ /usr/include/qt5/QtCore/qarraydata.h \
+ /usr/include/qt5/QtCore/qstringbuilder.h \
+ /usr/include/qt5/QtCore/qlist.h \
+ /usr/include/qt5/QtCore/qalgorithms.h \
+ /usr/include/qt5/QtCore/qiterator.h \
+ /usr/include/qt5/QtCore/qcoreevent.h \
+ /usr/include/qt5/QtCore/qscopedpointer.h \
+ /usr/include/qt5/QtCore/qmetatype.h \
+ /usr/include/qt5/QtCore/qvarlengtharray.h \
+ /usr/include/qt5/QtCore/qcontainerfwd.h \
+ /usr/include/qt5/QtCore/qisenum.h \
+ /usr/include/qt5/QtCore/qobject_impl.h \
+ /usr/include/qt5/QtCore/qanimationgroup.h \
+ /usr/include/qt5/QtCore/qparallelanimationgroup.h \
+ /usr/include/qt5/QtCore/qpauseanimation.h \
+ /usr/include/qt5/QtCore/qpropertyanimation.h \
+ /usr/include/qt5/QtCore/qvariantanimation.h \
+ /usr/include/qt5/QtCore/qeasingcurve.h \
+ /usr/include/qt5/QtCore/qvector.h \
+ /usr/include/qt5/QtCore/qpoint.h \
+ /usr/include/qt5/QtCore/qvariant.h \
+ /usr/include/qt5/QtCore/qmap.h \
+ /usr/include/qt5/QtCore/qpair.h \
+ /usr/include/qt5/QtCore/qdebug.h \
+ /usr/include/qt5/QtCore/qhash.h \
+ /usr/include/qt5/QtCore/qtextstream.h \
+ /usr/include/qt5/QtCore/qiodevice.h \
+ /usr/include/qt5/QtCore/qlocale.h \
+ /usr/include/qt5/QtCore/qshareddata.h \
+ /usr/include/qt5/QtCore/qset.h \
+ /usr/include/qt5/QtCore/qcontiguouscache.h \
+ /usr/include/qt5/QtCore/qstringlist.h \
+ /usr/include/qt5/QtCore/qdatastream.h \
+ /usr/include/qt5/QtCore/qregexp.h \
+ /usr/include/qt5/QtCore/qstringmatcher.h \
+ /usr/include/qt5/QtCore/qsequentialanimationgroup.h \
+ /usr/include/qt5/QtCore/qtextcodec.h \
+ /usr/include/qt5/QtCore/qendian.h \
+ /usr/include/qt5/QtCore/qlibraryinfo.h \
+ /usr/include/qt5/QtCore/qdatetime.h \
+ /usr/include/qt5/QtCore/qsharedpointer.h \
+ /usr/include/qt5/QtCore/qsharedpointer_impl.h \
+ /usr/include/qt5/QtCore/qnumeric.h \
+ /usr/include/qt5/QtCore/qbuffer.h \
+ /usr/include/qt5/QtCore/qdir.h \
+ /usr/include/qt5/QtCore/qfileinfo.h \
+ /usr/include/qt5/QtCore/qfile.h \
+ /usr/include/qt5/QtCore/qfiledevice.h \
+ /usr/include/qt5/QtCore/qdiriterator.h \
+ /usr/include/qt5/QtCore/qfileselector.h \
+ /usr/include/qt5/QtCore/QObject \
+ /usr/include/qt5/QtCore/QStringList \
+ /usr/include/qt5/QtCore/qfilesystemwatcher.h \
+ /usr/include/qt5/QtCore/qlockfile.h \
+ /usr/include/qt5/QtCore/qloggingcategory.h \
+ /usr/include/qt5/QtCore/qprocess.h \
+ /usr/include/qt5/QtCore/qresource.h \
+ /usr/include/qt5/QtCore/qsavefile.h \
+ /usr/include/qt5/QtCore/qsettings.h \
+ /usr/include/qt5/QtCore/qstandardpaths.h \
+ /usr/include/qt5/QtCore/qtemporarydir.h \
+ /usr/include/qt5/QtCore/QScopedPointer \
+ /usr/include/qt5/QtCore/qtemporaryfile.h \
+ /usr/include/qt5/QtCore/qurl.h \
+ /usr/include/qt5/QtCore/qurlquery.h \
+ /usr/include/qt5/QtCore/qabstractitemmodel.h \
+ /usr/include/qt5/QtCore/qabstractproxymodel.h \
+ /usr/include/qt5/QtCore/qidentityproxymodel.h \
+ /usr/include/qt5/QtCore/qitemselectionmodel.h \
+ /usr/include/qt5/QtCore/qsortfilterproxymodel.h \
+ /usr/include/qt5/QtCore/qstringlistmodel.h \
+ /usr/include/qt5/QtCore/qjsonarray.h \
+ /usr/include/qt5/QtCore/qjsonvalue.h \
+ /usr/include/qt5/QtCore/qjsondocument.h \
+ /usr/include/qt5/QtCore/qjsonobject.h \
+ /usr/include/qt5/QtCore/qabstracteventdispatcher.h \
+ /usr/include/qt5/QtCore/qeventloop.h \
+ /usr/include/qt5/QtCore/qabstractnativeeventfilter.h \
+ /usr/include/qt5/QtCore/qbasictimer.h \
+ /usr/include/qt5/QtCore/qcoreapplication.h \
+ /usr/include/qt5/QtCore/qmath.h \
+ /usr/include/qt5/QtCore/qmetaobject.h \
+ /usr/include/qt5/QtCore/qmimedata.h \
+ /usr/include/qt5/QtCore/qobjectcleanuphandler.h \
+ /usr/include/qt5/QtCore/qpointer.h \
+ /usr/include/qt5/QtCore/qsharedmemory.h \
+ /usr/include/qt5/QtCore/qsignalmapper.h \
+ /usr/include/qt5/QtCore/qsocketnotifier.h \
+ /usr/include/qt5/QtCore/qsystemsemaphore.h \
+ /usr/include/qt5/QtCore/qtimer.h \
+ /usr/include/qt5/QtCore/qtranslator.h \
+ /usr/include/qt5/QtCore/qwineventnotifier.h \
+ /usr/include/qt5/QtCore/qmimedatabase.h \
+ /usr/include/qt5/QtCore/qmimetype.h \
+ /usr/include/qt5/QtCore/qfactoryinterface.h \
+ /usr/include/qt5/QtCore/qlibrary.h \
+ /usr/include/qt5/QtCore/qplugin.h \
+ /usr/include/qt5/QtCore/qpluginloader.h \
+ /usr/include/qt5/QtCore/quuid.h \
+ /usr/include/qt5/QtCore/qabstractstate.h \
+ /usr/include/qt5/QtCore/qabstracttransition.h \
+ /usr/include/qt5/QtCore/qeventtransition.h \
+ /usr/include/qt5/QtCore/qfinalstate.h \
+ /usr/include/qt5/QtCore/qhistorystate.h \
+ /usr/include/qt5/QtCore/qsignaltransition.h \
+ /usr/include/qt5/QtCore/qstate.h \
+ /usr/include/qt5/QtCore/qstatemachine.h \
+ /usr/include/qt5/QtCore/qexception.h \
+ /usr/include/qt5/QtCore/qfuture.h \
+ /usr/include/qt5/QtCore/qfutureinterface.h \
+ /usr/include/qt5/QtCore/qrunnable.h \
+ /usr/include/qt5/QtCore/qresultstore.h \
+ /usr/include/qt5/QtCore/qfuturesynchronizer.h \
+ /usr/include/qt5/QtCore/qfuturewatcher.h \
+ /usr/include/qt5/QtCore/qreadwritelock.h \
+ /usr/include/qt5/QtCore/qsemaphore.h \
+ /usr/include/qt5/QtCore/qthread.h \
+ /usr/include/qt5/QtCore/qthreadpool.h \
+ /usr/include/qt5/QtCore/qthreadstorage.h \
+ /usr/include/qt5/QtCore/qwaitcondition.h \
+ /usr/include/qt5/QtCore/qarraydataops.h \
+ /usr/include/qt5/QtCore/qarraydatapointer.h \
+ /usr/include/qt5/QtCore/qbitarray.h \
+ /usr/include/qt5/QtCore/qbytearraymatcher.h \
+ /usr/include/qt5/QtCore/qcache.h \
+ /usr/include/qt5/QtCore/qcollator.h \
+ /usr/include/qt5/QtCore/qcommandlineoption.h \
+ /usr/include/qt5/QtCore/qcommandlineparser.h \
+ /usr/include/qt5/QtCore/qcryptographichash.h \
+ /usr/include/qt5/QtCore/qelapsedtimer.h \
+ /usr/include/qt5/QtCore/qline.h \
+ /usr/include/qt5/QtCore/qlinkedlist.h \
+ /usr/include/qt5/QtCore/qmargins.h \
+ /usr/include/qt5/QtCore/qrect.h \
+ /usr/include/qt5/QtCore/qsize.h \
+ /usr/include/qt5/QtCore/qmessageauthenticationcode.h \
+ /usr/include/qt5/QtCore/qqueue.h \
+ /usr/include/qt5/QtCore/qregularexpression.h \
+ /usr/include/qt5/QtCore/qscopedvaluerollback.h \
+ /usr/include/qt5/QtCore/qstack.h \
+ /usr/include/qt5/QtCore/qtextboundaryfinder.h \
+ /usr/include/qt5/QtCore/qtimeline.h \
+ /usr/include/qt5/QtCore/qtimezone.h \
+ /usr/include/qt5/QtCore/qxmlstream.h \
+ /usr/include/qt5/QtCore/qtcoreversion.h \
+ /usr/include/qt5/QtCore/QByteArray
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/kpty.o src/kpty.cpp
+
+.obj/kprocess.o: src/kprocess.cpp src/kprocess.h \
+ /usr/include/qt5/QtCore/QProcess \
+ /usr/include/qt5/QtCore/qprocess.h \
+ /usr/include/qt5/QtCore/qiodevice.h \
+ /usr/include/qt5/QtCore/qglobal.h \
+ /usr/include/qt5/QtCore/qconfig.h \
+ /usr/include/qt5/QtCore/qfeatures.h \
+ /usr/include/qt5/QtCore/qsystemdetection.h \
+ /usr/include/qt5/QtCore/qprocessordetection.h \
+ /usr/include/qt5/QtCore/qcompilerdetection.h \
+ /usr/include/qt5/QtCore/qglobalstatic.h \
+ /usr/include/qt5/QtCore/qatomic.h \
+ /usr/include/qt5/QtCore/qbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_bootstrap.h \
+ /usr/include/qt5/QtCore/qgenericatomic.h \
+ /usr/include/qt5/QtCore/qatomic_msvc.h \
+ /usr/include/qt5/QtCore/qatomic_integrity.h \
+ /usr/include/qt5/QtCore/qoldbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_vxworks.h \
+ /usr/include/qt5/QtCore/qatomic_power.h \
+ /usr/include/qt5/QtCore/qatomic_alpha.h \
+ /usr/include/qt5/QtCore/qatomic_armv7.h \
+ /usr/include/qt5/QtCore/qatomic_armv6.h \
+ /usr/include/qt5/QtCore/qatomic_armv5.h \
+ /usr/include/qt5/QtCore/qatomic_bfin.h \
+ /usr/include/qt5/QtCore/qatomic_ia64.h \
+ /usr/include/qt5/QtCore/qatomic_mips.h \
+ /usr/include/qt5/QtCore/qatomic_s390.h \
+ /usr/include/qt5/QtCore/qatomic_sh4a.h \
+ /usr/include/qt5/QtCore/qatomic_sparc.h \
+ /usr/include/qt5/QtCore/qatomic_gcc.h \
+ /usr/include/qt5/QtCore/qatomic_x86.h \
+ /usr/include/qt5/QtCore/qatomic_cxx11.h \
+ /usr/include/qt5/QtCore/qatomic_unix.h \
+ /usr/include/qt5/QtCore/qmutex.h \
+ /usr/include/qt5/QtCore/qlogging.h \
+ /usr/include/qt5/QtCore/qflags.h \
+ /usr/include/qt5/QtCore/qtypeinfo.h \
+ /usr/include/qt5/QtCore/qtypetraits.h \
+ /usr/include/qt5/QtCore/qsysinfo.h \
+ /usr/include/qt5/QtCore/qobject.h \
+ /usr/include/qt5/QtCore/qobjectdefs.h \
+ /usr/include/qt5/QtCore/qnamespace.h \
+ /usr/include/qt5/QtCore/qobjectdefs_impl.h \
+ /usr/include/qt5/QtCore/qstring.h \
+ /usr/include/qt5/QtCore/qchar.h \
+ /usr/include/qt5/QtCore/qbytearray.h \
+ /usr/include/qt5/QtCore/qrefcount.h \
+ /usr/include/qt5/QtCore/qarraydata.h \
+ /usr/include/qt5/QtCore/qstringbuilder.h \
+ /usr/include/qt5/QtCore/qlist.h \
+ /usr/include/qt5/QtCore/qalgorithms.h \
+ /usr/include/qt5/QtCore/qiterator.h \
+ /usr/include/qt5/QtCore/qcoreevent.h \
+ /usr/include/qt5/QtCore/qscopedpointer.h \
+ /usr/include/qt5/QtCore/qmetatype.h \
+ /usr/include/qt5/QtCore/qvarlengtharray.h \
+ /usr/include/qt5/QtCore/qcontainerfwd.h \
+ /usr/include/qt5/QtCore/qisenum.h \
+ /usr/include/qt5/QtCore/qobject_impl.h \
+ /usr/include/qt5/QtCore/qstringlist.h \
+ /usr/include/qt5/QtCore/qdatastream.h \
+ /usr/include/qt5/QtCore/qpair.h \
+ /usr/include/qt5/QtCore/qregexp.h \
+ /usr/include/qt5/QtCore/qstringmatcher.h \
+ /usr/include/qt5/QtCore/qshareddata.h \
+ /usr/include/qt5/QtCore/qfile.h \
+ /usr/include/qt5/QtCore/qfiledevice.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/kprocess.o src/kprocess.cpp
+
+.obj/ShellCommand.o: src/ShellCommand.cpp src/ShellCommand.h \
+ /usr/include/qt5/QtCore/QStringList \
+ /usr/include/qt5/QtCore/qstringlist.h \
+ /usr/include/qt5/QtCore/qalgorithms.h \
+ /usr/include/qt5/QtCore/qglobal.h \
+ /usr/include/qt5/QtCore/qconfig.h \
+ /usr/include/qt5/QtCore/qfeatures.h \
+ /usr/include/qt5/QtCore/qsystemdetection.h \
+ /usr/include/qt5/QtCore/qprocessordetection.h \
+ /usr/include/qt5/QtCore/qcompilerdetection.h \
+ /usr/include/qt5/QtCore/qglobalstatic.h \
+ /usr/include/qt5/QtCore/qatomic.h \
+ /usr/include/qt5/QtCore/qbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_bootstrap.h \
+ /usr/include/qt5/QtCore/qgenericatomic.h \
+ /usr/include/qt5/QtCore/qatomic_msvc.h \
+ /usr/include/qt5/QtCore/qatomic_integrity.h \
+ /usr/include/qt5/QtCore/qoldbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_vxworks.h \
+ /usr/include/qt5/QtCore/qatomic_power.h \
+ /usr/include/qt5/QtCore/qatomic_alpha.h \
+ /usr/include/qt5/QtCore/qatomic_armv7.h \
+ /usr/include/qt5/QtCore/qatomic_armv6.h \
+ /usr/include/qt5/QtCore/qatomic_armv5.h \
+ /usr/include/qt5/QtCore/qatomic_bfin.h \
+ /usr/include/qt5/QtCore/qatomic_ia64.h \
+ /usr/include/qt5/QtCore/qatomic_mips.h \
+ /usr/include/qt5/QtCore/qatomic_s390.h \
+ /usr/include/qt5/QtCore/qatomic_sh4a.h \
+ /usr/include/qt5/QtCore/qatomic_sparc.h \
+ /usr/include/qt5/QtCore/qatomic_gcc.h \
+ /usr/include/qt5/QtCore/qatomic_x86.h \
+ /usr/include/qt5/QtCore/qatomic_cxx11.h \
+ /usr/include/qt5/QtCore/qatomic_unix.h \
+ /usr/include/qt5/QtCore/qmutex.h \
+ /usr/include/qt5/QtCore/qlogging.h \
+ /usr/include/qt5/QtCore/qflags.h \
+ /usr/include/qt5/QtCore/qtypeinfo.h \
+ /usr/include/qt5/QtCore/qtypetraits.h \
+ /usr/include/qt5/QtCore/qsysinfo.h \
+ /usr/include/qt5/QtCore/qdatastream.h \
+ /usr/include/qt5/QtCore/qscopedpointer.h \
+ /usr/include/qt5/QtCore/qiodevice.h \
+ /usr/include/qt5/QtCore/qobject.h \
+ /usr/include/qt5/QtCore/qobjectdefs.h \
+ /usr/include/qt5/QtCore/qnamespace.h \
+ /usr/include/qt5/QtCore/qobjectdefs_impl.h \
+ /usr/include/qt5/QtCore/qstring.h \
+ /usr/include/qt5/QtCore/qchar.h \
+ /usr/include/qt5/QtCore/qbytearray.h \
+ /usr/include/qt5/QtCore/qrefcount.h \
+ /usr/include/qt5/QtCore/qarraydata.h \
+ /usr/include/qt5/QtCore/qstringbuilder.h \
+ /usr/include/qt5/QtCore/qlist.h \
+ /usr/include/qt5/QtCore/qiterator.h \
+ /usr/include/qt5/QtCore/qcoreevent.h \
+ /usr/include/qt5/QtCore/qmetatype.h \
+ /usr/include/qt5/QtCore/qvarlengtharray.h \
+ /usr/include/qt5/QtCore/qcontainerfwd.h \
+ /usr/include/qt5/QtCore/qisenum.h \
+ /usr/include/qt5/QtCore/qobject_impl.h \
+ /usr/include/qt5/QtCore/qpair.h \
+ /usr/include/qt5/QtCore/qregexp.h \
+ /usr/include/qt5/QtCore/qstringmatcher.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/ShellCommand.o src/ShellCommand.cpp
+
+.obj/Vt102Emulation.o: src/Vt102Emulation.cpp src/Vt102Emulation.h \
+ /usr/include/qt5/QtGui/QKeyEvent \
+ /usr/include/qt5/QtGui/qevent.h \
+ /usr/include/qt5/QtGui/qwindowdefs.h \
+ /usr/include/qt5/QtCore/qglobal.h \
+ /usr/include/qt5/QtCore/qconfig.h \
+ /usr/include/qt5/QtCore/qfeatures.h \
+ /usr/include/qt5/QtCore/qsystemdetection.h \
+ /usr/include/qt5/QtCore/qprocessordetection.h \
+ /usr/include/qt5/QtCore/qcompilerdetection.h \
+ /usr/include/qt5/QtCore/qglobalstatic.h \
+ /usr/include/qt5/QtCore/qatomic.h \
+ /usr/include/qt5/QtCore/qbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_bootstrap.h \
+ /usr/include/qt5/QtCore/qgenericatomic.h \
+ /usr/include/qt5/QtCore/qatomic_msvc.h \
+ /usr/include/qt5/QtCore/qatomic_integrity.h \
+ /usr/include/qt5/QtCore/qoldbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_vxworks.h \
+ /usr/include/qt5/QtCore/qatomic_power.h \
+ /usr/include/qt5/QtCore/qatomic_alpha.h \
+ /usr/include/qt5/QtCore/qatomic_armv7.h \
+ /usr/include/qt5/QtCore/qatomic_armv6.h \
+ /usr/include/qt5/QtCore/qatomic_armv5.h \
+ /usr/include/qt5/QtCore/qatomic_bfin.h \
+ /usr/include/qt5/QtCore/qatomic_ia64.h \
+ /usr/include/qt5/QtCore/qatomic_mips.h \
+ /usr/include/qt5/QtCore/qatomic_s390.h \
+ /usr/include/qt5/QtCore/qatomic_sh4a.h \
+ /usr/include/qt5/QtCore/qatomic_sparc.h \
+ /usr/include/qt5/QtCore/qatomic_gcc.h \
+ /usr/include/qt5/QtCore/qatomic_x86.h \
+ /usr/include/qt5/QtCore/qatomic_cxx11.h \
+ /usr/include/qt5/QtCore/qatomic_unix.h \
+ /usr/include/qt5/QtCore/qmutex.h \
+ /usr/include/qt5/QtCore/qlogging.h \
+ /usr/include/qt5/QtCore/qflags.h \
+ /usr/include/qt5/QtCore/qtypeinfo.h \
+ /usr/include/qt5/QtCore/qtypetraits.h \
+ /usr/include/qt5/QtCore/qsysinfo.h \
+ /usr/include/qt5/QtCore/qobjectdefs.h \
+ /usr/include/qt5/QtCore/qnamespace.h \
+ /usr/include/qt5/QtCore/qobjectdefs_impl.h \
+ /usr/include/qt5/QtGui/qwindowdefs_win.h \
+ /usr/include/qt5/QtCore/qobject.h \
+ /usr/include/qt5/QtCore/qstring.h \
+ /usr/include/qt5/QtCore/qchar.h \
+ /usr/include/qt5/QtCore/qbytearray.h \
+ /usr/include/qt5/QtCore/qrefcount.h \
+ /usr/include/qt5/QtCore/qarraydata.h \
+ /usr/include/qt5/QtCore/qstringbuilder.h \
+ /usr/include/qt5/QtCore/qlist.h \
+ /usr/include/qt5/QtCore/qalgorithms.h \
+ /usr/include/qt5/QtCore/qiterator.h \
+ /usr/include/qt5/QtCore/qcoreevent.h \
+ /usr/include/qt5/QtCore/qscopedpointer.h \
+ /usr/include/qt5/QtCore/qmetatype.h \
+ /usr/include/qt5/QtCore/qvarlengtharray.h \
+ /usr/include/qt5/QtCore/qcontainerfwd.h \
+ /usr/include/qt5/QtCore/qisenum.h \
+ /usr/include/qt5/QtCore/qobject_impl.h \
+ /usr/include/qt5/QtGui/qregion.h \
+ /usr/include/qt5/QtCore/qrect.h \
+ /usr/include/qt5/QtCore/qsize.h \
+ /usr/include/qt5/QtCore/qpoint.h \
+ /usr/include/qt5/QtCore/qdatastream.h \
+ /usr/include/qt5/QtCore/qiodevice.h \
+ /usr/include/qt5/QtCore/qpair.h \
+ /usr/include/qt5/QtGui/qkeysequence.h \
+ /usr/include/qt5/QtCore/qvariant.h \
+ /usr/include/qt5/QtCore/qmap.h \
+ /usr/include/qt5/QtCore/qdebug.h \
+ /usr/include/qt5/QtCore/qhash.h \
+ /usr/include/qt5/QtCore/qtextstream.h \
+ /usr/include/qt5/QtCore/qlocale.h \
+ /usr/include/qt5/QtCore/qshareddata.h \
+ /usr/include/qt5/QtCore/qvector.h \
+ /usr/include/qt5/QtCore/qset.h \
+ /usr/include/qt5/QtCore/qcontiguouscache.h \
+ /usr/include/qt5/QtCore/qstringlist.h \
+ /usr/include/qt5/QtCore/qregexp.h \
+ /usr/include/qt5/QtCore/qstringmatcher.h \
+ /usr/include/qt5/QtCore/qurl.h \
+ /usr/include/qt5/QtCore/qurlquery.h \
+ /usr/include/qt5/QtCore/qfile.h \
+ /usr/include/qt5/QtCore/qfiledevice.h \
+ /usr/include/qt5/QtGui/qvector2d.h \
+ /usr/include/qt5/QtGui/qtouchdevice.h \
+ /usr/include/qt5/QtCore/QHash \
+ /usr/include/qt5/QtCore/QTimer \
+ /usr/include/qt5/QtCore/qtimer.h \
+ /usr/include/qt5/QtCore/qbasictimer.h \
+ src/Emulation.h \
+ /usr/include/qt5/QtCore/QTextCodec \
+ /usr/include/qt5/QtCore/qtextcodec.h \
+ /usr/include/qt5/QtCore/QTextStream \
+ src/Screen.h \
+ /usr/include/qt5/QtCore/QRect \
+ /usr/include/qt5/QtCore/QVarLengthArray \
+ src/Character.h \
+ src/CharacterColor.h \
+ /usr/include/qt5/QtGui/QColor \
+ /usr/include/qt5/QtGui/qcolor.h \
+ /usr/include/qt5/QtGui/qrgb.h \
+ src/History.h \
+ /usr/include/qt5/QtCore/QBitRef \
+ /usr/include/qt5/QtCore/qbitarray.h \
+ /usr/include/qt5/QtCore/QVector \
+ /usr/include/qt5/QtCore/QTemporaryFile \
+ /usr/include/qt5/QtCore/qtemporaryfile.h \
+ src/BlockArray.h \
+ /usr/include/qt5/QtCore/QEvent \
+ /usr/include/qt5/QtCore/QByteRef \
+ src/KeyboardTranslator.h \
+ /usr/include/qt5/QtCore/QList \
+ /usr/include/qt5/QtGui/QKeySequence \
+ /usr/include/qt5/QtCore/QMetaType
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/Vt102Emulation.o src/Vt102Emulation.cpp
+
+.obj/tools.o: src/tools.cpp src/tools.h \
+ /usr/include/qt5/QtCore/QString \
+ /usr/include/qt5/QtCore/qstring.h \
+ /usr/include/qt5/QtCore/qchar.h \
+ /usr/include/qt5/QtCore/qglobal.h \
+ /usr/include/qt5/QtCore/qconfig.h \
+ /usr/include/qt5/QtCore/qfeatures.h \
+ /usr/include/qt5/QtCore/qsystemdetection.h \
+ /usr/include/qt5/QtCore/qprocessordetection.h \
+ /usr/include/qt5/QtCore/qcompilerdetection.h \
+ /usr/include/qt5/QtCore/qglobalstatic.h \
+ /usr/include/qt5/QtCore/qatomic.h \
+ /usr/include/qt5/QtCore/qbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_bootstrap.h \
+ /usr/include/qt5/QtCore/qgenericatomic.h \
+ /usr/include/qt5/QtCore/qatomic_msvc.h \
+ /usr/include/qt5/QtCore/qatomic_integrity.h \
+ /usr/include/qt5/QtCore/qoldbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_vxworks.h \
+ /usr/include/qt5/QtCore/qatomic_power.h \
+ /usr/include/qt5/QtCore/qatomic_alpha.h \
+ /usr/include/qt5/QtCore/qatomic_armv7.h \
+ /usr/include/qt5/QtCore/qatomic_armv6.h \
+ /usr/include/qt5/QtCore/qatomic_armv5.h \
+ /usr/include/qt5/QtCore/qatomic_bfin.h \
+ /usr/include/qt5/QtCore/qatomic_ia64.h \
+ /usr/include/qt5/QtCore/qatomic_mips.h \
+ /usr/include/qt5/QtCore/qatomic_s390.h \
+ /usr/include/qt5/QtCore/qatomic_sh4a.h \
+ /usr/include/qt5/QtCore/qatomic_sparc.h \
+ /usr/include/qt5/QtCore/qatomic_gcc.h \
+ /usr/include/qt5/QtCore/qatomic_x86.h \
+ /usr/include/qt5/QtCore/qatomic_cxx11.h \
+ /usr/include/qt5/QtCore/qatomic_unix.h \
+ /usr/include/qt5/QtCore/qmutex.h \
+ /usr/include/qt5/QtCore/qlogging.h \
+ /usr/include/qt5/QtCore/qflags.h \
+ /usr/include/qt5/QtCore/qtypeinfo.h \
+ /usr/include/qt5/QtCore/qtypetraits.h \
+ /usr/include/qt5/QtCore/qsysinfo.h \
+ /usr/include/qt5/QtCore/qbytearray.h \
+ /usr/include/qt5/QtCore/qrefcount.h \
+ /usr/include/qt5/QtCore/qnamespace.h \
+ /usr/include/qt5/QtCore/qarraydata.h \
+ /usr/include/qt5/QtCore/qstringbuilder.h \
+ /usr/include/qt5/QtCore/QCoreApplication \
+ /usr/include/qt5/QtCore/qcoreapplication.h \
+ /usr/include/qt5/QtCore/qobject.h \
+ /usr/include/qt5/QtCore/qobjectdefs.h \
+ /usr/include/qt5/QtCore/qobjectdefs_impl.h \
+ /usr/include/qt5/QtCore/qlist.h \
+ /usr/include/qt5/QtCore/qalgorithms.h \
+ /usr/include/qt5/QtCore/qiterator.h \
+ /usr/include/qt5/QtCore/qcoreevent.h \
+ /usr/include/qt5/QtCore/qscopedpointer.h \
+ /usr/include/qt5/QtCore/qmetatype.h \
+ /usr/include/qt5/QtCore/qvarlengtharray.h \
+ /usr/include/qt5/QtCore/qcontainerfwd.h \
+ /usr/include/qt5/QtCore/qisenum.h \
+ /usr/include/qt5/QtCore/qobject_impl.h \
+ /usr/include/qt5/QtCore/qeventloop.h \
+ /usr/include/qt5/QtCore/QDir \
+ /usr/include/qt5/QtCore/qdir.h \
+ /usr/include/qt5/QtCore/qfileinfo.h \
+ /usr/include/qt5/QtCore/qfile.h \
+ /usr/include/qt5/QtCore/qfiledevice.h \
+ /usr/include/qt5/QtCore/qiodevice.h \
+ /usr/include/qt5/QtCore/qshareddata.h \
+ /usr/include/qt5/QtCore/qstringlist.h \
+ /usr/include/qt5/QtCore/qdatastream.h \
+ /usr/include/qt5/QtCore/qpair.h \
+ /usr/include/qt5/QtCore/qregexp.h \
+ /usr/include/qt5/QtCore/qstringmatcher.h \
+ /usr/include/qt5/QtCore/QtDebug \
+ /usr/include/qt5/QtCore/qdebug.h \
+ /usr/include/qt5/QtCore/qhash.h \
+ /usr/include/qt5/QtCore/qmap.h \
+ /usr/include/qt5/QtCore/qtextstream.h \
+ /usr/include/qt5/QtCore/qlocale.h \
+ /usr/include/qt5/QtCore/qvariant.h \
+ /usr/include/qt5/QtCore/qvector.h \
+ /usr/include/qt5/QtCore/qpoint.h \
+ /usr/include/qt5/QtCore/qset.h \
+ /usr/include/qt5/QtCore/qcontiguouscache.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/tools.o src/tools.cpp
+
+.obj/Session.o: src/Session.cpp src/Session.h \
+ /usr/include/qt5/QtCore/QStringList \
+ /usr/include/qt5/QtCore/qstringlist.h \
+ /usr/include/qt5/QtCore/qalgorithms.h \
+ /usr/include/qt5/QtCore/qglobal.h \
+ /usr/include/qt5/QtCore/qconfig.h \
+ /usr/include/qt5/QtCore/qfeatures.h \
+ /usr/include/qt5/QtCore/qsystemdetection.h \
+ /usr/include/qt5/QtCore/qprocessordetection.h \
+ /usr/include/qt5/QtCore/qcompilerdetection.h \
+ /usr/include/qt5/QtCore/qglobalstatic.h \
+ /usr/include/qt5/QtCore/qatomic.h \
+ /usr/include/qt5/QtCore/qbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_bootstrap.h \
+ /usr/include/qt5/QtCore/qgenericatomic.h \
+ /usr/include/qt5/QtCore/qatomic_msvc.h \
+ /usr/include/qt5/QtCore/qatomic_integrity.h \
+ /usr/include/qt5/QtCore/qoldbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_vxworks.h \
+ /usr/include/qt5/QtCore/qatomic_power.h \
+ /usr/include/qt5/QtCore/qatomic_alpha.h \
+ /usr/include/qt5/QtCore/qatomic_armv7.h \
+ /usr/include/qt5/QtCore/qatomic_armv6.h \
+ /usr/include/qt5/QtCore/qatomic_armv5.h \
+ /usr/include/qt5/QtCore/qatomic_bfin.h \
+ /usr/include/qt5/QtCore/qatomic_ia64.h \
+ /usr/include/qt5/QtCore/qatomic_mips.h \
+ /usr/include/qt5/QtCore/qatomic_s390.h \
+ /usr/include/qt5/QtCore/qatomic_sh4a.h \
+ /usr/include/qt5/QtCore/qatomic_sparc.h \
+ /usr/include/qt5/QtCore/qatomic_gcc.h \
+ /usr/include/qt5/QtCore/qatomic_x86.h \
+ /usr/include/qt5/QtCore/qatomic_cxx11.h \
+ /usr/include/qt5/QtCore/qatomic_unix.h \
+ /usr/include/qt5/QtCore/qmutex.h \
+ /usr/include/qt5/QtCore/qlogging.h \
+ /usr/include/qt5/QtCore/qflags.h \
+ /usr/include/qt5/QtCore/qtypeinfo.h \
+ /usr/include/qt5/QtCore/qtypetraits.h \
+ /usr/include/qt5/QtCore/qsysinfo.h \
+ /usr/include/qt5/QtCore/qdatastream.h \
+ /usr/include/qt5/QtCore/qscopedpointer.h \
+ /usr/include/qt5/QtCore/qiodevice.h \
+ /usr/include/qt5/QtCore/qobject.h \
+ /usr/include/qt5/QtCore/qobjectdefs.h \
+ /usr/include/qt5/QtCore/qnamespace.h \
+ /usr/include/qt5/QtCore/qobjectdefs_impl.h \
+ /usr/include/qt5/QtCore/qstring.h \
+ /usr/include/qt5/QtCore/qchar.h \
+ /usr/include/qt5/QtCore/qbytearray.h \
+ /usr/include/qt5/QtCore/qrefcount.h \
+ /usr/include/qt5/QtCore/qarraydata.h \
+ /usr/include/qt5/QtCore/qstringbuilder.h \
+ /usr/include/qt5/QtCore/qlist.h \
+ /usr/include/qt5/QtCore/qiterator.h \
+ /usr/include/qt5/QtCore/qcoreevent.h \
+ /usr/include/qt5/QtCore/qmetatype.h \
+ /usr/include/qt5/QtCore/qvarlengtharray.h \
+ /usr/include/qt5/QtCore/qcontainerfwd.h \
+ /usr/include/qt5/QtCore/qisenum.h \
+ /usr/include/qt5/QtCore/qobject_impl.h \
+ /usr/include/qt5/QtCore/qpair.h \
+ /usr/include/qt5/QtCore/qregexp.h \
+ /usr/include/qt5/QtCore/qstringmatcher.h \
+ /usr/include/qt5/QtCore/QTimer \
+ /usr/include/qt5/QtCore/qtimer.h \
+ /usr/include/qt5/QtCore/qbasictimer.h \
+ /usr/include/qt5/QtGui/QWindow \
+ /usr/include/qt5/QtGui/qwindow.h \
+ /usr/include/qt5/QtCore/QObject \
+ /usr/include/qt5/QtCore/QEvent \
+ /usr/include/qt5/QtCore/QMargins \
+ /usr/include/qt5/QtCore/qmargins.h \
+ /usr/include/qt5/QtCore/qrect.h \
+ /usr/include/qt5/QtCore/qsize.h \
+ /usr/include/qt5/QtCore/qpoint.h \
+ /usr/include/qt5/QtCore/QRect \
+ /usr/include/qt5/QtGui/qsurface.h \
+ /usr/include/qt5/QtGui/qsurfaceformat.h \
+ /usr/include/qt5/QtGui/qwindowdefs.h \
+ /usr/include/qt5/QtGui/qwindowdefs_win.h \
+ /usr/include/qt5/QtGui/qicon.h \
+ /usr/include/qt5/QtGui/qpixmap.h \
+ /usr/include/qt5/QtGui/qpaintdevice.h \
+ /usr/include/qt5/QtGui/qcolor.h \
+ /usr/include/qt5/QtGui/qrgb.h \
+ /usr/include/qt5/QtCore/qsharedpointer.h \
+ /usr/include/qt5/QtCore/qshareddata.h \
+ /usr/include/qt5/QtCore/qsharedpointer_impl.h \
+ /usr/include/qt5/QtCore/qhash.h \
+ /usr/include/qt5/QtGui/qimage.h \
+ /usr/include/qt5/QtGui/qtransform.h \
+ /usr/include/qt5/QtGui/qmatrix.h \
+ /usr/include/qt5/QtGui/qpolygon.h \
+ /usr/include/qt5/QtCore/qvector.h \
+ /usr/include/qt5/QtGui/qregion.h \
+ /usr/include/qt5/QtCore/qline.h \
+ /usr/include/qt5/QtGui/qpainterpath.h \
+ /usr/include/qt5/QtGui/qcursor.h \
+ src/History.h \
+ /usr/include/qt5/QtCore/QBitRef \
+ /usr/include/qt5/QtCore/qbitarray.h \
+ /usr/include/qt5/QtCore/QHash \
+ /usr/include/qt5/QtCore/QVector \
+ /usr/include/qt5/QtCore/QTemporaryFile \
+ /usr/include/qt5/QtCore/qtemporaryfile.h \
+ /usr/include/qt5/QtCore/qfile.h \
+ /usr/include/qt5/QtCore/qfiledevice.h \
+ src/BlockArray.h \
+ src/Character.h \
+ src/CharacterColor.h \
+ /usr/include/qt5/QtGui/QColor \
+ /usr/include/qt5/QtGui/QGuiApplication \
+ /usr/include/qt5/QtGui/qguiapplication.h \
+ /usr/include/qt5/QtCore/qcoreapplication.h \
+ /usr/include/qt5/QtCore/qeventloop.h \
+ /usr/include/qt5/QtGui/qinputmethod.h \
+ /usr/include/qt5/QtCore/qlocale.h \
+ /usr/include/qt5/QtCore/qvariant.h \
+ /usr/include/qt5/QtCore/qmap.h \
+ /usr/include/qt5/QtCore/qdebug.h \
+ /usr/include/qt5/QtCore/qtextstream.h \
+ /usr/include/qt5/QtCore/qset.h \
+ /usr/include/qt5/QtCore/qcontiguouscache.h \
+ /usr/include/qt5/QtCore/QByteRef \
+ /usr/include/qt5/QtCore/QDir \
+ /usr/include/qt5/QtCore/qdir.h \
+ /usr/include/qt5/QtCore/qfileinfo.h \
+ /usr/include/qt5/QtCore/QFile \
+ /usr/include/qt5/QtCore/QRegExp \
+ /usr/include/qt5/QtCore/QtCore \
+ /usr/include/qt5/QtCore/QtCoreDepends \
+ /usr/include/qt5/QtCore/qabstractanimation.h \
+ /usr/include/qt5/QtCore/qanimationgroup.h \
+ /usr/include/qt5/QtCore/qparallelanimationgroup.h \
+ /usr/include/qt5/QtCore/qpauseanimation.h \
+ /usr/include/qt5/QtCore/qpropertyanimation.h \
+ /usr/include/qt5/QtCore/qvariantanimation.h \
+ /usr/include/qt5/QtCore/qeasingcurve.h \
+ /usr/include/qt5/QtCore/qsequentialanimationgroup.h \
+ /usr/include/qt5/QtCore/qtextcodec.h \
+ /usr/include/qt5/QtCore/qendian.h \
+ /usr/include/qt5/QtCore/qlibraryinfo.h \
+ /usr/include/qt5/QtCore/qdatetime.h \
+ /usr/include/qt5/QtCore/qnumeric.h \
+ /usr/include/qt5/QtCore/qbuffer.h \
+ /usr/include/qt5/QtCore/qdiriterator.h \
+ /usr/include/qt5/QtCore/qfileselector.h \
+ /usr/include/qt5/QtCore/qfilesystemwatcher.h \
+ /usr/include/qt5/QtCore/qlockfile.h \
+ /usr/include/qt5/QtCore/qloggingcategory.h \
+ /usr/include/qt5/QtCore/qprocess.h \
+ /usr/include/qt5/QtCore/qresource.h \
+ /usr/include/qt5/QtCore/qsavefile.h \
+ /usr/include/qt5/QtCore/qsettings.h \
+ /usr/include/qt5/QtCore/qstandardpaths.h \
+ /usr/include/qt5/QtCore/qtemporarydir.h \
+ /usr/include/qt5/QtCore/QScopedPointer \
+ /usr/include/qt5/QtCore/qurl.h \
+ /usr/include/qt5/QtCore/qurlquery.h \
+ /usr/include/qt5/QtCore/qabstractitemmodel.h \
+ /usr/include/qt5/QtCore/qabstractproxymodel.h \
+ /usr/include/qt5/QtCore/qidentityproxymodel.h \
+ /usr/include/qt5/QtCore/qitemselectionmodel.h \
+ /usr/include/qt5/QtCore/qsortfilterproxymodel.h \
+ /usr/include/qt5/QtCore/qstringlistmodel.h \
+ /usr/include/qt5/QtCore/qjsonarray.h \
+ /usr/include/qt5/QtCore/qjsonvalue.h \
+ /usr/include/qt5/QtCore/qjsondocument.h \
+ /usr/include/qt5/QtCore/qjsonobject.h \
+ /usr/include/qt5/QtCore/qabstracteventdispatcher.h \
+ /usr/include/qt5/QtCore/qabstractnativeeventfilter.h \
+ /usr/include/qt5/QtCore/qmath.h \
+ /usr/include/qt5/QtCore/qmetaobject.h \
+ /usr/include/qt5/QtCore/qmimedata.h \
+ /usr/include/qt5/QtCore/qobjectcleanuphandler.h \
+ /usr/include/qt5/QtCore/qpointer.h \
+ /usr/include/qt5/QtCore/qsharedmemory.h \
+ /usr/include/qt5/QtCore/qsignalmapper.h \
+ /usr/include/qt5/QtCore/qsocketnotifier.h \
+ /usr/include/qt5/QtCore/qsystemsemaphore.h \
+ /usr/include/qt5/QtCore/qtranslator.h \
+ /usr/include/qt5/QtCore/qwineventnotifier.h \
+ /usr/include/qt5/QtCore/qmimedatabase.h \
+ /usr/include/qt5/QtCore/qmimetype.h \
+ /usr/include/qt5/QtCore/qfactoryinterface.h \
+ /usr/include/qt5/QtCore/qlibrary.h \
+ /usr/include/qt5/QtCore/qplugin.h \
+ /usr/include/qt5/QtCore/qpluginloader.h \
+ /usr/include/qt5/QtCore/quuid.h \
+ /usr/include/qt5/QtCore/qabstractstate.h \
+ /usr/include/qt5/QtCore/qabstracttransition.h \
+ /usr/include/qt5/QtCore/qeventtransition.h \
+ /usr/include/qt5/QtCore/qfinalstate.h \
+ /usr/include/qt5/QtCore/qhistorystate.h \
+ /usr/include/qt5/QtCore/qsignaltransition.h \
+ /usr/include/qt5/QtCore/qstate.h \
+ /usr/include/qt5/QtCore/qstatemachine.h \
+ /usr/include/qt5/QtCore/qexception.h \
+ /usr/include/qt5/QtCore/qfuture.h \
+ /usr/include/qt5/QtCore/qfutureinterface.h \
+ /usr/include/qt5/QtCore/qrunnable.h \
+ /usr/include/qt5/QtCore/qresultstore.h \
+ /usr/include/qt5/QtCore/qfuturesynchronizer.h \
+ /usr/include/qt5/QtCore/qfuturewatcher.h \
+ /usr/include/qt5/QtCore/qreadwritelock.h \
+ /usr/include/qt5/QtCore/qsemaphore.h \
+ /usr/include/qt5/QtCore/qthread.h \
+ /usr/include/qt5/QtCore/qthreadpool.h \
+ /usr/include/qt5/QtCore/qthreadstorage.h \
+ /usr/include/qt5/QtCore/qwaitcondition.h \
+ /usr/include/qt5/QtCore/qarraydataops.h \
+ /usr/include/qt5/QtCore/qarraydatapointer.h \
+ /usr/include/qt5/QtCore/qbytearraymatcher.h \
+ /usr/include/qt5/QtCore/qcache.h \
+ /usr/include/qt5/QtCore/qcollator.h \
+ /usr/include/qt5/QtCore/qcommandlineoption.h \
+ /usr/include/qt5/QtCore/qcommandlineparser.h \
+ /usr/include/qt5/QtCore/qcryptographichash.h \
+ /usr/include/qt5/QtCore/qelapsedtimer.h \
+ /usr/include/qt5/QtCore/qlinkedlist.h \
+ /usr/include/qt5/QtCore/qmessageauthenticationcode.h \
+ /usr/include/qt5/QtCore/qqueue.h \
+ /usr/include/qt5/QtCore/qregularexpression.h \
+ /usr/include/qt5/QtCore/qscopedvaluerollback.h \
+ /usr/include/qt5/QtCore/qstack.h \
+ /usr/include/qt5/QtCore/qtextboundaryfinder.h \
+ /usr/include/qt5/QtCore/qtimeline.h \
+ /usr/include/qt5/QtCore/qtimezone.h \
+ /usr/include/qt5/QtCore/qxmlstream.h \
+ /usr/include/qt5/QtCore/qtcoreversion.h \
+ src/Pty.h \
+ /usr/include/qt5/QtCore/QList \
+ /usr/include/qt5/QtCore/QSize \
+ src/kptyprocess.h \
+ src/kprocess.h \
+ /usr/include/qt5/QtCore/QProcess \
+ src/kptydevice.h \
+ src/kpty_p.h \
+ src/kpty.h \
+ /usr/include/qt5/QtCore/QByteArray \
+ /usr/include/qt5/QtCore/QIODevice \
+ src/TerminalDisplay.h \
+ /usr/include/qt5/QtCore/QPointer \
+ src/Filter.h \
+ /usr/include/qt5/QtWidgets/QAction \
+ /usr/include/qt5/QtWidgets/qaction.h \
+ /usr/include/qt5/QtGui/qkeysequence.h \
+ /usr/include/qt5/QtWidgets/qwidget.h \
+ /usr/include/qt5/QtGui/qpalette.h \
+ /usr/include/qt5/QtGui/qbrush.h \
+ /usr/include/qt5/QtGui/qfont.h \
+ /usr/include/qt5/QtGui/qfontmetrics.h \
+ /usr/include/qt5/QtGui/qfontinfo.h \
+ /usr/include/qt5/QtWidgets/qsizepolicy.h \
+ /usr/include/qt5/QtGui/qevent.h \
+ /usr/include/qt5/QtGui/qvector2d.h \
+ /usr/include/qt5/QtGui/qtouchdevice.h \
+ /usr/include/qt5/QtWidgets/qactiongroup.h \
+ src/ksession.h \
+ /usr/include/qt5/QtQuick/QQuickItem \
+ /usr/include/qt5/QtQuick/qquickitem.h \
+ /usr/include/qt5/QtQuick/qtquickglobal.h \
+ /usr/include/qt5/QtQml/qqml.h \
+ /usr/include/qt5/QtQml/qqmlprivate.h \
+ /usr/include/qt5/QtQml/qtqmlglobal.h \
+ /usr/include/qt5/QtQml/qqmlparserstatus.h \
+ /usr/include/qt5/QtQml/qqmlpropertyvaluesource.h \
+ /usr/include/qt5/QtQml/qqmllist.h \
+ /usr/include/qt5/QtQml/qqmlcomponent.h \
+ /usr/include/qt5/QtQml/qqmlerror.h \
+ /usr/include/qt5/QtQml/qjsvalue.h \
+ /usr/include/qt5/QtGui/qaccessible.h \
+ /usr/include/qt5/QtQuick/QQuickPaintedItem \
+ /usr/include/qt5/QtQuick/qquickpainteditem.h \
+ src/ShellCommand.h \
+ src/Vt102Emulation.h \
+ /usr/include/qt5/QtGui/QKeyEvent \
+ src/Emulation.h \
+ /usr/include/qt5/QtCore/QTextCodec \
+ /usr/include/qt5/QtCore/QTextStream \
+ src/Screen.h \
+ /usr/include/qt5/QtCore/QVarLengthArray
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/Session.o src/Session.cpp
+
+.obj/Screen.o: src/Screen.cpp src/Screen.h \
+ /usr/include/qt5/QtCore/QRect \
+ /usr/include/qt5/QtCore/qrect.h \
+ /usr/include/qt5/QtCore/qsize.h \
+ /usr/include/qt5/QtCore/qnamespace.h \
+ /usr/include/qt5/QtCore/qglobal.h \
+ /usr/include/qt5/QtCore/qconfig.h \
+ /usr/include/qt5/QtCore/qfeatures.h \
+ /usr/include/qt5/QtCore/qsystemdetection.h \
+ /usr/include/qt5/QtCore/qprocessordetection.h \
+ /usr/include/qt5/QtCore/qcompilerdetection.h \
+ /usr/include/qt5/QtCore/qglobalstatic.h \
+ /usr/include/qt5/QtCore/qatomic.h \
+ /usr/include/qt5/QtCore/qbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_bootstrap.h \
+ /usr/include/qt5/QtCore/qgenericatomic.h \
+ /usr/include/qt5/QtCore/qatomic_msvc.h \
+ /usr/include/qt5/QtCore/qatomic_integrity.h \
+ /usr/include/qt5/QtCore/qoldbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_vxworks.h \
+ /usr/include/qt5/QtCore/qatomic_power.h \
+ /usr/include/qt5/QtCore/qatomic_alpha.h \
+ /usr/include/qt5/QtCore/qatomic_armv7.h \
+ /usr/include/qt5/QtCore/qatomic_armv6.h \
+ /usr/include/qt5/QtCore/qatomic_armv5.h \
+ /usr/include/qt5/QtCore/qatomic_bfin.h \
+ /usr/include/qt5/QtCore/qatomic_ia64.h \
+ /usr/include/qt5/QtCore/qatomic_mips.h \
+ /usr/include/qt5/QtCore/qatomic_s390.h \
+ /usr/include/qt5/QtCore/qatomic_sh4a.h \
+ /usr/include/qt5/QtCore/qatomic_sparc.h \
+ /usr/include/qt5/QtCore/qatomic_gcc.h \
+ /usr/include/qt5/QtCore/qatomic_x86.h \
+ /usr/include/qt5/QtCore/qatomic_cxx11.h \
+ /usr/include/qt5/QtCore/qatomic_unix.h \
+ /usr/include/qt5/QtCore/qmutex.h \
+ /usr/include/qt5/QtCore/qlogging.h \
+ /usr/include/qt5/QtCore/qflags.h \
+ /usr/include/qt5/QtCore/qtypeinfo.h \
+ /usr/include/qt5/QtCore/qtypetraits.h \
+ /usr/include/qt5/QtCore/qsysinfo.h \
+ /usr/include/qt5/QtCore/qpoint.h \
+ /usr/include/qt5/QtCore/QTextStream \
+ /usr/include/qt5/QtCore/qtextstream.h \
+ /usr/include/qt5/QtCore/qiodevice.h \
+ /usr/include/qt5/QtCore/qobject.h \
+ /usr/include/qt5/QtCore/qobjectdefs.h \
+ /usr/include/qt5/QtCore/qobjectdefs_impl.h \
+ /usr/include/qt5/QtCore/qstring.h \
+ /usr/include/qt5/QtCore/qchar.h \
+ /usr/include/qt5/QtCore/qbytearray.h \
+ /usr/include/qt5/QtCore/qrefcount.h \
+ /usr/include/qt5/QtCore/qarraydata.h \
+ /usr/include/qt5/QtCore/qstringbuilder.h \
+ /usr/include/qt5/QtCore/qlist.h \
+ /usr/include/qt5/QtCore/qalgorithms.h \
+ /usr/include/qt5/QtCore/qiterator.h \
+ /usr/include/qt5/QtCore/qcoreevent.h \
+ /usr/include/qt5/QtCore/qscopedpointer.h \
+ /usr/include/qt5/QtCore/qmetatype.h \
+ /usr/include/qt5/QtCore/qvarlengtharray.h \
+ /usr/include/qt5/QtCore/qcontainerfwd.h \
+ /usr/include/qt5/QtCore/qisenum.h \
+ /usr/include/qt5/QtCore/qobject_impl.h \
+ /usr/include/qt5/QtCore/qlocale.h \
+ /usr/include/qt5/QtCore/qvariant.h \
+ /usr/include/qt5/QtCore/qmap.h \
+ /usr/include/qt5/QtCore/qpair.h \
+ /usr/include/qt5/QtCore/qdebug.h \
+ /usr/include/qt5/QtCore/qhash.h \
+ /usr/include/qt5/QtCore/qvector.h \
+ /usr/include/qt5/QtCore/qset.h \
+ /usr/include/qt5/QtCore/qcontiguouscache.h \
+ /usr/include/qt5/QtCore/qstringlist.h \
+ /usr/include/qt5/QtCore/qdatastream.h \
+ /usr/include/qt5/QtCore/qregexp.h \
+ /usr/include/qt5/QtCore/qstringmatcher.h \
+ /usr/include/qt5/QtCore/qshareddata.h \
+ /usr/include/qt5/QtCore/QVarLengthArray \
+ src/Character.h \
+ /usr/include/qt5/QtCore/QHash \
+ src/CharacterColor.h \
+ /usr/include/qt5/QtGui/QColor \
+ /usr/include/qt5/QtGui/qcolor.h \
+ /usr/include/qt5/QtGui/qrgb.h \
+ src/History.h \
+ /usr/include/qt5/QtCore/QBitRef \
+ /usr/include/qt5/QtCore/qbitarray.h \
+ /usr/include/qt5/QtCore/QVector \
+ /usr/include/qt5/QtCore/QTemporaryFile \
+ /usr/include/qt5/QtCore/qtemporaryfile.h \
+ /usr/include/qt5/QtCore/qfile.h \
+ /usr/include/qt5/QtCore/qfiledevice.h \
+ src/BlockArray.h \
+ /usr/include/qt5/QtCore/QDate \
+ /usr/include/qt5/QtCore/qdatetime.h \
+ /usr/include/qt5/QtCore/qsharedpointer.h \
+ /usr/include/qt5/QtCore/qsharedpointer_impl.h \
+ src/konsole_wcwidth.h \
+ /usr/include/qt5/QtCore/QString \
+ src/TerminalCharacterDecoder.h \
+ /usr/include/qt5/QtCore/QList
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/Screen.o src/Screen.cpp
+
+.obj/KeyboardTranslator.o: src/KeyboardTranslator.cpp src/KeyboardTranslator.h \
+ /usr/include/qt5/QtCore/QHash \
+ /usr/include/qt5/QtCore/qhash.h \
+ /usr/include/qt5/QtCore/qchar.h \
+ /usr/include/qt5/QtCore/qglobal.h \
+ /usr/include/qt5/QtCore/qconfig.h \
+ /usr/include/qt5/QtCore/qfeatures.h \
+ /usr/include/qt5/QtCore/qsystemdetection.h \
+ /usr/include/qt5/QtCore/qprocessordetection.h \
+ /usr/include/qt5/QtCore/qcompilerdetection.h \
+ /usr/include/qt5/QtCore/qglobalstatic.h \
+ /usr/include/qt5/QtCore/qatomic.h \
+ /usr/include/qt5/QtCore/qbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_bootstrap.h \
+ /usr/include/qt5/QtCore/qgenericatomic.h \
+ /usr/include/qt5/QtCore/qatomic_msvc.h \
+ /usr/include/qt5/QtCore/qatomic_integrity.h \
+ /usr/include/qt5/QtCore/qoldbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_vxworks.h \
+ /usr/include/qt5/QtCore/qatomic_power.h \
+ /usr/include/qt5/QtCore/qatomic_alpha.h \
+ /usr/include/qt5/QtCore/qatomic_armv7.h \
+ /usr/include/qt5/QtCore/qatomic_armv6.h \
+ /usr/include/qt5/QtCore/qatomic_armv5.h \
+ /usr/include/qt5/QtCore/qatomic_bfin.h \
+ /usr/include/qt5/QtCore/qatomic_ia64.h \
+ /usr/include/qt5/QtCore/qatomic_mips.h \
+ /usr/include/qt5/QtCore/qatomic_s390.h \
+ /usr/include/qt5/QtCore/qatomic_sh4a.h \
+ /usr/include/qt5/QtCore/qatomic_sparc.h \
+ /usr/include/qt5/QtCore/qatomic_gcc.h \
+ /usr/include/qt5/QtCore/qatomic_x86.h \
+ /usr/include/qt5/QtCore/qatomic_cxx11.h \
+ /usr/include/qt5/QtCore/qatomic_unix.h \
+ /usr/include/qt5/QtCore/qmutex.h \
+ /usr/include/qt5/QtCore/qlogging.h \
+ /usr/include/qt5/QtCore/qflags.h \
+ /usr/include/qt5/QtCore/qtypeinfo.h \
+ /usr/include/qt5/QtCore/qtypetraits.h \
+ /usr/include/qt5/QtCore/qsysinfo.h \
+ /usr/include/qt5/QtCore/qiterator.h \
+ /usr/include/qt5/QtCore/qlist.h \
+ /usr/include/qt5/QtCore/qalgorithms.h \
+ /usr/include/qt5/QtCore/qrefcount.h \
+ /usr/include/qt5/QtCore/qpair.h \
+ /usr/include/qt5/QtCore/QList \
+ /usr/include/qt5/QtGui/QKeySequence \
+ /usr/include/qt5/QtGui/qkeysequence.h \
+ /usr/include/qt5/QtCore/qnamespace.h \
+ /usr/include/qt5/QtCore/qstring.h \
+ /usr/include/qt5/QtCore/qbytearray.h \
+ /usr/include/qt5/QtCore/qarraydata.h \
+ /usr/include/qt5/QtCore/qstringbuilder.h \
+ /usr/include/qt5/QtCore/qobjectdefs.h \
+ /usr/include/qt5/QtCore/qobjectdefs_impl.h \
+ /usr/include/qt5/QtCore/QMetaType \
+ /usr/include/qt5/QtCore/qmetatype.h \
+ /usr/include/qt5/QtCore/qvarlengtharray.h \
+ /usr/include/qt5/QtCore/qcontainerfwd.h \
+ /usr/include/qt5/QtCore/qisenum.h \
+ /usr/include/qt5/QtCore/QVarLengthArray \
+ /usr/include/qt5/QtCore/QBuffer \
+ /usr/include/qt5/QtCore/qbuffer.h \
+ /usr/include/qt5/QtCore/qiodevice.h \
+ /usr/include/qt5/QtCore/qobject.h \
+ /usr/include/qt5/QtCore/qcoreevent.h \
+ /usr/include/qt5/QtCore/qscopedpointer.h \
+ /usr/include/qt5/QtCore/qobject_impl.h \
+ /usr/include/qt5/QtCore/QFile \
+ /usr/include/qt5/QtCore/qfile.h \
+ /usr/include/qt5/QtCore/qfiledevice.h \
+ /usr/include/qt5/QtCore/QFileInfo \
+ /usr/include/qt5/QtCore/qfileinfo.h \
+ /usr/include/qt5/QtCore/qshareddata.h \
+ /usr/include/qt5/QtCore/QTextStream \
+ /usr/include/qt5/QtCore/qtextstream.h \
+ /usr/include/qt5/QtCore/qlocale.h \
+ /usr/include/qt5/QtCore/qvariant.h \
+ /usr/include/qt5/QtCore/qmap.h \
+ /usr/include/qt5/QtCore/qdebug.h \
+ /usr/include/qt5/QtCore/qvector.h \
+ /usr/include/qt5/QtCore/qpoint.h \
+ /usr/include/qt5/QtCore/qset.h \
+ /usr/include/qt5/QtCore/qcontiguouscache.h \
+ /usr/include/qt5/QtCore/qstringlist.h \
+ /usr/include/qt5/QtCore/qdatastream.h \
+ /usr/include/qt5/QtCore/qregexp.h \
+ /usr/include/qt5/QtCore/qstringmatcher.h \
+ /usr/include/qt5/QtCore/QDir \
+ /usr/include/qt5/QtCore/qdir.h \
+ /usr/include/qt5/QtCore/QtDebug \
+ src/tools.h \
+ /usr/include/qt5/QtCore/QString
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/KeyboardTranslator.o src/KeyboardTranslator.cpp
+
+.obj/Emulation.o: src/Emulation.cpp src/Emulation.h \
+ /usr/include/qt5/QtGui/QKeyEvent \
+ /usr/include/qt5/QtGui/qevent.h \
+ /usr/include/qt5/QtGui/qwindowdefs.h \
+ /usr/include/qt5/QtCore/qglobal.h \
+ /usr/include/qt5/QtCore/qconfig.h \
+ /usr/include/qt5/QtCore/qfeatures.h \
+ /usr/include/qt5/QtCore/qsystemdetection.h \
+ /usr/include/qt5/QtCore/qprocessordetection.h \
+ /usr/include/qt5/QtCore/qcompilerdetection.h \
+ /usr/include/qt5/QtCore/qglobalstatic.h \
+ /usr/include/qt5/QtCore/qatomic.h \
+ /usr/include/qt5/QtCore/qbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_bootstrap.h \
+ /usr/include/qt5/QtCore/qgenericatomic.h \
+ /usr/include/qt5/QtCore/qatomic_msvc.h \
+ /usr/include/qt5/QtCore/qatomic_integrity.h \
+ /usr/include/qt5/QtCore/qoldbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_vxworks.h \
+ /usr/include/qt5/QtCore/qatomic_power.h \
+ /usr/include/qt5/QtCore/qatomic_alpha.h \
+ /usr/include/qt5/QtCore/qatomic_armv7.h \
+ /usr/include/qt5/QtCore/qatomic_armv6.h \
+ /usr/include/qt5/QtCore/qatomic_armv5.h \
+ /usr/include/qt5/QtCore/qatomic_bfin.h \
+ /usr/include/qt5/QtCore/qatomic_ia64.h \
+ /usr/include/qt5/QtCore/qatomic_mips.h \
+ /usr/include/qt5/QtCore/qatomic_s390.h \
+ /usr/include/qt5/QtCore/qatomic_sh4a.h \
+ /usr/include/qt5/QtCore/qatomic_sparc.h \
+ /usr/include/qt5/QtCore/qatomic_gcc.h \
+ /usr/include/qt5/QtCore/qatomic_x86.h \
+ /usr/include/qt5/QtCore/qatomic_cxx11.h \
+ /usr/include/qt5/QtCore/qatomic_unix.h \
+ /usr/include/qt5/QtCore/qmutex.h \
+ /usr/include/qt5/QtCore/qlogging.h \
+ /usr/include/qt5/QtCore/qflags.h \
+ /usr/include/qt5/QtCore/qtypeinfo.h \
+ /usr/include/qt5/QtCore/qtypetraits.h \
+ /usr/include/qt5/QtCore/qsysinfo.h \
+ /usr/include/qt5/QtCore/qobjectdefs.h \
+ /usr/include/qt5/QtCore/qnamespace.h \
+ /usr/include/qt5/QtCore/qobjectdefs_impl.h \
+ /usr/include/qt5/QtGui/qwindowdefs_win.h \
+ /usr/include/qt5/QtCore/qobject.h \
+ /usr/include/qt5/QtCore/qstring.h \
+ /usr/include/qt5/QtCore/qchar.h \
+ /usr/include/qt5/QtCore/qbytearray.h \
+ /usr/include/qt5/QtCore/qrefcount.h \
+ /usr/include/qt5/QtCore/qarraydata.h \
+ /usr/include/qt5/QtCore/qstringbuilder.h \
+ /usr/include/qt5/QtCore/qlist.h \
+ /usr/include/qt5/QtCore/qalgorithms.h \
+ /usr/include/qt5/QtCore/qiterator.h \
+ /usr/include/qt5/QtCore/qcoreevent.h \
+ /usr/include/qt5/QtCore/qscopedpointer.h \
+ /usr/include/qt5/QtCore/qmetatype.h \
+ /usr/include/qt5/QtCore/qvarlengtharray.h \
+ /usr/include/qt5/QtCore/qcontainerfwd.h \
+ /usr/include/qt5/QtCore/qisenum.h \
+ /usr/include/qt5/QtCore/qobject_impl.h \
+ /usr/include/qt5/QtGui/qregion.h \
+ /usr/include/qt5/QtCore/qrect.h \
+ /usr/include/qt5/QtCore/qsize.h \
+ /usr/include/qt5/QtCore/qpoint.h \
+ /usr/include/qt5/QtCore/qdatastream.h \
+ /usr/include/qt5/QtCore/qiodevice.h \
+ /usr/include/qt5/QtCore/qpair.h \
+ /usr/include/qt5/QtGui/qkeysequence.h \
+ /usr/include/qt5/QtCore/qvariant.h \
+ /usr/include/qt5/QtCore/qmap.h \
+ /usr/include/qt5/QtCore/qdebug.h \
+ /usr/include/qt5/QtCore/qhash.h \
+ /usr/include/qt5/QtCore/qtextstream.h \
+ /usr/include/qt5/QtCore/qlocale.h \
+ /usr/include/qt5/QtCore/qshareddata.h \
+ /usr/include/qt5/QtCore/qvector.h \
+ /usr/include/qt5/QtCore/qset.h \
+ /usr/include/qt5/QtCore/qcontiguouscache.h \
+ /usr/include/qt5/QtCore/qstringlist.h \
+ /usr/include/qt5/QtCore/qregexp.h \
+ /usr/include/qt5/QtCore/qstringmatcher.h \
+ /usr/include/qt5/QtCore/qurl.h \
+ /usr/include/qt5/QtCore/qurlquery.h \
+ /usr/include/qt5/QtCore/qfile.h \
+ /usr/include/qt5/QtCore/qfiledevice.h \
+ /usr/include/qt5/QtGui/qvector2d.h \
+ /usr/include/qt5/QtGui/qtouchdevice.h \
+ /usr/include/qt5/QtCore/QTextCodec \
+ /usr/include/qt5/QtCore/qtextcodec.h \
+ /usr/include/qt5/QtCore/QTextStream \
+ /usr/include/qt5/QtCore/QTimer \
+ /usr/include/qt5/QtCore/qtimer.h \
+ /usr/include/qt5/QtCore/qbasictimer.h \
+ /usr/include/qt5/QtGui/QGuiApplication \
+ /usr/include/qt5/QtGui/qguiapplication.h \
+ /usr/include/qt5/QtCore/qcoreapplication.h \
+ /usr/include/qt5/QtCore/qeventloop.h \
+ /usr/include/qt5/QtGui/qinputmethod.h \
+ /usr/include/qt5/QtGui/QClipboard \
+ /usr/include/qt5/QtGui/qclipboard.h \
+ /usr/include/qt5/QtCore/QHash \
+ /usr/include/qt5/QtCore/QRegExp \
+ /usr/include/qt5/QtCore/QThread \
+ /usr/include/qt5/QtCore/qthread.h \
+ /usr/include/qt5/QtCore/QTime \
+ /usr/include/qt5/QtCore/qdatetime.h \
+ /usr/include/qt5/QtCore/qsharedpointer.h \
+ /usr/include/qt5/QtCore/qsharedpointer_impl.h \
+ src/KeyboardTranslator.h \
+ /usr/include/qt5/QtCore/QList \
+ /usr/include/qt5/QtGui/QKeySequence \
+ /usr/include/qt5/QtCore/QMetaType \
+ /usr/include/qt5/QtCore/QVarLengthArray \
+ src/Screen.h \
+ /usr/include/qt5/QtCore/QRect \
+ src/Character.h \
+ src/CharacterColor.h \
+ /usr/include/qt5/QtGui/QColor \
+ /usr/include/qt5/QtGui/qcolor.h \
+ /usr/include/qt5/QtGui/qrgb.h \
+ src/History.h \
+ /usr/include/qt5/QtCore/QBitRef \
+ /usr/include/qt5/QtCore/qbitarray.h \
+ /usr/include/qt5/QtCore/QVector \
+ /usr/include/qt5/QtCore/QTemporaryFile \
+ /usr/include/qt5/QtCore/qtemporaryfile.h \
+ src/BlockArray.h \
+ src/TerminalCharacterDecoder.h \
+ src/ScreenWindow.h \
+ /usr/include/qt5/QtCore/QObject \
+ /usr/include/qt5/QtCore/QPoint
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/Emulation.o src/Emulation.cpp
+
+.obj/History.o: src/History.cpp src/History.h \
+ /usr/include/qt5/QtCore/QBitRef \
+ /usr/include/qt5/QtCore/qbitarray.h \
+ /usr/include/qt5/QtCore/qbytearray.h \
+ /usr/include/qt5/QtCore/qrefcount.h \
+ /usr/include/qt5/QtCore/qatomic.h \
+ /usr/include/qt5/QtCore/qglobal.h \
+ /usr/include/qt5/QtCore/qconfig.h \
+ /usr/include/qt5/QtCore/qfeatures.h \
+ /usr/include/qt5/QtCore/qsystemdetection.h \
+ /usr/include/qt5/QtCore/qprocessordetection.h \
+ /usr/include/qt5/QtCore/qcompilerdetection.h \
+ /usr/include/qt5/QtCore/qglobalstatic.h \
+ /usr/include/qt5/QtCore/qmutex.h \
+ /usr/include/qt5/QtCore/qlogging.h \
+ /usr/include/qt5/QtCore/qflags.h \
+ /usr/include/qt5/QtCore/qtypeinfo.h \
+ /usr/include/qt5/QtCore/qtypetraits.h \
+ /usr/include/qt5/QtCore/qsysinfo.h \
+ /usr/include/qt5/QtCore/qbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_bootstrap.h \
+ /usr/include/qt5/QtCore/qgenericatomic.h \
+ /usr/include/qt5/QtCore/qatomic_msvc.h \
+ /usr/include/qt5/QtCore/qatomic_integrity.h \
+ /usr/include/qt5/QtCore/qoldbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_vxworks.h \
+ /usr/include/qt5/QtCore/qatomic_power.h \
+ /usr/include/qt5/QtCore/qatomic_alpha.h \
+ /usr/include/qt5/QtCore/qatomic_armv7.h \
+ /usr/include/qt5/QtCore/qatomic_armv6.h \
+ /usr/include/qt5/QtCore/qatomic_armv5.h \
+ /usr/include/qt5/QtCore/qatomic_bfin.h \
+ /usr/include/qt5/QtCore/qatomic_ia64.h \
+ /usr/include/qt5/QtCore/qatomic_mips.h \
+ /usr/include/qt5/QtCore/qatomic_s390.h \
+ /usr/include/qt5/QtCore/qatomic_sh4a.h \
+ /usr/include/qt5/QtCore/qatomic_sparc.h \
+ /usr/include/qt5/QtCore/qatomic_gcc.h \
+ /usr/include/qt5/QtCore/qatomic_x86.h \
+ /usr/include/qt5/QtCore/qatomic_cxx11.h \
+ /usr/include/qt5/QtCore/qatomic_unix.h \
+ /usr/include/qt5/QtCore/qnamespace.h \
+ /usr/include/qt5/QtCore/qarraydata.h \
+ /usr/include/qt5/QtCore/qstring.h \
+ /usr/include/qt5/QtCore/qchar.h \
+ /usr/include/qt5/QtCore/qstringbuilder.h \
+ /usr/include/qt5/QtCore/QHash \
+ /usr/include/qt5/QtCore/qhash.h \
+ /usr/include/qt5/QtCore/qiterator.h \
+ /usr/include/qt5/QtCore/qlist.h \
+ /usr/include/qt5/QtCore/qalgorithms.h \
+ /usr/include/qt5/QtCore/qpair.h \
+ /usr/include/qt5/QtCore/QVector \
+ /usr/include/qt5/QtCore/qvector.h \
+ /usr/include/qt5/QtCore/qpoint.h \
+ /usr/include/qt5/QtCore/QTemporaryFile \
+ /usr/include/qt5/QtCore/qtemporaryfile.h \
+ /usr/include/qt5/QtCore/qiodevice.h \
+ /usr/include/qt5/QtCore/qobject.h \
+ /usr/include/qt5/QtCore/qobjectdefs.h \
+ /usr/include/qt5/QtCore/qobjectdefs_impl.h \
+ /usr/include/qt5/QtCore/qcoreevent.h \
+ /usr/include/qt5/QtCore/qscopedpointer.h \
+ /usr/include/qt5/QtCore/qmetatype.h \
+ /usr/include/qt5/QtCore/qvarlengtharray.h \
+ /usr/include/qt5/QtCore/qcontainerfwd.h \
+ /usr/include/qt5/QtCore/qisenum.h \
+ /usr/include/qt5/QtCore/qobject_impl.h \
+ /usr/include/qt5/QtCore/qfile.h \
+ /usr/include/qt5/QtCore/qfiledevice.h \
+ src/BlockArray.h \
+ src/Character.h \
+ src/CharacterColor.h \
+ /usr/include/qt5/QtGui/QColor \
+ /usr/include/qt5/QtGui/qcolor.h \
+ /usr/include/qt5/QtGui/qrgb.h \
+ /usr/include/qt5/QtCore/qstringlist.h \
+ /usr/include/qt5/QtCore/qdatastream.h \
+ /usr/include/qt5/QtCore/qregexp.h \
+ /usr/include/qt5/QtCore/qstringmatcher.h \
+ /usr/include/qt5/QtCore/QtDebug \
+ /usr/include/qt5/QtCore/qdebug.h \
+ /usr/include/qt5/QtCore/qmap.h \
+ /usr/include/qt5/QtCore/qtextstream.h \
+ /usr/include/qt5/QtCore/qlocale.h \
+ /usr/include/qt5/QtCore/qvariant.h \
+ /usr/include/qt5/QtCore/qshareddata.h \
+ /usr/include/qt5/QtCore/qset.h \
+ /usr/include/qt5/QtCore/qcontiguouscache.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/History.o src/History.cpp
+
+.obj/BlockArray.o: src/BlockArray.cpp src/BlockArray.h \
+ /usr/include/qt5/QtCore/QtCore \
+ /usr/include/qt5/QtCore/QtCoreDepends \
+ /usr/include/qt5/QtCore/qabstractanimation.h \
+ /usr/include/qt5/QtCore/qobject.h \
+ /usr/include/qt5/QtCore/qobjectdefs.h \
+ /usr/include/qt5/QtCore/qnamespace.h \
+ /usr/include/qt5/QtCore/qglobal.h \
+ /usr/include/qt5/QtCore/qconfig.h \
+ /usr/include/qt5/QtCore/qfeatures.h \
+ /usr/include/qt5/QtCore/qsystemdetection.h \
+ /usr/include/qt5/QtCore/qprocessordetection.h \
+ /usr/include/qt5/QtCore/qcompilerdetection.h \
+ /usr/include/qt5/QtCore/qglobalstatic.h \
+ /usr/include/qt5/QtCore/qatomic.h \
+ /usr/include/qt5/QtCore/qbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_bootstrap.h \
+ /usr/include/qt5/QtCore/qgenericatomic.h \
+ /usr/include/qt5/QtCore/qatomic_msvc.h \
+ /usr/include/qt5/QtCore/qatomic_integrity.h \
+ /usr/include/qt5/QtCore/qoldbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_vxworks.h \
+ /usr/include/qt5/QtCore/qatomic_power.h \
+ /usr/include/qt5/QtCore/qatomic_alpha.h \
+ /usr/include/qt5/QtCore/qatomic_armv7.h \
+ /usr/include/qt5/QtCore/qatomic_armv6.h \
+ /usr/include/qt5/QtCore/qatomic_armv5.h \
+ /usr/include/qt5/QtCore/qatomic_bfin.h \
+ /usr/include/qt5/QtCore/qatomic_ia64.h \
+ /usr/include/qt5/QtCore/qatomic_mips.h \
+ /usr/include/qt5/QtCore/qatomic_s390.h \
+ /usr/include/qt5/QtCore/qatomic_sh4a.h \
+ /usr/include/qt5/QtCore/qatomic_sparc.h \
+ /usr/include/qt5/QtCore/qatomic_gcc.h \
+ /usr/include/qt5/QtCore/qatomic_x86.h \
+ /usr/include/qt5/QtCore/qatomic_cxx11.h \
+ /usr/include/qt5/QtCore/qatomic_unix.h \
+ /usr/include/qt5/QtCore/qmutex.h \
+ /usr/include/qt5/QtCore/qlogging.h \
+ /usr/include/qt5/QtCore/qflags.h \
+ /usr/include/qt5/QtCore/qtypeinfo.h \
+ /usr/include/qt5/QtCore/qtypetraits.h \
+ /usr/include/qt5/QtCore/qsysinfo.h \
+ /usr/include/qt5/QtCore/qobjectdefs_impl.h \
+ /usr/include/qt5/QtCore/qstring.h \
+ /usr/include/qt5/QtCore/qchar.h \
+ /usr/include/qt5/QtCore/qbytearray.h \
+ /usr/include/qt5/QtCore/qrefcount.h \
+ /usr/include/qt5/QtCore/qarraydata.h \
+ /usr/include/qt5/QtCore/qstringbuilder.h \
+ /usr/include/qt5/QtCore/qlist.h \
+ /usr/include/qt5/QtCore/qalgorithms.h \
+ /usr/include/qt5/QtCore/qiterator.h \
+ /usr/include/qt5/QtCore/qcoreevent.h \
+ /usr/include/qt5/QtCore/qscopedpointer.h \
+ /usr/include/qt5/QtCore/qmetatype.h \
+ /usr/include/qt5/QtCore/qvarlengtharray.h \
+ /usr/include/qt5/QtCore/qcontainerfwd.h \
+ /usr/include/qt5/QtCore/qisenum.h \
+ /usr/include/qt5/QtCore/qobject_impl.h \
+ /usr/include/qt5/QtCore/qanimationgroup.h \
+ /usr/include/qt5/QtCore/qparallelanimationgroup.h \
+ /usr/include/qt5/QtCore/qpauseanimation.h \
+ /usr/include/qt5/QtCore/qpropertyanimation.h \
+ /usr/include/qt5/QtCore/qvariantanimation.h \
+ /usr/include/qt5/QtCore/qeasingcurve.h \
+ /usr/include/qt5/QtCore/qvector.h \
+ /usr/include/qt5/QtCore/qpoint.h \
+ /usr/include/qt5/QtCore/qvariant.h \
+ /usr/include/qt5/QtCore/qmap.h \
+ /usr/include/qt5/QtCore/qpair.h \
+ /usr/include/qt5/QtCore/qdebug.h \
+ /usr/include/qt5/QtCore/qhash.h \
+ /usr/include/qt5/QtCore/qtextstream.h \
+ /usr/include/qt5/QtCore/qiodevice.h \
+ /usr/include/qt5/QtCore/qlocale.h \
+ /usr/include/qt5/QtCore/qshareddata.h \
+ /usr/include/qt5/QtCore/qset.h \
+ /usr/include/qt5/QtCore/qcontiguouscache.h \
+ /usr/include/qt5/QtCore/qstringlist.h \
+ /usr/include/qt5/QtCore/qdatastream.h \
+ /usr/include/qt5/QtCore/qregexp.h \
+ /usr/include/qt5/QtCore/qstringmatcher.h \
+ /usr/include/qt5/QtCore/qsequentialanimationgroup.h \
+ /usr/include/qt5/QtCore/qtextcodec.h \
+ /usr/include/qt5/QtCore/qendian.h \
+ /usr/include/qt5/QtCore/qlibraryinfo.h \
+ /usr/include/qt5/QtCore/qdatetime.h \
+ /usr/include/qt5/QtCore/qsharedpointer.h \
+ /usr/include/qt5/QtCore/qsharedpointer_impl.h \
+ /usr/include/qt5/QtCore/qnumeric.h \
+ /usr/include/qt5/QtCore/qbuffer.h \
+ /usr/include/qt5/QtCore/qdir.h \
+ /usr/include/qt5/QtCore/qfileinfo.h \
+ /usr/include/qt5/QtCore/qfile.h \
+ /usr/include/qt5/QtCore/qfiledevice.h \
+ /usr/include/qt5/QtCore/qdiriterator.h \
+ /usr/include/qt5/QtCore/qfileselector.h \
+ /usr/include/qt5/QtCore/QObject \
+ /usr/include/qt5/QtCore/QStringList \
+ /usr/include/qt5/QtCore/qfilesystemwatcher.h \
+ /usr/include/qt5/QtCore/qlockfile.h \
+ /usr/include/qt5/QtCore/qloggingcategory.h \
+ /usr/include/qt5/QtCore/qprocess.h \
+ /usr/include/qt5/QtCore/qresource.h \
+ /usr/include/qt5/QtCore/qsavefile.h \
+ /usr/include/qt5/QtCore/qsettings.h \
+ /usr/include/qt5/QtCore/qstandardpaths.h \
+ /usr/include/qt5/QtCore/qtemporarydir.h \
+ /usr/include/qt5/QtCore/QScopedPointer \
+ /usr/include/qt5/QtCore/qtemporaryfile.h \
+ /usr/include/qt5/QtCore/qurl.h \
+ /usr/include/qt5/QtCore/qurlquery.h \
+ /usr/include/qt5/QtCore/qabstractitemmodel.h \
+ /usr/include/qt5/QtCore/qabstractproxymodel.h \
+ /usr/include/qt5/QtCore/qidentityproxymodel.h \
+ /usr/include/qt5/QtCore/qitemselectionmodel.h \
+ /usr/include/qt5/QtCore/qsortfilterproxymodel.h \
+ /usr/include/qt5/QtCore/qstringlistmodel.h \
+ /usr/include/qt5/QtCore/qjsonarray.h \
+ /usr/include/qt5/QtCore/qjsonvalue.h \
+ /usr/include/qt5/QtCore/qjsondocument.h \
+ /usr/include/qt5/QtCore/qjsonobject.h \
+ /usr/include/qt5/QtCore/qabstracteventdispatcher.h \
+ /usr/include/qt5/QtCore/qeventloop.h \
+ /usr/include/qt5/QtCore/qabstractnativeeventfilter.h \
+ /usr/include/qt5/QtCore/qbasictimer.h \
+ /usr/include/qt5/QtCore/qcoreapplication.h \
+ /usr/include/qt5/QtCore/qmath.h \
+ /usr/include/qt5/QtCore/qmetaobject.h \
+ /usr/include/qt5/QtCore/qmimedata.h \
+ /usr/include/qt5/QtCore/qobjectcleanuphandler.h \
+ /usr/include/qt5/QtCore/qpointer.h \
+ /usr/include/qt5/QtCore/qsharedmemory.h \
+ /usr/include/qt5/QtCore/qsignalmapper.h \
+ /usr/include/qt5/QtCore/qsocketnotifier.h \
+ /usr/include/qt5/QtCore/qsystemsemaphore.h \
+ /usr/include/qt5/QtCore/qtimer.h \
+ /usr/include/qt5/QtCore/qtranslator.h \
+ /usr/include/qt5/QtCore/qwineventnotifier.h \
+ /usr/include/qt5/QtCore/qmimedatabase.h \
+ /usr/include/qt5/QtCore/qmimetype.h \
+ /usr/include/qt5/QtCore/qfactoryinterface.h \
+ /usr/include/qt5/QtCore/qlibrary.h \
+ /usr/include/qt5/QtCore/qplugin.h \
+ /usr/include/qt5/QtCore/qpluginloader.h \
+ /usr/include/qt5/QtCore/quuid.h \
+ /usr/include/qt5/QtCore/qabstractstate.h \
+ /usr/include/qt5/QtCore/qabstracttransition.h \
+ /usr/include/qt5/QtCore/qeventtransition.h \
+ /usr/include/qt5/QtCore/qfinalstate.h \
+ /usr/include/qt5/QtCore/qhistorystate.h \
+ /usr/include/qt5/QtCore/qsignaltransition.h \
+ /usr/include/qt5/QtCore/qstate.h \
+ /usr/include/qt5/QtCore/qstatemachine.h \
+ /usr/include/qt5/QtCore/qexception.h \
+ /usr/include/qt5/QtCore/qfuture.h \
+ /usr/include/qt5/QtCore/qfutureinterface.h \
+ /usr/include/qt5/QtCore/qrunnable.h \
+ /usr/include/qt5/QtCore/qresultstore.h \
+ /usr/include/qt5/QtCore/qfuturesynchronizer.h \
+ /usr/include/qt5/QtCore/qfuturewatcher.h \
+ /usr/include/qt5/QtCore/qreadwritelock.h \
+ /usr/include/qt5/QtCore/qsemaphore.h \
+ /usr/include/qt5/QtCore/qthread.h \
+ /usr/include/qt5/QtCore/qthreadpool.h \
+ /usr/include/qt5/QtCore/qthreadstorage.h \
+ /usr/include/qt5/QtCore/qwaitcondition.h \
+ /usr/include/qt5/QtCore/qarraydataops.h \
+ /usr/include/qt5/QtCore/qarraydatapointer.h \
+ /usr/include/qt5/QtCore/qbitarray.h \
+ /usr/include/qt5/QtCore/qbytearraymatcher.h \
+ /usr/include/qt5/QtCore/qcache.h \
+ /usr/include/qt5/QtCore/qcollator.h \
+ /usr/include/qt5/QtCore/qcommandlineoption.h \
+ /usr/include/qt5/QtCore/qcommandlineparser.h \
+ /usr/include/qt5/QtCore/qcryptographichash.h \
+ /usr/include/qt5/QtCore/qelapsedtimer.h \
+ /usr/include/qt5/QtCore/qline.h \
+ /usr/include/qt5/QtCore/qlinkedlist.h \
+ /usr/include/qt5/QtCore/qmargins.h \
+ /usr/include/qt5/QtCore/qrect.h \
+ /usr/include/qt5/QtCore/qsize.h \
+ /usr/include/qt5/QtCore/qmessageauthenticationcode.h \
+ /usr/include/qt5/QtCore/qqueue.h \
+ /usr/include/qt5/QtCore/qregularexpression.h \
+ /usr/include/qt5/QtCore/qscopedvaluerollback.h \
+ /usr/include/qt5/QtCore/qstack.h \
+ /usr/include/qt5/QtCore/qtextboundaryfinder.h \
+ /usr/include/qt5/QtCore/qtimeline.h \
+ /usr/include/qt5/QtCore/qtimezone.h \
+ /usr/include/qt5/QtCore/qxmlstream.h \
+ /usr/include/qt5/QtCore/qtcoreversion.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/BlockArray.o src/BlockArray.cpp
+
+.obj/TerminalCharacterDecoder.o: src/TerminalCharacterDecoder.cpp src/TerminalCharacterDecoder.h \
+ src/Character.h \
+ /usr/include/qt5/QtCore/QHash \
+ /usr/include/qt5/QtCore/qhash.h \
+ /usr/include/qt5/QtCore/qchar.h \
+ /usr/include/qt5/QtCore/qglobal.h \
+ /usr/include/qt5/QtCore/qconfig.h \
+ /usr/include/qt5/QtCore/qfeatures.h \
+ /usr/include/qt5/QtCore/qsystemdetection.h \
+ /usr/include/qt5/QtCore/qprocessordetection.h \
+ /usr/include/qt5/QtCore/qcompilerdetection.h \
+ /usr/include/qt5/QtCore/qglobalstatic.h \
+ /usr/include/qt5/QtCore/qatomic.h \
+ /usr/include/qt5/QtCore/qbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_bootstrap.h \
+ /usr/include/qt5/QtCore/qgenericatomic.h \
+ /usr/include/qt5/QtCore/qatomic_msvc.h \
+ /usr/include/qt5/QtCore/qatomic_integrity.h \
+ /usr/include/qt5/QtCore/qoldbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_vxworks.h \
+ /usr/include/qt5/QtCore/qatomic_power.h \
+ /usr/include/qt5/QtCore/qatomic_alpha.h \
+ /usr/include/qt5/QtCore/qatomic_armv7.h \
+ /usr/include/qt5/QtCore/qatomic_armv6.h \
+ /usr/include/qt5/QtCore/qatomic_armv5.h \
+ /usr/include/qt5/QtCore/qatomic_bfin.h \
+ /usr/include/qt5/QtCore/qatomic_ia64.h \
+ /usr/include/qt5/QtCore/qatomic_mips.h \
+ /usr/include/qt5/QtCore/qatomic_s390.h \
+ /usr/include/qt5/QtCore/qatomic_sh4a.h \
+ /usr/include/qt5/QtCore/qatomic_sparc.h \
+ /usr/include/qt5/QtCore/qatomic_gcc.h \
+ /usr/include/qt5/QtCore/qatomic_x86.h \
+ /usr/include/qt5/QtCore/qatomic_cxx11.h \
+ /usr/include/qt5/QtCore/qatomic_unix.h \
+ /usr/include/qt5/QtCore/qmutex.h \
+ /usr/include/qt5/QtCore/qlogging.h \
+ /usr/include/qt5/QtCore/qflags.h \
+ /usr/include/qt5/QtCore/qtypeinfo.h \
+ /usr/include/qt5/QtCore/qtypetraits.h \
+ /usr/include/qt5/QtCore/qsysinfo.h \
+ /usr/include/qt5/QtCore/qiterator.h \
+ /usr/include/qt5/QtCore/qlist.h \
+ /usr/include/qt5/QtCore/qalgorithms.h \
+ /usr/include/qt5/QtCore/qrefcount.h \
+ /usr/include/qt5/QtCore/qpair.h \
+ src/CharacterColor.h \
+ /usr/include/qt5/QtGui/QColor \
+ /usr/include/qt5/QtGui/qcolor.h \
+ /usr/include/qt5/QtGui/qrgb.h \
+ /usr/include/qt5/QtCore/qnamespace.h \
+ /usr/include/qt5/QtCore/qstringlist.h \
+ /usr/include/qt5/QtCore/qdatastream.h \
+ /usr/include/qt5/QtCore/qscopedpointer.h \
+ /usr/include/qt5/QtCore/qiodevice.h \
+ /usr/include/qt5/QtCore/qobject.h \
+ /usr/include/qt5/QtCore/qobjectdefs.h \
+ /usr/include/qt5/QtCore/qobjectdefs_impl.h \
+ /usr/include/qt5/QtCore/qstring.h \
+ /usr/include/qt5/QtCore/qbytearray.h \
+ /usr/include/qt5/QtCore/qarraydata.h \
+ /usr/include/qt5/QtCore/qstringbuilder.h \
+ /usr/include/qt5/QtCore/qcoreevent.h \
+ /usr/include/qt5/QtCore/qmetatype.h \
+ /usr/include/qt5/QtCore/qvarlengtharray.h \
+ /usr/include/qt5/QtCore/qcontainerfwd.h \
+ /usr/include/qt5/QtCore/qisenum.h \
+ /usr/include/qt5/QtCore/qobject_impl.h \
+ /usr/include/qt5/QtCore/qregexp.h \
+ /usr/include/qt5/QtCore/qstringmatcher.h \
+ /usr/include/qt5/QtCore/QList \
+ /usr/include/qt5/QtCore/QTextStream \
+ /usr/include/qt5/QtCore/qtextstream.h \
+ /usr/include/qt5/QtCore/qlocale.h \
+ /usr/include/qt5/QtCore/qvariant.h \
+ /usr/include/qt5/QtCore/qmap.h \
+ /usr/include/qt5/QtCore/qdebug.h \
+ /usr/include/qt5/QtCore/qvector.h \
+ /usr/include/qt5/QtCore/qpoint.h \
+ /usr/include/qt5/QtCore/qset.h \
+ /usr/include/qt5/QtCore/qcontiguouscache.h \
+ /usr/include/qt5/QtCore/qshareddata.h \
+ src/konsole_wcwidth.h \
+ /usr/include/qt5/QtCore/QString
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/TerminalCharacterDecoder.o src/TerminalCharacterDecoder.cpp
+
+.obj/konsole_wcwidth.o: src/konsole_wcwidth.cpp src/konsole_wcwidth.h \
+ /usr/include/qt5/QtCore/QString \
+ /usr/include/qt5/QtCore/qstring.h \
+ /usr/include/qt5/QtCore/qchar.h \
+ /usr/include/qt5/QtCore/qglobal.h \
+ /usr/include/qt5/QtCore/qconfig.h \
+ /usr/include/qt5/QtCore/qfeatures.h \
+ /usr/include/qt5/QtCore/qsystemdetection.h \
+ /usr/include/qt5/QtCore/qprocessordetection.h \
+ /usr/include/qt5/QtCore/qcompilerdetection.h \
+ /usr/include/qt5/QtCore/qglobalstatic.h \
+ /usr/include/qt5/QtCore/qatomic.h \
+ /usr/include/qt5/QtCore/qbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_bootstrap.h \
+ /usr/include/qt5/QtCore/qgenericatomic.h \
+ /usr/include/qt5/QtCore/qatomic_msvc.h \
+ /usr/include/qt5/QtCore/qatomic_integrity.h \
+ /usr/include/qt5/QtCore/qoldbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_vxworks.h \
+ /usr/include/qt5/QtCore/qatomic_power.h \
+ /usr/include/qt5/QtCore/qatomic_alpha.h \
+ /usr/include/qt5/QtCore/qatomic_armv7.h \
+ /usr/include/qt5/QtCore/qatomic_armv6.h \
+ /usr/include/qt5/QtCore/qatomic_armv5.h \
+ /usr/include/qt5/QtCore/qatomic_bfin.h \
+ /usr/include/qt5/QtCore/qatomic_ia64.h \
+ /usr/include/qt5/QtCore/qatomic_mips.h \
+ /usr/include/qt5/QtCore/qatomic_s390.h \
+ /usr/include/qt5/QtCore/qatomic_sh4a.h \
+ /usr/include/qt5/QtCore/qatomic_sparc.h \
+ /usr/include/qt5/QtCore/qatomic_gcc.h \
+ /usr/include/qt5/QtCore/qatomic_x86.h \
+ /usr/include/qt5/QtCore/qatomic_cxx11.h \
+ /usr/include/qt5/QtCore/qatomic_unix.h \
+ /usr/include/qt5/QtCore/qmutex.h \
+ /usr/include/qt5/QtCore/qlogging.h \
+ /usr/include/qt5/QtCore/qflags.h \
+ /usr/include/qt5/QtCore/qtypeinfo.h \
+ /usr/include/qt5/QtCore/qtypetraits.h \
+ /usr/include/qt5/QtCore/qsysinfo.h \
+ /usr/include/qt5/QtCore/qbytearray.h \
+ /usr/include/qt5/QtCore/qrefcount.h \
+ /usr/include/qt5/QtCore/qnamespace.h \
+ /usr/include/qt5/QtCore/qarraydata.h \
+ /usr/include/qt5/QtCore/qstringbuilder.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/konsole_wcwidth.o src/konsole_wcwidth.cpp
+
+.obj/ScreenWindow.o: src/ScreenWindow.cpp src/ScreenWindow.h \
+ /usr/include/qt5/QtCore/QObject \
+ /usr/include/qt5/QtCore/qobject.h \
+ /usr/include/qt5/QtCore/qobjectdefs.h \
+ /usr/include/qt5/QtCore/qnamespace.h \
+ /usr/include/qt5/QtCore/qglobal.h \
+ /usr/include/qt5/QtCore/qconfig.h \
+ /usr/include/qt5/QtCore/qfeatures.h \
+ /usr/include/qt5/QtCore/qsystemdetection.h \
+ /usr/include/qt5/QtCore/qprocessordetection.h \
+ /usr/include/qt5/QtCore/qcompilerdetection.h \
+ /usr/include/qt5/QtCore/qglobalstatic.h \
+ /usr/include/qt5/QtCore/qatomic.h \
+ /usr/include/qt5/QtCore/qbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_bootstrap.h \
+ /usr/include/qt5/QtCore/qgenericatomic.h \
+ /usr/include/qt5/QtCore/qatomic_msvc.h \
+ /usr/include/qt5/QtCore/qatomic_integrity.h \
+ /usr/include/qt5/QtCore/qoldbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_vxworks.h \
+ /usr/include/qt5/QtCore/qatomic_power.h \
+ /usr/include/qt5/QtCore/qatomic_alpha.h \
+ /usr/include/qt5/QtCore/qatomic_armv7.h \
+ /usr/include/qt5/QtCore/qatomic_armv6.h \
+ /usr/include/qt5/QtCore/qatomic_armv5.h \
+ /usr/include/qt5/QtCore/qatomic_bfin.h \
+ /usr/include/qt5/QtCore/qatomic_ia64.h \
+ /usr/include/qt5/QtCore/qatomic_mips.h \
+ /usr/include/qt5/QtCore/qatomic_s390.h \
+ /usr/include/qt5/QtCore/qatomic_sh4a.h \
+ /usr/include/qt5/QtCore/qatomic_sparc.h \
+ /usr/include/qt5/QtCore/qatomic_gcc.h \
+ /usr/include/qt5/QtCore/qatomic_x86.h \
+ /usr/include/qt5/QtCore/qatomic_cxx11.h \
+ /usr/include/qt5/QtCore/qatomic_unix.h \
+ /usr/include/qt5/QtCore/qmutex.h \
+ /usr/include/qt5/QtCore/qlogging.h \
+ /usr/include/qt5/QtCore/qflags.h \
+ /usr/include/qt5/QtCore/qtypeinfo.h \
+ /usr/include/qt5/QtCore/qtypetraits.h \
+ /usr/include/qt5/QtCore/qsysinfo.h \
+ /usr/include/qt5/QtCore/qobjectdefs_impl.h \
+ /usr/include/qt5/QtCore/qstring.h \
+ /usr/include/qt5/QtCore/qchar.h \
+ /usr/include/qt5/QtCore/qbytearray.h \
+ /usr/include/qt5/QtCore/qrefcount.h \
+ /usr/include/qt5/QtCore/qarraydata.h \
+ /usr/include/qt5/QtCore/qstringbuilder.h \
+ /usr/include/qt5/QtCore/qlist.h \
+ /usr/include/qt5/QtCore/qalgorithms.h \
+ /usr/include/qt5/QtCore/qiterator.h \
+ /usr/include/qt5/QtCore/qcoreevent.h \
+ /usr/include/qt5/QtCore/qscopedpointer.h \
+ /usr/include/qt5/QtCore/qmetatype.h \
+ /usr/include/qt5/QtCore/qvarlengtharray.h \
+ /usr/include/qt5/QtCore/qcontainerfwd.h \
+ /usr/include/qt5/QtCore/qisenum.h \
+ /usr/include/qt5/QtCore/qobject_impl.h \
+ /usr/include/qt5/QtCore/QPoint \
+ /usr/include/qt5/QtCore/qpoint.h \
+ /usr/include/qt5/QtCore/QRect \
+ /usr/include/qt5/QtCore/qrect.h \
+ /usr/include/qt5/QtCore/qsize.h \
+ src/Character.h \
+ /usr/include/qt5/QtCore/QHash \
+ /usr/include/qt5/QtCore/qhash.h \
+ /usr/include/qt5/QtCore/qpair.h \
+ src/CharacterColor.h \
+ /usr/include/qt5/QtGui/QColor \
+ /usr/include/qt5/QtGui/qcolor.h \
+ /usr/include/qt5/QtGui/qrgb.h \
+ /usr/include/qt5/QtCore/qstringlist.h \
+ /usr/include/qt5/QtCore/qdatastream.h \
+ /usr/include/qt5/QtCore/qiodevice.h \
+ /usr/include/qt5/QtCore/qregexp.h \
+ /usr/include/qt5/QtCore/qstringmatcher.h \
+ /usr/include/qt5/QtCore/QtDebug \
+ /usr/include/qt5/QtCore/qdebug.h \
+ /usr/include/qt5/QtCore/qmap.h \
+ /usr/include/qt5/QtCore/qtextstream.h \
+ /usr/include/qt5/QtCore/qlocale.h \
+ /usr/include/qt5/QtCore/qvariant.h \
+ /usr/include/qt5/QtCore/qshareddata.h \
+ /usr/include/qt5/QtCore/qvector.h \
+ /usr/include/qt5/QtCore/qset.h \
+ /usr/include/qt5/QtCore/qcontiguouscache.h \
+ src/Screen.h \
+ /usr/include/qt5/QtCore/QTextStream \
+ /usr/include/qt5/QtCore/QVarLengthArray \
+ src/History.h \
+ /usr/include/qt5/QtCore/QBitRef \
+ /usr/include/qt5/QtCore/qbitarray.h \
+ /usr/include/qt5/QtCore/QVector \
+ /usr/include/qt5/QtCore/QTemporaryFile \
+ /usr/include/qt5/QtCore/qtemporaryfile.h \
+ /usr/include/qt5/QtCore/qfile.h \
+ /usr/include/qt5/QtCore/qfiledevice.h \
+ src/BlockArray.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/ScreenWindow.o src/ScreenWindow.cpp
+
+.obj/Filter.o: src/Filter.cpp src/Filter.h \
+ /usr/include/qt5/QtWidgets/QAction \
+ /usr/include/qt5/QtWidgets/qaction.h \
+ /usr/include/qt5/QtGui/qkeysequence.h \
+ /usr/include/qt5/QtCore/qnamespace.h \
+ /usr/include/qt5/QtCore/qglobal.h \
+ /usr/include/qt5/QtCore/qconfig.h \
+ /usr/include/qt5/QtCore/qfeatures.h \
+ /usr/include/qt5/QtCore/qsystemdetection.h \
+ /usr/include/qt5/QtCore/qprocessordetection.h \
+ /usr/include/qt5/QtCore/qcompilerdetection.h \
+ /usr/include/qt5/QtCore/qglobalstatic.h \
+ /usr/include/qt5/QtCore/qatomic.h \
+ /usr/include/qt5/QtCore/qbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_bootstrap.h \
+ /usr/include/qt5/QtCore/qgenericatomic.h \
+ /usr/include/qt5/QtCore/qatomic_msvc.h \
+ /usr/include/qt5/QtCore/qatomic_integrity.h \
+ /usr/include/qt5/QtCore/qoldbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_vxworks.h \
+ /usr/include/qt5/QtCore/qatomic_power.h \
+ /usr/include/qt5/QtCore/qatomic_alpha.h \
+ /usr/include/qt5/QtCore/qatomic_armv7.h \
+ /usr/include/qt5/QtCore/qatomic_armv6.h \
+ /usr/include/qt5/QtCore/qatomic_armv5.h \
+ /usr/include/qt5/QtCore/qatomic_bfin.h \
+ /usr/include/qt5/QtCore/qatomic_ia64.h \
+ /usr/include/qt5/QtCore/qatomic_mips.h \
+ /usr/include/qt5/QtCore/qatomic_s390.h \
+ /usr/include/qt5/QtCore/qatomic_sh4a.h \
+ /usr/include/qt5/QtCore/qatomic_sparc.h \
+ /usr/include/qt5/QtCore/qatomic_gcc.h \
+ /usr/include/qt5/QtCore/qatomic_x86.h \
+ /usr/include/qt5/QtCore/qatomic_cxx11.h \
+ /usr/include/qt5/QtCore/qatomic_unix.h \
+ /usr/include/qt5/QtCore/qmutex.h \
+ /usr/include/qt5/QtCore/qlogging.h \
+ /usr/include/qt5/QtCore/qflags.h \
+ /usr/include/qt5/QtCore/qtypeinfo.h \
+ /usr/include/qt5/QtCore/qtypetraits.h \
+ /usr/include/qt5/QtCore/qsysinfo.h \
+ /usr/include/qt5/QtCore/qstring.h \
+ /usr/include/qt5/QtCore/qchar.h \
+ /usr/include/qt5/QtCore/qbytearray.h \
+ /usr/include/qt5/QtCore/qrefcount.h \
+ /usr/include/qt5/QtCore/qarraydata.h \
+ /usr/include/qt5/QtCore/qstringbuilder.h \
+ /usr/include/qt5/QtCore/qobjectdefs.h \
+ /usr/include/qt5/QtCore/qobjectdefs_impl.h \
+ /usr/include/qt5/QtWidgets/qwidget.h \
+ /usr/include/qt5/QtGui/qwindowdefs.h \
+ /usr/include/qt5/QtGui/qwindowdefs_win.h \
+ /usr/include/qt5/QtCore/qobject.h \
+ /usr/include/qt5/QtCore/qlist.h \
+ /usr/include/qt5/QtCore/qalgorithms.h \
+ /usr/include/qt5/QtCore/qiterator.h \
+ /usr/include/qt5/QtCore/qcoreevent.h \
+ /usr/include/qt5/QtCore/qscopedpointer.h \
+ /usr/include/qt5/QtCore/qmetatype.h \
+ /usr/include/qt5/QtCore/qvarlengtharray.h \
+ /usr/include/qt5/QtCore/qcontainerfwd.h \
+ /usr/include/qt5/QtCore/qisenum.h \
+ /usr/include/qt5/QtCore/qobject_impl.h \
+ /usr/include/qt5/QtCore/qmargins.h \
+ /usr/include/qt5/QtCore/qrect.h \
+ /usr/include/qt5/QtCore/qsize.h \
+ /usr/include/qt5/QtCore/qpoint.h \
+ /usr/include/qt5/QtGui/qpaintdevice.h \
+ /usr/include/qt5/QtGui/qpalette.h \
+ /usr/include/qt5/QtGui/qcolor.h \
+ /usr/include/qt5/QtGui/qrgb.h \
+ /usr/include/qt5/QtCore/qstringlist.h \
+ /usr/include/qt5/QtCore/qdatastream.h \
+ /usr/include/qt5/QtCore/qiodevice.h \
+ /usr/include/qt5/QtCore/qpair.h \
+ /usr/include/qt5/QtCore/qregexp.h \
+ /usr/include/qt5/QtCore/qstringmatcher.h \
+ /usr/include/qt5/QtGui/qbrush.h \
+ /usr/include/qt5/QtCore/qvector.h \
+ /usr/include/qt5/QtGui/qmatrix.h \
+ /usr/include/qt5/QtGui/qpolygon.h \
+ /usr/include/qt5/QtGui/qregion.h \
+ /usr/include/qt5/QtCore/qline.h \
+ /usr/include/qt5/QtGui/qtransform.h \
+ /usr/include/qt5/QtGui/qpainterpath.h \
+ /usr/include/qt5/QtGui/qimage.h \
+ /usr/include/qt5/QtGui/qpixmap.h \
+ /usr/include/qt5/QtCore/qsharedpointer.h \
+ /usr/include/qt5/QtCore/qshareddata.h \
+ /usr/include/qt5/QtCore/qsharedpointer_impl.h \
+ /usr/include/qt5/QtCore/qhash.h \
+ /usr/include/qt5/QtGui/qfont.h \
+ /usr/include/qt5/QtGui/qfontmetrics.h \
+ /usr/include/qt5/QtGui/qfontinfo.h \
+ /usr/include/qt5/QtWidgets/qsizepolicy.h \
+ /usr/include/qt5/QtGui/qcursor.h \
+ /usr/include/qt5/QtGui/qevent.h \
+ /usr/include/qt5/QtCore/qvariant.h \
+ /usr/include/qt5/QtCore/qmap.h \
+ /usr/include/qt5/QtCore/qdebug.h \
+ /usr/include/qt5/QtCore/qtextstream.h \
+ /usr/include/qt5/QtCore/qlocale.h \
+ /usr/include/qt5/QtCore/qset.h \
+ /usr/include/qt5/QtCore/qcontiguouscache.h \
+ /usr/include/qt5/QtCore/qurl.h \
+ /usr/include/qt5/QtCore/qurlquery.h \
+ /usr/include/qt5/QtCore/qfile.h \
+ /usr/include/qt5/QtCore/qfiledevice.h \
+ /usr/include/qt5/QtGui/qvector2d.h \
+ /usr/include/qt5/QtGui/qtouchdevice.h \
+ /usr/include/qt5/QtGui/qicon.h \
+ /usr/include/qt5/QtWidgets/qactiongroup.h \
+ /usr/include/qt5/QtCore/QList \
+ /usr/include/qt5/QtCore/QObject \
+ /usr/include/qt5/QtCore/QStringList \
+ /usr/include/qt5/QtCore/QHash \
+ /usr/include/qt5/QtCore/QRegExp \
+ src/Character.h \
+ src/CharacterColor.h \
+ /usr/include/qt5/QtGui/QColor \
+ /usr/include/qt5/QtWidgets/QApplication \
+ /usr/include/qt5/QtWidgets/qapplication.h \
+ /usr/include/qt5/QtCore/qcoreapplication.h \
+ /usr/include/qt5/QtCore/qeventloop.h \
+ /usr/include/qt5/QtWidgets/qdesktopwidget.h \
+ /usr/include/qt5/QtGui/qguiapplication.h \
+ /usr/include/qt5/QtGui/qinputmethod.h \
+ /usr/include/qt5/QtGui/QClipboard \
+ /usr/include/qt5/QtGui/qclipboard.h \
+ /usr/include/qt5/QtCore/QString \
+ /usr/include/qt5/QtCore/QTextStream \
+ /usr/include/qt5/QtCore/QSharedData \
+ /usr/include/qt5/QtCore/QFile \
+ /usr/include/qt5/QtGui/QDesktopServices \
+ /usr/include/qt5/QtGui/qdesktopservices.h \
+ /usr/include/qt5/QtCore/qstandardpaths.h \
+ /usr/include/qt5/QtCore/QUrl \
+ src/TerminalCharacterDecoder.h \
+ src/konsole_wcwidth.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/Filter.o src/Filter.cpp
+
+.obj/ColorScheme.o: src/ColorScheme.cpp src/ColorScheme.h \
+ /usr/include/qt5/QtCore/QHash \
+ /usr/include/qt5/QtCore/qhash.h \
+ /usr/include/qt5/QtCore/qchar.h \
+ /usr/include/qt5/QtCore/qglobal.h \
+ /usr/include/qt5/QtCore/qconfig.h \
+ /usr/include/qt5/QtCore/qfeatures.h \
+ /usr/include/qt5/QtCore/qsystemdetection.h \
+ /usr/include/qt5/QtCore/qprocessordetection.h \
+ /usr/include/qt5/QtCore/qcompilerdetection.h \
+ /usr/include/qt5/QtCore/qglobalstatic.h \
+ /usr/include/qt5/QtCore/qatomic.h \
+ /usr/include/qt5/QtCore/qbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_bootstrap.h \
+ /usr/include/qt5/QtCore/qgenericatomic.h \
+ /usr/include/qt5/QtCore/qatomic_msvc.h \
+ /usr/include/qt5/QtCore/qatomic_integrity.h \
+ /usr/include/qt5/QtCore/qoldbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_vxworks.h \
+ /usr/include/qt5/QtCore/qatomic_power.h \
+ /usr/include/qt5/QtCore/qatomic_alpha.h \
+ /usr/include/qt5/QtCore/qatomic_armv7.h \
+ /usr/include/qt5/QtCore/qatomic_armv6.h \
+ /usr/include/qt5/QtCore/qatomic_armv5.h \
+ /usr/include/qt5/QtCore/qatomic_bfin.h \
+ /usr/include/qt5/QtCore/qatomic_ia64.h \
+ /usr/include/qt5/QtCore/qatomic_mips.h \
+ /usr/include/qt5/QtCore/qatomic_s390.h \
+ /usr/include/qt5/QtCore/qatomic_sh4a.h \
+ /usr/include/qt5/QtCore/qatomic_sparc.h \
+ /usr/include/qt5/QtCore/qatomic_gcc.h \
+ /usr/include/qt5/QtCore/qatomic_x86.h \
+ /usr/include/qt5/QtCore/qatomic_cxx11.h \
+ /usr/include/qt5/QtCore/qatomic_unix.h \
+ /usr/include/qt5/QtCore/qmutex.h \
+ /usr/include/qt5/QtCore/qlogging.h \
+ /usr/include/qt5/QtCore/qflags.h \
+ /usr/include/qt5/QtCore/qtypeinfo.h \
+ /usr/include/qt5/QtCore/qtypetraits.h \
+ /usr/include/qt5/QtCore/qsysinfo.h \
+ /usr/include/qt5/QtCore/qiterator.h \
+ /usr/include/qt5/QtCore/qlist.h \
+ /usr/include/qt5/QtCore/qalgorithms.h \
+ /usr/include/qt5/QtCore/qrefcount.h \
+ /usr/include/qt5/QtCore/qpair.h \
+ /usr/include/qt5/QtCore/QList \
+ /usr/include/qt5/QtCore/QMetaType \
+ /usr/include/qt5/QtCore/qmetatype.h \
+ /usr/include/qt5/QtCore/qbytearray.h \
+ /usr/include/qt5/QtCore/qnamespace.h \
+ /usr/include/qt5/QtCore/qarraydata.h \
+ /usr/include/qt5/QtCore/qstring.h \
+ /usr/include/qt5/QtCore/qstringbuilder.h \
+ /usr/include/qt5/QtCore/qvarlengtharray.h \
+ /usr/include/qt5/QtCore/qcontainerfwd.h \
+ /usr/include/qt5/QtCore/qisenum.h \
+ /usr/include/qt5/QtCore/qobjectdefs.h \
+ /usr/include/qt5/QtCore/qobjectdefs_impl.h \
+ /usr/include/qt5/QtCore/QIODevice \
+ /usr/include/qt5/QtCore/qiodevice.h \
+ /usr/include/qt5/QtCore/qobject.h \
+ /usr/include/qt5/QtCore/qcoreevent.h \
+ /usr/include/qt5/QtCore/qscopedpointer.h \
+ /usr/include/qt5/QtCore/qobject_impl.h \
+ /usr/include/qt5/QtCore/QSet \
+ /usr/include/qt5/QtCore/qset.h \
+ /usr/include/qt5/QtCore/QSettings \
+ /usr/include/qt5/QtCore/qsettings.h \
+ /usr/include/qt5/QtCore/qvariant.h \
+ /usr/include/qt5/QtCore/qmap.h \
+ /usr/include/qt5/QtCore/qdebug.h \
+ /usr/include/qt5/QtCore/qtextstream.h \
+ /usr/include/qt5/QtCore/qlocale.h \
+ /usr/include/qt5/QtCore/qshareddata.h \
+ /usr/include/qt5/QtCore/qvector.h \
+ /usr/include/qt5/QtCore/qpoint.h \
+ /usr/include/qt5/QtCore/qcontiguouscache.h \
+ /usr/include/qt5/QtCore/qstringlist.h \
+ /usr/include/qt5/QtCore/qdatastream.h \
+ /usr/include/qt5/QtCore/qregexp.h \
+ /usr/include/qt5/QtCore/qstringmatcher.h \
+ src/CharacterColor.h \
+ /usr/include/qt5/QtGui/QColor \
+ /usr/include/qt5/QtGui/qcolor.h \
+ /usr/include/qt5/QtGui/qrgb.h \
+ src/tools.h \
+ /usr/include/qt5/QtCore/QString \
+ /usr/include/qt5/QtGui/QBrush \
+ /usr/include/qt5/QtGui/qbrush.h \
+ /usr/include/qt5/QtGui/qmatrix.h \
+ /usr/include/qt5/QtGui/qpolygon.h \
+ /usr/include/qt5/QtCore/qrect.h \
+ /usr/include/qt5/QtCore/qsize.h \
+ /usr/include/qt5/QtGui/qregion.h \
+ /usr/include/qt5/QtGui/qwindowdefs.h \
+ /usr/include/qt5/QtGui/qwindowdefs_win.h \
+ /usr/include/qt5/QtCore/qline.h \
+ /usr/include/qt5/QtGui/qtransform.h \
+ /usr/include/qt5/QtGui/qpainterpath.h \
+ /usr/include/qt5/QtGui/qimage.h \
+ /usr/include/qt5/QtGui/qpaintdevice.h \
+ /usr/include/qt5/QtGui/qpixmap.h \
+ /usr/include/qt5/QtCore/qsharedpointer.h \
+ /usr/include/qt5/QtCore/qsharedpointer_impl.h \
+ /usr/include/qt5/QtCore/QFile \
+ /usr/include/qt5/QtCore/qfile.h \
+ /usr/include/qt5/QtCore/qfiledevice.h \
+ /usr/include/qt5/QtCore/QFileInfo \
+ /usr/include/qt5/QtCore/qfileinfo.h \
+ /usr/include/qt5/QtCore/QtDebug \
+ /usr/include/qt5/QtCore/QDir \
+ /usr/include/qt5/QtCore/qdir.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/ColorScheme.o src/ColorScheme.cpp
+
+.obj/TerminalDisplay.o: src/TerminalDisplay.cpp src/TerminalDisplay.h \
+ /usr/include/qt5/QtGui/QColor \
+ /usr/include/qt5/QtGui/qcolor.h \
+ /usr/include/qt5/QtGui/qrgb.h \
+ /usr/include/qt5/QtCore/qglobal.h \
+ /usr/include/qt5/QtCore/qconfig.h \
+ /usr/include/qt5/QtCore/qfeatures.h \
+ /usr/include/qt5/QtCore/qsystemdetection.h \
+ /usr/include/qt5/QtCore/qprocessordetection.h \
+ /usr/include/qt5/QtCore/qcompilerdetection.h \
+ /usr/include/qt5/QtCore/qglobalstatic.h \
+ /usr/include/qt5/QtCore/qatomic.h \
+ /usr/include/qt5/QtCore/qbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_bootstrap.h \
+ /usr/include/qt5/QtCore/qgenericatomic.h \
+ /usr/include/qt5/QtCore/qatomic_msvc.h \
+ /usr/include/qt5/QtCore/qatomic_integrity.h \
+ /usr/include/qt5/QtCore/qoldbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_vxworks.h \
+ /usr/include/qt5/QtCore/qatomic_power.h \
+ /usr/include/qt5/QtCore/qatomic_alpha.h \
+ /usr/include/qt5/QtCore/qatomic_armv7.h \
+ /usr/include/qt5/QtCore/qatomic_armv6.h \
+ /usr/include/qt5/QtCore/qatomic_armv5.h \
+ /usr/include/qt5/QtCore/qatomic_bfin.h \
+ /usr/include/qt5/QtCore/qatomic_ia64.h \
+ /usr/include/qt5/QtCore/qatomic_mips.h \
+ /usr/include/qt5/QtCore/qatomic_s390.h \
+ /usr/include/qt5/QtCore/qatomic_sh4a.h \
+ /usr/include/qt5/QtCore/qatomic_sparc.h \
+ /usr/include/qt5/QtCore/qatomic_gcc.h \
+ /usr/include/qt5/QtCore/qatomic_x86.h \
+ /usr/include/qt5/QtCore/qatomic_cxx11.h \
+ /usr/include/qt5/QtCore/qatomic_unix.h \
+ /usr/include/qt5/QtCore/qmutex.h \
+ /usr/include/qt5/QtCore/qlogging.h \
+ /usr/include/qt5/QtCore/qflags.h \
+ /usr/include/qt5/QtCore/qtypeinfo.h \
+ /usr/include/qt5/QtCore/qtypetraits.h \
+ /usr/include/qt5/QtCore/qsysinfo.h \
+ /usr/include/qt5/QtCore/qnamespace.h \
+ /usr/include/qt5/QtCore/qstringlist.h \
+ /usr/include/qt5/QtCore/qalgorithms.h \
+ /usr/include/qt5/QtCore/qdatastream.h \
+ /usr/include/qt5/QtCore/qscopedpointer.h \
+ /usr/include/qt5/QtCore/qiodevice.h \
+ /usr/include/qt5/QtCore/qobject.h \
+ /usr/include/qt5/QtCore/qobjectdefs.h \
+ /usr/include/qt5/QtCore/qobjectdefs_impl.h \
+ /usr/include/qt5/QtCore/qstring.h \
+ /usr/include/qt5/QtCore/qchar.h \
+ /usr/include/qt5/QtCore/qbytearray.h \
+ /usr/include/qt5/QtCore/qrefcount.h \
+ /usr/include/qt5/QtCore/qarraydata.h \
+ /usr/include/qt5/QtCore/qstringbuilder.h \
+ /usr/include/qt5/QtCore/qlist.h \
+ /usr/include/qt5/QtCore/qiterator.h \
+ /usr/include/qt5/QtCore/qcoreevent.h \
+ /usr/include/qt5/QtCore/qmetatype.h \
+ /usr/include/qt5/QtCore/qvarlengtharray.h \
+ /usr/include/qt5/QtCore/qcontainerfwd.h \
+ /usr/include/qt5/QtCore/qisenum.h \
+ /usr/include/qt5/QtCore/qobject_impl.h \
+ /usr/include/qt5/QtCore/qpair.h \
+ /usr/include/qt5/QtCore/qregexp.h \
+ /usr/include/qt5/QtCore/qstringmatcher.h \
+ /usr/include/qt5/QtCore/QPointer \
+ /usr/include/qt5/QtCore/qpointer.h \
+ /usr/include/qt5/QtCore/qsharedpointer.h \
+ /usr/include/qt5/QtCore/qshareddata.h \
+ /usr/include/qt5/QtCore/qsharedpointer_impl.h \
+ /usr/include/qt5/QtCore/qhash.h \
+ src/Filter.h \
+ /usr/include/qt5/QtWidgets/QAction \
+ /usr/include/qt5/QtWidgets/qaction.h \
+ /usr/include/qt5/QtGui/qkeysequence.h \
+ /usr/include/qt5/QtWidgets/qwidget.h \
+ /usr/include/qt5/QtGui/qwindowdefs.h \
+ /usr/include/qt5/QtGui/qwindowdefs_win.h \
+ /usr/include/qt5/QtCore/qmargins.h \
+ /usr/include/qt5/QtCore/qrect.h \
+ /usr/include/qt5/QtCore/qsize.h \
+ /usr/include/qt5/QtCore/qpoint.h \
+ /usr/include/qt5/QtGui/qpaintdevice.h \
+ /usr/include/qt5/QtGui/qpalette.h \
+ /usr/include/qt5/QtGui/qbrush.h \
+ /usr/include/qt5/QtCore/qvector.h \
+ /usr/include/qt5/QtGui/qmatrix.h \
+ /usr/include/qt5/QtGui/qpolygon.h \
+ /usr/include/qt5/QtGui/qregion.h \
+ /usr/include/qt5/QtCore/qline.h \
+ /usr/include/qt5/QtGui/qtransform.h \
+ /usr/include/qt5/QtGui/qpainterpath.h \
+ /usr/include/qt5/QtGui/qimage.h \
+ /usr/include/qt5/QtGui/qpixmap.h \
+ /usr/include/qt5/QtGui/qfont.h \
+ /usr/include/qt5/QtGui/qfontmetrics.h \
+ /usr/include/qt5/QtGui/qfontinfo.h \
+ /usr/include/qt5/QtWidgets/qsizepolicy.h \
+ /usr/include/qt5/QtGui/qcursor.h \
+ /usr/include/qt5/QtGui/qevent.h \
+ /usr/include/qt5/QtCore/qvariant.h \
+ /usr/include/qt5/QtCore/qmap.h \
+ /usr/include/qt5/QtCore/qdebug.h \
+ /usr/include/qt5/QtCore/qtextstream.h \
+ /usr/include/qt5/QtCore/qlocale.h \
+ /usr/include/qt5/QtCore/qset.h \
+ /usr/include/qt5/QtCore/qcontiguouscache.h \
+ /usr/include/qt5/QtCore/qurl.h \
+ /usr/include/qt5/QtCore/qurlquery.h \
+ /usr/include/qt5/QtCore/qfile.h \
+ /usr/include/qt5/QtCore/qfiledevice.h \
+ /usr/include/qt5/QtGui/qvector2d.h \
+ /usr/include/qt5/QtGui/qtouchdevice.h \
+ /usr/include/qt5/QtGui/qicon.h \
+ /usr/include/qt5/QtWidgets/qactiongroup.h \
+ /usr/include/qt5/QtCore/QList \
+ /usr/include/qt5/QtCore/QObject \
+ /usr/include/qt5/QtCore/QStringList \
+ /usr/include/qt5/QtCore/QHash \
+ /usr/include/qt5/QtCore/QRegExp \
+ src/Character.h \
+ src/CharacterColor.h \
+ src/ksession.h \
+ src/Session.h \
+ /usr/include/qt5/QtCore/QTimer \
+ /usr/include/qt5/QtCore/qtimer.h \
+ /usr/include/qt5/QtCore/qbasictimer.h \
+ /usr/include/qt5/QtGui/QWindow \
+ /usr/include/qt5/QtGui/qwindow.h \
+ /usr/include/qt5/QtCore/QEvent \
+ /usr/include/qt5/QtCore/QMargins \
+ /usr/include/qt5/QtCore/QRect \
+ /usr/include/qt5/QtGui/qsurface.h \
+ /usr/include/qt5/QtGui/qsurfaceformat.h \
+ src/History.h \
+ /usr/include/qt5/QtCore/QBitRef \
+ /usr/include/qt5/QtCore/qbitarray.h \
+ /usr/include/qt5/QtCore/QVector \
+ /usr/include/qt5/QtCore/QTemporaryFile \
+ /usr/include/qt5/QtCore/qtemporaryfile.h \
+ src/BlockArray.h \
+ /usr/include/qt5/QtQuick/QQuickItem \
+ /usr/include/qt5/QtQuick/qquickitem.h \
+ /usr/include/qt5/QtQuick/qtquickglobal.h \
+ /usr/include/qt5/QtQml/qqml.h \
+ /usr/include/qt5/QtQml/qqmlprivate.h \
+ /usr/include/qt5/QtQml/qtqmlglobal.h \
+ /usr/include/qt5/QtQml/qqmlparserstatus.h \
+ /usr/include/qt5/QtQml/qqmlpropertyvaluesource.h \
+ /usr/include/qt5/QtQml/qqmllist.h \
+ /usr/include/qt5/QtCore/qmetaobject.h \
+ /usr/include/qt5/QtQml/qqmlcomponent.h \
+ /usr/include/qt5/QtQml/qqmlerror.h \
+ /usr/include/qt5/QtQml/qjsvalue.h \
+ /usr/include/qt5/QtGui/qaccessible.h \
+ /usr/include/qt5/QtCore/qcoreapplication.h \
+ /usr/include/qt5/QtCore/qeventloop.h \
+ /usr/include/qt5/QtQuick/QQuickPaintedItem \
+ /usr/include/qt5/QtQuick/qquickpainteditem.h \
+ /usr/include/qt5/QtQuick/QtQuick \
+ /usr/include/qt5/QtQuick/QtQuickDepends \
+ /usr/include/qt5/QtCore/QtCore \
+ /usr/include/qt5/QtCore/QtCoreDepends \
+ /usr/include/qt5/QtCore/qabstractanimation.h \
+ /usr/include/qt5/QtCore/qanimationgroup.h \
+ /usr/include/qt5/QtCore/qparallelanimationgroup.h \
+ /usr/include/qt5/QtCore/qpauseanimation.h \
+ /usr/include/qt5/QtCore/qpropertyanimation.h \
+ /usr/include/qt5/QtCore/qvariantanimation.h \
+ /usr/include/qt5/QtCore/qeasingcurve.h \
+ /usr/include/qt5/QtCore/qsequentialanimationgroup.h \
+ /usr/include/qt5/QtCore/qtextcodec.h \
+ /usr/include/qt5/QtCore/qendian.h \
+ /usr/include/qt5/QtCore/qlibraryinfo.h \
+ /usr/include/qt5/QtCore/qdatetime.h \
+ /usr/include/qt5/QtCore/qnumeric.h \
+ /usr/include/qt5/QtCore/qbuffer.h \
+ /usr/include/qt5/QtCore/qdir.h \
+ /usr/include/qt5/QtCore/qfileinfo.h \
+ /usr/include/qt5/QtCore/qdiriterator.h \
+ /usr/include/qt5/QtCore/qfileselector.h \
+ /usr/include/qt5/QtCore/qfilesystemwatcher.h \
+ /usr/include/qt5/QtCore/qlockfile.h \
+ /usr/include/qt5/QtCore/qloggingcategory.h \
+ /usr/include/qt5/QtCore/qprocess.h \
+ /usr/include/qt5/QtCore/qresource.h \
+ /usr/include/qt5/QtCore/qsavefile.h \
+ /usr/include/qt5/QtCore/qsettings.h \
+ /usr/include/qt5/QtCore/qstandardpaths.h \
+ /usr/include/qt5/QtCore/qtemporarydir.h \
+ /usr/include/qt5/QtCore/QScopedPointer \
+ /usr/include/qt5/QtCore/qabstractitemmodel.h \
+ /usr/include/qt5/QtCore/qabstractproxymodel.h \
+ /usr/include/qt5/QtCore/qidentityproxymodel.h \
+ /usr/include/qt5/QtCore/qitemselectionmodel.h \
+ /usr/include/qt5/QtCore/qsortfilterproxymodel.h \
+ /usr/include/qt5/QtCore/qstringlistmodel.h \
+ /usr/include/qt5/QtCore/qjsonarray.h \
+ /usr/include/qt5/QtCore/qjsonvalue.h \
+ /usr/include/qt5/QtCore/qjsondocument.h \
+ /usr/include/qt5/QtCore/qjsonobject.h \
+ /usr/include/qt5/QtCore/qabstracteventdispatcher.h \
+ /usr/include/qt5/QtCore/qabstractnativeeventfilter.h \
+ /usr/include/qt5/QtCore/qmath.h \
+ /usr/include/qt5/QtCore/qmimedata.h \
+ /usr/include/qt5/QtCore/qobjectcleanuphandler.h \
+ /usr/include/qt5/QtCore/qsharedmemory.h \
+ /usr/include/qt5/QtCore/qsignalmapper.h \
+ /usr/include/qt5/QtCore/qsocketnotifier.h \
+ /usr/include/qt5/QtCore/qsystemsemaphore.h \
+ /usr/include/qt5/QtCore/qtranslator.h \
+ /usr/include/qt5/QtCore/qwineventnotifier.h \
+ /usr/include/qt5/QtCore/qmimedatabase.h \
+ /usr/include/qt5/QtCore/qmimetype.h \
+ /usr/include/qt5/QtCore/qfactoryinterface.h \
+ /usr/include/qt5/QtCore/qlibrary.h \
+ /usr/include/qt5/QtCore/qplugin.h \
+ /usr/include/qt5/QtCore/qpluginloader.h \
+ /usr/include/qt5/QtCore/quuid.h \
+ /usr/include/qt5/QtCore/qabstractstate.h \
+ /usr/include/qt5/QtCore/qabstracttransition.h \
+ /usr/include/qt5/QtCore/qeventtransition.h \
+ /usr/include/qt5/QtCore/qfinalstate.h \
+ /usr/include/qt5/QtCore/qhistorystate.h \
+ /usr/include/qt5/QtCore/qsignaltransition.h \
+ /usr/include/qt5/QtCore/qstate.h \
+ /usr/include/qt5/QtCore/qstatemachine.h \
+ /usr/include/qt5/QtCore/qexception.h \
+ /usr/include/qt5/QtCore/qfuture.h \
+ /usr/include/qt5/QtCore/qfutureinterface.h \
+ /usr/include/qt5/QtCore/qrunnable.h \
+ /usr/include/qt5/QtCore/qresultstore.h \
+ /usr/include/qt5/QtCore/qfuturesynchronizer.h \
+ /usr/include/qt5/QtCore/qfuturewatcher.h \
+ /usr/include/qt5/QtCore/qreadwritelock.h \
+ /usr/include/qt5/QtCore/qsemaphore.h \
+ /usr/include/qt5/QtCore/qthread.h \
+ /usr/include/qt5/QtCore/qthreadpool.h \
+ /usr/include/qt5/QtCore/qthreadstorage.h \
+ /usr/include/qt5/QtCore/qwaitcondition.h \
+ /usr/include/qt5/QtCore/qarraydataops.h \
+ /usr/include/qt5/QtCore/qarraydatapointer.h \
+ /usr/include/qt5/QtCore/qbytearraymatcher.h \
+ /usr/include/qt5/QtCore/qcache.h \
+ /usr/include/qt5/QtCore/qcollator.h \
+ /usr/include/qt5/QtCore/qcommandlineoption.h \
+ /usr/include/qt5/QtCore/qcommandlineparser.h \
+ /usr/include/qt5/QtCore/qcryptographichash.h \
+ /usr/include/qt5/QtCore/qelapsedtimer.h \
+ /usr/include/qt5/QtCore/qlinkedlist.h \
+ /usr/include/qt5/QtCore/qmessageauthenticationcode.h \
+ /usr/include/qt5/QtCore/qqueue.h \
+ /usr/include/qt5/QtCore/qregularexpression.h \
+ /usr/include/qt5/QtCore/qscopedvaluerollback.h \
+ /usr/include/qt5/QtCore/qstack.h \
+ /usr/include/qt5/QtCore/qtextboundaryfinder.h \
+ /usr/include/qt5/QtCore/qtimeline.h \
+ /usr/include/qt5/QtCore/qtimezone.h \
+ /usr/include/qt5/QtCore/qxmlstream.h \
+ /usr/include/qt5/QtCore/qtcoreversion.h \
+ /usr/include/qt5/QtGui/QtGui \
+ /usr/include/qt5/QtGui/QtGuiDepends \
+ /usr/include/qt5/QtGui/qaccessiblebridge.h \
+ /usr/include/qt5/QtGui/qaccessibleobject.h \
+ /usr/include/qt5/QtGui/qaccessibleplugin.h \
+ /usr/include/qt5/QtGui/qbitmap.h \
+ /usr/include/qt5/QtGui/qiconengine.h \
+ /usr/include/qt5/QtGui/qiconengineplugin.h \
+ /usr/include/qt5/QtGui/qimageiohandler.h \
+ /usr/include/qt5/QtGui/qimagereader.h \
+ /usr/include/qt5/QtGui/qimagewriter.h \
+ /usr/include/qt5/QtGui/qmovie.h \
+ /usr/include/qt5/QtGui/qpicture.h \
+ /usr/include/qt5/QtGui/qpictureformatplugin.h \
+ /usr/include/qt5/QtGui/qpixmapcache.h \
+ /usr/include/qt5/QtGui/qstandarditemmodel.h \
+ /usr/include/qt5/QtGui/qclipboard.h \
+ /usr/include/qt5/QtGui/qdrag.h \
+ /usr/include/qt5/QtGui/qgenericplugin.h \
+ /usr/include/qt5/QtGui/qgenericpluginfactory.h \
+ /usr/include/qt5/QtGui/qguiapplication.h \
+ /usr/include/qt5/QtGui/qinputmethod.h \
+ /usr/include/qt5/QtGui/qoffscreensurface.h \
+ /usr/include/qt5/QtGui/qopenglcontext.h \
+ /usr/include/qt5/QtGui/QSurfaceFormat \
+ /usr/include/qt5/QtGui/qopengl.h \
+ /usr/include/qt5/QtCore/qt_windows.h \
+ /usr/include/qt5/QtGui/qopengles2ext.h \
+ /usr/include/qt5/QtGui/qopenglext.h \
+ /usr/include/qt5/QtGui/qopenglversionfunctions.h \
+ /usr/include/qt5/QtGui/qscreen.h \
+ /usr/include/qt5/QtCore/QSize \
+ /usr/include/qt5/QtCore/QSizeF \
+ /usr/include/qt5/QtGui/QTransform \
+ /usr/include/qt5/QtGui/qsessionmanager.h \
+ /usr/include/qt5/QtGui/qstylehints.h \
+ /usr/include/qt5/QtGui/qgenericmatrix.h \
+ /usr/include/qt5/QtGui/qmatrix4x4.h \
+ /usr/include/qt5/QtGui/qvector3d.h \
+ /usr/include/qt5/QtGui/qvector4d.h \
+ /usr/include/qt5/QtGui/qquaternion.h \
+ /usr/include/qt5/QtGui/qopenglbuffer.h \
+ /usr/include/qt5/QtGui/qopengldebug.h \
+ /usr/include/qt5/QtGui/qopenglframebufferobject.h \
+ /usr/include/qt5/QtGui/qopenglfunctions.h \
+ /usr/include/qt5/QtGui/qopenglpaintdevice.h \
+ /usr/include/qt5/QtGui/qopenglpixeltransferoptions.h \
+ /usr/include/qt5/QtCore/QSharedDataPointer \
+ /usr/include/qt5/QtGui/qopenglshaderprogram.h \
+ /usr/include/qt5/QtGui/qopengltexture.h \
+ /usr/include/qt5/QtGui/qopengltimerquery.h \
+ /usr/include/qt5/QtGui/qopenglvertexarrayobject.h \
+ /usr/include/qt5/QtGui/qbackingstore.h \
+ /usr/include/qt5/QtGui/qpagedpaintdevice.h \
+ /usr/include/qt5/QtGui/qpaintengine.h \
+ /usr/include/qt5/QtGui/qpainter.h \
+ /usr/include/qt5/QtGui/qtextoption.h \
+ /usr/include/qt5/QtGui/qpen.h \
+ /usr/include/qt5/QtGui/qpdfwriter.h \
+ /usr/include/qt5/QtGui/qabstracttextdocumentlayout.h \
+ /usr/include/qt5/QtGui/qtextlayout.h \
+ /usr/include/qt5/QtGui/qtextformat.h \
+ /usr/include/qt5/QtGui/qglyphrun.h \
+ /usr/include/qt5/QtGui/qrawfont.h \
+ /usr/include/qt5/QtGui/qfontdatabase.h \
+ /usr/include/qt5/QtGui/qtextcursor.h \
+ /usr/include/qt5/QtGui/qtextdocument.h \
+ /usr/include/qt5/QtGui/qstatictext.h \
+ /usr/include/qt5/QtGui/qsyntaxhighlighter.h \
+ /usr/include/qt5/QtGui/qtextobject.h \
+ /usr/include/qt5/QtGui/qtextdocumentfragment.h \
+ /usr/include/qt5/QtGui/qtextdocumentwriter.h \
+ /usr/include/qt5/QtGui/qtextlist.h \
+ /usr/include/qt5/QtGui/qtexttable.h \
+ /usr/include/qt5/QtGui/qdesktopservices.h \
+ /usr/include/qt5/QtGui/qvalidator.h \
+ /usr/include/qt5/QtGui/qtguiversion.h \
+ /usr/include/qt5/QtQml/QtQml \
+ /usr/include/qt5/QtQml/QtQmlDepends \
+ /usr/include/qt5/QtNetwork/QtNetwork \
+ /usr/include/qt5/QtNetwork/QtNetworkDepends \
+ /usr/include/qt5/QtNetwork/qabstractnetworkcache.h \
+ /usr/include/qt5/QtNetwork/qnetworkrequest.h \
+ /usr/include/qt5/QtCore/QString \
+ /usr/include/qt5/QtCore/QUrl \
+ /usr/include/qt5/QtCore/QVariant \
+ /usr/include/qt5/QtNetwork/qhttpmultipart.h \
+ /usr/include/qt5/QtCore/QByteArray \
+ /usr/include/qt5/QtCore/QIODevice \
+ /usr/include/qt5/QtNetwork/QNetworkRequest \
+ /usr/include/qt5/QtNetwork/qnetworkaccessmanager.h \
+ /usr/include/qt5/QtNetwork/QSslConfiguration \
+ /usr/include/qt5/QtNetwork/qsslconfiguration.h \
+ /usr/include/qt5/QtNetwork/qsslsocket.h \
+ /usr/include/qt5/QtNetwork/qtcpsocket.h \
+ /usr/include/qt5/QtNetwork/qabstractsocket.h \
+ /usr/include/qt5/QtNetwork/qsslerror.h \
+ /usr/include/qt5/QtNetwork/qsslcertificate.h \
+ /usr/include/qt5/QtNetwork/qssl.h \
+ /usr/include/qt5/QtCore/QFlags \
+ /usr/include/qt5/QtNetwork/qnetworkcookie.h \
+ /usr/include/qt5/QtCore/QMetaType \
+ /usr/include/qt5/QtNetwork/qnetworkcookiejar.h \
+ /usr/include/qt5/QtNetwork/qnetworkdiskcache.h \
+ /usr/include/qt5/QtNetwork/qnetworkreply.h \
+ /usr/include/qt5/QtNetwork/QNetworkAccessManager \
+ /usr/include/qt5/QtNetwork/qnetworkconfigmanager.h \
+ /usr/include/qt5/QtNetwork/qnetworkconfiguration.h \
+ /usr/include/qt5/QtNetwork/qnetworksession.h \
+ /usr/include/qt5/QtNetwork/qnetworkinterface.h \
+ /usr/include/qt5/QtNetwork/qhostaddress.h \
+ /usr/include/qt5/QtNetwork/qauthenticator.h \
+ /usr/include/qt5/QtNetwork/qdnslookup.h \
+ /usr/include/qt5/QtNetwork/qhostinfo.h \
+ /usr/include/qt5/QtNetwork/qnetworkproxy.h \
+ /usr/include/qt5/QtNetwork/qlocalserver.h \
+ /usr/include/qt5/QtNetwork/qlocalsocket.h \
+ /usr/include/qt5/QtNetwork/qtcpserver.h \
+ /usr/include/qt5/QtNetwork/qudpsocket.h \
+ /usr/include/qt5/QtNetwork/qsslcertificateextension.h \
+ /usr/include/qt5/QtNetwork/qsslcipher.h \
+ /usr/include/qt5/QtNetwork/qsslkey.h \
+ /usr/include/qt5/QtNetwork/qtnetworkversion.h \
+ /usr/include/qt5/QtQml/qqmldebug.h \
+ /usr/include/qt5/QtQml/qjsengine.h \
+ /usr/include/qt5/QtQml/qjsvalueiterator.h \
+ /usr/include/qt5/QtQml/qqmlabstracturlinterceptor.h \
+ /usr/include/qt5/QtQml/qqmlapplicationengine.h \
+ /usr/include/qt5/QtQml/qqmlengine.h \
+ /usr/include/qt5/QtQml/qqmlcontext.h \
+ /usr/include/qt5/QtQml/qqmlexpression.h \
+ /usr/include/qt5/QtQml/qqmlscriptstring.h \
+ /usr/include/qt5/QtQml/qqmlextensioninterface.h \
+ /usr/include/qt5/QtQml/qqmlextensionplugin.h \
+ /usr/include/qt5/QtQml/qqmlfile.h \
+ /usr/include/qt5/QtQml/qqmlfileselector.h \
+ /usr/include/qt5/QtQml/QQmlEngine \
+ /usr/include/qt5/QtQml/qqmlincubator.h \
+ /usr/include/qt5/QtQml/qqmlinfo.h \
+ /usr/include/qt5/QtQml/qqmlnetworkaccessmanagerfactory.h \
+ /usr/include/qt5/QtQml/qqmlproperty.h \
+ /usr/include/qt5/QtQml/qqmlpropertymap.h \
+ /usr/include/qt5/QtQml/qtqmlversion.h \
+ /usr/include/qt5/QtQuick/designersupport.h \
+ /usr/include/qt5/QtCore/QtGlobal \
+ /usr/include/qt5/QtCore/QRectF \
+ /usr/include/qt5/QtQuick/qquickframebufferobject.h \
+ /usr/include/qt5/QtQuick/qquicktextdocument.h \
+ /usr/include/qt5/QtGui/QTextDocument \
+ /usr/include/qt5/QtQuick/qquickview.h \
+ /usr/include/qt5/QtQuick/qquickwindow.h \
+ /usr/include/qt5/QtQuick/qquickimageprovider.h \
+ /usr/include/qt5/QtQuick/qsggeometry.h \
+ /usr/include/qt5/QtQuick/qsgmaterial.h \
+ /usr/include/qt5/QtQuick/qsgnode.h \
+ /usr/include/qt5/QtGui/QMatrix4x4 \
+ /usr/include/qt5/QtQuick/qsgflatcolormaterial.h \
+ /usr/include/qt5/QtQuick/qsgsimplematerial.h \
+ /usr/include/qt5/QtQuick/qsgsimplerectnode.h \
+ /usr/include/qt5/QtQuick/qsgsimpletexturenode.h \
+ /usr/include/qt5/QtQuick/qsgtexturematerial.h \
+ /usr/include/qt5/QtQuick/qsgtexture.h \
+ /usr/include/qt5/QtGui/QImage \
+ /usr/include/qt5/QtQuick/qsgtextureprovider.h \
+ /usr/include/qt5/QtQuick/qsgvertexcolormaterial.h \
+ /usr/include/qt5/QtQuick/qtquickversion.h \
+ /usr/include/qt5/QtGui/QGuiApplication \
+ /usr/include/qt5/QtGui/QStyleHints \
+ /usr/include/qt5/QtGui/QInputMethod \
+ /usr/include/qt5/QtGui/QPainter \
+ /usr/include/qt5/QtGui/QPixmap \
+ /usr/include/qt5/QtGui/QClipboard \
+ /usr/include/qt5/QtGui/QKeyEvent \
+ /usr/include/qt5/QtCore/QTime \
+ /usr/include/qt5/QtCore/QFile \
+ /usr/include/qt5/QtCore/QtDebug \
+ src/konsole_wcwidth.h \
+ src/ScreenWindow.h \
+ /usr/include/qt5/QtCore/QPoint \
+ src/ColorScheme.h \
+ /usr/include/qt5/QtCore/QSet \
+ /usr/include/qt5/QtCore/QSettings \
+ src/ColorTables.h \
+ src/TerminalCharacterDecoder.h \
+ src/LineFont.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/TerminalDisplay.o src/TerminalDisplay.cpp
+
+.obj/ksession.o: src/ksession.cpp src/ksession.h \
+ /usr/include/qt5/QtCore/QObject \
+ /usr/include/qt5/QtCore/qobject.h \
+ /usr/include/qt5/QtCore/qobjectdefs.h \
+ /usr/include/qt5/QtCore/qnamespace.h \
+ /usr/include/qt5/QtCore/qglobal.h \
+ /usr/include/qt5/QtCore/qconfig.h \
+ /usr/include/qt5/QtCore/qfeatures.h \
+ /usr/include/qt5/QtCore/qsystemdetection.h \
+ /usr/include/qt5/QtCore/qprocessordetection.h \
+ /usr/include/qt5/QtCore/qcompilerdetection.h \
+ /usr/include/qt5/QtCore/qglobalstatic.h \
+ /usr/include/qt5/QtCore/qatomic.h \
+ /usr/include/qt5/QtCore/qbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_bootstrap.h \
+ /usr/include/qt5/QtCore/qgenericatomic.h \
+ /usr/include/qt5/QtCore/qatomic_msvc.h \
+ /usr/include/qt5/QtCore/qatomic_integrity.h \
+ /usr/include/qt5/QtCore/qoldbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_vxworks.h \
+ /usr/include/qt5/QtCore/qatomic_power.h \
+ /usr/include/qt5/QtCore/qatomic_alpha.h \
+ /usr/include/qt5/QtCore/qatomic_armv7.h \
+ /usr/include/qt5/QtCore/qatomic_armv6.h \
+ /usr/include/qt5/QtCore/qatomic_armv5.h \
+ /usr/include/qt5/QtCore/qatomic_bfin.h \
+ /usr/include/qt5/QtCore/qatomic_ia64.h \
+ /usr/include/qt5/QtCore/qatomic_mips.h \
+ /usr/include/qt5/QtCore/qatomic_s390.h \
+ /usr/include/qt5/QtCore/qatomic_sh4a.h \
+ /usr/include/qt5/QtCore/qatomic_sparc.h \
+ /usr/include/qt5/QtCore/qatomic_gcc.h \
+ /usr/include/qt5/QtCore/qatomic_x86.h \
+ /usr/include/qt5/QtCore/qatomic_cxx11.h \
+ /usr/include/qt5/QtCore/qatomic_unix.h \
+ /usr/include/qt5/QtCore/qmutex.h \
+ /usr/include/qt5/QtCore/qlogging.h \
+ /usr/include/qt5/QtCore/qflags.h \
+ /usr/include/qt5/QtCore/qtypeinfo.h \
+ /usr/include/qt5/QtCore/qtypetraits.h \
+ /usr/include/qt5/QtCore/qsysinfo.h \
+ /usr/include/qt5/QtCore/qobjectdefs_impl.h \
+ /usr/include/qt5/QtCore/qstring.h \
+ /usr/include/qt5/QtCore/qchar.h \
+ /usr/include/qt5/QtCore/qbytearray.h \
+ /usr/include/qt5/QtCore/qrefcount.h \
+ /usr/include/qt5/QtCore/qarraydata.h \
+ /usr/include/qt5/QtCore/qstringbuilder.h \
+ /usr/include/qt5/QtCore/qlist.h \
+ /usr/include/qt5/QtCore/qalgorithms.h \
+ /usr/include/qt5/QtCore/qiterator.h \
+ /usr/include/qt5/QtCore/qcoreevent.h \
+ /usr/include/qt5/QtCore/qscopedpointer.h \
+ /usr/include/qt5/QtCore/qmetatype.h \
+ /usr/include/qt5/QtCore/qvarlengtharray.h \
+ /usr/include/qt5/QtCore/qcontainerfwd.h \
+ /usr/include/qt5/QtCore/qisenum.h \
+ /usr/include/qt5/QtCore/qobject_impl.h \
+ src/Session.h \
+ /usr/include/qt5/QtCore/QStringList \
+ /usr/include/qt5/QtCore/qstringlist.h \
+ /usr/include/qt5/QtCore/qdatastream.h \
+ /usr/include/qt5/QtCore/qiodevice.h \
+ /usr/include/qt5/QtCore/qpair.h \
+ /usr/include/qt5/QtCore/qregexp.h \
+ /usr/include/qt5/QtCore/qstringmatcher.h \
+ /usr/include/qt5/QtCore/QTimer \
+ /usr/include/qt5/QtCore/qtimer.h \
+ /usr/include/qt5/QtCore/qbasictimer.h \
+ /usr/include/qt5/QtGui/QWindow \
+ /usr/include/qt5/QtGui/qwindow.h \
+ /usr/include/qt5/QtCore/QEvent \
+ /usr/include/qt5/QtCore/QMargins \
+ /usr/include/qt5/QtCore/qmargins.h \
+ /usr/include/qt5/QtCore/qrect.h \
+ /usr/include/qt5/QtCore/qsize.h \
+ /usr/include/qt5/QtCore/qpoint.h \
+ /usr/include/qt5/QtCore/QRect \
+ /usr/include/qt5/QtGui/qsurface.h \
+ /usr/include/qt5/QtGui/qsurfaceformat.h \
+ /usr/include/qt5/QtGui/qwindowdefs.h \
+ /usr/include/qt5/QtGui/qwindowdefs_win.h \
+ /usr/include/qt5/QtGui/qicon.h \
+ /usr/include/qt5/QtGui/qpixmap.h \
+ /usr/include/qt5/QtGui/qpaintdevice.h \
+ /usr/include/qt5/QtGui/qcolor.h \
+ /usr/include/qt5/QtGui/qrgb.h \
+ /usr/include/qt5/QtCore/qsharedpointer.h \
+ /usr/include/qt5/QtCore/qshareddata.h \
+ /usr/include/qt5/QtCore/qsharedpointer_impl.h \
+ /usr/include/qt5/QtCore/qhash.h \
+ /usr/include/qt5/QtGui/qimage.h \
+ /usr/include/qt5/QtGui/qtransform.h \
+ /usr/include/qt5/QtGui/qmatrix.h \
+ /usr/include/qt5/QtGui/qpolygon.h \
+ /usr/include/qt5/QtCore/qvector.h \
+ /usr/include/qt5/QtGui/qregion.h \
+ /usr/include/qt5/QtCore/qline.h \
+ /usr/include/qt5/QtGui/qpainterpath.h \
+ /usr/include/qt5/QtGui/qcursor.h \
+ src/History.h \
+ /usr/include/qt5/QtCore/QBitRef \
+ /usr/include/qt5/QtCore/qbitarray.h \
+ /usr/include/qt5/QtCore/QHash \
+ /usr/include/qt5/QtCore/QVector \
+ /usr/include/qt5/QtCore/QTemporaryFile \
+ /usr/include/qt5/QtCore/qtemporaryfile.h \
+ /usr/include/qt5/QtCore/qfile.h \
+ /usr/include/qt5/QtCore/qfiledevice.h \
+ src/BlockArray.h \
+ src/Character.h \
+ src/CharacterColor.h \
+ /usr/include/qt5/QtGui/QColor \
+ /usr/include/qt5/QtCore/QTextCodec \
+ /usr/include/qt5/QtCore/qtextcodec.h \
+ src/KeyboardTranslator.h \
+ /usr/include/qt5/QtCore/QList \
+ /usr/include/qt5/QtGui/QKeySequence \
+ /usr/include/qt5/QtGui/qkeysequence.h \
+ /usr/include/qt5/QtCore/QMetaType \
+ /usr/include/qt5/QtCore/QVarLengthArray \
+ src/TerminalDisplay.h \
+ /usr/include/qt5/QtCore/QPointer \
+ /usr/include/qt5/QtCore/qpointer.h \
+ src/Filter.h \
+ /usr/include/qt5/QtWidgets/QAction \
+ /usr/include/qt5/QtWidgets/qaction.h \
+ /usr/include/qt5/QtWidgets/qwidget.h \
+ /usr/include/qt5/QtGui/qpalette.h \
+ /usr/include/qt5/QtGui/qbrush.h \
+ /usr/include/qt5/QtGui/qfont.h \
+ /usr/include/qt5/QtGui/qfontmetrics.h \
+ /usr/include/qt5/QtGui/qfontinfo.h \
+ /usr/include/qt5/QtWidgets/qsizepolicy.h \
+ /usr/include/qt5/QtGui/qevent.h \
+ /usr/include/qt5/QtCore/qvariant.h \
+ /usr/include/qt5/QtCore/qmap.h \
+ /usr/include/qt5/QtCore/qdebug.h \
+ /usr/include/qt5/QtCore/qtextstream.h \
+ /usr/include/qt5/QtCore/qlocale.h \
+ /usr/include/qt5/QtCore/qset.h \
+ /usr/include/qt5/QtCore/qcontiguouscache.h \
+ /usr/include/qt5/QtCore/qurl.h \
+ /usr/include/qt5/QtCore/qurlquery.h \
+ /usr/include/qt5/QtGui/qvector2d.h \
+ /usr/include/qt5/QtGui/qtouchdevice.h \
+ /usr/include/qt5/QtWidgets/qactiongroup.h \
+ /usr/include/qt5/QtCore/QRegExp \
+ /usr/include/qt5/QtQuick/QQuickItem \
+ /usr/include/qt5/QtQuick/qquickitem.h \
+ /usr/include/qt5/QtQuick/qtquickglobal.h \
+ /usr/include/qt5/QtQml/qqml.h \
+ /usr/include/qt5/QtQml/qqmlprivate.h \
+ /usr/include/qt5/QtQml/qtqmlglobal.h \
+ /usr/include/qt5/QtQml/qqmlparserstatus.h \
+ /usr/include/qt5/QtQml/qqmlpropertyvaluesource.h \
+ /usr/include/qt5/QtQml/qqmllist.h \
+ /usr/include/qt5/QtCore/qmetaobject.h \
+ /usr/include/qt5/QtQml/qqmlcomponent.h \
+ /usr/include/qt5/QtQml/qqmlerror.h \
+ /usr/include/qt5/QtQml/qjsvalue.h \
+ /usr/include/qt5/QtGui/qaccessible.h \
+ /usr/include/qt5/QtCore/qcoreapplication.h \
+ /usr/include/qt5/QtCore/qeventloop.h \
+ /usr/include/qt5/QtQuick/QQuickPaintedItem \
+ /usr/include/qt5/QtQuick/qquickpainteditem.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/ksession.o src/ksession.cpp
+
+.obj/moc_plugin.o: .moc/moc_plugin.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/moc_plugin.o .moc/moc_plugin.cpp
+
+.obj/moc_Pty.o: .moc/moc_Pty.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/moc_Pty.o .moc/moc_Pty.cpp
+
+.obj/moc_kptyprocess.o: .moc/moc_kptyprocess.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/moc_kptyprocess.o .moc/moc_kptyprocess.cpp
+
+.obj/moc_kptydevice.o: .moc/moc_kptydevice.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/moc_kptydevice.o .moc/moc_kptydevice.cpp
+
+.obj/moc_kprocess.o: .moc/moc_kprocess.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/moc_kprocess.o .moc/moc_kprocess.cpp
+
+.obj/moc_Vt102Emulation.o: .moc/moc_Vt102Emulation.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/moc_Vt102Emulation.o .moc/moc_Vt102Emulation.cpp
+
+.obj/moc_Session.o: .moc/moc_Session.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/moc_Session.o .moc/moc_Session.cpp
+
+.obj/moc_Emulation.o: .moc/moc_Emulation.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/moc_Emulation.o .moc/moc_Emulation.cpp
+
+.obj/moc_ScreenWindow.o: .moc/moc_ScreenWindow.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/moc_ScreenWindow.o .moc/moc_ScreenWindow.cpp
+
+.obj/moc_Filter.o: .moc/moc_Filter.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/moc_Filter.o .moc/moc_Filter.cpp
+
+.obj/moc_TerminalDisplay.o: .moc/moc_TerminalDisplay.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/moc_TerminalDisplay.o .moc/moc_TerminalDisplay.cpp
+
+.obj/moc_ksession.o: .moc/moc_ksession.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/moc_ksession.o .moc/moc_ksession.cpp
+
+####### Install
+
+install_target: first FORCE
+ @test -d $(INSTALL_ROOT)/tmp/cool/konsole-qml-plugin/../imports/org/kde/konsole || mkdir -p $(INSTALL_ROOT)/tmp/cool/konsole-qml-plugin/../imports/org/kde/konsole
+ -$(INSTALL_PROGRAM) "$(TARGET)" "$(INSTALL_ROOT)/tmp/cool/imports/org/kde/konsole/$(TARGET)"
+ -$(STRIP) --strip-unneeded "$(INSTALL_ROOT)/tmp/cool/imports/org/kde/konsole/$(TARGET)"
+
+uninstall_target: FORCE
+ -$(DEL_FILE) "$(INSTALL_ROOT)/tmp/cool/imports/org/kde/konsole/$(TARGET)"
+ -$(DEL_DIR) $(INSTALL_ROOT)/tmp/cool/konsole-qml-plugin/../imports/org/kde/konsole/
+
+
+install_qmldir: first FORCE
+ @test -d $(INSTALL_ROOT)/tmp/cool/konsole-qml-plugin/../imports/org/kde/konsole || mkdir -p $(INSTALL_ROOT)/tmp/cool/konsole-qml-plugin/../imports/org/kde/konsole
+ -$(INSTALL_FILE) /tmp/cool/konsole-qml-plugin/src/qmldir $(INSTALL_ROOT)/tmp/cool/konsole-qml-plugin/../imports/org/kde/konsole/
+ -$(INSTALL_FILE) /tmp/cool/konsole-qml-plugin/src/plugins.qmltypes $(INSTALL_ROOT)/tmp/cool/konsole-qml-plugin/../imports/org/kde/konsole/
+
+uninstall_qmldir: FORCE
+ -$(DEL_FILE) -r $(INSTALL_ROOT)/tmp/cool/konsole-qml-plugin/../imports/org/kde/konsole/plugins.qmltypes
+ -$(DEL_FILE) -r $(INSTALL_ROOT)/tmp/cool/konsole-qml-plugin/../imports/org/kde/konsole/qmldir
+ -$(DEL_DIR) $(INSTALL_ROOT)/tmp/cool/konsole-qml-plugin/../imports/org/kde/konsole/
+
+
+install_assets: first FORCE
+ @test -d $(INSTALL_ROOT)/tmp/cool/konsole-qml-plugin/../imports/org/kde/konsole || mkdir -p $(INSTALL_ROOT)/tmp/cool/konsole-qml-plugin/../imports/org/kde/konsole
+ -$(INSTALL_DIR) /tmp/cool/konsole-qml-plugin/assets/color-schemes $(INSTALL_ROOT)/tmp/cool/konsole-qml-plugin/../imports/org/kde/konsole/
+ -$(INSTALL_DIR) /tmp/cool/konsole-qml-plugin/assets/kb-layouts $(INSTALL_ROOT)/tmp/cool/konsole-qml-plugin/../imports/org/kde/konsole/
+
+uninstall_assets: FORCE
+ -$(DEL_FILE) -r $(INSTALL_ROOT)/tmp/cool/konsole-qml-plugin/../imports/org/kde/konsole/kb-layouts
+ -$(DEL_FILE) -r $(INSTALL_ROOT)/tmp/cool/konsole-qml-plugin/../imports/org/kde/konsole/color-schemes
+ -$(DEL_DIR) $(INSTALL_ROOT)/tmp/cool/konsole-qml-plugin/../imports/org/kde/konsole/
+
+
+install: install_target install_qmldir install_assets FORCE
+
+uninstall: uninstall_target uninstall_qmldir uninstall_assets FORCE
+
+FORCE:
+
diff --git a/konsole-qml-plugin/README b/konsole-qml-plugin/README
new file mode 100644
index 0000000..69a57a4
--- /dev/null
+++ b/konsole-qml-plugin/README
@@ -0,0 +1,15 @@
+this is a repository for shared C++ QML plugin, offering access to
+terminal sessions.
+
+if you want to add something, please ask the maintainer of this library first to
+make sure it's a good fit
+
+the current maintainer is: Dmitry Zagnoyko
+
+current plugin consist:
+- KTerminal: offers access to terminal session from qml
+- KSessions: offers access to pty(s) from C++ layer
+
+Branched from:
+https://code.launchpad.net/~ubuntu-terminal-dev/ubuntu-terminal-app/plugin
+At revision 14
diff --git a/konsole-qml-plugin/assets/color-schemes/BlackOnLightYellow.schema b/konsole-qml-plugin/assets/color-schemes/BlackOnLightYellow.schema
new file mode 100644
index 0000000..251a696
--- /dev/null
+++ b/konsole-qml-plugin/assets/color-schemes/BlackOnLightYellow.schema
@@ -0,0 +1,42 @@
+# example scheme for konsole
+
+# the title is to appear in the menu.
+
+title Black on Light Yellow
+
+# foreground colors
+
+# note that the default background color is flagged
+# to become transparent when an image is present.
+
+# slot transparent bold
+# | | |
+# V V--color--V V V
+
+color 0 0 0 0 0 0 # regular foreground color (Black)
+color 1 255 255 221 1 0 # regular background color (Light Yellow)
+
+color 2 0 0 0 0 0 # regular color 0 Black
+color 3 178 24 24 0 0 # regular color 1 Red
+color 4 24 178 24 0 0 # regular color 2 Green
+color 5 178 104 24 0 0 # regular color 3 Yellow
+color 6 24 24 178 0 0 # regular color 4 Blue
+color 7 178 24 178 0 0 # regular color 5 Magenta
+color 8 24 178 178 0 0 # regular color 6 Cyan
+color 9 178 178 178 0 0 # regular color 7 White
+
+# intensive colors
+
+# instead of changing the colors, we've flaged the text to become bold
+
+color 10 0 0 0 0 1 # intensive foreground color
+color 11 255 255 221 1 0 # intensive background color
+
+color 12 104 104 104 0 0 # intensive color 0
+color 13 255 84 84 0 0 # intensive color 1
+color 14 84 255 84 0 0 # intensive color 2
+color 15 255 255 84 0 0 # intensive color 3
+color 16 84 84 255 0 0 # intensive color 4
+color 17 255 84 255 0 0 # intensive color 5
+color 18 84 255 255 0 0 # intensive color 6
+color 19 255 255 255 0 0 # intensive color 7
diff --git a/konsole-qml-plugin/assets/color-schemes/BlackOnRandomLight.colorscheme b/konsole-qml-plugin/assets/color-schemes/BlackOnRandomLight.colorscheme
new file mode 100644
index 0000000..4d6f831
--- /dev/null
+++ b/konsole-qml-plugin/assets/color-schemes/BlackOnRandomLight.colorscheme
@@ -0,0 +1,104 @@
+[Background]
+Bold=false
+Color=247,247,214
+Transparency=true
+MaxRandomHue=340
+
+[BackgroundIntense]
+Bold=false
+Color=255,255,221
+Transparency=true
+
+[Color0]
+Bold=false
+Color=0,0,0
+Transparency=false
+
+[Color0Intense]
+Bold=false
+Color=104,104,104
+Transparency=false
+
+[Color1]
+Bold=false
+Color=178,24,24
+Transparency=false
+
+[Color1Intense]
+Bold=false
+Color=255,84,84
+Transparency=false
+
+[Color2]
+Bold=false
+Color=24,178,24
+Transparency=false
+
+[Color2Intense]
+Bold=false
+Color=84,255,84
+Transparency=false
+
+[Color3]
+Bold=false
+Color=178,104,24
+Transparency=false
+
+[Color3Intense]
+Bold=false
+Color=255,255,84
+Transparency=false
+
+[Color4]
+Bold=false
+Color=24,24,178
+Transparency=false
+
+[Color4Intense]
+Bold=false
+Color=84,84,255
+Transparency=false
+
+[Color5]
+Bold=false
+Color=178,24,178
+Transparency=false
+
+[Color5Intense]
+Bold=false
+Color=255,84,255
+Transparency=false
+
+[Color6]
+Bold=false
+Color=24,178,178
+Transparency=false
+
+[Color6Intense]
+Bold=false
+Color=84,255,255
+Transparency=false
+
+[Color7]
+Bold=false
+Color=178,178,178
+Transparency=false
+
+[Color7Intense]
+Bold=false
+Color=255,255,255
+Transparency=false
+
+[Foreground]
+Bold=false
+Color=0,0,0
+Transparency=false
+
+[ForegroundIntense]
+Bold=true
+Color=0,0,0
+Transparency=false
+
+[General]
+Description=Black on Random Light
+Opacity=1
diff --git a/konsole-qml-plugin/assets/color-schemes/BlackOnWhite.schema b/konsole-qml-plugin/assets/color-schemes/BlackOnWhite.schema
new file mode 100644
index 0000000..11853e6
--- /dev/null
+++ b/konsole-qml-plugin/assets/color-schemes/BlackOnWhite.schema
@@ -0,0 +1,42 @@
+# example scheme for konsole
+
+# the title is to appear in the menu.
+
+title Black on White
+
+# foreground colors
+
+# note that the default background color is flagged
+# to become transparent when an image is present.
+
+# slot transparent bold
+# | | |
+# V V--color--V V V
+
+color 0 0 0 0 0 0 # regular foreground color (Black)
+color 1 255 255 255 1 0 # regular background color (White)
+
+color 2 0 0 0 0 0 # regular color 0 Black
+color 3 178 24 24 0 0 # regular color 1 Red
+color 4 24 178 24 0 0 # regular color 2 Green
+color 5 178 104 24 0 0 # regular color 3 Yellow
+color 6 24 24 178 0 0 # regular color 4 Blue
+color 7 178 24 178 0 0 # regular color 5 Magenta
+color 8 24 178 178 0 0 # regular color 6 Cyan
+color 9 178 178 178 0 0 # regular color 7 White
+
+# intensive colors
+
+# instead of changing the colors, we've flaged the text to become bold
+
+color 10 0 0 0 0 1 # intensive foreground color
+color 11 255 255 255 1 0 # intensive background color
+
+color 12 104 104 104 0 0 # intensive color 0
+color 13 255 84 84 0 0 # intensive color 1
+color 14 84 255 84 0 0 # intensive color 2
+color 15 255 255 84 0 0 # intensive color 3
+color 16 84 84 255 0 0 # intensive color 4
+color 17 255 84 255 0 0 # intensive color 5
+color 18 84 255 255 0 0 # intensive color 6
+color 19 255 255 255 0 0 # intensive color 7
diff --git a/konsole-qml-plugin/assets/color-schemes/DarkPastels.colorscheme b/konsole-qml-plugin/assets/color-schemes/DarkPastels.colorscheme
new file mode 100644
index 0000000..fdcb02a
--- /dev/null
+++ b/konsole-qml-plugin/assets/color-schemes/DarkPastels.colorscheme
@@ -0,0 +1,103 @@
+[Background]
+Bold=false
+Color=44,44,44
+Transparency=false
+
+[BackgroundIntense]
+Bold=true
+Color=44,44,44
+Transparency=false
+
+[Color0]
+Bold=false
+Color=63,63,63
+Transparency=false
+
+[Color0Intense]
+Bold=true
+Color=112,144,128
+Transparency=false
+
+[Color1]
+Bold=false
+Color=112,80,80
+Transparency=false
+
+[Color1Intense]
+Bold=true
+Color=220,163,163
+Transparency=false
+
+[Color2]
+Bold=false
+Color=96,180,138
+Transparency=false
+
+[Color2Intense]
+Bold=true
+Color=114,213,163
+Transparency=false
+
+[Color3]
+Bold=false
+Color=223,175,143
+Transparency=false
+
+[Color3Intense]
+Bold=true
+Color=240,223,175
+Transparency=false
+
+[Color4]
+Bold=false
+Color=154,184,215
+Transparency=false
+
+[Color4Intense]
+Bold=true
+Color=148,191,243
+Transparency=false
+
+[Color5]
+Bold=false
+Color=220,140,195
+Transparency=false
+
+[Color5Intense]
+Bold=true
+Color=236,147,211
+Transparency=false
+
+[Color6]
+Bold=false
+Color=140,208,211
+Transparency=false
+
+[Color6Intense]
+Bold=true
+Color=147,224,227
+Transparency=false
+
+[Color7]
+Bold=false
+Color=220,220,204
+Transparency=false
+
+[Color7Intense]
+Bold=true
+Color=255,255,255
+Transparency=false
+
+[Foreground]
+Bold=false
+Color=220,220,204
+Transparency=false
+
+[ForegroundIntense]
+Bold=true
+Color=220,220,204
+Transparency=false
+
+[General]
+Description=Dark Pastels
+Opacity=1
diff --git a/konsole-qml-plugin/assets/color-schemes/GreenOnBlack.colorscheme b/konsole-qml-plugin/assets/color-schemes/GreenOnBlack.colorscheme
new file mode 100644
index 0000000..4d55b3a
--- /dev/null
+++ b/konsole-qml-plugin/assets/color-schemes/GreenOnBlack.colorscheme
@@ -0,0 +1,104 @@
+
+[Background]
+Bold=false
+Color=0,0,0
+Transparency=false
+
+[BackgroundIntense]
+Bold=false
+Color=0,0,0
+Transparency=false
+
+[Color0]
+Bold=false
+Color=0,0,0
+Transparency=false
+
+[Color0Intense]
+Bold=false
+Color=104,104,104
+Transparency=false
+
+[Color1]
+Bold=false
+Color=250,75,75
+Transparency=false
+
+[Color1Intense]
+Bold=false
+Color=255,84,84
+Transparency=false
+
+[Color2]
+Bold=false
+Color=24,178,24
+Transparency=false
+
+[Color2Intense]
+Bold=false
+Color=84,255,84
+Transparency=false
+
+[Color3]
+Bold=false
+Color=178,104,24
+Transparency=false
+
+[Color3Intense]
+Bold=false
+Color=255,255,84
+Transparency=false
+
+[Color4]
+Bold=false
+Color=92,167,251
+Transparency=false
+
+[Color4Intense]
+Bold=false
+Color=84,84,255
+Transparency=false
+
+[Color5]
+Bold=false
+Color=225,30,225
+Transparency=false
+
+[Color5Intense]
+Bold=false
+Color=255,84,255
+Transparency=false
+
+[Color6]
+Bold=false
+Color=24,178,178
+Transparency=false
+
+[Color6Intense]
+Bold=false
+Color=84,255,255
+Transparency=false
+
+[Color7]
+Bold=false
+Color=178,178,178
+Transparency=false
+
+[Color7Intense]
+Bold=false
+Color=255,255,255
+Transparency=false
+
+[Foreground]
+Bold=false
+Color=24,240,24
+Transparency=false
+
+[ForegroundIntense]
+Bold=true
+Color=24,240,24
+Transparency=false
+
+[General]
+Description=Green on Black
+Opacity=1
diff --git a/konsole-qml-plugin/assets/color-schemes/Linux.colorscheme b/konsole-qml-plugin/assets/color-schemes/Linux.colorscheme
new file mode 100644
index 0000000..c9afb14
--- /dev/null
+++ b/konsole-qml-plugin/assets/color-schemes/Linux.colorscheme
@@ -0,0 +1,100 @@
+[Background]
+Bold=false
+Color=0,0,0
+
+[BackgroundIntense]
+Bold=false
+Color=104,104,104
+
+[Color0]
+Bold=false
+Color=0,0,0
+
+
+[Color0Intense]
+Bold=false
+Color=104,104,104
+
+
+[Color1]
+Bold=false
+Color=178,24,24
+
+
+[Color1Intense]
+Bold=false
+Color=255,84,84
+
+
+[Color2]
+Bold=false
+Color=24,178,24
+
+
+[Color2Intense]
+Bold=false
+Color=84,255,84
+
+
+[Color3]
+Bold=false
+Color=178,104,24
+
+
+[Color3Intense]
+Bold=false
+Color=255,255,84
+
+
+[Color4]
+Bold=false
+Color=24,24,178
+
+
+[Color4Intense]
+Bold=false
+Color=84,84,255
+
+
+[Color5]
+Bold=false
+Color=178,24,178
+
+
+[Color5Intense]
+Bold=false
+Color=255,84,255
+
+
+[Color6]
+Bold=false
+Color=24,178,178
+
+
+[Color6Intense]
+Bold=false
+Color=84,255,255
+
+
+[Color7]
+Bold=false
+Color=178,178,178
+
+
+[Color7Intense]
+Bold=false
+Color=255,255,255
+
+
+[Foreground]
+Bold=false
+Color=178,178,178
+
+
+[ForegroundIntense]
+Bold=false
+Color=255,255,255
+
+
+[General]
+Description=Linux Colors
diff --git a/konsole-qml-plugin/assets/color-schemes/WhiteOnBlack.schema b/konsole-qml-plugin/assets/color-schemes/WhiteOnBlack.schema
new file mode 100644
index 0000000..05c5bc0
--- /dev/null
+++ b/konsole-qml-plugin/assets/color-schemes/WhiteOnBlack.schema
@@ -0,0 +1,42 @@
+# example scheme for konsole
+
+# the title is to appear in the menu.
+
+title White on Black
+
+# foreground colors
+
+# note that the default background color is flagged
+# to become transparent when an image is present.
+
+# slot transparent bold
+# | | |
+# V V--color--V V V
+
+color 0 255 255 255 0 0 # regular foreground color (White)
+color 1 0 0 0 1 0 # regular background color (Black)
+
+color 2 0 0 0 0 0 # regular color 0 Black
+color 3 178 24 24 0 0 # regular color 1 Red
+color 4 24 178 24 0 0 # regular color 2 Green
+color 5 178 104 24 0 0 # regular color 3 Yellow
+color 6 24 24 178 0 0 # regular color 4 Blue
+color 7 178 24 178 0 0 # regular color 5 Magenta
+color 8 24 178 178 0 0 # regular color 6 Cyan
+color 9 178 178 178 0 0 # regular color 7 White
+
+# intensive colors
+
+# instead of changing the colors, we've flaged the text to become bold
+
+color 10 255 255 255 0 1 # intensive foreground color
+color 11 0 0 0 1 0 # intensive background color
+
+color 12 104 104 104 0 0 # intensive color 0
+color 13 255 84 84 0 0 # intensive color 1
+color 14 84 255 84 0 0 # intensive color 2
+color 15 255 255 84 0 0 # intensive color 3
+color 16 84 84 255 0 0 # intensive color 4
+color 17 255 84 255 0 0 # intensive color 5
+color 18 84 255 255 0 0 # intensive color 6
+color 19 255 255 255 0 0 # intensive color 7
diff --git a/konsole-qml-plugin/assets/color-schemes/historic/BlackOnLightColor.schema b/konsole-qml-plugin/assets/color-schemes/historic/BlackOnLightColor.schema
new file mode 100644
index 0000000..92e598a
--- /dev/null
+++ b/konsole-qml-plugin/assets/color-schemes/historic/BlackOnLightColor.schema
@@ -0,0 +1,42 @@
+# example scheme for konsole
+
+# the title is to appear in the menu.
+
+title Black on Light Color
+
+# foreground colors
+
+# note that the default background color is flagged
+# to become transparent when an image is present.
+
+# slot transparent bold
+# | | |
+# V V--color--V V V
+
+color 0 0 0 0 0 0 # regular foreground color (Black)
+rcolor 1 30 255 1 0 # regular background color (Light Color)
+
+color 2 0 0 0 0 0 # regular color 0 Black
+color 3 178 24 24 0 0 # regular color 1 Red
+color 4 24 178 24 0 0 # regular color 2 Green
+color 5 178 104 24 0 0 # regular color 3 Yellow
+color 6 24 24 178 0 0 # regular color 4 Blue
+color 7 178 24 178 0 0 # regular color 5 Magenta
+color 8 24 178 178 0 0 # regular color 6 Cyan
+color 9 178 178 178 0 0 # regular color 7 White
+
+# intensive colors
+
+# instead of changing the colors, we've flaged the text to become bold
+
+color 10 0 0 0 0 1 # intensive foreground color
+color 11 255 255 221 1 0 # intensive background color
+
+color 12 104 104 104 0 0 # intensive color 0
+color 13 255 84 84 0 0 # intensive color 1
+color 14 84 255 84 0 0 # intensive color 2
+color 15 255 255 84 0 0 # intensive color 3
+color 16 84 84 255 0 0 # intensive color 4
+color 17 255 84 255 0 0 # intensive color 5
+color 18 84 255 255 0 0 # intensive color 6
+color 19 255 255 255 0 0 # intensive color 7
diff --git a/konsole-qml-plugin/assets/color-schemes/historic/DarkPicture.schema b/konsole-qml-plugin/assets/color-schemes/historic/DarkPicture.schema
new file mode 100644
index 0000000..78ab3df
--- /dev/null
+++ b/konsole-qml-plugin/assets/color-schemes/historic/DarkPicture.schema
@@ -0,0 +1,44 @@
+# example scheme for konsole
+
+# the title is to appear in the menu.
+
+title Marble
+
+image tile Blkmarble.jpg
+
+# foreground colors
+
+# note that the default background color is flagged
+# to become transparent when an image is present.
+
+# slot transparent bold
+# | | |
+# V V--color--V V V
+
+color 0 255 255 255 0 0 # regular foreground color (White)
+color 1 0 0 0 1 0 # regular background color (Black)
+
+color 2 0 0 0 0 0 # regular color 0 Black
+color 3 178 24 24 0 0 # regular color 1 Red
+color 4 24 178 24 0 0 # regular color 2 Green
+color 5 178 104 24 0 0 # regular color 3 Yellow
+color 6 24 24 178 0 0 # regular color 4 Blue
+color 7 178 24 178 0 0 # regular color 5 Magenta
+color 8 24 178 178 0 0 # regular color 6 Cyan
+color 9 178 178 178 0 0 # regular color 7 White
+
+# intensive colors
+
+# instead of changing the colors, we've flaged the text to become bold
+
+color 10 255 255 255 0 1 # intensive foreground color
+color 11 0 0 0 1 0 # intensive background color
+
+color 12 104 104 104 0 0 # intensive color 0
+color 13 255 84 84 0 0 # intensive color 1
+color 14 84 255 84 0 0 # intensive color 2
+color 15 255 255 84 0 0 # intensive color 3
+color 16 84 84 255 0 0 # intensive color 4
+color 17 255 84 255 0 0 # intensive color 5
+color 18 84 255 255 0 0 # intensive color 6
+color 19 255 255 255 0 0 # intensive color 7
diff --git a/konsole-qml-plugin/assets/color-schemes/historic/Example.Schema b/konsole-qml-plugin/assets/color-schemes/historic/Example.Schema
new file mode 100644
index 0000000..8611d44
--- /dev/null
+++ b/konsole-qml-plugin/assets/color-schemes/historic/Example.Schema
@@ -0,0 +1,47 @@
+# example scheme for konsole
+
+# the title is to appear in the menu.
+
+title Ugly 1
+
+# add a wallpaper, if you like. Second word one of { tile,center,full }
+
+image tile /opt/kde/share/wallpapers/dancy_pants.jpg
+
+
+# foreground colors
+
+# note that the default background color is flagged
+# to become transparent when an image is present.
+
+# slot transparent bold
+# | | |
+# V V--color--V V V
+
+color 0 0 0 0 0 0 # regular foreground color (Black)
+color 1 255 255 255 1 0 # regular background color (White)
+
+color 2 0 0 0 0 0 # regular color 0 Black
+color 3 255 0 0 0 0 # regular color 1 Red
+color 4 0 255 0 0 0 # regular color 2 Green
+color 5 255 255 0 0 0 # regular color 3 Yellow
+color 6 0 0 255 0 0 # regular color 4 Blue
+color 7 255 0 255 0 0 # regular color 5 Magenta
+color 8 0 255 255 0 0 # regular color 6 Cyan
+color 9 255 255 255 0 0 # regular color 7 White
+
+# intensive colors
+
+# instead of changing the colors, we've flaged the text to become bold
+
+color 10 0 0 0 0 1 # intensive foreground color
+color 11 255 255 255 1 1 # intensive background color
+
+color 12 0 0 0 0 1 # intensive color 0
+color 13 255 0 0 0 1 # intensive color 1
+color 14 0 255 0 0 1 # intensive color 2
+color 15 255 255 0 0 1 # intensive color 3
+color 16 0 0 255 0 1 # intensive color 4
+color 17 255 0 255 0 1 # intensive color 5
+color 18 0 255 255 0 1 # intensive color 6
+color 19 255 255 255 0 1 # intensive color 7
diff --git a/konsole-qml-plugin/assets/color-schemes/historic/GreenOnBlack.schema b/konsole-qml-plugin/assets/color-schemes/historic/GreenOnBlack.schema
new file mode 100644
index 0000000..8f19c5b
--- /dev/null
+++ b/konsole-qml-plugin/assets/color-schemes/historic/GreenOnBlack.schema
@@ -0,0 +1,42 @@
+# example scheme for konsole
+
+# the title is to appear in the menu.
+
+title Green on Black
+
+# foreground colors
+
+# note that the default background color is flagged
+# to become transparent when an image is present.
+
+# slot transparent bold
+# | | |
+# V V--color--V V V
+
+color 0 24 240 24 0 0 # regular foreground color (Green)
+color 1 0 0 0 1 0 # regular background color (Black)
+
+color 2 0 0 0 0 0 # regular color 0 Black
+color 3 178 24 24 0 0 # regular color 1 Red
+color 4 24 178 24 0 0 # regular color 2 Green
+color 5 178 104 24 0 0 # regular color 3 Yellow
+color 6 24 24 178 0 0 # regular color 4 Blue
+color 7 178 24 178 0 0 # regular color 5 Magenta
+color 8 24 178 178 0 0 # regular color 6 Cyan
+color 9 178 178 178 0 0 # regular color 7 White
+
+# intensive colors
+
+# instead of changing the colors, we've flaged the text to become bold
+
+color 10 24 240 24 0 1 # intensive foreground color
+color 11 0 0 0 1 0 # intensive background color
+
+color 12 104 104 104 0 0 # intensive color 0
+color 13 255 84 84 0 0 # intensive color 1
+color 14 84 255 84 0 0 # intensive color 2
+color 15 255 255 84 0 0 # intensive color 3
+color 16 84 84 255 0 0 # intensive color 4
+color 17 255 84 255 0 0 # intensive color 5
+color 18 84 255 255 0 0 # intensive color 6
+color 19 255 255 255 0 0 # intensive color 7
diff --git a/konsole-qml-plugin/assets/color-schemes/historic/GreenTint.schema b/konsole-qml-plugin/assets/color-schemes/historic/GreenTint.schema
new file mode 100644
index 0000000..2786678
--- /dev/null
+++ b/konsole-qml-plugin/assets/color-schemes/historic/GreenTint.schema
@@ -0,0 +1,49 @@
+# linux color schema for konsole
+
+title Green Tint
+
+transparency 0.3 0 150 0
+
+# FIXME
+#
+# The flaw in this schema is that "blick" comes out on the
+# Linux console as intensive background, really.
+# Since this is not used in clients you'll hardly notice
+# it in practice.
+
+# foreground colors
+
+# note that the default background color is flagged
+# to become transparent when an image is present.
+
+# slot transparent bold
+# | red grn blu | |
+# V V--color--V V V
+
+color 0 178 178 178 0 0 # regular foreground color (White)
+color 1 0 0 0 1 0 # regular background color (Black)
+
+color 2 0 0 0 0 0 # regular color 0 Black
+color 3 178 24 24 0 0 # regular color 1 Red
+color 4 24 178 24 0 0 # regular color 2 Green
+color 5 178 104 24 0 0 # regular color 3 Yellow
+color 6 24 24 178 0 0 # regular color 4 Blue
+color 7 178 24 178 0 0 # regular color 5 Magenta
+color 8 24 178 178 0 0 # regular color 6 Cyan
+color 9 178 178 178 0 0 # regular color 7 White
+
+# intensive colors
+
+# instead of changing the colors, we've flaged the text to become bold
+
+color 10 255 255 255 0 0 # intensive foreground color
+color 11 104 104 104 1 0 # intensive background color
+
+color 12 104 104 104 0 0 # intensive color 0
+color 13 255 84 84 0 0 # intensive color 1
+color 14 84 255 84 0 0 # intensive color 2
+color 15 255 255 84 0 0 # intensive color 3
+color 16 84 84 255 0 0 # intensive color 4
+color 17 255 84 255 0 0 # intensive color 5
+color 18 84 255 255 0 0 # intensive color 6
+color 19 255 255 255 0 0 # intensive color 7
diff --git a/konsole-qml-plugin/assets/color-schemes/historic/GreenTint_MC.schema b/konsole-qml-plugin/assets/color-schemes/historic/GreenTint_MC.schema
new file mode 100644
index 0000000..954755e
--- /dev/null
+++ b/konsole-qml-plugin/assets/color-schemes/historic/GreenTint_MC.schema
@@ -0,0 +1,49 @@
+# linux color schema for konsole
+
+title Green Tint with Transparent MC
+
+transparency 0.3 0 150 0
+
+# FIXME
+#
+# The flaw in this schema is that "blick" comes out on the
+# Linux console as intensive background, really.
+# Since this is not used in clients you'll hardly notice
+# it in practice.
+
+# foreground colors
+
+# note that the default background color is flagged
+# to become transparent when an image is present.
+
+# slot transparent bold
+# | red grn blu | |
+# V V--color--V V V
+
+color 0 178 178 178 0 0 # regular foreground color (White)
+color 1 0 0 0 1 0 # regular background color (Black)
+
+color 2 0 0 0 0 0 # regular color 0 Black
+color 3 178 24 24 0 0 # regular color 1 Red
+color 4 24 178 24 0 0 # regular color 2 Green
+color 5 178 104 24 0 0 # regular color 3 Yellow
+color 6 0 0 0 1 0 # regular color 4 Blue
+color 7 178 24 178 0 0 # regular color 5 Magenta
+color 8 24 178 178 0 0 # regular color 6 Cyan
+color 9 178 178 178 0 0 # regular color 7 White
+
+# intensive colors
+
+# instead of changing the colors, we've flaged the text to become bold
+
+color 10 255 255 255 0 0 # intensive foreground color
+color 11 104 104 104 1 0 # intensive background color
+
+color 12 104 104 104 0 0 # intensive color 0
+color 13 255 84 84 0 0 # intensive color 1
+color 14 84 255 84 0 0 # intensive color 2
+color 15 255 255 84 0 0 # intensive color 3
+color 16 84 84 255 0 0 # intensive color 4
+color 17 255 84 255 0 0 # intensive color 5
+color 18 84 255 255 0 0 # intensive color 6
+color 19 255 255 255 0 0 # intensive color 7
diff --git a/konsole-qml-plugin/assets/color-schemes/historic/LightPicture.schema b/konsole-qml-plugin/assets/color-schemes/historic/LightPicture.schema
new file mode 100644
index 0000000..6acd7a8
--- /dev/null
+++ b/konsole-qml-plugin/assets/color-schemes/historic/LightPicture.schema
@@ -0,0 +1,44 @@
+# example scheme for konsole
+
+# the title is to appear in the menu.
+
+title Paper
+
+image tile Paper01.jpg
+
+# foreground colors
+
+# note that the default background color is flagged
+# to become transparent when an image is present.
+
+# slot transparent bold
+# | | |
+# V V--color--V V V
+
+color 0 0 0 0 0 0 # regular foreground color (Black)
+color 1 255 255 255 1 0 # regular background color (White)
+
+color 2 0 0 0 0 0 # regular color 0 Black
+color 3 178 24 24 0 0 # regular color 1 Red
+color 4 24 178 24 0 0 # regular color 2 Green
+color 5 178 104 24 0 0 # regular color 3 Yellow
+color 6 24 24 178 0 0 # regular color 4 Blue
+color 7 178 24 178 0 0 # regular color 5 Magenta
+color 8 24 178 178 0 0 # regular color 6 Cyan
+color 9 178 178 178 0 0 # regular color 7 White
+
+# intensive colors
+
+# instead of changing the colors, we've flaged the text to become bold
+
+color 10 0 0 0 0 1 # intensive foreground color
+color 11 255 255 255 1 0 # intensive background color
+
+color 12 104 104 104 0 0 # intensive color 0
+color 13 255 84 84 0 0 # intensive color 1
+color 14 84 255 84 0 0 # intensive color 2
+color 15 255 255 84 0 0 # intensive color 3
+color 16 84 84 255 0 0 # intensive color 4
+color 17 255 84 255 0 0 # intensive color 5
+color 18 84 255 255 0 0 # intensive color 6
+color 19 255 255 255 0 0 # intensive color 7
diff --git a/konsole-qml-plugin/assets/color-schemes/historic/Linux.schema b/konsole-qml-plugin/assets/color-schemes/historic/Linux.schema
new file mode 100644
index 0000000..a2515d9
--- /dev/null
+++ b/konsole-qml-plugin/assets/color-schemes/historic/Linux.schema
@@ -0,0 +1,47 @@
+# linux color schema for konsole
+
+title Linux Colors
+
+# FIXME
+#
+# The flaw in this schema is that "blick" comes out on the
+# Linux console as intensive background, really.
+# Since this is not used in clients you'll hardly notice
+# it in practice.
+
+# foreground colors
+
+# note that the default background color is flagged
+# to become transparent when an image is present.
+
+# slot transparent bold
+# | red grn blu | |
+# V V--color--V V V
+
+color 0 178 178 178 0 0 # regular foreground color (White)
+color 1 0 0 0 1 0 # regular background color (Black)
+
+color 2 0 0 0 0 0 # regular color 0 Black
+color 3 178 24 24 0 0 # regular color 1 Red
+color 4 24 178 24 0 0 # regular color 2 Green
+color 5 178 104 24 0 0 # regular color 3 Yellow
+color 6 24 24 178 0 0 # regular color 4 Blue
+color 7 178 24 178 0 0 # regular color 5 Magenta
+color 8 24 178 178 0 0 # regular color 6 Cyan
+color 9 178 178 178 0 0 # regular color 7 White
+
+# intensive colors
+
+# instead of changing the colors, we've flaged the text to become bold
+
+color 10 255 255 255 0 0 # intensive foreground color
+color 11 104 104 104 1 0 # intensive background color
+
+color 12 104 104 104 0 0 # intensive color 0
+color 13 255 84 84 0 0 # intensive color 1
+color 14 84 255 84 0 0 # intensive color 2
+color 15 255 255 84 0 0 # intensive color 3
+color 16 84 84 255 0 0 # intensive color 4
+color 17 255 84 255 0 0 # intensive color 5
+color 18 84 255 255 0 0 # intensive color 6
+color 19 255 255 255 0 0 # intensive color 7
diff --git a/konsole-qml-plugin/assets/color-schemes/historic/README.Schema b/konsole-qml-plugin/assets/color-schemes/historic/README.Schema
new file mode 100644
index 0000000..f737c14
--- /dev/null
+++ b/konsole-qml-plugin/assets/color-schemes/historic/README.Schema
@@ -0,0 +1,132 @@
+[README.Schema]
+
+The schemata offered in the Options/Schema menu are
+taken from from configurations files with a *.schema
+pattern either located in $KDEDIR/share/apps/konsole
+or ~/.kde/share/apps/konsole.
+
+Schemata allow to configure the color set that konsole
+uses, together with some more information on rendition
+processing.
+
+Syntax
+
+ File
+ :: { [Line] ['#' Comment] '\n' }
+
+ Line
+ :: "title" Title
+ :: "image" Usage PathToPictureFile
+ :: "transparency" Fade Red Green Blue
+ :: "color" Slot Red Green Blue Transparent Bold
+ :: "rcolor" Slot Saturation Value Transparent Bold
+ :: "sysfg" Slot Transparent Bold
+ :: "sysbg" Slot Transparent Bold
+
+Meaning
+
+ - Title is the text to appear in the Option/Schema menu.
+ It should be unique among all other schemata therefore.
+
+ - The "image" clause allows to place an image on the
+ konsole's background.
+
+ - Usage can be either
+ - "tile" - the image is tilewise replicated.
+ - "center" - the image is centered.
+ - "full" - the image is stretched to fit the window size.
+
+ - The Path of the picture can both be relative
+ (to kde wallpapers) or absolute.
+
+ When a schema uses a background image (or transparency)
+ one has to make at least one color slot transparent to
+ achive any visible effect. Please read below about the
+ "Transparent" field in color,sysbg,sysfg.
+
+ - The "transparency" clause picks and uses the background
+ of the desktop as if it where an image together with
+ a fade effect. This effect will fade the background
+ to the specified color.
+
+ The "Fade" is a real value between 0 and 1, indicating
+ the strength of the fade. A value of 0 will not change
+ the image, a value of 1 will make it the fade color
+ everywhere, and in between. This will make the "glas"
+ of the window be of the color given in the clause and
+ being more(1) or less(0) intransparent.
+
+ - The remaining clauses (color,sysbg,sysfg) are used
+ to setup konsoles rendition system.
+
+ To this end, konsole offers 20 color slots.
+
+ Slot Meaning
+ ----- --------------------------
+ 0 regular foreground color
+ 1 regular background color
+ 2-9 regular bgr color 0-7
+ 10 intensive foreground color
+ 11 intensive background color
+ 12-19 intensive bgr color 0-7
+
+ The traditional meaning of the "bgr" color codes
+ has a bitwise interpretation of an additive three
+ primary color scheme inherited from early EGA
+ color terminals.
+
+ Color Bits Colors
+ ----- ---- -------
+ 0 000 Black
+ 1 001 Red
+ 2 010 Green
+ 3 011 Yellow
+ 4 100 Blue
+ 5 101 Magenta
+ 6 110 Cyan
+ 7 111 White
+
+ One may or may not stick to this tradition.
+ Konsole allows to assign colors freely to slots.
+
+ The slots fall apart into two groups, regular
+ and intensive colors. The later are used when
+ BOLD rendition is used by the client.
+
+ Each of the groups have a default fore- and
+ background color and the said bgr colors.
+ Normal terminal processing will simply use
+ the default colors.
+
+ The color desired for a slot is indicated
+ in the Red Green Blue fields of the color
+ clause. Use the sysfg or the sysbg clause
+ to indicate the default fore and background
+ colors of the desktop.
+
+ To specify randomized color for a slot use
+ the clause rcolor. The two parameters to it
+ being Saturation - the amount of colour,
+ and Value, the darkness of the colour.
+
+ To use transparency/images and to simulate
+ the behavior of the xterm, one can supply
+ two additional tags to each slot:
+ - Transparent (0/1) meaning to show the
+ background picture, if any.
+ - Bold (0/1) to render characters bold.
+
+
+If you know about the escape codes, you might have
+noticed that intensive and bold rendition are sort
+of confused. This is inherited by the xterm which
+konsole is simulating.
+
+One can use the colortest.sh script supplied
+with the konsole source distribution to test
+a schema.
+
+The schema installed with konsole are more or
+less demonstrations and not really beauty,
+beside the Linux.schema, perhaps, which is
+made after the VGA colors.
diff --git a/konsole-qml-plugin/assets/color-schemes/historic/README.default.Schema b/konsole-qml-plugin/assets/color-schemes/historic/README.default.Schema
new file mode 100644
index 0000000..e024e5a
--- /dev/null
+++ b/konsole-qml-plugin/assets/color-schemes/historic/README.default.Schema
@@ -0,0 +1,44 @@
+# default scheme for konsole (only here for documentation purposes)
+
+# the title is to appear in the menu.
+
+title Konsole Defaults
+
+# image tile /opt/kde/share/wallpapers/gray2.jpg
+
+# foreground colors
+
+# note that the default background color is flagged
+# to become transparent when an image is present.
+
+# slot transparent bold
+# | | |
+# V V--color--V V V
+
+color 0 0 0 0 0 0 # regular foreground color (Black)
+color 1 255 255 255 1 0 # regular background color (White)
+
+color 2 0 0 0 0 0 # regular color 0 Black
+color 3 178 24 24 0 0 # regular color 1 Red
+color 4 24 178 24 0 0 # regular color 2 Green
+color 5 178 104 24 0 0 # regular color 3 Yellow
+color 6 24 24 178 0 0 # regular color 4 Blue
+color 7 178 24 178 0 0 # regular color 5 Magenta
+color 8 24 178 178 0 0 # regular color 6 Cyan
+color 9 178 178 178 0 0 # regular color 7 White
+
+# intensive colors
+
+# instead of changing the colors, we've flaged the text to become bold
+
+color 10 0 0 0 0 1 # intensive foreground color
+color 11 255 255 255 1 0 # intensive background color
+
+color 12 104 104 104 0 0 # intensive color 0
+color 13 255 84 84 0 0 # intensive color 1
+color 14 84 255 84 0 0 # intensive color 2
+color 15 255 255 84 0 0 # intensive color 3
+color 16 84 84 255 0 0 # intensive color 4
+color 17 255 84 255 0 0 # intensive color 5
+color 18 84 255 255 0 0 # intensive color 6
+color 19 255 255 255 0 0 # intensive color 7
diff --git a/konsole-qml-plugin/assets/color-schemes/historic/Transparent.schema b/konsole-qml-plugin/assets/color-schemes/historic/Transparent.schema
new file mode 100644
index 0000000..41f8dc0
--- /dev/null
+++ b/konsole-qml-plugin/assets/color-schemes/historic/Transparent.schema
@@ -0,0 +1,49 @@
+# linux color schema for konsole
+
+title Transparent Konsole
+
+transparency 0.35 0 0 0
+
+# FIXME
+#
+# The flaw in this schema is that "blick" comes out on the
+# Linux console as intensive background, really.
+# Since this is not used in clients you'll hardly notice
+# it in practice.
+
+# foreground colors
+
+# note that the default background color is flagged
+# to become transparent when an image is present.
+
+# slot transparent bold
+# | red grn blu | |
+# V V--color--V V V
+
+color 0 178 178 178 0 0 # regular foreground color (White)
+color 1 0 0 0 1 0 # regular background color (Black)
+
+color 2 0 0 0 0 0 # regular color 0 Black
+color 3 178 24 24 0 0 # regular color 1 Red
+color 4 24 178 24 0 0 # regular color 2 Green
+color 5 178 104 24 0 0 # regular color 3 Yellow
+color 6 24 24 178 0 0 # regular color 4 Blue
+color 7 178 24 178 0 0 # regular color 5 Magenta
+color 8 24 178 178 0 0 # regular color 6 Cyan
+color 9 178 178 178 0 0 # regular color 7 White
+
+# intensive colors
+
+# instead of changing the colors, we've flaged the text to become bold
+
+color 10 255 255 255 0 0 # intensive foreground color
+color 11 104 104 104 1 0 # intensive background color
+
+color 12 104 104 104 0 0 # intensive color 0
+color 13 255 84 84 0 0 # intensive color 1
+color 14 84 255 84 0 0 # intensive color 2
+color 15 255 255 84 0 0 # intensive color 3
+color 16 84 84 255 0 0 # intensive color 4
+color 17 255 84 255 0 0 # intensive color 5
+color 18 84 255 255 0 0 # intensive color 6
+color 19 255 255 255 0 0 # intensive color 7
diff --git a/konsole-qml-plugin/assets/color-schemes/historic/Transparent_MC.schema b/konsole-qml-plugin/assets/color-schemes/historic/Transparent_MC.schema
new file mode 100644
index 0000000..8991b9a
--- /dev/null
+++ b/konsole-qml-plugin/assets/color-schemes/historic/Transparent_MC.schema
@@ -0,0 +1,51 @@
+# linux color schema for konsole
+
+title Transparent for MC
+
+transparency 0.35 0 0 0
+
+# FIXME
+#
+# The flaw in this schema is that "blick" comes out on the
+# Linux console as intensive background, really.
+# Since this is not used in clients you'll hardly notice
+# it in practice.
+
+# foreground colors
+
+# note that the default background color is flagged
+# to become transparent when an image is present.
+
+# slot transparent bold
+# | red grn blu | |
+# V V--color--V V V
+
+color 0 178 178 178 0 0 # regular foreground color (White)
+color 1 0 0 0 1 0 # regular background color (Black)
+
+color 2 0 0 0 0 0 # regular color 0 Black
+color 3 178 24 24 0 0 # regular color 1 Red
+color 4 24 178 24 0 0 # regular color 2 Green
+color 5 178 104 24 0 0 # regular color 3 Yellow
+#color 6 24 24 178 0 0 # regular color 4 Blue
+color 6 0 0 0 1 0 # regular color 4 Blue
+
+color 7 178 24 178 0 0 # regular color 5 Magenta
+color 8 24 178 178 0 0 # regular color 6 Cyan
+color 9 178 178 178 0 0 # regular color 7 White
+
+# intensive colors
+
+# instead of changing the colors, we've flaged the text to become bold
+
+color 10 255 255 255 0 0 # intensive foreground color
+color 11 104 104 104 1 0 # intensive background color
+
+color 12 104 104 104 0 0 # intensive color 0
+color 13 255 84 84 0 0 # intensive color 1
+color 14 84 255 84 0 0 # intensive color 2
+color 15 255 255 84 0 0 # intensive color 3
+color 16 84 84 255 0 0 # intensive color 4
+color 17 255 84 255 0 0 # intensive color 5
+color 18 84 255 255 0 0 # intensive color 6
+color 19 255 255 255 0 0 # intensive color 7
diff --git a/konsole-qml-plugin/assets/color-schemes/historic/Transparent_darkbg.schema b/konsole-qml-plugin/assets/color-schemes/historic/Transparent_darkbg.schema
new file mode 100644
index 0000000..61792fa
--- /dev/null
+++ b/konsole-qml-plugin/assets/color-schemes/historic/Transparent_darkbg.schema
@@ -0,0 +1,42 @@
+# linux color schema for konsole
+
+title Transparent, Dark Background
+
+transparency 0.75 0 0 0
+
+# foreground colors
+
+# note that the default background color is flagged
+# to become transparent when an image is present.
+
+# slot transparent bold
+# | red grn blu | |
+# V V--color--V V V
+
+color 0 255 255 255 0 0 # regular foreground color (White)
+color 1 0 0 0 1 0 # regular background color (Black)
+
+color 2 0 0 0 0 0 # regular color 0 Black
+color 3 178 24 24 0 0 # regular color 1 Red
+color 4 24 178 24 0 0 # regular color 2 Green
+color 5 178 104 24 0 0 # regular color 3 Yellow
+color 6 24 24 178 0 0 # regular color 4 Blue
+color 7 178 24 178 0 0 # regular color 5 Magenta
+color 8 24 178 178 0 0 # regular color 6 Cyan
+color 9 178 178 178 0 0 # regular color 7 White
+
+# intensive colors
+
+# instead of changing the colors, we've flaged the text to become bold
+
+color 10 255 255 255 0 0 # intensive foreground color
+color 11 104 104 104 1 0 # intensive background color
+
+color 12 104 104 104 0 0 # intensive color 0
+color 13 255 84 84 0 0 # intensive color 1
+color 14 84 255 84 0 0 # intensive color 2
+color 15 255 255 84 0 0 # intensive color 3
+color 16 84 84 255 0 0 # intensive color 4
+color 17 255 84 255 0 0 # intensive color 5
+color 18 84 255 255 0 0 # intensive color 6
+color 19 255 255 255 0 0 # intensive color 7
diff --git a/konsole-qml-plugin/assets/color-schemes/historic/Transparent_lightbg.schema b/konsole-qml-plugin/assets/color-schemes/historic/Transparent_lightbg.schema
new file mode 100644
index 0000000..ce201f2
--- /dev/null
+++ b/konsole-qml-plugin/assets/color-schemes/historic/Transparent_lightbg.schema
@@ -0,0 +1,51 @@
+# linux color schema for konsole
+
+title Transparent, Light Background
+
+transparency 0.1 0 0 0
+
+# This is a schema for very light backgrounds. It makes some
+# hacks about the colors to make Midnight Commander transparent
+# and with suitable colors.
+
+# foreground colors
+
+# note that the default background color is flagged
+# to become transparent when an image is present.
+
+# slot transparent bold
+# | red grn blu | |
+# V V--color--V V V
+
+color 0 50 50 50 0 0 # regular foreground color (DarkGray)
+color 1 200 200 200 1 0 # regular background color (White)
+
+# color 2 0 0 0 0 0 # regular color 0 Black
+color 2 200 200 200 1 0 # regular background color (White)
+color 3 178 24 24 0 0 # regular color 1 Red
+color 4 24 178 24 0 0 # regular color 2 Green
+color 5 178 104 24 0 0 # regular color 3 Yellow
+#color 6 24 24 178 0 0 # regular color 4 Blue
+color 6 0 0 0 1 0 # regular color 4 Blue
+# Blue is transparent, to make MC transparent
+
+color 7 178 24 178 0 0 # regular color 5 Magenta
+color 8 24 178 178 0 0 # regular color 6 Cyan
+# color 9 178 178 178 0 0 # regular color 7 White
+color 9 50 50 50 0 0 # regular foreground color (DarkGray)
+
+# intensive colors
+
+# instead of changing the colors, we've flaged the text to become bold
+
+color 10 0 0 0 0 0 # intensive foreground color
+color 11 255 255 255 1 0 # intensive background color
+
+color 12 104 104 104 0 0 # intensive color 0
+color 13 255 84 84 0 0 # intensive color 1
+color 14 84 255 84 0 0 # intensive color 2
+color 15 255 255 84 0 0 # intensive color 3
+color 16 84 84 255 0 0 # intensive color 4
+color 17 255 84 255 0 0 # intensive color 5
+color 18 84 255 255 0 0 # intensive color 6
+color 19 255 255 255 0 0 # intensive color 7
diff --git a/konsole-qml-plugin/assets/color-schemes/historic/XTerm.schema b/konsole-qml-plugin/assets/color-schemes/historic/XTerm.schema
new file mode 100644
index 0000000..3ff787d
--- /dev/null
+++ b/konsole-qml-plugin/assets/color-schemes/historic/XTerm.schema
@@ -0,0 +1,46 @@
+# xterm color schema for konsole
+
+# xterm colors can be configured (almost) like
+# konsole colors can. This is the uncustomized
+# xterm schema.
+# Please refere to your local xterm setup files
+# if this schema differs.
+
+title XTerm Colors
+
+# foreground colors -------------------------------
+
+# note that the default background color is flagged
+# to become transparent when an image is present.
+
+# slot transparent bold
+# | red grn blu | |
+# V V--color--V V V
+
+color 0 0 0 0 0 0 # regular foreground color (Black)
+color 1 255 255 255 1 0 # regular background color (White)
+
+color 2 0 0 0 0 0 # regular color 0 Black
+color 3 205 0 0 0 0 # regular color 1 Red
+color 4 0 205 0 0 0 # regular color 2 Green
+color 5 205 205 0 0 0 # regular color 3 Yellow
+color 6 0 0 205 0 0 # regular color 4 Blue
+color 7 205 0 205 0 0 # regular color 5 Magenta
+color 8 0 205 205 0 0 # regular color 6 Cyan
+color 9 229 229 229 0 0 # regular color 7 White
+
+# intensive colors -------------------------------------------
+
+# for some strange reason, intensive colors are bold, also.
+
+color 10 77 77 77 0 1 # intensive foreground color
+color 11 255 255 255 1 1 # intensive background color
+
+color 12 77 77 77 0 1 # intensive color 0
+color 13 255 0 0 0 1 # intensive color 1
+color 14 0 255 0 0 1 # intensive color 2
+color 15 255 255 0 0 1 # intensive color 3
+color 16 0 0 255 0 1 # intensive color 4
+color 17 255 0 255 0 1 # intensive color 5
+color 18 0 255 255 0 1 # intensive color 6
+color 19 255 255 255 0 1 # intensive color 7
diff --git a/konsole-qml-plugin/assets/color-schemes/historic/syscolor.schema b/konsole-qml-plugin/assets/color-schemes/historic/syscolor.schema
new file mode 100644
index 0000000..a9a65ea
--- /dev/null
+++ b/konsole-qml-plugin/assets/color-schemes/historic/syscolor.schema
@@ -0,0 +1,44 @@
+# schema that uses system colors
+
+# the title is to appear in the menu.
+
+title System Colors
+
+# image none
+
+# foreground colors
+
+# note that the default background color is flagged
+# to become transparent when an image is present.
+
+# slot transparent bold
+# | | |
+# V V--color--V V V
+
+sysfg 0 0 0 # regular foreground color (system)
+sysbg 1 1 0 # regular background color (system)
+
+color 2 0 0 0 0 0 # regular color 0 Black
+color 3 178 24 24 0 0 # regular color 1 Red
+color 4 24 178 24 0 0 # regular color 2 Green
+color 5 178 104 24 0 0 # regular color 3 Yellow
+color 6 24 24 178 0 0 # regular color 4 Blue
+color 7 178 24 178 0 0 # regular color 5 Magenta
+color 8 24 178 178 0 0 # regular color 6 Cyan
+color 9 178 178 178 0 0 # regular color 7 White
+
+# intensive colors
+
+# instead of changing the colors, we've flaged the text to become bold
+
+color 10 0 0 0 0 1 # intensive foreground color
+color 11 255 255 255 1 0 # intensive background color
+
+color 12 104 104 104 0 0 # intensive color 0
+color 13 255 84 84 0 0 # intensive color 1
+color 14 84 255 84 0 0 # intensive color 2
+color 15 255 255 84 0 0 # intensive color 3
+color 16 84 84 255 0 0 # intensive color 4
+color 17 255 84 255 0 0 # intensive color 5
+color 18 84 255 255 0 0 # intensive color 6
+color 19 255 255 255 0 0 # intensive color 7
diff --git a/konsole-qml-plugin/assets/color-schemes/historic/vim.schema b/konsole-qml-plugin/assets/color-schemes/historic/vim.schema
new file mode 100644
index 0000000..f29e3f7
--- /dev/null
+++ b/konsole-qml-plugin/assets/color-schemes/historic/vim.schema
@@ -0,0 +1,40 @@
+# VIM-recommended color schema for konsole
+
+# VIM (VI improved) in "help xiterm" recommends these colors for xterm.
+
+title VIM Colors
+
+# foreground colors -------------------------------
+
+# note that the default background color is flagged
+# to become transparent when an image is present.
+
+# slot transparent bold
+# | red grn blu | |
+# V V--color--V V V
+
+color 0 0 0 0 0 0 # regular foreground color (Black)
+color 1 255 255 255 1 0 # regular background color (White)
+
+color 2 0 0 0 0 0 # regular color 0 Black
+color 3 192 0 0 0 0 # regular color 1 Red
+color 4 0 128 0 0 0 # regular color 2 Green
+color 5 128 128 0 0 0 # regular color 3 Yellow
+color 6 0 0 192 0 0 # regular color 4 Blue
+color 7 192 0 192 0 0 # regular color 5 Magenta
+color 8 0 128 128 0 0 # regular color 6 Cyan
+color 9 192 192 192 0 0 # regular color 7 White
+
+# intensive colors -------------------------------------------
+
+color 10 77 77 77 0 1 # intensive foreground color
+color 11 255 255 255 1 1 # intensive background color
+
+color 12 128 128 128 0 0 # intensive color 0
+color 13 255 96 96 0 0 # intensive color 1
+color 14 0 255 0 0 0 # intensive color 2
+color 15 255 255 0 0 0 # intensive color 3
+color 16 128 128 255 0 0 # intensive color 4
+color 17 255 64 255 0 0 # intensive color 5
+color 18 0 255 255 0 0 # intensive color 6
+color 19 255 255 255 0 0 # intensive color 7
diff --git a/konsole-qml-plugin/assets/kb-layouts/README b/konsole-qml-plugin/assets/kb-layouts/README
new file mode 100644
index 0000000..4e94e5e
--- /dev/null
+++ b/konsole-qml-plugin/assets/kb-layouts/README
@@ -0,0 +1,72 @@
+[README.KeyTab]
+
+The keytabs offered in the Options/Keyboard menu are
+taken from from configurations files with a *.keytab
+pattern either located in $KDEDIR/share/apps/konsole
+or ~/.kde/share/apps/konsole.
+
+Keytabs allow to configure the behavior of konsole
+on keyboard events, especially for functions keys.
+Please have a look into the README.keyboard file, too.
+
+The syntax is that each entry has the form :
+
+ "key" Keyname { ("+"|"-") Modename } ":" (String|Operation)
+
+Keynames are those defined in with the
+"Qt::Key_" prefix removed.
+
+Mode names are:
+
+ - Shift : Shift Key pressed
+ - Alt : Alt Key pressed
+ - Control : Control Key pressed
+
+ ( The VT100 emulation has modes that can affect the
+ sequences emitted by certain keys. These modes are
+ under control of the client program.
+
+ - Newline : effects Return and Enter key.
+ - Application : effects Up and Down key.
+ - Ansi : effects Up and Down key (This is for VT52, really).
+
+ Since sending a state to a program that has set the state
+ itself is positivly wrong and obsolete design, better forget
+ about this nasty detail. I may well remove this "feature"
+ in a future clean up round. )
+
+ A "+" preceeding a Modename means the Key is pressed.
+ A "-" preceeding a Modename means the Key is not pressed.
+ If no mode is given it means don't care.
+
+ Note that the combination of Key and Modes (set/reset)
+ has to be unique. This means, that
+
+ key A + Shift : "A"
+ key A : "a"
+
+ will not accept the small letter "a" rule as expected,
+ one has to add a "- Shift" to the last clause. Use
+ the stdout/stderr dianostics of konsole when modifying
+ keytabs to find problems like this.
+
+Operations are
+
+ - scrollUpLine : scroll up one line in the history log
+ - scrollUpPage : scroll up one page in the history log
+ - scrollDownLine : scroll down one line in the history log
+ - scrollDownPage : scroll down one page in the history log
+ - emitClipboard : "paste" the current clipboard
+ - emitSelection : "paste" the current selection
+
+Strings have the syntax of C strings,
+one may use the following escapes:
+
+ - \E - escape
+ - \\ - backslash
+ - \" - double quote
+ - \t - tab
+ - \r - return
+ - \n - newline
+ - \b - backspace
+ - \xHH - where HH are two hex digits
diff --git a/konsole-qml-plugin/assets/kb-layouts/default.keytab b/konsole-qml-plugin/assets/kb-layouts/default.keytab
new file mode 100644
index 0000000..aebd8cf
--- /dev/null
+++ b/konsole-qml-plugin/assets/kb-layouts/default.keytab
@@ -0,0 +1,169 @@
+# [README.default.Keytab] Default Keyboard Table
+#
+# To customize your keyboard, copy this file to something
+# ending with .keytab and change it to meet you needs.
+# Please read the README.KeyTab and the README.keyboard
+# in this case.
+#
+# --------------------------------------------------------------
+
+keyboard "Default (XFree 4)"
+
+# --------------------------------------------------------------
+#
+# Note that this particular table is a "risc" version made to
+# ease customization without bothering with obsolete details.
+# See VT100.keytab for the more hairy stuff.
+#
+# --------------------------------------------------------------
+
+# common keys
+
+key Escape : "\E"
+
+key Tab -Shift : "\t"
+key Tab +Shift+Ansi : "\E[Z"
+key Tab +Shift-Ansi : "\t"
+key Backtab +Ansi : "\E[Z"
+key Backtab -Ansi : "\t"
+
+key Return-Shift-NewLine : "\r"
+key Return-Shift+NewLine : "\r\n"
+
+key Return+Shift : "\EOM"
+
+# Backspace and Delete codes are preserving CTRL-H.
+
+key Backspace : "\x7f"
+
+# Arrow keys in VT52 mode
+# shift up/down are reserved for scrolling.
+# shift left/right are reserved for switching between tabs (this is hardcoded).
+
+key Up -Shift-Ansi : "\EA"
+key Down -Shift-Ansi : "\EB"
+key Right-Shift-Ansi : "\EC"
+key Left -Shift-Ansi : "\ED"
+
+# Arrow keys in ANSI mode with Application - and Normal Cursor Mode)
+
+key Up -Shift-AnyMod+Ansi+AppCuKeys : "\EOA"
+key Down -Shift-AnyMod+Ansi+AppCuKeys : "\EOB"
+key Right -Shift-AnyMod+Ansi+AppCuKeys : "\EOC"
+key Left -Shift-AnyMod+Ansi+AppCuKeys : "\EOD"
+
+key Up -Shift-AnyMod+Ansi-AppCuKeys : "\E[A"
+key Down -Shift-AnyMod+Ansi-AppCuKeys : "\E[B"
+key Right -Shift-AnyMod+Ansi-AppCuKeys : "\E[C"
+key Left -Shift-AnyMod+Ansi-AppCuKeys : "\E[D"
+
+key Up -Shift+AnyMod+Ansi : "\E[1;*A"
+key Down -Shift+AnyMod+Ansi : "\E[1;*B"
+key Right -Shift+AnyMod+Ansi : "\E[1;*C"
+key Left -Shift+AnyMod+Ansi : "\E[1;*D"
+
+# Keypad keys with NumLock ON
+# (see "Numeric Keypad" section at http://www.nw.com/nw/WWW/products/wizcon/vt100.html )
+#
+# Not enabled for now because it breaks the keypad in Vim.
+#
+#key 0 +KeyPad+AppKeyPad : "\EOp"
+#key 1 +KeyPad+AppKeyPad : "\EOq"
+#key 2 +KeyPad+AppKeyPad : "\EOr"
+#key 3 +KeyPad+AppKeyPad : "\EOs"
+#key 4 +KeyPad+AppKeyPad : "\EOt"
+#key 5 +KeyPad+AppKeyPad : "\EOu"
+#key 6 +KeyPad+AppKeyPad : "\EOv"
+#key 7 +KeyPad+AppKeyPad : "\EOw"
+#key 8 +KeyPad+AppKeyPad : "\EOx"
+#key 9 +KeyPad+AppKeyPad : "\EOy"
+#key + +KeyPad+AppKeyPad : "\EOl"
+#key - +KeyPad+AppKeyPad : "\EOm"
+#key . +KeyPad+AppKeyPad : "\EOn"
+#key * +KeyPad+AppKeyPad : "\EOM"
+#key Enter +KeyPad+AppKeyPad : "\r"
+
+# Keypad keys with NumLock Off
+key Up -Shift+Ansi+AppCuKeys+KeyPad : "\EOA"
+key Down -Shift+Ansi+AppCuKeys+KeyPad : "\EOB"
+key Right -Shift+Ansi+AppCuKeys+KeyPad : "\EOC"
+key Left -Shift+Ansi+AppCuKeys+KeyPad : "\EOD"
+
+key Up -Shift+Ansi-AppCuKeys+KeyPad : "\E[A"
+key Down -Shift+Ansi-AppCuKeys+KeyPad : "\E[B"
+key Right -Shift+Ansi-AppCuKeys+KeyPad : "\E[C"
+key Left -Shift+Ansi-AppCuKeys+KeyPad : "\E[D"
+
+key Home +AppCuKeys+KeyPad : "\EOH"
+key End +AppCuKeys+KeyPad : "\EOF"
+key Home -AppCuKeys+KeyPad : "\E[H"
+key End -AppCuKeys+KeyPad : "\E[F"
+
+key Insert +KeyPad : "\E[2~"
+key Delete +KeyPad : "\E[3~"
+key Prior -Shift+KeyPad : "\E[5~"
+key Next -Shift+KeyPad : "\E[6~"
+
+# other grey PC keys
+
+key Enter+NewLine : "\r\n"
+key Enter-NewLine : "\r"
+
+key Home -AnyMod-AppCuKeys : "\E[H"
+key End -AnyMod-AppCuKeys : "\E[F"
+key Home -AnyMod+AppCuKeys : "\EOH"
+key End -AnyMod+AppCuKeys : "\EOF"
+key Home +AnyMod : "\E[1;*H"
+key End +AnyMod : "\E[1;*F"
+
+key Insert -AnyMod : "\E[2~"
+key Delete -AnyMod : "\E[3~"
+key Insert +AnyMod : "\E[2;*~"
+key Delete +AnyMod : "\E[3;*~"
+
+key Prior -Shift-AnyMod : "\E[5~"
+key Next -Shift-AnyMod : "\E[6~"
+key Prior -Shift+AnyMod : "\E[5;*~"
+key Next -Shift+AnyMod : "\E[6;*~"
+
+# Function keys
+key F1 -AnyMod : "\EOP"
+key F2 -AnyMod : "\EOQ"
+key F3 -AnyMod : "\EOR"
+key F4 -AnyMod : "\EOS"
+key F5 -AnyMod : "\E[15~"
+key F6 -AnyMod : "\E[17~"
+key F7 -AnyMod : "\E[18~"
+key F8 -AnyMod : "\E[19~"
+key F9 -AnyMod : "\E[20~"
+key F10 -AnyMod : "\E[21~"
+key F11 -AnyMod : "\E[23~"
+key F12 -AnyMod : "\E[24~"
+
+key F1 +AnyMod : "\EO*P"
+key F2 +AnyMod : "\EO*Q"
+key F3 +AnyMod : "\EO*R"
+key F4 +AnyMod : "\EO*S"
+key F5 +AnyMod : "\E[15;*~"
+key F6 +AnyMod : "\E[17;*~"
+key F7 +AnyMod : "\E[18;*~"
+key F8 +AnyMod : "\E[19;*~"
+key F9 +AnyMod : "\E[20;*~"
+key F10 +AnyMod : "\E[21;*~"
+key F11 +AnyMod : "\E[23;*~"
+key F12 +AnyMod : "\E[24;*~"
+
+# Work around dead keys
+
+key Space +Control : "\x00"
+
+# Some keys are used by konsole to cause operations.
+# The scroll* operations refer to the history buffer.
+
+key Up +Shift-AppScreen : scrollLineUp
+key Prior +Shift-AppScreen : scrollPageUp
+key Down +Shift-AppScreen : scrollLineDown
+key Next +Shift-AppScreen : scrollPageDown
+
+key ScrollLock : scrollLock
+
diff --git a/konsole-qml-plugin/assets/kb-layouts/historic/vt100.keytab b/konsole-qml-plugin/assets/kb-layouts/historic/vt100.keytab
new file mode 100644
index 0000000..dec49ba
--- /dev/null
+++ b/konsole-qml-plugin/assets/kb-layouts/historic/vt100.keytab
@@ -0,0 +1,133 @@
+# [vt100.keytab] Konsole Keyboard Table (VT100 keys)
+#
+# --------------------------------------------------------------
+
+keyboard "vt100 (historical)"
+
+# --------------------------------------------------------------
+#
+# This configuration table allows to customize the
+# meaning of the keys.
+#
+# The syntax is that each entry has the form :
+#
+# "key" Keyname { ("+"|"-") Modename } ":" (String|Operation)
+#
+# Keynames are those defined in with the
+# "Qt::Key_" removed. (We'd better insert the list here)
+#
+# Mode names are :
+#
+# - Shift
+# - Alt
+# - Control
+#
+# The VT100 emulation has two modes that can affect the
+# sequences emitted by certain keys. These modes are
+# under control of the client program.
+#
+# - Newline : effects Return and Enter key.
+# - Application : effects Up and Down key.
+#
+# - Ansi : effects Up and Down key (This is for VT52, really).
+#
+# Operations are
+#
+# - scrollUpLine
+# - scrollUpPage
+# - scrollDownLine
+# - scrollDownPage
+#
+# - emitSelection
+#
+# If the key is not found here, the text of the
+# key event as provided by QT is emitted, possibly
+# preceeded by ESC if the Alt key is pressed.
+#
+# --------------------------------------------------------------
+
+key Escape : "\E"
+key Tab : "\t"
+
+# VT100 can add an extra \n after return.
+# The NewLine mode is set by an escape sequence.
+
+key Return-NewLine : "\r"
+key Return+NewLine : "\r\n"
+
+# Some desperately try to save the ^H.
+
+key Backspace : "\x7f"
+key Delete : "\E[3~"
+
+# These codes are for the VT52 mode of VT100
+# The Ansi mode (i.e. VT100 mode) is set by
+# an escape sequence
+
+key Up -Shift-Ansi : "\EA"
+key Down -Shift-Ansi : "\EB"
+key Right-Shift-Ansi : "\EC"
+key Left -Shift-Ansi : "\ED"
+
+# VT100 emits a mode bit together
+# with the arrow keys.The AppCuKeys
+# mode is set by an escape sequence.
+
+key Up -Shift+Ansi+AppCuKeys : "\EOA"
+key Down -Shift+Ansi+AppCuKeys : "\EOB"
+key Right-Shift+Ansi+AppCuKeys : "\EOC"
+key Left -Shift+Ansi+AppCuKeys : "\EOD"
+
+key Up -Shift+Ansi-AppCuKeys : "\E[A"
+key Down -Shift+Ansi-AppCuKeys : "\E[B"
+key Right-Shift+Ansi-AppCuKeys : "\E[C"
+key Left -Shift+Ansi-AppCuKeys : "\E[D"
+
+# function keys (FIXME: make pf1-pf4)
+
+key F1 : "\E[11~"
+key F2 : "\E[12~"
+key F3 : "\E[13~"
+key F4 : "\E[14~"
+key F5 : "\E[15~"
+
+key F6 : "\E[17~"
+key F7 : "\E[18~"
+key F8 : "\E[19~"
+key F9 : "\E[20~"
+key F10 : "\E[21~"
+key F11 : "\E[23~"
+key F12 : "\E[24~"
+
+key Home : "\E[H"
+key End : "\E[F"
+
+key Prior -Shift : "\E[5~"
+key Next -Shift : "\E[6~"
+key Insert-Shift : "\E[2~"
+
+# Keypad-Enter. See comment on Return above.
+
+key Enter+NewLine : "\r\n"
+key Enter-NewLine : "\r"
+
+key Space +Control : "\x00"
+
+# some of keys are used by konsole.
+
+key Up +Shift : scrollLineUp
+key Prior +Shift : scrollPageUp
+key Down +Shift : scrollLineDown
+key Next +Shift : scrollPageDown
+
+key ScrollLock : scrollLock
+
+
+#----------------------------------------------------------
+
+# keypad characters as offered by Qt
+# cannot be recognized as such.
+
+#----------------------------------------------------------
+
+# Following other strings as emitted by konsole.
diff --git a/konsole-qml-plugin/assets/kb-layouts/historic/x11r5.keytab b/konsole-qml-plugin/assets/kb-layouts/historic/x11r5.keytab
new file mode 100644
index 0000000..75ba06e
--- /dev/null
+++ b/konsole-qml-plugin/assets/kb-layouts/historic/x11r5.keytab
@@ -0,0 +1,71 @@
+# [x11r5.Keytab] Keyboard Table for X11 R5
+
+keyboard "XTerm (XFree 3.x.x)"
+
+# --------------------------------------------------------------
+#
+# Note that this particular table is a "risc" version made to
+# ease customization without bothering with obsolete details.
+# See VT100.keytab for the more hairy stuff.
+#
+# --------------------------------------------------------------
+
+# common keys
+
+key Escape : "\E"
+key Tab : "\t"
+
+key Return : "\r"
+
+# Backspace and Delete codes are preserving CTRL-H.
+
+key Backspace : "\x7f"
+
+# cursor keys
+
+key Up -Shift : "\EOA"
+key Down -Shift : "\EOB"
+key Right -Shift : "\EOC"
+key Left -Shift : "\EOD"
+
+# other grey PC keys
+
+key Enter : "\r"
+
+key Home : "\E[1~"
+key Insert-Shift : "\E[2~"
+key Delete : "\E[3~"
+key End : "\E[4~"
+key Prior -Shift : "\E[5~"
+key Next -Shift : "\E[6~"
+
+# function keys
+
+key F1 : "\E[11~"
+key F2 : "\E[12~"
+key F3 : "\E[13~"
+key F4 : "\E[14~"
+key F5 : "\E[15~"
+key F6 : "\E[17~"
+key F7 : "\E[18~"
+key F8 : "\E[19~"
+key F9 : "\E[20~"
+key F10 : "\E[21~"
+key F11 : "\E[23~"
+key F12 : "\E[24~"
+
+# Work around dead keys
+
+key Space +Control : "\x00"
+
+# Some keys are used by konsole to cause operations.
+# The scroll* operations refer to the history buffer.
+
+key Up +Shift : scrollLineUp
+key Prior +Shift : scrollPageUp
+key Down +Shift : scrollLineDown
+key Next +Shift : scrollPageDown
+
+key ScrollLock : scrollLock
+
+# keypad characters are not offered differently by Qt.
diff --git a/konsole-qml-plugin/assets/kb-layouts/linux.keytab b/konsole-qml-plugin/assets/kb-layouts/linux.keytab
new file mode 100644
index 0000000..b42f95c
--- /dev/null
+++ b/konsole-qml-plugin/assets/kb-layouts/linux.keytab
@@ -0,0 +1,164 @@
+# [linux.keytab] Konsole Keyboard Table (Linux console keys)
+#
+# --------------------------------------------------------------
+
+# NOT TESTED, MAY NEED SOME CLEANUPS
+keyboard "Linux console"
+
+# --------------------------------------------------------------
+#
+# This configuration table allows to customize the
+# meaning of the keys.
+#
+# The syntax is that each entry has the form :
+#
+# "key" Keyname { ("+"|"-") Modename } ":" (String|Operation)
+#
+# Keynames are those defined in with the
+# "Qt::Key_" removed. (We'd better insert the list here)
+#
+# Mode names are :
+#
+# - Shift
+# - Alt
+# - Control
+#
+# The VT100 emulation has two modes that can affect the
+# sequences emitted by certain keys. These modes are
+# under control of the client program.
+#
+# - Newline : effects Return and Enter key.
+# - Application : effects Up and Down key.
+#
+# - Ansi : effects Up and Down key (This is for VT52, really).
+#
+# Operations are
+#
+# - scrollUpLine
+# - scrollUpPage
+# - scrollDownLine
+# - scrollDownPage
+#
+# - emitSelection
+#
+# If the key is not found here, the text of the
+# key event as provided by QT is emitted, possibly
+# preceeded by ESC if the Alt key is pressed.
+#
+# --------------------------------------------------------------
+
+key Escape : "\E"
+key Tab : "\t"
+
+# VT100 can add an extra \n after return.
+# The NewLine mode is set by an escape sequence.
+
+key Return-NewLine : "\r"
+key Return+NewLine : "\r\n"
+
+# Some desperately try to save the ^H.
+
+key Backspace : "\x7f"
+key Delete : "\E[3~"
+
+# These codes are for the VT52 mode of VT100
+# The Ansi mode (i.e. VT100 mode) is set by
+# an escape sequence
+
+key Up -Shift-Ansi : "\EA"
+key Down -Shift-Ansi : "\EB"
+key Right-Shift-Ansi : "\EC"
+key Left -Shift-Ansi : "\ED"
+
+# VT100 emits a mode bit together
+# with the arrow keys.The AppCuKeys
+# mode is set by an escape sequence.
+
+key Up -Shift+Ansi+AppCuKeys : "\EOA"
+key Down -Shift+Ansi+AppCuKeys : "\EOB"
+key Right-Shift+Ansi+AppCuKeys : "\EOC"
+key Left -Shift+Ansi+AppCuKeys : "\EOD"
+
+key Up -Shift+Ansi-AppCuKeys : "\E[A"
+key Down -Shift+Ansi-AppCuKeys : "\E[B"
+key Right-Shift+Ansi-AppCuKeys : "\E[C"
+key Left -Shift+Ansi-AppCuKeys : "\E[D"
+
+# linux functions keys F1-F5 differ from xterm
+
+key F1 : "\E[[A"
+key F2 : "\E[[B"
+key F3 : "\E[[C"
+key F4 : "\E[[D"
+key F5 : "\E[[E"
+
+key F6 : "\E[17~"
+key F7 : "\E[18~"
+key F8 : "\E[19~"
+key F9 : "\E[20~"
+key F10 : "\E[21~"
+key F11 : "\E[23~"
+key F12 : "\E[24~"
+
+key Home : "\E[1~"
+key End : "\E[4~"
+
+key Prior -Shift : "\E[5~"
+key Next -Shift : "\E[6~"
+key Insert-Shift : "\E[2~"
+
+# Keypad-Enter. See comment on Return above.
+
+key Enter+NewLine : "\r\n"
+key Enter-NewLine : "\r"
+
+key Space +Control : "\x00"
+
+# linux term ctrl seq
+
+key A +Control : "\x01"
+key B +Control : "\x02"
+key C +Control : "\x03"
+key D +Control : "\x04"
+key E +Control : "\x05"
+key F +Control : "\x06"
+key G +Control : "\x07"
+key H +Control : "\x08"
+key I +Control : "\x09"
+key J +Control : "\x0a"
+key K +Control : "\x0b"
+key L +Control : "\x0c"
+key M +Control : "\x0d"
+key N +Control : "\x0e"
+key O +Control : "\x0f"
+key P +Control : "\x10"
+key Q +Control : "\x11"
+key R +Control : "\x12"
+key S +Control : "\x13"
+key T +Control : "\x14"
+key U +Control : "\x15"
+key V +Control : "\x16"
+key W +Control : "\x17"
+key X +Control : "\x18"
+key Y +Control : "\x19"
+key Z +Control : "\x1a"
+
+
+
+# some of keys are used by konsole.
+
+key Up +Shift : scrollLineUp
+key Prior +Shift : scrollPageUp
+key Down +Shift : scrollLineDown
+key Next +Shift : scrollPageDown
+
+key ScrollLock : scrollLock
+
+#----------------------------------------------------------
+
+# keypad characters as offered by Qt
+# cannot be recognized as such.
+
+#----------------------------------------------------------
+
+# Following other strings as emitted by konsole.
diff --git a/konsole-qml-plugin/assets/kb-layouts/macbook.keytab b/konsole-qml-plugin/assets/kb-layouts/macbook.keytab
new file mode 100644
index 0000000..adbc784
--- /dev/null
+++ b/konsole-qml-plugin/assets/kb-layouts/macbook.keytab
@@ -0,0 +1,175 @@
+# [README.default.Keytab] Buildin Keyboard Table
+#
+# To customize your keyboard, copy this file to something
+# ending with .keytab and change it to meet you needs.
+# Please read the README.KeyTab and the README.keyboard
+# in this case.
+#
+# --------------------------------------------------------------
+
+keyboard "Default (XFree 4)"
+
+# --------------------------------------------------------------
+#
+# Note that this particular table is a "risc" version made to
+# ease customization without bothering with obsolete details.
+# See VT100.keytab for the more hairy stuff.
+#
+# --------------------------------------------------------------
+
+# common keys
+
+key Escape : "\x1b"
+
+#key Control : "^"
+
+key Tab -Shift : "\t"
+key Tab +Shift+Ansi : "\E[Z"
+key Tab +Shift-Ansi : "\t"
+key Backtab +Ansi : "\E[Z"
+key Backtab -Ansi : "\t"
+
+key Return-Shift-NewLine : "\r"
+key Return-Shift+NewLine : "\r\n"
+
+key Return+Shift : "\EOM"
+
+# Backspace and Delete codes are preserving CTRL-H.
+
+key Backspace : "\x7f"
+
+# Arrow keys in VT52 mode
+# shift up/down are reserved for scrolling.
+# shift left/right are reserved for switching between tabs (this is hardcoded).
+
+
+# Command + C
+# on mac - Control=Command, Meta=Ctrl
+# do not use Control+C for interrupt signal - it's used for "Copy to clipboard"
+#key Control +C : "\x03"
+key Meta +C: "\x03"
+
+
+# Arrow keys in ANSI mode with Application - and Normal Cursor Mode)
+
+key Up -Shift+Ansi-AppCuKeys : "\E[A"
+key Down -Shift+Ansi-AppCuKeys : "\E[B"
+key Right-Shift+Ansi-AppCuKeys : "\E[C"
+key Left -Shift+Ansi-AppCuKeys : "\E[D"
+
+key Up -Ansi : "\E[1;*A"
+key Down -Ansi : "\E[1;*B"
+key Right -Ansi : "\E[1;*C"
+key Left -Ansi : "\E[1;*D"
+
+#key Up -Shift-Ansi : "\EA"
+#key Down -Shift-Ansi : "\EB"
+#key Right-Shift-Ansi : "\EC"
+#key Left -Shift-Ansi : "\ED"
+
+#key Up -Shift-AnyMod+Ansi-AppCuKeys : "\E[A"
+#key Down -Shift-AnyMod+Ansi-AppCuKeys : "\E[B"
+#key Right -Shift-AnyMod+Ansi-AppCuKeys : "\E[C"
+#key Left -Shift-AnyMod+Ansi-AppCuKeys : "\E[D"
+
+#key Up -Shift-AnyMod+Ansi-AppCuKeys : "\EOA"
+#key Down -Shift-AnyMod+Ansi-AppCuKeys : "\EOB"
+#key Right -Shift-AnyMod+Ansi-AppCuKeys : "\EOC"
+#key Left -Shift-AnyMod+Ansi-AppCuKeys : "\EOD"
+
+#key Up -Shift-AnyMod+Ansi : "\E[1;*A"
+#key Down -Shift-AnyMod+Ansi : "\E[1;*B"
+#key Right -Shift-AnyMod+Ansi : "\E[1;*C"
+#key Left -Shift-AnyMod+Ansi : "\E[1;*D"
+
+# other grey PC keys
+
+key Enter+NewLine : "\r\n"
+key Enter-NewLine : "\r"
+
+key Home -AnyMod -AppCuKeys : "\E[H"
+key End -AnyMod -AppCuKeys : "\E[F"
+key Home -AnyMod +AppCuKeys : "\EOH"
+key End -AnyMod +AppCuKeys : "\EOF"
+key Home +AnyMod : "\E[1;*H"
+key End +AnyMod : "\E[1;*F"
+
+key Insert -AnyMod : "\E[2~"
+key Delete -AnyMod : "\E[3~"
+key Insert +AnyMod : "\E[2;*~"
+key Delete +AnyMod : "\E[3;*~"
+
+key Prior -Shift-AnyMod : "\E[5~"
+key Next -Shift-AnyMod : "\E[6~"
+key Prior -Shift+AnyMod : "\E[5;*~"
+key Next -Shift+AnyMod : "\E[6;*~"
+
+# Function keys
+#key F1 -AnyMod : "\EOP"
+#key F2 -AnyMod : "\EOQ"
+#key F3 -AnyMod : "\EOR"
+#key F4 -AnyMod : "\EOS"
+#define ALT_KP_0 "\033Op"
+#define ALT_KP_1 "\033Oq"
+#define ALT_KP_2 "\033Or"
+#define ALT_KP_3 "\033Os"
+#define ALT_KP_4 "\033Ot"
+#define ALT_KP_5 "\033Ou"
+#define ALT_KP_6 "\033Ov"
+#define ALT_KP_7 "\033Ow"
+#define ALT_KP_8 "\033Ox"
+#define ALT_KP_9 "\033Oy"
+
+key F1 -AnyMod : "\EOP"
+key F2 -AnyMod : "\EOQ"
+key F3 -AnyMod : "\EOR"
+key F4 -AnyMod : "\EOS"
+key F5 -AnyMod : "\EOT"
+key F6 -AnyMod : "\EOU"
+key F7 -AnyMod : "\EOV"
+key F8 -AnyMod : "\EOW"
+key F9 -AnyMod : "\EOX"
+key F10 -AnyMod : "\EOY"
+
+#key F5 -AnyMod : "\E[15~"
+#key F6 -AnyMod : "\E[17~"
+#key F7 -AnyMod : "\E[18~"
+#key F8 -AnyMod : "\E[19~"
+#key F9 -AnyMod : "\E[20~"
+#key F10 -AnyMod : "\E[21~"
+#key F11 -AnyMod : "\E[23~"
+#key F12 -AnyMod : "\E[24~"
+
+#key F1 +AnyMod : "\EO*P"
+#key F2 +AnyMod : "\EO*Q"
+#key F3 +AnyMod : "\EO*R"
+#key F4 +AnyMod : "\EO*S"
+#key F5 +AnyMod : "\E[15;*~"
+#key F6 +AnyMod : "\E[17;*~"
+#key F7 +AnyMod : "\E[18;*~"
+#key F8 +AnyMod : "\E[19;*~"
+#key F9 +AnyMod : "\E[20;*~"
+#key F10 +AnyMod : "\E[21;*~"
+#key F11 +AnyMod : "\E[23;*~"
+#key F12 +AnyMod : "\E[24;*~"
+
+# Work around dead keys
+
+key Space +Control : "\x00"
+
+# Some keys are used by konsole to cause operations.
+# The scroll* operations refer to the history buffer.
+
+key Up +Shift-AppScreen : scrollLineUp
+key Prior +Shift-AppScreen : scrollPageUp
+key Down +Shift-AppScreen : scrollLineDown
+key Next +Shift-AppScreen : scrollPageDown
+
+#key Up +Shift : scrollLineUp
+#key Prior +Shift : scrollPageUp
+#key Down +Shift : scrollLineDown
+#key Next +Shift : scrollPageDown
+
+key ScrollLock : scrollLock
+
+# keypad characters are not offered differently by Qt.
diff --git a/konsole-qml-plugin/assets/kb-layouts/solaris.keytab b/konsole-qml-plugin/assets/kb-layouts/solaris.keytab
new file mode 100644
index 0000000..0739edf
--- /dev/null
+++ b/konsole-qml-plugin/assets/kb-layouts/solaris.keytab
@@ -0,0 +1,108 @@
+# [solaris.keytab] Konsole Keyboard Table
+#
+
+keyboard "Solaris console"
+
+# --------------------------------------------------------------
+#
+# This configuration table allows to customize the
+# meaning of the keys.
+#
+# The syntax is that each entry has the form :
+#
+# "key" Keyname { ("+"|"-") Modename } ":" (String|Operation)
+#
+# Keynames are those defined in with the
+# "Qt::Key_" removed. (We'd better insert the list here)
+#
+# Mode names are :
+#
+# - Shift
+# - Alt
+# - Control
+#
+# The VT100 emulation has two modes that can affect the
+# sequences emitted by certain keys. These modes are
+# under control of the client program.
+#
+#
+# - Newline : effects Return and Enter key.
+# - Application : effects Up and Down key.
+#
+# - Ansi : effects Up and Down key (This is for VT52, really).
+#
+# Operations are
+#
+# - scrollUpLine
+# - scrollUpPage
+# - scrollDownLine
+# - scrollDownPage
+#
+# - emitSelection
+#
+# If the key is not found here, the text of the
+# key event as provided by QT is emitted, possibly
+# preceeded by ESC if the Alt key is pressed.
+#
+# --------------------------------------------------------------
+
+key Escape : "\E"
+key Tab : "\t"
+
+key Return-Alt : "\r"
+key Return+Alt : "\E\r"
+
+# Backspace and Delete codes are preserving CTRL-H.
+
+key Backspace : "\x08"
+#key Delete : "\x7F"
+
+# cursor keys
+
+key Up -Shift : "\EOA"
+key Down -Shift : "\EOB"
+key Right -Shift : "\EOC"
+key Left -Shift : "\EOD"
+
+# other grey PC keys
+
+key Enter : "\r"
+
+key Home : "\E[1~"
+key Insert-Shift : "\E[2~"
+key Delete : "\E[3~"
+key End : "\E[4~"
+key Prior -Shift : "\E[5~"
+key Next -Shift : "\E[6~"
+
+# function keys
+
+key F1 : "\E[11~"
+key F2 : "\E[12~"
+key F3 : "\E[13~"
+key F4 : "\E[14~"
+key F5 : "\E[15~"
+key F6 : "\E[17~"
+key F7 : "\E[18~"
+key F8 : "\E[19~"
+key F9 : "\E[20~"
+key F10 : "\E[21~"
+key F11 : "\E[23~"
+key F12 : "\E[24~"
+
+# Work around dead keys
+
+key Space +Control : "\x00"
+
+# Some keys are used by konsole to cause operations.
+# The scroll* operations refer to the history buffer.
+
+#key Left +Shift : prevSession
+#key Right +Shift : nextSession
+key Up +Shift : scrollLineUp
+key Prior +Shift : scrollPageUp
+key Down +Shift : scrollLineDown
+key Next +Shift : scrollPageDown
+#key Insert+Shift : emitSelection
+
+# keypad characters are not offered differently by Qt.
diff --git a/konsole-qml-plugin/assets/kb-layouts/vt420pc.keytab b/konsole-qml-plugin/assets/kb-layouts/vt420pc.keytab
new file mode 100644
index 0000000..ee6aa9a
--- /dev/null
+++ b/konsole-qml-plugin/assets/kb-layouts/vt420pc.keytab
@@ -0,0 +1,168 @@
+#
+# NOTE: This keyboard binding is not installed because it
+# apparently doesn't work with actual VT420 systems
+# (see BUG:170220)
+#
+# [vt420pc.keytab] Konsole Keyboard Table (VT420pc keys)
+# adapted by ferdinand gassauer f.gassauer@aon.at
+# Nov 2000
+#
+################################################################
+#
+# The escape sequences emmited by the
+# keys Shift+F1 to Shift+F12 might not fit your needs
+#
+################# IMPORTANT NOTICE #############################
+# the key bindings (Kcontrol -> look and feel -> keybindgs)
+# overrule the settings in this file. The key bindings might be
+# changed by the user WITHOUT notification of the maintainer of
+# the keytab file. Konsole will not work as expected by
+# the maintainer of the keytab file.
+################################################################
+#
+# --------------------------------------------------------------
+
+keyboard "DEC VT420 Terminal"
+
+# --------------------------------------------------------------
+#
+# This configuration table allows to customize the
+# meaning of the keys.
+#
+# The syntax is that each entry has the form :
+#
+# "key" Keyname { ("+"|"-") Modename } ":" (String|Operation)
+#
+# Keynames are those defined in with the
+# "Qt::Key_" removed. (We'd better insert the list here)
+#
+# Mode names are :
+#
+# - Shift
+# - Alt
+# - Control
+#
+# The VT100 emulation has two modes that can affect the
+# sequences emitted by certain keys. These modes are
+# under control of the client program.
+#
+# - Newline : effects Return and Enter key.
+# - Application : effects Up and Down key.
+#
+# - Ansi : effects Up and Down key (This is for VT52, really).
+#
+# Operations are
+#
+# - scrollUpLine
+# - scrollUpPage
+# - scrollDownLine
+# - scrollDownPage
+#
+# - emitSelection
+#
+# If the key is not found here, the text of the
+# key event as provided by QT is emitted, possibly
+# preceeded by ESC if the Alt key is pressed.
+#
+# --------------------------------------------------------------
+
+key Escape : "\E"
+key Tab : "\t"
+key Backtab: "\E[Z"
+
+# VT100 can add an extra \n after return.
+# The NewLine mode is set by an escape sequence.
+
+key Return-NewLine : "\r"
+key Return+NewLine : "\r\n"
+
+# Some desperately try to save the ^H.
+# may be not everyone wants this
+
+key Backspace : "\x08" # Control H
+key Delete : "\x7f"
+
+# These codes are for the VT420pc
+# The Ansi mode (i.e. VT100 mode) is set by
+# an escape sequence
+
+key Up -Shift-Ansi : "\EA"
+key Down -Shift-Ansi : "\EB"
+key Right-Shift-Ansi : "\EC"
+key Left -Shift-Ansi : "\ED"
+
+# VT100 emits a mode bit together
+# with the arrow keys.The AppCuKeys
+# mode is set by an escape sequence.
+
+key Up -Shift+Ansi+AppCuKeys : "\EOA"
+key Down -Shift+Ansi+AppCuKeys : "\EOB"
+key Right-Shift+Ansi+AppCuKeys : "\EOC"
+key Left -Shift+Ansi+AppCuKeys : "\EOD"
+
+key Up -Shift+Ansi-AppCuKeys : "\E[A"
+key Down -Shift+Ansi-AppCuKeys : "\E[B"
+key Right-Shift+Ansi-AppCuKeys : "\E[C"
+key Left -Shift+Ansi-AppCuKeys : "\E[D"
+
+# function keys
+
+key F1 -Shift : "\E[11~"
+key F2 -Shift : "\E[12~"
+key F3 -Shift : "\E[13~"
+key F4 -Shift : "\E[14~"
+key F5 -Shift : "\E[15~"
+key F6 -Shift : "\E[17~"
+key F7 -Shift : "\E[18~"
+key F8 -Shift : "\E[19~"
+key F9 -Shift : "\E[20~"
+key F10-Shift : "\E[21~"
+key F11-Shift : "\E[23~"
+key F12-Shift : "\E[24~"
+#
+# Shift F1-F12
+#
+key F1 +Shift : "\E[11;2~"
+key F2 +Shift : "\E[12;2~"
+key F3 +Shift : "\E[13;2~"
+key F4 +Shift : "\E[14;2~"
+key F5 +Shift : "\E[15;2~"
+key F6 +Shift : "\E[17;2~"
+key F7 +Shift : "\E[18;2~"
+key F8 +Shift : "\E[19;2~"
+key F9 +Shift : "\E[20;2~"
+key F10+Shift : "\E[21;2~"
+key F11+Shift : "\E[23;2~"
+key F12+Shift : "\E[24;2~"
+
+key Home : "\E[H"
+key End : "\E[F"
+
+key Prior -Shift : "\E[5~"
+key Next -Shift : "\E[6~"
+key Insert-Shift : "\E[2~"
+
+# Keypad-Enter. See comment on Return above.
+
+key Enter+NewLine : "\r\n"
+key Enter-NewLine : "\r"
+
+key Space +Control : "\x00"
+
+# some of keys are used by konsole.
+
+key Up +Shift : scrollLineUp
+key Prior +Shift : scrollPageUp
+key Down +Shift : scrollLineDown
+key Next +Shift : scrollPageDown
+
+key ScrollLock : scrollLock
+
+#----------------------------------------------------------
+
+# keypad characters as offered by Qt
+# cannot be recognized as such.
+
+#----------------------------------------------------------
+
+# Following other strings as emitted by konsole.
diff --git a/konsole-qml-plugin/debian/changelog b/konsole-qml-plugin/debian/changelog
new file mode 100644
index 0000000..a4a741d
--- /dev/null
+++ b/konsole-qml-plugin/debian/changelog
@@ -0,0 +1,29 @@
+konsole-qml-plugin (0.1.2) raring; urgency=low
+
+ * Fixed text display bug (LP:#1182503)
+
+ -- Dmitry Zagnoyko Mon, 10 Jun 2013 09:49:02 +0300
+
+konsole-qml-plugin (0.1.1) raring; urgency=low
+
+ * Fixed issue with float values of widget size
+ * Added virtual key event for qml KSession component
+
+ -- Dmitry Zagnoyko Mon, 06 May 2013 20:11:10 +0300
+
+konsole-qml-plugin (0.1.0ubuntu1~quantal1~test2) quantal; urgency=low
+
+ * Added qml properties for KTerminal
+ * Fixed visibility sope: removed konsole namespace
+ * Added qmltypes
+ * Fixed qml plugin path
+ * Added KSession class
+
+ -- Dmitry Zagnoyko Sat, 20 Apr 2013 21:44:26 +0300
+
+konsole-qml-plugin (0.1.0ubuntu1~quantal1~test1) quantal; urgency=low
+
+ * Initial release
+ * Ported KDE Konsole
+
+ -- Dmitry Zagnoyko Fri, 19 Apr 2013 20:22:12 +0300
diff --git a/konsole-qml-plugin/debian/compat b/konsole-qml-plugin/debian/compat
new file mode 100644
index 0000000..ec63514
--- /dev/null
+++ b/konsole-qml-plugin/debian/compat
@@ -0,0 +1 @@
+9
diff --git a/konsole-qml-plugin/debian/control b/konsole-qml-plugin/debian/control
new file mode 100644
index 0000000..576cf99
--- /dev/null
+++ b/konsole-qml-plugin/debian/control
@@ -0,0 +1,40 @@
+Source: konsole-qml-plugin
+Section: libs
+Priority: optional
+Maintainer: Ubuntu Developers
+Build-Depends: debhelper (>= 9.0.0),
+# libgl1-mesa-dev | libgl-dev,
+# libgles2-mesa-dev
+ qtbase5-dev,
+ qtdeclarative5-dev,
+ qt5-default,
+Standards-Version: 3.9.4
+Homepage: http://konsole.kde.org/
+
+Package: qtdeclarative5-konsole-qml-plugin
+Architecture: any
+Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${misc:Depends}, ${shlibs:Depends},
+Description: KDE Konsole QML plugin - qml terminal plugin
+ Originaly, Konsole is a terminal emulator from KDE. This is ported
+ version and do not require KDE.
+ .
+ This package contains the Konsole terminal emulator plugin
+ for Qt Qml, which offers access to terminal by KTerminal and
+ KSession elements. KTerminal is used for displaying information
+ given by KSession.
+
+
+#Package: konsole-qml-plugin-dbg
+#Priority: extra
+#Architecture: any
+#Section: debug
+#Depends: ${misc:Depends}
+#Description: KDE Konsole QML plugin debugging symbols
+# Originaly, Konsole is a terminal emulator from KDE. This is ported
+# version without KDE tails and do not require KDE.
+# .
+# This package contains the debugging symbols for the KDE Konsole
+# QML plugin.
+
diff --git a/konsole-qml-plugin/debian/copyright b/konsole-qml-plugin/debian/copyright
new file mode 100644
index 0000000..d94b50b
--- /dev/null
+++ b/konsole-qml-plugin/debian/copyright
@@ -0,0 +1,50 @@
+Format: http://www.debian.org/doc/packaging-manuals/copyright-format/3.0/
+Upstream-Name: konsole-qml-plugin
+Source:
+
+Files: *
+Copyright: 2013 Dmitry Zagnoyko
+ 2008 e_k
+ 2006-2008 Robert Knight
+ 2003-2007 Oswald Buddenhagen
+ 2000 Stephan Kulow
+ 1997-1998 Lars Doelle
+License: GPL-3
+
+Files: debian/*
+Copyright: 2013 Dmitry Zagnoyko
+License: LGPL-3
+
+License: GPL-3
+ This package is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public
+ License as published by the Free Software Foundation; either
+ version 3 of the License.
+ .
+ This package is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+ .
+ On Debian systems, the complete text of the GNU General
+ Public License can be found in "/usr/share/common-licenses/GPL-3".
+
+License: LGPL-3
+ This package is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 3 of the License.
+ .
+ This package is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+ .
+ On Debian systems, the complete text of the GNU Lesser General
+ Public License can be found in "/usr/share/common-licenses/LGPL-3".
diff --git a/konsole-qml-plugin/debian/rules b/konsole-qml-plugin/debian/rules
new file mode 100755
index 0000000..63c23af
--- /dev/null
+++ b/konsole-qml-plugin/debian/rules
@@ -0,0 +1,21 @@
+#!/usr/bin/make -f
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+#export CFLAGS := $(shell dpkg-buildflags --get CFLAGS) $(shell dpkg-buildflags --get CPPFLAGS)
+#export CXXFLAGS := $(shell dpkg-buildflags --get CXXFLAGS) $(shell dpkg-buildflags --get CPPFLAGS)
+#export LDFLAGS := $(shell dpkg-buildflags --get LDFLAGS) -Wl,--as-needed
+
+override_dh_auto_configure:
+ QT_SELECT=qt5 dh_auto_configure
+
+%:
+ dh $@ --list-missing --parallel
+# WARN: currently, no pakgage
+# --dbg-package=konsole-qml-plugin-dbg
+
+
+#override_dh_builddeb:
+# dh_builddeb -- -Zxz
+
diff --git a/konsole-qml-plugin/debian/source/format b/konsole-qml-plugin/debian/source/format
new file mode 100644
index 0000000..89ae9db
--- /dev/null
+++ b/konsole-qml-plugin/debian/source/format
@@ -0,0 +1 @@
+3.0 (native)
diff --git a/konsole-qml-plugin/konsole-qml-plugin.pro b/konsole-qml-plugin/konsole-qml-plugin.pro
new file mode 100644
index 0000000..3008d02
--- /dev/null
+++ b/konsole-qml-plugin/konsole-qml-plugin.pro
@@ -0,0 +1,99 @@
+#########################################
+## CONFIGS
+#########################################
+
+TEMPLATE = lib
+CONFIG += qt plugin hide_symbols
+QT += qml quick widgets
+
+DEFINES += HAVE_POSIX_OPENPT HAVE_SYS_TIME_H HAVE_UPDWTMPX
+
+#MANUALY DEFINED PLATFORM
+DEFINES += Q_WS_UBUNTU
+
+TARGET = kdekonsole
+PLUGIN_IMPORT_PATH = org/kde/konsole
+PLUGIN_ASSETS = $$PWD/assets/*
+
+INSTALL_DIR = ../imports
+
+#########################################
+## SOURCES
+#########################################
+
+SOURCES += \
+ $$PWD/src/plugin.cpp \
+ $$PWD/src/Pty.cpp \
+ $$PWD/src/kptyprocess.cpp \
+ $$PWD/src/kptydevice.cpp \
+ $$PWD/src/kpty.cpp \
+ $$PWD/src/kprocess.cpp \
+ $$PWD/src/ShellCommand.cpp \
+ $$PWD/src/Vt102Emulation.cpp \
+ $$PWD/src/tools.cpp \
+ $$PWD/src/Session.cpp \
+ $$PWD/src/Screen.cpp \
+ $$PWD/src/KeyboardTranslator.cpp \
+ $$PWD/src/Emulation.cpp \
+ $$PWD/src/History.cpp \
+ $$PWD/src/BlockArray.cpp \
+ $$PWD/src/TerminalCharacterDecoder.cpp \
+ $$PWD/src/konsole_wcwidth.cpp \
+ $$PWD/src/ScreenWindow.cpp \
+ $$PWD/src/Filter.cpp \
+ $$PWD/src/ColorScheme.cpp \
+ $$PWD/src/TerminalDisplay.cpp \
+ $$PWD/src/ksession.cpp
+
+HEADERS += \
+ $$PWD/src/plugin.h \
+ $$PWD/src/Pty.h \
+ $$PWD/src/kptyprocess.h \
+ $$PWD/src/kptydevice.h \
+ $$PWD/src/kpty.h \
+ $$PWD/src/kpty_p.h \
+ $$PWD/src/kprocess.h \
+ $$PWD/src/ShellCommand.h \
+ $$PWD/src/Vt102Emulation.h \
+ $$PWD/src/tools.h \
+ $$PWD/src/Session.h \
+ $$PWD/src/Screen.h \
+ $$PWD/src/KeyboardTranslator.h \
+ $$PWD/src/Emulation.h \
+ $$PWD/src/Character.h \
+ $$PWD/src/History.h \
+ $$PWD/src/CharacterColor.h \
+ $$PWD/src/BlockArray.h \
+ $$PWD/src/TerminalCharacterDecoder.h \
+ $$PWD/src/konsole_wcwidth.h \
+ $$PWD/src/ScreenWindow.h \
+ $$PWD/src/DefaultTranslatorText.h \
+ $$PWD/src/LineFont.h \
+ $$PWD/src/Filter.h \
+ $$PWD/src/ExtendedDefaultTranslator.h \
+ $$PWD/src/ColorTables.h \
+ $$PWD/src/ColorScheme.h \
+ $$PWD/src/TerminalDisplay.h \
+ $$PWD/src/ksession.h
+
+OTHER_FILES += \
+ $$PWD/src/qmldir \
+ $$PWD/src/plugins.qmltypes
+
+MOC_DIR = $$PWD/.moc
+OBJECTS_DIR = $$PWD/.obj
+
+#########################################
+## INTALLS
+#########################################
+
+target.path = $$INSTALL_DIR/$$PLUGIN_IMPORT_PATH
+
+assets.files += $$PLUGIN_ASSETS
+assets.path += $$INSTALL_DIR/$$PLUGIN_IMPORT_PATH
+
+qmldir.files += $$PWD/src/qmldir \
+ $$PWD/src/plugins.qmltypes
+qmldir.path += $$INSTALL_DIR/$$PLUGIN_IMPORT_PATH
+
+INSTALLS += target qmldir assets
diff --git a/konsole-qml-plugin/src/BlockArray.cpp b/konsole-qml-plugin/src/BlockArray.cpp
new file mode 100644
index 0000000..0cfa18b
--- /dev/null
+++ b/konsole-qml-plugin/src/BlockArray.cpp
@@ -0,0 +1,377 @@
+/*
+ This file is part of Konsole, an X terminal.
+ Copyright (C) 2000 by Stephan Kulow
+
+ Rewritten for QT4 by e_k , Copyright (C)2008
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+*/
+
+// Own
+#include "BlockArray.h"
+
+#include
+
+// System
+#include
+#include
+#include
+#include
+#include
+
+
+static int blocksize = 0;
+
+BlockArray::BlockArray()
+ : size(0),
+ current(size_t(-1)),
+ index(size_t(-1)),
+ lastmap(0),
+ lastmap_index(size_t(-1)),
+ lastblock(0), ion(-1),
+ length(0)
+{
+ // lastmap_index = index = current = size_t(-1);
+ if (blocksize == 0) {
+ blocksize = ((sizeof(Block) / getpagesize()) + 1) * getpagesize();
+ }
+
+}
+
+BlockArray::~BlockArray()
+{
+ setHistorySize(0);
+ assert(!lastblock);
+}
+
+size_t BlockArray::append(Block * block)
+{
+ if (!size) {
+ return size_t(-1);
+ }
+
+ ++current;
+ if (current >= size) {
+ current = 0;
+ }
+
+ int rc;
+ rc = lseek(ion, current * blocksize, SEEK_SET);
+ if (rc < 0) {
+ perror("HistoryBuffer::add.seek");
+ setHistorySize(0);
+ return size_t(-1);
+ }
+ rc = write(ion, block, blocksize);
+ if (rc < 0) {
+ perror("HistoryBuffer::add.write");
+ setHistorySize(0);
+ return size_t(-1);
+ }
+
+ length++;
+ if (length > size) {
+ length = size;
+ }
+
+ ++index;
+
+ delete block;
+ return current;
+}
+
+size_t BlockArray::newBlock()
+{
+ if (!size) {
+ return size_t(-1);
+ }
+ append(lastblock);
+
+ lastblock = new Block();
+ return index + 1;
+}
+
+Block * BlockArray::lastBlock() const
+{
+ return lastblock;
+}
+
+bool BlockArray::has(size_t i) const
+{
+ if (i == index + 1) {
+ return true;
+ }
+
+ if (i > index) {
+ return false;
+ }
+ if (index - i >= length) {
+ return false;
+ }
+ return true;
+}
+
+const Block * BlockArray::at(size_t i)
+{
+ if (i == index + 1) {
+ return lastblock;
+ }
+
+ if (i == lastmap_index) {
+ return lastmap;
+ }
+
+ if (i > index) {
+ qDebug() << "BlockArray::at() i > index\n";
+ return 0;
+ }
+
+// if (index - i >= length) {
+// kDebug(1211) << "BlockArray::at() index - i >= length\n";
+// return 0;
+// }
+
+ size_t j = i; // (current - (index - i) + (index/size+1)*size) % size ;
+
+ assert(j < size);
+ unmap();
+
+ Block * block = (Block *)mmap(0, blocksize, PROT_READ, MAP_PRIVATE, ion, j * blocksize);
+
+ if (block == (Block *)-1) {
+ perror("mmap");
+ return 0;
+ }
+
+ lastmap = block;
+ lastmap_index = i;
+
+ return block;
+}
+
+void BlockArray::unmap()
+{
+ if (lastmap) {
+ int res = munmap((char *)lastmap, blocksize);
+ if (res < 0) {
+ perror("munmap");
+ }
+ }
+ lastmap = 0;
+ lastmap_index = size_t(-1);
+}
+
+bool BlockArray::setSize(size_t newsize)
+{
+ return setHistorySize(newsize * 1024 / blocksize);
+}
+
+bool BlockArray::setHistorySize(size_t newsize)
+{
+// kDebug(1211) << "setHistorySize " << size << " " << newsize;
+
+ if (size == newsize) {
+ return false;
+ }
+
+ unmap();
+
+ if (!newsize) {
+ delete lastblock;
+ lastblock = 0;
+ if (ion >= 0) {
+ close(ion);
+ }
+ ion = -1;
+ current = size_t(-1);
+ return true;
+ }
+
+ if (!size) {
+ FILE * tmp = tmpfile();
+ if (!tmp) {
+ perror("konsole: cannot open temp file.\n");
+ } else {
+ ion = dup(fileno(tmp));
+ if (ion<0) {
+ perror("konsole: cannot dup temp file.\n");
+ fclose(tmp);
+ }
+ }
+ if (ion < 0) {
+ return false;
+ }
+
+ assert(!lastblock);
+
+ lastblock = new Block();
+ size = newsize;
+ return false;
+ }
+
+ if (newsize > size) {
+ increaseBuffer();
+ size = newsize;
+ return false;
+ } else {
+ decreaseBuffer(newsize);
+ ftruncate(ion, length*blocksize);
+ size = newsize;
+
+ return true;
+ }
+}
+
+void moveBlock(FILE * fion, int cursor, int newpos, char * buffer2)
+{
+ int res = fseek(fion, cursor * blocksize, SEEK_SET);
+ if (res) {
+ perror("fseek");
+ }
+ res = fread(buffer2, blocksize, 1, fion);
+ if (res != 1) {
+ perror("fread");
+ }
+
+ res = fseek(fion, newpos * blocksize, SEEK_SET);
+ if (res) {
+ perror("fseek");
+ }
+ res = fwrite(buffer2, blocksize, 1, fion);
+ if (res != 1) {
+ perror("fwrite");
+ }
+ // printf("moving block %d to %d\n", cursor, newpos);
+}
+
+void BlockArray::decreaseBuffer(size_t newsize)
+{
+ if (index < newsize) { // still fits in whole
+ return;
+ }
+
+ int offset = (current - (newsize - 1) + size) % size;
+
+ if (!offset) {
+ return;
+ }
+
+ // The Block constructor could do somthing in future...
+ char * buffer1 = new char[blocksize];
+
+ FILE * fion = fdopen(dup(ion), "w+b");
+ if (!fion) {
+ delete [] buffer1;
+ perror("fdopen/dup");
+ return;
+ }
+
+ int firstblock;
+ if (current <= newsize) {
+ firstblock = current + 1;
+ } else {
+ firstblock = 0;
+ }
+
+ size_t oldpos;
+ for (size_t i = 0, cursor=firstblock; i < newsize; i++) {
+ oldpos = (size + cursor + offset) % size;
+ moveBlock(fion, oldpos, cursor, buffer1);
+ if (oldpos < newsize) {
+ cursor = oldpos;
+ } else {
+ cursor++;
+ }
+ }
+
+ current = newsize - 1;
+ length = newsize;
+
+ delete [] buffer1;
+
+ fclose(fion);
+
+}
+
+void BlockArray::increaseBuffer()
+{
+ if (index < size) { // not even wrapped once
+ return;
+ }
+
+ int offset = (current + size + 1) % size;
+ if (!offset) { // no moving needed
+ return;
+ }
+
+ // The Block constructor could do somthing in future...
+ char * buffer1 = new char[blocksize];
+ char * buffer2 = new char[blocksize];
+
+ int runs = 1;
+ int bpr = size; // blocks per run
+
+ if (size % offset == 0) {
+ bpr = size / offset;
+ runs = offset;
+ }
+
+ FILE * fion = fdopen(dup(ion), "w+b");
+ if (!fion) {
+ perror("fdopen/dup");
+ delete [] buffer1;
+ delete [] buffer2;
+ return;
+ }
+
+ int res;
+ for (int i = 0; i < runs; i++) {
+ // free one block in chain
+ int firstblock = (offset + i) % size;
+ res = fseek(fion, firstblock * blocksize, SEEK_SET);
+ if (res) {
+ perror("fseek");
+ }
+ res = fread(buffer1, blocksize, 1, fion);
+ if (res != 1) {
+ perror("fread");
+ }
+ int newpos = 0;
+ for (int j = 1, cursor=firstblock; j < bpr; j++) {
+ cursor = (cursor + offset) % size;
+ newpos = (cursor - offset + size) % size;
+ moveBlock(fion, cursor, newpos, buffer2);
+ }
+ res = fseek(fion, i * blocksize, SEEK_SET);
+ if (res) {
+ perror("fseek");
+ }
+ res = fwrite(buffer1, blocksize, 1, fion);
+ if (res != 1) {
+ perror("fwrite");
+ }
+ }
+ current = size - 1;
+ length = size;
+
+ delete [] buffer1;
+ delete [] buffer2;
+
+ fclose(fion);
+
+}
+
diff --git a/konsole-qml-plugin/src/BlockArray.h b/konsole-qml-plugin/src/BlockArray.h
new file mode 100644
index 0000000..04a021a
--- /dev/null
+++ b/konsole-qml-plugin/src/BlockArray.h
@@ -0,0 +1,126 @@
+/*
+ This file is part of Konsole, an X terminal.
+ Copyright (C) 2000 by Stephan Kulow
+
+ Rewritten for QT4 by e_k , Copyright (C)2008
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+*/
+
+#ifndef BLOCKARRAY_H
+#define BLOCKARRAY_H
+
+#include
+
+//#error Do not use in KDE 2.1
+
+#define BlockSize (1 << 12)
+#define ENTRIES ((BlockSize - sizeof(size_t) ) / sizeof(unsigned char))
+
+struct Block {
+ Block() {
+ size = 0;
+ }
+ unsigned char data[ENTRIES];
+ size_t size;
+};
+
+// ///////////////////////////////////////////////////////
+
+class BlockArray {
+public:
+ /**
+ * Creates a history file for holding
+ * maximal size blocks. If more blocks
+ * are requested, then it drops earlier
+ * added ones.
+ */
+ BlockArray();
+
+ /// destructor
+ ~BlockArray();
+
+ /**
+ * adds the Block at the end of history.
+ * This may drop other blocks.
+ *
+ * The ownership on the block is transfered.
+ * An unique index number is returned for accessing
+ * it later (if not yet dropped then)
+ *
+ * Note, that the block may be dropped completely
+ * if history is turned off.
+ */
+ size_t append(Block * block);
+
+ /**
+ * gets the block at the index. Function may return
+ * 0 if the block isn't available any more.
+ *
+ * The returned block is strictly readonly as only
+ * maped in memory - and will be invalid on the next
+ * operation on this class.
+ */
+ const Block * at(size_t index);
+
+ /**
+ * reorders blocks as needed. If newsize is null,
+ * the history is emptied completely. The indices
+ * returned on append won't change their semantic,
+ * but they may not be valid after this call.
+ */
+ bool setHistorySize(size_t newsize);
+
+ size_t newBlock();
+
+ Block * lastBlock() const;
+
+ /**
+ * Convenient function to set the size in KBytes
+ * instead of blocks
+ */
+ bool setSize(size_t newsize);
+
+ size_t len() const {
+ return length;
+ }
+
+ bool has(size_t index) const;
+
+ size_t getCurrent() const {
+ return current;
+ }
+
+private:
+ void unmap();
+ void increaseBuffer();
+ void decreaseBuffer(size_t newsize);
+
+ size_t size;
+ // current always shows to the last inserted block
+ size_t current;
+ size_t index;
+
+ Block * lastmap;
+ size_t lastmap_index;
+ Block * lastblock;
+
+ int ion;
+ size_t length;
+
+};
+
+#endif
diff --git a/konsole-qml-plugin/src/Character.h b/konsole-qml-plugin/src/Character.h
new file mode 100644
index 0000000..30fb0b8
--- /dev/null
+++ b/konsole-qml-plugin/src/Character.h
@@ -0,0 +1,221 @@
+/*
+ This file is part of Konsole, KDE's terminal.
+
+ Copyright 2007-2008 by Robert Knight
+ Copyright 1997,1998 by Lars Doelle
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+*/
+
+#ifndef CHARACTER_H
+#define CHARACTER_H
+
+// Qt
+#include
+
+// Local
+#include "CharacterColor.h"
+
+typedef unsigned char LineProperty;
+
+static const int LINE_DEFAULT = 0;
+static const int LINE_WRAPPED = (1 << 0);
+static const int LINE_DOUBLEWIDTH = (1 << 1);
+static const int LINE_DOUBLEHEIGHT = (1 << 2);
+
+#define DEFAULT_RENDITION 0
+#define RE_BOLD (1 << 0)
+#define RE_BLINK (1 << 1)
+#define RE_UNDERLINE (1 << 2)
+#define RE_REVERSE (1 << 3) // Screen only
+#define RE_INTENSIVE (1 << 3) // Widget only
+#define RE_CURSOR (1 << 4)
+#define RE_EXTENDED_CHAR (1 << 5)
+
+/**
+ * A single character in the terminal which consists of a unicode character
+ * value, foreground and background colors and a set of rendition attributes
+ * which specify how it should be drawn.
+ */
+class Character
+{
+public:
+ /**
+ * Constructs a new character.
+ *
+ * @param _c The unicode character value of this character.
+ * @param _f The foreground color used to draw the character.
+ * @param _b The color used to draw the character's background.
+ * @param _r A set of rendition flags which specify how this character is to be drawn.
+ */
+ inline Character(quint16 _c = ' ',
+ CharacterColor _f = CharacterColor(COLOR_SPACE_DEFAULT,DEFAULT_FORE_COLOR),
+ CharacterColor _b = CharacterColor(COLOR_SPACE_DEFAULT,DEFAULT_BACK_COLOR),
+ quint8 _r = DEFAULT_RENDITION)
+ : character(_c), rendition(_r), foregroundColor(_f), backgroundColor(_b) {}
+
+ union
+ {
+ /** The unicode character value for this character. */
+ quint16 character;
+ /**
+ * Experimental addition which allows a single Character instance to contain more than
+ * one unicode character.
+ *
+ * charSequence is a hash code which can be used to look up the unicode
+ * character sequence in the ExtendedCharTable used to create the sequence.
+ */
+ quint16 charSequence;
+ };
+
+ /** A combination of RENDITION flags which specify options for drawing the character. */
+ quint8 rendition;
+
+ /** The foreground color used to draw this character. */
+ CharacterColor foregroundColor;
+ /** The color used to draw this character's background. */
+ CharacterColor backgroundColor;
+
+ /**
+ * Returns true if this character has a transparent background when
+ * it is drawn with the specified @p palette.
+ */
+ bool isTransparent(const ColorEntry* palette) const;
+ /**
+ * Returns true if this character should always be drawn in bold when
+ * it is drawn with the specified @p palette, independent of whether
+ * or not the character has the RE_BOLD rendition flag.
+ */
+ ColorEntry::FontWeight fontWeight(const ColorEntry* base) const;
+
+ /**
+ * returns true if the format (color, rendition flag) of the compared characters is equal
+ */
+ bool equalsFormat(const Character &other) const;
+
+ /**
+ * Compares two characters and returns true if they have the same unicode character value,
+ * rendition and colors.
+ */
+ friend bool operator == (const Character& a, const Character& b);
+ /**
+ * Compares two characters and returns true if they have different unicode character values,
+ * renditions or colors.
+ */
+ friend bool operator != (const Character& a, const Character& b);
+};
+
+inline bool operator == (const Character& a, const Character& b)
+{
+ return a.character == b.character &&
+ a.rendition == b.rendition &&
+ a.foregroundColor == b.foregroundColor &&
+ a.backgroundColor == b.backgroundColor;
+}
+
+inline bool operator != (const Character& a, const Character& b)
+{
+ return a.character != b.character ||
+ a.rendition != b.rendition ||
+ a.foregroundColor != b.foregroundColor ||
+ a.backgroundColor != b.backgroundColor;
+}
+
+inline bool Character::isTransparent(const ColorEntry* base) const
+{
+ return ((backgroundColor._colorSpace == COLOR_SPACE_DEFAULT) &&
+ base[backgroundColor._u+0+(backgroundColor._v?BASE_COLORS:0)].transparent)
+ || ((backgroundColor._colorSpace == COLOR_SPACE_SYSTEM) &&
+ base[backgroundColor._u+2+(backgroundColor._v?BASE_COLORS:0)].transparent);
+}
+
+inline bool Character::equalsFormat(const Character& other) const
+{
+ return
+ backgroundColor==other.backgroundColor &&
+ foregroundColor==other.foregroundColor &&
+ rendition==other.rendition;
+}
+
+inline ColorEntry::FontWeight Character::fontWeight(const ColorEntry* base) const
+{
+ if (backgroundColor._colorSpace == COLOR_SPACE_DEFAULT)
+ return base[backgroundColor._u+0+(backgroundColor._v?BASE_COLORS:0)].fontWeight;
+ else if (backgroundColor._colorSpace == COLOR_SPACE_SYSTEM)
+ return base[backgroundColor._u+2+(backgroundColor._v?BASE_COLORS:0)].fontWeight;
+ else
+ return ColorEntry::UseCurrentFormat;
+}
+
+extern unsigned short vt100_graphics[32];
+
+
+/**
+ * A table which stores sequences of unicode characters, referenced
+ * by hash keys. The hash key itself is the same size as a unicode
+ * character ( ushort ) so that it can occupy the same space in
+ * a structure.
+ */
+class ExtendedCharTable
+{
+public:
+ /** Constructs a new character table. */
+ ExtendedCharTable();
+ ~ExtendedCharTable();
+
+ /**
+ * Adds a sequences of unicode characters to the table and returns
+ * a hash code which can be used later to look up the sequence
+ * using lookupExtendedChar()
+ *
+ * If the same sequence already exists in the table, the hash
+ * of the existing sequence will be returned.
+ *
+ * @param unicodePoints An array of unicode character points
+ * @param length Length of @p unicodePoints
+ */
+ ushort createExtendedChar(ushort* unicodePoints , ushort length);
+ /**
+ * Looks up and returns a pointer to a sequence of unicode characters
+ * which was added to the table using createExtendedChar().
+ *
+ * @param hash The hash key returned by createExtendedChar()
+ * @param length This variable is set to the length of the
+ * character sequence.
+ *
+ * @return A unicode character sequence of size @p length.
+ */
+ ushort* lookupExtendedChar(ushort hash , ushort& length) const;
+
+ /** The global ExtendedCharTable instance. */
+ static ExtendedCharTable instance;
+private:
+ // calculates the hash key of a sequence of unicode points of size 'length'
+ ushort extendedCharHash(ushort* unicodePoints , ushort length) const;
+ // tests whether the entry in the table specified by 'hash' matches the
+ // character sequence 'unicodePoints' of size 'length'
+ bool extendedCharMatch(ushort hash , ushort* unicodePoints , ushort length) const;
+ // internal, maps hash keys to character sequence buffers. The first ushort
+ // in each value is the length of the buffer, followed by the ushorts in the buffer
+ // themselves.
+ QHash extendedCharTable;
+};
+
+
+Q_DECLARE_TYPEINFO(Character, Q_MOVABLE_TYPE);
+
+#endif // CHARACTER_H
+
diff --git a/konsole-qml-plugin/src/CharacterColor.h b/konsole-qml-plugin/src/CharacterColor.h
new file mode 100644
index 0000000..33cf3ef
--- /dev/null
+++ b/konsole-qml-plugin/src/CharacterColor.h
@@ -0,0 +1,294 @@
+/*
+ This file is part of Konsole, KDE's terminal.
+
+ Copyright 2007-2008 by Robert Knight
+ Copyright 1997,1998 by Lars Doelle
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+*/
+
+#ifndef CHARACTERCOLOR_H
+#define CHARACTERCOLOR_H
+
+// Qt
+#include
+
+//#include
+#define KDE_NO_EXPORT
+
+/**
+ * An entry in a terminal display's color palette.
+ *
+ * A color palette is an array of 16 ColorEntry instances which map
+ * system color indexes (from 0 to 15) into actual colors.
+ *
+ * Each entry can be set as bold, in which case any text
+ * drawn using the color should be drawn in bold.
+ *
+ * Each entry can also be transparent, in which case the terminal
+ * display should avoid drawing the background for any characters
+ * using the entry as a background.
+ */
+class ColorEntry
+{
+public:
+ /** Specifies the weight to use when drawing text with this color. */
+ enum FontWeight
+ {
+ /** Always draw text in this color with a bold weight. */
+ Bold,
+ /** Always draw text in this color with a normal weight. */
+ Normal,
+ /**
+ * Use the current font weight set by the terminal application.
+ * This is the default behavior.
+ */
+ UseCurrentFormat
+ };
+
+ /**
+ * Constructs a new color palette entry.
+ *
+ * @param c The color value for this entry.
+ * @param tr Specifies that the color should be transparent when used as a background color.
+ * @param weight Specifies the font weight to use when drawing text with this color.
+ */
+ ColorEntry(QColor c, bool tr, FontWeight weight = UseCurrentFormat)
+ : color(c), transparent(tr), fontWeight(weight) {}
+
+ /**
+ * Constructs a new color palette entry with an undefined color, and
+ * with the transparent and bold flags set to false.
+ */
+ ColorEntry() : transparent(false), fontWeight(UseCurrentFormat) {}
+
+ /**
+ * Sets the color, transparency and boldness of this color to those of @p rhs.
+ */
+ void operator=(const ColorEntry& rhs)
+ {
+ color = rhs.color;
+ transparent = rhs.transparent;
+ fontWeight = rhs.fontWeight;
+ }
+
+ /** The color value of this entry for display. */
+ QColor color;
+
+ /**
+ * If true character backgrounds using this color should be transparent.
+ * This is not applicable when the color is used to render text.
+ */
+ bool transparent;
+ /**
+ * Specifies the font weight to use when drawing text with this color.
+ * This is not applicable when the color is used to draw a character's background.
+ */
+ FontWeight fontWeight;
+};
+
+
+// Attributed Character Representations ///////////////////////////////
+
+// Colors
+
+#define BASE_COLORS (2+8)
+#define INTENSITIES 2
+#define TABLE_COLORS (INTENSITIES*BASE_COLORS)
+
+#define DEFAULT_FORE_COLOR 0
+#define DEFAULT_BACK_COLOR 1
+
+//a standard set of colors using black text on a white background.
+//defined in TerminalDisplay.cpp
+
+extern const ColorEntry base_color_table[TABLE_COLORS] KDE_NO_EXPORT;
+
+/* CharacterColor is a union of the various color spaces.
+
+ Assignment is as follows:
+
+ Type - Space - Values
+
+ 0 - Undefined - u: 0, v:0 w:0
+ 1 - Default - u: 0..1 v:intense w:0
+ 2 - System - u: 0..7 v:intense w:0
+ 3 - Index(256) - u: 16..255 v:0 w:0
+ 4 - RGB - u: 0..255 v:0..256 w:0..256
+
+ Default colour space has two separate colours, namely
+ default foreground and default background colour.
+*/
+
+#define COLOR_SPACE_UNDEFINED 0
+#define COLOR_SPACE_DEFAULT 1
+#define COLOR_SPACE_SYSTEM 2
+#define COLOR_SPACE_256 3
+#define COLOR_SPACE_RGB 4
+
+/**
+ * Describes the color of a single character in the terminal.
+ */
+class CharacterColor
+{
+ friend class Character;
+
+public:
+ /** Constructs a new CharacterColor whoose color and color space are undefined. */
+ CharacterColor()
+ : _colorSpace(COLOR_SPACE_UNDEFINED),
+ _u(0),
+ _v(0),
+ _w(0)
+ {}
+
+ /**
+ * Constructs a new CharacterColor using the specified @p colorSpace and with
+ * color value @p co
+ *
+ * The meaning of @p co depends on the @p colorSpace used.
+ *
+ * TODO : Document how @p co relates to @p colorSpace
+ *
+ * TODO : Add documentation about available color spaces.
+ */
+ CharacterColor(quint8 colorSpace, int co)
+ : _colorSpace(colorSpace),
+ _u(0),
+ _v(0),
+ _w(0)
+ {
+ switch (colorSpace)
+ {
+ case COLOR_SPACE_DEFAULT:
+ _u = co & 1;
+ break;
+ case COLOR_SPACE_SYSTEM:
+ _u = co & 7;
+ _v = (co >> 3) & 1;
+ break;
+ case COLOR_SPACE_256:
+ _u = co & 255;
+ break;
+ case COLOR_SPACE_RGB:
+ _u = co >> 16;
+ _v = co >> 8;
+ _w = co;
+ break;
+ default:
+ _colorSpace = COLOR_SPACE_UNDEFINED;
+ }
+ }
+
+ /**
+ * Returns true if this character color entry is valid.
+ */
+ bool isValid()
+ {
+ return _colorSpace != COLOR_SPACE_UNDEFINED;
+ }
+
+ /**
+ * Toggles the value of this color between a normal system color and the corresponding intensive
+ * system color.
+ *
+ * This is only applicable if the color is using the COLOR_SPACE_DEFAULT or COLOR_SPACE_SYSTEM
+ * color spaces.
+ */
+ void toggleIntensive();
+
+ /**
+ * Returns the color within the specified color @p palette
+ *
+ * The @p palette is only used if this color is one of the 16 system colors, otherwise
+ * it is ignored.
+ */
+ QColor color(const ColorEntry* palette) const;
+
+ /**
+ * Compares two colors and returns true if they represent the same color value and
+ * use the same color space.
+ */
+ friend bool operator == (const CharacterColor& a, const CharacterColor& b);
+ /**
+ * Compares two colors and returns true if they represent different color values
+ * or use different color spaces.
+ */
+ friend bool operator != (const CharacterColor& a, const CharacterColor& b);
+
+private:
+ quint8 _colorSpace;
+
+ // bytes storing the character color
+ quint8 _u;
+ quint8 _v;
+ quint8 _w;
+};
+
+inline bool operator == (const CharacterColor& a, const CharacterColor& b)
+{
+ return a._colorSpace == b._colorSpace &&
+ a._u == b._u &&
+ a._v == b._v &&
+ a._w == b._w;
+}
+inline bool operator != (const CharacterColor& a, const CharacterColor& b)
+{
+ return !operator==(a,b);
+}
+
+inline const QColor color256(quint8 u, const ColorEntry* base)
+{
+ // 0.. 16: system colors
+ if (u < 8) return base[u+2 ].color; u -= 8;
+ if (u < 8) return base[u+2+BASE_COLORS].color; u -= 8;
+
+ // 16..231: 6x6x6 rgb color cube
+ if (u < 216) return QColor(((u/36)%6) ? (40*((u/36)%6)+55) : 0,
+ ((u/ 6)%6) ? (40*((u/ 6)%6)+55) : 0,
+ ((u/ 1)%6) ? (40*((u/ 1)%6)+55) : 0); u -= 216;
+
+ // 232..255: gray, leaving out black and white
+ int gray = u*10+8; return QColor(gray,gray,gray);
+}
+
+inline QColor CharacterColor::color(const ColorEntry* base) const
+{
+ switch (_colorSpace)
+ {
+ case COLOR_SPACE_DEFAULT: return base[_u+0+(_v?BASE_COLORS:0)].color;
+ case COLOR_SPACE_SYSTEM: return base[_u+2+(_v?BASE_COLORS:0)].color;
+ case COLOR_SPACE_256: return color256(_u,base);
+ case COLOR_SPACE_RGB: return QColor(_u,_v,_w);
+ case COLOR_SPACE_UNDEFINED: return QColor();
+ }
+
+ Q_ASSERT(false); // invalid color space
+
+ return QColor();
+}
+
+inline void CharacterColor::toggleIntensive()
+{
+ if (_colorSpace == COLOR_SPACE_SYSTEM || _colorSpace == COLOR_SPACE_DEFAULT)
+ {
+ _v = !_v;
+ }
+}
+
+
+#endif // CHARACTERCOLOR_H
+
diff --git a/konsole-qml-plugin/src/ColorScheme.cpp b/konsole-qml-plugin/src/ColorScheme.cpp
new file mode 100644
index 0000000..7f38bf5
--- /dev/null
+++ b/konsole-qml-plugin/src/ColorScheme.cpp
@@ -0,0 +1,774 @@
+/*
+ This source file is part of Konsole, a terminal emulator.
+
+ Copyright 2007-2008 by Robert Knight
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+*/
+
+// Own
+#include "ColorScheme.h"
+#include "tools.h"
+
+// Qt
+#include
+#include
+#include
+#include
+#include
+#include
+
+
+// KDE
+//#include
+//#include
+//#include
+//#include
+//#include
+//#include
+
+
+const ColorEntry ColorScheme::defaultTable[TABLE_COLORS] =
+ // The following are almost IBM standard color codes, with some slight
+ // gamma correction for the dim colors to compensate for bright X screens.
+ // It contains the 8 ansiterm/xterm colors in 2 intensities.
+{
+ ColorEntry( QColor(0x00,0x00,0x00), 0), ColorEntry(
+QColor(0xFF,0xFF,0xFF), 1), // Dfore, Dback
+ ColorEntry( QColor(0x00,0x00,0x00), 0), ColorEntry(
+QColor(0xB2,0x18,0x18), 0), // Black, Red
+ ColorEntry( QColor(0x18,0xB2,0x18), 0), ColorEntry(
+QColor(0xB2,0x68,0x18), 0), // Green, Yellow
+ ColorEntry( QColor(0x18,0x18,0xB2), 0), ColorEntry(
+QColor(0xB2,0x18,0xB2), 0), // Blue, Magenta
+ ColorEntry( QColor(0x18,0xB2,0xB2), 0), ColorEntry(
+QColor(0xB2,0xB2,0xB2), 0), // Cyan, White
+ // intensive
+ ColorEntry( QColor(0x00,0x00,0x00), 0), ColorEntry(
+QColor(0xFF,0xFF,0xFF), 1),
+ ColorEntry( QColor(0x68,0x68,0x68), 0), ColorEntry(
+QColor(0xFF,0x54,0x54), 0),
+ ColorEntry( QColor(0x54,0xFF,0x54), 0), ColorEntry(
+QColor(0xFF,0xFF,0x54), 0),
+ ColorEntry( QColor(0x54,0x54,0xFF), 0), ColorEntry(
+QColor(0xFF,0x54,0xFF), 0),
+ ColorEntry( QColor(0x54,0xFF,0xFF), 0), ColorEntry(
+QColor(0xFF,0xFF,0xFF), 0)
+};
+
+const char* const ColorScheme::colorNames[TABLE_COLORS] =
+{
+ "Foreground",
+ "Background",
+ "Color0",
+ "Color1",
+ "Color2",
+ "Color3",
+ "Color4",
+ "Color5",
+ "Color6",
+ "Color7",
+ "ForegroundIntense",
+ "BackgroundIntense",
+ "Color0Intense",
+ "Color1Intense",
+ "Color2Intense",
+ "Color3Intense",
+ "Color4Intense",
+ "Color5Intense",
+ "Color6Intense",
+ "Color7Intense"
+};
+// dummy silently comment out the tr_NOOP
+#define tr_NOOP
+const char* const ColorScheme::translatedColorNames[TABLE_COLORS] =
+{
+ tr_NOOP("Foreground"),
+ tr_NOOP("Background"),
+ tr_NOOP("Color 1"),
+ tr_NOOP("Color 2"),
+ tr_NOOP("Color 3"),
+ tr_NOOP("Color 4"),
+ tr_NOOP("Color 5"),
+ tr_NOOP("Color 6"),
+ tr_NOOP("Color 7"),
+ tr_NOOP("Color 8"),
+ tr_NOOP("Foreground (Intense)"),
+ tr_NOOP("Background (Intense)"),
+ tr_NOOP("Color 1 (Intense)"),
+ tr_NOOP("Color 2 (Intense)"),
+ tr_NOOP("Color 3 (Intense)"),
+ tr_NOOP("Color 4 (Intense)"),
+ tr_NOOP("Color 5 (Intense)"),
+ tr_NOOP("Color 6 (Intense)"),
+ tr_NOOP("Color 7 (Intense)"),
+ tr_NOOP("Color 8 (Intense)")
+};
+
+ColorScheme::ColorScheme()
+{
+ _table = 0;
+ _randomTable = 0;
+ _opacity = 1.0;
+}
+ColorScheme::ColorScheme(const ColorScheme& other)
+ : _opacity(other._opacity)
+ ,_table(0)
+ ,_randomTable(0)
+{
+ setName(other.name());
+ setDescription(other.description());
+
+ if ( other._table != 0 )
+ {
+ for ( int i = 0 ; i < TABLE_COLORS ; i++ )
+ setColorTableEntry(i,other._table[i]);
+ }
+
+ if ( other._randomTable != 0 )
+ {
+ for ( int i = 0 ; i < TABLE_COLORS ; i++ )
+ {
+ const RandomizationRange& range = other._randomTable[i];
+ setRandomizationRange(i,range.hue,range.saturation,range.value);
+ }
+ }
+}
+ColorScheme::~ColorScheme()
+{
+ delete[] _table;
+ delete[] _randomTable;
+}
+
+void ColorScheme::setDescription(const QString& description) { _description = description; }
+QString ColorScheme::description() const { return _description; }
+
+void ColorScheme::setName(const QString& name) { _name = name; }
+QString ColorScheme::name() const { return _name; }
+
+void ColorScheme::setColorTableEntry(int index , const ColorEntry& entry)
+{
+ Q_ASSERT( index >= 0 && index < TABLE_COLORS );
+
+ if ( !_table )
+ {
+ _table = new ColorEntry[TABLE_COLORS];
+
+ for (int i=0;i= 0 && index < TABLE_COLORS );
+
+ if ( randomSeed != 0 )
+ qsrand(randomSeed);
+
+ ColorEntry entry = colorTable()[index];
+
+ if ( randomSeed != 0 &&
+ _randomTable != 0 &&
+ !_randomTable[index].isNull() )
+ {
+ const RandomizationRange& range = _randomTable[index];
+
+
+ int hueDifference = range.hue ? (qrand() % range.hue) - range.hue/2 : 0;
+ int saturationDifference = range.saturation ? (qrand() % range.saturation) - range.saturation/2 : 0;
+ int valueDifference = range.value ? (qrand() % range.value) - range.value/2 : 0;
+
+ QColor& color = entry.color;
+
+ int newHue = qAbs( (color.hue() + hueDifference) % MAX_HUE );
+ int newValue = qMin( qAbs(color.value() + valueDifference) , 255 );
+ int newSaturation = qMin( qAbs(color.saturation() + saturationDifference) , 255 );
+
+ color.setHsv(newHue,newSaturation,newValue);
+ }
+
+ return entry;
+}
+void ColorScheme::getColorTable(ColorEntry* table , uint randomSeed) const
+{
+ for ( int i = 0 ; i < TABLE_COLORS ; i++ )
+ table[i] = colorEntry(i,randomSeed);
+}
+bool ColorScheme::randomizedBackgroundColor() const
+{
+ return _randomTable == 0 ? false : !_randomTable[1].isNull();
+}
+void ColorScheme::setRandomizedBackgroundColor(bool randomize)
+{
+ // the hue of the background colour is allowed to be randomly
+ // adjusted as much as possible.
+ //
+ // the value and saturation are left alone to maintain read-ability
+ if ( randomize )
+ {
+ setRandomizationRange( 1 /* background color index */ , MAX_HUE , 255 , 0 );
+ }
+ else
+ {
+ if ( _randomTable )
+ setRandomizationRange( 1 /* background color index */ , 0 , 0 , 0 );
+ }
+}
+
+void ColorScheme::setRandomizationRange( int index , quint16 hue , quint8 saturation ,
+ quint8 value )
+{
+ Q_ASSERT( hue <= MAX_HUE );
+ Q_ASSERT( index >= 0 && index < TABLE_COLORS );
+
+ if ( _randomTable == 0 )
+ _randomTable = new RandomizationRange[TABLE_COLORS];
+
+ _randomTable[index].hue = hue;
+ _randomTable[index].value = value;
+ _randomTable[index].saturation = saturation;
+}
+
+const ColorEntry* ColorScheme::colorTable() const
+{
+ if ( _table )
+ return _table;
+ else
+ return defaultTable;
+}
+QColor ColorScheme::foregroundColor() const
+{
+ return colorTable()[0].color;
+}
+QColor ColorScheme::backgroundColor() const
+{
+ return colorTable()[1].color;
+}
+bool ColorScheme::hasDarkBackground() const
+{
+ // value can range from 0 - 255, with larger values indicating higher brightness.
+ // so 127 is in the middle, anything less is deemed 'dark'
+ return backgroundColor().value() < 127;
+}
+void ColorScheme::setOpacity(qreal opacity) { _opacity = opacity; }
+qreal ColorScheme::opacity() const { return _opacity; }
+
+void ColorScheme::read(const QString & fileName)
+{
+ QSettings s(fileName, QSettings::IniFormat);
+ s.beginGroup("General");
+
+ _description = s.value("Description", QObject::tr("Un-named Color Scheme")).toString();
+ _opacity = s.value("Opacity",qreal(1.0)).toDouble();
+ s.endGroup();
+
+ for (int i=0 ; i < TABLE_COLORS ; i++)
+ {
+ readColorEntry(&s, i);
+ }
+}
+#if 0
+// implemented upstream - user apps
+void ColorScheme::read(KConfig& config)
+{
+ KConfigGroup configGroup = config.group("General");
+
+ QString description = configGroup.readEntry("Description", QObject::tr("Un-named Color Scheme"));
+
+ _description = tr(description.toUtf8());
+ _opacity = configGroup.readEntry("Opacity",qreal(1.0));
+
+ for (int i=0 ; i < TABLE_COLORS ; i++)
+ {
+ readColorEntry(config,i);
+ }
+}
+void ColorScheme::write(KConfig& config) const
+{
+ KConfigGroup configGroup = config.group("General");
+
+ configGroup.writeEntry("Description",_description);
+ configGroup.writeEntry("Opacity",_opacity);
+
+ for (int i=0 ; i < TABLE_COLORS ; i++)
+ {
+ RandomizationRange random = _randomTable != 0 ? _randomTable[i] : RandomizationRange();
+ writeColorEntry(config,colorNameForIndex(i),colorTable()[i],random);
+ }
+}
+#endif
+
+QString ColorScheme::colorNameForIndex(int index)
+{
+ Q_ASSERT( index >= 0 && index < TABLE_COLORS );
+
+ return QString(colorNames[index]);
+}
+QString ColorScheme::translatedColorNameForIndex(int index)
+{
+ Q_ASSERT( index >= 0 && index < TABLE_COLORS );
+
+ return translatedColorNames[index];
+}
+
+void ColorScheme::readColorEntry(QSettings * s , int index)
+{
+ s->beginGroup(colorNameForIndex(index));
+
+ ColorEntry entry;
+
+ QStringList rgbList = s->value("Color", QStringList()).toStringList();
+ if (rgbList.count() != 3)
+ {
+ Q_ASSERT(0);
+ }
+ int r, g, b;
+ r = rgbList[0].toInt();
+ g = rgbList[1].toInt();
+ b = rgbList[2].toInt();
+ entry.color = QColor(r, g, b);
+
+ entry.transparent = s->value("Transparent",false).toBool();
+
+ // Deprecated key from KDE 4.0 which set 'Bold' to true to force
+ // a color to be bold or false to use the current format
+ //
+ // TODO - Add a new tri-state key which allows for bold, normal or
+ // current format
+ if (s->contains("Bold"))
+ entry.fontWeight = s->value("Bold",false).toBool() ? ColorEntry::Bold :
+ ColorEntry::UseCurrentFormat;
+
+ quint16 hue = s->value("MaxRandomHue",0).toInt();
+ quint8 value = s->value("MaxRandomValue",0).toInt();
+ quint8 saturation = s->value("MaxRandomSaturation",0).toInt();
+
+ setColorTableEntry( index , entry );
+
+ if ( hue != 0 || value != 0 || saturation != 0 )
+ setRandomizationRange( index , hue , saturation , value );
+
+ s->endGroup();
+}
+#if 0
+// implemented upstream - user apps
+void ColorScheme::writeColorEntry(KConfig& config , const QString& colorName, const ColorEntry& entry , const RandomizationRange& random) const
+{
+ KConfigGroup configGroup(&config,colorName);
+
+ configGroup.writeEntry("Color",entry.color);
+ configGroup.writeEntry("Transparency",(bool)entry.transparent);
+ if (entry.fontWeight != ColorEntry::UseCurrentFormat)
+ {
+ configGroup.writeEntry("Bold",entry.fontWeight == ColorEntry::Bold);
+ }
+
+ // record randomization if this color has randomization or
+ // if one of the keys already exists
+ if ( !random.isNull() || configGroup.hasKey("MaxRandomHue") )
+ {
+ configGroup.writeEntry("MaxRandomHue",(int)random.hue);
+ configGroup.writeEntry("MaxRandomValue",(int)random.value);
+ configGroup.writeEntry("MaxRandomSaturation",(int)random.saturation);
+ }
+}
+#endif
+
+//
+// Work In Progress - A color scheme for use on KDE setups for users
+// with visual disabilities which means that they may have trouble
+// reading text with the supplied color schemes.
+//
+// This color scheme uses only the 'safe' colors defined by the
+// KColorScheme class.
+//
+// A complication this introduces is that each color provided by
+// KColorScheme is defined as a 'background' or 'foreground' color.
+// Only foreground colors are allowed to be used to render text and
+// only background colors are allowed to be used for backgrounds.
+//
+// The ColorEntry and TerminalDisplay classes do not currently
+// support this restriction.
+//
+// Requirements:
+// - A color scheme which uses only colors from the KColorScheme class
+// - Ability to restrict which colors the TerminalDisplay widget
+// uses as foreground and background color
+// - Make use of KGlobalSettings::allowDefaultBackgroundImages() as
+// a hint to determine whether this accessible color scheme should
+// be used by default.
+//
+//
+// -- Robert Knight 21/07/2007
+//
+AccessibleColorScheme::AccessibleColorScheme()
+ : ColorScheme()
+{
+#if 0
+// It's not finished in konsole and it breaks Qt4 compilation as well
+ // basic attributes
+ setName("accessible");
+ setDescription(QObject::tr("Accessible Color Scheme"));
+
+ // setup colors
+ const int ColorRoleCount = 8;
+
+ const KColorScheme colorScheme(QPalette::Active);
+
+ QBrush colors[ColorRoleCount] =
+ {
+ colorScheme.foreground( colorScheme.NormalText ),
+ colorScheme.background( colorScheme.NormalBackground ),
+
+ colorScheme.foreground( colorScheme.InactiveText ),
+ colorScheme.foreground( colorScheme.ActiveText ),
+ colorScheme.foreground( colorScheme.LinkText ),
+ colorScheme.foreground( colorScheme.VisitedText ),
+ colorScheme.foreground( colorScheme.NegativeText ),
+ colorScheme.foreground( colorScheme.NeutralText )
+ };
+
+ for ( int i = 0 ; i < TABLE_COLORS ; i++ )
+ {
+ ColorEntry entry;
+ entry.color = colors[ i % ColorRoleCount ].color();
+
+ setColorTableEntry( i , entry );
+ }
+#endif
+}
+
+KDE3ColorSchemeReader::KDE3ColorSchemeReader( QIODevice* device ) :
+ _device(device)
+{
+}
+ColorScheme* KDE3ColorSchemeReader::read()
+{
+ Q_ASSERT( _device->openMode() == QIODevice::ReadOnly ||
+ _device->openMode() == QIODevice::ReadWrite );
+
+ ColorScheme* scheme = new ColorScheme();
+
+ QRegExp comment("#.*$");
+ while ( !_device->atEnd() )
+ {
+ QString line(_device->readLine());
+ line.remove(comment);
+ line = line.simplified();
+
+ if ( line.isEmpty() )
+ continue;
+
+ if ( line.startsWith(QLatin1String("color")) )
+ {
+ if (!readColorLine(line,scheme))
+ qDebug() << "Failed to read KDE 3 color scheme line" << line;
+ }
+ else if ( line.startsWith(QLatin1String("title")) )
+ {
+ if (!readTitleLine(line,scheme))
+ qDebug() << "Failed to read KDE 3 color scheme title line" << line;
+ }
+ else
+ {
+ qDebug() << "KDE 3 color scheme contains an unsupported feature, '" <<
+ line << "'";
+ }
+ }
+
+ return scheme;
+}
+bool KDE3ColorSchemeReader::readColorLine(const QString& line,ColorScheme* scheme)
+{
+ QStringList list = line.split(QChar(' '));
+
+ if (list.count() != 7)
+ return false;
+ if (list.first() != "color")
+ return false;
+
+ int index = list[1].toInt();
+ int red = list[2].toInt();
+ int green = list[3].toInt();
+ int blue = list[4].toInt();
+ int transparent = list[5].toInt();
+ int bold = list[6].toInt();
+
+ const int MAX_COLOR_VALUE = 255;
+
+ if( (index < 0 || index >= TABLE_COLORS )
+ || (red < 0 || red > MAX_COLOR_VALUE )
+ || (blue < 0 || blue > MAX_COLOR_VALUE )
+ || (green < 0 || green > MAX_COLOR_VALUE )
+ || (transparent != 0 && transparent != 1 )
+ || (bold != 0 && bold != 1) )
+ return false;
+
+ ColorEntry entry;
+ entry.color = QColor(red,green,blue);
+ entry.transparent = ( transparent != 0 );
+ entry.fontWeight = ( bold != 0 ) ? ColorEntry::Bold : ColorEntry::UseCurrentFormat;
+
+ scheme->setColorTableEntry(index,entry);
+ return true;
+}
+bool KDE3ColorSchemeReader::readTitleLine(const QString& line,ColorScheme* scheme)
+{
+ if( !line.startsWith(QLatin1String("title")) )
+ return false;
+
+ int spacePos = line.indexOf(' ');
+ if( spacePos == -1 )
+ return false;
+
+ QString description = line.mid(spacePos+1);
+
+ scheme->setDescription(description.toUtf8());
+ return true;
+}
+ColorSchemeManager::ColorSchemeManager()
+ : _haveLoadedAll(false)
+{
+}
+ColorSchemeManager::~ColorSchemeManager()
+{
+ QHashIterator iter(_colorSchemes);
+ while (iter.hasNext())
+ {
+ iter.next();
+ delete iter.value();
+ }
+}
+void ColorSchemeManager::loadAllColorSchemes()
+{
+ qDebug() << "loadAllColorSchemes";
+ int success = 0;
+ int failed = 0;
+
+ QList nativeColorSchemes = listColorSchemes();
+
+ QListIterator nativeIter(nativeColorSchemes);
+ while ( nativeIter.hasNext() )
+ {
+ if ( loadColorScheme( nativeIter.next() ) )
+ success++;
+ else
+ failed++;
+ }
+
+ QList kde3ColorSchemes = listKDE3ColorSchemes();
+ QListIterator kde3Iter(kde3ColorSchemes);
+ while ( kde3Iter.hasNext() )
+ {
+ if ( loadKDE3ColorScheme( kde3Iter.next() ) )
+ success++;
+ else
+ failed++;
+ }
+
+ if ( failed > 0 )
+ qDebug() << "failed to load " << failed << " color schemes.";
+
+ _haveLoadedAll = true;
+}
+QList ColorSchemeManager::allColorSchemes()
+{
+ if ( !_haveLoadedAll )
+ {
+ loadAllColorSchemes();
+ }
+
+ return _colorSchemes.values();
+}
+bool ColorSchemeManager::loadKDE3ColorScheme(const QString& filePath)
+{
+ QFile file(filePath);
+ if (!filePath.endsWith(QLatin1String(".schema")) || !file.open(QIODevice::ReadOnly))
+ return false;
+
+ KDE3ColorSchemeReader reader(&file);
+ ColorScheme* scheme = reader.read();
+ scheme->setName(QFileInfo(file).baseName());
+ file.close();
+
+ if (scheme->name().isEmpty())
+ {
+ qDebug() << "color scheme name is not valid.";
+ delete scheme;
+ return false;
+ }
+
+ QFileInfo info(filePath);
+
+ if ( !_colorSchemes.contains(info.baseName()) )
+ _colorSchemes.insert(scheme->name(),scheme);
+ else
+ {
+ qDebug() << "color scheme with name" << scheme->name() << "has already been" <<
+ "found, ignoring.";
+ delete scheme;
+ }
+
+ return true;
+}
+#if 0
+void ColorSchemeManager::addColorScheme(ColorScheme* scheme)
+{
+ _colorSchemes.insert(scheme->name(),scheme);
+
+ // save changes to disk
+ QString path = KGlobal::dirs()->saveLocation("data","konsole/") + scheme->name() + ".colorscheme";
+ KConfig config(path , KConfig::NoGlobals);
+
+ scheme->write(config);
+}
+#endif
+bool ColorSchemeManager::loadColorScheme(const QString& filePath)
+{
+ if ( !filePath.endsWith(QLatin1String(".colorscheme")) || !QFile::exists(filePath) )
+ return false;
+
+ QFileInfo info(filePath);
+
+ ColorScheme* scheme = new ColorScheme();
+ scheme->setName(info.baseName());
+ scheme->read(filePath);
+
+ if (scheme->name().isEmpty())
+ {
+ qDebug() << "Color scheme in" << filePath << "does not have a valid name and was not loaded.";
+ delete scheme;
+ return false;
+ }
+
+ if ( !_colorSchemes.contains(info.baseName()) )
+ {
+ _colorSchemes.insert(scheme->name(),scheme);
+ }
+ else
+ {
+ qDebug() << "color scheme with name" << scheme->name() << "has already been" <<
+ "found, ignoring.";
+
+ delete scheme;
+ }
+
+ return true;
+}
+QList ColorSchemeManager::listKDE3ColorSchemes()
+{
+ QString dname(get_color_schemes_dir());
+ QDir dir(dname);
+ QStringList filters;
+ filters << "*.schema";
+ dir.setNameFilters(filters);
+ QStringList list = dir.entryList(filters);
+ QStringList ret;
+ foreach(QString i, list)
+ ret << dname + "/" + i;
+ return ret;
+ //return KGlobal::dirs()->findAllResources("data",
+ // "konsole/*.schema",
+ // KStandardDirs::NoDuplicates);
+ //
+}
+QList ColorSchemeManager::listColorSchemes()
+{
+ QString dname(get_color_schemes_dir());
+ QDir dir(dname);
+ QStringList filters;
+ filters << "*.colorscheme";
+ dir.setNameFilters(filters);
+ QStringList list = dir.entryList(filters);
+ QStringList ret;
+ foreach(QString i, list)
+ ret << dname + "/" + i;
+ return ret;
+// return KGlobal::dirs()->findAllResources("data",
+// "konsole/*.colorscheme",
+// KStandardDirs::NoDuplicates);
+}
+const ColorScheme ColorSchemeManager::_defaultColorScheme;
+const ColorScheme* ColorSchemeManager::defaultColorScheme() const
+{
+ return &_defaultColorScheme;
+}
+bool ColorSchemeManager::deleteColorScheme(const QString& name)
+{
+ Q_ASSERT( _colorSchemes.contains(name) );
+
+ // lookup the path and delete
+ QString path = findColorSchemePath(name);
+ if ( QFile::remove(path) )
+ {
+ _colorSchemes.remove(name);
+ return true;
+ }
+ else
+ {
+ qDebug() << "Failed to remove color scheme -" << path;
+ return false;
+ }
+}
+QString ColorSchemeManager::findColorSchemePath(const QString& name) const
+{
+// QString path = KStandardDirs::locate("data","konsole/"+name+".colorscheme");
+ QString path(get_color_schemes_dir() + "/"+ name + ".colorscheme");
+ if ( !path.isEmpty() )
+ return path;
+
+ //path = KStandardDirs::locate("data","konsole/"+name+".schema");
+ path = get_color_schemes_dir() + "/"+ name + ".schema";
+
+ return path;
+}
+const ColorScheme* ColorSchemeManager::findColorScheme(const QString& name)
+{
+ if ( name.isEmpty() )
+ return defaultColorScheme();
+
+ if ( _colorSchemes.contains(name) )
+ return _colorSchemes[name];
+ else
+ {
+ // look for this color scheme
+ QString path = findColorSchemePath(name);
+ if ( !path.isEmpty() && loadColorScheme(path) )
+ {
+ return findColorScheme(name);
+ }
+ else
+ {
+ if (!path.isEmpty() && loadKDE3ColorScheme(path))
+ return findColorScheme(name);
+ }
+
+ qDebug() << "Could not find color scheme - " << name;
+
+ return 0;
+ }
+}
+
+ColorSchemeManager* ColorSchemeManager::theColorSchemeManager = 0;
+//K_GLOBAL_STATIC( ColorSchemeManager , theColorSchemeManager )
+ColorSchemeManager* ColorSchemeManager::instance()
+{
+ if (! theColorSchemeManager)
+ theColorSchemeManager = new ColorSchemeManager();
+ return theColorSchemeManager;
+}
diff --git a/konsole-qml-plugin/src/ColorScheme.h b/konsole-qml-plugin/src/ColorScheme.h
new file mode 100644
index 0000000..1da466e
--- /dev/null
+++ b/konsole-qml-plugin/src/ColorScheme.h
@@ -0,0 +1,342 @@
+/*
+ This source file is part of Konsole, a terminal emulator.
+
+ Copyright 2007-2008 by Robert Knight
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+*/
+
+#ifndef COLORSCHEME_H
+#define COLORSCHEME_H
+
+// Qt
+#include
+#include
+#include
+#include
+#include
+#include
+
+// Konsole
+#include "CharacterColor.h"
+
+class QIODevice;
+//class KConfig;
+
+
+/**
+ * Represents a color scheme for a terminal display.
+ *
+ * The color scheme includes the palette of colors used to draw the text and character backgrounds
+ * in the display and the opacity level of the display background.
+ */
+class ColorScheme
+{
+public:
+ /**
+ * Constructs a new color scheme which is initialised to the default color set
+ * for Konsole.
+ */
+ ColorScheme();
+ ColorScheme(const ColorScheme& other);
+ ~ColorScheme();
+
+ /** Sets the descriptive name of the color scheme. */
+ void setDescription(const QString& description);
+ /** Returns the descriptive name of the color scheme. */
+ QString description() const;
+
+ /** Sets the name of the color scheme */
+ void setName(const QString& name);
+ /** Returns the name of the color scheme */
+ QString name() const;
+
+#if 0
+// Implemented upstream - in user apps
+ /** Reads the color scheme from the specified configuration source */
+ void read(KConfig& config);
+ /** Writes the color scheme to the specified configuration source */
+ void write(KConfig& config) const;
+#endif
+ void read(const QString & filename);
+
+ /** Sets a single entry within the color palette. */
+ void setColorTableEntry(int index , const ColorEntry& entry);
+
+ /**
+ * Copies the color entries which form the palette for this color scheme
+ * into @p table. @p table should be an array with TABLE_COLORS entries.
+ *
+ * @param table Array into which the color entries for this color scheme
+ * are copied.
+ * @param randomSeed Color schemes may allow certain colors in their
+ * palette to be randomized. The seed is used to pick the random color.
+ */
+ void getColorTable(ColorEntry* table, uint randomSeed = 0) const;
+
+ /**
+ * Retrieves a single color entry from the table.
+ *
+ * See getColorTable()
+ */
+ ColorEntry colorEntry(int index , uint randomSeed = 0) const;
+
+ /**
+ * Convenience method. Returns the
+ * foreground color for this scheme,
+ * this is the primary color used to draw the
+ * text in this scheme.
+ */
+ QColor foregroundColor() const;
+ /**
+ * Convenience method. Returns the background color for
+ * this scheme, this is the primary color used to
+ * draw the terminal background in this scheme.
+ */
+ QColor backgroundColor() const;
+
+ /**
+ * Returns true if this color scheme has a dark background.
+ * The background color is said to be dark if it has a value of less than 127
+ * in the HSV color space.
+ */
+ bool hasDarkBackground() const;
+
+ /**
+ * Sets the opacity level of the display background. @p opacity ranges
+ * between 0 (completely transparent background) and 1 (completely
+ * opaque background).
+ *
+ * Defaults to 1.
+ *
+ * TODO: More documentation
+ */
+ void setOpacity(qreal opacity);
+ /**
+ * Returns the opacity level for this color scheme, see setOpacity()
+ * TODO: More documentation
+ */
+ qreal opacity() const;
+
+ /**
+ * Enables randomization of the background color. This will cause
+ * the palette returned by getColorTable() and colorEntry() to
+ * be adjusted depending on the value of the random seed argument
+ * to them.
+ */
+ void setRandomizedBackgroundColor(bool randomize);
+
+ /** Returns true if the background color is randomized. */
+ bool randomizedBackgroundColor() const;
+
+ static QString colorNameForIndex(int index);
+ static QString translatedColorNameForIndex(int index);
+
+private:
+ // specifies how much a particular color can be randomized by
+ class RandomizationRange
+ {
+ public:
+ RandomizationRange() : hue(0) , saturation(0) , value(0) {}
+
+ bool isNull() const
+ {
+ return ( hue == 0 && saturation == 0 && value == 0 );
+ }
+
+ quint16 hue;
+ quint8 saturation;
+ quint8 value;
+ };
+
+ // returns the active color table. if none has been set specifically,
+ // this is the default color table.
+ const ColorEntry* colorTable() const;
+
+#if 0
+// implemented upstream - user apps
+ // reads a single colour entry from a KConfig source
+ // and sets the palette entry at 'index' to the entry read.
+ void readColorEntry(KConfig& config , int index);
+ // writes a single colour entry to a KConfig source
+ void writeColorEntry(KConfig& config , const QString& colorName, const ColorEntry& entry,const RandomizationRange& range) const;
+#endif
+ void readColorEntry(QSettings *s, int index);
+
+ // sets the amount of randomization allowed for a particular color
+ // in the palette. creates the randomization table if
+ // it does not already exist
+ void setRandomizationRange( int index , quint16 hue , quint8 saturation , quint8 value );
+
+ QString _description;
+ QString _name;
+ qreal _opacity;
+ ColorEntry* _table; // pointer to custom color table or 0 if the default
+ // color scheme is being used
+
+
+ static const quint16 MAX_HUE = 340;
+
+ RandomizationRange* _randomTable; // pointer to randomization table or 0
+ // if no colors in the color scheme support
+ // randomization
+
+ static const char* const colorNames[TABLE_COLORS];
+ static const char* const translatedColorNames[TABLE_COLORS];
+
+ static const ColorEntry defaultTable[]; // table of default color entries
+};
+
+/**
+ * A color scheme which uses colors from the standard KDE color palette.
+ *
+ * This is designed primarily for the benefit of users who are using specially
+ * designed colors.
+ *
+ * TODO Implement and make it the default on systems with specialized KDE
+ * color schemes.
+ */
+class AccessibleColorScheme : public ColorScheme
+{
+public:
+ AccessibleColorScheme();
+};
+
+/**
+ * Reads a color scheme stored in the .schema format used in the KDE 3 incarnation
+ * of Konsole
+ *
+ * Only the basic essentials ( title and color palette entries ) are currently
+ * supported. Additional options such as background image and background
+ * blend colors are ignored.
+ */
+class KDE3ColorSchemeReader
+{
+public:
+ /**
+ * Constructs a new reader which reads from the specified device.
+ * The device should be open in read-only mode.
+ */
+ KDE3ColorSchemeReader( QIODevice* device );
+
+ /**
+ * Reads and parses the contents of the .schema file from the input
+ * device and returns the ColorScheme defined within it.
+ *
+ * Returns a null pointer if an error occurs whilst parsing
+ * the contents of the file.
+ */
+ ColorScheme* read();
+
+private:
+ // reads a line from the file specifying a colour palette entry
+ // format is: color [index] [red] [green] [blue] [transparent] [bold]
+ bool readColorLine(const QString& line , ColorScheme* scheme);
+ bool readTitleLine(const QString& line , ColorScheme* scheme);
+
+ QIODevice* _device;
+};
+
+/**
+ * Manages the color schemes available for use by terminal displays.
+ * See ColorScheme
+ */
+class ColorSchemeManager
+{
+public:
+
+ /**
+ * Constructs a new ColorSchemeManager and loads the list
+ * of available color schemes.
+ *
+ * The color schemes themselves are not loaded until they are first
+ * requested via a call to findColorScheme()
+ */
+ ColorSchemeManager();
+ /**
+ * Destroys the ColorSchemeManager and saves any modified color schemes to disk.
+ */
+ ~ColorSchemeManager();
+
+ /**
+ * Returns the default color scheme for Konsole
+ */
+ const ColorScheme* defaultColorScheme() const;
+
+ /**
+ * Returns the color scheme with the given name or 0 if no
+ * scheme with that name exists. If @p name is empty, the
+ * default color scheme is returned.
+ *
+ * The first time that a color scheme with a particular name is
+ * requested, the configuration information is loaded from disk.
+ */
+ const ColorScheme* findColorScheme(const QString& name);
+
+#if 0
+ /**
+ * Adds a new color scheme to the manager. If @p scheme has the same name as
+ * an existing color scheme, it replaces the existing scheme.
+ *
+ * TODO - Ensure the old color scheme gets deleted
+ */
+ void addColorScheme(ColorScheme* scheme);
+#endif
+ /**
+ * Deletes a color scheme. Returns true on successful deletion or false otherwise.
+ */
+ bool deleteColorScheme(const QString& name);
+
+ /**
+ * Returns a list of the all the available color schemes.
+ * This may be slow when first called because all of the color
+ * scheme resources on disk must be located, read and parsed.
+ *
+ * Subsequent calls will be inexpensive.
+ */
+ QList allColorSchemes();
+
+ /** Returns the global color scheme manager instance. */
+ static ColorSchemeManager* instance();
+
+private:
+ // loads a color scheme from a KDE 4+ .colorscheme file
+ bool loadColorScheme(const QString& path);
+ // loads a color scheme from a KDE 3 .schema file
+ bool loadKDE3ColorScheme(const QString& path);
+ // returns a list of paths of color schemes in the KDE 4+ .colorscheme file format
+ QList listColorSchemes();
+ // returns a list of paths of color schemes in the .schema file format
+ // used in KDE 3
+ QList listKDE3ColorSchemes();
+ // loads all of the color schemes
+ void loadAllColorSchemes();
+ // finds the path of a color scheme
+ QString findColorSchemePath(const QString& name) const;
+
+ QHash _colorSchemes;
+ QSet _modifiedSchemes;
+
+ bool _haveLoadedAll;
+
+ static const ColorScheme _defaultColorScheme;
+
+ static ColorSchemeManager * theColorSchemeManager;
+};
+
+Q_DECLARE_METATYPE(const ColorScheme*)
+
+#endif //COLORSCHEME_H
diff --git a/konsole-qml-plugin/src/ColorTables.h b/konsole-qml-plugin/src/ColorTables.h
new file mode 100644
index 0000000..57b0bd1
--- /dev/null
+++ b/konsole-qml-plugin/src/ColorTables.h
@@ -0,0 +1,55 @@
+#ifndef _COLOR_TABLE_H
+#define _COLOR_TABLE_H
+
+#include "CharacterColor.h"
+
+//using namespace Konsole;
+#if 0
+static const ColorEntry whiteonblack_color_table[TABLE_COLORS] = {
+ // normal
+ ColorEntry(QColor(0xFF,0xFF,0xFF), false ), ColorEntry( QColor(0x00,0x00,0x00), true ), // Dfore, Dback
+ ColorEntry(QColor(0x00,0x00,0x00), false ), ColorEntry( QColor(0xB2,0x18,0x18), false ), // Black, Red
+ ColorEntry(QColor(0x18,0xB2,0x18), false ), ColorEntry( QColor(0xB2,0x68,0x18), false ), // Green, Yellow
+ ColorEntry(QColor(0x18,0x18,0xB2), false ), ColorEntry( QColor(0xB2,0x18,0xB2), false ), // Blue, Magenta
+ ColorEntry(QColor(0x18,0xB2,0xB2), false ), ColorEntry( QColor(0xB2,0xB2,0xB2), false ), // Cyan, White
+ // intensiv
+ ColorEntry(QColor(0x00,0x00,0x00), false ), ColorEntry( QColor(0xFF,0xFF,0xFF), true ),
+ ColorEntry(QColor(0x68,0x68,0x68), false ), ColorEntry( QColor(0xFF,0x54,0x54), false ),
+ ColorEntry(QColor(0x54,0xFF,0x54), false ), ColorEntry( QColor(0xFF,0xFF,0x54), false ),
+ ColorEntry(QColor(0x54,0x54,0xFF), false ), ColorEntry( QColor(0xFF,0x54,0xFF), false ),
+ ColorEntry(QColor(0x54,0xFF,0xFF), false ), ColorEntry( QColor(0xFF,0xFF,0xFF), false )
+};
+
+static const ColorEntry greenonblack_color_table[TABLE_COLORS] = {
+ ColorEntry(QColor( 24, 240, 24), false), ColorEntry(QColor( 0, 0, 0), true),
+ ColorEntry(QColor( 0, 0, 0), false), ColorEntry(QColor( 178, 24, 24), false),
+ ColorEntry(QColor( 24, 178, 24), false), ColorEntry(QColor( 178, 104, 24), false),
+ ColorEntry(QColor( 24, 24, 178), false), ColorEntry(QColor( 178, 24, 178), false),
+ ColorEntry(QColor( 24, 178, 178), false), ColorEntry(QColor( 178, 178, 178), false),
+ // intensive colors
+ ColorEntry(QColor( 24, 240, 24), false ), ColorEntry(QColor( 0, 0, 0), true ),
+ ColorEntry(QColor( 104, 104, 104), false ), ColorEntry(QColor( 255, 84, 84), false ),
+ ColorEntry(QColor( 84, 255, 84), false ), ColorEntry(QColor( 255, 255, 84), false ),
+ ColorEntry(QColor( 84, 84, 255), false ), ColorEntry(QColor( 255, 84, 255), false ),
+ ColorEntry(QColor( 84, 255, 255), false ), ColorEntry(QColor( 255, 255, 255), false )
+};
+
+static const ColorEntry blackonlightyellow_color_table[TABLE_COLORS] = {
+ ColorEntry(QColor( 0, 0, 0), false), ColorEntry(QColor( 255, 255, 221), true),
+ ColorEntry(QColor( 0, 0, 0), false), ColorEntry(QColor( 178, 24, 24), false),
+ ColorEntry(QColor( 24, 178, 24), false), ColorEntry(QColor( 178, 104, 24), false),
+ ColorEntry(QColor( 24, 24, 178), false), ColorEntry(QColor( 178, 24, 178), false),
+ ColorEntry(QColor( 24, 178, 178), false), ColorEntry(QColor( 178, 178, 178), false),
+ ColorEntry(QColor( 0, 0, 0), false), ColorEntry(QColor( 255, 255, 221), true),
+ ColorEntry(QColor(104, 104, 104), false), ColorEntry(QColor( 255, 84, 84), false),
+ ColorEntry(QColor( 84, 255, 84), false), ColorEntry(QColor( 255, 255, 84), false),
+ ColorEntry(QColor( 84, 84, 255), false), ColorEntry(QColor( 255, 84, 255), false),
+ ColorEntry(QColor( 84, 255, 255), false), ColorEntry(QColor( 255, 255, 255), false)
+};
+
+
+#endif
+
+
+#endif
+
diff --git a/konsole-qml-plugin/src/DefaultTranslatorText.h b/konsole-qml-plugin/src/DefaultTranslatorText.h
new file mode 100644
index 0000000..e47417c
--- /dev/null
+++ b/konsole-qml-plugin/src/DefaultTranslatorText.h
@@ -0,0 +1,2 @@
+"keyboard \"Fallback Key Translator\"\n"
+"key Tab : \"\\t\" \0"
diff --git a/konsole-qml-plugin/src/Emulation.cpp b/konsole-qml-plugin/src/Emulation.cpp
new file mode 100644
index 0000000..00af010
--- /dev/null
+++ b/konsole-qml-plugin/src/Emulation.cpp
@@ -0,0 +1,458 @@
+/*
+ Copyright 2007-2008 Robert Knight
+ Copyright 1997,1998 by Lars Doelle
+ Copyright 1996 by Matthias Ettrich
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+*/
+
+// Own
+#include "Emulation.h"
+
+// System
+#include
+#include
+#include
+#include
+
+// Qt
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include
+
+// KDE
+//#include
+
+// Konsole
+#include "KeyboardTranslator.h"
+#include "Screen.h"
+#include "TerminalCharacterDecoder.h"
+#include "ScreenWindow.h"
+
+Emulation::Emulation() :
+ _currentScreen(0),
+ _codec(0),
+ _decoder(0),
+ _keyTranslator(0),
+ _usesMouse(false)
+{
+ // create screens with a default size
+ _screen[0] = new Screen(40,80);
+ _screen[1] = new Screen(40,80);
+ _currentScreen = _screen[0];
+
+ QObject::connect(&_bulkTimer1, SIGNAL(timeout()), this, SLOT(showBulk()) );
+ QObject::connect(&_bulkTimer2, SIGNAL(timeout()), this, SLOT(showBulk()) );
+
+ // listen for mouse status changes
+ connect( this , SIGNAL(programUsesMouseChanged(bool)) ,
+ SLOT(usesMouseChanged(bool)) );
+}
+
+bool Emulation::programUsesMouse() const
+{
+ return _usesMouse;
+}
+
+void Emulation::usesMouseChanged(bool usesMouse)
+{
+ _usesMouse = usesMouse;
+}
+
+ScreenWindow* Emulation::createWindow()
+{
+ ScreenWindow* window = new ScreenWindow();
+ window->setScreen(_currentScreen);
+ _windows << window;
+
+ connect(window , SIGNAL(selectionChanged()),
+ this , SLOT(bufferedUpdate()));
+
+ connect(this , SIGNAL(outputChanged()),
+ window , SLOT(notifyOutputChanged()) );
+ return window;
+}
+
+Emulation::~Emulation()
+{
+ QListIterator windowIter(_windows);
+
+ while (windowIter.hasNext())
+ {
+ delete windowIter.next();
+ }
+
+ delete _screen[0];
+ delete _screen[1];
+ delete _decoder;
+}
+
+void Emulation::setScreen(int n)
+{
+ Screen *old = _currentScreen;
+ _currentScreen = _screen[n & 1];
+ if (_currentScreen != old)
+ {
+ // tell all windows onto this emulation to switch to the newly active screen
+ foreach(ScreenWindow* window,_windows)
+ window->setScreen(_currentScreen);
+ }
+}
+
+void Emulation::clearHistory()
+{
+ _screen[0]->setScroll( _screen[0]->getScroll() , false );
+}
+void Emulation::setHistory(const HistoryType& t)
+{
+ _screen[0]->setScroll(t);
+
+ showBulk();
+}
+
+const HistoryType& Emulation::history() const
+{
+ return _screen[0]->getScroll();
+}
+
+void Emulation::setCodec(const QTextCodec * qtc)
+{
+ if (qtc)
+ _codec = qtc;
+ else
+ setCodec(LocaleCodec);
+
+ delete _decoder;
+ _decoder = _codec->makeDecoder();
+
+ emit useUtf8Request(utf8());
+}
+
+void Emulation::setCodec(EmulationCodec codec)
+{
+ if ( codec == Utf8Codec )
+ setCodec( QTextCodec::codecForName("utf8") );
+ else if ( codec == LocaleCodec )
+ setCodec( QTextCodec::codecForLocale() );
+}
+
+void Emulation::setKeyBindings(const QString& name)
+{
+ _keyTranslator = KeyboardTranslatorManager::instance()->findTranslator(name);
+ if (!_keyTranslator)
+ {
+ _keyTranslator = KeyboardTranslatorManager::instance()->defaultTranslator();
+ }
+}
+
+QString Emulation::keyBindings() const
+{
+ return _keyTranslator->name();
+}
+
+void Emulation::receiveChar(int c)
+// process application unicode input to terminal
+// this is a trivial scanner
+{
+ c &= 0xff;
+ switch (c)
+ {
+ case '\b' : _currentScreen->backspace(); break;
+ case '\t' : _currentScreen->tab(); break;
+ case '\n' : _currentScreen->newLine(); break;
+ case '\r' : _currentScreen->toStartOfLine(); break;
+ case 0x07 : emit stateSet(NOTIFYBELL);
+ break;
+ default : _currentScreen->displayCharacter(c); break;
+ };
+}
+
+void Emulation::sendKeyEvent( QKeyEvent* ev )
+{
+ emit stateSet(NOTIFYNORMAL);
+
+ if (!ev->text().isEmpty())
+ { // A block of text
+ // Note that the text is proper unicode.
+ // We should do a conversion here
+ emit sendData(ev->text().toUtf8(),ev->text().length());
+ }
+}
+
+void Emulation::sendString(const char*,int)
+{
+ // default implementation does nothing
+}
+
+void Emulation::sendMouseEvent(int /*buttons*/, int /*column*/, int /*row*/, int /*eventType*/)
+{
+ // default implementation does nothing
+}
+
+/*
+ We are doing code conversion from locale to unicode first.
+TODO: Character composition from the old code. See #96536
+*/
+
+void Emulation::receiveData(const char* text, int length)
+{
+ emit stateSet(NOTIFYACTIVITY);
+
+ bufferedUpdate();
+
+ QString unicodeText = _decoder->toUnicode(text,length);
+
+ //send characters to terminal emulator
+ for (int i=0;i 3) && (strncmp(text+i+1, "B00", 3) == 0))
+ emit zmodemDetected();
+ }
+ }
+}
+
+//OLDER VERSION
+//This version of onRcvBlock was commented out because
+// a) It decoded incoming characters one-by-one, which is slow in the current version of Qt (4.2 tech preview)
+// b) It messed up decoding of non-ASCII characters, with the result that (for example) chinese characters
+// were not printed properly.
+//
+//There is something about stopping the _decoder if "we get a control code halfway a multi-byte sequence" (see below)
+//which hasn't been ported into the newer function (above). Hopefully someone who understands this better
+//can find an alternative way of handling the check.
+
+
+/*void Emulation::onRcvBlock(const char *s, int len)
+{
+ emit notifySessionState(NOTIFYACTIVITY);
+
+ bufferedUpdate();
+ for (int i = 0; i < len; i++)
+ {
+
+ QString result = _decoder->toUnicode(&s[i],1);
+ int reslen = result.length();
+
+ // If we get a control code halfway a multi-byte sequence
+ // we flush the _decoder and continue with the control code.
+ if ((s[i] < 32) && (s[i] > 0))
+ {
+ // Flush _decoder
+ while(!result.length())
+ result = _decoder->toUnicode(&s[i],1);
+ reslen = 1;
+ result.resize(reslen);
+ result[0] = QChar(s[i]);
+ }
+
+ for (int j = 0; j < reslen; j++)
+ {
+ if (result[j].characterategory() == QChar::Mark_NonSpacing)
+ _currentScreen->compose(result.mid(j,1));
+ else
+ onRcvChar(result[j].unicode());
+ }
+ if (s[i] == '\030')
+ {
+ if ((len-i-1 > 3) && (strncmp(s+i+1, "B00", 3) == 0))
+ emit zmodemDetected();
+ }
+ }
+}*/
+
+void Emulation::writeToStream( TerminalCharacterDecoder* _decoder ,
+ int startLine ,
+ int endLine)
+{
+ _currentScreen->writeLinesToStream(_decoder,startLine,endLine);
+}
+
+int Emulation::lineCount() const
+{
+ // sum number of lines currently on _screen plus number of lines in history
+ return _currentScreen->getLines() + _currentScreen->getHistLines();
+}
+
+#define BULK_TIMEOUT1 10
+#define BULK_TIMEOUT2 40
+
+void Emulation::showBulk()
+{
+ _bulkTimer1.stop();
+ _bulkTimer2.stop();
+
+ emit outputChanged();
+
+ _currentScreen->resetScrolledLines();
+ _currentScreen->resetDroppedLines();
+}
+
+void Emulation::bufferedUpdate()
+{
+ _bulkTimer1.setSingleShot(true);
+ _bulkTimer1.start(BULK_TIMEOUT1);
+ if (!_bulkTimer2.isActive())
+ {
+ _bulkTimer2.setSingleShot(true);
+ _bulkTimer2.start(BULK_TIMEOUT2);
+ }
+}
+
+char Emulation::eraseChar() const
+{
+ return '\b';
+}
+
+void Emulation::setImageSize(int lines, int columns)
+{
+ if ((lines < 1) || (columns < 1))
+ return;
+
+ QSize screenSize[2] = { QSize(_screen[0]->getColumns(),
+ _screen[0]->getLines()),
+ QSize(_screen[1]->getColumns(),
+ _screen[1]->getLines()) };
+ QSize newSize(columns,lines);
+
+ if (newSize == screenSize[0] && newSize == screenSize[1])
+ return;
+
+ _screen[0]->resizeImage(lines,columns);
+ _screen[1]->resizeImage(lines,columns);
+
+ emit imageSizeChanged(lines,columns);
+
+ bufferedUpdate();
+}
+
+QSize Emulation::imageSize() const
+{
+ return QSize(_currentScreen->getColumns(), _currentScreen->getLines());
+}
+
+ushort ExtendedCharTable::extendedCharHash(ushort* unicodePoints , ushort length) const
+{
+ ushort hash = 0;
+ for ( ushort i = 0 ; i < length ; i++ )
+ {
+ hash = 31*hash + unicodePoints[i];
+ }
+ return hash;
+}
+bool ExtendedCharTable::extendedCharMatch(ushort hash , ushort* unicodePoints , ushort length) const
+{
+ ushort* entry = extendedCharTable[hash];
+
+ // compare given length with stored sequence length ( given as the first ushort in the
+ // stored buffer )
+ if ( entry == 0 || entry[0] != length )
+ return false;
+ // if the lengths match, each character must be checked. the stored buffer starts at
+ // entry[1]
+ for ( int i = 0 ; i < length ; i++ )
+ {
+ if ( entry[i+1] != unicodePoints[i] )
+ return false;
+ }
+ return true;
+}
+ushort ExtendedCharTable::createExtendedChar(ushort* unicodePoints , ushort length)
+{
+ // look for this sequence of points in the table
+ ushort hash = extendedCharHash(unicodePoints,length);
+
+ // check existing entry for match
+ while ( extendedCharTable.contains(hash) )
+ {
+ if ( extendedCharMatch(hash,unicodePoints,length) )
+ {
+ // this sequence already has an entry in the table,
+ // return its hash
+ return hash;
+ }
+ else
+ {
+ // if hash is already used by another, different sequence of unicode character
+ // points then try next hash
+ hash++;
+ }
+ }
+
+
+ // add the new sequence to the table and
+ // return that index
+ ushort* buffer = new ushort[length+1];
+ buffer[0] = length;
+ for ( int i = 0 ; i < length ; i++ )
+ buffer[i+1] = unicodePoints[i];
+
+ extendedCharTable.insert(hash,buffer);
+
+ return hash;
+}
+
+ushort* ExtendedCharTable::lookupExtendedChar(ushort hash , ushort& length) const
+{
+ // lookup index in table and if found, set the length
+ // argument and return a pointer to the character sequence
+
+ ushort* buffer = extendedCharTable[hash];
+ if ( buffer )
+ {
+ length = buffer[0];
+ return buffer+1;
+ }
+ else
+ {
+ length = 0;
+ return 0;
+ }
+}
+
+ExtendedCharTable::ExtendedCharTable()
+{
+}
+ExtendedCharTable::~ExtendedCharTable()
+{
+ // free all allocated character buffers
+ QHashIterator iter(extendedCharTable);
+ while ( iter.hasNext() )
+ {
+ iter.next();
+ delete[] iter.value();
+ }
+}
+
+// global instance
+ExtendedCharTable ExtendedCharTable::instance;
+
+
+//#include "Emulation.moc"
+
diff --git a/konsole-qml-plugin/src/Emulation.h b/konsole-qml-plugin/src/Emulation.h
new file mode 100644
index 0000000..49f707d
--- /dev/null
+++ b/konsole-qml-plugin/src/Emulation.h
@@ -0,0 +1,467 @@
+/*
+ This file is part of Konsole, an X terminal.
+
+ Copyright 2007-2008 by Robert Knight
+ Copyright 1997,1998 by Lars Doelle
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+*/
+
+#ifndef EMULATION_H
+#define EMULATION_H
+
+// System
+#include
+
+// Qt
+#include
+//#include
+#include
+#include
+#include
+
+// Konsole
+//#include "konsole_export.h"
+#define KONSOLEPRIVATE_EXPORT
+
+class KeyboardTranslator;
+class HistoryType;
+class Screen;
+class ScreenWindow;
+class TerminalCharacterDecoder;
+
+/**
+ * This enum describes the available states which
+ * the terminal emulation may be set to.
+ *
+ * These are the values used by Emulation::stateChanged()
+ */
+enum
+{
+ /** The emulation is currently receiving user input. */
+ NOTIFYNORMAL=0,
+ /**
+ * The terminal program has triggered a bell event
+ * to get the user's attention.
+ */
+ NOTIFYBELL=1,
+ /**
+ * The emulation is currently receiving data from its
+ * terminal input.
+ */
+ NOTIFYACTIVITY=2,
+
+ // unused here?
+ NOTIFYSILENCE=3
+};
+
+/**
+ * Base class for terminal emulation back-ends.
+ *
+ * The back-end is responsible for decoding an incoming character stream and
+ * producing an output image of characters.
+ *
+ * When input from the terminal is received, the receiveData() slot should be called with
+ * the data which has arrived. The emulation will process the data and update the
+ * screen image accordingly. The codec used to decode the incoming character stream
+ * into the unicode characters used internally can be specified using setCodec()
+ *
+ * The size of the screen image can be specified by calling setImageSize() with the
+ * desired number of lines and columns. When new lines are added, old content
+ * is moved into a history store, which can be set by calling setHistory().
+ *
+ * The screen image can be accessed by creating a ScreenWindow onto this emulation
+ * by calling createWindow(). Screen windows provide access to a section of the
+ * output. Each screen window covers the same number of lines and columns as the
+ * image size returned by imageSize(). The screen window can be moved up and down
+ * and provides transparent access to both the current on-screen image and the
+ * previous output. The screen windows emit an outputChanged signal
+ * when the section of the image they are looking at changes.
+ * Graphical views can then render the contents of a screen window, listening for notifications
+ * of output changes from the screen window which they are associated with and updating
+ * accordingly.
+ *
+ * The emulation also is also responsible for converting input from the connected views such
+ * as keypresses and mouse activity into a character string which can be sent
+ * to the terminal program. Key presses can be processed by calling the sendKeyEvent() slot,
+ * while mouse events can be processed using the sendMouseEvent() slot. When the character
+ * stream has been produced, the emulation will emit a sendData() signal with a pointer
+ * to the character buffer. This data should be fed to the standard input of the terminal
+ * process. The translation of key presses into an output character stream is performed
+ * using a lookup in a set of key bindings which map key sequences to output
+ * character sequences. The name of the key bindings set used can be specified using
+ * setKeyBindings()
+ *
+ * The emulation maintains certain state information which changes depending on the
+ * input received. The emulation can be reset back to its starting state by calling
+ * reset().
+ *
+ * The emulation also maintains an activity state, which specifies whether
+ * terminal is currently active ( when data is received ), normal
+ * ( when the terminal is idle or receiving user input ) or trying
+ * to alert the user ( also known as a "Bell" event ). The stateSet() signal
+ * is emitted whenever the activity state is set. This can be used to determine
+ * how long the emulation has been active/idle for and also respond to
+ * a 'bell' event in different ways.
+ */
+class KONSOLEPRIVATE_EXPORT Emulation : public QObject
+{
+Q_OBJECT
+
+public:
+
+ /** Constructs a new terminal emulation */
+ Emulation();
+ ~Emulation();
+
+ /**
+ * Creates a new window onto the output from this emulation. The contents
+ * of the window are then rendered by views which are set to use this window using the
+ * TerminalDisplay::setScreenWindow() method.
+ */
+ ScreenWindow* createWindow();
+
+ /** Returns the size of the screen image which the emulation produces */
+ QSize imageSize() const;
+
+ /**
+ * Returns the total number of lines, including those stored in the history.
+ */
+ int lineCount() const;
+
+ /**
+ * Sets the history store used by this emulation. When new lines
+ * are added to the output, older lines at the top of the screen are transferred to a history
+ * store.
+ *
+ * The number of lines which are kept and the storage location depend on the
+ * type of store.
+ */
+ void setHistory(const HistoryType&);
+ /** Returns the history store used by this emulation. See setHistory() */
+ const HistoryType& history() const;
+ /** Clears the history scroll. */
+ void clearHistory();
+
+ /**
+ * Copies the output history from @p startLine to @p endLine
+ * into @p stream, using @p decoder to convert the terminal
+ * characters into text.
+ *
+ * @param decoder A decoder which converts lines of terminal characters with
+ * appearance attributes into output text. PlainTextDecoder is the most commonly
+ * used decoder.
+ * @param startLine Index of first line to copy
+ * @param endLine Index of last line to copy
+ */
+ virtual void writeToStream(TerminalCharacterDecoder* decoder,int startLine,int endLine);
+
+ /** Returns the codec used to decode incoming characters. See setCodec() */
+ const QTextCodec* codec() const { return _codec; }
+ /** Sets the codec used to decode incoming characters. */
+ void setCodec(const QTextCodec*);
+
+ /**
+ * Convenience method.
+ * Returns true if the current codec used to decode incoming
+ * characters is UTF-8
+ */
+ bool utf8() const
+ { Q_ASSERT(_codec); return _codec->mibEnum() == 106; }
+
+
+ /** TODO Document me */
+ virtual char eraseChar() const;
+
+ /**
+ * Sets the key bindings used to key events
+ * ( received through sendKeyEvent() ) into character
+ * streams to send to the terminal.
+ */
+ void setKeyBindings(const QString& name);
+ /**
+ * Returns the name of the emulation's current key bindings.
+ * See setKeyBindings()
+ */
+ QString keyBindings() const;
+
+ /**
+ * Copies the current image into the history and clears the screen.
+ */
+ virtual void clearEntireScreen() =0;
+
+ /** Resets the state of the terminal. */
+ virtual void reset() =0;
+
+ /**
+ * Returns true if the active terminal program wants
+ * mouse input events.
+ *
+ * The programUsesMouseChanged() signal is emitted when this
+ * changes.
+ */
+ bool programUsesMouse() const;
+
+public slots:
+
+ /** Change the size of the emulation's image */
+ virtual void setImageSize(int lines, int columns);
+
+ /**
+ * Interprets a sequence of characters and sends the result to the terminal.
+ * This is equivalent to calling sendKeyEvent() for each character in @p text in succession.
+ */
+ virtual void sendText(const QString& text) = 0;
+
+ /**
+ * Interprets a key press event and emits the sendData() signal with
+ * the resulting character stream.
+ */
+ virtual void sendKeyEvent(QKeyEvent*);
+
+ /**
+ * Converts information about a mouse event into an xterm-compatible escape
+ * sequence and emits the character sequence via sendData()
+ */
+ virtual void sendMouseEvent(int buttons, int column, int line, int eventType);
+
+ /**
+ * Sends a string of characters to the foreground terminal process.
+ *
+ * @param string The characters to send.
+ * @param length Length of @p string or if set to a negative value, @p string will
+ * be treated as a null-terminated string and its length will be determined automatically.
+ */
+ virtual void sendString(const char* string, int length = -1) = 0;
+
+ /**
+ * Processes an incoming stream of characters. receiveData() decodes the incoming
+ * character buffer using the current codec(), and then calls receiveChar() for
+ * each unicode character in the resulting buffer.
+ *
+ * receiveData() also starts a timer which causes the outputChanged() signal
+ * to be emitted when it expires. The timer allows multiple updates in quick
+ * succession to be buffered into a single outputChanged() signal emission.
+ *
+ * @param buffer A string of characters received from the terminal program.
+ * @param len The length of @p buffer
+ */
+ void receiveData(const char* buffer,int len);
+
+signals:
+
+ /**
+ * Emitted when a buffer of data is ready to send to the
+ * standard input of the terminal.
+ *
+ * @param data The buffer of data ready to be sent
+ * @param len The length of @p data in bytes
+ */
+ void sendData(const char* data,int len);
+
+ /**
+ * Requests that sending of input to the emulation
+ * from the terminal process be suspended or resumed.
+ *
+ * @param suspend If true, requests that sending of
+ * input from the terminal process' stdout be
+ * suspended. Otherwise requests that sending of
+ * input be resumed.
+ */
+ void lockPtyRequest(bool suspend);
+
+ /**
+ * Requests that the pty used by the terminal process
+ * be set to UTF 8 mode.
+ *
+ * TODO: More documentation
+ */
+ void useUtf8Request(bool);
+
+ /**
+ * Emitted when the activity state of the emulation is set.
+ *
+ * @param state The new activity state, one of NOTIFYNORMAL, NOTIFYACTIVITY
+ * or NOTIFYBELL
+ */
+ void stateSet(int state);
+
+ /** TODO Document me */
+ void zmodemDetected();
+
+
+ /**
+ * Requests that the color of the text used
+ * to represent the tabs associated with this
+ * emulation be changed. This is a Konsole-specific
+ * extension from pre-KDE 4 times.
+ *
+ * TODO: Document how the parameter works.
+ */
+ void changeTabTextColorRequest(int color);
+
+ /**
+ * This is emitted when the program running in the shell indicates whether or
+ * not it is interested in mouse events.
+ *
+ * @param usesMouse This will be true if the program wants to be informed about
+ * mouse events or false otherwise.
+ */
+ void programUsesMouseChanged(bool usesMouse);
+
+ /**
+ * Emitted when the contents of the screen image change.
+ * The emulation buffers the updates from successive image changes,
+ * and only emits outputChanged() at sensible intervals when
+ * there is a lot of terminal activity.
+ *
+ * Normally there is no need for objects other than the screen windows
+ * created with createWindow() to listen for this signal.
+ *
+ * ScreenWindow objects created using createWindow() will emit their
+ * own outputChanged() signal in response to this signal.
+ */
+ void outputChanged();
+
+ /**
+ * Emitted when the program running in the terminal wishes to update the
+ * session's title. This also allows terminal programs to customize other
+ * aspects of the terminal emulation display.
+ *
+ * This signal is emitted when the escape sequence "\033]ARG;VALUE\007"
+ * is received in the input string, where ARG is a number specifying what
+ * should change and VALUE is a string specifying the new value.
+ *
+ * TODO: The name of this method is not very accurate since this method
+ * is used to perform a whole range of tasks besides just setting
+ * the user-title of the session.
+ *
+ * @param title Specifies what to change.
+ *
+ * - 0 - Set window icon text and session title to @p newTitle
+ * - 1 - Set window icon text to @p newTitle
+ * - 2 - Set session title to @p newTitle
+ * - 11 - Set the session's default background color to @p newTitle,
+ * where @p newTitle can be an HTML-style string ("#RRGGBB") or a named
+ * color (eg 'red', 'blue').
+ * See http://doc.trolltech.com/4.2/qcolor.html#setNamedColor for more
+ * details.
+ *
+ * - 31 - Supposedly treats @p newTitle as a URL and opens it (NOT IMPLEMENTED)
+ * - 32 - Sets the icon associated with the session. @p newTitle is the name
+ * of the icon to use, which can be the name of any icon in the current KDE icon
+ * theme (eg: 'konsole', 'kate', 'folder_home')
+ *
+ * @param newTitle Specifies the new title
+ */
+
+ void titleChanged(int title,const QString& newTitle);
+
+ /**
+ * Emitted when the program running in the terminal changes the
+ * screen size.
+ */
+ void imageSizeChanged(int lineCount , int columnCount);
+
+ /**
+ * Emitted when the terminal program requests to change various properties
+ * of the terminal display.
+ *
+ * A profile change command occurs when a special escape sequence, followed
+ * by a string containing a series of name and value pairs is received.
+ * This string can be parsed using a ProfileCommandParser instance.
+ *
+ * @param text A string expected to contain a series of key and value pairs in
+ * the form: name=value;name2=value2 ...
+ */
+ void profileChangeCommandReceived(const QString& text);
+
+ /**
+ * Emitted when a flow control key combination ( Ctrl+S or Ctrl+Q ) is pressed.
+ * @param suspendKeyPressed True if Ctrl+S was pressed to suspend output or Ctrl+Q to
+ * resume output.
+ */
+ void flowControlKeyPressed(bool suspendKeyPressed);
+
+protected:
+ virtual void setMode(int mode) = 0;
+ virtual void resetMode(int mode) = 0;
+
+ /**
+ * Processes an incoming character. See receiveData()
+ * @p ch A unicode character code.
+ */
+ virtual void receiveChar(int ch);
+
+ /**
+ * Sets the active screen. The terminal has two screens, primary and alternate.
+ * The primary screen is used by default. When certain interactive programs such
+ * as Vim are run, they trigger a switch to the alternate screen.
+ *
+ * @param index 0 to switch to the primary screen, or 1 to switch to the alternate screen
+ */
+ void setScreen(int index);
+
+ enum EmulationCodec
+ {
+ LocaleCodec = 0,
+ Utf8Codec = 1
+ };
+ void setCodec(EmulationCodec codec); // codec number, 0 = locale, 1=utf8
+
+
+ QList _windows;
+
+ Screen* _currentScreen; // pointer to the screen which is currently active,
+ // this is one of the elements in the screen[] array
+
+ Screen* _screen[2]; // 0 = primary screen ( used by most programs, including the shell
+ // scrollbars are enabled in this mode )
+ // 1 = alternate ( used by vi , emacs etc.
+ // scrollbars are not enabled in this mode )
+
+
+ //decodes an incoming C-style character stream into a unicode QString using
+ //the current text codec. (this allows for rendering of non-ASCII characters in text files etc.)
+ const QTextCodec* _codec;
+ QTextDecoder* _decoder;
+ const KeyboardTranslator* _keyTranslator; // the keyboard layout
+
+protected slots:
+ /**
+ * Schedules an update of attached views.
+ * Repeated calls to bufferedUpdate() in close succession will result in only a single update,
+ * much like the Qt buffered update of widgets.
+ */
+ void bufferedUpdate();
+
+private slots:
+
+ // triggered by timer, causes the emulation to send an updated screen image to each
+ // view
+ void showBulk();
+
+ void usesMouseChanged(bool usesMouse);
+
+private:
+ bool _usesMouse;
+ QTimer _bulkTimer1;
+ QTimer _bulkTimer2;
+
+};
+
+
+#endif // ifndef EMULATION_H
diff --git a/konsole-qml-plugin/src/ExtendedDefaultTranslator.h b/konsole-qml-plugin/src/ExtendedDefaultTranslator.h
new file mode 100644
index 0000000..6403c72
--- /dev/null
+++ b/konsole-qml-plugin/src/ExtendedDefaultTranslator.h
@@ -0,0 +1,74 @@
+"keyboard \"Default (XFree 4)\""
+"key Escape : \"\\E\""
+"key Tab -Shift : \"\\t\"\n"
+"key Tab +Shift+Ansi : \"\\E[Z\"\n"
+"key Tab +Shift-Ansi : \"\\t\"\n"
+"key Backtab +Ansi : \"\\E[Z\"\n"
+"key Backtab -Ansi : \"\\t\"\n"
+"key Return-Shift-NewLine : \"\\r\"\n"
+"key Return-Shift+NewLine : \"\\r\\n\"\n"
+"key Return+Shift : \"\\EOM\"\n"
+"key Backspace : \"\\x7f\"\n"
+"key Up -Shift-Ansi : \"\\EA\"\n"
+"key Down -Shift-Ansi : \"\\EB\"\n"
+"key Right-Shift-Ansi : \"\\EC\"\n"
+"key Left -Shift-Ansi : \"\\ED\"\n"
+"key Up -Shift-AnyMod+Ansi+AppCuKeys : \"\\EOA\"\n"
+"key Down -Shift-AnyMod+Ansi+AppCuKeys : \"\\EOB\"\n"
+"key Right -Shift-AnyMod+Ansi+AppCuKeys : \"\\EOC\"\n"
+"key Left -Shift-AnyMod+Ansi+AppCuKeys : \"\\EOD\"\n"
+"key Up -Shift-AnyMod+Ansi-AppCuKeys : \"\\E[A\"\n"
+"key Down -Shift-AnyMod+Ansi-AppCuKeys : \"\\E[B\"\n"
+"key Right -Shift-AnyMod+Ansi-AppCuKeys : \"\\E[C\"\n"
+"key Left -Shift-AnyMod+Ansi-AppCuKeys : \"\\E[D\"\n"
+"key Up -Shift+AnyMod+Ansi : \"\\E[1;*A\"\n"
+"key Down -Shift+AnyMod+Ansi : \"\\E[1;*B\"\n"
+"key Right -Shift+AnyMod+Ansi : \"\\E[1;*C\"\n"
+"key Left -Shift+AnyMod+Ansi : \"\\E[1;*D\"\n"
+"key Enter+NewLine : \"\\r\\n\"\n"
+"key Enter-NewLine : \"\\r\"\n"
+"key Home -AnyMod -AppCuKeys : \"\\E[H\" \n"
+"key End -AnyMod -AppCuKeys : \"\\E[F\" \n"
+"key Home -AnyMod +AppCuKeys : \"\\EOH\" \n"
+"key End -AnyMod +AppCuKeys : \"\\EOF\" \n"
+"key Home +AnyMod : \"\\E[1;*H\"\n"
+"key End +AnyMod : \"\\E[1;*F\"\n"
+"key Insert -AnyMod : \"\\E[2~\"\n"
+"key Delete -AnyMod : \"\\E[3~\"\n"
+"key Insert +AnyMod : \"\\E[2;*~\"\n"
+"key Delete +AnyMod : \"\\E[3;*~\"\n"
+"key Prior -Shift-AnyMod : \"\\E[5~\"\n"
+"key Next -Shift-AnyMod : \"\\E[6~\"\n"
+"key Prior -Shift+AnyMod : \"\\E[5;*~\"\n"
+"key Next -Shift+AnyMod : \"\\E[6;*~\"\n"
+"key F1 -AnyMod : \"\\EOP\"\n"
+"key F2 -AnyMod : \"\\EOQ\"\n"
+"key F3 -AnyMod : \"\\EOR\"\n"
+"key F4 -AnyMod : \"\\EOS\"\n"
+"key F5 -AnyMod : \"\\E[15~\"\n"
+"key F6 -AnyMod : \"\\E[17~\"\n"
+"key F7 -AnyMod : \"\\E[18~\"\n"
+"key F8 -AnyMod : \"\\E[19~\"\n"
+"key F9 -AnyMod : \"\\E[20~\"\n"
+"key F10 -AnyMod : \"\\E[21~\"\n"
+"key F11 -AnyMod : \"\\E[23~\"\n"
+"key F12 -AnyMod : \"\\E[24~\"\n"
+"key F1 +AnyMod : \"\\EO*P\"\n"
+"key F2 +AnyMod : \"\\EO*Q\"\n"
+"key F3 +AnyMod : \"\\EO*R\"\n"
+"key F4 +AnyMod : \"\\EO*S\"\n"
+"key F5 +AnyMod : \"\\E[15;*~\"\n"
+"key F6 +AnyMod : \"\\E[17;*~\"\n"
+"key F7 +AnyMod : \"\\E[18;*~\"\n"
+"key F8 +AnyMod : \"\\E[19;*~\"\n"
+"key F9 +AnyMod : \"\\E[20;*~\"\n"
+"key F10 +AnyMod : \"\\E[21;*~\"\n"
+"key F11 +AnyMod : \"\\E[23;*~\"\n"
+"key F12 +AnyMod : \"\\E[24;*~\"\n"
+"key Space +Control : \"\\x00\"\n"
+"key Up +Shift-AppScreen : scrollLineUp\n"
+"key Prior +Shift-AppScreen : scrollPageUp\n"
+"key Down +Shift-AppScreen : scrollLineDown\n"
+"key Next +Shift-AppScreen : scrollPageDown\n"
+"key ScrollLock : scrollLock\n"
+"\0"
diff --git a/konsole-qml-plugin/src/Filter.cpp b/konsole-qml-plugin/src/Filter.cpp
new file mode 100644
index 0000000..954b91f
--- /dev/null
+++ b/konsole-qml-plugin/src/Filter.cpp
@@ -0,0 +1,542 @@
+/*
+ Copyright 2007-2008 by Robert Knight
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+*/
+
+// Own
+#include "Filter.h"
+
+// System
+#include
+
+// Qt
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+// KDE
+//#include
+//#include
+
+// Konsole
+#include "TerminalCharacterDecoder.h"
+#include "konsole_wcwidth.h"
+
+
+FilterChain::~FilterChain()
+{
+ QMutableListIterator iter(*this);
+
+ while ( iter.hasNext() )
+ {
+ Filter* filter = iter.next();
+ iter.remove();
+ delete filter;
+ }
+}
+
+void FilterChain::addFilter(Filter* filter)
+{
+ append(filter);
+}
+void FilterChain::removeFilter(Filter* filter)
+{
+ removeAll(filter);
+}
+bool FilterChain::containsFilter(Filter* filter)
+{
+ return contains(filter);
+}
+void FilterChain::reset()
+{
+ QListIterator iter(*this);
+ while (iter.hasNext())
+ iter.next()->reset();
+}
+void FilterChain::setBuffer(const QString* buffer , const QList* linePositions)
+{
+ QListIterator iter(*this);
+ while (iter.hasNext())
+ iter.next()->setBuffer(buffer,linePositions);
+}
+void FilterChain::process()
+{
+ QListIterator iter(*this);
+ while (iter.hasNext())
+ iter.next()->process();
+}
+void FilterChain::clear()
+{
+ QList::clear();
+}
+Filter::HotSpot* FilterChain::hotSpotAt(int line , int column) const
+{
+ QListIterator iter(*this);
+ while (iter.hasNext())
+ {
+ Filter* filter = iter.next();
+ Filter::HotSpot* spot = filter->hotSpotAt(line,column);
+ if ( spot != 0 )
+ {
+ return spot;
+ }
+ }
+
+ return 0;
+}
+
+QList FilterChain::hotSpots() const
+{
+ QList list;
+ QListIterator iter(*this);
+ while (iter.hasNext())
+ {
+ Filter* filter = iter.next();
+ list << filter->hotSpots();
+ }
+ return list;
+}
+//QList FilterChain::hotSpotsAtLine(int line) const;
+
+TerminalImageFilterChain::TerminalImageFilterChain()
+: _buffer(0)
+, _linePositions(0)
+{
+}
+
+TerminalImageFilterChain::~TerminalImageFilterChain()
+{
+ delete _buffer;
+ delete _linePositions;
+}
+
+void TerminalImageFilterChain::setImage(const Character* const image , int lines , int columns, const QVector& lineProperties)
+{
+ if (empty())
+ return;
+
+ // reset all filters and hotspots
+ reset();
+
+ PlainTextDecoder decoder;
+ decoder.setTrailingWhitespace(false);
+
+ // setup new shared buffers for the filters to process on
+ QString* newBuffer = new QString();
+ QList* newLinePositions = new QList();
+ setBuffer( newBuffer , newLinePositions );
+
+ // free the old buffers
+ delete _buffer;
+ delete _linePositions;
+
+ _buffer = newBuffer;
+ _linePositions = newLinePositions;
+
+ QTextStream lineStream(_buffer);
+ decoder.begin(&lineStream);
+
+ for (int i=0 ; i < lines ; i++)
+ {
+ _linePositions->append(_buffer->length());
+ decoder.decodeLine(image + i*columns,columns,LINE_DEFAULT);
+
+ // pretend that each line ends with a newline character.
+ // this prevents a link that occurs at the end of one line
+ // being treated as part of a link that occurs at the start of the next line
+ //
+ // the downside is that links which are spread over more than one line are not
+ // highlighted.
+ //
+ // TODO - Use the "line wrapped" attribute associated with lines in a
+ // terminal image to avoid adding this imaginary character for wrapped
+ // lines
+ if ( !(lineProperties.value(i,LINE_DEFAULT) & LINE_WRAPPED) )
+ lineStream << QChar('\n');
+ }
+ decoder.end();
+}
+
+Filter::Filter() :
+_linePositions(0),
+_buffer(0)
+{
+}
+
+Filter::~Filter()
+{
+ QListIterator iter(_hotspotList);
+ while (iter.hasNext())
+ {
+ delete iter.next();
+ }
+}
+void Filter::reset()
+{
+ _hotspots.clear();
+ _hotspotList.clear();
+}
+
+void Filter::setBuffer(const QString* buffer , const QList* linePositions)
+{
+ _buffer = buffer;
+ _linePositions = linePositions;
+}
+
+void Filter::getLineColumn(int position , int& startLine , int& startColumn)
+{
+ Q_ASSERT( _linePositions );
+ Q_ASSERT( _buffer );
+
+
+ for (int i = 0 ; i < _linePositions->count() ; i++)
+ {
+ int nextLine = 0;
+
+ if ( i == _linePositions->count()-1 )
+ nextLine = _buffer->length() + 1;
+ else
+ nextLine = _linePositions->value(i+1);
+
+ if ( _linePositions->value(i) <= position && position < nextLine )
+ {
+ startLine = i;
+ startColumn = string_width(buffer()->mid(_linePositions->value(i),position - _linePositions->value(i)));
+ return;
+ }
+ }
+}
+
+
+/*void Filter::addLine(const QString& text)
+{
+ _linePositions << _buffer.length();
+ _buffer.append(text);
+}*/
+
+const QString* Filter::buffer()
+{
+ return _buffer;
+}
+Filter::HotSpot::~HotSpot()
+{
+}
+void Filter::addHotSpot(HotSpot* spot)
+{
+ _hotspotList << spot;
+
+ for (int line = spot->startLine() ; line <= spot->endLine() ; line++)
+ {
+ _hotspots.insert(line,spot);
+ }
+}
+QList Filter::hotSpots() const
+{
+ return _hotspotList;
+}
+QList Filter::hotSpotsAtLine(int line) const
+{
+ return _hotspots.values(line);
+}
+
+Filter::HotSpot* Filter::hotSpotAt(int line , int column) const
+{
+ QListIterator spotIter(_hotspots.values(line));
+
+ while (spotIter.hasNext())
+ {
+ HotSpot* spot = spotIter.next();
+
+ if ( spot->startLine() == line && spot->startColumn() > column )
+ continue;
+ if ( spot->endLine() == line && spot->endColumn() < column )
+ continue;
+
+ return spot;
+ }
+
+ return 0;
+}
+
+Filter::HotSpot::HotSpot(int startLine , int startColumn , int endLine , int endColumn)
+ : _startLine(startLine)
+ , _startColumn(startColumn)
+ , _endLine(endLine)
+ , _endColumn(endColumn)
+ , _type(NotSpecified)
+{
+}
+QString Filter::HotSpot::tooltip() const
+{
+ return QString();
+}
+QList Filter::HotSpot::actions()
+{
+ return QList();
+}
+int Filter::HotSpot::startLine() const
+{
+ return _startLine;
+}
+int Filter::HotSpot::endLine() const
+{
+ return _endLine;
+}
+int Filter::HotSpot::startColumn() const
+{
+ return _startColumn;
+}
+int Filter::HotSpot::endColumn() const
+{
+ return _endColumn;
+}
+Filter::HotSpot::Type Filter::HotSpot::type() const
+{
+ return _type;
+}
+void Filter::HotSpot::setType(Type type)
+{
+ _type = type;
+}
+
+RegExpFilter::RegExpFilter()
+{
+}
+
+RegExpFilter::HotSpot::HotSpot(int startLine,int startColumn,int endLine,int endColumn)
+ : Filter::HotSpot(startLine,startColumn,endLine,endColumn)
+{
+ setType(Marker);
+}
+
+void RegExpFilter::HotSpot::activate(QObject*)
+{
+}
+
+void RegExpFilter::HotSpot::setCapturedTexts(const QStringList& texts)
+{
+ _capturedTexts = texts;
+}
+QStringList RegExpFilter::HotSpot::capturedTexts() const
+{
+ return _capturedTexts;
+}
+
+void RegExpFilter::setRegExp(const QRegExp& regExp)
+{
+ _searchText = regExp;
+}
+QRegExp RegExpFilter::regExp() const
+{
+ return _searchText;
+}
+/*void RegExpFilter::reset(int)
+{
+ _buffer = QString();
+}*/
+void RegExpFilter::process()
+{
+ int pos = 0;
+ const QString* text = buffer();
+
+ Q_ASSERT( text );
+
+ // ignore any regular expressions which match an empty string.
+ // otherwise the while loop below will run indefinitely
+ static const QString emptyString("");
+ if ( _searchText.exactMatch(emptyString) )
+ return;
+
+ while(pos >= 0)
+ {
+ pos = _searchText.indexIn(*text,pos);
+
+ if ( pos >= 0 )
+ {
+ int startLine = 0;
+ int endLine = 0;
+ int startColumn = 0;
+ int endColumn = 0;
+
+ getLineColumn(pos,startLine,startColumn);
+ getLineColumn(pos + _searchText.matchedLength(),endLine,endColumn);
+
+ RegExpFilter::HotSpot* spot = newHotSpot(startLine,startColumn,
+ endLine,endColumn);
+ spot->setCapturedTexts(_searchText.capturedTexts());
+
+ addHotSpot( spot );
+ pos += _searchText.matchedLength();
+
+ // if matchedLength == 0, the program will get stuck in an infinite loop
+ if ( _searchText.matchedLength() == 0 )
+ pos = -1;
+ }
+ }
+}
+
+RegExpFilter::HotSpot* RegExpFilter::newHotSpot(int startLine,int startColumn,
+ int endLine,int endColumn)
+{
+ return new RegExpFilter::HotSpot(startLine,startColumn,
+ endLine,endColumn);
+}
+RegExpFilter::HotSpot* UrlFilter::newHotSpot(int startLine,int startColumn,int endLine,
+ int endColumn)
+{
+ return new UrlFilter::HotSpot(startLine,startColumn,
+ endLine,endColumn);
+}
+UrlFilter::HotSpot::HotSpot(int startLine,int startColumn,int endLine,int endColumn)
+: RegExpFilter::HotSpot(startLine,startColumn,endLine,endColumn)
+, _urlObject(new FilterObject(this))
+{
+ setType(Link);
+}
+QString UrlFilter::HotSpot::tooltip() const
+{
+ QString url = capturedTexts().first();
+
+ const UrlType kind = urlType();
+
+ if ( kind == StandardUrl )
+ return QString();
+ else if ( kind == Email )
+ return QString();
+ else
+ return QString();
+}
+UrlFilter::HotSpot::UrlType UrlFilter::HotSpot::urlType() const
+{
+ QString url = capturedTexts().first();
+
+ if ( FullUrlRegExp.exactMatch(url) )
+ return StandardUrl;
+ else if ( EmailAddressRegExp.exactMatch(url) )
+ return Email;
+ else
+ return Unknown;
+}
+
+void UrlFilter::HotSpot::activate(QObject* object)
+{
+ QString url = capturedTexts().first();
+
+ const UrlType kind = urlType();
+
+ const QString& actionName = object ? object->objectName() : QString();
+
+ if ( actionName == "copy-action" )
+ {
+ QApplication::clipboard()->setText(url);
+ return;
+ }
+
+ if ( !object || actionName == "open-action" )
+ {
+ if ( kind == StandardUrl )
+ {
+ // if the URL path does not include the protocol ( eg. "www.kde.org" ) then
+ // prepend http:// ( eg. "www.kde.org" --> "http://www.kde.org" )
+ if (!url.contains("://"))
+ {
+ url.prepend("http://");
+ }
+ }
+ else if ( kind == Email )
+ {
+ url.prepend("mailto:");
+ }
+
+ QDesktopServices::openUrl(QUrl(url));
+ //new KRun(url,QApplication::activeWindow());
+ }
+}
+
+// Note: Altering these regular expressions can have a major effect on the performance of the filters
+// used for finding URLs in the text, especially if they are very general and could match very long
+// pieces of text.
+// Please be careful when altering them.
+
+//regexp matches:
+// full url:
+// protocolname:// or www. followed by anything other than whitespaces, <, >, ' or ", and ends before whitespaces, <, >, ', ", ], !, comma and dot
+const QRegExp UrlFilter::FullUrlRegExp("(www\\.(?!\\.)|[a-z][a-z0-9+.-]*://)[^\\s<>'\"]+[^!,\\.\\s<>'\"\\]]");
+// email address:
+// [word chars, dots or dashes]@[word chars, dots or dashes].[word chars]
+const QRegExp UrlFilter::EmailAddressRegExp("\\b(\\w|\\.|-)+@(\\w|\\.|-)+\\.\\w+\\b");
+
+// matches full url or email address
+const QRegExp UrlFilter::CompleteUrlRegExp('('+FullUrlRegExp.pattern()+'|'+
+ EmailAddressRegExp.pattern()+')');
+
+UrlFilter::UrlFilter()
+{
+ setRegExp( CompleteUrlRegExp );
+}
+UrlFilter::HotSpot::~HotSpot()
+{
+ delete _urlObject;
+}
+void FilterObject::activated()
+{
+ _filter->activate(sender());
+}
+QList UrlFilter::HotSpot::actions()
+{
+ QList list;
+
+ const UrlType kind = urlType();
+
+ QAction* openAction = new QAction(_urlObject);
+ QAction* copyAction = new QAction(_urlObject);;
+
+ Q_ASSERT( kind == StandardUrl || kind == Email );
+
+ if ( kind == StandardUrl )
+ {
+ openAction->setText(QObject::tr("Open Link"));
+ copyAction->setText(QObject::tr("Copy Link Address"));
+ }
+ else if ( kind == Email )
+ {
+ openAction->setText(QObject::tr("Send Email To..."));
+ copyAction->setText(QObject::tr("Copy Email Address"));
+ }
+
+ // object names are set here so that the hotspot performs the
+ // correct action when activated() is called with the triggered
+ // action passed as a parameter.
+ openAction->setObjectName( QLatin1String("open-action" ));
+ copyAction->setObjectName( QLatin1String("copy-action" ));
+
+ QObject::connect( openAction , SIGNAL(triggered()) , _urlObject , SLOT(activated()) );
+ QObject::connect( copyAction , SIGNAL(triggered()) , _urlObject , SLOT(activated()) );
+
+ list << openAction;
+ list << copyAction;
+
+ return list;
+}
+
+//#include "Filter.moc"
diff --git a/konsole-qml-plugin/src/Filter.h b/konsole-qml-plugin/src/Filter.h
new file mode 100644
index 0000000..6b269d4
--- /dev/null
+++ b/konsole-qml-plugin/src/Filter.h
@@ -0,0 +1,380 @@
+/*
+ Copyright 2007-2008 by Robert Knight
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+*/
+
+#ifndef FILTER_H
+#define FILTER_H
+
+// Qt
+#include
+#include
+#include
+#include
+#include
+#include
+
+// Local
+#include "Character.h"
+
+
+/**
+ * A filter processes blocks of text looking for certain patterns (such as URLs or keywords from a list)
+ * and marks the areas which match the filter's patterns as 'hotspots'.
+ *
+ * Each hotspot has a type identifier associated with it ( such as a link or a highlighted section ),
+ * and an action. When the user performs some activity such as a mouse-click in a hotspot area ( the exact
+ * action will depend on what is displaying the block of text which the filter is processing ), the hotspot's
+ * activate() method should be called. Depending on the type of hotspot this will trigger a suitable response.
+ *
+ * For example, if a hotspot represents a URL then a suitable action would be opening that URL in a web browser.
+ * Hotspots may have more than one action, in which case the list of actions can be obtained using the
+ * actions() method.
+ *
+ * Different subclasses of filter will return different types of hotspot.
+ * Subclasses must reimplement the process() method to examine a block of text and identify sections of interest.
+ * When processing the text they should create instances of Filter::HotSpot subclasses for sections of interest
+ * and add them to the filter's list of hotspots using addHotSpot()
+ */
+class Filter
+{
+public:
+ /**
+ * Represents an area of text which matched the pattern a particular filter has been looking for.
+ *
+ * Each hotspot has a type identifier associated with it ( such as a link or a highlighted section ),
+ * and an action. When the user performs some activity such as a mouse-click in a hotspot area ( the exact
+ * action will depend on what is displaying the block of text which the filter is processing ), the hotspot's
+ * activate() method should be called. Depending on the type of hotspot this will trigger a suitable response.
+ *
+ * For example, if a hotspot represents a URL then a suitable action would be opening that URL in a web browser.
+ * Hotspots may have more than one action, in which case the list of actions can be obtained using the
+ * actions() method. These actions may then be displayed in a popup menu or toolbar for example.
+ */
+ class HotSpot
+ {
+ public:
+ /**
+ * Constructs a new hotspot which covers the area from (@p startLine,@p startColumn) to (@p endLine,@p endColumn)
+ * in a block of text.
+ */
+ HotSpot(int startLine , int startColumn , int endLine , int endColumn);
+ virtual ~HotSpot();
+
+ enum Type
+ {
+ // the type of the hotspot is not specified
+ NotSpecified,
+ // this hotspot represents a clickable link
+ Link,
+ // this hotspot represents a marker
+ Marker
+ };
+
+ /** Returns the line when the hotspot area starts */
+ int startLine() const;
+ /** Returns the line where the hotspot area ends */
+ int endLine() const;
+ /** Returns the column on startLine() where the hotspot area starts */
+ int startColumn() const;
+ /** Returns the column on endLine() where the hotspot area ends */
+ int endColumn() const;
+ /**
+ * Returns the type of the hotspot. This is usually used as a hint for views on how to represent
+ * the hotspot graphically. eg. Link hotspots are typically underlined when the user mouses over them
+ */
+ Type type() const;
+ /**
+ * Causes the an action associated with a hotspot to be triggered.
+ *
+ * @param object The object which caused the hotspot to be triggered. This is
+ * typically null ( in which case the default action should be performed ) or
+ * one of the objects from the actions() list. In which case the associated
+ * action should be performed.
+ */
+ virtual void activate(QObject* object = 0) = 0;
+ /**
+ * Returns a list of actions associated with the hotspot which can be used in a
+ * menu or toolbar
+ */
+ virtual QList actions();
+
+ /**
+ * Returns the text of a tooltip to be shown when the mouse moves over the hotspot, or
+ * an empty string if there is no tooltip associated with this hotspot.
+ *
+ * The default implementation returns an empty string.
+ */
+ virtual QString tooltip() const;
+
+ protected:
+ /** Sets the type of a hotspot. This should only be set once */
+ void setType(Type type);
+
+ private:
+ int _startLine;
+ int _startColumn;
+ int _endLine;
+ int _endColumn;
+ Type _type;
+
+ };
+
+ /** Constructs a new filter. */
+ Filter();
+ virtual ~Filter();
+
+ /** Causes the filter to process the block of text currently in its internal buffer */
+ virtual void process() = 0;
+
+ /**
+ * Empties the filters internal buffer and resets the line count back to 0.
+ * All hotspots are deleted.
+ */
+ void reset();
+
+ /** Adds a new line of text to the filter and increments the line count */
+ //void addLine(const QString& string);
+
+ /** Returns the hotspot which covers the given @p line and @p column, or 0 if no hotspot covers that area */
+ HotSpot* hotSpotAt(int line , int column) const;
+
+ /** Returns the list of hotspots identified by the filter */
+ QList hotSpots() const;
+
+ /** Returns the list of hotspots identified by the filter which occur on a given line */
+ QList hotSpotsAtLine(int line) const;
+
+ /**
+ * TODO: Document me
+ */
+ void setBuffer(const QString* buffer , const QList* linePositions);
+
+protected:
+ /** Adds a new hotspot to the list */
+ void addHotSpot(HotSpot*);
+ /** Returns the internal buffer */
+ const QString* buffer();
+ /** Converts a character position within buffer() to a line and column */
+ void getLineColumn(int position , int& startLine , int& startColumn);
+
+private:
+ QMultiHash _hotspots;
+ QList _hotspotList;
+
+ const QList* _linePositions;
+ const QString* _buffer;
+};
+
+/**
+ * A filter which searches for sections of text matching a regular expression and creates a new RegExpFilter::HotSpot
+ * instance for them.
+ *
+ * Subclasses can reimplement newHotSpot() to return custom hotspot types when matches for the regular expression
+ * are found.
+ */
+class RegExpFilter : public Filter
+{
+public:
+ /**
+ * Type of hotspot created by RegExpFilter. The capturedTexts() method can be used to find the text
+ * matched by the filter's regular expression.
+ */
+ class HotSpot : public Filter::HotSpot
+ {
+ public:
+ HotSpot(int startLine, int startColumn, int endLine , int endColumn);
+ virtual void activate(QObject* object = 0);
+
+ /** Sets the captured texts associated with this hotspot */
+ void setCapturedTexts(const QStringList& texts);
+ /** Returns the texts found by the filter when matching the filter's regular expression */
+ QStringList capturedTexts() const;
+ private:
+ QStringList _capturedTexts;
+ };
+
+ /** Constructs a new regular expression filter */
+ RegExpFilter();
+
+ /**
+ * Sets the regular expression which the filter searches for in blocks of text.
+ *
+ * Regular expressions which match the empty string are treated as not matching
+ * anything.
+ */
+ void setRegExp(const QRegExp& text);
+ /** Returns the regular expression which the filter searches for in blocks of text */
+ QRegExp regExp() const;
+
+ /**
+ * Reimplemented to search the filter's text buffer for text matching regExp()
+ *
+ * If regexp matches the empty string, then process() will return immediately
+ * without finding results.
+ */
+ virtual void process();
+
+protected:
+ /**
+ * Called when a match for the regular expression is encountered. Subclasses should reimplement this
+ * to return custom hotspot types
+ */
+ virtual RegExpFilter::HotSpot* newHotSpot(int startLine,int startColumn,
+ int endLine,int endColumn);
+
+private:
+ QRegExp _searchText;
+};
+
+class FilterObject;
+
+/** A filter which matches URLs in blocks of text */
+class UrlFilter : public RegExpFilter
+{
+public:
+ /**
+ * Hotspot type created by UrlFilter instances. The activate() method opens a web browser
+ * at the given URL when called.
+ */
+ class HotSpot : public RegExpFilter::HotSpot
+ {
+ public:
+ HotSpot(int startLine,int startColumn,int endLine,int endColumn);
+ virtual ~HotSpot();
+
+ virtual QList actions();
+
+ /**
+ * Open a web browser at the current URL. The url itself can be determined using
+ * the capturedTexts() method.
+ */
+ virtual void activate(QObject* object = 0);
+
+ virtual QString tooltip() const;
+ private:
+ enum UrlType
+ {
+ StandardUrl,
+ Email,
+ Unknown
+ };
+ UrlType urlType() const;
+
+ FilterObject* _urlObject;
+ };
+
+ UrlFilter();
+
+protected:
+ virtual RegExpFilter::HotSpot* newHotSpot(int,int,int,int);
+
+private:
+
+ static const QRegExp FullUrlRegExp;
+ static const QRegExp EmailAddressRegExp;
+
+ // combined OR of FullUrlRegExp and EmailAddressRegExp
+ static const QRegExp CompleteUrlRegExp;
+};
+
+class FilterObject : public QObject
+{
+Q_OBJECT
+public:
+ FilterObject(Filter::HotSpot* filter) : _filter(filter) {}
+private slots:
+ void activated();
+private:
+ Filter::HotSpot* _filter;
+};
+
+/**
+ * A chain which allows a group of filters to be processed as one.
+ * The chain owns the filters added to it and deletes them when the chain itself is destroyed.
+ *
+ * Use addFilter() to add a new filter to the chain.
+ * When new text to be filtered arrives, use addLine() to add each additional
+ * line of text which needs to be processed and then after adding the last line, use
+ * process() to cause each filter in the chain to process the text.
+ *
+ * After processing a block of text, the reset() method can be used to set the filter chain's
+ * internal cursor back to the first line.
+ *
+ * The hotSpotAt() method will return the first hotspot which covers a given position.
+ *
+ * The hotSpots() and hotSpotsAtLine() method return all of the hotspots in the text and on
+ * a given line respectively.
+ */
+class FilterChain : protected QList
+{
+public:
+ virtual ~FilterChain();
+
+ /** Adds a new filter to the chain. The chain will delete this filter when it is destroyed */
+ void addFilter(Filter* filter);
+ /** Removes a filter from the chain. The chain will no longer delete the filter when destroyed */
+ void removeFilter(Filter* filter);
+ /** Returns true if the chain contains @p filter */
+ bool containsFilter(Filter* filter);
+ /** Removes all filters from the chain */
+ void clear();
+
+ /** Resets each filter in the chain */
+ void reset();
+ /**
+ * Processes each filter in the chain
+ */
+ void process();
+
+ /** Sets the buffer for each filter in the chain to process. */
+ void setBuffer(const QString* buffer , const QList* linePositions);
+
+ /** Returns the first hotspot which occurs at @p line, @p column or 0 if no hotspot was found */
+ Filter::HotSpot* hotSpotAt(int line , int column) const;
+ /** Returns a list of all the hotspots in all the chain's filters */
+ QList hotSpots() const;
+ /** Returns a list of all hotspots at the given line in all the chain's filters */
+ QList hotSpotsAtLine(int line) const;
+
+};
+
+/** A filter chain which processes character images from terminal displays */
+class TerminalImageFilterChain : public FilterChain
+{
+public:
+ TerminalImageFilterChain();
+ virtual ~TerminalImageFilterChain();
+
+ /**
+ * Set the current terminal image to @p image.
+ *
+ * @param image The terminal image
+ * @param lines The number of lines in the terminal image
+ * @param columns The number of columns in the terminal image
+ * @param lineProperties The line properties to set for image
+ */
+ void setImage(const Character* const image , int lines , int columns,
+ const QVector& lineProperties);
+
+private:
+ QString* _buffer;
+ QList* _linePositions;
+};
+
+
+#endif //FILTER_H
diff --git a/konsole-qml-plugin/src/History.cpp b/konsole-qml-plugin/src/History.cpp
new file mode 100644
index 0000000..60426c9
--- /dev/null
+++ b/konsole-qml-plugin/src/History.cpp
@@ -0,0 +1,986 @@
+/*
+ This file is part of Konsole, an X terminal.
+ Copyright 1997,1998 by Lars Doelle
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+*/
+
+// Own
+#include "History.h"
+
+// System
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include
+
+// KDE
+//#include
+//#include
+
+// Reasonable line size
+#define LINE_SIZE 1024
+#define KDE_lseek lseek
+
+
+/*
+ An arbitrary long scroll.
+
+ One can modify the scroll only by adding either cells
+ or newlines, but access it randomly.
+
+ The model is that of an arbitrary wide typewriter scroll
+ in that the scroll is a serie of lines and each line is
+ a serie of cells with no overwriting permitted.
+
+ The implementation provides arbitrary length and numbers
+ of cells and line/column indexed read access to the scroll
+ at constant costs.
+
+KDE4: Can we use QTemporaryFile here, instead of KTempFile?
+
+FIXME: some complain about the history buffer comsuming the
+ memory of their machines. This problem is critical
+ since the history does not behave gracefully in cases
+ where the memory is used up completely.
+
+ I put in a workaround that should handle it problem
+ now gracefully. I'm not satisfied with the solution.
+
+FIXME: Terminating the history is not properly indicated
+ in the menu. We should throw a signal.
+
+FIXME: There is noticeable decrease in speed, also. Perhaps,
+ there whole feature needs to be revisited therefore.
+ Disadvantage of a more elaborated, say block-oriented
+ scheme with wrap around would be it's complexity.
+*/
+
+//FIXME: tempory replacement for tmpfile
+// this is here one for debugging purpose.
+
+//#define tmpfile xTmpFile
+
+// History File ///////////////////////////////////////////
+
+/*
+ A Row(X) data type which allows adding elements to the end.
+*/
+
+HistoryFile::HistoryFile()
+ : ion(-1),
+ length(0),
+ fileMap(0)
+{
+ if (tmpFile.open())
+ {
+ tmpFile.setAutoRemove(true);
+ ion = tmpFile.handle();
+ }
+}
+
+HistoryFile::~HistoryFile()
+{
+ if (fileMap)
+ unmap();
+}
+
+//TODO: Mapping the entire file in will cause problems if the history file becomes exceedingly large,
+//(ie. larger than available memory). HistoryFile::map() should only map in sections of the file at a time,
+//to avoid this.
+void HistoryFile::map()
+{
+ assert( fileMap == 0 );
+
+ fileMap = (char*)mmap( 0 , length , PROT_READ , MAP_PRIVATE , ion , 0 );
+
+ //if mmap'ing fails, fall back to the read-lseek combination
+ if ( fileMap == MAP_FAILED )
+ {
+ readWriteBalance = 0;
+ fileMap = 0;
+ qDebug() << __FILE__ << __LINE__ << ": mmap'ing history failed. errno = " << errno;
+ }
+}
+
+void HistoryFile::unmap()
+{
+ int result = munmap( fileMap , length );
+ assert( result == 0 ); Q_UNUSED( result );
+
+ fileMap = 0;
+}
+
+bool HistoryFile::isMapped()
+{
+ return (fileMap != 0);
+}
+
+void HistoryFile::add(const unsigned char* bytes, int len)
+{
+ if ( fileMap )
+ unmap();
+
+ readWriteBalance++;
+
+ int rc = 0;
+
+ rc = KDE_lseek(ion,length,SEEK_SET); if (rc < 0) { perror("HistoryFile::add.seek"); return; }
+ rc = write(ion,bytes,len); if (rc < 0) { perror("HistoryFile::add.write"); return; }
+ length += rc;
+}
+
+void HistoryFile::get(unsigned char* bytes, int len, int loc)
+{
+ //count number of get() calls vs. number of add() calls.
+ //If there are many more get() calls compared with add()
+ //calls (decided by using MAP_THRESHOLD) then mmap the log
+ //file to improve performance.
+ readWriteBalance--;
+ if ( !fileMap && readWriteBalance < MAP_THRESHOLD )
+ map();
+
+ if ( fileMap )
+ {
+ for (int i=0;i length)
+ fprintf(stderr,"getHist(...,%d,%d): invalid args.\n",len,loc);
+ rc = KDE_lseek(ion,loc,SEEK_SET); if (rc < 0) { perror("HistoryFile::get.seek"); return; }
+ rc = read(ion,bytes,len); if (rc < 0) { perror("HistoryFile::get.read"); return; }
+ }
+}
+
+int HistoryFile::len()
+{
+ return length;
+}
+
+
+// History Scroll abstract base class //////////////////////////////////////
+
+
+HistoryScroll::HistoryScroll(HistoryType* t)
+ : m_histType(t)
+{
+}
+
+HistoryScroll::~HistoryScroll()
+{
+ delete m_histType;
+}
+
+bool HistoryScroll::hasScroll()
+{
+ return true;
+}
+
+// History Scroll File //////////////////////////////////////
+
+/*
+ The history scroll makes a Row(Row(Cell)) from
+ two history buffers. The index buffer contains
+ start of line positions which refere to the cells
+ buffer.
+
+ Note that index[0] addresses the second line
+ (line #1), while the first line (line #0) starts
+ at 0 in cells.
+*/
+
+HistoryScrollFile::HistoryScrollFile(const QString &logFileName)
+ : HistoryScroll(new HistoryTypeFile(logFileName)),
+ m_logFileName(logFileName)
+{
+}
+
+HistoryScrollFile::~HistoryScrollFile()
+{
+}
+
+int HistoryScrollFile::getLines()
+{
+ return index.len() / sizeof(int);
+}
+
+int HistoryScrollFile::getLineLen(int lineno)
+{
+ return (startOfLine(lineno+1) - startOfLine(lineno)) / sizeof(Character);
+}
+
+bool HistoryScrollFile::isWrappedLine(int lineno)
+{
+ if (lineno>=0 && lineno <= getLines()) {
+ unsigned char flag;
+ lineflags.get((unsigned char*)&flag,sizeof(unsigned char),(lineno)*sizeof(unsigned char));
+ return flag;
+ }
+ return false;
+}
+
+int HistoryScrollFile::startOfLine(int lineno)
+{
+ if (lineno <= 0) return 0;
+ if (lineno <= getLines())
+ {
+
+ if (!index.isMapped())
+ index.map();
+
+ int res;
+ index.get((unsigned char*)&res,sizeof(int),(lineno-1)*sizeof(int));
+ return res;
+ }
+ return cells.len();
+}
+
+void HistoryScrollFile::getCells(int lineno, int colno, int count, Character res[])
+{
+ cells.get((unsigned char*)res,count*sizeof(Character),startOfLine(lineno)+colno*sizeof(Character));
+}
+
+void HistoryScrollFile::addCells(const Character text[], int count)
+{
+ cells.add((unsigned char*)text,count*sizeof(Character));
+}
+
+void HistoryScrollFile::addLine(bool previousWrapped)
+{
+ if (index.isMapped())
+ index.unmap();
+
+ int locn = cells.len();
+ index.add((unsigned char*)&locn,sizeof(int));
+ unsigned char flags = previousWrapped ? 0x01 : 0x00;
+ lineflags.add((unsigned char*)&flags,sizeof(unsigned char));
+}
+
+
+// History Scroll Buffer //////////////////////////////////////
+HistoryScrollBuffer::HistoryScrollBuffer(unsigned int maxLineCount)
+ : HistoryScroll(new HistoryTypeBuffer(maxLineCount))
+ ,_historyBuffer()
+ ,_maxLineCount(0)
+ ,_usedLines(0)
+ ,_head(0)
+{
+ setMaxNbLines(maxLineCount);
+}
+
+HistoryScrollBuffer::~HistoryScrollBuffer()
+{
+ delete[] _historyBuffer;
+}
+
+void HistoryScrollBuffer::addCellsVector(const QVector& cells)
+{
+ _head++;
+ if ( _usedLines < _maxLineCount )
+ _usedLines++;
+
+ if ( _head >= _maxLineCount )
+ {
+ _head = 0;
+ }
+
+ _historyBuffer[bufferIndex(_usedLines-1)] = cells;
+ _wrappedLine[bufferIndex(_usedLines-1)] = false;
+}
+void HistoryScrollBuffer::addCells(const Character a[], int count)
+{
+ HistoryLine newLine(count);
+ qCopy(a,a+count,newLine.begin());
+
+ addCellsVector(newLine);
+}
+
+void HistoryScrollBuffer::addLine(bool previousWrapped)
+{
+ _wrappedLine[bufferIndex(_usedLines-1)] = previousWrapped;
+}
+
+int HistoryScrollBuffer::getLines()
+{
+ return _usedLines;
+}
+
+int HistoryScrollBuffer::getLineLen(int lineNumber)
+{
+ Q_ASSERT( lineNumber >= 0 && lineNumber < _maxLineCount );
+
+ if ( lineNumber < _usedLines )
+ {
+ return _historyBuffer[bufferIndex(lineNumber)].size();
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+bool HistoryScrollBuffer::isWrappedLine(int lineNumber)
+{
+ Q_ASSERT( lineNumber >= 0 && lineNumber < _maxLineCount );
+
+ if (lineNumber < _usedLines)
+ {
+ //kDebug() << "Line" << lineNumber << "wrapped is" << _wrappedLine[bufferIndex(lineNumber)];
+ return _wrappedLine[bufferIndex(lineNumber)];
+ }
+ else
+ return false;
+}
+
+void HistoryScrollBuffer::getCells(int lineNumber, int startColumn, int count, Character buffer[])
+{
+ if ( count == 0 ) return;
+
+ Q_ASSERT( lineNumber < _maxLineCount );
+
+ if (lineNumber >= _usedLines)
+ {
+ memset(buffer, 0, count * sizeof(Character));
+ return;
+ }
+
+ const HistoryLine& line = _historyBuffer[bufferIndex(lineNumber)];
+
+ //kDebug() << "startCol " << startColumn;
+ //kDebug() << "line.size() " << line.size();
+ //kDebug() << "count " << count;
+
+ Q_ASSERT( startColumn <= line.size() - count );
+
+ memcpy(buffer, line.constData() + startColumn , count * sizeof(Character));
+}
+
+void HistoryScrollBuffer::setMaxNbLines(unsigned int lineCount)
+{
+ HistoryLine* oldBuffer = _historyBuffer;
+ HistoryLine* newBuffer = new HistoryLine[lineCount];
+
+ for ( int i = 0 ; i < qMin(_usedLines,(int)lineCount) ; i++ )
+ {
+ newBuffer[i] = oldBuffer[bufferIndex(i)];
+ }
+
+ _usedLines = qMin(_usedLines,(int)lineCount);
+ _maxLineCount = lineCount;
+ _head = ( _usedLines == _maxLineCount ) ? 0 : _usedLines-1;
+
+ _historyBuffer = newBuffer;
+ delete[] oldBuffer;
+
+ _wrappedLine.resize(lineCount);
+ dynamic_cast(m_histType)->m_nbLines = lineCount;
+}
+
+int HistoryScrollBuffer::bufferIndex(int lineNumber)
+{
+ Q_ASSERT( lineNumber >= 0 );
+ Q_ASSERT( lineNumber < _maxLineCount );
+ Q_ASSERT( (_usedLines == _maxLineCount) || lineNumber <= _head );
+
+ if ( _usedLines == _maxLineCount )
+ {
+ return (_head+lineNumber+1) % _maxLineCount;
+ }
+ else
+ {
+ return lineNumber;
+ }
+}
+
+
+// History Scroll None //////////////////////////////////////
+
+HistoryScrollNone::HistoryScrollNone()
+ : HistoryScroll(new HistoryTypeNone())
+{
+}
+
+HistoryScrollNone::~HistoryScrollNone()
+{
+}
+
+bool HistoryScrollNone::hasScroll()
+{
+ return false;
+}
+
+int HistoryScrollNone::getLines()
+{
+ return 0;
+}
+
+int HistoryScrollNone::getLineLen(int)
+{
+ return 0;
+}
+
+bool HistoryScrollNone::isWrappedLine(int /*lineno*/)
+{
+ return false;
+}
+
+void HistoryScrollNone::getCells(int, int, int, Character [])
+{
+}
+
+void HistoryScrollNone::addCells(const Character [], int)
+{
+}
+
+void HistoryScrollNone::addLine(bool)
+{
+}
+
+// History Scroll BlockArray //////////////////////////////////////
+
+HistoryScrollBlockArray::HistoryScrollBlockArray(size_t size)
+ : HistoryScroll(new HistoryTypeBlockArray(size))
+{
+ m_blockArray.setHistorySize(size); // nb. of lines.
+}
+
+HistoryScrollBlockArray::~HistoryScrollBlockArray()
+{
+}
+
+int HistoryScrollBlockArray::getLines()
+{
+ return m_lineLengths.count();
+}
+
+int HistoryScrollBlockArray::getLineLen(int lineno)
+{
+ if ( m_lineLengths.contains(lineno) )
+ return m_lineLengths[lineno];
+ else
+ return 0;
+}
+
+bool HistoryScrollBlockArray::isWrappedLine(int /*lineno*/)
+{
+ return false;
+}
+
+void HistoryScrollBlockArray::getCells(int lineno, int colno,
+ int count, Character res[])
+{
+ if (!count) return;
+
+ const Block *b = m_blockArray.at(lineno);
+
+ if (!b) {
+ memset(res, 0, count * sizeof(Character)); // still better than random data
+ return;
+ }
+
+ assert(((colno + count) * sizeof(Character)) < ENTRIES);
+ memcpy(res, b->data + (colno * sizeof(Character)), count * sizeof(Character));
+}
+
+void HistoryScrollBlockArray::addCells(const Character a[], int count)
+{
+ Block *b = m_blockArray.lastBlock();
+
+ if (!b) return;
+
+ // put cells in block's data
+ assert((count * sizeof(Character)) < ENTRIES);
+
+ memset(b->data, 0, ENTRIES);
+
+ memcpy(b->data, a, count * sizeof(Character));
+ b->size = count * sizeof(Character);
+
+ size_t res = m_blockArray.newBlock();
+ assert (res > 0);
+ Q_UNUSED( res );
+
+ m_lineLengths.insert(m_blockArray.getCurrent(), count);
+}
+
+void HistoryScrollBlockArray::addLine(bool)
+{
+}
+
+////////////////////////////////////////////////////////////////
+// Compact History Scroll //////////////////////////////////////
+////////////////////////////////////////////////////////////////
+void* CompactHistoryBlock::allocate ( size_t length )
+{
+ Q_ASSERT ( length > 0 );
+ if ( tail-blockStart+length > blockLength )
+ return NULL;
+
+ void* block = tail;
+ tail += length;
+ //kDebug() << "allocated " << length << " bytes at address " << block;
+ allocCount++;
+ return block;
+}
+
+void CompactHistoryBlock::deallocate ( )
+{
+ allocCount--;
+ Q_ASSERT ( allocCount >= 0 );
+}
+
+void* CompactHistoryBlockList::allocate(size_t size)
+{
+ CompactHistoryBlock* block;
+ if ( list.isEmpty() || list.last()->remaining() < size)
+ {
+ block = new CompactHistoryBlock();
+ list.append ( block );
+ //kDebug() << "new block created, remaining " << block->remaining() << "number of blocks=" << list.size();
+ }
+ else
+ {
+ block = list.last();
+ //kDebug() << "old block used, remaining " << block->remaining();
+ }
+ return block->allocate(size);
+}
+
+void CompactHistoryBlockList::deallocate(void* ptr)
+{
+ Q_ASSERT( !list.isEmpty());
+
+ int i=0;
+ CompactHistoryBlock *block = list.at(i);
+ while ( icontains(ptr) )
+ {
+ i++;
+ block=list.at(i);
+ }
+
+ Q_ASSERT( ideallocate();
+
+ if (!block->isInUse())
+ {
+ list.removeAt(i);
+ delete block;
+ //kDebug() << "block deleted, new size = " << list.size();
+ }
+}
+
+CompactHistoryBlockList::~CompactHistoryBlockList()
+{
+ qDeleteAll ( list.begin(), list.end() );
+ list.clear();
+}
+
+void* CompactHistoryLine::operator new (size_t size, CompactHistoryBlockList& blockList)
+{
+ return blockList.allocate(size);
+}
+
+CompactHistoryLine::CompactHistoryLine ( const TextLine& line, CompactHistoryBlockList& bList )
+ : blockList(bList),
+ formatLength(0)
+{
+ length=line.size();
+
+ if (line.size() > 0) {
+ formatLength=1;
+ int k=1;
+
+ // count number of different formats in this text line
+ Character c = line[0];
+ while ( k0) {
+ blockList.deallocate(text);
+ blockList.deallocate(formatArray);
+ }
+ blockList.deallocate(this);
+}
+
+void CompactHistoryLine::getCharacter ( int index, Character &r )
+{
+ Q_ASSERT ( index < length );
+ int formatPos=0;
+ while ( ( formatPos+1 ) < formatLength && index >= formatArray[formatPos+1].startPos )
+ formatPos++;
+
+ r.character=text[index];
+ r.rendition = formatArray[formatPos].rendition;
+ r.foregroundColor = formatArray[formatPos].fgColor;
+ r.backgroundColor = formatArray[formatPos].bgColor;
+}
+
+void CompactHistoryLine::getCharacters ( Character* array, int length, int startColumn )
+{
+ Q_ASSERT ( startColumn >= 0 && length >= 0 );
+ Q_ASSERT ( startColumn+length <= ( int ) getLength() );
+
+ for ( int i=startColumn; i ( int ) _maxLineCount )
+ {
+ delete lines.takeAt ( 0 );
+ }
+ lines.append ( line );
+}
+
+void CompactHistoryScroll::addCells ( const Character a[], int count )
+{
+ TextLine newLine ( count );
+ qCopy ( a,a+count,newLine.begin() );
+ addCellsVector ( newLine );
+}
+
+void CompactHistoryScroll::addLine ( bool previousWrapped )
+{
+ CompactHistoryLine *line = lines.last();
+ //kDebug() << "last line at address " << line;
+ line->setWrapped(previousWrapped);
+}
+
+int CompactHistoryScroll::getLines()
+{
+ return lines.size();
+}
+
+int CompactHistoryScroll::getLineLen ( int lineNumber )
+{
+ Q_ASSERT ( lineNumber >= 0 && lineNumber < lines.size() );
+ CompactHistoryLine* line = lines[lineNumber];
+ //kDebug() << "request for line at address " << line;
+ return line->getLength();
+}
+
+
+void CompactHistoryScroll::getCells ( int lineNumber, int startColumn, int count, Character buffer[] )
+{
+ if ( count == 0 ) return;
+ Q_ASSERT ( lineNumber < lines.size() );
+ CompactHistoryLine* line = lines[lineNumber];
+ Q_ASSERT ( startColumn >= 0 );
+ Q_ASSERT ( (unsigned int)startColumn <= line->getLength() - count );
+ line->getCharacters ( buffer, count, startColumn );
+}
+
+void CompactHistoryScroll::setMaxNbLines ( unsigned int lineCount )
+{
+ _maxLineCount = lineCount;
+
+ while (lines.size() > (int) lineCount) {
+ delete lines.takeAt(0);
+ }
+ //kDebug() << "set max lines to: " << _maxLineCount;
+}
+
+bool CompactHistoryScroll::isWrappedLine ( int lineNumber )
+{
+ Q_ASSERT ( lineNumber < lines.size() );
+ return lines[lineNumber]->isWrapped();
+}
+
+
+//////////////////////////////////////////////////////////////////////
+// History Types
+//////////////////////////////////////////////////////////////////////
+
+HistoryType::HistoryType()
+{
+}
+
+HistoryType::~HistoryType()
+{
+}
+
+//////////////////////////////
+
+HistoryTypeNone::HistoryTypeNone()
+{
+}
+
+bool HistoryTypeNone::isEnabled() const
+{
+ return false;
+}
+
+HistoryScroll* HistoryTypeNone::scroll(HistoryScroll *old) const
+{
+ delete old;
+ return new HistoryScrollNone();
+}
+
+int HistoryTypeNone::maximumLineCount() const
+{
+ return 0;
+}
+
+//////////////////////////////
+
+HistoryTypeBlockArray::HistoryTypeBlockArray(size_t size)
+ : m_size(size)
+{
+}
+
+bool HistoryTypeBlockArray::isEnabled() const
+{
+ return true;
+}
+
+int HistoryTypeBlockArray::maximumLineCount() const
+{
+ return m_size;
+}
+
+HistoryScroll* HistoryTypeBlockArray::scroll(HistoryScroll *old) const
+{
+ delete old;
+ return new HistoryScrollBlockArray(m_size);
+}
+
+
+//////////////////////////////
+
+HistoryTypeBuffer::HistoryTypeBuffer(unsigned int nbLines)
+ : m_nbLines(nbLines)
+{
+}
+
+bool HistoryTypeBuffer::isEnabled() const
+{
+ return true;
+}
+
+int HistoryTypeBuffer::maximumLineCount() const
+{
+ return m_nbLines;
+}
+
+HistoryScroll* HistoryTypeBuffer::scroll(HistoryScroll *old) const
+{
+ if (old)
+ {
+ HistoryScrollBuffer *oldBuffer = dynamic_cast(old);
+ if (oldBuffer)
+ {
+ oldBuffer->setMaxNbLines(m_nbLines);
+ return oldBuffer;
+ }
+
+ HistoryScroll *newScroll = new HistoryScrollBuffer(m_nbLines);
+ int lines = old->getLines();
+ int startLine = 0;
+ if (lines > (int) m_nbLines)
+ startLine = lines - m_nbLines;
+
+ Character line[LINE_SIZE];
+ for(int i = startLine; i < lines; i++)
+ {
+ int size = old->getLineLen(i);
+ if (size > LINE_SIZE)
+ {
+ Character *tmp_line = new Character[size];
+ old->getCells(i, 0, size, tmp_line);
+ newScroll->addCells(tmp_line, size);
+ newScroll->addLine(old->isWrappedLine(i));
+ delete [] tmp_line;
+ }
+ else
+ {
+ old->getCells(i, 0, size, line);
+ newScroll->addCells(line, size);
+ newScroll->addLine(old->isWrappedLine(i));
+ }
+ }
+ delete old;
+ return newScroll;
+ }
+ return new HistoryScrollBuffer(m_nbLines);
+}
+
+//////////////////////////////
+
+HistoryTypeFile::HistoryTypeFile(const QString& fileName)
+ : m_fileName(fileName)
+{
+}
+
+bool HistoryTypeFile::isEnabled() const
+{
+ return true;
+}
+
+const QString& HistoryTypeFile::getFileName() const
+{
+ return m_fileName;
+}
+
+HistoryScroll* HistoryTypeFile::scroll(HistoryScroll *old) const
+{
+ if (dynamic_cast(old))
+ return old; // Unchanged.
+
+ HistoryScroll *newScroll = new HistoryScrollFile(m_fileName);
+
+ Character line[LINE_SIZE];
+ int lines = (old != 0) ? old->getLines() : 0;
+ for(int i = 0; i < lines; i++)
+ {
+ int size = old->getLineLen(i);
+ if (size > LINE_SIZE)
+ {
+ Character *tmp_line = new Character[size];
+ old->getCells(i, 0, size, tmp_line);
+ newScroll->addCells(tmp_line, size);
+ newScroll->addLine(old->isWrappedLine(i));
+ delete [] tmp_line;
+ }
+ else
+ {
+ old->getCells(i, 0, size, line);
+ newScroll->addCells(line, size);
+ newScroll->addLine(old->isWrappedLine(i));
+ }
+ }
+
+ delete old;
+ return newScroll;
+}
+
+int HistoryTypeFile::maximumLineCount() const
+{
+ return 0;
+}
+
+//////////////////////////////
+
+CompactHistoryType::CompactHistoryType ( unsigned int nbLines )
+ : m_nbLines ( nbLines )
+{
+}
+
+bool CompactHistoryType::isEnabled() const
+{
+ return true;
+}
+
+int CompactHistoryType::maximumLineCount() const
+{
+ return m_nbLines;
+}
+
+HistoryScroll* CompactHistoryType::scroll ( HistoryScroll *old ) const
+{
+ if ( old )
+ {
+ CompactHistoryScroll *oldBuffer = dynamic_cast ( old );
+ if ( oldBuffer )
+ {
+ oldBuffer->setMaxNbLines ( m_nbLines );
+ return oldBuffer;
+ }
+ delete old;
+ }
+ return new CompactHistoryScroll ( m_nbLines );
+}
diff --git a/konsole-qml-plugin/src/History.h b/konsole-qml-plugin/src/History.h
new file mode 100644
index 0000000..c1b0d56
--- /dev/null
+++ b/konsole-qml-plugin/src/History.h
@@ -0,0 +1,490 @@
+/*
+ This file is part of Konsole, an X terminal.
+ Copyright 1997,1998 by Lars Doelle
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+*/
+
+#ifndef TEHISTORY_H
+#define TEHISTORY_H
+
+// Qt
+#include
+#include
+#include
+#include
+
+// KDE
+//#include
+
+// Konsole
+#include "BlockArray.h"
+#include "Character.h"
+
+// map
+#include
+
+
+#if 1
+/*
+ An extendable tmpfile(1) based buffer.
+*/
+
+class HistoryFile
+{
+public:
+ HistoryFile();
+ virtual ~HistoryFile();
+
+ virtual void add(const unsigned char* bytes, int len);
+ virtual void get(unsigned char* bytes, int len, int loc);
+ virtual int len();
+
+ //mmaps the file in read-only mode
+ void map();
+ //un-mmaps the file
+ void unmap();
+ //returns true if the file is mmap'ed
+ bool isMapped();
+
+
+private:
+ int ion;
+ int length;
+ QTemporaryFile tmpFile;
+
+ //pointer to start of mmap'ed file data, or 0 if the file is not mmap'ed
+ char* fileMap;
+
+ //incremented whenver 'add' is called and decremented whenever
+ //'get' is called.
+ //this is used to detect when a large number of lines are being read and processed from the history
+ //and automatically mmap the file for better performance (saves the overhead of many lseek-read calls).
+ int readWriteBalance;
+
+ //when readWriteBalance goes below this threshold, the file will be mmap'ed automatically
+ static const int MAP_THRESHOLD = -1000;
+};
+#endif
+
+//////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////
+// Abstract base class for file and buffer versions
+//////////////////////////////////////////////////////////////////////
+class HistoryType;
+
+class HistoryScroll
+{
+public:
+ HistoryScroll(HistoryType*);
+ virtual ~HistoryScroll();
+
+ virtual bool hasScroll();
+
+ // access to history
+ virtual int getLines() = 0;
+ virtual int getLineLen(int lineno) = 0;
+ virtual void getCells(int lineno, int colno, int count, Character res[]) = 0;
+ virtual bool isWrappedLine(int lineno) = 0;
+
+ // backward compatibility (obsolete)
+ Character getCell(int lineno, int colno) { Character res; getCells(lineno,colno,1,&res); return res; }
+
+ // adding lines.
+ virtual void addCells(const Character a[], int count) = 0;
+ // convenience method - this is virtual so that subclasses can take advantage
+ // of QVector's implicit copying
+ virtual void addCellsVector(const QVector& cells)
+ {
+ addCells(cells.data(),cells.size());
+ }
+
+ virtual void addLine(bool previousWrapped=false) = 0;
+
+ //
+ // FIXME: Passing around constant references to HistoryType instances
+ // is very unsafe, because those references will no longer
+ // be valid if the history scroll is deleted.
+ //
+ const HistoryType& getType() { return *m_histType; }
+
+protected:
+ HistoryType* m_histType;
+
+};
+
+#if 1
+
+//////////////////////////////////////////////////////////////////////
+// File-based history (e.g. file log, no limitation in length)
+//////////////////////////////////////////////////////////////////////
+
+class HistoryScrollFile : public HistoryScroll
+{
+public:
+ HistoryScrollFile(const QString &logFileName);
+ virtual ~HistoryScrollFile();
+
+ virtual int getLines();
+ virtual int getLineLen(int lineno);
+ virtual void getCells(int lineno, int colno, int count, Character res[]);
+ virtual bool isWrappedLine(int lineno);
+
+ virtual void addCells(const Character a[], int count);
+ virtual void addLine(bool previousWrapped=false);
+
+private:
+ int startOfLine(int lineno);
+
+ QString m_logFileName;
+ HistoryFile index; // lines Row(int)
+ HistoryFile cells; // text Row(Character)
+ HistoryFile lineflags; // flags Row(unsigned char)
+};
+
+
+//////////////////////////////////////////////////////////////////////
+// Buffer-based history (limited to a fixed nb of lines)
+//////////////////////////////////////////////////////////////////////
+class HistoryScrollBuffer : public HistoryScroll
+{
+public:
+ typedef QVector HistoryLine;
+
+ HistoryScrollBuffer(unsigned int maxNbLines = 1000);
+ virtual ~HistoryScrollBuffer();
+
+ virtual int getLines();
+ virtual int getLineLen(int lineno);
+ virtual void getCells(int lineno, int colno, int count, Character res[]);
+ virtual bool isWrappedLine(int lineno);
+
+ virtual void addCells(const Character a[], int count);
+ virtual void addCellsVector(const QVector& cells);
+ virtual void addLine(bool previousWrapped=false);
+
+ void setMaxNbLines(unsigned int nbLines);
+ unsigned int maxNbLines() { return _maxLineCount; }
+
+
+private:
+ int bufferIndex(int lineNumber);
+
+ HistoryLine* _historyBuffer;
+ QBitArray _wrappedLine;
+ int _maxLineCount;
+ int _usedLines;
+ int _head;
+
+ //QVector m_histBuffer;
+ //QBitArray m_wrappedLine;
+ //unsigned int m_maxNbLines;
+ //unsigned int m_nbLines;
+ //unsigned int m_arrayIndex;
+ //bool m_buffFilled;
+};
+
+/*class HistoryScrollBufferV2 : public HistoryScroll
+{
+public:
+ virtual int getLines();
+ virtual int getLineLen(int lineno);
+ virtual void getCells(int lineno, int colno, int count, Character res[]);
+ virtual bool isWrappedLine(int lineno);
+
+ virtual void addCells(const Character a[], int count);
+ virtual void addCells(const QVector& cells);
+ virtual void addLine(bool previousWrapped=false);
+
+};*/
+
+#endif
+
+//////////////////////////////////////////////////////////////////////
+// Nothing-based history (no history :-)
+//////////////////////////////////////////////////////////////////////
+class HistoryScrollNone : public HistoryScroll
+{
+public:
+ HistoryScrollNone();
+ virtual ~HistoryScrollNone();
+
+ virtual bool hasScroll();
+
+ virtual int getLines();
+ virtual int getLineLen(int lineno);
+ virtual void getCells(int lineno, int colno, int count, Character res[]);
+ virtual bool isWrappedLine(int lineno);
+
+ virtual void addCells(const Character a[], int count);
+ virtual void addLine(bool previousWrapped=false);
+};
+
+//////////////////////////////////////////////////////////////////////
+// BlockArray-based history
+//////////////////////////////////////////////////////////////////////
+class HistoryScrollBlockArray : public HistoryScroll
+{
+public:
+ HistoryScrollBlockArray(size_t size);
+ virtual ~HistoryScrollBlockArray();
+
+ virtual int getLines();
+ virtual int getLineLen(int lineno);
+ virtual void getCells(int lineno, int colno, int count, Character res[]);
+ virtual bool isWrappedLine(int lineno);
+
+ virtual void addCells(const Character a[], int count);
+ virtual void addLine(bool previousWrapped=false);
+
+protected:
+ BlockArray m_blockArray;
+ QHash m_lineLengths;
+};
+
+//////////////////////////////////////////////////////////////////////
+// History using compact storage
+// This implementation uses a list of fixed-sized blocks
+// where history lines are allocated in (avoids heap fragmentation)
+//////////////////////////////////////////////////////////////////////
+typedef QVector TextLine;
+
+class CharacterFormat
+{
+public:
+ bool equalsFormat(const CharacterFormat &other) const {
+ return other.rendition==rendition && other.fgColor==fgColor && other.bgColor==bgColor;
+ }
+
+ bool equalsFormat(const Character &c) const {
+ return c.rendition==rendition && c.foregroundColor==fgColor && c.backgroundColor==bgColor;
+ }
+
+ void setFormat(const Character& c) {
+ rendition=c.rendition;
+ fgColor=c.foregroundColor;
+ bgColor=c.backgroundColor;
+ }
+
+ CharacterColor fgColor, bgColor;
+ quint16 startPos;
+ quint8 rendition;
+};
+
+class CompactHistoryBlock
+{
+public:
+
+ CompactHistoryBlock(){
+ blockLength = 4096*64; // 256kb
+ head = (quint8*) mmap(0, blockLength, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANON, -1, 0);
+ //head = (quint8*) malloc(blockLength);
+ Q_ASSERT(head != MAP_FAILED);
+ tail = blockStart = head;
+ allocCount=0;
+ }
+
+ virtual ~CompactHistoryBlock(){
+ //free(blockStart);
+ munmap(blockStart, blockLength);
+ }
+
+ virtual unsigned int remaining(){ return blockStart+blockLength-tail;}
+ virtual unsigned length() { return blockLength; }
+ virtual void* allocate(size_t length);
+ virtual bool contains(void *addr) {return addr>=blockStart && addr<(blockStart+blockLength);}
+ virtual void deallocate();
+ virtual bool isInUse(){ return allocCount!=0; } ;
+
+private:
+ size_t blockLength;
+ quint8* head;
+ quint8* tail;
+ quint8* blockStart;
+ int allocCount;
+};
+
+class CompactHistoryBlockList {
+public:
+ CompactHistoryBlockList() {};
+ ~CompactHistoryBlockList();
+
+ void *allocate( size_t size );
+ void deallocate(void *);
+ int length() {return list.size();}
+private:
+ QList list;
+};
+
+class CompactHistoryLine
+{
+public:
+ CompactHistoryLine(const TextLine&, CompactHistoryBlockList& blockList);
+ virtual ~CompactHistoryLine();
+
+ // custom new operator to allocate memory from custom pool instead of heap
+ static void *operator new( size_t size, CompactHistoryBlockList& blockList);
+ static void operator delete( void *) { /* do nothing, deallocation from pool is done in destructor*/ } ;
+
+ virtual void getCharacters(Character* array, int length, int startColumn) ;
+ virtual void getCharacter(int index, Character &r) ;
+ virtual bool isWrapped() const {return wrapped;};
+ virtual void setWrapped(bool isWrapped) { wrapped=isWrapped;};
+ virtual unsigned int getLength() const {return length;};
+
+protected:
+ CompactHistoryBlockList& blockList;
+ CharacterFormat* formatArray;
+ quint16 length;
+ quint16* text;
+ quint16 formatLength;
+ bool wrapped;
+};
+
+class CompactHistoryScroll : public HistoryScroll
+{
+ typedef QList HistoryArray;
+
+public:
+ CompactHistoryScroll(unsigned int maxNbLines = 1000);
+ virtual ~CompactHistoryScroll();
+
+ virtual int getLines();
+ virtual int getLineLen(int lineno);
+ virtual void getCells(int lineno, int colno, int count, Character res[]);
+ virtual bool isWrappedLine(int lineno);
+
+ virtual void addCells(const Character a[], int count);
+ virtual void addCellsVector(const TextLine& cells);
+ virtual void addLine(bool previousWrapped=false);
+
+ void setMaxNbLines(unsigned int nbLines);
+ unsigned int maxNbLines() const { return _maxLineCount; }
+
+private:
+ bool hasDifferentColors(const TextLine& line) const;
+ HistoryArray lines;
+ CompactHistoryBlockList blockList;
+
+ unsigned int _maxLineCount;
+};
+
+//////////////////////////////////////////////////////////////////////
+// History type
+//////////////////////////////////////////////////////////////////////
+
+class HistoryType
+{
+public:
+ HistoryType();
+ virtual ~HistoryType();
+
+ /**
+ * Returns true if the history is enabled ( can store lines of output )
+ * or false otherwise.
+ */
+ virtual bool isEnabled() const = 0;
+ /**
+ * Returns true if the history size is unlimited.
+ */
+ bool isUnlimited() const { return maximumLineCount() == 0; }
+ /**
+ * Returns the maximum number of lines which this history type
+ * can store or 0 if the history can store an unlimited number of lines.
+ */
+ virtual int maximumLineCount() const = 0;
+
+ virtual HistoryScroll* scroll(HistoryScroll *) const = 0;
+};
+
+class HistoryTypeNone : public HistoryType
+{
+public:
+ HistoryTypeNone();
+
+ virtual bool isEnabled() const;
+ virtual int maximumLineCount() const;
+
+ virtual HistoryScroll* scroll(HistoryScroll *) const;
+};
+
+class HistoryTypeBlockArray : public HistoryType
+{
+public:
+ HistoryTypeBlockArray(size_t size);
+
+ virtual bool isEnabled() const;
+ virtual int maximumLineCount() const;
+
+ virtual HistoryScroll* scroll(HistoryScroll *) const;
+
+protected:
+ size_t m_size;
+};
+
+#if 1
+class HistoryTypeFile : public HistoryType
+{
+public:
+ HistoryTypeFile(const QString& fileName=QString());
+
+ virtual bool isEnabled() const;
+ virtual const QString& getFileName() const;
+ virtual int maximumLineCount() const;
+
+ virtual HistoryScroll* scroll(HistoryScroll *) const;
+
+protected:
+ QString m_fileName;
+};
+
+
+class HistoryTypeBuffer : public HistoryType
+{
+ friend class HistoryScrollBuffer;
+
+public:
+ HistoryTypeBuffer(unsigned int nbLines);
+
+ virtual bool isEnabled() const;
+ virtual int maximumLineCount() const;
+
+ virtual HistoryScroll* scroll(HistoryScroll *) const;
+
+protected:
+ unsigned int m_nbLines;
+};
+
+class CompactHistoryType : public HistoryType
+{
+public:
+ CompactHistoryType(unsigned int size);
+
+ virtual bool isEnabled() const;
+ virtual int maximumLineCount() const;
+
+ virtual HistoryScroll* scroll(HistoryScroll *) const;
+
+protected:
+ unsigned int m_nbLines;
+};
+
+
+#endif
+
+
+#endif // TEHISTORY_H
diff --git a/konsole-qml-plugin/src/KeyboardTranslator.cpp b/konsole-qml-plugin/src/KeyboardTranslator.cpp
new file mode 100644
index 0000000..a2ad22c
--- /dev/null
+++ b/konsole-qml-plugin/src/KeyboardTranslator.cpp
@@ -0,0 +1,892 @@
+/*
+ This source file is part of Konsole, a terminal emulator.
+
+ Copyright 2007-2008 by Robert Knight
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+*/
+
+// Own
+#include "KeyboardTranslator.h"
+
+// System
+#include
+#include
+
+// Qt
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include "tools.h"
+
+// KDE
+//#include
+//#include
+//#include
+
+
+const QByteArray KeyboardTranslatorManager::defaultTranslatorText(
+"keyboard \"Fallback Key Translator\"\n"
+"key Tab : \"\\t\""
+);
+
+KeyboardTranslatorManager::KeyboardTranslatorManager()
+ : _haveLoadedAll(false)
+{
+}
+KeyboardTranslatorManager::~KeyboardTranslatorManager()
+{
+ qDeleteAll(_translators);
+}
+QString KeyboardTranslatorManager::findTranslatorPath(const QString& name)
+{
+ return QString(get_kb_layout_dir() + name + ".keytab");
+ //return KGlobal::dirs()->findResource("data","konsole/"+name+".keytab");
+}
+
+void KeyboardTranslatorManager::findTranslators()
+{
+ QDir dir(get_kb_layout_dir());
+ QStringList filters;
+ filters << "*.keytab";
+ dir.setNameFilters(filters);
+ QStringList list = dir.entryList(filters);
+ list = dir.entryList(filters);
+// QStringList list = KGlobal::dirs()->findAllResources("data",
+// "konsole/*.keytab",
+// KStandardDirs::NoDuplicates);
+
+ // add the name of each translator to the list and associated
+ // the name with a null pointer to indicate that the translator
+ // has not yet been loaded from disk
+ QStringListIterator listIter(list);
+ while (listIter.hasNext())
+ {
+ QString translatorPath = listIter.next();
+
+ QString name = QFileInfo(translatorPath).baseName();
+
+ if ( !_translators.contains(name) )
+ _translators.insert(name,0);
+ }
+
+ _haveLoadedAll = true;
+}
+
+const KeyboardTranslator* KeyboardTranslatorManager::findTranslator(const QString& name)
+{
+ if ( name.isEmpty() )
+ return defaultTranslator();
+
+ if ( _translators.contains(name) && _translators[name] != 0 )
+ return _translators[name];
+
+ KeyboardTranslator* translator = loadTranslator(name);
+
+ if ( translator != 0 )
+ _translators[name] = translator;
+ else if ( !name.isEmpty() )
+ qDebug() << "Unable to load translator" << name;
+
+ return translator;
+}
+
+bool KeyboardTranslatorManager::saveTranslator(const KeyboardTranslator* translator)
+{
+qDebug() << "KeyboardTranslatorManager::saveTranslator" << "unimplemented";
+Q_UNUSED(translator);
+#if 0
+ const QString path = KGlobal::dirs()->saveLocation("data","konsole/")+translator->name()
+ +".keytab";
+
+ //kDebug() << "Saving translator to" << path;
+
+ QFile destination(path);
+ if (!destination.open(QIODevice::WriteOnly | QIODevice::Text))
+ {
+ qDebug() << "Unable to save keyboard translation:"
+ << destination.errorString();
+ return false;
+ }
+
+ {
+ KeyboardTranslatorWriter writer(&destination);
+ writer.writeHeader(translator->description());
+
+ QListIterator iter(translator->entries());
+ while ( iter.hasNext() )
+ writer.writeEntry(iter.next());
+ }
+
+ destination.close();
+#endif
+ return true;
+}
+
+KeyboardTranslator* KeyboardTranslatorManager::loadTranslator(const QString& name)
+{
+ const QString& path = findTranslatorPath(name);
+
+ QFile source(path);
+ if (name.isEmpty() || !source.open(QIODevice::ReadOnly | QIODevice::Text))
+ return 0;
+
+ return loadTranslator(&source,name);
+}
+
+const KeyboardTranslator* KeyboardTranslatorManager::defaultTranslator()
+{
+ // Try to find the default.keytab file if it exists, otherwise
+ // fall back to the hard-coded one
+ const KeyboardTranslator* translator = findTranslator("default");
+ if (!translator)
+ {
+ QBuffer textBuffer;
+ textBuffer.setData(defaultTranslatorText);
+ textBuffer.open(QIODevice::ReadOnly);
+ translator = loadTranslator(&textBuffer,"fallback");
+ }
+ return translator;
+}
+
+KeyboardTranslator* KeyboardTranslatorManager::loadTranslator(QIODevice* source,const QString& name)
+{
+ KeyboardTranslator* translator = new KeyboardTranslator(name);
+ KeyboardTranslatorReader reader(source);
+ translator->setDescription( reader.description() );
+ while ( reader.hasNextEntry() )
+ translator->addEntry(reader.nextEntry());
+
+ source->close();
+
+ if ( !reader.parseError() )
+ {
+ return translator;
+ }
+ else
+ {
+ delete translator;
+ return 0;
+ }
+}
+
+KeyboardTranslatorWriter::KeyboardTranslatorWriter(QIODevice* destination)
+: _destination(destination)
+{
+ Q_ASSERT( destination && destination->isWritable() );
+
+ _writer = new QTextStream(_destination);
+}
+KeyboardTranslatorWriter::~KeyboardTranslatorWriter()
+{
+ delete _writer;
+}
+void KeyboardTranslatorWriter::writeHeader( const QString& description )
+{
+ *_writer << "keyboard \"" << description << '\"' << '\n';
+}
+void KeyboardTranslatorWriter::writeEntry( const KeyboardTranslator::Entry& entry )
+{
+ QString result;
+ if ( entry.command() != KeyboardTranslator::NoCommand )
+ result = entry.resultToString();
+ else
+ result = '\"' + entry.resultToString() + '\"';
+
+ *_writer << "key " << entry.conditionToString() << " : " << result << '\n';
+}
+
+
+// each line of the keyboard translation file is one of:
+//
+// - keyboard "name"
+// - key KeySequence : "characters"
+// - key KeySequence : CommandName
+//
+// KeySequence begins with the name of the key ( taken from the Qt::Key enum )
+// and is followed by the keyboard modifiers and state flags ( with + or - in front
+// of each modifier or flag to indicate whether it is required ). All keyboard modifiers
+// and flags are optional, if a particular modifier or state is not specified it is
+// assumed not to be a part of the sequence. The key sequence may contain whitespace
+//
+// eg: "key Up+Shift : scrollLineUp"
+// "key Next-Shift : "\E[6~"
+//
+// (lines containing only whitespace are ignored, parseLine assumes that comments have
+// already been removed)
+//
+
+KeyboardTranslatorReader::KeyboardTranslatorReader( QIODevice* source )
+ : _source(source)
+ , _hasNext(false)
+{
+ // read input until we find the description
+ while ( _description.isEmpty() && !source->atEnd() )
+ {
+ QList tokens = tokenize( QString(source->readLine()) );
+ if ( !tokens.isEmpty() && tokens.first().type == Token::TitleKeyword )
+ _description = tokens[1].text.toUtf8();
+ }
+ // read first entry (if any)
+ readNext();
+}
+void KeyboardTranslatorReader::readNext()
+{
+ // find next entry
+ while ( !_source->atEnd() )
+ {
+ const QList& tokens = tokenize( QString(_source->readLine()) );
+ if ( !tokens.isEmpty() && tokens.first().type == Token::KeyKeyword )
+ {
+ KeyboardTranslator::States flags = KeyboardTranslator::NoState;
+ KeyboardTranslator::States flagMask = KeyboardTranslator::NoState;
+ Qt::KeyboardModifiers modifiers = Qt::NoModifier;
+ Qt::KeyboardModifiers modifierMask = Qt::NoModifier;
+
+ int keyCode = Qt::Key_unknown;
+
+ decodeSequence(tokens[1].text.toLower(),
+ keyCode,
+ modifiers,
+ modifierMask,
+ flags,
+ flagMask);
+
+ KeyboardTranslator::Command command = KeyboardTranslator::NoCommand;
+ QByteArray text;
+
+ // get text or command
+ if ( tokens[2].type == Token::OutputText )
+ {
+ text = tokens[2].text.toLocal8Bit();
+ }
+ else if ( tokens[2].type == Token::Command )
+ {
+ // identify command
+ if (!parseAsCommand(tokens[2].text,command))
+ qDebug() << "Command" << tokens[2].text << "not understood.";
+ }
+
+ KeyboardTranslator::Entry newEntry;
+ newEntry.setKeyCode( keyCode );
+ newEntry.setState( flags );
+ newEntry.setStateMask( flagMask );
+ newEntry.setModifiers( modifiers );
+ newEntry.setModifierMask( modifierMask );
+ newEntry.setText( text );
+ newEntry.setCommand( command );
+
+ _nextEntry = newEntry;
+
+ _hasNext = true;
+
+ return;
+ }
+ }
+
+ _hasNext = false;
+}
+
+bool KeyboardTranslatorReader::parseAsCommand(const QString& text,KeyboardTranslator::Command& command)
+{
+ if ( text.compare("erase",Qt::CaseInsensitive) == 0 )
+ command = KeyboardTranslator::EraseCommand;
+ else if ( text.compare("scrollpageup",Qt::CaseInsensitive) == 0 )
+ command = KeyboardTranslator::ScrollPageUpCommand;
+ else if ( text.compare("scrollpagedown",Qt::CaseInsensitive) == 0 )
+ command = KeyboardTranslator::ScrollPageDownCommand;
+ else if ( text.compare("scrolllineup",Qt::CaseInsensitive) == 0 )
+ command = KeyboardTranslator::ScrollLineUpCommand;
+ else if ( text.compare("scrolllinedown",Qt::CaseInsensitive) == 0 )
+ command = KeyboardTranslator::ScrollLineDownCommand;
+ else if ( text.compare("scrolllock",Qt::CaseInsensitive) == 0 )
+ command = KeyboardTranslator::ScrollLockCommand;
+ else
+ return false;
+
+ return true;
+}
+
+bool KeyboardTranslatorReader::decodeSequence(const QString& text,
+ int& keyCode,
+ Qt::KeyboardModifiers& modifiers,
+ Qt::KeyboardModifiers& modifierMask,
+ KeyboardTranslator::States& flags,
+ KeyboardTranslator::States& flagMask)
+{
+ bool isWanted = true;
+ bool endOfItem = false;
+ QString buffer;
+
+ Qt::KeyboardModifiers tempModifiers = modifiers;
+ Qt::KeyboardModifiers tempModifierMask = modifierMask;
+ KeyboardTranslator::States tempFlags = flags;
+ KeyboardTranslator::States tempFlagMask = flagMask;
+
+ for ( int i = 0 ; i < text.count() ; i++ )
+ {
+ const QChar& ch = text[i];
+ bool isFirstLetter = i == 0;
+ bool isLastLetter = ( i == text.count()-1 );
+ endOfItem = true;
+ if ( ch.isLetterOrNumber() )
+ {
+ endOfItem = false;
+ buffer.append(ch);
+ } else if ( isFirstLetter )
+ {
+ buffer.append(ch);
+ }
+
+ if ( (endOfItem || isLastLetter) && !buffer.isEmpty() )
+ {
+ Qt::KeyboardModifier itemModifier = Qt::NoModifier;
+ int itemKeyCode = 0;
+ KeyboardTranslator::State itemFlag = KeyboardTranslator::NoState;
+
+ if ( parseAsModifier(buffer,itemModifier) )
+ {
+ tempModifierMask |= itemModifier;
+
+ if ( isWanted )
+ tempModifiers |= itemModifier;
+ }
+ else if ( parseAsStateFlag(buffer,itemFlag) )
+ {
+ tempFlagMask |= itemFlag;
+
+ if ( isWanted )
+ tempFlags |= itemFlag;
+ }
+ else if ( parseAsKeyCode(buffer,itemKeyCode) )
+ keyCode = itemKeyCode;
+ else
+ qDebug() << "Unable to parse key binding item:" << buffer;
+
+ buffer.clear();
+ }
+
+ // check if this is a wanted / not-wanted flag and update the
+ // state ready for the next item
+ if ( ch == '+' )
+ isWanted = true;
+ else if ( ch == '-' )
+ isWanted = false;
+ }
+
+ modifiers = tempModifiers;
+ modifierMask = tempModifierMask;
+ flags = tempFlags;
+ flagMask = tempFlagMask;
+
+ return true;
+}
+
+bool KeyboardTranslatorReader::parseAsModifier(const QString& item , Qt::KeyboardModifier& modifier)
+{
+ if ( item == "shift" )
+ modifier = Qt::ShiftModifier;
+ else if ( item == "ctrl" || item == "control" )
+ modifier = Qt::ControlModifier;
+ else if ( item == "alt" )
+ modifier = Qt::AltModifier;
+ else if ( item == "meta" )
+ modifier = Qt::MetaModifier;
+ else if ( item == "keypad" )
+ modifier = Qt::KeypadModifier;
+ else
+ return false;
+
+ return true;
+}
+bool KeyboardTranslatorReader::parseAsStateFlag(const QString& item , KeyboardTranslator::State& flag)
+{
+ if ( item == "appcukeys" || item == "appcursorkeys" )
+ flag = KeyboardTranslator::CursorKeysState;
+ else if ( item == "ansi" )
+ flag = KeyboardTranslator::AnsiState;
+ else if ( item == "newline" )
+ flag = KeyboardTranslator::NewLineState;
+ else if ( item == "appscreen" )
+ flag = KeyboardTranslator::AlternateScreenState;
+ else if ( item == "anymod" || item == "anymodifier" )
+ flag = KeyboardTranslator::AnyModifierState;
+ else if ( item == "appkeypad" )
+ flag = KeyboardTranslator::ApplicationKeypadState;
+ else
+ return false;
+
+ return true;
+}
+bool KeyboardTranslatorReader::parseAsKeyCode(const QString& item , int& keyCode)
+{
+ QKeySequence sequence = QKeySequence::fromString(item);
+ if ( !sequence.isEmpty() )
+ {
+ keyCode = sequence[0];
+
+ if ( sequence.count() > 1 )
+ {
+ qDebug() << "Unhandled key codes in sequence: " << item;
+ }
+ }
+ // additional cases implemented for backwards compatibility with KDE 3
+ else if ( item == "prior" )
+ keyCode = Qt::Key_PageUp;
+ else if ( item == "next" )
+ keyCode = Qt::Key_PageDown;
+ else
+ return false;
+
+ return true;
+}
+
+QString KeyboardTranslatorReader::description() const
+{
+ return _description;
+}
+bool KeyboardTranslatorReader::hasNextEntry()
+{
+ return _hasNext;
+}
+KeyboardTranslator::Entry KeyboardTranslatorReader::createEntry( const QString& condition ,
+ const QString& result )
+{
+ QString entryString("keyboard \"temporary\"\nkey ");
+ entryString.append(condition);
+ entryString.append(" : ");
+
+ // if 'result' is the name of a command then the entry result will be that command,
+ // otherwise the result will be treated as a string to echo when the key sequence
+ // specified by 'condition' is pressed
+ KeyboardTranslator::Command command;
+ if (parseAsCommand(result,command))
+ entryString.append(result);
+ else
+ entryString.append('\"' + result + '\"');
+
+ QByteArray array = entryString.toUtf8();
+ QBuffer buffer(&array);
+ buffer.open(QIODevice::ReadOnly);
+ KeyboardTranslatorReader reader(&buffer);
+
+ KeyboardTranslator::Entry entry;
+ if ( reader.hasNextEntry() )
+ entry = reader.nextEntry();
+
+ return entry;
+}
+
+KeyboardTranslator::Entry KeyboardTranslatorReader::nextEntry()
+{
+ Q_ASSERT( _hasNext );
+ KeyboardTranslator::Entry entry = _nextEntry;
+ readNext();
+ return entry;
+}
+bool KeyboardTranslatorReader::parseError()
+{
+ return false;
+}
+QList KeyboardTranslatorReader::tokenize(const QString& line)
+{
+ QString text = line;
+
+ // remove comments
+ bool inQuotes = false;
+ int commentPos = -1;
+ for (int i=text.length()-1;i>=0;i--)
+ {
+ QChar ch = text[i];
+ if (ch == '\"')
+ inQuotes = !inQuotes;
+ else if (ch == '#' && !inQuotes)
+ commentPos = i;
+ }
+ if (commentPos != -1)
+ text.remove(commentPos,text.length());
+
+ text = text.simplified();
+
+ // title line: keyboard "title"
+ static QRegExp title("keyboard\\s+\"(.*)\"");
+ // key line: key KeySequence : "output"
+ // key line: key KeySequence : command
+ static QRegExp key("key\\s+([\\w\\+\\s\\-\\*\\.]+)\\s*:\\s*(\"(.*)\"|\\w+)");
+
+ QList list;
+ if ( text.isEmpty() )
+ {
+ return list;
+ }
+
+ if ( title.exactMatch(text) )
+ {
+ Token titleToken = { Token::TitleKeyword , QString() };
+ Token textToken = { Token::TitleText , title.capturedTexts()[1] };
+
+ list << titleToken << textToken;
+ }
+ else if ( key.exactMatch(text) )
+ {
+ Token keyToken = { Token::KeyKeyword , QString() };
+ Token sequenceToken = { Token::KeySequence , key.capturedTexts()[1].remove(' ') };
+
+ list << keyToken << sequenceToken;
+
+ if ( key.capturedTexts()[3].isEmpty() )
+ {
+ // capturedTexts()[2] is a command
+ Token commandToken = { Token::Command , key.capturedTexts()[2] };
+ list << commandToken;
+ }
+ else
+ {
+ // capturedTexts()[3] is the output string
+ Token outputToken = { Token::OutputText , key.capturedTexts()[3] };
+ list << outputToken;
+ }
+ }
+ else
+ {
+ qDebug() << "Line in keyboard translator file could not be understood:" << text;
+ }
+
+ return list;
+}
+
+QList KeyboardTranslatorManager::allTranslators()
+{
+ if ( !_haveLoadedAll )
+ {
+ findTranslators();
+ }
+
+ return _translators.keys();
+}
+
+KeyboardTranslator::Entry::Entry()
+: _keyCode(0)
+, _modifiers(Qt::NoModifier)
+, _modifierMask(Qt::NoModifier)
+, _state(NoState)
+, _stateMask(NoState)
+, _command(NoCommand)
+{
+}
+
+bool KeyboardTranslator::Entry::operator==(const Entry& rhs) const
+{
+ return _keyCode == rhs._keyCode &&
+ _modifiers == rhs._modifiers &&
+ _modifierMask == rhs._modifierMask &&
+ _state == rhs._state &&
+ _stateMask == rhs._stateMask &&
+ _command == rhs._command &&
+ _text == rhs._text;
+}
+
+bool KeyboardTranslator::Entry::matches(int keyCode ,
+ Qt::KeyboardModifiers modifiers,
+ States testState) const
+{
+ if ( _keyCode != keyCode )
+ return false;
+
+ if ( (modifiers & _modifierMask) != (_modifiers & _modifierMask) )
+ return false;
+
+ // if modifiers is non-zero, the 'any modifier' state is implicit
+ if ( modifiers != 0 )
+ testState |= AnyModifierState;
+
+ if ( (testState & _stateMask) != (_state & _stateMask) )
+ return false;
+
+ // special handling for the 'Any Modifier' state, which checks for the presence of
+ // any or no modifiers. In this context, the 'keypad' modifier does not count.
+ bool anyModifiersSet = modifiers != 0 && modifiers != Qt::KeypadModifier;
+ bool wantAnyModifier = _state & KeyboardTranslator::AnyModifierState;
+ if ( _stateMask & KeyboardTranslator::AnyModifierState )
+ {
+ if ( wantAnyModifier != anyModifiersSet )
+ return false;
+ }
+
+ return true;
+}
+QByteArray KeyboardTranslator::Entry::escapedText(bool expandWildCards,Qt::KeyboardModifiers modifiers) const
+{
+ QByteArray result(text(expandWildCards,modifiers));
+
+ for ( int i = 0 ; i < result.count() ; i++ )
+ {
+ char ch = result[i];
+ char replacement = 0;
+
+ switch ( ch )
+ {
+ case 27 : replacement = 'E'; break;
+ case 8 : replacement = 'b'; break;
+ case 12 : replacement = 'f'; break;
+ case 9 : replacement = 't'; break;
+ case 13 : replacement = 'r'; break;
+ case 10 : replacement = 'n'; break;
+ default:
+ // any character which is not printable is replaced by an equivalent
+ // \xhh escape sequence (where 'hh' are the corresponding hex digits)
+ if ( !QChar(ch).isPrint() )
+ replacement = 'x';
+ }
+
+ if ( replacement == 'x' )
+ {
+ result.replace(i,1,"\\x"+QByteArray(1,ch).toHex());
+ } else if ( replacement != 0 )
+ {
+ result.remove(i,1);
+ result.insert(i,'\\');
+ result.insert(i+1,replacement);
+ }
+ }
+
+ return result;
+}
+QByteArray KeyboardTranslator::Entry::unescape(const QByteArray& input) const
+{
+ QByteArray result(input);
+
+ for ( int i = 0 ; i < result.count()-1 ; i++ )
+ {
+
+ QByteRef ch = result[i];
+ if ( ch == '\\' )
+ {
+ char replacement[2] = {0,0};
+ int charsToRemove = 2;
+ bool escapedChar = true;
+
+ switch ( result[i+1] )
+ {
+ case 'E' : replacement[0] = 27; break;
+ case 'b' : replacement[0] = 8 ; break;
+ case 'f' : replacement[0] = 12; break;
+ case 't' : replacement[0] = 9 ; break;
+ case 'r' : replacement[0] = 13; break;
+ case 'n' : replacement[0] = 10; break;
+ case 'x' :
+ {
+ // format is \xh or \xhh where 'h' is a hexadecimal
+ // digit from 0-9 or A-F which should be replaced
+ // with the corresponding character value
+ char hexDigits[3] = {0};
+
+ if ( (i < result.count()-2) && isxdigit(result[i+2]) )
+ hexDigits[0] = result[i+2];
+ if ( (i < result.count()-3) && isxdigit(result[i+3]) )
+ hexDigits[1] = result[i+3];
+
+ unsigned charValue = 0;
+ sscanf(hexDigits,"%x",&charValue);
+
+ replacement[0] = (char)charValue;
+ charsToRemove = 2 + strlen(hexDigits);
+ }
+ break;
+ default:
+ escapedChar = false;
+ }
+
+ if ( escapedChar )
+ result.replace(i,charsToRemove,replacement);
+ }
+ }
+
+ return result;
+}
+
+void KeyboardTranslator::Entry::insertModifier( QString& item , int modifier ) const
+{
+ if ( !(modifier & _modifierMask) )
+ return;
+
+ if ( modifier & _modifiers )
+ item += '+';
+ else
+ item += '-';
+
+ if ( modifier == Qt::ShiftModifier )
+ item += "Shift";
+ else if ( modifier == Qt::ControlModifier )
+ item += "Ctrl";
+ else if ( modifier == Qt::AltModifier )
+ item += "Alt";
+ else if ( modifier == Qt::MetaModifier )
+ item += "Meta";
+ else if ( modifier == Qt::KeypadModifier )
+ item += "KeyPad";
+}
+void KeyboardTranslator::Entry::insertState( QString& item , int state ) const
+{
+ if ( !(state & _stateMask) )
+ return;
+
+ if ( state & _state )
+ item += '+' ;
+ else
+ item += '-' ;
+
+ if ( state == KeyboardTranslator::AlternateScreenState )
+ item += "AppScreen";
+ else if ( state == KeyboardTranslator::NewLineState )
+ item += "NewLine";
+ else if ( state == KeyboardTranslator::AnsiState )
+ item += "Ansi";
+ else if ( state == KeyboardTranslator::CursorKeysState )
+ item += "AppCursorKeys";
+ else if ( state == KeyboardTranslator::AnyModifierState )
+ item += "AnyModifier";
+ else if ( state == KeyboardTranslator::ApplicationKeypadState )
+ item += "AppKeypad";
+}
+QString KeyboardTranslator::Entry::resultToString(bool expandWildCards,Qt::KeyboardModifiers modifiers) const
+{
+ if ( !_text.isEmpty() )
+ return escapedText(expandWildCards,modifiers);
+ else if ( _command == EraseCommand )
+ return "Erase";
+ else if ( _command == ScrollPageUpCommand )
+ return "ScrollPageUp";
+ else if ( _command == ScrollPageDownCommand )
+ return "ScrollPageDown";
+ else if ( _command == ScrollLineUpCommand )
+ return "ScrollLineUp";
+ else if ( _command == ScrollLineDownCommand )
+ return "ScrollLineDown";
+ else if ( _command == ScrollLockCommand )
+ return "ScrollLock";
+
+ return QString();
+}
+QString KeyboardTranslator::Entry::conditionToString() const
+{
+ QString result = QKeySequence(_keyCode).toString();
+
+ insertModifier( result , Qt::ShiftModifier );
+ insertModifier( result , Qt::ControlModifier );
+ insertModifier( result , Qt::AltModifier );
+ insertModifier( result , Qt::MetaModifier );
+ insertModifier( result , Qt::KeypadModifier );
+
+ insertState( result , KeyboardTranslator::AlternateScreenState );
+ insertState( result , KeyboardTranslator::NewLineState );
+ insertState( result , KeyboardTranslator::AnsiState );
+ insertState( result , KeyboardTranslator::CursorKeysState );
+ insertState( result , KeyboardTranslator::AnyModifierState );
+ insertState( result , KeyboardTranslator::ApplicationKeypadState );
+
+ return result;
+}
+
+KeyboardTranslator::KeyboardTranslator(const QString& name)
+: _name(name)
+{
+}
+
+void KeyboardTranslator::setDescription(const QString& description)
+{
+ _description = description;
+}
+QString KeyboardTranslator::description() const
+{
+ return _description;
+}
+void KeyboardTranslator::setName(const QString& name)
+{
+ _name = name;
+}
+QString KeyboardTranslator::name() const
+{
+ return _name;
+}
+
+QList KeyboardTranslator::entries() const
+{
+ return _entries.values();
+}
+
+void KeyboardTranslator::addEntry(const Entry& entry)
+{
+ const int keyCode = entry.keyCode();
+ _entries.insert(keyCode,entry);
+}
+void KeyboardTranslator::replaceEntry(const Entry& existing , const Entry& replacement)
+{
+ if ( !existing.isNull() )
+ _entries.remove(existing.keyCode(),existing);
+ _entries.insert(replacement.keyCode(),replacement);
+}
+void KeyboardTranslator::removeEntry(const Entry& entry)
+{
+ _entries.remove(entry.keyCode(),entry);
+}
+KeyboardTranslator::Entry KeyboardTranslator::findEntry(int keyCode, Qt::KeyboardModifiers modifiers, States state) const
+{
+ foreach(const Entry& entry, _entries.values(keyCode))
+ {
+ if ( entry.matches(keyCode,modifiers,state) )
+ return entry;
+ }
+ return Entry(); // entry not found
+}
+void KeyboardTranslatorManager::addTranslator(KeyboardTranslator* translator)
+{
+ _translators.insert(translator->name(),translator);
+
+ if ( !saveTranslator(translator) )
+ qDebug() << "Unable to save translator" << translator->name()
+ << "to disk.";
+}
+bool KeyboardTranslatorManager::deleteTranslator(const QString& name)
+{
+ Q_ASSERT( _translators.contains(name) );
+
+ // locate and delete
+ QString path = findTranslatorPath(name);
+ if ( QFile::remove(path) )
+ {
+ _translators.remove(name);
+ return true;
+ }
+ else
+ {
+ qDebug() << "Failed to remove translator - " << path;
+ return false;
+ }
+}
+//K_GLOBAL_STATIC( KeyboardTranslatorManager , theKeyboardTranslatorManager )
+KeyboardTranslatorManager* KeyboardTranslatorManager::theKeyboardTranslatorManager = 0;
+KeyboardTranslatorManager* KeyboardTranslatorManager::instance()
+{
+ if (! theKeyboardTranslatorManager)
+ theKeyboardTranslatorManager = new KeyboardTranslatorManager();
+ return theKeyboardTranslatorManager;
+}
diff --git a/konsole-qml-plugin/src/KeyboardTranslator.h b/konsole-qml-plugin/src/KeyboardTranslator.h
new file mode 100644
index 0000000..57e7dd4
--- /dev/null
+++ b/konsole-qml-plugin/src/KeyboardTranslator.h
@@ -0,0 +1,584 @@
+/*
+ This source file is part of Konsole, a terminal emulator.
+
+ Copyright 2007-2008 by Robert Knight
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+*/
+
+#ifndef KEYBOARDTRANSLATOR_H
+#define KEYBOARDTRANSLATOR_H
+
+// Qt
+#include
+#include
+#include
+#include
+#include
+
+// Konsole
+//#include "konsole_export.h"
+#define KONSOLEPRIVATE_EXPORT
+
+class QIODevice;
+class QTextStream;
+
+
+/**
+ * A convertor which maps between key sequences pressed by the user and the
+ * character strings which should be sent to the terminal and commands
+ * which should be invoked when those character sequences are pressed.
+ *
+ * Konsole supports multiple keyboard translators, allowing the user to
+ * specify the character sequences which are sent to the terminal
+ * when particular key sequences are pressed.
+ *
+ * A key sequence is defined as a key code, associated keyboard modifiers
+ * (Shift,Ctrl,Alt,Meta etc.) and state flags which indicate the state
+ * which the terminal must be in for the key sequence to apply.
+ */
+class KeyboardTranslator
+{
+public:
+ /**
+ * The meaning of a particular key sequence may depend upon the state which
+ * the terminal emulation is in. Therefore findEntry() may return a different
+ * Entry depending upon the state flags supplied.
+ *
+ * This enum describes the states which may be associated with with a particular
+ * entry in the keyboard translation entry.
+ */
+ enum State
+ {
+ /** Indicates that no special state is active */
+ NoState = 0,
+ /**
+ * TODO More documentation
+ */
+ NewLineState = 1,
+ /**
+ * Indicates that the terminal is in 'Ansi' mode.
+ * TODO: More documentation
+ */
+ AnsiState = 2,
+ /**
+ * TODO More documentation
+ */
+ CursorKeysState = 4,
+ /**
+ * Indicates that the alternate screen ( typically used by interactive programs
+ * such as screen or vim ) is active
+ */
+ AlternateScreenState = 8,
+ /** Indicates that any of the modifier keys is active. */
+ AnyModifierState = 16,
+ /** Indicates that the numpad is in application mode. */
+ ApplicationKeypadState = 32
+ };
+ Q_DECLARE_FLAGS(States,State)
+
+ /**
+ * This enum describes commands which are associated with particular key sequences.
+ */
+ enum Command
+ {
+ /** Indicates that no command is associated with this command sequence */
+ NoCommand = 0,
+ /** TODO Document me */
+ SendCommand = 1,
+ /** Scroll the terminal display up one page */
+ ScrollPageUpCommand = 2,
+ /** Scroll the terminal display down one page */
+ ScrollPageDownCommand = 4,
+ /** Scroll the terminal display up one line */
+ ScrollLineUpCommand = 8,
+ /** Scroll the terminal display down one line */
+ ScrollLineDownCommand = 16,
+ /** Toggles scroll lock mode */
+ ScrollLockCommand = 32,
+ /** Echos the operating system specific erase character. */
+ EraseCommand = 64
+ };
+ Q_DECLARE_FLAGS(Commands,Command)
+
+ /**
+ * Represents an association between a key sequence pressed by the user
+ * and the character sequence and commands associated with it for a particular
+ * KeyboardTranslator.
+ */
+ class Entry
+ {
+ public:
+ /**
+ * Constructs a new entry for a keyboard translator.
+ */
+ Entry();
+
+ /**
+ * Returns true if this entry is null.
+ * This is true for newly constructed entries which have no properties set.
+ */
+ bool isNull() const;
+
+ /** Returns the commands associated with this entry */
+ Command command() const;
+ /** Sets the command associated with this entry. */
+ void setCommand(Command command);
+
+ /**
+ * Returns the character sequence associated with this entry, optionally replacing
+ * wildcard '*' characters with numbers to indicate the keyboard modifiers being pressed.
+ *
+ * TODO: The numbers used to replace '*' characters are taken from the Konsole/KDE 3 code.
+ * Document them.
+ *
+ * @param expandWildCards Specifies whether wild cards (occurrences of the '*' character) in
+ * the entry should be replaced with a number to indicate the modifier keys being pressed.
+ *
+ * @param modifiers The keyboard modifiers being pressed.
+ */
+ QByteArray text(bool expandWildCards = false,
+ Qt::KeyboardModifiers modifiers = Qt::NoModifier) const;
+
+ /** Sets the character sequence associated with this entry */
+ void setText(const QByteArray& text);
+
+ /**
+ * Returns the character sequence associated with this entry,
+ * with any non-printable characters replaced with escape sequences.
+ *
+ * eg. \\E for Escape, \\t for tab, \\n for new line.
+ *
+ * @param expandWildCards See text()
+ * @param modifiers See text()
+ */
+ QByteArray escapedText(bool expandWildCards = false,
+ Qt::KeyboardModifiers modifiers = Qt::NoModifier) const;
+
+ /** Returns the character code ( from the Qt::Key enum ) associated with this entry */
+ int keyCode() const;
+ /** Sets the character code associated with this entry */
+ void setKeyCode(int keyCode);
+
+ /**
+ * Returns a bitwise-OR of the enabled keyboard modifiers associated with this entry.
+ * If a modifier is set in modifierMask() but not in modifiers(), this means that the entry
+ * only matches when that modifier is NOT pressed.
+ *
+ * If a modifier is not set in modifierMask() then the entry matches whether the modifier
+ * is pressed or not.
+ */
+ Qt::KeyboardModifiers modifiers() const;
+
+ /** Returns the keyboard modifiers which are valid in this entry. See modifiers() */
+ Qt::KeyboardModifiers modifierMask() const;
+
+ /** See modifiers() */
+ void setModifiers( Qt::KeyboardModifiers modifiers );
+ /** See modifierMask() and modifiers() */
+ void setModifierMask( Qt::KeyboardModifiers modifiers );
+
+ /**
+ * Returns a bitwise-OR of the enabled state flags associated with this entry.
+ * If flag is set in stateMask() but not in state(), this means that the entry only
+ * matches when the terminal is NOT in that state.
+ *
+ * If a state is not set in stateMask() then the entry matches whether the terminal
+ * is in that state or not.
+ */
+ States state() const;
+
+ /** Returns the state flags which are valid in this entry. See state() */
+ States stateMask() const;
+
+ /** See state() */
+ void setState( States state );
+ /** See stateMask() */
+ void setStateMask( States mask );
+
+ /**
+ * Returns the key code and modifiers associated with this entry
+ * as a QKeySequence
+ */
+ //QKeySequence keySequence() const;
+
+ /**
+ * Returns this entry's conditions ( ie. its key code, modifier and state criteria )
+ * as a string.
+ */
+ QString conditionToString() const;
+
+ /**
+ * Returns this entry's result ( ie. its command or character sequence )
+ * as a string.
+ *
+ * @param expandWildCards See text()
+ * @param modifiers See text()
+ */
+ QString resultToString(bool expandWildCards = false,
+ Qt::KeyboardModifiers modifiers = Qt::NoModifier) const;
+
+ /**
+ * Returns true if this entry matches the given key sequence, specified
+ * as a combination of @p keyCode , @p modifiers and @p state.
+ */
+ bool matches( int keyCode ,
+ Qt::KeyboardModifiers modifiers ,
+ States flags ) const;
+
+ bool operator==(const Entry& rhs) const;
+
+ private:
+ void insertModifier( QString& item , int modifier ) const;
+ void insertState( QString& item , int state ) const;
+ QByteArray unescape(const QByteArray& text) const;
+
+ int _keyCode;
+ Qt::KeyboardModifiers _modifiers;
+ Qt::KeyboardModifiers _modifierMask;
+ States _state;
+ States _stateMask;
+
+ Command _command;
+ QByteArray _text;
+ };
+
+ /** Constructs a new keyboard translator with the given @p name */
+ KeyboardTranslator(const QString& name);
+
+ //KeyboardTranslator(const KeyboardTranslator& other);
+
+ /** Returns the name of this keyboard translator */
+ QString name() const;
+
+ /** Sets the name of this keyboard translator */
+ void setName(const QString& name);
+
+ /** Returns the descriptive name of this keyboard translator */
+ QString description() const;
+
+ /** Sets the descriptive name of this keyboard translator */
+ void setDescription(const QString& description);
+
+ /**
+ * Looks for an entry in this keyboard translator which matches the given
+ * key code, keyboard modifiers and state flags.
+ *
+ * Returns the matching entry if found or a null Entry otherwise ( ie.
+ * entry.isNull() will return true )
+ *
+ * @param keyCode A key code from the Qt::Key enum
+ * @param modifiers A combination of modifiers
+ * @param state Optional flags which specify the current state of the terminal
+ */
+ Entry findEntry(int keyCode ,
+ Qt::KeyboardModifiers modifiers ,
+ States state = NoState) const;
+
+ /**
+ * Adds an entry to this keyboard translator's table. Entries can be looked up according
+ * to their key sequence using findEntry()
+ */
+ void addEntry(const Entry& entry);
+
+ /**
+ * Replaces an entry in the translator. If the @p existing entry is null,
+ * then this is equivalent to calling addEntry(@p replacement)
+ */
+ void replaceEntry(const Entry& existing , const Entry& replacement);
+
+ /**
+ * Removes an entry from the table.
+ */
+ void removeEntry(const Entry& entry);
+
+ /** Returns a list of all entries in the translator. */
+ QList entries() const;
+
+private:
+
+ QMultiHash _entries; // entries in this keyboard translation,
+ // entries are indexed according to
+ // their keycode
+ QString _name;
+ QString _description;
+};
+Q_DECLARE_OPERATORS_FOR_FLAGS(KeyboardTranslator::States)
+Q_DECLARE_OPERATORS_FOR_FLAGS(KeyboardTranslator::Commands)
+
+/**
+ * Parses the contents of a Keyboard Translator (.keytab) file and
+ * returns the entries found in it.
+ *
+ * Usage example:
+ *
+ * @code
+ * QFile source( "/path/to/keytab" );
+ * source.open( QIODevice::ReadOnly );
+ *
+ * KeyboardTranslator* translator = new KeyboardTranslator( "name-of-translator" );
+ *
+ * KeyboardTranslatorReader reader(source);
+ * while ( reader.hasNextEntry() )
+ * translator->addEntry(reader.nextEntry());
+ *
+ * source.close();
+ *
+ * if ( !reader.parseError() )
+ * {
+ * // parsing succeeded, do something with the translator
+ * }
+ * else
+ * {
+ * // parsing failed
+ * }
+ * @endcode
+ */
+class KeyboardTranslatorReader
+{
+public:
+ /** Constructs a new reader which parses the given @p source */
+ KeyboardTranslatorReader( QIODevice* source );
+
+ /**
+ * Returns the description text.
+ * TODO: More documentation
+ */
+ QString description() const;
+
+ /** Returns true if there is another entry in the source stream */
+ bool hasNextEntry();
+ /** Returns the next entry found in the source stream */
+ KeyboardTranslator::Entry nextEntry();
+
+ /**
+ * Returns true if an error occurred whilst parsing the input or
+ * false if no error occurred.
+ */
+ bool parseError();
+
+ /**
+ * Parses a condition and result string for a translator entry
+ * and produces a keyboard translator entry.
+ *
+ * The condition and result strings are in the same format as in
+ */
+ static KeyboardTranslator::Entry createEntry( const QString& condition ,
+ const QString& result );
+private:
+ struct Token
+ {
+ enum Type
+ {
+ TitleKeyword,
+ TitleText,
+ KeyKeyword,
+ KeySequence,
+ Command,
+ OutputText
+ };
+ Type type;
+ QString text;
+ };
+ QList tokenize(const QString&);
+ void readNext();
+ bool decodeSequence(const QString& ,
+ int& keyCode,
+ Qt::KeyboardModifiers& modifiers,
+ Qt::KeyboardModifiers& modifierMask,
+ KeyboardTranslator::States& state,
+ KeyboardTranslator::States& stateFlags);
+
+ static bool parseAsModifier(const QString& item , Qt::KeyboardModifier& modifier);
+ static bool parseAsStateFlag(const QString& item , KeyboardTranslator::State& state);
+ static bool parseAsKeyCode(const QString& item , int& keyCode);
+ static bool parseAsCommand(const QString& text , KeyboardTranslator::Command& command);
+
+ QIODevice* _source;
+ QString _description;
+ KeyboardTranslator::Entry _nextEntry;
+ bool _hasNext;
+};
+
+/** Writes a keyboard translation to disk. */
+class KeyboardTranslatorWriter
+{
+public:
+ /**
+ * Constructs a new writer which saves data into @p destination.
+ * The caller is responsible for closing the device when writing is complete.
+ */
+ KeyboardTranslatorWriter(QIODevice* destination);
+ ~KeyboardTranslatorWriter();
+
+ /**
+ * Writes the header for the keyboard translator.
+ * @param description Description of the keyboard translator.
+ */
+ void writeHeader( const QString& description );
+ /** Writes a translator entry. */
+ void writeEntry( const KeyboardTranslator::Entry& entry );
+
+private:
+ QIODevice* _destination;
+ QTextStream* _writer;
+};
+
+/**
+ * Manages the keyboard translations available for use by terminal sessions,
+ * see KeyboardTranslator.
+ */
+class KONSOLEPRIVATE_EXPORT KeyboardTranslatorManager
+{
+public:
+ /**
+ * Constructs a new KeyboardTranslatorManager and loads the list of
+ * available keyboard translations.
+ *
+ * The keyboard translations themselves are not loaded until they are
+ * first requested via a call to findTranslator()
+ */
+ KeyboardTranslatorManager();
+ ~KeyboardTranslatorManager();
+
+ /**
+ * Adds a new translator. If a translator with the same name
+ * already exists, it will be replaced by the new translator.
+ *
+ * TODO: More documentation.
+ */
+ void addTranslator(KeyboardTranslator* translator);
+
+ /**
+ * Deletes a translator. Returns true on successful deletion or false otherwise.
+ *
+ * TODO: More documentation
+ */
+ bool deleteTranslator(const QString& name);
+
+ /** Returns the default translator for Konsole. */
+ const KeyboardTranslator* defaultTranslator();
+
+ /**
+ * Returns the keyboard translator with the given name or 0 if no translator
+ * with that name exists.
+ *
+ * The first time that a translator with a particular name is requested,
+ * the on-disk .keyboard file is loaded and parsed.
+ */
+ const KeyboardTranslator* findTranslator(const QString& name);
+ /**
+ * Returns a list of the names of available keyboard translators.
+ *
+ * The first time this is called, a search for available
+ * translators is started.
+ */
+ QList allTranslators();
+
+ /** Returns the global KeyboardTranslatorManager instance. */
+ static KeyboardTranslatorManager* instance();
+
+private:
+ static const QByteArray defaultTranslatorText;
+
+ void findTranslators(); // locate the available translators
+ KeyboardTranslator* loadTranslator(const QString& name); // loads the translator
+ // with the given name
+ KeyboardTranslator* loadTranslator(QIODevice* device,const QString& name);
+
+ bool saveTranslator(const KeyboardTranslator* translator);
+ QString findTranslatorPath(const QString& name);
+
+ QHash _translators; // maps translator-name -> KeyboardTranslator
+ // instance
+ bool _haveLoadedAll;
+
+ static KeyboardTranslatorManager * theKeyboardTranslatorManager;
+};
+
+inline int KeyboardTranslator::Entry::keyCode() const { return _keyCode; }
+inline void KeyboardTranslator::Entry::setKeyCode(int keyCode) { _keyCode = keyCode; }
+
+inline void KeyboardTranslator::Entry::setModifiers( Qt::KeyboardModifiers modifier )
+{
+ _modifiers = modifier;
+}
+inline Qt::KeyboardModifiers KeyboardTranslator::Entry::modifiers() const { return _modifiers; }
+
+inline void KeyboardTranslator::Entry::setModifierMask( Qt::KeyboardModifiers mask )
+{
+ _modifierMask = mask;
+}
+inline Qt::KeyboardModifiers KeyboardTranslator::Entry::modifierMask() const { return _modifierMask; }
+
+inline bool KeyboardTranslator::Entry::isNull() const
+{
+ return ( *this == Entry() );
+}
+
+inline void KeyboardTranslator::Entry::setCommand( Command command )
+{
+ _command = command;
+}
+inline KeyboardTranslator::Command KeyboardTranslator::Entry::command() const { return _command; }
+
+inline void KeyboardTranslator::Entry::setText( const QByteArray& text )
+{
+ _text = unescape(text);
+}
+inline int oneOrZero(int value)
+{
+ return value ? 1 : 0;
+}
+inline QByteArray KeyboardTranslator::Entry::text(bool expandWildCards,Qt::KeyboardModifiers modifiers) const
+{
+ QByteArray expandedText = _text;
+
+ if (expandWildCards)
+ {
+ int modifierValue = 1;
+ modifierValue += oneOrZero(modifiers & Qt::ShiftModifier);
+ modifierValue += oneOrZero(modifiers & Qt::AltModifier) << 1;
+ modifierValue += oneOrZero(modifiers & Qt::ControlModifier) << 2;
+
+ for (int i=0;i<_text.length();i++)
+ {
+ if (expandedText[i] == '*')
+ expandedText[i] = '0' + modifierValue;
+ }
+ }
+
+ return expandedText;
+}
+
+inline void KeyboardTranslator::Entry::setState( States state )
+{
+ _state = state;
+}
+inline KeyboardTranslator::States KeyboardTranslator::Entry::state() const { return _state; }
+
+inline void KeyboardTranslator::Entry::setStateMask( States stateMask )
+{
+ _stateMask = stateMask;
+}
+inline KeyboardTranslator::States KeyboardTranslator::Entry::stateMask() const { return _stateMask; }
+
+
+Q_DECLARE_METATYPE(KeyboardTranslator::Entry)
+Q_DECLARE_METATYPE(const KeyboardTranslator*)
+
+#endif // KEYBOARDTRANSLATOR_H
+
diff --git a/konsole-qml-plugin/src/LineFont.h b/konsole-qml-plugin/src/LineFont.h
new file mode 100644
index 0000000..9c080ea
--- /dev/null
+++ b/konsole-qml-plugin/src/LineFont.h
@@ -0,0 +1,21 @@
+// WARNING: Autogenerated by "fontembedder ./linefont.src".
+// You probably do not want to hand-edit this!
+
+static const quint32 LineChars[] = {
+ 0x00007c00, 0x000fffe0, 0x00421084, 0x00e739ce, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00427000, 0x004e7380, 0x00e77800, 0x00ef7bc0,
+ 0x00421c00, 0x00439ce0, 0x00e73c00, 0x00e7bde0, 0x00007084, 0x000e7384, 0x000079ce, 0x000f7bce,
+ 0x00001c84, 0x00039ce4, 0x00003dce, 0x0007bdee, 0x00427084, 0x004e7384, 0x004279ce, 0x00e77884,
+ 0x00e779ce, 0x004f7bce, 0x00ef7bc4, 0x00ef7bce, 0x00421c84, 0x00439ce4, 0x00423dce, 0x00e73c84,
+ 0x00e73dce, 0x0047bdee, 0x00e7bde4, 0x00e7bdee, 0x00427c00, 0x0043fce0, 0x004e7f80, 0x004fffe0,
+ 0x004fffe0, 0x00e7fde0, 0x006f7fc0, 0x00efffe0, 0x00007c84, 0x0003fce4, 0x000e7f84, 0x000fffe4,
+ 0x00007dce, 0x0007fdee, 0x000f7fce, 0x000fffee, 0x00427c84, 0x0043fce4, 0x004e7f84, 0x004fffe4,
+ 0x00427dce, 0x00e77c84, 0x00e77dce, 0x0047fdee, 0x004e7fce, 0x00e7fde4, 0x00ef7f84, 0x004fffee,
+ 0x00efffe4, 0x00e7fdee, 0x00ef7fce, 0x00efffee, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x000f83e0, 0x00a5294a, 0x004e1380, 0x00a57800, 0x00ad0bc0, 0x004390e0, 0x00a53c00, 0x00a5a1e0,
+ 0x000e1384, 0x0000794a, 0x000f0b4a, 0x000390e4, 0x00003d4a, 0x0007a16a, 0x004e1384, 0x00a5694a,
+ 0x00ad2b4a, 0x004390e4, 0x00a52d4a, 0x00a5a16a, 0x004f83e0, 0x00a57c00, 0x00ad83e0, 0x000f83e4,
+ 0x00007d4a, 0x000f836a, 0x004f93e4, 0x00a57d4a, 0x00ad836a, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00001c00, 0x00001084, 0x00007000, 0x00421000,
+ 0x00039ce0, 0x000039ce, 0x000e7380, 0x00e73800, 0x000e7f80, 0x00e73884, 0x0003fce0, 0x004239ce
+};
diff --git a/konsole-qml-plugin/src/LineFont.src b/konsole-qml-plugin/src/LineFont.src
new file mode 100644
index 0000000..6835253
--- /dev/null
+++ b/konsole-qml-plugin/src/LineFont.src
@@ -0,0 +1,786 @@
+#2500: single horizontal line
+2500
+
+
+-----
+
+
+
+#2501: triple horizontal line
+2501
+
+-----
+-----
+-----
+
+
+#2502: single vertical line
+2502
+ |
+ |
+ |
+ |
+ |
+
+#2503: triple vertical line
+2503
+ |||
+ |||
+ |||
+ |||
+ |||
+
+#2504-250B are dashed - not handled
+
+#250C: top-left corner (lines on bottom + right)
+250C
+
+
+ .--
+ |
+ |
+
+#250D: as above, but top line triple-width
+250D
+
+ .--
+ .--
+ |--
+ |
+
+#250E: now the vert line triple-width
+250E
+
+
+ ..--
+ |||
+ |||
+
+#250F: and now both lines triple-width
+250F
+
+ .___
+ |.--
+ ||._
+ |||
+
+#2510: top-right corner
+2510
+
+
+--.
+ |
+ |
+
+2511
+
+==.
+==.
+==|
+ |
+
+2512
+
+
+==..
+ |||
+ |||
+
+2513
+
+===.
+==.|
+=.||
+ |||
+
+#2514: bottom-left corner
+2514
+ |
+ |
+ .==
+
+
+
+2515
+ |
+ |==
+ |==
+ ===
+
+
+
+2516
+ |||
+ |||
+ |.==
+
+
+
+2517
+ |||
+ ||.=
+ |.==
+ .===
+
+
+#2518: bottm-right corner
+2518
+ |
+ |
+==.
+
+
+
+2519
+ |
+==|
+==|
+===
+
+
+
+251A
+ |||
+ |||
+====
+
+
+
+251B
+ |||
+=.||
+==.|
+===.
+
+
+#251C: Join of vertical line and one from the right
+251C
+ |
+ |
+ |==
+ |
+ |
+
+251D
+ |
+ |==
+ |==
+ |==
+ |
+
+251E
+ |||
+ |||
+ ||==
+ |
+ |
+
+251F
+ |
+ |
+ ||==
+ |||
+ |||
+
+
+2520
+ |||
+ |||
+ ||==
+ |||
+ |||
+
+2521
+ |||
+ |||=
+ ||==
+ .|==
+ |
+
+2522
+ |
+ .|==
+ ||==
+ |||=
+ |||
+
+2523
+ |||
+ ||.=
+ ||==
+ ||.=
+ |||
+
+#2524: Join of vertical line and one from the left
+2524
+ |
+ |
+==|
+ |
+ |
+
+2525
+ |
+==|
+==|
+==|
+ |
+
+2526
+ |||
+ |||
+==+|
+ |
+ |
+
+2527
+ |
+ |
+==+|
+ |||
+ |||
+
+2528
+ |||
+ |||
+==+|
+ |||
+ |||
+
+2529
+ |||
+=+||
+==+|
+===+
+ |
+
+252A
+ |
+=+||
+==+|
+===+
+ |||
+
+252B
+ |||
+=+||
+==+|
+=+||
+ |||
+
+#252C: horizontal line joined to from below
+252C
+
+
+=====
+ |
+ |
+
+252D
+
+===
+==|==
+==|
+ |
+
+252E
+
+ ===
+==|==
+ |==
+ |
+
+252F
+
+==+==
+==|==
+==|==
+ |
+
+2530
+
+=====
+=====
+==|==
+ |
+
+2531
+
+===|
+==||=
+=|||
+ |||
+
+2532
+
+ |===
+=||==
+ ||==
+ ||
+
+2533
+
+=====
+==|==
+=+|+=
+ |||
+
+#2534: bottom line, connected to from top
+2534
+ |
+ |
+=====
+
+
+
+2535
+ |
+==|
+=====
+===
+
+
+2536
+ |
+ |==
+=====
+ ===
+
+
+2537
+ |
+==|==
+=====
+=====
+
+
+2538
+ |||
+ |||
+=====
+
+
+
+2539
+ |||
+==||
+=====
+===|
+
+
+
+253A
+ |||
+ ||==
+=|===
+ |===
+
+
+253B
+ |||
+==|==
+=====
+=====
+
+
+#253C: vertical + horizontal lines intersecting
+253C
+ |
+ |
+=====
+ |
+ |
+
+253D
+ |
+==|
+=====
+==|
+ |
+
+253E
+ |
+ |==
+=====
+ |==
+ |
+
+253F
+ |
+==|==
+=====
+==|==
+ |
+
+2540
+ |||
+ |||
+=====
+ |
+ |
+
+2541
+ |
+ |
+=====
+ |||
+ |||
+
+2542
+ |||
+ |||
+=====
+ |||
+ |||
+
+2543
+ |||
+=|||
+=====
+==|+
+ |
+
+2544
+ |||
+ ||==
+=====
+ |==
+ |
+
+2545
+ |
+==|+
+=====
+=|||
+ |||
+
+2546
+ |
+ |==
+=====
+ ||==
+ |||
+
+2547
+ |||
+=|||=
+=====
+=|||=
+ |
+
+2548
+ |
+=|||=
+=====
+=|||=
+ |||
+
+2549
+ |||
+=|||
+=====
+=|||
+ |||
+
+254A
+ |||
+ |||=
+=====
+ |||=
+ |||
+
+254B
+ |||
+=|||=
+=====
+=|||=
+ |||
+
+#254C-254F are dashed
+2550
+
+_____
+
+_____
+
+
+2551
+ | |
+ | |
+ | |
+ | |
+ | |
+
+2552
+
+ |--
+ |
+ |--
+ |
+
+2553
+
+
+ ----
+ | |
+ | |
+
+2554
+
+ +---
+ |
+ + +-
+ | |
+
+2555
+
+--+
+ |
+--+
+ |
+
+2556
+
+
+-+-+
+ | |
+ | |
+
+2557
+
+---+
+ |
+-+ |
+ | |
+
+2558
+ |
+ +--
+ |
+ +--
+
+2559
+ | |
+ | |
+ +-+-
+
+
+
+255A
+ | |
+ | +-
+ |
+ +---
+
+
+255B
+ |
+--+
+ |
+--+
+
+
+255C
+ | |
+ | |
+-+-+
+
+
+255D
+ | |
+-+ |
+ |
+---+
+
+
+255E
+ |
+ +--
+ |
+ +--
+ |
+
+255F
+ | |
+ | |
+ | +-
+ | |
+ | |
+
+2560
+ | |
+ | +-
+ | |
+ | +-
+ | |
+
+2561
+ |
+--+
+ |
+--+
+ |
+
+2562
+ | |
+ | |
+-+ +
+ | |
+ | |
+
+2563
+ | |
+-+ |
+ |
+-+ |
+ | |
+
+2564
+
+-----
+
+--+--
+ |
+
+2565
+
+
+-+-+-
+ | |
+ | |
+
+2566
+
+-----
+
+-+ +-
+ | |
+
+2567
+ |
+--+--
+
+-----
+
+
+2568
+ | |
+ | |
+-+-+-
+
+
+
+2569
+ | |
+-+ +-
+
+-----
+
+
+256A
+ |
+--+--
+ |
+--+--
+ |
+
+256B
+ | |
+ | |
+-+-+-
+ | |
+ | |
+
+256C
+ | |
+-+ +-
+
+-+ +-
+ | |
+
+#256F-2570 are curly,
+#2571-2573 are slashes and X
+
+2574
+
+
+___
+
+
+
+2575
+ |
+ |
+ |
+
+
+
+2576
+
+
+ ___
+
+
+
+2577
+
+
+ |
+ |
+ |
+
+2578
+
+___
+___
+___
+
+
+2579
+ |||
+ |||
+ |||
+
+
+
+257A
+
+ ___
+ ___
+ ___
+
+
+257B
+
+
+ |||
+ |||
+ |||
+
+257C
+
+ ___
+_____
+ ___
+
+
+257D
+ |
+ |
+ |||
+ |||
+ |||
+
+257E
+
+___
+_____
+___
+
+
+257F
+ |||
+ |||
+ |||
+ |
+ |
diff --git a/konsole-qml-plugin/src/Pty.cpp b/konsole-qml-plugin/src/Pty.cpp
new file mode 100644
index 0000000..d36585b
--- /dev/null
+++ b/konsole-qml-plugin/src/Pty.cpp
@@ -0,0 +1,310 @@
+/*
+ * This file is a part of QTerminal - http://gitorious.org/qterminal
+ *
+ * This file was un-linked from KDE and modified
+ * by Maxim Bourmistrov
+ *
+ */
+
+/*
+ This file is part of Konsole, an X terminal.
+ Copyright 1997,1998 by Lars Doelle
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+*/
+
+// Own
+#include "Pty.h"
+
+// System
+#include
+#include
+#include
+#include
+#include
+#include
+
+// Qt
+#include
+
+#include "kpty.h"
+#include "kptydevice.h"
+
+
+void Pty::setWindowSize(int lines, int cols)
+{
+ _windowColumns = cols;
+ _windowLines = lines;
+
+ if (pty()->masterFd() >= 0)
+ pty()->setWinSize(lines, cols);
+}
+QSize Pty::windowSize() const
+{
+ return QSize(_windowColumns,_windowLines);
+}
+
+void Pty::setFlowControlEnabled(bool enable)
+{
+ _xonXoff = enable;
+
+ if (pty()->masterFd() >= 0)
+ {
+ struct ::termios ttmode;
+ pty()->tcGetAttr(&ttmode);
+ if (!enable)
+ ttmode.c_iflag &= ~(IXOFF | IXON);
+ else
+ ttmode.c_iflag |= (IXOFF | IXON);
+ if (!pty()->tcSetAttr(&ttmode))
+ qWarning() << "Unable to set terminal attributes.";
+ }
+}
+bool Pty::flowControlEnabled() const
+{
+ if (pty()->masterFd() >= 0)
+ {
+ struct ::termios ttmode;
+ pty()->tcGetAttr(&ttmode);
+ return ttmode.c_iflag & IXOFF &&
+ ttmode.c_iflag & IXON;
+ }
+ qWarning() << "Unable to get flow control status, terminal not connected.";
+ return false;
+}
+
+void Pty::setUtf8Mode(bool enable)
+{
+#ifdef IUTF8 // XXX not a reasonable place to check it.
+ _utf8 = enable;
+
+ if (pty()->masterFd() >= 0)
+ {
+ struct ::termios ttmode;
+ pty()->tcGetAttr(&ttmode);
+ if (!enable)
+ ttmode.c_iflag &= ~IUTF8;
+ else
+ ttmode.c_iflag |= IUTF8;
+ if (!pty()->tcSetAttr(&ttmode))
+ qWarning() << "Unable to set terminal attributes.";
+ }
+#endif
+}
+
+void Pty::setErase(char erase)
+{
+ _eraseChar = erase;
+
+ if (pty()->masterFd() >= 0)
+ {
+ struct ::termios ttmode;
+ pty()->tcGetAttr(&ttmode);
+ ttmode.c_cc[VERASE] = erase;
+ if (!pty()->tcSetAttr(&ttmode))
+ qWarning() << "Unable to set terminal attributes.";
+ }
+}
+
+char Pty::erase() const
+{
+ if (pty()->masterFd() >= 0)
+ {
+ struct ::termios ttyAttributes;
+ pty()->tcGetAttr(&ttyAttributes);
+ return ttyAttributes.c_cc[VERASE];
+ }
+
+ return _eraseChar;
+}
+
+void Pty::addEnvironmentVariables(const QStringList& environment)
+{
+ QListIterator iter(environment);
+ while (iter.hasNext())
+ {
+ QString pair = iter.next();
+
+ // split on the first '=' character
+ int pos = pair.indexOf('=');
+
+ if ( pos >= 0 )
+ {
+ QString variable = pair.left(pos);
+ QString value = pair.mid(pos+1);
+
+ setEnv(variable,value);
+ }
+ }
+}
+
+int Pty::start(const QString& program,
+ const QStringList& programArguments,
+ const QStringList& environment,
+ ulong winid,
+ bool addToUtmp
+ //const QString& dbusService,
+ //const QString& dbusSession
+ )
+{
+ clearProgram();
+
+ // For historical reasons, the first argument in programArguments is the
+ // name of the program to execute, so create a list consisting of all
+ // but the first argument to pass to setProgram()
+ Q_ASSERT(programArguments.count() >= 1);
+ setProgram(program.toLatin1(),programArguments.mid(1));
+
+ addEnvironmentVariables(environment);
+
+ setEnv("WINDOWID", QString::number(winid));
+
+ // unless the LANGUAGE environment variable has been set explicitly
+ // set it to a null string
+ // this fixes the problem where KCatalog sets the LANGUAGE environment
+ // variable during the application's startup to something which
+ // differs from LANG,LC_* etc. and causes programs run from
+ // the terminal to display messages in the wrong language
+ //
+ // this can happen if LANG contains a language which KDE
+ // does not have a translation for
+ //
+ // BR:149300
+ setEnv("LANGUAGE",QString(),false /* do not overwrite existing value if any */);
+
+ setUseUtmp(addToUtmp);
+
+ struct ::termios ttmode;
+ pty()->tcGetAttr(&ttmode);
+ if (!_xonXoff)
+ ttmode.c_iflag &= ~(IXOFF | IXON);
+ else
+ ttmode.c_iflag |= (IXOFF | IXON);
+#ifdef IUTF8 // XXX not a reasonable place to check it.
+ if (!_utf8)
+ ttmode.c_iflag &= ~IUTF8;
+ else
+ ttmode.c_iflag |= IUTF8;
+#endif
+
+ if (_eraseChar != 0)
+ ttmode.c_cc[VERASE] = _eraseChar;
+
+ if (!pty()->tcSetAttr(&ttmode))
+ qWarning() << "Unable to set terminal attributes.";
+
+ pty()->setWinSize(_windowLines, _windowColumns);
+
+ KProcess::start();
+
+ if (!waitForStarted())
+ return -1;
+
+ return 0;
+}
+
+void Pty::setWriteable(bool writeable)
+{
+ struct stat sbuf;
+ stat(pty()->ttyName(), &sbuf);
+ if (writeable)
+ chmod(pty()->ttyName(), sbuf.st_mode | S_IWGRP);
+ else
+ chmod(pty()->ttyName(), sbuf.st_mode & ~(S_IWGRP|S_IWOTH));
+}
+
+Pty::Pty(int masterFd, QObject* parent)
+ : KPtyProcess(masterFd,parent)
+{
+ init();
+}
+Pty::Pty(QObject* parent)
+ : KPtyProcess(parent)
+{
+ init();
+}
+void Pty::init()
+{
+ _windowColumns = 0;
+ _windowLines = 0;
+ _eraseChar = 0;
+ _xonXoff = true;
+ _utf8 =true;
+
+ connect(pty(), SIGNAL(readyRead()) , this , SLOT(dataReceived()));
+ setPtyChannels(KPtyProcess::AllChannels);
+}
+
+Pty::~Pty()
+{
+}
+
+void Pty::sendData(const char* data, int length)
+{
+ if (!length)
+ return;
+
+ if (!pty()->write(data,length))
+ {
+ qWarning() << "Pty::doSendJobs - Could not send input data to terminal process.";
+ return;
+ }
+}
+
+void Pty::dataReceived()
+{
+ QByteArray data = pty()->readAll();
+ emit receivedData(data.constData(),data.count());
+}
+
+void Pty::lockPty(bool lock)
+{
+ Q_UNUSED(lock);
+
+// TODO: Support for locking the Pty
+ //if (lock)
+ //suspend();
+ //else
+ //resume();
+}
+
+int Pty::foregroundProcessGroup() const
+{
+ int pid = tcgetpgrp(pty()->masterFd());
+
+ if ( pid != -1 )
+ {
+ return pid;
+ }
+
+ return 0;
+}
+
+void Pty::setupChildProcess()
+{
+ KPtyProcess::setupChildProcess();
+
+ // reset all signal handlers
+ // this ensures that terminal applications respond to
+ // signals generated via key sequences such as Ctrl+C
+ // (which sends SIGINT)
+ struct sigaction action;
+ sigemptyset(&action.sa_mask);
+ action.sa_handler = SIG_DFL;
+ action.sa_flags = 0;
+ for (int signal=1;signal < NSIG; signal++)
+ sigaction(signal,&action,0L);
+}
diff --git a/konsole-qml-plugin/src/Pty.h b/konsole-qml-plugin/src/Pty.h
new file mode 100644
index 0000000..fbcf4e8
--- /dev/null
+++ b/konsole-qml-plugin/src/Pty.h
@@ -0,0 +1,206 @@
+/*
+ * This file is a part of QTerminal - http://gitorious.org/qterminal
+ *
+ * This file was un-linked from KDE and modified
+ * by Maxim Bourmistrov
+ *
+ */
+
+/*
+ This file is part of Konsole, KDE's terminal emulator.
+
+ Copyright 2007-2008 by Robert Knight
+ Copyright 1997,1998 by Lars Doelle
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+*/
+
+#ifndef PTY_H
+#define PTY_H
+
+// Qt
+#include
+#include
+#include
+#include
+
+// KDE
+#include "kptyprocess.h"
+
+
+/**
+ * The Pty class is used to start the terminal process,
+ * send data to it, receive data from it and manipulate
+ * various properties of the pseudo-teletype interface
+ * used to communicate with the process.
+ *
+ * To use this class, construct an instance and connect
+ * to the sendData slot and receivedData signal to
+ * send data to or receive data from the process.
+ *
+ * To start the terminal process, call the start() method
+ * with the program name and appropriate arguments.
+ */
+class Pty: public KPtyProcess
+{
+Q_OBJECT
+
+ public:
+
+ /**
+ * Constructs a new Pty.
+ *
+ * Connect to the sendData() slot and receivedData() signal to prepare
+ * for sending and receiving data from the terminal process.
+ *
+ * To start the terminal process, call the run() method with the
+ * name of the program to start and appropriate arguments.
+ */
+ explicit Pty(QObject* parent = 0);
+
+ /**
+ * Construct a process using an open pty master.
+ * See KPtyProcess::KPtyProcess()
+ */
+ explicit Pty(int ptyMasterFd, QObject* parent = 0);
+
+ ~Pty();
+
+ /**
+ * Starts the terminal process.
+ *
+ * Returns 0 if the process was started successfully or non-zero
+ * otherwise.
+ *
+ * @param program Path to the program to start
+ * @param arguments Arguments to pass to the program being started
+ * @param environment A list of key=value pairs which will be added
+ * to the environment for the new process. At the very least this
+ * should include an assignment for the TERM environment variable.
+ * @param winid Specifies the value of the WINDOWID environment variable
+ * in the process's environment.
+ * @param addToUtmp Specifies whether a utmp entry should be created for
+ * the pty used. See K3Process::setUsePty()
+ * @param dbusService Specifies the value of the KONSOLE_DBUS_SERVICE
+ * environment variable in the process's environment.
+ * @param dbusSession Specifies the value of the KONSOLE_DBUS_SESSION
+ * environment variable in the process's environment.
+ */
+ int start( const QString& program,
+ const QStringList& arguments,
+ const QStringList& environment,
+ ulong winid,
+ bool addToUtmp
+ );
+
+ /** TODO: Document me */
+ void setWriteable(bool writeable);
+
+ /**
+ * Enables or disables Xon/Xoff flow control. The flow control setting
+ * may be changed later by a terminal application, so flowControlEnabled()
+ * may not equal the value of @p on in the previous call to setFlowControlEnabled()
+ */
+ void setFlowControlEnabled(bool on);
+
+ /** Queries the terminal state and returns true if Xon/Xoff flow control is enabled. */
+ bool flowControlEnabled() const;
+
+ /**
+ * Sets the size of the window (in lines and columns of characters)
+ * used by this teletype.
+ */
+ void setWindowSize(int lines, int cols);
+
+ /** Returns the size of the window used by this teletype. See setWindowSize() */
+ QSize windowSize() const;
+
+ /** TODO Document me */
+ void setErase(char erase);
+
+ /** */
+ char erase() const;
+
+ /**
+ * Returns the process id of the teletype's current foreground
+ * process. This is the process which is currently reading
+ * input sent to the terminal via. sendData()
+ *
+ * If there is a problem reading the foreground process group,
+ * 0 will be returned.
+ */
+ int foregroundProcessGroup() const;
+
+ public slots:
+
+ /**
+ * Put the pty into UTF-8 mode on systems which support it.
+ */
+ void setUtf8Mode(bool on);
+
+ /**
+ * Suspend or resume processing of data from the standard
+ * output of the terminal process.
+ *
+ * See K3Process::suspend() and K3Process::resume()
+ *
+ * @param lock If true, processing of output is suspended,
+ * otherwise processing is resumed.
+ */
+ void lockPty(bool lock);
+
+ /**
+ * Sends data to the process currently controlling the
+ * teletype ( whose id is returned by foregroundProcessGroup() )
+ *
+ * @param buffer Pointer to the data to send.
+ * @param length Length of @p buffer.
+ */
+ void sendData(const char* buffer, int length);
+
+ signals:
+
+ /**
+ * Emitted when a new block of data is received from
+ * the teletype.
+ *
+ * @param buffer Pointer to the data received.
+ * @param length Length of @p buffer
+ */
+ void receivedData(const char* buffer, int length);
+
+ protected:
+ void setupChildProcess();
+
+ private slots:
+ // called when data is received from the terminal process
+ void dataReceived();
+
+ private:
+ void init();
+
+ // takes a list of key=value pairs and adds them
+ // to the environment for the process
+ void addEnvironmentVariables(const QStringList& environment);
+
+ int _windowColumns;
+ int _windowLines;
+ char _eraseChar;
+ bool _xonXoff;
+ bool _utf8;
+};
+
+#endif // PTY_H
diff --git a/konsole-qml-plugin/src/Screen.cpp b/konsole-qml-plugin/src/Screen.cpp
new file mode 100644
index 0000000..45ddd80
--- /dev/null
+++ b/konsole-qml-plugin/src/Screen.cpp
@@ -0,0 +1,1360 @@
+/*
+ This file is part of Konsole, an X terminal.
+
+ Copyright 2007-2008 by Robert Knight
+ Copyright 1997,1998 by Lars Doelle
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+ */
+
+// Own
+#include "Screen.h"
+
+// Standard
+#include
+#include
+#include
+#include
+#include
+#include
+
+// Qt
+#include
+#include
+
+// KDE
+//#include
+
+// Konsole
+#include "konsole_wcwidth.h"
+#include "TerminalCharacterDecoder.h"
+
+
+
+//FIXME: this is emulation specific. Use false for xterm, true for ANSI.
+//FIXME: see if we can get this from terminfo.
+#define BS_CLEARS false
+
+//Macro to convert x,y position on screen to position within an image.
+//
+//Originally the image was stored as one large contiguous block of
+//memory, so a position within the image could be represented as an
+//offset from the beginning of the block. For efficiency reasons this
+//is no longer the case.
+//Many internal parts of this class still use this representation for parameters and so on,
+//notably moveImage() and clearImage().
+//This macro converts from an X,Y position into an image offset.
+#ifndef loc
+#define loc(X,Y) ((Y)*columns+(X))
+#endif
+
+
+Character Screen::defaultChar = Character(' ',
+ CharacterColor(COLOR_SPACE_DEFAULT,DEFAULT_FORE_COLOR),
+ CharacterColor(COLOR_SPACE_DEFAULT,DEFAULT_BACK_COLOR),
+ DEFAULT_RENDITION);
+
+//#define REVERSE_WRAPPED_LINES // for wrapped line debug
+
+Screen::Screen(int l, int c)
+ : lines(l),
+ columns(c),
+ screenLines(new ImageLine[lines+1] ),
+ _scrolledLines(0),
+ _droppedLines(0),
+ history(new HistoryScrollNone()),
+ cuX(0), cuY(0),
+ currentRendition(0),
+ _topMargin(0), _bottomMargin(0),
+ selBegin(0), selTopLeft(0), selBottomRight(0),
+ blockSelectionMode(false),
+ effectiveForeground(CharacterColor()), effectiveBackground(CharacterColor()), effectiveRendition(0),
+ lastPos(-1)
+{
+ lineProperties.resize(lines+1);
+ for (int i=0;i