快速测试所有键盘按键的脚本

医学博士

我需要检查一些笔记本电脑的键盘按键,以便尽快提高速度。

对于该特定任务,我什么都没找到,所以我的想法是一个脚本,该脚本可以读取已按下的键并知道所有键盘键,因此我可以快速对其进行重击并报告尚未按下的键。我想我可以使用showkeyor或xevgrepping输出来完成此操作

xev | grep keysym

样本输出:

state 0x10, keycode 46 (keysym 0x6c, l), same_screen YES,
state 0x10, keycode 33 (keysym 0x70, p), same_screen YES,
state 0x11, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES,
state 0x10, keycode 51 (keysym 0x5d, bracketright), same_screen YES,
state 0x10, keycode 36 (keysym 0xff0d, Return), same_screen YES,

可读的keyym很有用,但我希望测试键代码,因为随着修饰键的开/关(大写锁定,num锁定)它们不会改变,因此它们不愿意更改。我是bash的新手,所以我正在放一些东西。到目前为止,这是最好的结果:

#!/bin/bash

function findInArray() {
    local n=$#
    local value=${!n}
    for ((i=1;i < $#;i++)) {
    if [[ ${!i} == ${value}* ]]; then
    echo "${!i}"
    return 0
    fi
    }
    echo
    return 1
}

list=( 38:a 56:b 54:c 40:d 26:e 36:Return 50:Shift_L )
xev | \
# old grep solution
# grep -Po '(?<=keycode )[0-9]+(?= \(keysym 0x)' | \
# 200_success' suggestion
awk '/state 0x.*, keycode / { print $4; fflush() }' | \
while read keycode ; 
do
  found=$(findInArray "${list[@]}" ${keycode})
  if [[ $found ]]; then
    echo Pressed $found
    list=(${list[@]/${keycode}\:*/})
    echo 'Remaining ===>' ${list[@]}
    if [[ ${#list[@]} == 0 ]]; then
      echo All keys successfully tested!
      pkill xev
      exit 0
    fi
  fi
done

当我使用grep它时,它仅在关闭时打印输出,xev并且最后也不会杀死它。awk@ 200_success建议解决了这些问题,但是并不能立即打印输出:需要5-6次击键才能“刷新”输出。我该如何解决?

注意:我知道此脚本对于每种不同型号的键盘都需要不同的按键列表,但这没关系,因为我只有几个型号需要测试。


编辑1:我用最新的脚本代码编辑了问题。

编辑2:根据@ 200_success建议更新了脚本。

200_成功

尝试用刷新其输出grepawk脚本替换

xev | \
awk '/state 0x.*, keycode / { print $4; fflush() }' | \
while read keycode ; do
    # etc.
done

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何查看键盘上的所有按键?

带有按键的键盘按键检测

将UIToolBar添加到所有键盘(快速)

键盘按键

使用外接键盘时,为什么AwesomeWM无法识别我的所有modkey按键,或者我该如何解决?

如何从python脚本在python文件中运行所有测试?

Perl脚本向后测试所有可能的日期

pytest-是否可以在所有测试脚本之间运行脚本/命令?

VSCode:如何为“快速打开”中的“显示所有打开的编辑器”(edt命令)设置键盘快捷键

快速向自定义键盘中的所有“按钮”添加单,双和三击手势

Windows 10键盘有时会重复按键,有时会忽略按键

CouchDB:按键:值获取所有文档

如何检测何时释放所有按键

快速找到所有子集

Mac键盘按键

缺少键盘按键信号

键盘按键编号

全局注册键盘按键

长按键盘功能

编码的UI-如何使每个带有测试代理的远程系统并行运行所有测试脚本

为什么在单击Resharper“运行所有测试”按钮与使用键盘快捷键命令时会出现不同的行为?

键盘按键和箭头无法正确与此脚本一起使用

如何将参数传递给所有的瘟疫测试脚本

FirefoxDriver始终在“ firstrun”页面上启动,破坏所有测试脚本

如何从项目拆卸脚本中获取所有测试用例的总数和状态

SBT插件:是否可以为单个测试运行脚本而不是运行所有测试?

如何编写一个脚本,该脚本会自动按键盘上的“ Fn + F3”按钮

我的键盘钩捕获了所有键

所有文本输入的Emacs键盘绑定