如何获取特殊按键的 keycode?

2014-08-24 07:03:40 +08:00
 zqhong
问题的由来:
笔记本开机开启背光键盘, 每次都得 Fn+F9 关闭, 甚是麻烦!

问题尝试解决过程:
1. 寻找Python是否有可以模拟键盘的模块。 好吧, 找到了 -- virtkey
2. 简单看了下 virtkey的用法 press_keycode / release_keycode 好简单啊
3. 寻找Fn+F9的keycode, 使用 showkey -k, 大部分按键都可以找到, 就是 Fn+F9找不到 最后, 在 dmesg中找到 -- acer_wmi: Unknown key number - 0x84
4. 最后我在Python中使用 0x84这个 keycode测试了下, 竟然没有效果!

实在没办法, 特来请教V友。

问题1:
我在 showkey中获取相关按键的keycode, 比如 'a', 得到的是 30. 可我在 xev中得到的是 38. 实际上 'a'的keycode也确实是 38. 而且, 其他按键在showkey中都要加8才行。 
问题2:
上文说的 0x84是什么??? 它是 Fn+F9的keycode吗?
注: 每次我按下 Fn+F9, 都会在dmesg中看到 ‘acer_wmi: Unknown key number - 0x84’ 感觉它就是啊。 可无论我是使用 0x84 还是 0x8C (0x84+8) 都没有效果


我只是想偷个懒。。。。
3362 次点击
所在节点    Python
10 条回复
54c3
2014-08-24 07:27:41 +08:00
不如試試 xdotools?
54c3
2014-08-24 07:28:16 +08:00
@54c3 抱歉手抖多打了個 s,找「xdotool」。
ctexlive
2014-08-24 08:30:36 +08:00
132+8=140 试试
whywhywhy
2014-08-24 08:59:05 +08:00
fn是硬件级按键,模拟不了,也获取不了的,别闹了洗洗睡吧
elvodn
2014-08-24 09:13:00 +08:00
dmesg 里面提示了 Use "setkeycodes xxxx <keycode>" to make it know
zqhong
2014-08-24 12:29:06 +08:00
@54c3 谢谢 可能没支持我这本子吧。 不过我找到了
keycode 236 = XF86KbdLightOnOff NoSymbol XF86KbdLightOnOff
keycode 237 = XF86KbdBrightnessDown NoSymbol XF86KbdBrightnessDown
keycode 238 = XF86KbdBrightnessUp NoSymbol XF86KbdBrightnessUp

xdontool key XF86KbdBrightnessDown 应该就可以关闭背光键盘。 
一开始我以为是xmodmap的映射问题, 找了试了一早上, 结果。。。



/etc/acpi/events/asus-keyboard-backlight-down
/etc/acpi/events/asus-keyboard-backlight-up
呼。估计asus是支持, 等等编译下内核试试看
zqhong
2014-08-24 12:30:14 +08:00
@ctexlive 谢谢。 之前就尝试过了, 
找到了keycode了
keycode 236 = XF86KbdLightOnOff NoSymbol XF86KbdLightOnOff
keycode 237 = XF86KbdBrightnessDown NoSymbol XF86KbdBrightnessDown
keycode 238 = XF86KbdBrightnessUp NoSymbol XF86KbdBrightnessUp
zqhong
2014-08-24 12:43:26 +08:00
@whywhywhy 怎么说呢。网上好多人也这么说, 不过我试了下, 单纯按 F12, 得到的keycode是 96 如果 Fn+F12, 得到的keycode是 78
bcxx
2014-08-24 12:50:24 +08:00
@zqhong @whywhywhy 的意思应该是单纯 fn 是模拟不了的,但是 fn + F12 这种其实相当于硬件发送了另外一个键的 keycode 进来(其实也就是 XF86 开头的那些)
akfish
2014-08-24 12:52:06 +08:00
Fn按键组合产生的是USB HID Report,所以你需要直接拦截处理raw HID report

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/129554

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX