3 个不稳定版本
| 0.6.1 | 2024 年 4 月 10 日 |
|---|---|
| 0.6.0 | 2024 年 4 月 10 日 |
| 0.5.0 | 2024 年 4 月 10 日 |
#116 in 多媒体
每月 31 次下载
在 2 个包 中使用
615KB
536 行
daktilo (土耳其语中的“打字机”,发音为 "duck-til-oh",源自古希腊单词 δάκτυλος,意为“手指”)是一个小巧的命令行程序,每次您按下键时都会播放打字机声音。它还提供了自定义按键声音的灵活性。您可以使用内置的声音预设来创建愉悦的打字体验,无论是撰写电子邮件还是对老板恶作剧。
✨ 灵感: "用我的打字机在课堂上做笔记"
现在您可以在不需要物理打字机的情况下重现这一时刻!
目录
入门
只需运行 daktilo 即可获得经典的打字机效果。
还有不同的预设可供选择
| 预设名称 | 描述 |
|---|---|
default |
经典打字机效果 |
basic |
一种替代的更基本的打字机效果 |
musicbox |
像音乐盒一样播放随机音符 |
ducktilo |
嘎嘎 🦆 |
drumkit |
咚、嘶、嚓! 🥁 |
spark |
高压高电流打字体验 ⚡ |
列出预设
daktilo --list-presets
使用预设
daktilo --preset musicbox
您也可以同时使用多个预设
# orchestra
daktilo -p default -p musicbox -p drumkit
使用不同的输出设备
daktilo --device pipewire
此外,您还可以使用 --list-devices 列出可用的输出设备。
为了变化声音并拥有更真实的打字机体验
daktilo --variate-tempo 0.9,0.4 --variate-volume 0.1,0.5
剧透警告
有一些彩蛋。如果您不喜欢这些,可以通过配置文件选项 no_surprises = true 或使用命令行标志禁用它们
daktilo --no-surprises
支持的平台
- Linux
- X11
- Wayland*
- Windows
- MacOS
安装
Cargo
daktilo 可以从 crates.io 使用 cargo 安装,前提是已安装 Rust。
cargo install daktilo
支持的最低 Rust 版本是 1.70.0。
在 Linux 上,应安装以下软件包
- Arch Linux:
alsa-lib libxtst libxi - Alpine Linux:
alsa-lib-dev libxi-dev libxtst-dev - Debian/Ubuntu:
libasound2-dev libxi-dev libxtst-dev
Arch Linux
pacman -S daktilo
Alpine Linux
daktilo 在 Alpine Edge 中可用。在启用 测试仓库 后,可以通过 apk 安装。
apk add daktilo
MacPorts
在 macOS 上,daktilo 可以通过 MacPorts 安装
sudo port install daktilo
更多信息请参阅 此处。
二进制发布
从 发布页面 查看针对不同目标的可用二进制文件。
从源码构建
- 克隆仓库。
git clone https://github.com/orhun/daktilo && cd daktilo/
- 构建。
CARGO_TARGET_DIR=target cargo build --release
二进制文件将位于 target/release/daktilo。
使用方法
daktilo [OPTIONS]
选项:
-v, --verbose Enables verbose logging [env: VERBOSE=]
-p, --preset [<PRESET>...] Sets the name of the sound preset to use [env: PRESET=]
-l, --list-presets Lists the available presets
--list-devices Lists the available output devices
-d, --device <DEVICE> Sets the device for playback [env: DAKTILO_DEVICE=]
-c, --config <PATH> Sets the configuration file [env: DAKTILO_CONFIG=]
-i, --init Writes the default configuration file
--variate-volume <PERCENT_UP[,PERCENT_DOWN]> Variate volume +/- in percent [env: DAKTILO_VOLUME=]
--variate-tempo <PERCENT_UP[,PERCENT_DOWN]> Variate tempo +/- in percent [env: DAKTILO_TEMPO=]
-h, --help Print help (see more with '--help')
-V, --version Print version
配置
daktilo 可以使用 TOML 格式通过配置文件进行配置。
可以通过 --config 参数或 DAKTILO_CONFIG 环境变量指定配置文件的路径。
它还可以放置在以下全局位置之一
<config_dir>/daktilo.toml<config_dir>/daktilo/daktilo.toml<config_dir>/daktilo/config
<config_dir> 的值取决于平台,如下表所示
| 平台 | 值 | 示例 |
|---|---|---|
| Linux | $XDG_CONFIG_HOME 或 $HOME/.config |
/home/orhun/.config |
| macOS | $HOME/Library/Application Support |
/Users/Orhun/Library/Application Support |
| Windows | {FOLDERID_RoamingAppData} |
C:\Users\Orhun\AppData\Roaming |
有关默认配置选项,请参阅 daktilo.toml。
您还可以使用--init标志在当前目录中创建默认配置文件。
daktilo --init
添加自定义预设
配置文件由一个sound_preset条目数组组成。
要在TOML中定义数组,可以创建不同的部分,如下所示
[[sound_preset]]
name = "custom"
key_config = []
[[sound_preset]]
name = "another_custom"
key_config = []
disabled_keys = []
variation = { volume: [0.1, 0.1], tempo: [0.05, 0.05] }
如上图所示,sound_preset由2个条目组成
name:预设的名称。它将与--preset标志一起使用。例如:--preset customkey_config:一个按键按下/释放事件的数组,用于将音频文件分配给指定的键。它也可以用于控制音量等。disabled_keys:一个数组,包含将不会用于播放的键。variation:对于未指定变化的key_config,在每个事件上对声音进行变化*
点击查看可用键的列表。
Alt、AltGr、Backspace、CapsLock、ControlLeft、ControlRight、Delete、DownArrow、End、Escape、F1、F10、F11、F12、F2、F3、F4、F5、F6、F7、F8、F9、Home、LeftArrow、MetaLeft、MetaRight、PageDown、PageUp、Return、RightArrow、ShiftLeft、ShiftRight、Space、Tab、UpArrow、PrintScreen、ScrollLock、Pause、NumLock、BackQuote、Num1、Num2、Num3、Num4、Num5、Num6、Num7、Num8、Num9、Num0、Minus、Equal、KeyQ、KeyW、KeyE、KeyR、KeyT、KeyY、KeyU、KeyI、KeyO、KeyP、LeftBracket、RightBracket、KeyA、KeyS、KeyD、KeyF、KeyG、KeyH、KeyJ、KeyK、KeyL、SemiColon、Quote、BackSlash、IntlBackslash、KeyZ、KeyX、KeyC、KeyV、KeyB、KeyN、KeyM、Comma、Dot、Slash、Insert、KpReturn、KpMinus、KpPlus、KpMultiply、KpDivide、Kp0、Kp1、Kp2、Kp3、Kp4、Kp5、Kp6、Kp7、Kp8、Kp9、KpDelete、Function、Unknown
以下是一个如何配置 key_config 的示例。
key_config = [
{ event = "press", keys = "Return", files = [{ path = "ding.mp3", volume = 1.0 }] },
]
event:表示 "按下" 或 "释放"。keys:用于匹配键的常规表达式(regex)。files:文件数组。path:文件的绝对路径。如果文件嵌入在二进制文件中(即如果它在sounds/目录中),则它是不带完整路径的文件名。volume:声音的音量。值1.0为“正常”音量(未过滤输入)。除1.0以外的任何值都将乘以每个样本。
variation:在每次event*上对声音进行变化
如果您为键事件定义了多个文件,还可以指定播放它们的策略
key_config = [
{ event = "press", keys = ".*", files = [{ path = "1.mp3" }, { path = "2.mp3" }], strategy = "random" },
]
当前支持以下策略
strategy = "random":从列表中随机选择一个文件进行播放。strategy = "sequential":顺序播放文件。
以下是如何将所有内容结合在一起
[[sound_preset]]
# Custom sound preset named "custom"
name = "custom"
# Key configurations for various events
key_config = [
# When a key starting with "Key" is pressed, play 1.mp3, 2.mp3, and 3.mp3 sequentially
{ event = "press", keys = "Key*", files = [
{ path = "1.mp3" },
{ path = "2.mp3" },
{ path = "3.mp3" },
], strategy = "sequential" },
# When a key starting with "Key" is released, play 4.mp3
{ event = "release", keys = "Key*", files = [
{ path = "4.mp3" },
] },
# When a key starting with "Num" is pressed, play num.mp3 at a very high volume (10.0)
{ event = "press", keys = "Num*", files = [
{ path = "num.mp3", volume = 10.0 },
] },
# When any key is pressed, play a random sound from cat.mp3, dog.mp3, or bird.mp3
{ event = "press", keys = ".*", files = [
{ path = "cat.mp3" },
{ path = "dog.mp3" },
{ path = "bird.mp3" },
], strategy = "random", variation = { volume: [0.1, 0.1], tempo: [0.05, 0.05] } },
]
# Disabled keys that won't trigger any sound events
disabled_keys = ["CapsLock", "NumLock"]
声音变化
为了使键盘声音更加多样化,可以改变音量和播放速度(后者也会改变音调)。
值以百分比表示,第一个值确定最大增加量,第二个值确定最大减少量。实际值在每个按键时随机确定。
- 如果设置了命令行参数或环境变量,则覆盖预设中做出的配置。
- 值需要用逗号隔开。
- 如果只提供了一个值,则它用于增加和减少。
- 如果设置了
key_config,则覆盖预设值。 - 预设上的配置适用于所有未设置任何值的
key_config。
类似项目
bucklespring:怀旧的弹簧键盘声音selectric-mode:使您的Emacs听起来像一台真正的打字机
MacOS 权限
在MacOS上,您需要授予运行daktilo的终端一些权限。
第一次运行daktilo时,您可能会看到以下弹出窗口

如果您看到它,请点击“打开系统设置”,否则手动打开“系统设置”并转到“隐私和安全”。从这里,为您的终端应用程序启用“输入监控”

致谢
非常感谢H. Arda Güler给我这个项目的想法,分享它的灵感并实现了Python的第一个版本。
干得好!👾
捐赠
如果您认为我的daktilo和/或其他GitHub项目有用,请考虑在GitHub Sponsors上支持我或成为赞助商!
贡献
此外,请参阅如何添加新预设这里。
许可协议
根据您的选择,许可协议为Apache License Version 2.0或MIT许可。
🦀 ノ( º _ º ノ) - 尊重螃蟹!
版权
版权所有 © 2023-2024,Orhun Parmaksız
依赖关系
~19–54MB
~774K SLoC