中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 在dos里面怎么自动打开capslock 上一主题 | 下一主题
hudisk
初级用户





积分 34
发帖 13
注册 2006-12-10
状态 离线
『楼 主』:  在dos里面怎么自动打开capslock

在dos里面怎么自动打开capslock
num lock可以在config.sys里配置

2006-12-11 22:11
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
redtek
金牌会员





积分 2902
发帖 1147
注册 2006-9-21
状态 离线
『第 2 楼』:  

下面这个贴子有你需要的工具(这个工具才几KB大小),是开启大写状态、关闭大写状态。

(工具在下面这个贴子的第9楼可以下载)
(里面同时包含源代码)
(MS-DOS 6.22 版本下测试通过)



启动时打开大写键
http://www.cn-dos.net/forum/view ... =%E5%A4%A7%E5%86%99



    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
2006-12-12 21:30
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
houfujin
新手上路





积分 16
发帖 8
注册 2006-2-7
状态 离线
『第 3 楼』:  

我用QuickBASIC编写了一个程序,可以控制键盘指示灯的亮与灭。

2006-12-29 11:12
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
hebecoco
初级用户





积分 63
发帖 25
注册 2006-12-24
状态 离线
『第 4 楼』:  

40:17   byte   Keyboard flag byte 0 (see KB FLAGS)
      |7|6|5|4|3|2|1|0| keyboard flag byte 0
       | | | | | | | `--- right shift key depressed
       | | | | | | `---- left shift key depressed
       | | | | | `----- CTRL key depressed
       | | | | `------ ALT key depressed
       | | | `------- scroll-lock is active
       | | `-------- num-lock is active
       | `--------- caps-lock is active
       `---------- insert is active

用pokeb(0x40.0x17,0x40)就可以了

   此帖被 +5 点积分      点击查看详情   
评分人:【 redtek 分数: +5  时间:2007-1-6 22:53


2007-1-2 23:36
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tantan2010
新手上路





积分 6
发帖 4
注册 2006-10-19
状态 离线
『第 5 楼』:  

楼上的强人

2007-1-5 10:38
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 6 楼』:  



  Quote:
Originally posted by hebecoco at 2007-1-2 10:36:
40:17   byte   Keyboard flag byte 0 (see KB FLAGS)
      |7|6|5|4|3|2|1|0| keyboard flag byte 0
       | | | | | | | `--- right shift key depressed
       | | | | | | `---- left shift key depres ...


  这个怎么用呢?


2007-1-6 13:46
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
redtek
金牌会员





积分 2902
发帖 1147
注册 2006-9-21
状态 离线
『第 7 楼』:  

在内存地址 0040:0017 处这一个字节表示当前键状态。这一个字节是利用二进制的1或是0来表示键盘状态的。

0表示无开启状态,1表示开启锁定状态。

如果按下某个(4楼hebecoco兄给出的资料)中所示的按键,所示地址 0040:0017 就会被中断例程改写,置示当前的按键状态。

实验:

  Quote:
只有右侧小键盘上的 NumLock (数字输入状态)的灯亮着:
内存地址 0040:0017 处 的 20H ,转成二进制为: 00100000
第 5 位为1(为真)表示开启,其它位均为0。


-d 40:17
0040:0010                       20-00 00 32 00 32 00 64 20
0040:0020  20 39 34 05 34 05 08 0E-30 0B 3A 27 31 02 37 08
0040:0030  0D 1C 00 00 00 00 00 00-00 00 00 00 00 00 00 00
0040:0040  AE 00 C3 00 00 00 00 00-00 03 50 00 40 1F 00 00
0040:0050  00 06 00 00 00 00 00 00-00 00 00 00 00 00 00 00
0040:0060  07 06 00 D4 03 29 30 00-00 00 00 00 EC 71 08 00
0040:0070  00 00 00 00 00 00 08 00-14 14 14 14 01 01 01 01
0040:0080  1E 00 3E 00 31 08 00 60-F9 11 0B 00 50 01 00 00
0040:0090  00 00 00 00 00 00 10

然后再按一下右键小键盘上的 NumLock 键,关掉数字状态(此时灯不亮了)
00H 转二进制是:00000000 ,全是0,表示未开启。


-d 40:17
0040:0010                       00-00 00 2E 00 2E 00 08 0E
0040:0020  08 0E 34 05 30 0B 3A 27-31 02 37 08 0D 1C 37 08
0040:0030  0D 1C 61 1E 08 0E 64 20-20 39 33 04 30 0B 00 00
0040:0040  F2 00 C3 00 00 00 00 00-00 03 50 00 40 1F 00 00
0040:0050  00 10 00 00 00 00 00 00-00 00 00 00 00 00 00 00
0040:0060  07 06 00 D4 03 29 30 00-00 00 00 00 A8 78 08 00
0040:0070  00 00 00 00 00 00 08 00-14 14 14 14 01 01 01 01
0040:0080  1E 00 3E 00 31 08 00 60-F9 11 0B 00 50 01 00 00
0040:0090  00 00 00 00 00 00 10

然后按一下左侧键盘上的 CapsLock (启动大写状态),则下面是 40H,
转二进制是:01000000  第6位是1,表示大写启动状态。

-D 40:17
0040:0010                       40-00 00 1E 00 1E 00 08 0E
0040:0020  08 0E 34 05 30 0B 3A 27-31 02 37 08 0D 1C 44 20
0040:0030  20 39 34 05 30 0B 3A 27-31 02 37 08 0D 1C 00 00
0040:0040  53 00 C3 00 00 00 00 00-00 03 50 00 40 1F 00 00
0040:0050  00 1A 00 00 00 00 00 00-00 00 00 00 00 00 00 00
0040:0060  07 06 00 D4 03 29 30 00-00 00 00 00 47 7E 08 00
0040:0070  00 00 00 00 00 00 08 00-14 14 14 14 01 01 01 01
0040:0080  1E 00 3E 00 31 08 00 60-F9 11 0B 00 50 01 00 00
0040:0090  00 00 00 00 00 00 10

所以,最后用 Debug

E  40:17  40


(Windows CMD 下无效,MS-DOS下有效)

这一个命令就可以直接改写内存地址 0040:0017 处这一个字节的键盘表示状态。
并将键盘改写为大写锁定状态: 二进制位的第6位为 1 ,表是开启功能,则 01000000 的16进制(好读)就是 40,所以把40填进那个内存地址就行了~:)

4楼hebecoco兄给出的 “pokeb(0x40.0x17,0x40)” 是高级语言的操作方法,根据hebecoco兄4楼详细的说明资料,可以用C等可以写、操作内存的高级语言来完成功能~:)

   此帖被 +10 点积分       点击查看详情   
评分人:【 lxmxn 分数: +10  时间:2007-1-7 01:48




    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
2007-1-6 22:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 8 楼』:  


  强啊,学习了。


2007-1-7 01:49
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: