我是靠谱客的博主 可耐书包,最近开发中收集的这篇文章主要介绍C++ 获取键盘事件,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 

原文地址:https://www.runoob.com/w3cnote/c-get-keycode.html


一   Windows 系统下的 vs 中可以使用 _kbhit() 函数来获取键盘事件,使用时需要加入 conio.h 头文件,例:

#include <conio.h>
#include <iostream>
 
using namespace std;
 
int main()
{
    int ch;
    while (1)
    {
        if (_kbhit())
        {
            //如果有按键按下,则_kbhit()函数返回真
            ch = _getch();//使用_getch()函数获取按下的键值
            cout << ch;
            if (ch == 27){ break; }//当按下ESC时循环,ESC键的键值时27.
        }
    }
    system("pause");
}

二   在 Unix/Linux 下,并没有提供 kbhit() 函数。我们可以自己来实现 kbhit() 程序。

#include <stdio.h>
#include <termios.h>
 
static struct termios initial_settings, new_settings;
static int peek_character = -1;
void init_keyboard(void);
void close_keyboard(void);
int kbhit(void);
int readch(void); 
void init_keyboard()
{
    tcgetattr(0,&initial_settings);
    new_settings = initial_settings;
    new_settings.c_lflag |= ICANON;
    new_settings.c_lflag |= ECHO;
    new_settings.c_lflag |= ISIG;
    new_settings.c_cc[VMIN] = 1;
    new_settings.c_cc[VTIME] = 0;
    tcsetattr(0, TCSANOW, &new_settings);
}
 
void close_keyboard()
{
    tcsetattr(0, TCSANOW, &initial_settings);
}
 
int kbhit()
{
    unsigned char ch;
    int nread;
 
    if (peek_character != -1) return 1;
    new_settings.c_cc[VMIN]=0;
    tcsetattr(0, TCSANOW, &new_settings);
    nread = read(0,&ch,1);
    new_settings.c_cc[VMIN]=1;
    tcsetattr(0, TCSANOW, &new_settings);
    if(nread == 1) 
    {
        peek_character = ch;
        return 1;
    }
    return 0;
}
 
int readch()
{
    char ch;
 
    if(peek_character != -1) 
    {
        ch = peek_character;
        peek_character = -1;
        return ch;
    }
    read(0,&ch,1);
    return ch;
}
 
int main()
{
    init_keyboard();
    while(1)
    {
        kbhit();
        printf("n%dn", readch());
    }
    close_keyboard();
    return 0;
}

三  键盘 Key Code 对照表

字母和数字键的键码值(keyCode)
按键键码按键键码按键键码按键键码
A65J74S83149
B66K75T84250
C67L76U85351
D68M77V86452
E69N78W87553
F70O79X88654
G71P80Y89755
H72Q81Z90856
I73R82048957
数字键盘上的键的键码值(keyCode)功能键键码值(keyCode)
按键键码按键键码按键键码按键键码
0968104F1112F7118
1979105F2113F8119
298*106F3114F9120
399+107F4115F10121
4100Enter108F5116F11122
5101-109F6117F12123
6102.110    
7103/111    
控制键键码值(keyCode)
按键键码按键键码按键键码按键键码
BackSpace8Esc27Right Arrow39-_189
Tab9Spacebar32Dw Arrow40.>190
Clear12Page Up33Insert45/?191
Enter13Page Down34Delete46`~192
Shift16End35Num Lock144[{219
Control17Home36;:186/|220
Alt18Left Arrow37=+187]}221
Cape Lock20Up Arrow38,<188'"222
多媒体键码值(keyCode)
按键键码按键键码按键键码按键键码
音量加175      
音量减174      
停止179      
静音173      
浏览器172      
邮件180      
搜索170      
收藏171      

 

最后

以上就是可耐书包为你收集整理的C++ 获取键盘事件的全部内容,希望文章能够帮你解决C++ 获取键盘事件所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部