Sample Header Ad - 728x90

Unix & Linux Stack Exchange

Q&A for users of Linux, FreeBSD and other Unix-like operating systems

Latest Questions

11 votes
1 answers
1282 views
Linux: Onscreen swipe keyboard
I injured my hand so that typing is now difficult. I have a touchscreen monitor on my laptop and am running Debian. Is there an on-screen keyboard which has swipe capabilities like the [Google Keyboard][1] on my android device? I know of [Florence Keyboard][2] and [several alternatives][3], but they...
I injured my hand so that typing is now difficult. I have a touchscreen monitor on my laptop and am running Debian. Is there an on-screen keyboard which has swipe capabilities like the Google Keyboard on my android device? I know of Florence Keyboard and several alternatives , but they don't seem to have swiping.
Lorem Ipsum (470 rep)
Mar 17, 2018, 09:15 PM • Last activity: Jul 19, 2025, 04:27 AM
0 votes
0 answers
26 views
How to tell what virtual touch screen keyboard is installed?
I am working on a system that runs chromium in a docker container, and the docker container is running on a linux system. The screen attached is a touch screen. I have heard numerous customer complains about our onscreen keyboard so I would like to change it's configuration, appearance and functiona...
I am working on a system that runs chromium in a docker container, and the docker container is running on a linux system. The screen attached is a touch screen. I have heard numerous customer complains about our onscreen keyboard so I would like to change it's configuration, appearance and functionality if possible. However to do this, I need to know what keyboard is being used/displayed. **How can I identify which of the various linux on screen / touch screen keyboards is being used?** I was looking through a list I found and I coudln't find any that look like the keyboard our system uses: picture of a device screen showing an on screen keyboard. The device's screen is blurred allowing for visual emphasis on the on screen keyboard that is showing. - Are there files or other places I should check on the system? - How can I tell where the keyboard is coming from? (Chromium? Docker container? Base Linux system?) ---------- More information about the system: - The system is rather minimal, there is no traditional desktop environment that I could find - It seems to use X11, where there is an X server container running and the chromium container is a client - After installing proper deps/libs inside the display server container, I was able to run xeyes and xclock and it showed up on the display. - When you first SSH to the device, running cat /etc/issue reads carlOS (Containerized Application Realtime Linux Operating System) 1.0.0 - When you exec into the container running chromium, running cat /etc/issue reads Debian GNU/Linux 12 - When you exec into the display server container, running cat /etc/issue reads Ubuntu 22.04.2 LTS Things I've tried: - Chromium container
# echo $DESKTOP_SESSION

# ls /usr/bin/*session
/usr/bin/dbus-run-session
# HardInfo
sh: 4: HardInfo: not found
# ps -A | egrep -i "gnome|kde|mate|cinnamon|lxde|xfce|jwm"
# env | grep XDG_CURRENT_DESKTOP
# echo $XDG_CURRENT_DESKTOP
# lsb_release -a
sh: 67: lsb_release: not found
- display server container
# echo $DESKTOP_SESSION

# ls /usr/bin/*session
/usr/bin/dbus-run-session
# HardInfo
sh: 3: HardInfo: not found
# ps -A | egrep -i "gnome|kde|mate|cinnamon|lxde|xfce|jwm"
# env | grep XDG_CURRENT_DESKTOP
# echo $XDG_CURRENT_DESKTOP

# lsb_release -a
sh: 7: lsb_release: not found
Wimateeka (1085 rep)
Jul 8, 2025, 07:00 PM • Last activity: Jul 9, 2025, 07:00 PM
0 votes
0 answers
21 views
Touchscreen sometimes stops registering inputs during kiosk mode
I am working on a project using a yocto build for a compulab module for the imx8 processor. It contains a ft5x06 touchscreen, connected to using a custom out-of-tree usb-i2c bridge module. This all works fine in normal use. When running a chromium webapp, sometimes the touchscreen goes non-responsiv...
I am working on a project using a yocto build for a compulab module for the imx8 processor. It contains a ft5x06 touchscreen, connected to using a custom out-of-tree usb-i2c bridge module. This all works fine in normal use. When running a chromium webapp, sometimes the touchscreen goes non-responsive. I can still interact with the screen using a mouse and keyboard. If I run evtest, the touchscreen appears to still be responsive, but the chromium kiosk window does not register it. I am running wayland underneath. It is possible the custom driver is causing issues, but the fact that it still functions under evtest makes me sceptical. As an aside, chromium seems to trigger gpu errors. I don't know if this could be related or not.
[ 1815.795710] gcmkONERROR: status=-3(gcvSTATUS_OUT_OF_MEMORY) @ _GFPAlloc(491)
dmesg does not show anything useful. I've noticed that sometimes plugging in a mouse and scrolling is enough to get it working again (this worked 3 out of 4 times I have reproduced the issue). The issue is intermittent and not easily repeatable. I'm looking for any advice or suggestions of how to approach debugging this.
JAS (1 rep)
Jul 1, 2025, 07:56 AM • Last activity: Jul 1, 2025, 08:05 AM
0 votes
1 answers
1944 views
How to emulate touch event by writing to /dev/input/eventX in Linux?
I am working on an embedded Linux (kernel 5.10.24) with a touch screen. Now I want to trigger touch event by writing to /dev/input/eventX corresponding to the touch screen. To figure out the event I want to emulate, I firstly collected the events by touching the screen. Then I hard coded the events...
I am working on an embedded Linux (kernel 5.10.24) with a touch screen. Now I want to trigger touch event by writing to /dev/input/eventX corresponding to the touch screen. To figure out the event I want to emulate, I firstly collected the events by touching the screen. Then I hard coded the events in codes and write them one by one to the /dev/input/eventX. Below are the events I got from a touching.
~ # ./touchevent
timeS=1651152027,timeUS=312095,type=3,code=57,value=50
timeS=1651152027,timeUS=312095,type=3,code=53,value=218
timeS=1651152027,timeUS=312095,type=3,code=54,value=1223
timeS=1651152027,timeUS=312095,type=3,code=48,value=54
timeS=1651152027,timeUS=312095,type=3,code=58,value=54
timeS=1651152027,timeUS=312095,type=1,code=330,value=1
timeS=1651152027,timeUS=312095,type=0,code=0,value=0
timeS=1651152027,timeUS=448388,type=3,code=57,value=-1
timeS=1651152027,timeUS=448388,type=1,code=330,value=0
timeS=1651152027,timeUS=448388,type=0,code=0,value=0
I hardcoded the first 7 events (including an EV_SYN) to write to /dev/input/eventX.
#include 
#include 
#include 
#include 
#include 
int main( void )
{
        int                     fd;
        int                     ret;
        struct input_event      event;

        fd = open( "/dev/input/event0", O_RDWR);
        if ( fd < 0 )
        {
                perror( "/dev/input/event0" );
                return(-1);
        }

        event.type = 3;
        event.code = 53;
        event.value = 218;
        ret     = write( fd, &event, sizeof(struct input_event) );
        printf("ret: %d\n", ret);

        event.type = 3;
        event.code = 54;
        event.value = 1223;
        ret     = write( fd, &event, sizeof(struct input_event) );
        printf("ret: %d\n", ret);

        event.type = 3;
        event.code = 48;
        event.value = 54;
        ret     = write( fd, &event, sizeof(struct input_event) );
        printf("ret: %d\n", ret);

        event.type = 3;
        event.code = 58;
        event.value = 54;
        ret     = write( fd, &event, sizeof(struct input_event) );
        printf("ret: %d\n", ret);

        event.type = 1;
        event.code = 330;
        event.value = 1;
        ret     = write( fd, &event, sizeof(struct input_event) );
        printf("ret: %d\n", ret);

        event.type = 0;
        event.code = 0;
        event.value = 0;
        ret     = write( fd, &event, sizeof(struct input_event) );
        printf("ret: %d\n", ret);

        close( fd );
.....
}
When I ran the code on the target, there is NO expected response from the touch screen. I am not sure if it is possible to emulate touch events by writing to /dev/input/eventX, if so, what did I miss on doing it ? I don't have sendevent/getevent tools from Andriod, and I want to do this by myself.
wangt13 (631 rep)
May 5, 2023, 01:31 AM • Last activity: May 30, 2025, 10:07 AM
0 votes
1 answers
2830 views
Calibrate Touchscreen
I am having trouble with the calibration of a touch screen for kiosk system. I have install `xinput_calibrator` and executed: $ xinput_calibrator -v DEBUG: XInputExtension version is 2.3 DEBUG: Skipping virtual master devices and devices without axis valuators. DEBUG: Skipping device 'Virtual core X...
I am having trouble with the calibration of a touch screen for kiosk system. I have install xinput_calibrator and executed: $ xinput_calibrator -v DEBUG: XInputExtension version is 2.3 DEBUG: Skipping virtual master devices and devices without axis valuators. DEBUG: Skipping device 'Virtual core XTEST pointer' id=4, does not report Absolute events. DEBUG: Skipping device 'PS/2 Generic Mouse' id=12, does not report Absolute events. DEBUG: Selected device: MicroTouch Systems, Inc. MicroTouch USB Touchscreen - EX II DEBUG: Not usbtouchscreen calibrator: Not a usbtouchscreen device DEBUG: Not evdev calibrator: Evdev: invalid "Evdev Axis Calibration" property format Calibrating standard Xorg driver "MicroTouch Systems, Inc. MicroTouch USB Touchscreen - EX II" current calibration values: min_x=0, max_x=65535 and min_y=0, max_y=65535 If these values are estimated wrong, either supply it manually with the --precalib option, or run the 'get_precalib.sh' script to automatically get it (through HAL). DEBUG: Found that 'MicroTouch Systems, Inc. MicroTouch USB Touchscreen - EX II' is a sysfs name. DEBUG: Adding click 0 (X=323, Y=768) DEBUG: Adding click 1 (X=970, Y=766) DEBUG: Adding click 2 (X=321, Y=253) DEBUG: Adding click 3 (X=969, Y=247) --> Making the calibration permanent here<-][1]
philipp (191 rep)
Aug 17, 2018, 12:29 PM • Last activity: Apr 16, 2025, 01:04 AM
0 votes
0 answers
106 views
Arch Linux -- Touch screen not detected (anymore)
I have a `Dell Inspiron 13 5378` 2 in 1 laptop (i5-7200u, ~2017). Originally, it ran Windows 10 and the touch screen worked like a charm. Now, after many years without regular use, a fresh install of `Arch Linux`, and a new generic battery, this touch screen no longer functions. It may be worth noti...
I have a Dell Inspiron 13 5378 2 in 1 laptop (i5-7200u, ~2017). Originally, it ran Windows 10 and the touch screen worked like a charm. Now, after many years without regular use, a fresh install of Arch Linux, and a new generic battery, this touch screen no longer functions. It may be worth noting that the BIOS claims that some screens are touch screen active (for things like diagnostics). This is the output of dmesg | grep -i touch.
[    1.663009] usb 1-7: Product: Raydium Touch System
[    3.237853] input: Raydium Corporation Raydium Touch System Touchscreen as /devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7:1.0/0003:2386:3111.0006/input/input13
[    3.238194] hid-generic 0003:2386:3111.0006: input,hiddev98,hidraw5: USB HID v1.10 Device [Raydium Corporation Raydium Touch System] on usb-0000:00:14.0-7/input0
[    3.252291] input: Raydium Corporation Raydium Touch System as /devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7:1.0/0003:2386:3111.0006/input/input15
[    3.252416] hid-multitouch 0003:2386:3111.0006: input,hiddev98,hidraw5: USB HID v1.10 Device [Raydium Corporation Raydium Touch System] on usb-0000:00:14.0-7/input0
[   14.995945] input: DELL0740:00 06CB:7E7E Touchpad as /devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-5/i2c-DELL0740:00/0018:06CB:7E7E.0007/input/input23
[   14.996048] hid-multitouch 0018:06CB:7E7E.0007: input,hidraw6: I2C HID v1.00 Mouse [DELL0740:00 06CB:7E7E] on i2c-DELL0740:00
This raydium touch system appears under lsusb. Interestingly enough, the gyro sensors rotate my screen properly and the keyboard turns off (as it should) when the laptop is folded. I have installed plenty of touch screen drivers like xf86-input-evdev, libinput, etc. Using GNOME on XORG does not work. What should I do? Edit 1: This is the output of xinput list
WARNING: running xinput against an Xwayland server. See the xinput man page for details.
⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
⎜   ↳ xwayland-pointer:16                     	id=6	[slave  pointer  (2)]
⎜   ↳ xwayland-relative-pointer:16            	id=7	[slave  pointer  (2)]
⎜   ↳ xwayland-pointer-gestures:16            	id=8	[slave  pointer  (2)]
⎜   ↳ xwayland-touch:16                       	id=10	[slave  pointer  (2)]
⎣ Virtual core keyboard                   	id=3	[master keyboard (2)]
    ↳ Virtual core XTEST keyboard             	id=5	[slave  keyboard (3)]
    ↳ xwayland-keyboard:16                    	id=9	[slave  keyboard (3)]
Fl1pSyde (1 rep)
Apr 8, 2025, 12:07 PM • Last activity: Apr 9, 2025, 12:00 PM
0 votes
0 answers
41 views
Issue with two IR Touch Screens on Ubuntu 24.04 – Only One Detected as Input
I'm facing an issue connecting two old IR touch screens on Ubuntu 24.04. The models have the ID 6615:0080. The system detects both screens when I run `lsusb`: ``` Bus 003 Device 004: ID 6615:0080 IRTOUCHSYSTEMS Co. Ltd. USB TouchScreen Bus 003 Device 005: ID 6615:0080 IRTOUCHSYSTEMS Co. Ltd. USB Tou...
I'm facing an issue connecting two old IR touch screens on Ubuntu 24.04. The models have the ID 6615:0080. The system detects both screens when I run lsusb:
Bus 003 Device 004: ID 6615:0080 IRTOUCHSYSTEMS Co. Ltd. USB TouchScreen
Bus 003 Device 005: ID 6615:0080 IRTOUCHSYSTEMS Co. Ltd. USB TouchScreen
... but after installing the drivers from the official website, only one of them appears in the input device list. xinput list:
IRTOUCH_MOUSE     	id=16	[slave  pointer  (2)]
The other screen remains inactive and is not recognised as an input device. Both touch screens can only send events as a pointer, but I can't get them to work simultaneously. Has anyone encountered a similar issue, or does anyone have an idea on how to make both screens work at the same time? Any help or suggestions would be greatly appreciated!
Bojan Kelečević (1 rep)
Mar 31, 2025, 12:27 PM • Last activity: Mar 31, 2025, 12:34 PM
0 votes
0 answers
21 views
Touch screen behaviour
I want to develop a simple GUI panel using Raspberry Pi 4 and Touchscreen LCD module. My desktop is LXDE and below is the uname output. Linux rpi4 6.6.51+rpt-rpi-v8 #1 SMP PREEMPT Debian 1:6.6.51-1+rpt3 (2024-10-08) aarch64 GNU/Linux I will have only website shortcuts and possibly VLC on the desktop...
I want to develop a simple GUI panel using Raspberry Pi 4 and Touchscreen LCD module. My desktop is LXDE and below is the uname output. Linux rpi4 6.6.51+rpt-rpi-v8 #1 SMP PREEMPT Debian 1:6.6.51-1+rpt3 (2024-10-08) aarch64 GNU/Linux I will have only website shortcuts and possibly VLC on the desktop. What I can't figure out is how to emulate similar behavior as Android. I want to be able to open shortcuts with single tap on the icon as well as scroll the page in the browser using tap and swipe. Right now I need to double tap on the screen to open shortcuts. Trying to scroll in the browser window just selects the text in both Chromium and Firefox. Below is evtest output. How needs to be adjusted in the config files to achieve what I want? Input driver version is 1.0.1 Input device ID: bus 0x18 vendor 0x0 product 0x0 version 0x0 Input device name: "10-0038 generic ft5x06 (17)" Supported events: Event type 0 (EV_SYN) Event type 1 (EV_KEY) Event code 330 (BTN_TOUCH) Event type 3 (EV_ABS) Event code 0 (ABS_X) Value 648 Min 0 Max 799 Event code 1 (ABS_Y) Value 281 Min 0 Max 479 Event code 47 (ABS_MT_SLOT) Value 0 Min 0 Max 9 Event code 53 (ABS_MT_POSITION_X) Value 0 Min 0 Max 799 Event code 54 (ABS_MT_POSITION_Y) Value 0 Min 0 Max 479 Event code 57 (ABS_MT_TRACKING_ID) Value 0 Min 0 Max 65535 Properties: Property type 1 (INPUT_PROP_DIRECT) Testing ... (interrupt to exit) Event: time 1738696220.941421, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 105 Event: time 1738696220.941421, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 431 Event: time 1738696220.941421, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 229 Event: time 1738696220.941421, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 1 Event: time 1738696220.941421, type 3 (EV_ABS), code 0 (ABS_X), value 431 Event: time 1738696220.941421, type 3 (EV_ABS), code 1 (ABS_Y), value 229 Event: time 1738696220.941421, -------------- SYN_REPORT ------------ Event: time 1738696220.966967, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 432 Event: time 1738696220.966967, type 3 (EV_ABS), code 0 (ABS_X), value 432 Event: time 1738696220.966967, -------------- SYN_REPORT ------------ Event: time 1738696221.037503, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 434 Event: time 1738696221.037503, type 3 (EV_ABS), code 0 (ABS_X), value 434 Event: time 1738696221.037503, -------------- SYN_REPORT ------------ Event: time 1738696221.061450, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 435 Event: time 1738696221.061450, type 3 (EV_ABS), code 0 (ABS_X), value 435 Event: time 1738696221.061450, -------------- SYN_REPORT ------------ Event: time 1738696221.085531, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 228 Event: time 1738696221.085531, type 3 (EV_ABS), code 1 (ABS_Y), value 228 Event: time 1738696221.085531, -------------- SYN_REPORT ------------ Event: time 1738696221.109497, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 436 Event: time 1738696221.109497, type 3 (EV_ABS), code 0 (ABS_X), value 436 Event: time 1738696221.109497, -------------- SYN_REPORT ------------ Event: time 1738696221.133561, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 438 Event: time 1738696221.133561, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 227 Event: time 1738696221.133561, type 3 (EV_ABS), code 0 (ABS_X), value 438 Event: time 1738696221.133561, type 3 (EV_ABS), code 1 (ABS_Y), value 227
Farid83 (111 rep)
Feb 4, 2025, 07:13 PM
0 votes
0 answers
77 views
Is it possible to read raw data from a Ilitek v3 touch controller?
I own a touch controller based on an Ilitek 2511QH010, that uses Ilitek protocol version 3. I know the Linux kernel has a driver for it, in fact connecting the USB cable to my Ubuntu 24.10 it is recognized and works in some way: from `lsusb`: > Bus 001 Device 007: ID 222a:0001 ILI Technology Corp. M...
I own a touch controller based on an Ilitek 2511QH010, that uses Ilitek protocol version 3. I know the Linux kernel has a driver for it, in fact connecting the USB cable to my Ubuntu 24.10 it is recognized and works in some way: from lsusb: > Bus 001 Device 007: ID 222a:0001 ILI Technology Corp. Multi-Touch Screen and from dmesg: [ 3866.949598] usb 1-5.2: new full-speed USB device number 7 using xhci_hcd [ 3867.244621] usb 1-5.2: New USB device found, idVendor=222a, idProduct=0001, bcdDevice= 0.02 [ 3867.244629] usb 1-5.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0 [ 3867.244632] usb 1-5.2: Product: ILITEK-TP [ 3867.244634] usb 1-5.2: Manufacturer: ILITEK [ 3867.297891] input: ILITEK ILITEK-TP Touchscreen as /devices/pci0000:00/0000:00:02.1/0000:03:00.0/0000:04:08.0/0000:06:00.0/0000:07:0c.0/0000:0e:00.0/usb1/1-5/1-5.2/1-5.2:1.0/0003:222A:0001.0009/input/input20 [ 3867.297991] input: ILITEK ILITEK-TP Mouse as /devices/pci0000:00/0000:00:02.1/0000:03:00.0/0000:04:08.0/0000:06:00.0/0000:07:0c.0/0000:0e:00.0/usb1/1-5/1-5.2/1-5.2:1.0/0003:222A:0001.0009/input/input22 [ 3867.298129] hid-generic 0003:222A:0001.0009: input,hiddev3,hidraw4: USB HID v1.10 Mouse [ILITEK ILITEK-TP] on usb-0000:0e:00.0-5.2/input0 [ 3867.497595] usb 1-5.5: new low-speed USB device number 8 using xhci_hcd [ 3867.734700] usb 1-5.5: New USB device found, idVendor=1a2c, idProduct=2124, bcdDevice= 1.10 [ 3867.734706] usb 1-5.5: New USB device strings: Mfr=1, Product=2, SerialNumber=0 [ 3867.734708] usb 1-5.5: Product: USB Keyboard [ 3867.734709] usb 1-5.5: Manufacturer: SEM [ 3867.774762] input: SEM USB Keyboard as /devices/pci0000:00/0000:00:02.1/0000:03:00.0/0000:04:08.0/0000:06:00.0/0000:07:0c.0/0000:0e:00.0/usb1/1-5/1-5.5/1-5.5:1.0/0003:1A2C:2124.000A/input/input23 [ 3867.853642] hid-generic 0003:1A2C:2124.000A: input,hidraw5: USB HID v1.10 Keyboard [SEM USB Keyboard] on usb-0000:0e:00.0-5.5/input0 [ 3867.875786] input: SEM USB Keyboard Consumer Control as /devices/pci0000:00/0000:00:02.1/0000:03:00.0/0000:04:08.0/0000:06:00.0/0000:07:0c.0/0000:0e:00.0/usb1/1-5/1-5.5/1-5.5:1.1/0003:1A2C:2124.000B/input/input24 [ 3867.927732] input: SEM USB Keyboard System Control as /devices/pci0000:00/0000:00:02.1/0000:03:00.0/0000:04:08.0/0000:06:00.0/0000:07:0c.0/0000:0e:00.0/usb1/1-5/1-5.5/1-5.5:1.1/0003:1A2C:2124.000B/input/input25 [ 3867.927827] hid-generic 0003:1A2C:2124.000B: input,hidraw8: USB HID v1.10 Device [SEM USB Keyboard] on usb-0000:0e:00.0-5.5/input1 [ 3868.073672] input: ILITEK ILITEK-TP as /devices/pci0000:00/0000:00:02.1/0000:03:00.0/0000:04:08.0/0000:06:00.0/0000:07:0c.0/0000:0e:00.0/usb1/1-5/1-5.2/1-5.2:1.0/0003:222A:0001.0009/input/input26 [ 3868.073804] input: ILITEK ILITEK-TP Mouse as /devices/pci0000:00/0000:00:02.1/0000:03:00.0/0000:04:08.0/0000:06:00.0/0000:07:0c.0/0000:0e:00.0/usb1/1-5/1-5.2/1-5.2:1.0/0003:222A:0001.0009/input/input28 [ 3868.073992] hid-multitouch 0003:222A:0001.0009: input,hiddev3,hidraw4: USB HID v1.10 Mouse [ILITEK ILITEK-TP] on usb-0000:0e:00.0-5.2/input0 These are the entries in /dev/input: $ ls /dev/input by-id event10 event14 event18 event3 event7 mice by-path event11 event15 event19 event4 event8 mouse0 event0 event12 event16 event2 event5 event9 mouse1 event1 event13 event17 event20 event6 js0 mouse2 under by-id: $ ls /dev/input/by-id/ usb-04d9_USB_Gaming_Mouse-event-if02 usb-ILITEK_ILITEK-TP-event-if00 usb-04d9_USB_Gaming_Mouse-event-mouse usb-ILITEK_ILITEK-TP-event-mouse usb-04d9_USB_Gaming_Mouse-if01-event-kbd usb-ILITEK_ILITEK-TP-mouse usb-04d9_USB_Gaming_Mouse-mouse usb-SEM_USB_Keyboard-event-if01 usb-3Dconnexion_SpaceMouse_Compact-event-if00 usb-SEM_USB_Keyboard-event-kbd and under by-path: $ ls /dev/input/by-path/ pci-0000:0e:00.0-usb-0:5.1:1.0-event pci-0000:0e:00.0-usb-0:5.3:1.0-event pci-0000:0e:00.0-usb-0:5.3:1.0-event-mouse pci-0000:0e:00.0-usb-0:5.3:1.0-mouse pci-0000:0e:00.0-usb-0:5.4:1.0-event-mouse pci-0000:0e:00.0-usb-0:5.4:1.0-mouse pci-0000:0e:00.0-usb-0:5.4:1.1-event-kbd pci-0000:0e:00.0-usb-0:5.4:1.2-event pci-0000:0e:00.0-usb-0:5.5:1.0-event-kbd pci-0000:0e:00.0-usb-0:5.5:1.1-event pci-0000:0e:00.0-usbv2-0:5.1:1.0-event pci-0000:0e:00.0-usbv2-0:5.3:1.0-event pci-0000:0e:00.0-usbv2-0:5.3:1.0-event-mouse pci-0000:0e:00.0-usbv2-0:5.3:1.0-mouse pci-0000:0e:00.0-usbv2-0:5.4:1.0-event-mouse pci-0000:0e:00.0-usbv2-0:5.4:1.0-mouse pci-0000:0e:00.0-usbv2-0:5.4:1.1-event-kbd pci-0000:0e:00.0-usbv2-0:5.4:1.2-event pci-0000:0e:00.0-usbv2-0:5.5:1.0-event-kbd pci-0000:0e:00.0-usbv2-0:5.5:1.1-event platform-asus-nb-wmi-event platform-eeepc-wmi-event My goal is not to use it as standard touch module, but I want to read the raw data from each channel of the touch matrix. I tried to search the actual implementation of the Linux driver, I found this repository but it does not seem the official one. In any case I'm not able to understand if the protocol does support the raw data reading. Is there a way to use the created input devices to read out the strength of each cell?
Mark (815 rep)
Jan 13, 2025, 08:49 AM • Last activity: Jan 22, 2025, 08:13 AM
1 votes
1 answers
1844 views
ELAN Touchscreen on Ubuntu 14.04 and Debian 7.6
I recently purchased an ASUS Q550LF laptop with Windows 8.1 preinstalled, and subsequently installed Ubuntu 14.04 and Debian 7.6. I use Ubuntu for most tasks, but occasionally have reason to boot Debian. The problem is that Debian won't boot. At some point during the boot process, I receive variatio...
I recently purchased an ASUS Q550LF laptop with Windows 8.1 preinstalled, and subsequently installed Ubuntu 14.04 and Debian 7.6. I use Ubuntu for most tasks, but occasionally have reason to boot Debian. The problem is that Debian won't boot. At some point during the boot process, I receive variations on the following error messages: [time] usb 1-7: unable to read config index 0 descriptor/start: -71 [time] usb 1-7: can't read configurations, error -71 [time] usb 1-7: unable to read config index 0 descriptor/start: -110 [time] usb 1-7: can't read configurations, error -110 They repeat indefinitely, and the boot process hangs. I don't have a problem with the touchscreen in Windows or Ubuntu, so I suspect some problem with Debian. When booting Ubuntu the same error message occurs, but eventually the touchscreen is recognized: $ lsusb Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 006: ID 0bda:0139 Realtek Semiconductor Corp. RTS5139 Card Reader Controller Bus 001 Device 023: ID 04f3:010c Elan Microelectronics Corp. Bus 001 Device 004: ID 13d3:5188 IMC Networks Bus 001 Device 003: ID 8087:07dc Intel Corp. Bus 001 Device 002: ID 046d:c00c Logitech, Inc. Optical Wheel Mouse Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub $ dmesg -k | grep 'usb 1-7' [ 1.685457] usb 1-7: new full-speed USB device number 5 using xhci_hcd [ 1.702858] usb 1-7: New USB device found, idVendor=04f3, idProduct=010c [ 1.702862] usb 1-7: New USB device strings: Mfr=4, Product=14, SerialNumber=0 [ 1.702864] usb 1-7: Product: Touchscreen [ 1.702866] usb 1-7: Manufacturer: ELAN [ 1.703007] usb 1-7: ep 0x2 - rounding interval to 64 microframes, ep desc says 80 microframes [ 3.822847] usb 1-7: USB disconnect, device number 5 [ 4.095373] usb 1-7: new full-speed USB device number 7 using xhci_hcd [ 6.233335] usb 1-7: unable to read config index 0 descriptor/start: -71 [ 6.233371] usb 1-7: can't read configurations, error -71 [ 6.345226] usb 1-7: new full-speed USB device number 8 using xhci_hcd [ 8.483093] usb 1-7: unable to read config index 0 descriptor/start: -71 [ 8.483135] usb 1-7: can't read configurations, error -71 [ 8.594952] usb 1-7: new full-speed USB device number 9 using xhci_hcd [ 10.733650] usb 1-7: unable to read config index 0 descriptor/start: -71 [ 10.733688] usb 1-7: can't read configurations, error -71 [ 10.900889] usb 1-7: new full-speed USB device number 10 using xhci_hcd [ 13.040048] usb 1-7: unable to read config index 0 descriptor/start: -71 [ 13.040053] usb 1-7: can't read configurations, error -71 [ 13.318826] usb 1-7: new full-speed USB device number 11 using xhci_hcd [ 13.336201] usb 1-7: New USB device found, idVendor=04f3, idProduct=010c [ 13.336202] usb 1-7: New USB device strings: Mfr=4, Product=14, SerialNumber=0 [ 13.336204] usb 1-7: Product: Touchscreen [ 13.336205] usb 1-7: Manufacturer: ELAN [ 13.336354] usb 1-7: ep 0x2 - rounding interval to 64 microframes, ep desc says 80 microframes [ 15.458888] usb 1-7: USB disconnect, device number 11 [ 15.788782] usb 1-7: new full-speed USB device number 12 using xhci_hcd [ 15.806165] usb 1-7: New USB device found, idVendor=04f3, idProduct=010c [ 15.806169] usb 1-7: New USB device strings: Mfr=4, Product=14, SerialNumber=0 [ 15.806171] usb 1-7: Product: Touchscreen [ 15.806173] usb 1-7: Manufacturer: ELAN [ 15.806291] usb 1-7: ep 0x2 - rounding interval to 64 microframes, ep desc says 80 microframes [ 17.928881] usb 1-7: USB disconnect, device number 12 [ 18.218822] usb 1-7: new full-speed USB device number 13 using xhci_hcd [ 18.236215] usb 1-7: New USB device found, idVendor=04f3, idProduct=010c [ 18.236218] usb 1-7: New USB device strings: Mfr=4, Product=14, SerialNumber=0 [ 18.236221] usb 1-7: Product: Touchscreen [ 18.236222] usb 1-7: Manufacturer: ELAN [ 18.236328] usb 1-7: ep 0x2 - rounding interval to 64 microframes, ep desc says 80 microframes [ 20.359363] usb 1-7: USB disconnect, device number 13 [ 21.265243] usb 1-7: new full-speed USB device number 14 using xhci_hcd [ 21.283198] usb 1-7: New USB device found, idVendor=04f3, idProduct=010c [ 21.283203] usb 1-7: New USB device strings: Mfr=4, Product=14, SerialNumber=0 [ 21.283205] usb 1-7: Product: Touchscreen [ 21.283207] usb 1-7: Manufacturer: ELAN [ 21.283339] usb 1-7: ep 0x2 - rounding interval to 64 microframes, ep desc says 80 microframes [ 23.406502] usb 1-7: USB disconnect, device number 14 [ 23.687181] usb 1-7: new full-speed USB device number 15 using xhci_hcd [ 25.828401] usb 1-7: unable to read config index 0 descriptor/start: -71 [ 25.828406] usb 1-7: can't read configurations, error -71 [ 25.993113] usb 1-7: new full-speed USB device number 16 using xhci_hcd [ 28.134506] usb 1-7: unable to read config index 0 descriptor/start: -71 [ 28.134512] usb 1-7: can't read configurations, error -71 [ 28.298972] usb 1-7: new full-speed USB device number 17 using xhci_hcd [ 30.440820] usb 1-7: unable to read config index 0 descriptor/start: -71 [ 30.440825] usb 1-7: can't read configurations, error -71 [ 30.552709] usb 1-7: new full-speed USB device number 18 using xhci_hcd [ 32.694248] usb 1-7: unable to read config index 0 descriptor/start: -71 [ 32.694253] usb 1-7: can't read configurations, error -71 [ 32.970694] usb 1-7: new full-speed USB device number 19 using xhci_hcd [ 35.111542] usb 1-7: unable to read config index 0 descriptor/start: -71 [ 35.111546] usb 1-7: can't read configurations, error -71 [ 35.276520] usb 1-7: new full-speed USB device number 20 using xhci_hcd [ 37.417528] usb 1-7: unable to read config index 0 descriptor/start: -71 [ 37.417533] usb 1-7: can't read configurations, error -71 [ 37.582405] usb 1-7: new full-speed USB device number 21 using xhci_hcd [ 39.723735] usb 1-7: unable to read config index 0 descriptor/start: -71 [ 39.723740] usb 1-7: can't read configurations, error -71 [ 39.888351] usb 1-7: new full-speed USB device number 22 using xhci_hcd [ 47.031720] usb 1-7: unable to read config index 0 descriptor/start: -110 [ 47.031725] usb 1-7: can't read configurations, error -110 [ 47.271826] usb 1-7: new full-speed USB device number 23 using xhci_hcd [ 47.289529] usb 1-7: New USB device found, idVendor=04f3, idProduct=010c [ 47.289534] usb 1-7: New USB device strings: Mfr=4, Product=14, SerialNumber=0 [ 47.289536] usb 1-7: Product: Touchscreen [ 47.289538] usb 1-7: Manufacturer: ELAN [ 47.289666] usb 1-7: ep 0x2 - rounding interval to 64 microframes, ep desc says 80 microframes I can't disable the touchscreen in the BIOS, and most of the purported solutions I've encountered when researching the problem don't work. I'm not even sure how I would go about solving the problem. If someone could point me in the right direction, I would appreciate it. Thanks in advance!
emi (111 rep)
Aug 23, 2014, 07:36 AM • Last activity: Dec 19, 2024, 02:06 AM
1 votes
1 answers
1176 views
In GNOME-Wayland shell, How I map an touchscreen USB input to a specific video display output?
I use Ubuntu 22.04 with GNOME-Wayland is default (It also happened on Ubuntu 20.x with GNOME-Wayland shell). Two touchscreens connect to system. I face a problem: Two USB (touchscreen) touch inputs are always mapping to one touch monitor. From X11, I can use "xinput map-to-output {device_id} {displa...
I use Ubuntu 22.04 with GNOME-Wayland is default (It also happened on Ubuntu 20.x with GNOME-Wayland shell). Two touchscreens connect to system. I face a problem: Two USB (touchscreen) touch inputs are always mapping to one touch monitor. From X11, I can use "xinput map-to-output {device_id} {display_name}", and it works well.) to map the touch USB input to a specific video display output, and it works well. But xinput under Wayland cannot not detected for an touch USB devices, so cannot obtain an device ID to use in xinput command. Anyone know how to map touch USB input to video output? Please help. Thank you so much.
Thai Nguyen (11 rep)
Aug 1, 2022, 08:18 PM • Last activity: Oct 25, 2024, 11:53 AM
6 votes
1 answers
9687 views
How to calibrate touch screen on Wayland?
I have a Fedora 35 notebook running Gnome and Wayland. It has a built in touch screen that works just fine and never needs calibration, even in a multi-monitor setup. And I have two external monitors (a normal 4k display and a 1080p USB-C touch screen). When I connect these monitors, I disable the i...
I have a Fedora 35 notebook running Gnome and Wayland. It has a built in touch screen that works just fine and never needs calibration, even in a multi-monitor setup. And I have two external monitors (a normal 4k display and a 1080p USB-C touch screen). When I connect these monitors, I disable the internal notebook screen, as I don't need it in that setup. So I end up with this: monitor setup Which is perfectly fine. (The right screen is the external touch screen and the left one is the external 4k monitor.) The problem is that the touch screen thinks it is 5760x2160 pixels, when it is actually just 1920x1080, resulting in incorrect touch inputs: incorrect touch input 2 In order to fix this, I found this article: Arch Wiki - Calibrating_Touchscreen But it relies on xinput which doesn't appear to exist on Wayland. The article does mention a way to persistently calibrate a touch screen using udev though. For that I needed to calculate the transformation matrix, which I did as described in the article: > Now, calculate these as accurate as possible: > > c0 = touch_area_width / total_width > c2 = touch_area_height / total_height > c1 = touch_area_x_offset / total_width > c3 = touch_area_y_offset / total_height > > The matrix is > > [ c0 0 c1 ] [ 0 c2 c3 ] [ 0 0 1 ] > > which is represented as a row-by-row array: > > c0 0 c1 0 c2 c3 0 0 1 I ended up with this:
c0 = touch_area_width / total_width     | 1920/(3840+1920)=0.333333333
c2 = touch_area_height / total_height   | 1080/2160=0.5
c1 = touch_area_x_offset / total_width  | 3840/(3840+1920)=0.666666667
c3 = touch_area_y_offset / total_height | 0/2160=0

c0 0 c1 0 c2 c3 0 0 1                   | 0.333333333 0 0.666666667 0 0.5 0 0 0 1
The article then goes on and shows an example udev rule using a simple transformation matrix: > /etc/udev/rules.d/99-acer-touch.rules > > ENV{ID_VENDOR_ID}=="2149",ENV{ID_MODEL_ID}=="2703",ENV{WL_OUTPUT}="DVI1",ENV{LIBINPUT_CALIBRATION_MATRIX}="1 0 0 0 1 0" So it would seem I need to know the vendor ID and model ID (which I think is the same as the product id) and the "WL_OUTPUT" which I'm just gonna call monitor connector. Getting the vendor id and product id via lsusb was trivial:
$ lsusb
Bus 005 Device 007: ID 1d5c:7102 Fresco Logic Generic Billboard Device
Bus 005 Device 006: ID 222a:0001 ILI Technology Corp. Multi-Touch Screen
Bus 005 Device 005: ID 1a40:0101 Terminus Technology Inc. Hub
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
# ... Those 5 devices show up when I connect the touch screen. I removed the rest from the list.
Okay so now I have the vendor id (222a) and the product id (0001). I then wrote this ridiculous python script to figure out what the name of the monitor connector would be via dbus because I couldn't figure out how to do this without xrandr --query: #!/usr/bin/python3 # https://dbus.freedesktop.org/doc/dbus-python/tutorial.html # https://github.com/GNOME/mutter/blob/b5f99bd12ebc483e682e39c8126a1b51772bc67d/data/dbus-interfaces/org.gnome.Mutter.DisplayConfig.xml # https://ask.fedoraproject.org/t/change-scaling-resolution-of-primary-monitor-from-bash-terminal/19892 import dbus bus = dbus.SessionBus() display_config_well_known_name = "org.gnome.Mutter.DisplayConfig" display_config_object_path = "/org/gnome/Mutter/DisplayConfig" display_config_proxy = bus.get_object(display_config_well_known_name, display_config_object_path) display_config_interface = dbus.Interface(display_config_proxy, dbus_interface=display_config_well_known_name) serial, physical_monitors, logical_monitors, properties = display_config_interface.GetCurrentState() for x, y, scale, transform, primary, linked_monitors_info, props in logical_monitors: for linked_monitor_connector, linked_monitor_vendor, linked_monitor_product, linked_monitor_serial in linked_monitors_info: for monitor_info, monitor_modes, monitor_properties in physical_monitors: monitor_connector, monitor_vendor, monitor_product, monitor_serial = monitor_info if linked_monitor_connector == monitor_connector: print("Display: " + monitor_properties.get("display-name") + " - Connector: " + monitor_connector) The output was:
Display: RTK 22" - Connector: DP-2
Display: LG Electronics 27" - Connector: DP-5
I now know the connector is DP-2. I then created this simple bash script and ran it with sudo:
#!/bin/bash
VENDOR_ID=222a
PRODUCT_ID=0001
MONITOR_CONNECTOR=DP-2
CALIBRATION_MATRIX="0.333333333 0 0.666666667 0 0.5 0 0 0 1"

UDEV_RULE="ENV{ID_VENDOR_ID}==\"${VENDOR_ID}\",ENV{ID_MODEL_ID}==\"${PRODUCT_ID}\",ENV{WL_OUTPUT}=\"${MONITOR_CONNECTOR}\",ENV{LIBINPUT_CALIBRATION_MATRIX}=\"${CALIBRATION_MATRIX}\""
UDEV_RULES_FILE="/etc/udev/rules.d/99-touchscreen-cal.rules"

echo "${UDEV_RULE}" > "${UDEV_RULES_FILE}"
udevadm control --reload-rules && udevadm trigger
I got no errors. Then I double checked the generated rules file:
$ cat /etc/udev/rules.d/99-touchscreen-cal.rules 
ENV{ID_VENDOR_ID}=="222a",ENV{ID_MODEL_ID}=="0001",ENV{WL_OUTPUT}="DP-2",ENV{LIBINPUT_CALIBRATION_MATRIX}="0.333333333 0 0.666666667 0 0.5 0 0 0 1"
So everything should have worked, right? But it didn't. The touch screen input is still as incorrect as before. Any ideas how I can fix that? **Edit:** When I don't disable the internal touch screen, the external touch screen sends all touch input to that internal touch screen instead of spreading the touch input across all monitors. (If I touch the lower right corner of the external 1080p touch screen, the touch is registered in the lower-right corner of the internal 4k touch screen of the notebook etc...) 3 displays (left to right: External 4k screen, external 1080p touch screen, internal 4k touch screen) **Edit 2:** According to this article, the only way to get touchscreens in general to work properly in a multi-monitor setup is to use X11. According to the article libinput currently assumes the touchscreen(s) covers all available monitors. which I know to be incorrect because my internal (non-usb) touch screen works perfectly fine, even in a multi-monitor setup.
Forivin (1193 rep)
Jul 3, 2022, 10:39 AM • Last activity: Jun 28, 2024, 09:14 PM
37 votes
4 answers
38395 views
How do I disable the touch screen on my laptop?
My laptop has a touchscreen but I do not use this. How do I disable this functionality? I use Arch Linux. I figured I could try removing the related driver. According to [this page][1] the possible drivers are all named `xf86-input*`. However, it looks like I have nothing like that installed: # pacm...
My laptop has a touchscreen but I do not use this. How do I disable this functionality? I use Arch Linux. I figured I could try removing the related driver. According to this page the possible drivers are all named xf86-input*. However, it looks like I have nothing like that installed: # pacman -Qs xf86-input local/xf86-input-evdev 2.8.3-1 (xorg-drivers xorg) X.org evdev input driver local/xf86-input-joystick 1.6.2-3 (xorg-drivers xorg) X.Org Joystick input driver local/xf86-input-keyboard 1.8.0-2 (xorg-drivers xorg) X.Org keyboard input driver local/xf86-input-mouse 1.9.0-2 (xorg-drivers xorg) X.org mouse input driver local/xf86-input-synaptics 1.7.5-1 (xorg-drivers xorg) Synaptics driver for notebook touchpads local/xf86-input-vmmouse 13.0.0-3 (xorg-drivers xorg) X.org VMWare Mouse input driver local/xf86-input-void 1.4.0-6 (xorg-drivers xorg) X.org void input driver Any idea how I can track down the responsible driver or in some other way disable the touch screen functionality?
please delete me (2659 rep)
May 1, 2014, 03:14 PM • Last activity: Apr 22, 2024, 03:34 PM
2 votes
1 answers
3627 views
Use xorg.conf to fix touchscreen X axis reversed
I setup Fedora 35 with my Titan6001 touchscreen. Although Linux is responding to touches, the X axis is reversed (touch on the right mouse goes to left side, and vice versa). Y axis is fine. How do I reverse this? I'm using X11 (not Wayland) I created a new xorg.conf using "Xorg -configure" command...
I setup Fedora 35 with my Titan6001 touchscreen. Although Linux is responding to touches, the X axis is reversed (touch on the right mouse goes to left side, and vice versa). Y axis is fine. How do I reverse this? I'm using X11 (not Wayland) I created a new xorg.conf using "Xorg -configure" command but it did not contain a section for the Titan6001 (eGalax) device. But I found one on an old post and added it to my xorg.conf as follows: Section "InputDevice" Identifier "EETI" Driver "egalax" Option "Device" "usbauto" Option "Parameters" "/var/lib/eeti.param" Option "ScreenNo" "0" Option "InvertX" "true" EndSection But it made no difference (the InvertX had no effect). I wonder if this section is even being accepted. My Xorg.0.log shows: 72.646] (II) config/udev: Adding input device eGalax Inc. USB TouchController (/dev/input/event4) [ 72.646] (**) eGalax Inc. USB TouchController: Applying InputClass "evdev touchscreen catchall" [ 72.646] (**) eGalax Inc. USB TouchController: Applying InputClass "libinput touchscreen catchall" [ 72.646] (II) Using input driver 'libinput' for 'eGalax Inc. USB TouchController' [ 72.646] (**) eGalax Inc. USB TouchController: always reports core events [ 72.646] (**) Option "Device" "/dev/input/event4" [ 72.646] (**) Option "_source" "server/udev" [ 72.647] (II) event4 - eGalax Inc. USB TouchController: is tagged by udev as: Touchscreen [ 72.648] (II) event4 - eGalax Inc. USB TouchController: device is a touch device [ 72.648] (II) event4 - eGalax Inc. USB TouchController: device removed [ 72.674] (**) Option "config_info" "udev:/sys/devices/pci0000:00/0000:00:1a.0/usb3/3-2/3-2:1.0/input/input13/event4" [ 72.674] (II) XINPUT: Adding extended input device "eGalax Inc. USB TouchController" (type: TOUCHSCREEN, id 8) [ 72.674] (**) Option "AccelerationScheme" "none" [ 72.674] (**) eGalax Inc. USB TouchController: (accel) selected scheme none/0 [ 72.674] (**) eGalax Inc. USB TouchController: (accel) acceleration factor: 2.000 [ 72.674] (**) eGalax Inc. USB TouchController: (accel) acceleration threshold: 4 [ 72.676] (II) event4 - eGalax Inc. USB TouchController: is tagged by udev as: Touchscreen [ 72.676] (II) event4 - eGalax Inc. USB TouchController: device is a touch device [ 72.678] (II) config/udev: Adding input device eGalax Inc. USB TouchController (/dev/input/mouse1) I notice it references mouse1, is that a clue? Should I create a section for that? So next I tried xinput --set-prop "eGalax Inc. USB TouchController" "Evdev Axis Inversion" 1, 0 But the property was not recognized. So I tried to list available properties and see: Device 'eGalax Inc. USB TouchController': Device Enabled (142): 1 Coordinate Transformation Matrix (144): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000 libinput Calibration Matrix (278): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000 libinput Calibration Matrix Default (279): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000 libinput Send Events Modes Available (261): 1, 0 libinput Send Events Mode Enabled (262): 0, 0 libinput Send Events Mode Enabled Default (263): 0, 0 Device Node (264): "/dev/input/event4" Device Product ID (265): 3823, 1 Can the coordinate transformation matric or input calibration matrix achieve what I want? (Assuming I must set this from the command line, and not xorg.conf)
TSG (1983 rep)
Dec 22, 2021, 03:02 AM • Last activity: Apr 19, 2024, 08:08 AM
0 votes
1 answers
609 views
How to resize/transform touchscreen area with Wayland
I have an external monitor connected to a machine with a built-in touchscreen display. When setting a 16:10 external display to mirror the 16:9 touchscreen display, we get black bars on the touchscreen, the input range for the touchscreen does not resize to match the output. I need to find a scripta...
I have an external monitor connected to a machine with a built-in touchscreen display. When setting a 16:10 external display to mirror the 16:9 touchscreen display, we get black bars on the touchscreen, the input range for the touchscreen does not resize to match the output. I need to find a scriptable way to make this change for any (single) external display with any aspect ratio and without user input. I already have a udev rule that runs a python script to automatically set a monitor to mirror. I need to configure this on Debian 11 and GNOME Shell 3.38.6 without disabling Wayland, though the issue is also on Debian 12 with GNOME Shell 43.6. My digging so far has come to several solutions that seem to be specific to X11 and multiple places indicating that Wayland does not currently have the capability I need. I’ve tried using the archived python-libinput and other recommendations to set a calibration matrix for libinput, but have yet to get something to work. Any help, guidance, or direction would be greatly appreciated. Edit: We discovered the mis-match with mirrored monitors, but it is reproduce-able by setting a touchscreen display to a non-default aspect ratio.
jonathanf (1 rep)
Sep 22, 2023, 02:39 PM • Last activity: Feb 26, 2024, 11:28 PM
0 votes
1 answers
1091 views
Debian 8 touchscreen in console mode is this possible?
I have a PoS Terminal running Debian 8. Do I have to load X server to allow the touchscreen to work? My application is designed for a touch interface, and if possible I would like to load the application from the text console (mainly so the system has a much ram as it can so the program runs fast)....
I have a PoS Terminal running Debian 8. Do I have to load X server to allow the touchscreen to work? My application is designed for a touch interface, and if possible I would like to load the application from the text console (mainly so the system has a much ram as it can so the program runs fast). The application displays its own mouse icon when the program loads (this is displayed even if no mouse drivers are install as it is part of the graphical support of the programming language I use). Would I set up and install the screen in full GUI mode and then boot into the console mode and start the program? On my keyboard-based systems this works perfectly, but I am not 100% sure if this is possible with the touchscreen. I have seen machines boot right into the PoS applications, but this is on an IBM 4690 operating system..
Andrew Gable (41 rep)
Apr 1, 2016, 01:35 PM • Last activity: Jan 29, 2024, 01:33 PM
0 votes
1 answers
950 views
xorg: assign touch screens to monitors - with serial number
I'm using an application with two identical (ELO branded) touch screens on xorg. I would like to automatically assign the correct touch panel to the corresponding monitor, even if usb cables or monitor cables got re-plugged. (I would have to run a setup utility once, to check which panel belongs to...
I'm using an application with two identical (ELO branded) touch screens on xorg. I would like to automatically assign the correct touch panel to the corresponding monitor, even if usb cables or monitor cables got re-plugged. (I would have to run a setup utility once, to check which panel belongs to which monitor, but that's not the problem). Both monitors and touch panels have serial numbers and preferrably, I'd put these in a configuration file, look them up at startup and run the correct xinput commands from there. Preferrably this should be done through udev, as that is probably the correct way. What I did before is: - run xinput to see the inputs:
$ xinput 
⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
⎜   ↳ Logitech USB-PS/2 Optical Mouse         	id=9	[slave  pointer  (2)]
⎜   ↳ Atmel Atmel maXTouch Digitizer          	id=10	[slave  pointer  (2)]
⎜   ↳ Atmel Atmel maXTouch Digitizer          	id=11	[slave  pointer  (2)]
⎜   ↳ Atmel Atmel maXTouch Digitizer          	id=15	[slave  pointer  (2)]
⎜   ↳ Atmel Atmel maXTouch Digitizer          	id=16	[slave  pointer  (2)]
⎣ Virtual core keyboard                   	id=3	[master keyboard (2)]
    ↳ Virtual core XTEST keyboard    ... etcetera
Then list the devices for the Atmel panels: xinput --list-props 10|grep Device.Node|cut -f2 -d'"', which gives me /dev/input/event11 (do this for the other 3 Atmel ids as well). Then run udevadm to see which of these are touch panels *and* read the serial ID: udevadm info /dev/input/event11 gives me
N: input/event11
L: 0
S: input/by-path/pci-0000:00:14.0-usb-0:7:1.1-event
S: input/by-id/usb-Atmel_Atmel_maXTouch_Digitizer_E21R077282-event-if01
E: DEVPATH=/devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7:1.1/0003:03EB:8A6E.0003/input/input12/event11
E: DEVNAME=/dev/input/event11
E: MAJOR=13
E: MINOR=75
E: SUBSYSTEM=input
E: USEC_INITIALIZED=5462678
E: ID_INPUT=1
E: ID_INPUT_TOUCHSCREEN=1
E: ID_INPUT_WIDTH_MM=341
E: ID_INPUT_HEIGHT_MM=273
E: ID_VENDOR=Atmel
E: ID_VENDOR_ENC=Atmel
E: ID_VENDOR_ID=03eb
E: ID_MODEL=Atmel_maXTouch_Digitizer
E: ID_MODEL_ENC=Atmel\x20maXTouch\x20Digitizer
E: ID_MODEL_ID=8a6e
E: ID_REVISION=1034
E: ID_SERIAL=Atmel_Atmel_maXTouch_Digitizer_E21R077282
E: ID_SERIAL_SHORT=E21R077282
E: ID_TYPE=hid
E: ID_BUS=usb
E: ID_USB_INTERFACES=:030000:
E: ID_USB_INTERFACE_NUM=01
E: ID_USB_DRIVER=usbhid
E: ID_PATH=pci-0000:00:14.0-usb-0:7:1.1
E: ID_PATH_TAG=pci-0000_00_14_0-usb-0_7_1_1
E: LIBINPUT_DEVICE_GROUP=3/3eb/8a6e:usb-0000:00:14.0-7
E: DEVLINKS=/dev/input/by-path/pci-0000:00:14.0-usb-0:7:1.1-event /dev/input/by-id/usb-Atmel_Atmel_maXTouch_Digitizer_E21R077282-event-if01
So now I have the serial ID for the panel. Then I need the displays that are connected: xrandr -q --verbose shows monitors and the edid-block. Because the edid information is read only and immutable, I can use that as a fixed identifier for now. (No need to run edid-decode although I could). I'm leaving out the scripting that fetches the monitor names from the xrandr output; but finally, I can connect the Atmel Digitizer that has ID_SERIAL_SHORT=E21R077282 to monitor DP-4, with xinput --map-to-output 10 DP-4; and add the other Atmel panel to DP-6. But this feels like a whole lot of number crunching, to go from id=10 to /dev/input/event11 to the serial number. - Can this be done with udev rules? - Should I make a udev rule that distinguishes on ID_SERIAL_SHORT? - But then, what should it do with that information? - I.e. how can I transfer the information from udev to xorg? - And is udev able to fetch the monitor information from xorg as well? Or how should I build the connection between the two?
Valentijn Sessink (1 rep)
Jun 12, 2023, 08:24 PM • Last activity: Oct 26, 2023, 08:58 PM
1 votes
0 answers
200 views
Wakeup from touchscreen does NOT work in embedded Linux
I am working on an embedded Linux (kernel-5.10.24) and there is a GT911 based touchscreen. The touchscreen is working well now. Then I tried to test the suspend/resume in this system. There is an RTC which is configured to wake up system in 120 seconds, and it also worked well, the touchscreen is al...
I am working on an embedded Linux (kernel-5.10.24) and there is a GT911 based touchscreen. The touchscreen is working well now. Then I tried to test the suspend/resume in this system. There is an RTC which is configured to wake up system in 120 seconds, and it also worked well, the touchscreen is also black in suspend and back to work after resume. Currently, I want to wake up system with screen touching but failed. I found the device tree does NOT enable slide-wake feature, so I changed the dts as follows,
goodix,slide-wakeup = ;
And I can see wakeup is enabled from kernel log.
goodix-ts 0-0004: slide-wakeup enabled
goodix-ts 0-0004: INT num 36, trigger type:2
goodix-ts 0-0004: slide wakeup enabled
I can see /sys/class/wakeup/* showed the name about gt9xx. When I put system into suspend mode, I still cannot wake up system by touching the screen. I am not very familiar with Linux suspend/resume architecture, I am wondering what is necessary to wake up system from a touchscreen. The gt9xx code is from https://github.com/goodix/gt9xx_driver_android/blob/master/gt9xx.c It has functions as follows,
static int gtp_wakeup_sleep(struct goodix_ts_data *ts)
{
	u8 retry = 0;
	int ret = -1;

	while (retry++ client);
		if (!ret) {
			dev_dbg(&ts->client->dev, "Success wakeup sleep\n");

			gtp_int_sync(ts, 25);
			if (ts->pdata->esd_protect)
				gtp_init_ext_watchdog(ts->client);

			return ret;
		}
		gtp_reset_guitar(ts->client, 20);
	}

	dev_err(&ts->client->dev, "Failed wakeup from sleep mode\n");
	return -EINVAL;
}
And in gtp_probe() it does followings to setup wakeup.
gtp_work_control_enable(ts, false);
	if (ts->pdata->slide_wakeup) {
		dev_info(&client->dev, "slide wakeup enabled\n");
		ret = enable_irq_wake(client->irq);
		if (ret dev, "Failed set irq wake\n");
	}
To test the codes, I did followings, echo standby > /sys/power/state. The system is suspended. I touched the screen (point and slide), to wake up system, but failed. The system is woken up after 120 seconds by RTC alarm timer.
wangt13 (631 rep)
May 25, 2023, 06:22 AM • Last activity: May 25, 2023, 11:43 PM
1 votes
2 answers
5955 views
Force refresh rate through HDMI + remap touchscreen of external monitor?
I hope that someone will be able to help me because I am losing my nerves. I am working on F37 Silverblue + Wayland / X11. System has nVidia Optimus, with proprietary nVidia drivers (not Nouveau). Have recently bought an external touchscreen monitor to aid my setup. The monitor nominally supports up...
I hope that someone will be able to help me because I am losing my nerves. I am working on F37 Silverblue + Wayland / X11. System has nVidia Optimus, with proprietary nVidia drivers (not Nouveau). Have recently bought an external touchscreen monitor to aid my setup. The monitor nominally supports up to 1080p resolutions over HDMI or USB-C (but I don't have a USB-C capable video output, so I have to use HDMI). The touchscreen output is sent over a USB cable, and power is received through the same cable. ====== Force particular (60Hz) refresh rate over HDMI ====== The most persistent issue I have noticed with this monitor is that it refuses to set itself at any refresh rate other than 59 or 60 Hz (although it reports that it supports up to 120 Hz -- I can choose this in Gnome settings, but to no avail). That would be fine with me except that when I try to ***mirror*** the laptop display (also 1080p), the monitor turns off and says no input device found. Now, this same issue happens when ***extending*** if I try to set it to 120 / 100 / 50 / 30 / 29 / etc. hertz. I believe that the issue is that when I try to mirror the display, Fedora / Gnome / whomever is trying to revert back to 120 Hz for the display (because that's what it signals it maximally supports, in theory). This makes it reject the input signal and refuse to show anything. Alternatively, Gnome might be attempting to clone the refresh rate of my integrated laptop monitor, which is, weirdly, set at 60.02 Hz, so it is above 60 Hz, so it also gets rejected. Unfortunately, while mirroring, I can't set a (60Hz) refresh rate -- there's no such option in Gnome settings. I can only do this if I use the external monitor to extend the display. Another peculiar thing I noticed is that if I drop down the resolution of the external touchscreen display (say to 1440 x 900), I can now clone the display and use it as a touchscreen -- but of course, the image looks horrible. **How can I go about diagnosing this, and particularly, about forcing / limiting HDMI to only output at 60 Hz regardless of what the monitor signals it supports?** ====== Persistent remap of touchscreen output ====== My second issue is with the touchscreen. It always works (sends out touch output even if the monitor itself is not displaying anything), detects multiple fingers and the like. The problem is that it somehow always gets mapped to my laptop screen. So I can touch and drag windows etc. which appear on the main laptop display blindly, but I don't see them on the external touchscreen monitor. And windows that appear on the external touchscreen display are not affected by touch (i.e. because it is mapped on the main display). Regardless of where I put the external touchscreen monitor in Gnome settings (left, right, above, below the laptop screen), or whether I select it as the primary or secondary monitor, the touchscreen output is persistently mapped to the laptop monitor. Only if I turn off the laptop monitor the image gets displayed solely on the external touchscreen monitor, only then I can use it as a touch device -- but then I have one display unused for anything. And of course, if I lower the resolution I can clone the display, and then the touch output corresponds to what is displayed on screen -- but it looks horrible. I found out somewhere that Fedora / Wayland uses mutter to send in touch input -- but I cannot find anywhere how to configure mutter like I would xinput. I guess the question is: **how can I consistently remap the touchscreen to the appropriate monitor?** ====== X11 ====== If I login under Xorg I am unable to output ANYTHING to the external touchscreen. Nothing works, nor decreasing resolution, decreasing / setting refresh rates, nothing. Only the touchscreen finger output works, probably because it is a separate device of a sort. Here's the output from
:
[username]@fedora37 ~]$ xrandr
Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 16384 x 16384
eDP-1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 382mm x 215mm
   1920x1080     60.02*+  60.01    59.97    59.96    59.93  
   1680x1050     59.95    59.88  
   1400x1050     59.98  
   1600x900      59.99    59.94    59.95    59.82  
   1280x1024     60.02  
   1400x900      59.96    59.88  
   1280x960      60.00  
   1440x810      60.00    59.97  
   1368x768      59.88    59.85  
   1280x800      59.99    59.97    59.81    59.91  
   1280x720      60.00    59.99    59.86    59.74  
   1024x768      60.04    60.00  
   960x720       60.00  
   928x696       60.05  
   896x672       60.01  
   1024x576      59.95    59.96    59.90    59.82  
   960x600       59.93    60.00  
   960x540       59.96    59.99    59.63    59.82  
   800x600       60.00    60.32    56.25  
   840x525       60.01    59.88  
   864x486       59.92    59.57  
   700x525       59.98  
   800x450       59.95    59.82  
   640x512       60.02  
   700x450       59.96    59.88  
   640x480       60.00    59.94  
   720x405       59.51    58.99  
   684x384       59.88    59.85  
   640x400       59.88    59.98  
   640x360       59.86    59.83    59.84    59.32  
   512x384       60.00  
   512x288       60.00    59.92  
   480x270       59.63    59.82  
   400x300       60.32    56.34  
   432x243       59.92    59.57  
   320x240       60.05  
   360x202       59.51    59.13  
   320x180       59.84    59.32  
DP-1-0 disconnected (normal left inverted right x axis y axis)
DP-1-1 disconnected (normal left inverted right x axis y axis)
HDMI-1-0 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 600mm x 340mm
   1920x1080     60.00 + 120.00*  100.00    60.00    59.94    50.00    29.97    25.00    23.98  
   1440x900      59.89  
   1400x1050     59.98  
   1280x1024     75.02    60.02  
   1280x960      60.00  
   1280x720      60.00    59.94    50.00  
   1024x768      75.03    70.07    60.00  
   800x600       75.00    72.19    60.32    56.25  
   640x480       75.00    72.81    59.94  
  1280x1024 (0x50) 108.000MHz +HSync +VSync
        h: width  1280 start 1328 end 1440 total 1688 skew    0 clock  63.98KHz
        v: height 1024 start 1025 end 1028 total 1066           clock  60.02Hz
  1280x960 (0x53) 108.000MHz +HSync +VSync
        h: width  1280 start 1376 end 1488 total 1800 skew    0 clock  60.00KHz
        v: height  960 start  961 end  964 total 1000           clock  60.00Hz
  1024x768 (0x61) 65.000MHz -HSync -VSync
        h: width  1024 start 1048 end 1184 total 1344 skew    0 clock  48.36KHz
        v: height  768 start  771 end  777 total  806           clock  60.00Hz
  800x600 (0x70) 40.000MHz +HSync +VSync
        h: width   800 start  840 end  968 total 1056 skew    0 clock  37.88KHz
        v: height  600 start  601 end  605 total  628           clock  60.32Hz
  800x600 (0x71) 36.000MHz +HSync +VSync
        h: width   800 start  824 end  896 total 1024 skew    0 clock  35.16KHz
        v: height  600 start  601 end  603 total  625           clock  56.25Hz
  640x480 (0x7d) 25.175MHz -HSync -VSync
        h: width   640 start  656 end  752 total  800 skew    0 clock  31.47KHz
        v: height  480 start  490 end  492 total  525           clock  59.94Hz
I prefer to work on these problems through Wayland, but X11 would be the second-best alternative. Is there a GUI tool to work with these kinds of issues? I'm still a newbie.
user568222 (15 rep)
Apr 7, 2023, 08:34 PM • Last activity: Apr 14, 2023, 05:38 AM
1 votes
0 answers
132 views
Draw with multiple fingers/styluses simultaneously on a touchscreen
I have a large touchscreen display that I would like to use for drawing with either my fingers or/and styluses. I can do this perfectly fine under Android, multiple people can use the display at the same time, drawing at different areas. However, when running Wayland (Gnome), touch events are interp...
I have a large touchscreen display that I would like to use for drawing with either my fingers or/and styluses. I can do this perfectly fine under Android, multiple people can use the display at the same time, drawing at different areas. However, when running Wayland (Gnome), touch events are interpreted as mouse-clicks or multi-touch events such as zoom or rotate. Is it possible to draw multiple lines, for example in Gimp on Wayland like that?
Convaly (11 rep)
Jul 18, 2022, 11:44 AM • Last activity: Apr 6, 2023, 10:49 AM
Showing page 1 of 20 total questions