Description:

*** THE MOST USED KEYBOARD FOR FREE AND COMMERCIAL APPLICATIONS ***

A component to easily add virtual keyboards for touch-screen applications
Virtual Keyboard for touch-screen devices written in C/C++ Qt, compatible for Qt 4.x and 5.x The widget works with QLineEdit, but you can modify it for your convenience.

Features:

-- Floating or embedded in QWidget feature
-- Numeric Keyboard
-- click sound buttons
-- copy/cut and paste facility
-- echo password facility
-- dynamic keyboard layout based on selected language
-- move around textbox using TAB or directly click on a textbox (require subclassing as in the provided example)
-- Dual mode keyboard: large and small
-- zoom facility for pressed keys
-- as many instances as you want in the same application

Supported Languages:

Arabic
English
French
German
Italian
Russian

We appreciate any donation (at bottom of http://www.softairrealfight.net) since this will be used to improve or better support this project.

Have a nice day
Last changelog:

Small changes 4 months ago

- Add a new parameter to the show() method to create a frameless keyboard for reduced displays
- Fixed a bug preventing "." and "," from being displayed when numeric pad is set

Robinson0

4 years ago

3Q,i will have a try.

Report

arges

5 years ago

Very nice job. Thanks.
However, I have a little problem in my application on ARM9 board.
It works with QDialog widget. But, When the button layout is changed,

for example; setStylesheet ("QDialogButtonBox {button-layout: 1}")

the Application terminates without an error message. Why ?
I can't catch the error
Would you be help.

Report

C

AlterX

5 years ago

Hi thanks...Really I don't know why that happen to you...Have you tried to comment that line? Please try it on desktop to see if happen on it too.

Report

edup

6 years ago

Hi,

Thanks again for your time. But what are you saying only works if the other window is made with qt. This not works with notepad or firefox or even the calculator right?

Thanks

Report

C

AlterX

6 years ago

My suggestions using win api, therefore it works for all native windows other then qt system (that is based on win api)

Report

vidya2027

1 year ago

hi edup,
I am facing the same problem as yours, virtual keyboard to write any active window. so did you get the solution if yes then please share the snippet. thanks in advance.

Report

edup

6 years ago

Hi AlterX,

Thanks for your comment.

Even i don't know how to do this in QT:

I know we can do a process monitoring so we can access to all processes for sure.

And i know that we can use a virtual keyboard to our OS that writes to the focus windows, independent if was launched by us or not (in windows you have a virtual keyboard).

What i want to do is something like this:

You have a computer A that opens a socket to computer B.

You have a computer C that opens a socket to computer B.

The computer A and C asks B for all of its opened windows or to run a proccess so:

The computer A and C asks computer B to run a process like notepad (or calcultator).

Then the user in computer A choose the process where he wants to write to. So, computer A sends a message to computer B saying that wants to write on notepad.
Computer C sends a message to computer B saying that wants to write on calculator.

After that i want to have simultaneous writing on notepad (user A) and calculator (user B).

I want to add more than 2 users after this test.

Thanks a lot for your help.



Report

C

AlterX

6 years ago

Hi, too complex and low portability!
What you can do for sure on Windows:
1 - Create a service monitoring click messages on textbox/windows; so you can open a stand-alone keyboard
2 - The stand-alone keyboard, using Win API, can manipolate textboxes and style.

I'm very busy at this moment and I cannot do that; use those above:
1- GetForegroundWindow() and similar to get current focused app
2- Scan for children of app to find textbox; use GetWindow() with flags (CHILD, NEXTCHILD) and GetClassName() to find textbox instances
3- Put char in the textbox: use SendMessage() with handle of current textbox and code of key pressed in Qt keyboard
4- Change aspect using other API and handle of textbox

I hope that is a good starter for you.

Report

edup

6 years ago

Im trying to implement this virtual keyboard to work with any other window/process of the system. Can you please help?

- How to get all running windows or processes?
- How to say to this virtual keyboard to write to the chosen process/window?

Thanks a lot.

Best Regards,

Report

C

AlterX

6 years ago

Hi,
I think the way to write in processes is not good and is a little complicated due to protection of process (what you want to do is called injection and of course it could be a weak of an OS). Please show me your idea about that above.

Report

vinithr

6 years ago

Hi,

I have downloaded the application and tried to build using qmake and make its throwing following errors

/KeyBoard/widgetKeyboard2011$ qmake
/KeyBoard/widgetKeyboard2011$ make
g++ -Wl,-O1 -o widgetKeyboard2011 examplemyfocus.o main.o tester.o QKeyPushButton.o widgetKeyBoard.o moc_mainwindow.o moc_tester.o moc_QKeyPushButton.o moc_widgetKeyBoard.o qrc_virtualboard.o -L/usr/lib -lQtGui -lQtCore -lpthread
/usr/bin/ld: moc_mainwindow.o: in function vtable for MainWindow:moc_mainwindow.cpp(.rodata._ZTV10MainWindow+0x14): error: undefined reference to 'MainWindow::~MainWindow()'
/usr/bin/ld: moc_mainwindow.o: in function vtable for MainWindow:moc_mainwindow.cpp(.rodata._ZTV10MainWindow+0x18): error: undefined reference to 'MainWindow::~MainWindow()'
/usr/bin/ld: moc_mainwindow.o: in function vtable for MainWindow:moc_mainwindow.cpp(.rodata._ZTV10MainWindow+0xb4): error: undefined reference to 'MainWindow::changeEvent(QEvent*)'
/usr/bin/ld: moc_mainwindow.o: in function vtable for MainWindow:moc_mainwindow.cpp(.rodata._ZTV10MainWindow+0xec): error: undefined reference to 'non-virtual thunk to MainWindow::~MainWindow()'
/usr/bin/ld: moc_mainwindow.o: in function vtable for MainWindow:moc_mainwindow.cpp(.rodata._ZTV10MainWindow+0xf0): error: undefined reference to 'non-virtual thunk to MainWindow::~MainWindow()'
collect2: ld returned 1 exit status
make: *** [widgetKeyboard2011] Error 1


It seems to be the MainWindow.cpp file does not exist in the downloaded package.

Could you please help me out to sort out this??

Thanks in Advance

Regards
Vinithr

Report

C

AlterX

6 years ago

Hi, first of all try to use QtCreator, before that, delete .user file and then in QtCreator click on "clean all" and then on "run qmake", and then recompile.

Report

vinithr

6 years ago

I used the QT creator and followed the steps that you have given., still the same error

Report

C

AlterX

6 years ago

I've downloaded the source, unpacked and successfully compiled with QtCreator 2.5 (64bit). I don't have any suggestion sorry!

Report

vinithr

6 years ago

Thanks for your time...
i am using qtcreator 4.7.1. Is this application is compactable with Qt 4.7.1.?

Report

C

AlterX

6 years ago

I think you meant QtCreator 2.4 with Qt runtime 4.7.x
Yes, I've used QtCreator 2.5 with Qt runtime 4.7.4

Report

vinithr

6 years ago

Yes.The application that i am creating is building properly.Only this application having problem.

Could you please share me the code that you have compiled.so that i can use that code and check whether it is getting compiled or not.??

Regards
Vinithr

Report

C

AlterX

6 years ago

The code is the same as above...I've just downloaded that ;)

Report

ashaihullin

6 years ago

I'm just wonder, why didn't you use "QApplication::postEvent"s for keys?

Report

Myzhar

6 years ago

To avoid user issues remember to not add "projectname.user.pro" file in the archive :)

Report

Myzhar

6 years ago

However, I tried it on my "Asus EeePC T101MT" that can be used as a touchscreen tablet and I think it is very good, very reactive.

Linux does not have good free virtual keyboards and your seems very promising.

It would we great if you could use it as virtual keyboard standalone to be used with each active application that has focus.

Report

C

AlterX

6 years ago

Hi...
thank you for your comment!
It's very difficult to port in general way on an entire linux system...

Report

mariuszekpl

7 years ago

Could I write "national characters" ?
by VirtualKeyboard ?

I try but i can't.

For exaple Polish extra chars
ĄĆĘŃÓŁŹĆ
ąćęńółźć




Report

C

AlterX

7 years ago

Sorry i didn't catch what are you doing...can you explain with more details?

Thank you

Report

huguley

7 years ago

I got the same error as above. I removed in the inline from the function:
bool widgetKeyBoard::isEmbeddedKeyboard(void)
{
return (this->m_embeddedKeyboard);
}

and it compiles and works. I found a patch for it online so this one may just be out of date.

Report

Small changes 4 months ago

- Add a new parameter to the show() method to create a frameless keyboard for reduced displays
- Fixed a bug preventing "." and "," from being displayed when numeric pad is set

Bug fix 5 months ago

Fixed a bug preventing space char from being displayed in textboxes

Added missing files 10 months ago

Added new form files missed out in the last commit.

Numeric Keyboard feature 11 months ago

Added feature to create a numeric keyboard (check that out in the screenshot)

Improved keyboard behaviour 1 year ago

It is now possible to create several instance in the same application (previous version only one instance allowed)
Keyboard can now be created as floating widget or embedded in a QWidget
A new parameter in the show() allows to specify the QLineEdit to start with when the keyboard shows up
Extended example to show above features

9 years ago

A new resynch of code was required since during the transfer of the code to github something went wrong resulting in a strange language localization.
Now the code is up-to-date and it seems to work well.
Please let me know if you have any problem

File (click to download) Version Description Packagetype Architecture Downloads Date Filesize DL OCS-Install
Pling
Details
license
GPLv2 or later
version
2018.02
updated Feb 19 2018
added Jun 23 2009
downloads today
0
page views today 20