2

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

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

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

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

4

2 回答 2

2

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

于 2011-02-06T09:28:40.660 回答
1

我会调查你的键绑定和 xmodmap。

(我已经很久没有去追求那种东西了。)

我想不出它为什么会像你描述的那样“插入”;但也许您的旧应用程序正在/正在执行某种内存覆盖,或类似的事情。

关闭应用程序后,这种情况似乎可能会持续存在;并且可能在调试器中触发了某些事情,由于某些其他条件而在运行时不会发生。

祝你好运

于 2011-01-27T19:33:41.983 回答