Articles of 键盘

使用xinput在X11 / Linux中禁用键盘后释放所有的键?

在Linux上,当使用X11 / Xorg时,当你使用xinput来禁用他们的键盘时(例如xinput set-prop $ID "Device Enabled" 0 ),'key-up'事件不会被发送(因为你禁用了键盘)。 如果你在命令行中input这个命令,这是显而易见的,它会像你持有“进入”一样。 这是因为命令(禁用键盘)运行之前,您的手指离开回车键。 这个bug在这里讨论( https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-input-evdev/+bug/724280 )和这篇博文( http://blog.yjl.im/ 2010/12 / using-xinput-to-disable-keyboard-mouse.html )。 我正在写一个程序,需要禁用键盘,并希望避免这个问题。 是否有任何方法/命令“释放所有当前按下的键”(可以在“禁用键盘”命令后运行)? 还是有一个命令/方式来“获取所有按下的所有当前键列表”和手动/以编程方式发送“键释放”事件的方式? (这样我可以禁用键盘,看看按了什么键,然后“释放”这些键)。 这可能吗?

在Vim(德语键盘)中重新映射一个密钥

好吧,我一直在尝试Vim(标准控制台版本;我的操作系统是Linux Mint 13),我想摆脱必须使用Escape键来改变模式。 最好,我想交换Capslock和Escape键,但据我所知,在Vim本身中是不可能的。 我发现的大多数“解决scheme”都涉及在全球范围内(使用xmodmap或其他)更改密钥,但我并不是那么想。 如果只有在Vim中有一个简单的方法来换Capslock和Escape,请告诉我。 我听说的另一个常见的事情是使用“Ctrl- [”作为等同于Escape。 但是,因为我正在使用具有不同布局的德语键盘,所以这不是一个选项。 所以,我以为我会在Vim中使用noremap <C-ü> <Esc> (德国键盘上的“ü”键与美式键盘上的“[”键在同一位置),但是没有工作,要么。 我假设这是因为“ü”不是一个ASCII字符。 有没有办法让这些选项中的任何一个工作? 更新 :好吧,这很奇怪。 更多的实验后,似乎“Ctrl-ü”确实工作。 我不知道发生了什么 – 也许我尝试了不同的东西,搞砸了一些编码相关的设置? 如果没有好的解决scheme来重新映射capslock,我想我会坚持使用“Ctrl-ü”。

更改由xterm为键组合生成的转义序列

我的目标是build立一个terminal,其中一个命令行界面程序将按照键盘input的预期行事(该程序是最初为Windows编写的xharbour,但现在我想将它移植到linux)。 我select了xterm,因为它更简单,不需要禁用默认的terminal组合键。 用腻子大多数人物工作得很好,对于那些不使用autohotkey,一个ahk脚本,并做这项工作。 例如,对于Ctrl + F1: ^F1::SendInput ^[O5P 我尝试和修改,重新编译terminfo,改变它,并改变键盘types,但不能实现获得^ [O5P响应按Ctrl + F1在terminal。 如果你知道这样做的任何方式,请告诉我…我已经读了几百页,据说这样做,但所有这些变化没有任何影响或没有预期的效果。 所以我试图修改terminal设置来实现我的Ctrl + F1到^ [O5P的目标,并尝试了一些类似于autohotkey的命令和程序: xmodmap ,但对于键组合,它不工作 xdotool windowactivate xyztypes^ [O5P,这将返回单个字符的char代码 xmacro ,它不会将按键发送到其他窗口 ironahk ,我一开始就遇到了一个错误,试图运行example.ahk,在光手册中找不到我希望的命令。 bind '\e[1;5P":"\e[O5P"' ,这里第一个键码就是我当前inputctrl + f1时所得到的结果,并且是我希望通过这个组合得到的结果。 xbindkeys + xvkbd ,也没有帮助。 如果您已经知道,请帮助我,以某种方式进行pipe理(更改为组合键返回的关键代码)。 我使用最新的CentOS和Ubuntu进行testing。

Unix下的键盘设备

如何捕获所有的用户input,一次读取一个字节? 我做了这个编码,但它不工作 if ((fd = open("/dev/char", O_RDONLY) != 1) { tty = open("/dev/tty", O_RDONLY); tcsetattr(0, TCSANOW, &orig_info); read (fd, &buf, sizeof(char)); } close(fd); 我希望terminal等待input,但没有。

为什么evdev在/ usr / share / X11 / xkb / rules中与evdev.lst不匹配?

看来evdev.lst中列出的一些setxkbmap选项实际上并不支持evdev文件。 例如ctrl:nocaps支持,但ctrl:swap_lalt_lctl不是,如 $ grep 'ctrl:nocaps' /usr/share/X11/xkb/rules/evdev{,.lst} /usr/share/X11/xkb/rules/evdev: ctrl:nocaps = +ctrl(nocaps) /usr/share/X11/xkb/rules/evdev.lst: ctrl:nocaps Caps Lock as Ctrl $ grep 'ctrl:swap_lalt_lctl_lwin' /usr/share/X11/xkb/rules/evdev{,.lst} /usr/share/X11/xkb/rules/evdev.lst: ctrl:swap_lalt_lctl_lwin Left Alt as Ctrl, Left Ctrl as Win, Left Win as Alt $ 这使我无法使用缺less的选项,详见我的早期问题为什么一些setxkbmap选项被忽略? 作为一个额外的问题,有没有什么方法可以让我支持这些缺失的选项呢?

如何检测在Linux中的鼠标和键盘不活动

我正在开发一个应用程序在python将检查用户不活动。 有没有办法检查在Linux键按键和鼠标移动事件?

任何人都知道如何在Python中打开或closures大写locking?

当两个换档button按住一秒钟时,我试图切换大写locking开/关。 我试过使用virtkey模块,但它不工作。 该模块确实为其他键工作,所以我不认为我错误地使用该模块。 有没有人有办法做到这一点? 只是要清楚,我想实际上切换大写locking开/关,而不仅仅是LED。 谢谢!

在python中从键盘读取原始input

我试图让我的键盘在Python中的原始input。 我有一个带有可编程按键的罗技游戏键盘,但罗技不提供Linux驱动程序。 所以我想我可以(尝试)写我自己的驱动程序。 在认为解决scheme可能是这样的: with open('/dev/keyboard', 'rb') as keyboard: while True: inp = keyboard.read() -do something- 英语不是我的母语。 如果您发现错误,请纠正。

Xkb:如何将键码转换为keysym

我只是试图采取一个KeyCode和一个修饰符掩码,并将其转换为使用Xkb扩展名的KeySym。 我似乎无法弄清楚为什么这是行不通的。 它明显的修改不匹配,但我不知道为什么。 我甚至不知道我是否正确转换组。 #include <stdio.h> #include <stdlib.h> #include <X11/Xh> #include <X11/XKBlib.h> void check(XkbDescPtr keyboard_map, KeyCode keycode, unsigned int mask) { //What the hell is diff between XkbKeyGroupInfo and XkbKeyNumGroups? unsigned char info = XkbKeyGroupInfo(keyboard_map, keycode); int num_groups = XkbKeyNumGroups(keyboard_map, keycode); int key_width = XkbKeyGroupsWidth(keyboard_map, keycode); //int num_syms = XkbKeyNumSyms(keyboard_map, keycode); //Get the group unsigned […]

如何在Linux上使用input子系统来获取键盘事件

我正在用C写一个Linux程序,我需要截取某些键盘笔划。 使用input子系统(读/写/ dev /input/事件X),我可以接收键盘笔画(使用“读取”function)或模拟键盘笔画(使用“写入”function)。 当使用“读”function时,我可以捕捉用户的键盘笔画,但这个事件是传播的,我不知道如何使用它。