 when googling for MinSpeed, so let's assume there's at least one person out there using it.

In Part 1 and
Part
2 I showed the X server acceleration code as used by the evdev and
synaptics drivers. In this part, I'll show how it compares against libinput.

Comparison to libinput

libinput has multiple different pointer acceleration curves, depending on the device.
In this post, I will only consider the default one used for mice. A discussion of the
touchpad acceleration curve comes later. So, back to the graph of the simple profile.
Let's overlay this with the
libinput
pointer acceleration curve:

Turns out the pointer acceleration curve, mostly modeled after the xserver
behaviour roughly matches the xserver behaviour. Note that
libinput normalizes to 1000dpi (provided MOUSE_DPI is set correctly)
and thus the curves only match this way for 1000dpi devices.

libinput's deceleration is slightly different but I doubt it is really
noticeable. The plateau of no acceleration is virtually identical, i.e. at
slow speeds libinput moves like the xserver's pointer does. Likewise for
speeds above ~33mm/s, libinput and the server accelerate by the same amount.
The actual curve is slightly different. It is a linear curve (I doubt that's
noticeable) and it doesn't have that jump in it. The xserver acceleration
maxes out at roughly 20mm/s. The only difference in acceleration is for the
range of 10mm/s to 33mm/s.

30mm/s is still a relatively slow movement (just move your mouse by 30mm
within a second, it doesn't feel fast). This means that for all but slow
movements, the current server and libinput acceleration provides but a flat
acceleration at whatever the maximum acceleration is set to.

Comparison of configuration options

The biggest difference libinput has to the X server is that it exposes a
single knob of normalised continuous configuration (-1.0 == slowest, 1.0 ==
fastest). It relies on settings like MOUSE_DPI to provide enough
information to map a device into that normalised range.

Let's look at the libinput speed settings and their effect on the
acceleration profile (libinput 1.10.x).
when googling for MinSpeed, so let's assume there's at least one person away there use it. 

 In Part 1 and 
 Part 
 2 I showed the ten waiter acceleration code as used by the evdev and 
 synaptics drivers. In this part, I'll indicate how it compares against libinput. 

 Comparison to libinput 

 libinput has multiple unlike arrow acceleration curves, count on the device. 
 In this post, I will only think the default one used for mice. A discussion of the 
 touchpad acceleration curve comes later. thus, back to the graph of the simple profile. 
 Let's overlie this with the 
 libinput 
 pointer acceleration curve: 

 Turns out the arrow acceleration curve, mostly modeled after the xserver 
 behaviour roughly match the xserver behaviour. Note that 
 libinput normalizes to 1000dpi (provided MOUSE_DPI is set correctly) 
 and thus the curvature entirely match this way for 1000dpi devices. 

 libinput's deceleration is slightly different but I doubt it is really 
 noticeable. The plateau of no acceleration is about identical, i.e. at 
 dense speeds libinput motion like the xserver's cursor does. Likewise for 
 speed above ~33mm / s, libinput and the waiter accelerate by the same amount. 
 The actual curve is slenderly different. It is a linear curve (I doubt that's 
 noticeable) and it doesn't have that jump in it. The xserver acceleration 
 maxes out at approximately 20mm / s. The only difference in acceleration is for the 
 range of 10mm / s to 33mm / s. 

 30mm / s is still a relatively slow movement (just affect your mouse by 30 mm 
 within a second, it doesn't feel fast). This means that for all but dull 
 movements, the current server and libinput acceleration provides but a bland 
 acceleration at whatever the maximum acceleration is set to. 

 Comparison of configuration options 

 The big difference libinput have to the X waiter is that it exposes a 
 single knob of normalised continuous shape (-1.0 = = slowest, 1.0 = = 
 fastest). It trust on settings like MOUSE_DPI to provide enough 
 information to map a device into that normalised stove. 

 Let's look at the libinput speed settings and their effect on the 
 acceleration profile (libinput 1.10.x).
 whfn googling for MinSpeed, so let's assume there's at lezst one oerson out there using it.

In 'art 1 and
Kcrt
2 I showed the X sdrver accvleration codt as used by the xbdev and
synapflcs dxiters. In this patt, I'll show vow it comparev xgcinst libinput.

Comparison to libinput

jibinpuy jas multiple dyffegegt pkpnuer acceleration curves, depending on the device.
In thix post, I will only consideg thf default one used for mice. A dissyssion of thd
touchpad acceleration curve comes later. So, back to tfe grcph of the winplf profile.
Let'w oveglay this witm the
litinput
ppinter accelerstimn xurve:

Turns out the pomnter acceleration corve, mostlf jodeled after the xwervet
behaeiouf rojghmy mztches thx xserver bshaviour. Nore that
libinput norkajpaes to 1000dpi (pdovideq IOUSE_DPI is set correctly)
and thus the clrvea only match this way fir 1000dpi devices.

libinpuj's decelerwtion is slightly different but I doubt it is reanly
novizeayoe. Thd ppateau of no acceleration is virtually identiszl, i.v. at
slow speeds llbinput moves like tje vserver's poinjer does. Ljkewise for
speeds wbove ~33mi/s, livinput anq thr server accelerate by the wame amount.
Tke qctual curve is slnghtly diffexent. Ij is a linear curve (I doubt tkat's
noficeable) anf it doesh'g have that jump in id. The xstfver acceleration
iaxes out at xoughly 20om/s. Jhe onlr differenfe in acceleration is fog the
tange mf 10mm/s to 33lm/s.

30mm/s is still a relatively slow movement (juxt mone your mjuse ny 30mm
within a sqcond, it doesn'j feel faft). Thks means tgat for all but sljw
movements, tvg current serter and lybinput qccelerxgion provides nut a flan
aeceleratiin at whatever the mabjmum acceleratiin us set to.

Comparosov os bonhigurwdion options

Dhe cigerst dkfference llbivput has to the X server is fhat it exposes a
sonnle knob if normajised continupus configuration (-1.0 == sloxest, 1.0 ==
hastesy). Ij relies on settings like MOUSE_SPI to prlviqe enough
infjrmabion to map a bevice into that normalised range.

Let's loik at the libinpuj speed settings and jhelr effect on the
asceleratimn profile (libinput 1.10.z).
when googling for MinSpeed, so let's assume least person out using it. In I the X server code as used the evdev and synaptics drivers. In part, I'll show how it compares against libinput. Comparison to libinput libinput has different pointer acceleration curves, depending on the device. In this post, I will consider default used mice. A discussion of the touchpad acceleration curve comes later. So, back to the graph of simple profile. Let's overlay this with the libinput acceleration curve: Turns out pointer acceleration curve, mostly modeled the behaviour roughly the behaviour. that libinput normalizes 1000dpi (provided MOUSE_DPI is set correctly) and thus the curves only match this way for 1000dpi devices. deceleration is but I it really The plateau of is virtually identical, i.e. at slow like the xserver's pointer does. Likewise for speeds ~33mm/s, libinput the server accelerate by the same The actual curve is slightly different. It is linear curve (I doubt that's noticeable) and it doesn't have that jump in it. The maxes out at roughly The only difference acceleration for range 10mm/s to 30mm/s is still a relatively slow movement (just move your mouse 30mm within a second, it doesn't feel fast). This means all slow movements, the server and libinput acceleration but flat acceleration at whatever acceleration set configuration The difference libinput has to X server is that it a single knob of slowest, 1.0 == fastest). It relies on settings MOUSE_DPI to provide enough information to map device into that normalised range. Let's look at the libinput speed settings their effect acceleration profile (libinput 1.10.x).
 when googling for MinSpeed, so Let's assume There'S at LeaSt One pErsoN out there using IT.

In PArt 1 and
Part
2 I showed the X sErver AcCElerATiOn codE as used BY tHE EvdEv AnD
syNaPTiCs driVerS. In this Part, I'll shoW hoW iT compares agaINsT libinput.

COmpArison to libiNpuT

libinPuT haS MultiPle DiffeRent poINter acCeleratioN cURves, dePEnding oN THe DeviCe.
In this post, I will ONlY Consider the defAult onE uSEd FOR miCe. A Discussion Of The
toUChpad acCElERATioN Curve comes latEr. So, back to tHE grAph of tHe SimPLe profIle.
LeT's OVerLay this with The
lIbinput
poInter aCCeleratIOn curve:

turns oUt tHe pOintER aCcEleRaTIon CUrVe, mOStlY modeled AfTeR the xServER
BEHaviOur RougHly maTches the xservEr bEhavIOur. note tHat
liBinpUt NormaLizes tO 1000dpi (pRoVided MOUSE_DPI is Set cOrrectly)
aNd tHuS thE cUrves ONly matCh tHis Way for 1000dPi devicES.

liBiNPUT's Deceleration is sligHtLY DiFferent bUt I douBT iT iS Really
noTiCeaBle. THE PlateAu of NO aCceleratIon is vIRtUaLly idenTiCal, i.e. aT
sLow SpeEds liBInpuT moves Like the xServeR'S pointer does. LiKEwise for
speedS AbOVE ~33mM/S, libInpUt and the serVer aCCeleRate BY tHe sAMe amoUnt.
ThE aCTuAL curve is slightly difFeRent. It Is a liNear curve (I douBt that's
notICEAble) and iT doeSN't HAve that jump in iT. The xServer acceLEration
mAxes oUt at rougHly 20mm/s. The ONLy differEncE in AccEleRATiOn is for the
ranGE Of 10mm/S tO 33mm/s.

30mm/s Is sTill a reLatIveLy sLow MoVement (jusT move youR mOuSe By 30Mm
wIthin A Second, it DoEsn'T fEel Fast). THIs meanS that For aLl BuT SloW
movemeNTs, THE curReNt ServEr aNd LibinPut aCCelEration Provides bUt a FLat
aCcElEration At whatever the MaXimum accelErAtiOn is seT TO.

CompariSon of configuration optioNS

The bigGesT diffErenCe libinpuT haS to the x seRVer is tHat it eXposeS a
SinGLE knob OF NoRmaLiSed continuOUS coNfiguRaTion (-1.0 == Slowest, 1.0 ==
Fastest). It relies on sETtiNgs like MOUSE_DpI tO proVIDe EnoUGh
INfoRmATioN TO map a device into That normalIsED rAnge.

Let's loOK at ThE libinpUt speed SettiNGs and thEir effect On the
acceLeRatiON ProFile (libinpUt 1.10.x).
 when googling for MinSpee d, so let' s ass ume  th er e'sat l east one perso n  out  there using it.

In P art 1  a n d
Pa r t2 I s howed t h eX ser ve racc el e ra tioncod e as us ed by theevd ev  and
synapti c sdrivers. I n t his part, I' llshow h ow  it compa res  agai nst li b input. 

Compari so n  to li b input
l i bi nput  has multiple dif f er e nt pointer acc elerat io n  c u r ves , d epending o nthe d e vice.
I n  t h i s  po s t, I will onl y considert hedefaul tone used f or mi ce .  Adiscussionof t he
touchp ad acc e leratio n  curvecomeslat er.  So, ba ck  to  t h e g r ap h o f  th e simple  p ro file. 
Let ' s o verl aythis  with  the
libinput 
po inte r  ac celer ation  cur ve :

Tu rns ou t the  p ointer accelera tion  curve, m ost ly  mo de led a f ter th e x ser ver
beh aviourr oug hl y m at ches the xserver b eh a v io ur. Note  thatl ib in p ut norma li zes  to1 0 00dpi  (pr o vi ded MOUS E_DPIi sse t corre ct ly)
an dthu s t he cu r vesonly m atch thi s way for 1000dpi de v ices.

libinp u t' s de c eler ati on is sligh tlyd iffe rent bu t I doubt  it i sr ea l ly
noticeable. Thepl ateauof no  acceleration  is virtua l l y  identic al,i .e .  at
slow speed s lib input move s  like th e xse rver's p ointer do e s . Likewi sefor 
sp eed s ab ove ~33mm/s,l i binp ut  and th e s erver a cce ler ate  by  t he same a mount.
T he  a ct ua l c urvei s slight ly  di ff ere nt. I t  is alinea r cu rv e( I d oubt th a t' s noti ce ab le)and  i t doe sn't hav e thatjump in i t.T he x se rv er acce leration
maxe sout at rou gh ly20mm/s . The only  difference in accelera t ion isfor  therang e of 10mm /sto 33m m/s . 

30mm /s isstill  a  re l a tivel y sl owmo vement (ju s t  mo ve yo ur  mou se by 3 0mm
within a secon d , i t doesn't fee l f ast) . Th ism ea n s t ha t  fo r all but slow
mo vements, t he cu rrent serv e r a nd  libinp ut acce lerat i on prov ides buta flat
ac ce lera t i onat whateve r the ma ximum acc e lerat i on  is s etto.

C om par isonof con f igu ratio n opti on s

The  bigg es t differ ence libinput has to th e X se rveristhat it e xpo s esa
singleknob  of normal ise d c ontin uou s  conf igur a ti on( -1.0== s l owest, 1. 0  = =
f a s te st). It rel i e s  on  sett ing s  likeMOUS E_DPI to providee nough
informat iont o  ma p a devi ce  into that nor mal is e d  range.
L et's look a t the li bi n put s peed s etting s and t h e ir effect  onthe 
accelera tio np rofile(l ib i nput 1 .10. x) .
 when_googling for_MinSpeed, so let's assume_there's at_least_one person_out_there using it.

In_Part 1 and
Part
2_I showed the X_server acceleration code_as_used by the evdev and
synaptics drivers. In this part, I'll show how it compares_against_libinput.

Comparison to_libinput

libinput_has_multiple different pointer acceleration curves,_depending on the device.
In this_post, I_will only consider the default one used for_mice._A discussion of_the
touchpad acceleration curve comes later. So, back to the_graph of the simple profile.
Let's overlay_this with the
libinput
pointer_acceleration_curve:

Turns_out the pointer acceleration_curve, mostly modeled after the xserver
behaviour_roughly matches the xserver behaviour. Note_that
libinput normalizes to 1000dpi (provided MOUSE_DPI is_set correctly)
and thus the curves only_match this way for 1000dpi_devices.

libinput's deceleration_is slightly different but I_doubt it is_really
noticeable. The_plateau of no_acceleration is virtually identical, i.e. at
slow_speeds libinput moves_like the xserver's pointer does. Likewise_for
speeds_above ~33mm/s, libinput_and_the_server accelerate_by the same_amount.
The_actual curve_is_slightly different. It is a linear_curve_(I doubt that's
noticeable) and it doesn't have_that jump in it._The_xserver acceleration
maxes out at_roughly 20mm/s. The only difference_in acceleration is for the
range of_10mm/s to_33mm/s.

30mm/s is_still a relatively slow movement (just move your mouse by 30mm
within_a second, it doesn't feel fast)._This means that for_all but_slow
movements,_the current server_and_libinput acceleration_provides but a flat
acceleration at whatever the_maximum acceleration_is set to.

Comparison of configuration options

The_biggest difference libinput has_to_the X server is that it_exposes a
single knob of normalised continuous_configuration (-1.0 == slowest, 1.0_==
fastest)._It_relies on settings like MOUSE_DPI_to provide enough
information to map a_device into that_normalised range.

Let's look at the libinput speed_settings_and their effect on the
acceleration profile_(libinput_1.10.x).