Aim of this project is to create an opensource keyboard manager to type non-english languages. eKalappai uses popular scim-table format for handling the keyboards. Its an improved version of ekalappai.
- In this version we planned to include the option to support the multiple languages. You could add many scim-tables on your own which is freely available in internet as you wish.
- Auto update feature for application
This project is entirely written in Python 3 and with PyQT5 as its GUI toolkit. Other major dependencies are Peewee ORM library, PyWinHook for listening to keyboard button press events, and PyWin32 for all the windows API. This project will store some of its settings to its SQL Lite Database. This application will run as a taskbar app and always listen to the keyboard click once installed and started.
- Install any Code Editor tool like Visual Studio Code
- Install Python V3.x. You can download the latest version from this link Download Python
- Then run the following command to install PyQT, Peewee and pywin32 in your command prompt.
pip install PyQt5 peewee pywin32
- PyWinHook is a wrapper for listening to the windows keyboard and mouse events. It's available in pip repo too. If you have a very good build tool like the latest Visual C++ Compiler for Python and Swig for windows in your machine you can install by using
pip install pyWinhook
. Else You have to download the file according to your python version and system. cp3.x denotes python version and also for 32 bit or 64 bit from this link. After that open command prompt and navigate to the downloaded location and typepip install <downloaded file>
to install PyWinHook. - After that fork the remote repository to your account to start working on it.
- Then clone the repository to your local machine
- After cloning navigate to the folder where you cloned the application code in command prompt
- Run
python app.py
to run the application.
Below is the total project structure but I feel like we have to improve it based on the current understanding and trend.
|
|— Controllers
|----|— EKWindow.py
|— Database
|----|— DatabaseManager.py
|----|— Tables.py
|— EkEngine
|----|— Engine.py
|----|— ScimTableParser.py
|----|— WinPipe.py
|— resources
|----|— images
|----|— ekalappai.qrc
|----|— ekalappai_rc.py
|----|— eksettings.ini
|— tables
|— view
|----|— dialog.ui
|----|— dialog_ui.py
|— app.py
Following sections will explain one by one about the files and folders and its functionalities.
This is the entry file which will bootstrap the application, show the splash screen and then run the main application window.
This is the folder which should contain all the ui related files. These files are generated by using the QT Designer and converted to python. We can also write the code directly by just taking the hint from the existing file.
This is the folder which contains all the default SCIM tables that comes pre-installed with E-Kalappai. This folder could be moved inside the resources too.
This is the folder which contains all the external resources like images and ini files. Following are the files and folders inside it.
- images
- ekalappai.qrc - Resource definition file for QT5
- ekalappai_rc.py - Generated Resource file for PyQT5
- eksettings.ini - User Settings file
This folder contains all the files related to EkEngine. This is the engine, which will listen to keyboard press, parse the SCIM table, convert it based on the key clicks and convert the output.
- Engine.py - This is the main class file for the engine. It will hook to the keyboard and convert it and then do all the operations related to it. It will always listen to the keyboard press once started.
- ScimTableParser.py - SCIM table parser will help the engine to read the SCIM file, parse it and then convert it to the mappings dict.
- WinPipe.py - This file will help with sending the key press and other related key press event activities.
This is the folder which contains files related to the database functions
- DatabaseManager.py - Contains functions related to get the values from the database.
- Tables.py - This file contains all the table definitions in the applications
This is the folder which contains all the actions or controller logic presents. In generic, each window in our application should have one controller file. Right now only one window is there which is EkWindow.py which will help us with all the UI elements actions and related functions.
This application is licensed under GPLv2+
This application is in development stage. Use at your own risk