如何使用 C/C++ 获取数字锁定状态?

2023-12-30

我读过 Gdk 论坛链接,上面说从 3.0 版本开始就实现了获取 num lock state api。但我使用的是 2.4 版本,无法更新到 3.0 版本,因为我需要支持较低的 Linux 版本。这是讨论链接:

http://mail.gnome.org/archives/commits-list/2010-July/msg00259.html http://mail.gnome.org/archives/commits-list/2010-July/msg00259.html

那么,还有其他方法可以使用内部 Linux 命令获取数字锁定状态吗?

问候, 视界


获取 NumLock 状态的示例代码。让foo.c be:

#include <stdio.h>
#include <X11/Xlib.h>

int main(void) {  
   Display *dpy = XOpenDisplay(":0"); 
   XKeyboardState x;
   XGetKeyboardControl(dpy, &x);
   XCloseDisplay(dpy);
   printf("led_mask=%lx\n", x.led_mask);
   printf("NumLock is %s\n", (x.led_mask & 2) ? "On" : "Off");
   return 0;
}

然后在 Dell 笔记本电脑上使用 CentOS 5 进行测试,结果如下:

gcc foo.c -o foo -lX11
foo
led_mask=2
NumLock is On

或者你可以做一些事情popen("xset q | grep LED");.

掩码的第二位对于 NumLock 来说相当常见,但我不相信它是有保证的。

原答案:一个好的起点是xev,可用约20年:

   xev

您可以通过以下方式解码关键事件:

foobar (XKeyEvent *bar) {
   char dummy[20];
   KeySym key;
   KeySym keyKeypad;
   XLookupString(bar, dummy, sizeof dummy, &key, 0);
   keyKeypad = XKeycodeToKeysym(..., bar->keycode, NUMLOCK_Mask);
   if (IsKeypadKey(keyKeypad))
      ...;
   // ...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 C/C++ 获取数字锁定状态? 的相关文章

  • 如何在c++中读取pcap文件来获取数据包信息?

    我想用 C 编写一个程序来读取 pcap 文件并获取数据包的信息 例如 len sourc ip flags 等 现在我找到了如下代码 我认为它会帮助我获取信息 但是我有一些疑问 首先我想知道应该将哪个库添加到我的程序中 然后什么是 pca
  • 计算 Richtextbox 中所有单词的最有效方法是什么?

    我正在编写一个文本编辑器 需要提供实时字数统计 现在我正在使用这个扩展方法 public static int WordCount this string s s s TrimEnd if String IsNullOrEmpty s re
  • 提交后禁用按钮

    当用户提交付款表单并且发布表单的代码导致 Firefox 中出现重复发布时 我试图禁用按钮 去掉代码就不会出现这个问题 在firefox以外的任何浏览器中也不会出现这个问题 知道如何防止双重帖子吗 System Text StringBui
  • C中的malloc内存分配方案

    我在 C 中尝试使用 malloc 发现 malloc 在分配了一些内存后浪费了一些空间 下面是我用来测试 malloc 的一段代码 include
  • 如何创建包含 IPv4 地址的文本框? [复制]

    这个问题在这里已经有答案了 如何制作一个这样的文本框 我想所有的用户都见过这个并且知道它的功能 您可以使用带有 Mask 的 MaskedTestBox000 000 000 000 欲了解更多信息 请参阅文档 http msdn micr
  • 获取两个工作日之间的天数差异

    这听起来很简单 但我不明白其中的意义 那么获取两次之间的天数的最简单方法是什么DayOfWeeks当第一个是起点时 如果下一个工作日较早 则应考虑在下周 The DayOfWeek 枚举 http 20 20 5B1 5D 3a 20htt
  • 为什么 Google 测试会出现段错误?

    我是 Google Test 的新手 正在尝试提供的示例 我的问题是 当我引入失败并设置GTEST BREAK ON FAILURE 1 或使用命令行选项 GTest 将出现段错误 我正在考虑这个例子 https code google c
  • 将 Word 文档另存为图像

    我正在使用下面的代码将 Word 文档转换为图像文件 但是图片显得太大 内容不适合 有没有办法渲染图片或将图片保存到合适的尺寸 private void btnConvert Click object sender EventArgs e
  • 在 Visual Studio 2010 中从 Fortran 调用 C++ 函数

    我想从 Fortran 调用 C 函数 为此 我在 Visual Studio 2010 中创建了一个 FORTRAN 项目 之后 我将一个 Cpp 项目添加到该 FORTRAN 项目中 当我要构建程序时出现以下错误 Error 1 unr
  • 在一个平台上,对于所有数据类型,所有数据指针的大小是否相同? [复制]

    这个问题在这里已经有答案了 Are char int long 甚至long long 大小相同 在给定平台上 不能保证它们的大小相同 尽管在我有使用经验的平台上它们通常是相同的 C 2011 在线草稿 http www open std
  • DbContext 和 ObjectContext 有什么区别

    From MSDN 表示工作单元和存储库模式的组合 使您能够查询数据库并将更改分组在一起 然后将这些更改作为一个单元写回存储 DbContext在概念上类似于ObjectContext 我虽然DbContext只处理与数据库的连接以及针对数
  • 如何在 32 位或 64 位配置中以编程方式运行任何 CPU .NET 可执行文件?

    我有一个可在 32 位和 64 位处理器上运行的 C 应用程序 我试图枚举给定系统上所有进程的模块 当尝试从 64 位应用程序枚举 32 位进程模块时 这会出现问题 Windows 或 NET 禁止它 我认为如果我可以从应用程序内部重新启动
  • 使用自定义堆的类似 malloc 的函数

    如果我希望使用自定义预分配堆构造类似 malloc 的功能 那么 C 中最好的方法是什么 我的具体问题是 我有一个可映射 类似内存 的设备 已将其放入我的地址空间中 但我需要获得一种更灵活的方式来使用该内存来存储将随着时间的推移分配和释放的
  • 等待进程释放文件

    我如何等待文件空闲以便ss Save 可以用新的覆盖它吗 如果我紧密地运行两次 左右 我会得到一个generic GDI error
  • 如何在非控制台应用程序中查看 cout 输出?

    输出到调试窗口似乎相当繁琐 我在哪里可以找到cout如果我正在编写非控制台信息 则输出 Like double i a b cout lt lt b lt lt endl I want to check out whether b is z
  • 按 Esc 按键关闭 Ajax Modal 弹出窗口

    我已经使用 Ajax 显示了一个面板弹出窗口 我要做的是当用户按 Esc 键时关闭该窗口 这可能吗 如果有人知道这一点或以前做过这一点 请帮助我 Thanks 通过以下链接 您可以通过按退出按钮轻松关闭窗口 http www codepro
  • 调用堆栈中的“外部代码”是什么意思?

    我在 Visual Studio 中调用一个方法 并尝试通过检查调用堆栈来调试它 其中一些行标记为 外部代码 这到底是什么意思 方法来自 dll已被处决 外部代码 意味着该dll没有可用的调试信息 你能做的就是在Call Stack窗口中单
  • WebSocket安全连接自签名证书

    目标是一个与用户电脑上安装的 C 应用程序交换信息的 Web 应用程序 客户端应用程序是 websocket 服务器 浏览器是 websocket 客户端 最后 用户浏览器中的 websocket 客户端通过 Angular 持久创建 并且
  • 无法显示 Laravel 欢迎页面

    我的服务器位于 DigitalOcean 云上 我正在使用 Ubuntu 和 Apache Web 服务器 我的家用计算机运行的是 Windows 7 我使用 putty 作为终端 遵循所有指示https laracasts com ser
  • 当从finally中抛出异常时,Catch块不会被评估

    出现这个问题的原因是之前在 NET 4 0 中运行的代码在 NET 4 5 中因未处理的异常而失败 部分原因是 try finallys 如果您想了解详细信息 请阅读更多内容微软连接 https connect microsoft com

随机推荐

  • 在 Python 和 Pandas 中使用 dd.mm.yyyy 读取 csv

    我正在读取德国日期格式的 csv 文件 看起来在这篇文章中效果很好 使用 pandas python 从导入的 CSV 中选择日期 https stackoverflow com questions 28025671 picking dat
  • android.location.Location 设置器未按预期工作

    我需要根据一些纬度和经度值创建一个位置对象 而不需要通过位置提供程序 我执行以下操作 Location l new Location l setLatitude 32 l setLongitude 43 但是 这些值设置不正确 因为两者ge
  • 节点包 (Grunt) 已安装但不可用

    我正在尝试建立一个github jquery ui 库 https github com jquery jquery ui using grunt 但是运行后npm install我仍然无法按照以下命令运行命令自述文件 https gith
  • 在 Java 上提取形状特征的傅里叶变换和傅里叶描述符

    我正在尝试构建一个简单的系统来使用傅立叶描述符识别简单的形状 我在我的程序中使用快速傅立叶变换的实现 链接如下 http www wikijava org wiki The Fast Fourier Transform in Java 28
  • 如何通过现有对象上的表达式树调用构造函数?

    我试图为已经存在的对象调用反序列化构造函数 如何使用表达式树做到这一点 I tried Create an uninitialized object T graph T FormatterServices GetUninitializedO
  • 为什么我的卸载方法没有被调用?

    我的 VS 2008 创建的安装程序不调用覆盖Uninstall我的安装程序类中的方法 为什么 这Install方法被调用 我的安装程序类如下所示 RunInstaller true public partial class Install
  • Android 版 Firefox 中 onload 事件期间 window.innerWidth 的值错误?

    好的 我面临的问题是 我的移动 Firefox 浏览器无法检索正确的值window innerWidth document documentElement clientWidth 或者甚至是a的宽度div样式设置为在页面加载后占据整个客户端
  • Bash 命令行参数,替换变量的默认值

    我有一个脚本 其中有多个输入文件 通常这些文件是存储在标准位置并由脚本调用的默认值 但是 有时需要使用更改的输入来运行它 在脚本中 我当前有三个变量 A B 和 C 现在我想用非默认的 B 运行它 明天我可能想用非默认的 A 和 B 运行它
  • 在 VS2012 中发布构建事件..运行批处理文件

    我正在尝试在 Visual Studio 中的构建后事件中运行批处理文件 推荐我们可以在 Visual Studio 中的构建后事件命令行中执行 bat 文件吗 https stackoverflow com questions 14913
  • FBAudience Network 作为框架集成

    我正在将 Facebook Audience Network 集成到插页式和奖励类型的广告中 我正在尝试将其集成为框架而不是项目中 当我尝试通过测试用例测试它时 它在这一行之后失败 self fbInterstitialAd FBInter
  • Python中N-Gram、tf-idf和Cosine相似度的简单实现

    我需要比较存储在数据库中的文档并得出 0 到 1 之间的相似度分数 我需要使用的方法必须非常简单 实现普通版本的 n gram 可以定义使用多少克 以及 tf idf 和余弦相似度的简单实现 有什么程序可以做到这一点吗 或者我应该从头开始写
  • DrawUserPrimitives无效操作异常

    我试图在 XNA 中使用以下代码绘制一个三角形 VertexPositionColor vertices new VertexPositionColor 3 vertices 0 Position new Vector3 0 5f 0 5f
  • 动画 UIView 过渡,例如将点扩展为圆圈

    在我的 iPhone 应用程序中 我需要实现不同类型的转换 那是 从当前视图打开下一个视图 它像一个点 并且点像一个圆圈一样慢慢扩大 在圆圈中下一个视图将部分显示 最后圆圈完全扩大 下一个视图完全显示 我搜索了很多像 CATransitio
  • 插入sql数据库时处理大量数据

    在我的代码中 用户可以上传一个 Excel 文档 希望包含其电话联系人列表 作为开发人员 我应该读取该 Excel 文件 将其转换为数据表并将其插入数据库 问题是 一些客户有大量的联系人 比如 5000 个甚至更多的联系人 当我尝试将这么多
  • 使用 COALESCE 函数在变量中附加消息

    下面是我的代码 DECLARE msg NVARCHAR MAX NULL WITH CTE AS SELECT A AS Message UNION SELECT B AS Message UNION SELECT C AS Messag
  • GCC 对弱 const 变量的优化错误

    我有一种奇怪的感觉gcc处理事情时的行为弱常量变量在不同的优化级别 即 O0 or O1 这是代码 def h 声明 const int var int copy int do copy void weak c weak var定义 do
  • SQL Server 2005,批量更新或插入

    我正在寻找一种解决方案来执行插入 重复键更新等 SQL Server 2005 中的操作 此操作可能会插入或更新大量条目 SQL Server 2008 有一个简洁的 MERGE 操作 可以完美地完成此操作 问题是我们只能使用 SQL Se
  • node.js:从标准输入读取同步?

    是否可以从node js中的stdin同步读取 因为我正在用 JavaScript 编写一个 Brainfuck 的 JavaScript 编译器 只是为了好玩 Brainfuck支持需要同步实现的读操作 我试过这个 const fs re
  • AJAX 请求中的内容类型和数据类型是什么?

    POST 请求中的内容类型和数据类型是什么 假设我有这个 ajax type POST url v1 user datatype application json contentType text plain success functio
  • 如何使用 C/C++ 获取数字锁定状态?

    我读过 Gdk 论坛链接 上面说从 3 0 版本开始就实现了获取 num lock state api 但我使用的是 2 4 版本 无法更新到 3 0 版本 因为我需要支持较低的 Linux 版本 这是讨论链接 http mail gnom