智能体刷屏的背后,是 AI 应用拐点的来临?AICon 北京站议程重磅公布,50+ 硬核分享不容错过 了解详情
写点什么

KeyboardJS 0.4.1 发布

  • 2013-01-18
  • 本文字数:978 字

    阅读完需:约 3 分钟

KeyboardJS 是一款为简化 JavaScript 中的键盘处理而编写的库,上个月发布了 0.4.1 版本,该版本修复了很多 bug,还包含了一些新特性。 KeyboardJS 库致力于帮助前端开发人员处理键盘动作,比如支持网站或游戏中的快捷键。如果不使用库,要检查 J 和 K 是否同时按下,可能需要使用类似如下的代码:

复制代码
var jPressed = false,
kPressed = false;
document.addEventListener('keydown', function (e) {
if (e.keyCode === 74) {
jPressed = true;
} else if (e.keyCode === 75) {
kPressed = true;
}
if (jPressed && kPressed) {
// 两个键都被按下;向控制台中打印日志
console.log('Both J and K are pressed');
}
});
document.addEventListener('keyup', function (e) {
if (e.keyCode === 74) {
jPressed = false;
} else if (e.keyCode === 75) {
kPressed = false;
}
});

而使用 KeyboardJS 时,只需如下可读性更好的代码:

复制代码
KeyboardJS.on('j + k', function () {
console.log('Both J and K are pressed');
});

该库还允许开发者指定按键按下的顺序(使用 > 运算符),而且除了上面演示的“与(and)”操作,“或(or)”操作可以使用空格或逗号。

KeyboardJS 没有发布 0.4.0 版本,上个月发布的 0.4.1 版是完全重写的。除了修复很多 bug 之外,还有一些 API 方面的变更。这里举两个例子,一个是添加了 KeyboardJS.getActiveKeys() 函数,能够按名字返回当前按下按键的数组(GitHub 上的 KeyboardJS 网站就是利用该函数输出按键名的),另一个是很多用于处理组合按键的组合函数移到了 KeyboardJS.combo 对象中。

要把 KeyboardJS 添加到自己的应用中,可以从 GitHub (鼠标滑动到“Get it Here”部分)下载代码,并在使用 KeyboardJS 之前将如下 HTML 代码添加到你的页面中:

复制代码
<script src="keyboard.js"></script>

如果仍在使用 XHTML,需要将 type="text/javascript"添加到 script 标签中。

也可以通过 RequireJS 将其当做 AMD 模块下载。

区域设置指的是不同的键盘布局,比如在美式键盘布局中,shift + 6 是(^)符号,而在德式键盘布局中则是(&)。每种要支持的区域设置都必须告知该库。KeyboardJS 目前只支持美式键盘布局,但是添加自己的区域设置非常容易——请确保在添加自己的区域设置时向该库发送 pull 请求。

参考英文原文 KeyboardJS 0.4.1 released

2013-01-18 04:351400
用户头像
臧秀涛 略懂技术的运营同学。

发布了 300 篇内容, 共 142.4 次阅读, 收获喜欢 35 次。

关注

评论

发布
暂无评论
发现更多内容

架构师训练营 - 第 7 周学习总结

红了哟

一口气搞懂「文件系统」,就靠这 20 张图了

小林coding

操作系统 计算机基础 文件管理 文件存储 文件系统

队列高级应用之设计一个高性能线程池

架构师修行之路

分布式 线程池 架构设计 架构师

你可能不知道的iPython使用技巧

wangkx

Python

憋再@官方了,头像加国旗,10行代码给你安排!

wangkx

Python python升级

大厂需要你的简历有这些内容!

我是程序员小贱

重点发布!河北行动计划发布!聚焦7大重点任务发展大数据产业

CECBC

区块链技术 落地应用 政策

图解JavaScript——代码实现(new、Object.create()、Object.assign()、flat()等十四种代码原理实现不香吗?)

执鸢者

Java 大前端 代码原理

敏捷软件工程实践书籍

Bob Jiang

敏捷 敏捷书籍 工程实践

我们未曾见过的世界,大到无法想象

wangkx

ios 极客 apple 苹果 软件推荐

告诉你如何同时拿到腾讯两个部门的offer?

我是程序员小贱

浅谈技术管理者的角色认知与自我管理

Geek_37rwst

团队管理 管理 自我管理 技术管理

IT人的身体健康

隆隆

IT人健康

领域驱动设计(DDD)实践之路(二):事件驱动与CQRS

vivo互联网技术

DDD 架构设计 CQRS

推荐一个替代印象笔记,onenote的神奇笔记!

申屠鹏会

笔记

架构优化与业务迭代,你会怎么选?

架构精进之路

软件开发

简谈Python3关键字nonlocal使用场景

wangkx

Python Python基础

二叉查找树-增删查和针对重复数据的 Java 实现

多选参数

数据结构 算法 二叉树 数据结构与算法

troubleshoot之:分析OutOfMemoryError异常

程序那些事

Java JVM 异常 JIT

非科班面试阿里,拼多多,银行都问了些啥?

我是程序员小贱

如何理解Python中的可迭代对象、迭代器和生成器

wangkx

Python python升级

简述Python中变量作用域的规则

wangkx

Python python升级 Python基础

如何做好技术选型

xcbeyond

Java 架构 最佳实践 技术选型

简谈Python3中的闭包

wangkx

Python Python基础

Rust竟然没有异常处理?

袁承兴

rust 异常 java异常处理

Kafka和RocketMQ底层存储之那些你不知道的事

yes

kafka RocketMQ 零拷贝 Mmap

神经网络激活函数为什么要使用非线性函数?

wangkx

神经网络 激活函数

SpringBoot系列(四):SpringBoot特性_外部化配置(properties文件配置)

xcbeyond

Java 微服务 springboot

第10周总结+作业

林毋梦

HashMap、LinkedHashMap 学习笔记

Geek_vidmje

翻译: Effective Go (5)

申屠鹏会

翻译 Go 语言

KeyboardJS 0.4.1发布_JavaScript_Callum Macrae_InfoQ精选文章