gre*_*ghz 7 xorg keyboard shortcut-keys
首先,我不希望这样的事情已经存在,但我很想知道如何完成这样的事情。
我想要一个可以在后台运行的程序,它可以拦截所有输入的击键(我假设 X 正在运行,甚至 Unity 也正在运行),处理这些击键,然后将原始或修改后的击键发送到照常处理。
我的最终目标是创建一种更接近于 OS X 快捷方式行为的键盘映射。这对于标准的 Ubuntu 安装来说非常困难,因为像 ctrl+c 这样的东西似乎是一成不变的,而要模仿 OS X 的行为,它需要是 cmd+c。无论如何,我对讨论为什么不那么感兴趣,而对讨论如何做更感兴趣。我并不反对用 Python、C 或其他任何可能需要的东西编写守护程序(我对标准的 UNIX api 也有些熟悉)。然而,我完全不知道从哪里开始这样的事情。
当击键被拦截和处理时,它应该能够按照最初发送击键的相同接口将它们发送回操作系统。也许这必须是 X 本身的补丁?或者可以在键盘和 X 之间放置一些东西吗?
要显示来自键盘以及其他输入设备的事件,还有evtest.
它本身不能创建按键,但请参见下文。
xev例如,它显示的事件级别较低。
此外,它还显示设备可以创建哪些事件。
碰巧,event4指的是我的主键盘。
所以我使用命令创建下面的示例输出
sudo evtest /dev/input/event4
Run Code Online (Sandbox Code Playgroud)
并按aB:
[ ... ]
Event: time 1429316964.681508, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70004
Event: time 1429316964.681508, type 1 (EV_KEY), code 30 (KEY_A), value 1
Event: time 1429316964.681508, -------------- SYN_REPORT ------------
aEvent: time 1429316964.761540, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70004
Event: time 1429316964.761540, type 1 (EV_KEY), code 30 (KEY_A), value 0
Event: time 1429316964.761540, -------------- SYN_REPORT ------------
Event: time 1429316965.385461, type 4 (EV_MSC), code 4 (MSC_SCAN), value 700e1
Event: time 1429316965.385461, type 1 (EV_KEY), code 42 (KEY_LEFTSHIFT), value 1
Event: time 1429316965.385461, -------------- SYN_REPORT ------------
Event: time 1429316965.577461, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70005
Event: time 1429316965.577461, type 1 (EV_KEY), code 48 (KEY_B), value 1
Event: time 1429316965.577461, -------------- SYN_REPORT ------------
BEvent: time 1429316965.641460, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70005
Event: time 1429316965.641460, type 1 (EV_KEY), code 48 (KEY_B), value 0
Event: time 1429316965.641460, -------------- SYN_REPORT ------------
Event: time 1429316965.713470, type 4 (EV_MSC), code 4 (MSC_SCAN), value 700e1
Event: time 1429316965.713470, type 1 (EV_KEY), code 42 (KEY_LEFTSHIFT), value 0
[ ... ]
Run Code Online (Sandbox Code Playgroud)
(要找到正确的事件编号(例如我的 event4),您可以查看cat /proc/bus/input/devices。Name可能不是指键盘,而是查找Handlers包含sysrq kbd和 的条目leds。或者只是尝试全部。)
按键事件不能由 创建evdev,但有一个按键重新映射的实现,可以使用evdev它创建新事件,
它似乎与您正在寻找的内容相匹配:
Evdev 的在家修改器(ahm或at-home-modifier-evdev):
例如,它支持“空格/Shift 双角色键”。当你单独按下空格键时,它是一个空格;当你按下空格键时,它是一个空格。但是当你用另一个键按下它时,它就是一个转变。例如,粗略地说,空间 + x = X。
任何密钥对都是可能的。例如,除了 Space/Shift 之外,您还可以将 Left Alt 转换为 BS/Alt。在此示例中,Space 后跟 LAlt 发送 Shift + BS,LAlt 后跟 Space 发送 Alt + Space,Space + LAlt + x 和 LAlt + Space + x 是 Alt + Shift + x。
它是 Xorg“evdev”驱动程序的一个分支 [...]
它并不声称是一个干净的实现 - 但这并不妨碍从中学习。
是的,ubuntu 有一个键盘记录器。
你可以在这里下载
或者通过 apt-get 安装
启用 Universe 存储库,然后在终端中运行以下命令
sudo aptitude update
sudo aptitude install lkl
Run Code Online (Sandbox Code Playgroud)
要运行,请在终端中输入以下内容
lkl -l -k us_km -o log.file
Run Code Online (Sandbox Code Playgroud)
为了看到结果
尾部日志文件
| 归档时间: |
|
| 查看次数: |
5468 次 |
| 最近记录: |