Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.88/34: Рейтинг темы: голосов - 34, средняя оценка - 4.88
6 / 6 / 3
Регистрация: 05.11.2014
Сообщений: 67

Получить раскладку клавиатуры

02.09.2016, 16:58. Показов 8011. Ответов 28

Студворк — интернет-сервис помощи студентам
Подскажите, пожалуйста, как получить текущую раскладку клавиатуры?
То есть RU или En
Qt 5.3 (и только он).

Пыталась так:
C++ (Qt)
1
QLocale loc = QApplication::keyboardInputLocale();
Ошибка:
Bash
1
ошибка: 'keyboardInputLocale' is not a member of 'QApplication'
Если вот так:
C++ (Qt)
1
QString lang = QApplication::inputMethod()->locale().name();
То всегда получаю ru_RU.

ЧЯДНТ?)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.09.2016, 16:58
Ответы с готовыми решениями:

Переключить раскладку клавиатуры в Qt4
Здравствуйте. Есть простая програмка на Qt4 - словарик/записная книжка, с двумя QTextEdit. Нужно сделать так, чтобы если фокус на...

Как получить текущую раскладку клавиатуры?
Пытаюсь получить раскладку активного окна, всегда получаю одно и тоже независимо от переключения языка. var ( user32 ...

Как получить текущую раскладку клавиатуры для чужого активного окна?
Что нужно передавать в GetKeyboardLayout для того, чтобы получить раскладку активного чужого окна, а не моей программы? Знаю, что...

28
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
23.12.2016, 18:16
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от mpsss2010 Посмотреть сообщение
Т.е. как я понял функция GetKeyboardLayout как раз и получает hkl из spklActive, или я вообще не туда копаю?
Зачем тебе вообще раскладка?
0
0 / 0 / 0
Регистрация: 08.09.2016
Сообщений: 8
23.12.2016, 18:25
У меня есть драйвер-фильтр, который получает скан коды клавиш и записывает их в файл. Но получить просто скан код не совсем интересно, хотелось бы его привязать к языку клавиатуры, что бы понимать что именно было напечатано
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
23.12.2016, 18:30
Это нужно делать в user mode.
В kernel mode будет слишком накладно.
0
0 / 0 / 0
Регистрация: 08.09.2016
Сообщений: 8
23.12.2016, 23:11
Ясно, спасибо. Тут просто дело в том, что я это делаю в образовательных целях (пытаюсь хоть немного разобраться с kernel mode), поэтому для меня не столько важен конечный результат, как сам процесс его получения) Так что все же попробую еще что нибудь поискать.
0
0 / 0 / 0
Регистрация: 08.09.2016
Сообщений: 8
28.12.2016, 18:34
Прочитал, что можно использовать GetKeyboardLayout для kernel mode так же как и для user mode, но необходимо вызвать ее из user32
Подскажите, как правильно ее вызвать?, я так понимаю, что это значит подключить библиотеку? Попробовал так:
C
1
#pragma comment(lib, "user32.lib")
Выдает ошибку:
error LNK2019: unresolved external symbol _GetKeyboardLayout@4 referenced
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
28.12.2016, 21:49
Цитата Сообщение от mpsss2010 Посмотреть сообщение
Прочитал, что можно использовать GetKeyboardLayout для kernel mode так же как и для user mode, но необходимо вызвать ее из user32
Нет, это не будет работать. user32 в kernel не загружается.
Да и нельзя из kernel вызывать код, находящийся в user mode
(хотя бы из-за SMEP на Windows 8 и выше).
0
0 / 0 / 0
Регистрация: 08.09.2016
Сообщений: 8
28.12.2016, 22:12
Ясно, а вот как тогда вообще работает WinAPI для User mode? Я считал, что процесс такой:
Функция из user32, advapi32 и т.п. получает эквивалент в ntdll (например CreateFile получает ZwCreateFile), а от туда получает системный вызов. Т.е. у GetKeyboardLayout тоже должна быть функция в ntdll. Или я неправильно все это понимаю?
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
28.12.2016, 22:45
Цитата Сообщение от mpsss2010 Посмотреть сообщение
Я считал, что процесс такой:
Функция из user32, advapi32 и т.п. получает эквивалент в ntdll (например CreateFile получает ZwCreateFile), а от туда получает системный вызов. Т.е. у GetKeyboardLayout тоже должна быть функция в ntdll.
ntdll ведет к системным сервисам, их всего несколько сотен.
Это функции общего назначения: файлы, реестр, процессы, системная информация,
синхронизация, хэндлы и т.п. А есть еще и другие подсистемы, например win32k/directx.
А еще некоторые функции существуют только в user mode...
1
0 / 0 / 0
Регистрация: 08.09.2016
Сообщений: 8
28.12.2016, 22:57
Понятно, спасибо за ответ
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.12.2016, 22:57

узнать раскладку клавиатуры
подскажите как узнать раскладку клавиатуры если моя программа не активна(свернута, в трее я делаю вот так, но оно работает только...

Узнать раскладку клавиатуры
Добрый день)Нужен простенький код,который присваивал бы переменной "Keybord" true,если раскладка русская,или false,если раскладка...

Сменить раскладку клавиатуры
Добрый вечер! Кто может подсказать как сменить раскладку клавиатуры, н-р при нажатии на кнопку? Текущую раскладку определить могу...

узнать раскладку клавиатуры
Собственно, как узнать раскладку клавы?

Определить раскладку клавиатуры
Здравствуйте, подскажите пожалуйста, как можно определить текущую раскладку клавиатуры в терминале (консоли) Linux (т.е где нет иксов)))...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru