• 作成:

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

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