litaocomet 发表于 2017-6-27 02:50

关于键盘Fn加方向键设置亮度小太阳的问题

本帖最后由 litaocomet 于 2017-6-27 19:42 编辑



已经完美解决。ApplePS2SmartTouchPad.kext的定义稍有不同。
我的解决方案,从以前的步骤可以得到亮度Q71和Q70两个,然后IoRegistry查出键盘为PS2K,所以最后代码为:
#Edit methods _Q11 and _Q12 to interface with KBC0 (or PS2K in some systems),
into method label _Q71 replace_content
begin
// Brightness Down\n
Notify (PS2K, 0x20)\n
end;

into method label _Q70 replace_content
begin
// Brightness Up\n
Notify (PS2K, 0x10)\n
end;



目前的情况是,dsdt加入PNLF之后,亮度直接出现,可以调节并保存。
如图:


但是键盘上的默认的Fn + 方向左右键调节亮度不可用。于是我找了个usb键盘接到笔记本上,这时候可以在快捷键里面设置亮度调节,我设置了F9、F10为亮度调节快捷键,并能出现小太阳正常。
如图:


为了更加完美,我想还是用原来的Fn + 方向键来调节亮度,强迫症,伤不起啊。
于是,安装ACPIDebug,并加入补丁,用来捕获Fn + 方向左右键的数据。
得到:


于是按照介绍,如此设置了调节内容:


可是问题来了。没有任何效果啊,请问,Fn + 方向左右键不起作用!!!
请问,这里面该如何设置????


qiqisa 发表于 2017-6-27 16:35

白苹果上面fn+方向左右键是没任何反应的,请你知晓

心灵似水流年 发表于 2017-6-27 16:42

和你一样不会设置,现在设置了f4和f5

litaocomet 发表于 2017-6-27 18:41

qiqisa 发表于 2017-6-27 16:35 https://www.pcbeta.com/static/image/common/back.gif
白苹果上面fn+方向左右键是没任何反应的,请你知晓

白果当然没有。
因为亮度调节现在是acpi模式,并且正常,就是不能使用默认组合键,通过acpidebug.kext和加入ec事件patch来检测组合键返回值,并且得到了。所以下一步就是如何把这个返回值加入dsdt,修复默认组合键的亮度调节。

shiy05 发表于 2017-6-27 19:04

同求,等待大神降临

yanghenry 发表于 2017-6-27 21:19

我的方法是clover的DSDT段加入PNLF之后,亮度直接出现,可以调节并保存,然后在键盘快捷键那里设置某两个键为降低或增加亮度的快捷键,按的时候不用fn组合键,直接按那个快捷键就可以出现小太阳并调节亮度。

litaocomet 发表于 2017-6-27 22:01

yanghenry 发表于 2017-6-27 21:19 https://www.pcbeta.com/static/image/common/back.gif
我的方法是clover的DSDT段加入PNLF之后,亮度直接出现,可以调节并保存,然后在键盘快捷键那里设置某两个键 ...

你看看你键盘上印刷的组合键是什么,然后通过ACPIDebug来获取这个组合键的扫描码,然后dsdt里面定义,就OK了。

心灵似水流年 发表于 2017-6-27 22:53

我加入了acpidebug补丁怎么在控制台搜不到

litaocomet 发表于 2017-6-27 23:15

心灵似水流年 发表于 2017-6-27 22:53 https://www.pcbeta.com/static/image/common/back.gif
我加入了acpidebug补丁怎么在控制台搜不到

1.ACPIDebug最好安装到/S/L/E,修复权限,重建缓存
2.然后dsdt里面加入ACPIDebug Methodpatch:
#Maintained by: RehabMan for: ACPIDebug
#debug.txt

#
# Facility for writing trace output to system.log
#
# Use in conjunction with ACPIDebug.kext
#
# EXPERIMENTAL
#
# Written by RehabMan 2013-10-15
#

into device label RMDT remove_entry;
into definitionblock code_regex . insert
begin
Device (RMDT)\n
{\n
    Name (_HID, "RMD0000")\n
    Name (RING, Package(256) { })\n
    Mutex (RTMX, 0)\n
    Name (HEAD, 0)\n
    Name (TAIL, 0)\n
    // PUSH: Use to push a trace item into RING for ACPIDebug.kext\n
    Method (PUSH, 1, NotSerialized)\n
    {\n
      Acquire(RTMX, 0xFFFF)\n
      // push new item at HEAD\n
      Add(HEAD, 1, Local0)\n
      If (LGreaterEqual(Local0, SizeOf(RING))) { Store(0, Local0) }\n
      if (LNotEqual(Local0, TAIL))\n
      {\n
            Store(Arg0, Index(RING, HEAD))\n
            Store(Local0, HEAD)\n
      }\n
      Release(RTMX)\n
      Notify(RMDT, 0x80)\n
    }\n
    // FTCH: Used by ACPIDebug.kext to fetch an item from RING\n
    Method (FTCH, 0, NotSerialized)\n
    {\n
      Acquire(RTMX, 0xFFFF)\n
      // pull item from TAIL and return it\n
      Store(0, Local0)\n
      if (LNotEqual(HEAD, TAIL))\n
      {\n
            Store(DerefOf(Index(RING, TAIL)), Local0)\n
            Increment(TAIL)\n
            If (LGreaterEqual(TAIL, SizeOf(RING))) { Store(0, TAIL) }\n
      }\n
      Release(RTMX)\n
      Return(Local0)\n
    }\n
    // COUN: Used by ACPIDebug.kext to determine number of items in RING\n
    Method (COUN, 0, NotSerialized)\n
    {\n
      Acquire(RTMX, 0xFFFF)\n
      // return count of items in RING\n
      Subtract(HEAD, TAIL, Local0)\n
      if (LLess(Local0, 0)) { Add(Local0, SizeOf(RING), Local0) }\n
      Release(RTMX)\n
      Return(Local0)\n
    }\n
    // Helper functions for multiple params at one time\n
    Method (P1, 1, NotSerialized) { PUSH(Arg0) }\n
    Method (P2, 2, Serialized)\n
    {\n
      Name (TEMP, Package(2) { })\n
      Store(Arg0, Index(TEMP, 0))\n
      Store(Arg1, Index(TEMP, 1))\n
      PUSH(TEMP)\n
    }\n
    Method (P3, 3, Serialized)\n
    {\n
      Name (TEMP, Package(3) { })\n
      Store(Arg0, Index(TEMP, 0))\n
      Store(Arg1, Index(TEMP, 1))\n
      Store(Arg2, Index(TEMP, 2))\n
      PUSH(TEMP)\n
    }\n
    Method (P4, 4, Serialized)\n
    {\n
      Name (TEMP, Package(4) { })\n
      Store(Arg0, Index(TEMP, 0))\n
      Store(Arg1, Index(TEMP, 1))\n
      Store(Arg2, Index(TEMP, 2))\n
      Store(Arg3, Index(TEMP, 3))\n
      PUSH(TEMP)\n
    }\n
    Method (P5, 5, Serialized)\n
    {\n
      Name (TEMP, Package(5) { })\n
      Store(Arg0, Index(TEMP, 0))\n
      Store(Arg1, Index(TEMP, 1))\n
      Store(Arg2, Index(TEMP, 2))\n
      Store(Arg3, Index(TEMP, 3))\n
      Store(Arg4, Index(TEMP, 4))\n
      PUSH(TEMP)\n
    }\n
    Method (P6, 6, Serialized)\n
    {\n
      Name (TEMP, Package(6) { })\n
      Store(Arg0, Index(TEMP, 0))\n
      Store(Arg1, Index(TEMP, 1))\n
      Store(Arg2, Index(TEMP, 2))\n
      Store(Arg3, Index(TEMP, 3))\n
      Store(Arg4, Index(TEMP, 4))\n
      Store(Arg5, Index(TEMP, 5))\n
      PUSH(TEMP)\n
    }\n
    Method (P7, 7, Serialized)\n
    {\n
      Name (TEMP, Package(7) { })\n
      Store(Arg0, Index(TEMP, 0))\n
      Store(Arg1, Index(TEMP, 1))\n
      Store(Arg2, Index(TEMP, 2))\n
      Store(Arg3, Index(TEMP, 3))\n
      Store(Arg4, Index(TEMP, 4))\n
      Store(Arg5, Index(TEMP, 5))\n
      Store(Arg6, Index(TEMP, 6))\n
      PUSH(TEMP)\n
    }\n
}\n
end;


3.dsdt再加入Instrument EC Queries补丁:



我靠,帖子字数太长,内容粘贴不了了


心灵似水流年 发表于 2017-6-27 23:37

打了补丁,控制台搜索 不到debug怎么回事10.12.5

litaocomet 发表于 2017-6-27 23:45

心灵似水流年 发表于 2017-6-27 23:37 https://www.pcbeta.com/static/image/common/back.gif
打了补丁,控制台搜索 不到debug怎么回事10.12.5

你看你的ACPIDebug.kext加载了没有

心灵似水流年 发表于 2017-6-27 23:55

litaocomet 发表于 2017-6-27 23:15 https://www.pcbeta.com/static/image/common/back.gif
1.ACPIDebug最好安装到/S/L/E,修复权限,重建缓存
2.然后dsdt里面加入ACPIDebug Methodpatch:



尝试了就是不行。不明原因

jzhjm 发表于 2017-6-27 23:55

DSDT 玩的真溜

心灵似水流年 发表于 2017-6-28 00:02

心灵似水流年 发表于 2017-6-27 23:55 https://www.pcbeta.com/static/image/common/back.gif
尝试了就是不行。不明原因

用RehabMan这个打了add dsdt debug methods。和ec 那个补丁

shiy05 发表于 2017-6-28 00:09

好帖,收藏了,有时间再弄。楼主的用的什么办法保存亮度的?

心灵似水流年 发表于 2017-6-28 00:17

下面是我的dsdt有时间的话帮忙看看,谢谢,我想映射的事fn+f4和fn+f5,因为现在我的这两个组合可以调节显示的亮度,就是小太阳不出来,快捷设置只能单独设置f4或f5 不能组合设置

心灵似水流年 发表于 2017-6-28 00:20

litaocomet 发表于 2017-6-27 23:45 https://www.pcbeta.com/static/image/common/back.gif
你看你的ACPIDebug.kext加载了没有

在RehabMan的源里面下载的好像2015年什么时候更新的

litaocomet 发表于 2017-6-28 00:46

心灵似水流年 发表于 2017-6-28 00:17 https://www.pcbeta.com/static/image/common/back.gif
下面是我的dsdt有时间的话帮忙看看,谢谢,我想映射的事fn+f4和fn+f5,因为现在我的这两个组合可以调节显示 ...

把你的3个警告也顺手给你消除了,顺便加入了加载ACPIDebug.kext所必须的patch,你现在只需要安装这个kext就可以看到信息了。


心灵似水流年 发表于 2017-6-28 01:09

litaocomet 发表于 2017-6-28 00:46 https://www.pcbeta.com/static/image/common/back.gif
把你的3个警告也顺手给你消除了,顺便加入了加载ACPIDebug.kext所必须的patch,你现在只需要安装这个kext ...

刚试了下,系统挂了,进不去了gtk installed错误

心灵似水流年 发表于 2017-6-28 01:11

试了下,悲剧发生,gtk installed错误
页: [1] 2
查看完整版本: 关于键盘Fn加方向键设置亮度小太阳的问题