mirror of
https://github.com/dekuNukem/USB4VC.git
synced 2025-10-31 11:26:46 -07:00
4458 lines
100 KiB
HTML
4458 lines
100 KiB
HTML
<!DOCTYPE html>
|
|
<html dir="ltr" class="client-nojs" lang="en"><head>
|
|
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
|
|
<title>PS/2 Keyboard - OSDev Wiki</title>
|
|
<meta charset="UTF-8">
|
|
<meta name="generator" content="MediaWiki 1.18.0">
|
|
<link rel="shortcut icon" href="https://wiki.osdev.org/favicon.ico">
|
|
<link rel="search" type="application/opensearchdescription+xml" href="https://wiki.osdev.org/opensearch_desc.php" title="OSDev Wiki (en)">
|
|
<link rel="EditURI" type="application/rsd+xml" href="https://wiki.osdev.org/api.php?action=rsd">
|
|
<link rel="alternate" type="application/atom+xml" title="OSDev Wiki Atom feed" href="https://wiki.osdev.org/index.php?title=Special:RecentChanges&feed=atom">
|
|
<link rel="stylesheet" href="PS_2%20Keyboard%20-%20OSDev%20Wiki_files/load.css">
|
|
<meta name="ResourceLoaderDynamicStyles" content="">
|
|
<link rel="stylesheet" href="PS_2%20Keyboard%20-%20OSDev%20Wiki_files/load_002.css">
|
|
<style>a:lang(ar),a:lang(ckb),a:lang(fa),a:lang(kk-arab),a:lang(mzn),a:lang(ps),a:lang(ur){text-decoration:none}a.new,#quickbar a.new{color:#ba0000}
|
|
|
|
/* cache key: wikidb:resourceloader:filter:minify-css:4:c88e2bcd56513749bec09a7e29cb3ffa */
|
|
</style>
|
|
<script src="PS_2%20Keyboard%20-%20OSDev%20Wiki_files/load_003"></script>
|
|
<script>if(window.mw){
|
|
mw.config.set({"wgCanonicalNamespace": "", "wgCanonicalSpecialPageName": false, "wgNamespaceNumber": 0, "wgPageName": "PS/2_Keyboard", "wgTitle": "PS/2 Keyboard", "wgCurRevisionId": 27032, "wgArticleId": 1900, "wgIsArticle": true, "wgAction": "view", "wgUserName": null, "wgUserGroups": ["*"], "wgCategories": ["Human Interface Device", "Common Devices"], "wgBreakFrames": false, "wgRestrictionEdit": [], "wgRestrictionMove": []});
|
|
}
|
|
</script><script>if(window.mw){
|
|
mw.loader.load(["mediawiki.page.startup"]);
|
|
}
|
|
</script>
|
|
<!--[if lt IE 7]><style type="text/css">body{behavior:url("/skins/vector/csshover.min.htc")}</style><![endif]--></head>
|
|
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-PS_2_Keyboard action-view skin-vector">
|
|
<div id="mw-page-base" class="noprint"></div>
|
|
<div id="mw-head-base" class="noprint"></div>
|
|
<!-- content -->
|
|
<div id="content">
|
|
<a id="top"></a>
|
|
<div id="mw-js-message" style="display:none;"></div>
|
|
<!-- firstHeading -->
|
|
<h1 id="firstHeading" class="firstHeading">PS/2 Keyboard</h1>
|
|
<!-- /firstHeading -->
|
|
<!-- bodyContent -->
|
|
<div id="bodyContent">
|
|
<!-- tagline -->
|
|
<div id="siteSub">From OSDev Wiki</div>
|
|
<!-- /tagline -->
|
|
<!-- subtitle -->
|
|
<div id="contentSub"></div>
|
|
<!-- /subtitle -->
|
|
<!-- jumpto -->
|
|
<div id="jump-to-nav">
|
|
Jump to: <a href="#mw-head">navigation</a>,
|
|
<a href="#p-search">search</a>
|
|
</div>
|
|
<!-- /jumpto -->
|
|
<!-- bodycontent -->
|
|
<div dir="ltr" class="mw-content-ltr" lang="en"><table id="toc" class="toc"><tbody><tr><td><div id="toctitle"><h2>Contents</h2></div>
|
|
<ul>
|
|
<li class="toclevel-1 tocsection-1"><a href="#Overview"><span class="tocnumber">1</span> <span class="toctext">Overview</span></a></li>
|
|
<li class="toclevel-1 tocsection-2"><a href="#Commands"><span class="tocnumber">2</span> <span class="toctext">Commands</span></a></li>
|
|
<li class="toclevel-1 tocsection-3"><a href="#Special_Bytes"><span class="tocnumber">3</span> <span class="toctext">Special Bytes</span></a></li>
|
|
<li class="toclevel-1 tocsection-4"><a href="#Driver_Model"><span class="tocnumber">4</span> <span class="toctext">Driver Model</span></a>
|
|
<ul>
|
|
<li class="toclevel-2 tocsection-5"><a href="#Command_Queue_and_State_Machine"><span class="tocnumber">4.1</span> <span class="toctext">Command Queue and State Machine</span></a></li>
|
|
<li class="toclevel-2 tocsection-6"><a href="#Scan_Code_Sets.2C_Scan_Codes_and_Key_Codes"><span class="tocnumber">4.2</span> <span class="toctext">Scan Code Sets, Scan Codes and Key Codes</span></a></li>
|
|
<li class="toclevel-2 tocsection-7"><a href="#Key_Codes.2C_Key_States_and_Key_Mappings"><span class="tocnumber">4.3</span> <span class="toctext">Key Codes, Key States and Key Mappings</span></a></li>
|
|
</ul>
|
|
</li>
|
|
<li class="toclevel-1 tocsection-8"><a href="#Scan_Code_Sets"><span class="tocnumber">5</span> <span class="toctext">Scan Code Sets</span></a>
|
|
<ul>
|
|
<li class="toclevel-2 tocsection-9"><a href="#Scan_Code_Set_1"><span class="tocnumber">5.1</span> <span class="toctext">Scan Code Set 1</span></a></li>
|
|
<li class="toclevel-2 tocsection-10"><a href="#Scan_Code_Set_2"><span class="tocnumber">5.2</span> <span class="toctext">Scan Code Set 2</span></a></li>
|
|
<li class="toclevel-2 tocsection-11"><a href="#Scan_Code_Set_3"><span class="tocnumber">5.3</span> <span class="toctext">Scan Code Set 3</span></a></li>
|
|
</ul>
|
|
</li>
|
|
<li class="toclevel-1 tocsection-12"><a href="#See_Also"><span class="tocnumber">6</span> <span class="toctext">See Also</span></a>
|
|
<ul>
|
|
<li class="toclevel-2 tocsection-13"><a href="#Forum_Threads"><span class="tocnumber">6.1</span> <span class="toctext">Forum Threads</span></a></li>
|
|
<li class="toclevel-2 tocsection-14"><a href="#External_Links"><span class="tocnumber">6.2</span> <span class="toctext">External Links</span></a>
|
|
<ul>
|
|
<li class="toclevel-3 tocsection-15"><a href="#Implementations"><span class="tocnumber">6.2.1</span> <span class="toctext">Implementations</span></a></li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</td></tr></tbody></table>
|
|
<h2> <span class="mw-headline" id="Overview"> Overview </span></h2>
|
|
<p>The PS/2 Keyboard is a device that talks to a PS/2 controller using <a href="https://wiki.osdev.org/PS/2" title="PS/2">serial communication</a>.
|
|
Ideally, each different type of PS/2 controller driver should provide
|
|
some sort of standard/simple "send byte/receive byte" interface, and the
|
|
PS/2 Keyboard driver would use this interface without caring about
|
|
lower level details (like what type of PS/2 controller the device is
|
|
plugged into).
|
|
</p><p>The PS/2 Keyboard accepts commands and sends responses to those
|
|
commands, and also sends scan codes indicating when a key was pressed or
|
|
released. Keep in mind that these scan codes (from the tables below)
|
|
may be altered (i.e. translated) by the PS/2 controller, depending on
|
|
the controller's settings.
|
|
</p>
|
|
<h2> <span class="mw-headline" id="Commands"> Commands </span></h2>
|
|
<p>A PS/2 Keyboard accepts many types of commands. A command is one
|
|
byte. Some commands have data byte/s which must be sent after the
|
|
command byte. The keyboard typically responds to a command by sending
|
|
either an "ACK" (to acknowledge the command) or a "Resend" (to say
|
|
something was wrong with the previous command) back. Don't forget to
|
|
wait between the command, the data and the response from keyboard.
|
|
</p><p>The commands that a PS/2 Keyboard accepts are:
|
|
</p>
|
|
<table style="margin-top:1em; margin-bottom:1em; background:#f9f9f9; border:1px #aaa solid; border-collapse:collapse; {{{1}}}" cellspacing="0" cellpadding="4" border="2">
|
|
|
|
<tbody><tr>
|
|
<th> Command Byte
|
|
</th>
|
|
<th> Data Byte/s
|
|
</th>
|
|
<th> Meaning
|
|
</th>
|
|
<th> Response
|
|
</th></tr>
|
|
<tr>
|
|
<td> 0xED
|
|
</td>
|
|
<td> LED states:
|
|
<table style="margin-top:1em; margin-bottom:1em; background:#f9f9f9; border:1px #aaa solid; border-collapse:collapse; {{{1}}}" cellspacing="0" cellpadding="4" border="2">
|
|
|
|
<tbody><tr>
|
|
<th> Bit
|
|
</th>
|
|
<th> Use
|
|
</th></tr>
|
|
<tr>
|
|
<td> 0
|
|
</td>
|
|
<td> ScrollLock
|
|
</td></tr>
|
|
<tr>
|
|
<td> 1
|
|
</td>
|
|
<td> NumberLock
|
|
</td></tr>
|
|
<tr>
|
|
<td> 2
|
|
</td>
|
|
<td> CapsLock
|
|
</td></tr></tbody></table>
|
|
<p>Note: Other bits may be used in international keyboards for other
|
|
purposes (e.g. a Japanese keyboard might use bit 4 for a "Kana mode"
|
|
LED).
|
|
</p>
|
|
</td>
|
|
<td> Set LEDs
|
|
</td>
|
|
<td> 0xFA (ACK) or 0xFE (Resend)
|
|
</td></tr>
|
|
<tr>
|
|
<td> 0xEE
|
|
</td>
|
|
<td> None
|
|
</td>
|
|
<td> Echo (for diagnostic purposes, and useful for device removal detection)
|
|
</td>
|
|
<td> 0xEE (Echo) or 0xFE (Resend)
|
|
</td></tr>
|
|
<tr>
|
|
<td> 0xF0
|
|
</td>
|
|
<td> Sub-command:
|
|
<table style="margin-top:1em; margin-bottom:1em; background:#f9f9f9; border:1px #aaa solid; border-collapse:collapse; {{{1}}}" cellspacing="0" cellpadding="4" border="2">
|
|
|
|
<tbody><tr>
|
|
<th> Value
|
|
</th>
|
|
<th> Use
|
|
</th></tr>
|
|
<tr>
|
|
<td> 0
|
|
</td>
|
|
<td> Get current scan code set
|
|
</td></tr>
|
|
<tr>
|
|
<td> 1
|
|
</td>
|
|
<td> Set scan code set 1
|
|
</td></tr>
|
|
<tr>
|
|
<td> 2
|
|
</td>
|
|
<td> Set scan code set 2
|
|
</td></tr>
|
|
<tr>
|
|
<td> 3
|
|
</td>
|
|
<td> Set scan code set 3
|
|
</td></tr></tbody></table>
|
|
</td>
|
|
<td> Get/set current scan code set
|
|
</td>
|
|
<td> 0xFA (ACK) or 0xFE (Resend) if scan code is being set; 0xFA (ACK)
|
|
then the scan code set number, or 0xFE (Resend) if you're getting the
|
|
scancode. If getting the scancode the table indicates the value that
|
|
identify each set:
|
|
<table style="margin-top:1em; margin-bottom:1em; background:#f9f9f9; border:1px #aaa solid; border-collapse:collapse; {{{1}}}" cellspacing="0" cellpadding="4" border="2">
|
|
|
|
<tbody><tr>
|
|
<th> Value
|
|
</th>
|
|
<th> Use
|
|
</th></tr>
|
|
<tr>
|
|
<td> 43
|
|
</td>
|
|
<td> Scan code set 1
|
|
</td></tr>
|
|
<tr>
|
|
<td> 41
|
|
</td>
|
|
<td> Scan code set 2
|
|
</td></tr>
|
|
<tr>
|
|
<td> 3f
|
|
</td>
|
|
<td> Scan code set 3
|
|
</td></tr></tbody></table>
|
|
</td></tr>
|
|
<tr>
|
|
<td> 0xF2
|
|
</td>
|
|
<td> None
|
|
</td>
|
|
<td> Identify keyboard
|
|
</td>
|
|
<td> 0xFA (ACK) followed by none or more ID bytes (see <a href="https://wiki.osdev.org/%228042%22_PS/2_Controller#Detecting_PS.2F2_Device_Types" title=""8042" PS/2 Controller">"Detecting Device Types"</a>)
|
|
</td></tr>
|
|
<tr>
|
|
<td> 0xF3
|
|
</td>
|
|
<td> Typematic byte:
|
|
<table style="margin-top:1em; margin-bottom:1em; background:#f9f9f9; border:1px #aaa solid; border-collapse:collapse; {{{1}}}" cellspacing="0" cellpadding="4" border="2">
|
|
|
|
<tbody><tr>
|
|
<th> Bit/s
|
|
</th>
|
|
<th> Meaning
|
|
</th></tr>
|
|
<tr>
|
|
<td> 0 to 4
|
|
</td>
|
|
<td> Repeat rate (00000b = 30 Hz, ..., 11111b = 2 Hz)
|
|
</td></tr>
|
|
<tr>
|
|
<td> 5 to 6
|
|
</td>
|
|
<td> Delay before keys repeat (00b = 250 ms, 01b = 500 ms, 10b = 750 ms, 11b = 1000 ms)
|
|
</td></tr>
|
|
<tr>
|
|
<td> 7
|
|
</td>
|
|
<td> Must be zero
|
|
</td></tr></tbody></table>
|
|
</td>
|
|
<td> Set typematic rate and delay
|
|
</td>
|
|
<td> 0xFA (ACK) or 0xFE (Resend)
|
|
</td></tr>
|
|
<tr>
|
|
<td> 0xF4
|
|
</td>
|
|
<td> None
|
|
</td>
|
|
<td> Enable scanning (keyboard will send scan codes)
|
|
</td>
|
|
<td> 0xFA (ACK) or 0xFE (Resend)
|
|
</td></tr>
|
|
<tr>
|
|
<td> 0xF5
|
|
</td>
|
|
<td> None
|
|
</td>
|
|
<td> Disable scanning (keyboard won't send scan codes)
|
|
<p>Note: May also restore default parameters
|
|
</p>
|
|
</td>
|
|
<td> 0xFA (ACK) or 0xFE (Resend)
|
|
</td></tr>
|
|
<tr>
|
|
<td> 0xF6
|
|
</td>
|
|
<td> None
|
|
</td>
|
|
<td> Set default parameters
|
|
</td>
|
|
<td> 0xFA (ACK) or 0xFE (Resend)
|
|
</td></tr>
|
|
<tr>
|
|
<td> 0xF7
|
|
</td>
|
|
<td> None
|
|
</td>
|
|
<td> Set all keys to typematic/autorepeat only (scancode set 3 only)
|
|
</td>
|
|
<td> 0xFA (ACK) or 0xFE (Resend)
|
|
</td></tr>
|
|
<tr>
|
|
<td> 0xF8
|
|
</td>
|
|
<td> None
|
|
</td>
|
|
<td> Set all keys to make/release (scancode set 3 only)
|
|
</td>
|
|
<td> 0xFA (ACK) or 0xFE (Resend)
|
|
</td></tr>
|
|
<tr>
|
|
<td> 0xF9
|
|
</td>
|
|
<td> None
|
|
</td>
|
|
<td> Set all keys to make only (scancode set 3 only)
|
|
</td>
|
|
<td> 0xFA (ACK) or 0xFE (Resend)
|
|
</td></tr>
|
|
<tr>
|
|
<td> 0xFA
|
|
</td>
|
|
<td> None
|
|
</td>
|
|
<td> Set all keys to typematic/autorepeat/make/release (scancode set 3 only)
|
|
</td>
|
|
<td> 0xFA (ACK) or 0xFE (Resend)
|
|
</td></tr>
|
|
<tr>
|
|
<td> 0xFB
|
|
</td>
|
|
<td> Scancode for key
|
|
</td>
|
|
<td> Set specific key to typematic/autorepeat only (scancode set 3 only)
|
|
</td>
|
|
<td> 0xFA (ACK) or 0xFE (Resend)
|
|
</td></tr>
|
|
<tr>
|
|
<td> 0xFC
|
|
</td>
|
|
<td> Scancode for key
|
|
</td>
|
|
<td> Set specific key to make/release (scancode set 3 only)
|
|
</td>
|
|
<td> 0xFA (ACK) or 0xFE (Resend)
|
|
</td></tr>
|
|
<tr>
|
|
<td> 0xFD
|
|
</td>
|
|
<td> Scancode for key
|
|
</td>
|
|
<td> Set specific key to make only (scancode set 3 only)
|
|
</td>
|
|
<td> 0xFA (ACK) or 0xFE (Resend)
|
|
</td></tr>
|
|
<tr>
|
|
<td> 0xFE
|
|
</td>
|
|
<td> None
|
|
</td>
|
|
<td> Resend last byte
|
|
</td>
|
|
<td> Previously sent byte or 0xFE (Resend)
|
|
</td></tr>
|
|
<tr>
|
|
<td> 0xFF
|
|
</td>
|
|
<td> None
|
|
</td>
|
|
<td> Reset and start self-test
|
|
</td>
|
|
<td> 0xAA (self-test passed), 0xFC or 0xFD (self test failed), or 0xFE (Resend)
|
|
</td></tr></tbody></table>
|
|
<h2> <span class="mw-headline" id="Special_Bytes"> Special Bytes </span></h2>
|
|
<p>The keyboard sends bytes to the system. Some of these bytes have
|
|
special meaning (e.g. responses from the commands above). The bytes the
|
|
keyboard may send are:
|
|
</p>
|
|
<table style="margin-top:1em; margin-bottom:1em; background:#f9f9f9; border:1px #aaa solid; border-collapse:collapse; {{{1}}}" cellspacing="0" cellpadding="4" border="2">
|
|
|
|
<tbody><tr>
|
|
<th> Response Byte
|
|
</th>
|
|
<th> Meaning
|
|
</th></tr>
|
|
<tr>
|
|
<td> 0x00
|
|
</td>
|
|
<td> Key detection error or internal buffer overrun
|
|
</td></tr>
|
|
<tr>
|
|
<td> 0xAA
|
|
</td>
|
|
<td> Self test passed (sent after "0xFF (reset)" command or keyboard power up)
|
|
</td></tr>
|
|
<tr>
|
|
<td> 0xEE
|
|
</td>
|
|
<td> Response to "0xEE (echo)" command
|
|
</td></tr>
|
|
<tr>
|
|
<td> 0xFA
|
|
</td>
|
|
<td> Command acknowledged (ACK)
|
|
</td></tr>
|
|
<tr>
|
|
<td> 0xFC and 0xFD
|
|
</td>
|
|
<td> Self test failed (sent after "0xFF (reset)" command or keyboard power up)
|
|
</td></tr>
|
|
<tr>
|
|
<td> 0xFE
|
|
</td>
|
|
<td> Resend (keyboard wants controller to repeat last command it sent)
|
|
</td></tr>
|
|
<tr>
|
|
<td> 0xFF
|
|
</td>
|
|
<td> Key detection error or internal buffer overrun
|
|
</td></tr></tbody></table>
|
|
<p>All other bytes sent by the keyboard are scan codes, where interpretation depends on the currently selected scan code set.
|
|
</p>
|
|
<h2> <span class="mw-headline" id="Driver_Model"> Driver Model </span></h2>
|
|
<h3> <span class="mw-headline" id="Command_Queue_and_State_Machine"> Command Queue and State Machine </span></h3>
|
|
<p>Commands must be sent one at a time (e.g. if your driver is interrupt
|
|
driven, you can't start sending a command within the IRQ handler
|
|
because code outside the IRQ handler may be in the middle of sending a
|
|
command). The command isn't completed until you've received an ACK for
|
|
it. For example, if you send a command and the keyboard responds with
|
|
"0xFE (resend)" then you have to send the command again (possibly
|
|
limited to 3 retries before you give up and assume the keyboard doesn't
|
|
support the command you're sending or there's been a hardware failure).
|
|
Finally, sometimes you want to send several commands at once. For
|
|
example, you might have a "reinitialise()" function that sets the scan
|
|
code set, sets the typematic byte, sets the LEDs and enables scanning.
|
|
</p><p>The simplest way to achieve this is for the driver to maintain a
|
|
queue of commands. When you add a command to the queue, if the queue is
|
|
empty you start sending the command; otherwise you append the command to
|
|
the queue. When you receive an "0xFA (ACK)" from the keyboard you
|
|
discard the command at the head of the queue and start sending the next
|
|
command in the queue (if any). If you receive an "0xFE (Resend)" from
|
|
the keyboard you can resend the command at the head of the queue.
|
|
</p><p>The remainder of the driver should be a kind of state machine.
|
|
The state machine moves into a different state when some commands are
|
|
successfully completed, and when various bytes are received from the
|
|
keyboard. For example, the driver might be in a default state and
|
|
receive a break code that puts it into a "waiting for scan code after
|
|
receiving break code" state. Then it might receive the first byte of a
|
|
multi-byte scan code and shift to a "waiting for second byte of scan
|
|
code after receiving break code" state. Finally it might receive the
|
|
second/last byte of the scan code and then switch back to the default
|
|
state.
|
|
</p><p><br>
|
|
</p>
|
|
<h3> <span class="mw-headline" id="Scan_Code_Sets.2C_Scan_Codes_and_Key_Codes"> Scan Code Sets, Scan Codes and Key Codes </span></h3>
|
|
<p>A scan code set is a set of codes that determine when a key is
|
|
pressed or repeated, or released. There are 3 different sets of scan
|
|
codes. The oldest is "scan code set 1", the default is "scan code set
|
|
2", and there is a newer (more complex) "scan code set 3". <i>Note:
|
|
Normally on PC compatible systems the keyboard itself uses scan code set
|
|
2 and the keyboard controller translates this into scan code set 1 for
|
|
compatibility. See <a href="https://wiki.osdev.org/%228042%22_PS/2_Controller#Translation" title=""8042" PS/2 Controller">"8042"_PS/2_Controller</a> for more information about this translation.</i>
|
|
</p><p>Modern keyboards should support all three scan code sets, however
|
|
some don't. Scan code set 2 (the default) is the only scan code set
|
|
that is guaranteed to be supported. In theory (I haven't tried it) it
|
|
should be possible to attempt to set scan code set 1 or scan code set 3,
|
|
and then ask the keyboard which scan code it is currently using and see
|
|
if it actually is using the requested scan code set. In this way it may
|
|
be possible to determine which scan code sets the keyboard does
|
|
support.
|
|
</p><p>Scan codes themselves are sequences of one or more bytes. In some
|
|
cases the sequence can be as many as 6 bytes (e.g. the Pause/Break key
|
|
in scan code set 1
|
|
generates the sequence 0xE1, 0x1D, 0x45, 0xE1, 0x9D, 0xC5 when pressed).
|
|
This situation isn't really ideal. In general (for later processing)
|
|
you want to convert these "one or more byte sequences" into a single
|
|
integer that uniquely identifies a specific key, that can be used
|
|
effectively in things like lookup tables (without having sparsely used
|
|
"many GiB" lookup tables).
|
|
</p><p>There is no standard for "key codes" - it's something you have to
|
|
make up or invent for your OS. I personally like the idea of having an
|
|
8-bit key code where the highest 3 bits determine which row on the
|
|
keyboard and the lowest 5 bits determine which column (essentially, the
|
|
keyboard is treated as a grid of up to 8 rows and up to 32 columns of
|
|
keys). Regardless of what you choose to use for your key codes, it
|
|
should be something that is used by all keyboard drivers (including USB
|
|
Keyboards) and could possibly also be used for other input devices (e.g.
|
|
left mouse button might be treated as "key code 0xF1").
|
|
</p><p>Basically, when the keyboard driver's state machine knows it has
|
|
received a complete scan code, the next step is to convert the "one or
|
|
more byte" scan code into a key code.
|
|
</p>
|
|
<h3> <span class="mw-headline" id="Key_Codes.2C_Key_States_and_Key_Mappings"> Key Codes, Key States and Key Mappings </span></h3>
|
|
<p>Once you've got key codes, then next step is to keep track of which
|
|
keys are currently being pressed. Imagine a computer game that uses the
|
|
"WASD" keys for player movement - when the 'A' key is being pressed the
|
|
player rotates clockwise. How does the game know if the 'A' key is
|
|
currently being pressed? For this you'd want an array of flags, where
|
|
each flag corresponds to a key code. There is a hidden bonus here - the
|
|
keyboard driver itself can use the same "array of flags" to determine if
|
|
a shift key, control key, alt key, etc is down, which can be quite
|
|
useful when trying to convert the key code into an actual ASCII
|
|
character or Unicode code point. For example, if the user presses the
|
|
'a' key then it might correspond to 'a' or 'A' (depending on capslock
|
|
state and whether or not a shift key is being held down at the time) or
|
|
might not correspond to a valid character at all (e.g. "control-a" or
|
|
"alt-a").
|
|
</p><p>Also note that (for example) a "WASD" game doesn't care if the
|
|
keys are 'W', 'A', 'S' and 'D'. The game wants to know about keys in a
|
|
specific "T-shaped" pattern on the left of the keyboard. If the keyboard
|
|
happens to be something different, then the keys in the same location
|
|
may be completely different (e.g. they would be '<', 'A', 'O' and 'E'
|
|
keys on a Dvorak keyboard). This helps to explain my preference of
|
|
having an 8-bit key code where the highest 3 bits determine which row on
|
|
the keyboard and the lowest 5 bits determine which column (it's easy
|
|
for a game to ask about the state of the third key on the left of the
|
|
third row).
|
|
</p><p>Once you're able to keep track of which keys are currently being
|
|
pressed, the next step is to (attempt to) convert the key into an ASCII
|
|
character or Unicode code point. At this point you need to know what
|
|
type of keyboard the user has - is it "US QWERTY", or "French AZERTY",
|
|
some form of Dvorak, or perhaps it's Arabic. To handle many different
|
|
keyboard layouts, the keyboard driver needs to use tables to convert key
|
|
codes into ASCII characters or Unicode code points; so that you only
|
|
need to load a different "Key Mapping" table to support different
|
|
keyboard layouts.
|
|
</p><p>However, it's not quite that simple. Different keyboard layouts
|
|
can have different meta keys, different status LEDs, etc. The Key
|
|
Mapping table has to sort these differences out too. This is why you
|
|
don't want to detect if the keyboard LEDs have changed earlier, but want
|
|
to send the "set LEDs" command (if necessary) *after* you've found the
|
|
entry for the key code in your key map table.
|
|
</p><p>The final step of processing is to combine all relevant
|
|
information into some sort of "keypress packet" structure, and send it
|
|
to whomever (e.g. GUI). The entire "keypress packet" might include the
|
|
following:
|
|
</p>
|
|
<ul><li> Unicode code point (if applicable)
|
|
</li><li> Key code
|
|
</li><li> Pressed/released flag
|
|
</li><li> Various other key states (shift, alt, control, etc)
|
|
</li><li> Various "toggle" states (CapsLock, ScrollLock, NumberLock, etc)
|
|
</li></ul>
|
|
<h2> <span class="mw-headline" id="Scan_Code_Sets"> Scan Code Sets </span></h2>
|
|
<p>As there are 3 different scan code sets, there are 3 different tables
|
|
(one for each scan code set). Some of the scan codes correspond to
|
|
extra keys that have been added over time and have become "relatively
|
|
standard". To help keep track scan codes have been categorized and
|
|
tagged in the tables below. The tags used are:
|
|
</p>
|
|
<table style="margin-top:1em; margin-bottom:1em; background:#f9f9f9; border:1px #aaa solid; border-collapse:collapse; {{{1}}}" cellspacing="0" cellpadding="4" border="2">
|
|
|
|
<tbody><tr>
|
|
<th> Tag
|
|
</th>
|
|
<th> Meaning
|
|
</th></tr>
|
|
<tr>
|
|
<td> (keypad)
|
|
</td>
|
|
<td> A key that is on the numerics keypad (typically found on the right hand side of the keyboard).
|
|
</td></tr>
|
|
<tr>
|
|
<td> (ACPI)
|
|
</td>
|
|
<td> A key that is part of the "ACPI" group of keys (typically found
|
|
near the top of the keyboard). A lot of modern keyboards don't actually
|
|
have these keys (if I remember right, they were fashionable in the late
|
|
1990's but have become less common since).
|
|
<p>Note: Don't let the name fool you - these keys have nothing to do
|
|
with ACPI at all and do behave like any other normal key (but could be
|
|
useful for an OS that supports power management).
|
|
</p>
|
|
</td></tr>
|
|
<tr>
|
|
<td> (multimedia)
|
|
</td>
|
|
<td> A key that is part of the multimedia group of keys (typically found
|
|
near the top of the keyboard). A lot of modern keyboards do have at
|
|
least some of these keys. Some of these keys are intended to be used for
|
|
media players (volume control, play/pause, next track, previous track,
|
|
etc), some are intended for web browsing (previous web page, next web
|
|
page, refresh, favourites/bookmarks, etc), and and some are intended for
|
|
launching applications (e.g. starting an email client, starting a
|
|
calculator, opening "my computer", etc).
|
|
</td></tr></tbody></table>
|
|
<p><br>
|
|
</p>
|
|
<h3> <span class="mw-headline" id="Scan_Code_Set_1"> Scan Code Set 1 </span></h3>
|
|
<p>The following table shows which scan codes correspond to which keys
|
|
when using scan code set 1 (for a "US QWERTY" keyboard only):
|
|
</p><p>Note that scancodes with extended byte (E0) generates two
|
|
different interrupts: the first containing the E0 byte, the second
|
|
containing the scancode
|
|
</p>
|
|
<table style="margin-top:1em; margin-bottom:1em; background:#f9f9f9; border:1px #aaa solid; border-collapse:collapse; {{{1}}}" cellspacing="0" cellpadding="4" border="2">
|
|
|
|
<tbody><tr>
|
|
<th> Scan code
|
|
</th>
|
|
<th> Key
|
|
</th>
|
|
<th style="background: #E8E8E8"> Scan code
|
|
</th>
|
|
<th style="background: #E8E8E8"> Key
|
|
</th>
|
|
<th> Scan code
|
|
</th>
|
|
<th> Key
|
|
</th>
|
|
<th style="background: #E8E8E8"> Scan code
|
|
</th>
|
|
<th style="background: #E8E8E8"> Key
|
|
</th></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x01
|
|
</td>
|
|
<td style="background: #E8E8E8"> escape pressed
|
|
</td>
|
|
<td align="right"> 0x02
|
|
</td>
|
|
<td> 1 pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x03
|
|
</td>
|
|
<td style="background: #E8E8E8"> 2 pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0x04
|
|
</td>
|
|
<td> 3 pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x05
|
|
</td>
|
|
<td style="background: #E8E8E8"> 4 pressed
|
|
</td>
|
|
<td align="right"> 0x06
|
|
</td>
|
|
<td> 5 pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x07
|
|
</td>
|
|
<td style="background: #E8E8E8"> 6 pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0x08
|
|
</td>
|
|
<td> 7 pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x09
|
|
</td>
|
|
<td style="background: #E8E8E8"> 8 pressed
|
|
</td>
|
|
<td align="right"> 0x0A
|
|
</td>
|
|
<td> 9 pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x0B
|
|
</td>
|
|
<td style="background: #E8E8E8"> 0 (zero) pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0x0C
|
|
</td>
|
|
<td> - pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x0D
|
|
</td>
|
|
<td style="background: #E8E8E8"> = pressed
|
|
</td>
|
|
<td align="right"> 0x0E
|
|
</td>
|
|
<td> backspace pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x0F
|
|
</td>
|
|
<td style="background: #E8E8E8"> tab pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0x10
|
|
</td>
|
|
<td> Q pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x11
|
|
</td>
|
|
<td style="background: #E8E8E8"> W pressed
|
|
</td>
|
|
<td align="right"> 0x12
|
|
</td>
|
|
<td> E pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x13
|
|
</td>
|
|
<td style="background: #E8E8E8"> R pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0x14
|
|
</td>
|
|
<td> T pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x15
|
|
</td>
|
|
<td style="background: #E8E8E8"> Y pressed
|
|
</td>
|
|
<td align="right"> 0x16
|
|
</td>
|
|
<td> U pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x17
|
|
</td>
|
|
<td style="background: #E8E8E8"> I pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0x18
|
|
</td>
|
|
<td> O pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x19
|
|
</td>
|
|
<td style="background: #E8E8E8"> P pressed
|
|
</td>
|
|
<td align="right"> 0x1A
|
|
</td>
|
|
<td> [ pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x1B
|
|
</td>
|
|
<td style="background: #E8E8E8"> ] pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0x1C
|
|
</td>
|
|
<td> enter pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x1D
|
|
</td>
|
|
<td style="background: #E8E8E8"> left control pressed
|
|
</td>
|
|
<td align="right"> 0x1E
|
|
</td>
|
|
<td> A pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x1F
|
|
</td>
|
|
<td style="background: #E8E8E8"> S pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0x20
|
|
</td>
|
|
<td> D pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x21
|
|
</td>
|
|
<td style="background: #E8E8E8"> F pressed
|
|
</td>
|
|
<td align="right"> 0x22
|
|
</td>
|
|
<td> G pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x23
|
|
</td>
|
|
<td style="background: #E8E8E8"> H pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0x24
|
|
</td>
|
|
<td> J pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x25
|
|
</td>
|
|
<td style="background: #E8E8E8"> K pressed
|
|
</td>
|
|
<td align="right"> 0x26
|
|
</td>
|
|
<td> L pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x27
|
|
</td>
|
|
<td style="background: #E8E8E8"> ; pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0x28
|
|
</td>
|
|
<td> ' (single quote) pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x29
|
|
</td>
|
|
<td style="background: #E8E8E8"> ` (back tick) pressed
|
|
</td>
|
|
<td align="right"> 0x2A
|
|
</td>
|
|
<td> left shift pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x2B
|
|
</td>
|
|
<td style="background: #E8E8E8"> \ pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0x2C
|
|
</td>
|
|
<td> Z pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x2D
|
|
</td>
|
|
<td style="background: #E8E8E8"> X pressed
|
|
</td>
|
|
<td align="right"> 0x2E
|
|
</td>
|
|
<td> C pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x2F
|
|
</td>
|
|
<td style="background: #E8E8E8"> V pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0x30
|
|
</td>
|
|
<td> B pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x31
|
|
</td>
|
|
<td style="background: #E8E8E8"> N pressed
|
|
</td>
|
|
<td align="right"> 0x32
|
|
</td>
|
|
<td> M pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x33
|
|
</td>
|
|
<td style="background: #E8E8E8"> , pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0x34
|
|
</td>
|
|
<td> . pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x35
|
|
</td>
|
|
<td style="background: #E8E8E8"> / pressed
|
|
</td>
|
|
<td align="right"> 0x36
|
|
</td>
|
|
<td> right shift pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x37
|
|
</td>
|
|
<td style="background: #E8E8E8"> (keypad) * pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0x38
|
|
</td>
|
|
<td> left alt pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x39
|
|
</td>
|
|
<td style="background: #E8E8E8"> space pressed
|
|
</td>
|
|
<td align="right"> 0x3A
|
|
</td>
|
|
<td> CapsLock pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x3B
|
|
</td>
|
|
<td style="background: #E8E8E8"> F1 pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0x3C
|
|
</td>
|
|
<td> F2 pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x3D
|
|
</td>
|
|
<td style="background: #E8E8E8"> F3 pressed
|
|
</td>
|
|
<td align="right"> 0x3E
|
|
</td>
|
|
<td> F4 pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x3F
|
|
</td>
|
|
<td style="background: #E8E8E8"> F5 pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0x40
|
|
</td>
|
|
<td> F6 pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x41
|
|
</td>
|
|
<td style="background: #E8E8E8"> F7 pressed
|
|
</td>
|
|
<td align="right"> 0x42
|
|
</td>
|
|
<td> F8 pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x43
|
|
</td>
|
|
<td style="background: #E8E8E8"> F9 pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0x44
|
|
</td>
|
|
<td> F10 pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x45
|
|
</td>
|
|
<td style="background: #E8E8E8"> NumberLock pressed
|
|
</td>
|
|
<td align="right"> 0x46
|
|
</td>
|
|
<td> ScrollLock pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x47
|
|
</td>
|
|
<td style="background: #E8E8E8"> (keypad) 7 pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0x48
|
|
</td>
|
|
<td> (keypad) 8 pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x49
|
|
</td>
|
|
<td style="background: #E8E8E8"> (keypad) 9 pressed
|
|
</td>
|
|
<td align="right"> 0x4A
|
|
</td>
|
|
<td> (keypad) - pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x4B
|
|
</td>
|
|
<td style="background: #E8E8E8"> (keypad) 4 pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0x4C
|
|
</td>
|
|
<td> (keypad) 5 pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x4D
|
|
</td>
|
|
<td style="background: #E8E8E8"> (keypad) 6 pressed
|
|
</td>
|
|
<td align="right"> 0x4E
|
|
</td>
|
|
<td> (keypad) + pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x4F
|
|
</td>
|
|
<td style="background: #E8E8E8"> (keypad) 1 pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0x50
|
|
</td>
|
|
<td> (keypad) 2 pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x51
|
|
</td>
|
|
<td style="background: #E8E8E8"> (keypad) 3 pressed
|
|
</td>
|
|
<td align="right"> 0x52
|
|
</td>
|
|
<td> (keypad) 0 pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x53
|
|
</td>
|
|
<td style="background: #E8E8E8"> (keypad) . pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x57
|
|
</td>
|
|
<td style="background: #E8E8E8"> F11 pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0x58
|
|
</td>
|
|
<td> F12 pressed
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x81
|
|
</td>
|
|
<td style="background: #E8E8E8"> escape released
|
|
</td>
|
|
<td align="right"> 0x82
|
|
</td>
|
|
<td> 1 released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x83
|
|
</td>
|
|
<td style="background: #E8E8E8"> 2 released
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0x84
|
|
</td>
|
|
<td> 3 released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x85
|
|
</td>
|
|
<td style="background: #E8E8E8"> 4 released
|
|
</td>
|
|
<td align="right"> 0x86
|
|
</td>
|
|
<td> 5 released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x87
|
|
</td>
|
|
<td style="background: #E8E8E8"> 6 released
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0x88
|
|
</td>
|
|
<td> 7 released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x89
|
|
</td>
|
|
<td style="background: #E8E8E8"> 8 released
|
|
</td>
|
|
<td align="right"> 0x8A
|
|
</td>
|
|
<td> 9 released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x8B
|
|
</td>
|
|
<td style="background: #E8E8E8"> 0 (zero) released
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0x8C
|
|
</td>
|
|
<td> - released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x8D
|
|
</td>
|
|
<td style="background: #E8E8E8"> = released
|
|
</td>
|
|
<td align="right"> 0x8E
|
|
</td>
|
|
<td> backspace released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x8F
|
|
</td>
|
|
<td style="background: #E8E8E8"> tab released
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0x90
|
|
</td>
|
|
<td> Q released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x91
|
|
</td>
|
|
<td style="background: #E8E8E8"> W released
|
|
</td>
|
|
<td align="right"> 0x92
|
|
</td>
|
|
<td> E released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x93
|
|
</td>
|
|
<td style="background: #E8E8E8"> R released
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0x94
|
|
</td>
|
|
<td> T released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x95
|
|
</td>
|
|
<td style="background: #E8E8E8"> Y released
|
|
</td>
|
|
<td align="right"> 0x96
|
|
</td>
|
|
<td> U released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x97
|
|
</td>
|
|
<td style="background: #E8E8E8"> I released
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0x98
|
|
</td>
|
|
<td> O released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x99
|
|
</td>
|
|
<td style="background: #E8E8E8"> P released
|
|
</td>
|
|
<td align="right"> 0x9A
|
|
</td>
|
|
<td> [ released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x9B
|
|
</td>
|
|
<td style="background: #E8E8E8"> ] released
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0x9C
|
|
</td>
|
|
<td> enter released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x9D
|
|
</td>
|
|
<td style="background: #E8E8E8"> left control released
|
|
</td>
|
|
<td align="right"> 0x9E
|
|
</td>
|
|
<td> A released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x9F
|
|
</td>
|
|
<td style="background: #E8E8E8"> S released
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xA0
|
|
</td>
|
|
<td> D released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xA1
|
|
</td>
|
|
<td style="background: #E8E8E8"> F released
|
|
</td>
|
|
<td align="right"> 0xA2
|
|
</td>
|
|
<td> G released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xA3
|
|
</td>
|
|
<td style="background: #E8E8E8"> H released
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xA4
|
|
</td>
|
|
<td> J released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xA5
|
|
</td>
|
|
<td style="background: #E8E8E8"> K released
|
|
</td>
|
|
<td align="right"> 0xA6
|
|
</td>
|
|
<td> L released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xA7
|
|
</td>
|
|
<td style="background: #E8E8E8"> ; released
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xA8
|
|
</td>
|
|
<td> ' (single quote) released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xA9
|
|
</td>
|
|
<td style="background: #E8E8E8"> ` (back tick) released
|
|
</td>
|
|
<td align="right"> 0xAA
|
|
</td>
|
|
<td> left shift released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xAB
|
|
</td>
|
|
<td style="background: #E8E8E8"> \ released
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xAC
|
|
</td>
|
|
<td> Z released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xAD
|
|
</td>
|
|
<td style="background: #E8E8E8"> X released
|
|
</td>
|
|
<td align="right"> 0xAE
|
|
</td>
|
|
<td> C released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xAF
|
|
</td>
|
|
<td style="background: #E8E8E8"> V released
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xB0
|
|
</td>
|
|
<td> B released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xB1
|
|
</td>
|
|
<td style="background: #E8E8E8"> N released
|
|
</td>
|
|
<td align="right"> 0xB2
|
|
</td>
|
|
<td> M released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xB3
|
|
</td>
|
|
<td style="background: #E8E8E8"> , released
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xB4
|
|
</td>
|
|
<td> . released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xB5
|
|
</td>
|
|
<td style="background: #E8E8E8"> / released
|
|
</td>
|
|
<td align="right"> 0xB6
|
|
</td>
|
|
<td> right shift released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xB7
|
|
</td>
|
|
<td style="background: #E8E8E8"> (keypad) * released
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xB8
|
|
</td>
|
|
<td> left alt released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xB9
|
|
</td>
|
|
<td style="background: #E8E8E8"> space released
|
|
</td>
|
|
<td align="right"> 0xBA
|
|
</td>
|
|
<td> CapsLock released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xBB
|
|
</td>
|
|
<td style="background: #E8E8E8"> F1 released
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xBC
|
|
</td>
|
|
<td> F2 released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xBD
|
|
</td>
|
|
<td style="background: #E8E8E8"> F3 released
|
|
</td>
|
|
<td align="right"> 0xBE
|
|
</td>
|
|
<td> F4 released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xBF
|
|
</td>
|
|
<td style="background: #E8E8E8"> F5 released
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xC0
|
|
</td>
|
|
<td> F6 released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xC1
|
|
</td>
|
|
<td style="background: #E8E8E8"> F7 released
|
|
</td>
|
|
<td align="right"> 0xC2
|
|
</td>
|
|
<td> F8 released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xC3
|
|
</td>
|
|
<td style="background: #E8E8E8"> F9 released
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xC4
|
|
</td>
|
|
<td> F10 released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xC5
|
|
</td>
|
|
<td style="background: #E8E8E8"> NumberLock released
|
|
</td>
|
|
<td align="right"> 0xC6
|
|
</td>
|
|
<td> ScrollLock released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xC7
|
|
</td>
|
|
<td style="background: #E8E8E8"> (keypad) 7 released
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xC8
|
|
</td>
|
|
<td> (keypad) 8 released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xC9
|
|
</td>
|
|
<td style="background: #E8E8E8"> (keypad) 9 released
|
|
</td>
|
|
<td align="right"> 0xCA
|
|
</td>
|
|
<td> (keypad) - released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xCB
|
|
</td>
|
|
<td style="background: #E8E8E8"> (keypad) 4 released
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xCC
|
|
</td>
|
|
<td> (keypad) 5 released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xCD
|
|
</td>
|
|
<td style="background: #E8E8E8"> (keypad) 6 released
|
|
</td>
|
|
<td align="right"> 0xCE
|
|
</td>
|
|
<td> (keypad) + released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xCF
|
|
</td>
|
|
<td style="background: #E8E8E8"> (keypad) 1 released
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xD0
|
|
</td>
|
|
<td> (keypad) 2 released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xD1
|
|
</td>
|
|
<td style="background: #E8E8E8"> (keypad) 3 released
|
|
</td>
|
|
<td align="right"> 0xD2
|
|
</td>
|
|
<td> (keypad) 0 released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xD3
|
|
</td>
|
|
<td style="background: #E8E8E8"> (keypad) . released
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xD7
|
|
</td>
|
|
<td style="background: #E8E8E8"> F11 released
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xD8
|
|
</td>
|
|
<td> F12 released
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xE0, 0x10
|
|
</td>
|
|
<td> (multimedia) previous track pressed
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0x19
|
|
</td>
|
|
<td style="background: #E8E8E8"> (multimedia) next track pressed
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xE0, 0x1C
|
|
</td>
|
|
<td> (keypad) enter pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0x1D
|
|
</td>
|
|
<td style="background: #E8E8E8"> right control pressed
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xE0, 0x20
|
|
</td>
|
|
<td> (multimedia) mute pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0x21
|
|
</td>
|
|
<td style="background: #E8E8E8"> (multimedia) calculator pressed
|
|
</td>
|
|
<td align="right"> 0xE0, 0x22
|
|
</td>
|
|
<td> (multimedia) play pressed
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xE0, 0x24
|
|
</td>
|
|
<td> (multimedia) stop pressed
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td align="right"> 0xE0, 0x2E
|
|
</td>
|
|
<td> (multimedia) volume down pressed
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xE0, 0x30
|
|
</td>
|
|
<td> (multimedia) volume up pressed
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td align="right"> 0xE0, 0x32
|
|
</td>
|
|
<td> (multimedia) WWW home pressed
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0x35
|
|
</td>
|
|
<td style="background: #E8E8E8"> (keypad) / pressed
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xE0, 0x38
|
|
</td>
|
|
<td> right alt (or altGr) pressed
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0x47
|
|
</td>
|
|
<td style="background: #E8E8E8"> home pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xE0, 0x48
|
|
</td>
|
|
<td> cursor up pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0x49
|
|
</td>
|
|
<td style="background: #E8E8E8"> page up pressed
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0x4B
|
|
</td>
|
|
<td style="background: #E8E8E8"> cursor left pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0x4D
|
|
</td>
|
|
<td style="background: #E8E8E8"> cursor right pressed
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0x4F
|
|
</td>
|
|
<td style="background: #E8E8E8"> end pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xE0, 0x50
|
|
</td>
|
|
<td> cursor down pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0x51
|
|
</td>
|
|
<td style="background: #E8E8E8"> page down pressed
|
|
</td>
|
|
<td align="right"> 0xE0, 0x52
|
|
</td>
|
|
<td> insert pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0x53
|
|
</td>
|
|
<td style="background: #E8E8E8"> delete pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0x5B
|
|
</td>
|
|
<td style="background: #E8E8E8"> left GUI pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xE0, 0x5C
|
|
</td>
|
|
<td> right GUI pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0x5D
|
|
</td>
|
|
<td style="background: #E8E8E8"> "apps" pressed
|
|
</td>
|
|
<td align="right"> 0xE0, 0x5E
|
|
</td>
|
|
<td> (ACPI) power pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0x5F
|
|
</td>
|
|
<td style="background: #E8E8E8"> (ACPI) sleep pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0x63
|
|
</td>
|
|
<td style="background: #E8E8E8"> (ACPI) wake pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0x65
|
|
</td>
|
|
<td style="background: #E8E8E8"> (multimedia) WWW search pressed
|
|
</td>
|
|
<td align="right"> 0xE0, 0x66
|
|
</td>
|
|
<td> (multimedia) WWW favorites pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0x67
|
|
</td>
|
|
<td style="background: #E8E8E8"> (multimedia) WWW refresh pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xE0, 0x68
|
|
</td>
|
|
<td> (multimedia) WWW stop pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0x69
|
|
</td>
|
|
<td style="background: #E8E8E8"> (multimedia) WWW forward pressed
|
|
</td>
|
|
<td align="right"> 0xE0, 0x6A
|
|
</td>
|
|
<td> (multimedia) WWW back pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0x6B
|
|
</td>
|
|
<td style="background: #E8E8E8"> (multimedia) my computer pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xE0, 0x6C
|
|
</td>
|
|
<td> (multimedia) email pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0x6D
|
|
</td>
|
|
<td style="background: #E8E8E8"> (multimedia) media select pressed
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xE0, 0x90
|
|
</td>
|
|
<td> (multimedia) previous track released
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0x99
|
|
</td>
|
|
<td style="background: #E8E8E8"> (multimedia) next track released
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xE0, 0x9C
|
|
</td>
|
|
<td> (keypad) enter released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0x9D
|
|
</td>
|
|
<td style="background: #E8E8E8"> right control released
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xE0, 0xA0
|
|
</td>
|
|
<td> (multimedia) mute released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0xA1
|
|
</td>
|
|
<td style="background: #E8E8E8"> (multimedia) calculator released
|
|
</td>
|
|
<td align="right"> 0xE0, 0xA2
|
|
</td>
|
|
<td> (multimedia) play released
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xE0, 0xA4
|
|
</td>
|
|
<td> (multimedia) stop released
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td align="right"> 0xE0, 0xAE
|
|
</td>
|
|
<td> (multimedia) volume down released
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xE0, 0xB0
|
|
</td>
|
|
<td> (multimedia) volume up released
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td align="right"> 0xE0, 0xB2
|
|
</td>
|
|
<td> (multimedia) WWW home released
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0xB5
|
|
</td>
|
|
<td style="background: #E8E8E8"> (keypad) / released
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xE0, 0xB8
|
|
</td>
|
|
<td> right alt (or altGr) released
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0xC7
|
|
</td>
|
|
<td style="background: #E8E8E8"> home released
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xE0, 0xC8
|
|
</td>
|
|
<td> cursor up released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0xC9
|
|
</td>
|
|
<td style="background: #E8E8E8"> page up released
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0xCB
|
|
</td>
|
|
<td style="background: #E8E8E8"> cursor left released
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0xCD
|
|
</td>
|
|
<td style="background: #E8E8E8"> cursor right released
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0xCF
|
|
</td>
|
|
<td style="background: #E8E8E8"> end released
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xE0, 0xD0
|
|
</td>
|
|
<td> cursor down released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0xD1
|
|
</td>
|
|
<td style="background: #E8E8E8"> page down released
|
|
</td>
|
|
<td align="right"> 0xE0, 0xD2
|
|
</td>
|
|
<td> insert released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0xD3
|
|
</td>
|
|
<td style="background: #E8E8E8"> delete released
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0xDB
|
|
</td>
|
|
<td style="background: #E8E8E8"> left GUI released
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xE0, 0xDC
|
|
</td>
|
|
<td> right GUI released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0xDD
|
|
</td>
|
|
<td style="background: #E8E8E8"> "apps" released
|
|
</td>
|
|
<td align="right"> 0xE0, 0xDE
|
|
</td>
|
|
<td> (ACPI) power released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0xDF
|
|
</td>
|
|
<td style="background: #E8E8E8"> (ACPI) sleep released
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0xE3
|
|
</td>
|
|
<td style="background: #E8E8E8"> (ACPI) wake released
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0xE5
|
|
</td>
|
|
<td style="background: #E8E8E8"> (multimedia) WWW search released
|
|
</td>
|
|
<td align="right"> 0xE0, 0xE6
|
|
</td>
|
|
<td> (multimedia) WWW favorites released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0xE7
|
|
</td>
|
|
<td style="background: #E8E8E8"> (multimedia) WWW refresh released
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xE0, 0xE8
|
|
</td>
|
|
<td> (multimedia) WWW stop released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0xE9
|
|
</td>
|
|
<td style="background: #E8E8E8"> (multimedia) WWW forward released
|
|
</td>
|
|
<td align="right"> 0xE0, 0xEA
|
|
</td>
|
|
<td> (multimedia) WWW back released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0xEB
|
|
</td>
|
|
<td style="background: #E8E8E8"> (multimedia) my computer released
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xE0, 0xEC
|
|
</td>
|
|
<td> (multimedia) email released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0xED
|
|
</td>
|
|
<td style="background: #E8E8E8"> (multimedia) media select released
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0x2A, 0xE0, 0x37
|
|
</td>
|
|
<td style="background: #E8E8E8"> print screen pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0xB7, 0xE0, 0xAA
|
|
</td>
|
|
<td style="background: #E8E8E8"> print screen released
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE1, 0x1D, 0x45, 0xE1, 0x9D, 0xC5
|
|
</td>
|
|
<td style="background: #E8E8E8"> pause pressed
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr></tbody></table>
|
|
<p><br>
|
|
Note: There is no scan code for "pause key released" (it behaves as if it is released as soon as it's pressed)
|
|
</p>
|
|
<h3> <span class="mw-headline" id="Scan_Code_Set_2"> Scan Code Set 2 </span></h3>
|
|
<p>The following table shows which "make" scan codes correspond to which
|
|
keys when using scan code set 2 (for a "US QWERTY" keyboard only):
|
|
</p>
|
|
<table style="margin-top:1em; margin-bottom:1em; background:#f9f9f9; border:1px #aaa solid; border-collapse:collapse; {{{1}}}" cellspacing="0" cellpadding="4" border="2">
|
|
|
|
<tbody><tr>
|
|
<th> Scan code
|
|
</th>
|
|
<th> Key
|
|
</th>
|
|
<th style="background: #E8E8E8"> Scan code
|
|
</th>
|
|
<th style="background: #E8E8E8"> Key
|
|
</th>
|
|
<th> Scan code
|
|
</th>
|
|
<th> Key
|
|
</th>
|
|
<th style="background: #E8E8E8"> Scan code
|
|
</th>
|
|
<th style="background: #E8E8E8"> Key
|
|
</th></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x01
|
|
</td>
|
|
<td style="background: #E8E8E8"> F9 pressed
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x03
|
|
</td>
|
|
<td style="background: #E8E8E8"> F5 pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0x04
|
|
</td>
|
|
<td> F3 pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x05
|
|
</td>
|
|
<td style="background: #E8E8E8"> F1 pressed
|
|
</td>
|
|
<td align="right"> 0x06
|
|
</td>
|
|
<td> F2 pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x07
|
|
</td>
|
|
<td style="background: #E8E8E8"> F12 pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x09
|
|
</td>
|
|
<td style="background: #E8E8E8"> F10 pressed
|
|
</td>
|
|
<td align="right"> 0x0A
|
|
</td>
|
|
<td> F8 pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x0B
|
|
</td>
|
|
<td style="background: #E8E8E8"> F6 pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0x0C
|
|
</td>
|
|
<td> F4 pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x0D
|
|
</td>
|
|
<td style="background: #E8E8E8"> tab pressed
|
|
</td>
|
|
<td align="right"> 0x0E
|
|
</td>
|
|
<td> ` (back tick) pressed
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x11
|
|
</td>
|
|
<td style="background: #E8E8E8"> left alt pressed
|
|
</td>
|
|
<td align="right"> 0x12
|
|
</td>
|
|
<td> left shift pressed
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0x14
|
|
</td>
|
|
<td> left control pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x15
|
|
</td>
|
|
<td style="background: #E8E8E8"> Q pressed
|
|
</td>
|
|
<td align="right"> 0x16
|
|
</td>
|
|
<td> 1 pressed
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td align="right"> 0x1A
|
|
</td>
|
|
<td> Z pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x1B
|
|
</td>
|
|
<td style="background: #E8E8E8"> S pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0x1C
|
|
</td>
|
|
<td> A pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x1D
|
|
</td>
|
|
<td style="background: #E8E8E8"> W pressed
|
|
</td>
|
|
<td align="right"> 0x1E
|
|
</td>
|
|
<td> 2 pressed
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x21
|
|
</td>
|
|
<td style="background: #E8E8E8"> C pressed
|
|
</td>
|
|
<td align="right"> 0x22
|
|
</td>
|
|
<td> X pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x23
|
|
</td>
|
|
<td style="background: #E8E8E8"> D pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0x24
|
|
</td>
|
|
<td> E pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x25
|
|
</td>
|
|
<td style="background: #E8E8E8"> 4 pressed
|
|
</td>
|
|
<td align="right"> 0x26
|
|
</td>
|
|
<td> 3 pressed
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x29
|
|
</td>
|
|
<td style="background: #E8E8E8"> space pressed
|
|
</td>
|
|
<td align="right"> 0x2A
|
|
</td>
|
|
<td> V pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x2B
|
|
</td>
|
|
<td style="background: #E8E8E8"> F pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0x2C
|
|
</td>
|
|
<td> T pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x2D
|
|
</td>
|
|
<td style="background: #E8E8E8"> R pressed
|
|
</td>
|
|
<td align="right"> 0x2E
|
|
</td>
|
|
<td> 5 pressed
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x31
|
|
</td>
|
|
<td style="background: #E8E8E8"> N pressed
|
|
</td>
|
|
<td align="right"> 0x32
|
|
</td>
|
|
<td> B pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x33
|
|
</td>
|
|
<td style="background: #E8E8E8"> H pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0x34
|
|
</td>
|
|
<td> G pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x35
|
|
</td>
|
|
<td style="background: #E8E8E8"> Y pressed
|
|
</td>
|
|
<td align="right"> 0x36
|
|
</td>
|
|
<td> 6 pressed
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td align="right"> 0x3A
|
|
</td>
|
|
<td> M pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x3B
|
|
</td>
|
|
<td style="background: #E8E8E8"> J pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0x3C
|
|
</td>
|
|
<td> U pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x3D
|
|
</td>
|
|
<td style="background: #E8E8E8"> 7 pressed
|
|
</td>
|
|
<td align="right"> 0x3E
|
|
</td>
|
|
<td> 8 pressed
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x41
|
|
</td>
|
|
<td style="background: #E8E8E8"> , pressed
|
|
</td>
|
|
<td align="right"> 0x42
|
|
</td>
|
|
<td> K pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x43
|
|
</td>
|
|
<td style="background: #E8E8E8"> I pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0x44
|
|
</td>
|
|
<td> O pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x45
|
|
</td>
|
|
<td style="background: #E8E8E8"> 0 (zero) pressed
|
|
</td>
|
|
<td align="right"> 0x46
|
|
</td>
|
|
<td> 9 pressed
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x49
|
|
</td>
|
|
<td style="background: #E8E8E8"> . pressed
|
|
</td>
|
|
<td align="right"> 0x4A
|
|
</td>
|
|
<td> / pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x4B
|
|
</td>
|
|
<td style="background: #E8E8E8"> L pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0x4C
|
|
</td>
|
|
<td> ; pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x4D
|
|
</td>
|
|
<td style="background: #E8E8E8"> P pressed
|
|
</td>
|
|
<td align="right"> 0x4E
|
|
</td>
|
|
<td> - pressed
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td align="right"> 0x52
|
|
</td>
|
|
<td> ' pressed
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0x54
|
|
</td>
|
|
<td> [ pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x55
|
|
</td>
|
|
<td style="background: #E8E8E8"> = pressed
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0x58
|
|
</td>
|
|
<td> CapsLock pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x59
|
|
</td>
|
|
<td style="background: #E8E8E8"> right shift pressed
|
|
</td>
|
|
<td align="right"> 0x5A
|
|
</td>
|
|
<td> enter pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x5B
|
|
</td>
|
|
<td style="background: #E8E8E8"> ] pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x5D
|
|
</td>
|
|
<td style="background: #E8E8E8"> \ pressed
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td align="right"> 0x66
|
|
</td>
|
|
<td> backspace pressed
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x69
|
|
</td>
|
|
<td style="background: #E8E8E8"> (keypad) 1 pressed
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x6B
|
|
</td>
|
|
<td style="background: #E8E8E8"> (keypad) 4 pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0x6C
|
|
</td>
|
|
<td> (keypad) 7 pressed
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0x70
|
|
</td>
|
|
<td> (keypad) 0 pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x71
|
|
</td>
|
|
<td style="background: #E8E8E8"> (keypad) . pressed
|
|
</td>
|
|
<td align="right"> 0x72
|
|
</td>
|
|
<td> (keypad) 2 pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x73
|
|
</td>
|
|
<td style="background: #E8E8E8"> (keypad) 5 pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0x74
|
|
</td>
|
|
<td> (keypad) 6 pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x75
|
|
</td>
|
|
<td style="background: #E8E8E8"> (keypad) 8 pressed
|
|
</td>
|
|
<td align="right"> 0x76
|
|
</td>
|
|
<td> escape pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x77
|
|
</td>
|
|
<td style="background: #E8E8E8"> NumberLock pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0x78
|
|
</td>
|
|
<td> F11 pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x79
|
|
</td>
|
|
<td style="background: #E8E8E8"> (keypad) + pressed
|
|
</td>
|
|
<td align="right"> 0x7A
|
|
</td>
|
|
<td> (keypad) 3 pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x7B
|
|
</td>
|
|
<td style="background: #E8E8E8"> (keypad) - pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0x7C
|
|
</td>
|
|
<td> (keypad) * pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x7D
|
|
</td>
|
|
<td style="background: #E8E8E8"> (keypad) 9 pressed
|
|
</td>
|
|
<td align="right"> 0x7E
|
|
</td>
|
|
<td> ScrollLock pressed
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0x83
|
|
</td>
|
|
<td style="background: #E8E8E8"> F7 pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xE0, 0x10
|
|
</td>
|
|
<td> (multimedia) WWW search pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0x11
|
|
</td>
|
|
<td style="background: #E8E8E8"> right alt pressed
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xE0, 0x14
|
|
</td>
|
|
<td> right control pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0x15
|
|
</td>
|
|
<td style="background: #E8E8E8"> (multimedia) previous track pressed
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xE0, 0x18
|
|
</td>
|
|
<td> (multimedia) WWW favourites pressed
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0x1F
|
|
</td>
|
|
<td style="background: #E8E8E8"> left GUI pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xE0, 0x20
|
|
</td>
|
|
<td> (multimedia) WWW refresh pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0x21
|
|
</td>
|
|
<td style="background: #E8E8E8"> (multimedia) volume down pressed
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0x23
|
|
</td>
|
|
<td style="background: #E8E8E8"> (multimedia) mute pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0x27
|
|
</td>
|
|
<td style="background: #E8E8E8"> right GUI pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xE0, 0x28
|
|
</td>
|
|
<td> (multimedia) WWW stop pressed
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0x2B
|
|
</td>
|
|
<td style="background: #E8E8E8"> (multimedia) calculator pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0x2F
|
|
</td>
|
|
<td style="background: #E8E8E8"> apps pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xE0, 0x30
|
|
</td>
|
|
<td> (multimedia) WWW forward pressed
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td align="right"> 0xE0, 0x32
|
|
</td>
|
|
<td> (multimedia) volume up pressed
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xE0, 0x34
|
|
</td>
|
|
<td> (multimedia) play/pause pressed
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0x37
|
|
</td>
|
|
<td style="background: #E8E8E8"> (ACPI) power pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xE0, 0x38
|
|
</td>
|
|
<td> (multimedia) WWW back pressed
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td align="right"> 0xE0, 0x3A
|
|
</td>
|
|
<td> (multimedia) WWW home pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0x3B
|
|
</td>
|
|
<td style="background: #E8E8E8"> (multimedia) stop pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0x3F
|
|
</td>
|
|
<td style="background: #E8E8E8"> (ACPI) sleep pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xE0, 0x40
|
|
</td>
|
|
<td> (multimedia) my computer pressed
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xE0, 0x48
|
|
</td>
|
|
<td> (multimedia) email pressed
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td align="right"> 0xE0, 0x4A
|
|
</td>
|
|
<td> (keypad) / pressed
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0x4D
|
|
</td>
|
|
<td style="background: #E8E8E8"> (multimedia) next track pressed
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xE0, 0x50
|
|
</td>
|
|
<td> (multimedia) media select pressed
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td align="right"> 0xE0, 0x5A
|
|
</td>
|
|
<td> (keypad) enter pressed
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td align="right"> 0xE0, 0x5E
|
|
</td>
|
|
<td> (ACPI) wake pressed
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0x69
|
|
</td>
|
|
<td style="background: #E8E8E8"> end pressed
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0x6B
|
|
</td>
|
|
<td style="background: #E8E8E8"> cursor left pressed
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xE0, 0x6C
|
|
</td>
|
|
<td> home pressed
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xE0, 0x70
|
|
</td>
|
|
<td> insert pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0x71
|
|
</td>
|
|
<td style="background: #E8E8E8"> delete pressed
|
|
</td>
|
|
<td align="right"> 0xE0, 0x72
|
|
</td>
|
|
<td> cursor down pressed
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xE0, 0x74
|
|
</td>
|
|
<td> cursor right pressed
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0x75
|
|
</td>
|
|
<td style="background: #E8E8E8"> cursor up pressed
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td align="right"> 0xE0, 0x7A
|
|
</td>
|
|
<td> page down pressed
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0x7D
|
|
</td>
|
|
<td style="background: #E8E8E8"> page up pressed
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xF0, 0x01
|
|
</td>
|
|
<td style="background: #E8E8E8"> F9 released
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xF0, 0x03
|
|
</td>
|
|
<td style="background: #E8E8E8"> F5 released
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xF0, 0x04
|
|
</td>
|
|
<td> F3 released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xF0, 0x05
|
|
</td>
|
|
<td style="background: #E8E8E8"> F1 released
|
|
</td>
|
|
<td align="right"> 0xF0, 0x06
|
|
</td>
|
|
<td> F2 released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xF0, 0x07
|
|
</td>
|
|
<td style="background: #E8E8E8"> F12 released
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xF0, 0x09
|
|
</td>
|
|
<td style="background: #E8E8E8"> F10 released
|
|
</td>
|
|
<td align="right"> 0xF0, 0x0A
|
|
</td>
|
|
<td> F8 released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xF0, 0x0B
|
|
</td>
|
|
<td style="background: #E8E8E8"> F6 released
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xF0, 0x0C
|
|
</td>
|
|
<td> F4 released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xF0, 0x0D
|
|
</td>
|
|
<td style="background: #E8E8E8"> tab released
|
|
</td>
|
|
<td align="right"> 0xF0, 0x0E
|
|
</td>
|
|
<td> ` (back tick) released
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xF0, 0x11
|
|
</td>
|
|
<td style="background: #E8E8E8"> left alt released
|
|
</td>
|
|
<td align="right"> 0xF0, 0x12
|
|
</td>
|
|
<td> left shift released
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xF0, 0x14
|
|
</td>
|
|
<td> left control released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xF0, 0x15
|
|
</td>
|
|
<td style="background: #E8E8E8"> Q released
|
|
</td>
|
|
<td align="right"> 0xF0, 0x16
|
|
</td>
|
|
<td> 1 released
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td align="right"> 0xF0, 0x1A
|
|
</td>
|
|
<td> Z released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xF0, 0x1B
|
|
</td>
|
|
<td style="background: #E8E8E8"> S released
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xF0, 0x1C
|
|
</td>
|
|
<td> A released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xF0, 0x1D
|
|
</td>
|
|
<td style="background: #E8E8E8"> W released
|
|
</td>
|
|
<td align="right"> 0xF0, 0x1E
|
|
</td>
|
|
<td> 2 released
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xF0, 0x21
|
|
</td>
|
|
<td style="background: #E8E8E8"> C released
|
|
</td>
|
|
<td align="right"> 0xF0, 0x22
|
|
</td>
|
|
<td> X released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xF0, 0x23
|
|
</td>
|
|
<td style="background: #E8E8E8"> D released
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xF0, 0x24
|
|
</td>
|
|
<td> E released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xF0, 0x25
|
|
</td>
|
|
<td style="background: #E8E8E8"> 4 released
|
|
</td>
|
|
<td align="right"> 0xF0, 0x26
|
|
</td>
|
|
<td> 3 released
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xF0, 0x29
|
|
</td>
|
|
<td style="background: #E8E8E8"> space released
|
|
</td>
|
|
<td align="right"> 0xF0, 0x2A
|
|
</td>
|
|
<td> V released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xF0, 0x2B
|
|
</td>
|
|
<td style="background: #E8E8E8"> F released
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xF0, 0x2C
|
|
</td>
|
|
<td> T released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xF0, 0x2D
|
|
</td>
|
|
<td style="background: #E8E8E8"> R released
|
|
</td>
|
|
<td align="right"> 0xF0, 0x2E
|
|
</td>
|
|
<td> 5 released
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xF0, 0x31
|
|
</td>
|
|
<td style="background: #E8E8E8"> N released
|
|
</td>
|
|
<td align="right"> 0xF0, 0x32
|
|
</td>
|
|
<td> B released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xF0, 0x33
|
|
</td>
|
|
<td style="background: #E8E8E8"> H released
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xF0, 0x34
|
|
</td>
|
|
<td> G released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xF0, 0x35
|
|
</td>
|
|
<td style="background: #E8E8E8"> Y released
|
|
</td>
|
|
<td align="right"> 0xF0, 0x36
|
|
</td>
|
|
<td> 6 released
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td align="right"> 0xF0, 0x3A
|
|
</td>
|
|
<td> M released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xF0, 0x3B
|
|
</td>
|
|
<td style="background: #E8E8E8"> J released
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xF0, 0x3C
|
|
</td>
|
|
<td> U released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xF0, 0x3D
|
|
</td>
|
|
<td style="background: #E8E8E8"> 7 released
|
|
</td>
|
|
<td align="right"> 0xF0, 0x3E
|
|
</td>
|
|
<td> 8 released
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xF0, 0x41
|
|
</td>
|
|
<td style="background: #E8E8E8"> , released
|
|
</td>
|
|
<td align="right"> 0xF0, 0x42
|
|
</td>
|
|
<td> K released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xF0, 0x43
|
|
</td>
|
|
<td style="background: #E8E8E8"> I released
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xF0, 0x44
|
|
</td>
|
|
<td> O released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xF0, 0x45
|
|
</td>
|
|
<td style="background: #E8E8E8"> 0 (zero) released
|
|
</td>
|
|
<td align="right"> 0xF0, 0x46
|
|
</td>
|
|
<td> 9 released
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xF0, 0x49
|
|
</td>
|
|
<td style="background: #E8E8E8"> . released
|
|
</td>
|
|
<td align="right"> 0xF0, 0x4A
|
|
</td>
|
|
<td> / released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xF0, 0x4B
|
|
</td>
|
|
<td style="background: #E8E8E8"> L released
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xF0, 0x4C
|
|
</td>
|
|
<td> ; released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xF0, 0x4D
|
|
</td>
|
|
<td style="background: #E8E8E8"> P released
|
|
</td>
|
|
<td align="right"> 0xF0, 0x4E
|
|
</td>
|
|
<td> - released
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td align="right"> 0xF0, 0x52
|
|
</td>
|
|
<td> ' released
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xF0, 0x54
|
|
</td>
|
|
<td> [ released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xF0, 0x55
|
|
</td>
|
|
<td style="background: #E8E8E8"> = released
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xF0, 0x58
|
|
</td>
|
|
<td> CapsLock released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xF0, 0x59
|
|
</td>
|
|
<td style="background: #E8E8E8"> right shift released
|
|
</td>
|
|
<td align="right"> 0xF0, 0x5A
|
|
</td>
|
|
<td> enter released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xF0, 0x5B
|
|
</td>
|
|
<td style="background: #E8E8E8"> ] released
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xF0, 0x5D
|
|
</td>
|
|
<td style="background: #E8E8E8"> \ released
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td align="right"> 0xF0, 0x66
|
|
</td>
|
|
<td> backspace released
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xF0, 0x69
|
|
</td>
|
|
<td style="background: #E8E8E8"> (keypad) 1 released
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xF0, 0x6B
|
|
</td>
|
|
<td style="background: #E8E8E8"> (keypad) 4 released
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xF0, 0x6C
|
|
</td>
|
|
<td> (keypad) 7 released
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xF0, 0x70
|
|
</td>
|
|
<td> (keypad) 0 released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xF0, 0x71
|
|
</td>
|
|
<td style="background: #E8E8E8"> (keypad) . released
|
|
</td>
|
|
<td align="right"> 0xF0, 0x72
|
|
</td>
|
|
<td> (keypad) 2 released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xF0, 0x73
|
|
</td>
|
|
<td style="background: #E8E8E8"> (keypad) 5 released
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xF0, 0x74
|
|
</td>
|
|
<td> (keypad) 6 released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xF0, 0x75
|
|
</td>
|
|
<td style="background: #E8E8E8"> (keypad) 8 released
|
|
</td>
|
|
<td align="right"> 0xF0, 0x76
|
|
</td>
|
|
<td> escape released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xF0, 0x77
|
|
</td>
|
|
<td style="background: #E8E8E8"> NumberLock released
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xF0, 0x78
|
|
</td>
|
|
<td> F11 released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xF0, 0x79
|
|
</td>
|
|
<td style="background: #E8E8E8"> (keypad) + released
|
|
</td>
|
|
<td align="right"> 0xF0, 0x7A
|
|
</td>
|
|
<td> (keypad) 3 released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xF0, 0x7B
|
|
</td>
|
|
<td style="background: #E8E8E8"> (keypad) - released
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xF0, 0x7C
|
|
</td>
|
|
<td> (keypad) * released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xF0, 0x7D
|
|
</td>
|
|
<td style="background: #E8E8E8"> (keypad) 9 released
|
|
</td>
|
|
<td align="right"> 0xF0, 0x7E
|
|
</td>
|
|
<td> ScrollLock released
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xF0, 0x83
|
|
</td>
|
|
<td style="background: #E8E8E8"> F7 released
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xE0, 0x12, 0xE0, 0x7C
|
|
</td>
|
|
<td> print screen pressed
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xE0, 0xF0, 0x10
|
|
</td>
|
|
<td> (multimedia) WWW search released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0xF0, 0x11
|
|
</td>
|
|
<td style="background: #E8E8E8"> right alt released
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xE0, 0xF0, 0x14
|
|
</td>
|
|
<td> right control released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0xF0, 0x15
|
|
</td>
|
|
<td style="background: #E8E8E8"> (multimedia) previous track released
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xE0, 0xF0, 0x18
|
|
</td>
|
|
<td> (multimedia) WWW favourites released
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0xF0, 0x1F
|
|
</td>
|
|
<td style="background: #E8E8E8"> left GUI released
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xE0, 0xF0, 0x20
|
|
</td>
|
|
<td> (multimedia) WWW refresh released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0xF0, 0x21
|
|
</td>
|
|
<td style="background: #E8E8E8"> (multimedia) volume down released
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0xF0, 0x23
|
|
</td>
|
|
<td style="background: #E8E8E8"> (multimedia) mute released
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0xF0, 0x27
|
|
</td>
|
|
<td style="background: #E8E8E8"> right GUI released
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xE0, 0xF0, 0x28
|
|
</td>
|
|
<td> (multimedia) WWW stop released
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0xF0, 0x2B
|
|
</td>
|
|
<td style="background: #E8E8E8"> (multimedia) calculator released
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0xF0, 0x2F
|
|
</td>
|
|
<td style="background: #E8E8E8"> apps released
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xE0, 0xF0, 0x30
|
|
</td>
|
|
<td> (multimedia) WWW forward released
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td align="right"> 0xE0, 0xF0, 0x32
|
|
</td>
|
|
<td> (multimedia) volume up released
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xE0, 0xF0, 0x34
|
|
</td>
|
|
<td> (multimedia) play/pause released
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0xF0, 0x37
|
|
</td>
|
|
<td style="background: #E8E8E8"> (ACPI) power released
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xE0, 0xF0, 0x38
|
|
</td>
|
|
<td> (multimedia) WWW back released
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td align="right"> 0xE0, 0xF0, 0x3A
|
|
</td>
|
|
<td> (multimedia) WWW home released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0xF0, 0x3B
|
|
</td>
|
|
<td style="background: #E8E8E8"> (multimedia) stop released
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0xF0, 0x3F
|
|
</td>
|
|
<td style="background: #E8E8E8"> (ACPI) sleep released
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xE0, 0xF0, 0x40
|
|
</td>
|
|
<td> (multimedia) my computer released
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xE0, 0xF0, 0x48
|
|
</td>
|
|
<td> (multimedia) email released
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td align="right"> 0xE0, 0xF0, 0x4A
|
|
</td>
|
|
<td> (keypad) / released
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0xF0, 0x4D
|
|
</td>
|
|
<td style="background: #E8E8E8"> (multimedia) next track released
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xE0, 0xF0, 0x50
|
|
</td>
|
|
<td> (multimedia) media select released
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td align="right"> 0xE0, 0xF0, 0x5A
|
|
</td>
|
|
<td> (keypad) enter released
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td align="right"> 0xE0, 0xF0, 0x5E
|
|
</td>
|
|
<td> (ACPI) wake released
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0xF0, 0x69
|
|
</td>
|
|
<td style="background: #E8E8E8"> end released
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0xF0, 0x6B
|
|
</td>
|
|
<td style="background: #E8E8E8"> cursor left released
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xE0, 0xF0, 0x6C
|
|
</td>
|
|
<td> home released
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xE0, 0xF0, 0x70
|
|
</td>
|
|
<td> insert released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0xF0, 0x71
|
|
</td>
|
|
<td style="background: #E8E8E8"> delete released
|
|
</td>
|
|
<td align="right"> 0xE0, 0xF0, 0x72
|
|
</td>
|
|
<td> cursor down released
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td align="right"> 0xE0, 0xF0, 0x74
|
|
</td>
|
|
<td> cursor right released
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0xF0, 0x75
|
|
</td>
|
|
<td style="background: #E8E8E8"> cursor up released
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td align="right"> 0xE0, 0xF0, 0x7A
|
|
</td>
|
|
<td> page down released
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE0, 0xF0, 0x7D
|
|
</td>
|
|
<td style="background: #E8E8E8"> page up released
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td align="right"> 0xE0, 0xF0, 0x7C, 0xE0, 0xF0, 0x12
|
|
</td>
|
|
<td> print screen released
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td></tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td style="background: #E8E8E8">
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td style="background: #E8E8E8" align="right"> 0xE1, 0x14, 0x77, 0xE1, 0xF0, 0x14, 0xF0, 0x77
|
|
</td>
|
|
<td style="background: #E8E8E8"> pause pressed
|
|
</td></tr></tbody></table>
|
|
<p>Note: There is no scan code for "pause key released" (it behaves as if it is released as soon as it's pressed)
|
|
</p>
|
|
<h3> <span class="mw-headline" id="Scan_Code_Set_3"> Scan Code Set 3 </span></h3>
|
|
<p>The following table shows which scan codes correspond to which keys
|
|
when using scan code set 3 (for a "US QWERTY" keyboard only):
|
|
</p>
|
|
<a rel="nofollow" class="external text" href="https://web.archive.org/web/20170108131104/http://www.computer-engineering.org/ps2keyboard/scancodes3.html">Scan code</a><h2> <span class="mw-headline" id="See_Also">See Also</span></h2><ul><li><a href="https://wiki.osdev.org/PS/2" title="PS/2">PS/2</a>
|
|
</li><li><a href="https://wiki.osdev.org/%228042%22_PS/2_Controller" title=""8042" PS/2 Controller">"8042" PS/2 Controller</a>
|
|
</li><li><a href="https://wiki.osdev.org/PL050_PS/2_Controller" title="PL050 PS/2 Controller"> PL050 PS/2 Controller (ARM)</a>
|
|
</li><li><a href="https://wiki.osdev.org/PS/2_Mouse" title="PS/2 Mouse">PS/2 Mouse</a>
|
|
</li></ul><h3> <span class="mw-headline" id="Forum_Threads">Forum Threads</span></h3><ul><li><a href="http://forum.osdev.org/viewtopic.php?t=9746" class="extiw" title="topic:9746">Keyboard input</a>
|
|
</li><li><a href="http://forum.osdev.org/viewtopic.php?t=9761" class="extiw" title="topic:9761">Up or down press?</a>
|
|
</li><li><a href="http://forum.osdev.org/viewtopic.php?t=9711" class="extiw" title="topic:9711">Change typerate</a>
|
|
</li><li><a href="http://forum.osdev.org/viewtopic.php?t=9648" class="extiw" title="topic:9648">Converting the scancodes</a>
|
|
</li><li><a href="http://forum.osdev.org/viewtopic.php?t=9448" class="extiw" title="topic:9448">Discussion about keyboard input in a GUI</a>
|
|
</li><li><a href="http://forum.osdev.org/viewtopic.php?t=9590" class="extiw" title="topic:9590">Scroll-lock LED</a>
|
|
</li><li><a href="http://forum.osdev.org/viewtopic.php?t=10153" class="extiw" title="topic:10153">Keyboard LEDs (asm source)</a>
|
|
</li><li><a href="http://forum.osdev.org/viewtopic.php?t=10053" class="extiw" title="topic:10053">Keyboard LEDs (C source)</a>
|
|
</li></ul><h3> <span class="mw-headline" id="External_Links">External Links</span></h3><ul><li><a rel="nofollow" class="external text" href="http://www.win.tue.nl/~aeb/linux/kbd/scancodes.html">Keyboard scancodes</a> - A complete reference on all scancodes you might encounter.
|
|
</li><li><a rel="nofollow" class="external text" href="https://web.archive.org/web/20030621203107/http://www.microsoft.com/whdc/hwdev/tech/input/Scancode.mspx">USB HID to PS/2 Translation Table</a> - Microsoft's table of scancodes and USB equivalents
|
|
</li><li><a rel="nofollow" class="external text" href="https://web.archive.org/web/20190301075756/http://download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/scancode.doc">Keyboard Scan Code Specification</a> - Microsoft's specification for scancodes
|
|
</li><li><a rel="nofollow" class="external text" href="https://www.youtube.com/playlist?list=PLUZozxlhse-NUto5JeJ0EDXEUFloWBdAj">PS/2 keyboard interface playlist</a> - A video playlist of building a PS/2 keyboard interface on bread boards, by Ben Eater.
|
|
</li></ul><h4> <span class="mw-headline" id="Implementations"> Implementations </span></h4><ul><li> <a rel="nofollow" class="external text" href="http://lxr.linux.no/#linux+v3.5.4/drivers/input/keyboard/atkbd.c">Linux</a> (C,GPL)
|
|
</li><li> <a rel="nofollow" class="external text" href="https://github.com/Stichting-MINIX-Research-Foundation/minix/blob/master/minix/drivers/hid/pckbd/pckbd.c">Minix</a>
|
|
</li></ul><table style="margin-top:1em; margin-bottom:1em; background:#f9f9f9; border:1px #aaa solid; border-collapse:collapse; {{{1}}}" cellspacing="0" cellpadding="4" border="2">
|
|
|
|
<tbody><tr>
|
|
<th>Key
|
|
</th>
|
|
<th>Code for Scan code set 3
|
|
</th></tr>
|
|
<tr>
|
|
<td>A </td>
|
|
<td> 1C
|
|
</td></tr>
|
|
<tr>
|
|
<td>B </td>
|
|
<td> 32
|
|
</td></tr>
|
|
<tr>
|
|
<td>C </td>
|
|
<td> 21
|
|
</td></tr>
|
|
<tr>
|
|
<td>D </td>
|
|
<td> 23
|
|
</td></tr>
|
|
<tr>
|
|
<td>E </td>
|
|
<td> 24
|
|
</td></tr>
|
|
<tr>
|
|
<td>F </td>
|
|
<td> 2B
|
|
</td></tr>
|
|
<tr>
|
|
<td>G </td>
|
|
<td> 34
|
|
</td></tr>
|
|
<tr>
|
|
<td>H </td>
|
|
<td> 33
|
|
</td></tr>
|
|
<tr>
|
|
<td>I </td>
|
|
<td> 43
|
|
</td></tr>
|
|
<tr>
|
|
<td>J </td>
|
|
<td> 3B
|
|
</td></tr>
|
|
<tr>
|
|
<td>K </td>
|
|
<td> 42
|
|
</td></tr>
|
|
<tr>
|
|
<td>L </td>
|
|
<td> 4B
|
|
</td></tr>
|
|
<tr>
|
|
<td>M </td>
|
|
<td> 3A
|
|
</td></tr>
|
|
<tr>
|
|
<td>N </td>
|
|
<td> 31
|
|
</td></tr>
|
|
<tr>
|
|
<td>O </td>
|
|
<td> 44
|
|
</td></tr>
|
|
<tr>
|
|
<td>P </td>
|
|
<td> 4D
|
|
</td></tr>
|
|
<tr>
|
|
<td>Q </td>
|
|
<td> 15
|
|
</td></tr>
|
|
<tr>
|
|
<td>R </td>
|
|
<td> 2D
|
|
</td></tr>
|
|
<tr>
|
|
<td>S </td>
|
|
<td> 1B
|
|
</td></tr>
|
|
<tr>
|
|
<td>T </td>
|
|
<td> 2C
|
|
</td></tr>
|
|
<tr>
|
|
<td>U </td>
|
|
<td> 3C
|
|
</td></tr>
|
|
<tr>
|
|
<td>V </td>
|
|
<td> 2A
|
|
</td></tr>
|
|
<tr>
|
|
<td>W </td>
|
|
<td> 1D
|
|
</td></tr>
|
|
<tr>
|
|
<td>X </td>
|
|
<td> 22
|
|
</td></tr>
|
|
<tr>
|
|
<td>Y </td>
|
|
<td> 35
|
|
</td></tr>
|
|
<tr>
|
|
<td>Z </td>
|
|
<td> 1A
|
|
</td></tr>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</tbody></table>
|
|
|
|
<!--
|
|
NewPP limit report
|
|
Preprocessor node count: 136/1000000
|
|
Post-expand include size: 1620/2097152 bytes
|
|
Template argument size: 0/2097152 bytes
|
|
Expensive parser function count: 0/100
|
|
-->
|
|
|
|
<!-- Saved in parser cache with key wikidb:pcache:idhash:1900-0!*!0!!en!*!* and timestamp 20220430232304 -->
|
|
</div> <!-- /bodycontent -->
|
|
<!-- printfooter -->
|
|
<div class="printfooter">
|
|
Retrieved from "<a href="https://wiki.osdev.org/index.php?title=PS/2_Keyboard&oldid=27032">https://wiki.osdev.org/index.php?title=PS/2_Keyboard&oldid=27032</a>" </div>
|
|
<!-- /printfooter -->
|
|
<!-- catlinks -->
|
|
<div id="catlinks" class="catlinks"><div id="mw-normal-catlinks"><a href="https://wiki.osdev.org/Special:Categories" title="Special:Categories">Categories</a>: <ul><li><a href="https://wiki.osdev.org/Category:Human_Interface_Device" title="Category:Human Interface Device">Human Interface Device</a></li><li><a href="https://wiki.osdev.org/Category:Common_Devices" title="Category:Common Devices">Common Devices</a></li></ul></div></div> <!-- /catlinks -->
|
|
<div class="visualClear"></div>
|
|
<!-- debughtml -->
|
|
<!-- /debughtml -->
|
|
</div>
|
|
<!-- /bodyContent -->
|
|
</div>
|
|
<!-- /content -->
|
|
<!-- header -->
|
|
<div id="mw-head" class="noprint">
|
|
|
|
<!-- 0 -->
|
|
<div id="p-personal" class="">
|
|
<h5>Personal tools</h5>
|
|
<ul>
|
|
<li id="pt-login"><a href="https://wiki.osdev.org/index.php?title=Special:UserLogin&returnto=PS%2F2_Keyboard" title="You are encouraged to log in; however, it is not mandatory [o]" accesskey="o">Log in</a></li>
|
|
</ul>
|
|
</div>
|
|
|
|
<!-- /0 -->
|
|
<div id="left-navigation">
|
|
|
|
<!-- 0 -->
|
|
<div id="p-namespaces" class="vectorTabs">
|
|
<h5>Namespaces</h5>
|
|
<ul>
|
|
<li id="ca-nstab-main" class="selected"><span><a href="https://wiki.osdev.org/PS/2_Keyboard" title="View the content page [c]" accesskey="c">Page</a></span></li>
|
|
<li id="ca-talk"><span><a href="https://wiki.osdev.org/Talk:PS/2_Keyboard" title="Discussion about the content page [t]" accesskey="t">Discussion</a></span></li>
|
|
</ul>
|
|
</div>
|
|
|
|
<!-- /0 -->
|
|
|
|
<!-- 1 -->
|
|
<div id="p-variants" class="vectorMenu emptyPortlet">
|
|
<h5><span>Variants</span><a href="#"></a></h5>
|
|
<div class="menu">
|
|
<ul>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- /1 -->
|
|
</div>
|
|
<div id="right-navigation">
|
|
|
|
<!-- 0 -->
|
|
<div id="p-views" class="vectorTabs">
|
|
<h5>Views</h5>
|
|
<ul>
|
|
<li id="ca-view" class="selected"><span><a href="https://wiki.osdev.org/PS/2_Keyboard">Read</a></span></li>
|
|
<li id="ca-viewsource"><span><a href="https://wiki.osdev.org/index.php?title=PS/2_Keyboard&action=edit" title="This page is protected.
|
|
You can view its source [e]" accesskey="e">View source</a></span></li>
|
|
<li id="ca-history" class="collapsible"><span><a href="https://wiki.osdev.org/index.php?title=PS/2_Keyboard&action=history" title="Past revisions of this page [h]" accesskey="h">View history</a></span></li>
|
|
</ul>
|
|
</div>
|
|
|
|
<!-- /0 -->
|
|
|
|
<!-- 1 -->
|
|
<div id="p-cactions" class="vectorMenu emptyPortlet">
|
|
<h5><span>Actions</span><a href="#"></a></h5>
|
|
<div class="menu">
|
|
<ul>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- /1 -->
|
|
|
|
<!-- 2 -->
|
|
<div id="p-search">
|
|
<h5><label for="searchInput">Search</label></h5>
|
|
<form action="/index.php" id="searchform">
|
|
<input type="hidden" name="title" value="Special:Search">
|
|
<input type="search" name="search" title="Search OSDev Wiki [f]" accesskey="f" id="searchInput"> <input type="submit" name="go" value="Go" title="Go to a page with this exact name if exists" id="searchGoButton" class="searchButton"> <input type="submit" name="fulltext" value="Search" title="Search the pages for this text" id="mw-searchButton" class="searchButton"> </form>
|
|
</div>
|
|
|
|
<!-- /2 -->
|
|
</div>
|
|
</div>
|
|
<!-- /header -->
|
|
<!-- panel -->
|
|
<div id="mw-panel" class="noprint">
|
|
<!-- logo -->
|
|
<div id="p-logo"><a style="background-image: url(/skins/common/images/osdev.png);" href="https://wiki.osdev.org/Main_Page" title="Visit the main page"></a></div>
|
|
<!-- /logo -->
|
|
|
|
<!-- navigation -->
|
|
<div class="portal" id="p-navigation">
|
|
<h5>Navigation</h5>
|
|
<div class="body">
|
|
<ul>
|
|
<li id="n-mainpage"><a href="https://wiki.osdev.org/Main_Page" title="Visit the main page [z]" accesskey="z">Main Page</a></li>
|
|
<li id="n-portal"><a href="http://forum.osdev.org/" rel="nofollow" title="About the project, what you can do, where to find things">Forums</a></li>
|
|
<li id="n-FAQ"><a href="https://wiki.osdev.org/Category:FAQ">FAQ</a></li>
|
|
<li id="n-OS-Projects"><a href="https://wiki.osdev.org/Projects">OS Projects</a></li>
|
|
<li id="n-randompage"><a href="https://wiki.osdev.org/Special:Random" title="Load a random page [x]" accesskey="x">Random page</a></li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- /navigation -->
|
|
|
|
<!-- about -->
|
|
<div class="portal" id="p-about">
|
|
<h5>About</h5>
|
|
<div class="body">
|
|
<ul>
|
|
<li id="n-This-site"><a href="https://wiki.osdev.org/OSDevWiki:About">This site</a></li>
|
|
<li id="n-Joining"><a href="https://wiki.osdev.org/OSDevWiki:Joining">Joining</a></li>
|
|
<li id="n-Editing-help"><a href="https://wiki.osdev.org/OSDevWiki:Editing">Editing help</a></li>
|
|
<li id="n-recentchanges"><a href="https://wiki.osdev.org/Special:RecentChanges" title="A list of recent changes in the wiki [r]" accesskey="r">Recent changes</a></li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- /about -->
|
|
|
|
<!-- SEARCH -->
|
|
|
|
<!-- /SEARCH -->
|
|
|
|
<!-- TOOLBOX -->
|
|
<div class="portal" id="p-tb">
|
|
<h5>Toolbox</h5>
|
|
<div class="body">
|
|
<ul>
|
|
<li id="t-whatlinkshere"><a href="https://wiki.osdev.org/Special:WhatLinksHere/PS/2_Keyboard" title="A list of all wiki pages that link here [j]" accesskey="j">What links here</a></li>
|
|
<li id="t-recentchangeslinked"><a href="https://wiki.osdev.org/Special:RecentChangesLinked/PS/2_Keyboard" title="Recent changes in pages linked from this page [k]" accesskey="k">Related changes</a></li>
|
|
<li id="t-specialpages"><a href="https://wiki.osdev.org/Special:SpecialPages" title="A list of all special pages [q]" accesskey="q">Special pages</a></li>
|
|
<li><a href="https://wiki.osdev.org/index.php?title=PS/2_Keyboard&printable=yes" rel="alternate">Printable version</a></li>
|
|
<li id="t-permalink"><a href="https://wiki.osdev.org/index.php?title=PS/2_Keyboard&oldid=27032" title="Permanent link to this revision of the page">Permanent link</a></li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- /TOOLBOX -->
|
|
|
|
<!-- LANGUAGES -->
|
|
<div class="portal" id="p-lang">
|
|
<h5>In other languages</h5>
|
|
<div class="body">
|
|
<ul>
|
|
<li class="interwiki-de"><a href="http://www.lowlevel.eu/wiki/Keyboard_Controller" title="Keyboard Controller">Deutsch</a></li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- /LANGUAGES -->
|
|
</div>
|
|
<!-- /panel -->
|
|
<!-- footer -->
|
|
<div id="footer">
|
|
<ul id="footer-info">
|
|
<li id="footer-info-lastmod"> This page was last modified on 11 April 2022, at 03:55.</li>
|
|
<li id="footer-info-viewcount">This page has been accessed 428,427 times.</li>
|
|
</ul>
|
|
<ul id="footer-places">
|
|
<li id="footer-places-privacy"><a href="https://wiki.osdev.org/OSDev_Wiki:Privacy_policy" title="OSDev Wiki:Privacy policy">Privacy policy</a></li>
|
|
<li id="footer-places-about"><a href="https://wiki.osdev.org/OSDev_Wiki:About" title="OSDev Wiki:About">About OSDev Wiki</a></li>
|
|
<li id="footer-places-disclaimer"><a href="https://wiki.osdev.org/OSDev_Wiki:General_disclaimer" title="OSDev Wiki:General disclaimer">Disclaimers</a></li>
|
|
</ul>
|
|
<ul id="footer-icons" class="noprint">
|
|
<li id="footer-poweredbyico">
|
|
<a href="http://www.mediawiki.org/"><img src="PS_2%20Keyboard%20-%20OSDev%20Wiki_files/poweredby_mediawiki_88x31.png" alt="Powered by MediaWiki" width="88" height="31"></a>
|
|
</li>
|
|
</ul>
|
|
<div style="clear:both"></div>
|
|
</div>
|
|
<!-- /footer -->
|
|
<!-- fixalpha -->
|
|
<script type="text/javascript"> if ( window.isMSIE55 ) fixalpha(); </script>
|
|
<!-- /fixalpha -->
|
|
<script src="PS_2%20Keyboard%20-%20OSDev%20Wiki_files/load"></script>
|
|
<script>if(window.mw){
|
|
mw.loader.load(["mediawiki.user", "mediawiki.util", "mediawiki.page.ready", "mediawiki.legacy.wikibits", "mediawiki.legacy.ajax"]);
|
|
}
|
|
</script>
|
|
<script src="PS_2%20Keyboard%20-%20OSDev%20Wiki_files/load_002"></script>
|
|
<script>if(window.mw){
|
|
mw.user.options.set({"ccmeonemails":0,"cols":80,"date":"default","diffonly":0,"disablemail":0,"disablesuggest":0,"editfont":"default","editondblclick":0,"editsection":1,"editsectiononrightclick":0,"enotifminoredits":0,"enotifrevealaddr":0,"enotifusertalkpages":1,"enotifwatchlistpages":0,"extendwatchlist":0,"externaldiff":0,"externaleditor":0,"fancysig":0,"forceeditsummary":0,"gender":"unknown","hideminor":0,"hidepatrolled":0,"highlightbroken":1,"imagesize":2,"justify":0,"math":1,"minordefault":0,"newpageshidepatrolled":0,"nocache":0,"noconvertlink":0,"norollbackdiff":0,"numberheadings":0,"previewonfirst":0,"previewontop":1,"quickbar":5,"rcdays":7,"rclimit":50,"rememberpassword":0,"rows":25,"searchlimit":20,"showhiddencats":0,"showjumplinks":1,"shownumberswatching":1,"showtoc":1,"showtoolbar":1,"skin":"vector","stubthreshold":0,"thumbsize":2,"underline":2,"uselivepreview":0,"usenewrc":0,"watchcreations":0,"watchdefault":0,"watchdeletion":0,"watchlistdays":3,"watchlisthideanons":0,
|
|
"watchlisthidebots":0,"watchlisthideliu":0,"watchlisthideminor":0,"watchlisthideown":0,"watchlisthidepatrolled":0,"watchmoves":0,"wllimit":250,"variant":"en","language":"en","searchNs0":true,"searchNs1":false,"searchNs2":false,"searchNs3":false,"searchNs4":false,"searchNs5":false,"searchNs6":false,"searchNs7":false,"searchNs8":false,"searchNs9":false,"searchNs10":false,"searchNs11":false,"searchNs12":false,"searchNs13":false,"searchNs14":false,"searchNs15":false});;mw.user.tokens.set({"editToken":"+\\","watchToken":false});;mw.loader.state({"user.options":"ready","user.tokens":"ready"});
|
|
|
|
/* cache key: wikidb:resourceloader:filter:minify-js:4:19a4b18a9ac79a6b8c60b24af4668814 */
|
|
}
|
|
</script><!-- Served in 0.027 secs. -->
|
|
|
|
|
|
</body></html> |