Hi jwz. Love your work. am playing with a PDA which has no keyboard, so here is a patch to xkeycaps 2.42 that adds a -keycapsonly option. This gives me a bit more screen real estate. Done only as a quick hack, but you asked for mods :) d diff -ru ../xkeycaps-2.42/KbdWidget.c ./KbdWidget.c --- ../xkeycaps-2.42/KbdWidget.c Tue May 13 17:57:39 1997 +++ ./KbdWidget.c Thu Sep 3 13:55:10 1998 @@ -47,7 +47,9 @@ #endif { "selectCursor", "Cursor", XtRCursor, sizeof (Cursor), XtOffset (KeyboardWidget, keyboard.select_cursor), XtRString, - "crosshair" } + "crosshair" }, + { "keycapsOnly", "KeycapsOnly", XtRBoolean, sizeof (XtRBoolean), + XtOffset (KeyboardWidget, keyboard.keycaps_only), XtRImmediate, False } }; XtActionsRec keyboard_actions [] = { diff -ru ../xkeycaps-2.42/KbdWidgetP.h ./KbdWidgetP.h --- ../xkeycaps-2.42/KbdWidgetP.h Tue May 13 17:57:38 1997 +++ ./KbdWidgetP.h Thu Sep 3 13:56:07 1998 @@ -55,6 +55,7 @@ Boolean use_xtrap; /* server extension to read events. */ char *trap_data; /* The XTrap "Trap Context" */ #endif + Boolean keycaps_only; /* Don't show buttons/info panel */ struct info_labels *label_widgets; /* For info.c */ struct key_menus *key_menus; /* For commands.c */ diff -ru ../xkeycaps-2.42/KeyWidget.c ./KeyWidget.c --- ../xkeycaps-2.42/KeyWidget.c Thu Dec 18 19:32:06 1997 +++ ./KeyWidget.c Thu Sep 3 14:09:37 1998 @@ -12,7 +12,7 @@ #include #include -#include "KbdWidget.h" +#include "KbdWidgetP.h" #include "KeyWidgetP.h" #include @@ -343,7 +343,7 @@ XDrawString (dpy, window, k3_gc, x, y, k3, strlen (k3)); } - if (w->key.keycode) + if (w->key.keycode && !((KeyboardWidget)XtParent(w))->keyboard.keycaps_only) { unsigned char buf [100]; sprintf ((char *) buf, "%02X", w->key.keycode); Only in .: Makefile diff -ru ../xkeycaps-2.42/commands.c ./commands.c --- ../xkeycaps-2.42/commands.c Thu Jul 24 18:48:57 1997 +++ ./commands.c Thu Sep 3 14:44:29 1998 @@ -1351,6 +1351,17 @@ XtAddCallback (item, XtNcallback, restore_key_default, (XtPointer) widget); key_menus->popup_kids [i++] = item; + if (widget->keyboard.keycaps_only) { + /* ugh.. wish i had more time - maybe use an action on a button? */ + item = XtCreateManagedWidget ("focus", smeBSBObjectClass, menu, av, ac); + XtAddCallback (item, XtNcallback, button_pick_window, (XtPointer) widget); + key_menus->popup_kids [i++] = item; + + item = XtCreateManagedWidget ("quit", smeBSBObjectClass, menu, av, ac); + XtAddCallback (item, XtNcallback, button_quit, (XtPointer) widget); + key_menus->popup_kids [i++] = item; + } + key_menus->edit_key_box = make_edit_key_dbox (widget); key_menus->select_kbd_box = make_select_kbd_dbox (widget); return key_menus; @@ -1373,6 +1384,7 @@ XtSetArg (av [ac], XtNsensitive, sensitive); ac++; for (i = 0; i < sizeof (key_menus->popup_kids); i++) if (! key_menus->popup_kids [i]) return; + else if (i >= 5) /* leave the command items */; else XtSetValues (key_menus->popup_kids [i], av, ac); } diff -ru ../xkeycaps-2.42/defaults.h ./defaults.h --- ../xkeycaps-2.42/defaults.h Fri Jul 4 21:00:12 1997 +++ ./defaults.h Thu Sep 3 14:43:07 1998 @@ -185,6 +185,8 @@ "*keyMenu.cloneKey.label: Duplicate Key", "*keyMenu.disableKey.label: Disable Key", "*keyMenu.restoreKey.label: Restore Key to Default", + "*keyMenu.focus.label: Type At Window", + "*keyMenu.quit.label: Quit", "*editKey*keysym1.label: KeySym 1:", "*editKey*keysym2.label: KeySym 2:", @@ -456,5 +458,6 @@ { "-no_xtrap", "*useXTrap", XrmoptionNoArg,"off" }, #endif { "-keyboard", "*Keyboard.keyboard", XrmoptionSepArg, 0 }, - { "-kbd", "*Keyboard.keyboard", XrmoptionSepArg, 0 } + { "-kbd", "*Keyboard.keyboard", XrmoptionSepArg, 0 }, + { "-keycapsonly", "*Keyboard.keycapsOnly", XrmoptionNoArg, "on" }, }; diff -ru ../xkeycaps-2.42/xkeycaps.c ./xkeycaps.c --- ../xkeycaps-2.42/xkeycaps.c Thu Jul 3 12:20:22 1997 +++ ./xkeycaps.c Thu Sep 3 14:27:34 1998 @@ -307,6 +307,9 @@ XtAddEventHandler ((Widget) keyboard, 0, True, keyboard_handle_mapping_notify, 0); XtRealizeWidget (toplevel); + if (keyboard->keyboard.keycaps_only) { + XtUnrealizeWidget (box2); + } XtSetKeyboardFocus (toplevel, (Widget) keyboard); maybe_relabel_window (keyboard); diff -ru ../xkeycaps-2.42/xkeycaps.man ./xkeycaps.man --- ../xkeycaps-2.42/xkeycaps.man Mon Jan 19 07:32:31 1998 +++ ./xkeycaps.man Thu Sep 3 14:47:33 1998 @@ -48,6 +48,10 @@ .TP 4 .B \-font \fIfontname\fP Specifies the font to use to display the keycaps. +.TP 4 +.B \-keycapsonly +Displays only the keycaps, and hides the keycodes, status messages and +buttons. .SH "" The following standard X Toolkit command line arguments are commonly used with \fIxkeycaps\fP: @@ -673,7 +677,7 @@ vendor-specific keysyms. .SH UPGRADES The latest version can always be found at -http://people.netscape.com/jwz/xkeycaps/ +http://www.jwz.org/xkeycaps/ .SH SEE ALSO .BR X (1), .BR xmodmap (1),