有馬総一郎のブログ

(彼氏の事情)

2021年05月09日 23:37:15 JST - 4 minute read - Mozilla

Muttator、Dorando keyconfigの代替となる?Thunderbird 68以後もキーバインド変更可能なMailExtensions形式アドオンtbkeys

バージョン60まで公式推奨アドオンとしての地位を築いていた Dorando keyconfig。かつてこのブログでも紹介したことがある。

Muttatorの代わりにDorando keyconfigを使う1

いつ68以降に対応してくれるのかなぁと、少額ながら寄付2して待ってたが、なかなか対応されない。そんなときに、レビューを見ると

Custom Thunderbird keybindings with this addon for Thunderbird 68+:
https://addons.thunderbird.net/en-US/thunderbird/addon/tbkeys-lite/

というコメントが。なに…

試すと「こいつ・・・動くぞ!」

カスタマイズが細かく載っている。

tbkeys-lite

tbkeys-lite is a version of tbkeys with the ability to execute arbitrary javascript removed.
tbkeys-liteは、任意のjavascriptを実行する機能が削除されたtbkeysのバージョンです。

とのことなので、どうせなら100%のものを使ってみたい。どうしてか、Lite版しかアドオン検索画面からはヒットしないので

から tbkeys.xpi を落してきてインストール3

デフォルトのキーバインドは Gmailとほぼほぼ同じとなっている。muttに寄せるか、Gmailに寄せるかは悩ましいところだが。

Main key bindings

{
    "j":       "cmd:cmd_nextMsg",
    "k":       "cmd:cmd_previousMsg",
    "o":       "cmd:cmd_openMessage",
    "f":       "cmd:cmd_forward",
    "#":       "cmd:cmd_delete",
    "r":       "cmd:cmd_reply",
    "a":       "cmd:cmd_replyall",
    "x":       "unset",
    "q":       "func:CloseTabOrWindow",
    "c":       "func:MsgNewMessage",
    "u":       "tbkeys:closeMessageAndRefresh",
    "h":       "window.document.getElementById('tabmail-tabs').advanceSelectedTab(-1, true)",
    "l":       "window.document.getElementById('tabmail-tabs').advanceSelectedTab(1, true)",
    "ctrl+j":  "window.document.getElementById('messagepane').contentDocument.documentElement.getElementsByTagName('body')[0].scrollBy(0, 100)",
    "ctrl+k":  "window.document.getElementById('messagepane').contentDocument.documentElement.getElementsByTagName('body')[0].scrollBy(0, -100)",
    "ctrl+r":  "func:LoadMsgWithRemoteContent",
    "shift+j": "cmd:cmd_nextUnreadMsg",
    "shift+k": "cmd:cmd_previousUnreadMsg",
    "+":       "cmd:cmd_markAsFlagged"
}

Compose key bindings

{
    "ctrl+y": "cmd:cmd_sendWithCheck",
    "ctrl+f": "cmd:cmd_attachFile"
}

とした。

githubのREADME.mdにいくつかコマンド、ファンクション、Javascriptの実装方法が紹介されている。 mainCommandSetから、実行したいコマンド、ファンクションなどを調査する。

このメッセージ内のリモートコンテンツを表示する
このメッセージ内のリモートコンテンツを表示する

このメッセージ内のリモートコンテンツを表示するメニュー -> ツール -> 開発ツール -> 開発ツールボックス(Ctrl+Shift+i)4から、

Thunderbird 開発ツールボックス
Thunderbird 開発ツールボックス
<menuitem xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" id="remoteContentOptionAllowForMsg" label="このメッセージ内のリモートコンテンツを表示する" accesskey="S" oncommand="LoadMsgWithRemoteContent();"/>

を見つけだして、設定した。

メール作成画面でのコマンドやファンクションの見付け方が分からず困ったが、そこはDorando keyconfigの時に参照した mozsearchから何とか辿りついた。

https://searchfox.org/comm-central/source/suite/mailnews/components/compose/content/messengercompose.xul

95	<command id="cmd_sendButton" oncommand="goDoCommand('cmd_sendButton')"/>
96	<command id="cmd_sendNow" oncommand="goDoCommand('cmd_sendNow')"/>
97	<command id="cmd_sendWithCheck" oncommand="goDoCommand('cmd_sendWithCheck')"/>
98	<command id="cmd_sendLater" oncommand="goDoCommand('cmd_sendLater')"/>

https://searchfox.org/comm-central/source/suite/mailnews/components/compose/content/messengercompose.xul

88	<command id="cmd_attachFile" oncommand="goDoCommand('cmd_attachFile')"/>
89	<command id="cmd_attachPage" oncommand="goDoCommand('cmd_attachPage')"/>

githubのREADME.mdには

Defining a key sequence (meaning multiple keys in succession) where the first key combination in the sequence is the same as a built-in shortcut (like ctrl+j ctrl+k) is not supported. Single keys with modifiers may be mapped to override the built-in shortcuts but not sequences.
キーシーケンス(複数のキーを連続して入力すること)を定義する際、最初のキーの組み合わせが内蔵のショートカット(ctrl+j ctrl+k など)と同じであることはサポートされていません。 修飾子付きの単一キーは、組み込みのショートカットを上書きするようにマッピングすることができますが,シーケンスはできません。

とあるが、実際はctrl+jとctrl+kはそれぞれキーバインドできている。連続するボタン、つまりCtrl+j 次に Ctrl+kだと、Ctrl+jが 保存したファイル のショートカットキー5と被ってるから無理ですよーってことかな。

フォルダ移動もキーバインドしたかったが、どうも上手く行かない。

どうしてもフォルダ操作を快適にしたいなら、 How to navigate folders? · Issue #72 · wshanks/tbkeys · GitHubにあるとおり

Nostalgy++を使うのが手っ取り早い。

操作方法はメッセージ本文の右下の N++ Help をクリックするとヘルプ画面がポップアップ表示され、そこに書いてある。キーが被った場合は、tbkeyが優先される。またEsc-fの時もtbkeyfが優先される。

Nostalgy++
Shortcut Description
g Open a specific folder
s Move the current message to a specific folder
b Move the current message to a specific folder and go there
c Copy the current message to a specific folder
l Hide/show the folder pane
ESC-f Focus the folder pane
ESC-m Focus the message pane
ESC-r Open the attachment list in the message pane
ESC-1 Display the first image attachment (ESC-2 the second, etc)
ESC-ESC Focus the thread pane
ESC-ESC-ESC Focus the thread pane, clear quick search box, select the “All” view. (currently not working in TB78 - may be updated)
Ctrl-Left/Right S

正直、多機能過ぎるので、両方インストールすると、混乱しそう。

そうでなくてもtbkeyは、メッセージの移動とかするとたまに文字化けを起こしたり、オプションのSettingsの中身が表示されなかったり、少し不安定なところもある。

tbkeys

まずはtbkeyだけを使っていこうと思う。


  1. 過去の記事を見るとMuttatorをMutattorとずっとタイポしていた。直した。 ↩︎

  2. Rewritten add-ons for Mozilla Thunderbird’s next release by Jonathan Kamens — Kickstarter ↩︎

  3. about:configで設定名dom.compartment_per_addonの値をfalseとかにしなくてもいつのまにか大丈夫になったんだね。ちなみにLite版と二つインストールすることは可能だが、明らかに挙動がおかしくなる。 ↩︎

  4. 接続を許可しますか?はOK ↩︎

  5. Thunderbird のキーボードショートカット ↩︎