(Created page with "-- This module implements {{key press}}. local kbdPrefix = '<kbd class="keyboard-key nowrap">' local kbdSuffix = '</kbd>' local keyText = { ['caps lock'] = '⇪ Caps Lock', ['caps lock'] = '⇪ Caps Lock', ['shift'] = '⇧ Shift', ['shift'] = '⇧ Shift', ['enter'] = '↵ Enter', ['enter'] = '↵ Enter', ['cmd'] = '⌘ Cmd', ['cmd'] = '⌘ Cmd', ['command'] = '⌘...") |
No edit summary |
||
Line 7: | Line 7: | ||
local keyText = { | local keyText = { | ||
['caps lock'] = '⇪ Caps Lock', | ['caps lock'] = '⇪ Caps Lock', | ||
[' | ['caps lock'] = '⇪', | ||
['shift'] = '⇧ Shift', | ['shift'] = '⇧ Shift', | ||
['enter'] = '↵ Enter', | ['enter'] = '↵ Enter', | ||
['cmd'] = '⌘ Cmd', | ['cmd'] = '⌘ Cmd', | ||
['command'] = '⌘ Command', | ['command'] = '⌘ Command', | ||
['opt'] = '⌥ Opt', | ['opt'] = '⌥ Opt', | ||
['option'] = '⌥ Option', | ['option'] = '⌥ Option', | ||
['tab'] = 'Tab ↹', | ['tab'] = 'Tab ↹', | ||
['backspace'] = '← Backspace', | ['backspace'] = '← Backspace', | ||
['win'] = '⊞ Win', | ['win'] = '⊞ Win', | ||
['menu'] = '≣ Menu', | ['menu'] = '≣ Menu', | ||
['up'] = '↑', | ['up'] = '↑', | ||
[' | ['up'] = '↑', | ||
['down'] = '↓', | |||
['down'] = '↓', | ['down'] = '↓', | ||
['left'] = '←', | ['left'] = '←', | ||
[' | ['left'] = '←', | ||
['right'] = '→', | |||
['right'] = '→', | ['right'] = '→', | ||
['asterisk'] = '*', | ['asterisk'] = '*', | ||
['hash'] = '#', | ['hash'] = '#', | ||
[' | ['#'] = '#', | ||
['colon'] = ':', | ['colon'] = ':', | ||
[' | [':'] = ':', | ||
['pipe'] = '|', | ['pipe'] = '|', | ||
[' | ['|'] = '|', | ||
['semicolon'] = ';', | ['semicolon'] = ';', | ||
[' | [';'] = ';', | ||
['equals'] = '=', | ['equals'] = '=', | ||
Line 85: | Line 75: | ||
local keyAlias = { | local keyAlias = { | ||
-- ['alternate name for key (alias)'] = 'name for key used in key table' | -- ['alternate name for key (alias)'] = 'name for key used in key table' | ||
[' | ['cmd'] = 'cmd', | ||
[' | ['command'] = 'command', | ||
[' | ['opt'] = 'opt', | ||
[' | ['option key'] = 'option', | ||
[' | ['option'] = 'option', | ||
[' | ['win'] = 'win', | ||
['*'] = 'asterisk', | ['*'] = 'asterisk', | ||
['#'] = 'hash', | ['#'] = 'hash', |
Latest revision as of 08:56, 25 June 2023
Documentation for this module may be created at Module:Key/doc
-- This module implements {{key press}}. local kbdPrefix = '<kbd class="keyboard-key nowrap">' local kbdSuffix = '</kbd>' local keyText = { ['caps lock'] = '⇪ Caps Lock', ['caps lock'] = '⇪', ['shift'] = '⇧ Shift', ['enter'] = '↵ Enter', ['cmd'] = '⌘ Cmd', ['command'] = '⌘ Command', ['opt'] = '⌥ Opt', ['option'] = '⌥ Option', ['tab'] = 'Tab ↹', ['backspace'] = '← Backspace', ['win'] = '⊞ Win', ['menu'] = '≣ Menu', ['up'] = '↑', ['up'] = '↑', ['down'] = '↓', ['down'] = '↓', ['left'] = '←', ['left'] = '←', ['right'] = '→', ['right'] = '→', ['asterisk'] = '*', ['hash'] = '#', ['#'] = '#', ['colon'] = ':', [':'] = ':', ['pipe'] = '|', ['|'] = '|', ['semicolon'] = ';', [';'] = ';', ['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'] = 'cmd', ['command'] = 'command', ['opt'] = 'opt', ['option key'] = 'option', ['option'] = 'option', ['win'] = '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 mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = 'Template:Key press/styles.css'} } .. 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, }