2 个版本

0.1.1 2021 年 6 月 7 日
0.1.0 2021 年 6 月 7 日

#954硬件支持

MIT/Apache

155KB
3K SLoC

chord2key Linux 上的和弦游戏手柄输入

关于

chord2key 是一个适用于任何 Linux evdev 设备的和弦输入转换器。它允许您使用游戏手柄控制虚拟键盘和鼠标。其他游戏手柄输入转换器只能模拟键盘的一部分 -- 每个游戏手柄按钮都映射到一个单个键盘按钮。chord2key 的不同之处在于,它允许将游戏手柄按钮的组合映射到单个键盘+鼠标动作。这使得单个游戏手柄可以映射到整个键盘,同时也可以控制鼠标。

目录

安装

当前的安装方法是编译源代码。

安装 Rust 编译器

请参阅 https://rust-lang.net.cn/tools/install

下载此仓库并编译

在您首选的终端

cd YOUR_INSTALL_DIR
git clone https://github.com/nascheinkman/chord2key.git && cd chord2key
cargo build --release

运行

现在可以通过以下命令在终端中运行此程序

sudo YOUR_INSTALL_DIR/chord2key/target/release/chord2key YOUR_CONFIG_FILE

配置

该仓库包含两个设备的配置:任天堂 Switch Pro 控制器和任天堂 Switch 合并 Joy-Con。两者都需要 dkms-hid-nintendo 内核模块,并且需要 joycond 守护进程。然后您可以使用提供的配置文件运行程序。例如,如果您有 Pro 控制器,则可以运行

cd YOUR_INSTALL_DIR/chord2key
sudo target/release/chord2key configs/nintendo_pro_controller/pro_keyboard.json

目前自己创建配置文件比较困难。如果你对技术比较熟悉,可以查看源代码,看看专业控制器配置是如何生成的,在这里可以看到,然后根据你的需求进行编辑。你可以通过config.save_to_file(FILE_PATH)函数将配置保存到配置文件中。请参阅这里的注释,了解专业控制器配置是如何保存的。

输入

目前,输入被分为三个不同的映射。

建议为每个输入映射保留唯一的输入集合。例如,如果你使用按钮A、B、X、Y创建和弦输入,你应该避免在修饰符输入中使用按钮X或其他这些按钮。

和弦

和弦是多对多映射,将按钮(和/或多个阈值轴)映射到输出操作。当和弦输入被添加到当前和弦时,和弦处于“准备”状态,当发出和弦动作时处于“未准备”状态,任何后续的和弦输入都会再次“准备”和弦。这意味着如果你的和弦需要3个按钮,你可以按住两个并重复按第三个,而不会产生意外的副作用。

修饰符

修饰符是一对多映射,将按钮或阈值轴映射到操作。修饰符相关动作在修饰符按下和释放时都会发出。这些通常用于切换动作,以便修饰键(如SHIFT)可以与和弦字母输入结合使用。

轴鼠标

鼠标映射将单个阈值轴映射到线性鼠标配置文件。当轴通过阈值时,相对差异用于设置鼠标速度。线性配置文件允许从轴位置获得平滑、直观的鼠标输出。

注意:阈值轴

阈值轴可以看作是具有死区和阈值方向的轴输入。如果轴在指示方向上通过死区,它可以被认为是“按下”,当它退回死区时可以被认为是“未按下”。

动作

操作可以分为两大类

输出动作

这些是在键盘上可以执行的标准操作。

脉冲

你可以脉冲按键和/或鼠标。这可以被认为是轻触键盘按钮,或将鼠标轴设置到一定速度然后再回到原来的位置。

状态更改

你可以直接设置键/轴的状态。这可以被认为是按住或释放按键,或将鼠标设置到一定速度。请注意,这不会像切换那样自动执行反向操作。如果和弦被映射到设置键为按下,再次输入和弦不会改变任何东西。

切换

你可以切换键/轴的状态。对于按键,这意味着如果按键是按下的,则将其设置为释放,如果按键是释放的,则将其设置为按下。这个动作与修饰符输入配合得非常好。对于轴,这意味着如果鼠标当前设置为指定的速度,则将其设置为0,否则将其设置为指定的速度。

内部动作

这些是依赖于程序内部状态的特殊操作。

重复最后一个和弦

这会取最后一次导致OutputAction输出的和弦输入,将其转换为指定的类型,然后执行该动作。这在重复最后和弦时非常有用。例如,您可以将A+B映射为和弦来触发退格键,将Y作为修饰符来切换RepeatLastChord。这意味着您可以按下A+B来按一次退格,然后按住Y来按住退格。

切换配置

这允许您将加载的配置文件热交换到另一个在相同输入设备上操作的配置文件。在简单的设置中,这可以用来创建一个空白配置,当您不希望有意外输入时,需要复杂的和弦来切换到和从完全映射但敏感的键盘配置。理论上可能更复杂的设置,但尚未测试。

依赖项

~5.5MB
~115K SLoC