27 个版本 (12 个稳定版)

1.7.0-prerelease-12024 年 7 月 13 日
1.6.1-prerelease-12024 年 4 月 26 日
1.6.0-prerelease-12024 年 2 月 11 日
1.5.0 2023 年 12 月 22 日
1.0.6 2022 年 7 月 31 日

#55 in 命令行工具

Download history 253/week @ 2024-05-04 28/week @ 2024-05-11 36/week @ 2024-05-18 18/week @ 2024-05-25 19/week @ 2024-06-01 21/week @ 2024-06-08 15/week @ 2024-06-15 17/week @ 2024-06-22 38/week @ 2024-06-29 8/week @ 2024-07-06 84/week @ 2024-07-13 330/week @ 2024-07-20 253/week @ 2024-07-27 109/week @ 2024-08-03 70/week @ 2024-08-10 66/week @ 2024-08-17

每月 547 次下载

LGPL-3.0-only

1.5MB
27K SLoC

卡纳塔

Image of a keycap with the letter K on it in pink tones

提升您的键盘舒适度

这能做什么?

这是一个适用于 Linux、macOS 和 Windows 的跨平台软件键盘重映射器。以下是功能的简要概述

  • 多层键盘功能
  • 高级按键行为定制(例如:轻触保持,宏,Unicode)
  • 跨平台可读配置文件

查看示例目录在线模拟器

要查看所有功能,请参阅配置指南。配置指南旨在与主线保持最新,可能包含您版本中未有的功能。请参阅发布页面中的适用链接。

与之最相似的项目是kmonad,它为卡纳塔提供了灵感。以下是比较文档

您可以在此处查看已知问题列表

演示视频

多层功能展示(30秒,1.7 MB).

为什么这很有用?

想象一下,如果我们不是按 Shift 键来输入大写字母,而是有分开的大写和小写字母的巨大键盘。我们都应该同意:这将是一个糟糕的用户体验!

可以这样思考 Shift 键的工作方式:它们将您的输入切换到另一个功能层,您现在输入的是大写字母和符号,而不是小写字母和数字。

kanata 允许您将 Shift 键具有的这种替代层概念应用到任何键上。然后您可以自定义这些层的功能,以满足您的具体需求和工作流程。

使用方法

目前运行kanata时无法在后台进程启动它。您需要保持启动kanata的窗口运行以保持kanata活跃。以下是运行kanata在后台的一些技巧

预构建的可执行文件

有关可执行文件和说明,请参阅发行页面

自行构建

本项目使用最新的Rust稳定工具链。如果您使用rustup安装了Rust工具链,例如通过官方网站的说明,您可以使用rustup update stable获取最新的稳定工具链。

说明

使用cargo install

cargo install kanata

# On Linux and macOS, this may not work without `sudo`, see below
kanata --cfg <your_configuration_file>

在Linux上自行构建和运行

git clone https://github.com/jtroo/kanata && cd kanata
cargo build   # --release optional, not really perf sensitive

# sudo is used because kanata opens /dev/ files
#
# See below if you want to avoid needing sudo:
# https://github.com/jtroo/kanata/wiki/Avoid-using-sudo-on-Linux
sudo target/debug/kanata --cfg <your_configuration_file>

在Windows上自行构建和运行。

git clone https://github.com/jtroo/kanata; cd kanata
cargo build   # --release optional, not really perf sensitive
target\debug\kanata --cfg <your_configuration_file>

在macOS上自行构建和运行

对于macOS 11及更高版本:安装Karabiner VirtualHiDDevice驱动程序

要激活它

/应用程序/.Karabiner-VirtualHIDDevice-管理器.应用/内容/MacOS/Karabiner-VirtualHIDDevice-管理器激活

对于macOS 10及更早版本:安装Karabiner内核扩展

git clone https://github.com/jtroo/kanata && cd kanata
cargo build   # --release optional, not really perf sensitive

# sudo is needed to gain permission to intercept the keyboard

sudo target/debug/kanata --cfg <your_configuration_file>

完整的配置指南可以在此处找到

示例配置文件位于cfg_samples。文件simple.kbd包含一个基本的配置文件,它可能容易理解但并不包含所有功能。文件kanata.kbd包含所有功能的示例和文档。发布资产还包含一个经过测试与该版本一起工作的kanata.kbd文件。所有键名都可以在keys模块中找到,您还可以定义自己的键名。

功能标志

当自行构建或使用cargo install时,您可以添加功能标志以启用默认关闭的功能。

说明

如果您想启用cmd动作,请添加标志--features cmd。例如

cargo build --release --features cmd
cargo install --features cmd

在Windows上,如果您想编译使用拦截驱动程序的二进制文件,应添加标志--features interception_driver。例如

cargo build --release --features interception_driver
cargo install --features interception_driver

要组合多个标志,请使用单个--features标志,并用逗号分隔功能。例如

cargo build --release --features cmd,interception_driver
cargo install --features cmd,interception_driver

其他安装方法

Packaging status

显著特性

贡献

欢迎贡献!

除非明确说明,否则您对kanata的贡献将仅在LGPL-3.0许可证下进行*

某些目录是例外

以下是kanata的基本低工作量设计文档

如何帮助

  • 试用并告诉我您的想法。请随意提交问题或开始讨论。
  • 可用性问题和无用的错误消息被视为需要修复的错误。如果您遇到任何问题,我会很感激您提交问题。
  • 浏览开放问题,并在您能够和/或愿意的情况下提供帮助。如果您想尝试贡献,请随时ping jtroo以获取一些提示。
  • 如果您了解编写Windows键盘驱动程序的情况,开始一个Interception驱动程序的开放源代码替代品将非常棒。

这个名字意味着什么?

我想找一个与键盘相关的“k”字。据维基百科,kanata是易洛魁语的一个土著词汇,意为“村庄”或“定居点”,是加拿大名字的起源。

还有PPT✧。

动机

TLDR:QMK功能,但适用于任何键盘,而不仅仅是花哨的机械键盘。

长版本

我有一些运行QMK的键盘。QMK允许用户根据他们的意愿自定义键盘的功能。

QMK的一个很好的用例是其能够将键映射到与主键盘行键重叠的位置,但在另一层可访问。我不会评论生产力,但我发现这极大地帮助了我的键盘舒适度。

例如,这些键位于键盘的右侧

7 8 9
u i o
j k l
m , .

在一层中,我在相同的位置有箭头键,在另一层中有数字键盘。

arrows:       numpad:
- - -         7 8 9
--         4 5 6
← ↓ →         1 2 3
- - -         0 * .

人们可以添加任何喜欢的自定义来提高舒适度、速度等。就我个人而言,我的主要动机是由于过去的重复性劳损。

然而,QMK并不在所有地方运行。实际上,它不运行在大多数你能够获得的硬件上。你不能在笔记本电脑键盘或任何主流办公室键盘上运行它。我相信QMK提供的舒适度和赋权应该对任何在现有硬件上有电脑的人可用,而不是必须购买一个爱好者的机械键盘(诚然,它们非常好——我自己有几台——但可能很贵)。

我为不支持QMK的键盘找到的最佳替代方案是kmonad。这是一个非常优秀的项目,如果你想要尝试类似的东西,我推荐它。

这个项目的存在原因在于,kmonad是用Haskell编写的,我对如何开始贡献一个Haskell项目一无所知。从局外人的角度来看,我认为Haskell是一种伟大的语言,但我真的无法理解它。在撰写本文时,还有一些突出的问题,使得kmonad对我的个人工作流程不够理想。

这个项目是用Rust编写的,因为Rust是我最喜欢的编程语言,而且存在前人优秀的keyberon crate

类似项目

  • kmonad:kanata(Linux、Windows、Mac)的灵感来源
  • QMK:开源键盘固件
  • keyberon:针对键盘固件的Rust库
  • ktrl:仅适用于Linux的键盘定制器,具有层、TCP服务器和音频支持
  • kbremap:仅适用于Windows的键盘定制器,具有层和Unicode
  • xcape:仅适用于Linux的轻触保持修饰符
  • karabiner-elements:仅适用于Mac的键盘定制器
  • capsicain:仅适用于Windows的键映射器,具有驱动程序级别的键拦截
  • keyd:与QMK、kmonad和kanata非常相似的仅适用于Linux的键映射器
  • xremap:受Emacs键序列启发的仅适用于Linux的应用程序感知键映射器,与QMK层/Vim模式不同
  • keymapper:具有不同转换模型的上下文感知跨平台键映射器(Linux、Windows、Mac)

为什么有这个列表?

虽然kanata是某些人的最佳工具,但它可能不是你的最佳工具。我很高兴向你介绍可能更适合你需求的工具。这个列表也可以作为参考/灵感,以添加到kanata中可能的功能。

捐赠/支持?

作者(jtroo)不会接受kanata工作的货币捐赠。请改为捐赠你的时间和/或金钱给慈善机构。

以下是一些链接。这些链接提供学习和有趣的阅读材料。它们不是推荐。

依赖关系

~9–25MB
~310K SLoC