9 个版本 (5 个重大更新)
| 0.6.0 | 2024年4月10日 |
|---|---|
| 0.5.0 | 2023年10月18日 |
| 0.4.0 | 2023年10月15日 |
| 0.3.1 | 2023年10月10日 |
| 0.1.0-alpha.0 | 2023年9月30日 |
#22 in 多媒体
每月61次下载
645KB
806 行
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 License 下许可。
🦀 ノ( º _ º ノ) - 尊重螃蟹!
版权
版权所有 © 2023-2024, Orhun Parmaksız
依赖关系
~21–58MB
~866K SLoC