在Qt/E中使用usb鼠标,鼠标的移动正常,但想使用鼠标滚轮时,出现如下warning:
unknown mouse event type=2, code=8, value=0xffffffff
在qt源码中查看了下,相关代码如下:
qt-everywhere-opensource-src-4.6.0\src\gui\embedded\qmouselinuxinput_qws.cpp
for (int i = 0; i < n; ++i) {
struct ::input_event *data = &buffer;
bool unknown = false;
if (data->type == EV_ABS) {
if (data->code == ABS_X) {
m_x = data->value;
} else if (data->code == ABS_Y) {
m_y = data->value;
} else {
unknown = true;
}
} else if (data->type == EV_REL) {
if (data->code == REL_X) {
m_x += data->value;
} else if (data->code == REL_Y) {
m_y += data->value;
} else {
unknown = true;
}
} else if (data->type == EV_KEY && data->code == BTN_TOUCH) {
m_buttons = data->value ? Qt::LeftButton : 0;
} else if (data->type == EV_KEY) {
int button = 0;
switch (data->code) {
case BTN_LEFT: button = Qt::LeftButton; break;
case BTN_MIDDLE: button = Qt::MidButton; break;
case BTN_RIGHT: button = Qt::RightButton; break;
}
if (data->value)
m_buttons |= button;
else
m_buttons &= ~button;
} else if (data->type == EV_SYN && data->code == SYN_REPORT) {
QPoint pos(m_x, m_y);
pos = m_handler->transform(pos);
m_handler->limitToScreen(pos);
m_handler->mouseChanged(pos, m_buttons);
} else if (data->type == EV_MSC && data->code == MSC_SCAN) {
// kernel encountered an unmapped key - just ignore it
continue;
} else {
unknown = true;
}
if (unknown) {
qWarning("unknown mouse event type=%x, code=%x, value=%x", data->type, data->code, data->value);
}
}
注意红色部分。
在linux中,EV_REL为2(表示相对坐标事件), REL_WHEEL为8,(表示鼠标滚轮事件)
从代码与warining的信息看,似乎Qt/E似乎是不支持鼠标滚轮的。
想问问大家的Qt/E上是否能使用usb鼠标滚轮?
使用的是qt 4.7.3