4

Ctrl+Left/Right は通常、カーソルを 1 単語左/右に移動することにマップされますが、Ctrl+Up/Down は通常、Linux アプリでは何にもマップされません。同じ精神で、Ctrl+Up/Down を Up/Down キーの 5 回の繰り返しに再マップしたいと考えています。xmodmapXKB構成を使用して、またはXKB構成を介してそれを行う方法はありますか? 私は XKB で本当にカスタムしたことをいくつか行いました (私の右の Alt は Overlay2 です) が、1 つのイベント/キーに対して複数のイベント/複数のキーを送信できるようにするためにどこから始めればよいかわかりません。

回避策として、vim でこれを行うことができます。

(n/i/v)map <C-Up> <Up><Up><Up><Up><Up>
(n/i/v)map <C-Down> <Down><Down><Down><Down><Down>

ただし、これを gedit と Eclipse でも機能させることは、私にとって十分な回避策です。何か案は?

4

2 に答える 2

6

これに使えますxbindkeys.xbindkeysrcX セッションで xbindkeys を記述して開始する必要があります (または.xinitrc.xsessionDM/WM に適切なオプションがある場合はそのオプションを使用できます)。X プログラムにキーを送信するための何かが必要になります。私xteはパッケージから使用しましたxautomationが、次のようなものを使用することもできますxmacro(例はこちら)。

あなた.xbindkeysrcは次のようなものを書きます:

"xte 'keyup Control_L' 'keyup Control_R' 'key Up' 'key Up' 'key Up' 'key Up' 'key Up'"
     Control + Up

Control + Down(例の改行が必要です)についても同じです。これにより、コントロール キーが解放され (無限に上に行きたくない場合は重要です)、上に 5 回押します。

于 2013-02-07T14:02:31.720 に答える
1

Trudberts の回答に基づいて.xbindkeysrc、次のようになりました。

"xte 'keyup Control_L' 'keyup Control_R' 'key Up' 'key Up' 'key Up' 'key Up' 'key Up' 'key Up' 'keydown Control_L'"
    Control + Up
"xte 'keyup Control_L' 'keyup Control_R' 'key Down' 'key Down' 'key Down' 'key Down' 'key Down' 'key Down' 'keydown Control_L'"
    Control + Down

これにより、2 つのことが修正されます。まず、コントロールを押したままにすると、Up/Down を押すたびに (4 行ではなく) 5 行移動し、最初に押した後も機能します (Trudbert の回答はそうではありませんでした)。

2 つの問題があります。Control_R はうまく機能せず、Ctrl+Up を押したままにしても、Up を押したままにした場合と同様に、キーが自動リピートされません。Trudbert に報奨金を授与しますが、その期間が終了します。

それまでの間、誰かがこれを修正する方法を考えてくれることを願っています。リリース イベントが発生するまで 5 つのアップを繰り返し続けるカスタム スクリプトを考えていました。

于 2013-02-09T22:38:03.840 に答える