Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
[C++] Return
4 / 4 / 1
Регистрация: 11.09.2012
Сообщений: 110
#1

Получить регистр и расскладку клавиатуры - C++

08.01.2014, 14:25. Просмотров 491. Ответов 8
Метки нет (Все метки)

С помощью каких функций можно получить регистр и расскладку клавиатуры?

Такие варианты как приведены ниже не подходят.

C++
1
2
3
4
5
if(key = "q") return нижний регистр;
else (key = "Q") return верхний регистр;
 
if(key = "q") return английская расскладка;
else if(key = "й") return русская расскладка;
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.01.2014, 14:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Получить регистр и расскладку клавиатуры (C++):

Замена нижнего регистра литер русского языка, вводимых с клавиатуры, на верхний регистр - C++
Для программы необходимо реализовать замену нижнего регистра литер русского языка вводимых с клавиатуры на верхний регистр.Подскажите кто...

Получить число по введенным с клавиатуры цифрам - C++
Есть такая задачка: Разработать программу, которая формирует число по введенным с клавиатуры цифрам, трактуемым как число сотен, десятков...

Как получить сигнал с клавиатуры, если активно другое приложение - C++
Всем привет. Хочу реализовать вызов приложения, которое в данный момент не является активным. Т.е. к примеру, пользователь задал клавишу...

Если первое из введенных с клавиатуры чисел А и В равно 5, то вычислить А+В, в противном случае получить А/В. - C++
Ребят спасайте срочно,завтра зачёт автоматом должен получить,а тут мне подкинули задание на С++,в то время как я изучал Паскаль.Вот...

Ввод с клавиатуры массив из пяти целочисленных значений. Вывести их в одну строку через запятую. Получить для массива среднее арифметическое - C++
Введите с клавиатуры в массив пять целочисленных значений. Выведите их в одну строку через запятую. Получите для массива среднее...

Как ввести двумерный массив с клавиатуры? Его размерность [n][m] нужно задавать с клавиатуры. - C++
Привет всем. Как ввести двумерный массив с клавиатуры? Его размерность нужно задавать с клавиатуры.

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Ryuk
179 / 177 / 33
Регистрация: 10.06.2011
Сообщений: 871
08.01.2014, 14:26 #2
[C++] Return, с помощью ASCII.
[C++] Return
4 / 4 / 1
Регистрация: 11.09.2012
Сообщений: 110
08.01.2014, 14:39  [ТС] #3
Цитата Сообщение от Ryuk Посмотреть сообщение
[C++] Return, с помощью ASCII.
Спасибо, это кажется то, что мне и требовалось.

Добавлено через 10 минут
Почитал, но так и не понял как получить регистр и раскладку клавиатуры?
Использую функцию GetAsyncKeyState получаю ASCII номер клавиши.
Ryuk
179 / 177 / 33
Регистрация: 10.06.2011
Сообщений: 871
08.01.2014, 14:48 #4
[C++] Return, в ASCII символы записаны по номерам. Например для поиска в строке заглавных букв нам достаточно проверить, есть ли в слове символ с кодом [65; 90], если же нужно проверить на буквы младшего регистра то [97; 122].

Добавлено через 1 минуту
Думаю тут будет разъяснено понятнее, да к тому же там есть конвертер.
Somebody
2787 / 1601 / 145
Регистрация: 03.12.2007
Сообщений: 4,193
Завершенные тесты: 1
08.01.2014, 15:18 #5
MapVirtualKey?
[C++] Return
4 / 4 / 1
Регистрация: 11.09.2012
Сообщений: 110
08.01.2014, 16:05  [ТС] #6
Как же все сложно.
Приведите пример использования функции проверки раскладки и регистра клавиатуры.
Somebody
2787 / 1601 / 145
Регистрация: 03.12.2007
Сообщений: 4,193
Завершенные тесты: 1
08.01.2014, 18:51 #7
Раскладка в текущем потоке:
C++
1
HKL layout = GetKeyboardLayout(0);
"Регистр клавиатуры" - это что? Регистр может быть у символа.
Что вообще дано и что надо получить?
[C++] Return
4 / 4 / 1
Регистрация: 11.09.2012
Сообщений: 110
09.01.2014, 12:47  [ТС] #8
Цитата Сообщение от Somebody Посмотреть сообщение
Раскладка в текущем потоке:
C++
1
HKL layout = GetKeyboardLayout(0);
"Регистр клавиатуры" - это что? Регистр может быть у символа.
Что вообще дано и что надо получить?
Консольное приложение, подобие кейлоггера.
Получаем нажатую клавишу с помощью функции GetAsyncKeyState, в консоль выводится нажатая клавиша, нам надо определить какая расскладка включена и какой регистр(верхний/нижний), далее это записать в лог.
Функция GetKeyboardLayout не работает правильно в консоли, она всегда выдает английский язык т.е. 1033
Somebody
2787 / 1601 / 145
Регистрация: 03.12.2007
Сообщений: 4,193
Завершенные тесты: 1
09.01.2014, 16:45 #9
Цитата Сообщение от [C++] Return Посмотреть сообщение
Получаем нажатую клавишу с помощью функции GetAsyncKeyState
Точно не помню, но, кажется, GetAsyncKeyState не работает, если фокус ввода у потока другого процесса.
Цитата Сообщение от [C++] Return Посмотреть сообщение
нам надо определить какая расскладка включена и какой регистр(верхний/нижний)
Раскладка у каждого потока своя - GetKeyboardLayout с указанием нужного потока. Получаемый символ зависит от других нажатых клавиш. Для английского/русского - разница только в регистре, но в общем случае там и другие штуки могут быть. Тут ToUnicodeEx.
Цитата Сообщение от [C++] Return Посмотреть сообщение
Функция GetKeyboardLayout не работает правильно в консоли, она всегда выдает английский язык т.е. 1033
Может быть, не для того потока её вызываешь? Все окна консолей вроде бы принадлежат потокам csrss или ещё чего-то там.
Вообще поставь хук на клавиатуру и не мучайся.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.01.2014, 16:45
Привет! Вот еще темы с ответами:

Ввести с клавиатуры массив из N чисел (N также вводится с клавиатуры). Найти наименьший из его положительных элементов. - C++
Ввести с клавиатуры массив из N чисел (N также вводится с клавиатуры). Найти наименьший из его положительных элементов. Начиная от этого...

Какая программа отвечает за расскладку клавиатуры? - Ubuntu Linux
Сабж. Убунту 10.10 Гном 2, всё дефолтно. Имеется в виду участок панельки (gnomepanel), которым можно переключать раскладку.

Как на GNU/Linux Ubuntu менять расскладку клавиатуры - Ubuntu Linux
Зравствуйте, решил узнать что такое GNU/Linux Ubuntu, не то что я с ней не знаком Просто хочу разнообразить свои знания Устанавил...

Программно эмулировать нажатие клавиш, различая регистр и раскладку клавиатуры - C++ WinAPI
Функция keybd_event корректно воспринимает только большие латинские буквы. Регистр и раскладка определяются нажатием клавиш CapsLock и...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
09.01.2014, 16:45
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru