Перейти к содержимому

Как отследить нажатие клавиши c

  • автор:

Как проверить нажатие клавиши-модификатора (Windows Forms .NET)

Когда пользователь нажимает клавиши в приложении, можно отслеживать нажатия клавиш-модификаторов, таких как SHIFT , ALT и CTRL . При нажатии клавиши-модификатора в сочетании с другими клавишами или даже при щелчке мышью приложение может реагировать соответствующим образом. Например, нажатие клавиши S может привести к отображению «S» на экране. Если нажать клавиши CTRL+S , можно сохранить текущий документ.

Документация по рабочему столу для .NET 7 и .NET 6 находится в стадии разработки.

При обработке события KeyDown свойство KeyEventArgs.Modifiers, полученное обработчиком событий, указывает, какие клавиши-модификатора нажаты. Кроме того, свойство KeyEventArgs.KeyData указывает символ, который был нажат вместе с любыми клавишами-модификаторами в сочетании с побитовым оператором «ИЛИ».

Если вы обрабатываете событие KeyPress или событие мыши, обработчик событий не получает эти сведения. Используйте свойство ModifierKeys класса Control для обнаружения клавиши-модификатора. В любом случае необходимо выполнить побитовый оператор «И» для соответствующего значения Keys и проверяемого значения. Перечисление Keys предлагает различные варианты для каждой клавиши-модификатора, поэтому важно выполнить проверку побитового оператора «И» на предмет наличия правильного значения.

Например, клавиша SHIFT представлена следующими значениями:

Правильное значение для проверки SHIFT в качестве клавиши-модификатора — Keys.Shift. Аналогичным образом, для проверки CTRL и ALT в качестве модификаторов следует использовать значения Keys.Control и Keys.Alt соответственно.

Определение клавиши-модификатора

Определите, нажата ли клавиша-модификатор, сравнив свойство ModifierKeys и значение перечисления Keys с побитовым оператором «И».

В следующем примере кода показано, как определить, нажата ли клавиша SHIFT в обработчиках событий KeyPress и KeyDown.

// Event only raised when non-modifier key is pressed private void textBox1_KeyPress(object sender, KeyPressEventArgs e) < if ((Control.ModifierKeys & Keys.Shift) == Keys.Shift) MessageBox.Show("KeyPress " + Keys.Shift); >// Event raised as soon as shift is pressed private void textBox1_KeyDown(object sender, KeyEventArgs e)
' Event only raised when non-modifier key is pressed Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) If ((Control.ModifierKeys And Keys.Shift) = Keys.Shift) Then MessageBox.Show("KeyPress " & [Enum].GetName(GetType(Keys), Keys.Shift)) End If End Sub ' Event raised as soon as shift is pressed Private Sub TextBox1_KeyDown(sender As Object, e As KeyEventArgs) If ((Control.ModifierKeys And Keys.Shift) = Keys.Shift) Then MessageBox.Show("KeyPress " & [Enum].GetName(GetType(Keys), Keys.Shift)) End If End Sub 

См. также

  • Общие сведения об использовании клавиатуры (Windows Forms .NET)
  • Использование событий клавиатуры (Windows Forms .NET)
  • Keys
  • ModifierKeys
  • KeyDown
  • KeyPress

Совместная работа с нами на GitHub

Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.

Обработка нажатия клавиш в консоли Visual C++

Подскажите, пожалуйста, какой командой в консоли проверить нажатие клавиши, но чтобы при этом это нажатие не требовалось. Т.е. getch() не подойдет.

Отслеживать
51.4k 86 86 золотых знаков 267 267 серебряных знаков 505 505 бронзовых знаков
задан 25 дек 2010 в 21:23
Андрюха Бабаев Андрюха Бабаев
1 1 1 золотой знак 1 1 серебряный знак 5 5 бронзовых знаков

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

#include while (true) < if (_kbhit()) < _getch(); >> 

Отслеживать
ответ дан 25 дек 2010 в 21:47
Nicolas Chabanovsky Nicolas Chabanovsky
51.4k 86 86 золотых знаков 267 267 серебряных знаков 505 505 бронзовых знаков
спасибо, то, что надо
26 дек 2010 в 7:45

#include #include using namespace std; bool KEY[256]; void GetKEY() < int i = 0; while(i < 256) < if(GetAsyncKeyState(i)) KEY[i] = 1; else KEY[i] = 0; i++; >> int main() < //Оброботка while(1) < GetKEY(); if(KEY[13]) //нажат ентер < coutelse if(KEY[32]) //нажат пробел < coutSleep(10); > > 

Отслеживать
ответ дан 15 окт 2017 в 19:43
727 8 8 серебряных знаков 27 27 бронзовых знаков

  • c++
  • visual-studio
  • консоль
    Важное на Мете
Связанные
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.8.3130

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Как отследить нажатие клавиш JQuery?

В событиях – keydown() , keyup() , keypress() можно получить нажатые клавиши в шести свойствах. Получить их можно из объекта события:

$(document).keyup(function(e) < console.dir(e); >);
Результат нажатия клавиши р :

Результат нажатия клавиши р

  • key – содержит символ нажатой клавиши,
  • keyCode – код клавиши (не зависит от регистра и раскладки клавиатуры).

С помощью них можно отследить одну нажатую клавишу:

$(document).keyup(function(e) < $('#result').append(e.key + ', код: ' + e.keyCode + '
'); console.dir(e); >);

Отслеживание одной клавиши

На основе кодов можно повесить обработчики на определенные клавиши.

Клавиша Esc:
$(document).keyup(function(e) < if (e.key === "Escape" || e.keyCode === 27) < alert('Нажата клавиша Escape'); >>);
Клавиша Backspace:
$(document).keyup(function(e) < if (e.key === "Backspace" || e.keyCode === 8) < alert('Нажата клавиша Backspace'); >>);

Отслеживание сочетаний клавиш

Следующие свойства показывают состояния управляющих клавиш ( true / false ):

  • ctrlKey – нажат ли Ctrl ,
  • altKey – нажат ли Alt ,
  • metaKey – нажат ли Win или cmd ,
  • shiftKey – нажат ли Shift .

Примеры отслеживания комбинации клавиш:

Ctrl + стрелки ← →:
$(document).keyup(function(e) < if (e.ctrlKey && e.keyCode === 37) < alert('Нажаты Ctrl и ←'); >if (e.ctrlKey && e.keyCode === 39) < alert('Нажаты Ctrl и →'); >>);
Alt + Буква:
$(document).keyup(function(e) < if (e.altKey && e.keyCode === 67) < alert('Нажаты Alt и C'); >>);
Ctrl + Shift + Пробел:
$(document).keyup(function(e) < if (e.ctrlKey && e.shiftKey && e.keyCode === 32) < alert('Нажаты Ctrl, Shift и пробел'); >>);

22.10.2019, обновлено 17.12.2020
Предыдущая запись Коды клавиш клавиатуры для JQuery событий keydown, keyup и keypress
Следующая запись Входы в админку CMS

Комментарии

Авторизуйтесь, чтобы добавить комментарий.

Другие публикации

Печать HTML страниц

Очень часто разработчики забывают про печатную версию сайта, поэтому можно встретить такой результат на бумаге.

Модальное окно на затемненном фоне

Для модальных окон есть множество плагинов такие, как fancybox, Twitter Bootstrap и т.д. Но бывают случаи когда нет.

Local Storage и Session Storage в JavaScript

Web Storage API это набор методов, при помощи которых в браузере можно хранить данные в виде пар ключ=значение на.

Отследить появление блока при скроллинге можно с помощью события onscroll, вычисляя его положение методами jquery.

Javascript: Отслеживание нажатия клавиш на странице

Иногда нужно отреагировать на нажатие клавиш не на конкретонм элементе или в поле ввода, а на странице. Ниже приведу простенький сниппет на данную тему. Он просто отслеживает нажатие сочетания клавиш (горячих клавиш) ctrl + enter.

Данный пример просто выводит алерт с «ОК», дальнейшая реализация может быть на Ваше усмотрение, например можно сделать всплывающее окно для «Если Вы нашли неточность в описании, то напишите нам.»

$(document).keydown(function (e) < if (e.ctrlKey && e.keyCode == 13) < alert("OK"); >>);

Пометки: Если Вы нашли неточность в описании, то напишите нам (можно нажать ctrl + enter).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *