repo: rxvt-unicode-sixel
action: commit
revision: 
path_from: 
revision_from: 502e8d89425ef71787808a895715777c5ad0c488:
path_to: 
revision_to: 
git.thebackupbox.net
rxvt-unicode-sixel
git clone git://git.thebackupbox.net/rxvt-unicode-sixel
commit 502e8d89425ef71787808a895715777c5ad0c488
Author: Emanuele Giaquinta 
Date:   Tue Aug 24 23:57:04 2010 +0000

    Remove stock keymap support.

diff --git a/src/keyboard.C b/src/keyboard.C
index 1cca5756fdc64ec46b328ec67f5c24ce56b34998..
index ..c4371c097de7b7f998a25e103b56a3984354cb11 100644
--- a/src/keyboard.C
+++ b/src/keyboard.C
@@ -64,35 +64,6 @@
  *       Ni(the size of group i) = hash_bucket_size[Ii].
  */

-#if STOCK_KEYMAP
-////////////////////////////////////////////////////////////////////////////////
-// default keycode translation map and keyevent handlers
-
-keysym_t keyboard_manager::stock_keymap[] = {
-  /* examples */
-  /*        keysym,                state, range,                  type,              str */
-//{XK_ISO_Left_Tab,                    0,     1,      keysym_t::STRING,           "\033[Z"},
-//{            'a',                    0,    26, keysym_t::RANGE_META8,           "a" "%c"},
-//{            'a',          ControlMask,    26, keysym_t::RANGE_META8,          "" "%c"},
-//{        XK_Left,                    0,     4,        keysym_t::LIST,     ".\033[.DACB."},
-//{        XK_Left,            ShiftMask,     4,        keysym_t::LIST,     ".\033[.dacb."},
-//{        XK_Left,          ControlMask,     4,        keysym_t::LIST,     ".\033O.dacb."},
-//{         XK_Tab,          ControlMask,     1,      keysym_t::STRING,      "\033"},
-//{  XK_apostrophe,          ControlMask,     1,      keysym_t::STRING,        "\033"},
-//{       XK_slash,          ControlMask,     1,      keysym_t::STRING,        "\033"},
-//{   XK_semicolon,          ControlMask,     1,      keysym_t::STRING,        "\033"},
-//{       XK_grave,          ControlMask,     1,      keysym_t::STRING,        "\033"},
-//{       XK_comma,          ControlMask,     1,      keysym_t::STRING,     "\033"},
-//{      XK_Return,          ControlMask,     1,      keysym_t::STRING,   "\033"},
-//{      XK_Return,            ShiftMask,     1,      keysym_t::STRING,   "\033"},
-//{            ' ',            ShiftMask,     1,      keysym_t::STRING,    "\033"},
-//{            '.',          ControlMask,     1,      keysym_t::STRING,        "\033"},
-//{            '0',          ControlMask,    10,       keysym_t::RANGE,   "0" "\033"},
-//{            '0', MetaMask|ControlMask,    10,       keysym_t::RANGE, "0" "\033"},
-//{            'a', MetaMask|ControlMask,    26,       keysym_t::RANGE, "a" "\033"},
-};
-#endif
-
 static void
 output_string (rxvt_term *rt, const char *str)
 {
@@ -104,42 +75,6 @@ output_string (rxvt_term *rt, const char *str)
     rt->tt_write (str, strlen (str));
 }

-static void
-output_string_meta8 (rxvt_term *rt, unsigned int state, char *buf, int buflen)
-{
-  if (state & rt->ModMetaMask)
-    {
-#ifdef META8_OPTION
-      if (rt->meta_char == 0x80)	/* set 8-bit on */
-        {
-          for (char *ch = buf; ch < buf + buflen; ch++)
-            *ch |= 0x80;
-        }
-      else if (rt->meta_char == C0_ESC)	/* escape prefix */
-#endif
-        {
-          const char ch = C0_ESC;
-          rt->tt_write (&ch, 1);
-        }
-    }
-
-  rt->tt_write (buf, buflen);
-}
-
-static int
-format_keyrange_string (const char *str, int keysym_offset, char *buf, int bufsize)
-{
-  size_t len = snprintf (buf, bufsize, str + 1, keysym_offset + str [0]);
-
-  if (len >= (size_t)bufsize)
-    {
-      rxvt_warn ("format_keyrange_string: formatting failed, ignoring key.\n");
-      *buf = 0;
-    }
-
-  return len;
-}
-
 // return: priority_of_a - priority_of_b
 static int
 compare_priority (keysym_t *a, keysym_t *b)
@@ -171,23 +106,16 @@ keyboard_manager::~keyboard_manager ()
 void
 keyboard_manager::clear ()
 {
-  keymap.clear ();
   hash [0] = 2;

-  for (unsigned int i = 0; i < user_translations.size (); ++i)
-    {
-      free ((void *)user_translations [i]);
-      user_translations [i] = 0;
-    }
-
-  for (unsigned int i = 0; i < user_keymap.size (); ++i)
+  for (unsigned int i = 0; i < keymap.size (); ++i)
     {
-      delete user_keymap [i];
-      user_keymap [i] = 0;
+      free ((void *)keymap [i]->str);
+      delete keymap [i];
+      keymap [i] = 0;
     }

-  user_keymap.clear ();
-  user_translations.clear ();
+  keymap.clear ();
 }

 // a wrapper for register_keymap,
@@ -229,8 +157,6 @@ keyboard_manager::register_user_translation (KeySym keysym, unsigned int state,
       else if (strncmp (translation, "builtin:", 8) == 0)
         key->type = keysym_t::BUILTIN;

-      user_keymap.push_back (key);
-      user_translations.push_back (translation);
       register_keymap (key);
     }
   else
@@ -254,17 +180,6 @@ keyboard_manager::register_keymap (keysym_t *key)
 void
 keyboard_manager::register_done ()
 {
-#if STOCK_KEYMAP
-  int n = sizeof (stock_keymap) / sizeof (keysym_t);
-
-  //TODO: shield against repeated calls and empty keymap
-  //if (keymap.back () != &stock_keymap[n - 1])
-    for (int i = 0; i < n; ++i)
-      register_keymap (&stock_keymap[i]);
-#endif
-
-  purge_duplicate_keymap ();
-
   setup_hash ();
 }

@@ -303,26 +218,6 @@ keyboard_manager::dispatch (rxvt_term *term, KeySym keysym, unsigned int state)
                 output_string (term, str);
                 break;

-              case keysym_t::RANGE:
-                {
-                  char buf[STRING_MAX];
-
-                  if (format_keyrange_string (str, keysym_offset, buf, sizeof (buf)) > 0)
-                    output_string (term, buf);
-                }
-                break;
-
-              case keysym_t::RANGE_META8:
-                {
-                  int len;
-                  char buf[STRING_MAX];
-
-                  len = format_keyrange_string (str, keysym_offset, buf, sizeof (buf));
-                  if (len > 0)
-                    output_string_meta8 (term, state, buf, len);
-                }
-                break;
-
               case keysym_t::LIST:
                 {
                   char buf[STRING_MAX];
@@ -351,30 +246,6 @@ keyboard_manager::dispatch (rxvt_term *term, KeySym keysym, unsigned int state)
   return false;
 }

-// purge duplicate keymap entries
-void keyboard_manager::purge_duplicate_keymap ()
-{
-  for (unsigned int i = 0; i < keymap.size (); ++i)
-    {
-      for (unsigned int j = 0; j < i; ++j)
-        {
-          if (keymap [i] == keymap [j])
-            {
-              while (keymap [i] == keymap.back ())
-                keymap.pop_back ();
-
-              if (i < keymap.size ())
-                {
-                  keymap[i] = keymap.back ();
-                  keymap.pop_back ();
-                }
-
-              break;
-            }
-        }
-    }
-}
-
 void
 keyboard_manager::setup_hash ()
 {
diff --git a/src/keyboard.h b/src/keyboard.h
index 62fcbe2f43d5c3de96a30bd70349214d6d3ae40f..
index ..d93c531d26d6e7c035d5bdffa7673898ae05b73b 100644
--- a/src/keyboard.h
+++ b/src/keyboard.h
@@ -57,7 +57,7 @@ typedef void (keyevent_handler) (rxvt_term *rt,
 struct keysym_t
 {
   enum keysym_type {
-    STRING, RANGE, RANGE_META8, LIST, BUILTIN,
+    STRING, LIST, BUILTIN,
   };

   KeySym      keysym;
@@ -83,21 +83,12 @@ public:

 private:
   void register_keymap (keysym_t *key);
-  void purge_duplicate_keymap ();
   void setup_hash ();
   int find_keysym (KeySym keysym, unsigned int state);

 private:
   uint16_t hash[KEYSYM_HASH_BUCKETS];
   vector keymap;
-
-#if STOCK_KEYMAP
-  // stock keymaps are all static data
-  static keysym_t stock_keymap[];
-#endif
-  // user keymaps and their .string are dynamically allocated and freed
-  vector user_keymap;
-  vector user_translations;
 };

 #endif /* KEYSYM_RESOURCE */

-----END OF PAGE-----