beep 音はあまり鳴って欲しくないので neovim と Terminal の beep setting は全て off 。
それでも稀に beep 音が鳴ってしまう。しかし、稀すぎて再現できず。
が、最近再現できたので、それに対処したログを残しておきます。
環境
- OS: macOS Mojave 10.14.6
beep が鳴る原因
『^;(control + ';')』を入力した際に beep が鳴ることを見付けました。
Terminal.app に限らず Safari といった他の Application でも鳴るので、macOS 側の設定のようです。
対応: DefaultKeybinding.dict
OSX 時代から DefaultKeybinding.dict という物があって、それで keymap を設定できるようです。
参考のリンクで一番古いのは2010年とか。そのくらい前から存在しているらしい。
最終的には ~/Library/KeyBindings/DefaultKeyBinding.dict に
だけ記述。
一度 Application を落として ^; を入力しても何も鳴らない。よし。
参考のリンクで一番古いのは2010年とか。そのくらい前から存在しているらしい。
最終的には ~/Library/KeyBindings/DefaultKeyBinding.dict に
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* copy to ~/Library/KeyBindings/DefaultKeyBinding.dict */ | |
{ | |
"^;" = ("insertText:", ""); /* disable beep */ | |
} |
一度 Application を落として ^; を入力しても何も鳴らない。よし。
寄り道
- 'noop:' を設定してはダメなのか
- 設定してみたこともあります。が、どうも『noop: だから beep が鳴る』みたいです。
- DefaultKeyBinding.dict 自体始めて触るので、まず map ができているか怪しかった。
- 一度「特定の文字を insert する」ように map して、DefaultKeyBinding.dict が有効な事を確認。
- それから「空の文字列を insert する」ことで beep を抑えている状態です。
- 他の組み合せでは beep は鳴らないのか
- 'noop:' の物は基本鳴ります。
- なので control + 記号 とかは beep 祭りです。
- 全組み合せを設定しても良いのですが、特に鳴りまくる物を見付けたら設定していこうかと。
- Keyboard 側の Setting でそもそも beep が鳴らないようにするのがベストな気がします。
- が、Input Method "ASCII" には 設定項目が存在せず、 AquaSKK にも無い。
- ので keymap でアドホックに回避してる状態です。
- macOS 側の KeyBinding と衝突した場合はどうなるのか
- macOS 側の設定が優先されました。
- system-wide の key binding とか参考にならなかったのか
- /System/Library/Frameworks/AppKit.framework/Resources/StandardKeyBinding.dict ですね。
- Property List Editor で開けると記述されているが、そんな Application は存在せず。
- .plist を開ける XCode で開こうと試す。
- 追加コンポーネントをダウンロードし始めたので、開けるかも、と期待。
- で、ダウンロードしても開けず。えー。
- 最終的に私自身の dot_files に入れることにしました。
- .config/nvim/init.vim といったファイルは symlink で設定を配置しています。
- が、DefaultKeyBinding.dict は symlink を follow してくれない。
- ので cp することで対応しています。