Ubuntu 15.04でmousepollの値を変更する必要があります。
Kerbal Space Programには、マウスポール値が125hzを超えているときにマウスの右ボタンでビューをドラッグすると、ゲームが1〜2秒ハングし、プレイするのが非常にイライラするLinuxのバグがあります。
最大1000hzでポーリングするLogitech G400マウスがあります。これをどのように変更すればよいかわかりません。
私が試してみました:
options usbhid mousepoll=8
で/etc/modprobe.d/usbhid
を設定していますusbhid.mousepoll=8
を設定するSudo modprobe -r usbhid && Sudo modprobe usbhid mousepoll=8
を実行するこれらは、cat /sys/module/usbhid/parameters/mousepoll
が8
を期待どおりに返すという点でいくらか効果的です。しかし、問題はKSPに残り、 https://github.com/ian-kelling/evhz からevhz
を実行しても、ポーリングレートは1000hzと報告されます。
おそらく関連する:
この問題の解決策を見つけました。
Windowsを仮想マシンにインストールし、USBマウスデバイスをVMに接続し、WiresharkでUSBトラフィックをトレースし、公式Logitechドライバーがポーリングレートの設定に使用した制御コマンドを分離しました。 (これは私を正しい方向に導くのに非常に役立ちました: https://unix.stackexchange.com/questions/138742/how-to-dump-usb-traffic )
この魔法のRubyコード(rootとして、または/dev/hidraw1
への書き込み権限を持つユーザーが実行する必要があります)は、マウスのポーリングレートを125Hzに設定します。
#!/bin/Ruby
HIDIOCSFEATURE = 0xC0024806
f = File.open("/dev/hidraw1", "w+")
f.ioctl(HIDIOCSFEATURE,"\x20\x03")
/dev/hidraw1
は、マウスのhidrawデバイスです。このパスは、マシンに接続したデバイスの数によって異なる場合があります。
0xC0024806
シーケンスは、hidrawデバイスに「機能レポートを送信する」ために必要なioctl値です。残念ながらこの値をどのように取得したかを正確に思い出せず、100%技術的に正しいとは限りません。私にとってはうまくいきます!
"\x20\x03"
シーケンスは、ドライバーが機能レポートでマウスに送信したデータです。 20
は、ポーリング変更要求を識別するために使用される16進数の値であるように見え、03
は125hzに設定します。 02
は250hzに、01
は500Hzに、00
は1000hzに設定します。
警告:これはLogitech G400マウスで動作します。このマウスのハードウェアバリアントは1つしかないので、そのモデルでは安全であるはずです。他のモデルではテストされておらず、HID ++プロトコルを使用して通信するLogitechマウスでは動作しません(これには、多くの新しいマウスやUnifyingレシーバーを使用するワイヤレスモデルが含まれます)。
また、私は自分が何をしていたのかほとんどわかりませんでした。それを理解するために私がしたことはすべて、このフレーズを含む途中で初めて学びました。
Logitech G302でも同じ問題が発生しました。
残念ながら、Logitechマウスはマウスポーリングレートの削減をサポートしていないようです。
しかし、本当に必要な場合は、マウスをより遅いusbポートに接続することにより、ハードウェアで削減できます。
evhz を使用すると、別のusbポートでマウスのポーリングレートが1000Hzから250Hzに低下したことがわかりました。