MacOSでは、「システム修飾キー」(コピー、貼り付けなどのシステム全体のOSショートカットのキー)はcmd
であり、ctrl
キーとは別のものです。つまり、cmd
キーは、新しいブラウザタブを開いたり、システム全体にコピー/貼り付けしたりするために使用でき、ctrl
キーは、テキストemacsスタイルをナビゲートするために使用できます(例:ctrl-a
OSの任意の場所の行頭に移動します)。
Debianに切り替えて以来、私はこの分離がないことに非常に不満を感じています。これは、私の筋肉の記憶ctrl-a
が行の先頭に移動すると、代わりにすべてのテキストが選択されることを意味します(Macの場合のcmd-a
のように)。
ctrl
キーの職務を別のキーに再割り当てする方法はありますか?これは、ctrl
をキーボードの別のキーに再マップすることを意味するものではありません。まだctrl
を存在させたいのですが、コピー/貼り付けなどに使用したくないので、別の修飾キーでこれを実行し、ctrl
をemacs用に空けておきます-スタイルコマンド。
すべての場合にこれを行うのは難しいかもしれないことを理解していますが、Chrome、ターミナル、および一部のIDEで機能させることができたとしても、それで十分です。
このユースケースに適応できる過去数日間に私が見つけたものの1つは、 AutoKey です。これにより、(とりわけ)特定のキーの組み合わせでpythonスクリプトを実行して、アクションを変更できます。これを使用して、LinuxのmacOSキーボードを模倣できます(ctrl
は独自のキーであり、この場合はcmd
はalt
またはwin
と同義であると見なすことができます。
たとえば、ctrl-a
を変更して行の先頭(emacsスタイル)に移動し、alt-a
を使用してすべてを選択するには、次のスクリプトを作成しました。
import re
if re.match('.*Gnome-terminal', window.get_active_class()):
keyboard.send_keys("<ctrl>+a")
else:
keyboard.send_keys("<home>")
これにより、ctrl-a
はターミナルでの動作を保持できますが、行の先頭に移動するのは他のすべてのプログラムです(例:ChromeおよびIntelliJ)。AutoKeyでは、これはctrl-a
にバインドされ、それがいつでも実行されます。ショートカットが押されました。
別の例は、alt-w
を使用してタブを閉じることです(Chrome、IntelliJ、ターミナルなど)。これは、次のスクリプトをalt+w
にバインドして実行できます。
import re
if re.match('.*(Gnome-terminal|jetbrains-clion)', window.get_active_class()):
keyboard.send_keys("<ctrl>+<shift>+w")
else:
keyboard.send_keys("<ctrl>+w")