<!DOCTYPE html> <!-- saved from url=(0046)https://pypi.org/project/keyboard/#description --> <html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="defaultLanguage" content="en"> <meta name="availableLanguages" content="en"> <title>keyboard · PyPI</title> <meta name="description" content="Hook and simulate keyboard events on Windows and Linux"> <link rel="stylesheet" href="./keyboard · PyPI_files/warehouse.6b3cae16.css"> <link rel="stylesheet" href="./keyboard · PyPI_files/fontawesome.91df071f.css"> <link rel="stylesheet" href="./keyboard · PyPI_files/regular.8819f1a9.css"> <link rel="stylesheet" href="./keyboard · PyPI_files/solid.002489ee.css"> <link rel="stylesheet" href="./keyboard · PyPI_files/brands.0c9eb08b.css"> <link rel="stylesheet" href="./keyboard · PyPI_files/css"> <noscript> <link rel="stylesheet" href="/static/css/noscript.69d08c82.css"> </noscript> <link rel="icon" href="https://pypi.org/static/images/favicon.6a76275d.ico" type="image/x-icon"> <link rel="alternate" type="application/rss+xml" title="RSS: 40 latest updates" href="https://pypi.org/rss/updates.xml"> <link rel="alternate" type="application/rss+xml" title="RSS: 40 newest packages" href="https://pypi.org/rss/packages.xml"> <link rel="canonical" href="https://pypi.org/project/keyboard/"> <meta property="og:url" content="https://pypi.org/project/keyboard/"> <meta property="og:site_name" content="PyPI"> <meta property="og:type" content="website"> <meta property="og:image" content="https://pypi.org/static/images/twitter.c0030826.jpg"> <meta property="og:title" content="keyboard"> <meta property="og:description" content="Hook and simulate keyboard events on Windows and Linux"> <link rel="search" type="application/opensearchdescription+xml" title="PyPI" href="https://pypi.org/opensearch.xml"> <script src="./keyboard · PyPI_files/lib.23f53f0dd5fed5e0b8788024646a4167734db1c0.js.Без названия"></script><script type="text/javascript" async="" src="./keyboard · PyPI_files/analytics.js.Без названия"></script><script src="./keyboard · PyPI_files/raven.min.js.Без названия" integrity="sha384-D6LXy67EIC102DTuqypxwQsTHgiatlbvg7q/1YAWFb6lRyZ1lIZ6bGDsX7jxHNKA" crossorigin="anonymous"> </script> <script async="" data-ga-id="UA-55961911-1" data-sentry-frontend-dsn="https://3a67b35c9dc248a191d761410b095861@sentry.io/1231155" src="./keyboard · PyPI_files/warehouse.ea40d9aa.js.Без названия"> </script> <script async="" src="./keyboard · PyPI_files/js"></script> <script defer="" src="./keyboard · PyPI_files/insights.js.Без названия"></script> </head> <body data-controller="viewport-toggle" style="padding-top: 0px;"> <!-- Accessibility: this link should always be the first piece of content inside the body--> <a href="https://pypi.org/project/keyboard/#content" class="skip-to-content">Skip to main content</a> <button class="button button--primary button--switch-to-mobile hidden" data-target="viewport-toggle.switchToMobile" data-action="viewport-toggle#switchToMobile"> Switch to mobile version </button> <section id="sticky-notifications" class="stick-to-top js-stick-to-top"> <!-- Add browser warning. Will show for ie9 and below --> <!--[if IE]> <div class="notification-bar notification-bar--danger"> <span class="notification-bar__icon"> <i class="fa fa-exclamation-triangle" aria-hidden="true"></i> <span class="sr-only">Warning:</span> </span> <span class="notification-bar__message">You are using an unsupported browser, upgrade to a newer version.</span> </div> <![endif]--> <noscript> <div class="notification-bar notification-bar--danger"> <span class="notification-bar__icon"> <i class="fa fa-exclamation-triangle" aria-hidden="true"></i> <span class="sr-only">Warning:</span> </span> <span class="notification-bar__message">Some features may not work without JavaScript. Please try enabling it if you encounter problems.</span> </div> </noscript> </section> <div class="notification-bar"> <span class="notification-bar__message"> Donate to the Python Software Foundation or Purchase a PyCharm License to Benefit the PSF! <a href="https://www.python.org/psf/donations/2019-q2-drive/" target="_blank" title="Donate to the Python Software Foundation">Donate Now</a> </span> </div> <div data-html-include="/_includes/flash-messages/"> </div> <div data-html-include="/_includes/session-notifications/"> </div> <header class="site-header "> <div class="site-container"> <div class="split-layout"> <div class="split-layout"> <div> <a class="site-header__logo" href="https://pypi.org/"> <img alt="PyPI" src="./keyboard · PyPI_files/logo-small.6eef541e.svg"> </a> </div> <form class="search-form search-form--primary" action="https://pypi.org/search/"> <div role="search"> <label for="search" class="sr-only">Search PyPI</label> <input id="search" class="search-form__search" type="text" name="q" placeholder="Search projects" value=""> <button type="submit" class="search-form__button"> <i class="fa fa-search" aria-hidden="true"></i> <span class="sr-only">Search</span> </button> </div> </form> </div> <div data-html-include="/_includes/current-user-indicator/"> <nav id="user-indicator" class="horizontal-menu horizontal-menu--light horizontal-menu--tall" aria-label="Main navigation"> <a class="horizontal-menu__link horizontal-menu__link--remove-on-mobile" href="https://pypi.org/help/">Help</a> <a class="horizontal-menu__link horizontal-menu__link--remove-on-mobile" href="https://donate.pypi.org/">Donate</a> <a class="horizontal-menu__link" href="https://pypi.org/account/login/">Log in</a> <a class="horizontal-menu__link" href="https://pypi.org/account/register/">Register</a> </nav> </div> </div> </div> </header> <section class="mobile-search"> <form class="search-form search-form--fullwidth" action="https://pypi.org/search/"> <div role="search"> <label for="mobile-search" class="sr-only">Search PyPI</label> <input id="mobile-search" class="search-form__search" type="text" name="q" placeholder="Search projects" value=""> <button type="submit" class="search-form__button"> <i class="fa fa-search" aria-hidden="true"></i> <span class="sr-only">Search</span> </button> </div> </form> </section> <main id="content"> <section class="banner"> <div class="package-header"> <div class="package-header__left"> <h1 class="package-header__name"> keyboard 0.13.3 </h1> <p class="package-header__pip-instructions"> <span id="pip-command">pip install keyboard</span> <button class="-js-copy-pip-command tooltipped tooltipped-s" data-clipboard-target="#pip-command" aria-label="Copy to clipboard" data-original-label="Copy to clipboard"> <i class="fa fa-copy" aria-hidden="true"></i> <span class="sr-only">Copy PIP instructions<span> </span></span></button> </p> </div> <div class="package-header__right"> <a class="status-badge status-badge--good" href="https://pypi.org/project/keyboard/">Latest version</a> <p class="package-header__date">Last released: <time class="-js-relative-time" datetime="2019-03-18T08:52:09+0000" data-controller="localized-time" data-localized-time-relative="true">Mar 18, 2019</time></p> </div> </div> </section> <section class="horizontal-section horizontal-section--grey horizontal-section--thin"> <div class="site-container"> <div class="split-layout split-layout--middle package-description"> <p class="package-description__summary">Hook and simulate keyboard events on Windows and Linux</p> <div data-html-include="/_includes/edit-project-button/keyboard"></div> </div> </div> </section> <section data-controller="project-tabs" data-project-tabs-content="description"> <div class="tabs-container"> <div class="vertical-tabs"> <div class="vertical-tabs__tabs"> <div class="sidebar-section"> <h3 class="sidebar-section__title">Navigation</h3> <nav role="tablist"> <a id="description-tab" data-target="project-tabs.tab" data-action="project-tabs#onTabClick" class="vertical-tabs__tab vertical-tabs__tab--with-icon vertical-tabs__tab--is-active" href="https://pypi.org/project/keyboard/#description" role="tab"> <i class="fa fa-align-left" aria-hidden="true"></i> Project description </a> <a id="history-tab" data-target="project-tabs.tab" data-action="project-tabs#onTabClick" class="vertical-tabs__tab vertical-tabs__tab--with-icon" href="https://pypi.org/project/keyboard/#history" role="tab"> <i class="fa fa-history" aria-hidden="true"></i> Release history </a> <a id="files-tab" data-target="project-tabs.tab" data-action="project-tabs#onTabClick" class="vertical-tabs__tab vertical-tabs__tab--with-icon" href="https://pypi.org/project/keyboard/#files" role="tab"> <i class="fa fa-download" aria-hidden="true"></i> Download files </a> </nav> </div> <div class="sidebar-section"> <h3 class="sidebar-section__title">Project links</h3> <a class="vertical-tabs__tab vertical-tabs__tab--with-icon vertical-tabs__tab--condensed" href="https://github.com/boppreh/keyboard" rel="nofollow"> <i class="fas fa-home" aria-hidden="true"></i>Homepage </a> </div> <div class="sidebar-section"> <h3 class="sidebar-section__title">Statistics</h3> <div class="github-repo-info" data-url="https://api.github.com/repos/boppreh/keyboard"> GitHub statistics: <a class="vertical-tabs__tab vertical-tabs__tab--with-icon vertical-tabs__tab--condensed github-repo-info__item" data-key="html_url" data-attr="href" data-supplement="/stargazers" rel="noopener" target="_blank" href="https://github.com/boppreh/keyboard/stargazers"> <i class="fa fa-star" aria-hidden="true"></i> <strong>Stars: </strong> <span class="github-repo-info__item" data-key="stargazers_count">1 448</span> </a> <a class="vertical-tabs__tab vertical-tabs__tab--with-icon vertical-tabs__tab--condensed github-repo-info__item" data-key="html_url" data-attr="href" data-supplement="/network" rel="noopener" target="_blank" href="https://github.com/boppreh/keyboard/network"> <i class="fa fa-code-branch" aria-hidden="true"></i> <strong>Forks: </strong> <span class="github-repo-info__item" data-key="forks_count">160</span> </a> <a class="vertical-tabs__tab vertical-tabs__tab--with-icon vertical-tabs__tab--condensed github-repo-info__item" data-key="html_url" data-attr="href" data-supplement="/issues" rel="noopener" target="_blank" href="https://github.com/boppreh/keyboard/issues"> <i class="fa fa-exclamation-circle" aria-hidden="true"></i> <strong>Open issues/PRs: </strong> <span class="github-repo-info__item" data-key="open_issues_count">126</span> </a> </div> <p>View statistics for this project via <a href="https://libraries.io/pypi/keyboard">Libraries.io</a>, or by using <a href="https://packaging.python.org/guides/analyzing-pypi-package-downloads/">Google BigQuery</a></p> </div> <div class="sidebar-section"> <h3 class="sidebar-section__title">Meta</h3> <p><strong>License:</strong> MIT License (MIT)</p> <p><strong>Author:</strong> <a href="mailto:boppreh@gmail.com">BoppreH</a></p> <p class="tags"> <i class="fa fa-tags" aria-hidden="true"></i> <span class="sr-only">Tags:</span> <span class="package-keyword"> keyboard, </span> <span class="package-keyword"> hook, </span> <span class="package-keyword"> simulate, </span> <span class="package-keyword"> hotkey </span> </p> </div> <div class="sidebar-section"> <h3 class="sidebar-section__title">Maintainers</h3> <span class="sidebar-section__maintainer"> <a href="https://pypi.org/user/BoppreH/" aria-label="BoppreH" class="sidebar-section__user-gravatar"> <img src="./keyboard · PyPI_files/68747470733a2f2f7365637572652e67726176617461722e636f6d2f6176617461722f63366235353162363539383061643764356632353737363837643565616665393f73697a653d3530" height="50" width="50" alt="Avatar for BoppreH from gravatar.com" title="Avatar for BoppreH from gravatar.com"> </a> <a href="https://pypi.org/user/BoppreH/" class="sidebar-section__user-gravatar-text"> BoppreH </a> </span> </div> <div class="sidebar-section classifiers"> <h3>Classifiers</h3> <dl> <dt>Development Status</dt> <dd> <a href="https://pypi.org/search/?c=Development+Status+%3A%3A+4+-+Beta"> 4 - Beta </a> </dd> <dt>License</dt> <dd> <a href="https://pypi.org/search/?c=License+%3A%3A+OSI+Approved+%3A%3A+MIT+License"> OSI Approved :: MIT License </a> </dd> <dt>Operating System</dt> <dd> <a href="https://pypi.org/search/?c=Operating+System+%3A%3A+MacOS+%3A%3A+MacOS+X"> MacOS :: MacOS X </a> </dd> <dd> <a href="https://pypi.org/search/?c=Operating+System+%3A%3A+Microsoft+%3A%3A+Windows"> Microsoft :: Windows </a> </dd> <dd> <a href="https://pypi.org/search/?c=Operating+System+%3A%3A+Unix"> Unix </a> </dd> <dt>Programming Language</dt> <dd> <a href="https://pypi.org/search/?c=Programming+Language+%3A%3A+Python+%3A%3A+2"> Python :: 2 </a> </dd> <dd> <a href="https://pypi.org/search/?c=Programming+Language+%3A%3A+Python+%3A%3A+3"> Python :: 3 </a> </dd> <dt>Topic</dt> <dd> <a href="https://pypi.org/search/?c=Topic+%3A%3A+Software+Development+%3A%3A+Libraries+%3A%3A+Python+Modules"> Software Development :: Libraries :: Python Modules </a> </dd> <dd> <a href="https://pypi.org/search/?c=Topic+%3A%3A+Utilities"> Utilities </a> </dd> </dl> </div> </div> <div class="vertical-tabs__panel"> <!-- mobile menu --> <nav> <a id="mobile-description-tab" data-target="project-tabs.mobileTab" data-action="project-tabs#onTabClick" class="vertical-tabs__tab vertical-tabs__tab--with-icon vertical-tabs__tab--mobile vertical-tabs__tab--no-top-border vertical-tabs__tab--is-active" href="https://pypi.org/project/keyboard/#description"> <i class="fa fa-align-left" aria-hidden="true"></i> Project description </a> <a id="mobile-data-tab" data-target="project-tabs.mobileTab" data-action="project-tabs#onTabClick" class="vertical-tabs__tab vertical-tabs__tab--with-icon vertical-tabs__tab--mobile" href="https://pypi.org/project/keyboard/#data"> <i class="fa fa-info-circle" aria-hidden="true"></i> Project details </a> <a id="mobile-history-tab" data-target="project-tabs.mobileTab" data-action="project-tabs#onTabClick" class="vertical-tabs__tab vertical-tabs__tab--with-icon vertical-tabs__tab--mobile" href="https://pypi.org/project/keyboard/#history"> <i class="fa fa-history" aria-hidden="true"></i> Release history </a> <a id="mobile-files-tab" data-target="project-tabs.mobileTab" data-action="project-tabs#onTabClick" class="vertical-tabs__tab vertical-tabs__tab--with-icon vertical-tabs__tab--mobile" href="https://pypi.org/project/keyboard/#files"> <i class="fa fa-download" aria-hidden="true"></i> Download files </a> </nav> <div id="description" data-target="project-tabs.content" class="vertical-tabs__content" role="tabpanel" aria-labelledby="description-tab mobile-description-tab" style="display: block;"> <h2 class="page-title">Project description</h2> <div class="project-description"> <p>Take full control of your keyboard with this small Python library. Hook global events, register hotkeys, simulate key presses and much more.</p> <div id="features"> <h2>Features</h2> <ul> <li><strong>Global event hook</strong> on all keyboards (captures keys regardless of focus).</li> <li><strong>Listen</strong> and <strong>send</strong> keyboard events.</li> <li>Works with <strong>Windows</strong> and <strong>Linux</strong> (requires sudo), with experimental <strong>OS X</strong> support (thanks @glitchassassin!).</li> <li><strong>Pure Python</strong>, no C modules to be compiled.</li> <li><strong>Zero dependencies</strong>. Trivial to install and deploy, just copy the files.</li> <li><strong>Python 2 and 3</strong>.</li> <li>Complex hotkey support (e.g. <tt>ctrl+shift+m, ctrl+space</tt>) with controllable timeout.</li> <li>Includes <strong>high level API</strong> (e.g. <a href="https://pypi.org/project/keyboard/#keyboard.record" rel="nofollow">record</a> and <a href="https://pypi.org/project/keyboard/#keyboard.play" rel="nofollow">play</a>, <a href="https://pypi.org/project/keyboard/#keyboard.add_abbreviation" rel="nofollow">add_abbreviation</a>).</li> <li>Maps keys as they actually are in your layout, with <strong>full internationalization support</strong> (e.g. <tt>Ctrl+ç</tt>).</li> <li>Events automatically captured in separate thread, doesn’t block main program.</li> <li>Tested and documented.</li> <li>Doesn’t break accented dead keys (I’m looking at you, pyHook).</li> <li>Mouse support available via project <a href="https://github.com/boppreh/mouse" rel="nofollow">mouse</a> (<tt>pip install mouse</tt>).</li> </ul> </div> <div id="usage"> <h2>Usage</h2> <p>Install the <a href="https://pypi.python.org/pypi/keyboard/" rel="nofollow">PyPI package</a>:</p> <pre>pip install keyboard </pre> <p>or clone the repository (no installation required, source files are sufficient):</p> <pre>git clone https://github.com/boppreh/keyboard </pre> <p>or <a href="https://github.com/boppreh/keyboard/archive/master.zip" rel="nofollow">download and extract the zip</a> into your project folder.</p> <p>Then check the <a href="https://github.com/boppreh/keyboard#api" rel="nofollow">API docs below</a> to see what features are available.</p> </div> <div id="example"> <h2>Example</h2> <pre><span class="kn">import</span> <span class="nn">keyboard</span> <span class="n">keyboard</span><span class="o">.</span><span class="n">press_and_release</span><span class="p">(</span><span class="s1">'shift+s, space'</span><span class="p">)</span> <span class="n">keyboard</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s1">'The quick brown fox jumps over the lazy dog.'</span><span class="p">)</span> <span class="n">keyboard</span><span class="o">.</span><span class="n">add_hotkey</span><span class="p">(</span><span class="s1">'ctrl+shift+a'</span><span class="p">,</span> <span class="k">print</span><span class="p">,</span> <span class="n">args</span><span class="o">=</span><span class="p">(</span><span class="s1">'triggered'</span><span class="p">,</span> <span class="s1">'hotkey'</span><span class="p">))</span> <span class="c1"># Press PAGE UP then PAGE DOWN to type "foobar".</span> <span class="n">keyboard</span><span class="o">.</span><span class="n">add_hotkey</span><span class="p">(</span><span class="s1">'page up, page down'</span><span class="p">,</span> <span class="k">lambda</span><span class="p">:</span> <span class="n">keyboard</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s1">'foobar'</span><span class="p">))</span> <span class="c1"># Blocks until you press esc.</span> <span class="n">keyboard</span><span class="o">.</span><span class="n">wait</span><span class="p">(</span><span class="s1">'esc'</span><span class="p">)</span> <span class="c1"># Record events until 'esc' is pressed.</span> <span class="n">recorded</span> <span class="o">=</span> <span class="n">keyboard</span><span class="o">.</span><span class="n">record</span><span class="p">(</span><span class="n">until</span><span class="o">=</span><span class="s1">'esc'</span><span class="p">)</span> <span class="c1"># Then replay back at three times the speed.</span> <span class="n">keyboard</span><span class="o">.</span><span class="n">play</span><span class="p">(</span><span class="n">recorded</span><span class="p">,</span> <span class="n">speed_factor</span><span class="o">=</span><span class="mi">3</span><span class="p">)</span> <span class="c1"># Type @@ then press space to replace with abbreviation.</span> <span class="n">keyboard</span><span class="o">.</span><span class="n">add_abbreviation</span><span class="p">(</span><span class="s1">'@@'</span><span class="p">,</span> <span class="s1">'my.long.email@example.com'</span><span class="p">)</span> <span class="c1"># Block forever, like `while True`.</span> <span class="n">keyboard</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span> </pre> </div> <div id="known-limitations"> <h2>Known limitations:</h2> <ul> <li>Events generated under Windows don’t report device id (<tt>event.device == None</tt>). <a href="https://github.com/boppreh/keyboard/issues/21" rel="nofollow">#21</a></li> <li>Media keys on Linux may appear nameless (scan-code only) or not at all. <a href="https://github.com/boppreh/keyboard/issues/20" rel="nofollow">#20</a></li> <li>Key suppression/blocking only available on Windows. <a href="https://github.com/boppreh/keyboard/issues/22" rel="nofollow">#22</a></li> <li>To avoid depending on X, the Linux parts reads raw device files (<tt>/dev/input/input*</tt>) but this requries root.</li> <li>Other applications, such as some games, may register hooks that swallow all key events. In this case <tt>keyboard</tt> will be unable to report events.</li> <li>This program makes no attempt to hide itself, so don’t use it for keyloggers or online gaming bots. Be responsible.</li> </ul> </div> </div> </div> <div id="data" data-target="project-tabs.content" class="vertical-tabs__content" role="tabpanel" aria-labelledby="mobile-data-tab" style="display: none;"> <h2 class="page-title">Project details</h2> <div class="sidebar-section"> <h3 class="sidebar-section__title">Project links</h3> <a class="vertical-tabs__tab vertical-tabs__tab--with-icon vertical-tabs__tab--condensed" href="https://github.com/boppreh/keyboard" rel="nofollow"> <i class="fas fa-home" aria-hidden="true"></i>Homepage </a> </div> <div class="sidebar-section"> <h3 class="sidebar-section__title">Statistics</h3> <div class="github-repo-info hidden" data-url="https://api.github.com/repos/boppreh/keyboard"> GitHub statistics: <a class="vertical-tabs__tab vertical-tabs__tab--with-icon vertical-tabs__tab--condensed github-repo-info__item" data-key="html_url" data-attr="href" data-supplement="/stargazers" rel="noopener" target="_blank" href="https://github.com/boppreh/keyboard/stargazers"> <i class="fa fa-star" aria-hidden="true"></i> <strong>Stars: </strong> <span class="github-repo-info__item" data-key="stargazers_count">1 448</span> </a> <a class="vertical-tabs__tab vertical-tabs__tab--with-icon vertical-tabs__tab--condensed github-repo-info__item" data-key="html_url" data-attr="href" data-supplement="/network" rel="noopener" target="_blank" href="https://github.com/boppreh/keyboard/network"> <i class="fa fa-code-branch" aria-hidden="true"></i> <strong>Forks: </strong> <span class="github-repo-info__item" data-key="forks_count">160</span> </a> <a class="vertical-tabs__tab vertical-tabs__tab--with-icon vertical-tabs__tab--condensed github-repo-info__item" data-key="html_url" data-attr="href" data-supplement="/issues" rel="noopener" target="_blank" href="https://github.com/boppreh/keyboard/issues"> <i class="fa fa-exclamation-circle" aria-hidden="true"></i> <strong>Open issues/PRs: </strong> <span class="github-repo-info__item" data-key="open_issues_count">126</span> </a> </div> <p>View statistics for this project via <a href="https://libraries.io/pypi/keyboard">Libraries.io</a>, or by using <a href="https://packaging.python.org/guides/analyzing-pypi-package-downloads/">Google BigQuery</a></p> </div> <div class="sidebar-section"> <h3 class="sidebar-section__title">Meta</h3> <p><strong>License:</strong> MIT License (MIT)</p> <p><strong>Author:</strong> <a href="mailto:boppreh@gmail.com">BoppreH</a></p> <p class="tags"> <i class="fa fa-tags" aria-hidden="true"></i> <span class="sr-only">Tags:</span> <span class="package-keyword"> keyboard, </span> <span class="package-keyword"> hook, </span> <span class="package-keyword"> simulate, </span> <span class="package-keyword"> hotkey </span> </p> </div> <div class="sidebar-section"> <h3 class="sidebar-section__title">Maintainers</h3> <span class="sidebar-section__maintainer"> <a href="https://pypi.org/user/BoppreH/" aria-label="BoppreH" class="sidebar-section__user-gravatar"> <img src="./keyboard · PyPI_files/68747470733a2f2f7365637572652e67726176617461722e636f6d2f6176617461722f63366235353162363539383061643764356632353737363837643565616665393f73697a653d3530" height="50" width="50" alt="Avatar for BoppreH from gravatar.com" title="Avatar for BoppreH from gravatar.com"> </a> <a href="https://pypi.org/user/BoppreH/" class="sidebar-section__user-gravatar-text"> BoppreH </a> </span> </div> <div class="sidebar-section classifiers"> <h3>Classifiers</h3> <dl> <dt>Development Status</dt> <dd> <a href="https://pypi.org/search/?c=Development+Status+%3A%3A+4+-+Beta"> 4 - Beta </a> </dd> <dt>License</dt> <dd> <a href="https://pypi.org/search/?c=License+%3A%3A+OSI+Approved+%3A%3A+MIT+License"> OSI Approved :: MIT License </a> </dd> <dt>Operating System</dt> <dd> <a href="https://pypi.org/search/?c=Operating+System+%3A%3A+MacOS+%3A%3A+MacOS+X"> MacOS :: MacOS X </a> </dd> <dd> <a href="https://pypi.org/search/?c=Operating+System+%3A%3A+Microsoft+%3A%3A+Windows"> Microsoft :: Windows </a> </dd> <dd> <a href="https://pypi.org/search/?c=Operating+System+%3A%3A+Unix"> Unix </a> </dd> <dt>Programming Language</dt> <dd> <a href="https://pypi.org/search/?c=Programming+Language+%3A%3A+Python+%3A%3A+2"> Python :: 2 </a> </dd> <dd> <a href="https://pypi.org/search/?c=Programming+Language+%3A%3A+Python+%3A%3A+3"> Python :: 3 </a> </dd> <dt>Topic</dt> <dd> <a href="https://pypi.org/search/?c=Topic+%3A%3A+Software+Development+%3A%3A+Libraries+%3A%3A+Python+Modules"> Software Development :: Libraries :: Python Modules </a> </dd> <dd> <a href="https://pypi.org/search/?c=Topic+%3A%3A+Utilities"> Utilities </a> </dd> </dl> </div> <br> </div> <div id="history" data-target="project-tabs.content" class="vertical-tabs__content" role="tabpanel" aria-labelledby="history-tab mobile-history-tab" style="display: none;"> <h2 class="page-title split-layout"> <span>Release history</span> <a class="reset-text margin-top" href="https://pypi.org/help/#project-release-notifications">Release notifications</a> </h2> <section class="release-timeline"> <div class="release release--latest release--current"> <div class="release__meta"> <span class="badge">This version</span> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="History Node" src="./keyboard · PyPI_files/blue-cube.e6165d35.svg"> </div> <a class="card release__card" href="https://pypi.org/project/keyboard/0.13.3/"> <p class="release__version"> 0.13.3 </p> <p class="release__version-date"> <time class="tooltipped tooltipped-s -js-relative-time" datetime="2019-03-18T08:52:09+0000" data-controller="localized-time" aria-label="Mar 18, 2019, 11:52:09 GMT+3" data-original-label="Mar 18, 2019, 11:52:09 GMT+3">Mar 18, 2019</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="History Node" src="./keyboard · PyPI_files/white-cube.8c3a6fe9.svg"> </div> <a class="card release__card" href="https://pypi.org/project/keyboard/0.13.2/"> <p class="release__version"> 0.13.2 </p> <p class="release__version-date"> <time class="tooltipped tooltipped-s -js-relative-time" datetime="2018-05-18T23:04:38+0000" data-controller="localized-time" aria-label="May 19, 2018, 02:04:38 GMT+3" data-original-label="May 19, 2018, 02:04:38 GMT+3">May 19, 2018</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="History Node" src="./keyboard · PyPI_files/white-cube.8c3a6fe9.svg"> </div> <a class="card release__card" href="https://pypi.org/project/keyboard/0.13.1/"> <p class="release__version"> 0.13.1 </p> <p class="release__version-date"> <time class="tooltipped tooltipped-s -js-relative-time" datetime="2018-03-27T16:54:21+0000" data-controller="localized-time" aria-label="Mar 27, 2018, 19:54:21 GMT+3" data-original-label="Mar 27, 2018, 19:54:21 GMT+3">Mar 27, 2018</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="History Node" src="./keyboard · PyPI_files/white-cube.8c3a6fe9.svg"> </div> <a class="card release__card" href="https://pypi.org/project/keyboard/0.13.0/"> <p class="release__version"> 0.13.0 </p> <p class="release__version-date"> <time class="tooltipped tooltipped-s -js-relative-time" datetime="2018-03-26T22:59:24+0000" data-controller="localized-time" aria-label="Mar 27, 2018, 01:59:24 GMT+3" data-original-label="Mar 27, 2018, 01:59:24 GMT+3">Mar 27, 2018</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="History Node" src="./keyboard · PyPI_files/white-cube.8c3a6fe9.svg"> </div> <a class="card release__card" href="https://pypi.org/project/keyboard/0.11.0/"> <p class="release__version"> 0.11.0 </p> <p class="release__version-date"> <time class="tooltipped tooltipped-s -js-relative-time" datetime="2017-08-24T20:11:25+0000" data-controller="localized-time" aria-label="Aug 24, 2017, 23:11:25 GMT+3" data-original-label="Aug 24, 2017, 23:11:25 GMT+3">Aug 24, 2017</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="History Node" src="./keyboard · PyPI_files/white-cube.8c3a6fe9.svg"> </div> <a class="card release__card" href="https://pypi.org/project/keyboard/0.10.4/"> <p class="release__version"> 0.10.4 </p> <p class="release__version-date"> <time class="tooltipped tooltipped-s -js-relative-time" datetime="2017-08-15T02:02:00+0000" data-controller="localized-time" aria-label="Aug 15, 2017, 05:02:00 GMT+3" data-original-label="Aug 15, 2017, 05:02:00 GMT+3">Aug 15, 2017</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="History Node" src="./keyboard · PyPI_files/white-cube.8c3a6fe9.svg"> </div> <a class="card release__card" href="https://pypi.org/project/keyboard/0.10.3/"> <p class="release__version"> 0.10.3 </p> <p class="release__version-date"> <time class="tooltipped tooltipped-s -js-relative-time" datetime="2017-08-08T13:46:22+0000" data-controller="localized-time" aria-label="Aug 8, 2017, 16:46:22 GMT+3" data-original-label="Aug 8, 2017, 16:46:22 GMT+3">Aug 8, 2017</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="History Node" src="./keyboard · PyPI_files/white-cube.8c3a6fe9.svg"> </div> <a class="card release__card" href="https://pypi.org/project/keyboard/0.10.2/"> <p class="release__version"> 0.10.2 </p> <p class="release__version-date"> <time class="tooltipped tooltipped-s -js-relative-time" datetime="2017-08-08T13:38:56+0000" data-controller="localized-time" aria-label="Aug 8, 2017, 16:38:56 GMT+3" data-original-label="Aug 8, 2017, 16:38:56 GMT+3">Aug 8, 2017</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="History Node" src="./keyboard · PyPI_files/white-cube.8c3a6fe9.svg"> </div> <a class="card release__card" href="https://pypi.org/project/keyboard/0.10.0/"> <p class="release__version"> 0.10.0 </p> <p class="release__version-date"> <time class="tooltipped tooltipped-s -js-relative-time" datetime="2017-08-03T15:17:16+0000" data-controller="localized-time" aria-label="Aug 3, 2017, 18:17:16 GMT+3" data-original-label="Aug 3, 2017, 18:17:16 GMT+3">Aug 3, 2017</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="History Node" src="./keyboard · PyPI_files/white-cube.8c3a6fe9.svg"> </div> <a class="card release__card" href="https://pypi.org/project/keyboard/0.9.13/"> <p class="release__version"> 0.9.13 </p> <p class="release__version-date"> <time class="tooltipped tooltipped-s -js-relative-time" datetime="2017-03-29T03:25:10+0000" data-controller="localized-time" aria-label="Mar 29, 2017, 06:25:10 GMT+3" data-original-label="Mar 29, 2017, 06:25:10 GMT+3">Mar 29, 2017</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="History Node" src="./keyboard · PyPI_files/white-cube.8c3a6fe9.svg"> </div> <a class="card release__card" href="https://pypi.org/project/keyboard/0.9.12/"> <p class="release__version"> 0.9.12 </p> <p class="release__version-date"> <time class="tooltipped tooltipped-s -js-relative-time" datetime="2017-02-04T16:02:32+0000" data-controller="localized-time" aria-label="Feb 4, 2017, 19:02:32 GMT+3" data-original-label="Feb 4, 2017, 19:02:32 GMT+3">Feb 4, 2017</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="History Node" src="./keyboard · PyPI_files/white-cube.8c3a6fe9.svg"> </div> <a class="card release__card" href="https://pypi.org/project/keyboard/0.9.11/"> <p class="release__version"> 0.9.11 </p> <p class="release__version-date"> <time class="tooltipped tooltipped-s -js-relative-time" datetime="2017-02-02T07:17:17+0000" data-controller="localized-time" aria-label="Feb 2, 2017, 10:17:17 GMT+3" data-original-label="Feb 2, 2017, 10:17:17 GMT+3">Feb 2, 2017</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="History Node" src="./keyboard · PyPI_files/white-cube.8c3a6fe9.svg"> </div> <a class="card release__card" href="https://pypi.org/project/keyboard/0.9.10/"> <p class="release__version"> 0.9.10 </p> <p class="release__version-date"> <time class="tooltipped tooltipped-s -js-relative-time" datetime="2017-01-29T10:13:43+0000" data-controller="localized-time" aria-label="Jan 29, 2017, 13:13:43 GMT+3" data-original-label="Jan 29, 2017, 13:13:43 GMT+3">Jan 29, 2017</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="History Node" src="./keyboard · PyPI_files/white-cube.8c3a6fe9.svg"> </div> <a class="card release__card" href="https://pypi.org/project/keyboard/0.9.9/"> <p class="release__version"> 0.9.9 </p> <p class="release__version-date"> <time class="tooltipped tooltipped-s -js-relative-time" datetime="2016-12-18T17:32:46+0000" data-controller="localized-time" aria-label="Dec 18, 2016, 20:32:46 GMT+3" data-original-label="Dec 18, 2016, 20:32:46 GMT+3">Dec 18, 2016</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="History Node" src="./keyboard · PyPI_files/white-cube.8c3a6fe9.svg"> </div> <a class="card release__card" href="https://pypi.org/project/keyboard/0.9.8/"> <p class="release__version"> 0.9.8 </p> <p class="release__version-date"> <time class="tooltipped tooltipped-s -js-relative-time" datetime="2016-12-10T22:26:25+0000" data-controller="localized-time" aria-label="Dec 11, 2016, 01:26:25 GMT+3" data-original-label="Dec 11, 2016, 01:26:25 GMT+3">Dec 11, 2016</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="History Node" src="./keyboard · PyPI_files/white-cube.8c3a6fe9.svg"> </div> <a class="card release__card" href="https://pypi.org/project/keyboard/0.9.7/"> <p class="release__version"> 0.9.7 </p> <p class="release__version-date"> <time class="tooltipped tooltipped-s -js-relative-time" datetime="2016-11-16T21:05:51+0000" data-controller="localized-time" aria-label="Nov 17, 2016, 00:05:51 GMT+3" data-original-label="Nov 17, 2016, 00:05:51 GMT+3">Nov 17, 2016</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="History Node" src="./keyboard · PyPI_files/white-cube.8c3a6fe9.svg"> </div> <a class="card release__card" href="https://pypi.org/project/keyboard/0.9.6/"> <p class="release__version"> 0.9.6 </p> <p class="release__version-date"> <time class="tooltipped tooltipped-s -js-relative-time" datetime="2016-11-14T23:13:18+0000" data-controller="localized-time" aria-label="Nov 15, 2016, 02:13:18 GMT+3" data-original-label="Nov 15, 2016, 02:13:18 GMT+3">Nov 15, 2016</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="History Node" src="./keyboard · PyPI_files/white-cube.8c3a6fe9.svg"> </div> <a class="card release__card" href="https://pypi.org/project/keyboard/0.9.5/"> <p class="release__version"> 0.9.5 </p> <p class="release__version-date"> <time class="tooltipped tooltipped-s -js-relative-time" datetime="2016-11-14T07:31:43+0000" data-controller="localized-time" aria-label="Nov 14, 2016, 10:31:43 GMT+3" data-original-label="Nov 14, 2016, 10:31:43 GMT+3">Nov 14, 2016</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="History Node" src="./keyboard · PyPI_files/white-cube.8c3a6fe9.svg"> </div> <a class="card release__card" href="https://pypi.org/project/keyboard/0.9.4/"> <p class="release__version"> 0.9.4 </p> <p class="release__version-date"> <time class="tooltipped tooltipped-s -js-relative-time" datetime="2016-11-13T19:13:52+0000" data-controller="localized-time" aria-label="Nov 13, 2016, 22:13:52 GMT+3" data-original-label="Nov 13, 2016, 22:13:52 GMT+3">Nov 13, 2016</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="History Node" src="./keyboard · PyPI_files/white-cube.8c3a6fe9.svg"> </div> <a class="card release__card" href="https://pypi.org/project/keyboard/0.9.3/"> <p class="release__version"> 0.9.3 </p> <p class="release__version-date"> <time class="tooltipped tooltipped-s -js-relative-time" datetime="2016-11-13T13:46:32+0000" data-controller="localized-time" aria-label="Nov 13, 2016, 16:46:32 GMT+3" data-original-label="Nov 13, 2016, 16:46:32 GMT+3">Nov 13, 2016</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="History Node" src="./keyboard · PyPI_files/white-cube.8c3a6fe9.svg"> </div> <a class="card release__card" href="https://pypi.org/project/keyboard/0.9.1/"> <p class="release__version"> 0.9.1 </p> <p class="release__version-date"> <time class="tooltipped tooltipped-s -js-relative-time" datetime="2016-11-13T13:20:09+0000" data-controller="localized-time" aria-label="Nov 13, 2016, 16:20:09 GMT+3" data-original-label="Nov 13, 2016, 16:20:09 GMT+3">Nov 13, 2016</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="History Node" src="./keyboard · PyPI_files/white-cube.8c3a6fe9.svg"> </div> <a class="card release__card" href="https://pypi.org/project/keyboard/0.7.1/"> <p class="release__version"> 0.7.1 </p> <p class="release__version-date"> <time class="tooltipped tooltipped-s -js-relative-time" datetime="2016-07-20T20:45:12+0000" data-controller="localized-time" aria-label="Jul 20, 2016, 23:45:12 GMT+3" data-original-label="Jul 20, 2016, 23:45:12 GMT+3">Jul 20, 2016</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="History Node" src="./keyboard · PyPI_files/white-cube.8c3a6fe9.svg"> </div> <a class="card release__card" href="https://pypi.org/project/keyboard/0.7.0/"> <p class="release__version"> 0.7.0 </p> <p class="release__version-date"> <time class="tooltipped tooltipped-s -js-relative-time" datetime="2016-06-23T15:29:46+0000" data-controller="localized-time" aria-label="Jun 23, 2016, 18:29:46 GMT+3" data-original-label="Jun 23, 2016, 18:29:46 GMT+3">Jun 23, 2016</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="History Node" src="./keyboard · PyPI_files/white-cube.8c3a6fe9.svg"> </div> <a class="card release__card" href="https://pypi.org/project/keyboard/0.6.8/"> <p class="release__version"> 0.6.8 </p> <p class="release__version-date"> <time class="tooltipped tooltipped-s -js-relative-time" datetime="2016-05-14T12:50:42+0000" data-controller="localized-time" aria-label="May 14, 2016, 15:50:42 GMT+3" data-original-label="May 14, 2016, 15:50:42 GMT+3">May 14, 2016</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="History Node" src="./keyboard · PyPI_files/white-cube.8c3a6fe9.svg"> </div> <a class="card release__card" href="https://pypi.org/project/keyboard/0.6.7/"> <p class="release__version"> 0.6.7 </p> <p class="release__version-date"> <time class="tooltipped tooltipped-s -js-relative-time" datetime="2016-04-05T16:47:36+0000" data-controller="localized-time" aria-label="Apr 5, 2016, 19:47:36 GMT+3" data-original-label="Apr 5, 2016, 19:47:36 GMT+3">Apr 5, 2016</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="History Node" src="./keyboard · PyPI_files/white-cube.8c3a6fe9.svg"> </div> <a class="card release__card" href="https://pypi.org/project/keyboard/0.6.6/"> <p class="release__version"> 0.6.6 </p> <p class="release__version-date"> <time class="tooltipped tooltipped-s -js-relative-time" datetime="2016-04-05T16:20:56+0000" data-controller="localized-time" aria-label="Apr 5, 2016, 19:20:56 GMT+3" data-original-label="Apr 5, 2016, 19:20:56 GMT+3">Apr 5, 2016</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="History Node" src="./keyboard · PyPI_files/white-cube.8c3a6fe9.svg"> </div> <a class="card release__card" href="https://pypi.org/project/keyboard/0.6.5/"> <p class="release__version"> 0.6.5 </p> <p class="release__version-date"> <time class="tooltipped tooltipped-s -js-relative-time" datetime="2016-03-08T19:24:16+0000" data-controller="localized-time" aria-label="Mar 8, 2016, 22:24:16 GMT+3" data-original-label="Mar 8, 2016, 22:24:16 GMT+3">Mar 8, 2016</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="History Node" src="./keyboard · PyPI_files/white-cube.8c3a6fe9.svg"> </div> <a class="card release__card" href="https://pypi.org/project/keyboard/0.6.4/"> <p class="release__version"> 0.6.4 </p> <p class="release__version-date"> <time class="tooltipped tooltipped-s -js-relative-time" datetime="2016-03-08T17:42:35+0000" data-controller="localized-time" aria-label="Mar 8, 2016, 20:42:35 GMT+3" data-original-label="Mar 8, 2016, 20:42:35 GMT+3">Mar 8, 2016</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="History Node" src="./keyboard · PyPI_files/white-cube.8c3a6fe9.svg"> </div> <a class="card release__card" href="https://pypi.org/project/keyboard/0.6.3/"> <p class="release__version"> 0.6.3 </p> <p class="release__version-date"> <time class="tooltipped tooltipped-s -js-relative-time" datetime="2016-02-01T00:17:40+0000" data-controller="localized-time" aria-label="Feb 1, 2016, 03:17:40 GMT+3" data-original-label="Feb 1, 2016, 03:17:40 GMT+3">Feb 1, 2016</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="History Node" src="./keyboard · PyPI_files/white-cube.8c3a6fe9.svg"> </div> <a class="card release__card" href="https://pypi.org/project/keyboard/0.6.2/"> <p class="release__version"> 0.6.2 </p> <p class="release__version-date"> <time class="tooltipped tooltipped-s -js-relative-time" datetime="2016-01-31T23:56:23+0000" data-controller="localized-time" aria-label="Feb 1, 2016, 02:56:23 GMT+3" data-original-label="Feb 1, 2016, 02:56:23 GMT+3">Feb 1, 2016</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="History Node" src="./keyboard · PyPI_files/white-cube.8c3a6fe9.svg"> </div> <a class="card release__card" href="https://pypi.org/project/keyboard/0.6.1/"> <p class="release__version"> 0.6.1 </p> <p class="release__version-date"> <time class="tooltipped tooltipped-s -js-relative-time" datetime="2016-01-31T23:48:50+0000" data-controller="localized-time" aria-label="Feb 1, 2016, 02:48:50 GMT+3" data-original-label="Feb 1, 2016, 02:48:50 GMT+3">Feb 1, 2016</time> </p> </a> </div> <div class="release release--oldest"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="History Node" src="./keyboard · PyPI_files/white-cube.8c3a6fe9.svg"> </div> <a class="card release__card" href="https://pypi.org/project/keyboard/0.6.0/"> <p class="release__version"> 0.6.0 </p> <p class="release__version-date"> <time class="tooltipped tooltipped-s -js-relative-time" datetime="2016-01-31T23:41:18+0000" data-controller="localized-time" aria-label="Feb 1, 2016, 02:41:18 GMT+3" data-original-label="Feb 1, 2016, 02:41:18 GMT+3">Feb 1, 2016</time> </p> </a> </div> </section> </div> <div id="files" data-target="project-tabs.content" class="vertical-tabs__content" role="tabpanel" aria-labelledby="files-tab mobile-files-tab" style="display: none;"> <h2 class="page-title">Download files</h2> <p>Download the file for your platform. If you're not sure which to choose, learn more about <a href="https://packaging.python.org/installing/">installing packages</a>.</p> <table class="table table--downloads"> <thead> <tr> <th class="table__filename"> Filename, size & hash <a href="https://pip.pypa.io/en/stable/reference/pip_install/#hash-checking-mode" class="tooltipped tooltipped-n" aria-label="what's this?" data-original-label="what's this?"> <i class="fa fa-question-circle" aria-hidden="true"></i> <span class="sr-only">SHA256 hash help</span> </a> </th> <th class="table__type">File type</th> <th class="table__version">Python version</th> <th class="table__upload-date">Upload date</th> </tr> </thead> <tbody> <tr> <td> <a href="https://files.pythonhosted.org/packages/8d/14/b7a8f46e750b5905b099f0ae164a00bc99fe2a3029b4d54ae978797d2c15/keyboard-0.13.3-py2.py3-none-any.whl"> keyboard-0.13.3-py2.py3-none-any.whl </a> (58.7 kB) <a class="-js-copy-hash table__sha256-link tooltipped tooltipped-s" aria-label="Copy to clipboard" data-original-label="Copy to clipboard" data-clipboard-text="18b53344408df1973c452549f47a203f20a0e65fbbd4436c72562759fa03c0b8"> <i class="fa fa-copy" aria-hidden="true"></i> <span class="sr-only">Copy SHA256 hash</span> SHA256 </a> </td> <td> Wheel </td> <td> py2.py3 </td> <td><time class="tooltipped tooltipped-s -js-relative-time" datetime="2019-03-18T08:52:09+0000" data-controller="localized-time" aria-label="Mar 18, 2019, 11:52:09 GMT+3" data-original-label="Mar 18, 2019, 11:52:09 GMT+3">Mar 18, 2019</time></td> </tr> <tr> <td> <a href="https://files.pythonhosted.org/packages/bf/5e/4c046b8f94e68af6b5b3fe7550a87370f68a168fbc2eff10f06f59172e32/keyboard-0.13.3.win-amd64.exe"> keyboard-0.13.3.win-amd64.exe </a> (650.4 kB) <a class="-js-copy-hash table__sha256-link tooltipped tooltipped-s" aria-label="Copy to clipboard" data-original-label="Copy to clipboard" data-clipboard-text="0fa2f6d5aa793270d97952d256fbd984091bdccd63a7e10127bd1a04e3f2ee71"> <i class="fa fa-copy" aria-hidden="true"></i> <span class="sr-only">Copy SHA256 hash</span> SHA256 </a> </td> <td> Windows Installer </td> <td> any </td> <td><time class="tooltipped tooltipped-s -js-relative-time" datetime="2019-03-18T08:52:13+0000" data-controller="localized-time" aria-label="Mar 18, 2019, 11:52:13 GMT+3" data-original-label="Mar 18, 2019, 11:52:13 GMT+3">Mar 18, 2019</time></td> </tr> <tr> <td> <a href="https://files.pythonhosted.org/packages/ea/bf/f00decd3a10c55039d9036c9d698a6a59798f736db7b046af20e7e6fd02d/keyboard-0.13.3.zip"> keyboard-0.13.3.zip </a> (69.4 kB) <a class="-js-copy-hash table__sha256-link tooltipped tooltipped-s" aria-label="Copy to clipboard" data-original-label="Copy to clipboard" data-clipboard-text="d900fefc9c8dfc0c5d92bea6d6190a2ed9beea1bdbc0e16ce12a235bf5ef6281"> <i class="fa fa-copy" aria-hidden="true"></i> <span class="sr-only">Copy SHA256 hash</span> SHA256 </a> </td> <td> Source </td> <td> None </td> <td><time class="tooltipped tooltipped-s -js-relative-time" datetime="2019-03-18T08:52:15+0000" data-controller="localized-time" aria-label="Mar 18, 2019, 11:52:15 GMT+3" data-original-label="Mar 18, 2019, 11:52:15 GMT+3">Mar 18, 2019</time></td> </tr> </tbody> </table> </div> </div> </div> </div> </section> </main> <footer class="footer" role="contentinfo"> <div class="footer__logo"> <img src="./keyboard · PyPI_files/white-cube.8c3a6fe9.svg" alt="Logo" class="-js-white-cube"> </div> <div class="footer__menus"> <ul class="footer__menu"> <li> <h2>Help</h2> </li> <li><a href="https://packaging.python.org/installing/">Installing packages</a></li> <li><a href="https://packaging.python.org/tutorials/packaging-projects/">Uploading packages</a></li> <li><a href="https://packaging.python.org/">User guide</a></li> <li><a href="https://pypi.org/help/">FAQs</a></li> </ul> <ul class="footer__menu"> <li> <h2>About PyPI</h2> </li> <li><a href="https://twitter.com/PyPI">PyPI on Twitter</a></li> <li><a href="https://dtdg.co/pypi">Infrastructure dashboard</a></li> <li><a href="https://www.python.org/dev/peps/pep-0541/">Package index name retention</a></li> <li><a href="https://pypi.org/sponsors/">Our sponsors</a></li> </ul> <ul class="footer__menu"> <li> <h2>Contributing to PyPI</h2> </li> <li><a href="https://pypi.org/help/#feedback">Bugs and feedback</a></li> <li><a href="https://github.com/pypa/warehouse">Contribute on GitHub</a></li> <li><a href="https://github.com/pypa/warehouse/graphs/contributors">Development credits</a></li> </ul> <ul class="footer__menu"> <li> <h2>Using PyPI</h2> </li> <li><a href="https://www.pypa.io/en/latest/code-of-conduct/">Code of conduct</a></li> <li><a href="https://pypi.org/security/">Report security issue</a></li> <li><a href="https://www.python.org/privacy/">Privacy policy</a></li> <li><a href="https://pypi.org/policy/terms-of-use/">Terms of use</a></li> </ul> </div> <hr class="footer__divider"> <div class="footer__text"> <p>Status: <a href="https://status.python.org/"><span data-statuspage-domain="https://2p66nmmycsj3.statuspage.io">All Systems Operational</span></a></p> <p> Developed and maintained by the Python community, for the Python community. <br> <a href="https://donate.pypi.org/">Donate today!</a> </p> <p>© 2019 <a href="https://www.python.org/psf/">Python Software Foundation</a></p> </div> <div class="centered hide-on-desktop"> <button class="button button--switch-to-desktop" data-target="viewport-toggle.switchToDesktop" data-action="viewport-toggle#switchToDesktop"> Desktop version </button> </div> </footer> <div class="sponsors"> <p class="sponsors__title">Supported by</p> <a class="sponsors__sponsor" target="_blank" rel="noopener" href="https://www.elastic.co/"> <img class="sponsors__image" alt="Elastic" src="./keyboard · PyPI_files/elastic.a912fb87.png"> <span class="sponsors__name">Elastic</span> <span class="sponsors__service">Search</span> </a> <a class="sponsors__sponsor" target="_blank" rel="noopener" href="https://www.pingdom.com/"> <img class="sponsors__image" alt="Pingdom" src="./keyboard · PyPI_files/pingdom.07446398.png"> <span class="sponsors__name">Pingdom</span> <span class="sponsors__service">Monitoring</span> </a> <a class="sponsors__sponsor" target="_blank" rel="noopener" href="https://cloud.google.com/"> <img class="sponsors__image" alt="Google" src="./keyboard · PyPI_files/google.2f72f26f.png"> <span class="sponsors__name">Google</span> <span class="sponsors__service">BigQuery</span> </a> <a class="sponsors__sponsor" target="_blank" rel="noopener" href="https://getsentry.com/for/python"> <img class="sponsors__image" alt="Sentry" src="./keyboard · PyPI_files/sentry.5ab437bc.png"> <span class="sponsors__name">Sentry</span> <span class="sponsors__service">Error logging</span> </a> <a class="sponsors__sponsor" target="_blank" rel="noopener" href="https://aws.amazon.com/"> <img class="sponsors__image" alt="AWS" src="./keyboard · PyPI_files/aws.5f800271.png"> <span class="sponsors__name">AWS</span> <span class="sponsors__service">Cloud computing</span> </a> <a class="sponsors__sponsor" target="_blank" rel="noopener" href="https://www.datadoghq.com/"> <img class="sponsors__image" alt="DataDog" src="./keyboard · PyPI_files/datadog.e569d741.png"> <span class="sponsors__name">DataDog</span> <span class="sponsors__service">Monitoring</span> </a> <a class="sponsors__sponsor" target="_blank" rel="noopener" href="https://www.fastly.com/"> <img class="sponsors__image" alt="Fastly" src="./keyboard · PyPI_files/fastly.0563c6f5.png"> <span class="sponsors__name">Fastly</span> <span class="sponsors__service">CDN</span> </a> <a class="sponsors__sponsor" target="_blank" rel="noopener" href="https://www.signalfx.com/"> <img class="sponsors__image" alt="SignalFx" src="./keyboard · PyPI_files/signalfx.560cb5c4.png"> <span class="sponsors__name">SignalFx</span> <span class="sponsors__service">Supporter</span> </a> <a class="sponsors__sponsor" target="_blank" rel="noopener" href="https://www.digicert.com/"> <img class="sponsors__image" alt="DigiCert" src="./keyboard · PyPI_files/digicert.79748718.png"> <span class="sponsors__name">DigiCert</span> <span class="sponsors__service">EV certificate</span> </a> <a class="sponsors__sponsor" target="_blank" rel="noopener" href="https://statuspage.io/"> <img class="sponsors__image" alt="StatusPage" src="./keyboard · PyPI_files/statuspage.67af0b3d.png"> <span class="sponsors__name">StatusPage</span> <span class="sponsors__service">Status page</span> </a> </div> </body></html>