使用 javascript 读取多个同时键盘输入

2024-01-07

我注意到 JavaScript 中键盘输入有一些奇怪的行为。我可能在这里遗漏了一些非常明显的东西,但是是否有某种关于允许同时按下哪些键的规则?

我使用布尔变量来保存四个键中每个键的状态,如下所示,这允许同时按下许多键(硬件允许):

var up = false, left = false, right = false, space = false;

function keydown(e) {
    if (e.keyCode == 32)
        space = true;
    if (e.keyCode == 38)
        up = true;
    if (e.keyCode == 37)
        left = true;
    if (e.keyCode == 39)
        right = true;
}

function keyup(e) {
    if (e.keyCode == 32)
        space = false;
    if (e.keyCode == 38)
        up = false;
    if (e.keyCode == 37)
        left = false;
    if (e.keyCode == 39)
        right = false;
}

在两台机器上,我尝试过以下 jsfiddle 允许您同时按空格键,向上和向右,但不能按空格键,向上和向左。在这两台机器上,它在 Chrome、FF 和 IE 中执行相同的操作。在第三台机器上它工作完美,我可以同时按住所有 4 个键。

现在推测这与硬件有关,但我的主要问题是为什么左右键的操作存在差异?这看起来不一致,但我确信这是有充分理由的。

http://jsfiddle.net/SYs5b/ http://jsfiddle.net/SYs5b/

(您必须在结果窗格中单击才能触发事件)


为了省钱,键盘制造商经常将许多按键放在同一条总线上。这可以防止同时按下键盘同一区域中的多个键。有时,它甚至可以阻止整个键盘上同时按下 2 个以上的键。通常,Shift、Ctrl 和 Alt 键不在此限制范围内,因此您可以按住 Shift 键并同时按其他 2 个键,它仍然可以正常工作。

即使是高端游戏键盘也通常具有类似的硬件限制,尽管上限要高得多,因此在正常游戏过程中不太可能达到该上限。

这也称为“重影”,即您按下的按键似乎没有注册。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 javascript 读取多个同时键盘输入 的相关文章

随机推荐

  • 我可以用mpAndroidChart绘制渐变折线图吗?

    我可以画一个如图所示的折线图吗 如果可以的话 我应该怎么做才能改变线条颜色 谢谢你 我画的看起来像图二 线条颜色相同 并且没有昨天的incom 我应该怎么做才能将线条更改为渐变颜色并只显示最后一个markerView 我画的图 https
  • Android中的Pdf渲染器转换的​​图像是透明背景

    我是android开发的新手 我正在努力将 Pdf 转换为图像并将其存储在某个位置 我使用 PdfRenderer API 级别 21 将 PDF 转换为位图图像 转换后的图像是透明背景 请指导我将图像转换为白色背景 这样我就可以将其转换为
  • Swift - 发送 POST 请求时从 NSURLSession 返回数据

    我可以使用下面的代码在 Swift 中发送 POST 请求 func post gt String let request NSMutableURLRequest URL NSURL string http myserverip myfil
  • 使用 python 对点进行排序以获得连续曲线

    我有一个未排序点的列表 列表 50 6261 74 3683 63 2489 75 0038 76 0384 75 6219 79 8451 75 7855 30 9626 168 085 27 381 170 967 22 9191 17
  • PyCharm 中 Python 控制台和终端的区别

    我是 Python 初学者 我最近开始使用 PyCharm 但我不知道终端和控制台有什么区别 终端中的某些命令在控制台中不起作用 在讨论差异之前 我们需要先谈谈两者在实践中的区别 终端本质上取代了 Windows 上的命令提示符 电源外壳和
  • MinGW 错误:“线程”不是“std”的成员

    我正在尝试为 Windows 交叉编译一个简单的应用程序 include
  • 为什么gmtime要这样实现呢?

    我偶然发现了 Minix 的 gmtime 函数的源代码 我对从纪元以来的天数计算年份数的位感兴趣 以下是该部分的内容 http www raspberryginger com jbailey minix html gmtime 8c so
  • 通过 COM 将 DataTable 传递到 R

    我试图将数据从 SQL 传递到 C 然后传递到 R 服务器进行数据分析 然后返回到我的 Web 应用程序 但是 我使用的 COM 接口不允许在 C 和 R 之间传递复杂的数据类型 无数据表 我过去使用以下代码让它工作 int count d
  • NSTask 阻塞主线程

    我正在使用 NSTask 但是当我启动任务时 它会阻塞主线程 因此我无法更新它 直到任务结束 这是我的代码 NSString hostsforping google es pingdata NSTask alloc init pingdat
  • 使用 ListFragment 填充自定义视图列表

    我正在尝试使用片段在列表视图中显示元素 我创建了自定义视图 如下所示 list row xml 的图形表示 列表行 xml
  • 如何恢复过期的令牌[AWS Cognito]?

    我的网站使用 AWS 1 小时后 令牌就会过期 用户几乎无法执行任何操作 现在我正在尝试像这样刷新凭据 function getTokens session return accessToken session getAccessToken
  • 身份服务器单点注销,也从服务器注销

    这是我在依赖方中使用的注销代码 FederationConfiguration cfg FederatedAuthentication FederationConfiguration var fam FederatedAuthenticat
  • 使用 Marionette.ItemView 获取没有模型的视图?

    是否常规使用Marionette ItemView对于没有特定的视图类model与他们相关的财产 As Marionette View并不意味着可以直接使用 它看起来像一个ItemView作为具有方便的默认值和绑定的视图类是有意义的 或者
  • PHP PDO Sqlsrv 始终以字符串形式返回每个值

    如何从具有正确字段类型的数据库中获取值 我使用 PDO Sqlsrv 从数据库获取数据 并且总是以字符串形式接收数据 如下所示 customer id 1 My customer id字段类型应该是整数customer id 1 But p
  • SQL Server:如何将所有行的数据作为 Json 对象查询到其他列旁边?

    I have data like this I want to query result like this 这是我的代码 SELECT PML CODE PML NAME ENG SELECT PML ID PML NO PML CODE
  • 签入/签出文件时 Sharepoint“不支持的段类型”

    我想使用OneDrive REST API 上的签出 签入功能 https learn microsoft com en us onedrive developer rest api api driveitem checkout https
  • 可以包含 javascript 的 HTML 属性

    我正在寻找一个包含所有 html 属性的简单列表 这些属性可以包含在执行操作时自动运行的 javascript 我知道这在浏览器和版本之间会有所不同 但我宁愿更安全 也不愿后悔 我目前知道以下 javascript 属性 onload on
  • 应用程序因内存问题而终止

    在我的应用程序中 我收到此错误 来自调试器的消息 由于内存问题而终止 并且应用程序崩溃 我正在显示一个网页 但问题是内存使用量不太高 应用程序使用的内存不到 100 MB 仅当我在 iPhone 6 Plus 中运行该应用程序时 该应用程序
  • 单个主机上的多个 glibc 库

    我的 Linux SLES 8 服务器当前有 glibc 2 2 5 235 但我有一个程序无法在此版本上运行并且需要 glibc 2 3 3 是否可以在同一主机上安装多个 glibc 这是我在旧 glibc 上运行程序时遇到的错误 mya
  • 使用 javascript 读取多个同时键盘输入

    我注意到 JavaScript 中键盘输入有一些奇怪的行为 我可能在这里遗漏了一些非常明显的东西 但是是否有某种关于允许同时按下哪些键的规则 我使用布尔变量来保存四个键中每个键的状态 如下所示 这允许同时按下许多键 硬件允许 var up