ポインタを強制的にピクセルをスキップさせるだけです。その方法は次のとおりです。
最初のリスト入力デバイス:
$ xinput list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ PixArt USB Optical Mouse id=10 [slave pointer (2)]
⎜ ↳ ETPS/2 Elantech Touchpad id=15 [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)]
↳ Sleep Button id=8 [slave keyboard (3)]
↳ USB2.0 UVC 2M WebCam id=9 [slave keyboard (3)]
↳ Asus Laptop extra buttons id=13 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=14 [slave keyboard (3)]
↳ USB Keyboard id=11 [slave keyboard (3)]
↳ USB Keyboard id=12 [slave keyboard (3)]
この例では、マウスIDが10であることがわかります。次に、プロパティをリストします。
$ xinput list-props 10
Device 'PixArt USB Optical Mouse':
Device Enabled (140): 1
Coordinate Transformation Matrix (142): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
Device Accel Profile (265): 0
Device Accel Constant Deceleration (266): 1.000000
Device Accel Adaptive Deceleration (267): 1.000000
Device Accel Velocity Scaling (268): 10.000000
Device Product ID (260): 2362, 9488
Device Node (261): "/dev/input/event5"
Evdev Axis Inversion (269): 0, 0
Evdev Axes Swap (271): 0
Axis Labels (272): "Rel X" (150), "Rel Y" (151), "Rel Vert Wheel" (264)
Button Labels (273): "Button Left" (143), "Button Middle" (144), "Button Right" (145), "Button Wheel Up" (146), "Button Wheel Down" (147), "Button Horiz Wheel Left" (148), "Button Horiz Wheel Right" (149)
Evdev Middle Button Emulation (274): 0
Evdev Middle Button Timeout (275): 50
Evdev Third Button Emulation (276): 0
Evdev Third Button Emulation Timeout (277): 1000
Evdev Third Button Emulation Button (278): 3
Evdev Third Button Emulation Threshold (279): 20
Evdev Wheel Emulation (280): 0
Evdev Wheel Emulation Axes (281): 0, 0, 4, 5
Evdev Wheel Emulation Inertia (282): 10
Evdev Wheel Emulation Timeout (283): 200
Evdev Wheel Emulation Button (284): 4
Evdev Drag Lock Buttons (285): 0
«座標変換マトリックス»が必要です。その№142を思い出してください。
このプロパティを変更することにより、ポインターの速度を上げることができます。これは、ポインターの動きを計算するために使用される変換行列です。リンクから:
デフォルトでは、Xのすべての入力デバイスのCTMは単位行列です。例として、画面上のポイント(400、197)でタッチスクリーンにタッチするとします。
⎡ 1 0 0 ⎤ ⎡ 400 ⎤ ⎡ 400 ⎤
⎜ 0 1 0 ⎥ · ⎜ 197 ⎥ = ⎜ 197 ⎥
⎣ 0 0 1 ⎦ ⎣ 1 ⎦ ⎣ 1 ⎦
デバイスイベントのX座標とY座標は、計算の2番目のマトリックスに入力されます。計算の結果は、イベントのX座標とY座標が画面にマッピングされる場所です。示されているように、IDマトリックスは、デバイス座標を変更せずに画面座標にマップします。
したがって、xとyに従って値を増やして、ポインターの速度を上げたいと思います。私のPCからの例:
$ xinput set-prop 10 142 2.400000, 0.000000, 0.000000, 0.000000, 2.400000, 0.000000, 0.000000, 0.000000, 1.000000
ですxinput set-prop <device-id> <property-number> <property-values>
。適切なものが見つかるまで、これを少し試してください。注:マトリックスの最後の値は変更しないでください。私が仕事をしようとしたとき、それが私のエラーでした。この場合、違いはまったくわかりません。
謝辞:xorgメーリングリストのSimon Thumに感謝します。彼はマトリックスについてのヒントを提供してくれました。
UPD:注、Wineで実行している一部のWindowsゲームでは、ポインターの動作がおかしい場合があります(たとえば、古いCounter Strike 1.6の目的は、マウスをどのように動かしても床を見つめるまで低下する)。ゲームを実行する前に、CTMのxとyを1にします。