The program has been written in C++ (of course) with the help of KDevelop and QT Designer. The programming interface (API) is very similar to the API used in the QT and KDE libs, so it shouldn't be difficult to understand the source code.
The source tarballs available in the download section contain the KDevelop projects. So if everything else works you can just download such a file, fire up KDevelop and start coding right away. Of course there are numerous other ways to contribute to the project (which would be much appreciated).
There are several ways to help us improve KTouch. You could
You are more then welcome to contribute to this (in my humble opinion) GREAT program :-)
Training files are simple text files, so if you want you can edit them yourself in the build-in lecture editor (or in any text editor). If you need some raw data, you can use Haavards training file generators to create the lectures and then modify them lateron.
Some notes about training lectures
The training file generators
If you want to fix a bug, implement a feature or just contribute and source code change you like to the program, feel free to send me (Andreas) a patch, so that I can include it into the official SVN source code.
The easiest way to do that is to get a local copy of the source code on SVN (see download section). If you already have the source code, make sure you work with an up-to-date version, using
inside the kdeedu/ktouch directory.
Now let's assume you fix a bug and modify the files
After your changes are complete and tested, type
in the kdeedu/ktouch directory. You will get an output like:
? KTouch.kdevelop.filelist ? Doxyfile ? KTouch.kdevelop.pcs ? KTouch.kdevses ? KTouch.kdevelop ? src/ktouchstatuslayout.cpp ? src/ktouchprefgenerallayout.h ? src/ktouchlectureeditor_dlg.cpp ? src/ktouchkeyboardeditor.moc ? src/ktouchprefkeyboardlayout.moc ? src/ktouchprefkeyboardlayout.h ? src/ktouchstatistics_dlg.cpp ? src/ktouchpreftraininglayout.moc ? src/ktouchslideline.moc ? src/.kdbgrc.ktouch M src/ktouch.h M src/ktouch.cpp ? training/text.ktouch.xml
Unless you added files yourself, ignore the lines with ? in front (these are temporary files). Note the lines with an M in front of the file names. These lines show you the files that you modified. Now type
svn diff -u ktouch.h ktouch.cpp > my_patch.patch
After the -u add all files you have modified and then a > and afterwards the file name of your patch file.
Send the patch file to me (preferably gzipped together with some ChangeLog info) and I'll check and apply
the patch to the SVN source code.
The current keyboard layouts are plain text files. Just pick one (that is close to the keyboard you want to create), create a copy (unsing the country language id as suffix) and modify it. The numbers correspond to the UNICODE key codes.
The current keyboard system is somewhat limited and not all keyboard layouts can be created with this system. So, for instance, only one key character can be displayed per key. As an example I've added some keyboard layouts to this page which are somewhat uncommon and show how different keyboards can look like:
As a consequence we have to redesign the keyboard drawing engine a bit. For one thing, drawing of a key will be independent of the actual character that has to be pressed in order to activate a key. Essentially for each key some geometric and access information have to be stored. Right now I can think of something like the following structure:
Any contribution of nice looking icons and graphics are highly appreciated. If you can draw an icon that looks better than the current icons, please send it per mail and we'll add it as soon as possible.