*** empty log message ***
authorroot <root>
Mon, 2 Jan 2006 21:17:01 +0000 (21:17 +0000)
committerroot <root>
Mon, 2 Jan 2006 21:17:01 +0000 (21:17 +0000)
src/keyboard.C
src/rxvtperl.h
src/rxvtperl.xs

index 6b84897d9402c30af77a17c4da23a9d184572469..738f1aefeeee5105a3c1c3313dbce588cbf02a21 100644 (file)
@@ -5,6 +5,7 @@
 
 #include <cstring>
 
+#include "rxvtperl.h"
 #include "keyboard.h"
 #include "command.h"
 
@@ -74,6 +75,8 @@ output_string (rxvt_term *rt, const char *str)
 {
   if (strncmp (str, "command:", 8) == 0)
     rt->cmd_write ((unsigned char *)str + 8, strlen (str) - 8);
+  else if (strncmp (str, "perl:", 5) == 0)
+    PERL_INVOKE((rt, HOOK_KEYBOARD_COMMAND, DT_STRING, str + 5, DT_END));
   else
     rt->tt_write ((unsigned char *)str, strlen (str));
 }
index 27e75caeb89545f106e57a897e8e3ac0c35d2174..3500936f33fc9d7fde7ea48d135a27e2028b19c6 100644 (file)
@@ -15,6 +15,7 @@ enum data_type {
   DT_END,
   DT_INT,
   DT_LONG,
+  DT_STRING,
 };
 
 enum hook_type {
@@ -38,6 +39,8 @@ enum hook_type {
   HOOK_REFRESH_BEGIN,
   HOOK_REFRESH_END,
 
+  HOOK_KEYBOARD_COMMAND,
+
   HOOK_NUM,
 };
 
index 7f040a29a47cf0256543140d33bc4eedbe91cecc..92aaebcdbf2d99230ab9a0449e9f5820a2c53076 100644 (file)
@@ -243,6 +243,10 @@ rxvt_perl_interp::invoke (rxvt_term *term, hook_type htype, ...)
           XPUSHs (sv_2mortal (newSViv (va_arg (ap, long))));
           break;
 
+        case DT_STRING:
+          XPUSHs (sv_2mortal (newSVpv (va_arg (ap, char *), 0)));
+          break;
+
         case DT_END:
           {
             va_end (ap);
@@ -305,6 +309,7 @@ BOOT:
   set_hookname (TTY_ACTIVITY);
   set_hookname (REFRESH_BEGIN);
   set_hookname (REFRESH_END);
+  set_hookname (KEYBOARD_COMMAND);
 
   sv_setpv (get_sv ("urxvt::LIBDIR", 1), LIBDIR);
 }