Я занимаюсь разработкой приложения с использованием Qt / Embedded 4.8.4 (привязки c ++). Я обнаружил, что включение блокировки прописными буквами не приводит к вводу символов заглавными буквами внутри поля редактирования. Вот простая программа для вашей справки, которая показывает то же поведение.
#include <QApplication>
#include <QMainWindow>
#include <QLineEdit>
int main(int argc, char **argv)
{
QApplication a(argc, argv);
QMainWindow *win = new QMainWindow(0);
win->move(50,50);
win->resize(500, 500);
win->show();
QLineEdit *edit = new QLineEdit(win);
edit->move(30, 30);
edit->resize(100, 30);
edit->show();
return a.exec();
}
В окне редактирования символы, которые вы вводите, будут отображаться в маленьком регистре, независимо от того, установлено ли состояние блокировки прописных букв
Re: Для вашей информации я использую LinuxInput в качестве драйвера ввода для клавиатуры и мыши
Возможно, что карта ключей, используемая Qt Window Server (QWS), имеет неправильную настройку для ключа Caps Lock (код клавиши 58). У меня была эта проблема, и я смог ее исправить следующим образом.
Чтобы создать собственное отображение клавиатуры, я следовал методу, описанному в этом посте: Qt Embedded для Linux. Переключение раскладки клавиатуры
Однако перед запуском kmap2qmap я отредактировал файл kmap так, чтобы код клавиши 58 использовал Caps_Lock, а не CtrlL_Lock
Затем я передал сгенерированный файл qmap в качестве ввода в драйвер клавиатуры:
export QWS_KEYBOARD="LinuxInput:keymap=/path/to/xx.qmap"./myApp -qws
Других решений пока нет …