<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://www.computercraft.info/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Wukl</id>
		<title>ComputerCraft Wiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://www.computercraft.info/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Wukl"/>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/Special:Contributions/Wukl"/>
		<updated>2026-07-11T08:20:40Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.24.1</generator>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Textutils.urlEncode&amp;diff=3618</id>
		<title>Textutils.urlEncode</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Textutils.urlEncode&amp;diff=3618"/>
				<updated>2012-11-05T01:44:06Z</updated>
		
		<summary type="html">&lt;p&gt;Wukl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{lowercase}}&lt;br /&gt;
{{Function&lt;br /&gt;
|name=textutils.urlEncode&lt;br /&gt;
|args= [[String (type)|string]]&lt;br /&gt;
|returns=A string safe for use on the internet&lt;br /&gt;
|api=textutils&lt;br /&gt;
|addon=ComputerCraft&lt;br /&gt;
|desc=Replaces certain characters in a string to make it safe for use on the internet. Note that it is a string function and will even replace characters that are allowed in URLs. Use this only for text to be inserted in an URL, not the URL itself.&lt;br /&gt;
|examples=&lt;br /&gt;
{{Example&lt;br /&gt;
|desc=Create a safe string from another string full of invalid characters. '''This is incorrect usage!'''&lt;br /&gt;
|code=&amp;lt;pre&amp;gt;sUnsafe = &amp;quot;http://example.com/?view=€ @!! 3-g_dvv[gf&amp;quot;&lt;br /&gt;
sSafe = textutils.urlEncode(sUnsafe)&lt;br /&gt;
print(sSafe)&amp;lt;/pre&amp;gt;&lt;br /&gt;
|output=(to be specified - I don't have CC on this computer)&lt;br /&gt;
}}&lt;br /&gt;
{{Example&lt;br /&gt;
|desc=Create a safe URL from a base URL and a string to be inserted.&lt;br /&gt;
|code=&amp;lt;pre&amp;gt;sUnsafe = &amp;quot;€ @!! 3-g_dvv[gf&amp;quot;&lt;br /&gt;
sBaseURL = &amp;quot;http://example.com/?view=&amp;quot;&lt;br /&gt;
sSafe = textutils.urlencode(sUnsafe)&lt;br /&gt;
sURL = sBaseURL .. sSafe&lt;br /&gt;
print(sURL)&amp;lt;/pre&amp;gt;&lt;br /&gt;
|output=(same here)&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Wukl</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Template:Example&amp;diff=3617</id>
		<title>Template:Example</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Template:Example&amp;diff=3617"/>
				<updated>2012-11-05T01:42:52Z</updated>
		
		<summary type="html">&lt;p&gt;Wukl: I give up&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;table style=&amp;quot;border-spacing: 0px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;padding-right: .5em; border-right: solid #DDD 1px; border-bottom: solid #DDD 1px;&amp;quot;&amp;gt;'''Description'''&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;padding-left: .5em; border-bottom: solid #DDD 1px;&amp;quot;&amp;gt;{{{desc}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;padding-right: .5em; border-right: solid #DDD 1px;&amp;quot;&amp;gt;'''Code'''&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;padding-left: .5em;&amp;quot;&amp;gt;&lt;br /&gt;
 {{{code}}}&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
{{#if: {{{output|}}} | &amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;padding-right: .5em; border-right: solid #DDD 1px;&amp;quot;&amp;gt;'''Output'''&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;padding-left: .5em;&amp;quot;&amp;gt;{{{output}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Wiki code ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{Example&lt;br /&gt;
 |desc=Prints a message&lt;br /&gt;
 |code=print(&amp;quot;Hello world!&amp;quot;)&lt;br /&gt;
 |output=Hello world!&lt;br /&gt;
 }}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Result ==&lt;br /&gt;
{{Example&lt;br /&gt;
|desc=Prints a message&lt;br /&gt;
|code=print(&amp;quot;Hello world!&amp;quot;)&lt;br /&gt;
|output=Hello world!&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wukl</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Template:Example&amp;diff=3616</id>
		<title>Template:Example</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Template:Example&amp;diff=3616"/>
				<updated>2012-11-05T01:41:25Z</updated>
		
		<summary type="html">&lt;p&gt;Wukl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;table style=&amp;quot;border-spacing: 0px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;padding-right: .5em; border-right: solid #DDD 1px; border-bottom: solid #DDD 1px;&amp;quot;&amp;gt;'''Description'''&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;padding-left: .5em; border-bottom: solid #DDD 1px;&amp;quot;&amp;gt;{{{desc}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;padding-right: .5em; border-right: solid #DDD 1px;&amp;quot;&amp;gt;'''Code'''&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;padding-left: .5em;&amp;quot;&amp;gt;&lt;br /&gt;
{{{code}}}&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
{{#if: {{{output|}}} | &amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;padding-right: .5em; border-right: solid #DDD 1px;&amp;quot;&amp;gt;'''Output'''&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;padding-left: .5em;&amp;quot;&amp;gt;{{{output}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Wiki code ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{Example&lt;br /&gt;
 |desc=Prints a message&lt;br /&gt;
 |code=print(&amp;quot;Hello world!&amp;quot;)&lt;br /&gt;
 |output=Hello world!&lt;br /&gt;
 }}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Result ==&lt;br /&gt;
{{Example&lt;br /&gt;
|desc=Prints a message&lt;br /&gt;
|code=print(&amp;quot;Hello world!&amp;quot;)&lt;br /&gt;
|output=Hello world!&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wukl</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Template:Example&amp;diff=3615</id>
		<title>Template:Example</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Template:Example&amp;diff=3615"/>
				<updated>2012-11-05T01:40:20Z</updated>
		
		<summary type="html">&lt;p&gt;Wukl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;table style=&amp;quot;border-spacing: 0px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;padding-right: .5em; border-right: solid #DDD 1px; border-bottom: solid #DDD 1px;&amp;quot;&amp;gt;'''Description'''&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;padding-left: .5em; border-bottom: solid #DDD 1px;&amp;quot;&amp;gt;{{{desc}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;padding-right: .5em; border-right: solid #DDD 1px;&amp;quot;&amp;gt;'''Code'''&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;padding-left: .5em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{{code}}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
{{#if: {{{output|}}} | &amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;padding-right: .5em; border-right: solid #DDD 1px;&amp;quot;&amp;gt;'''Output'''&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;padding-left: .5em;&amp;quot;&amp;gt;{{{output}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Wiki code ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{Example&lt;br /&gt;
 |desc=Prints a message&lt;br /&gt;
 |code=print(&amp;quot;Hello world!&amp;quot;)&lt;br /&gt;
 |output=Hello world!&lt;br /&gt;
 }}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Result ==&lt;br /&gt;
{{Example&lt;br /&gt;
|desc=Prints a message&lt;br /&gt;
|code=print(&amp;quot;Hello world!&amp;quot;)&lt;br /&gt;
|output=Hello world!&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wukl</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Template:Example&amp;diff=3614</id>
		<title>Template:Example</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Template:Example&amp;diff=3614"/>
				<updated>2012-11-05T01:39:45Z</updated>
		
		<summary type="html">&lt;p&gt;Wukl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;table style=&amp;quot;border-spacing: 0px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;padding-right: .5em; border-right: solid #DDD 1px; border-bottom: solid #DDD 1px;&amp;quot;&amp;gt;'''Description'''&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;padding-left: .5em; border-bottom: solid #DDD 1px;&amp;quot;&amp;gt;{{{desc}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;padding-right: .5em; border-right: solid #DDD 1px;&amp;quot;&amp;gt;'''Code'''&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;padding-left: .5em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
 {{{code}}}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
{{#if: {{{output|}}} | &amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;padding-right: .5em; border-right: solid #DDD 1px;&amp;quot;&amp;gt;'''Output'''&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;padding-left: .5em;&amp;quot;&amp;gt;{{{output}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Wiki code ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{Example&lt;br /&gt;
 |desc=Prints a message&lt;br /&gt;
 |code=print(&amp;quot;Hello world!&amp;quot;)&lt;br /&gt;
 |output=Hello world!&lt;br /&gt;
 }}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Result ==&lt;br /&gt;
{{Example&lt;br /&gt;
|desc=Prints a message&lt;br /&gt;
|code=print(&amp;quot;Hello world!&amp;quot;)&lt;br /&gt;
|output=Hello world!&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wukl</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Textutils.urlEncode&amp;diff=3613</id>
		<title>Textutils.urlEncode</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Textutils.urlEncode&amp;diff=3613"/>
				<updated>2012-11-05T01:39:05Z</updated>
		
		<summary type="html">&lt;p&gt;Wukl: Created page, but not the outputs of the functions, as I can't run Minecraft on this computer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{lowercase}}&lt;br /&gt;
{{Function&lt;br /&gt;
|name=textutils.urlEncode&lt;br /&gt;
|args= [[String (type)|string]]&lt;br /&gt;
|returns=A string safe for use on the internet&lt;br /&gt;
|api=textutils&lt;br /&gt;
|addon=ComputerCraft&lt;br /&gt;
|desc=Replaces certain characters in a string to make it safe for use on the internet. Note that it is a string function and will even replace characters that are allowed in URLs. Use this only for text to be inserted in an URL, not the URL itself.&lt;br /&gt;
|examples=&lt;br /&gt;
{{Example&lt;br /&gt;
|desc=Create a safe string from another string full of invalid characters. '''This is incorrect usage!'''&lt;br /&gt;
|code=sUnsafe = &amp;quot;http://example.com/?view=€ @!! 3-g_dvv[gf&amp;quot;&amp;lt;br /&amp;gt;sSafe = textutils.urlEncode(sUnsafe)&amp;lt;br /&amp;gt;print(sSafe)&lt;br /&gt;
|output=(to be specified - I don't have CC on this computer)&lt;br /&gt;
}}&lt;br /&gt;
{{Example&lt;br /&gt;
|desc=Create a safe URL from a base URL and a string to be inserted.&lt;br /&gt;
|code=sUnsafe = &amp;quot;€ @!! 3-g_dvv[gf&amp;quot;&amp;lt;br /&amp;gt;sBaseURL = &amp;quot;http://example.com/?view=&amp;quot;&amp;lt;br /&amp;gt;sSafe = textutils.urlencode(sUnsafe)&amp;lt;br /&amp;gt;sURL = sBaseURL .. sSafe&amp;lt;br /&amp;gt;print(sURL)&lt;br /&gt;
|output=(same here)&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Wukl</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Worm&amp;diff=2441</id>
		<title>Worm</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Worm&amp;diff=2441"/>
				<updated>2012-08-01T12:38:19Z</updated>
		
		<summary type="html">&lt;p&gt;Wukl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[image:2012-01-30 22.51.36.png|thumb|400px|Gameplay of Worm.]]Worm is a built-in program. It is essentially Snake without walls; instead of hitting a wall and dying, the worm will wrap around the screen. It has three difficulty levels.&lt;br /&gt;
&lt;br /&gt;
[[Category:Notable Programs]]&lt;br /&gt;
[[Category:Games]]&lt;/div&gt;</summary>
		<author><name>Wukl</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Category:Games&amp;diff=2440</id>
		<title>Category:Games</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Category:Games&amp;diff=2440"/>
				<updated>2012-08-01T12:37:39Z</updated>
		
		<summary type="html">&lt;p&gt;Wukl: Created page with &amp;quot;Playing Minecraft in Minecraft is the best idea ever. Category:Programs&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Playing Minecraft in Minecraft is the best idea ever.&lt;br /&gt;
[[Category:Programs]]&lt;/div&gt;</summary>
		<author><name>Wukl</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Adventure&amp;diff=2439</id>
		<title>Adventure</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Adventure&amp;diff=2439"/>
				<updated>2012-08-01T12:35:53Z</updated>
		
		<summary type="html">&lt;p&gt;Wukl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[image:2012-01-30 22.51.59.png|frame|right|Gameplay of Adventure.]]Adventure is one of the default programs in CraftOs. Adventure emulates a text adventure, but it takes place in MineCraft.  Therefore, it is possible to play MineCraft, on a computer, in MineCraft, on a computer. This is referred to as &amp;quot;recursion&amp;quot;. Also most LPs consist of LPers playing Adventure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For more ingame info type: &amp;quot;help&amp;quot;&lt;br /&gt;
[[Category:Notable Programs]]&lt;br /&gt;
[[Category:Games]]&lt;/div&gt;</summary>
		<author><name>Wukl</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Login_with_Roaming_Profiles&amp;diff=2437</id>
		<title>Login with Roaming Profiles</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Login_with_Roaming_Profiles&amp;diff=2437"/>
				<updated>2012-08-01T12:34:00Z</updated>
		
		<summary type="html">&lt;p&gt;Wukl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This tutorial covers how to make a password server and a password client. The server will host a Lua table of usernames and passwords and the client will remotely connect each start up, ask the user for their username and password and compare it to that on the password server.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Setting Up ==&lt;br /&gt;
As I'm sure you're aware, writing code directly into the computer terminal can be difficult, slow, and therefore annoying. I highly recommend writing/copying the following code into a Lua editor and then using FTP to transfer the documents across to the computer or disk. Please ensure you do not add the .lua extension.&lt;br /&gt;
&lt;br /&gt;
First craft two or more computers. One will act as your password server, any others will be connecting to that computer. Find the computer ID of your password server. This is important as we don't want to broadcast password requests and replies. In the following code I have also locked the requests to certain computers to ensure security but it is not a needed component of the code. If you decide to take the security as well, make a note of all of the ID's of the client computers. I found it useful to give each computer a label and then search for labels.txt on the server to map it out easily.&lt;br /&gt;
&lt;br /&gt;
Each computer you craft needs a [[modem|rednet modem]].&lt;br /&gt;
&lt;br /&gt;
== The Code ==&lt;br /&gt;
&lt;br /&gt;
=== Server Code ===&lt;br /&gt;
&lt;br /&gt;
 os.pullEvent = os.pullEventRaw&lt;br /&gt;
 term.clear()&lt;br /&gt;
 term.setCursorPos(1,1)&lt;br /&gt;
 print(&amp;quot;This is a password server. There is no user interaction here.&amp;quot;)&lt;br /&gt;
 print(&amp;quot;Please find a computer and login there.&amp;quot;)   &lt;br /&gt;
 local firstCycle = true&lt;br /&gt;
 local validSender = false&lt;br /&gt;
 local modemSide = &amp;quot;left&amp;quot; -- change to the side of the computer your modem is on&lt;br /&gt;
 local valid = false&lt;br /&gt;
 users = {}&lt;br /&gt;
 users = { username1=&amp;quot;password&amp;quot;, username2=&amp;quot;password2&amp;quot; }&lt;br /&gt;
 senders = {}&lt;br /&gt;
 senders = { 13, 14, 15, 17 } -- computer ID's of the computers you want to accept requests from&lt;br /&gt;
 function bootUp()&lt;br /&gt;
  rednet.open(modemSide)&lt;br /&gt;
 end &lt;br /&gt;
 while true do &lt;br /&gt;
  validSender = false&lt;br /&gt;
  if firstCycle then&lt;br /&gt;
   bootUp()&lt;br /&gt;
  end&lt;br /&gt;
  senderId, message, distance = rednet.receive()&lt;br /&gt;
  for i,v in ipairs(senders) do&lt;br /&gt;
   if v == senderId then&lt;br /&gt;
    validSender = true&lt;br /&gt;
    break&lt;br /&gt;
   end&lt;br /&gt;
  end&lt;br /&gt;
  if validSender then&lt;br /&gt;
   for k,v in pairs(users) do&lt;br /&gt;
    if message == k then&lt;br /&gt;
     valid = true&lt;br /&gt;
 	password = v&lt;br /&gt;
    else&lt;br /&gt;
     valid = false&lt;br /&gt;
    end&lt;br /&gt;
   end&lt;br /&gt;
   if valid then&lt;br /&gt;
    rednet.send(senderId, password)&lt;br /&gt;
   else&lt;br /&gt;
    rednet.send(senderId, &amp;quot;Not Valid&amp;quot;)&lt;br /&gt;
   end&lt;br /&gt;
  end&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
=== Client Code ===&lt;br /&gt;
&lt;br /&gt;
 os.pullEvent = os.pullEventRaw&lt;br /&gt;
 local locker = true&lt;br /&gt;
 local failed = true&lt;br /&gt;
 local attempted_login = true&lt;br /&gt;
 local password_server = 17 -- change to the ID of your password server computer&lt;br /&gt;
 rednet.open(&amp;quot;left&amp;quot;) -- change to the side your rednet modem is on&lt;br /&gt;
 while locker do&lt;br /&gt;
  attempted_login = false&lt;br /&gt;
  term.clear()&lt;br /&gt;
  term.setCursorPos(1,1)&lt;br /&gt;
  print(&amp;quot;Welcome to a USERS PC : Roaming Profile Enabled&amp;quot;)&lt;br /&gt;
  print(&amp;quot;What would you like to do?&amp;quot;)&lt;br /&gt;
  print(&amp;quot;[1] Login (*)&amp;quot;)&lt;br /&gt;
  print(&amp;quot;[2] Shutdown&amp;quot;)&lt;br /&gt;
  write(&amp;quot;&amp;gt; &amp;quot;)&lt;br /&gt;
  local input = read()&lt;br /&gt;
  if input == &amp;quot;2&amp;quot; then&lt;br /&gt;
   os.shutdown()&lt;br /&gt;
  elseif input == &amp;quot;1&amp;quot; then&lt;br /&gt;
   attempted_login = true&lt;br /&gt;
   print(&amp;quot;Please login...&amp;quot;)&lt;br /&gt;
   write(&amp;quot;Username: &amp;quot;)&lt;br /&gt;
   local username = read()&lt;br /&gt;
   write(&amp;quot;Password: &amp;quot;)&lt;br /&gt;
   local password = read(&amp;quot;*&amp;quot;)&lt;br /&gt;
   rednet.send(password_server, username)&lt;br /&gt;
   senderId, message, distance = rednet.receive(5)&lt;br /&gt;
   if password == message then&lt;br /&gt;
    failed = false&lt;br /&gt;
    locker = false&lt;br /&gt;
    term.clear()&lt;br /&gt;
    term.setCursorPos(1,1)&lt;br /&gt;
    print(&amp;quot;Welcome &amp;quot;, username)&lt;br /&gt;
   else&lt;br /&gt;
    print(&amp;quot;Not authorised.&amp;quot;)&lt;br /&gt;
    sleep(1)&lt;br /&gt;
   end&lt;br /&gt;
  else&lt;br /&gt;
   print(&amp;quot;Command not recognised...&amp;quot;)&lt;br /&gt;
   sleep(2)&lt;br /&gt;
  end&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
== Thoughts and Notes ==&lt;br /&gt;
If you change the client code, to &amp;quot;startup&amp;quot; and put it in the root directory, it works very well as a login system.&lt;br /&gt;
You may also want to not put in the line &lt;br /&gt;
 os.pullEvent = os.pullEventRaw -- disables Ctrl+T&lt;br /&gt;
as if it doesn't work first time it can be difficult to get out of the program.&lt;br /&gt;
&lt;br /&gt;
If you run Tekkit, find the 'World Anchor' block. If your server can afford the resources, place the block within a 3x3 grid of your password server. It will ensure that even if you leave the chunk, the password server still is operational. Otherwise you may find that you cannot login because you've left the chunk and the password server is no longer dealing with requests.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:User Management]]&lt;/div&gt;</summary>
		<author><name>Wukl</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Category:Programs&amp;diff=2436</id>
		<title>Category:Programs</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Category:Programs&amp;diff=2436"/>
				<updated>2012-08-01T12:32:18Z</updated>
		
		<summary type="html">&lt;p&gt;Wukl: Created page with &amp;quot;Lists all programs&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lists all programs&lt;/div&gt;</summary>
		<author><name>Wukl</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Category:Notable_Programs&amp;diff=2435</id>
		<title>Category:Notable Programs</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Category:Notable_Programs&amp;diff=2435"/>
				<updated>2012-08-01T12:31:20Z</updated>
		
		<summary type="html">&lt;p&gt;Wukl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This lists all notable programs that are ''not'' OSes.&lt;br /&gt;
[[Category:Lists]]&lt;br /&gt;
[[Category:Programs]]&lt;/div&gt;</summary>
		<author><name>Wukl</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Redstone&amp;diff=1849</id>
		<title>Redstone</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Redstone&amp;diff=1849"/>
				<updated>2012-06-25T13:22:36Z</updated>
		
		<summary type="html">&lt;p&gt;Wukl: Because the crafting grid links to the page Redstone.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Redstone may refer to:'''&lt;br /&gt;
* The [[Redstone_(API)|Redstone API]]&lt;br /&gt;
* [http://www.minecraftwiki.net/wiki/Redstone_Dust Redstone dust]&lt;/div&gt;</summary>
		<author><name>Wukl</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=IO_(API)&amp;diff=1824</id>
		<title>IO (API)</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=IO_(API)&amp;diff=1824"/>
				<updated>2012-06-24T14:46:29Z</updated>
		
		<summary type="html">&lt;p&gt;Wukl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;IO is a reimplementation of the default Lua input / output API defined [http://www.lua.org/manual/5.1/manual.html#5.7 here], with some features trimmed. Most features should work. If you find a non-working feature, please list it here.&lt;br /&gt;
&lt;br /&gt;
List of non-working features from IO:&lt;br /&gt;
&lt;br /&gt;
* file:seek(...) - Doesn't exist.&lt;br /&gt;
&lt;br /&gt;
[[Category:APIs]]&lt;/div&gt;</summary>
		<author><name>Wukl</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Term.clearLine&amp;diff=1820</id>
		<title>Term.clearLine</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Term.clearLine&amp;diff=1820"/>
				<updated>2012-06-24T14:26:39Z</updated>
		
		<summary type="html">&lt;p&gt;Wukl: Undo revision 1794 by 37.59.80.67 (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{lowercase}}&lt;br /&gt;
{{Function&lt;br /&gt;
|name=term.clearLine&lt;br /&gt;
|args=none&lt;br /&gt;
|returns=none&lt;br /&gt;
|api=term&lt;br /&gt;
|addon=ComputerCraft&lt;br /&gt;
|desc=Clears the line that the cursor is currently on.&lt;br /&gt;
|examples=&lt;br /&gt;
{{Example&lt;br /&gt;
|desc=Clears the line that the cursor is currently on.&lt;br /&gt;
|code=term.clearLine()&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Wukl</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Disk.getLabel&amp;diff=1819</id>
		<title>Disk.getLabel</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Disk.getLabel&amp;diff=1819"/>
				<updated>2012-06-24T14:26:11Z</updated>
		
		<summary type="html">&lt;p&gt;Wukl: Undo revision 1795 by 37.59.80.67 (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{lowercase}}&lt;br /&gt;
{{Function&lt;br /&gt;
|name=disk.getLabel&lt;br /&gt;
|args=[[string (type)|string]] side&lt;br /&gt;
|api=disk&lt;br /&gt;
|returns=[[string (type)|string]] disk label&lt;br /&gt;
|addon=ComputerCraft&lt;br /&gt;
|examples=&lt;br /&gt;
{{Example&lt;br /&gt;
|desc=Checks for data saved on the disk in the bottom drive&lt;br /&gt;
|code=print(disk.getLabel(&amp;quot;bottom&amp;quot;))&lt;br /&gt;
|output=Floppy --'''Output changes according to the disk label'''&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Wukl</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=TurtleOS&amp;diff=1818</id>
		<title>TurtleOS</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=TurtleOS&amp;diff=1818"/>
				<updated>2012-06-24T14:25:54Z</updated>
		
		<summary type="html">&lt;p&gt;Wukl: Undo revision 1796 by 37.59.80.67 (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:8EPlc.png|400px|thumb|right|TurtleOS interface]]&lt;br /&gt;
TurtleOS is the default OS for [[Turtle|turtles]]. The difference with the default OS for [[Console|consoles]] is that TurtleOS works with the new [[Turtle API]], which can be used to code turtles.&lt;br /&gt;
Its features include...&lt;br /&gt;
* Default; guaranteed to work across updates unlike the others.&lt;br /&gt;
* DOS style interface&lt;br /&gt;
* Only OS for turtles at time of writing&lt;br /&gt;
* Do It Yourself: letting you customize what you want on your Turtle.&lt;br /&gt;
[[Category:OSes]]&lt;/div&gt;</summary>
		<author><name>Wukl</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Wireless_Modem&amp;diff=1817</id>
		<title>Wireless Modem</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Wireless_Modem&amp;diff=1817"/>
				<updated>2012-06-24T14:25:39Z</updated>
		
		<summary type="html">&lt;p&gt;Wukl: Undo revision 1797 by 37.59.80.67 (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:QJrCF.png|frame|right|The recipe for a modem.]]&lt;br /&gt;
== Description ==&lt;br /&gt;
'''Modems''' are blocks which can be used to wirelessly transfer data between [[Console|consoles]] and [[Turtle|turtles]], using &amp;quot;rednet&amp;quot; commands.&lt;br /&gt;
To place a modem on a side of your console, click on the console with the right mouse button while sneaking (with standard settings: holding the left shift button).&lt;br /&gt;
&lt;br /&gt;
It is also possible to turn the modem on and off by typing &amp;quot;rednet.open ( side )&amp;quot; to open and &amp;quot;rednet.close ( side )&amp;quot; to close.&lt;br /&gt;
&lt;br /&gt;
Modems can send messages to other modems located up to 64 metres away, or 17 metres during a thunderstorm.[http://www.computercraft.info/forums2/index.php?/topic/464-wireless-distance/page__hl__distance__fromsearch__1]&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
* Place 2 consoles and add modems to them by clicking the right mouse button while sneaking.&lt;br /&gt;
* Access them, and start Lua.&lt;br /&gt;
* Once Lua has started, type &amp;quot;rednet.open (&amp;quot;&amp;lt;relative location to modem, e.g. left, right&amp;gt;&amp;quot;)&amp;quot; on both consoles.&lt;br /&gt;
* Check if there exists a connection: a dim, red light should be found on the modem.&lt;br /&gt;
* Type on one console &amp;quot;rednet.receive (60)&amp;quot;. This will make the console freeze for 60 seconds, or until it has received a signal from the other console.&lt;br /&gt;
* Now, type &amp;quot;rednet.broadcast ('&amp;lt;your message&amp;gt;')&amp;quot; on the other console. This should send your message to all consoles connected.&lt;br /&gt;
* Opening the first console should show the message written on the second console.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Rednet (API)|More help on Rednet]]&lt;/div&gt;</summary>
		<author><name>Wukl</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Os.clock&amp;diff=1815</id>
		<title>Os.clock</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Os.clock&amp;diff=1815"/>
				<updated>2012-06-24T14:24:52Z</updated>
		
		<summary type="html">&lt;p&gt;Wukl: Undo revision 1799 by 37.59.80.67 (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{lowercase}}&lt;br /&gt;
{{Function&lt;br /&gt;
|name=os.clock&lt;br /&gt;
|returns=[[float (type)|float]], amount of time the computercraft computer has been running.&lt;br /&gt;
|api=os&lt;br /&gt;
|addon=ComputerCraft&lt;br /&gt;
|desc=Returns the amount of time the computer craft computer has been running, note that this may not be the amount of time the program has been running. the function os.clock() is useful for debugging, see the example.&lt;br /&gt;
|examples=&lt;br /&gt;
{{Example&lt;br /&gt;
|desc=Measure how long a custom function takes to execute&lt;br /&gt;
|code=x = os.clock() -- compensates for time already passed&amp;lt;br /&amp;gt;myfunction() -- function to be tested&amp;lt;br /&amp;gt;y = (os.clock() - x) -- calculates time change&amp;lt;br /&amp;gt;print(y)&lt;br /&gt;
|output=Time it took to run myFunction()&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Wukl</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Bit.blshift&amp;diff=1814</id>
		<title>Bit.blshift</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Bit.blshift&amp;diff=1814"/>
				<updated>2012-06-24T14:23:10Z</updated>
		
		<summary type="html">&lt;p&gt;Wukl: Undo revision 1809 by 37.59.80.67 (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{lowercase}}&lt;br /&gt;
{{Function&lt;br /&gt;
|name=bit.blshift&lt;br /&gt;
|args=[[int (type)|int]] n, [[int (type)|int]] bits&lt;br /&gt;
|api=bit&lt;br /&gt;
|returns=[[int]] the value of &amp;lt;var&amp;gt;n&amp;lt;/var&amp;gt; shifted left by &amp;lt;var&amp;gt;bits&amp;lt;/var&amp;gt; bits, which is equivalent to &amp;lt;var&amp;gt;n&amp;lt;/var&amp;gt;×2&amp;lt;sup&amp;gt;&amp;lt;var&amp;gt;bits&amp;lt;/var&amp;gt;&amp;lt;/sup&amp;gt;&lt;br /&gt;
|addon=ComputerCraft&lt;br /&gt;
|desc=Shifts a number left by a specified number of bits&lt;br /&gt;
|examples=&lt;br /&gt;
{{Example&lt;br /&gt;
|desc=Shift the number 18 (10010) left by 2 bits, yielding 72 (1001000)&lt;br /&gt;
|code=print(bit.blshift(18, 2))&lt;br /&gt;
|output=72&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Wukl</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=CCGPU&amp;diff=1813</id>
		<title>CCGPU</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=CCGPU&amp;diff=1813"/>
				<updated>2012-06-24T14:22:29Z</updated>
		
		<summary type="html">&lt;p&gt;Wukl: Blanked the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Wukl</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Redstone&amp;diff=1812</id>
		<title>Redstone</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Redstone&amp;diff=1812"/>
				<updated>2012-06-24T13:29:50Z</updated>
		
		<summary type="html">&lt;p&gt;Wukl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;See the Minecraft Wiki for more information about redstone.&lt;/div&gt;</summary>
		<author><name>Wukl</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=User:Wukl&amp;diff=1810</id>
		<title>User:Wukl</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=User:Wukl&amp;diff=1810"/>
				<updated>2012-06-24T12:06:27Z</updated>
		
		<summary type="html">&lt;p&gt;Wukl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi.&lt;br /&gt;
I'm Wukl, a (somewhat nerdy) programmer from The Netherlands.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
I'm an irregular contributor to the wiki, meaning that I contribute when I have time. Maybe I'll stop contributing at one moment and never come back. I don't know.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
See you next time! (Maybe ;-) )&lt;br /&gt;
&lt;br /&gt;
== Mah Libraries ==&lt;br /&gt;
=== Decimal to 7-segment decoder ===&lt;br /&gt;
The decoder assumes that the computer uses RedPower wires, connected to lamps as shown:&lt;br /&gt;
[http://banaanvraag.co.cc/pg/8.png Colour key]&lt;br /&gt;
The colours are white, orange, magenta, light blue, yellow, lime and pink in clockwise, inwards spiraling order.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sevenSeg = {63, 18, 79, 102, 109, 125, 7, 127, 111, 119, 121, 112, 57, 80, 96, 88}&lt;br /&gt;
function decode(_sSide, _iNum)&lt;br /&gt;
    rs.setBundledOutput(_sSide, sevenSeg[_iNum])&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wukl</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Rednet_(API)&amp;diff=1806</id>
		<title>Rednet (API)</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Rednet_(API)&amp;diff=1806"/>
				<updated>2012-06-24T11:34:52Z</updated>
		
		<summary type="html">&lt;p&gt;Wukl: Fixed formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The rednet API provides a simple computer networking model over RedPower bundled cables or the Wireless Modems of Computercraft 1.3.&amp;lt;br /&amp;gt;&lt;br /&gt;
With the table below, 'side' refers to a string that represents a side of the computer (&amp;quot;front&amp;quot;, &amp;quot;back&amp;quot;, &amp;quot;left&amp;quot;, &amp;quot;right&amp;quot;, &amp;quot;bottom&amp;quot;, &amp;quot;top&amp;quot;). All message sent with rednet are and must be strings.&lt;br /&gt;
&lt;br /&gt;
==Methods==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!style=&amp;quot;background:#EEE&amp;quot; width=&amp;quot;200px&amp;quot;|Method name&lt;br /&gt;
!style=&amp;quot;background:#EEE&amp;quot; width=&amp;quot;*&amp;quot;|Description&lt;br /&gt;
!style=&amp;quot;background:#EEE&amp;quot; width=&amp;quot;80px&amp;quot;|Return type&lt;br /&gt;
|-&lt;br /&gt;
|[[rednet.open|rednet.open]](side)&lt;br /&gt;
|Tells the computer that the side can be used for networking.&lt;br /&gt;
|nil&lt;br /&gt;
|-&lt;br /&gt;
|[[rednet.close]](side)&lt;br /&gt;
|Tells the computer that the side can no longer be used for networking.&lt;br /&gt;
|nil&lt;br /&gt;
|-&lt;br /&gt;
|[[rednet.announce]]()&lt;br /&gt;
|Broadcasts an empty rednet message.&lt;br /&gt;
|nil&lt;br /&gt;
|-&lt;br /&gt;
|[[rednet.send]](receiverID, message)&lt;br /&gt;
|Sends a message to the computer using the opened sides. The receiver ID is the ID (number, not string) of the computer you're sending the message to.&lt;br /&gt;
|success&lt;br /&gt;
|-&lt;br /&gt;
|[[rednet.broadcast]](message)&lt;br /&gt;
|Sends the message to ALL connected and open computers.&lt;br /&gt;
|success&lt;br /&gt;
|-&lt;br /&gt;
|[[rednet.receive]](timeout)&lt;br /&gt;
|Waits until it received a rednet message or &amp;lt;var&amp;gt;timeout&amp;lt;/var&amp;gt; has passed. Leave args empty to wait for a message forever.&lt;br /&gt;
|senderId, message, distance&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Events==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!style=&amp;quot;background:#EEE&amp;quot; width=&amp;quot;200px&amp;quot;|Method name&lt;br /&gt;
!style=&amp;quot;background:#EEE&amp;quot; width=&amp;quot;*&amp;quot;|Description&lt;br /&gt;
!style=&amp;quot;background:#EEE&amp;quot; width=&amp;quot;*&amp;quot;|Parameters&lt;br /&gt;
|-&lt;br /&gt;
|rednet_message&lt;br /&gt;
|Fired when a rednet message is received (can be used as alternative for rednet.receive())&lt;br /&gt;
|senderId, message, distance&lt;br /&gt;
[[Category:APIs]]&lt;/div&gt;</summary>
		<author><name>Wukl</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Category:Templates&amp;diff=1805</id>
		<title>Category:Templates</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Category:Templates&amp;diff=1805"/>
				<updated>2012-06-24T11:21:29Z</updated>
		
		<summary type="html">&lt;p&gt;Wukl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Due to a templating bug all functions became listed here. It's fixed now, but the list stays here for some reason.&lt;/div&gt;</summary>
		<author><name>Wukl</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Template:Function&amp;diff=1804</id>
		<title>Template:Function</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Template:Function&amp;diff=1804"/>
				<updated>2012-06-24T11:20:21Z</updated>
		
		<summary type="html">&lt;p&gt;Wukl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;table style=&amp;quot;width: 70%; border: solid 2px black; margin: 2px; padding: .3em; border-spacing: 0px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;font-weight: bold; font-size: large; padding-bottom: .3em; border-bottom: solid black 1px;&amp;quot;&amp;gt;Function {{{name}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr style=&amp;quot;background-color: #E8E8E8;&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;border-right: solid black 1px; padding: .2em; width: 10%; font-weight: bold;&amp;quot;&amp;gt;Syntax&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-color: black; padding: .2em; padding-left: .4em;&amp;quot;&amp;gt;{{{name}}}({{{args|}}})&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr style=&amp;quot;background-color: #FFFFFF;&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;border-right: solid black 1px; padding: .2em; width: 10%; font-weight: bold;&amp;quot;&amp;gt;Returns&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-color: black; padding: .2em; padding-left: .4em;&amp;quot;&amp;gt;{{{returns|[[nil]]}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr style=&amp;quot;background-color: #E8E8E8;&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;border-right: solid black 1px; padding: .2em; width: 10%; font-weight: bold;&amp;quot;&amp;gt;Part of&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-color: black; padding: .2em; padding-left: .4em;&amp;quot;&amp;gt;[[{{{addon|ComputerCraft}}}]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr style=&amp;quot;background-color: #FFFFFF;&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;border-right: solid black 1px; padding: .2em; width: 10%; font-weight: bold;&amp;quot;&amp;gt;API&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-color: black; padding: .2em; padding-left: .4em;&amp;quot;&amp;gt;[[{{{api}}} (API)|{{{api}}}]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr style=&amp;quot;background-color: #E8E8E8;&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;border-right: solid black 1px; padding: .2em; width: 10%; font-weight: bold;&amp;quot;&amp;gt;Description&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-color: black; padding: .2em; padding-left: .4em;&amp;quot;&amp;gt;{{{desc|No description provided.}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#if:{{{examples|}}}|&lt;br /&gt;
== Examples ==&lt;br /&gt;
{{{examples|}}}&lt;br /&gt;
|}}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{{notes|}}}|&lt;br /&gt;
== Additional Notes ==&lt;br /&gt;
{{{notes}}}&lt;br /&gt;
|}}&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
== Wiki code ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{Function&lt;br /&gt;
 |name=redstone.setOutput&lt;br /&gt;
 |args=[[string]] side, [[boolean]] value&lt;br /&gt;
 |api=redstone&lt;br /&gt;
 |returns=[[nil]]&lt;br /&gt;
 |addon=ComputerCraft&lt;br /&gt;
 |desc=Sets a redstone output&lt;br /&gt;
 |examples=Examples go here&lt;br /&gt;
 |notes=&lt;br /&gt;
 * Note 1&lt;br /&gt;
 * Note 2&lt;br /&gt;
 }}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that ''args'', ''returns'', ''addon'', ''examples'' and ''notes'' are optional.&lt;br /&gt;
&lt;br /&gt;
== Result ==&lt;br /&gt;
{{Function&lt;br /&gt;
|name=redstone.setOutput&lt;br /&gt;
|args=[[string]] side, [[boolean]] value&lt;br /&gt;
|api=redstone&lt;br /&gt;
|returns=[[nil]]&lt;br /&gt;
|addon=ComputerCraft&lt;br /&gt;
|desc=Sets a redstone output&lt;br /&gt;
|examples=Examples go here&lt;br /&gt;
|notes=&lt;br /&gt;
* Note 1&lt;br /&gt;
* Note 2&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Templates]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wukl</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Http.post&amp;diff=1803</id>
		<title>Http.post</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Http.post&amp;diff=1803"/>
				<updated>2012-06-24T11:19:38Z</updated>
		
		<summary type="html">&lt;p&gt;Wukl: Created page with &amp;quot;{{lowercase}} {{Function |name=http.post |args=string url, string post |api=HTTP |returns=The response of the server or nil on failure. |addon=ComputerCraft }}&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{lowercase}}&lt;br /&gt;
{{Function&lt;br /&gt;
|name=http.post&lt;br /&gt;
|args=[[string]] url, [[string]] post&lt;br /&gt;
|api=HTTP&lt;br /&gt;
|returns=The response of the server or nil on failure.&lt;br /&gt;
|addon=ComputerCraft&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Wukl</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Http.get&amp;diff=1802</id>
		<title>Http.get</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Http.get&amp;diff=1802"/>
				<updated>2012-06-24T10:45:18Z</updated>
		
		<summary type="html">&lt;p&gt;Wukl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{lowercase}}&lt;br /&gt;
{{Function&lt;br /&gt;
|name=http.get&lt;br /&gt;
|args=[[string]] url&lt;br /&gt;
|api=HTTP&lt;br /&gt;
|returns=The response of the server or nil on failure.&lt;br /&gt;
|addon=ComputerCraft&lt;br /&gt;
|examples=&lt;br /&gt;
===Basic usage===&lt;br /&gt;
{{Example&lt;br /&gt;
|desc=Gets the content of example.com (in HTML)&lt;br /&gt;
|code=local sExample = http.get(&amp;quot;http://example.com/&amp;quot;)&amp;lt;br /&amp;gt;write(sExample)&lt;br /&gt;
|output=The source of example.com&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Wukl</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Http.request&amp;diff=1801</id>
		<title>Http.request</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Http.request&amp;diff=1801"/>
				<updated>2012-06-24T10:44:43Z</updated>
		
		<summary type="html">&lt;p&gt;Wukl: oops, wrong page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Wukl</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Http.request&amp;diff=1800</id>
		<title>Http.request</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Http.request&amp;diff=1800"/>
				<updated>2012-06-24T10:43:52Z</updated>
		
		<summary type="html">&lt;p&gt;Wukl: Created page with &amp;quot;{{lowercase}} {{Function |name=http.request |args=string url |api=HTTP |returns=The response of the server or nil on failure. |addon=ComputerCraft |examples= ===Basic usag...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{lowercase}}&lt;br /&gt;
{{Function&lt;br /&gt;
|name=http.request&lt;br /&gt;
|args=[[string]] url&lt;br /&gt;
|api=HTTP&lt;br /&gt;
|returns=The response of the server or nil on failure.&lt;br /&gt;
|addon=ComputerCraft&lt;br /&gt;
|examples=&lt;br /&gt;
===Basic usage===&lt;br /&gt;
{{Example&lt;br /&gt;
|desc=Gets the content of example.com (in HTML)&lt;br /&gt;
|code=local sExample = http.get(&amp;quot;http://example.com/&amp;quot;)&amp;lt;br /&amp;gt;write(sExample)&lt;br /&gt;
|output=The source of example.com&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Wukl</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=User:Wukl&amp;diff=1504</id>
		<title>User:Wukl</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=User:Wukl&amp;diff=1504"/>
				<updated>2012-05-08T20:54:41Z</updated>
		
		<summary type="html">&lt;p&gt;Wukl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi.&lt;br /&gt;
I'm Wukl, a (somewhat nerdy) programmer from The Netherlands.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
I'm an irregular contributor to the wiki, meaning that I contribute when I have time. Maybe I'll stop contributing at one moment and never come back. I don't know.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
See you next time! (Maybe ;-) )&lt;/div&gt;</summary>
		<author><name>Wukl</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Redstone.setBundledOutput&amp;diff=1313</id>
		<title>Redstone.setBundledOutput</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Redstone.setBundledOutput&amp;diff=1313"/>
				<updated>2012-04-17T19:37:37Z</updated>
		
		<summary type="html">&lt;p&gt;Wukl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{lowercase}}&lt;br /&gt;
{{Function&lt;br /&gt;
|name=redstone.setBundledOutput&lt;br /&gt;
|args=[[string]] side, [[int]] colors&lt;br /&gt;
|api=redstone&lt;br /&gt;
|returns=?&lt;br /&gt;
|addon=ComputerCraft&lt;br /&gt;
|examples=&lt;br /&gt;
===Basic usage===&lt;br /&gt;
{{Example&lt;br /&gt;
|desc=Toggles between the black and white wires every two seconds&lt;br /&gt;
|code=while(true) do&amp;lt;br /&amp;gt;    redstone.setBundledOutput(&amp;quot;back&amp;quot;, colors.black)&amp;lt;br /&amp;gt;    sleep(2)&amp;lt;br /&amp;gt;    redstone.setBundledOutput(&amp;quot;back&amp;quot;, colors.white)&amp;lt;br /&amp;gt;    sleep(2)&amp;lt;br /&amp;gt;end&lt;br /&gt;
|output=(nothing on the screen)&lt;br /&gt;
}}&lt;br /&gt;
===Combining outputs===&lt;br /&gt;
The value is passed as an integer, so sending multiple colors is as easy as adding them together:&lt;br /&gt;
{{Example&lt;br /&gt;
|desc=Toggles between the black/white and red/blue wires every two seconds&lt;br /&gt;
|code=while(true) do&amp;lt;br /&amp;gt;    redstone.setBundledOutput(&amp;quot;back&amp;quot;, colors.black+colors.white)&amp;lt;br /&amp;gt;    sleep(2)&amp;lt;br /&amp;gt;    redstone.setBundledOutput(&amp;quot;back&amp;quot;, colors.red+colors.blue)&amp;lt;br /&amp;gt;    sleep(2)&amp;lt;br /&amp;gt;end&lt;br /&gt;
|output=(nothing on the screen)&lt;br /&gt;
}}&lt;br /&gt;
===Clearing the output===&lt;br /&gt;
{{Example&lt;br /&gt;
|desc=Unsets the output (removes all power)&lt;br /&gt;
|code=function unsetAll(sSide)&amp;lt;br /&amp;gt;    redstone.setBundledOutput(sSide, 0)&amp;lt;br /&amp;gt;end&lt;br /&gt;
|output=(nothing on the screen)&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Wukl</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Redstone.setBundledOutput&amp;diff=1312</id>
		<title>Redstone.setBundledOutput</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Redstone.setBundledOutput&amp;diff=1312"/>
				<updated>2012-04-17T19:36:18Z</updated>
		
		<summary type="html">&lt;p&gt;Wukl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{lowercase}}&lt;br /&gt;
{{Function&lt;br /&gt;
|name=redstone.setBundledOutput&lt;br /&gt;
|args=[[string]] side, [[int]] colors&lt;br /&gt;
|api=redstone&lt;br /&gt;
|returns=?&lt;br /&gt;
|addon=ComputerCraft&lt;br /&gt;
|examples=&lt;br /&gt;
{{Example&lt;br /&gt;
|desc=Toggles between the black and white wires every two seconds&lt;br /&gt;
|code=while(true) do&amp;lt;br /&amp;gt;    redstone.setBundledOutput(&amp;quot;back&amp;quot;, colors.black)&amp;lt;br /&amp;gt;    sleep(2)&amp;lt;br /&amp;gt;    redstone.setBundledOutput(&amp;quot;back&amp;quot;, colors.white)&amp;lt;br /&amp;gt;    sleep(2)&amp;lt;br /&amp;gt;end&lt;br /&gt;
|output=(nothing on the screen)&lt;br /&gt;
}}&lt;br /&gt;
The value is passed as an integer, so sending multiple colors is as easy as adding them together:&lt;br /&gt;
{{Example&lt;br /&gt;
|desc=Toggles between the black/white and red/blue wires every two seconds&lt;br /&gt;
|code=while(true) do&amp;lt;br /&amp;gt;    redstone.setBundledOutput(&amp;quot;back&amp;quot;, colors.black+colors.white)&amp;lt;br /&amp;gt;    sleep(2)&amp;lt;br /&amp;gt;    redstone.setBundledOutput(&amp;quot;back&amp;quot;, colors.red+colors.blue)&amp;lt;br /&amp;gt;    sleep(2)&amp;lt;br /&amp;gt;end&lt;br /&gt;
|output=(nothing on the screen)&lt;br /&gt;
}}&lt;br /&gt;
{{Example&lt;br /&gt;
|desc=Unsets the output (removes all power)&lt;br /&gt;
|code=function unsetAll(sSide)&amp;lt;br /&amp;gt;    redstone.setBundledOutput(sSide, 0)&amp;lt;br /&amp;gt;end&lt;br /&gt;
|output=(nothing on the screen)&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Wukl</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Raw_key_events&amp;diff=1266</id>
		<title>Raw key events</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Raw_key_events&amp;diff=1266"/>
				<updated>2012-04-12T18:00:32Z</updated>
		
		<summary type="html">&lt;p&gt;Wukl: Undo revision 1265 by Wukl (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The built-in os has a function to read incoming keystrokes. But it also implements the functions to move the cursor while typing. This is not always a desired feature; imagine a case in which you want to make a menu with a controllable cursor around the menu entries. The current read() function won't let you.&lt;br /&gt;
&lt;br /&gt;
==Detecting keystrokes==&lt;br /&gt;
In case I made you think the os sucks, it doesn't (all the time). Because this os is not Windows, we can access lower-level functions, such as os.pullEvent(). And that's the one that we're going to use:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function rawread()&lt;br /&gt;
    bRead = true&lt;br /&gt;
    while(bRead)&lt;br /&gt;
        local sEvent, param = os.pullEvent(&amp;quot;key&amp;quot;)&lt;br /&gt;
        if(sEvent == &amp;quot;key&amp;quot;) then&lt;br /&gt;
            break&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This function waits for any key, then exits.&lt;br /&gt;
&lt;br /&gt;
==Figuring out the key==&lt;br /&gt;
We can detect any key, but not which key. To find it out, we have to add some further logic to the code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function rawread()&lt;br /&gt;
    bRead = true&lt;br /&gt;
    while(bRead)&lt;br /&gt;
        local sEvent, param = os.pullEvent(&amp;quot;key&amp;quot;)&lt;br /&gt;
        if(sEvent == &amp;quot;key&amp;quot;) then&lt;br /&gt;
            if(param == 28) then&lt;br /&gt;
                print(&amp;quot;Enter detected&amp;quot;)&lt;br /&gt;
                break&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This function waits for the Enter key to be pressed. If so, it writes &amp;quot;Enter detected&amp;quot; to the screen and exits.&lt;br /&gt;
&lt;br /&gt;
==Key scan codes ==&lt;br /&gt;
The scan codes are typical DirectX numbers.&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;vertical-align: top&amp;quot;|&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! |Key&lt;br /&gt;
! |Code&lt;br /&gt;
|-&lt;br /&gt;
| Escape&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| 6&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| 8&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| 10&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 11&lt;br /&gt;
|-&lt;br /&gt;
| Minus&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Equals&lt;br /&gt;
| 13&lt;br /&gt;
|-&lt;br /&gt;
| Backspace&lt;br /&gt;
| 14&lt;br /&gt;
|-&lt;br /&gt;
| Tab&lt;br /&gt;
| 15&lt;br /&gt;
|-&lt;br /&gt;
| Q&lt;br /&gt;
| 16&lt;br /&gt;
|-&lt;br /&gt;
| W&lt;br /&gt;
| 17&lt;br /&gt;
|-&lt;br /&gt;
| E&lt;br /&gt;
| 18&lt;br /&gt;
|-&lt;br /&gt;
| R&lt;br /&gt;
| 19&lt;br /&gt;
|-&lt;br /&gt;
| T&lt;br /&gt;
| 20&lt;br /&gt;
|-&lt;br /&gt;
| Y&lt;br /&gt;
| 21&lt;br /&gt;
|-&lt;br /&gt;
| U&lt;br /&gt;
| 22&lt;br /&gt;
|-&lt;br /&gt;
| I&lt;br /&gt;
| 23&lt;br /&gt;
|-&lt;br /&gt;
| O&lt;br /&gt;
| 24&lt;br /&gt;
|-&lt;br /&gt;
| P&lt;br /&gt;
| 25&lt;br /&gt;
|}&lt;br /&gt;
|style=&amp;quot;vertical-align: top&amp;quot;|&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! |Key&lt;br /&gt;
! |Code&lt;br /&gt;
|-&lt;br /&gt;
| Left Bracket&lt;br /&gt;
| 26&lt;br /&gt;
|-&lt;br /&gt;
| Right Bracket&lt;br /&gt;
| 27&lt;br /&gt;
|-&lt;br /&gt;
| Enter&lt;br /&gt;
| 28&lt;br /&gt;
|-&lt;br /&gt;
| Left Control&lt;br /&gt;
| 29&lt;br /&gt;
|-&lt;br /&gt;
| A&lt;br /&gt;
| 30&lt;br /&gt;
|- &lt;br /&gt;
| S&lt;br /&gt;
| 31&lt;br /&gt;
|-&lt;br /&gt;
| D&lt;br /&gt;
| 32&lt;br /&gt;
|-&lt;br /&gt;
| F&lt;br /&gt;
| 33&lt;br /&gt;
|-&lt;br /&gt;
| G&lt;br /&gt;
| 34&lt;br /&gt;
|-&lt;br /&gt;
| H&lt;br /&gt;
| 35&lt;br /&gt;
|-&lt;br /&gt;
| J&lt;br /&gt;
| 36&lt;br /&gt;
|-&lt;br /&gt;
| K&lt;br /&gt;
| 37&lt;br /&gt;
|-&lt;br /&gt;
| L&lt;br /&gt;
| 38&lt;br /&gt;
|-&lt;br /&gt;
| Semicolon&lt;br /&gt;
| 39&lt;br /&gt;
|-&lt;br /&gt;
| Apostrophe&lt;br /&gt;
| 40&lt;br /&gt;
|-&lt;br /&gt;
| Tilde (~)&lt;br /&gt;
| 41&lt;br /&gt;
|-&lt;br /&gt;
| Left Shift&lt;br /&gt;
| 42&lt;br /&gt;
|-&lt;br /&gt;
| Back Slash&lt;br /&gt;
| 43&lt;br /&gt;
|-&lt;br /&gt;
| Z&lt;br /&gt;
| 44&lt;br /&gt;
|-&lt;br /&gt;
| X&lt;br /&gt;
| 45&lt;br /&gt;
|-&lt;br /&gt;
| C&lt;br /&gt;
| 46&lt;br /&gt;
|-&lt;br /&gt;
| V&lt;br /&gt;
| 47&lt;br /&gt;
|}&lt;br /&gt;
|style=&amp;quot;vertical-align: top&amp;quot;|&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! |Key&lt;br /&gt;
! |Code&lt;br /&gt;
|-&lt;br /&gt;
| B&lt;br /&gt;
| 48&lt;br /&gt;
|-&lt;br /&gt;
| N&lt;br /&gt;
| 49&lt;br /&gt;
|-&lt;br /&gt;
| M&lt;br /&gt;
| 50&lt;br /&gt;
|-&lt;br /&gt;
| Comma&lt;br /&gt;
| 51&lt;br /&gt;
|-&lt;br /&gt;
| Period&lt;br /&gt;
| 52&lt;br /&gt;
|-&lt;br /&gt;
| Forward Slash&lt;br /&gt;
| 53&lt;br /&gt;
|-&lt;br /&gt;
| Right Shift&lt;br /&gt;
| 54&lt;br /&gt;
|-&lt;br /&gt;
| Numpad *&lt;br /&gt;
| 55&lt;br /&gt;
|-&lt;br /&gt;
| Left Alt&lt;br /&gt;
| 56&lt;br /&gt;
|-&lt;br /&gt;
| Spacebar&lt;br /&gt;
| 57&lt;br /&gt;
|-&lt;br /&gt;
| Caps Lock&lt;br /&gt;
| 58&lt;br /&gt;
|-&lt;br /&gt;
| F1&lt;br /&gt;
| 59&lt;br /&gt;
|-&lt;br /&gt;
| F2&lt;br /&gt;
| 60&lt;br /&gt;
|-&lt;br /&gt;
| F3&lt;br /&gt;
| 61&lt;br /&gt;
|-&lt;br /&gt;
| F4&lt;br /&gt;
| 62&lt;br /&gt;
|-&lt;br /&gt;
| F5&lt;br /&gt;
| 63&lt;br /&gt;
|-&lt;br /&gt;
| F6&lt;br /&gt;
| 64&lt;br /&gt;
|-&lt;br /&gt;
| F7&lt;br /&gt;
| 65&lt;br /&gt;
|-&lt;br /&gt;
| F8&lt;br /&gt;
| 66&lt;br /&gt;
|-&lt;br /&gt;
| F9&lt;br /&gt;
| 67&lt;br /&gt;
|-&lt;br /&gt;
| F10&lt;br /&gt;
| 68&lt;br /&gt;
|}&lt;br /&gt;
|style=&amp;quot;vertical-align: top&amp;quot;|&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! |Key&lt;br /&gt;
! |Code&lt;br /&gt;
|-&lt;br /&gt;
| Num Lock&lt;br /&gt;
| 69&lt;br /&gt;
|-&lt;br /&gt;
| Scroll Lock&lt;br /&gt;
| 70&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 7&lt;br /&gt;
| 71&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 8&lt;br /&gt;
| 72&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 9&lt;br /&gt;
| 73&lt;br /&gt;
|-&lt;br /&gt;
| Numpad -&lt;br /&gt;
| 74&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 4&lt;br /&gt;
| 75&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 5&lt;br /&gt;
| 76&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 6&lt;br /&gt;
| 77&lt;br /&gt;
|-&lt;br /&gt;
| Numpad +&lt;br /&gt;
| 78&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 1&lt;br /&gt;
| 79&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 2&lt;br /&gt;
| 80&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 3&lt;br /&gt;
| 81&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 0&lt;br /&gt;
| 82&lt;br /&gt;
|-&lt;br /&gt;
| Numpad .&lt;br /&gt;
| 83&lt;br /&gt;
|-&lt;br /&gt;
| F11&lt;br /&gt;
| 87&lt;br /&gt;
|-&lt;br /&gt;
| F12&lt;br /&gt;
| 88&lt;br /&gt;
|-&lt;br /&gt;
| Numpad Enter&lt;br /&gt;
| 156&lt;br /&gt;
|-&lt;br /&gt;
| Right Control&lt;br /&gt;
| 157&lt;br /&gt;
|-&lt;br /&gt;
| Numpad /&lt;br /&gt;
| 181&lt;br /&gt;
|-&lt;br /&gt;
| Right Alt&lt;br /&gt;
| 184&lt;br /&gt;
|}&lt;br /&gt;
|style=&amp;quot;vertical-align: top&amp;quot;|&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! |Key&lt;br /&gt;
! |Code&lt;br /&gt;
|-&lt;br /&gt;
| Home&lt;br /&gt;
| 199&lt;br /&gt;
|-&lt;br /&gt;
| Up Arrow&lt;br /&gt;
| 200&lt;br /&gt;
|-&lt;br /&gt;
| Page Up&lt;br /&gt;
| 201&lt;br /&gt;
|-&lt;br /&gt;
| Left Arrow&lt;br /&gt;
| 203&lt;br /&gt;
|-&lt;br /&gt;
| Right Arrow&lt;br /&gt;
| 205&lt;br /&gt;
|-&lt;br /&gt;
| End&lt;br /&gt;
| 207&lt;br /&gt;
|-&lt;br /&gt;
| Down Arrow&lt;br /&gt;
| 208&lt;br /&gt;
|-&lt;br /&gt;
| Page Down&lt;br /&gt;
| 209&lt;br /&gt;
|-&lt;br /&gt;
| Insert&lt;br /&gt;
| 210&lt;br /&gt;
|-&lt;br /&gt;
| Delete&lt;br /&gt;
| 211&lt;br /&gt;
|-&lt;br /&gt;
| Left Mouse Button&lt;br /&gt;
| 256&lt;br /&gt;
|-&lt;br /&gt;
| Right Mouse Button&lt;br /&gt;
| 257&lt;br /&gt;
|-&lt;br /&gt;
| Middle Mouse/Wheel&lt;br /&gt;
| 258&lt;br /&gt;
|-&lt;br /&gt;
| Mouse Button 3&lt;br /&gt;
| 259&lt;br /&gt;
|-&lt;br /&gt;
| Mouse Button 4&lt;br /&gt;
| 260&lt;br /&gt;
|-&lt;br /&gt;
| Mouse Button 5&lt;br /&gt;
| 261&lt;br /&gt;
|-&lt;br /&gt;
| Mouse Button 6&lt;br /&gt;
| 262&lt;br /&gt;
|-&lt;br /&gt;
| Mouse Button 7&lt;br /&gt;
| 263&lt;br /&gt;
|-&lt;br /&gt;
| Mouse Wheel Up&lt;br /&gt;
| 264&lt;br /&gt;
|-&lt;br /&gt;
| Mouse Wheel Down&lt;br /&gt;
| 265&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
Source: [http://wiki.tesnexus.com/index.php/DirectX_Scancodes_And_How_To_Use_Them Nexus Wiki]&lt;br /&gt;
&lt;br /&gt;
====Author(s)====&lt;br /&gt;
They deserve credit!&lt;br /&gt;
*Initial page - [[User:Wukl|Wukl]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Wukl</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Raw_key_events&amp;diff=1265</id>
		<title>Raw key events</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Raw_key_events&amp;diff=1265"/>
				<updated>2012-04-12T17:59:06Z</updated>
		
		<summary type="html">&lt;p&gt;Wukl: Replaced &amp;lt;pre&amp;gt; by &amp;lt;code&amp;gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The built-in os has a function to read incoming keystrokes. But it also implements the functions to move the cursor while typing. This is not always a desired feature; imagine a case in which you want to make a menu with a controllable cursor around the menu entries. The current read() function won't let you.&lt;br /&gt;
&lt;br /&gt;
==Detecting keystrokes==&lt;br /&gt;
In case I made you think the os sucks, it doesn't (all the time). Because this os is not Windows, we can access lower-level functions, such as os.pullEvent(). And that's the one that we're going to use:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
function rawread()&lt;br /&gt;
    bRead = true&lt;br /&gt;
    while(bRead)&lt;br /&gt;
        local sEvent, param = os.pullEvent(&amp;quot;key&amp;quot;)&lt;br /&gt;
        if(sEvent == &amp;quot;key&amp;quot;) then&lt;br /&gt;
            break&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
This function waits for any key, then exits.&lt;br /&gt;
&lt;br /&gt;
==Figuring out the key==&lt;br /&gt;
We can detect any key, but not which key. To find it out, we have to add some further logic to the code:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
function rawread()&lt;br /&gt;
    bRead = true&lt;br /&gt;
    while(bRead)&lt;br /&gt;
        local sEvent, param = os.pullEvent(&amp;quot;key&amp;quot;)&lt;br /&gt;
        if(sEvent == &amp;quot;key&amp;quot;) then&lt;br /&gt;
            if(param == 28) then&lt;br /&gt;
                print(&amp;quot;Enter detected&amp;quot;)&lt;br /&gt;
                break&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
This function waits for the Enter key to be pressed. If so, it writes &amp;quot;Enter detected&amp;quot; to the screen and exits.&lt;br /&gt;
&lt;br /&gt;
==Key scan codes ==&lt;br /&gt;
The scan codes are typical DirectX numbers.&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;vertical-align: top&amp;quot;|&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! |Key&lt;br /&gt;
! |Code&lt;br /&gt;
|-&lt;br /&gt;
| Escape&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| 6&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| 8&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| 10&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 11&lt;br /&gt;
|-&lt;br /&gt;
| Minus&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Equals&lt;br /&gt;
| 13&lt;br /&gt;
|-&lt;br /&gt;
| Backspace&lt;br /&gt;
| 14&lt;br /&gt;
|-&lt;br /&gt;
| Tab&lt;br /&gt;
| 15&lt;br /&gt;
|-&lt;br /&gt;
| Q&lt;br /&gt;
| 16&lt;br /&gt;
|-&lt;br /&gt;
| W&lt;br /&gt;
| 17&lt;br /&gt;
|-&lt;br /&gt;
| E&lt;br /&gt;
| 18&lt;br /&gt;
|-&lt;br /&gt;
| R&lt;br /&gt;
| 19&lt;br /&gt;
|-&lt;br /&gt;
| T&lt;br /&gt;
| 20&lt;br /&gt;
|-&lt;br /&gt;
| Y&lt;br /&gt;
| 21&lt;br /&gt;
|-&lt;br /&gt;
| U&lt;br /&gt;
| 22&lt;br /&gt;
|-&lt;br /&gt;
| I&lt;br /&gt;
| 23&lt;br /&gt;
|-&lt;br /&gt;
| O&lt;br /&gt;
| 24&lt;br /&gt;
|-&lt;br /&gt;
| P&lt;br /&gt;
| 25&lt;br /&gt;
|}&lt;br /&gt;
|style=&amp;quot;vertical-align: top&amp;quot;|&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! |Key&lt;br /&gt;
! |Code&lt;br /&gt;
|-&lt;br /&gt;
| Left Bracket&lt;br /&gt;
| 26&lt;br /&gt;
|-&lt;br /&gt;
| Right Bracket&lt;br /&gt;
| 27&lt;br /&gt;
|-&lt;br /&gt;
| Enter&lt;br /&gt;
| 28&lt;br /&gt;
|-&lt;br /&gt;
| Left Control&lt;br /&gt;
| 29&lt;br /&gt;
|-&lt;br /&gt;
| A&lt;br /&gt;
| 30&lt;br /&gt;
|- &lt;br /&gt;
| S&lt;br /&gt;
| 31&lt;br /&gt;
|-&lt;br /&gt;
| D&lt;br /&gt;
| 32&lt;br /&gt;
|-&lt;br /&gt;
| F&lt;br /&gt;
| 33&lt;br /&gt;
|-&lt;br /&gt;
| G&lt;br /&gt;
| 34&lt;br /&gt;
|-&lt;br /&gt;
| H&lt;br /&gt;
| 35&lt;br /&gt;
|-&lt;br /&gt;
| J&lt;br /&gt;
| 36&lt;br /&gt;
|-&lt;br /&gt;
| K&lt;br /&gt;
| 37&lt;br /&gt;
|-&lt;br /&gt;
| L&lt;br /&gt;
| 38&lt;br /&gt;
|-&lt;br /&gt;
| Semicolon&lt;br /&gt;
| 39&lt;br /&gt;
|-&lt;br /&gt;
| Apostrophe&lt;br /&gt;
| 40&lt;br /&gt;
|-&lt;br /&gt;
| Tilde (~)&lt;br /&gt;
| 41&lt;br /&gt;
|-&lt;br /&gt;
| Left Shift&lt;br /&gt;
| 42&lt;br /&gt;
|-&lt;br /&gt;
| Back Slash&lt;br /&gt;
| 43&lt;br /&gt;
|-&lt;br /&gt;
| Z&lt;br /&gt;
| 44&lt;br /&gt;
|-&lt;br /&gt;
| X&lt;br /&gt;
| 45&lt;br /&gt;
|-&lt;br /&gt;
| C&lt;br /&gt;
| 46&lt;br /&gt;
|-&lt;br /&gt;
| V&lt;br /&gt;
| 47&lt;br /&gt;
|}&lt;br /&gt;
|style=&amp;quot;vertical-align: top&amp;quot;|&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! |Key&lt;br /&gt;
! |Code&lt;br /&gt;
|-&lt;br /&gt;
| B&lt;br /&gt;
| 48&lt;br /&gt;
|-&lt;br /&gt;
| N&lt;br /&gt;
| 49&lt;br /&gt;
|-&lt;br /&gt;
| M&lt;br /&gt;
| 50&lt;br /&gt;
|-&lt;br /&gt;
| Comma&lt;br /&gt;
| 51&lt;br /&gt;
|-&lt;br /&gt;
| Period&lt;br /&gt;
| 52&lt;br /&gt;
|-&lt;br /&gt;
| Forward Slash&lt;br /&gt;
| 53&lt;br /&gt;
|-&lt;br /&gt;
| Right Shift&lt;br /&gt;
| 54&lt;br /&gt;
|-&lt;br /&gt;
| Numpad *&lt;br /&gt;
| 55&lt;br /&gt;
|-&lt;br /&gt;
| Left Alt&lt;br /&gt;
| 56&lt;br /&gt;
|-&lt;br /&gt;
| Spacebar&lt;br /&gt;
| 57&lt;br /&gt;
|-&lt;br /&gt;
| Caps Lock&lt;br /&gt;
| 58&lt;br /&gt;
|-&lt;br /&gt;
| F1&lt;br /&gt;
| 59&lt;br /&gt;
|-&lt;br /&gt;
| F2&lt;br /&gt;
| 60&lt;br /&gt;
|-&lt;br /&gt;
| F3&lt;br /&gt;
| 61&lt;br /&gt;
|-&lt;br /&gt;
| F4&lt;br /&gt;
| 62&lt;br /&gt;
|-&lt;br /&gt;
| F5&lt;br /&gt;
| 63&lt;br /&gt;
|-&lt;br /&gt;
| F6&lt;br /&gt;
| 64&lt;br /&gt;
|-&lt;br /&gt;
| F7&lt;br /&gt;
| 65&lt;br /&gt;
|-&lt;br /&gt;
| F8&lt;br /&gt;
| 66&lt;br /&gt;
|-&lt;br /&gt;
| F9&lt;br /&gt;
| 67&lt;br /&gt;
|-&lt;br /&gt;
| F10&lt;br /&gt;
| 68&lt;br /&gt;
|}&lt;br /&gt;
|style=&amp;quot;vertical-align: top&amp;quot;|&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! |Key&lt;br /&gt;
! |Code&lt;br /&gt;
|-&lt;br /&gt;
| Num Lock&lt;br /&gt;
| 69&lt;br /&gt;
|-&lt;br /&gt;
| Scroll Lock&lt;br /&gt;
| 70&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 7&lt;br /&gt;
| 71&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 8&lt;br /&gt;
| 72&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 9&lt;br /&gt;
| 73&lt;br /&gt;
|-&lt;br /&gt;
| Numpad -&lt;br /&gt;
| 74&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 4&lt;br /&gt;
| 75&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 5&lt;br /&gt;
| 76&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 6&lt;br /&gt;
| 77&lt;br /&gt;
|-&lt;br /&gt;
| Numpad +&lt;br /&gt;
| 78&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 1&lt;br /&gt;
| 79&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 2&lt;br /&gt;
| 80&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 3&lt;br /&gt;
| 81&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 0&lt;br /&gt;
| 82&lt;br /&gt;
|-&lt;br /&gt;
| Numpad .&lt;br /&gt;
| 83&lt;br /&gt;
|-&lt;br /&gt;
| F11&lt;br /&gt;
| 87&lt;br /&gt;
|-&lt;br /&gt;
| F12&lt;br /&gt;
| 88&lt;br /&gt;
|-&lt;br /&gt;
| Numpad Enter&lt;br /&gt;
| 156&lt;br /&gt;
|-&lt;br /&gt;
| Right Control&lt;br /&gt;
| 157&lt;br /&gt;
|-&lt;br /&gt;
| Numpad /&lt;br /&gt;
| 181&lt;br /&gt;
|-&lt;br /&gt;
| Right Alt&lt;br /&gt;
| 184&lt;br /&gt;
|}&lt;br /&gt;
|style=&amp;quot;vertical-align: top&amp;quot;|&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! |Key&lt;br /&gt;
! |Code&lt;br /&gt;
|-&lt;br /&gt;
| Home&lt;br /&gt;
| 199&lt;br /&gt;
|-&lt;br /&gt;
| Up Arrow&lt;br /&gt;
| 200&lt;br /&gt;
|-&lt;br /&gt;
| Page Up&lt;br /&gt;
| 201&lt;br /&gt;
|-&lt;br /&gt;
| Left Arrow&lt;br /&gt;
| 203&lt;br /&gt;
|-&lt;br /&gt;
| Right Arrow&lt;br /&gt;
| 205&lt;br /&gt;
|-&lt;br /&gt;
| End&lt;br /&gt;
| 207&lt;br /&gt;
|-&lt;br /&gt;
| Down Arrow&lt;br /&gt;
| 208&lt;br /&gt;
|-&lt;br /&gt;
| Page Down&lt;br /&gt;
| 209&lt;br /&gt;
|-&lt;br /&gt;
| Insert&lt;br /&gt;
| 210&lt;br /&gt;
|-&lt;br /&gt;
| Delete&lt;br /&gt;
| 211&lt;br /&gt;
|-&lt;br /&gt;
| Left Mouse Button&lt;br /&gt;
| 256&lt;br /&gt;
|-&lt;br /&gt;
| Right Mouse Button&lt;br /&gt;
| 257&lt;br /&gt;
|-&lt;br /&gt;
| Middle Mouse/Wheel&lt;br /&gt;
| 258&lt;br /&gt;
|-&lt;br /&gt;
| Mouse Button 3&lt;br /&gt;
| 259&lt;br /&gt;
|-&lt;br /&gt;
| Mouse Button 4&lt;br /&gt;
| 260&lt;br /&gt;
|-&lt;br /&gt;
| Mouse Button 5&lt;br /&gt;
| 261&lt;br /&gt;
|-&lt;br /&gt;
| Mouse Button 6&lt;br /&gt;
| 262&lt;br /&gt;
|-&lt;br /&gt;
| Mouse Button 7&lt;br /&gt;
| 263&lt;br /&gt;
|-&lt;br /&gt;
| Mouse Wheel Up&lt;br /&gt;
| 264&lt;br /&gt;
|-&lt;br /&gt;
| Mouse Wheel Down&lt;br /&gt;
| 265&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
Source: [http://wiki.tesnexus.com/index.php/DirectX_Scancodes_And_How_To_Use_Them Nexus Wiki]&lt;br /&gt;
&lt;br /&gt;
====Author(s)====&lt;br /&gt;
They deserve credit!&lt;br /&gt;
*Initial page - [[User:Wukl|Wukl]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Wukl</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Raw_key_events&amp;diff=1264</id>
		<title>Raw key events</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Raw_key_events&amp;diff=1264"/>
				<updated>2012-04-11T08:28:45Z</updated>
		
		<summary type="html">&lt;p&gt;Wukl: Function declaration added at second bit of code&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The built-in os has a function to read incoming keystrokes. But it also implements the functions to move the cursor while typing. This is not always a desired feature; imagine a case in which you want to make a menu with a controllable cursor around the menu entries. The current read() function won't let you.&lt;br /&gt;
&lt;br /&gt;
==Detecting keystrokes==&lt;br /&gt;
In case I made you think the os sucks, it doesn't (all the time). Because this os is not Windows, we can access lower-level functions, such as os.pullEvent(). And that's the one that we're going to use:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function rawread()&lt;br /&gt;
    bRead = true&lt;br /&gt;
    while(bRead)&lt;br /&gt;
        local sEvent, param = os.pullEvent(&amp;quot;key&amp;quot;)&lt;br /&gt;
        if(sEvent == &amp;quot;key&amp;quot;) then&lt;br /&gt;
            break&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This function waits for any key, then exits.&lt;br /&gt;
&lt;br /&gt;
==Figuring out the key==&lt;br /&gt;
We can detect any key, but not which key. To find it out, we have to add some further logic to the code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function rawread()&lt;br /&gt;
    bRead = true&lt;br /&gt;
    while(bRead)&lt;br /&gt;
        local sEvent, param = os.pullEvent(&amp;quot;key&amp;quot;)&lt;br /&gt;
        if(sEvent == &amp;quot;key&amp;quot;) then&lt;br /&gt;
            if(param == 28) then&lt;br /&gt;
                print(&amp;quot;Enter detected&amp;quot;)&lt;br /&gt;
                break&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This function waits for the Enter key to be pressed. If so, it writes &amp;quot;Enter detected&amp;quot; to the screen and exits.&lt;br /&gt;
&lt;br /&gt;
==Key scan codes ==&lt;br /&gt;
The scan codes are typical DirectX numbers.&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;vertical-align: top&amp;quot;|&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! |Key&lt;br /&gt;
! |Code&lt;br /&gt;
|-&lt;br /&gt;
| Escape&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| 6&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| 8&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| 10&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 11&lt;br /&gt;
|-&lt;br /&gt;
| Minus&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Equals&lt;br /&gt;
| 13&lt;br /&gt;
|-&lt;br /&gt;
| Backspace&lt;br /&gt;
| 14&lt;br /&gt;
|-&lt;br /&gt;
| Tab&lt;br /&gt;
| 15&lt;br /&gt;
|-&lt;br /&gt;
| Q&lt;br /&gt;
| 16&lt;br /&gt;
|-&lt;br /&gt;
| W&lt;br /&gt;
| 17&lt;br /&gt;
|-&lt;br /&gt;
| E&lt;br /&gt;
| 18&lt;br /&gt;
|-&lt;br /&gt;
| R&lt;br /&gt;
| 19&lt;br /&gt;
|-&lt;br /&gt;
| T&lt;br /&gt;
| 20&lt;br /&gt;
|-&lt;br /&gt;
| Y&lt;br /&gt;
| 21&lt;br /&gt;
|-&lt;br /&gt;
| U&lt;br /&gt;
| 22&lt;br /&gt;
|-&lt;br /&gt;
| I&lt;br /&gt;
| 23&lt;br /&gt;
|-&lt;br /&gt;
| O&lt;br /&gt;
| 24&lt;br /&gt;
|-&lt;br /&gt;
| P&lt;br /&gt;
| 25&lt;br /&gt;
|}&lt;br /&gt;
|style=&amp;quot;vertical-align: top&amp;quot;|&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! |Key&lt;br /&gt;
! |Code&lt;br /&gt;
|-&lt;br /&gt;
| Left Bracket&lt;br /&gt;
| 26&lt;br /&gt;
|-&lt;br /&gt;
| Right Bracket&lt;br /&gt;
| 27&lt;br /&gt;
|-&lt;br /&gt;
| Enter&lt;br /&gt;
| 28&lt;br /&gt;
|-&lt;br /&gt;
| Left Control&lt;br /&gt;
| 29&lt;br /&gt;
|-&lt;br /&gt;
| A&lt;br /&gt;
| 30&lt;br /&gt;
|- &lt;br /&gt;
| S&lt;br /&gt;
| 31&lt;br /&gt;
|-&lt;br /&gt;
| D&lt;br /&gt;
| 32&lt;br /&gt;
|-&lt;br /&gt;
| F&lt;br /&gt;
| 33&lt;br /&gt;
|-&lt;br /&gt;
| G&lt;br /&gt;
| 34&lt;br /&gt;
|-&lt;br /&gt;
| H&lt;br /&gt;
| 35&lt;br /&gt;
|-&lt;br /&gt;
| J&lt;br /&gt;
| 36&lt;br /&gt;
|-&lt;br /&gt;
| K&lt;br /&gt;
| 37&lt;br /&gt;
|-&lt;br /&gt;
| L&lt;br /&gt;
| 38&lt;br /&gt;
|-&lt;br /&gt;
| Semicolon&lt;br /&gt;
| 39&lt;br /&gt;
|-&lt;br /&gt;
| Apostrophe&lt;br /&gt;
| 40&lt;br /&gt;
|-&lt;br /&gt;
| Tilde (~)&lt;br /&gt;
| 41&lt;br /&gt;
|-&lt;br /&gt;
| Left Shift&lt;br /&gt;
| 42&lt;br /&gt;
|-&lt;br /&gt;
| Back Slash&lt;br /&gt;
| 43&lt;br /&gt;
|-&lt;br /&gt;
| Z&lt;br /&gt;
| 44&lt;br /&gt;
|-&lt;br /&gt;
| X&lt;br /&gt;
| 45&lt;br /&gt;
|-&lt;br /&gt;
| C&lt;br /&gt;
| 46&lt;br /&gt;
|-&lt;br /&gt;
| V&lt;br /&gt;
| 47&lt;br /&gt;
|}&lt;br /&gt;
|style=&amp;quot;vertical-align: top&amp;quot;|&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! |Key&lt;br /&gt;
! |Code&lt;br /&gt;
|-&lt;br /&gt;
| B&lt;br /&gt;
| 48&lt;br /&gt;
|-&lt;br /&gt;
| N&lt;br /&gt;
| 49&lt;br /&gt;
|-&lt;br /&gt;
| M&lt;br /&gt;
| 50&lt;br /&gt;
|-&lt;br /&gt;
| Comma&lt;br /&gt;
| 51&lt;br /&gt;
|-&lt;br /&gt;
| Period&lt;br /&gt;
| 52&lt;br /&gt;
|-&lt;br /&gt;
| Forward Slash&lt;br /&gt;
| 53&lt;br /&gt;
|-&lt;br /&gt;
| Right Shift&lt;br /&gt;
| 54&lt;br /&gt;
|-&lt;br /&gt;
| Numpad *&lt;br /&gt;
| 55&lt;br /&gt;
|-&lt;br /&gt;
| Left Alt&lt;br /&gt;
| 56&lt;br /&gt;
|-&lt;br /&gt;
| Spacebar&lt;br /&gt;
| 57&lt;br /&gt;
|-&lt;br /&gt;
| Caps Lock&lt;br /&gt;
| 58&lt;br /&gt;
|-&lt;br /&gt;
| F1&lt;br /&gt;
| 59&lt;br /&gt;
|-&lt;br /&gt;
| F2&lt;br /&gt;
| 60&lt;br /&gt;
|-&lt;br /&gt;
| F3&lt;br /&gt;
| 61&lt;br /&gt;
|-&lt;br /&gt;
| F4&lt;br /&gt;
| 62&lt;br /&gt;
|-&lt;br /&gt;
| F5&lt;br /&gt;
| 63&lt;br /&gt;
|-&lt;br /&gt;
| F6&lt;br /&gt;
| 64&lt;br /&gt;
|-&lt;br /&gt;
| F7&lt;br /&gt;
| 65&lt;br /&gt;
|-&lt;br /&gt;
| F8&lt;br /&gt;
| 66&lt;br /&gt;
|-&lt;br /&gt;
| F9&lt;br /&gt;
| 67&lt;br /&gt;
|-&lt;br /&gt;
| F10&lt;br /&gt;
| 68&lt;br /&gt;
|}&lt;br /&gt;
|style=&amp;quot;vertical-align: top&amp;quot;|&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! |Key&lt;br /&gt;
! |Code&lt;br /&gt;
|-&lt;br /&gt;
| Num Lock&lt;br /&gt;
| 69&lt;br /&gt;
|-&lt;br /&gt;
| Scroll Lock&lt;br /&gt;
| 70&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 7&lt;br /&gt;
| 71&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 8&lt;br /&gt;
| 72&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 9&lt;br /&gt;
| 73&lt;br /&gt;
|-&lt;br /&gt;
| Numpad -&lt;br /&gt;
| 74&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 4&lt;br /&gt;
| 75&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 5&lt;br /&gt;
| 76&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 6&lt;br /&gt;
| 77&lt;br /&gt;
|-&lt;br /&gt;
| Numpad +&lt;br /&gt;
| 78&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 1&lt;br /&gt;
| 79&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 2&lt;br /&gt;
| 80&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 3&lt;br /&gt;
| 81&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 0&lt;br /&gt;
| 82&lt;br /&gt;
|-&lt;br /&gt;
| Numpad .&lt;br /&gt;
| 83&lt;br /&gt;
|-&lt;br /&gt;
| F11&lt;br /&gt;
| 87&lt;br /&gt;
|-&lt;br /&gt;
| F12&lt;br /&gt;
| 88&lt;br /&gt;
|-&lt;br /&gt;
| Numpad Enter&lt;br /&gt;
| 156&lt;br /&gt;
|-&lt;br /&gt;
| Right Control&lt;br /&gt;
| 157&lt;br /&gt;
|-&lt;br /&gt;
| Numpad /&lt;br /&gt;
| 181&lt;br /&gt;
|-&lt;br /&gt;
| Right Alt&lt;br /&gt;
| 184&lt;br /&gt;
|}&lt;br /&gt;
|style=&amp;quot;vertical-align: top&amp;quot;|&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! |Key&lt;br /&gt;
! |Code&lt;br /&gt;
|-&lt;br /&gt;
| Home&lt;br /&gt;
| 199&lt;br /&gt;
|-&lt;br /&gt;
| Up Arrow&lt;br /&gt;
| 200&lt;br /&gt;
|-&lt;br /&gt;
| Page Up&lt;br /&gt;
| 201&lt;br /&gt;
|-&lt;br /&gt;
| Left Arrow&lt;br /&gt;
| 203&lt;br /&gt;
|-&lt;br /&gt;
| Right Arrow&lt;br /&gt;
| 205&lt;br /&gt;
|-&lt;br /&gt;
| End&lt;br /&gt;
| 207&lt;br /&gt;
|-&lt;br /&gt;
| Down Arrow&lt;br /&gt;
| 208&lt;br /&gt;
|-&lt;br /&gt;
| Page Down&lt;br /&gt;
| 209&lt;br /&gt;
|-&lt;br /&gt;
| Insert&lt;br /&gt;
| 210&lt;br /&gt;
|-&lt;br /&gt;
| Delete&lt;br /&gt;
| 211&lt;br /&gt;
|-&lt;br /&gt;
| Left Mouse Button&lt;br /&gt;
| 256&lt;br /&gt;
|-&lt;br /&gt;
| Right Mouse Button&lt;br /&gt;
| 257&lt;br /&gt;
|-&lt;br /&gt;
| Middle Mouse/Wheel&lt;br /&gt;
| 258&lt;br /&gt;
|-&lt;br /&gt;
| Mouse Button 3&lt;br /&gt;
| 259&lt;br /&gt;
|-&lt;br /&gt;
| Mouse Button 4&lt;br /&gt;
| 260&lt;br /&gt;
|-&lt;br /&gt;
| Mouse Button 5&lt;br /&gt;
| 261&lt;br /&gt;
|-&lt;br /&gt;
| Mouse Button 6&lt;br /&gt;
| 262&lt;br /&gt;
|-&lt;br /&gt;
| Mouse Button 7&lt;br /&gt;
| 263&lt;br /&gt;
|-&lt;br /&gt;
| Mouse Wheel Up&lt;br /&gt;
| 264&lt;br /&gt;
|-&lt;br /&gt;
| Mouse Wheel Down&lt;br /&gt;
| 265&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
Source: [http://wiki.tesnexus.com/index.php/DirectX_Scancodes_And_How_To_Use_Them Nexus Wiki]&lt;br /&gt;
&lt;br /&gt;
====Author(s)====&lt;br /&gt;
They deserve credit!&lt;br /&gt;
*Initial page - [[User:Wukl|Wukl]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Wukl</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Talk:Redstone_(API)&amp;diff=1251</id>
		<title>Talk:Redstone (API)</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Talk:Redstone_(API)&amp;diff=1251"/>
				<updated>2012-04-09T09:12:40Z</updated>
		
		<summary type="html">&lt;p&gt;Wukl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==(Question that should have been asked on the forums)==&lt;br /&gt;
i tried to do it but for some reason it didnt work, i tried:&lt;br /&gt;
&lt;br /&gt;
sleep(5)&amp;lt;br /&amp;gt;&lt;br /&gt;
setBundledOutput(orange,back,magenta)&amp;lt;br /&amp;gt;&lt;br /&gt;
sleep(0.5)&amp;lt;br /&amp;gt;&lt;br /&gt;
setBundledOutput(orange,back,magenta)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
and after the 5 seconds, it puts:&lt;br /&gt;
&amp;quot;redtest:2: attempt to call nil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
how the heck does it work? how can i get it to work? someone plez reply lol, im new to lua so i know very little about lua...&lt;br /&gt;
: First of all, where's the function declaration? You call redtest(), but the error tells that it doesn't exist. Second, use redstone.setBundledOutput() or rs.setBundledOutput(). [[User:Wukl|Wukl]] 09:12, 9 April 2012 (UTC)&lt;/div&gt;</summary>
		<author><name>Wukl</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Os.run&amp;diff=1249</id>
		<title>Os.run</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Os.run&amp;diff=1249"/>
				<updated>2012-04-08T18:39:26Z</updated>
		
		<summary type="html">&lt;p&gt;Wukl: Created page with &amp;quot;{{lowercase}} {{Function |name=os.run |args=metatable envVars, string path, vararg arguments |api=os |returns=false on error, otherwise true |addon=ComputerCraft |...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{lowercase}}&lt;br /&gt;
{{Function&lt;br /&gt;
|name=os.run&lt;br /&gt;
|args=[[metatable]] envVars, [[string]] path, [[vararg]] arguments&lt;br /&gt;
|api=os&lt;br /&gt;
|returns=false on error, otherwise true&lt;br /&gt;
|addon=ComputerCraft&lt;br /&gt;
|examples=&lt;br /&gt;
{{Example&lt;br /&gt;
|desc=Runs the default shell&lt;br /&gt;
|code=os.run({}, &amp;quot;rom/programs/shell&amp;quot;)&lt;br /&gt;
|output=The default shell&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Wukl</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Tutorials&amp;diff=1248</id>
		<title>Tutorials</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Tutorials&amp;diff=1248"/>
				<updated>2012-04-08T18:34:41Z</updated>
		
		<summary type="html">&lt;p&gt;Wukl: Undo revision 1247 by Wukl (talk) Stupid, stupid me.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Look for the [[Getting Started]] guide if this is your first try. As some tutorials might not be listed here, you can also browse the [[:Category:Tutorials|tutorials category]].&lt;br /&gt;
&lt;br /&gt;
=== Basics ===&lt;br /&gt;
Common things that may need some explanation.&lt;br /&gt;
*[[The console and its shell]]&lt;br /&gt;
&lt;br /&gt;
=== Programming &amp;amp; Wiring ===&lt;br /&gt;
*[[Hello_World_Tutorial|Hello World!]]&lt;br /&gt;
*[[Guess_The_Number_(tutorial)|Guess the Number]]&lt;br /&gt;
*[[Making_a_Password_Protected_Door|Password Protected Door]]&lt;br /&gt;
*[[Making_an_API_(tutorial)|Programming an API]]&lt;br /&gt;
*[[Startup|Running script automatically at boot with Startup]]&lt;br /&gt;
*[[Raw key events| Detecting specific keys (such as the arrow keys)]]&lt;br /&gt;
=== Turtles ===&lt;br /&gt;
The nice little robots that do the hard work for you.&lt;br /&gt;
*[[Turtle_Tutorial|Turtles!]]&lt;br /&gt;
*[[Turtle_Lumberjack_(tutorial)|Turtle Lumberjack]]&lt;br /&gt;
*[[Advanced_Turtle_Lumberjack_(tutorial)|Advanced Turtle Lumberjack]]&lt;br /&gt;
*[[Cobble_Generator|Cobblestone Generator]]&lt;br /&gt;
*[[Turtle_Stairbuilder_(tutorial)|Turtle Stairbuilder]]&lt;/div&gt;</summary>
		<author><name>Wukl</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Tutorials&amp;diff=1247</id>
		<title>Tutorials</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Tutorials&amp;diff=1247"/>
				<updated>2012-04-08T18:24:11Z</updated>
		
		<summary type="html">&lt;p&gt;Wukl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Look for the [[Getting Started]] guide if this is your first try. As some tutorials might not be listed here, you can also browse the [[:Category:Tutorials|tutorials category]].&lt;br /&gt;
&lt;br /&gt;
=== Basics ===&lt;br /&gt;
Common things that may need some explanation.&lt;br /&gt;
*[[The console and its shell]]&lt;br /&gt;
&lt;br /&gt;
=== Programming &amp;amp; Wiring ===&lt;br /&gt;
*[[Hello_World_Tutorial|Hello World!]]&lt;br /&gt;
*[[Guess_The_Number_(tutorial)|Guess the Number]]&lt;br /&gt;
*[[Making_a_Password_Protected_Door|Password Protected Door]]&lt;br /&gt;
*[[Cobble_Generator|Automated Cobblestone Generator]]&lt;br /&gt;
*[[Making_an_API_(tutorial)|Programming an API]]&lt;br /&gt;
*[[Startup|Running script automatically at boot with Startup]]&lt;br /&gt;
*[[Raw key events| Detecting specific keys (such as the arrow keys)]]&lt;br /&gt;
=== Turtles ===&lt;br /&gt;
The nice little robots that do the hard work for you.&lt;br /&gt;
*[[Turtle_Tutorial|Turtles!]]&lt;br /&gt;
*[[Turtle_Lumberjack_(tutorial)|Turtle Lumberjack]]&lt;br /&gt;
*[[Advanced_Turtle_Lumberjack_(tutorial)|Advanced Turtle Lumberjack]]&lt;br /&gt;
*[[Cobble_Generator|Cobblestone Generator]]&lt;br /&gt;
*[[Turtle_Stairbuilder_(tutorial)|Turtle Stairbuilder]]&lt;/div&gt;</summary>
		<author><name>Wukl</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=ComputerCraft_Wiki:Community_portal&amp;diff=1246</id>
		<title>ComputerCraft Wiki:Community portal</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=ComputerCraft_Wiki:Community_portal&amp;diff=1246"/>
				<updated>2012-04-08T18:20:43Z</updated>
		
		<summary type="html">&lt;p&gt;Wukl: Created page with &amp;quot;See [http://computercraft.info/forums2/ the forums] for help.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;See [http://computercraft.info/forums2/ the forums] for help.&lt;/div&gt;</summary>
		<author><name>Wukl</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Talk:ComputerCraft_Wiki:Mainpage&amp;diff=1245</id>
		<title>Talk:ComputerCraft Wiki:Mainpage</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Talk:ComputerCraft_Wiki:Mainpage&amp;diff=1245"/>
				<updated>2012-04-08T18:18:36Z</updated>
		
		<summary type="html">&lt;p&gt;Wukl: Out of date&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Wukl</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=ComputerCraft&amp;diff=1244</id>
		<title>ComputerCraft</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=ComputerCraft&amp;diff=1244"/>
				<updated>2012-04-08T18:12:28Z</updated>
		
		<summary type="html">&lt;p&gt;Wukl: Redirected page to ComputerCraft Wiki - Home&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[ComputerCraft Wiki - Home]]&lt;/div&gt;</summary>
		<author><name>Wukl</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=User:Wukl&amp;diff=1243</id>
		<title>User:Wukl</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=User:Wukl&amp;diff=1243"/>
				<updated>2012-04-08T18:11:36Z</updated>
		
		<summary type="html">&lt;p&gt;Wukl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi.&lt;br /&gt;
I'm Wukl, a (somewhat nerdy) programmer from the Netherlands.&lt;br /&gt;
&lt;br /&gt;
One day, I came here to find some information about this mod. It took me a while.&lt;br /&gt;
So, after a little time, I decided that I, without any permission, overhauled the wiki. And it worked. Soon, even more people came by and added even more pages. I loved that moment.&lt;br /&gt;
&lt;br /&gt;
Well, that's it! :-)&lt;/div&gt;</summary>
		<author><name>Wukl</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Template:Changelog&amp;diff=1242</id>
		<title>Template:Changelog</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Template:Changelog&amp;diff=1242"/>
				<updated>2012-04-08T14:10:01Z</updated>
		
		<summary type="html">&lt;p&gt;Wukl: Fixed space error (at least, in Dutch - spatiefout), shutdown -&amp;gt; shut down&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 15%&amp;quot; | Version&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | New Features or Changes&lt;br /&gt;
! style=&amp;quot;width: 15%&amp;quot; | Minecraft Version&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | ComputerCraft 1.32&lt;br /&gt;
|&lt;br /&gt;
*Ported to Minecraft 1.2.4&lt;br /&gt;
*Fixed a big memory leak in LuaJ that caused extra threads to stay around forever when computers were shut down.&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot;  | 1.2.3&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | ComputerCraft 1.31&lt;br /&gt;
|&lt;br /&gt;
*Ported to Minecraft 1.2.3&lt;br /&gt;
*Added Monitors (thanks to Cloudy). Build huge external displays for your computers!&lt;br /&gt;
*New positioning capabilities for computers and turtles. Build GPS networks and triangulate the positions of your turtles position so they never get lost!&lt;br /&gt;
*New turtle.compare() function for turtles for more intelligent mining.&lt;br /&gt;
*New programs and APIs: gps, monitor, vector&lt;br /&gt;
*New program: pastebin (requires enableAPI_HTTP=1 in mod_ComputerCraft.cfg), upload and download programs made by other users ingame!&lt;br /&gt;
*Added a new top secret program designed for use with Monitors, see if you can find it.&lt;br /&gt;
*Lots of additions to existing APIs and programs. Type &amp;quot;help whatsnew&amp;quot; in game for the full details.&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot;  | 1.2.3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | ComputerCraft 1.3&lt;br /&gt;
|&lt;br /&gt;
*Ported to Minecraft Forge.&lt;br /&gt;
*Added Turtles, Mining Turtles, Wireless Turtles and Wireless Mining Turtles (Block ID 209).&lt;br /&gt;
*Added a Peripheral API to allow mod developers to create custom peripherals for ComputerCraft. Details on this will be posted in the next few days.&lt;br /&gt;
*Added Wireless Modems. Use the rednet API to send data wirelessly between computers and turtles!&lt;br /&gt;
*Computers and Disk Drives no longer get destroyed by water.&lt;br /&gt;
*Computers and Turtles can now be labelled, destroyed, and moved around, keeping their state.&lt;br /&gt;
*Computers and Turtles can connect to adjacent devices, and turn them on or off.&lt;br /&gt;
*User programs now give line numbers in their error messages, for easier debugging.&lt;br /&gt;
*New APIs and programs for Turtles: turtle, excavate, tunnel, go, turn and dance.&lt;br /&gt;
*Lots of additions to existing APIs and programs. Type &amp;quot;help whatsnew&amp;quot; in game for the full details.&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot;  | 1.1&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | ComputerCraft 1.21&lt;br /&gt;
|&lt;br /&gt;
*Added shortcut key to shutdown the computer.&lt;br /&gt;
*Added a help API add-on pack.&lt;br /&gt;
*Various bug fixes.&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot;  | 1.1&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | ComputerCraft 1.2&lt;br /&gt;
|&lt;br /&gt;
*Added Disk Drives&lt;br /&gt;
*Added shortcut keys to terminate the current program and reboot the computer.&lt;br /&gt;
*Added a new system for user created APIs.&lt;br /&gt;
*Added RedNet.&lt;br /&gt;
*Added shell.setPath() and shell.setAlias().&lt;br /&gt;
*Added a new ROM startup script.&lt;br /&gt;
*Added os.clock(), os.time(), and os.setAlarm().&lt;br /&gt;
*Added game: &amp;quot;Worm!&amp;quot;&lt;br /&gt;
*Added programs: alias, apis, copy, delete, dj, drive, eject, id, label, list, move, reboot, redset, rename, time, worm.&lt;br /&gt;
*Added APIs: bit, colours, disk, help, rednet, parallel, textutils&lt;br /&gt;
*Text can be edited with left and right arrow keys.&lt;br /&gt;
*Many bug fixes&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot;  | 1.0&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | ComputerCraft 1.11&lt;br /&gt;
|&lt;br /&gt;
*Fixed bug where [[Console|Computers]] could not read input from RedPower cables which had a bend in the immediately adjacent square.&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot;  | 1.0&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | ComputerCraft 1.1&lt;br /&gt;
|&lt;br /&gt;
*Changed the default block ID for the [[Console|Computer]] to 207.&lt;br /&gt;
*Added multiplayer support.&lt;br /&gt;
*Added connectivity with RedPower bundled cables.&lt;br /&gt;
*Added HTTP API&lt;br /&gt;
*Fixed support for HD textures on the front of [[Console|Computers]].&lt;br /&gt;
*Added command history to the [[Console]].&lt;br /&gt;
*Added config options to change the size of the [[Console]] GUI and the text color.&lt;br /&gt;
*Programs with infinite loops that don't yield will no longer freeze Minecraft and will terminate after 10 seconds.&lt;br /&gt;
*Extended Help and fixed typos/small errors in various programs.&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot;  | 1.0&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | ComputerCraft 1.02&lt;br /&gt;
|&lt;br /&gt;
*Fixed the MCPatcher HD textures incompatibility that was causing the computer texture to replace cobblestone blocks.&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot;  | 1.0&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | ComputerCraft 1.01&lt;br /&gt;
|&lt;br /&gt;
*Added a ModLoader configuration file, so the computers block ID can be changed.&lt;br /&gt;
*Made the error message that displays when Lua files are not correctly installed much more clear, no more &amp;quot;Assertion failed.&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot;  | 1.0&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | ComputerCraft 1.0&lt;br /&gt;
|&lt;br /&gt;
*First Release&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot;  | 1.0&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Wukl</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Raw_key_events&amp;diff=1241</id>
		<title>Raw key events</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Raw_key_events&amp;diff=1241"/>
				<updated>2012-04-08T14:04:05Z</updated>
		
		<summary type="html">&lt;p&gt;Wukl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The built-in os has a function to read incoming keystrokes. But it also implements the functions to move the cursor while typing. This is not always a desired feature; imagine a case in which you want to make a menu with a controllable cursor around the menu entries. The current read() function won't let you.&lt;br /&gt;
&lt;br /&gt;
==Detecting keystrokes==&lt;br /&gt;
In case I made you think the os sucks, it doesn't (all the time). Because this os is not Windows, we can access lower-level functions, such as os.pullEvent(). And that's the one that we're going to use:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function rawread()&lt;br /&gt;
    bRead = true&lt;br /&gt;
    while(bRead)&lt;br /&gt;
        local sEvent, param = os.pullEvent(&amp;quot;key&amp;quot;)&lt;br /&gt;
        if(sEvent == &amp;quot;key&amp;quot;) then&lt;br /&gt;
            break&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This function waits for any key, then exits.&lt;br /&gt;
&lt;br /&gt;
==Figuring out the key==&lt;br /&gt;
We can detect any key, but not which key. To find it out, we have to add some further logic to the code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    bRead = true&lt;br /&gt;
    while(bRead)&lt;br /&gt;
        local sEvent, param = os.pullEvent(&amp;quot;key&amp;quot;)&lt;br /&gt;
        if(sEvent == &amp;quot;key&amp;quot;) then&lt;br /&gt;
            if(param == 28) then&lt;br /&gt;
                print(&amp;quot;Enter detected&amp;quot;)&lt;br /&gt;
                break&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This function waits for the Enter key to be pressed. If so, it writes &amp;quot;Enter detected&amp;quot; to the screen and exits.&lt;br /&gt;
&lt;br /&gt;
==Key scan codes ==&lt;br /&gt;
The scan codes are typical DirectX numbers.&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;vertical-align: top&amp;quot;|&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! |Key&lt;br /&gt;
! |Code&lt;br /&gt;
|-&lt;br /&gt;
| Escape&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| 6&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| 8&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| 10&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 11&lt;br /&gt;
|-&lt;br /&gt;
| Minus&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Equals&lt;br /&gt;
| 13&lt;br /&gt;
|-&lt;br /&gt;
| Backspace&lt;br /&gt;
| 14&lt;br /&gt;
|-&lt;br /&gt;
| Tab&lt;br /&gt;
| 15&lt;br /&gt;
|-&lt;br /&gt;
| Q&lt;br /&gt;
| 16&lt;br /&gt;
|-&lt;br /&gt;
| W&lt;br /&gt;
| 17&lt;br /&gt;
|-&lt;br /&gt;
| E&lt;br /&gt;
| 18&lt;br /&gt;
|-&lt;br /&gt;
| R&lt;br /&gt;
| 19&lt;br /&gt;
|-&lt;br /&gt;
| T&lt;br /&gt;
| 20&lt;br /&gt;
|-&lt;br /&gt;
| Y&lt;br /&gt;
| 21&lt;br /&gt;
|-&lt;br /&gt;
| U&lt;br /&gt;
| 22&lt;br /&gt;
|-&lt;br /&gt;
| I&lt;br /&gt;
| 23&lt;br /&gt;
|-&lt;br /&gt;
| O&lt;br /&gt;
| 24&lt;br /&gt;
|-&lt;br /&gt;
| P&lt;br /&gt;
| 25&lt;br /&gt;
|}&lt;br /&gt;
|style=&amp;quot;vertical-align: top&amp;quot;|&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! |Key&lt;br /&gt;
! |Code&lt;br /&gt;
|-&lt;br /&gt;
| Left Bracket&lt;br /&gt;
| 26&lt;br /&gt;
|-&lt;br /&gt;
| Right Bracket&lt;br /&gt;
| 27&lt;br /&gt;
|-&lt;br /&gt;
| Enter&lt;br /&gt;
| 28&lt;br /&gt;
|-&lt;br /&gt;
| Left Control&lt;br /&gt;
| 29&lt;br /&gt;
|-&lt;br /&gt;
| A&lt;br /&gt;
| 30&lt;br /&gt;
|- &lt;br /&gt;
| S&lt;br /&gt;
| 31&lt;br /&gt;
|-&lt;br /&gt;
| D&lt;br /&gt;
| 32&lt;br /&gt;
|-&lt;br /&gt;
| F&lt;br /&gt;
| 33&lt;br /&gt;
|-&lt;br /&gt;
| G&lt;br /&gt;
| 34&lt;br /&gt;
|-&lt;br /&gt;
| H&lt;br /&gt;
| 35&lt;br /&gt;
|-&lt;br /&gt;
| J&lt;br /&gt;
| 36&lt;br /&gt;
|-&lt;br /&gt;
| K&lt;br /&gt;
| 37&lt;br /&gt;
|-&lt;br /&gt;
| L&lt;br /&gt;
| 38&lt;br /&gt;
|-&lt;br /&gt;
| Semicolon&lt;br /&gt;
| 39&lt;br /&gt;
|-&lt;br /&gt;
| Apostrophe&lt;br /&gt;
| 40&lt;br /&gt;
|-&lt;br /&gt;
| Tilde (~)&lt;br /&gt;
| 41&lt;br /&gt;
|-&lt;br /&gt;
| Left Shift&lt;br /&gt;
| 42&lt;br /&gt;
|-&lt;br /&gt;
| Back Slash&lt;br /&gt;
| 43&lt;br /&gt;
|-&lt;br /&gt;
| Z&lt;br /&gt;
| 44&lt;br /&gt;
|-&lt;br /&gt;
| X&lt;br /&gt;
| 45&lt;br /&gt;
|-&lt;br /&gt;
| C&lt;br /&gt;
| 46&lt;br /&gt;
|-&lt;br /&gt;
| V&lt;br /&gt;
| 47&lt;br /&gt;
|}&lt;br /&gt;
|style=&amp;quot;vertical-align: top&amp;quot;|&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! |Key&lt;br /&gt;
! |Code&lt;br /&gt;
|-&lt;br /&gt;
| B&lt;br /&gt;
| 48&lt;br /&gt;
|-&lt;br /&gt;
| N&lt;br /&gt;
| 49&lt;br /&gt;
|-&lt;br /&gt;
| M&lt;br /&gt;
| 50&lt;br /&gt;
|-&lt;br /&gt;
| Comma&lt;br /&gt;
| 51&lt;br /&gt;
|-&lt;br /&gt;
| Period&lt;br /&gt;
| 52&lt;br /&gt;
|-&lt;br /&gt;
| Forward Slash&lt;br /&gt;
| 53&lt;br /&gt;
|-&lt;br /&gt;
| Right Shift&lt;br /&gt;
| 54&lt;br /&gt;
|-&lt;br /&gt;
| Numpad *&lt;br /&gt;
| 55&lt;br /&gt;
|-&lt;br /&gt;
| Left Alt&lt;br /&gt;
| 56&lt;br /&gt;
|-&lt;br /&gt;
| Spacebar&lt;br /&gt;
| 57&lt;br /&gt;
|-&lt;br /&gt;
| Caps Lock&lt;br /&gt;
| 58&lt;br /&gt;
|-&lt;br /&gt;
| F1&lt;br /&gt;
| 59&lt;br /&gt;
|-&lt;br /&gt;
| F2&lt;br /&gt;
| 60&lt;br /&gt;
|-&lt;br /&gt;
| F3&lt;br /&gt;
| 61&lt;br /&gt;
|-&lt;br /&gt;
| F4&lt;br /&gt;
| 62&lt;br /&gt;
|-&lt;br /&gt;
| F5&lt;br /&gt;
| 63&lt;br /&gt;
|-&lt;br /&gt;
| F6&lt;br /&gt;
| 64&lt;br /&gt;
|-&lt;br /&gt;
| F7&lt;br /&gt;
| 65&lt;br /&gt;
|-&lt;br /&gt;
| F8&lt;br /&gt;
| 66&lt;br /&gt;
|-&lt;br /&gt;
| F9&lt;br /&gt;
| 67&lt;br /&gt;
|-&lt;br /&gt;
| F10&lt;br /&gt;
| 68&lt;br /&gt;
|}&lt;br /&gt;
|style=&amp;quot;vertical-align: top&amp;quot;|&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! |Key&lt;br /&gt;
! |Code&lt;br /&gt;
|-&lt;br /&gt;
| Num Lock&lt;br /&gt;
| 69&lt;br /&gt;
|-&lt;br /&gt;
| Scroll Lock&lt;br /&gt;
| 70&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 7&lt;br /&gt;
| 71&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 8&lt;br /&gt;
| 72&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 9&lt;br /&gt;
| 73&lt;br /&gt;
|-&lt;br /&gt;
| Numpad -&lt;br /&gt;
| 74&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 4&lt;br /&gt;
| 75&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 5&lt;br /&gt;
| 76&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 6&lt;br /&gt;
| 77&lt;br /&gt;
|-&lt;br /&gt;
| Numpad +&lt;br /&gt;
| 78&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 1&lt;br /&gt;
| 79&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 2&lt;br /&gt;
| 80&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 3&lt;br /&gt;
| 81&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 0&lt;br /&gt;
| 82&lt;br /&gt;
|-&lt;br /&gt;
| Numpad .&lt;br /&gt;
| 83&lt;br /&gt;
|-&lt;br /&gt;
| F11&lt;br /&gt;
| 87&lt;br /&gt;
|-&lt;br /&gt;
| F12&lt;br /&gt;
| 88&lt;br /&gt;
|-&lt;br /&gt;
| Numpad Enter&lt;br /&gt;
| 156&lt;br /&gt;
|-&lt;br /&gt;
| Right Control&lt;br /&gt;
| 157&lt;br /&gt;
|-&lt;br /&gt;
| Numpad /&lt;br /&gt;
| 181&lt;br /&gt;
|-&lt;br /&gt;
| Right Alt&lt;br /&gt;
| 184&lt;br /&gt;
|}&lt;br /&gt;
|style=&amp;quot;vertical-align: top&amp;quot;|&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! |Key&lt;br /&gt;
! |Code&lt;br /&gt;
|-&lt;br /&gt;
| Home&lt;br /&gt;
| 199&lt;br /&gt;
|-&lt;br /&gt;
| Up Arrow&lt;br /&gt;
| 200&lt;br /&gt;
|-&lt;br /&gt;
| Page Up&lt;br /&gt;
| 201&lt;br /&gt;
|-&lt;br /&gt;
| Left Arrow&lt;br /&gt;
| 203&lt;br /&gt;
|-&lt;br /&gt;
| Right Arrow&lt;br /&gt;
| 205&lt;br /&gt;
|-&lt;br /&gt;
| End&lt;br /&gt;
| 207&lt;br /&gt;
|-&lt;br /&gt;
| Down Arrow&lt;br /&gt;
| 208&lt;br /&gt;
|-&lt;br /&gt;
| Page Down&lt;br /&gt;
| 209&lt;br /&gt;
|-&lt;br /&gt;
| Insert&lt;br /&gt;
| 210&lt;br /&gt;
|-&lt;br /&gt;
| Delete&lt;br /&gt;
| 211&lt;br /&gt;
|-&lt;br /&gt;
| Left Mouse Button&lt;br /&gt;
| 256&lt;br /&gt;
|-&lt;br /&gt;
| Right Mouse Button&lt;br /&gt;
| 257&lt;br /&gt;
|-&lt;br /&gt;
| Middle Mouse/Wheel&lt;br /&gt;
| 258&lt;br /&gt;
|-&lt;br /&gt;
| Mouse Button 3&lt;br /&gt;
| 259&lt;br /&gt;
|-&lt;br /&gt;
| Mouse Button 4&lt;br /&gt;
| 260&lt;br /&gt;
|-&lt;br /&gt;
| Mouse Button 5&lt;br /&gt;
| 261&lt;br /&gt;
|-&lt;br /&gt;
| Mouse Button 6&lt;br /&gt;
| 262&lt;br /&gt;
|-&lt;br /&gt;
| Mouse Button 7&lt;br /&gt;
| 263&lt;br /&gt;
|-&lt;br /&gt;
| Mouse Wheel Up&lt;br /&gt;
| 264&lt;br /&gt;
|-&lt;br /&gt;
| Mouse Wheel Down&lt;br /&gt;
| 265&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
Source: [http://wiki.tesnexus.com/index.php/DirectX_Scancodes_And_How_To_Use_Them Nexus Wiki]&lt;br /&gt;
&lt;br /&gt;
====Author(s)====&lt;br /&gt;
They deserve credit!&lt;br /&gt;
*Initial page - [[User:Wukl|Wukl]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Wukl</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Raw_key_events&amp;diff=1240</id>
		<title>Raw key events</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Raw_key_events&amp;diff=1240"/>
				<updated>2012-04-08T14:01:51Z</updated>
		
		<summary type="html">&lt;p&gt;Wukl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The built-in os has a function to read incoming keystrokes. But it also implements the functions to move the cursor while typing. This is not always a desired feature; imagine a case in which you want to make a menu with a controllable cursor around the menu entries. The current read() function won't let you.&lt;br /&gt;
&lt;br /&gt;
==Detecting keystrokes==&lt;br /&gt;
In case I made you think the os sucks, it doesn't (all the time). Because this os is not Windows, we can access lower-level functions, such as os.pullEvent(). And that's the one that we're going to use:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function rawread()&lt;br /&gt;
    bRead = true&lt;br /&gt;
    while(bRead)&lt;br /&gt;
        local sEvent, param = os.pullEvent(&amp;quot;key&amp;quot;)&lt;br /&gt;
        if(sEvent == &amp;quot;key&amp;quot;) then&lt;br /&gt;
            break&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This function waits for any key, then exits.&lt;br /&gt;
&lt;br /&gt;
==Figuring out the key==&lt;br /&gt;
We can detect any key, but not which key. To find it out, we have to add some further logic to the code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    bRead = true&lt;br /&gt;
    while(bRead)&lt;br /&gt;
        local sEvent, param = os.pullEvent(&amp;quot;key&amp;quot;)&lt;br /&gt;
        if(sEvent == &amp;quot;key&amp;quot;) then&lt;br /&gt;
            if(param == 28) then&lt;br /&gt;
                print(&amp;quot;Enter detected&amp;quot;)&lt;br /&gt;
                break&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This function waits for the Enter key to be pressed. If so, it writes &amp;quot;Enter detected&amp;quot; to the screen and exits.&lt;br /&gt;
&lt;br /&gt;
==Key scan codes ==&lt;br /&gt;
The scan codes are typical DirectX numbers.&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;vertical-align: top&amp;quot;|&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! |Key&lt;br /&gt;
! |Code&lt;br /&gt;
|-&lt;br /&gt;
| Escape&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| 6&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| 8&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| 10&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 11&lt;br /&gt;
|-&lt;br /&gt;
| Minus&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Equals&lt;br /&gt;
| 13&lt;br /&gt;
|-&lt;br /&gt;
| Backspace&lt;br /&gt;
| 14&lt;br /&gt;
|-&lt;br /&gt;
| Tab&lt;br /&gt;
| 15&lt;br /&gt;
|-&lt;br /&gt;
| Q&lt;br /&gt;
| 16&lt;br /&gt;
|-&lt;br /&gt;
| W&lt;br /&gt;
| 17&lt;br /&gt;
|-&lt;br /&gt;
| E&lt;br /&gt;
| 18&lt;br /&gt;
|-&lt;br /&gt;
| R&lt;br /&gt;
| 19&lt;br /&gt;
|-&lt;br /&gt;
| T&lt;br /&gt;
| 20&lt;br /&gt;
|-&lt;br /&gt;
| Y&lt;br /&gt;
| 21&lt;br /&gt;
|-&lt;br /&gt;
| U&lt;br /&gt;
| 22&lt;br /&gt;
|-&lt;br /&gt;
| I&lt;br /&gt;
| 23&lt;br /&gt;
|-&lt;br /&gt;
| O&lt;br /&gt;
| 24&lt;br /&gt;
|-&lt;br /&gt;
| P&lt;br /&gt;
| 25&lt;br /&gt;
|}&lt;br /&gt;
|style=&amp;quot;vertical-align: top&amp;quot;|&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! |Key&lt;br /&gt;
! |Code&lt;br /&gt;
|-&lt;br /&gt;
| Left Bracket&lt;br /&gt;
| 26&lt;br /&gt;
|-&lt;br /&gt;
| Right Bracket&lt;br /&gt;
| 27&lt;br /&gt;
|-&lt;br /&gt;
| Enter&lt;br /&gt;
| 28&lt;br /&gt;
|-&lt;br /&gt;
| Left Control&lt;br /&gt;
| 29&lt;br /&gt;
|-&lt;br /&gt;
| A&lt;br /&gt;
| 30&lt;br /&gt;
|- &lt;br /&gt;
| S&lt;br /&gt;
| 31&lt;br /&gt;
|-&lt;br /&gt;
| D&lt;br /&gt;
| 32&lt;br /&gt;
|-&lt;br /&gt;
| F&lt;br /&gt;
| 33&lt;br /&gt;
|-&lt;br /&gt;
| G&lt;br /&gt;
| 34&lt;br /&gt;
|-&lt;br /&gt;
| H&lt;br /&gt;
| 35&lt;br /&gt;
|-&lt;br /&gt;
| J&lt;br /&gt;
| 36&lt;br /&gt;
|-&lt;br /&gt;
| K&lt;br /&gt;
| 37&lt;br /&gt;
|-&lt;br /&gt;
| L&lt;br /&gt;
| 38&lt;br /&gt;
|-&lt;br /&gt;
| Semicolon&lt;br /&gt;
| 39&lt;br /&gt;
|-&lt;br /&gt;
| Apostrophe&lt;br /&gt;
| 40&lt;br /&gt;
|-&lt;br /&gt;
| Tilde (~)&lt;br /&gt;
| 41&lt;br /&gt;
|-&lt;br /&gt;
| Left Shift&lt;br /&gt;
| 42&lt;br /&gt;
|-&lt;br /&gt;
| Back Slash&lt;br /&gt;
| 43&lt;br /&gt;
|-&lt;br /&gt;
| Z&lt;br /&gt;
| 44&lt;br /&gt;
|-&lt;br /&gt;
| X&lt;br /&gt;
| 45&lt;br /&gt;
|-&lt;br /&gt;
| C&lt;br /&gt;
| 46&lt;br /&gt;
|-&lt;br /&gt;
| V&lt;br /&gt;
| 47&lt;br /&gt;
|}&lt;br /&gt;
|style=&amp;quot;vertical-align: top&amp;quot;|&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! |Key&lt;br /&gt;
! |Code&lt;br /&gt;
|-&lt;br /&gt;
| B&lt;br /&gt;
| 48&lt;br /&gt;
|-&lt;br /&gt;
| N&lt;br /&gt;
| 49&lt;br /&gt;
|-&lt;br /&gt;
| M&lt;br /&gt;
| 50&lt;br /&gt;
|-&lt;br /&gt;
| Comma&lt;br /&gt;
| 51&lt;br /&gt;
|-&lt;br /&gt;
| Period&lt;br /&gt;
| 52&lt;br /&gt;
|-&lt;br /&gt;
| Forward Slash&lt;br /&gt;
| 53&lt;br /&gt;
|-&lt;br /&gt;
| Right Shift&lt;br /&gt;
| 54&lt;br /&gt;
|-&lt;br /&gt;
| Numpad *&lt;br /&gt;
| 55&lt;br /&gt;
|-&lt;br /&gt;
| Left Alt&lt;br /&gt;
| 56&lt;br /&gt;
|-&lt;br /&gt;
| Spacebar&lt;br /&gt;
| 57&lt;br /&gt;
|-&lt;br /&gt;
| Caps Lock&lt;br /&gt;
| 58&lt;br /&gt;
|-&lt;br /&gt;
| F1&lt;br /&gt;
| 59&lt;br /&gt;
|-&lt;br /&gt;
| F2&lt;br /&gt;
| 60&lt;br /&gt;
|-&lt;br /&gt;
| F3&lt;br /&gt;
| 61&lt;br /&gt;
|-&lt;br /&gt;
| F4&lt;br /&gt;
| 62&lt;br /&gt;
|-&lt;br /&gt;
| F5&lt;br /&gt;
| 63&lt;br /&gt;
|-&lt;br /&gt;
| F6&lt;br /&gt;
| 64&lt;br /&gt;
|-&lt;br /&gt;
| F7&lt;br /&gt;
| 65&lt;br /&gt;
|-&lt;br /&gt;
| F8&lt;br /&gt;
| 66&lt;br /&gt;
|-&lt;br /&gt;
| F9&lt;br /&gt;
| 67&lt;br /&gt;
|-&lt;br /&gt;
| F10&lt;br /&gt;
| 68&lt;br /&gt;
|}&lt;br /&gt;
|style=&amp;quot;vertical-align: top&amp;quot;|&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! |Key&lt;br /&gt;
! |Code&lt;br /&gt;
|-&lt;br /&gt;
| Num Lock&lt;br /&gt;
| 69&lt;br /&gt;
|-&lt;br /&gt;
| Scroll Lock&lt;br /&gt;
| 70&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 7&lt;br /&gt;
| 71&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 8&lt;br /&gt;
| 72&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 9&lt;br /&gt;
| 73&lt;br /&gt;
|-&lt;br /&gt;
| Numpad -&lt;br /&gt;
| 74&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 4&lt;br /&gt;
| 75&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 5&lt;br /&gt;
| 76&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 6&lt;br /&gt;
| 77&lt;br /&gt;
|-&lt;br /&gt;
| Numpad +&lt;br /&gt;
| 78&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 1&lt;br /&gt;
| 79&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 2&lt;br /&gt;
| 80&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 3&lt;br /&gt;
| 81&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 0&lt;br /&gt;
| 82&lt;br /&gt;
|-&lt;br /&gt;
| Numpad .&lt;br /&gt;
| 83&lt;br /&gt;
|-&lt;br /&gt;
| F11&lt;br /&gt;
| 87&lt;br /&gt;
|-&lt;br /&gt;
| F12&lt;br /&gt;
| 88&lt;br /&gt;
|-&lt;br /&gt;
| Numpad Enter&lt;br /&gt;
| 156&lt;br /&gt;
|-&lt;br /&gt;
| Right Control&lt;br /&gt;
| 157&lt;br /&gt;
|-&lt;br /&gt;
| Numpad /&lt;br /&gt;
| 181&lt;br /&gt;
|-&lt;br /&gt;
| Right Alt&lt;br /&gt;
| 184&lt;br /&gt;
|}&lt;br /&gt;
|style=&amp;quot;vertical-align: top&amp;quot;|&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! |Key&lt;br /&gt;
! |Code&lt;br /&gt;
|-&lt;br /&gt;
| Home&lt;br /&gt;
| 199&lt;br /&gt;
|-&lt;br /&gt;
| Up Arrow&lt;br /&gt;
| 200&lt;br /&gt;
|-&lt;br /&gt;
| Page Up&lt;br /&gt;
| 201&lt;br /&gt;
|-&lt;br /&gt;
| Left Arrow&lt;br /&gt;
| 203&lt;br /&gt;
|-&lt;br /&gt;
| Right Arrow&lt;br /&gt;
| 205&lt;br /&gt;
|-&lt;br /&gt;
| End&lt;br /&gt;
| 207&lt;br /&gt;
|-&lt;br /&gt;
| Down Arrow&lt;br /&gt;
| 208&lt;br /&gt;
|-&lt;br /&gt;
| Page Down&lt;br /&gt;
| 209&lt;br /&gt;
|-&lt;br /&gt;
| Insert&lt;br /&gt;
| 210&lt;br /&gt;
|-&lt;br /&gt;
| Delete&lt;br /&gt;
| 211&lt;br /&gt;
|-&lt;br /&gt;
| Left Mouse Button&lt;br /&gt;
| 256&lt;br /&gt;
|-&lt;br /&gt;
| Right Mouse Button&lt;br /&gt;
| 257&lt;br /&gt;
|-&lt;br /&gt;
| Middle Mouse/Wheel&lt;br /&gt;
| 258&lt;br /&gt;
|-&lt;br /&gt;
| Mouse Button 3&lt;br /&gt;
| 259&lt;br /&gt;
|-&lt;br /&gt;
| Mouse Button 4&lt;br /&gt;
| 260&lt;br /&gt;
|-&lt;br /&gt;
| Mouse Button 5&lt;br /&gt;
| 261&lt;br /&gt;
|-&lt;br /&gt;
| Mouse Button 6&lt;br /&gt;
| 262&lt;br /&gt;
|-&lt;br /&gt;
| Mouse Button 7&lt;br /&gt;
| 263&lt;br /&gt;
|-&lt;br /&gt;
| Mouse Wheel Up&lt;br /&gt;
| 264&lt;br /&gt;
|-&lt;br /&gt;
| Mouse Wheel Down&lt;br /&gt;
| 265&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
Source: [http://wiki.tesnexus.com/index.php/DirectX_Scancodes_And_How_To_Use_Them Nexus Wiki]&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Wukl</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Tutorials&amp;diff=1239</id>
		<title>Tutorials</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Tutorials&amp;diff=1239"/>
				<updated>2012-04-08T14:00:27Z</updated>
		
		<summary type="html">&lt;p&gt;Wukl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Look for the [[Getting Started]] guide if this is your first try. As some tutorials might not be listed here, you can also browse the [[:Category:Tutorials|tutorials category]].&lt;br /&gt;
&lt;br /&gt;
=== Basics ===&lt;br /&gt;
Common things that may need some explanation.&lt;br /&gt;
*[[The console and its shell]]&lt;br /&gt;
&lt;br /&gt;
=== Programming &amp;amp; Wiring ===&lt;br /&gt;
*[[Hello_World_Tutorial|Hello World!]]&lt;br /&gt;
*[[Guess_The_Number_(tutorial)|Guess the Number]]&lt;br /&gt;
*[[Making_a_Password_Protected_Door|Password Protected Door]]&lt;br /&gt;
*[[Making_an_API_(tutorial)|Programming an API]]&lt;br /&gt;
*[[Startup|Running script automatically at boot with Startup]]&lt;br /&gt;
*[[Raw key events| Detecting specific keys (such as the arrow keys)]]&lt;br /&gt;
=== Turtles ===&lt;br /&gt;
The nice little robots that do the hard work for you.&lt;br /&gt;
*[[Turtle_Tutorial|Turtles!]]&lt;br /&gt;
*[[Turtle_Lumberjack_(tutorial)|Turtle Lumberjack]]&lt;br /&gt;
*[[Advanced_Turtle_Lumberjack_(tutorial)|Advanced Turtle Lumberjack]]&lt;br /&gt;
*[[Cobble_Generator|Cobblestone Generator]]&lt;br /&gt;
*[[Turtle_Stairbuilder_(tutorial)|Turtle Stairbuilder]]&lt;/div&gt;</summary>
		<author><name>Wukl</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Raw_key_events&amp;diff=1238</id>
		<title>Raw key events</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Raw_key_events&amp;diff=1238"/>
				<updated>2012-04-08T13:58:42Z</updated>
		
		<summary type="html">&lt;p&gt;Wukl: Created page with &amp;quot;The built-in os has a function to read incoming keystrokes. But it also implements the functions to move the cursor while typing. This is not always a desired feature; imagine...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The built-in os has a function to read incoming keystrokes. But it also implements the functions to move the cursor while typing. This is not always a desired feature; imagine a case in which you want to make a menu with a controllable cursor around the menu entries. The current read() function won't let you.&lt;br /&gt;
&lt;br /&gt;
==Detecting keystrokes==&lt;br /&gt;
In case I made you think the os sucks, it doesn't (all the time). Because this os is not Windows, we can access lower-level functions, such as os.pullEvent(). And that's the one that we're going to use:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function rawread()&lt;br /&gt;
    bRead = true&lt;br /&gt;
    while(bRead)&lt;br /&gt;
        local sEvent, param = os.pullEvent(&amp;quot;key&amp;quot;)&lt;br /&gt;
        if(sEvent == &amp;quot;key&amp;quot;) then&lt;br /&gt;
            break&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This function waits for any key, then exits.&lt;br /&gt;
&lt;br /&gt;
==Figuring out the key==&lt;br /&gt;
We can detect any key, but not which key. To find it out, we have to add some further logic to the code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    bRead = true&lt;br /&gt;
    while(bRead)&lt;br /&gt;
        local sEvent, param = os.pullEvent(&amp;quot;key&amp;quot;)&lt;br /&gt;
        if(sEvent == &amp;quot;key&amp;quot;) then&lt;br /&gt;
            if(param == 28) then&lt;br /&gt;
                print(&amp;quot;Enter detected&amp;quot;)&lt;br /&gt;
                break&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This function waits for the Enter key to be pressed. If so, it writes &amp;quot;Enter detected&amp;quot; to the screen and exits.&lt;br /&gt;
&lt;br /&gt;
==Key scan codes ==&lt;br /&gt;
The scan codes are typical DirectX numbers.&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;vertical-align: top&amp;quot;|&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! |Key&lt;br /&gt;
! |Code&lt;br /&gt;
|-&lt;br /&gt;
| Escape&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| 6&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| 8&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| 10&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 11&lt;br /&gt;
|-&lt;br /&gt;
| Minus&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
| Equals&lt;br /&gt;
| 13&lt;br /&gt;
|-&lt;br /&gt;
| Backspace&lt;br /&gt;
| 14&lt;br /&gt;
|-&lt;br /&gt;
| Tab&lt;br /&gt;
| 15&lt;br /&gt;
|-&lt;br /&gt;
| Q&lt;br /&gt;
| 16&lt;br /&gt;
|-&lt;br /&gt;
| W&lt;br /&gt;
| 17&lt;br /&gt;
|-&lt;br /&gt;
| E&lt;br /&gt;
| 18&lt;br /&gt;
|-&lt;br /&gt;
| R&lt;br /&gt;
| 19&lt;br /&gt;
|-&lt;br /&gt;
| T&lt;br /&gt;
| 20&lt;br /&gt;
|-&lt;br /&gt;
| Y&lt;br /&gt;
| 21&lt;br /&gt;
|-&lt;br /&gt;
| U&lt;br /&gt;
| 22&lt;br /&gt;
|-&lt;br /&gt;
| I&lt;br /&gt;
| 23&lt;br /&gt;
|-&lt;br /&gt;
| O&lt;br /&gt;
| 24&lt;br /&gt;
|-&lt;br /&gt;
| P&lt;br /&gt;
| 25&lt;br /&gt;
|}&lt;br /&gt;
|style=&amp;quot;vertical-align: top&amp;quot;|&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! |Key&lt;br /&gt;
! |Code&lt;br /&gt;
|-&lt;br /&gt;
| Left Bracket&lt;br /&gt;
| 26&lt;br /&gt;
|-&lt;br /&gt;
| Right Bracket&lt;br /&gt;
| 27&lt;br /&gt;
|-&lt;br /&gt;
| Enter&lt;br /&gt;
| 28&lt;br /&gt;
|-&lt;br /&gt;
| Left Control&lt;br /&gt;
| 29&lt;br /&gt;
|-&lt;br /&gt;
| A&lt;br /&gt;
| 30&lt;br /&gt;
|- &lt;br /&gt;
| S&lt;br /&gt;
| 31&lt;br /&gt;
|-&lt;br /&gt;
| D&lt;br /&gt;
| 32&lt;br /&gt;
|-&lt;br /&gt;
| F&lt;br /&gt;
| 33&lt;br /&gt;
|-&lt;br /&gt;
| G&lt;br /&gt;
| 34&lt;br /&gt;
|-&lt;br /&gt;
| H&lt;br /&gt;
| 35&lt;br /&gt;
|-&lt;br /&gt;
| J&lt;br /&gt;
| 36&lt;br /&gt;
|-&lt;br /&gt;
| K&lt;br /&gt;
| 37&lt;br /&gt;
|-&lt;br /&gt;
| L&lt;br /&gt;
| 38&lt;br /&gt;
|-&lt;br /&gt;
| Semicolon&lt;br /&gt;
| 39&lt;br /&gt;
|-&lt;br /&gt;
| Apostrophe&lt;br /&gt;
| 40&lt;br /&gt;
|-&lt;br /&gt;
| Tilde (~)&lt;br /&gt;
| 41&lt;br /&gt;
|-&lt;br /&gt;
| Left Shift&lt;br /&gt;
| 42&lt;br /&gt;
|-&lt;br /&gt;
| Back Slash&lt;br /&gt;
| 43&lt;br /&gt;
|-&lt;br /&gt;
| Z&lt;br /&gt;
| 44&lt;br /&gt;
|-&lt;br /&gt;
| X&lt;br /&gt;
| 45&lt;br /&gt;
|-&lt;br /&gt;
| C&lt;br /&gt;
| 46&lt;br /&gt;
|-&lt;br /&gt;
| V&lt;br /&gt;
| 47&lt;br /&gt;
|}&lt;br /&gt;
|style=&amp;quot;vertical-align: top&amp;quot;|&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! |Key&lt;br /&gt;
! |Code&lt;br /&gt;
|-&lt;br /&gt;
| B&lt;br /&gt;
| 48&lt;br /&gt;
|-&lt;br /&gt;
| N&lt;br /&gt;
| 49&lt;br /&gt;
|-&lt;br /&gt;
| M&lt;br /&gt;
| 50&lt;br /&gt;
|-&lt;br /&gt;
| Comma&lt;br /&gt;
| 51&lt;br /&gt;
|-&lt;br /&gt;
| Period&lt;br /&gt;
| 52&lt;br /&gt;
|-&lt;br /&gt;
| Forward Slash&lt;br /&gt;
| 53&lt;br /&gt;
|-&lt;br /&gt;
| Right Shift&lt;br /&gt;
| 54&lt;br /&gt;
|-&lt;br /&gt;
| Numpad *&lt;br /&gt;
| 55&lt;br /&gt;
|-&lt;br /&gt;
| Left Alt&lt;br /&gt;
| 56&lt;br /&gt;
|-&lt;br /&gt;
| Spacebar&lt;br /&gt;
| 57&lt;br /&gt;
|-&lt;br /&gt;
| Caps Lock&lt;br /&gt;
| 58&lt;br /&gt;
|-&lt;br /&gt;
| F1&lt;br /&gt;
| 59&lt;br /&gt;
|-&lt;br /&gt;
| F2&lt;br /&gt;
| 60&lt;br /&gt;
|-&lt;br /&gt;
| F3&lt;br /&gt;
| 61&lt;br /&gt;
|-&lt;br /&gt;
| F4&lt;br /&gt;
| 62&lt;br /&gt;
|-&lt;br /&gt;
| F5&lt;br /&gt;
| 63&lt;br /&gt;
|-&lt;br /&gt;
| F6&lt;br /&gt;
| 64&lt;br /&gt;
|-&lt;br /&gt;
| F7&lt;br /&gt;
| 65&lt;br /&gt;
|-&lt;br /&gt;
| F8&lt;br /&gt;
| 66&lt;br /&gt;
|-&lt;br /&gt;
| F9&lt;br /&gt;
| 67&lt;br /&gt;
|-&lt;br /&gt;
| F10&lt;br /&gt;
| 68&lt;br /&gt;
|}&lt;br /&gt;
|style=&amp;quot;vertical-align: top&amp;quot;|&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! |Key&lt;br /&gt;
! |Code&lt;br /&gt;
|-&lt;br /&gt;
| Num Lock&lt;br /&gt;
| 69&lt;br /&gt;
|-&lt;br /&gt;
| Scroll Lock&lt;br /&gt;
| 70&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 7&lt;br /&gt;
| 71&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 8&lt;br /&gt;
| 72&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 9&lt;br /&gt;
| 73&lt;br /&gt;
|-&lt;br /&gt;
| Numpad -&lt;br /&gt;
| 74&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 4&lt;br /&gt;
| 75&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 5&lt;br /&gt;
| 76&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 6&lt;br /&gt;
| 77&lt;br /&gt;
|-&lt;br /&gt;
| Numpad +&lt;br /&gt;
| 78&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 1&lt;br /&gt;
| 79&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 2&lt;br /&gt;
| 80&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 3&lt;br /&gt;
| 81&lt;br /&gt;
|-&lt;br /&gt;
| Numpad 0&lt;br /&gt;
| 82&lt;br /&gt;
|-&lt;br /&gt;
| Numpad .&lt;br /&gt;
| 83&lt;br /&gt;
|-&lt;br /&gt;
| F11&lt;br /&gt;
| 87&lt;br /&gt;
|-&lt;br /&gt;
| F12&lt;br /&gt;
| 88&lt;br /&gt;
|-&lt;br /&gt;
| Numpad Enter&lt;br /&gt;
| 156&lt;br /&gt;
|-&lt;br /&gt;
| Right Control&lt;br /&gt;
| 157&lt;br /&gt;
|-&lt;br /&gt;
| Numpad /&lt;br /&gt;
| 181&lt;br /&gt;
|-&lt;br /&gt;
| Right Alt&lt;br /&gt;
| 184&lt;br /&gt;
|}&lt;br /&gt;
|style=&amp;quot;vertical-align: top&amp;quot;|&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! |Key&lt;br /&gt;
! |Code&lt;br /&gt;
|-&lt;br /&gt;
| Home&lt;br /&gt;
| 199&lt;br /&gt;
|-&lt;br /&gt;
| Up Arrow&lt;br /&gt;
| 200&lt;br /&gt;
|-&lt;br /&gt;
| Page Up&lt;br /&gt;
| 201&lt;br /&gt;
|-&lt;br /&gt;
| Left Arrow&lt;br /&gt;
| 203&lt;br /&gt;
|-&lt;br /&gt;
| Right Arrow&lt;br /&gt;
| 205&lt;br /&gt;
|-&lt;br /&gt;
| End&lt;br /&gt;
| 207&lt;br /&gt;
|-&lt;br /&gt;
| Down Arrow&lt;br /&gt;
| 208&lt;br /&gt;
|-&lt;br /&gt;
| Page Down&lt;br /&gt;
| 209&lt;br /&gt;
|-&lt;br /&gt;
| Insert&lt;br /&gt;
| 210&lt;br /&gt;
|-&lt;br /&gt;
| Delete&lt;br /&gt;
| 211&lt;br /&gt;
|-&lt;br /&gt;
| Left Mouse Button&lt;br /&gt;
| 256&lt;br /&gt;
|-&lt;br /&gt;
| Right Mouse Button&lt;br /&gt;
| 257&lt;br /&gt;
|-&lt;br /&gt;
| Middle Mouse/Wheel&lt;br /&gt;
| 258&lt;br /&gt;
|-&lt;br /&gt;
| Mouse Button 3&lt;br /&gt;
| 259&lt;br /&gt;
|-&lt;br /&gt;
| Mouse Button 4&lt;br /&gt;
| 260&lt;br /&gt;
|-&lt;br /&gt;
| Mouse Button 5&lt;br /&gt;
| 261&lt;br /&gt;
|-&lt;br /&gt;
| Mouse Button 6&lt;br /&gt;
| 262&lt;br /&gt;
|-&lt;br /&gt;
| Mouse Button 7&lt;br /&gt;
| 263&lt;br /&gt;
|-&lt;br /&gt;
| Mouse Wheel Up&lt;br /&gt;
| 264&lt;br /&gt;
|-&lt;br /&gt;
| Mouse Wheel Down&lt;br /&gt;
| 265&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
Source: [http://wiki.tesnexus.com/index.php/DirectX_Scancodes_And_How_To_Use_Them Nexus Wiki]&lt;/div&gt;</summary>
		<author><name>Wukl</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Getting_Started&amp;diff=1026</id>
		<title>Getting Started</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Getting_Started&amp;diff=1026"/>
				<updated>2012-03-15T20:47:49Z</updated>
		
		<summary type="html">&lt;p&gt;Wukl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Perquisite: Installing the mods ==&lt;br /&gt;
'''It is very important to read everything carefully before asking questions.'''&lt;br /&gt;
'''Also, the latest version this mod may not be compatible with the current Minecraft release.'''&lt;br /&gt;
&lt;br /&gt;
# Install [http://www.minecraftforum.net/topic/75440-v100-risugamis-mods-everything-updated/ Risugami's ModLoader] 1.1.&lt;br /&gt;
# Install [http://www.minecraftforum.net/topic/86765-123-sdks-mods-v1v3-mar-7-mods-v1-modloadermp-v3/#ModLoaderMp Flan's ModLoaderMP Unofficial] Client 1.1 v2.&lt;br /&gt;
# Install [http://www.mod-buildcraft.com/forums/topic/forge-downloads/ Minecraft Forge] Recommended Client.&lt;br /&gt;
# Download the latest version of ComputerCraft&lt;br /&gt;
# Extract the .zip file in *minecraft folder*\mods\. (Tip: on the main screen of Minecraft, go to 'Texture Packs' and click on 'Open texture pack folder'. Go up one folder et voilà, there's your Minecraft folder.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Step 1: Crafting the console ==&lt;br /&gt;
The recipe is simple:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{Crafting grid&lt;br /&gt;
|A1=stone |B1=stone      |C1=stone&lt;br /&gt;
|A2=stone |B2=redstone   |C2=stone&lt;br /&gt;
|A3=stone |B3=glass pane |C3=stone&lt;br /&gt;
|Output=console&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Right click on the console to use it.&amp;lt;br /&amp;gt;&lt;br /&gt;
These are important to remember:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!style=&amp;quot;background:#EEE&amp;quot; width=&amp;quot;200px&amp;quot;|Shortcut&lt;br /&gt;
!style=&amp;quot;background:#EEE&amp;quot; width=&amp;quot;*&amp;quot;|Usage&lt;br /&gt;
|-&lt;br /&gt;
|CTRL + T&lt;br /&gt;
|Closes the current program.&lt;br /&gt;
|-&lt;br /&gt;
|CTRL + R&lt;br /&gt;
|Reboots the console.&lt;br /&gt;
|-&lt;br /&gt;
|CTRL + S&lt;br /&gt;
|Forcefully shuts down the computer.&lt;br /&gt;
|}&lt;br /&gt;
NOTE: You have to hold the keyboard shortcuts down for at least 1 second!&amp;lt;br /&amp;gt;&lt;br /&gt;
These are forced and will close the current program, even if it is still running.&lt;br /&gt;
&lt;br /&gt;
== Step 2: Wiring it all up ==&lt;br /&gt;
The console accepts many forms of redstone. For simple structures, such as a password protected door, only a single line of redstone is needed.&lt;br /&gt;
However, this mod can do much more. If you need to connect multiple wires to one side, you can just use RedPower's cables. Easy peasy.&lt;br /&gt;
Or, you don't do anything in this part. The computer has some great games shipped with and it is even capable of loading web pages.&lt;br /&gt;
&lt;br /&gt;
== Step 3: Programming your system ==&lt;br /&gt;
If you've programmed before this shouldn't be hard. It'll feel very comfortable.&lt;br /&gt;
&lt;br /&gt;
Type&lt;br /&gt;
 edit &amp;lt;filename&amp;gt;&lt;br /&gt;
in the terminal to open the included feature-rich &amp;lt;!-- Save and exit!!! --&amp;gt; text editor. To get the hang of Lua if you're new, use&lt;br /&gt;
 edit /rom/programs/redset&lt;br /&gt;
to view the code of a simple program 'redset'.&lt;br /&gt;
&lt;br /&gt;
Navigating is easy.&lt;br /&gt;
 &amp;gt; ls&lt;br /&gt;
 rom&lt;br /&gt;
 &amp;gt; cd rom&lt;br /&gt;
 rom&amp;gt; ls&lt;br /&gt;
 apis   help   programs&lt;br /&gt;
 startup&lt;br /&gt;
 rom&amp;gt;cd programs&lt;br /&gt;
 rom/programs&amp;gt;cd /&lt;br /&gt;
 &amp;gt;&lt;br /&gt;
To say it in English: ls '''l'''i'''s'''ts the files and folders in a directory, while cd changes the '''c'''urrent '''d'''irectory. / is the root of the computer.&lt;br /&gt;
Again, you don't have to program, but it's a big part of the mod. But you can still play those games.&lt;br /&gt;
&lt;br /&gt;
== Step 4: Test it ==&lt;br /&gt;
Make sure that your program is bug-proof before using it as something important. A system controlling the state of an IndustrialCraft² Mark-III Nuclear Reactor to prevent it from overheating shouldn't crash every now and then with &amp;quot;Too long without yielding&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Step 5: Extend it ==&lt;br /&gt;
Give back your part to the community. Help others on the forums or improve the wiki. Or, make your own OS or shell to run on the computers and share it with everybody. You can even create your own peripheral blocks using the API to create even a bigger system. A mainframe, for example.&lt;/div&gt;</summary>
		<author><name>Wukl</name></author>	</entry>

	</feed>