tslib、qt相关:QWS_MOUSE_PROTO该如何写

嵌入式QT的键盘鼠标和触摸屏支持 在不使用触摸屏的情况下,嵌入式QT对多个键盘鼠标,包括热拔插,都是支持的很好的 但是一旦使用了触摸屏,就会发现鼠标失效了,因为使用触摸屏,必然要使用tslib进行校准,否则屏幕的箭头是很不准的,使用了tslib,就必须在环境变量QWS_MOUSE_PROTO中指定触摸屏的设备节点,于是鼠标就不起作用了 关于如何实现同时支持触摸屏和鼠标,网上有很多做法,其实无非是两种,一个环境变量QWS_MOUSE_PROTO中即指定触摸屏节点,也指定鼠标节点,但是这种有非常大的问题,就是不一定每次生成设备节点的时候,都是按 阅读详情

原文来自: http://www.cnblogs.com/baizx/archive/2010/04/08/1707790.html




该环境变量主要是帮助QMouseDriverFactory也就是Qt鼠标设备的枚举者来创建你想要的鼠标设备而不是系统默认的。

默认该环境变量时空的,其实大部分情况下空就可以了,Qt能够根据系统配置猜测出你想要的设备,并且这个大多数情况下好像都是正确的。不过如果错了我们可以通过设置该变量来纠正。

该环境变量的格式如下:

export QWS_MOUSE_PROTO="<driver>[:<driver specific options>]
         <driver>[:<driver specific options>]
         <driver>[:<driver specific options>]"

中间可以通过空格来指定多个鼠标设备,目前我也没用到过,因为一般有一个输入设备就够了,最常用的格式如下:

export QWS_MOUSE_PROTO="tslib:/dev/ts"

第一个,指明要使用tslib这个驱动,对应的设备名字是/dev/ts

就这么简单。

下面我将QMouseDriverFactory::create函数贴出来,大家可以对照此函数来指定driver的名字。

 

QWSMouseHandler *QMouseDriverFactory::create(const QString& key, const QString &device)
{
    QString driver = key.toLower();
    if (driver == QLatin1String("linuxtp") || driver.isEmpty())
        return new QWSLinuxTPMouseHandler(key, device);
    if (driver == QLatin1String("yopy") || driver.isEmpty())
        return new QWSYopyMouseHandler(key, device);
    if (driver == QLatin1String("vr41xx") || driver.isEmpty())
        return new QWSVr41xxMouseHandler(key, device);
    if (driver == QLatin1String("auto")
        || driver == QLatin1String("intellimouse")
        || driver == QLatin1String("microsoft")
        || driver == QLatin1String("mousesystems")
        || driver == QLatin1String("mouseman")
        || driver.isEmpty()) {
        return new QWSPcMouseHandler(key, device);
    }
    if (driver == QLatin1String("bus"))
        return new QWSBusMouseHandler(key, device);
    if (driver == QLatin1String("tslib") || driver.isEmpty())
        return new QWSTslibMouseHandler(key, device);
    if (driver == QLatin1String("qvfbmouse") || driver == QLatin1String("qvfb"))
        return new QVFbMouseHandler(key, device);
#ifndef QT_NO_LIBRARY
    if (QWSMouseHandlerFactoryInterface *factory = qobject_cast<QWSMouseHandlerFactoryInterface*>(loader()->instance(driver)))
        return factory->create(driver, device);
#endif
    return 0;
}

我将那些乱起八糟的宏都去掉了,方便大家查找。大多数情况下,是不可能所有这些设备都可用的。




关于tslib移植usb触摸屏的一个笔记 开源upup 目前刚好有这样一个项目,搞了半天,确定了驱动没问题以后,我就找适配层tslib移植问题。 usb触摸屏是32寸,显示用的hdmi接口,板子用的A8(友善之臂的),图形界面用的是qt。 1:tslib编译网上比较多,这里我就不去说了。 2:原理问题: kernl--》tslib---》qt   tslib分为:tslib.o                        阅读详情

相关推荐

tslib移植小问题

开发板文件系统/opt 文件夹不可读写? /opt >: mkdir test mkdir: can't create directory 'test': Read-only file system 解决:通过如下命令,然后进再进行重启即可。 mount rw -o remount / 启动tslib校验程序错误? /apps/etc >: ./ts_calibrate Couldn't open tslib config file: No such file or directory

Ternence_zq的博客 3455

QWS_MOUSE_PROTO该如何写

该环境变量主要是帮助QMouseDriverFactory也就是Qt鼠标设备的枚举者来创建你想要的鼠标设备而不是系统默认的。 默认该环境变量时空的,其实大部分情况下空就可以了,Qt能够根据系统配置猜测出你想要的设备,并且这个大多数情况下好像都是正确的。不过如果错了我们可以通过设置该变量来纠正。 该环境变量的格式如下:export QWS_MOUSE_PROTO="<driver>[:&...

weixin_30885111的博客 387

Qt Embedded4.6.2与tslib1.4移植到arm平台

相关环境:开发板:友善之臂mini2440(64M版)(注:内核是使用友善之臂编译的2.6.32版内核)主机操作系统:fedoa 12 i686所需资源:tslib1.4qt-everywhere-opensource-src-4.6.2友善之臂提供的交叉编译工具(gcc版本为4.3)移植过程:tslib的移植:解压下载的tslib1.4压缩包

halechan的专栏 3042

如何使用QWS_MOUSE_PROTO,配置qt的鼠标

<br />【转帖请注明出处:blog.youkuaiyun.com/lanmanckl】<br /> <br />网上很多人说指定了QWS_MOUSE_PROTO却不好用,试了很多也不好用。其实是没有写对,仔细看看nokia写的文档就有了:<br />1、各种环境变量说明:<br />http://doc.trolltech.com/latest/qt-embedded-envvars.html<br />2、QWS_MOUSE_PROTO的说明:<br />http://doc.trolltech.com/late

LYJ个人博客,记录技术、八卦、生活,分享各种心得,期待与朋友们一同进步 1万+

关于qt移植arm的环境变量的一些小理解

经过自己实验确定: 1.qt库编译时的-prefix=@#¥%¥这个路径之影响你生成库的位置,并不影响在板子上使用时库的位置。 2.板子上运行qt程序时候,真正定义路径的就是 export set QTDIR=!@##¥ export set QPEDIR=……%¥%¥# 这两段路径。 3编译库的时候,制定的tslib,路径依然是废纸。最终决定的还是         export s

taiyangmifan的专栏 945

嵌入式打开鼠标显示及问题处理

鼠标显示

weixin_44550649的博客 2037

触摸屏中鼠标事件的捕获和传递及触摸屏的移植

<br />触摸屏中鼠标事件的捕获和传递及触摸屏的移植<br />在Linux系统中,如果硬件设备的驱动程序被正确安装,那么在/dev路径下会有相应的设备文件,它们是对应硬件设备的驱动程序接口,应用程序可以打开这些设备文件,从中读取的数据就对应着硬件设备传回的信息。当鼠标被点击时,会产生中断并进入中断处理程序,在中断处理程序中,鼠标的动作会被翻译成相应的数据存在一个数据缓冲区中。用户打开设备文件后,就是从这个这个缓冲区读取数据的。注意,这时的数据是最原始的数据。<br />当Qt应用程序作为GuiServe

yihui8的专栏 3009

QT在LINUX的开发环境配置

一、安装 qt-x11-opensource-src.4.4.3.tar.gz ./configure gmake gmake install   若出现不能正常安装: 修改 src/plugins/imageformats/tiff/qtiffhandler.

XiaoMT_Rush的专栏 2136

QT 环境配置选项

<br />QWS_MOUSE_PROTO:  MOUSE指定:<br /> <br />         如果指定的鼠标设备驱动是:QWS_MOUSE_PROTO=IntelliMouse:/dev/input/mouse0,然后检查设备的输出,通过在控制台上敲: cat /dev/input/mouse0 | hexdump,移动鼠标后,如果可以在控制台上看见输出,表示能够正确的使用设备,否则要重新连接设备。对于设备的读写权限,一般要求对设备至少有读权限。比如:QWS_MOUSE_PROTO=Intel

2579

基于QT移植的ARM触摸屏校准

arm开发一般要用到Qt,我在做QT移植后,测试程序发现触摸屏不能用,琢磨了两个星期,终于弄出来了,分享一下

termux 安装 rockylinux

往找最新的文件目录,选择ARM版本的image。或者直接查看目录或者国内阿里云镜像,按照cpu架构(安卓9手机一般是aarch64arm最新架构),获取镜像地址,以及checksum里的SHA256信息更新到以下rocky9.sh脚本,如果不需要直接使用即可。

欢迎来到别往的博客 983

解决Tslib移植之后自己编写的QT程序不能使用触屏的问题

编译并且已经移植好Tslib以及Qt之后触屏没有反应,弄了半天原因是没有声明   QWS_MOUSE_PROTO 如图所示: 在倒数第二行的位置。。。  TSLIB_TSDEVICE 触摸屏设备文件名。                 Default (non inputapi): /dev/touchscreen/ucb1x00                    

C与Python实战 2955

Verilog语法之十:过程块(initial和always)

我将Verilog的语法进行了总结,写了13篇文章,让小白“快速见识猪如何跑”,每一篇讲解一类语法,结合正确的示例代码和错误的示例代码,有的章节对个别语法进行了归纳总结,帮助初学者加深理解。

航天领域资深码农,型号经验丰富,一线干货分享 1671

Qt4和Qt5的环境变量区别(QPA和QWS)(tslib的参数可以参考)

在arm板上配置Qt4应用程序的环境变量的时候,发现一般都是 export QTDIR=/usr/local/qte export QWS_MOUSE_PROTO="tslib:/dev/input/eve...

爱她就要努力 2656

别再用UE5默认材质:用Substance Painter一招提升写实感

今天,我就把这套从模型准备到引擎最终呈现的全流程技巧毫无保留地分享出来,这套方法不仅能让你的作品细节炸裂,更能让你理解次世代PBR(Physically Based Rendering)材质的底层逻辑。

海外旅居设计师,15年设计经验。 1324

避坑指南:用逐飞开源库驱动MT9V03X摄像头时容易忽略的3个细节(附TFT显示优化技巧)

本文详细解析了在智能汽车竞赛中使用MT9V03X摄像头(总钻风)时常见的硬件连接、图像采集和TFT显示优化问题。重点介绍了逐飞开源库中容易被忽略的三个关键细节,包括电源管理、看门狗设置和中断优先级配置,并提供了针对IPS200和TFT180显示屏的优化技巧,帮助参赛队伍提升图像处理效率和显示质量。

study的专栏 743

最新QT4.8+kernel_3.2.5+uboot_2010.06+tslib移植成功-问题小结

2012-02-19 21:34:13 都是从源码下载然后自己修改,使用与TQ2440,之前uboot其实已经完成了。但是yaffs2没带起来。现在回头看来是很简单的了。bootargs参数中我设置成了ramdisk但是无法挂载yaffs2啦。修改了下就可以了。 安装配置QT4.8到是花费了大半天的时间。但是最后还是装好了。然后根据官网的帮助文件,学习了QT基础。和C++编程类似。做了和hel...

weixin_30604651的博客 190

VSCode 中搭建 Python 开发环境

**验证安装**:打开终端(CMD/PowerShell/终端),输入 `python --version`(Windows)或 `python3 --version`(macOS/Linux),显示版本号即成功。- **下载地址**:[Python 官网](https://www.python.org/downloads/)(选择对应系统的最新稳定版,推荐 3.8+)- **调试**:通过 `launch.json` 配置,设置断点后按 `F5` 启动,使用 `F10/F11` 控制流程。

寒寒豆豆软件公司的博客 2534

tslib 移植 相关整理

tslib的打补丁、编译、安装可参见博文: http://blog.youkuaiyun.com/niyufeng/article/details/7546796 (如果原文链接失效,可来这里看:http://blog.youkuaiyun.com/newthinker_wei/article/details/8639276) 按照上文中的步骤编译前,要注意先设置CC等环境变量,不然编译完后运行时会出现./ts_c

NewThinker_wei 的专栏 3746

CGAL AlphaShape算法(自适应Alpha值,二维版本)

CGAL AlphaShape算法(自适应Alpha值,二维版本)

dayuhaitang1的博客 2322

windows中通过docker部署LocateAnything-3B模型

windows中通过docker部署LocateAnything-3B模型

yilvyangguang520的博客 485

qt usb鼠标编译

配置: ./configure -prefix /home/nzm/qt/arm-qt4 -fast -no-largefile -no-qt3support -no-mmx -no-3dnow -no-xmlpatterns -no-webkit -no-svg -nomake demos -nomake docs -no-openssl -embedded arm -little-endia

zm_nong的专栏 2329

YOLOv11与CLIP融合的零样本目标检测技术:原理、实现与创新实践

YOLO(You Only Look Once)系列作为单阶段检测器的代表,以其实时高效的特性在工业界获得广泛应用。YOLOv11作为该系列的最新演进,引入了多项架构创新: C3K2模块:采用双小卷积核替代传统大卷积核,在保持感受野的同时减少计算量。当参数c3k=False时退化为YOLOv8的C2F模块,提供灵活的精度-效率权衡。 C2PSA(Convolutional block with Parallel Spatial Attention):通过并行空间注意力机制增强对微小目标的特征提取能力,这对

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 1068

ARM Linux平台QTE+tslib移植后感

ARM Linux平台QTE+tslib移植后感收藏 document.body.oncopy = function() { if (window.clipboardData) { setTimeout(function() { var text = clipbo

dongliqiang2006的专栏 1980

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

让qt程序在mini2440上支持触摸屏

1.设置qt运行的环境变量: #!/bin/sh #configure for tslib export TSLIB_ROOT=/opt/tslib                                export TSLIB_TSDEVICE=/dev/input/event0                                                  

DreamCatcher100的专栏 1008

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Qt 应用编程(一)

目录 1. Qt退出应用程序 1. Qt退出应用程序 严格来讲,this->close() 只能让widget退出。要让应用完全退出可以采取以下办法: QApplication* app; app->quit(); // or app->exit(0); QApplication::instance()->quit(); qApp->quit(); qApp是一个宏,指向的就是static_cast<QApplication *>(QCo.

weixin_43096766的博客 702

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

上一篇: 一线触摸tslib移植完全说明
下一篇: tslib 移植 相关整理
NewThinker_wei
博客等级 码龄14年 521粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值