私は最近Cougar 700mゲーム用マウスを購入しましたが、Fedora 22では動作しません。 xinput を実行してスレーブキーボードとしてリストします。
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ PS/2 Generic Mouse id=11 [slave pointer (2)]
⎜ ↳ SynPS/2 Synaptics TouchPad id=12 [slave pointer (2)]
⎜ ↳ Wacom Serial Penabled 2FG Touchscreen stylus id=15 [slave pointer (2)]
⎜ ↳ Wacom Serial Penabled 2FG Touchscreen eraser id=16 [slave pointer (2)]
⎜ ↳ Wacom Serial Penabled 2FG Touchscreen touch id=17 [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)]
↳ HP HD Webcam [Fixed] id=9 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=10 [slave keyboard (3)]
↳ HP WMI hotkeys id=14 [slave keyboard (3)]
↳ COUGAR 700M COUGAR 700M Gaming Mouse id=13 [slave keyboard (3)]
カーネルを再コンパイルする以外に、この問題を解決する方法はありますか?
uname -r : 4.0.4-303.fc22.x86_64
答え1
驚くべきことに、以前の答えはうまくいきます!
私はCougar 700mを持っていますが、Ubuntuでは動作しません。 Ubuntu 14.04 LTSでカーネルをダウンロード、パッチ、コンパイルする手順(ほとんどの場合、次から取得)https://help.ubuntu.com/community/Kernel/Compile):
sudo apt-get install linux-source
cd src/
tar xjvf /usr/src/linux-source-3.13.0.tar.bz2
cd linux-source-3.13.0/
cp -vi /boot/config-`uname -r` .config
make oldconfig
make localmodconfig
make xconfig
cd include/linux/
(modify HID_MAX_USAGES as required)
cd ../../
make -j4 deb-pkg
cd ../
sudo dpkg -i linux-headers-3.13.11-ckt30_3.13.11-ckt30-1_amd64.deb
sudo dpkg -i linux-image-3.13.11-ckt30_3.13.11-ckt30-1_amd64.deb
残念ながら、このようなことをするにはカーネルパッチが必要ですが、実際には非常に簡単です。もちろん、カーネルを更新するたびにパッチを再適用する必要があります...
答え2
次のパッチを使用してカーネルを再構築します。
--- a/include/linux/hid.h 2014-09-22 01:41:22.907084621 -0400
+++ b/include/linux/hid.h 2014-09-22 01:42:10.166556867 -0400
@@ -333,7 +333,7 @@
* This is the local environment. It is persistent up the next main-item.
*/
-#define HID_MAX_USAGES 12288
+#define HID_MAX_USAGES 32768
#define HID_DEFAULT_NUM_COLLECTIONS 16
struct hid_local {