acidanthera / bugtracker

Acidanthera Bugtracker
385 stars 45 forks source link

Thinkpad SSDT(s) need adjustments with your VoodooPS2 kext #418

Closed Sniki closed 4 years ago

Sniki commented 5 years ago

Hi, @vit9696 @usr-sse2

FIrst of all congratulations for the excellent work that you people are doing for the hackintosh community, you are all awesome.

Some time ago we added ThinkPad TrackPoint, Trackpad and ClickPad support into Rehabman VoodooPS2Controller which we ported from Tluck VoodooPS2Controller fork. We were using the two available SSDTs depending on our need / the laptop model:

On my Lenovo Thinkpad L440 i recently tested and i can confirm that the ClickPad buttons and the Trackpoint does work perfect with your kext (using SSDT-Thinkpad_ClickPad). But some of the code inside the SSDT(s) is breaking or has conflicts with the native gestures engine that you added resulting into non working gestures like 2 finger scrolling etc. Im not sure which of these values are not needed anymore with your kext but i assume all the ones having to do with gestures either need to be changed or removed. Im refering to these two: ClickPad (Newer ThinkPads - Haswell+): https://github.com/acidanthera/VoodooPS2/blob/master/SSDT-Thinkpad_Clickpad.dsl TrackPad (Older Thinkpads - Haswell-): https://github.com/acidanthera/VoodooPS2/blob/master/SSDT-Thinkpad_Trackpad.dsl

for example on SSDT-Thinkpad_Clickpad.dsl:

// Example overrides for Thinkpad models with ClickPad
DefinitionBlock ("", "SSDT", 2, "hack", "ps2", 0)
{
    // Change _SB.PCI0.LPC.KBD if your PS2 keyboard is at a different ACPI path
    External(_SB.PCI0.LPC.KBD, DeviceObj)
    Scope(_SB.PCI0.LPC.KBD)
    {
        // Select specific configuration in VoodooPS2Trackpad.kext
        Method(_DSM, 4)
        {
            If (!Arg2) { Return (Buffer() { 0x03 } ) }
            Return (Package()
            {
                "RM,oem-id", "LENOVO",
                "RM,oem-table-id", "Thinkpad_ClickPad",
            })
        }
        // Overrides (the example data here is default in the Info.plist)
        Name(RMCF, Package()
        {
            "Synaptics TouchPad", Package()
            {
                "BogusDeltaThreshX", 800,
                "BogusDeltaThreshY", 800,
                "Clicking", ">y",
                "DragLockTempMask", 0x40004,
                "DynamicEWMode", ">n",
                "FakeMiddleButton", ">n",
                "HWResetOnStart", ">y",
                //"ForcePassThrough", ">y",
                //"SkipPassThrough", ">y",
                "PalmNoAction When Typing", ">y",
                "ScrollResolution", 800,
                "SmoothInput", ">y",
                "UnsmootInput", ">y",
                "Thinkpad", ">y",
                "EdgeBottom", 0,
                "FingerZ", 30,
                "MaxTapTime", 100000000,
                "MouseMultiplierX", 2,
                "MouseMultiplierY", 2,
                "MouseScrollMultiplierX", 2,
                "MouseScrollMultiplierY", 2,
                //"TrackpointScrollYMultiplier", 1, //Change this value to 0xFFFF in order to inverse the vertical scroll direction of the Trackpoint when holding the middle mouse button.
                //"TrackpointScrollXMultiplier", 1, //Change this value to 0xFFFF in order to inverse the horizontal scroll direction of the Trackpoint when holding the middle mouse button.
            },
        })
    }
}
//EOF

So the SSDT does work and enables the TrackPoint and ClickPad (3 physical buttons - right,middle,left click) but it breaks the gestures on your version due to the gestures changes. I couldn't figure out which one(s) of these values is breaking so i could remove them. Maybe you guys can figure/help find them out.

Sincerely, Sniki.

joshuaseltzer commented 5 years ago

@Snikii @vit9696 @usr-sse2 it looks like this commit removed a lot of those properties. I don't know if the properties should have been removed, or if they are still causing issues in the SSDT (my guess is that the ones removed would simply be ignored).

Regardless, there might be some changes that us ThinkPad users need to make to use this kext. I'd be willing to test different solutions or even help debug (I have a Lenovo ThinkPad T440s).

usr-sse2 commented 5 years ago

Unknown properties are ignored.

joshuaseltzer commented 5 years ago

@usr-sse2 so in that case we would need to reimplement 2 finger scroll for these machines?

Sniki commented 5 years ago

The general fixes for Thinkpads are working perfect with the SSDTs: ClickPad or TrackPad and TrackPoint are working perfect. But for some reasons the gestures are not working/broken which they should work even OOB without SSDT. I opened this Issues because i thought the SSDT is breaking them somewhere and wanted to get a confirmation or a possible fix for the issue as the number of thinkpad users on hackintosh community is pretty decent and a lot of people will benefit / need this.

joshuaseltzer commented 5 years ago

So gestures work fine without the ssdt?

Sniki commented 5 years ago

So gestures work fine without the ssdt?

Will do some additional testing tomorrow and report back with results.

AutinMitra commented 5 years ago

The general fixes for Thinkpads are working perfect with the SSDTs: ClickPad or TrackPad and TrackPoint are working perfect. But for some reasons the gestures are not working/broken which they should work even OOB without SSDT. I opened this Issues because i thought the SSDT is breaking them somewhere and wanted to get a confirmation or a possible fix for the issue as the number of thinkpad users on hackintosh community is pretty decent and a lot of people will benefit / need this.

Are you running the most recent kext, compiled from source? My gestures weren't working with the release version, but recent commits have fixed gestures for me on my x1c6.

Sniki commented 5 years ago

Are you running the most recent kext, compiled from source? My gestures weren't working with the release version, but recent commits have fixed gestures for me on my x1c6.

I tested latest release build, i didn't try building from source, however you may be right, i will test and confirm, this commit logically seems to have fixed the issue:1b3157b

usr-sse2 commented 5 years ago

@Snikii, the release build was before renaming I2C->PS2, so it was a working version, but it caused conflicts in case both VoodooI2C and VoodooPS2 are installed. Versions from acidanthera/VoodooPS2@f4f8e1c2ffe603f35a1fa2a83a3ddd71db175413 to acidanthera/VoodooPS2@1b3157be94080d212ae551228bccab993df60d2a didn’t work at all (couldn’t even move mouse cursor).

Sniki commented 5 years ago

@Snikii, the release build was before renaming I2C->PS2, so it was a working version, but it caused conflicts in case both VoodooI2C and VoodooPS2 are installed. Versions from acidanthera/VoodooPS2@f4f8e1c to acidanthera/VoodooPS2@1b3157b didn’t work at all (couldn’t even move mouse cursor).

Thanks @usr-sse2 , i will test by building kext from source and check if the problen is fixed, since @AutinMitra claims to be working, so should mine.

LarryBowgensloth commented 5 years ago

I'm on x1c6 and in my case building the kext from source gives me a kp. Also with your version of the kext and the configuration ssdt I don't get the trackpoint to work at all. However gestures are working perfect.

usr-sse2 commented 5 years ago

@LarryBowgensloth, I don't understand you. How are the gestures working if you get a kernel panic?

LarryBowgensloth commented 5 years ago

@LarryBowgensloth, I don't understand you. How are the gestures working if you get a kernel panic?

I'm sorry the gestures are working with the release version.

usr-sse2 commented 5 years ago

Please attach the panic log. It's strange, because the current master is fixing a kernel panic which sometimes occurred in the release.

LarryBowgensloth commented 5 years ago

https://pastebin.com/BuXyvCP2

vit9696 commented 5 years ago

This kernel panic is caused by released but not disabled handler of IOServiceNotifier. In IOService::invokeNotifier from IOService.cpp the following call happens:

ret = (*notify->handler)(notify->target, notify->ref, this, notify);

Yet notify *notify already points to released memory chunk and thus the crash. We made a brief check of VoodooPS2 codebase, but currently we do not see evidence that the crash is caused by VoodooPS2 in particular. Honestly, it may be some other kext using notifications.

CC @kprinssu (just in case)

yuzifu commented 5 years ago

I'm on x1c6 and in my case building the kext from source gives me a kp. Also with your version of the kext and the configuration ssdt I don't get the trackpoint to work at all. However gestures are working perfect.

I have same laptop(x1c 2016), when I install the kext(use SSDT-Thinkpad_Clickpad), trackpoint and three buttons not work, touchpad can work, and most gestures can work. Before that, I used Rehabman's voodooPS2Controller, trackpoint can work, but no gestures.

laz- commented 5 years ago

T440s with factory trackpad works well with the Aug 19th release kext. The trackpoint doesn't work at all (it works with the Rehabman Voodoo-PS2-Controller).

Doing the complete gesture dance through the systemprefs trackpad pane, I can't get "Notification Center, swipe left from the right edge with two fingers" to work. The 4 finger ones don't work either, but they're not claimed to :)

I booted with a build and SSDT-Thinkpad_Trackpad.dsl bits from head and behavior is the same level of functionality.

usr-sse2 commented 5 years ago

To all: please stop writing about trackpoint and additional physical buttons. I know about these problems, but haven’t yet started to implement them.

@laz-, what does the DEBUG version show at startup? (The interesting part is maximum and minimum coordinates, if supported).

usr-sse2 commented 5 years ago

@laz-, also you can check that the dimensions are properly detected using BetterTouchTool’s ‘Live View’ window. When you move fingers to each of the trackpad’s edges, they should be displayed near the edges of the window. In newer versions of BetterTouchTool you need to open old preferences to find this window.

Снимок экрана 2019-07-22 в 00 11 58

This window works even if the trial has expired.

laz- commented 5 years ago

Debug driver initialization looks like this:

2019-07-22 12:35:59.042173+0300 0x149      Default     0x0                  0      0    kernel: (VoodooPS2Trackpad) VoodooPS2SynapticsTouchPad: Version 2.0.2 starting on OS 
X Darwin 18.6.
2019-07-22 12:35:59.042740+0300 0x149      Default     0x0                  0      0    kernel: (VoodooPS2Trackpad) VoodooPS2Trackpad: sending final init sequence...
2019-07-22 12:35:59.154464+0300 0x149      Default     0x0                  0      0    kernel: (VoodooPS2Trackpad) VoodooPS2Trackpad: Identify bytes = { 0x1, 0x47, 0x18 }
2019-07-22 12:35:59.216533+0300 0x149      Default     0x0                  0      0    kernel: (VoodooPS2Mouse) VoodooPS2Mouse: Version 2.0.2 starting on OS X Darwin 18.6.
2019-07-22 12:35:59.222925+0300 0x149      Default     0x0                  0      0    kernel: (VoodooPS2Trackpad) VoodooPS2Trackpad starting: Synaptics TouchPad reports ty
pe 0x47, version 8.1
2019-07-22 12:35:59.222993+0300 0x149      Default     0x0                  0      0    kernel: (VoodooPS2Trackpad) VoodooPS2Trackpad: sending kDP_Reset $FF
2019-07-22 12:36:01.265952+0300 0x149      Default     0x0                  0      0    kernel: (VoodooPS2Trackpad) VoodooPS2Trackpad: nExtendedQueries=5
2019-07-22 12:36:01.265955+0300 0x149      Default     0x0                  0      0    kernel: (VoodooPS2Trackpad) VoodooPS2Trackpad: supports EW=1
2019-07-22 12:36:01.299029+0300 0x149      Default     0x0                  0      0    kernel: (VoodooPS2Trackpad) VoodooPS2Trackpad: passthru1=1, passthru2=1, passthru=1
2019-07-22 12:36:01.332454+0300 0x149      Default     0x0                  0      0    kernel: (VoodooPS2Trackpad) VoodooPS2Trackpad: ledpresent=0
2019-07-22 12:36:01.366023+0300 0x149      Default     0x0                  0      0    kernel: (VoodooPS2Trackpad) VoodooPS2Trackpad: clickpadtype=1
2019-07-22 12:36:01.366026+0300 0x149      Default     0x0                  0      0    kernel: (VoodooPS2Trackpad) VoodooPS2Trackpad: _reportsv=1
2019-07-22 12:36:01.366027+0300 0x149      Default     0x0                  0      0    kernel: (VoodooPS2Trackpad) VoodooPS2Trackpad: Clickpad supports extendedW mode
2019-07-22 12:36:01.432577+0300 0x149      Default     0x0                  0      0    kernel: (VoodooPS2Trackpad) VoodooPS2Trackpad: Mode/model($01) bytes = { 0x29, 0x6c, 
0x40 }
2019-07-22 12:36:01.466362+0300 0x149      Default     0x0                  0      0    kernel: (VoodooPS2Trackpad) VoodooPS2Trackpad: Capabilities($02) bytes = { 0xd0, 0x2,
 0xa3 }
2019-07-22 12:36:01.499801+0300 0x149      Default     0x0                  0      0    kernel: (VoodooPS2Trackpad) VoodooPS2Trackpad: Model ID($03) bytes = { 0x1, 0xe2, 0xb
1 }
2019-07-22 12:36:01.533085+0300 0x149      Default     0x0                  0      0    kernel: (VoodooPS2Trackpad) VoodooPS2Trackpad: SN Prefix($06) bytes = { 0x0, 0x0, 0x0
 }
2019-07-22 12:36:01.566279+0300 0x149      Default     0x0                  0      0    kernel: (VoodooPS2Trackpad) VoodooPS2Trackpad: SN Suffix($07) bytes = { 0x0, 0x0, 0x0
 }
2019-07-22 12:36:01.599506+0300 0x149      Default     0x0                  0      0    kernel: (VoodooPS2Trackpad) VoodooPS2Trackpad: Resolutions($08) bytes = { 0x2a, 0x80,
 0x2a }
2019-07-22 12:36:01.632693+0300 0x149      Default     0x0                  0      0    kernel: (VoodooPS2Trackpad) VoodooPS2Trackpad: Extended Model($09) bytes = { 0x94, 0x
3, 0x0 }
2019-07-22 12:36:01.665807+0300 0x149      Default     0x0                  0      0    kernel: (VoodooPS2Trackpad) VoodooPS2Trackpad: Continued Capabilities($0C) bytes = { 
0x12, 0x7c, 0x0 }
2019-07-22 12:36:01.698888+0300 0x149      Default     0x0                  0      0    kernel: (VoodooPS2Trackpad) VoodooPS2Trackpad: Maximum coords($0D) bytes = { 0x9f, 0x
dc, 0x77 }
2019-07-22 12:36:01.731962+0300 0x149      Default     0x0                  0      0    kernel: (VoodooPS2Trackpad) VoodooPS2Trackpad: Minimum coords bytes($0F) = { 0x20, 0x
0, 0x20 }
2019-07-22 12:36:01.731971+0300 0x149      Default     0x0                  0      0    kernel: (VoodooPS2Trackpad) VoodooPS2Trackpad: logical 1024x1024-5112x3834 physical_m
ax 9735x6692 upmm 42x42
2019-07-22 12:36:01.731974+0300 0x149      Default     0x0                  0      0    kernel: (VoodooPS2Trackpad) VoodooPS2Trackpad: sending final init sequence...
2019-07-22 12:36:02.016046+0300 0x18d      Default     0x0                  0      0    kernel: (VoodooPS2Trackpad) VoodooI2C: Got multitouch matched
2019-07-22 12:36:02.016059+0300 0x18d      Default     0x0                  0      0    kernel: (VoodooPS2Trackpad) VoodooI2C: Got multitouch preferences

I installed BetterTouchTool and found the live view under Old Configuration UI. Left right touchpad registering border looks like this: btt-leftright and top bottom: btt-topbottom

Should I be able to get a trackpad edge half circle like in your image? If so, what knobs should I try to tune to get there?

laz- commented 5 years ago

In case last night's commits prints make a difference, here's the text from a rebased and rebuilt version:

2019-07-22 13:28:01.048225+0300 0x148      Default     0x0                  0      0    kernel: (VoodooPS2Trackpad) VoodooPS2SynapticsTouchPad: Version 2.0.2 starting on OS X Darwin 18.6.
2019-07-22 13:28:01.048313+0300 0x148      Default     0x0                  0      0    kernel: (VoodooPS2Trackpad) VoodooPS2Trackpad: sending final init sequence...
2019-07-22 13:28:01.169334+0300 0x148      Default     0x0                  0      0    kernel: (VoodooPS2Trackpad) VoodooPS2Trackpad: Identify bytes = { 0x1, 0x47, 0x18 }
2019-07-22 13:28:01.235961+0300 0x148      Default     0x0                  0      0    kernel: (VoodooPS2Mouse) VoodooPS2Mouse: Version 2.0.2 starting on OS X Darwin 18.6.
2019-07-22 13:28:01.242387+0300 0x148      Default     0x0                  0      0    kernel: (VoodooPS2Trackpad) VoodooPS2Trackpad starting: Synaptics TouchPad reports type 0x47, version 8.1
2019-07-22 13:28:01.242487+0300 0x148      Default     0x0                  0      0    kernel: (VoodooPS2Trackpad) VoodooPS2Trackpad: sending kDP_Reset $FF
2019-07-22 13:28:03.286602+0300 0x148      Default     0x0                  0      0    kernel: (VoodooPS2Trackpad) VoodooPS2Trackpad: nExtendedQueries=5
2019-07-22 13:28:03.286605+0300 0x148      Default     0x0                  0      0    kernel: (VoodooPS2Trackpad) VoodooPS2Trackpad: supports EW=1
2019-07-22 13:28:03.319836+0300 0x148      Default     0x0                  0      0    kernel: (VoodooPS2Trackpad) VoodooPS2Trackpad: passthru1=1, passthru2=1, passthru=1
2019-07-22 13:28:03.353153+0300 0x148      Default     0x0                  0      0    kernel: (VoodooPS2Trackpad) VoodooPS2Trackpad: ledpresent=0
2019-07-22 13:28:03.419254+0300 0x148      Default     0x0                  0      0    kernel: (VoodooPS2Trackpad) VoodooPS2Trackpad: Mode/model($01) bytes = { 0x29, 0x6c, 0x40 }
2019-07-22 13:28:03.452455+0300 0x148      Default     0x0                  0      0    kernel: (VoodooPS2Trackpad) VoodooPS2Trackpad: Capabilities($02) bytes = { 0xd0, 0x2, 0xa3 }
2019-07-22 13:28:03.485997+0300 0x148      Default     0x0                  0      0    kernel: (VoodooPS2Trackpad) VoodooPS2Trackpad: Model ID($03) bytes = { 0x1, 0xe2, 0xb1 }
2019-07-22 13:28:03.519732+0300 0x148      Default     0x0                  0      0    kernel: (VoodooPS2Trackpad) VoodooPS2Trackpad: SN Prefix($06) bytes = { 0x0, 0x0, 0x0 }
2019-07-22 13:28:03.553447+0300 0x148      Default     0x0                  0      0    kernel: (VoodooPS2Trackpad) VoodooPS2Trackpad: SN Suffix($07) bytes = { 0x0, 0x0, 0x0 }
2019-07-22 13:28:03.586979+0300 0x148      Default     0x0                  0      0    kernel: (VoodooPS2Trackpad) VoodooPS2Trackpad: Resolutions($08) bytes = { 0x2a, 0x80, 0x2a }
2019-07-22 13:28:03.620574+0300 0x148      Default     0x0                  0      0    kernel: (VoodooPS2Trackpad) VoodooPS2Trackpad: Extended Model($09) bytes = { 0x94, 0x3, 0x0 }
2019-07-22 13:28:03.653703+0300 0x148      Default     0x0                  0      0    kernel: (VoodooPS2Trackpad) VoodooPS2Trackpad: Continued Capabilities($0C) bytes = { 0x12, 0x7c, 0x0 }
2019-07-22 13:28:03.653706+0300 0x148      Default     0x0                  0      0    kernel: (VoodooPS2Trackpad) VoodooPS2Trackpad: clickpadtype=1
2019-07-22 13:28:03.653708+0300 0x148      Default     0x0                  0      0    kernel: (VoodooPS2Trackpad) VoodooPS2Trackpad: _reportsv=0
2019-07-22 13:28:03.653710+0300 0x148      Default     0x0                  0      0    kernel: (VoodooPS2Trackpad) VoodooPS2Trackpad: Clickpad supports extendedW mode
2019-07-22 13:28:03.686904+0300 0x148      Default     0x0                  0      0    kernel: (VoodooPS2Trackpad) VoodooPS2Trackpad: Maximum coords($0D) bytes = { 0x9f, 0xdc, 0x77 }
2019-07-22 13:28:03.720131+0300 0x148      Default     0x0                  0      0    kernel: (VoodooPS2Trackpad) VoodooPS2Trackpad: Minimum coords bytes($0F) = { 0x20, 0x0, 0x20 }
2019-07-22 13:28:03.720139+0300 0x148      Default     0x0                  0      0    kernel: (VoodooPS2Trackpad) VoodooPS2Trackpad: logical 1024x1024-5112x3834 physical_max 9735x6692 upmm 42x42
2019-07-22 13:28:03.720143+0300 0x148      Default     0x0                  0      0    kernel: (VoodooPS2Trackpad) VoodooPS2Trackpad: sending final init sequence...
usr-sse2 commented 5 years ago

In BetterTouchTool you need also to disable filtering: Advanced → Trackpad → Palm & Thumb Recognition → Thumb / Palm Handling. With filtering enabled, BTT doesn't show fingers close to the edges. Please recheck with this option disabled.

The night commits add MinLogicalXOverride, MaxLogicalXOverride, MinLogicalYOverride, and MaxLogicalYOverride properties in Info.plist, so you can increase minimum and decrease maximum values so that they match your actual edge coordinates. You can watch the log with log stream --predicate 'sender="VoodooPS2Trackpad" and eventMessage contains "raw_x"' to find out the values. (Works when using OpenCore or installing VoodooPS2 into /S/L/E. For kext loaded from Clover replace sender="VoodooPS2Trackpad" with sender="kernel"). Be sure to get accurate max/min values closest to the edge, because in the current version there is no clipping for values out of range (I'll add them later).

usman2006 commented 5 years ago

In BetterTouchTool you need also to disable filtering: Advanced → Trackpad → Palm & Thumb Recognition → Thumb / Palm Handling. With filtering enabled, BTT doesn't show fingers close to the edges. Please recheck with this option disabled.

The night commits add MinLogicalXOverride, MaxLogicalXOverride, MinLogicalYOverride, and MaxLogicalYOverride properties in Info.plist, so you can increase minimum and decrease maximum values so that they match your actual edge coordinates. You can watch the log with log stream --predicate 'sender="VoodooPS2Trackpad" and eventMessage contains "raw_x"' to find out the values. (Works when using OpenCore or installing VoodooPS2 into /S/L/E. For kext loaded from Clover replace sender="VoodooPS2Trackpad" with sender="kernel"). Be sure to get accurate max/min values closest to the edge, because in the current version there is no clipping for values out of range (I'll add them later).

hi,

should be the values, minimal and maximal as possible ? because for my t440s(with t450 trackpad) the maximal x value do not trigger the sidebar gesture, even the value is showing in log.

thx

laz- commented 5 years ago

I disabled the BTT filtering options and the live view and can see the whole trackpad now. It behaves as expected and the dimensions look correct.

While playing with it, I found that I can very rarely trigger the Notification Center gesture, and when I do trigger it I can't replicate timing or speed to make it happen again. I don't use this gesture regularly, so I thought maybe I was just unskilled, so I tried on my wife's MacBook air and I can do it almost 100% of the time.

usr-sse2 commented 5 years ago

@laz-, I added 5 mm margins and it improved the stability of Notification Center gesture, as well as custom BTT edge swipe gestures, on my notebook. Please try that (you don't need to specify max/min settings in Info.plist).

My wife has a MacBook Air too :)

laz- commented 5 years ago

With a debug build from git this morning, Notification Center gesture (mis)behaves the same way with the +5mm mod in the code.

If I stream the debugging raw_x stuff, I still get the same minimum x=0 raw_x=1024 value as I saw before the 5mm code, but the logical params got the bump as expected at startup:

kernel: (VoodooPS2Trackpad) VoodooPS2Trackpad: logical 1234x1234-4902x3624 physical_max 8735x5692 upmm 42x42

(apologies for delay, had to took a few days to move to a new country)

Sniki commented 5 years ago

@usr-sse2 i did build the kext from source with latest changes and i confirm that notification center gesture works flawlessly on my Lenovo ThinkPad X240 which does have the standard touchpad not the upgraded one (This one): TouchPad All gestures seem to work perfectly including force touch and It's perfectly usable on this model. Will only wait until you add support for the TrackPoint (red think in middle of keyboard) and Clickpad (for the upgraded trackpad with 3 clickable buttons "Left-middle-right") which is standard on broadwell+ series and it will be as good as it can get ( Like Apple Macbooks).

Thanks for the awesome work.

usr-sse2 commented 5 years ago

@yuzifu @Snikii @laz- @AutinMitra @joshuaseltzer Please test physical buttons and trackpoint in this version. (I didn’t test it at all, so make sure to backup working kexts in case this doesn’t work) test.zip

Sniki commented 5 years ago

@usr-sse2 i will be able to only test TrackPoint for now (on my ThinkPad X240) as it has the standard (non upgraded) trackpad which works amazingly well with the latest build from source of VoodooPS2 (including all gestures and force touch) except the TrackPoint.

However unfortunately my ThinkPad L440 while dad was using it, either a automatic bios update or something else happened that the EEPROM got messed up, my CH341A flash Programmer+SOIC8 test clip is not working, ordered a new one and will test as soon as it arrives as i will have to erase and flash bios.

However im sure @joshuaseltzer and @usman2006 may be able to test the physical buttons very soon.

I will give you feedback on the trackpoint within an hour.

Should i test without the override SSDTs or with them ? (SSDT-Thinkpad_ClickPad)

Sniki commented 5 years ago

@usr-sse2 I tested on my X240 by just booting the installer from USB, TrackPoint is working ! Thanks a lot, (However it is a bit slow - slow cursor speed) Now let's see if Physical Buttons work after the others respond

How do you plan to do the implementation, just curious: Will it work OOB on Thinkpads or you will make a override with SSDT or Boot-Arg ?

nicogig commented 5 years ago

@yuzifu @Snikii @laz- @AutinMitra @joshuaseltzer Please test physical buttons and trackpoint in this version. (I didn’t test it at all, so make sure to backup working kexts in case this doesn’t work) test.zip

Hi there! TrackPoint does work on my T460s, but the buttons are not working at all. For reference, the T460s uses the new (upgraded) buttons.

miskz commented 5 years ago

Same on X1 Carbon 3rd gen / 2015. Trackpoint works (bit on a slow side), buttons don't.

Thanks for looking into this.

Sniki commented 5 years ago

@nicogig @miskz have both of you tried with SSDT-Thinkpad_ClickPad ? https://github.com/acidanthera/VoodooPS2/blob/master/Docs/ACPI/SSDT-Thinkpad_Clickpad.dsl

nicogig commented 5 years ago

@Snikii tried with and without the SSDT patch but the buttons do not work in both cases. TrackPoint works regardless, even though it is a bit slow, as mentioned by @miskz.

AutinMitra commented 5 years ago

@Snikii I tried with my X1 Carbon (6th gen), trackpoint is slow but works decently. For me, however, the buttons do work (left, middle, right). Trackpoint scrolling is a bit broken, as holding the middle button and trackpoint results in repeated & rapid middle clicks, making scrolling jittery.

miskz commented 5 years ago

@nicogig @miskz have both of you tried with SSDT-Thinkpad_ClickPad ? https://github.com/acidanthera/VoodooPS2/blob/master/Docs/ACPI/SSDT-Thinkpad_Clickpad.dsl

Getting same results with and without SSDT unfortunately.

usr-sse2 commented 5 years ago

With sleep issues try this: https://github.com/acidanthera/bugtracker/issues/334#issuecomment-521363604

yuzifu commented 5 years ago

@usr-sse2 I tried with my X1C 2016(4th), physical buttons and trackpoint work well.

The problem I have now is that gestures are not very sensitive, which means that when I use a gesture, I often fail to act accordingly.

Jpe230 commented 5 years ago

I have been trying to re-implement support for the Clickpad (ThinkPad T450 running Catalina). Using code from RehabMan 's fork, I've been able to make use of the Clickpad again, no patch needed.

Apparently in Acidanthera's fork, the logic for the Clickpad is gone, so the only thing that was left to be done is to reimplement it.

I'm currently working in the middle-button scrolling using the nub and fixing some random clicks I've been encountering, if I'm successful, I will publish my results here.

joshuaseltzer commented 5 years ago

@Jpe230 that is awesome news. If and when you get something you think is working, let us know. I’d personally be happy to test it out and help debug.

Jpe230 commented 5 years ago

Done, made a fork from Acidanthera repository. Gestures, Clickpad, Trackpoint, middle button scrolling, left click, even middle click (no scrolling) all working flawlessly.

Sadly I'm signing the kext for my own machine, hence I can't share the Kext with you, but you can build it yourself. I didn't need to patch anything and it should work OOB (at least for my machine, T450)

Heres the link for my repo

I'll happily make a pull request if needed.

Sniki commented 5 years ago

Done, made a fork from Acidanthera repository. Gestures, Clickpad, Trackpoint, middle button scrolling, left click, all working flawlessly.

Sadly I'm signing the kext for my own machine, hence I can't share the Kext with you, but you can build it yourself. I didn't need to patch anything and it should work OOB (at least for my machine, T450)

Heres the link for my repo

I'll happily make a pull request if needed.

Excellent job @Jpe230 Thanks for doing this, building the kext is not a problem at all we can do that no problem. But best thing would be for you to send a Pull Request and im sure vit9696 and the others would suggest a specific change if they see something wrong and then we can get a perfect merge. Considering the fact November update is right around the corner it will be perfect to have a release kext fully compatible for ThinkPads.

Jpe230 commented 5 years ago

Sure! NP :)

Have you been able to test it? Just wanted to make sure it works for the majority of Thinkpads

Sniki commented 5 years ago

No because i have my Lenovo ThinkPad X240 with standard touchpad, i didn't upgrade it with physical buttons.

Will build the kext right now and upload for testing, if it works for the others then do the PR.

Sniki commented 5 years ago

VoodooPS2Controller.kext.zip @joshuaseltzer @miskz @nicogig and everyone else, please give this kext a try that i have build from @Jpe230

Report back if ClickPad (Left,Middle,Right) physical buttons are working.

dfsnc commented 5 years ago

@Sniki @Jpe230 Thank you so much!! It works perfectly on T450s.

silencer51 commented 5 years ago

VoodooPS2Controller.kext.zip @joshuaseltzer @miskz @nicogig and everyone else, please give this kext a try that i have build from @Jpe230

Report back if ClickPad (Left,Middle,Right) physical buttons are working.

With this kext on my X260, the trackpoint works, albeit very slowly, but the buttons do not work.

joshuaseltzer commented 5 years ago

@Sniki @Jpe230 I should be able to test it tomorrow. For reference, I have a T440s with the T450-style clickpad installed (with the 3 buttons).

Jpe230 commented 5 years ago

VoodooPS2Controller.kext.zip @joshuaseltzer @miskz @nicogig and everyone else, please give this kext a try that i have build from @Jpe230 Report back if ClickPad (Left,Middle,Right) physical buttons are working.

With this kext on my X260, the trackpoint works, albeit very slowly, but the buttons do not work.

Have you applied any patch to the kext?

PS if you change your trackpad speed in SysPref it also applies to the trackpoint.