Если дело в мыши, то почему в течение некоторого времени после логина всё работает нормально?
Мышь - A4-Tech X710F
UPD
Подключил ноутбучную радио мышку (тоже A4-Tech G7) - действительно всё нормально. Сличение
cat /dev/input/mouse0 | hexdump -C
и
cat /dev/input/mouse1 | hexdump -C
не выявило отличий.
Плюс к этому сразу после логина и X7 нормально работает. Дело в мышке, но не только.
UPD2
а вот xev отличия выявил:
X7:
Код: Выделить всё
ButtonPress event, serial 34, synthetic NO, window 0x3a00001,
root 0x154, subw 0x0, time 3466117, (177,29), root:(181,822),
state 0x10, button 1, same_screen YES
MotionNotify event, serial 34, synthetic NO, window 0x3a00001,
root 0x154, subw 0x0, time 3466117, (177,29), root:(181,822),
state 0x110, is_hint 0, same_screen YES
ButtonRelease event, serial 34, synthetic NO, window 0x3a00001,
root 0x154, subw 0x0, time 3466245, (177,29), root:(181,822),
state 0x110, button 1, same_screen YES
MotionNotify event, serial 34, synthetic NO, window 0x3a00001,
root 0x154, subw 0x0, time 3466245, (177,29), root:(181,822),
state 0x10, is_hint 0, same_screen YES
G7:
Код: Выделить всё
ButtonPress event, serial 34, synthetic NO, window 0x3a00001,
root 0x154, subw 0x0, time 3556625, (177,19), root:(181,812),
state 0x10, button 1, same_screen YES
ButtonRelease event, serial 34, synthetic NO, window 0x3a00001,
root 0x154, subw 0x0, time 3556724, (177,19), root:(181,812),
state 0x110, button 1, same_screen YES
Что за MotionNotify, откуда он берётся? Вот этот "сдвиг" мышки и портит всё дело, система считает, что надо перетащить колонку
UPD3
Сличение
cat /dev/input/event1 (X7) и cat /dev/input/event7 (G7)
показывают отличия. За одно нажатие-отпускание от X7 приходит 192 байта, а от G7 - 144.
UPD4
Исследование показывает, что если X7 вытащить и включить заново - всё нормально работает. При этом xev выдаёт такое:
Код: Выделить всё
MotionNotify event, serial 34, synthetic NO, window 0x3a00001,
root 0x154, subw 0x0, time 5063523, (177,63), root:(181,856),
state 0x10, is_hint 0, same_screen YES
ButtonPress event, serial 34, synthetic NO, window 0x3a00001,
root 0x154, subw 0x0, time 5063573, (177,63), root:(181,856),
state 0x10, button 1, same_screen YES
ButtonRelease event, serial 34, synthetic NO, window 0x3a00001,
root 0x154, subw 0x0, time 5065164, (177,63), root:(181,856),
state 0x110, button 1, same_screen YES
MotionNotify event, serial 34, synthetic NO, window 0x3a00001,
root 0x154, subw 0x0, time 5065164, (177,63), root:(181,856),
state 0x10, is_hint 0, same_screen YES
Т.е. MotionNotify есть всё равно, но он не пролезает
между ButtonPress и ButtonRelease, как это было раньше.
UPD5
И через некоторое время всё снова перестаёт работать - MotionNotify снова заползает между Press и Release.
UPD 5.2 - Если посмотреть на время сообщений, то видно, что когда всё нормально, MotionNotify приходит за 50 мс до ButtonPress, а когда всё плачевно - с тем же временем.
Вообще эту проблему можно решить workaround'ом в Qt4 - не сдвигать заголовок, если не было сдвига более чем на 4 пикселя (ну, точнее, конечно из настроек надо брать). Вообще-то это нужно было бы в любом случае - такой подход есть при нажатии на заголовок окна - движение окна не начинается, пока не сдвинуто более чем на несколько пикселей (4 по умолчанию) или не прошло определённое время (500 мс по умолчанию).