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 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许可。
🦀 ノ( º _ º ノ) - 尊重螃蟹!
版权
版权所有 © 2023-2024,Orhun Parmaksız
依赖关系
~19–54MB
~774K SLoC