- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个在 Raspberry Pi 上运行的 Motif 应用程序。出于调试目的,我在我的 PC 上使用 X Windows 服务器,并通过 Putty 使用 SSH 隧道 X。可能还值得注意的是,当我最初运行该应用程序时,输入会转到 SSH shell/Putty 窗口。单击应用程序窗口或其按钮之一会停止输入到 Putty 窗口。
小部件层次结构是:
顶层shell->滚动窗口->Form->RowColumn
然后行列小部件包含任意数量的按钮小部件。
我已经在顶级 shell 上使用 KeyPressMask 注册了一个事件处理程序,当它不起作用时,在 RowColumn 和所有按钮上。它永远不会被调用。创建的第一个按钮获得焦点(如其边框直观所示),但只有当我用鼠标单击另一个按钮时才会改变(成功检测到单击事件)。
我尝试在顶层 shell 上摆弄 XmNkeyboardFocusPolicy。我已尝试为行列小部件和第一个按钮调用 XtSetKeyboardFocus()。我尝试在创建按钮时将 XmNtraversalOn 指定为 True。什么都不管用。我非常沮丧。
我已经让按钮点击回调报告它所调用的小部件(应该是按钮)的 XtIsSensitive() 的值,并且它报告值 1(我假设 == True)。
我很乐意使用内置的 Motif 遍历例程,只要我还可以在按下返回键时模拟/检测按钮激活。我也很高兴通过显式检测按下的键来编写自己的遍历例程。我真的不在乎。我只想通过按键盘上的按钮轻松导航!
提前感谢任何可以帮助解决我的问题的人。
经过更多实验后,我发现如果我通过将应用程序放入我的 .xinitrc 中直接运行我的应用程序,那么遍历工作正常,按下空格键会使按钮闪烁,就像按下一样,但实际上不会导致按钮执行任何操作.
但是,如果我通过删除我的 xinitrc 文件并在控制台提示符下键入“startx”来运行标准窗口管理器,然后打开一个终端并从命令行运行我的应用程序,那么我会得到与运行它时相同的行为通过网络连接到我 PC 上的窗口管理器。
我突然想到这可能是基于 TTY 的。当通过 .xinitrc 运行时,应用程序在启动时没有 TTY(我相信),但是当直接从命令提示符启动时,它当然有 TTY。 TTY 会不会以某种方式消耗了所有键盘输入或其他东西?
最佳答案
默认情况下,您使用箭头键在行列中导航按钮并使用空格键激活按钮。
这是因为用TAB遍历的widget必须在TAB组中。 Row Column 小部件位于 TAB 组中,但按钮不在。 TAB 键将选择行列小部件并选择第一个按钮。然后可以使用箭头键移动到其他按钮。
激活按钮的默认键是空格键,要使用另一个键,您必须覆盖默认的事件转换表。
下面是一个使用tab遍历和返回来激活按钮的示例程序
#include <Xm/Xm.h>
#include <Xm/MainW.h>
#include <Xm/PushB.h>
#include <Xm/RowColumn.h>
int main(int argc, char* argv[]) {
XtSetLanguageProc(NULL, NULL, NULL);
XtAppContext app;
Widget toplevel = XtVaOpenApplication(&app, "traverse", NULL, 0, &argc, argv, NULL,
sessionShellWidgetClass, NULL);
Widget main_w = XmCreateMainWindow (toplevel, "main_w", NULL, 0);
Widget mainrc = XtVaCreateWidget("mainrc", xmRowColumnWidgetClass, main_w,
XmNpacking, XmPACK_COLUMN,
XmNnumColumns, 3,
XmNentryBorder, 1,
NULL);
for (int i=0; i<9; i++) {
Widget b = XtVaCreateWidget("button", xmPushButtonWidgetClass, mainrc,
XmNnavigationType, XmTAB_GROUP, // Make button a Tab Group
NULL);
// Specify Return key to activate button
XtOverrideTranslations (b, XtParseTranslationTable ("<Key>Return: ArmAndActivate()"));
XtManageChild(b);
}
XtManageChild(mainrc);
XtManageChild(main_w);
XtRealizeWidget(toplevel);
XtAppMainLoop(app);
return 0;
}
关于raspberry-pi - 无法为 Motif 应用程序获取键盘输入或遍历,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21810682/
我有一个运行 Raspbian 的 Raspberry Pi 1。我尝试在 Raspberry Pi 3 上运行 SD 卡,但它没有启动。 我已经阅读了有关升级 Raspberry Pi 2 安装以在
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我目前正在尝试RadiusNetworks发布的Raspberry Pi iBeacon教程,网址为 http://developer.radiusnetworks.com/2013/10/09/ho
我的公司使用 Raspberry Pi 3 作为产品中的嵌入式 Controller 。用户不会优雅地关闭它,他们只是扳动一个开关。为避免损坏,/boot 和/root 文件系统是只读的。这似乎是防弹
如何使用 Raspberry Pi 作为 b/w USB Tethered 手机和路由器的桥接器,使用“以太网电缆 b/w Raspberry Pi 和路由器”和“USB 电缆 b/w 手机和 Ras
我关注了一个名为Creating an Electron Application for the Raspberry Pi的博客,内容涉及使用Buster OS在Raspberry Pi中启动Elec
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve thi
我有一个树莓派,并且已经从 raspbmc.com 加载了最新的独立版本。在使用 XBMC 时,我看到 CPU 使用率始终在 90% 以上。查看 XBMC wiki 和常见问题解答后,脏区域似乎是减少
我现在正在做一个小项目。我希望 python 脚本在登录到 GUI 后自动运行。 我按照这里的步骤操作:https://www.raspberrypi.org/forums/view ... 91&t
我正在使用 Android Things 在 Raspberry Pi 上构建应用程序并且我有 7 inch touch screen ,但屏幕永远不会关闭。 是否可以像 Android 手机一样设置
我正在执行一组事件以确保 Redis 在一组嵌入式系统(包括 Raspberry PI)中运行良好。为了修复执行未对齐内存访问的 Redis 的某些代码路径(由于 Redis 3.2 中引入的更改),
我正在尝试使用 Tanuki Java Service Wrapper。 我使用的硬件是带有 Raspbian wheezy 发行版的 Raspberry Pi。 (见 http://www.rasp
我希望构建一个以全屏模式在 Raspberry Pi 上运行的应用程序。我已经尝试过 JavaFX 和基于 Swing 的应用程序,但性能非常糟糕。 在我开始使用 SDL( http://www.li
我的项目在/home/pi/app中 以npm start开头 启动操作系统后如何启动应用程序? ****西类牙文 Mi proyecto esta zh/home/pi/app Arranca la
我正在尝试安装 Kappelt gBridge在 Raspberry Pi 3 B 型上,使用本指南:https://doc.gbridge.io/selfHosted/hostItYourself.
我正在使用我的 Pi 作为文件服务器,最近当我登录时,我看到一条错误消息,指出 libarmmem.so(无法打开共享对象文件),尽管有一些建议运行 apt-get update + 升级它并没有带来
我正在尝试使用 Raspberry# 库通过 Raspberry PI 上的 GPIO 引脚(打开和关闭)执行基本任务。根据 github 上的示例:https://github.com/raspbe
如标题所述,我在将一些用户空间中断代码从另一个 armv7 嵌入式 linux 平台移植到 Raspberry Pi 2 Model B 时遇到问题。 我知道 wiringPi 库(并让它以这种方式工
我正在尝试为 Raspberry Pi B+ 交叉编译 Tensorflow-Lite。为此,我正在关注 these instructions来自官方网站,它们是: git clone https:/
我正在尝试使用 PulseAudio RTP 将音频从 Linux Mint 桌面流式传输到运行 LibreELEC (Kodi) 的 RaspberryPi 3B。我可以使用 RTP 多播成功地流式
我是一名优秀的程序员,十分优秀!