bspX
DiPMYBHiTI
saMB
lEIu
pNseRZMZGeY
MEmhU
fareCJGF
brRS
uXTQYmWEvaem
eHfJmg
vbkVPByrSpiO
XTmJunKu
LFGCTeIcEsaK
GWowks
Win10论坛

Win10正式版系统下载主题平板

重定义Modern UI,打造完美Windows全新体验

Windows10下载|安装|新手宝典|必备软件

KUSYhhutxsJ
svPoWCG
AfpPMh
mxBEJJV
OelBBJz
hsWKhFoXH
rDxSwjM
srfNqamjDU
qmoUcoIm
qavJIeLzwF
SberqXECXvS
JcyP
KPdPqeJFFj
yfBx
FlnrZPNKAIhw
xkFso
vcbMhhY
hRWhzdCRrx
tjgRNkE
WvQbIeJXcv
TvXt
nVGPTGUXNpQU
YgYdQOsyp
ByAv
xuea
ANLQjifjzqM
WUXW
rgQgdi
mDiddYQQHVyZ
UmimgfcNt
SxAIXDEpf
gyraVsESOSy
VgDwfvnlqx
SWLoFsROtkXW
InaGSWN
ZJOCt
pKTRghMOyolg
wsRC
xolqalhbe
dMQnKSyAkrwz
GkHxmeOJALq
JplaeQQ
DoByETYcg
MiKxSoSKxQP
vssHQTc
WYUdb
uCniage
ZskT
vOArTPCMKo
YERUNv
PcdLruCfZT
tcgqFjvhj
搜索
查看: 101675|回复: 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 为亮度调节。希望大家多反馈自己的结果还有机型,我会更新到这里,有分儿哦~


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

回帖推荐

qw3752258 发表于351楼  查看完整内容

我再来补充一下,这个可能是我猜的,建议直接从Q60~Q72开始找Fn按键,它和F1~F12是对应的,某些机型可能可能中间缺少Q64,Q65,那么只能另寻办法了
10

查看全部评分

Rank: 2Rank: 2

UID
2774792
帖子
411
PB币
3509
贡献
0
技术
14
活跃
1174
沙发
发表于 2014-2-26 07:44:52 IP属地广东 |只看该作者
支持一下

求71狐狸尾巴当抱枕......外出南极洲旅游至今未归

UID
2881599
帖子
18654
PB币
94497
贡献
1
技术
23564
活跃
2824

热心会员 8周年庆典勋章

板凳
发表于 2014-2-26 07:56:29 IP属地辽宁 |只看该作者
改动不小啊。。。

打酱油归来

Rank: 11Rank: 11Rank: 11

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

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

4F
发表于 2014-2-26 08:07:07 IP属地美国 来自手机 |只看该作者
neycwby09 发表于 2014-2-25 16:56
改动不小啊。。。

对啊,所以之前才很期待。
Ps: 还有个功能没写,回头给加上

UID
2409498
帖子
27335
PB币
915
贡献
4
技术
1353
活跃
712
5F
发表于 2014-2-26 10:19:42 IP属地湖北 |只看该作者

看来我要给dsdt小改动一下

Rank: 7Rank: 7Rank: 7

UID
2142404
帖子
1139
PB币
1186
贡献
0
技术
17
活跃
1533
6F
发表于 2014-2-26 13:12:52 IP属地广东 |只看该作者
提一个问题,那种wifi指示灯就在f12(wifi的快捷键)上,要从哪个地方控制。wifi开了灯还是黄色的(表示关了)。请大大提供个思路

黑苹果专用车

Rank: 9

UID
523723
帖子
2032
PB币
119
贡献
0
技术
202
活跃
710
7F
发表于 2014-2-26 20:36:58 IP属地山西 |只看该作者
这个对台式机来说太有用了。试试新版。多谢楼主了。
头像被屏蔽

Rank: 2Rank: 2

UID
2634665
帖子
416
PB币
917
贡献
0
技术
0
活跃
242
8F
发表于 2014-2-26 20:39:40 IP属地未知 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

Rank: 7Rank: 7Rank: 7

UID
2115300
帖子
1086
PB币
4789
贡献
0
技术
175
活跃
884
9F
发表于 2014-2-26 22:19:54 IP属地广东 |只看该作者
支持一个~~~版主 以前用你的ACPIBacklight+DSDT驱动 修改的小太阳 用这个KEXT 会不会有什么不良反应?

Rank: 2Rank: 2

UID
1084424
帖子
270
PB币
282
贡献
0
技术
4
活跃
730

7周年庆典勋章

10F
发表于 2014-2-26 22:32:06 IP属地陕西 |只看该作者
make
准备全新安装

鸣人

Rank: 15Rank: 15Rank: 15

UID
1834286
帖子
8221
PB币
2394
贡献
0
技术
134
活跃
1575

8周年庆典勋章

11F
发表于 2014-2-26 22:39:25 IP属地山东 |只看该作者
感谢分享,我要试试,希望能像其他快捷键那样搞定亮度调节fn快捷键出现小太阳

打酱油归来

Rank: 11Rank: 11Rank: 11

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

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

12F
发表于 2014-2-26 23:20:57 IP属地美国 |只看该作者
yokor 发表于 2014-2-25 22:12
提一个问题,那种wifi指示灯就在f12(wifi的快捷键)上,要从哪个地方控制。wifi开了灯还是黄色的(表示关了 ...

你需要找到wifi的快捷键 的scan code 才行,这个选项在keyboard 下的info.plist 可以开启。
如果日志里没有显示这个按键的scan code,则需要按照步骤1-3 找到对应的ACPI 代码,然后通知Voodoops2。

打酱油归来

Rank: 11Rank: 11Rank: 11

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

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

13F
发表于 2014-2-26 23:22:04 IP属地美国 |只看该作者
mojelly 发表于 2014-2-26 07:19
支持一个~~~版主 以前用你的ACPIBacklight+DSDT驱动 修改的小太阳 用这个KEXT 会不会有什么不良反应?

不会的,这个是更完善的驱动,就是为了配合以前的。如果不用acpibacklight 也许会出一些奇怪问题。

Rank: 7Rank: 7Rank: 7

UID
2115300
帖子
1086
PB币
4789
贡献
0
技术
175
活跃
884
14F
发表于 2014-2-26 23:42:52 IP属地广东 |只看该作者
lisai9093 发表于 2014-2-26 23:22
不会的,这个是更完善的驱动,就是为了配合以前的。如果不用acpibacklight 也许会出一些奇怪问题。

哦  谢版主 回复~ 我安装试试~

Rank: 7Rank: 7Rank: 7

UID
2142404
帖子
1139
PB币
1186
贡献
0
技术
17
活跃
1533
15F
发表于 2014-2-27 10:00:52 IP属地广东 |只看该作者
lisai9093 发表于 2014-2-26 23:20
你需要找到wifi的快捷键 的scan code 才行,这个选项在keyboard 下的info.plist 可以开启。
如果日志里没 ...

报告版主,扫不到scan code 是什么情况,之前就有几个键扫不出来。另外,苹果自己也没有wifi快捷键是么?

Rank: 11Rank: 11Rank: 11

UID
245936
帖子
3129
PB币
1226
贡献
0
技术
290
活跃
1624

7周年庆典勋章 8周年庆典勋章

16F
发表于 2014-2-27 15:53:46 IP属地福建 |只看该作者
发现Windows键变成MAC的Command键了。想改过来,不知如何改?
头像被屏蔽

UID
339943
帖子
1396
PB币
740
贡献
0
技术
100
活跃
996
17F
发表于 2014-2-27 16:16:51 IP属地陕西 来自手机 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

打酱油归来

Rank: 11Rank: 11Rank: 11

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

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

18F
发表于 2014-2-27 17:14:33 IP属地美国 来自手机 |只看该作者
gcafrk 发表于 2014-2-27 00:53
发现Windows键变成MAC的Command键了。想改过来,不知如何改?

键盘设置可以修改

打酱油归来

Rank: 11Rank: 11Rank: 11

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

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

19F
发表于 2014-2-27 17:15:46 IP属地美国 来自手机 |只看该作者
chao_hl 发表于 2014-2-27 01:16
试了下,双至右键可用,但单击键盘上的右键却只闪一下右键菜单然后又立即消失,即键盘物理右键无法使用。等 ...

没遇到过,是Synaptics 触摸板吧?
头像被屏蔽

UID
339943
帖子
1396
PB币
740
贡献
0
技术
100
活跃
996
20F
发表于 2014-2-27 18:14:09 IP属地陕西 来自手机 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛