現在、Razer Nagaのサイドボタンのマッピングに問題があります。私はElementary OSを実行していますが、私が知っている限りUbuntuであり、これが私にも非常にうまく機能することを追加する必要があります。
Naga側には現在1-12にマップされている12個のボタンがあります。これを数字キーパッドマッピング(マウス自体の物理スイッチを介して設定可能)に変更するオプションがあり、問題は解決しましたが、誤って右クリックが60%失敗しました。
また、完全に異なる2台のコンピュータで同じ物理マウスを使用して同じ状況に直面したことにも言及したいと思います。
私の最終目標は、少なくとも3つのボタン(1-3)を別のボタン(説明のためにF1、F2、F3と仮定します)にバインドすることです。
私はこれまで多くのインターネット検索を行ってきましたが、私が見つけた主な違いの1つは、xinput
他の人がこの問題を解決したときの結果の違いです。
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ SynPS/2 Synaptics TouchPad id=12 [slave pointer (2)]
⎜ ↳ Razer Razer Naga id=14 [slave pointer (2)]
⎜ ↳ Razer Razer Naga id=13 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Power Button id=8 [slave keyboard (3)]
↳ Lenovo EasyCamera id=9 [slave keyboard (3)]
↳ Ideapad extra buttons id=10 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=11 [slave keyboard (3)]
他の人の出力で、ポインタセクションに「Razer Naga」があり、キーボードセクションに1つあることがわかりました。私の記事に示すように、ポインタセクションには2つだけがリストされています。
他の回避策では、キーボード入力用のキーマップを置き換えるスクリプトを実行することをお勧めします。私の考えでは、この方法は適切ではないようです。
xev
ボタンのいずれかを押したときに何が起こるかを示すためにを使ってみましたが、実際には役に立ちませんでした。以下は、マウスの左ボタンをクリックする例です。
ButtonRelease event, serial 37, synthetic NO, window 0x3a00001,
root 0x9d, subw 0x3a00002, time 16486037, (24,50), root:(618,357),
state 0x100, button 1, same_screen YES
これで、側面に不思議な「1」ボタンがあります。
KeyPress event, serial 37, synthetic NO, window 0x3a00001,
root 0x9d, subw 0x3a00002, time 16536943, (31,58), root:(625,365),
state 0x0, keycode 10 (keysym 0x31, 1), same_screen YES,
XLookupString gives 1 bytes: (31) "1"
XmbLookupString gives 1 bytes: (31) "1"
XFilterEvent returns: False
KeyRelease event, serial 37, synthetic NO, window 0x3a00001,
root 0x9d, subw 0x3a00002, time 16537199, (31,58), root:(625,365),
state 0x0, keycode 10 (keysym 0x31, 1), same_screen YES,
XLookupString gives 1 bytes: (31) "1"
XFilterEvent returns: False
この時点では、どこで進むべきかわかりません(xinputにリストされている2つのデバイスのうちどのデバイスがボタンにマップされているのかわかりません)。したがって、アドバイスやアドバイスをいただきありがとうございます!
答え1
状況を完全には理解していませんが(よく説明していないわけではありませんが)、Nagaマッピングに問題が発生し、オンラインで解決策が見つからなかった後に試してみることにしました。働いている。
問題は、システムがデバイスをキーボードではなくポインタとして表示しても、私の解決策がうまくいく可能性があることです。一度試して教えてください!
私の解決策は最高ではないかもしれませんが、私にとっては効果的です。私はC ++で小さなデーモンを書いて、ダウンロードしてインストールできるgithubリポジトリに入れました。ここ
アイデアは、次の3つのステップを達成することです。
次のコマンドを使用して、ボタンが「何もしないように」デバイスをミュートします。
$xinput set-int-prop <id> "Device Enabled" 8 0
xinputのキーボードIDはどこに表示されますか? (あなたの場合は13かもしれません。)
ボタンを押すことによってトリガーされるイベントをキャプチャします。イベントデバイスノードから生の入力を取得してこれを実行します。 C ++、いくつかのsys linuxライブラリ、およびinput.hを使用してください。 Googleでこれを行う方法を見ることができます(複数のリンクを公開することはできませんが、redditリンクにはこれについて説明するページのリンクがあります)。このアプローチの良い点は、xinputが見る限り、すべてのデバイスからデータをキャプチャできることです(xinputにボタンがあり、xinputに私が信じるIDがある限り、xinputがポインタだと思うかどうかは重要ではありません)。機能は動作しますが、それについて私の言葉を引用しないでください)。
C ++ system()呼び出しとxdotool(公式のUbuntuリポジトリからインストールできます)を使用してキー押下をシミュレートします(system()呼び出しを使用すると、あらゆる種類のシステムユーティリティまたはカスタムスクリプトを実行できます)。詳細については、xdotoolのマンページを参照してください。しかし、最も良いのは、xdotoolと「--window getactivewindow」を使用すると、現在フォーカスされているウィンドウでシミュレートされたキーを押すことです。
追加の説明は次のとおりです。 http://www.reddit.com/r/razer/comments/37yc3y/tutorial_remapping_naga_side_keyboard_numpad_in/
私が行ったすべてのことに関する情報を含むgithubリポジトリをチェックしてください。そして、ソースコード(100行程度)は他のデバイスや状況に簡単に推論されます。 NagaとUbuntuがある場合、インストーラを使用するとすべてが自動的に設定されます。
質問した人に幸運があることを願って、「nagastart.sh」ファイルにキーボードデバイスのIDを手動で指定すると、これが行われます。 1行だけを変更するだけです。 (現在のスクリプトはキーボードデバイスからNagaを検索します。)
これが十分な情報であることを願っています。そうでなければ、私ができることをすべて喜んで説明します。 (それはあまりありません)
しかし、それは非常に安全な方法ではないため、誤ったデバイスIDでインストールすると予期しない動作が発生します(たとえば、キーボードID = 13でID = 14を入力するとマウスクリックが奇妙な動作を引き起こします)。しかし、そうしないでください。気になるターミナルを開き、すべての出口を殺します。すべての変更を削除するには実行します。
$sudo rm /usr/local/bin/naga ~/.config/autostart/naga.desktop /usr/local/bin/nagastart.sh
頑張ってください!