热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

Linux系统处理laptophotkeys的方式

Linux系统处理laptophotkeys的方式--Linux通用技术-Linux编程与内核信息,下面是详情阅读。
  我这几天的学习,要想让笔记本上的hotkey完全能够正常工作,要许多方面一起协同才行。

  1,硬件厂商在bios中对linux的支持程度。我的机器在启动后,用dmesg| grep -i acpi,就会发现在load acpi 的时候有两三个错误。我想这会导致一些hotkey在系统中,用那些acpi_listen或者xev抓不到按键,即没有输出相应的 keycode。这需要修改dsdt了。硬件厂商不支持,只能做一些hacking的工作,搞过嵌入式驱动开发的朋友,应该都不在话下。风险有,细心就能 对付。

  2,linux kernel对ACPI的支持,现在各种笔记本,如ibm, sony, asus, dell, hp,都有对应_acpi的项目,也会集成到kernel中去,例如debian, linux-image-2.6.21-2-686种就有ibm_acpi, asus_acpi, toshiba_acpi,但没有sony_acpi,这些都是各种laptop的acpi的driver。我的是asus的,实际上内核使用的就是 acp4asus项目提供的,我不得不停掉kernel自带的,去下载编译新的acpi4asus的driver。ACPI应该管理hotkeys,屏幕 亮度,fan,cpu speedstep,cpu temp。

  3,有了driver,只是提供了基本的支持,还需要一个用户空间运行的daemon程序来获得按键的事件,比如现在的acpid,acpi- support提供了acpid响应事件后处理的相关脚本。这种机制就是event/action 的像那个键/值对。问题是,新的acpi driver会导致acpid不能使用,因为kernel自带的driver可能会把信息写到/proc/acpi下,而新的会放到/sys/下,这样 acpid就不能处理按键的事件了(acpi-support的脚本不支持了,因为它们是去找/proc的)。例如,新的acpi4asus(0.42, kernel自带在0.40之前),就是这样做的,也新提供了自己的daemon,叫asus_acpid,而且,不同的acpid daemon之间会有冲突。如,它们都需要使用/var/run/acpid.socket。我现在的系统里面acpid管Fn + F1/F5/F7,而asus_acpid管Fn + F3/F4/F9/F10/F11/F12。

  4,响应了按键事件后的处理,完全是自己配置的事情了,例如完全可以不把Fn+F1配置成休眠的。不过要实现具体的功能,是和具体的驱动/工具有关系的,例如,

  fn +f1,控制休眠,通过suspend2ram, suspend2disk实现。

  Fn +F2,如果仅仅启停wireless led的话,很简单,因为这是电源管理里面的,如果要实际的控制无线的驱动,就需要和ipw3945建立联系了,而这个工作在apcid中并不好做,因为 它不知道具体的无线驱动是什么啊。windows下asus提供了atk0100驱动和wireless的驱动,自然它们可以很容易的整合在一起;

  fn + f3/f4,完全是自己定义的了,我的机器上是启动iceweasel和icedove,很简单的在事件处理脚本中写iceweasel &就可以了。

  Fn +F5/F6,是调整屏幕亮度的,它需要向/proc/,或者/sys下echo 一些值,这就不能简单地写在脚本里面了,一般要用dbus;

  Fn +f7,关闭屏幕的电源,这是acpi直接提供的。

  fn +f8 ,切换扩展显示器,这个没有硬件测试。

  fn +f9,启停touchpad,先要在xorg中写一个支持,然后在事件处理脚本中用synclient,这个工具也是所有用户都可以用的。

  fn + F10,启停声音,Fn+ F11/F12是调整音量的,这个在acpid的事件处理脚本中,就是调用amixer来设置的,而这个命令是任何一个用户都可以调用的,不过 ausu_apcid的处理脚本中默认是通过Front来改变音量的,而我的声卡驱动需要通过PCM来设置,就需要修改了;

  所以,就是hardware vendor --> linux kernel --> acpi driver --> acpi daemon --> event handler这样的关系。

  根节在头上,软件上的成功使用,需要硬件和固件的支持。
推荐阅读
  • 如何查看电脑系统版本_腾讯云服务器系统版本怎么看?Windows和Centos版本怎么选?...
    腾讯云服务器系统版本怎么看?想要知道自己的腾讯云服务器系统版本是哪个,可以登录云服务器后台管理系统查看,或者使用命令行查询,如果不会操作& ... [详细]
  • 本文内容为asp.net微信公众平台开发的目录汇总,包括数据库设计、多层架构框架搭建和入口实现、微信消息封装及反射赋值、关注事件、用户记录、回复文本消息、图文消息、服务搭建(接入)、自定义菜单等。同时提供了示例代码和相关的后台管理功能。内容涵盖了多个方面,适合综合运用。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • Ubuntu 9.04中安装谷歌Chromium浏览器及使用体验[图文]
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • systemd-nspawn可以创建最轻量级的容器(ns的意思就是namespace),本文的实验平台是Ubuntu16.04,x86_64机器。本文的目的是:在Ubuntu中用syst ... [详细]
  • 如何将CentOS8转换为CentOSStream
    CentOS Stream是一个持续交付的Linux发行版,它在RHEL之前处于领先地位。它将具有滚动发布,即不断进行更改。CentOS将成为一个上游版本,它将具有测试补丁和更新。 ... [详细]
  • Linux神奇漏洞:长按回车键70秒 即可轻松拿到Root权限
    一般来说获取系统root权限是很困难的,尤其是加密系统中,但西班牙安全研究员hectormarco、ismaelripoll发现,linux系统下只需按住回车键70秒钟,就能轻 ... [详细]
  • docker安装到基本使用
    记录docker概念,安装及入门日常使用Docker安装查看官方文档,在"Debian上安装Docker",其他平台在"这里查 ... [详细]
  • 系统安装Debian系统的安装方式和Ubuntu系统的安装方式几乎是一样的,毕竟Ubuntu系统是基于Debian的,就如同CentOS基于Redhat ... [详细]
  • 阿里云服务器iis设置方法与上千种Linux桌面版本相比,Linux服务器只有可怜的十几种。但想要选对适合你的企业需要的仍然不是件容易的事情,选Linux服务器首先要 ... [详细]
author-avatar
MISSLOVE0710
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有