Ubuntu で特定のキーまたはデバイスを再マップする方法は?


キーボードショートカット-keysxorg

ubuntu で特定のキーを再マップする方法を探しています.

すなわち

PgUp を Home に、または PgDown を End に変更したいです.

組み込みコマンドまたはツールは、Ubuntu/GNOME でキーを再割り当てしますか?

受け入れられた回答



注意: 2013 年の時点で、Ubuntu および派生物は xmodmap を使用しなくなりましたが、代わりに xkb を使用します.詳細については、this answer を参照してください.以下の回答は、現在のリリースには関係ありません.


特定のキーを再マッピングするには、2 つのツールが必要です.最初の xev (コマンド ライン ツール) と 2 番目の xmodmap (コマンド ライン ツール).両方とも、追加のインストールなしで Ubuntu で利用できるはずです.
  • ターミナル ウィンドウを起動し、 xev を実行します.これでアクティブになり、キーを押すのを待ちます.次に、動作を変更するキーを押します.つまり、ページアップ.
  • xev は、押されたキーに関する情報を出力します. 3 行目が重要です.次のようになります.

  • state 0x10, keycode 110 (keysym 0xff55, Prior), same_screen YES,
    
    


    この例では、Prior はその時点でキーが割り当てられている動作の名前です.数字のキーコードは、キーを認識するための内部 ID です.
    これを別のキー、つまり PgDown で実行すると、この出力が得られます

    state 0x10, keycode 115 (keysym 0xff56, Next), same_screen YES,
    
    


    ここでも興味深い部分は keycode 115Next で、動作の名前です.
  • 2 つのキーを交換する場合は、 xmodmap を使用します.

  •  xmodmap -e "keycode 110 = Next"
    
    


    これにより、キーボードのキーコード 110 のキーがアクション Next に変更されます.とても簡単です.

    マッピングしているキーが Shift キーと一緒に使用されたときに別の意味を持つ必要がある場合 (たとえば、英国のキーボード レイアウトの場合、Shift+2 は引用符を与えます)、最初のコマンドの後に 2 番目のコマンドを単にリストすることができます.たとえば、コード 53 のキーを通常はバックスラッシュにマップしたいが、シフトで使用するとバー記号にマップしたい場合は、次のようにします.

     xmodmap -e "keycode 53 = backslash bar"
    
    


    追加情報: これらのマッピングの順序は、Key、Shift+Key、mode_switch+Key、mode_switch+Shift+Key、AltGr+Key、AltGr+Shift+Key です.列をスキップするには NoSymbol を使用します.さらに、here はすべてのキーシムの包括的なリストです.

    注: これらの変更は、アクティブな X セッションのみを対象としており、再起動後に失われます.
    変更を永続的に保存する場合は、上記のコマンドの後に次のコマンドを実行する必要があります.

    xmodmap -pke >~/.Xmodmap
    
    


    (ホームディレクトリに .Xmodmap という名前のファイルが作成されます( ~ ))

    次に、コマンド .xinitrc を入れるホームディレクトリに xmodmap .Xmodmap という名前のファイルを作成する必要があります.
    .Xmodmap を変更し、コンソールから xmodmap .Xmodmap を実行して、変更をすぐに確認できるようになりました. .Xmodmap の変更は持続します.

    ソース: Ubuntu Foruns

    ボーナス要素:



    再マッピングしているキーの動作が状態によって異なる場合 (
    数字キーボードのキーが NumLock に依存するのと同じように) xmodmap -pm を実行して修飾子のリストを取得し、次のようにするだけです.
    xmodmap -e "KEYCODE MODIFIER = behaviour behaviour_with_modifier"
    たとえば、数字キーボードでコンマの代わりにピリオドを取得したいが (ほとんどのプログラマーにとって便利です)、NumLock がオフのときは「削除」動作を維持したいとします.

    xmodmap -e "keycode 91 mod2 = KP_Delete period"
    
    

    mod2xmodmap -pmmod2Num_Lock であることを示しているため、他の名前は xev のキーを押すことによって取得されます.

    投稿 How to remap certain keys or devices in Ubuntu?Stack All Flow に最初に表示されました.