我为一个基金会工作,该基金会旨在提高人们对互联网无障碍的认识。为了演示,我们想提供一个小型研讨会,模拟不同的残疾/缺陷。这是通过一个专门为这次演示创建的网站来完成的。
其中一个被证实的缺陷是有震颤,这意味着经历颤抖,难以控制的手部运动。由于这种缺陷,当鼠标在链接上时,很难准确地移动鼠标光标并按下鼠标按钮。一些老年人和有疾病的人,如帕金森氏症患者,都可能患有震颤。
现在我想以一种不可预测的方式移动鼠标光标,这样人们就很难点击一个小按钮。因为JavaScript不允许直接移动鼠标光标,所以我正在寻找其他方法来实现这一点。我有以下想法:
使用模拟鼠标晃动的鼠标驱动程序/实用程序。
通过CSS隐藏鼠标光标,在原始光标的位置放置一个晃动的鼠标光标的GIF动画(使用JavaScript),然后让目标链接每隔几秒就可以点击一次,持续一秒钟左右。这至少会给人一种感觉,好像总是在错误的时刻点击。
虽然第一个想法很酷,但我找不到这样的工具,无论是Mac还是Windows。我自己也没有任何编程技能。
第二个想法似乎有点笨拙,但我认为它会达到预期的效果。
有人有别的想法吗?
我曾经在Puppy Linux论坛上开玩笑,得到这样的评论:
患有帕金森症的人不会觉得这很有趣!!
幸运的是,这里的治愈方法就是cntrl-C。
下面是需要xdotool的shell脚本
#!/bin/sh
while :; do
xdotool mousemove_relative -- -$(($RANDOM % 10)) $(($RANDOM % 10))
xdotool mousemove_relative -- $(($RANDOM % 10)) -$(($RANDOM % 10))
sleep ${1:-.1} #adjust this as necessary for effect
done
命名为parkinson_sim,并使用可选参数运行两次震动之间的时间,可以是0.001到999.0。
Parkinson_sim [time_between_tremors_in_seconds] #默认值为0.1
我犯了一个错误,我自己点击了它,而不是从命令行运行它,很快就发现这是多么令人沮丧。我试了几次才打开一个终端窗口来杀死它。
我曾经在Puppy Linux论坛上开玩笑,得到这样的评论:
患有帕金森症的人不会觉得这很有趣!!
幸运的是,这里的治愈方法就是cntrl-C。
下面是需要xdotool的shell脚本
#!/bin/sh
while :; do
xdotool mousemove_relative -- -$(($RANDOM % 10)) $(($RANDOM % 10))
xdotool mousemove_relative -- $(($RANDOM % 10)) -$(($RANDOM % 10))
sleep ${1:-.1} #adjust this as necessary for effect
done
命名为parkinson_sim,并使用可选参数运行两次震动之间的时间,可以是0.001到999.0。
Parkinson_sim [time_between_tremors_in_seconds] #默认值为0.1
我犯了一个错误,我自己点击了它,而不是从命令行运行它,很快就发现这是多么令人沮丧。我试了几次才打开一个终端窗口来杀死它。
模拟地震的低水平部分现在已经很好地解决了。我将添加一些专注于模拟的震颤类型的东西:
大多数答案实现了一个鼠标光标在X和Y方向上具有固定的最大步宽的随机路径上移动。
这应该可以很好地满足用例,使它难以点击一个特定的区域,如按钮。
对于模拟由帕金森病引起的震颤引起的UI问题的更普遍的问题,至少实际模拟这种震颤的手部运动是有趣的。
我怀疑随机游走可能不是一个很好的近似。
当然,可能很难获得真正的手部震颤运动的痕迹数据,但肯定有关于分析这种震颤的论文:
帕金森病患者手部运动的参数化表示是关于如何绘制手部运动的三维轨迹。
这篇论文是付费的,但右上方的预览图,在书的图片上标记为“看>”,展示了一些有趣的手迹数据的不同表示形式。