![]() | 此模組使用Lua語言: |
通常用於指示遊戲中的操作按鍵。
單一按鍵
一般按鍵
{{keypress|A}}
,效果為A;{{keypress|1}}
,效果為1;{{keypress|;}}
,效果為;;{{keypress|F1}}
,效果為F1;{{keypress|Ctrl}}
,效果為Ctrl。
- 注意:對於按鍵「|」和「=」,因為它們同時作為Wiki語言標記符號,若需要使用該模板顯示這些符號,有以下解決方法:
- 使用
{{!}}
、{{=}}
代替:
{{keypress|{{!}}}}
,效果為|;{{keypress|{{=}}}}
,效果為=。
- 替換為對應HTML代碼:
|
→ |、=
→ =; - 字符兩側加上
<nowiki></nowiki>
。
- 使用
特殊按鍵
{{keypress|Tab}}
,效果為Tab ↹;{{keypress|Caps Lock}}
,效果為⇪ Caps Lock;{{keypress|Shift}}
,效果為⇧ Shift;{{keypress|Backspace}}
,效果為← Backspace;{{keypress|Enter}}
,效果為↵ Enter;{{keypress|Up}}
,效果為↑;{{keypress|Down}}
,效果為↓;{{keypress|Left}}
,效果為←;{{keypress|Right}}
,效果為→;{{keypress|Win}}
,效果為⊞ Win;{{keypress|Menu}}
,效果為≣ Menu;{{keypress|Cmd}}
,效果為⌘ Cmd;{{keypress|Opt}}
,效果為⌥ Opt。
按鍵組合
用|
將各按鍵隔開即可表示組合鍵,如:
{{keypress|Ctrl|V}}
,效果為Ctrl+V;{{keypress|Win|Tab}}
,效果為⊞ Win+Tab ↹;{{keypress|Win|Ctrl|F}}
,效果為⊞ Win+Ctrl+F。
使用chain
參數可自定義各按鍵間分隔符(默認為「+」),如:
{{keypress|Ctrl|F|chain=&}}
,效果為Ctrl&F;{{keypress|Win|Shift|S|chain=,}}
,效果為⊞ Win,⇧ Shift,S。
類似地,有chain first
、chain second
、chain third
等參數用於單獨更換特定位置的分隔符,如:
{{keypress|Alt|Shift|Del|chain first=,}}
,效果為Alt,⇧ Shift+Del;{{keypress|Alt|Shift|Del|chain second=?}}
,效果為Alt+⇧ Shift?Del;{{keypress|Ctrl|Alt|Shift|D|chain first=或|chain second=按住|chain third=+}}
,效果為Ctrl或Alt按住⇧ Shift+D。
混合使用:
{{keypress|Ctrl|0}}{{keypress|1}}{{keypress|2}}{{keypress|3}}
,效果為Ctrl+0123。
其他按鍵
用於特殊設備按鍵。
{{keypress|l-down}}
,效果為L↓;{{keypress|c-left}}
,效果為C←;{{keypress|r-up}}
,效果為R↑;{{keypress|l-nw}}
,效果為L↖;{{keypress|c-se}}
,效果為C↘;{{keypress|r-ne}}
,效果為R↗;{{keypress|ex}}
,效果為×;{{keypress|circle}}
,效果為○;{{keypress|triangle}}
,效果為△;{{keypress|square}}
,效果為□。
-- This module implements {{key press}}. local kbdPrefix = '<kbd class=' .. '"keyboard-key nowrap" ' .. 'style="border: 1px solid #aaa; ' .. -- The following is an expansion of {{border-radius|0.2em}} '-moz-border-radius: 0.2em; -webkit-border-radius: 0.2em; border-radius: 0.2em; ' .. -- The following is an expansion of {{box-shadow|0.1em|0.1em|0.2em|rgba(0,0,0,0.1)}} '-moz-box-shadow: 0.1em 0.1em 0.2em rgba(0,0,0,0.1); -webkit-box-shadow: 0.1em 0.1em 0.2em rgba(0,0,0,0.1); box-shadow: 0.1em 0.1em 0.2em rgba(0,0,0,0.1); ' .. 'background-color: #f9f9f9; ' .. -- The following is an expansion of {{linear-gradient|top|#eee, #f9f9f9, #eee}} 'background-image: -moz-linear-gradient(top, #eee, #f9f9f9, #eee); background-image: -o-linear-gradient(top, #eee, #f9f9f9, #eee); background-image: -webkit-linear-gradient(top, #eee, #f9f9f9, #eee); background-image: linear-gradient(to bottom, #eee, #f9f9f9, #eee); ' .. -- Force black color to fix [[phab:T200258]] 'color: #000; ' .. 'padding: 0.1em 0.3em; ' .. 'font-family: inherit; ' .. 'font-size: 0.85em;">' local kbdSuffix = '</kbd>' local keyText = { ['caps lock'] = '⇪ Caps Lock', ['[[caps lock]]'] = '⇪ [[Caps Lock]]', ['shift'] = '⇧ Shift', ['[[shift key|shift]]'] = '⇧ [[Shift key|Shift]]', ['enter'] = '↵ Enter', ['[[enter key|enter]]'] = '↵ [[Enter key|Enter]]', ['cmd'] = '⌘ Cmd', ['[[command key|cmd]]'] = '⌘ [[Command key|Cmd]]', ['command'] = '⌘ Command', ['[[command key|command]]'] = '⌘ [[Command key|Command]]', ['opt'] = '⌥ Opt', ['[[option key|opt]]'] = '⌥ [[Option key|Opt]]', ['option'] = '⌥ Option', ['[[option key|option]]'] = '⌥ [[Option key|Option]]', ['tab'] = 'Tab ↹', ['[[tab key|tab]]'] = '[[Tab key|Tab]] ↹', ['backspace'] = '← Backspace', ['[[backspace]]'] = '← [[Backspace]]', ['win'] = '⊞ Win', ['[[windows key|win]]'] = '⊞ [[Windows key|Win]]', ['menu'] = '≣ Menu', ['[[menu key|menu]]'] = '≣ [[Menu key|Menu]]', ['up'] = '↑', ['[[arrow keys|up]]'] = '[[Arrow keys|↑]]', ['down'] = '↓', ['[[arrow keys|down]]'] = '[[Arrow keys|↓]]', ['left'] = '←', ['[[arrow keys|left]]'] = '[[Arrow keys|←]]', ['right'] = '→', ['[[arrow keys|right]]'] = '[[Arrow keys|→]]', ['asterisk'] = '*', ['hash'] = '#', ['[[#]]'] = '[[Number sign|#]]', ['colon'] = ':', ['[[:]]'] = '[[Colon (punctuation)|:]]', ['pipe'] = '|', ['[[|]]'] = '[[Pipe symbol||]]', ['semicolon'] = ';', ['[[;]]'] = '[[Semi-colon|;]]', ['equals'] = '=', -- Left & right analog sticks. ['l up'] = 'L↑', ['l down'] = 'L↓', ['l left'] = 'L←', ['l right'] = 'L→', ['l ne'] = 'L↗', ['l se'] = 'L↘', ['l nw'] = 'L↖', ['l sw'] = 'L↙', ['r up'] = 'R↑', ['r down'] = 'R↓', ['r left'] = 'R←', ['r right'] = 'R→', ['r ne'] = 'R↗', ['r se'] = 'R↘', ['r nw'] = 'R↖', ['r sw'] = 'R↙', -- PlayStation. ['ex'] = '×', ['circle'] = '○', ['square'] = '□', ['triangle'] = '△', -- Nintendo 64 and GameCube. ['c up'] = 'C↑', ['c down'] = 'C↓', ['c left'] = 'C←', ['c right'] = 'C→', ['c ne'] = 'C↗', ['c se'] = 'C↘', ['c nw'] = 'C↖', ['c sw'] = 'C↙', } local keyAlias = { -- ['alternate name for key (alias)'] = 'name for key used in key table' ['[[cmd key|cmd]]'] = '[[command key|cmd]]', ['[[cmd key|command]]'] = '[[command key|command]]', ['[[opt key|opt]]'] = '[[option key|opt]]', ['[[option key]]'] = '[[option key|option]]', ['[[opt key|option]]'] = '[[option key|option]]', ['[[win key|win]]'] = '[[windows key|win]]', ['*'] = 'asterisk', ['#'] = 'hash', [':'] = 'colon', [';'] = 'semicolon', ['l-up'] = 'l up', ['l-down'] = 'l down', ['l-left'] = 'l left', ['l-right'] = 'l right', ['l-ne'] = 'l ne', ['l-se'] = 'l se', ['l-nw'] = 'l nw', ['l-sw'] = 'l sw', ['r-up'] = 'r up', ['r-down'] = 'r down', ['r-left'] = 'r left', ['r-right'] = 'r right', ['r-ne'] = 'r ne', ['r-se'] = 'r se', ['r-nw'] = 'r nw', ['r-sw'] = 'r sw', ['ps x'] = 'ex', ['ps c'] = 'circle', ['ps s'] = 'square', ['ps t'] = 'triangle', ['c-up'] = 'c up', ['c-down'] = 'c down', ['c-left'] = 'c left', ['c-right'] = 'c right', ['c-ne'] = 'c ne', ['c-se'] = 'c se', ['c-nw'] = 'c nw', ['c-sw'] = 'c sw', } local Collection = {} Collection.__index = Collection do function Collection:add(item) if item ~= nil then self.n = self.n + 1 self[self.n] = item end end function Collection:join(sep) return table.concat(self, sep) end function Collection:sort(comp) table.sort(self, comp) end function Collection.new() return setmetatable({n = 0}, Collection) end end local function keyPress(args) local chainNames = { 'chain first', 'chain second', 'chain third', 'chain fourth', 'chain fifth', 'chain sixth', 'chain seventh', 'chain eighth', 'chain ninth', } local result = Collection.new() local chainDefault = args.chain or '+' for i, id in ipairs(args) do if i > 1 then result:add(args[chainNames[i - 1]] or chainDefault) end local lc = id:lower() local text = keyText[lc] or keyText[keyAlias[lc]] or id result:add(kbdPrefix .. text .. kbdSuffix) end return result:join() end local function keypress(frame) -- Called by "{{key press|...}}". -- Using the template doubles the post‐expand include size. return keyPress(frame:getParent().args) end local function press(frame) -- Called by "{{#invoke:key|press|...}}". return keyPress(frame.args) end return { keypress = keypress, press = press, }