web-dev-qa-db-ja.com

LinuxでThinkpadUSBキーボードの戻る/進むキーを再マップすることは可能ですか?

Thinkpadラップトップでは、独自のキーコード(166および167)があるため、戻る/進むキーを別のキーに簡単に変更できます(通常はPageDown/PageUpにマップします)。

xmodmap -e 'keycode 166=Prior'
xmodmap -e 'keycode 167=Next'

ただし、Thinkpad USBキーボードでは、戻る/進むキーがそれぞれAlt + LeftおよびAlt + Rightにハードマップされているように見えるため、xmodmapを使用してそれらを再マップすることはできません。それらを再マップできる他の方法はありますか?私はすでにxautomationを試しましたが、それはうまくいきませんでした。

これは、進むキーを押したときに「xev」が表示するものです。

KeyPress event, serial 36, synthetic NO, window 0x4e00001,
    root 0xb4, subw 0x0, time 65023191, (16,-20), root:(641,33),
    state 0x0, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyPress event, serial 36, synthetic NO, window 0x4e00001,
    root 0xb4, subw 0x0, time 65023191, (16,-20), root:(641,33),
    state 0x8, keycode 114 (keysym 0xff53, Right), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 36, synthetic NO, window 0x4e00001,
    root 0xb4, subw 0x0, time 65023271, (16,-20), root:(641,33),
    state 0x8, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 36, synthetic NO, window 0x4e00001,
    root 0xb4, subw 0x0, time 65023271, (16,-20), root:(641,33),
    state 0x0, keycode 114 (keysym 0xff53, Right), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False
8
  1. インストール xdotool
  2. 実行するkeypressコマンドのスクリプトまたはシェルエイリアスを作成します(xdotool key --clearmodifiers Page_Down
  3. そのスクリプト/エイリアスをデスクトップ環境のホットキー/ショートカット構成で送信されたコンボ(Alt + Left)にバインドします。

Gnome-control-centerでは、USBキーボードの戻る/進むボタンをショートカットに割り当てることができないようです(あなた実際にそれらを割り当てることはできますが、マップしたコマンド/アクションが呼び出される/発生することはありません)。そのため、compizのコマンドプラグインなど、他の何かを使用する必要がある場合があります。

0
SleighBoy

私はこれを私の.bashrcに入れました:

# this maps the previous and next page buttons to pgup and pgdown 
xmodmap -e "keycode 167 = Next" 
xmodmap -e "keycode 166 = Prior"

うまく機能しますが、何らかの理由でvirtualbox6でそれをカットしていないようです。

0
Stu