GithubHelp home page GithubHelp logo

rehabman / os-x-voodoo-ps2-controller Goto Github PK

View Code? Open in Web Editor NEW
490.0 56.0 182.0 1.89 MB

Contains updated Voodoo PS/2 Controller, improved Keyboard & Synaptics TouchPad

License: Other

C++ 91.22% Objective-C 3.04% Makefile 0.56% Shell 0.04% C 5.14%

os-x-voodoo-ps2-controller's Introduction

Modified VoodooPS2Controller by RehabMan

How to Install:

Please read and follow the important instructions for installing in the wiki:

https://github.com/RehabMan/OS-X-Voodoo-PS2-Controller/wiki/How-to-Install

Downloads:

Downloads are available on Bitbucket:

https://bitbucket.org/RehabMan/os-x-voodoo-ps2-controller/downloads/

Note: Archived (old) downloads are available on Google Code:

https://code.google.com/p/os-x-voodoo-ps2-controller/downloads/list

Build Environment

My build environment is currently Xcode 6.1, using SDK 10.8, targeting OS X 10.6.

No other build environment is supported.

32-bit Builds

Currently, builds are provided only for 64-bit systems. 32-bit/64-bit FAT binaries are not provided. But you can build your own should you need them. I do not test 32-bit, and there may be times when the repo is broken with respect to 32-bit builds, but I do check on major releases to see if the build still works for 32-bit.

Here's how to build 32-bit (universal):

  • xcode 4.6.3
  • open VoodooPS2Controller.xcodeproj
  • click on VoodooPS2Controller at the top of the project tree
  • select VoodooPS2Controller under Project
  • change Architectures to 'Standard (32/64-bit Intel)'

probably not necessary, but a good idea to check that the targets don't have overrides:

  • multi-select all the Targets
  • check/change Architectures to 'Standard (32/64-bit Intel)'
  • build (either w/ menu or with make)

Or, if you have the command line tools installed, just run:

  • For FAT binary (32-bit and 64-bit in one binary) make BITS=3264

  • For 32-bit only make BITS=32

Source Code:

The source code is maintained at the following sites:

https://github.com/RehabMan/OS-X-Voodoo-PS2-Controller

https://bitbucket.org/RehabMan/os-x-voodoo-ps2-controller

Feedback:

Please use the following threads on tonymacx86.com for feedback, questions, and help:

http://www.tonymacx86.com/hp-probook/75649-new-voodoops2controller-keyboard-trackpad.html#post468941 http://www.tonymacx86.com/mountain-lion-laptop-support/87182-new-voodoops2controller-keyboard-trackpad-clickpad-support.html#post538365

Fun Facts:

While implementing the "just for fun" feature in the keyboard driver where Ctrl+Alt+Del maps to the power key (for selection of Restart, Sleep, Shutdown), I discovered that if you invoke this function with the Ctrl and Alt (Command) keys down, the system will do an abrupt and unsafe restart. You can verify this yourself by holding down the Ctrl and Alt keys while pressing the actual power button.

Known issues:

  • Very rarely, both the keyboard and trackpad are not working after a fresh boot or after sleep, even on systems where this is normally not a problem. As of the v1.7.15a release this problem appears to be solved. Time will tell.

  • Very rarely, the keyboard/trackpad may become unresponsive or a key may repeat indefinitely. As of the v1.7.15a release this problem appears to be solved. Time will tell.

Note: often times you will see either of the two problems mentioned above right after installing. Generally, another reboot and/or repair permissions & rebuild caches will fix the problem.

Change Log:

2018-10-08 v1.9.2

  • Tapping stability: ignore moves while waiting for tap gestures (eg. pointer will not move while making a tap or double tap gesture)

  • Increase TapThreasholdX/Y, DoubleTapThresholdX/Y (from 50/100 to 75/150)

2018-09-28 v1.9.1

  • Fix panic caused by notifications that sometimes happen during HID registration (reported issue #166 and elsewhere)

2018-09-22 v1.9.0

  • VoodooPS2Daemon is deprecated, replaced with kernel level functionality (courtesy the-darkvoid)

  • "ignore built-in trackpad" now works with USB mice as well as bluetooth mice (courtesy the-darkvoid)

  • use system notifications for keyboard integration with VoodooI2C project (courtesy the-darkvoid)

2018-05-06 v1.8.34

  • fix bug with DisableDevice when used with the Synaptics profile

2018-05-05 v1.8.33 (redacted)

  • change BogusDeleteThreshX and BogusDeltaThreshY for Thinkpad_TrackPad profile (Lenovo T420)

  • change default delay for findMouseDevice to 100ms

2018-04-24 v1.8.32

  • add trackpad prefpane properties for VoodooPS2Mouse when ActLikeTrackpad is set

no release v1.8.31

  • merge jcsnider's pull request for better Thinkpad trackpoint support

2018-04-18 v1.8.30

  • Wait (default) 500ms before checking for PS2 mouse in findMouseDevice

  • FindMouseDelay can be overriden in VoodooPS2Controller.kext Info.plist or with kernel flag vps2_findmousedelay

2017-10-31 v1.8.29

  • Fixed lid sleep issue with ProBook series (the fix disables keygen when spurious key make code 'e0 05'/make received)

  • added SSDT-HP-FixLidSleep.dsl for other models that may need the same fix

  • future proofed version specific property injection (time will tell)

2017-09-01 v1.8.28

  • Fixed VoodooPS2Daemon (USB mouse detection) as it has been broken for Sierra for some time.

2017-07-22 v1.8.27

  • Add support for 10.13 High Sierra (currently in beta)

  • Fix issue ALPS glidepoint bufferring issue

2017-05-27 v1.8.26

  • Now matches on PNP0320 (Japanese keyboard). Fix for issue #117

2016-12-08 v1.8.25

  • use new SysPrefs->Trackpad on 10.12 Sierra (based on usr-sse2 fork)

  • precise scrolling fix for 10.12 Sierra (based on usr-sse2 fork)

  • implement workaround for capslock bug in 10.12 Sierra

  • map brightness keys to F14/F15 for 10.12 Sierra compatibility

2016-06-16 v1.8.24

  • Fixed a memory management bug exposed by Sierra having to do with stack allocated PS2Request structs

2016-06-15 v1.8.23

  • Fixed the profile for the ProBook guide (ProBook-87 and ProBook-102 now handled consistently)

  • Added "ForceSynapticsDetect" to treat Synaptics trackpads that don't report as Synaptics.

2016-05-29 v1.8.22

  • Changed the default for DynamicEWMode to false. It causes problems on some trackpads. If you want the feature, enable it with SSDT-Enable_DynamicEWMode.dsl (modified if necessary, compiled as AML, placed in ACPI/patched).

  • Fix ACPI configuration issue/bug (see issue #10 in CodecCommander))

2015-12-29 v1.8.21

  • Allow the delay in VoodooPS2Daemon to be changed (via command line/plist)

2015-11-28 v1.8.20

  • Fix bug with zero length dictionary (ACPI configuration). Does not actually affect this kext, but fixed nonetheless.

  • eliminate extra IOLog call (accidently left in from debugging)

2015-11-07 v1.8.19

  • Fixed VoodooPS2Daemon detection of certain types of mice (Logitech in particular), by searching also in the legacy tree for USB pointing devices.

2015-11-01 v1.8.18

  • Added ability to configure from ACPI without modifying the Info.plist. See the u430 patch repo for an extensive example.

  • All special configuration for the Lenovo u430 was removed. You must use the new ACPI setup with the new kext if you have a Lenovo u430. Also, the new ACPI setup is not compatible with the old kext, just in case you were wondering.

  • Added WakeMouseFirst option to upon wake from sleep initialize the mouse, then keyboard instead of the normal order (keyboard, then mouse). Set WakeMouseFirst=true for mouse, then keybaord. Default is WakeMouseFirst=false.

  • Fixed a memory leak in VoodooPS2Daemon

2015-10-29 v1.8.17

  • Added DynamicEWMode option (default is true). This is specifically to improve two finger scroll responsiveness with ClickPads. Instead of always forcing the trackpad into EW mode (EW mode enables two finger data), EW mode is only entered upon clicking the pad. Since each finger gets half bandwidth in EW mode and during a scroll we only need one finger (with indication of two), we can avoid entering EW mode resulting in double the bandwidth during the two finger scroll. Of course, EW mode is needed when the pad is clicked (for holding the button with one finger while dragging with the other), so EW mode is now turned on/off dynamically depending on whether the button is clicked.

  • DynamicEW mode can be turned off by setting DynamicEWMode=false in Info.plist

2015-10-16 v1.8.16

  • VoodooPS2Daemon now works correctly with 10.11

  • change versioning/marking scheme

  • some minor bug fixes/cleanup

2015-05-02 v1.8.15

  • Fix a problem with phantom key event e027 on certain ProBook laptops causing spurious/random fnkeys toggle

  • Allow for discrete fnkeys toggle and discrete trackpad toggle setup

2015-02-23 v1.8.14

  • Fix a problem with u430 F9 key when "Use all F1, F2..." is selected. This resulted in a new way to send both make/break keys from ACPI Notify (0x03xx and 0x04xx).

2014-10-16 v1.8.13

  • Default for USBMouseStopsTrackpad is now zero instead of one. This means the trackpad will not be disabled at the login screen when a USB mouse is plugged in.

  • turn off FakeMiddleButton in VoodooPS2Mouse.kext

  • some tweaks for ideapad

  • tuned movement/acceleration to better match the MacBookAir6,2. Changed resolution to 400 from higher values, which seems to help...

  • other fixes/changes: see commit log for more information

2014-05-23 v1.8.12

  • Fix bugs. See commit log/issues database for details.

  • Finished Macro Inversion option for converting Fn+fkeys in challenging situations.

  • Lenovo u430 profile is working well now (due to Macro Inversion and other features).

2014-02-24 v1.8.11

  • Implement ability to send key strokes from ACPI. This is useful when certain keys are not handled via the PS2 bus, but instead are handled elsewhere in DSDT, usually via EC query methods. With this I was able to make the native brightness keys work as normal keys on a Lenovo U430.

  • Implement ability to call into ACPI when keys are pressed. Scan codes e0f0 through e0ff are reserved to call back into RKAx (where X is a hex digit corresponding to the last digit of the scan code, eg. 0-9 A-F). Use Custom PS2 Map to map a real scan code to e0f0-e0ff, then define RKA0 up to RKAF in your PS2K device. Note: Your keyboard device must be called PS2K.

  • A few pull requests from others. See commit log.

  • [wip] Profile for Lenovo u430 keyboard.

2014-01-21 v1.8.10

  • Implement BrightnessHack option for laptops with non-working Brightness keys. If set in the keyboard Info.plist, this setting will allow screen brightness to be changed via Ctrl+Alt+NumPad Plus/Minus keys.

2013-12-05 v1.8.9

  • Fixed F1 sleep issue in Mavericks

  • Added Platform Profiles for various laptops (HP 6560b, Dell N5110), including special key switching for certain Dell/Samsung machines.

  • Added workaround for unexpected trackpad data

2013-09-13 v1.8.8

  • Fixed jitter/twitching that happens when using two finger scroll on 10.9 Mavericks. Threshold is currently 10. Can be customized in the trackpad Info.plist with the ScrollDeltaThreshX and ScrollDeltaThreshY items.

  • Implemented "Dragging" (double-tap-hold for drag) to be more like a real Mac. Now the drag will remain in effect for one second after releasing your finger from the touchpad (before it was immediate). This makes it easier to drag/resize/extend selections larger distance. The timeout is controlled by DragExitDelayTime in the trackpad Info.plist. It can be changed to zero (0) to revert to the original behavior.

  • Implemented a slight tweak to the averaging algorithm. Now using 4 samples instead of 3.

2013-08-15 v1.8.7

  • Fix a bug which prevents VoodooPS2Controller.kext from loading on 10.9 Mavericks. The problem was the class ApplePS2Controller was not exported properly.

2013-08-05 v1.8.6

  • Add support for HPQOEM:17F3 (HP ProBook 4440s)

2013-07-01 v1.8.5

  • Added support for HPQOEM:17F0 (HP ProBook 4340s)

  • Corrected error in setProperties for ApplePS2Controller. Now works with utility 'ioio'

2013-05-26 v1.8.4

  • Added option to override DSDT oemId/oemTableId via ioreg properties on PS2K device. This is for clover as it is necessary to override oemId because Clover patches the DSDT to reflect oemId as "Apple ". In order to work around this bug, we can now provide an "RM,oem-id" property in the PS2K device. Although it isn't necessary (for Clover), you can also provide an override oemTableId via a property "RM,oem-table-id". For an example of use, see the ProBook 4530s patches (02_DSDTPatch.txt, search for PS2K). This allows you to use the driver unmodified on Clover and still get the proper configuration selected via Platform Profile setup, provided you have the proper injection in your DSDT. This may end up being useful for other computers as well, when the OEM has chosen poor names for oemId/oemTableId.

2013-05-07 v1.8.3

  • WakeDelay in ioreg for ApplePS2Controller is now correct integer type instead of bool.

  • Added support for HP ProBook 5330m.

  • Eliminated FakeSMC dependency. The drivers now look directly at DSDT in ioreg to determine what to use for configuration instead of the "mb-product"/"mb-manufacturer" properties of FakeSMC.

  • Remove extraneous mapping for R_OPTION in ProBook-87 keyboard configuration.

2013-04-07 v1.8.2

  • Fixed problem under Snow Leopard where VoodooPS2Keyboard.kext was not loading.

  • Fix issue with Eject (Insert) causes DVD to eject immediately instead of after a delay. Now the driver honors the HIDF12EjectDelay configuration setting, which by default is 250 ms. You can also change it in the Info.plist if you wish. 250 ms provides a slight delay that avoids accidental eject.

  • Added support for HP:4111 keyboard map/configuration for HP ProBook 4520s.

  • Changed the default assignment of the right "menu/application" key (on 4530s in between right Alt and right Ctrl). Prior to this release it was assigned to Apple 'Fn' key. Now it is assigned such that it is 'right Windows' which maps to Apple 'option.' This is configurable in the keyboard driver's Info.plist.

  • Fixed a bug where special functions/media keys were not mapped to F-keys by default until you checked then unchecked the option for this in SysPrefs -> Keyboard.

2013-03-15 v1.8.1

  • New feature: It is now possible to toggle the Keyboard Prefs "Use all F1, F2…" option with a keyboard hotkey. On the ProBook 4xx0s series, it is Ctrl+'prt sc'.

  • New feature: Added keyboard mapping/ADB (92) code for the Eject key. On the ProBook 4xx0s series, it is assigned to the 'insert' key. See this link for more information on the various modifiers that can be used with the Eject key: http://support.apple.com/kb/ht1343

  • Supported added to Info.plist for keyboards on ProBook 8460p/6470b laptops. Credits to nguyenmac and kpkp.

  • Platform Profile computer specific sections in Info.plist are now merged with the 'Default' section making it easier to create/manage alternate configurations, because you only have to enter the differences/overrides.

  • Fixed a bug in the ProBook specific Info.plist (for those not using kozlek's FakeSMC) where SleepPressTime was not set to 3000.

  • Developers: Updated to Xcode 4.61, and also optimized a bit for size and exporting less symbols into kernel namespace.

2013-03-04 v1.8.0

  • Feature: Info.plist content is now driven off the mb-manufacturer/mb-product ioreg properties provided by kozlek's FakeSMC. This allows different keyboard layouts/trackpad settings to be based on which machine/motherboard the drivers find themselves running on. As of this time, support has been added for the Probook 4x30s series (HP/167C). Users who create custom settings for other hardware are encouraged to submit their Info.plist changes and mb-manufacturer/mb-product IDs from the FakeSMC device in the ioreg. I will integrate these new profiles into future builds. This also means that I'm only distributing one version of the package from now on, with special instructions for ProBook users not using the latest FakeSMC.

  • bug fix: Fixed UnsmoothInput option. It was not working at all.

  • Changed the default Resolution/ScrollResolution from 2300 to 2950. This results in more control for finer movements, but slower overall acceleration. You may have to adjust your pointer speeds in System Prefs -> Trackpad to suit your preference.

  • bug fix: Fixed a problem on Snow Leopard if Kernel Cache was being used.

  • For developers: Fixed 32-bit build.

2013-02-26 v1.7.17

  • bug fix: Evidently there is an OS X bug in IOMallocAligned. For some reason only affects the debug version of this driver (Release version was fine for some unknown reason). Temporarily move back to IOMalloc until it can be resolved.

2013-02-25 v1.7.16

  • bug fix: Fix some problems with pass through packets (pass through capability applies if you have both a trackpad and a stick).

  • Add support for 'genADB' for keyboards without a number pad. Hold down Alt (command), then type digits to simulate an ADB code, then release Alt. This features is only available with the DEBUG version. Previously this worked only with the numpad digits.

  • Add LogScanCodes property to keyboard driver. Now you can log scan codes to the Console system.log, even in the Release version. Use 'ioio' to set this property to true, and you will see scan codes logged in the Console. Set it back to false when you're done.

2013-02-21 v1.7.15a (beta)

  • bug fix: Fix problem (again) with startup sequence (a multithreaded issue), where it was causing the keyboard to be non-responsive or indefinitely repeat a key.

2013-02-20 v1.7.15 (beta)

  • Slight tweak to middle button handling: The code will now commit to a single left/right button if you touch the touchpad after pressing one of the buttons (instead of waiting the 100ms to see if a middle button event should happen instead).

  • bug fix: Fixed a problem with startup (multithreaded issue), where the keyboard would not work or indefinitely repeat at the login screen.

  • bug fix: Fix problem with holding down Alt and using numpad digits to type an ADB code (a feature only for debug mode). Had to undo most of "non-chaotic" startup and approach from another angle.

  • New feature: Some keyboards do not generate 'break' codes when a key is released. This causes OS X to believe the user is holding the key down. Fn+F1 through Fn+F12 can have this. Seems to be common on Dell laptops. Since I failed to find a way to force the keyboard to generate break codes for these keys (some controllers seem to just ignore this), I have implemented the ability to specify these keys by their scan code in the keyboard driver's Info.plist. You must specify the scan code of each key in the "Breakless PS2" section. See VoodooPS2Keyboard/VoodooPS2Keyboard-Breakless-Info.plist for an example (tested with my Probook keyboard for all Fn+fkeys).

2013-02-17 v1.7.14 (beta)

  • Bug fix: Fixed problem where Synaptics trackpad would load even if a Synaptics device was not detected.

  • Internal change: Re-wrote the interrupt handling code. Prior to this version, data was not pulled from the PS2 port until the "work loop" got around to it. All the interrupt routines did was signal the scheduler to wake the work loop. With this version, data is collected directly in the interrupt routine, placed in a ring buffer, and the work loop is only scheduled when a complete packet has arrived. So, for the keyboard driver, the work loop is activated whenever a full scan code sequence has been sent (from 1 to 3 bytes), for the mouse driver, when a full 3-byte packet has arrived, and for the trackpad driver, when a full 6-byte packet has arrived. Not only is this more efficient (only scheduling the work loop when there is actual work to do), it is also safer as data is gathered from the PS2 port as soon as it is available. This is a pretty major change.

  • setProperties/setParamProperties is now fully implemented in the keyboard driver. This means you can use 'ioio' to change configuration values on demand. It also means that eventually the prefpane will be able to manipulate the keyboard Info.plist options just like it can with the trackpad. When I get around to working on the prefpane…

  • Added an option to most Info.plist to allow a device to be "disabled." By setting DisableDevice to true, you can keep that driver code from loading and being considered for probing. By default, none of the drivers are disabled, but disabling them may improve startup performance as well as reduce the chances of things going wrong. I think a future version of the ProBook Installer should automatically disable the devices not used on the ProBook.

  • Implemented a "non-chaotic" startup. Turns out that OS X will start all devices in parallel. While this can make the system start up faster, it might not be such a good idea for devices interacting with one resource, in this case, the PS2 port. The keyboard driver now waits for the PS2Controller to finish starting before starting it's "probe" process. And the mouse/trackpad drivers wait for the keyboard driver to finish starting before starting their "probe" process. A future version may make this optional.

  • The keyboard driver's "probe" function now will always return success. I have not found a reliable way to detect a keyboard actually being present or not, so it will always load and in the Release version does not test for the keyboard existing at all. Also important to note that the mouse/trackpad drivers now wait for the keyboard to load (see above), so it is really necessary to have the keyboard driver loading always anyway.

  • Added a special case for Synaptics type 0x46 (really a hack for Probooks with a Synaptics stick) to report led present, because we know it is there and it works.

  • Cleaned up some of the logic for middle button clicks, such that releasing either button will immediately release the middle button.

Note: v1.7.13 skipped.

2013-02-07 v1.7.12 (beta)

  • Implemented middle click by clicking both the left and right physical buttons at one time. Time for button clicks to be considered middle instead of right/left is configurable as MiddleClickTime. Default is 100ms.

  • Implemented a new option in the Info.plist for the trackpad: ImmediateClick. Set by default to false. If true, it changes the behavior of clicking and dragging with tap and double-tap hold. Prior to this option, a tap does not register its button up until the double click time has passed. For some actions and clicking on some buttons (when the application does the button action after the mouse button up has been received), this made the touchpad clicks seem sluggish. The reason this was necessary was to make the double-tap-hold for drag to work… to make it work, the button is held for the duration of the double click time, thus the delay for the button up. If this was not done, certain drag operations wouldn't work because of the way the system is written. Some drag operations do not start on a double-click. For example, dragging a window will not start if it is on a double click. You can try this with a mouse (double-click-hold, then try to drag -- it doesn't take). That's why the original code holds that button even though you've already completed the click with the first tap: it had to otherwise the next tap as part of the double-tap-hold sequence would be seen as a double-click and dragging the title bar wouldn't work. OS X is very inconsistent here with this. For example, you can double-click-drag a scroll bar. When ImmediateClick is set to true, after you complete the tap the button will immediately be reported as up (it is only down for a short time). In order to make double-tap-hold still work for dragging windows on the desktop, the button down for the second tap (tap+hold really) is not sent until at least double click time has passed. This means that dragging does not engage for a little bit after the double-tap-hold sequence is initiated.

  • Internal: General cleanup, especially around manipulation of the command byte.

2013-02-04 v1.7.11 (beta)

  • Fixed a bug, previously documented as a known issue, where some trackpads were unresponsive after waking up from sleep (Probook 4540s, for example). The fix is to re-initialize the 8042 keyboard controller on wake from sleep and to initialize the keyboard first, mouse second after wake from sleep instead of the original opposite order.

  • Fixed a bug, previously documented as a known issue, where if your trackpad was in absolute mode (using VoodooPS2Trackpad.kext) and you restarted without turning off the laptop after switching to using only the mouse driver (VoodooPS2Mouse.kext), the trackpad was not correctly reset into relative mode and as such it didn't work properly. The same thing would happen on transitions from other operating systems (Windows or Ubuntu) and then booting into OS X using VoodooPS2Mouse.kext.

  • Rarely, the keyboard and trackpad would stop working, especially just after logging in. Since this is an intermittent problem, it is difficult to tell if this is fixed. But it seemed to be getting worse lately. And there is a lot more properties being set from the system in setParamProperties (because the drivers are responding to more and more settings available in System Preferences). These property settings happen at login… to apply the user's preferences. After looking at some sources for IOHIDSystem, I discovered Apple routes all work for setParamProperties through a command gate in order to synchronize on the work-loop thread. This fix is now implemented.

  • VoodooPS2Mouse.kext now will now send Synaptics specific data only when it is detected a Synaptics device. This was an issue specifically with ActLikeTrackpad option in VoodooPS2Mouse.kext.

2013-01-29 v1.7.10 (beta)

  • Fixed bugs in ClickPad support. Especially right click logic.

  • Time from first touch to clicking "pad button" is now configurable for ClickPads. Info.plist variable is ClickPadClickTime (Default is 300ms)

  • It is possible again to build a 32-bit version, should it be needed. I am still not providing 32-bit capability with the official builds.

2013-01-27 v1.7.9 (beta)

  • Added capability to scale interleaved PS/2 "passthrough" packets to scale the resolution up to the trackpad resolution. See MouseMultiplierX and MouseMultiplierY in the trackpad's Info.plist

  • Modifier key(s) used for "temporary drag lock" feature is now configurable (previous release it was hardcoded to control). This is controlled by DragLockTempMask in the trackpad Info.plist. Set to 262148 for control key, 524296 for command (alt) key, and 1048592 for option (windows) key. Please note the default configuration of the keyboard Info.plist has the command and option swapped, so in that case, it is 1048592 for option (windows) key, and 524296 for the command (alt) key.

  • Swipe Up, Down, Left, Right are now assigned by default to the following keyboard combinations: Control+Command+UpArrow, Control+Command+DownArrow, Control+Command+LeftArrow, Control+Command+RightArrow. This should work better with international keyboards. You will need to use System Preferences -> Keyboard -> Keyboard Shortcuts to adjust to assign these keys to your desired actions. If you were using three finger swipe left and right for back/forward in your web browser, you will need to reconfigure these actions via the Info.plist or use a program like KeyRemap4MacBook to remap the keys generated to the keys used by your browser for forward/back (that's what I plan to do).

  • Implemented support for System Preferences -> Keyboard -> "Use All F1, F2, etc. keys as standard function keys." Now it is possible to have the Fn+fkeys/fkeys swap honor this setting in System Preferences. But to enable this feature, the Info.plist must contain two new items "Function Keys Standard" and "Function Keys Special" If these items are present, then the option will be available in System Preferences -> Keyboard. If not, the option is not available. The format of these two keys is the same as "Custom PS2 Map" the difference being that "Function Keys Standard" is in effect when the option is checked, and "Function Keys Special" is invoked when the option is not checked. The proper mapping is implemented for the Probook 4x30s in VoodooPS2Keyboard-RemapFN-Info.plist. In "Function Keys Standard" the mapping is removed. And in "Function Keys Special" fn+fkeys and fkeys are swapped. Any laptop should be able to have support created for it by modifying these keys as long as the scan codes can be determined (Fn+fkeys scan codes vary between specific laptop models).

  • Cleaned up keyboard debug messages to make it easier to create custom key mappings. Eventually, the wiki on keyboard remapping will reflect this.

  • Implemented support for changing the keyboard backlight on certain notebooks. See this thread for further information: http://www.tonymacx86.com/mountain-lion-laptop-support/86141-asus-g73jh-keyboard-backlighting-working.html

  • Implemented support for changing screen brightness via ACPI methods in the DSDT. You need some understanding of ACPI to try this feature.

2013-01-24 v1.7.8 (beta)

  • Added acceleration table as suggested by valko. This makes small movements more precise and large movements quicker.

  • Implemented "Momentum Scroll." This allows scrolling to continue after you have released from the trackpad. There is probably some work that could still be done here to make it match the feel of a real Mac, but I think it may be close. Please provide feedback. This feature is enabled by default, but you can turn it off in System Preferences -> Accessibility -> Mouse & Trackpad -> Trackpad Options.

  • Implemented support for System Preferences -> Accessibility -> "Ignore built-in trackpad when mouse or wireless trackpad is present" If set, the trackpad will be disabled when there is one or more USB mice plugged in. You must install the VoodooPS2Daemon as described in the installation instructions for this to work. This is also implemented for VoodooPS2Mouse.kext if ActLikeTrackpad is set.

  • Added a "temporary Drag Lock" feature. If you enter Drag (double tap+hold) with the Command key down, it will be as if you had "Drag Lock" set in trackpad preferences, but just for that drag operation. The drag is ended by tapping, just like normal drag lock.

  • Added support for "middle button." You can get a middle button click if you use three-finger tap. This is enabled by setting ButtonCount to 3 in Info.plist. If this causes an issue or you wish to disable it, set ButtonCount to 2 in the Info.plist. In addition, if you wish to reverse the function of two-finger tap and three-finger tap, set SwapDoubleTriple to true in the Info.plist.

  • Added support for Synaptics ClickPad(™). These trackpads have a single button under the entire pad. In order to make these trackpads usable, the trackpad must be placed into "Extended W Mode" which allows the driver to obtain data from both a primary and secondary finger. Support for these trackpads should be considered experimental since it has only been tested via simulation with a Probook trackpad (which is not a ClickPad). Let me know how/if it works.

  • Key sequences for trackpad 3-finger swipes are now configurable in the keyboard driver Info.plist. Any combination of keys can be sent. Controlled by the following configuration items: ActionSwipeUp, ActionSwipeDown, ActionSwipeLeft, ActionSwipeRight.

  • By default, the horizontal scroll area at the bottom and the vertical scroll area at the right are not enabled. You can re-enable them by setting the HorizonalScrollDivisor and VerticalScrollDivisor to one (1).

  • Fixed a bug where if the trackpad was "disabled" before a system restart, the LED remained lit. The LED is now turned off at boot and during shutdown/restart.

  • Separated Divisor in Info.plist to DivisorX and DivisorY. This may help those of you with different trackpads than the Probook one. For the Probook both of these variables are set to one (no adjustment).

  • Started tweaking synapticsconfigload and the Preference Pane. These features are not ready for general use yet, and therefore are not included in the binary distribution.

  • For developers: Added makefile for command line builds, and added shared schemes to project to make it easier to build.

2012-11-29 v1.7.7

  • Integrated the chiby/valko trackpad init code for non-HP Probook trackpads. This is for wake from sleep and cold boot initialize using undocumented trackpad commands determined by chiby by monitoring the communication line between the PC and the trackpad. This should allow the trackpad driver to work with more models of trackpads.

  • Integrated valko three-finger gesture code (with tweaks). These 3-finger gestures are as follows: swipe left: sends keyboard Command+[ swipe right: sends keyboard Command+] swipe up: sends keyboard F9 swipe down: sends keyboard F10

A future version will allow these command mappings to be changed in the Info.plist. In this version, they are hard-coded.

The amount of movement is controlled by SwipeDeltaX and SwipeDeltaY in the Info.plist. The default for this version is 800.

So, Command+[, Command+] should correspond loosely to back/forward, respectively. And F9 and F10 can be mapped to various functions (Launchpad, Show Desktop, Mission Control, etc.) by changing the assignments in the System Preferences -> Keyboard.

  • Changed the 2-finger scroll logic to allow two-fingers held very tightly, even with "ignore accidental trackpad input" turned on. The trackpad driver sends bad data when the two fingers are held together like this (it sends it as one 'wide' finger).

2012-10-30 v1.7.6

  • Changed the default value of MaxDragTime in Info.plist for trackpad. Anything larger than 240ms will cause incorrect behavior with the Finder's forward and back buttons. Changed it to 230ms to avoid this issue.

2012-10-20 v1.7.5

  • Added default behaviors for Fn+F4, Fn+F5, Fn+F6. Fn+F4 is "Video Mirror" -- it toggles display mirror mode. Fn+F5 is Mission Control. Fn+F6 is Launchpad. These keys were previously unmapped by default (when no Custom ADB Map was present in Info.plist).

  • In the debug version only, added the ability to generate any ADB code you want. To do so, hold down Alt, then type the ADB code with the numpad number keys (0-9). The resulting code is sent after you release the Alt key. This was how I discovered the ADB code for the Launchpad is 0x83 (Alt-down, 1, 3, 1, Alt-up).

  • "Just for fun"... implemented three finger salute.

  • Fixed a bug where key repeat for keys with extended scan codes (those that start with e0) may not have been repeating properly. This bug was introduced when the keyboard mapping feature was added.

  • Made scrolling (both multi-finger and single-finger) much, much smoother.

  • Allow transitions from horizontal scrolling to vertical scrolling without falling into "move" mode. This allows you to horizontally scroll right across the bottom of the pad, and onto the bezel, then returning back onto the pad (without lifting your finger) to resume horizontal scrolling. Although not very useful, you can also horizontally scroll into the lower left corner, then move up to vertically scroll in the right margin. The previous version would "lose" the scroll mode when moving off the right side or the horizontal scroll zone (because upon reentry, it would enter vertical scroll mode and not be able to resume horizontal scroll mode upon entering the horizontal scroll margin area).

  • Fixed a bug where trackpad input/pointer position would demonstrate a slight glitch when changing the trackpad configuration in System Preferences.

  • Added ability to disable/enable trackpad by double tapping on the upper left corner. The area of the trackpad that is used for this function is configurable in the Info.plist. By default (DisableZoneControl=0) this feature is enabled if your trackpad has an LED. You can disable this feature by setting DisableZoneControl=-1 in Info.plist. You can enable this feature for trackpads that don't have an LED by setting DisableZoneControl=1.

  • Added a smoothing algorithm to process the input from the trackpad. Still experimenting with this to tweak the parameters, but it is coming along. This is controlled by two Info.plist settings: SmoothInput and UnsmoothInput. By default, the trackpad itself does a little smoothing on its own (1:2 decaying average). If you set the UnsmoothInput option, it will undo the action the trackpad is implementing (a decaying average can be mathematically reversed). If you set SmoothInput, a simple average with a history of three samples is used. By default, both UnsmoothInput and SmoothInput are set.

  • Added a movement threshold for tap to left click and two-finger tap to right click. For left clicks the threshold is 50. So if while tapping, you move more than 50, the tap is not converted to a click. The threshold for right clicks is 100 as there tends to be more movement detected from the trackpad hardware with a two finger tap. These values can be adjusted in Info.plist. This was mainly put in place to avoid accidental entry into drag mode when rapidly moving (with multiple quick swipes across the trackpad).

  • Palm rejection/accidental input now honors system trackpad preferences setting "Ignore Accidental Trackpad Input", so you can turn it off. I would not recommend turning it off. The system actually sets three different options when you enable this option in System Preferences ("PalmNoAction While Typing", "PalmNoAction Permanent", and "OutsidezoneNoAction When Typing"). The Trackpad code pays attention to each one separately, although they are all set or cleared as a group. Perhaps there is some command line way of setting them individually.

  • Implements a defined zone in the left and right margins (and potentially top and bottom) where input is ignored while typing (see Zone* in Info.plist). This is enabled if you "Ignore Accidental Trackpad Input"

  • Modifier keys going down are ignored as far as determining timing related to accidental input. This allows you to position the pointer with the trackpad over something you want to click on (say a website URL) and then hold Ctrl (or other modifier) then tap to click. This is only for keydown events and only for shift, control, alt(command), and windows(option) keys.

  • Trackpad code now determines automatically if your Trackpad has an LED and disables turning on/off the LED if it isn't present.

  • Trackpad code now determines automatically if your Trackpad has pass through support and enables pass through only if the guest PS/2 device is present. This avoids bad things happening (mouse buttons getting stuck down) if a non-pass through trackpad sends pass through packets.

  • The Mouse driver in this version has minimal support for "Ignore Accidental Trackpad Input". In particular, it is able to ignore buttons and scrolling while typing. Note that this means real buttons too, not just simulated buttons via tapping (since it is a mouse driver, it can't tell the difference). This feature is only in effect if "ActLikeTrackpad" is set to Yes in Info.plist.

  • You can make the Mouse driver act like a trackpad. If you set "ActLikeTrackpad" to Yes in the Info.plist, the mouse driver will enable trackpad like features. This includes the Trackpad settings in System Preferences (although many options don't have an effect). This allows you to turn on/off scrolling, as well as "Ignore Accidental Trackpad Input"

  • There is also support for enabling and disabling the mouse (trackpad) with the keyboard, including support for the Synaptics LED. You probably only want to set this if you actually have a Synaptics, as the code doesn't quite check properly.

2012-10-15 v1.7.4

  • Implemented experimental support for pass through packets from a guest PS2 device. These are 3-byte packets encapsulated in a 6-byte touchpad packet that are used to interleave input from a guest device such as a track point stick. I don't have such a device, but I've implemented code to pass through the x & y deltas, as well as some logic to deal with merging the buttons from that device and the trackpad.

  • Improved handling of two-finger tap for right-click. There is still more to come in this area

  • Improved ignoring of accidental tap to click, two-finger tap to click.

  • Improved clicking on system menu when double click time is relatively long.

  • Changed keyboard map to include functions for F4 and F5. F4 is video mirror toggle. F5 is dashboard.

  • Integrated AppleACPIPS2Nub.kext into VoodooPS2Controller.kext. (IMPORTANT: This means AppleACPIPS2Nub.kext is not required and MUST be removed for a properly working system).

2012-10-13 v1.7.3

  • OOPS bug: Now the sleep button timeout really works.

  • Bug fix: VoodooPS2Mouse.kext now works… At least it does with the HP Touchpad. There was a problem with the way the mouse was being initialized. Hopefully that doesn't break regular PS/2 mice. This feature might be useful for people who can't use the touchpad driver for one reason or another. In the near future, I plan to implement some of the "ignore accidental input" features into this driver.

2012-10-13 v1.7.2

  • Add capability to make custom keyboard maps. Both ps2 to ps2 scan code mapping and ps2 to adb mapping is available by creating a simple table in Info.plist. Eventually, I'll write a wiki explaining how custom keyboard maps work.

  • Implement option in Info.plist to control how the sleep button works. By setting SleepPressTime (expressed in milliseconds) to something other than zero, you can control how long the user must press the sleep button before the laptop enters sleep. Proper function here depends on the scan code being an auto-repeat scan code. So, if you assign a sleep time with the normal scan code table, you will have to press Fn+F1 for the time, then release (because it doesn't repeat). This is primarily for use in conjunction with remapping the keyboard. If you wanted to swap the Fn+Fkeys with Fkeys, for example, your sleep button would become F1. Since it is very easy to hit F1 by accident (while reaching for Esc), you can use this option to keep from invoking the sleep function accidentally.

  • Default layout of keys uses keyboard mapping to swap Fkeys for Fn+fkeys.

  • Fixed the bug where if you had dragging enabled, and you tapped on a menu, the menu would go away most of the time.

  • Improved detection of accidental input especially while typing. Note: This is extremely new code and probably is not perfect. Please report any problems you see.

  • Fixed a bug where turning on/off trackpad caused a bonk sound.

  • Added support for Synaptics trackpad type 0x46 (normal is 0x47). In this case, the LED setting will be disabled for wake from sleep. But there is still more work to support this trackpad to come as time/information permits.

2012-10-11 v1.7.1:

  • Fix problem with WiFi key (again). I had it fixed once, but evidently regressed at some point.

2012-10-10 v1.7.0:

  • Basics of palm rejection are implemented. Still need to make the code pay attention to system settings

  • Fn+Del(sysreq) is implemented as a way to toggle touchpad on/off (on 4x30s keyboards without numpad, it seems to be Fn+Insert(prtscrn)) (this would include the 4230, 4330, and 4430)

2012-10-04

  • Initial copy/commit.

History

This repository contains a modified VoodooPS2Controller. Original sources came from this post on Insanely Mac:

http://www.insanelymac.com/forum/topic/236835-updated-2012-genericbrightnesskext/

The sources were pretty old at the time I pulled them (last modified 2009), so there were a few bug fixes they were missing (and could still be missing), but at this point it is the best source base I've found. Current Voodoo sources, in my opinion, were not workable. I couldn't make the Touchpad work at all, and the keyboard driver was doing very strange things (brightness causing computer to reboot). They just didn't seem very close to the versions that we have been using for the HP ProBook. Certainly it would be possible to reconcile these two versions, but after comparing one to the other, I couldn't see any reason to.

I have tried to make the initial commit of this code reasonably close to the sources which I downloaded from the link mentioned above. That way it should be easy to see the progression forward. The commits after that are a different story. There is the occasional gratuitous change that I made while reviewing and attempting to understand the code. That's what you get from a guy that is working for free.

Please note that I'm only testing this on my HP ProBook 4530s. Although it should work fine on other laptops with a Synaptics Trackpad, I haven't tested it on anything but my computer. By the way, the HP ProBook's trackpad reports version 7.5. Related to this is the fact that I haven't tested the "mouse only" part of this driver (ie. VoodooPS2Mouse.kext). I don't have a desktop hack at this point, and even if I did, I don't have any desktop computers with PS/2 ports.

Also, there is a Preference Pane in here, and perhaps at one time it worked. I haven't tested it. Not at all. It builds and that is all I know. At some point, I will take a look at that, and perhaps add some features or at least make it work.

Documentation on the Synaptics hardware can be obtained (at least at the time I write this) from the Synaptics website:

http://www.synaptics.com/resources/developers

I based my code here on the "Synaptics PS/2 TouchPad Interfacing Guide, PN 511-000275-01 Rev.B" I would include the document in the github repository here, but the document is copyrighted and I didn't want to ruffle any feathers.

Future

My intention is to eventually enhance both the Synaptics Trackpad support as well as they keyboard to support the following features:

Touchpad:

  • disable touchpad if USB mouse is plugged in and "Ignore built-in trackpad when mouse or wireless trackpad is present" in Accessibility settings in System Preferences. (DONE)

  • calibrate movement/sensitivity to mouse (since they share the same config, it would be great not to have to adjust) (note: they are pretty close, but could be tweaked a bit) (DONE)

  • investigate using extended-W mode (haven't done much here except read the spec)

  • more gestures, as time permits (currently two-finger scrolling and three-finger swipe)

  • implement touch pad on/off in upper left corner (DONE)

  • clean up IOLog and allow for more information in Debug version (DONE)

  • if possible, implement LED indication for touchpad on/off (HP ProBook specific) (DONE)

  • implement high resolution mode for Synaptics (may already be implemented but not enabled in Info.plist) (DONE -- this version seems smoother than the one we were using)

  • implement palm rejection (accidental input) (DONE)

  • investigate doing something to make movement smoother (implement some kind of decaying average to smooth spikes in the input stream) (DONE)

  • implement a threshold of movement that will cancel a click drag (this would avoid unwanted drag detection) (one way to avoid this is for the user to set the fastest double click speed) (DONE)

  • Fix bug where trying to open a Menu with a tap does not work: Menu opens, but most of the time immediately closes. (DONE)

Keyboard:

  • Correct volume indications (for some reason these are not working right now) (DONE)

  • Make wireless key work for turning wireless on/off (HP ProBook specific) (DONE)

  • Allow for some limited form of custom key mappings (instead of hardcoding scan codes for specific laptops) (DONE)

  • Allow Fn+Fkeys to be swapped for FKeys (without Fn) (DONE -- use generic keyboard remapping above)

Mouse:

  • Implement LED on/off for Synaptics touch pads operating as a PS2 mouse (DONE)

  • Make the VoodooPS2Mouse.kext work for trackpads in mouse simulation mode. For some reason it arrived broken when I got the code. (DONE).

  • Add "ignore input after typing" features to mouse driver. A little weird to make for a real PS2 mouse, but super nice for laptops with trackpads operating in mouse simulation mode. (DONE)

PrefPane:

  • Maybe test it and see if it works (it works, but there is a lot of options that don't make sense for Probook users)

  • Also, it would be nice if preferences would stick across reboots... (this works via synapticsconfigload, but needs work)

Original Credits

VoodooPS2Controller (core): turbo

Resolution fix for PS2Mouse: mackerintel

Synaptics driver: mackerintel

Sentelic Driver: nhand42

Alps driver: phb

Keyboard fixes: Chunnan & jape

Synaptics Prefpane design: bumby

Synpatics Prefpane: mackerintel

Great thanks to Dense for helping with activating vanilla trackpad prefpane

os-x-voodoo-ps2-controller's People

Contributors

gfoury avatar jcsnider avatar rehabman avatar samfleming avatar the-darkvoid avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

os-x-voodoo-ps2-controller's Issues

voodoops2controller not working after sleep AND after switching to battery.

Hi, I've used the old version of voodoops2controller on my hp550 laptop and it used to work great, except occasional fails after exiting sleep mode (both keyboard and track pad are not working). Few days ago I've realized it also stops working after unplugging and plugging back the power source. i found the topic which said this issue was fixed in newer versions of kext. After installing 1.8.0 kext i found both keyboard and track pad not working at all, so I've rolled back.
Unfortunately, i can't tell you exact model of my touch-pad or keyboard - didn't found any information on web. I'm using HP550 Celeron laptop with SL 10.6.8.

Thinkpad trackpad scroll only

Is there a way of disabling regular mouse movement and clicking on the trackpad and using it for scrolling only (1 or 2 finger), while keeping the trackpoint enabled, or can this be implemented?

Alternately, is there a way of disabling the trackpad completely, while still allowing middle mouse button scrolling? If I disable the trackpad in the bios, scrolling stops working, and I haven't found a "disable" in the Info.plist that works for my system.

I'm on a Thinkpad X220 4290-BY7, latest VoodooPS2 (2015-05-02), and Mac OS 10.10.1, if that helps.

faster movement does not work

Hi,
If you touch and move finger slowly works perfectly and smooth, but if you speed up your movement, it will get stucked and don't get to the desired location. Looks like the interval for reading touch events is too big and you have to find a way to retrieve data for smaller time intervals.

Possible situation:

  1. wait to much for the next read of touch position.
  2. you make to much calculations when you have a touch event, and then the time from one readed touch to another is too big

Sometimes keyboard not working after sleep

I'am using OS X 10.10.3 with Acer Aspire 4741G, and the output with command "kextstat | grep -i ps2" as follows:
34 2 0xffffff7f80ee0000 0xb000 0xb000 org.rehabman.voodoo.driver.PS2Controller (1.8.14) <11 7 5 4 3 1>
43 0 0xffffff7f80f03000 0x6000 0x6000 org.rehabman.voodoo.driver.PS2Keyboard (1.8.14) <35 34 7 6 5 4 3 1>
45 0 0xffffff7f80efd000 0x4000 0x4000 org.rehabman.voodoo.driver.PS2Mouse (1.8.14) <35 34 5 4 3>

Sometimes keyboard not working after sleep, I must reboot system to resolve it. Why and How to avoid this?

JIS(Japanese Industrial Standards) Correspondence?

Hi!
I am Japanese.

In Lenovo ThinkPad X1 Carbon Gen 3, it has become very indebted.

In can use the touch pad's a comfortable,
but when you reboot the OS X, is what was set to JIS, will be the US keyboard (102?).

Is there a solution to this problem?

This kext doesn't load on a MSI GS60 laptop

This model of laptop uses a Elan keyboard and touchpad, but neither Voodoo-PS2-Controller nor Elan ps2 driver works.
In the kernel log, I can't see anything about the PS2 driver even using the debug version of VoodooPS2Controller.kext. The VoodooPS2Deamon tells me that "Keyboard and touchpad not found".
By the way, my OSX version is 10.10.3, using UEFI+GPT+Clover.
DSDT hasn't been made.
Plus, MSI released an update for the BIOS and EC firmware. After update, the problem may be solved. I'll have a try.
Any idea about this?
Thank you!

EDIT: After adding a DSDT, the problem solved. But when I add some more patches to the DSDT, the PS2 keyboard and touchpad back to be unavailable again. I'll dive into the problem...

Reset itself into "relative mode."

Sometimes, my trackpad has spontaneously reset itself into "relative mode.", which leads to endlessly console spam, and can make system auto restart.
"kernel[0]: ApplePS2SynapticsTouchPad: Unexpected byte0 data (c0) from PS/2 controller"

A trackpad restart by using the trackpad on/off key solves this problem for a short time, while an EC reset can fix this for longer period.

Universal PS2Keyboard

The new PS2Keyboard in 1.8.11 does not work with some laptop (I removed PS2Touchpad for universal support). VoodooPS2Controller without PS2Touchpad works well with most laptop.

Does the kext have the config to always force PS2Mouse to load? Thank you.

Scrolling like the mac trackpad

This kext has got very far, it is awesome, and works perfect.

However, I am wondering if it would be possible to enable the scrolling that can go over the page and show you what's behind.
Its hard explaining this.

I can compare it to safari scroll left-to-right and you will go to the previous page, opening the notification bar by using two fingers from RtL.

I understand the kext emulates a mouse, so my question is how it would be possible to make OSX think its actually a trackpad, and then OSX would enable the scrolling that is native on the real mac trackpad.

Pointer isn't precise in Y580s

I got a problem with the trackpad and I think others Lenovo Y580 users could confirm this on OS X.

I'll try to describe it as clear as I can.

When I am in Win7 or in Win XP I can move the pointer to a position and then I can tap and it won't move a bit. It remains in the same position until I deliberately make a move with my fingers.
So I can tap even hundreds times and it sticks as glue in the position I moved the pointer to.

In OS X when I'm tapping the pointer moves itself. Sometimes even jump a 1cm down the screen.
U know what I mean? I don't make a move I just tap and it moves...not much but it moves... preventing me from clicking in the exact position I want.
For example I'm trying to close a window. I move the pointer to the red "x" button then I tap to close it and it's moving below the "x" itself so I need to move the pointer back to the red "x" and tap again, sometimes I need to repeat it twice, sometimes more. It's really annoying!!!

Not sure if you can do anything about it but if yes then I'd move totally to OS X leaving Windows only for games or deleting it completely!

thank you.

strange chars written when using two finger scroll

When I use two finger scroll and switch direction from vertical to horizontal or from horizontal to vertical my cursor writes +-++--

I tried this in eclipse where I have a large file with long lines.
I belive that this behaviour is for all kinds of text editors

Edit: It also happens when you scroll only one direction, but not always as the switch of scroll direction explained before

i need press fn when i want to put out number on the numeric keypad

my trackpad is syn and my trackpad can be used while i use your kext.I can also use the keyboard except that the numeric keypad was change to be direction key,and i need to put out number by pressing numeric key with fn.And i havd tried using elan kexts.then it canmake my keyboard normal,but i can not make my track work.

Lenovo T420 TrackPoint buttons double click for single click with 1.8.11

The "upper" TrackPoint buttons are doing a double click for single clicks. The lower TrackPad buttons are not doing this. rollback to 1.8.10 TrackPad plugin fixed this issue. replaced this with older binary:

VoodooPS2Controller.kext/Contents/PlugIns/VoodooPS2Trackpad.kext/Contents/MacOS/VoodooPS2Trackpad

Media keys press repeat infinitely

Hello!

I have media keys:
F6 - volume mute
F7 - volume down
F8 - volume up

When I press F7 or F8, keyboard will repeat this event infinitely while I not press another button.

Unknown key mapping on Spanish-ISO PS2 keyboard

In a PackardBell Laptop, detected like Spanish-ISO, "Ins" key is remaped this way:

... : ApplePS2Keyboard: sending key e052=92
and function like a EJECT cd.

On Spanish Apple USB Keyboard the eject key is:
: KeyRemap4MacBook --Debug-- KeyboardSpecialEventCallBack [ caught]: eventType 10, flags 0x00000000, key 0x000e, flavor 14, guid -1, repeat = 0

why two keys for EJECT?. I can´t remap INS key to PC_INSERT on KeyRemap4MacBook, not detect scan code 92.

I use INS key on virtual machines, linux console and RDP connections if no better to map this key to deadkey?

I try to swap CapsLock and Escape, but something went wrong.

Hey,

I just cloned the newest version of this code.

I am a Vimer, What I want to do is to swap Caps Lock and Escape. So I followed you code, and simply made some changes :

Enveriments:
  • Xcode 5.0.1
  • Mac 64-bit
  • Windows Version Chameleon 2246
  • no dsdt
VoodooPS2Keyboard.cpp
#define kSwapCapsLockLeftControl            "Swap capslock and left control"
#define kSwapCapsLockEscape                 "Swap capslock and escape" 
#define kSwapCommandOption                  "Swap command and option"

    setProperty(kSwapCapsLockLeftControl, xml->isTrue() ? kOSBooleanTrue : kOSBooleanFalse);
}

//////////////////////////// ooops added ////////////////////////////
xml = OSDynamicCast(OSBoolean, dict->getObject(kSwapCapsLockEscape));                   
if (xml) {
    if (xml->isTrue()) {
        _PS2ToADBMap[0x3a]  = _PS2ToADBMapMapped[0x01];
        _PS2ToADBMap[0x01]  = _PS2ToADBMapMapped[0x3a];
    }
    else {
        _PS2ToADBMap[0x3a]  = _PS2ToADBMapMapped[0x3a];
        _PS2ToADBMap[0x01]  = _PS2ToADBMapMapped[0x01];
    }
    setProperty(kSwapCapsLockEscape, xml->isTrue() ? kOSBooleanTrue : kOSBooleanFalse);
} 
//////////////////////////// until here ////////////////////////////

xml = OSDynamicCast(OSBoolean, dict->getObject(kSwapCommandOption));

And also these three plist files:

VoodooPS2Keyboard-Breakless-Info.plist,
VoodooPS2Keyboard-RemapFN-Info,
VoodooPS2Keyboard-Info.plist

Then, I choose All scheme and run, no any errors or warnings, build result:

Replace VoodooPS2Controller.kext with the one built just now, also VoodooPS2Daemon ,synapticsconfigload and VoodooPS2synapticsPane.prefPane

After repair kext premissions, update system cache, reboot with -f

I found that the feature I want does work, but there are something wrong with other keyremaps, for example

  • Swipe Up becomes to ⌘↑(command up)
  • Swipe Down becomes to ⌥↓ (option down)
  • Command Shift 3, 4 does not work either

but I didn't even touch that part of code or setting.

This is all what I did, is there something wrong or miss that leads to a mess?
Also, would you please add the feature for Vimers in the next release of VoodooPS2, thanks!

Can't turn on touchpad using Fn+F7

I accidentally turned off the touchpad using Fn+F7, but can't turn it on anymore. Any fix? I'm using Acer Aspire 4738G, with Synaptics touchpad.
BTW, 3-finger function is not available.

Synaptics Speed

Hey RehabMan, my trackpack is moving slowly compared to how it performed in windows (even with full speed set in system settings), it is a Synaptics and I use your driver, is there any way for me to make it faster? I mean, chenging some var in the source or anything?

thanks!

alps acer no multitouch

Hi, I get simple mouse fonction and this:
ps2bl: KKCL, KKCM, KKQC methods not found in DSDT
VoodooPS2SynapticsTouchPad Version 1.8.9 loaded...
ApplePS2SynapticsTouchPad::probe entered...
VoodooPS2Trackpad: Identify bytes = { 0x0, 0x0, 0x64 }
VoodooPS2Trackpad: Identify TouchPad command returned incorrect byte 2 (of 3): 0x00
ApplePS2SynapticsTouchPad::probe leaving.
ApplePS2SentelicFSP::probe entered...

ApplePS2SynapticsTouchPad::probe leaving.
ApplePS2SentelicFSP::probe entered...
ApplePS2SentelicFSP::probe leaving.

ApplePS2ALPSGlidePoint::probe entered...

ApplePS2Keyboard::start leaving.
E7: { 0x73, 0x03, 0x50 } E6: { 0x00, 0x00, 0x64 }ALPS Device? no
ApplePS2ALPSGlidePoint::probe leaving.
VoodooPS2Mouse Version 1.8.9 loaded...

Dragging not working on TrackPoint (ThinkPad X200s)

For some reason, trying to drag a window around only works sometimes - it appears that the times it does not work, the initial click is being repeated a few times a second while the button is being held down. After about 10 tries (it does vary) it works for the duration the button is held down and then goes back to the repeated clicking for the next press.

Works fine with an external USB mouse, so I'm thinking this is a driver issue.

This model does not have an internal trackpad, only the TrackPoint unlike other issues that have been reported.

Problems dragging windows with trackpoint on Thinkpad X220

Hey,

I've tried the newest version and I have problems dragging items around with the trackpoint. Every third time on average the click before the dragging is not registered properly and thus the cursor moves away without the window.

When I attach an external mouse, it works as expected, so I suspect the problem is with this driver.

Best

nika

32 bits build

Hi,

is there a 32 bits build of release 1.7.7 ?

Thanks,
Regards.

New Probook mapping

Here are some new model for mapping, can you add them?

                    <string>ProBook-87;ProBook 450 G1</string>
                    <key>1949</key>
                    <string>ProBook-87;ProBook 450 G0</string>
                    <key>198F</key>
                    <string>ProBook-87;EliteBook 840 G1</string>

With the u430 repo (and DSDT patches) F9 not mapped correctly with ACPI path

More info here: http://www.tonymacx86.com/mavericks-laptop-support/87182-new-voodoops2controller-keyboard-trackpad-clickpad-support-80.html#post991438

The "ACPI path" F9 key was not correctly mapped to F9 when "Use all F1, F2.." was selected (Note: My BIOS settings have Fn+fkey vs. fkeys reversed as I usually run without this option, and I wanted Windows to be the same as OS X).

But enabling it to map e0f2=65 causes other problems...

In particular, for some crazy reason... this particular set of Notify events cause the keys make/break to be generated out of order. It seems as if Notify as it relates to ::message is not thread synchronized or can be reentrant when calling back out to ACPI (I suspect it is just a multithread sync issue, as you'll see below). Hence the possibility while processing one Notify in ::message, another comes in. This cause F9 to endlessly repeat (because it was seen as key up followed by key down).

Inserting a Sleep between the Notify invocations works...

# _Q94 (Fn+F9) is used to turn on/off screen
into method label _Q94 parent_label EC0 set_label begin QQ94 end;
into device label EC0 insert
begin
Method (_Q94, 0, NotSerialized)\n
{\n
    // e069 will be mapped to either F10 (44) or e0f0 or e0f2\n
    Notify (PS2K, 0x0269)\n
    Sleep(10)\n 
    Notify (PS2K, 0x02e9)\n
}\n
end;

Note that Sleep(1) did not work, but Sleep(10) was enough. It allows the first Notify to be processed in ::message before the second one starts...

But I'll implement a different solution...

Will change this to:

# _Q94 (Fn+F9) is used to turn on/off screen
into method label _Q94 parent_label EC0 set_label begin QQ94 end;
into device label EC0 insert
begin
Method (_Q94, 0, NotSerialized)\n
{\n
    // e069 will be mapped to either F10 (44) or e0f0 or e0f2\n
    Notify (PS2K, 0x0469)\n
}\n
end;

And change ::message to send both the make and break codes when it gets 0x03xx or 0x04xx.

Incorrect key mapping on Spanish-ISO PS2 keyboard

In a PackardBell Laptop, detected like Spanish-ISO, key º and < have been exchanged.

PackardBell Laptop builtin PS2 Keyboard

debug output:

Pressing º
Mar 31 12:06:52 flxs-MacBook-Pro kernel[0]: ApplePS2Keyboard: sending key 29=32
Mar 31 12:06:52 flxs-MacBook-Pro kernel[0]: KeyRemap4MacBook --Debug-- KeyboardEventCallback [ caught]: eventType 10, flags 0x00000000, key 0x0032, kbdType 3, repeat = 0
EventCallback [sending]: eventType 10, flags 0x00020002, key 0x001b, kbdType 3, repeat = 0

Pressing <
Mar 31 12:03:47 flxs-MacBook-Pro kernel[0]: ApplePS2Keyboard: sending key 56=a
Mar 31 12:03:47 flxs-MacBook-Pro kernel[0]: KeyRemap4MacBook --Debug-- KeyboardEventCallback [ caught]: eventType 10, flags 0x00000000, key 0x000a, kbdType 3, repeat = 0

Tested same keys on a Spanish Apple USB Keyboard:

debug output:

Pressing º
Mar 31 12:05:07 flxs-MacBook-Pro kernel[0]: KeyRemap4MacBook --Debug-- KeyboardEventCallback [ caught]: eventType 10, flags 0x80000000, key 0x000a, kbdType 35, repeat = 0

Pressing <
Mar 31 12:02:03 flxs-MacBook-Pro kernel[0]: KeyRemap4MacBook --Debug-- KeyboardEventCallback [ caught]: eventType 10, flags 0x80000000, key 0x0032, kbdType 35, repeat = 0

Then I guess that correct behavior is:
ApplePS2Keyboard: sending key 29=a
ApplePS2Keyboard: sending key 56=32

unware if this affect other keyboard layouts.

Synaptics PointStyk not working on HP EliteBook 8570w (possibly others)

While Synaptics' pointing stick on ThinkPads seems to work just fine (having tested it with a T61p), the same hardware on HP laptops doesn't seem to be recognized (in particular, on my Elitebook 8570w). It'll "function" if VoodooPS2Mouse is loaded instead of VoodooPS2Trackpad, but with one irritating quirk (click-and-drag doesn't work) and it also makes the Trackpad a hypersensitive minefield (due to the lack of palm compensation), so this is unfortunately not an acceptable workaround. :(

Since the hardware does sort-of function with existing drivers, is there any possible way to support this particular input device? Let me know if there's any information or testing you need done to make this happen and I'd be happy to help make it work. (I'd try working it myself, but my C++ experience is minimal at best. :( )

HP Envy 15-j063cl keymap

Please add this machine to Keyboard-Info.plist
<key>1963</key> <string>Haswell-Envy;HP Envy 15-j063cl</string>

Jumping on top and bottom 1/3 of trackpad - Probook 4330s

I've been using the trackpad a bit more lately (been using external mouse and monitor mainly) and I have noticed that if I move my finger slowly in the vertical direction the cursor seems to accelerate much faster (like a jump) at the the top and bottom 1/3 of the trackpad but the middle 1/3 is fine and the horizontal direction is fine.

It only appears to happen with 1 finger cursor and not the 2 finger scrolling. If I change the Tracking Speed settings in Sys Pref and use the slowest setting, the cursor speed is consistent across the entire vertical direction of the trackpad. The higher I set the Tracking Speed, the larger the acceleration jump in the top and bottom 1/3 of the trackpad, so if the setting is put on the fastest setting the cursor 'jumps' 1/4 of my screen.

original post at tonymac
http://www.tonymacx86.com/hp-probook/75649-new-voodoops2controller-keyboard-trackpad-130.html#post651264

Lenovo G580 FN keys

Hello. My laptop is a Lenovo G580 I installed your latest VoodooPS2Controller.kext. everything works, except the brightness adjustment on the standard FN keys. I have FN+INS, FN+HOME. And should be FN+UN, FN+DOWN. How do I change it. As I understand it, the editing Info.plist VoodooPS2Keyboard.kext. Please tell me. Thanks in advance hackosx64.

New ThinkPad Trackpads

New Lenovo Thinkpads (t431, t440, etc.) remove standalone left/right buttons for the trackpoint and replace them with a trackpad that you can press down on the top left, top middle or or top right (see http://www.thinkscopes.com/thinkpad-buttonless-trackpoint/ for a better description and pictures).

I have a t440s and the new trackpad doesn't work well with this driver. The biggest issue is if I press down the top of the trackpad (so same as pressing down left mouse button) and then move the trackpoint, the driver interprets that as click, move, click, move, click, move, etc. So its impossible to use the trackpoint to drag a window, scrollbar, or anything.

I'm fairly handy with C++ and XCode, so I can try and put a patch together. However, I'm not familiar with debugging kernel extensions nor with the VoodoPS2Controller. If you could provide a bit of guidance on where in the driver to look (ie, where are move events from the trackpoint generated and where do they interact with trackpad events), I can take a look. I am quite motivated to get this working on my thinkpad.

Thanks

Synaptics ClickPad won't work

Hello!

I have ultrabook with Synaptics ClickPad and PS2 keyboard.
I don't know clickpad on ps2 or USB..
Keyboard works fine, but clickpad not responds to any clicks or touches.

This is my startup log lines:
05.05.14 12:23:47,000 kernel[0]: ApplePS2Controller: Timed out on mouse input stream.
05.05.14 12:23:47,000 kernel[0]: VoodooPS2SynapticsTouchPad Version 1.8.11 loaded...
05.05.14 12:23:47,000 kernel[0]: VoodooPS2Trackpad: Identify TouchPad command failed
05.05.14 12:23:47,000 kernel[0]: ApplePS2Controller: Timed out on mouse input stream.
05.05.14 12:23:47,000 kernel[0]: ApplePS2Controller: Timed out on mouse input stream.
05.05.14 12:23:47,000 kernel[0]: ApplePS2Controller: Timed out on mouse input stream.
05.05.14 12:23:47,000 kernel[0]: ApplePS2Controller: Timed out on mouse input stream.
05.05.14 12:23:47,000 kernel[0]: ApplePS2Controller: Timed out on mouse input stream.
05.05.14 12:23:47,000 kernel[0]: ApplePS2Controller: Timed out on mouse input stream.
05.05.14 12:23:47,000 kernel[0]: ApplePS2Controller: Timed out on mouse input stream.
05.05.14 12:23:47,000 kernel[0]: ApplePS2Controller: Timed out on mouse input stream.
05.05.14 12:23:47,000 kernel[0]: ApplePS2Controller: Timed out on mouse input stream.
05.05.14 12:23:47,000 kernel[0]: VoodooPS2Mouse Version 1.8.11 loaded...
05.05.14 12:23:47,000 kernel[0]: ApplePS2Controller: Timed out on mouse input stream.

ACPI methods RKAx - pass goingDown as Arg0 or don't call on up

Right now RKAx methods for special scan codes e0f0-e0ff are called on make and break. Either add Arg0 = goingDown so that implementations can check or don't call on up.

My preference: Add Arg=goingDown so than an implementation can do something on break if they want.

Trackpad/Trackpoint not working after sleep

Hello,
a few days ago I installed your PS2 Controller on my Thinkpad using your How-To.

But somehow my trackpad and trackpoint are sometimes not working after sleep.
The keyboard still works.

Is this bug already known?
Is there a solution?

Thanks,
Simon

New id for HP 8570p

Please add this for HP 8570p
<key>17A9</key> <string>ProBook-87;ProBook 8570p</string>

Invalid character in plist file caused kext un-loadable in 10.10

Hi,
I think I found a issue in the Info.plist file of the VoodooPS2Keyboard.kext.
https://github.com/RehabMan/OS-X-Voodoo-PS2-Controller/blob/master/VoodooPS2Keyboard/VoodooPS2Keyboard-Info.plist

Line 393 in current version:
e06e;REVIEW: temporary for case that macro inversion doesn't work...

The character ' in doesn't can cause problems when try to load the kext:
com.apple.kextcache[230]: Can't read info dictionary for VoodooPS2Keyboard.kext: IOCFUnserialize: syntax error near line 130.

Tested in 10.10 and the VoodooPS2Keyboard can not be loaded. After removing this particular char in that line, everything works fine.

Thank you for such a great kext!

Best regards.

Can't use multi touch on trackpad

So yeah It might just be me doing something wrong but cant so any multi finger interactions with the trackpad. The laptop is a Lenovo l430

sony vaio vpcf11pfx/h (alps touchpad and keyboard)

sony vpcf11pfx/h issues:

Touchpad (ALPS):

  • double tap didn't work in right way - can't normally select text and drag windows (MAJOR ISSUE)
  • two finger scroll didn't work - i don't know if it's possible on that trackpad

Keyboard:

  • it looks like keyboard not visible for os x, keyboard works but system every time tell me that "No keyboards have been found. Make sure your keyboard is discoverable." and Bluetooth Setup Assistant ask me to connect bluetooth keyboard. Can be fixed with workaround:
    • sudo defaults write /Library/Preferences/com.apple.Bluetooth BluetoothAutoSeekKeyboard '0'
    • sudo defaults write /Library/Preferences/com.apple.Bluetooth BluetoothAutoSeekPointingDevice '0'
  • left WIN key and ALT key swapped and right ALT key and MENU key swapped
    • can be fixed in Preferences/Keyboard with Modifier keys override
    • can be fixed in Preferences/Keyboard with Modifier keys override
  • pause/break works like brightness plus
  • brightness minus (Fn + F3) and brightness plus (Fn + F4) didn't work

Is there any way to dump keys and remap them in plist?

Drag Lock

Hi, i don't know if this is a bug but: in trackpad prefpanel (i have a synaptics) also if DRAG LOCK option is not flagged, result is like if that option is instead enable. So if that option is enable or not is not different. It's like the DRAG LOCK option is always on true.

Is there a fix? I can also compile myself, thank you..

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.