方式一:
对于标准输入设备驱动可以不按上面这种方式,从而避免不必要的麻烦。其实对于标准输入设备qt已经为其
预留了接口,我们要做的只是修改修改环境变量,其环境变量如下
利用linux标准操作文件的方式即:open\read,这种方式适用性比较广既适合于标准输入设备驱动,也适用于非标准设备驱动
void get_device_fd(void)
{
//open the device
key_fd = open("/dev/input/event1", O_RDONLY);
if(key_fd < 0)
{
printf("open /dev/input/event1 failded...\n");
}
/*建立一个socket notifier来接收输入设备发送的数据,当输入设备被按压后就会有数据往上层
*发送,此时socket会得到通知并通过slot来读取输入设备的数据
*/
this->notifier = new QSocketNotifier(this->key_fd, QSocketNotifier::Read, this);
connect(this->notifier, SIGNAL(activated(int)), this, SLOT(getKeyValue()));
}
void getKeyValue()
{
/*这个数组定义方式和大小貌似只能这样定义,有兴趣的可以试试其他的*/
unsigned short current_button[64];
/*通过read函数读取输入设备的按键值*/
read(this->key_fd, (char *)current_button, sizeof(current_button));
/*然后根据需求解析按键值并进行处理(数组的[5]是按键的键值[6]表示按键是按下还是弹起)*/
if(current_button[5] == KEY_MENU && current_button[6] == 1)
{
if(light < 10)
{
light++;
update();
config.setValue("/sys/brigthness", light);
brigthness[0] = 0;
brigthness[1] = light * BACE_BRIGTHNESS;
ioctl(this->disp_fd, DISP_LCD_SET_BRIGHTNESS, brigthness);
}
m_timer->setInterval(5000);
}
}
对于标准输入设备驱动可以不按上面这种方式,从而避免不必要的麻烦。其实对于标准输入设备qt已经为其
预留了接口,我们要做的只是修改修改环境变量,其环境变量如下
export QTDIR=/usr/local/Qt-5.4.1/
export QT_ROOT=$QTDIR
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:/usr/lib/cedarx/:$LD_LIBRARY_PATH
export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins
export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0
export QT_QPA_FONTDIR=$QT_ROOT/lib/fonts
export LD_PRELOAD=/usr/lib/libts.so
#按键输入设备环境变量
export QT_QPA_EVDEV_KEYBOARD_PARAMETERS=/dev/input/event1
#/usr/lib/preloadable_libiconv.so:
if [ -e "/dev/input/event4" ]; then
export QWS_MOUSE_PROTO="Tslib:/dev/input/event4"
export TSLIB_TSDEVICE=/dev/input/event4
elif [ -e "/dev/input/event3" ]; then
export QWS_MOUSE_PROTO="LinuxInput:/dev/input/event3"
export TSLIB_TSDEVICE=/dev/input/event3
elif [ -e "/dev/input/event1" ]; then
export QWS_MOUSE_PROTO="LinuxInput:/dev/input/event1"
export TSLIB_TSDEVICE=/dev/input/event1
fi
export QT_QPA_PLATFORM=eglfs
export QT_QPA_GENERIC_PLUGINS=tslib
对于qt5环境变量相对与qt4有较大的改变,具体的更改可以参考qt的官方文档
本文介绍了两种在Linux环境下与输入设备驱动交互的方法:一种是使用标准的open/read操作,适用于各种类型的输入设备;另一种则是利用Qt提供的接口针对标准输入设备进行配置。
922





