如何使用 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++ 获取数字锁定状态? 的相关文章

  • 如何在另一个应用程序中挂钩 api 调用

    我正在尝试挂钩另一个应用程序的 ExtTextOut 和 DrawTextExt GDI 方法调用 我知道我需要使用 GetProcAddress 来查找 gdi32 dll 中那些方法的地址 并用我的函数的地址覆盖我想要挂钩的进程中的地址
  • 在 OnModelCreating 期间设置列名称

    Issue 我目前正在尝试通过设置的属性为我的表及其列添加前缀 我正在使用实体框架核心 我已经正确地为表名添加了前缀 但我似乎无法弄清楚列的前缀 我有一种感觉 我需要使用反射 我已经留下了我的 可能很糟糕的 反思尝试 有人有办法在实体中设置
  • 有没有办法在 xcode 上使用 c++0x ?我想使用 gcc 4.4 或更高版本

    我想使用 gcc 4 4 或更高版本进行 iphone 开发 有人知道怎么做吗 不 你不知道 相信我 你不会 Apple 仍保留 gcc 4 2 1 因为 4 2 2 及更高版本使用 GPLv3 这意味着他们必须放弃对其平台的控制 对于 i
  • 将完整模板参数值映射到原始类型

    我想将数字映射到类型 在这个例子中 我将创建一个函数 将 sizeof 结果映射到有符号的原始类型 我想知道是否有更好的方法来完成我在现代 C 中所做的事情 即采用模板化值并将其转换为类型 现在 这可以将大小转换为已知类型 但我似乎无法在标
  • std::call_once 可重入且线程安全吗?

    std call once http en cppreference com w cpp thread call once是线程安全的 但它也是可重入的吗 我使用 VS2012 调试和发布 进行的测试表明 调用std call once从单
  • 是否存在指向不同类型的指针具有不同大小的平台?

    C 标准允许指向不同类型的指针具有不同的大小 例如sizeof char sizeof int 是允许的 但是 它确实要求如果将指针转换为void 然后转换回其原始类型 它必须与其原始值进行比较 因此 从逻辑上来说 sizeof void
  • 将表(行)与 OpenXML SDK 2.5 保持在一起

    我想在 Word 文档中生成多个表 每行 2 行 但我想将这两行保留在一起 如果可能的话 new KeepNext 第一行不起作用 new KeepNext 第一行的最后一段不起作用 new CantSplit 放在桌子上不起作用 在所有情
  • 获取 boost Spirit 语法中的当前行

    我正在尝试使用 boostspirit 获取正在解析的文件的当前行 我创建了一个语法类和结构来解析我的命令 我还想跟踪在哪一行找到命令并将其解析到我的结构中 我将 istream 文件迭代器包装在 multi pass 迭代器中 然后将其包
  • C# 编译器不会优化不必要的强制转换

    前几天 在写答案的时候这个问题 https stackoverflow com questions 2208315 why is any slower than contains在这里 关于溢出 我对 C 编译器感到有点惊讶 它没有按照我的
  • 根据对象变量搜索对象列表

    我有一个对象列表 这些对象具有三个变量 ID 名称和值 这个列表中可能有很多对象 我需要根据ID或Name找到一个对象 并更改值 例子 class objec public string Name public int UID public
  • 析构函数中的异步操作

    尝试在类析构函数中运行异步操作失败 这是代码 public class Executor public static void Main var c1 new Class1 c1 DoSomething public class Class
  • 引用/指针失效到底是什么?

    我找不到任何定义指针 引用无效在标准中 我问这个问题是因为我刚刚发现 C 11 禁止字符串的写时复制 COW 据我了解 如果应用了 COW 那么p仍然是一个有效的指针并且r以下命令后的有效参考 std string s abc std st
  • bash "&" 不打印 "[1]+ Done "

    我在 bashrc 中调用一个脚本来打印打开终端时收到的新消息数 我希望该调用在访问网络时是非阻塞的 有时需要几秒钟 这意味着我无法使用终端直到完成 但是如果我输入 mailcheck 在我的 bashrc 中 它工作正常 但然后打印一个空
  • 使用 GCC 生成可读的程序集?

    我想知道如何使用GCC http en wikipedia org wiki GNU Compiler Collection在我的 C 源文件中转储机器代码的助记符版本 这样我就可以看到我的代码被编译成什么 你可以使用 Java 来做到这一
  • SVN 不断提示我输入密码并拒绝缓存我的凭据

    环境 Eclipse Indigo Ubuntu 11 04 Subclipse 1 6 SVN 客户端 Subclipse RabbitVCS 我通过 svn ssh 连接 我的网址如下所示 svn ssh 我的名字 我的域名 路径 我可
  • 逆向工程 ASP.NET Web 应用程序

    我有一个 ASP NET Web 应用程序 我没有源代码 该 bin 包含 10 个程序集和一个 compiled 文件 我在 App Code dll 上使用 Reflector 它向我显示了类和命名空间之类的东西 但它太混乱了 有没有什
  • .NET 4 的条件编译[重复]

    这个问题在这里已经有答案了 可能的重复 条件编译和框架目标 https stackoverflow com questions 2923210 c sharp conditional compilation and framework ta
  • 如何调试 .NET 运行时中的内部错误?

    我正在尝试调试一些处理大文件的工作 代码本身works 但 NET 运行时本身会报告零星错误 对于上下文 这里的处理是一个 1 5GB 文件 仅加载到内存中一次 在循环中处理和释放 故意尝试重现此否则不可预测的错误 我的测试片段基本上是 t
  • 将 bash 脚本作为守护进程运行

    我有一个脚本 它每 X 次运行我的 PHP 脚本 bin bash while true do usr bin php f my script php echo Waiting sleep 3 done 我怎样才能将它作为守护进程启动 要从
  • INotifyPropertyChanged 和 propertyName

    我一直不确定它的含义propertyName实施时INotifyPropertyChanged 所以一般来说你实现INotifyPropertyChanged as public class Data INotifyPropertyChan

随机推荐

  • 在 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