Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 18/07/2016, à 17:23

wawaaaaan

Uinput ne fonctionne pas sous ubuntu 16.04

Bonjour,

J'ai écris un programme avec uinput qui intercepte les données d'un écran multitouch (désactivé via xinput), qui fait des traitements sur ces données et qui les envois au système via uinput.
Pour une raison qui m'est inconnue, ca ne fonctionne pas sous ubuntu. Je tiens à préciser que le programme en question fonctionne parfaitement sous fedora 23/24.
Une fois le programme éxécuté la souris doit se déplacer normalement sous mon doigt. Hors sur ubuntu rien ne se passe.

xinput, le périphérique en question est le 3M :

⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
⎜   ↳ HP HP USB Laser Mouse                   	id=13	[slave  pointer  (2)]
⎜   ↳ 3M 3M MicroTouch USB controller         	id=14	[slave  pointer  (2)]
⎣ Virtual core keyboard                   	id=3	[master keyboard (2)]
    ↳ Virtual core XTEST keyboard             	id=5	[slave  keyboard (3)]
    ↳ Power Button                            	id=6	[slave  keyboard (3)]
    ↳ Video Bus                               	id=7	[slave  keyboard (3)]
    ↳ Power Button                            	id=8	[slave  keyboard (3)]
    ↳ Sleep Button                            	id=9	[slave  keyboard (3)]
    ↳ Eee PC WMI hotkeys                      	id=10	[slave  keyboard (3)]
    ↳ Dell Dell USB Keyboard Hub              	id=11	[slave  keyboard (3)]
    ↳ Dell Dell USB Keyboard Hub              	id=12	[slave  keyboard (3)]
xinput list-props 14
Device '3M 3M MicroTouch USB controller':
	Device Enabled (130):	0
	Coordinate Transformation Matrix (132):	1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
	Device Accel Profile (449):	0
	Device Accel Constant Deceleration (450):	1.000000
	Device Accel Adaptive Deceleration (451):	1.000000
	Device Accel Velocity Scaling (452):	10.000000
	Device Product ID (251):	1430, 1286
	Device Node (252):	"/dev/input/event14"
	Evdev Axis Inversion (453):	0, 0
	Evdev Axis Calibration (454):	<no items>
	Evdev Axes Swap (455):	0
	Axis Labels (456):	"Abs MT Position X" (458), "Abs MT Position Y" (459), "Abs MT Touch Major" (493), "Abs MT Touch Minor" (494), "Abs MT Orientation" (495), "None" (0), "None" (0)
	Button Labels (468):	"Button Unknown" (465), "Button Unknown" (465), "Button Unknown" (465), "Button Wheel Up" (136), "Button Wheel Down" (137)
	Evdev Scrolling Distance (457):	0, 0, 0
	Evdev Middle Button Emulation (469):	0
	Evdev Middle Button Timeout (470):	50
	Evdev Third Button Emulation (471):	0
	Evdev Third Button Emulation Timeout (472):	1000
	Evdev Third Button Emulation Button (473):	3
	Evdev Third Button Emulation Threshold (474):	20
	Evdev Wheel Emulation (475):	0
	Evdev Wheel Emulation Axes (476):	0, 0, 4, 5
	Evdev Wheel Emulation Inertia (477):	10
	Evdev Wheel Emulation Timeout (478):	200
	Evdev Wheel Emulation Button (479):	4
	Evdev Drag Lock Buttons (480):	0

Pour intercepter les données je lis sur /dev/input/event14, comme visible ci-dessus.
Je démarre mon binaire en sudo, donc à priori le problème ne vient pas d'un manque de droits.

sudo ./MegaTouchExed 
[sudo] password for toto: 
config.txt opened!
Reading from:
device file = /dev/input/event14
device name = 3M 3M MicroTouch USB controller
Start OK.

Le périphérique virtuel est bien créé et listé sur xinput :

xinput list-props 15
Device 'MouseControllerObserver':
	Device Enabled (130):	1
	Coordinate Transformation Matrix (132):	1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
	Device Accel Profile (449):	0
	Device Accel Constant Deceleration (450):	1.000000
	Device Accel Adaptive Deceleration (451):	1.000000
	Device Accel Velocity Scaling (452):	10.000000
	Device Product ID (251):	1, 1
	Device Node (252):	"/dev/input/event15"
	Evdev Axis Inversion (453):	0, 0
	Evdev Axis Calibration (454):	<no items>
	Evdev Axes Swap (455):	0
	Axis Labels (456):	"Abs MT Position X" (458), "Abs MT Position Y" (459), "None" (0), "None" (0)
	Button Labels (468):	"Button Left" (133), "Button Unknown" (465), "Button Right" (135), "Button Wheel Up" (136), "Button Wheel Down" (137)
	Evdev Scrolling Distance (457):	0, 0, 0
	Evdev Middle Button Emulation (469):	0
	Evdev Middle Button Timeout (470):	50
	Evdev Third Button Emulation (471):	0
	Evdev Third Button Emulation Timeout (472):	1000
	Evdev Third Button Emulation Button (473):	3
	Evdev Third Button Emulation Threshold (474):	20
	Evdev Wheel Emulation (475):	0
	Evdev Wheel Emulation Axes (476):	0, 0, 4, 5
	Evdev Wheel Emulation Inertia (477):	10
	Evdev Wheel Emulation Timeout (478):	200
	Evdev Wheel Emulation Button (479):	4
	Evdev Drag Lock Buttons (480):	0

J'ai fais un test avec evtest et les données créées via mon périphérique virtuel sont bien envoyés et semble correspondre a ce qu'envoit l'écran :

Input driver version is 1.0.1
Input device ID: bus 0x3 vendor 0x1 product 0x1 version 0x1
Input device name: "MouseControllerObserver"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 272 (BTN_LEFT)
    Event code 273 (BTN_RIGHT)
    Event code 330 (BTN_TOUCH)
  Event type 3 (EV_ABS)
    Event code 0 (ABS_X)
      Value      0
      Min        0
      Max     1920
    Event code 1 (ABS_Y)
      Value      0
      Min        0
      Max     1080
    Event code 47 (ABS_MT_SLOT)
      Value      0
      Min        0
      Max        9
    Event code 53 (ABS_MT_POSITION_X)
      Value      0
      Min        0
      Max    32768
    Event code 54 (ABS_MT_POSITION_Y)
      Value      0
      Min        0
      Max    32768
    Event code 57 (ABS_MT_TRACKING_ID)
      Value      0
      Min        0
      Max    65535
Properties:
Testing ... (interrupt to exit)
Event: time 1468854873.609444, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 1
Event: time 1468854873.609444, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 898
Event: time 1468854873.609444, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 9070
Event: time 1468854873.609444, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 20495
Event: time 1468854873.609444, -------------- SYN_REPORT ------------
Event: time 1468854873.633553, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 20497
Event: time 1468854873.633553, -------------- SYN_REPORT ------------
Event: time 1468854873.656775, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 20492
Event: time 1468854873.656775, -------------- SYN_REPORT ------------
Event: time 1468854873.680173, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 20489
Event: time 1468854873.680173, -------------- SYN_REPORT ------------
Event: time 1468854873.703797, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 9073
Event: time 1468854873.703797, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 20491
Event: time 1468854873.703797, -------------- SYN_REPORT ------------
Event: time 1468854873.728093, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value -1
Event: time 1468854873.728093, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 0
Event: time 1468854873.728093, -------------- SYN_REPORT ------------

Voila un équivalent (je n'ai pas cliqué au même endroit et je ne l'ai pas lancé en parallèle de la commande sur le périphérique virtuel) à ce que j'ai fais ci-dessus mais sur le evtest de l'écran :

Input driver version is 1.0.1
Input device ID: bus 0x3 vendor 0x596 product 0x506 version 0x110
Input device name: "3M 3M MicroTouch USB controller"
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   9073
      Min        0
      Max    32767
    Event code 1 (ABS_Y)
      Value  20491
      Min        0
      Max    32767
    Event code 47 (ABS_MT_SLOT)
      Value      0
      Min        0
      Max       59
    Event code 48 (ABS_MT_TOUCH_MAJOR)
      Value      0
      Min        0
      Max    32767
      Fuzz     255
    Event code 49 (ABS_MT_TOUCH_MINOR)
      Value      0
      Min        0
      Max    32767
      Fuzz     255
    Event code 52 (ABS_MT_ORIENTATION)
      Value      0
      Min        0
      Max        1
    Event code 53 (ABS_MT_POSITION_X)
      Value      0
      Min        0
      Max    32767
      Fuzz      15
    Event code 54 (ABS_MT_POSITION_Y)
      Value      0
      Min        0
      Max    32767
      Fuzz      15
    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 1468854901.442530, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 207
Event: time 1468854901.442530, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 8000
Event: time 1468854901.442530, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 23215
Event: time 1468854901.442530, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 1
Event: time 1468854901.442530, type 3 (EV_ABS), code 0 (ABS_X), value 8000
Event: time 1468854901.442530, type 3 (EV_ABS), code 1 (ABS_Y), value 23215
Event: time 1468854901.442530, -------------- SYN_REPORT ------------
Event: time 1468854901.476523, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 7997
Event: time 1468854901.476523, type 3 (EV_ABS), code 0 (ABS_X), value 7997
Event: time 1468854901.476523, -------------- SYN_REPORT ------------
Event: time 1468854901.482522, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value -1
Event: time 1468854901.482522, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 0
Event: time 1468854901.482522, -------------- SYN_REPORT ------------

Un lsmod :

8250_fintek            16384  0
ablk_helper            16384  1 aesni_intel
acpi_als               16384  0
acpi_pad               20480  0
aesni_intel           167936  0
aes_x86_64             20480  1 aesni_intel
ahci                   36864  2
asus_wmi               28672  1 eeepc_wmi
autofs4                40960  2
bluetooth             520192  9 bnep,btbcm,btqca,hci_uart,btintel
bnep                   20480  2
btbcm                  16384  1 hci_uart
btintel                16384  1 hci_uart
btqca                  16384  1 hci_uart
coretemp               16384  0
crc32_pclmul           16384  0
crct10dif_pclmul       16384  0
cryptd                 20480  2 aesni_intel,ablk_helper
drm                   360448  7 i915_bpo,drm_kms_helper
drm_kms_helper        139264  1 i915_bpo
eeepc_wmi              16384  0
fb_sys_fops            16384  1 drm_kms_helper
fjes                   28672  0
gf128mul               16384  1 lrw
glue_helper            16384  1 aesni_intel
hci_uart               77824  0
hid                   118784  3 hid_multitouch,hid_generic,usbhid
hid_generic            16384  0
hid_multitouch         20480  0
i2c_algo_bit           16384  1 i915_bpo
i915_bpo             1261568  6
industrialio           57344  2 acpi_als,kfifo_buf
input_leds             16384  0
intel_ips              20480  1 i915_bpo
intel_lpss             16384  1 intel_lpss_acpi
intel_lpss_acpi        16384  0
intel_powerclamp       16384  0
intel_rapl             20480  0
irqbypass              16384  1 kvm
joydev                 20480  0
kfifo_buf              16384  1 acpi_als
kvm                   536576  0
libahci                32768  1 ahci
lp                     20480  0
lrw                    16384  1 aesni_intel
mac_hid                16384  0
mei                    98304  1 mei_me
mei_me                 36864  0
mii                    16384  1 r8169
Module                  Size  Used by
mxm_wmi                16384  0
parport                49152  3 lp,ppdev,parport_pc
parport_pc             32768  0
pinctrl_intel          20480  1 pinctrl_sunrisepoint
pinctrl_sunrisepoint    28672  0
ppdev                  20480  0
psmouse               126976  0
r8169                  81920  0
serio_raw              16384  0
shpchp                 36864  0
snd                    81920  17 snd_hda_codec_realtek,snd_hwdep,snd_timer,snd_hda_codec_hdmi,snd_pcm,snd_seq,snd_rawmidi,snd_hda_codec_generic,snd_hda_codec,snd_hda_intel,snd_seq_device
snd_hda_codec         135168  4 snd_hda_codec_realtek,snd_hda_codec_hdmi,snd_hda_codec_generic,snd_hda_intel
snd_hda_codec_generic    77824  1 snd_hda_codec_realtek
snd_hda_codec_hdmi     53248  1
snd_hda_codec_realtek    81920  1
snd_hda_core           73728  5 snd_hda_codec_realtek,snd_hda_codec_hdmi,snd_hda_codec_generic,snd_hda_codec,snd_hda_intel
snd_hda_intel          36864  3
snd_hwdep              16384  1 snd_hda_codec
snd_pcm               106496  4 snd_hda_codec_hdmi,snd_hda_codec,snd_hda_intel,snd_hda_core
snd_rawmidi            32768  1 snd_seq_midi
snd_seq                69632  2 snd_seq_midi_event,snd_seq_midi
snd_seq_device         16384  3 snd_seq,snd_rawmidi,snd_seq_midi
snd_seq_midi           16384  0
snd_seq_midi_event     16384  1 snd_seq_midi
snd_timer              32768  2 snd_pcm,snd_seq
soundcore              16384  1 snd
sparse_keymap          16384  1 asus_wmi
syscopyarea            16384  1 drm_kms_helper
sysfillrect            16384  1 drm_kms_helper
sysimgblt              16384  1 drm_kms_helper
usbhid                 49152  0
video                  40960  2 i915_bpo,asus_wmi
wmi                    20480  2 mxm_wmi,asus_wmi
x86_pkg_temp_thermal    16384  0

Comme ca fonctionne parfaitement sous fedora et que à priori la version de X et autres packages sont équivalentes, je me demande si ubuntu n'a pas quelque chose de spécifique.
Voilà la raison pour laquelle je viens poster sur le forum ubuntu, car en dehors de l'OS je ne vois pas ce qui peut différer.
Si vous avez besoin de plus d'informations demandez wink

Merci smile

Dernière modification par wawaaaaan (Le 18/07/2016, à 17:27)

Hors ligne

#2 Le 18/08/2016, à 14:14

wawaaaaan

Re : Uinput ne fonctionne pas sous ubuntu 16.04

up

Hors ligne