在linux下客制化hotkey(FN+FX)

                   Custom HotKey from the kernel ec.c

EC 的定义以及作用

EC与keyboard 


引用blog:http://blog.csdn.net/hgf1011/article/details/3727078

          Keyboard是PC架构中的一个重要组成部分。在常见的PC系统中主板上都有一颗专用的8042接口芯片去处理(现在被集成进了SB中),8042控制keyboard的整个工作过程,
包括加电自检键盘扫描码的缓冲以及与chipset沟通。在NB上这部分工作都有EC负责,它有一个keyboard controller,它扮演8042相似的角色。NB都有一个内置Keyboard,
这个keyboard是由EC控制的。Keyboard和touchpad都是EC内置的一个部分,它们按照ps2协议工作,最终的数据通过EC送给host。键盘是一种矩阵结构,每一个键都有一个行地址和列地址,用户按下键以后,
EC获得该按键的matrix address,EC将该address转化为matrix value然后判断该键的类型是特殊功能键还是标准按键,然后采用不同的方法将matrix value转成Set2,
最后在转成Set1 value送给host,host收到就可以送给其它需要的程序了。


NB上有一些被称为Hot Key(热键)的东东,比如用户可以按Fn+F4/F5调整亮度等。这些是如何实现的呢?既然key board部分是由EC FW处理,那定制这些特殊功能键就不是什么难事了。
Fn没有scan code但是它有matrix address 所以EC收到该键按下后置一个flag
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 可以使用 python 第三方库「pyHook」或「Xlib」来编写 Linux 系统下的热程序。 - pyHook:是一个 Python 钩子(hook)管理器,可以监听和记录全局盘和鼠标事件,因此可以很容易地实现热功能。 - Xlib:是一个 Python 库,可以直接与 X Window 系统通信,因此可以实现捕获热的功能。 需要注意的是,这两个库的使用都需要一定的编程知识,需要您具备一定的 Python 基础。 ### 回答2: 在Linux系统下使用Python编写热程序是非常方便和易于实现的。Python提供了一些强大的库和模块,可以帮助我们实现各种功能。下面是一个简单的例子,展示了如何使用Python创建一个热程序: ```python import subprocess import time from pynput import keyboard # 定义回调函数 def on_hotkey(): subprocess.Popen(["gnome-terminal"]) # 打开终端 time.sleep(0.5) # 等待终端打开 subprocess.Popen(["gedit"]) # 打开文本编辑器 # 设置热 hotkey = keyboard.HotKey( keyboard.HotKey.parse('<ctrl>+<alt>+t'), on_hotkey) # 监听热 with keyboard.Listener(on_hotkey=hotkey.press) as listener: listener.join() ``` 在这个例子中,我们使用了`pynput`库来监听热事件。`subprocess`库用于启动终端和文本编辑器。首先,我们定义了一个热回调函数`on_hotkey()`,当热被触发时,该函数会被调用。在这个例子中,按下"Ctrl + Alt + T"热会打开终端,并在0.5秒后打开文本编辑器。 然后,我们使用`keyboard.HotKey()`函数设置了热为"Ctrl + Alt + T",并传入热回调函数作为参数。最后,使用`keyboard.Listener()`函数监听热事件,当热被按下时,会调用热回调函数。 这只是一个简单的示例,你可以根据自己的需求进行修改和扩展。Python在Linux系统下编写热程序非常灵活和强大,你可以使用其他库来实现更复杂的功能,比如控制音乐播放、打开特定应用程序等。 ### 回答3: 在Linux系统下,我们可以使用Python编写热程序。Python的大量第三方库和模块使得创建热程序变得相对容易。 首先,我们需要使用X Window系统提供的库来监听盘事件。这可以通过使用`python-xlib`库实现。该库提供了与X Window系统进行通信的功能,包括检测盘事件。 接下来,我们需要定义的触发条件。例如,我们可以指定某个特定的按组合来触发热,比如Ctrl+Alt+P。在`python-xlib`库中,我们可以使用`KeyPress`事件来监听按按下的事件。 然后,我们定义一个回调函数来处理热触发后的操作。这个函数可以是任何我们想要执行的操作,比如打开一个应用程序、切换窗口、执行某个命令等等。 最后,我们将X Window系统的事件循环与我们的热程序结合起来。事件循环会不断监听盘事件,并在检测到符合热条件的事件时调用我们定义的回调函数。 以下是一个简单的示例代码: ```python from Xlib import X, display def hotkey_callback(): # 在此处定义触发后的操作 print("热触发") def main(): # 设置监听器 d = display.Display() root = d.screen().root root.change_attributes(event_mask=X.KeyPressMask) # 设置热组合 keys_combination = [X.ControlMask, X.Mod1Mask, X.KeyPress] key_code = d.keysym_to_keycode(ord('P')) while True: event = d.next_event() if event.type == X.KeyRelease and event.detail == key_code and \ (event.state & keys_combination) == tuple(keys_combination): hotkey_callback() if __name__ == "__main__": main() ``` 以上代码示例使用`python-xlib`库获取并监听盘事件,当检测到按下Ctrl+Alt+P时,会调用`hotkey_callback()`函数。你可以根据需要进行修改和扩展,执行相应的操作。 请注意,由于热程序需要与系统进行交互,可能需要在使用之前以管理员权限运行该程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值