Articles of 隐藏

python阅读HID

我想做一个程序,从附加到Linux系统的HIDinput,并从这些程序生成MIDI。 我在MIDI方面没问题,但我在HID方面苦苦挣扎。 虽然这种方法工作正常(从这里采取): #!/usr/bin/python2 import struct inputDevice = "/dev/input/event0" #keyboard on my system inputEventFormat = 'iihhi' inputEventSize = 16 file = open(inputDevice, "rb") # standard binary file input event = file.read(inputEventSize) while event: (time1, time2, type, code, value) = struct.unpack(inputEventFormat, event) print type,code,value event = file.read(inputEventSize) file.close() 当有很多事件时,CPU使用率会很高; 特别是如果跟踪鼠标,大型移动占用我系统上近50%的CPU。 我猜是因为这个时候的结构。 那么,有没有更好的方法来做到这一点在Python? 我最好不要使用非维护或旧的库,因为我希望能够分发这个代码,并使它在现代发行版上工作(所以最终用户的包pipe理器中最终的依赖关系应该很容易得到)

如何将X11键码可靠地转换回扫描码或隐藏使用ID

几乎自我解决。 背景信息 linux的键码 以下是来自:linux_xmodmap_tutorial 扫描码→您的键盘发送到电脑的号码。 对于USB键盘,它是由USB标准定义的。 键码→Linux内核用来表示键(或鼠标button/滚轮)的号码。 Linux内核将扫描码转换为键码。 Keysym→一个键的名字。 keysym被X11应用程序接收。 我可能是错的,但什么sudo evtest打印似乎像sudo evtest设置1,因为/dev/input/event*输出是相似的,至less我的系统扫描码和linux键码大多是相同的。 X11键码 xev命令打印keycode和keysym,我观察到keycode不会改变,不pipe我使用的键盘布局如何; qwerty和dvorak布局产生不同的keysym,但是相同的keycode。 尽pipe如此,它不是一个Linux密钥代码,也不隐藏使用ID,也不是任何一个扫描码集; set1,set2和set3。 如何生成的Linux键码? 根据维基(我不能张贴链接): /etc/udev/hwdb.bin将扫描码转换为键码。 显而易见的是: 该wiki说有非默认的* .hwdb文件可以编译到hwdb.bin hwdb.bin可以检测不同的键盘,并且可能会将扫描码转换为不同的键码。 对于ubuntu,我能find的唯一的hwdb文件是: /etc/udev/hwdb.d/61-keyboard-local.hwdb ,这几乎是空的。 所以,默认情况下,ubuntu会保留默认的扫描码,并将其用作我相信的键码。 如何生成X11键码 有些黑客给我们留下了一个线索: https : //www.charvolant.org/doug/xkb/html/index.html /usr/share/X11/xkb/keycodes下的扫描码到键码映射规则文件(哪一个正在使用是问题) setxkbmap -print -verbose 10打印 Trying to load rules file ./rules/evdev… Trying to load rules file /usr/share/X11/xkb/rules/evdev… 所以,上面的文件应该是控制Xkb的加载行为(Linux改变很多,所以不要期待在未来会一样)。 例: setxkbmap -print […]

使用g ++的符号可见性

我在Linux / Mac下编译了一个C ++库,其中隐藏了符号。 我已经使用_ 属性 _((visibility(“hidden”)))为我所有的类和编译选项(-c -O2 -fPIC -MMD -MP -MF)。 在Mac下,使用MacDependencies(http://code.google.com/p/macdependency/),工作完成得很好,因为我只看到我的出口(我实际上看到了前后的差异)。 但是,我注意到使用nm我仍然可以看到符号的所有名称。 这发生在Mac和Linux下。 这是为什么? 有什么办法可以避免这种情况? 最好的问候和感谢,乔

你怎么能拥有一个隐藏设备的所有权?

我想要拥有已经插入的隐藏设备的所有权,消耗它的输出,同时防止其他人(X11或terminal)消耗它。 如果我能帮上忙,我不想假装成为terminal,而是要垄断一个特定的隐藏或字符设备。 这个想法是,一些隐藏设备可能被x /terminal识别为鼠标/键盘,但第二个鼠标或键盘可以用于其他的东西,但要做到这一点,你需要确保他们不发送虚假input到开放的terminal。 有没有人有任何见解,如何做到这一点?

需要拦截HID键盘事件(然后阻止它们)

我有一个注册为HID设备的RFID USB设备(或多或less的USB键盘)。 我正在寻找一种方法来捕获这个input,并在它碰到正常的键盘事件处理程序(并输出10位数的RFID代码到控制台)之前阻止/过滤它。 我当然必须专门捕捉这个设备,并保持真正的键盘input(或传递)。 我最初的想法是阻止UDEV中的设备(所以usbhid / event / kbd内核模块没有绑定到它),并写下我自己的这个设备的基本驱动程序 – 但我不知道从哪里开始,或者如果甚至会工作。 如果我写了一个事件filter模块,它可以与事件驱动程序一致并捕获(然后过滤)来自事件驱动程序的适当input,那么什么是好的(我不确定是否可以完成这样的事情) RFID单位,但让其他一切通过。 我想这样的模块不需要太多的代码,而且会是最实用的。 帮帮我? [编辑:我应该补充说,Xorg不安装 – 控制台] cat /proc/bus/input: I: Bus=0003 Vendor=0419 Product=0912 Version=0100 N: Name="NewRoad Sem. NewRoad System PS2 Interface" P: Phys=usb-0000:00:1d.3-2/input0 S: Sysfs=/devices/pci0000:00/0000:00:1d.3/usb5/5-2/5-2:1.0/input/input20 U: Uniq= H: Handlers=sysrq kbd mouse0 event3 B: PROP=0 B: EV=120017 B: KEY=70000 0 0 e080ffdf01cfffff fffffffffffffffe B: REL=103 […]

是否有可能使计算机像蓝牙HID设备一样运行?

是否有可能使计算机像蓝牙HID设备一样运行? 也就是说,给定一台带有标准USB键盘的本地机器,其他设备可以发现这台机器并将其用作蓝牙键盘。 我想创build一个Linux或OS X应用程序(或者使用现有的应用程序,尽pipe我找不到),但是我不确定从哪里开始,或者甚至可能。 所以: 我所描述的是可能的吗? 有没有现有的应用程序,我所描述的? 如果没有应用程序已经存在(我假设没有),有蓝牙库或绑定,这将有助于? (我使用当今stream行的大多数语言都非常舒服,所以我更喜欢一个最直接适合这个任务的库,只要它在linux或OS X中可用)。 如果没有上述任何一项,蓝牙规格看起来非常密集。 是否有具体的指南或其他出发点适用于我可以阅读的问题? 我意识到,这样的应用程序很可能需要窃取正常的键盘input,可能提供了一些类似KVM的热键,用于在向主机操作系统提供input和通过蓝牙将input发送到连接的设备之间进行切换,但是我正在考虑这个问题超出了这个问题的范围。

使用Python获取鼠标三angular洲! (在Linux中)

我知道Linux从/ dev / input / mouse中发出一个9位2的恭维数据。 我也知道你可以通过/ dev / hidraw0获取数据,其中hidraw是你的USB设备从HID发出的原始数据。 我知道发送的数据是运动的三angular洲(位移),而不是位置。 通过我还可以通过“cat / dev / input / mice”查看乱码数据。 我的问题是: 你能告诉我用Python语言怎么读取这些数据? 我真的喜欢用简单的整数来获取这些数据。 但事实certificate很难。 真正的问题是阅读该死的数据。 有没有办法读取位和做算术? (目前我不担心与root用户有关的问题,请假定脚本是以root身份运行的。) (我的主要参考是http://www.computer-engineering.org/ps2mouse/ )

隐藏用户input

我试图得到一个脚本,在一个本地Windowsshell和一个cygwinshell(通过SSH),提示并读取用户input的密码。 到目前为止,我已经尝试了以下方法: 使用Term :: ReadKey并将ReadMode设置为“noecho” 结果:返回错误GetConsoleMode failed并退出 使用Term :: ReadPassword :: Win32 结果:挂起,从不提示或读取input 使用IO ::提示 结果:返回错误Cannot write to terminal并退出 使用Term :: InKey RESULT:返回错误Not implemented on MSWin32: The handle is invalid并退出 所有这些工作都在本机Windows shell(命令提示符或Power Shell)中工作,但是当我处于服务器的ssh会话中时,它们都不起作用。 真的,这是我最感兴趣的,让它在远程SSH会话中工作。 我通过安装在Windows服务器(2003 R2)上的cygwin获得ssh。 我正在使用草莓perl而不是cygwin perl(cygwin perl打破了其他perl脚本,我需要在Windows中本地运行,而不是通过ssh)。 我最好的猜测是,cygwin + Windows正在搞草莓Perl足够,它不能告诉它是什么样的环境。我正在寻找替代sshd + Windows解决scheme来探讨这一点。 这些都是我在search中find的所有方法。 有其他人有隐藏用户input他们可以build议的其他方法吗?

从Linux创build隐藏的Windows文件/文件夹

是否有可能在Windows上隐藏安装的SMB共享上创build文件? 。(点)前缀在这种情况下不起作用,因为它只适用于Linux。 基本上我正在寻找与在Windows上使用attrib +h相同的效果,但在Linux下。

创build隐藏进程(窗口不可见)

我使用的CreateProcess()启动标志设置为STARTF_USESHOWWINDOW和SW_HIDE启动一个应用程序在其窗口隐藏的背景。 我这样做是为了运行一个计划的维护任务,我不想被打扰与Windows。 在大多数情况下,窗口是隐藏的,但有些情况下,程序的窗口在你面前popup(例如谷歌的Chrome浏览器 – 我开始testing不同的应用程序,看看这是否是一次性问题,但不是)。 这种情况在Windows XP中发生得比较less,但在Vista上发生了很多。 有没有我失踪的国旗? 有没有其他的方式来创build一个窗口隐藏的过程? 谢谢! 我的示例代码是: char *ProgramName STARTUPINFO StartupInfoF; PROCESS_INFORMATION ProcessInfoF; memset(&StartupInfoF, 0, sizeof(StartupInfoF)); memset(&ProcessInfoF, 0, sizeof(ProcessInfoF)); StartupInfoF.cb = sizeof(StartupInfoF); StartupInfoF.wShowWindow = SW_HIDE; StartupInfoF.dwFlags = STARTF_USESHOWWINDOW; if (CreateProcess(ProgramName, "", 0, 0, FALSE, DETACHED_PROCESS, 0, 0, &StartupInfoF, &ProcessInfoF) == FALSE) { // error } else { // OK }