{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Keyboard Shortcut Customization" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Starting with IPython 2.0 keyboard shortcuts in command and edit mode are fully customizable. These customizations are made using the IPython JavaScript API. Here is an example that makes the `r` key available for running a cell:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "data": { "application/javascript": [ "\n", "IPython.keyboard_manager.command_shortcuts.add_shortcut('r', {\n", " help : 'run cell',\n", " help_index : 'zz',\n", " handler : function (event) {\n", " IPython.notebook.execute_cell();\n", " return false;\n", " }}\n", ");" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%%javascript\n", "\n", "IPython.keyboard_manager.command_shortcuts.add_shortcut('r', {\n", " help : 'run cell',\n", " help_index : 'zz',\n", " handler : function (event) {\n", " IPython.notebook.execute_cell();\n", " return false;\n", " }}\n", ");" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There are a couple of points to mention about this API:\n", "\n", "* The `help_index` field is used to sort the shortcuts in the Keyboard Shortcuts help dialog. It defaults to `zz`.\n", "* When a handler returns `false` it indicates that the event should stop propagating and the default action should not be performed. For further details about the `event` object or event handling, see the jQuery docs.\n", "* If you don't need a `help` or `help_index` field, you can simply pass a function as the second argument to `add_shortcut`." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "application/javascript": [ "\n", "IPython.keyboard_manager.command_shortcuts.add_shortcut('r', function (event) {\n", " IPython.notebook.execute_cell();\n", " return false;\n", "});" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%%javascript\n", "\n", "IPython.keyboard_manager.command_shortcuts.add_shortcut('r', function (event) {\n", " IPython.notebook.execute_cell();\n", " return false;\n", "});" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Likewise, to remove a shortcut, use `remove_shortcut`:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "application/javascript": [ "\n", "IPython.keyboard_manager.command_shortcuts.remove_shortcut('r');" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%%javascript\n", "\n", "IPython.keyboard_manager.command_shortcuts.remove_shortcut('r');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If you want your keyboard shortcuts to be active for all of your notebooks, put the above API calls into your `/static/custom/custom.js` file." ] } ], "metadata": {}, "nbformat": 4, "nbformat_minor": 0 }