• 作成:
  • 更新:

xkeysnailを使ってSkypeとSlackとDiscordで改行と投稿のキーバインドを統一する

問題

各チャットツールで改行と投稿のキーバインドがバラバラなので覚えられない.

参考: 各ツールにおける改行と投稿のキーバインドの違いがひどいのでまとめた - Qiita

理想の動作

mikutterでは, C-mは改行, Enterは送信にしているのでそれに統一したいです.

本来この2つは同じ動作にするべきなのかもしれませんが軽く押せて便利なので…

使っているのがSkype, Slack, Discordぐらいなのでそれに対応すれば良いです. 最近はSkype使ってないですしそもそもそれ以外のGNU/Linuxデスクトップ対応チャットツールはなかなかないですが.

解決法

mooz/xkeysnail: Yet another keyboard remapping tool for X environment の設定ファイルに以下を書き込みます.

define_keymap(re.compile("Skype|discord"), {
    K("C-m"): [K("Shift-Enter"), set_mark(False)],
    K("Enter"): [K("Enter"), set_mark(False)],
}, "改行と投稿を統一する Skype and Discord")

define_keymap(re.compile("Slack"), {
    K("C-m"): [K("Shift-Enter"), set_mark(False)],
    K("Enter"): [K("Ctrl-Enter"), set_mark(False)],
}, "改行と投稿を統一する Slack")

詰まった所

上書きできない

全体的に多くのアプリケーションを設定しているコードでC-mを改行にマッピングしていて上書きできない.

上の方に書くことで解決しました.

mozcとバッティングする

当初Slack上ではC-mM-Enterに割り当てていたため, 日本語入力中とかで変換画面が開かれてるとMetaがメニューへのアクセスだと見なされてメニューバーが開いてしまいます. Shift-Enterでも改行可能だそうなのでそちらに統一しました.

またmozcのキーマップで

Suggestion	Shift Enter	CommitFirstSuggestion

というサジェストから選択するという動作が割り当てられていたため無効化しました.

2021年3月25日追記: SlackのUI選択が増えたので変更

これを書いた当初には無かったのですが、最近のSlackはスラッシュコマンドを入力するとサジェスト出してきて、 Enterで確定するUIみたいなのが増えました。

また、設定でEnterで改行を選択するオプションが日本語版じゃなくても出来るようになったらしい? 未確認ですが。

なので以下のほうが良いでしょう。

define_keymap(re.compile("Mikutter.rb|Skype|discord"), {
    K("C-m"): [K("Shift-Enter"), set_mark(False)],
    K("Enter"): [K("Enter"), set_mark(False)],
}, "改行と投稿を統一する")

define_keymap(re.compile("Slack"), {
    K("C-m"): [K("Enter"), set_mark(False)],
    K("Enter"): [K("Ctrl-Enter"), set_mark(False)],
}, "改行と投稿を統一する")