diff --git a/dev/core/src/com/google/gwt/dev/WebServerPanel.java b/dev/core/src/com/google/gwt/dev/WebServerPanel.java
index 81f1ab5..62a121d 100644
--- a/dev/core/src/com/google/gwt/dev/WebServerPanel.java
+++ b/dev/core/src/com/google/gwt/dev/WebServerPanel.java
@@ -22,6 +22,7 @@
 import java.awt.BorderLayout;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
+import java.awt.event.KeyEvent;
 import java.io.File;
 
 import javax.swing.JButton;
@@ -55,6 +56,7 @@
     if (restartServerAction != null) {
       JPanel panel = new JPanel(new WrapLayout());
       JButton restartButton = new JButton("Restart Server");
+      restartButton.setMnemonic(KeyEvent.VK_R);
       restartButton.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
           restartServerAction.restartServer(getLogger());
diff --git a/dev/core/src/com/google/gwt/dev/shell/ShellMainWindow.java b/dev/core/src/com/google/gwt/dev/shell/ShellMainWindow.java
index ca123b3..66239b5 100644
--- a/dev/core/src/com/google/gwt/dev/shell/ShellMainWindow.java
+++ b/dev/core/src/com/google/gwt/dev/shell/ShellMainWindow.java
@@ -26,6 +26,7 @@
 import java.awt.datatransfer.StringSelection;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
+import java.awt.event.KeyEvent;
 import java.io.File;
 import java.io.IOException;
 import java.net.URISyntaxException;
@@ -187,6 +188,7 @@
     loadingMessage = new JLabel("Loading...");
     launchPanel.add(loadingMessage);
     defaultBrowserButton = new JButton("Launch Default Browser");
+    defaultBrowserButton.setMnemonic(KeyEvent.VK_L);
     defaultBrowserButton.setEnabled(false);
     defaultBrowserButton.setVisible(false);
     defaultBrowserButton.addActionListener(new ActionListener() {
@@ -196,6 +198,7 @@
     });
     launchPanel.add(defaultBrowserButton);
     copyToClipboardButton = new JButton("Copy to Clipboard");
+    copyToClipboardButton.setMnemonic(KeyEvent.VK_C);
     copyToClipboardButton.setEnabled(false);
     copyToClipboardButton.setVisible(false);
     copyToClipboardButton.addActionListener(new ActionListener() {
diff --git a/dev/core/src/com/google/gwt/dev/shell/log/SwingLoggerPanel.java b/dev/core/src/com/google/gwt/dev/shell/log/SwingLoggerPanel.java
index f29852e..01c886a 100644
--- a/dev/core/src/com/google/gwt/dev/shell/log/SwingLoggerPanel.java
+++ b/dev/core/src/com/google/gwt/dev/shell/log/SwingLoggerPanel.java
@@ -302,6 +302,7 @@
     topPanel = new JPanel(new BorderLayout());
     JPanel logButtons = new JPanel(new WrapLayout());
     JButton expandButton = new JButton("Expand All");
+    expandButton.setMnemonic(KeyEvent.VK_E);
     expandButton.addActionListener(new ActionListener() {
       public void actionPerformed(ActionEvent e) {
         expandAll();
@@ -309,6 +310,7 @@
     });
     logButtons.add(expandButton);
     JButton collapseButton = new JButton("Collapse All");
+    collapseButton.setMnemonic(KeyEvent.VK_O);
     collapseButton.addActionListener(new ActionListener() {
       public void actionPerformed(ActionEvent e) {
         collapseAll();
