Old-school C stumper - 古代XWindows / Motif应用程序忽略了大多数键盘输入

时间:2011-01-27 02:42:48

标签: c++ linux keyboard motif x11

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

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

我将这些相同的可执行文件复制到另一台Centos 5计算机上,然后在那里,密钥仍无效。我花了很多时间看两个环境,但无法弄清楚两者之间有什么不同。然后我重新启动了我的机器(应用程序神奇地工作的机器),现在键也不再适用于该机器。我能想到的任何事情都不会让钥匙再次得到认可。

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

我会查看你的keybindings和xmodmap。

(很长一段时间以来我不得不去做那种事情。)

我无法想象它为什么像你描述的那样“咬合”;但也许你的旧应用程序在内存中做了某种覆盖,或类似的东西。

应用程序关闭后,似乎可能会持续存在;也许某些事情是在调试器中触发的,由于某些其他条件而在运行时没有发生。

祝你好运