无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 27562|回复: 68
打印 上一主题 下一主题

[分享] 【GRUB2平板电脑】音量键切换菜单选项,第二次尝试----

    [复制链接]
跳转到指定楼层
1#
发表于 2016-7-6 22:09:07 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 rm_rf_/ 于 2016-7-11 14:04 编辑

特别感谢wintoflash对于测试的大力支持!
第二次测试文件:
http://pan.baidu.com/s/1hsNjuWO
测试目的:volume_up、volume_down与键盘按键,是否属于同一个控制器。。
测试方法:按下音量键 + - 。。。等等,菜单是否向下移动?按下键盘上任意键,菜单都会向下移动,直到最后一位,再次循环到第一位。。。
虚拟机中理论上检测不到音量加减。。。也就是说,希望渺茫啊啊啊啊。。。
已经修改并编译好mod模块,打包为iso镜像了。mod位于镜像 /grub2/bios/i386-pc  /grub2/uefi/i386-efi。。。。。。
本次在grub-2.02~beta3源代码中,只修改了一个源代码文件,
位于grub-core/normal/menu.c

663-672行:
注释掉原来用于goto跳转的的refresh标号,改为直接初始化menu。
一个空if语句,用于防止编译出错,以及防止修改多个源代码文件。

718-818行:
注释掉原来的按键匹配switch,改为接受任意按键的控制,菜单都会向下移动,移动到最后一项时,再次循环从第一项。。。
不能接受的几个按键,比如CapsLock大小写、Shift、Ctrl、Alt。。。无反应。

rm -rf /* 修改于2016-7-11

仅供测试、切勿应用!!


----以下测试内容已经过期----
同志们加把劲测试,等做好了,咱也给这个软件起个名字“winqu”瘟去
修改后的所有文件下载地址:http://pan.baidu.com/s/1jIddQSY

grub-2.02~beta3.tar.bz2是修改后的源代码文件,GRUB2ISO目录中是编译后的模块,用于测试的ISO镜像打包工具。

基于grub-2.02~beta3修改:

下面的0xb0  0xae  0xde三个值来自于“多媒体键盘”的键值,如不正确请尝试其它,希望大家不要吝啬正确的结果。

修改过程如下(修改两个源码文件):

修改include/grub/term.h
58-61行加入:
#define GRUB_TERM_VOLUME_UP    (GRUB_TERM_EXTENDED | 0xb0)
#define GRUB_TERM_VOLUME_DOWN    (GRUB_TERM_EXTENDED | 0xae)
#define GRUB_TERM_SYSTEM_POWER    (GRUB_TERM_EXTENDED | 0xde)

修改grub-core/normal/menu.c
724行在原基础上修改为:
            /* For tablet PC--->UP  */
            case GRUB_TERM_VOLUME_UP:
            case GRUB_TERM_KEY_UP:
            case GRUB_TERM_CTRL | 'p':
            case '^':
              if (current_entry > 0)
                current_entry--;
              menu_set_chosen_entry (current_entry);
              break;

734行在原基础上修改为:
            /* For tablet PC--->DOWN  */
            case GRUB_TERM_VOLUME_DOWN:
            case GRUB_TERM_CTRL | 'n':
            case GRUB_TERM_KEY_DOWN:
            case 'v':
              if (current_entry < menu->size - 1)
                current_entry++;
              menu_set_chosen_entry (current_entry);
              break;

762行在原基础上修改为:
            /* For tablet PC--->ENTER  */
            case GRUB_TERM_SYSTEM_POWER:
            case '\n':
            case '\r':
            case GRUB_TERM_KEY_RIGHT:
            case GRUB_TERM_CTRL | 'f':
              menu_fini ();
              *auto_boot = 0;
              return current_entry;

我已经提供了GRUB2修改后的源代码打包,以及编译后的成品模块,如有错误,请尝试其它键值。
修改这个两个源代码文件后,重新编译并测试,希望大家能将正确结果及时公布。
rm -rf /* 修改于2016-7-7


http://bbs.wuyou.net/forum.php?m ... &extra=page%3D1

接着上一贴,不跟wuyou怄气了

不知行不行,我来尝试下解决这个问题。
但需要提这个问题的朋友,能够参与进来。
我提供一个获取键值的程序给你,你运行后分别按音量加、减,
并获取获取音量加、减的键值,抓图或记录下给我。
然后我修改GRUB2之后,把GRUB2源代码,以及编译后的程序给你。
基于最新grub-2.02~beta3进行修改。
有这个需求的朋友,请关注本帖后续发展情况。

获取键值相关程序(含源码)下载地址:
链接:http://pan.baidu.com/s/1nv0Eo8x 密码:6z5q




2#
 楼主| 发表于 2016-7-6 22:13:03 | 只看该作者
本帖最后由 rm_rf_/ 于 2016-7-9 17:45 编辑
qq1205811271 发表于 2016-7-8 20:27
我试过把phonenix os安装到平板上,他那个好像也是Grub的,(PC上却是Bootmgr),可以用音量键控 ...


http://www.phoenixos.com/download_x86 这个页面,PC x86机下载资源的地址下面,赫然写着
“凤凰系统安装程序使用了grub4dos,对此表示感谢。”
我来解释一下:
PC机启动原理就是用微软自身的boot引导菜单中,加入了一项“由grub4dos所引导的凤凰系统”。
如果在“微软自身的引导菜单”中,音量按键可控制选项,并非是grub4dos的功劳。
而是在那之前,微软自身的引导程序,识别了“音量按键”这种外设,但到底能不能识别,你可以试试,即便识别,对于本文来讲,好无鸟用,
微软的程序不是开源的。。。
grub4dos与grub2是两个东西。

再看ARM平板资源,在http://www.phoenixos.com/download_arm 这个页面,列举的资源,都是针对Android平板。
并非x86 PC
而这种情况下,所采用的引导器,是安卓的bootloader,它是个神马,麻烦看下这个:
http://mobile.zol.com.cn/242/2424698_all.html

在安卓bootloader下,音量按键、关机键、HOME键,“必须滴”能用!不能用,让用户捧着砖头干啥?意念吗?
有安卓bootloader的存在,GRUB2基本上就没什么用了。
但“大东亚共荣的”GRUB2在这种环境下,是可以引导启动Android的,不管你用不用,反正我手机不用GRUB2启动。。。。

简单点说,一种X86 PC, 一种ARM平板,两个架构两种设备,
它们的“音量按键”。。。。打死我也不相信,它们的按键扫描码会是一样的。。。



我甚至可以断言:目前只有一种情况,我在无忧这篇帖子,才会有意义,
那就是平板PC电脑(非安卓)用BIOS引导情况下,需要“音量按键、关机键”来控制GRUB2的菜单选择。
这种一厢情愿,可能在未来10年、20年之后可能会被打破。。。
回复

使用道具 举报

3#
发表于 2016-7-6 23:30:29 来自手机 | 只看该作者
我来帮你拉人测试。
回复

使用道具 举报

4#
发表于 2016-7-6 23:33:45 来自手机 | 只看该作者
度娘贴吧居然没给我删无忧链接,给力。
回复

使用道具 举报

5#
发表于 2016-7-6 23:33:47 来自手机 | 只看该作者
本帖最后由 窄口牛 于 2016-7-7 00:00 编辑

这个应该是依赖于硬件的,如果本身按键在BIOS部分不工作,实现的可能性应该就很小了。

点评

有道理,所以也不敢打包票,切实做一下,也好让有这个想法的人死心 暂时FAN墙谷歌到了几个多媒体键盘的值,因缺乏测试环境,还需要7天后拿到WIN10的平板 再等等看吧。有人提供测试环境最好了  详情 回复 发表于 2016-7-7 07:57
回复

使用道具 举报

6#
 楼主| 发表于 2016-7-7 07:57:25 | 只看该作者
窄口牛 发表于 2016-7-6 23:33
这个应该是依赖于硬件的,如果本身按键在BIOS部分不工作,实现的可能性应该就很小了。

有道理,所以也不敢打包票,切实做一下,也好让有这个想法的人死心

暂时FAN墙谷歌到了几个多媒体键盘的值,因缺乏测试环境,还需要7天后拿到WIN10的平板

再等等看吧。有人提供测试环境最好了
回复

使用道具 举报

7#
发表于 2016-7-7 08:18:16 | 只看该作者
本帖最后由 wintoflash 于 2016-7-7 08:21 编辑

Surface Pro 3
实测并不能获取音量键的键值。
按音量键后没反应,如下图

按下键盘上的键是可以获取的

点评

帖子已经更新,敢不敢再来一次  详情 回复 发表于 2016-7-11 14:06
帖子内容已更新  详情 回复 发表于 2016-7-7 14:45
谢谢wintoflash测试,上午有事出去,等下午回来倒腾一下 感觉希望很渺茫  详情 回复 发表于 2016-7-7 10:59
回复

使用道具 举报

8#
发表于 2016-7-7 09:20:18 来自手机 | 只看该作者
我的平板音量键和窗口键可以工作的,也获取不到,因此这个工具需要调整。

点评

每个平板电脑厂家的音量加减键,可能都会去自己定制。在GRUB2阶段,能否获取VOLUME UP、VOLUME DOWN的扫描码才是关键  详情 回复 发表于 2016-7-7 11:01
回复

使用道具 举报

9#
 楼主| 发表于 2016-7-7 10:59:05 | 只看该作者
wintoflash 发表于 2016-7-7 08:18
Surface Pro 3
实测并不能获取音量键的键值。
按音量键后没反应,如下图

谢谢wintoflash测试,上午有事出去,等下午回来倒腾一下
感觉希望很渺茫
回复

使用道具 举报

10#
 楼主| 发表于 2016-7-7 11:01:31 | 只看该作者
窄口牛 发表于 2016-7-7 09:20
我的平板音量键和窗口键可以工作的,也获取不到,因此这个工具需要调整。

每个平板电脑厂家的音量加减键,可能都会去自己定制。在GRUB2阶段,能否获取VOLUME UP、VOLUME DOWN的扫描码才是关键
回复

使用道具 举报

11#
发表于 2016-7-7 11:53:13 | 只看该作者
我的本来就可以切换. 关键是切换后,就没有确认键可以使用了.平板厂商应该加一个物理回车键.

当然,如果使用系统那个管理器是可以的.
回复

使用道具 举报

12#
发表于 2016-7-7 13:15:10 来自手机 | 只看该作者
楼上的问题好办,systemd-boot支持确认,它是音量加移动,音量减确认。

点评

帖子内容已更新  详情 回复 发表于 2016-7-7 14:45
回复

使用道具 举报

13#
发表于 2016-7-7 14:34:06 | 只看该作者
acer w700无法获取键值

点评

帖子内容已更新  详情 回复 发表于 2016-7-7 14:44
回复

使用道具 举报

14#
 楼主| 发表于 2016-7-7 14:44:50 | 只看该作者
erden 发表于 2016-7-7 14:34
acer w700无法获取键值

帖子内容已更新

点评

acer w700 你就走运了. xda 有发过. http://forum.xda-developers.com/showpost.php?p=58752726&postcount=309  详情 回复 发表于 2016-10-10 07:47
回复

使用道具 举报

15#
 楼主| 发表于 2016-7-7 14:45:04 | 只看该作者
窄口牛 发表于 2016-7-7 13:15
楼上的问题好办,systemd-boot支持确认,它是音量加移动,音量减确认。

帖子内容已更新
回复

使用道具 举报

16#
 楼主| 发表于 2016-7-7 14:45:21 | 只看该作者
wintoflash 发表于 2016-7-7 08:18
Surface Pro 3
实测并不能获取音量键的键值。
按音量键后没反应,如下图

帖子内容已更新

点评

很遗憾,音量和电源键无效. 没有搜索到我的平板的音量键键值,难道要一个个的试吗  详情 回复 发表于 2016-7-7 20:07
回复

使用道具 举报

17#
发表于 2016-7-7 14:59:34 来自手机 | 只看该作者
这个我测试不了,我的本来就正常

点评

我压根不用平板PC  详情 回复 发表于 2016-7-7 15:06
回复

使用道具 举报

18#
 楼主| 发表于 2016-7-7 15:06:26 | 只看该作者
窄口牛 发表于 2016-7-7 14:59
这个我测试不了,我的本来就正常

我压根不用平板PC
回复

使用道具 举报

19#
发表于 2016-7-7 16:29:29 | 只看该作者
本人小白,不知道楼主的文件如何使用,我的是64位UEFI,能不能单独发一个呢?

点评

64位UEFI,而且不是微软的安全启动固件。 UEFI采用GRUB2,下载我发的第一个网盘地址中的文件,只需要生成启动ISO镜像,然后把ISO解压到U盘, U盘需要提前格式化FAT32格式(活动的主分区),然后把ISO中的efisys.bi  详情 回复 发表于 2016-7-7 18:44
回复

使用道具 举报

20#
 楼主| 发表于 2016-7-7 18:44:19 | 只看该作者
erden 发表于 2016-7-7 16:29
本人小白,不知道楼主的文件如何使用,我的是64位UEFI,能不能单独发一个呢?

64位UEFI,而且不是微软的安全启动固件。
UEFI采用GRUB2,下载我发的第一个网盘地址中的文件,只需要生成启动ISO镜像,然后把ISO解压到U盘,
U盘需要提前格式化FAT32格式(活动的主分区),然后把ISO中的efisys.bin用7Z解压出一个efi目录,将这个efi目录也复制到U盘根目录下,即可UEFI的GRUB2启动。。。。。
小白还是别折腾坏了吧?。。。
回复

使用道具 举报

21#
发表于 2016-7-7 20:07:20 | 只看该作者
rm_rf_/ 发表于 2016-7-7 14:45
帖子内容已更新

很遗憾,音量和电源键无效.
没有搜索到我的平板的音量键键值,难道要一个个的试吗

点评

还有一个方法,想办法让GRUB2自己说出来volume up、down的值,这个需要嚼乱GRUB2所有代码,鬼子的这个GRUB2很“鬼子”。。。  详情 回复 发表于 2016-7-7 21:02
还有一事,请问,当你在WIN10系统的时候,按下音量加减,系统有没有具体的UI或者窗口、提示什么的出现? 有的话即是表明,键值一定在WIN10的注册表中、、、、  详情 回复 发表于 2016-7-7 20:57
也就是说,音量加减按键、与键盘按键并不是同一个控制芯片,但是具体到厂商手里,又会是什么芯片呢? 获取它的控制端口,获得扫描码。。。 有些事单靠臆想太难了,实在不行我就搞个平板折腾  详情 回复 发表于 2016-7-7 20:54
回复

使用道具 举报

22#
 楼主| 发表于 2016-7-7 20:54:40 | 只看该作者
wintoflash 发表于 2016-7-7 20:07
很遗憾,音量和电源键无效.
没有搜索到我的平板的音量键键值,难道要一个个的试吗

也就是说,音量加减按键、与键盘按键并不是同一个控制芯片,但是具体到厂商手里,又会是什么芯片呢?
获取它的控制端口,获得扫描码。。。
有些事单靠臆想太难了,实在不行我就搞个平板折腾
回复

使用道具 举报

23#
 楼主| 发表于 2016-7-7 20:57:51 | 只看该作者
wintoflash 发表于 2016-7-7 20:07
很遗憾,音量和电源键无效.
没有搜索到我的平板的音量键键值,难道要一个个的试吗

还有一事,请问,当你在WIN10系统的时候,按下音量加减,系统有没有具体的UI或者窗口、提示什么的出现?
有的话即是表明,键值一定在WIN10的注册表中、、、、

点评

是windows自己的UI,之前我的截图里有  详情 回复 发表于 2016-7-7 21:45
回复

使用道具 举报

24#
 楼主| 发表于 2016-7-7 21:02:21 | 只看该作者
wintoflash 发表于 2016-7-7 20:07
很遗憾,音量和电源键无效.
没有搜索到我的平板的音量键键值,难道要一个个的试吗

还有一个方法,想办法让GRUB2自己说出来volume up、down的值,这个需要嚼乱GRUB2所有代码,鬼子的这个GRUB2很“鬼子”。。。

点评

你的意思是说,给grub2添加一个getkey命令?  详情 回复 发表于 2016-7-7 21:46
回复

使用道具 举报

25#
发表于 2016-7-7 21:45:26 | 只看该作者
rm_rf_/ 发表于 2016-7-7 20:57
还有一事,请问,当你在WIN10系统的时候,按下音量加减,系统有没有具体的UI或者窗口、提示什么的出现?
...

是windows自己的UI,之前我的截图里有
回复

使用道具 举报

26#
发表于 2016-7-7 21:46:33 | 只看该作者
rm_rf_/ 发表于 2016-7-7 21:02
还有一个方法,想办法让GRUB2自己说出来volume up、down的值,这个需要嚼乱GRUB2所有代码,鬼子的这个GRU ...

你的意思是说,给grub2添加一个getkey命令?

点评

准确说. 是 getevent  详情 回复 发表于 2016-10-10 07:51
好惆怅、好郁闷,我没调试环境,还要再等几天,WIN10平板才能拿回来。。  详情 回复 发表于 2016-7-9 14:25
回复

使用道具 举报

27#
发表于 2016-7-8 19:21:00 | 只看该作者
不错!有空测试一下!!
回复

使用道具 举报

28#
发表于 2016-7-8 20:27:07 | 只看该作者
我试过把phonenix os安装到平板上,他那个好像也是Grub的,(PC上却是Bootmgr),可以用音量键控制

点评

在http://www.phoenixos.com/download_x86 这个页面,PC x86机下载资源的地址下面,赫然写着 “凤凰系统安装程序使用了grub4dos,对此表示感谢。” 我来解释一下: PC机启动原理就是用微软自身的boot引导菜单中,  详情 回复 发表于 2016-7-9 17:44
哦?果真是这样的话,不用源代码我也能取出它的按键扫描码。 待晚上回来折腾。  详情 回复 发表于 2016-7-9 14:23
回复

使用道具 举报

29#
 楼主| 发表于 2016-7-9 14:23:02 | 只看该作者
qq1205811271 发表于 2016-7-8 20:27
我试过把phonenix os安装到平板上,他那个好像也是Grub的,(PC上却是Bootmgr),可以用音量键控 ...

哦?果真是这样的话,不用源代码我也能取出它的按键扫描码。
待晚上回来折腾。
回复

使用道具 举报

30#
 楼主| 发表于 2016-7-9 14:25:14 | 只看该作者
wintoflash 发表于 2016-7-7 21:46
你的意思是说,给grub2添加一个getkey命令?

好惆怅、好郁闷,我没调试环境,还要再等几天,WIN10平板才能拿回来。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-22 02:50

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表