p2rkw / xf86-input-mtrack Goto Github PK
View Code? Open in Web Editor NEWXorg Multitouch Trackpad Driver
License: GNU General Public License v2.0
Xorg Multitouch Trackpad Driver
License: GNU General Public License v2.0
Having a natural scrolling option like the Synaptics's driver would be awesome.
Can it be added to this driver?
I'm using Arch Linux on a 2012 MacBook Air with the xf86-input-mtrack-git package. Despite setting all TapButton
settings to 0, I'm still getting extraneous tap-clicks when I leave one finger on the touchpad and touch a second finger to it. This issue can be reproduced in xinput test
with one finger on the touchpad and touching a second finger to it repeatedly, causing several sequences of button press 1
immediately followed by button release 1
with several motion
events between them.
I might have accidentally missed something in the config, but trying to tap with a single finger or two fingers at once causes no button presses.
Here is the output of xinput list-props
:
Device 'bcm5974':
Device Enabled (138): 1
Coordinate Transformation Matrix (140): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
Device Accel Profile (271): 0
Device Accel Constant Deceleration (272): 1.000000
Device Accel Adaptive Deceleration (273): 1.000000
Device Accel Velocity Scaling (274): 10.000000
Trackpad Disable Input (275): 0
Trackpad Sensitivity (276): 0.500000
Trackpad Touch Pressure (277): 5, 5
Trackpad Button Settings (278): 1, 1
Trackpad Button Emulation Settings (279): 0, 1, 100
Trackpad Button Emulation Values (280): 3, 2, 0
Trackpad Tap Settings (281): 50, 120, 1
Trackpad Tap Button Emulation (282): 0, 0, 0, 0
Trackpad Thumb Detection (283): 0, 0
Trackpad Thumb Size (284): 25, 70
Trackpad Palm Detection (285): 0, 0
Trackpad Palm Size (286): 40
Trackpad Gesture Settings (287): 10, 100
Trackpad Smooth Scroll (288): 1
Trackpad Scroll Settings (289): 250, 20, 0
Trackpad Scroll Buttons (290): 5, 4, 7, 6
Trackpad Swipe Settings (291): 700, 300, 0
Trackpad Swipe Buttons (292): 8, 9, 10, 11
Trackpad Swipe4 Settings (293): 700, 300, 0
Trackpad Swipe4 Buttons (294): 0, 0, 0, 0
Trackpad Scroll Coasting (295): 0.100000, 200.000000
Trackpad Scale Distance (296): 150
Trackpad Scale Buttons (297): 12, 13
Trackpad Rotate Distance (298): 150
Trackpad Rotate Buttons (299): 14, 15
Trackpad Hold1Move1 Stationary Settings (300): 1, 0
Trackpad Hold1Move1 Settings (301): 1, 0, 1000
Trackpad Hold1Move1 Buttons (302): 1, 1, 1, 1
Trackpad Drag Settings (303): 0, 1, 100, 200
Trackpad Axis Inversion (304): 0, 0
Trackpad Edge Size (305): 10
And 10-mtrack.conf
:
Section "InputClass"
MatchIsTouchpad "on"
Identifier "Touchpads"
Driver "mtrack"
Option "Sensitivity" "0.50"
Option "TapButton1" "0"
Option "TapButton2" "0"
Option "TapButton3" "0"
Option "TapButton4" "0"
Option "MaxTapMove" "0"
Option "ScrollUpButton" "5"
Option "ScrollDownButton" "4"
Option "ScrollLeftButton" "7"
Option "ScrollRightButton" "6"
Option "ScrollDistance" "250"
Option "TapDragEnable" "no"
Option "TapDragTime" "0"
Option "TapDragWait" "100"
Option "Hold1Move1StationaryButton" "0"
Option "Hold1Move1StationaryMaxMove" "1"
EndSection
I have configured natural scrolling by switching the binding for ScrollUpButton
and ScrollDownButton
.
e.g.
Option "ScrollUpButton" "5" # 2 finger swipe up to scroll down
Option "ScrollDownButton" "4" # 2 finger swipe down to scroll up
I find that when you have ScrollSmooth
enabled this doesn't work and I assume it also interfears with the smooth scrolling causing a lot of jerkiness, since they are counterworking eachother. So I scroll down, the smooth scrolling starts and then it scrolls in the opposite direction from my actual scrolling.
It would be awesome if mtrack could do what synaptics/OS X do when scrolling - when the scroll gesture is fast and short, it keeps the view scrolling even after the fingers are lifted from the touchpad while putting the fingers back on the touchpad stops the scrolling.
Or is this already possible? I haven't figured out how to set that...
Btw. thanks for your new work on mtrack, good stuff!
I just updated to X 1.18 and at the moment I'm having to remove the mtrack driver in order for my touchpad to work.
I'm running arch on a macbook air.
While scrolling with two fingers, the trackpad randomly clicks links and selects texts. It does now happen all the time, just ranomly.
I have tried to remove all tap features, since I do not need it.
Here is my config file:
`Section "InputClass"
MatchIsTouchpad "on"
Identifier "Touchpads"
Driver "mtrack"
Option "IgnoreThumb" "true"
Option "ThumbSize" "15"
Option "IgnorePalm" "true"
Option "ScrollDistance" "25"
Option "ClickFinger1" "1"
Option "ClickFinger2" "3"
Option "ClickFinger3" "0"
Option "EdgeSize" "17"
Option "TapDragEnable" "false"
Option "TapButton1" "0"
Option "TapButton2" "0"
Option "TapButton3" "0"
Option "Hold1Move1StationaryButton" "0"
Option "TapButton4" "0"
Option "ScrollCoastDuration" "400"
Option "ScrollLeftButton" "0"
Option "ScrollRightButton" "0"
Option "ButtonZonesEnable" "1"
EndSection
`
One of my favorite features of the xf86-input-synaptics driver is CircularScrolling, which is a feature similar to the chiral scrolling option in some of Synaptics' drivers for Windows.
In particular, there is an excellent patent-free implementation of it available as a patch over in this GitHub project. I would be thrilled if this feature were incorporated into the mtrack driver.
Hello,
thanks for this great touchpad drivers.
I'm using it on my Lenovo X1 Carbon 5th gen, running Debian Buster.
I noticed that when I plug an external display the cursor speed increases (almost doubles).
Is there anything I can do, besides of course running a shell script that calls xinput to adjust the sensitivity when the external display is plugged?
Thanks
This continues until both fingers are removed from the trackpad. I.e. you can remove a finger, then add a finger, and the issue remains.
Hi there,
I'm on Arch and installed the https://aur.archlinux.org/packages/xf86-input-mtrack-git/ Pkg.
Linux psi-nb 4.3.3-2-ARCH #1 SMP PREEMPT Wed Dec 23 20:09:18 CET 2015 x86_64 GNU/Linux
kwin 5.5.3
plasmashell 5.5.3
and SDDM.
After installing the AUR Package i can not login into Plasma anymore.
Xorg.0.log
[ 8.287] (**) Option "Device" "/dev/input/mouse1"
[ 8.287] (EE) mtrack: cannot configure device
[ 8.287] (EE) Couldn't init device "SynPS/2 Synaptics TouchPad"
[ 8.287] (II) UnloadModule: "mtrack"
I couldn't find anything helpful in journald log.
When I 2-finger scroll, the scrolling continues even if I stopped the movement itself.
How can I disable this behaviour?
First, thanks for the hard work in keeping this project up!
Would you consider adding handling of Synaptics' poor reporting of multitouch gestures?
As evidenced by evtest
, Synaptics unfortunately reports third, and higher, tap as a sequence of BTN_TOUCH
(or BTN_FINGER
) followed by BTN_TOOL_TRIPLETAP
(or BTN_TOOL_QUADTAP
, etc...).
Event: time 1513311070.511217, type 3 (EV_ABS), code 47 (ABS_MT_SLOT), value 0
Event: time 1513311070.511217, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 1892
Event: time 1513311070.511217, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 3141
Event: time 1513311070.511217, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 3851
Event: time 1513311070.511217, type 3 (EV_ABS), code 47 (ABS_MT_SLOT), value 1
Event: time 1513311070.511217, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 1893
Event: time 1513311070.511217, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 4276
Event: time 1513311070.511217, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 1984
Event: time 1513311070.511217, type 3 (EV_ABS), code 58 (ABS_MT_PRESSURE), value 48
Event: time 1513311070.511217, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 1
Event: time 1513311070.511217, type 3 (EV_ABS), code 0 (ABS_X), value 3141
Event: time 1513311070.511217, type 3 (EV_ABS), code 1 (ABS_Y), value 3851
Event: time 1513311070.511217, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 56
Event: time 1513311070.511217, type 1 (EV_KEY), code 334 (BTN_TOOL_TRIPLETAP), value 1
libinput
does handle it correctly (relevant code in libinput/src/evdev-mt-touchpad.c
around tp_fake_finger...
) but lacks mtrack's other features, notably superb kinetic scrolling.
Thanks for the consideration!
Hi,
All is in the title, did you make it work on your side ?
Thanks
Device ETPS/2 Elantech Touchpad':
Device Enabled (138): 1
Coordinate Transformation Matrix (140): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
libinput Tapping Enabled (274): 1
libinput Tapping Enabled Default (275): 0
libinput Tapping Drag Enabled (276): 1
libinput Tapping Drag Enabled Default (277): 1
libinput Tapping Drag Lock Enabled (278): 0
libinput Tapping Drag Lock Enabled Default (279): 0
libinput Tapping Button Mapping Enabled (280): 1, 0
libinput Tapping Button Mapping Default (281): 1, 0
libinput Accel Speed (282): 0.000000
libinput Accel Speed Default (283): 0.000000
libinput Natural Scrolling Enabled (284): 0
libinput Natural Scrolling Enabled Default (285): 0
libinput Send Events Modes Available (259): 1, 1
libinput Send Events Mode Enabled (260): 0, 0
libinput Send Events Mode Enabled Default (261): 0, 0
libinput Left Handed Enabled (286): 0
libinput Left Handed Enabled Default (287): 0
libinput Scroll Methods Available (288): 1, 1, 0
libinput Scroll Method Enabled (289): 1, 0, 0
libinput Scroll Method Enabled Default (290): 1, 0, 0
libinput Disable While Typing Enabled (291): 1
libinput Disable While Typing Enabled Default (292): 1
Device Node (262): "/dev/input/event8"
Device Product ID (263): 2, 14
libinput Drag Lock Buttons (293): <no items>
libinput Horizontal Scroll Enabled (294): 1
Does this mean it's incompatible with the current 1.19.1-1 Xorg server? Or is that text from the BlueDragonX:master? I added it from the AUR but it doesn't seem to be working.
Here's my 10-mtrack.conf
:
Section "InputClass"
MatchIsTouchpad "on"
Identifier "Touchpads"
Driver "mtrack"
Option "Sensitivity" "0.60"
Option "FingerHigh" "5"
Option "FingerLow" "1"
Option "IgnoreThumb" "true"
Option "ThumbRatio" "70"
Option "ThumbSize" "25"
Option "IgnorePalm" "true"
Option "TapButton1" "0"
Option "TapButton2" "0"
Option "TapButton3" "0"
Option "TapButton4" "0"
Option "ClickFinger1" "3"
Option "ClickFinger2" "3"
Option "ClickFinger3" "3"
Option "ButtonMoveEmulate" "false"
Option "ButtonIntegrated" "true"
Option "ClickTime" "25"
Option "BottomEdge" "30"
Option "SwipeLeftButton" "8"
Option "SwipeRightButton" "9"
Option "SwipeUpButton" "0"
Option "SwipeDownButton" "0"
Option "SwipeDistance" "700"
Option "ScrollCoastDuration" "500"
Option "ScrollCoastEnableSpeed" ".3"
Option "ScrollUpButton" "5"
Option "ScrollDownButton" "4"
Option "ScrollLeftButton" "7"
Option "ScrollRightButton" "6"
Option "ScrollDistance" "350"
Option "SwipeDistance" "1"
Option "SwipeLeftButton" "1"
Option "SwipeRightButton" "1"
Option "SwipeUpButton" "1"
Option "SwipeDownButton" "1"
Option "SwipeClickTime" "0"
Option "SwipeSensitivity" "1000"
EndSection
Forgive my poor English and related knowledge, please...
ClickFinger
and TapButton
?Any answer can be useful for me, thanks!
Every touch should "click" button one, every movement should drag it.
Right now there is only an option to set the edge for the whole trackpad, since I like to rest my thumb on the trackpad, or hold a finger on the button area, I need to set the Edge-option.
I have the Edge-option at 15%, this causes me to miss my scroll area on the trackpad from time to time. I Would like to set my Edge property to 15-20% for the bottom edge, and 0 for the other sides.
I just upgraded from v0.4.1 to master, upon which my single finger click changed to a right mouse click, and the two finger click seems to have changed to middle mouse.
This leaves me without a left mouse click option.
Hardware used is a Macbook Pro Retina 2015.
Below is my unchanged Xorg config for the mtrack module:
Section "InputClass"
MatchIsTouchpad "on"
Identifier "Touchpads"
Driver "mtrack"
# Adjusts the sensitivity (movement speed) of the touchpad. This is a real
# number greater than or equal to zero. Default is 1. A value of 0 will
# disable pointer movement.
Option "Sensitivity" "0.55"
# Defines the pressure at which a finger is detected as a touch. This is a
# percentage represented as an integer. Default is 5.
Option "FingerHigh" "5"
# Defines the pressure at which a finger is detected as a release. This is a
# percentage represented as an integer. Default is 5.
Option "FingerLow" "2"
# Whether or not to ignore touches that are determined to be thumbs. Boolean
# value. Defaults to false.
Option "IgnoreThumb" "false"
# Whether or not to ignore touches that are determined to be palms. Boolean
# value. Defaults to false.
Option "IgnorePalm" "false"
# Whether or not to disable the entire trackpad when a palm is touching.
# Boolean value. Defaults to false.
Option "DisableOnPalm" "true"
# The size of an area at the bottom of the trackpad where new touches are
# ignored (fingers traveling into this area from above will still be
# tracked). This is represented as a percentage of the total trackpad height.
# Defaults to 10.
Option "BottomEdge" "25"
# Whether or not the physical buttons are integrated with the trackpad. If
# you have a one-piece trackpad like on newer MacBooks, this should be set to
# true. Button emulation depends on this value being correct. Boolean value.
# Defaults to true.
Option "ButtonIntegrated" "true"
# Whether or not to count the moving finger when emulating button clicks.
# Useful to disable if you use two hands on trackpad. Boolean value. Defaults
# to true.
Option "ButtonMoveEmulate" "true"
# Which button to emulate for one-finger tapping. Integer value. A value of 0
# disables one-finger tapping. Defaults to 1.
Option "TapButton1" "0"
# Which button to emulate for two-finger tapping. Integer value. A value of 0
# disables two-finger tapping. Defaults to 3.
Option "TapButton2" "0"
# Which button to emulate for three-finger tapping. Integer value. A value of
# 0 disables three-finger tapping. Defaults to 2.
Option "TapButton3" "0"
# Which button to emulate for four-finger tapping. Integer value. A value of
# 0 disables three-finger tapping. Defaults to 0.
Option "TapButton4" "0"
# When tapping, how much time to hold down the emulated button. Integer value
# representing milliseconds. Defaults to 50.
Option "ClickTime" "25"
# For two finger scrolling. How far you must move your fingers before a
# button click is triggered. Integer value. Defaults to 150.
Option "ScrollDistance" "75"
# For two finger scrolling. The button that is triggered by scrolling up.
# Integer value. A value of 0 disables scrolling up. Defaults to 4.
Option "ScrollUpButton" "5"
# For two finger scrolling. The button that is triggered by scrolling down.
# Integer value. A value of 0 disables scrolling down. Defaults to 5.
Option "ScrollDownButton" "4"
# For two finger scrolling. The button that is triggered by scrolling left.
# Integer value. A value of 0 disables scrolling left. Defaults to 6.
Option "ScrollLeftButton" "7"
# For two finger scrolling. The button that is triggered by scrolling right. Integer value.
# A value of 0 disables scrolling right. Defaults to 7.
Option "ScrollRightButton" "6"
# For three finger swiping. How far you must move your fingers before a
# button click is triggered. Integer value. Defaults to 700.
Option "SwipeDistance" "700"
# For three finger swiping. The button that is triggered by swiping up.
# Integer value. A value of 0 disables swiping up. Defaults to 8.
Option "SwipeUpButton" "0"
# For three finger swiping. The button that is triggered by swiping down.
# Integer value. A value of 0 disables swiping down. Defaults to 9.
Option "SwipeDownButton" "0"
# For three finger swiping. The button that is triggered by swiping left.
# Integer value. A value of 0 disables swiping left. Defaults to 10.
Option "SwipeLeftButton" "9"
# For three finger swiping. The button that is triggered by swiping right.
# Integer value. A value of 0 disables swiping right. Defaults to 11.
Option "SwipeRightButton" "8"
# Whether or not to enable tap-to-drag functionality. Boolean value. Defaults to true.
Option "TapDragEnable" "false"
EndSection
Well, i have to say, i'm quite a beginner, so beware.
tl;dr touchpad not recognized, no logs available(!?)
i cloned this git to my arch machine and did
./configure
sudo make && make install
which gave me no errors. Two files are output to /usr/local/lib/xorg/modules/input
(i also tried copying those to another directory to make X find them. yet, nothing)
Then i configured the already existing 90-libinput.conf in /usr/share/X11/xorg.conf.d according to the Readme of this git (Identifier Touchpads, driver mtrack, matchistouchpad on)
after logoff or restart, the cursor wont move. i tried to look for errors in the log, but there's no log in /var/log and journalctl _COMM=Xorg doesn't give anything either. Also $xinput list does not list the device at all. Oh Xorg -version is 1.18.
Am I doin something not quite right?
As the title said - I cannot find the settings for the physical button, and multifinger gestures are a hit-and-miss with my sweaty palms. Is there anything of which I should know?
If I try to move the mouse when I place my finger just a bit to the left instead of starting on the right side of the trackpad I get no movement. It will not register my finger until it has moved within the right side of the trackpad.
First of all: Thank you for forking mtrack. You have fixed so many issues for me!
Maybe I'm just using wrong settings but whenever I touch the bottom edge of the trackpad with my thumb after my index finger is on the pad, the motion is stopped for a short time. Is there any way to completely ignore the bottom edge?
Below my configuration (most of it is default).
Section "InputClass"
Identifier "Touchpads"
Driver "mtrack"
MatchIsTouchpad "on"
MatchDevicePath "/dev/input/event*"
Option "Sensitivity" "0.38"
Option "TapButton1" "1"
Option "TapButton2" "3"
Option "TapButton3" "2"
Option "TapButton4" "0"
Option "ClickFinger1" "1"
Option "ClickFinger2" "3"
Option "ButtonMoveEmulate" "false"
Option "ButtonIntegrated" "true"
Option "ButtonEnabled" "true"
Option "ClickTime" "25"
Option "BottomEdge" "50"
Option "FingerHigh" "3"
Option "FingerLow" "1"
Option "IgnoreThumb" "true"
Option "IgnorePalm" "true"
Option "TapDragEnable" "false"
Option "TapDragWait" "100"
Option "ScrollUpButton" "4"
Option "ScrollDownButton" "5"
Option "ScrollDistance" "1"
Option "SwipeDistance" "75"
Option "SwipeLeftButton" "1"
Option "SwipeRightButton" "1"
Option "SwipeUpButton" "1"
Option "SwipeDownButton" "1"
Option "SwipeClickTime" "0"
Option "SwipeSensitivity" "1000"
Option "ThumbSize" "20"
EndSection
Hi!
I'm very happy with mtrack so far. However, tap drag does not seem to work correctly for me. When I tap once, then touch again and move my finger, apart from dragging, it also triggers a double click. So whenever I want to move a folder in my file explorer, it gets opened because of the double click.
Is there something wrong with my configuration? Any help is appreciated.
Device 'Synaptics TM3242-001':
Device Enabled (141): 1
Coordinate Transformation Matrix (143): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
Device Accel Profile (275): 0
Device Accel Constant Deceleration (276): 1.000000
Device Accel Adaptive Deceleration (277): 1.000000
Device Accel Velocity Scaling (278): 10.000000
Trackpad Disable Input (279): 0
Trackpad Sensitivity (280): 0.650000
Trackpad Touch Pressure (281): 5, 5
Trackpad Button Settings (282): 1, 1
Trackpad Button Emulation Settings (283): 1, 1, 100
Trackpad Button Emulation Values (284): 1, 3, 0
Trackpad Tap Settings (285): 50, 120, 400
Trackpad Tap Button Emulation (286): 1, 3, 2, 0
Trackpad Thumb Detection (287): 0, 0
Trackpad Thumb Size (288): 25, 70
Trackpad Palm Detection (289): 1, 0
Trackpad Palm Size (290): 40
Trackpad Gesture Settings (291): 10, 100
Trackpad Smooth Scroll (292): 1
Trackpad Scroll Settings (293): 20, 40, 0
Trackpad Scroll Buttons (294): 4, 5, 6, 7
Trackpad Swipe Settings (295): 700, 300, 0
Trackpad Swipe Buttons (296): 8, 9, 10, 11
Trackpad Swipe4 Settings (297): 700, 300, 0
Trackpad Swipe4 Buttons (298): 0, 0, 0, 0
Trackpad Scroll Coasting (299): 0.100000, 500.000000
Trackpad Edge Scroll Settings (300): 105, 20, 0, 4, 5, 6, 7
Trackpad Edge Sizes (301): 0, 10, 0, 0
Trackpad Scale Distance (302): 150
Trackpad Scale Buttons (303): 12, 13
Trackpad Rotate Distance (304): 150
Trackpad Rotate Buttons (305): 14, 15
Trackpad Hold1Move1 Stationary Settings (306): 20, 1
Trackpad Hold1Move1 Settings (307): 1, 0, 1000
Trackpad Hold1Move1 Buttons (308): 1, 1, 1, 1
Trackpad Drag Settings (309): 1, 350, 40, 200
Trackpad Axis Inversion (310): 0, 0
Section "InputClass"
MatchIsTouchpad "on"
Identifier "Touchpads"
Driver "mtrack"
Option "Sensitivity" "0.65"
Option "ClickFinger1" "1"
Option "ClickFinger2" "3"
Option "ClickFinger3" "0"
Option "ButtonZonesEnable" "true"
Option "ScrollDistance" "20"
Option "ScrollCoastDuration" "500"
Option "ScrollClickTime" "40"
Option "IgnorePalm" "true"
Option "TapDragEnable" "true
EndSection
As the title says - and same as rynbrd/xf86-input-mtrack#108
Only seems to be a problem when swapping the button numbers for scrolling to achieve natural scrolling. - Scrolling works as expected with the following:
Option "ScrollUpButton" "4"
Option "ScrollDownButton" "5"
Option "ScrollLeftButton" "6"
Option "ScrollRightButton" "7"
I originally commented there, but discovered that I was running this fork. Interestingly, I don't get the issue with BlueDragonX's git version, only with this version.
Thanks for working on this. It appears to be the only likely option right now (in 2018) to support 3-finger drag in linux. :-(
I tried to play with v0.5 for a couple of hours but I couldn't get it to work with the master branch at all. The "swipe_to_drag" branch is slightly better as it worked about once or twice. Is there a way to debug what's going on?
Thanks!
Apologies if I'm not doing GitHub right (newbie), but I wanted to mention that, in attempting to build the code, I was stopped by implicit declaration warnings because capabilities.h is missing definitions for get_cap_xmin() and get_cap_ymin(). This problem was introduced in commit 6f03cc5.
I also had to include unistd.h in mtrack-test.c in order for main() to be able to make use of close(). Having corrected these two points, the code built for me.
Not sure how others have been building the code without hitting these issues, so I feel like I did something wrong, but I merely ran "./configure" and "make" per usual. Anyway, thanks for continuing to maintain this project; I desperately need it to make this MacBook usable in Ubuntu.
Alternatively:
In both cases, the cursor appears to almost jump down in 10-20 pixel "steps" when moving slow enough. This makes it very difficult to make small movements.
$ xinput --list-props 11
Device 'bcm5974':
Device Enabled (139): 1
Coordinate Transformation Matrix (141): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
Device Accel Profile (272): 0
Device Accel Constant Deceleration (273): 1.000000
Device Accel Adaptive Deceleration (274): 1.000000
Device Accel Velocity Scaling (275): 10.000000
Trackpad Disable Input (276): 0
Trackpad Sensitivity (277): 0.200000
Trackpad Touch Pressure (278): 10, 10
Trackpad Button Settings (279): 1, 1
Trackpad Button Emulation Settings (280): 0, 1, 100
Trackpad Button Emulation Values (281): 3, 2, 0
Trackpad Tap Settings (282): 50, 120, 400
Trackpad Tap Button Emulation (283): 0, 0, 0, 0
Trackpad Thumb Detection (284): 0, 0
Trackpad Thumb Size (285): 25, 70
Trackpad Palm Detection (286): 1, 1
Trackpad Palm Size (287): 40
Trackpad Gesture Settings (288): 10, 100
Trackpad Smooth Scroll (289): 1
Trackpad Scroll Settings (290): 250, 20, 0
Trackpad Scroll Buttons (291): 5, 4, 7, 6
Trackpad Swipe Settings (292): 700, 300, 0
Trackpad Swipe Buttons (293): 0, 0, 8, 9
Trackpad Swipe4 Settings (294): 700, 300, 0
Trackpad Swipe4 Buttons (295): 0, 0, 0, 0
Trackpad Scroll Coasting (296): 0.100000, 200.000000
Trackpad Scale Distance (297): 150
Trackpad Scale Buttons (298): 12, 13
Trackpad Rotate Distance (299): 150
Trackpad Rotate Buttons (300): 14, 15
Trackpad Hold1Move1 Stationary Settings (301): 20, 1
Trackpad Hold1Move1 Settings (302): 1, 0, 1000
Trackpad Hold1Move1 Buttons (303): 1, 1, 1, 1
Trackpad Drag Settings (304): 1, 350, 40, 200
Trackpad Axis Inversion (305): 0, 0
Trackpad Edge Size (306): 10
After upgrading to 0.4.1, I encounter the following issue;
If I suspend my machine and wake it again xorg will segfault on the first keypress (not button press on trackpad)
[ 35.114] (EE) Backtrace:
[ 35.114] (EE) 0: /usr/bin/X (xorg_backtrace+0x4a) [0x591c2a]
[ 35.114] (EE) 1: /usr/bin/X (0x400000+0x195949) [0x595949]
[ 35.114] (EE) 2: /lib64/libpthread.so.0 (0x7fceb1ada000+0x10f40) [0x7fceb1aeaf40]
[ 35.114] (EE) 3: /usr/bin/X (TimerSet+0xcb) [0x58f30b]
[ 35.114] (EE) 4: /usr/bin/X (AccessXFilterPressEvent+0x242) [0x545622]
[ 35.114] (EE) 5: /usr/bin/X (0x400000+0x174979) [0x574979]
[ 35.115] (EE) 6: /usr/bin/X (mieqProcessInputEvents+0x99) [0x574ac9]
[ 35.115] (EE) 7: /usr/bin/X (ProcessInputEvents+0x19) [0x477289]
[ 35.115] (EE) 8: /usr/bin/X (0x400000+0x35886) [0x435886]
[ 35.115] (EE) 9: /usr/bin/X (0x400000+0x39b08) [0x439b08]
[ 35.115] (EE) 10: /lib64/libc.so.6 (__libc_start_main+0xf1) [0x7fceb17641e1]
[ 35.115] (EE) 11: /usr/bin/X (_start+0x2a) [0x42377a]
[ 35.115] (EE)
[ 35.115] (EE) Segmentation fault at address 0x8
[ 35.115] (EE)
Fatal server error:
[ 35.115] (EE) Caught signal 11 (Segmentation fault). Server aborting
[ 35.115] (EE)
The interesting part is, that if i leave the system idle for about 10 minutes before closing the lid, it will wake without segfaulting on the first key press.
Downgrading to 0.3.1 will successfully mitigate the issue.
I've uploaded the full logs of a crashing session as gist: https://gist.github.com/m4rcu5/1c4f753e799a4f9fa3b55ecb8b55c42a
Any idea what could be going on here?
I'm trying mtrack driver for my touchpad and seams to work well, but I've noticed that I can't unhide dock/panel while I'm using it.
If I switch to libinput driver I can unhide dock normally.
i've compiled module for ubuntu 17.04
and tried to use it on my dell laptop with apple trackpad
it works, but crashes x server definitely in few minutes after start
backtrace are different each time, so it seems to be memory corruption
Clickpad clicks are always registering as left-clicks, and three finger swipes are registering as two finger scrolls.
Device 'SynPS/2 Synaptics TouchPad':
Device Enabled (138): 1
Coordinate Transformation Matrix (140): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
Device Accel Profile (268): 0
Device Accel Constant Deceleration (269): 1.000000
Device Accel Adaptive Deceleration (270): 1.000000
Device Accel Velocity Scaling (271): 10.000000
Trackpad Disable Input (300): 0
Trackpad Sensitivity (301): 0.500000
Trackpad Touch Pressure (302): 5, 5
Trackpad Button Settings (303): 1, 1
Trackpad Button Emulation Settings (304): 0, 1, 100
Trackpad Button Emulation Values (305): 1, 3, 2
Trackpad Tap Settings (306): 50, 120, 400
Trackpad Tap Button Emulation (307): 1, 3, 0, 0
Trackpad Thumb Detection (308): 0, 0
Trackpad Thumb Size (309): 25, 70
Trackpad Palm Detection (310): 1, 0
Trackpad Palm Size (311): 40
Trackpad Gesture Settings (312): 10, 100
Trackpad Smooth Scroll (313): 1
Trackpad Scroll Settings (314): 150, 20, 0
Trackpad Scroll Buttons (315): 5, 4, 7, 6
Trackpad Swipe Settings (316): 700, 300, 0
Trackpad Swipe Buttons (317): 8, 9, 10, 11
Trackpad Swipe4 Settings (318): 700, 300, 0
Trackpad Swipe4 Buttons (319): 0, 0, 0, 0
Trackpad Scroll Coasting (320): 0.100000, 200.000000
Trackpad Scale Distance (321): 150
Trackpad Scale Buttons (322): 12, 13
Trackpad Rotate Distance (323): 150
Trackpad Rotate Buttons (324): 14, 15
Trackpad Hold1Move1 Stationary Settings (325): 20, 1
Trackpad Hold1Move1 Settings (326): 1, 0, 1000
Trackpad Hold1Move1 Buttons (327): 1, 1, 1, 1
Trackpad Drag Settings (328): 1, 350, 40, 200
Trackpad Axis Inversion (329): 0, 0
Trackpad Edge Size (330): 10
Section "InputClass"
MatchIsTouchpad "on"
Identifier "Touchpads"
Driver "mtrack"
Option "Sensitivity" "0.5"
Option "IgnorePalm" "on"
Option "ButtonIntegrated" "on"
Option "ClickFinger1" "1"
Option "ClickFinger2" "3"
Option "ClickFinger3" "2"
Option "TapButton1" "1"
Option "TapButton2" "3"
Option "TapButton3" "2"
Option "ScrollUpButton" "5"
Option "ScrollDownButton" "4"
Option "ScrollLeftButton" "7"
Option "ScrollRightButton" "6"
Option "ButtonTouchExpire" "0"
Option "ScrollSmooth" "on"
Option "SwipeDistance" "150"
EndSection
i have add the fellowing to /etc/X11/xorg.conf and my touchpad stop to work
Section "InputClass"
MatchIsTouchpad "on"
Identifier "Touchpads"
Driver "mtrack"
EndSection
i try to copy the examples macbook.conf to /etc/X11/xorg.conf and it still can not work
what can i do ?
thanks
Don't know if this is a hardware limitation or complete config fail but I can seem to register 4 finger anything.
I've set TapButton4 to a range of button numbers, same for the Swipe4XButton options but easystroke won't detect anything at all when trying to record the gestures (3 fingers records fine)
Any idea where I might be going wrong? I want to 4 finger swipe left/right to trigger key commands left/right
I'm using the prebuilt v0.4.1 deb on unbuntu gnome
weird means, it looks like button down event triggered. But without additional move or touch, it just holding. So double tap or tap-and-slight-move needed for actual tapping.
It happens whenever I change custom option in /etc/X11/xorg.conf.d/10-mtrack.conf
or using xinput set-prop
.
Thanks.
The same issue is mentioned HERE
I have Button Zones configured as follows (full config here)
Option "ClickFinger1" "1"
Option "ClickFinger2" "1"
Option "ClickFinger3" "3"
The thirds work as expected when clicking with one finger (right third does right click)
When resting a finger on the left third of the trackpad vertically higher than the finger on the right third of the trackpad, clicking performs a right click as expected
However when resting a finger on the left third of the trackpad vertically lower than the finger on the right third of the trackpad, clicking performs a left click.
Thanks,
Evan
EDIT: Attaching xinput-props-bcm5974.txt
EDIT 2: better understanding of when clicking makes a right vs left click
Hi,
building the current git version fails.
It seems you missed importing the right lib for the function close()
Adding #include <unistd.h>
to the imports solves the issue
I'm part of the input
group, but for some reason, whenever I try to use the mtrack driver, I get an error saying "xf86openserial: cannot open device [...] permission denied".
I don't think this is a problem with the mtrack driver though, because when I change permissions chmod g+w /dev/input/event*
, it starts working again. libinput has no such problem btw.
The default permissions on /dev/input/event*
are crw-r-----
with root:input
owner/group, does that sound about right?
However, it only works if I change it to crw-rw----
.
Any advice?
I'm trying to install this on my arch based laptop. Any chance of bumping the supported xorg version?
Does the driver supports touchegg? If so, could you show some configuration which can give possibility to send appropriate messages to it?
A few months back I moved from a 2013 MBA to a 2015 MBP. On the latter, the [force] touchpad is consuming about 10W, permanently. I'm wondering if this is something you've seen, or you have any idea if it might be related to the driver or something else.
Have you had a chance to test this specific hardware? Do you know of any way to determine if this very high power usage is normal, or driver-related?
As a reference, everything aside from the touchpad uses 4W (but the touchpad alone uses 10W). On the MBA, the touchpad used an insignificant amount of power, and the computer's total power usage was about 5W.
I measure power consumption without the driver installed. That results in 5W-7W consumption, which is (even on it's worst case), 30% less.
Let me know if I can provide anything that may help triage this, totally willing to help!
When 2 or more fingers are on the touchpad tapping gets enabled. It's reproducible by holding one finger on the touchpad and tapping with another finger.
Device 'Apple Inc. Apple Internal Keyboard / Trackpad':
Device Enabled (139): 1
Coordinate Transformation Matrix (141): 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/event12"
Device Product ID (265): 1452, 627
Section "InputClass"
MatchIsTouchpad "on"
Identifier "Touchpads"
Driver "mtrack"
Option "Sensitivity" "0.65"
Option "FingerHigh" "5"
Option "FingerLow" "1"
Option "IgnoreThumb" "true"
Option "ThumbRatio" "70"
Option "ThumbSize" "25"
Option "IgnorePalm" "true"
Option "TapButton1" "0"
Option "TapButton2" "0"
Option "TapButton3" "0"
Option "TapButton4" "0"
Option "ClickFinger1" "3"
Option "ClickFinger2" "3"
Option "ClickFinger3" "3"
Option "ButtonMoveEmulate" "false"
Option "ButtonIntegrated" "true"
Option "ClickTime" "25"
Option "BottomEdge" "30"
Option "ScrollCoastDuration" "500"
Option "ScrollCoastEnableSpeed" ".3"
Option "ScrollUpButton" "5"
Option "ScrollDownButton" "4"
Option "ScrollLeftButton" "6"
Option "ScrollRightButton" "7"
Option "ScrollDistance" "250"
Option "TapDragEnable" "false"
Option "TapDragWait" "40000"
EndSection
I have a MacBook Pro. Driver works great so far (thanks for your work!).
When I click the touchpad (physically clicking the touchpad as a whole), it is often accompanied with the cursor jumping a little around. After a couple of minutes testing around when it happens, I guess that this would be fixed by two new wait time options:
However, I'm not sure if those wait times would be needed if the driver support speed like in OS X. There, increasing the speed of a finger causes a super-linear speedup of the cursor. So basically: moving the finger slowly allows for more precision.
(I just switched to Linux, because of some problems I had. I already tweaked this driver (the original BlueDragonX repo) before, but I'm slammed with work for school right now. If find some time, I could do it as well, but before I start, I wanted to contact you. Especially: what do you suggest to do? Will you do it? If not, but are willing to accept a Pull Request, any guidelines you want me to follow?)
I can't seem to get mtrack driver loaded, using a HP Laptop Synaptics TouchPad that support 4 finger click + 3 finger swipe in windows
[binary@hermes ~]$ sudo cat /var/log/Xorg.0.log | grep "(EE)"
(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
3.981 BUG: triggered 'if (dev == ((void *)0))'
3.981 BUG: exevents.c:2131 in SetScrollValuator()
3.981
3.981 Backtrace:
3.982 0: /usr/lib/xorg-server/Xorg (SetScrollValuator+0x1c4) [0x526834]
3.983 1: /usr/lib/xorg/modules/input/mtrack_drv.so (_init+0x7d97) [0x7f8746258db7]
3.983 2: /usr/lib/xorg/modules/input/mtrack_drv.so (_init+0x66da) [0x7f874625600a]
3.983 3: /usr/lib/xorg-server/Xorg (xf86DeleteInput+0x1e2) [0x486672]
3.984 4: /usr/lib/xorg-server/Xorg (config_fini+0x102b) [0x4993fb]
3.984 5: /usr/lib/xorg-server/Xorg (config_fini+0x1613) [0x49a683]
3.985 6: /usr/lib/xorg-server/Xorg (config_init+0x9) [0x497af9]
3.985 7: /usr/lib/xorg-server/Xorg (InitInput+0xbf) [0x47adbf]
3.985 8: /usr/lib/xorg-server/Xorg (remove_fs_handlers+0x421) [0x43a611]
3.988 9: /usr/lib/libc.so.6 (__libc_start_main+0xf1) [0x7f874f597741]
3.989 10: /usr/lib/xorg-server/Xorg (_start+0x29) [0x4245f9]
3.990 11: ? (?+0x29) [0x29]
3.990
3.990 BUG: triggered 'if (dev == ((void *)0))'
3.990 BUG: exevents.c:2131 in SetScrollValuator()
3.990
3.990 Backtrace:
3.990 0: /usr/lib/xorg-server/Xorg (SetScrollValuator+0x1c4) [0x526834]
3.991 1: /usr/lib/xorg/modules/input/mtrack_drv.so (_init+0x66da) [0x7f874625600a]
3.991 2: /usr/lib/xorg-server/Xorg (xf86DeleteInput+0x1e2) [0x486672]
3.991 3: /usr/lib/xorg-server/Xorg (config_fini+0x102b) [0x4993fb]
3.992 4: /usr/lib/xorg-server/Xorg (config_fini+0x1613) [0x49a683]
3.992 5: /usr/lib/xorg-server/Xorg (config_init+0x9) [0x497af9]
3.992 6: /usr/lib/xorg-server/Xorg (InitInput+0xbf) [0x47adbf]
3.993 7: /usr/lib/xorg-server/Xorg (remove_fs_handlers+0x421) [0x43a611]
3.994 8: /usr/lib/libc.so.6 (__libc_start_main+0xf1) [0x7f874f597741]
3.994 9: /usr/lib/xorg-server/Xorg (_start+0x29) [0x4245f9]
3.995 10: ? (?+0x29) [0x29]
3.995
3.996 mtrack: cannot configure device
3.996 Couldn't init device "SynPS/2 Synaptics TouchPad"
591.881 kernel bug: Touch jump detected and discarded.
591.901 kernel bug: Touch jump detected and discarded.
12273.977 kernel bug: Touch jump detected and discarded.
12277.168 kernel bug: Touch jump detected and discarded.
12277.168 kernel bug: Touch jump detected and discarded.
12277.580 kernel bug: Touch jump detected and discarded.
12277.580 kernel bug: Touch jump detected and discarded.
When I move my finger around on the trackpad (move pointer), and then at some point, put down my second finger for scrolling, it doesn't scroll, it just continues moving the pointer.
The use case is when my 2nd finger was too close to (or on) the edge to be recognized, but once my 2nd finger enters the trackpad, I would expect it to start scrolling rather than continue just moving the pointer.
This does actually already appear to happen, but there's a huge delay, more than GestureWaitTime, and it's not configurable as far as I can tell.
I have a Surface Book and just configured mtrack and noticed this gesture does not work as well as someone might be used to on a OS X device.
When I move the cursor with a finger and thumb-click (holding the click down, such as when highlighting text) the right-click menu shows up just as if I had done a 2-finger click on the trackpad. This is unfortunate because it means I need to lift my finger completely off the trackpad before thumb-clicking whenever I want to highlight text.
It would be a nice improvement if fingers that are in the bottom edge area were not considered part of the 2-finger click, so the finger moving the mouse does not have to come off the trackpad when clicking.
Here's my xinput --list-props
Device 'Microsoft Surface Keyboard Touchpad':
Device Enabled (137): 1
Coordinate Transformation Matrix (139): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
Device Accel Profile (267): 0
Device Accel Constant Deceleration (268): 1.000000
Device Accel Adaptive Deceleration (269): 1.000000
Device Accel Velocity Scaling (270): 10.000000
Trackpad Disable Input (299): 0
Trackpad Sensitivity (300): 0.650000
Trackpad Touch Pressure (301): 12, 1
Trackpad Button Settings (302): 1, 1
Trackpad Button Emulation Settings (303): 0, 1, 100
Trackpad Button Emulation Values (304): 3, 2, 0
Trackpad Tap Settings (305): 50, 120, 400
Trackpad Tap Button Emulation (306): 0, 0, 0, 0
Trackpad Thumb Detection (307): 1, 0
Trackpad Thumb Size (308): 25, 70
Trackpad Palm Detection (309): 1, 0
Trackpad Palm Size (310): 40
Trackpad Gesture Settings (311): 10, 100
Trackpad Smooth Scroll (312): 1
Trackpad Scroll Settings (313): 40, 20, 0
Trackpad Scroll Buttons (314): 4, 5, 6, 7
Trackpad Swipe Settings (315): 700, 300, 0
Trackpad Swipe Buttons (316): 0, 0, 8, 9
Trackpad Swipe4 Settings (317): 700, 300, 0
Trackpad Swipe4 Buttons (318): 0, 0, 0, 0
Trackpad Scroll Coasting (319): 0.100000, 800.000000
Trackpad Scale Distance (320): 150
Trackpad Scale Buttons (321): 12, 13
Trackpad Rotate Distance (322): 150
Trackpad Rotate Buttons (323): 14, 15
Trackpad Hold1Move1 Stationary Settings (324): 20, 1
Trackpad Hold1Move1 Settings (325): 1, 0, 1000
Trackpad Hold1Move1 Buttons (326): 1, 1, 1, 1
Trackpad Drag Settings (327): 1, 350, 40, 200
Trackpad Axis Inversion (328): 0, 0
Trackpad Edge Size (329): 18
Is it possible to disable horizontal scrolling while you scroll vertically and vice versa?
This seems to be the standard behavior on OSX with two-finger scroll and is kind of easier.
It happens a lot to me, if I am using half a browser width and pages have a big horizontal scroll, that once I scroll up/down I also move left/right by accident.
Any thoughts on this?
Hi,
It seems that vertical and horizontal scroll labels are confused. It causes an unpredictable scrolling in applications that use Qt framework.
When mouse enters Qt window, QXcbConnection::updateScrollingDevice function is executed (http://code.qt.io/cgit/qt/qtbase.git/tree/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp?h=5.6#n860). This function enumerates evaluators, looks for valuator with valuatorAtom == QXcbAtom::RelVertScroll label and updates scrollingDevice.lastScrollPosition.
When labels are confused, the vertical scroll position is taken from valuator that tracks horizontal scroll position.
Here is a patch: alexbers@05b3176
Possibly due to some other bug, after resuming from hibernation, one of two things happen:
Resume fails due to some inconsistency (not sure how to debug, unrelated)
Resume succeeds at which point, trackpad is working just fine, but as soon as I press any key on my keyboard, xorg crashes. Interestingly enough, I found that if I modprobe -r hid_apple && modprobe hid_apple
, it stops crashing in this case.
BUT, if I run modprobe -r hid_apple && modprobe hid_apple
, trackpad stops working.
Oddly, the result of running xinput indexes between the keyboard and the trackpad swap places (eg: initially keyboard at 11 and trackpad at 12, after it becomes keyboard at 12 and trackpad at 11). This interaction (as well as list-props on the trackpad field is attached below).
How do I restore the trackpad after modprobe -r hid_apple && modprobe hid_apple
(and the xinput indices swap), which appears to be essential for hibernation?
I can't find a way to enable behaviour from libinput driver - Tap Drag Lock Timeout. Is it possible with this driver? If not could you add support for it?
Tap Drag Lock Timout is time that TapDrag waits for your finger to re-touch touchpad during tap-to-drag so that you can move things for loooong distances, selecting really long text.
The only similar behaviour I found is emulating dragging with keyboard cursor keys.
My current settings:
xinput list-props 11
Device 'ELAN1200:00 04F3:3022 Touchpad':
Device Enabled (141): 1
Coordinate Transformation Matrix (143): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
Device Accel Profile (276): 0
Device Accel Constant Deceleration (277): 1.000000
Device Accel Adaptive Deceleration (278): 1.000000
Device Accel Velocity Scaling (279): 10.000000
Trackpad Disable Input (280): 0
Trackpad Sensitivity (281): 0.600000
Trackpad Touch Pressure (282): 5, 5
Trackpad Button Settings (283): 1, 1
Trackpad Button Emulation Settings (284): 0, 1, 100
Trackpad Button Emulation Values (285): 3, 2, 0
Trackpad Tap Settings (286): 5, 120, 400
Trackpad Tap Button Emulation (287): 1, 3, 2, 0
Trackpad Thumb Detection (288): 0, 0
Trackpad Thumb Size (289): 25, 70
Trackpad Palm Detection (290): 0, 0
Trackpad Palm Size (291): 40
Trackpad Gesture Settings (292): 10, 100
Trackpad Smooth Scroll (293): 1
Trackpad Scroll Settings (294): 150, 20, 0
Trackpad Scroll Buttons (295): 4, 5, 6, 7
Trackpad Swipe Settings (296): 700, 300, 0
Trackpad Swipe Buttons (297): 8, 9, 10, 11
Trackpad Swipe4 Settings (298): 700, 300, 0
Trackpad Swipe4 Buttons (299): 0, 0, 0, 0
Trackpad Scroll Coasting (300): 0.400000, 400.000000
Trackpad Scale Distance (301): 150
Trackpad Scale Buttons (302): 12, 13
Trackpad Rotate Distance (303): 150
Trackpad Rotate Buttons (304): 14, 15
Trackpad Hold1Move1 Stationary Settings (305): 20, 1
Trackpad Hold1Move1 Settings (306): 1, 0, 1000
Trackpad Hold1Move1 Buttons (307): 1, 1, 1, 1
Trackpad Drag Settings (308): 1, 350, 40, 200
Trackpad Axis Inversion (309): 0, 0
Trackpad Edge Size (310): 10
Gentoo.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.