Форум русскоязычного сообщества Ubuntu


За новостями русскоязычного сообщества и Ubuntu в целом можно следить на нашей страничке в Google+

Автор Тема: [Qt] Определение раскладки клавиатуры  (Прочитано 2651 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Swa

  • Автор темы
  • Новичок
  • *
  • Сообщений: 37
    • Просмотр профиля
Здравствуйте.
Возникла проблема определения раскладки клавиатуры. Вешаю на виджет keyPressEvent и в нём делаю вывод:

qDebug() << QLocale::languageToString(QLocale::system().language());
qDebug() << QLocale::languageToString(QApplication::keyboardInputLocale ().language());

QLocale::system().language() выдаёт "Russian"
QApplication::keyboardInputLocale ().language() выдаёт "C", что согласно справке The "C" locale is English/UnitedStates.
Причём при изменении раскладки средствами Alt+Shift язык ввода меняется, но qDebug выдаёт эти же строки. Что посоветуете?
Виджет: QLineEdit

Оффлайн Mam(O)n

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: [Qt] Определение раскладки клавиатуры
« Ответ #1 : 16 Январь 2010, 16:06:23 »
Про qt не подскажу, но локаль "C" никогда не была English/UnitedStates. Локаль "C", можно сказать, локаль по-умолчанию или неустановленная локаль.
Цитировать
The "C" locale is the minimal locale. It is a rather neutral locale which has the same settings across all systems and compilers, and therefore the exact results of a program using this locale are predictable. This is the locale used by default on all C programs.

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2540
    • Просмотр профиля

Оффлайн Swa

  • Автор темы
  • Новичок
  • *
  • Сообщений: 37
    • Просмотр профиля
Re: [Qt] Определение раскладки клавиатуры
« Ответ #3 : 16 Январь 2010, 16:52:41 »
Mam(O)n, да, там есть локаль QLocale::English, но про QLocale::C   написано именно так: The "C" locale is English/UnitedStates.
alexander.pronin, то есть это баг xkb? У меня нет Xfce, но установлен пакет X11-xkb-utils. Это в нём проблема?
Например, у меня в KDE индикатор раскладки языков работает правильно. Но это именно утилита KDE, а интересно, откуда берёт данные Qt?
В xorg.conf есть строки
Option "XkbLayout" "us,ru"
Option "XkbVariant" "basic,winkeys"

UPD: нашёл на сайте троллей багрепорт:
http://bugreports.qt.nokia.com/browse/QTBUG-3631
Похоже, такое только у нас двоих.

Ещё просьба, у кого есть Qt, потестите мой пример, у кого как работает, пожалуйста.
« Последнее редактирование: 16 Январь 2010, 19:25:36 от Swa »

Оффлайн Mam(O)n

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: [Qt] Определение раскладки клавиатуры
« Ответ #4 : 16 Январь 2010, 21:05:52 »
Собрал пример из багрепорта - тоже показывает "С"

(Нажмите, чтобы показать/скрыть)

Оффлайн Swa

  • Автор темы
  • Новичок
  • *
  • Сообщений: 37
    • Просмотр профиля
Re: [Qt] Определение раскладки клавиатуры
« Ответ #5 : 16 Январь 2010, 21:48:30 »
Mam(O)n , спасибо. Вы не могли бы указать свою систему, оконный менеджер и содержание xorg.conf.
Получается, не у меня одного такое. Причем в Windows эта функция работает, так что это проблема X11.

Оффлайн Mam(O)n

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: [Qt] Определение раскладки клавиатуры
« Ответ #6 : 16 Январь 2010, 22:29:09 »
Ubuntu 9.10, Gnome, Compiz. Весь основной софт и либы из оф. репов.
Linux mamon-desktop 2.6.31-17-generic-pae #54-Ubuntu SMP Thu Dec 10 17:23:29 UTC 2009 i686 GNU/Linux
(Нажмите, чтобы показать/скрыть)

Оффлайн Swa

  • Автор темы
  • Новичок
  • *
  • Сообщений: 37
    • Просмотр профиля
Re: [Qt] Определение раскладки клавиатуры
« Ответ #7 : 17 Январь 2010, 00:06:05 »
Mam(O)n, спасибо.

 

Страница сгенерирована за 0.056 секунд. Запросов: 24.