草庐IT

windows - 交换 alt 键功能

我需要在Windows7中交换Alt键功能。一家大公司需要为在打字机上书写的老人提供此功能,打字机左侧有变音符号键,但Win7是为此目的,现在正在处理具有正确的Alt。经过两天的研究,我找到了一个驱动程序解决方案。我需要原始Windows7驱动程序的源代码(两个.sys文件似乎是键盘驱动程序),并可能在WindowsDDK中修改它们。或者我需要制作一个可以与默认驱动程序一起使用的额外驱动程序。如我所见,解决方案将使用C或C++。但是我必须走什么路才能做到这一点?我应该采取什么步骤?限制是:一次系统重启仅用于驱动程序安装。一种在Win7中工作时交换Alt键的简单方法(通过同时按下Alt键

c++ - 附加 10 键键盘的独立输入

我正在用C++编写WindowsDirectX11软件,我想从常规键盘和10键小键盘接收输入。我希望次要用户能够从10键键盘输入,而不会影响主要用户对全键盘的使用。例如,如果主要用户正在文本框输入,我希望次要用户能够将10键数据发送到软件以单独处理,这样就不会影响文本框输入。我目前正在为鼠标和键盘使用DirectInput。但如果有人知道通过WindowsAPI的解决方案,我也会考虑。当我在DirectInput中创建我的键盘设备时,我目前使用的是GUID_SysKeyboard值,它将两个键盘合二为一,这样我的软件就无法辨别键盘输入的来源。是否可以使用EnumDevices来识别两个

ruby - 如何检查是否在 Ruby 和 Windows 控制台中按下了箭头键

我正在使用Ruby2.1.5和Windows控制台。我需要能够在不停止执行的情况下扫描按键。我需要能够专门检测箭头键。我已经尝试了很多关于其他问题的推荐方法,但是它们都不能在Windows控制台上工作或者不能检测到箭头键。不显示方向键require'io/console'loopdopSTDIN.getchend运行没有错误,但似乎没有从输入缓冲区读取,因为在使用Ctrl-C退出程序后,所有按下的键都显示在控制台上require'io/wait'defchar_if_pressedbeginsystem("sttyraw-echo")#turnrawinputonc=nilif$std

c++ - 使用 `SendInput` 时如何处理按下的 Windows Logo 键?

我的应用程序使用SendInput合成其他应用程序中的击键。这几乎可以工作,除了由于我无法更改的情况,左Windows键在发送输入时将始终被物理按下。这意味着,例如,如果发送的击键是“d”键,则Windows会将击键视为其Win+D快捷方式并显示桌面,而“d”击键永远不会到达其预期目标。文档提到了这个问题,但对如何解决它却含糊不清(重点是我的):Thisfunctiondoesnotresetthekeyboard'scurrentstate.Anykeysthatarealreadypressedwhenthefunctioniscalledmightinterferewiththe

windows - 使用自动热键捕获右键单击+左键单击;意想不到的行为

我想捕获按键事件“按下鼠标右键,然后按下鼠标左键”。自动热键没问题。但是,我仍然无法让鼠标右键单独工作。1)这行得通:RButton&LButton::SendXReturn按预期工作:如果我按下鼠标右键,然后按下鼠标左键,“X”将发送到事件窗口右键单击事件由Authotkey捕获:没有当我单独按下鼠标右键时,上下文菜单出现。这是预期的结果2)这行得通~RButton&LButton::SendYReturn按预期工作:如果我按下鼠标右键,然后按下鼠标左键,“Y”将发送到事件窗口Authotkey未捕获右键单击事件:当我单独按下鼠标右键或与鼠标左键一起按下时,上下文菜单确实出现。这是预

windows - 如何在 Delphi 中处理自定义组件中的箭头键?

我正在使用delphiXE。我正在开发一个来自TPanel的组件。TApGUITab=class(Tpanel)我通过处理WMKeyDown消息来处理按下事件,但是当我按下箭头键时它没有被调用,它将焦点设置到另一个控件而不是调用事件。我现在该怎么办? 最佳答案 这很简单。只需响应WM_GETDLGCODE消息并返回Message.Result:=Message.ResultorDLGC_WANTCHARSorDLGC_WANTARROWSorDLGC_WANTTABorDLGC_WANTALLKEYS;

windows - 如何确定某个键是否被按下,只知道它在美式键盘上的位置?

考虑一下,对于Windows视频游戏,我需要确定是否按下了在美式英语键盘布局上生成`和~字符的键(通常位于Escape键下方,左键为1)。这听起来像是一个微不足道的问题,但对我来说却不是。当Windows发送键盘消息时,它会指定虚拟键码和OEM扫描码。我们不能依赖OEM扫描码,因为“值取决于OEM”——我们也不能依赖虚拟键码,因为它取决于当前事件的键盘布局。我们目前的“解决方案”是使用LoadKeyboardLayout和MapVirtualKeyEx找到在美式英语键盘布局上生成`字符的键的OEM扫描码,然后只听那个OEM扫描代码。问题是如果用户没有安装美国英语布局,这将不起作用。在W

c - 如何在 C 中读取或捕获 Ctrl+某个键或 Alt+某个键?

例如,当按下Ctrl键与任何其他键(或者可能是Alt键)的某种组合时,我想做一些事情。然后从标准输入如何在C程序中读取该组合键作为输入。我尝试使用简单的getchar()来了解这些组合的ASCII值。但它是一些1到25和一些组合键的其他值。是否有任何标准库函数来读取它们。不要问我你为什么要那样做。编辑:我的平台是Windows上的TurboC。 最佳答案 简短的回答:以特定于平台的方式。长答案:C的输入/输出概念是流标准输出和标准输入的概念。您上面提到的getchar()函数只是从标准输入流中读取。C没有任何键盘的概念,尽管键盘是一

.net - Windows - 将键盘键映射到与鼠标左键相同的操作

是一种编程方式(或更简单的方式)将某些键盘键映射到与WindowsXP/Vista中的鼠标左键相同的窗口范围内的操作。如果程序化有没有办法在.NET2.0(或更高版本)中执行此操作? 最佳答案 有一种编程方式,可以在C#中使用全局Hook。但我发现像AutoHotkey这样的工具,专为此类事情而设计,启动和运行起来要快得多。脚本也可以编译为可执行文件。 关于.net-Windows-将键盘键映射到与鼠标左键相同的操作,我们在StackOverflow上找到一个类似的问题:

c++ - 使用 c 或 c++ 运行 c 的控制台时禁用键盘键

我想在我的程序运行时禁用键盘,这意味着没有人可以使用alt+F4等。我如何才能在窗口操作系统中使用c。 最佳答案 处理WM_SYSKEYUP,WM_SYSKEYDOWN并返回0这是处理这些消息的WndProcLRESULTCALLBACKWndProc(HWNDhWnd,UINTmessage,WPARAMwParam,LPARAMlParam){intwmId,wmEvent;PAINTSTRUCTps;HDChdc;switch(message){caseWM_COMMAND:wmId=LOWORD(wParam);wmEven