Keyboard layout switching in Qt, not just in Qt for embedded Linux
-
The question was: what will you be using (software speaking) to draw the video and the Qt GUI ? Linux frame buffer ? Also what distribution will be running on the device ?
-
We use the Linux frame buffer. It's a self-compiled distribution based on kernel 2.6.38 armv5tejl GNU/Linux (with udev).
-
Then if you don't have any graphic server/window manager and are using the linux frame buffer then you have to use Qt for Embedded Linux. Or there's something I'm missing
-
Ok, too bad. I guess we'll have to try to switch our Qt version after all.
Thanks for the help!
-
Before that, can you tell me what software setup you had planned ?
-
Can you elaborate on what you mean exactly?
-
Simple what are the software architecture you want to use. Until now you wrote that your were using a self-built distribution with a custom kernel and not wanted to use Qt Embedded, but don't have any window manager nor graphic server.
So what would your software stack be ?
-
I don't know the exact software stack, but our Atmel board has frame buffer support and that's what we use for the graphics.
-
So all in all quick version: -> kernel -> busybox -> Qt Application ?
-
Yes, that's right.
-
Well, then Qt for Embedded Linux is the only option. Why did you want to use it in the first place ?
-
Ok, we'll try that.
Assuming you were asking: "Why did you not want to use it in the first place ?"
Well, the project has been running for a few years now, requirements kept changing and keyboard layout switching was added to the specification just recently.I have a question about the tutorial on http://doc.qt.digia.com/4.6/qt-embedded-install.html:
How do I switch between my two Qt versions? I use Qt Simulator for simulations and when compiling our stuff on the hardware, we use a makefile without QtCreator. Do I only have to change $PATH?
If possible I'd like to keep the code working for both versions by using a #compileflag -
Indeed, the was a word missing :D
Just create one kit for each Qt version and use both for you project, then you can switch at will from Qt Creator
-
Ok, but how? Is it enough to choose the corresponding qmake in the "Build Settings/General/Qt Version/Manage"? Qt Simulator doesn't allow me to change that one.
And if I run a shell-script to compile everything together for the hardware, how does the system know which Qt to use if I change it only in QtCreator?
-
Wait, Qt Simulator ? The one from the Nokia time ?
-
Yes, that one, but I can compile it in Desktop mode, too, if I have to. Qt simulator has the advantage of not being fullscreen (because it provides its own virtual screen), so I've used it until now. Though I don't mind abandoning it if it means getting those accursed keyboard layouts to work.
But just switching qmake doesn't make a difference. I followed the tutorial on http://doc.qt.digia.com/4.6/qt-embedded-install.html (but didn't setup the virtual frame buffer), so I'd expect that at least "QKbdDriverFactory::create" shouldn't be an undefined reference anymore. I know that I still need to do some other things to get it to run, like finding out where the QApplication object is that needs to be constructed with the QApplication::GuiServer type, but that shouldn't matter for the compiler, right?
-
Indeed.
What I do when I have to develop for embedded is to build an embedded version for x86 that uses QVFB so I have the same set of libraries than the version from my target.
-
But even if I don't have the virtual frame buffer, the compiler should compile everything. But still the factory can't be found.
Do I really only need to switch the qmake in the project settings?
-
Are you sure you are doing an x86 embedded build ?
If you are using Qt Creator, just switch from one kit to another one. Or if from the command line, use the correct qmake version.
-
I am not sure, that's why I'm asking if switching the qmake is enough or if more things are needed to make QtCreator use the other kit.