Articles of 隐藏

如何将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/ )

创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 }

PyUSB发送HID报告

UPDATE 我pipe理它正确地发送数据。 对于任何人遇到同样的问题,我用下面的代码: data=[0x00, 0x04, 0x04, 0xFF, 0xFF, 0xFF, 0x00, 0x00] result=dev.ctrl_transfer(0x21, 0x9, wValue=0x200, wIndex=0x00, data_or_wLength=data) (这是根据这里发布的答案: 链接 ) 但是我不明白,为什么我要用 bmRequestType=0x21 bRequest=0x9 wValue=0x200 如果有人能更详细地解释,我将不胜感激。 我只是想学习。 初始请求: 我拼命地试图发送一个简单的报告到HID设备使用PyUSB。 使用“SimpleHIDwrite”我确认,该设备工作正常。 我想发送这些数据: 报告ID:00 数据:[00,04,04,FF,FF,FF,00,00] 使用SimpleHIDwrite发送数据 我是相当新的Python和USB,我不知道如何使用dev.ctrl_transfer或dev.write这样做。 此外,还有一些关于发送数据到HID设备的文章,但我不知道如何解决我的问题。 请有人指点一下我的方向吗? 非常感谢你! 这里有一些更多的细节: # based on https://github.com/walac/pyusb/blob/master/docs/tutorial.rst import usb.core import usb.util # find our device # dev = usb.core.find(idVendor=0xfffe, idProduct=0x0001) dev […]

Windows:启动一个隐藏的新进程(无窗口)

我想执行一个第三方程序(在我的情况下,VLC)没有任何窗口popup在Windows中。 我正在运行我的Java程序作为一个Windows服务工作正常,但是当我启动VLC使用Runtime.exec()然后popup一个窗口,不pipe我做什么。 VLC有一些命令行参数可以阻止GUI,但是会popup一个黑色的控制台 – 效果并不好。 所以:任何想法如何从Java启动一个外部程序,所以没有可见的窗口显示? (它在Mac OS X中工作得很好,我认为Linux将是相同的) 我知道有一种方法可以直接将libVLC集成到您的Java程序中,但该选项对我无效。

在Windows操作系统上的文件夹设置“隐藏”属性?

试图隐藏文件夹没有成功。 我发现这个: import ctypes ctypes.windll.kernel32.SetFileAttributesW('G:\Dir\folder1', 2) 但它对我没有用。 我究竟做错了什么?