如何用delphi获取键盘扫描码及模拟键盘组合键
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用delphi获取键盘扫描码及模拟键盘组合键相关的知识,希望对你有一定的参考价值。
这是两个问题, 1.有一个edit,在其keydown事情中写入代码,使按下键的键盘扫描码呈现在edit中. 2.我要模拟的组合键是左Ctrl+右Ctrl+3,若要用到键盘扫描码,我可从问题1中得到,要发送命令的窗口为当前激活窗口,命令通过一按扭的单击操作执行,如下, begin 等待十秒; 按下左Ctrl; 按下右Ctrl; 按下3; 抬起3; 抬起右Ctrl; 抬起左Ctrl; end. 求代码,通过再加分
参考技术A 没明白什麽意思。能说明清楚下实际情况吗?你的语言组织我很难理解!如何用键盘映射修改键盘坏键?
买了一部二手的笔记本,发现有三个键是坏的(说多了都是泪啊,以后买二手笔记本的时候,先打开记事本把所有的按键按一遍。。。屌丝就是伤不起!)
如果换一个新的键盘,要180块大洋!你妈,老子整个本才450!然而,屌丝还是有屌丝的机智的,google了一下,在ubuntu系统下,可以用键盘映射的方法解决。有个命令叫做xmodmap,用它可以把坏键的功能转移到其他没用的多余的键上,比如两个ctrl键,留一个就够了。
网上的办法不少,但是鱼龙混杂,我就帮大家整理一下把(以我的电脑为例)。
1、三个坏键分别是逗号,句号,问号。我打算把它们分别映射到下面挨着的alt、super和ctrl键上。
2、在终端键入命令 xmodmap -pke 这是为了找到alt、super和ctrl键的键值。
3、我的电脑上,Ctrl_R的键值是105,那么把问号的功能映射到上面的命令是:xmodmap -e "keycode 105 = question slash" 注意,这里有个slash,它是按住shift时原来的坏键所显示的符号,至于这个符号的英文名称,我也是费了不少劲才找到的。所以,这里是一个坎儿,就当磨练吧。
4、但是Alt_R Super_R却不是那么容易了。首先需要把他们两个原来的功能取消掉,因为他们是所谓的修饰键。比如shift就是修饰键,不按shift键的时候,按数字2则显示出来的就是2,但是按下shift键显示踹的就是@了。ctrl键不是修饰键所以不需要这一步。
5、去掉Alt_R修饰功能的命令是:xmodmap -e "remove mod1 = Alt_R" 其中mod1是alt键的修饰功能,至于怎么知道的,可以尝试一下直接打入命令xmodmap,这时终端上会显示所有的修饰功能以及其对应的按键。同样道理移除Super_R修饰功能的命令是:xmodmap -e "remove mod4 = Super_R"
6、最后一步同Ctrl_R,即把句号和逗号的功能映射到Super_R和Alt_R上。Alt_R的键值是108,Super_R的键值是135
逗号 - alt:xmodmap -e 'keycode 108 = comma less'
句号 - Super : modmap -e 'keycode 135 = period greater'
7、其他的按键道理同上,只要稍加琢磨一定可以解决的。
8、为了方便可以写一个脚本,下次开机就可一不必一行一行的打命令了,因为每次关机后,所有改键设置都会被还原。我的脚本如下:
#!bin
#Filename xmodmap.sh
xmodmap -e 'remove mod4 = Super_R'
xmodmap -e 'keycode 135 = period greater'
xmodmap -e 'remove mod1 = Alt_R'
xmodmap -e 'keycode 108 = comma less'
xmodmap -e 'keycode 105 = slash question'
开机后,只需要在终端输入:sh xmodmap.sh即可,前提是你已经将脚本的权限设置成了可执行。
9、最后一点,算是我的遗憾吧:因为没能完成开机自动执行我的脚本,这方面还在探索。哪位大牛给我治疗一下?
以上是关于如何用delphi获取键盘扫描码及模拟键盘组合键的主要内容,如果未能解决你的问题,请参考以下文章
51单片机,用c语言,如何用矩阵键盘为一个变量char a赋值?已设计出一个函数,使得每按一个矩阵