CapsLockをエスケープしてシステム全体に制御し直す


18

CapsLockキーを単独で押すとエスケープキーとして機能し、別のキーで押すとコントロールキーとして機能するように、CapsLockキーシステム全体を再マップすることは可能ですか?


5
これは非常に難しいようです。たとえば、押されたばかりのキーがわからないため、キーダウンイベントを生成できませんでした。別のキーを押さずにリリースされた場合はエスケープで、それ以外の場合はコントロールでした。
cjm

回答:


16

xcapeと呼ばれる非常に良いソリューションを見つけました。READMEから:

xcapeはデーモンとして実行され、Controlキーをインターセプトします。Controlキーが単独で押されて離されると、Escキーイベントが生成されます。

これは、Caps LockキーをControlに再マップした場合に意味があります。このプログラムの将来のバージョンはあなたのためにそのマッピングを行うかもしれませんが、今のところこれはあなた自身でしなければならないことです。


これを行うためのハックスクリプトを作成しました:github.com/cmatheson/super-caps
cam

6

Vimでより快適に入力できるように、CapsをEscapeにマッピングしました。私は使用してxmodmapこれを入れました~/.Xmodmap

clear Lock
keycode 0x42 = Escape

適用するには:xmodmap ~/.Xmodmap。これを〜/ .bash_profileなどのファイルに入れることができます(ログインマネージャーを使用しないので、〜/ .xinitrcに入れます。

CapsLock + [別のキー]をマップするには、の使用を検討してくださいxbindkeys


4

システム全体でキーを再マッピングするためのLinux専用ソリューションは、単純なudevルールを記述することです。Xに依存せず、任意の端末またはアプリで動作し、2つのファイルをコピーするだけで、最近のLinuxインストール間で移植可能です。

2つのファイルを作成する必要があります。1つはカーネルにキーの再マッピングを指示するudevルールを含み、もう1つは必要な実際のマッピングを含みます。

この方法を使用して、キーボード全体をリマップしました。コードはインスピレーションとして役立つかもしれませんhttp://git.adirat.com/carpalx-keyboard


リンクは無効です。更新してください。ありがとう!
qed

私はそれを更新しました、遅れてすみません
-gimmesudo

Bitbucketは「あなたはこのリポジトリにアクセスできません。」と言います。再び公開できますか?ありがとう!
天一

@TianyiCui今すぐリンクをチェック
-gimmesudo

1
リンクが停止またはブロックされています。実際のファイルを回答に入れる可能性はありますか?
ラビリンス


1

AskUbuntuで別の言葉で書かれた質問に出くわしましたが、良い答えがありましたが、システムで動作するように少し修正する必要がありました。

そこにあるルイとセルギーのコメントごとに、Ubuntu 16.04(Xenial)で動作するこのソリューションを思いつき、使用している他のLinuxシステムに持ち込む予定です。

xcapeをインストールし、次のコード行を.profileホームディレクトリのファイルに配置しました。

更新された方法:

さまざまなディスプレイマネージャー(gdm / kdm / sddm / etc)が奇妙な動作をしsetxbmap、サスペンド/再開またはロック/ロック解除後にリセットするため、オプションを継承する方法で設定する方法を発見しました。常にリセットします。一時停止と再開を頻繁に行うため、xcape実行中のコピーが大量に取得されないようにする必要がありましたが、これは以下の新しいスクリプトで解決されます。

最初にキーボード設定を変更しsudo gedit /etc/default/keyboardて設定しXKBOPTIONS="ctrl:nocaps"、次に~/.xprofile以下の単一行を入力します。

ps aux | grep -i '[x]cape' && killall -9 xcape; hash xcape 2>&1 >/dev/null && xcape -e 'Control_L=Escape' -t 100 &

うまくいけば、スクリプトのさまざまなセクションが時間とトラブルを節約し、ログインのスタックを防ぎます。最初に実行中のインスタンスが存在するかどうかを確認し、それを強制終了xcapeします。これはCtrlをEscにマップするだけなので、このhash部分はxcape インストール済みであることを確認します。そうしないと、すべての起動のためにログインしようとするとシステムがハングする可能性がありますスクリプトは正常に終了することが期待されています。

古い方法:

setxkbmap -option 'caps:ctrl_modifier'; xcape -e '#66=Escape'

セルギー:

Ubuntu 14.04のシステム設定にはキーボードレイアウトがないため、gnome-tweak-toolを使用してCaps LockをCtrlにマップしました。その後、xcape -e 'Control_L = Escape'は機能しませんでしたが、xcape -dを使用した後、Caps Lockがキーコード66を生成し、それぞれ再マッピングすることを発見しました:xcape -e '#66 = Escape'。–セルギイ・ベロジヨロフ14年9月4日10:08

ルイス:

このブログ投稿によると、xcapeのみでこれを行うことができます。setxkbmap -option 'caps:ctrl_modifier'; xcape -e 'Caps_Lock = Escape' setxkbmap -option 'caps:ctrl_modifier'; xcape -e 'Caps_Lock = Escape; Control_L = Escape; Control_R = Escape' –ルイシモーノー15年8月4日10:06に

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.