<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://wiki.railos.org/index.php?action=history&amp;feed=atom&amp;title=Module%3AKey</id>
	<title>Module:Key - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.railos.org/index.php?action=history&amp;feed=atom&amp;title=Module%3AKey"/>
	<link rel="alternate" type="text/html" href="https://wiki.railos.org/index.php?title=Module:Key&amp;action=history"/>
	<updated>2026-04-06T03:34:36Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.2</generator>
	<entry>
		<id>https://wiki.railos.org/index.php?title=Module:Key&amp;diff=3193&amp;oldid=prev</id>
		<title>Krizar: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="https://wiki.railos.org/index.php?title=Module:Key&amp;diff=3193&amp;oldid=prev"/>
		<updated>2022-08-26T19:31:39Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en-GB&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 19:31, 26 August 2022&lt;/td&gt;
				&lt;/tr&gt;
&lt;!-- diff cache key ros_wiki:diff::1.12:old-3192:rev-3193 --&gt;
&lt;/table&gt;</summary>
		<author><name>Krizar</name></author>
	</entry>
	<entry>
		<id>https://wiki.railos.org/index.php?title=Module:Key&amp;diff=3192&amp;oldid=prev</id>
		<title>en&gt;The wub: convert to use TemplateStyles - Template:Key press/styles.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.railos.org/index.php?title=Module:Key&amp;diff=3192&amp;oldid=prev"/>
		<updated>2022-02-13T00:06:54Z</updated>

		<summary type="html">&lt;p&gt;convert to use TemplateStyles - &lt;a href=&quot;/index.php/Template:Key_press/styles.css&quot; title=&quot;Template:Key press/styles.css&quot;&gt;Template:Key press/styles.css&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- This module implements {{key press}}.&lt;br /&gt;
&lt;br /&gt;
local kbdPrefix = &amp;#039;&amp;lt;kbd class=&amp;quot;keyboard-key nowrap&amp;quot;&amp;gt;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
local kbdSuffix = &amp;#039;&amp;lt;/kbd&amp;gt;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
local keyText = {&lt;br /&gt;
	[&amp;#039;caps lock&amp;#039;] = &amp;#039;⇪ Caps Lock&amp;#039;,&lt;br /&gt;
	[&amp;#039;[[caps lock]]&amp;#039;] = &amp;#039;⇪ [[Caps Lock]]&amp;#039;,&lt;br /&gt;
	[&amp;#039;shift&amp;#039;] = &amp;#039;⇧ Shift&amp;#039;,&lt;br /&gt;
	[&amp;#039;[[shift key|shift]]&amp;#039;] = &amp;#039;⇧ [[Shift key|Shift]]&amp;#039;,&lt;br /&gt;
	[&amp;#039;enter&amp;#039;] = &amp;#039;↵ Enter&amp;#039;,&lt;br /&gt;
	[&amp;#039;[[enter key|enter]]&amp;#039;] = &amp;#039;↵ [[Enter key|Enter]]&amp;#039;,&lt;br /&gt;
	[&amp;#039;cmd&amp;#039;] = &amp;#039;⌘ Cmd&amp;#039;,&lt;br /&gt;
	[&amp;#039;[[command key|cmd]]&amp;#039;] = &amp;#039;⌘ [[Command key|Cmd]]&amp;#039;,&lt;br /&gt;
	[&amp;#039;command&amp;#039;] = &amp;#039;⌘ Command&amp;#039;,&lt;br /&gt;
	[&amp;#039;[[command key|command]]&amp;#039;] = &amp;#039;⌘ [[Command key|Command]]&amp;#039;,&lt;br /&gt;
	[&amp;#039;opt&amp;#039;] = &amp;#039;⌥ Opt&amp;#039;,&lt;br /&gt;
	[&amp;#039;[[option key|opt]]&amp;#039;] = &amp;#039;⌥ [[Option key|Opt]]&amp;#039;,&lt;br /&gt;
	[&amp;#039;option&amp;#039;] = &amp;#039;⌥ Option&amp;#039;,&lt;br /&gt;
	[&amp;#039;[[option key|option]]&amp;#039;] = &amp;#039;⌥ [[Option key|Option]]&amp;#039;,&lt;br /&gt;
	[&amp;#039;tab&amp;#039;] = &amp;#039;Tab ↹&amp;#039;,&lt;br /&gt;
	[&amp;#039;[[tab key|tab]]&amp;#039;] = &amp;#039;[[Tab key|Tab]] ↹&amp;#039;,&lt;br /&gt;
	[&amp;#039;backspace&amp;#039;] = &amp;#039;← Backspace&amp;#039;,&lt;br /&gt;
	[&amp;#039;[[backspace]]&amp;#039;] = &amp;#039;← [[Backspace]]&amp;#039;,&lt;br /&gt;
	[&amp;#039;win&amp;#039;] = &amp;#039;⊞ Win&amp;#039;,&lt;br /&gt;
	[&amp;#039;[[windows key|win]]&amp;#039;] = &amp;#039;⊞ [[Windows key|Win]]&amp;#039;,&lt;br /&gt;
	[&amp;#039;menu&amp;#039;] = &amp;#039;≣ Menu&amp;#039;,&lt;br /&gt;
	[&amp;#039;[[menu key|menu]]&amp;#039;] = &amp;#039;≣ [[Menu key|Menu]]&amp;#039;,&lt;br /&gt;
	[&amp;#039;up&amp;#039;] = &amp;#039;↑&amp;#039;,&lt;br /&gt;
	[&amp;#039;[[arrow keys|up]]&amp;#039;] = &amp;#039;[[Arrow keys|↑]]&amp;#039;,&lt;br /&gt;
	[&amp;#039;down&amp;#039;] = &amp;#039;↓&amp;#039;,&lt;br /&gt;
	[&amp;#039;[[arrow keys|down]]&amp;#039;] = &amp;#039;[[Arrow keys|↓]]&amp;#039;,&lt;br /&gt;
	[&amp;#039;left&amp;#039;] = &amp;#039;←&amp;#039;,&lt;br /&gt;
	[&amp;#039;[[arrow keys|left]]&amp;#039;] = &amp;#039;[[Arrow keys|←]]&amp;#039;,&lt;br /&gt;
	[&amp;#039;right&amp;#039;] = &amp;#039;→&amp;#039;,&lt;br /&gt;
	[&amp;#039;[[arrow keys|right]]&amp;#039;] = &amp;#039;[[Arrow keys|→]]&amp;#039;,&lt;br /&gt;
	[&amp;#039;asterisk&amp;#039;] = &amp;#039;&amp;amp;#42;&amp;#039;,&lt;br /&gt;
	[&amp;#039;hash&amp;#039;] = &amp;#039;&amp;amp;#35;&amp;#039;,&lt;br /&gt;
	[&amp;#039;[[#]]&amp;#039;] = &amp;#039;[[Number sign|#]]&amp;#039;,&lt;br /&gt;
	[&amp;#039;colon&amp;#039;] = &amp;#039;&amp;amp;#58;&amp;#039;,&lt;br /&gt;
	[&amp;#039;[[:]]&amp;#039;] = &amp;#039;[[Colon (punctuation)|:]]&amp;#039;,&lt;br /&gt;
	[&amp;#039;pipe&amp;#039;] = &amp;#039;&amp;amp;#124;&amp;#039;,&lt;br /&gt;
	[&amp;#039;[[|]]&amp;#039;] = &amp;#039;[[Pipe symbol|&amp;amp;#124;]]&amp;#039;,&lt;br /&gt;
	[&amp;#039;semicolon&amp;#039;] = &amp;#039;&amp;amp;#59;&amp;#039;,&lt;br /&gt;
	[&amp;#039;[[;]]&amp;#039;] = &amp;#039;[[Semi-colon|&amp;amp;#59;]]&amp;#039;,&lt;br /&gt;
	[&amp;#039;equals&amp;#039;] = &amp;#039;&amp;amp;#61;&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
	-- Left &amp;amp; right analog sticks.&lt;br /&gt;
	[&amp;#039;l up&amp;#039;] = &amp;#039;L↑&amp;#039;,&lt;br /&gt;
	[&amp;#039;l down&amp;#039;] = &amp;#039;L↓&amp;#039;,&lt;br /&gt;
	[&amp;#039;l left&amp;#039;] = &amp;#039;L←&amp;#039;,&lt;br /&gt;
	[&amp;#039;l right&amp;#039;] = &amp;#039;L→&amp;#039;,&lt;br /&gt;
	[&amp;#039;l ne&amp;#039;] = &amp;#039;L↗&amp;#039;,&lt;br /&gt;
	[&amp;#039;l se&amp;#039;] = &amp;#039;L↘&amp;#039;,&lt;br /&gt;
	[&amp;#039;l nw&amp;#039;] = &amp;#039;L↖&amp;#039;,&lt;br /&gt;
	[&amp;#039;l sw&amp;#039;] = &amp;#039;L↙&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
	[&amp;#039;r up&amp;#039;] = &amp;#039;R↑&amp;#039;,&lt;br /&gt;
	[&amp;#039;r down&amp;#039;] = &amp;#039;R↓&amp;#039;,&lt;br /&gt;
	[&amp;#039;r left&amp;#039;] = &amp;#039;R←&amp;#039;,&lt;br /&gt;
	[&amp;#039;r right&amp;#039;] = &amp;#039;R→&amp;#039;,&lt;br /&gt;
	[&amp;#039;r ne&amp;#039;] = &amp;#039;R↗&amp;#039;,&lt;br /&gt;
	[&amp;#039;r se&amp;#039;] = &amp;#039;R↘&amp;#039;,&lt;br /&gt;
	[&amp;#039;r nw&amp;#039;] = &amp;#039;R↖&amp;#039;,&lt;br /&gt;
	[&amp;#039;r sw&amp;#039;] = &amp;#039;R↙&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
	-- PlayStation.&lt;br /&gt;
	[&amp;#039;ex&amp;#039;] = &amp;#039;×&amp;#039;,&lt;br /&gt;
	[&amp;#039;circle&amp;#039;] = &amp;#039;○&amp;#039;,&lt;br /&gt;
	[&amp;#039;square&amp;#039;] = &amp;#039;□&amp;#039;,&lt;br /&gt;
	[&amp;#039;triangle&amp;#039;] = &amp;#039;△&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
	-- Nintendo 64 and GameCube.&lt;br /&gt;
	[&amp;#039;c up&amp;#039;] = &amp;#039;C↑&amp;#039;,&lt;br /&gt;
	[&amp;#039;c down&amp;#039;] = &amp;#039;C↓&amp;#039;,&lt;br /&gt;
	[&amp;#039;c left&amp;#039;] = &amp;#039;C←&amp;#039;,&lt;br /&gt;
	[&amp;#039;c right&amp;#039;] = &amp;#039;C→&amp;#039;,&lt;br /&gt;
	[&amp;#039;c ne&amp;#039;] = &amp;#039;C↗&amp;#039;,&lt;br /&gt;
	[&amp;#039;c se&amp;#039;] = &amp;#039;C↘&amp;#039;,&lt;br /&gt;
	[&amp;#039;c nw&amp;#039;] = &amp;#039;C↖&amp;#039;,&lt;br /&gt;
	[&amp;#039;c sw&amp;#039;] = &amp;#039;C↙&amp;#039;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local keyAlias = {&lt;br /&gt;
	-- [&amp;#039;alternate name for key (alias)&amp;#039;] = &amp;#039;name for key used in key table&amp;#039;&lt;br /&gt;
	[&amp;#039;[[cmd key|cmd]]&amp;#039;] = &amp;#039;[[command key|cmd]]&amp;#039;,&lt;br /&gt;
	[&amp;#039;[[cmd key|command]]&amp;#039;] = &amp;#039;[[command key|command]]&amp;#039;,&lt;br /&gt;
	[&amp;#039;[[opt key|opt]]&amp;#039;] = &amp;#039;[[option key|opt]]&amp;#039;,&lt;br /&gt;
	[&amp;#039;[[option key]]&amp;#039;] = &amp;#039;[[option key|option]]&amp;#039;,&lt;br /&gt;
	[&amp;#039;[[opt key|option]]&amp;#039;] = &amp;#039;[[option key|option]]&amp;#039;,&lt;br /&gt;
	[&amp;#039;[[win key|win]]&amp;#039;] = &amp;#039;[[windows key|win]]&amp;#039;,&lt;br /&gt;
	[&amp;#039;*&amp;#039;] = &amp;#039;asterisk&amp;#039;,&lt;br /&gt;
	[&amp;#039;#&amp;#039;] = &amp;#039;hash&amp;#039;,&lt;br /&gt;
	[&amp;#039;:&amp;#039;] = &amp;#039;colon&amp;#039;,&lt;br /&gt;
	[&amp;#039;;&amp;#039;] = &amp;#039;semicolon&amp;#039;,&lt;br /&gt;
	[&amp;#039;l-up&amp;#039;] = &amp;#039;l up&amp;#039;,&lt;br /&gt;
	[&amp;#039;l-down&amp;#039;] = &amp;#039;l down&amp;#039;,&lt;br /&gt;
	[&amp;#039;l-left&amp;#039;] = &amp;#039;l left&amp;#039;,&lt;br /&gt;
	[&amp;#039;l-right&amp;#039;] = &amp;#039;l right&amp;#039;,&lt;br /&gt;
	[&amp;#039;l-ne&amp;#039;] = &amp;#039;l ne&amp;#039;,&lt;br /&gt;
	[&amp;#039;l-se&amp;#039;] = &amp;#039;l se&amp;#039;,&lt;br /&gt;
	[&amp;#039;l-nw&amp;#039;] = &amp;#039;l nw&amp;#039;,&lt;br /&gt;
	[&amp;#039;l-sw&amp;#039;] = &amp;#039;l sw&amp;#039;,&lt;br /&gt;
	[&amp;#039;r-up&amp;#039;] = &amp;#039;r up&amp;#039;,&lt;br /&gt;
	[&amp;#039;r-down&amp;#039;] = &amp;#039;r down&amp;#039;,&lt;br /&gt;
	[&amp;#039;r-left&amp;#039;] = &amp;#039;r left&amp;#039;,&lt;br /&gt;
	[&amp;#039;r-right&amp;#039;] = &amp;#039;r right&amp;#039;,&lt;br /&gt;
	[&amp;#039;r-ne&amp;#039;] = &amp;#039;r ne&amp;#039;,&lt;br /&gt;
	[&amp;#039;r-se&amp;#039;] = &amp;#039;r se&amp;#039;,&lt;br /&gt;
	[&amp;#039;r-nw&amp;#039;] = &amp;#039;r nw&amp;#039;,&lt;br /&gt;
	[&amp;#039;r-sw&amp;#039;] = &amp;#039;r sw&amp;#039;,&lt;br /&gt;
	[&amp;#039;ps x&amp;#039;] = &amp;#039;ex&amp;#039;,&lt;br /&gt;
	[&amp;#039;ps c&amp;#039;] = &amp;#039;circle&amp;#039;,&lt;br /&gt;
	[&amp;#039;ps s&amp;#039;] = &amp;#039;square&amp;#039;,&lt;br /&gt;
	[&amp;#039;ps t&amp;#039;] = &amp;#039;triangle&amp;#039;,&lt;br /&gt;
	[&amp;#039;c-up&amp;#039;] = &amp;#039;c up&amp;#039;,&lt;br /&gt;
	[&amp;#039;c-down&amp;#039;] = &amp;#039;c down&amp;#039;,&lt;br /&gt;
	[&amp;#039;c-left&amp;#039;] = &amp;#039;c left&amp;#039;,&lt;br /&gt;
	[&amp;#039;c-right&amp;#039;] = &amp;#039;c right&amp;#039;,&lt;br /&gt;
	[&amp;#039;c-ne&amp;#039;] = &amp;#039;c ne&amp;#039;,&lt;br /&gt;
	[&amp;#039;c-se&amp;#039;] = &amp;#039;c se&amp;#039;,&lt;br /&gt;
	[&amp;#039;c-nw&amp;#039;] = &amp;#039;c nw&amp;#039;,&lt;br /&gt;
	[&amp;#039;c-sw&amp;#039;] = &amp;#039;c sw&amp;#039;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local Collection = {}&lt;br /&gt;
Collection.__index = Collection&lt;br /&gt;
do&lt;br /&gt;
	function Collection:add(item)&lt;br /&gt;
		if item ~= nil then&lt;br /&gt;
			self.n = self.n + 1&lt;br /&gt;
			self[self.n] = item&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	function Collection:join(sep)&lt;br /&gt;
		return table.concat(self, sep)&lt;br /&gt;
	end&lt;br /&gt;
	function Collection:sort(comp)&lt;br /&gt;
		table.sort(self, comp)&lt;br /&gt;
	end&lt;br /&gt;
	function Collection.new()&lt;br /&gt;
		return setmetatable({n = 0}, Collection)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function keyPress(args)&lt;br /&gt;
	local chainNames = {&lt;br /&gt;
		&amp;#039;chain first&amp;#039;,&lt;br /&gt;
		&amp;#039;chain second&amp;#039;,&lt;br /&gt;
		&amp;#039;chain third&amp;#039;,&lt;br /&gt;
		&amp;#039;chain fourth&amp;#039;,&lt;br /&gt;
		&amp;#039;chain fifth&amp;#039;,&lt;br /&gt;
		&amp;#039;chain sixth&amp;#039;,&lt;br /&gt;
		&amp;#039;chain seventh&amp;#039;,&lt;br /&gt;
		&amp;#039;chain eighth&amp;#039;,&lt;br /&gt;
		&amp;#039;chain ninth&amp;#039;,&lt;br /&gt;
	}&lt;br /&gt;
	local result = Collection.new()&lt;br /&gt;
	local chainDefault = args.chain or &amp;#039;+&amp;#039;&lt;br /&gt;
	for i, id in ipairs(args) do&lt;br /&gt;
		if i &amp;gt; 1 then&lt;br /&gt;
			result:add(args[chainNames[i - 1]] or chainDefault)&lt;br /&gt;
		end&lt;br /&gt;
		local lc = id:lower()&lt;br /&gt;
		local text = keyText[lc] or keyText[keyAlias[lc]] or id&lt;br /&gt;
		result:add(kbdPrefix .. text .. kbdSuffix)&lt;br /&gt;
	end&lt;br /&gt;
	return mw.getCurrentFrame():extensionTag{&lt;br /&gt;
		name = &amp;#039;templatestyles&amp;#039;, args = { src = &amp;#039;Template:Key press/styles.css&amp;#039;} &lt;br /&gt;
	} .. result:join()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function keypress(frame)&lt;br /&gt;
	-- Called by &amp;quot;{{key press|...}}&amp;quot;.&lt;br /&gt;
	-- Using the template doubles the post‐expand include size.&lt;br /&gt;
	return keyPress(frame:getParent().args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function press(frame)&lt;br /&gt;
	-- Called by &amp;quot;{{#invoke:key|press|...}}&amp;quot;.&lt;br /&gt;
	return keyPress(frame.args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return {&lt;br /&gt;
	keypress = keypress,&lt;br /&gt;
	press = press,&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>en&gt;The wub</name></author>
	</entry>
</feed>