Index: keybindings.c
===================================================================
RCS file: /cvs/gnome/metacity/src/keybindings.c,v
retrieving revision 1.138
diff -u -r1.138 keybindings.c
--- keybindings.c	5 Nov 2006 22:23:43 -0000	1.138
+++ keybindings.c	20 Dec 2006 17:45:34 -0000
@@ -417,6 +417,8 @@
     GINT_TO_POINTER (32) },
   { META_KEYBINDING_COMMAND_WIN_SCREENSHOT, handle_run_command,
     GINT_TO_POINTER (33) },
+  { META_KEYBINDING_COMMAND_VISUAL_AT, handle_run_command,
+    GINT_TO_POINTER (34) },
   { META_KEYBINDING_RUN_COMMAND_TERMINAL, handle_run_terminal,
     NULL },
   { NULL, NULL, NULL }
Index: prefs.c
===================================================================
RCS file: /cvs/gnome/metacity/src/prefs.c,v
retrieving revision 1.71
diff -u -r1.71 prefs.c
--- prefs.c	5 Nov 2006 22:23:44 -0000	1.71
+++ prefs.c	20 Dec 2006 17:45:34 -0000
@@ -35,9 +35,10 @@
 #define MAX_REASONABLE_WORKSPACES 36
 
 #define MAX_COMMANDS (32 + NUM_EXTRA_COMMANDS)
-#define NUM_EXTRA_COMMANDS 2
-#define SCREENSHOT_COMMAND_IDX (MAX_COMMANDS - 2)
-#define WIN_SCREENSHOT_COMMAND_IDX (MAX_COMMANDS - 1)
+#define NUM_EXTRA_COMMANDS 3
+#define SCREENSHOT_COMMAND_IDX (MAX_COMMANDS - 3)
+#define WIN_SCREENSHOT_COMMAND_IDX (MAX_COMMANDS - 2)
+#define VISUAL_AT_COMMAND_IDX (MAX_COMMANDS - 1)
 
 /* If you add a key, it needs updating in init() and in the gconf
  * notify listener and of course in the .schemas file
@@ -1902,6 +1903,7 @@
   { META_KEYBINDING_COMMAND_32, NULL, FALSE },
   { META_KEYBINDING_COMMAND_SCREENSHOT, NULL, FALSE },
   { META_KEYBINDING_COMMAND_WIN_SCREENSHOT, NULL, FALSE },
+  { META_KEYBINDING_COMMAND_VISUAL_AT, NULL, FALSE },
   { META_KEYBINDING_RUN_COMMAND_TERMINAL, NULL, FALSE },
   { NULL, NULL, FALSE}
 };
@@ -1976,6 +1978,7 @@
   { META_KEYBINDING_PANEL_RUN_DIALOG,       "<Alt>F2"                    },
   { META_KEYBINDING_COMMAND_SCREENSHOT,     "Print"                      },
   { META_KEYBINDING_COMMAND_WIN_SCREENSHOT, "<Alt>Print"                 },
+  { META_KEYBINDING_COMMAND_VISUAL_AT,      "<Control><Alt>s"            },
   { NULL,                                   NULL                         }
 };
 
@@ -2568,6 +2571,9 @@
         {
           i = WIN_SCREENSHOT_COMMAND_IDX;
         }
+      else if (strcmp (p, "command_visual_at") == 0)
+        {
+          i = VISUAL_AT_COMMAND_IDX;
       else
         {
           meta_topic (META_DEBUG_KEYBINDINGS,
@@ -2647,6 +2653,9 @@
       break;
     case WIN_SCREENSHOT_COMMAND_IDX:
       key = g_strdup (KEY_COMMAND_PREFIX "window_screenshot");
+      break;
+    case VISUAL_AT_COMMAND_IDX:
+      key = g_strdup (KEY_COMMAND_PREFIX "visual_at");
       break;
     default:
       key = g_strdup_printf (KEY_COMMAND_PREFIX"%d", i + 1);
Index: prefs.h
===================================================================
RCS file: /cvs/gnome/metacity/src/prefs.h,v
retrieving revision 1.46
diff -u -r1.46 prefs.h
--- prefs.h	5 Nov 2006 22:23:44 -0000	1.46
+++ prefs.h	20 Dec 2006 17:45:34 -0000
@@ -171,6 +171,7 @@
 #define META_KEYBINDING_COMMAND_32               "run_command_32"
 #define META_KEYBINDING_COMMAND_SCREENSHOT       "run_command_screenshot"
 #define META_KEYBINDING_COMMAND_WIN_SCREENSHOT   "run_command_window_screenshot"
+#define META_KEYBINDING_COMMAND_VISUAL_AT        "run_command_visual_at"
 #define META_KEYBINDING_RUN_COMMAND_TERMINAL     "run_command_terminal"
 
 /* Window bindings */
Index: metacity.schemas.in
===================================================================
RCS file: /cvs/gnome/metacity/src/metacity.schemas.in,v
retrieving revision 1.53
diff -u -r1.53 metacity.schemas.in
--- metacity.schemas.in	5 Nov 2006 22:23:44 -0000	1.53
+++ metacity.schemas.in	20 Dec 2006 17:45:34 -0000
@@ -2087,6 +2087,30 @@
     </schema>
 
     <schema>
+      <key>/schemas/apps/metacity/global_keybindings/run_command_visual_at</key>
+      <applyto>/apps/metacity/global_keybindings/run_command_visual_at</applyto>
+      <owner>metacity</owner>
+      <type>string</type>
+      <default>&lt;Control&gt;&lt;Alt&gt;s</default>
+      <locale name="C">
+         <short>Run the visual At</short>
+         <long>
+          The keybinding which invokes the panel's visual AT utility
+          to start an assitvie technology.
+
+          The format looks like "&lt;Control&gt;a" or
+          "&lt;Shift&gt;&lt;Alt&gt;F1".
+
+          The parser is fairly liberal and allows lower or upper case,
+          and also abbreviations such as "&lt;Ctl&gt;" and
+          "&lt;Ctrl&gt;". If you set the option to the special string
+          "disabled", then there will be no keybinding for this
+          action.
+         </long>
+      </locale>
+    </schema>
+
+    <schema>
       <key>/schemas/apps/metacity/global_keybindings/run_command_terminal</key>
       <applyto>/apps/metacity/global_keybindings/run_command_terminal</applyto>
       <owner>metacity</owner>
@@ -2172,6 +2196,22 @@
          <short>The window screenshot command</short>
          <long>
          The /apps/metacity/global_keybindings/run_command_window_screenshot
+         key defines a keybinding which causes the command specified
+         by this setting to be invoked.
+         </long>
+      </locale>
+    </schema>
+
+    <schema>
+      <key>/schemas/apps/metacity/keybinding_commands/command_visual_at</key>
+      <applyto>/apps/metacity/keybinding_commands/command_visual_at</applyto>
+      <owner>metacity</owner>
+      <type>string</type>
+      <default>gnome-at-visual</default>
+      <locale name="C">
+         <short>The visual AT command</short>
+         <long>
+         The /apps/metacity/global_keybindings/run_command_visual_at
          key defines a keybinding which causes the command specified
          by this setting to be invoked.
          </long>
