On Sat, 2014-08-16 at 22:45 -0400, Chris Moller wrote:
> 
> On 08/16/14 22:09, David B. Lamkins wrote:
> 
> > There are two small tweaks that I'd like to see w.r.t. key mapping and
> > binding:
> > 
> > 1. GNOME binds alt-` to rotate through an applications windows, making
> > this keystroke unavailable for ◊ in aplwrap. Through trial and error I
> > discovered that I can use ctrl-alt-` instead.
> > 
> > While documenting this would be OK, it's still inconsistent with the
> > behavior of the rest of the alt-key mappings. Is it possible to disable
> > the GNOME intercept on a per-app basis? Failing that, perhaps ◊ could be
> > duplicated on some other keytop to give folks who don't read
> > documentation a chance to use that key.
> 
> Don't know about GNOME, but there's no way in KDE to disable or remap
> that binding.  That's why I put diamond on alt-shift-D, D-for-diamond.

Ah. That's what I get for using ]KEYB as a reference.

> 
> > 
> > 2. With laptops, netbooks and other compact devices, keys like Break,
> > PrintScreen, SysRequest, ScrollLock, Pause and Break are disappearing.
> > (None of the keyboards that I use have a Break key.) Would it be
> > possible to add a second binding for the APL attention key? It's going
> > to be a challenge to find something that isn't either already bound or
> > not readily available in international keyboard layouts. Perhaps ctrl-.
> > (ctrl-period)?
> 
> Do your keyboards have a "Windows" key?  That key shows up in GDK as
> GDK_KEY_Super_L, making it possible for ctrl-Windows to be used as an
> interrupt.  (I just tried it.)
> 

Yes, all my keyboards do have a Windows key.

Patch attached for enabling APL attention via ctrl-break,
ctrl-left_super (a.k.a. Windows) and ctrl-period.

diff --git a/src/aplwrap.c b/src/aplwrap.c
index dd608dd..fffe10f 100644
--- a/src/aplwrap.c
+++ b/src/aplwrap.c
@@ -233,7 +233,9 @@ key_press_event (GtkWidget *widget, GdkEvent *event, gpointer user_data)
 #endif
 
   if (key_event->state == GDK_CONTROL_MASK &&
-      key_event->keyval == GDK_KEY_Break) {
+      (key_event->keyval == GDK_KEY_Break ||
+       key_event->keyval == GDK_KEY_period ||
+       key_event->keyval == GDK_KEY_Super_L)) {
     if (apl_pid != -1) kill ((pid_t)apl_pid, SIGINT);
     return FALSE;
   }

Reply via email to