Logicool MX400の検索ボタンを再マップするにはどうすればよいですか?


10

Logicool MX400ワイヤレスを持っています。貼り付けに使用したい検索ボタンがあります(非常に敏感ですが、スクロールホイールを押すのは難しい)。xbindkeysを使用して他のボタンを再マップし、xevを使用してボタンプレスコードを見つけましたが、これは検索ボタンでは機能しません。xevを使用して検索ボタンをクリックすると、次のイベントが発生します

FocusOut event, serial 34, synthetic NO, window 0x3c00001,
    mode NotifyGrab, detail NotifyAncestor

FocusIn event, serial 34, synthetic NO, window 0x3c00001,
    mode NotifyUngrab, detail NotifyAncestor

KeymapNotify event, serial 34, synthetic NO, window 0x0,
    keys:  4294967275 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   
           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   

PropertyNotify event, serial 34, synthetic NO, window 0x3c00001,
    atom 0x1d7 (_NET_WM_ICON_GEOMETRY), time 23653064, state PropertyNewValue

ButtonPressイベントはありません。Xイベントの下のレベルで検索ボタンが傍受されているようです。何か案は?私はubuntu 12.04を持っています。Ubuntuは実際にクリックを認識して検索ダイアログを生成しますが、xevにはクリックイベントの痕跡はありません。

編集する

xmodmapで提供されているメソッドを確認しました。私.Xmodmapには次の行が含まれています

keycode 225 = XF86Paste NoSymbol XF86Paste``

ここで実行xmodmap ~/.Xmodmapすると、ボタンが完全に無効になります(または、少なくとも、ボタンを押しても結果が得られません)。私が試しましたxmodmap -pke、そしてそれは印刷します:

keycode 225 = XF86Paste NoSymbol XF86Paste NoSymbol XF86Paste

奇妙なことに。他のすべてのエントリは同様にフォーマットされます。私は解決策に近いですが、まだ奇妙なことが残っています。

編集2

私はxinputを実行しようとしました(このコマンドを聞いたことはありません。素晴らしいものです)。Logitechには2つのエントリがあります。それぞれのリストの出力は次のとおりです(ID 9および10)。

Logitech USB Receiver                       id=9    [slave  pointer  (2)]
    Reporting 7 classes:
        Class originated from: 9. Type: XIButtonClass
        Buttons supported: 24
        Button labels: "Button Left" "Button Middle" "Button Right" "Button Wheel Up" "Button Wheel Down" "Button Horiz Wheel Left" "Button Horiz Wheel Right" "Button Side" "Button Extra" "Button Forward" "Button Back" "Button Task" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown"
        Button state:
        Class originated from: 9. Type: XIValuatorClass
        Detail for Valuator 0:
          Label: Rel X
          Range: -1.000000 - -1.000000
          Resolution: 1 units/m
          Mode: relative
        Class originated from: 9. Type: XIValuatorClass
        Detail for Valuator 1:
          Label: Rel Y
          Range: -1.000000 - -1.000000
          Resolution: 1 units/m
          Mode: relative
        Class originated from: 9. Type: XIValuatorClass
        Detail for Valuator 2:
          Label: Rel Horiz Wheel
          Range: -1.000000 - -1.000000
          Resolution: 1 units/m
          Mode: relative
        Class originated from: 9. Type: XIValuatorClass
        Detail for Valuator 3:
          Label: Rel Vert Wheel
          Range: -1.000000 - -1.000000
          Resolution: 1 units/m
          Mode: relative
        Class originated from: 9. Type: XIScrollClass
        Scroll info for Valuator 2
          type: 2 (horizontal)
          increment: 1.000000
          flags: 0x0
        Class originated from: 9. Type: XIScrollClass
        Scroll info for Valuator 3
          type: 1 (vertical)
          increment: -1.000000
          flags: 0x2 ( preferred )


Logitech USB Receiver                       id=10   [slave  pointer  (2)]
    Reporting 6 classes:
        Class originated from: 10. Type: XIButtonClass
        Buttons supported: 7
        Button labels: "Button 0" "Button Unknown" "Button Unknown" "Button Wheel Up" "Button Wheel Down" "Button Horiz Wheel Left" "Button Horiz Wheel Right"
        Button state:
        Class originated from: 10. Type: XIKeyClass
        Keycodes supported: 248
        Class originated from: 10. Type: XIValuatorClass
        Detail for Valuator 0:
          Label: Rel X
          Range: -1.000000 - -1.000000
          Resolution: 1 units/m
          Mode: relative
        Class originated from: 10. Type: XIValuatorClass
        Detail for Valuator 1:
          Label: Rel Y
          Range: -1.000000 - -1.000000
          Resolution: 1 units/m
          Mode: relative
        Class originated from: 10. Type: XIValuatorClass
        Detail for Valuator 2:
          Label: Rel Horiz Wheel
          Range: -1.000000 - -1.000000
          Resolution: 1 units/m
          Mode: relative
        Class originated from: 10. Type: XIScrollClass
        Scroll info for Valuator 2
          type: 2 (horizontal)
          increment: 1.000000
          flags: 0x0

テストデバイス9は、ボタンでは何もしません。テストデバイス10が代わりに機能し、これが私がクリックしたときの出力です

$ xinput test 10
key press   225 
key release 225 
key press   225 
key release 225 
key press   225 
key release 225

したがって、この点ではマウスがキーボードとして機能しているように見えますが、何らかの理由で、キー225を受け取ったときにxmodmapは何もしません。

**編集**

ボタンをクリックkeycode 225 = aするaたびにプリントが追加されることを確認できます。したがって、問題はXF86Pasteが実際に処理される方法に関連しているようです。送りますが貼り付けではありません。


xbindkeys起動時に実行するように設定しましたか?それを無効にして再試行できますか?
セス

@iSeth:xbindkeysを殺しました。同じ結果、もう一度試してみました。
Stefano Borini、2013年

ターミナルを開いて実行しtail -f /var/log/dmesg、ボタンを押してみてください。キー/ボタンに関する出力はありますか?
セス

1
別の意味のない答えを投稿する前に...でマウスの入力IDをxinput list見つけ、次にで検索キーのボタンコードを見つけてくださいxinput test <MOUSE ID>。これは機能しますか?
mrcktz 2013年

1
XF86Paste / XF86Copyイベントを表示できる確認済みのバグがあるようですxevが、何も起こりません。つまり、貼り付けにはCTRL + vのキーの組み合わせを使用する必要があります。Xmodmapはボタンを1:1にマップしますが、キーボードショートカットの設定を使用して、キーを押したときにコマンドの実行をトリガーできます(私の回答を参照)。
mrcktz 2013年

回答:


3

キーボードイベントをシミュレートするには、優れたツールxdotoolをxdotoolをインストールするお勧めします。

1.xdotool端末経由でインストールCTRL+ ALT+ T):

sudo apt-get install xdotool

またはソフトウェアセンターをxdotoolをインストールする使用します。

2.スクリプトを作成します用途はのイベント下キーをエミュレートするためにxdotoolことCTRLとをv。ターミナルで:

mkdir -p ~/bin  
gedit ~/bin/fakepaste

開いたエディタウィンドウに以下の内容をコピーしてください。コードをコピーして保存した後、閉じます。

#!/bin/sh
exec /usr/bin/xdotool key CTRL+V  
EOF

スクリプトを実行可能にします。

chmod +x ~/bin/fakepaste

3.ログアウトしてログインし、PATHをリロードします。

4.カスタムショートカットを作成する

行くSystem Settingsに行き、その後、Keyboardその後、Shortcuts

+ダイアログの下部にあるボタンを押します。作成しようとしているショートカットの名前とコマンドに入力する名前を入力しますfakepaste。を押しOKます。

新しいショートカットの横に表示されますdisabled。そのテキストをクリックしてから、キーボードエミュレーションに割り当てるキーを押します。

これで、検索キーを使用して貼り付けることができるはずです。


1
これがマウスボタンでどのように役立つかわかりません。キーボードショートカットが変更されます
セス

2
@iSeth:ポイントは、ロジクールマウスがキーボードとマウスの両方であることが判明したということです。キーボードのように機能する検索ボタンを除くすべてのマウスです
Stefano Borini

2

xdotoolによるxbindkeysソリューション

このソリューションにはxbindkeysxdotool

xbindkeysを強制終了し、ボタン構成をダンプする

killall xbindkeys

そして

xbindkeys --defaults >> ~/.xbindkeysrc

新しいバインディングを追加する

これで、このファイルを変更してカスタムバインディングを追加できます。これらは次の形式です。

"<command>"
  <key combination>

追加した場合

"gedit"
  m:0x0 +b:4

上にgeditスクロールするたびに開きます。

これで、次のいずれかを試すことができます。自分に最適なものを選択してください。いずれの場合xdotool click 2もエミュレートされます。これはマウスの中央ボタンを押すことであり、これにより内部と外部の両方の端末が貼り付けられます。

  1. マウスから225を傍受します

    "xdotool click 2"
      m:0x0 +b:225
    
  2. インターセプトキーコード225全般

    "xdotool click 2"
      c:225
    
  3. すべてのXF86Searchイベントを置き換えます(マウスの設定を元の設定に戻して、元に戻しますXF86Search)。

    "xdotool click 2"
      XF86Search
    

xbindkeysを起動してテストする

走る

xbindkeys

それが機能するかどうかを確認します。


私はあなたが私を大いに助けてくれたので、あなたたちはどちらも報奨金に値すると思います。あなたの解決策が機能するかどうかはまだわかりません。明日テストしますが、賞金が期限切れになり、無駄にしたくありません。十分なポイントが得られ次第、同じ賞金を付与します。ありがとう
Stefano Borini、

わかりました、ありがとう(それが可能かどうかはわかりませんが)。助けてくれてうれしい;)
ゲルハルトバーガー

ええと...あなたは正しいです。ここでは1つしか授与できません。心配はいりません。担当者が十分に決まり次第、他の回答を1つ付与します。
Stefano Borini、

いいえ、いいえ、気にしないでください。私は大丈夫です;)
ゲルハルトバーガー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.