diff --git a/ckeditor/plugin.js b/ckeditor/plugin.js
index 8d10417..a270b8f 100644
--- a/ckeditor/plugin.js
+++ b/ckeditor/plugin.js
@@ -1,9 +1,9 @@
 (function($) {
 
   /**
-   * Adds a CKEditor plugin to insert <pre> tags.
+   * Adds a CKEditor plugin to insert <pre> and <code> tags.
    *
-   * This is heavily based on blog posts by:
+   * Based on blog posts by:
    *
    * Nikolay Ulyanitsky
    * http://blog.lystor.org.ua/2010/11/ckeditor-plugin-and-toolbar-button-for.html
@@ -15,33 +15,27 @@
    */
   CKEDITOR.plugins.add('code-button', {
     init: function (editor) {
-      // Create a new CKEditor style to add <pre> tags.
-      var buttonName = 'code-button';
-      var format = {
-        element : "pre"
+      var buttons = {
+        'code-button-pre': ['pre', editor.config['code-button-pre'].label],
+        'code-button-code': ['code', editor.config['code-button-code'].label]
       };
-      var style = new CKEDITOR.style(format);
+      for (var buttonName in buttons) {
+        var format = {'element': buttons[buttonName][0]};
+        var style = new CKEDITOR.style(format);
 
-      // Override the removeFromRange() method to avoid a JavaScript error when
-      // the button is "unclicked", caused by the attachStyleStateChange() call
-      // below.
-      // @todo: Actually make this do something instead of being a no-op.
-      style.removeFromRange = function (range) {
-      };
-
-      // Allow the button's state to be toggled.
-      // @todo: Make this work when toggling the button off too (see comment
-      //   above).
-      editor.attachStyleStateChange(style, function (state) {
-        editor.getCommand(buttonName).setState(state);
-      });
+        // Allow the button's state to be toggled.
+        // @see http://drupal.org/node/1025626 for a standardized solution to
+        //   the closure context late binding problem.
+        (function(buttonName, style) {
+          editor.attachStyleStateChange(style, function (state) {
+            editor.getCommand(buttonName).setState(state);
+          });
+        })(buttonName, style);
 
-      // Add the command and the button to the editor.
-      editor.addCommand(buttonName, new CKEDITOR.styleCommand(style));
-      editor.ui.addButton(buttonName, {
-        label: Drupal.t('Code'),
-        command: buttonName
-      });
+        // Add the command and button to the editor.
+        editor.addCommand(buttonName, new CKEDITOR.styleCommand(style));
+        editor.ui.addButton(buttonName, {command: buttonName, label: buttons[buttonName][1]});
+      }
     }
   });
 
diff --git a/ckeditor/wysiwyg_code_editor_ckeditor.css b/ckeditor/wysiwyg_code_editor_ckeditor.css
index 1bad98d..b240b85 100644
--- a/ckeditor/wysiwyg_code_editor_ckeditor.css
+++ b/ckeditor/wysiwyg_code_editor_ckeditor.css
@@ -5,26 +5,12 @@
  * http://peterpetrik.com/blog/ckeditor-and-geshi-filter
  */
 
-.cke_skin_kama .cke_button_code-button span.cke_icon {
+.cke_skin_kama .cke_button_code-button-pre span.cke_icon,
+.cke_skin_kama .cke_button_code-button-code span.cke_icon {
   display: none !important;
 }
-.cke_skin_kama .cke_button_code-button span.cke_label {
-  display: inline;
-  font-size: 90%;
-}
-
-.cke_skin_office2003 .cke_button_code-button span.cke_icon {
-  display: none !important;
-}
-.cke_skin_office2003 .cke_button_code-button span.cke_label {
-  display: inline;
-  font-size: 90%;
-}
-
-.cke_skin_v2 .cke_button_code-button span.cke_icon {
-  display: none !important;
-}
-.cke_skin_v2 .cke_button_code-button span.cke_label {
+.cke_skin_kama .cke_button_code-button-pre span.cke_label,
+.cke_skin_kama .cke_button_code-button-code span.cke_label {
   display: inline;
   font-size: 90%;
 }
diff --git a/wysiwyg_code_button.module b/wysiwyg_code_button.module
index b84b0e0..7f00c77 100644
--- a/wysiwyg_code_button.module
+++ b/wysiwyg_code_button.module
@@ -18,7 +18,8 @@ function wysiwyg_code_button_wysiwyg_plugin($editor, $version) {
           'url' => 'http://drupal.org/project/wysiwyg_code_button',
           'path' => drupal_get_path('module', 'wysiwyg_code_button') . '/ckeditor',
           'buttons' => array(
-            'code-button' => t('Preformatted code'),
+            'code-button-pre' => t('Preformatted text'),
+            'code-button-code' => t('Inline code'),
           ),
           'load' => TRUE,
         ),
@@ -26,3 +27,47 @@ function wysiwyg_code_button_wysiwyg_plugin($editor, $version) {
       break;
   }
 }
+
+/**
+ * Implements hook_wysiwyg_editor_settings_alter().
+ */
+function wysiwyg_code_button_wysiwyg_editor_settings_alter(&$settings, $context) {
+  $profile = $context['profile'];
+  switch ($profile->editor) {
+    case 'ckeditor':
+      if ($profile->settings['css_setting'] == 'none') {
+        if (!isset($settings['contentsCss'])) {
+          $settings['contentsCss'] = array(base_path() . $context['editor']['editor path'] . '/contents.css');
+        }
+        $settings['contentsCss'][] = base_path() . drupal_get_path('module', 'wysiwyg_code_button') . '/ckeditor/wysiwyg_code_editor_ckeditor_contents.css';
+      }
+      $settings['code-button-pre']['label'] = isset($profile->settings['code_button_pre_label']) ? $profile->settings['code_button_pre_label'] : t('PRE');
+      $settings['code-button-code']['label'] = isset($profile->settings['code_button_code_label']) ? $profile->settings['code_button_code_label'] : t('CODE');
+      break;
+  }
+}
+
+/**
+ * Implements hook_form_FORM_ID_alter().
+ */
+function wysiwyg_code_button_form_wysiwyg_profile_form_alter(&$form, $form_state) {
+  $profile = $form['#parameters'][2];
+  switch ($profile->editor) {
+    case 'ckeditor':
+      $form['appearance']['code_button_pre_label'] = array(
+        '#type' => 'textfield',
+        '#size' => 6,
+        '#title' => t('Label for the %button button', array('%button' => t('Preformatted text'))),
+        '#default_value' => isset($profile->settings['code_button_pre_label']) ? $profile->settings['code_button_pre_label'] : t('PRE'),
+        '#access' => !empty($profile->settings['buttons']['code-button']['code-button-pre']),
+      );
+      $form['appearance']['code_button_code_label'] = array(
+        '#type' => 'textfield',
+        '#size' => 6,
+        '#title' => t('Label for the %button button', array('%button' => t('Inline code'))),
+        '#default_value' => isset($profile->settings['code_button_code_label']) ? $profile->settings['code_button_code_label'] : t('CODE'),
+        '#access' => !empty($profile->settings['buttons']['code-button']['code-button-code']),
+      );
+      break;
+  }
+}
