web-dev-qa-db-ja.com

Linuxでコンテキストメニューを別のキーに再マップするにはどうすればよいですか?

レノボのシンクパッドを購入したばかりで、その中のすべてを誇りに思っています。 Linuxカーネルと同じくらい堅実な感じです:P。

問題は、Lenovoが右クリックなどを行うキーであるコンテキストメニューキーを削除することにしたことです。彼らはそれをスクリーン印刷キーに置き換えました。キーボードの数値部分にはいくつかのボタンがあります。虫眼鏡のキーがあります。このキーを再マップしてコンテキストメニューを開くか、右クリックキーにします。これを行うことは可能ですか?

他の関連する質問を検索しようとしましたが、Nautilusコンテキストメニューにオプションを追加する方法に関するQ&Aしか見つかりませんでした。このメニューを開くために、キーボードの物理キーをマップしたいです。ちょうど前のように。また、Dellはinspironキーボードにこのキーをドロップしているようです。マウスよりもキーボードを使用するので、何が起こっているのかわかりません。

前もって感謝します。

19
Jhonnytunes

それは少し複雑ですが、あなたはそれを行うことができます。次の手順を実行します:

キーコードを検出する

  1. xevを実行して、キーコードを検出します。

    xev | grep keycode
    
            state 0x0, keycode 36 (keysym 0xff0d, Return), same_screen YES,
            state 0x0, keycode 107 (keysym 0xff67, Menu), same_screen YES,
            state 0x0, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES,
    
  2. 再構成するキーを押します。ターミナルの出力には、keycodeが表示されます(注意してください、いくつかある場合があります)。

テストマッピング

  1. 新しいマッピングを一時的に設定します。私にとってはkeycode 107です:

    xmodmap -e "keycode  107 = Return NoSymbol Return"
    

キーが期待どおりに動作する場合、構成を保存できます。

設定を保存します

  1. 現在のキーマップテーブルを$HOMEに保存して、defauをオーバーライドします。

    xmodmap -pke > ~/.Xmodmap
    
  2. ~/.xinitrcを作成または編集して、構成をロードします。

    $EDITOR ~/.xinitrc
    
  3. 次の行を追加

    if [ -f $HOME/.Xmodmap ]; then
            /usr/bin/xmodmap $HOME/.Xmodmap
    fi
    

楽しい

上記の情報のほとんどは、 ArchWiki記事 からのものです。

13
Ed Villegas

私が見つけた ここ を使用して: shift+F10 コンテキストメニューを開きます。

私はそれが最善の解決策ではないことを知っていますが、一時的な使用に役立つと思いました!

追伸:私もe530cを持っています。これをDebian 7(Wheezy)でテストしました。

12
Bahax

私は最終的にテストの時間後にこれを行う方法を見つけ、失敗します:D

まず、xautomationをインストールします。

Sudo apt-get install xautomation

次に、Ubuntuシステム設定の[キーボード]セクションの[ショートカット]タブに移動します。最初にスクリーンショットエントリに移動して、アクションを別のキーに再マッピングするか、必要に応じて無効にします。 PrtSc(Print)キーをThinkpadの黒いボタン(Launch1)に置き換えました。

次に、[カスタムショートカット]セクションに移動して、ショートカットを追加します。好きな名前を付けてくださいメニュー。 [コマンド]フィールドにこれを挿入します。

xte 'keydown Shift_L' 'key F10' 'keyup Shift_L'

作業は完了です!それは奇跡のように働いています;)

3
Danial Behzadi

これは私のためにトリックをしました。私にとって、ThinkPadの「PrtSc」ボタンのキーコードは107です。ubuntuの「xev」ツールでそれを見つけました。

xmodmap -e "keycode  107 = Menu"

これは一時的な変更です。

このコマンドを/ etc/profileに追加することで永続的にすることができ、起動するたびに実行され、永続的な変更になります。

2
Null Pointer

最近、Lenovo E550を入手し、同じ問題が発生しました。xtexautomationから)とxmodmapを使用して解決しました。

他の回答が完全に機能しないのはなぜですか?

  1. @ Ed Villegas (nor @ Null Pointer )数値部分の上にあるキーの一部は、それ自体が一意のキーではないため(egロックキーは Super+L 組み合わせ)。 xevを使用してロックキーキーコードを見つけようとすると、 Super そしてその L キーコードの場合は、xev出力を1行ずつ解釈するだけです。

  2. @ Bahax および @ John Finegan の場合: Shift+F10 はコンテキストメニューキーであり、すべてのアプリケーションで機能するわけではなく、同じ機能を提供しません Menu。ファイルエクスプローラーでファイルを選択してを押すと Menu ファイル自体のコンテキストメニューがポップアップするはずです。これは、 Shift+F10 組み合わせて、代わりにウィンドウのコンテキストメニューを提供します。

  3. @ Danial Behzadi は、2番目の項目の人々に対して同様のアプローチを取りますが、キーストロークシミュレーターを介してキーボードの組み合わせを1つのキーにリンクすると、キーが Shift+F10 同じ結果を提供します。

働く答え

ThinkPadキーボードにないキーは、次のものであることを考慮することが重要です。 Menu (つまり、名前です)、次の図に示されています。

Menu key

キーは存在しませんが、キーコードはコンピューターに存在する必要があります。キーコードテーブルをxmodmap -pke | grep Menuで印刷することで見つけることができます。

xmodmap output

それを念頭に置いて、 @ Danial Behzadi answerのようにxautomation(キーストロークシミュレーションにxteを使用するため)をインストールします。

Sudo apt-get install xautomation

カスタムショートカットを作成し、Triggerでショートカットにしたいキーを押し、Action paste xte 'key Menu'Applyおよびテスト。

1
Hans