web-dev-qa-db-ja.com

文字をalt + [いくつかのキー]にバインド/マップしますか?

OS:Ubuntu

プログラミングやさまざまな端末プログラム(Screen、Vim)では、[、]、{、}がよく使われる傾向があります。私はノルウェー語のキーボードを使用しています。これらのキーボードは、快適にするには指を少し長く伸ばさなければならないように配置されています。簡単にするために、alt + [いくつかのキー]をこれらの文字の1つにしようと思います。 alt +æ(ノルウェー語の文字)をシステム全体の「{」にバインドする方法はありますか?

ところで、そのようなものはバインディング、マッピング、または何か他のものと呼ばれていますか?用語に少し混乱しています... :)

4
Paul

残念ながら、Alt +キーを使用してそれを行うことはできません。コマンドウィンドウでAlt + keyを入力することは、Escapeを押してからキーを押すこととまったく同じです。

ただし、ある種の解決策はありますが、少し手間がかかり、Xを実行していることを前提としています。ターミナルエミュレーターのscreen/vimは引き続きこれで動作します。

スペイン語キーボード を使用し、[]{}記号は右手の小指の右側のキーにありますが、 AltGrキー も押す必要があります。それは私の右手を少しつぶしすぎることを意味します。 xmodmap を使用してこれを変更しました。

.Xmodmapというファイルを ホームディレクトリ に追加すると、Xにログインするたびにそのファイルが取得されます。または、xmmodmap ~/.Xmodmapを使用していつでも実行できます。

これを設定する方法の例を次に示します。右中括弧記号}は、キーボードのçが付いたキーにありますが、右中括弧を取得するには、キーと一緒にAltGrを押す必要があります。これにマップされているキーコードを確認するには、xmodmap -pkを使用します。

$ xmodmap -pk | grep brace
51 0x00e7 (ccedilla) 0x00c7 (Ccedilla) 0x00e7 (ccedilla) \
   0x00c7 (Ccedilla) 0x007d (braceright) 0xfe55 (dead_breve)
# split to prevent scroll, this is all on one line

これは、キーコード51がさまざまな修飾子を使用してこれらのキーにマップされることを意味します。 man xmodmapのコメントは次のとおりです。

keycode NUMBER = KEYSYMNAME ...
 The list of keysyms is assigned to the indicated keycode (which may be
 specified in decimal, hex or octal and can be determined by running the xev
 program). Up to eight keysyms may be attached to a key, however the last
 four are not used in any major X server implementation. The first keysym is
 used when no modifier key is pressed in conjunction with this key, the
 second with Shift, the third when the Mode_switch key is used with this
 key and the fourth when both the Mode_switch and Shift keys are used.

だからここにあります:

  • 修飾子なし=ccedillaç
  • シフト=CcedillaÇ
  • Mode_switch = ccedilla
  • Mode_switchおよびshift = Ccedilla
  • AltGr = braceright}

実験してみると、5番目のエントリは実際にはAltGrとキーが押されたときのようです。ドキュメントについてはこれだけですよね? Mode_switchキーが何であるかはわかりません。確かに、Alt、Shift、またはCtrlではありません。

この最も役に立たないキーをデフォルトで}に変更したかったのです。私の.Xmodmapのエントリは次のとおりです。

keycode 51 = braceright Ccedilla ccedilla Ccedilla braceright dead_breve

私はccedillasを書くことはありません(この投稿を除いて、ここではÇを入力して、 Vimguwを使用して小文字にします!)ので、書きません。それらを逃します。 ]が付いているキーなど、他のキーは扱いにくいものでした。このキーには*+]が書かれています。プラスを別のキーに移動し(重複する逆さまの感嘆符¡を削除)、デフォルトで]を吐き出し、シフトを使用して*を吐き出しました。そのままにしておいたAltGrの動作。

他のコーダーのキーに対応する他のキーコードについても同様のエントリがあります。時々、ハッキングのためだけに米国または英国のレイアウトを再学習する必要があると思います。しかし、私は電子メールの派手な鍵が恋しいです。

1
richq