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 custom
key_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