Qt Widgets gnome kde macos macosx windows
Source (link to git-repo or to original if based on someone elses unmodified work): https://github.com/AlterX76/VirtualKeyboard
*** 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
Small changes 3 years 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
Small changes 3 years 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 3 years ago
Fixed a bug preventing space char from being displayed in textboxes
Added missing files 3 years ago
Added new form files missed out in the last commit.
Numeric Keyboard feature 3 years ago
Added feature to create a numeric keyboard (check that out in the screenshot)
Improved keyboard behaviour 3 years 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
5 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
Robinson0
7 years ago
Report
arges
8 years ago
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
AlterX
8 years ago
Report
edup
8 years ago
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
vidya2027
3 years ago
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
AlterX
8 years ago
Report
edup
8 years ago
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
AlterX
8 years ago
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
8 years ago
- 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
AlterX
8 years ago
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
8 years ago
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
AlterX
8 years ago
Report
vinithr
8 years ago
Report
AlterX
8 years ago
Report
vinithr
8 years ago
i am using qtcreator 4.7.1. Is this application is compactable with Qt 4.7.1.?
Report
AlterX
8 years ago
Yes, I've used QtCreator 2.5 with Qt runtime 4.7.4
Report
AlterX
8 years ago
Report
vinithr
8 years ago
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
ashaihullin
9 years ago
Report
Myzhar
9 years ago
Report
Myzhar
9 years ago
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
AlterX
9 years ago
thank you for your comment!
It's very difficult to port in general way on an entire linux system...
Report
mariuszekpl
9 years ago
by VirtualKeyboard ?
I try but i can't.
For exaple Polish extra chars
ĄĆĘŃÓŁŹĆ
ąćęńółźć
Report
AlterX
9 years ago
Thank you
Report
huguley
10 years ago
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