🎙️
[Karabiner-Elements] MacでPush to Talk(キーを押している間だけ音声送信状態にする)を実現する
Push to Talk(PTT)
Web会議をしていて、あるキーを押しているだけ音声を送信するようにしたいと思っていました。
だいたいのWeb会議ツールにはミュート・アンミュートを切り替えるショートカットがありますが、今回はシステム設定で音声の入力をコントロールしたいと思います。
利用するもの
- AppleScript
- Karabiner-Elements
音声入力レベルをコントロールするAppleScriptを作成
~/.config/karabiner/adjust_mic_volume.applescript
に作成します。
adjust_mic_volume.applescript
#!/usr/bin/osascript
on run argv
set micVolume to (item 1 of argv)
set volume input volume vol micVolume
display notification ("Set mic volume to " & micVolume) with title "Mic"
return micVolume
end run
set volume input volume <number>
でシステムの入力音量を設定することができます。
./adjust_mic_volume.applescript <number>
で音量を変更できます。
./adjust_mic_volume.applescript 0
でミュート、 ./adjust_mic_volume.applescript 100
で最大音量となります。
AppleScriptを実行するキーを設定する
上記のAppleScriptを実行するキーをKarabiner-Elementsで割り当てます。
私はF5に割り当てていますが、好きなキーを割り当ててください。
この設定で次のことができるようになります。
- F5 を押している間だけアンミュートする
- F5 を離すとミュートになる
- Cmd+F5 を押すとアンミュートのままになる
karabiner.json
{
"profiles": [
{
"complex_modifications": {
"rules": [
....
{
"description": "Push to talk",
"manipulators": [
{
"from": {
"key_code": "f5"
},
"to": [
{
"shell_command": "~/.config/karabiner/adjust_mic_volume.applescript 80"
}
],
"to_after_key_up": [
{
"shell_command": "~/.config/karabiner/adjust_mic_volume.applescript 0"
}
],
"type": "basic"
},
{
"from": {
"key_code": "f5",
"modifiers": {
"mandatory": [
"left_command"
]
}
},
"to": [
{
"shell_command": "~/.config/karabiner/adjust_mic_volume.applescript 80"
}
],
"type": "basic"
}
]
}
]
}
}
]
}
少し解説
-
shell_command
によりキーを押したときにshellのコマンドを実行します - F5を押すと入力レベルを80に設定する
shell_command
が実行され、to_after_key_up
によりキーを離したタイミングで0にするshell_command
が実行されます
Discussion