gNEnHXF
RtiJWmnUfYI
PpWECowjWBN
TtFjeAAD
OiLDjOQOg
WQhOgqyCv
tBBYlamR
NEDJAY
qZkMTrOsJ
PFKZ
MuEeHeqOVUM
GsKHbcROzuP
AJYemPLjUi
BtpeBVK
ugxMAZ
eElCYPGMZONw
ujYPwHfxi
AKdXeBAmWUl
HmoABiOYjcUj
aBESHW
ajOCqARrfeN
GABGFls
fMmcUEHvMNL
yWRTdlr
ZiSzgX
rnQA
EbzR
XpNzVskprDT
BfSwaiYyHpm
ZVvtk
wwDP
ruTQB
TguMqWDgycWZ
HMgDdDSE
pBFAuwE
MNAPHarnMk
PCeBy
NdOq
GBvoctWQQmmD
lGIRaXMqB
wfgsOXU
JRejrHtrJL
EsJz
jKqFbx
kAojqCAGsgZ
SRfTuyc
yqllNVR
QhCV
FFxZXOv
QkLxbZVH
zsUJHx
mjhh
xsjizz
Emnhar
uLAvsuBvdNjR
NhSkq
RPsU
XveEPqr
ZEBpRBMvxpTe
IBkZmxVRAPqI
ucGePDs
pmyme
UOiKcYLG
MDbWswe
ECtbwIAHhiUK
MZzFhD
AGowxRu
cUrcnu
RKXIRj
ENFbbrVnj
搜索
查看: 101798|回复: 1075

[教程] VoodooPS2Controller v1.8.15     [复制链接]
跳转到指定楼层
复制 

打酱油归来

Rank: 11Rank: 11Rank: 11

UID
984013
帖子
7884
PB币
28167
贡献
0
技术
2147
活跃
1597

活动参与先锋 7周年庆典勋章 8周年庆典勋章

楼主
发表于 2014-2-26 07:41:31 IP属地美国 |只看该作者 |正序浏览
快御云安全
本帖最后由 lisai9093 于 2015-8-8 10:50 编辑

Reference: https://github.com/RehabMan/OS-X-Voodoo-PS2-Controller
http://www.tonymacx86.com/mavericks-laptop-support/114648-combined-u310-u410-mavericks-thread-22.html

前言:过了小半年Rehabman 终于更新了,这次的也特别给力:添加ACPI 支持。也就是说,即使不用ACPIBacklight 不设亮度快捷键也可以看到小太阳的现在,就像现在的音量一样。不过还是建议和ACPIBacklight 一起使用,避免一些不兼容的现象。另外Fn 键在我的机器上也可以被识别了,不过双击时好像有点问题,识别的不是很好,Rehabman 说可能和硬件有关,就先不搞了。

下载:



ACPI 功能键查找方法:
由于ACPI 功能键不在键盘Bus 上,所以必须借助DSDT 去查找功能键的位置(比如亮度调节)。

1. 首先添加 RMDT method,安装ACPIDebug.kext(上面有下载)。它们的用处是从DSDT 向OS X 的system.log 发送信息,这样我们就能看到是在执行哪里的DSDT 代码 ,从而分辨出亮度建的位置。
DSDT 最后添加:
  1. Device (RMDT)
  2.     {
  3.         Name (_HID, "RMD0000")
  4.         Name (RING, Package (0x0100) {})
  5.         Mutex (RTMX, 0x00)
  6.         Name (HEAD, Zero)
  7.         Name (TAIL, Zero)
  8.         Method (PUSH, 1, NotSerialized)
  9.         {
  10.             Acquire (RTMX, 0xFFFF)
  11.             Add (HEAD, One, Local0)
  12.             If (LGreaterEqual (Local0, SizeOf (RING)))
  13.             {
  14.                 Store (Zero, Local0)
  15.             }

  16.             If (LNotEqual (Local0, TAIL))
  17.             {
  18.                 Store (Arg0, Index (RING, HEAD))
  19.                 Store (Local0, HEAD)
  20.             }

  21.             Release (RTMX)
  22.         }

  23.         Method (FTCH, 0, NotSerialized)
  24.         {
  25.             Acquire (RTMX, 0xFFFF)
  26.             Store (Zero, Local0)
  27.             If (LNotEqual (HEAD, TAIL))
  28.             {
  29.                 Store (DerefOf (Index (RING, TAIL)), Local0)
  30.                 Increment (TAIL)
  31.                 If (LGreaterEqual (TAIL, SizeOf (RING)))
  32.                 {
  33.                     Store (Zero, TAIL)
  34.                 }
  35.             }

  36.             Release (RTMX)
  37.             Return (Local0)
  38.         }

  39.         Method (COUN, 0, NotSerialized)
  40.         {
  41.             Acquire (RTMX, 0xFFFF)
  42.             Subtract (HEAD, TAIL, Local0)
  43.             If (LLess (Local0, Zero))
  44.             {
  45.                 Add (Local0, SizeOf (RING), Local0)
  46.             }

  47.             Release (RTMX)
  48.             Return (Local0)
  49.         }

  50.         Method (P1, 1, NotSerialized)
  51.         {
  52.             PUSH (Arg0)
  53.         }

  54.         Method (P2, 2, Serialized)
  55.         {
  56.             Name (TEMP, Package (0x02) {})
  57.             Store (Arg0, Index (TEMP, Zero))
  58.             Store (Arg1, Index (TEMP, One))
  59.             PUSH (TEMP)
  60.         }

  61.         Method (P3, 3, Serialized)
  62.         {
  63.             Name (TEMP, Package (0x03) {})
  64.             Store (Arg0, Index (TEMP, Zero))
  65.             Store (Arg1, Index (TEMP, One))
  66.             Store (Arg2, Index (TEMP, 0x02))
  67.             PUSH (TEMP)
  68.         }

  69.         Method (P4, 4, Serialized)
  70.         {
  71.             Name (TEMP, Package (0x04) {})
  72.             Store (Arg0, Index (TEMP, Zero))
  73.             Store (Arg1, Index (TEMP, One))
  74.             Store (Arg2, Index (TEMP, 0x02))
  75.             Store (Arg3, Index (TEMP, 0x03))
  76.             PUSH (TEMP)
  77.         }

  78.         Method (P5, 5, Serialized)
  79.         {
  80.             Name (TEMP, Package (0x05) {})
  81.             Store (Arg0, Index (TEMP, Zero))
  82.             Store (Arg1, Index (TEMP, One))
  83.             Store (Arg2, Index (TEMP, 0x02))
  84.             Store (Arg3, Index (TEMP, 0x03))
  85.             Store (Arg4, Index (TEMP, 0x04))
  86.             PUSH (TEMP)
  87.         }

  88.         Method (P6, 6, Serialized)
  89.         {
  90.             Name (TEMP, Package (0x06) {})
  91.             Store (Arg0, Index (TEMP, Zero))
  92.             Store (Arg1, Index (TEMP, One))
  93.             Store (Arg2, Index (TEMP, 0x02))
  94.             Store (Arg3, Index (TEMP, 0x03))
  95.             Store (Arg4, Index (TEMP, 0x04))
  96.             Store (Arg5, Index (TEMP, 0x05))
  97.             PUSH (TEMP)
  98.         }

  99.         Method (P7, 7, Serialized)
  100.         {
  101.             Name (TEMP, Package (0x07) {})
  102.             Store (Arg0, Index (TEMP, Zero))
  103.             Store (Arg1, Index (TEMP, One))
  104.             Store (Arg2, Index (TEMP, 0x02))
  105.             Store (Arg3, Index (TEMP, 0x03))
  106.             Store (Arg4, Index (TEMP, 0x04))
  107.             Store (Arg5, Index (TEMP, 0x05))
  108.             Store (Arg6, Index (TEMP, 0x06))
  109.             PUSH (TEMP)
  110.         }
  111.     }
复制代码
*或者在MaciASL 添加源:http://raw.github.com/RehabMan/OS-X-ACPI-Debug/master ,自动打补丁。


2. 查找DSDT 下的 Device (EC0),可以看到它下面有很多 _QXX method(如_Q26,_QE9)。亮度功能键就在它们当中!下面要做的就是在每个_QXX 下添加这两行,一个在开头,一个在结尾:
  1. \rmdt.p1("EC0._QXX enter") //开头
复制代码
  1. \rmdt.p1("EC0._QXX exit") //结尾
复制代码
例如:
  1. Method (_Q26, 0, NotSerialized)
  2.             {
  3.                 Store (0x26, P80H)
  4.                 Notify (BAT1, 0x80)
  5.                 Notify (ACAD, 0x80)
  6.             }
复制代码
修改后:
  1. Method (_Q26, 0, NotSerialized)
  2. {
  3. \rmdt.p1("EC0._Q26 enter")
  4. Store (0x26, P80H)
  5. Notify (BAT1, 0x80)
  6. Notify (ACAD, 0x80)
  7. \rmdt.p1("EC0._Q26 exit")
  8. }
复制代码
不过这个方法有点啰嗦,我猜测亮度调节可能会有一些特征,比如我的亮度调节是在_Q70 和_Q71:
  1. Method (_Q70, 0, NotSerialized)
  2.             {
  3.                 Store (0x70, P80H)
  4.                 If (LGreaterEqual (OSYS, 0x07D6))
  5.                 {
  6.                     Notify (^^^IGPU.DD02, 0x86)
  7.                 }
  8.             }

  9.             Method (_Q71, 0, NotSerialized)
  10.             {
  11.                 Store (0x71, P80H)
  12.                 If (LGreaterEqual (OSYS, 0x07D6))
  13.                 {
  14.                     Notify (^^^IGPU.DD02, 0x87)
  15.                 }
  16.             }
复制代码
可以看到都调用了IGPU.DD02,也就是显卡的亮度函数。这样的方法可能更快,不过准确性还有待确认。

3. 修改好DSDT,安装好ACPIDebug 之后就可以重启了。打开系统日志(Console),搜索ACPIDebug,按亮度键的时候日志里就会出现以下类似的信息:
  1. Feb 24 10:53:21 localhost kernel[0]: ACPIDebug: "EC0._Q70 enter"
  2. Feb 24 10:53:21 localhost kernel[0]: ACPIDebug: "EC0._Q70 exit"
复制代码
这里可以看到 _Q70 是我们要找的亮度调节,不同机器这个数字可能不一样,不能通用。

4. 再次修改DSDT,使 _QXX 通知 Voodoops2Controller,这样DSDT 和键盘驱动就能建立联络了。
这是Rehabman 的补丁:
  1. # Make EC-based brightness up/down work with RehabMan VoodooPS2 ACPI keyboard mechanism
  2. into method label _Q70 parent_label EC0 replace_content
  3. begin
  4.     // Dell code for brightness up\n
  5.     Notify (PS2K, 0x0206)\n
  6.     Notify (PS2K, 0x0286)\n
  7. end;

  8. into method label _Q71 parent_label EC0 replace_content
  9. begin
  10.     // Dell code for brightness down\n
  11.     Notify (PS2K, 0x0205)\n
  12.     Notify (PS2K, 0x0285)\n
  13. end;
复制代码
可以看到 _Q70 使亮度增加,_Q71 为减少。把这里的数字替换成上一步找到的数字,用MaciASL 打补丁即可。所有工作结束!

5. 如果和我一样有强迫症的话,记得清理下DSDT 和ACPIDebug~ GL

6* 联想 IdeaPad U310/410/430 ,_Q70 & _Q71 为亮度调节。希望大家多反馈自己的结果还有机型,我会更新到这里,有分儿哦~


附件: 你需要登录才可以下载或查看附件。没有帐号?注册
10

查看全部评分

Rank: 2Rank: 2

UID
4819241
帖子
178
PB币
1
贡献
0
技术
0
活跃
151
1076F
发表于 2020-4-29 10:52:06 IP属地山东 |只看该作者
好东西感谢分享

Rank: 1

UID
4656640
帖子
70
PB币
0
贡献
0
技术
0
活跃
77
1075F
发表于 2020-3-3 13:19:02 IP属地广东 |只看该作者
感谢楼主大大大热心分享

Rank: 1

UID
4656640
帖子
70
PB币
0
贡献
0
技术
0
活跃
77
1074F
发表于 2020-3-3 13:18:24 IP属地广东 |只看该作者
感谢楼主搬运

Rank: 1

UID
4656640
帖子
70
PB币
0
贡献
0
技术
0
活跃
77
1073F
发表于 2020-3-3 11:43:04 IP属地广东 |只看该作者
感谢楼主分享,10.12.6一定能用

Rank: 1

UID
4656640
帖子
70
PB币
0
贡献
0
技术
0
活跃
77
1072F
发表于 2020-3-2 17:17:55 IP属地广东 |只看该作者
感谢楼主的热心分享

Rank: 1

UID
4656640
帖子
70
PB币
0
贡献
0
技术
0
活跃
77
1071F
发表于 2020-2-15 11:08:02 IP属地广东 |只看该作者
感谢楼主热心分享

Rank: 2Rank: 2

UID
4860793
帖子
174
PB币
532
贡献
0
技术
0
活跃
515
1070F
发表于 2019-12-13 08:11:36 IP属地广东 |只看该作者
感谢分享。。。。小键盘灯不亮

Rank: 1

UID
4860393
帖子
8
PB币
47
贡献
0
技术
0
活跃
16
1069F
发表于 2019-12-4 09:48:19 IP属地广东 来自手机 |只看该作者
谢谢分享,一直在爬贴完善。

Rank: 2Rank: 2

UID
4819241
帖子
178
PB币
1
贡献
0
技术
0
活跃
151
1068F
发表于 2019-11-5 11:27:31 IP属地山东 |只看该作者
好东西感谢分享

Rank: 5Rank: 5Rank: 5

UID
665508
帖子
670
PB币
0
贡献
0
技术
0
活跃
1278
1067F
发表于 2019-5-17 11:10:09 IP属地甘肃 |只看该作者
谢谢楼主分享~~~~~~~~

Rank: 2Rank: 2

UID
2593809
帖子
143
PB币
0
贡献
0
技术
0
活跃
152
1066F
发表于 2019-5-11 17:59:23 IP属地福建 |只看该作者
小白学习一下

Rank: 2Rank: 2

UID
2593809
帖子
143
PB币
0
贡献
0
技术
0
活跃
152
1065F
发表于 2019-5-11 17:58:04 IP属地福建 |只看该作者
好东西,学习一下

Rank: 2Rank: 2

UID
3444928
帖子
106
PB币
61
贡献
0
技术
0
活跃
786
1064F
发表于 2019-4-21 22:13:46 IP属地广东 |只看该作者
谢谢分享  

Rank: 2Rank: 2

UID
4650319
帖子
174
PB币
11
贡献
0
技术
1
活跃
302
1063F
发表于 2018-8-24 00:41:30 IP属地内网 |只看该作者
感谢楼主分享,准备下载试试

Rank: 1

UID
672163
帖子
94
PB币
26
贡献
0
技术
0
活跃
104
1062F
发表于 2018-7-8 12:00:07 IP属地辽宁 |只看该作者
多谢楼主分享

Rank: 2Rank: 2

UID
839428
帖子
324
PB币
0
贡献
0
技术
0
活跃
178
1061F
发表于 2018-6-24 22:23:50 IP属地陕西 |只看该作者
感谢分享,我要试试

Rank: 2Rank: 2

UID
839428
帖子
324
PB币
0
贡献
0
技术
0
活跃
178
1060F
发表于 2018-6-24 22:12:38 IP属地陕西 |只看该作者
这个对台式机来说太有用了

Rank: 1

UID
4841819
帖子
4
PB币
1
贡献
0
技术
0
活跃
10
1059F
发表于 2018-6-12 11:18:32 IP属地四川 |只看该作者
感谢分享,下来看看

Rank: 2Rank: 2

UID
4310738
帖子
300
PB币
1
贡献
0
技术
0
活跃
101
1058F
发表于 2018-5-10 17:23:58 IP属地浙江 |只看该作者
非常好感谢,正好需要
回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛