⑴ c语言 读取键值的函数 注意:环境是VC++,没有就说没有
正常来说,一个单线程的程序是顺序执行的,比如说你用scanf等待输入键值,他会等待直到你输入位置,然后继续,这是顺序执行的。所以你需要采用多线程的方法,开个线程监听是否有键入,如果有的话就输入并结束该线程就行了。这么说有点复杂,如果你用的是C++的MFC框架的话,可以采用消息机制,在消息处理函数中监听键盘输入消息来得到你想要的值就行了。
⑵ unix下用C语言如何获得键值
用getchar,判断ascii
⑶ c语言中怎样输入和读取方向键
在用C语言写出的“贪吃蛇”小游戏中,可以自编以下这个intokey( )函数,用来获取方向键值以便控制蛇的拐弯。库函数kbhit( )是检测是否有按键被按下,Dir是代表方向的变量,整型变量flag用来获取键值,1、2、3、4分别表示方向的上下左右。要#include<conio.h> .
void intokey( )
{ int flag;
if ( kbhit( ) ) //判断有键按下时才执行下面操作
{ flag = getch( ); //用flag来获取键值
if (flag==224) flag = getch( ); //值为224是方向键,要再次获取才行
if (flag==72 && dir != 2) dir = 1; //方向键为“上”且原方向不为下时,让dir=1.
if (flag==80 && dir != 1) dir = 2; //方向键为“下”且原方向不为上时,让dir=2.
if (flag==75 && dir != 4) dir = 3; //方向键为“左”且原方向不为右时,让dir=3.
if (flag==77 && dir != 3) dir = 4; //方向键为“右”且原方向不为左时,让dir=4.
}
}
注:上下左右键按下后都会产生2个值,第一个是224,第二个才分别是72、80、75和
77.所以要用库函数getch( )两次获取键值。如果是ASDW来控制拐弯,flag可以定义为
字符型,获取一次键值即可。
⑷ c语言各个按键的键值是什么
,用它可以获得键盘上按键的键值,获得键值之后,把它们记住,或者用宏定义,就可以为以后的 判断语句使用,
for example:
#include<stdio.h>
void main(void)
{
int key=0;
clrscr();
while(key != 0x11b) /*0x11b就是ESC键的键值,用它来判断结束,这是我事先知道的,方法是一样的*/
{
key = bioskey(0);
printf("%x ",key);/*把获得的键值用16进制显示*/
}
}
⑸ c语言中怎样输入和读取方向键
在C代码中可设置如下自编的intokey( )函数,用以接收方向键值。库函数kbhit( )是检测是否有按键被按下,库函数getch( )是读取键盘按键值的,不需按回车,也不回显。dir是代表方向的变量,根据不同的方向键值,让dir取1到4这四个不同的值。其它的程序段就可根据dir的值让东西朝某个方向移动。方向键按下后会产生2个值,第一个是224,另一个分别为上下左右的72、80、75、77,因此要读取2次值来判断。要包含#include<conio.h> .
void intokey( )
{ int flag;
if ( kbhit( ) ) //判断有键按下时才执行下面的操作
{ flag = getch( ); //用flag来获取键值
if (flag==224)
{ flag = getch( ); //值为224时表示按下了方向键,要再次获取才行
if ( flag==72 && dir != 2 ) dir = 1;
if ( flag==80 && dir != 1 ) dir = 2;
if ( flag==75 && dir != 4 ) dir = 3;
if ( flag==77 && dir != 3 ) dir = 4;
}
if (flag==13)
{ while( 1 ) if ( ( flag=getch( ) )==13 ) break ; }
}
}
注:这个函数来源于某些“贪吃蛇”的代码,略有修改,足可获取方向键值。其中的1、2、 3、4分别对应着上下左右。当flag获得键值后,分两种情况:一是flag=224,此时再次获取键值以判断输入的是4个方向中的哪一个;二是flag=13,表示按下回车键,我们就执行循环,程序暂停,等待再次输入回车,程序继续运行。
⑹ 求C语言中各键值
键盘扫描码
[编辑本段]定义
键盘上的每一个键都有两个唯一的数值进行标志。为什么要用两个数值而不是一个数值呢?这是因为一个键可以被按下,也可以被释放。当一个键按下时,它们产生一个唯一的数值,当一个键被释放时,它也会产生一个唯一的数值,我们把这些数值都保存在一张表里面,到时候通过查表就可以知道是哪一个键被敲击,并且可以知道是它是被按下还是被释放了。这些数值在系统中被称为键盘扫描码
[编辑本段]扫描码大全
扫描码 键
0x011b ESC
0x3b00 F1
0x3c00 F2
0x3d00 F3
0x3e00 F4
0x3f00 F5
0x4000 F6
0x4100 F7
0x4200 F8
0x4300 F9
0x4400 F10
主键盘区:
0x2960 ~
0x0231 1
0x0332 2
0x0433 3
0x0534 4
0x0635 5
0x0736 6
0x0837 7
0x0938 8
0x0a39 9
0x0b30 0
0x0c2d -
0x0d3d =
0x2b5c \
0x0e08 退格键
0x0f09 Tab
0x1071 q
0x1177 w
0x1265 e
0x1372 r
0x1474 t
0x1579 y
0x1675 u
0x1769 i
0x186f o
0x1970 p
0x1a5b [
0x1b5d ]
0x1e61 a
0x1f73 s
0x2064 d
0x2166 f
0x2267 g
0x2368 h
0x246a j
0x256b k
0x266c l
0x273b ;
0x2827 '
0x1c0d 回车
0x2c7a z
0x2d78 x
0x2e63 c
0x2f76 v
0x3062 b
0x316e n
0x326d m
0x332c ,
0x342e .
0x352f /
0x3920 空格键
0xe05b 左Win
0xe05c 右Win
0xe05d Menu
右边数字键盘:
0x5200 Insert
0x4700 Home
0x4900 Page UP
0x5300 Delete
0x4f00 End
0x5100 PageDown
0x4800 上箭头
0x4b00 左箭头
0x5000 下箭头
0x4d00 右箭头
0x352f /
0x372a *
0x4a2d - (注意,这是数字键盘的)
0x4737 7
0x4838 8
0x4939 9
0x4b34 4
0x4c35 5
0x4d36 6
0x4e2b +
0x4f31 1
0x5032 2
0x5133 3
0x5230 0
0x532e Del
⑺ linux下c语言编程,怎样扫描键盘输入并且获取键值
打印编译的方法有很多,比如在编译时候将其重定向到另一个文件或者直接打开某一个文件在c中直接将参数写入该文件
⑻ 在dev环境下,如何利用C语言获得键盘键值
#include<iostream>/*GetKeyState()函数是windows.h中的函数,当括号内的键被按下时,其值小于0,*/
#include<windows.h>/*并且只要在只要键处于被按下的状态,其值都会小于0,当键被松开时,其值大于0*/
using namespace std;
int main()
{
while(1){
if((GetKeyState(VK_CONTROL)<0)&&(GetKeyState('A')<0)){
cout<<"CONTROL+A";
while(GetKeyState(VK_CONTROL)<0&&GetKeyState('A')<0) ;//只要键被按下,就会有一定的持续时间。
}
}
}
//自己耗费1天半的呕心沥血之作,希望对你有用!
⑼ 请问下c语言从键盘读入控制键键值如何实现
用bioskey()函数;在dos.h头文件中!
函数原型:int bioskey (int cmd)
说明:bioskey()的函数原型在bios.h中
bioskey()完成直接键盘操作,cmd的值决定执行什么操作。
cmd = 0:
当cmd是0,bioskey()返回下一个在键盘键入的值(它将等待到按下一个键)。它返回一个16位的二进制数,包括两个不同的值。当按下一个普通键时,它的低8位数存放该字符的ASCII码;对于特殊键(如方向键、F1~F12等等),低8位为0,高8位字节存放该键的扫描码。
cmd = 1:
当cmd是1,bioskey()查询是否按下一个键,若按下一个键则返回非零值,否则返回0。
cmd = 2:
当cmd是2,bioskey()返回Shift、Ctrl、Alt、ScrollLock、NumLock、CapsLock、Insert键的状态。各键状态存放在返回值的低8位字节中。
字节位 含义
0 右边Shift键状态
1 左边Shift键状态
3 Ctrl键状态
4 Alt键状态
5 ScrollLock键状态
6 NumLock键状态
7 CapsLock键状态
8 Insert键状态
方向键可以用下面的程序啊!
#define Key_Up 0x4800/*up*/
#define Key_Down 0x5000/*down*/
#define Key_Right 0x4d00/*right*/
#define Key_Left 0x4b00/*left*/
int key=bioskey(0);
switch(key)
{
case Key_Up:/*code*/
case Key_Down:/*code*/
case Key_Left:/*code*/
case Key_Right:/*code*/
}
⑽ Linux系统中如何用C语言编程获取方向键值.....
特殊的键,如方向键,功能键等,可以使用读取普通键的方式,但是要连读两次。