{ "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": null, "metadata": { "collapsed": false }, "outputs": [], "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": null, "metadata": { "collapsed": false }, "outputs": [], "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": null, "metadata": { "collapsed": false }, "outputs": [], "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": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.4.3" } }, "nbformat": 4, "nbformat_minor": 0 }