请教C语言高手(关于在TC中编键盘测试程序的DOS中断问题)

作者&投稿:释娅 (若有异议请与网页底部的电邮联系)
S3C2410板子上的键盘的中断号是多少?驱动程序编写问题,程序很简单,请高手指点一下!~

需要根据原理图配置GPIO,不同的板子不一样,但方法一样

此类问题建议到chinaunix的g-bios版块提问,那里会有很多热心的牛人帮你快速解决问题

因为tc是16位的编译器,dos也是16位的编译环境。win95/98是32位的外壳16位的内核,而win2000即以后的winxp等都是32位的系统环境。所以tc编译的程序要在16位的实模式下运行。所谓的多少多少位就是指基本数据类型int整型用几个字节存放,16位就是指用2个字节存放,32位4个字节,以后的64位就是8个字节存放。位数越高,显然计算越准确,精确度越高。当然耗时越多。

PC的键盘是一个智能化的键盘,它相当于一部完整的计算机,键盘内有一片Intel 8048(或8049)单片机(处理器)对整个键盘上的字符键、功能键、控制键和组合键进行管理,当在键盘上按下一个键时,键盘上的处理器首先向计算机主机发出硬件中断请求,然后将该键的扫描码以串行的方式传送给计算机主机,计算机主机在硬件中断的作用下,调用INT 09H硬件中断把键盘送来的扫描码读入,并转换为ASCII码存入键盘缓冲区中。按下一个键,送出一个闭合码,键被释放时送出一个断开码,键盘处理中断程序从键盘I/O端口(端口地址为60H)读取一个字节的数据,如果读取的数据的第7位为1时表示按键已放开(送出断开码),如第7位为0表示键按下(送出闭合码),数据的第0-6位则为按键的扫描码。键盘上的每一个键都对应一个扫描码,根据扫描码就能唯一的确定一个键。键盘缓冲区位于0040:001EH -4000:003EH之间的BIOS数据区,长度为34个字节,是一个先进后出的循环队列。使用PC机原有的键盘处理程序可以很方便地处理键盘,但是因为它是调用BIOS,所以反应比较慢,另外当我们要同时处理几个按键时(例如同时按下Up箭头键和Left箭头键沿对角线运动),原有的键盘中断程序就不能满足要求,这时就需要编写一个适合我们要求的键盘中断程序。
编写新的键盘中断程序要做以下几项工作:
1.进入键盘中断程序。

2.从键盘I/O端口60H读取一个字节的按键码,并将它存入一个全局变量中供main程序处理,或者将按键码存入一个数据表中。

3.读取控制寄存器61H,并用82h完成一个OR操作。

4.将结果写回控制寄存器端口61H。

5.在控制寄存器上用7fh完成一个AND操作,以便复位键盘触发器,告诉硬件一个按键已被处理,可以读下一个键了。

6.复位中断控制器8259,向端口20h写一个20h。

7.退出键盘中断程序。

我们先定义一组宏常量记录键值,它包括128个键盘扫描码:

#define KEY_A 0x1E
#define KEY_B 0x30
#define KEY_C 0x2e
#define KEY_D 0x20
#define KEY_E 0x12
#define KEY_F 0x21
#define KEY_G 0x22
#define KEY_H 0x23
#define KEY_I 0x17
#define KEY_J 0x24
#define KEY_K 0x25
#define KEY_L 0x26
#define KEY_M 0x32
#define KEY_N 0x31
#define KEY_O 0x18
#define KEY_P 0x19
#define KEY_Q 0x10
#define KEY_R 0x13
#define KEY_S 0x1f
#define KEY_T 0x14
#define KEY_U 0x16
#define KEY_V 0x2f
#define KEY_W 0x11
#define KEY_X 0x2d
#define KEY_Y 0x15
#define KEY_Z 0x2c
#define KEY_1 0x02
#define KEY_2 0x03
#define KEY_3 0x04
#define KEY_4 0x05
#define KEY_5 0x06
#define KEY_6 0x07
#define KEY_7 0x08
#define KEY_8 0x09
#define KEY_9 0x0a
#define KEY_0 0x0b
#define KEY_DASH 0x0c /* _- */
#define KEY_EQUAL 0x0d /* += */
#define KEY_LBRACKET 0x1a /* {[ */
#define KEY_RBRACKET 0x1b /* }] */
#define KEY_SEMICOLON 0x27 /* :; */
#define KEY_RQUOTE 0x28 /* "' */
#define KEY_LQUOTE 0x29 /* ~` */
#define KEY_PERIOD 0x33 /* >. */
#define KEY_COMMA 0x34 /* <, */
#define KEY_SLASH 0x35 /* ?/ */
#define KEY_BACKSLASH 0x2b /* |\ */
#define KEY_F1 0x3b
#define KEY_F2 0x3c
#define KEY_F3 0x3d
#define KEY_F4 0x3e
#define KEY_F5 0x3f
#define KEY_F6 0x40
#define KEY_F7 0x41
#define KEY_F8 0x42
#define KEY_F9 0x43
#define KEY_F10 0x44
#define KEY_ESC 0x01
#define KEY_BACKSPACE 0x0e
#define KEY_TAB 0x0f
#define KEY_ENTER 0x1c
#define KEY_CONTROL 0x1d
#define KEY_LSHIFT 0x2a
#define KEY_RSHIFT 0x36
#define KEY_PRTSC 0x37
#define KEY_ALT 0x38
#define KEY_SPACE 0x39
#define KEY_CAPSLOCK 0x3a
#define KEY_NUMLOCK 0x45
#define KEY_SCROLLLOCK 0x46
#define KEY_HOME 0x47
#define KEY_UP 0x48
#define KEY_PGUP 0x49
#define KEY_MINUS 0x4a
#define KEY_LEFT 0x4b
#define KEY_CENTER 0x4c
#define KEY_RIGHT 0x4d
#define KEY_PLUS 0x4e
#define KEY_END 0x4f
#define KEY_DOWN 0x50
#define KEY_PGDOWN 0x51
#define KEY_INS 0x52
#define KEY_DEL 0x53

然后定义两个字符型数组来保存键盘状态:

char key_state[128],key_pressed[128];

其中key_state[128]用来表示键的当前状态,key_pressed[128]里保存的值表示哪些键被按下,值1表示按下,0表示放开。

在挂上新的键盘中断以前,将原来的键盘中断程序地址保存好,以便在程序运行结束后恢复它,我们定义一个中断指针来存放原来的地址:

void interrupt far (*OldInt9Handler)();

1.安装新的键盘中断程序的函数:

void InstallKeyboard(void)
{
int i;
for(i=0;i<128;i++)
key_state[i]=key_pressed[i]=0;
OldInt9Handler=getvect(9);
setvect(9,NewInt9);
}

2.恢复旧的键盘中断程序的函数:

void ShutDownKeyboard(void)
{
setvect(9,OldInt9Handler);
}

3.新的键盘中断程序:

void far interrupt NewInt9(void)
{
unsigned char ScanCode,temp;
ScanCode=inportb(0x60);
temp=inportb(0x61);
outportb(0x61,temp | 0x80);
outportb(0x61,temp & 0x7f);
if(ScanCode&0x80)
{
ScanCode&=0x7f;
key_state[ScanCode]=0;
}
else
{
key_state[ScanCode]=1;
key_pressed[ScanCode]=1;
}
outportb(0x20,0x20);
}

4.读取按键状态的函数(游戏中调用来确定按了哪些键):

int GetKey(int ScanCode)
{
int res;
res=key_state[ScanCode]|key_pressed[ScanCode];
key_pressed[ScanCode]=0;
return res;
}

例如:

if(GetKey(KEY_UP))
{
....
}

用来判断是否按下UP键。

----------------------------------------------------
资料来自网络

----------------------
不过有一个问题,即这个程序可能还是无法检测到win键,因为win键并不是键盘标准的按键

有事KAO我,QQ:504988247

在这里就由我开个头:

首先你启动 Quick Basic 时必须加上 /l 参数,如果你是4.5的版本键入 qb/l ,如果是7.1 版本则键入 qbx/l,在程序的开头写上一行:'$INCLUDE: 'QB.BI'(4.5版本)'$INCLUDE: 'QBX.BI'(7.1版本)
QB调用中中断用:
1. Interrupt 中断号,输入参数,返回参数
2. InterruptX 中断号,输入参数,返回参数
说明:中断号为 0~255 如鼠标为 51 参数用 REGTYPE

这几句可以取得当前DOS的版本:
DIM Regs AS RegTypeX
Regs.ax = &H3000
INTERRUPTX &H21, Regs, Regs
DosVersion$ = LTRIM$(STR$(Regs.ax MOD 256)) + "." + LTRIM$(STR$(INT(Regs.ax / 256)))

下面的可以获得软驱的信息:
DIM reg AS RegType
reg.ax = &H100
INTERRUPT &H13, reg, reg
IF reg.ax MOD 256 <> 0 THEN
DEF SEG = 0
N% = PEEK(&H43E)
DEF SEG
IF N% AND 1 <> 0 THEN Count% = 1
IF N% AND 2 <> 0 THEN Count% = Count% + 1
SoftDiskCount% = Count%
END IF
回答者:chen_k_y - 经理 四级 12-27 01:45

--------------------------------------------------------------------------------

PC的键盘是一个智能化的键盘,它相当于一部完整的计算机,键盘内有一片Intel 8048(或8049)单片机(处理器)对整个键盘上的字符键、功能键、控制键和组合键进行管理,当在键盘上按下一个键时,键盘上的处理器首先向计算机主机发出硬件中断请求,然后将该键的扫描码以串行的方式传送给计算机主机,计算机主机在硬件中断的作用下,调用INT 09H硬件中断把键盘送来的扫描码读入,并转换为ASCII码存入键盘缓冲区中。按下一个键,送出一个闭合码,键被释放时送出一个断开码,键盘处理中断程序从键盘I/O端口(端口地址为60H)读取一个字节的数据,如果读取的数据的第7位为1时表示按键已放开(送出断开码),如第7位为0表示键按下(送出闭合码),数据的第0-6位则为按键的扫描码。键盘上的每一个键都对应一个扫描码,根据扫描码就能唯一的确定一个键。键盘缓冲区位于0040:001EH -4000:003EH之间的BIOS数据区,长度为34个字节,是一个先进后出的循环队列。使用PC机原有的键盘处理程序可以很方便地处理键盘,但是因为它是调用BIOS,所以反应比较慢,另外当我们要同时处理几个按键时(例如同时按下Up箭头键和Left箭头键沿对角线运动),原有的键盘中断程序就不能满足要求,这时就需要编写一个适合我们要求的键盘中断程序。
编写新的键盘中断程序要做以下几项工作:
1.进入键盘中断程序。

2.从键盘I/O端口60H读取一个字节的按键码,并将它存入一个全局变量中供main程序处理,或者将按键码存入一个数据表中。

3.读取控制寄存器61H,并用82h完成一个OR操作。

4.将结果写回控制寄存器端口61H。

5.在控制寄存器上用7fh完成一个AND操作,以便复位键盘触发器,告诉硬件一个按键已被处理,可以读下一个键了。

6.复位中断控制器8259,向端口20h写一个20h。

7.退出键盘中断程序。

我们先定义一组宏常量记录键值,它包括128个键盘扫描码:

#define KEY_A 0x1E
#define KEY_B 0x30
#define KEY_C 0x2e
#define KEY_D 0x20
#define KEY_E 0x12
#define KEY_F 0x21
#define KEY_G 0x22
#define KEY_H 0x23
#define KEY_I 0x17
#define KEY_J 0x24
#define KEY_K 0x25
#define KEY_L 0x26
#define KEY_M 0x32
#define KEY_N 0x31
#define KEY_O 0x18
#define KEY_P 0x19
#define KEY_Q 0x10
#define KEY_R 0x13
#define KEY_S 0x1f
#define KEY_T 0x14
#define KEY_U 0x16
#define KEY_V 0x2f
#define KEY_W 0x11
#define KEY_X 0x2d
#define KEY_Y 0x15
#define KEY_Z 0x2c
#define KEY_1 0x02
#define KEY_2 0x03
#define KEY_3 0x04
#define KEY_4 0x05
#define KEY_5 0x06
#define KEY_6 0x07
#define KEY_7 0x08
#define KEY_8 0x09
#define KEY_9 0x0a
#define KEY_0 0x0b
#define KEY_DASH 0x0c /* _- */
#define KEY_EQUAL 0x0d /* += */
#define KEY_LBRACKET 0x1a /* {[ */
#define KEY_RBRACKET 0x1b /* }] */
#define KEY_SEMICOLON 0x27 /* :; */
#define KEY_RQUOTE 0x28 /* "' */
#define KEY_LQUOTE 0x29 /* ~` */
#define KEY_PERIOD 0x33 /* >. */
#define KEY_COMMA 0x34 /* <, */
#define KEY_SLASH 0x35 /* ?/ */
#define KEY_BACKSLASH 0x2b /* |\ */
#define KEY_F1 0x3b
#define KEY_F2 0x3c
#define KEY_F3 0x3d
#define KEY_F4 0x3e
#define KEY_F5 0x3f
#define KEY_F6 0x40
#define KEY_F7 0x41
#define KEY_F8 0x42
#define KEY_F9 0x43
#define KEY_F10 0x44
#define KEY_ESC 0x01
#define KEY_BACKSPACE 0x0e
#define KEY_TAB 0x0f
#define KEY_ENTER 0x1c
#define KEY_CONTROL 0x1d
#define KEY_LSHIFT 0x2a
#define KEY_RSHIFT 0x36
#define KEY_PRTSC 0x37
#define KEY_ALT 0x38
#define KEY_SPACE 0x39
#define KEY_CAPSLOCK 0x3a
#define KEY_NUMLOCK 0x45
#define KEY_SCROLLLOCK 0x46
#define KEY_HOME 0x47
#define KEY_UP 0x48
#define KEY_PGUP 0x49
#define KEY_MINUS 0x4a
#define KEY_LEFT 0x4b
#define KEY_CENTER 0x4c
#define KEY_RIGHT 0x4d
#define KEY_PLUS 0x4e
#define KEY_END 0x4f
#define KEY_DOWN 0x50
#define KEY_PGDOWN 0x51
#define KEY_INS 0x52
#define KEY_DEL 0x53

然后定义两个字符型数组来保存键盘状态:

char key_state[128],key_pressed[128];

其中key_state[128]用来表示键的当前状态,key_pressed[128]里保存的值表示哪些键被按下,值1表示按下,0表示放开。

在挂上新的键盘中断以前,将原来的键盘中断程序地址保存好,以便在程序运行结束后恢复它,我们定义一个中断指针来存放原来的地址:

void interrupt far (*OldInt9Handler)();

1.安装新的键盘中断程序的函数:

void InstallKeyboard(void)
{
int i;
for(i=0;i<128;i++)
key_state[i]=key_pressed[i]=0;
OldInt9Handler=getvect(9);
setvect(9,NewInt9);
}

2.恢复旧的键盘中断程序的函数:

void ShutDownKeyboard(void)
{
setvect(9,OldInt9Handler);
}

3.新的键盘中断程序:

void far interrupt NewInt9(void)
{
unsigned char ScanCode,temp;
ScanCode=inportb(0x60);
temp=inportb(0x61);
outportb(0x61,temp | 0x80);
outportb(0x61,temp & 0x7f);
if(ScanCode&0x80)
{
ScanCode&=0x7f;
key_state[ScanCode]=0;
}
else
{
key_state[ScanCode]=1;
key_pressed[ScanCode]=1;
}
outportb(0x20,0x20);
}

4.读取按键状态的函数(游戏中调用来确定按了哪些键):

int GetKey(int ScanCode)
{
int res;
res=key_state[ScanCode]|key_pressed[ScanCode];
key_pressed[ScanCode]=0;
return res;
}

例如:

if(GetKey(KEY_UP))
{
....
}

用来判断是否按下UP键。

在这里就由我开个头:

首先你启动 Quick Basic 时必须加上 /l 参数,如果你是4.5的版本键入 qb/l ,如果是7.1 版本则键入 qbx/l,在程序的开头写上一行:'$INCLUDE: 'QB.BI'(4.5版本)'$INCLUDE: 'QBX.BI'(7.1版本)
QB调用中中断用:
1. Interrupt 中断号,输入参数,返回参数
2. InterruptX 中断号,输入参数,返回参数
说明:中断号为 0~255 如鼠标为 51 参数用 REGTYPE

这几句可以取得当前DOS的版本:
DIM Regs AS RegTypeX
Regs.ax = &H3000
INTERRUPTX &H21, Regs, Regs
DosVersion$ = LTRIM$(STR$(Regs.ax MOD 256)) + "." + LTRIM$(STR$(INT(Regs.ax / 256)))

下面的可以获得软驱的信息:
DIM reg AS RegType
reg.ax = &H100
INTERRUPT &H13, reg, reg
IF reg.ax MOD 256 <> 0 THEN
DEF SEG = 0
N% = PEEK(&H43E)
DEF SEG
IF N% AND 1 <> 0 THEN Count% = 1
IF N% AND 2 <> 0 THEN Count% = Count% + 1
SoftDiskCount% = Count%
END IF


关于c语言的一道题,求c高手帮忙解答~谢谢啦
这个程序实际是在计算斐波那契数列:1,1,2,3,5,8,13,21,……算法:第1第2两项是1,以后每一项是前两项之和。fun(int n, int* s)就是计算斐波那契数列第n项的值保存在地址为s的变量中。所以fun(6,&x)是计算第6项的值(也就是8)保存在x中。而fun(n-1,&f1)是计算第n-1项的...

请教高手!有关C语言的
+=与-=是赋值号,结合顺序都是自右向左 即最先计算a*a,由于之前已赋值a=2,所以a*a的值是4;再往左,a-=a*a相当于a-=4,即a=a-4,此时a值未变,仍然是2,所以a-=a*a的值是-2,此时a已经被重新赋值,a=-2;再往左,相当于a+=-2,亦即a=(-2)+(-2),a 的值是-4。

c语言请教高手:Y=i+++--j是如何运算的?为什么会等于9,我觉得应该是10...
关键是看y=i+++--j这句表达式编译器怎么来编译,根据贪心法和运算符优先级,可以这么理解这句话:y=(i++)+(--j);由于++是后缀,必须使用过i的值之后,i的值才会自增一 i++执行后,因为还没有使用i,所以i为8;--j执行后j为1,之后两个数相加,结果为9,由于此时使用了i,i自增1,i为9 所以...

请教高手,C语言中,把变量定义在主函数之外和定义在主函数之内有什么区别...
两者的区别只在于作用域和生存周期。main函数是一个进程的入口,此外,和别的函数无区别。1、main函数里定义的是局部变量,只是在main函数里有效。2、如果程序里有多个函数,定义的全局变量在这些函数里都可以使用,而在main中定义的只能在main中使用,其他函数不可以直接调用。3、题目中的两个程序的区别...

本人初学C语言,有一道题目不会,请教高手,不要只说答案,告诉我每条语 ...
循环的结束条件是s[k+1]==0(C语法:如果用整形变量作条件判断,则当变量值为0时判断为假,否则为真),C语言中的字符串实际都是字符数组,由于C语言不检查数组下标,因此需要一个特殊字符来标识字符串的结束,这个字符就是整型值0,也可以写成'\\0'。当s[k+1]==0时,k自然就是字符串中末...

急!!!求c语言编程高手
include<stdio.h> include"string.h"在调用某一类库函数时,需要在程序的开头使用include命令包含头文件 include"stdlib.h"void main() 在没有返回值的情况下用void而主函数的函数名必须是main后跟的圆括号必不可少的,因为圆括号里面是用于数据传递形式参数 { FILE *fp; 函数体部分的一对花括...

想学c语言,新手应该如何学习c语言呢,高手给我个简单易懂的教程。_百度...
还有许多新潮的技术,比如JavaEE、PHP、Ajax、.NET等等等等,很多高手学习这些技术只需要很短的时间,不必说,他们肯定是C语言的高手。C语言几乎是一切计算机技术的通用工具,包括计算机的各种基本理论。没有精通C语言的决心,就不要涉足计算机领域。为什么是C语言而不是C++不是Java不是其它?因为C语言最...

如何自学C语言?高手进来传授一下学习经验
(有问题可以到我的博客:www.52vcc.com留言),网站的话我只推荐CSDN,虽然现在CSDN也水了,但是上面毕竟还是高手如云嘛。问题5、c和delphi哪种语言用得更多,这个就让我们用数据来说话吧 下面是权威网站给出的编程语言使用排名:http:\/\/www.tiobe.com\/index.php\/content\/paperinfo\/tpci\/index.html ...

求C语言编程高手帮忙!!!
初看,程序应先声明一个包含20个整型数元素的数组,但从程序目标来看,根本不需要所有的数,而只需找出次大的数而已,所以只要声明三个整型变量:输入(input)、最大数(Max)、次大数(Sec) 即可。而且从内存利用率来看,这样也更节省内存空间。以下程序你的所有要求都满足了,仅供参考:include <stdio....

我初学C语言,对C不是很了解,哪位高手可以告诉我一些学习方法,经验,万分...
自己博客上的文章 很多人对学习C语言感到无从下手,经常问我同一个问题:究竟怎样学习C语言?我是一个教师,已经开发了很多年的程序,和很多刚刚起步的人一样,学习的第一个计算机语言就是C语言。经过这些年的开发,我深深的体会到C语言对于一个程序设计人员多么的重要,如果不懂C语言,你想写底层程序...

克山县15356923886: 我想知道用C语言怎么写一个控制键盘输入的程序,比如让键盘自动执行ctrl或shift功能等.请哪位高手帮帮忙 -
军吉盐酸: 可以用普通的C语言来写.调用User32.lib 的函数:void keybd_event(BYTE bVirturalKey,BYTE bScanCode, DWORD dwFlags,DWORD dwExtraInfo) ctrl 键是 VK_CONTROL bScanCode = 0x9d shift键是 VK_SHIFT 0xaa 揿键是 0,0 键弹上来是:...

克山县15356923886: c语言程序请教.TC的编写程序! -
军吉盐酸: #include<stdio.h> void main() { int i,j,k; printf("\n"); for(i=1;i<5;i++)/*以下为三重循环*/ for(j=1;j<5;j++) for (k=1;k<5;k++) {if (i!=k&&i!=j&&j!=k)/*确保i、j、k三位互不相同*/printf("%d,%d,%d\n",i,j,k);} }

克山县15356923886: C语言,,如何用TC打开文件,,和写入文件?? -
军吉盐酸: 1.从键盘输入一行字符,写入一个文件,再把该文件内容读出显示在屏幕上. #include<stdio.h> main() { FILE *fp; char ch; if((fp=fopen("d:\\ string","w+"))==NULL) { printf("Cannot open file strike any key exit!"); getch(); exit(1); } printf("input...

克山县15356923886: TC环境下c语言编程题
军吉盐酸: #include <stdio.h> #include <conio.h> main() { int a,n,count=1; long int sn=0,tn=0; printf("please input a and n\n"); scanf("%d %d",&a,&n); printf("a=%d,n=%d\n",a,n); while(count<=n) { tn=tn+a; sn=sn+tn; a=a*10; ++count; } printf("a+aa+...=%ld\n",sn); getch(); }

克山县15356923886: C语言编程 -
军吉盐酸: 可以的~在tc目录里面有个tcc.exe文件,这个就是用来编译.c文件的,跟java类似,相当于java的bin目录里面的javac.exe开始--运行--输入cmd,然后进入tc目录下,假设已经有个需要编译的c文件在那目录,比如说h...

克山县15356923886: 求高手解答,我想用c语言编一个小程序,用来输出我所按键的键位码. -
军吉盐酸: 可以用getch来取得键值,以下是用TC写下的.供参考:#include <stdio.h>#include<conio.h> void main() { char ch; while(1) { ch =getch(); printf("\n%d",ch); if(ch == 27) break; } printf("\nend..."); }

克山县15356923886: C语言程序设计在TC环境中运行,要输入数据再运行程序该怎么做? -
军吉盐酸: Alt+F5

克山县15356923886: 哪个高手告诉我用C语言怎么编“从键盘上输入一个正整数N,计算该数的各位数字之和并输出”这个题 -
军吉盐酸: #include <stdio.h> int main() { printf("Please enter a integer: "); int iInput; scanf("%d", &iInput); int iSum = 0; int itemp = iInput; while(itemp > 0) { iSum += itemp % 10; itemp /= 10; } printf("Sum of each digit in number %d is %d.", iInput, iSum); }

克山县15356923886: C语言问题...帮忙,TC2.0下怎么输入汉字啊. -
军吉盐酸: 直接下载的TC是无法输入汉字的.但是在TC环境下要想实现汉字的输入也是可以的.你加载个UCDOS就可以了.那个UCDOS不大,网上能找到的.

克山县15356923886: 用TC编C语言时,它的粘贴功能的键是什么啊? -
军吉盐酸: TC不直接提供 在WINDOWS任务栏中的TC窗口处单击右键,在出现的菜单中 编辑->粘贴

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网