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/ )

Windows批处理脚本来取消隐藏病毒隐藏的文件

由于我正在把许多人的文件隐藏在闪存驱动器病毒中,所以我给他们一个使用attrib (或使用Linux)的Windows命令行来解决感染文件被删除时的问题,并且他们的文件仍然“丢失”。 命令删除文件和文件夹属性系统,隐藏和arquive(不是真的需要): attrib -s -h -a /s /d <drive letter>:\*.* 有谁知道如何使脚本来提示用户的驱动器号或文件夹? 我已经看到了一些这样的软件,但我认为这会更好。 谢谢! [解决]使用Cheeso的代码作为基础解决 @ECHO OFF ECHO "Enter Drive letter" set /p letter= attrib -s -h -a /s /d %letter%:*.* [改进了一下] @ECHO OFF ECHO Type the drive letter. ONLY the letter. ECHO ALL FILES ARE GOING TO BE MODIFIED!!! set /p letter= ECHO %letter%: […]

如何为RawInput HID设备获取人类可读的名字?

我正在将一个应用程序从DirectInput切换到RawInput进行游戏手柄处理,我想为每个游戏手柄提供一个可读的描述。 理想的是设备pipe理器中出现的设备文本,但USB产品描述也可以。 任何方法都应该没有pipe理员权限。 到目前为止,我已经find了一组线索 : HKLM\SYSTEM\CurrentControlSet\Control\MediaProperties\PrivateProperties\Joystick\OEMregistry中似乎有一个文本字段,它与DirectInput提供的名称相同。 这不是完美的 – 我有一个游戏手柄,在设备pipe理器中出现英文,但在registry中列为氀。 有没有办法从WM_INPUT提供的HANDLE到设备pipe理器描述? HidD_GetProductString看起来很有希望,但我不知道如何从RawInput句柄获取Hid顶级集合句柄。 编辑:我有一个设备实例path(例如\\?\HID#VID_1267&PID_A001#8&1d630df6&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} ,这可能足以从SetupAPI中提取我需要的信息。如何达到这个给定的实例path?

如何屏幕捕捉,除了一些窗口

情况 :我有一个通过互联网进行屏幕共享的软件,其中一个用户充当演讲者,其他用户充当观众/参与者。 除演示窗外,演讲者还有一组屏幕上出现的非共享窗口(用于开始共享/停止共享等的button栏,Skype窗口等)。 演示者可以从屏幕共享软件的设置中进行configuration,使这些非共享窗口不可见(即,它们不会出现在正在发送给与会者的屏幕共享中,但它们后面的窗口内容将显示在屏幕截图中)。 屏幕截图以大约每秒10帧或更快的速度发送。 问题 :如何以编程方式捕获屏幕,除了这些非共享-Windows窗口? 备注 : 由于较高的帧每秒值,我不能最小化/最大化/设置这些窗口的alpha,因为那么窗口将闪烁。 该应用程序是用Win32 C ++编写的。 我会使用分层的窗口,但由于Windows 7桌面组合function,这是不可用的现成的(在Windows 8中,您不能使用DwmEnableComposition暂时和编程方式禁用组成) 我可以对Windows XP / 2000/7等使用分层窗口方法,对Windows 8使用不同的方法(如果有的话),尽pipe我更喜欢一个适用于所有系统的单个进程 我还可以尝试通过捕获单个图像(桌面,需要捕获的窗口)和使用它们的z-index来创build最终图像来“撰写”屏幕截图,但是由于所需的每秒帧数,这个过程会太慢。