c++ - 老派的 C 树桩 - 大多数键盘输入被古老的 XWindows/Motif 应用程序忽略

标签 c++ linux keyboard motif x11

我正在恢复一个旧的 Xt/Motif 应用程序的源代码构建,该应用程序已经多年没有使用过,最后一次在 32 位 Red Hat 4 上成功构建。我主要在 64 位 Red Hat 上构建和运行它5. 该应用程序只有一个重大问题...它无法响应大多数应有的键盘输入。菜单加速器都不起作用,许多其他应该支持特定功能的修改和未修改的按键也不起作用。该应用程序识别的唯一击键是输入文本输入字段以及跨具有数据行/列的小部件的箭头键导航。

我认为这可能只是由于应用程序代码错误所致,但随后发生了一些奇怪的事情......所有按键都开始工作!我不知道我做了什么导致了这种情况的发生。我只是通过在调试器中运行代码来研究代码,应用程序开始响应键盘输入。此时,我尝试在没有调试器的情况下运行,并且按键仍然有效。然后,我尝试运行一个也出现该问题的旧版本,该版本也能正常工作。

我将这些相同的可执行文件复制到另一台 Centos 5 机器上,在那里,按键仍然不起作用。我花了很多时间研究这两个环境,但无法弄清楚两者之间有什么不同。然后我重新启动了我的机器(应用程序神奇地工作的机器),现在按键也不再在那台机器上工作。我认为无论做什么都不会导致按键再次被识别。

很明显,这个问题至少在某种程度上是环境问题。任何人都可以提供有关这里发生的事情的任何线索吗?我的环境发生了什么变化导致应用程序暂时开始正常运行?我希望有一些 Xt/Motif 专家可能知道这里发生了什么。

最佳答案

可能是“numlock”。真的。在许多最近的 X11 设置中,它被视为修饰符,如果打开,应用程序将获得键+修饰符,并且很可能以不同的方式对待它。

关于c++ - 老派的 C 树桩 - 大多数键盘输入被古老的 XWindows/Motif 应用程序忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4812181/

相关文章:

c++ - 控制 Linux 守护进程的 API

c# - 如何使用 directInput 发送释放 key ?

c++ - GetKeyState() 与 GetAsyncKeyState() 与 getch()?

c++ - 错误 : use of deleted function bool regex_match with gcc 5. 2.0

c++ - makefile 中 undefined reference

c++ - GDB:如何在调试期间检查当前行号

Android 软键盘使用按钮单击调用

c# - 空间坐标的 3D 数组

c++ - 为什么必须在何处以及为什么要放置"template"和"typename"关键字?

windows - 如何处理在 Linux 上使用无效 Windows 文件名提交给 Git 的文件?