User:Jyril/hotkeys.js
Jump to navigation
Jump to search
Note: You may have to bypass your browser’s cache to see the changes. In addition, after saving a sitewide CSS file such as MediaWiki:Common.css, it will take 5-10 minutes before the changes take effect, even if you clear your cache.
- Mozilla / Firefox / Safari: hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (Command-R on a Macintosh);
- Konqueror and Chrome: click Reload or press F5;
- Opera: clear the cache in Tools → Preferences;
- Internet Explorer: hold Ctrl while clicking Refresh, or press Ctrl-F5.
- This script lacks a documentation subpage. Please create it.
- Useful links: root page • root page’s subpages • links • redirects • your own
// This defines some control-key shortcuts you can use in text fields.
// IE not supported. See talk page for documentation.
// by Greg Ubben
// Add some control hotkeys for easily entering right-arrows (→) and other
// characters and phrases in the edit summary, edit box, or other text fields.
// hotkeys[] can be defined to augment the defaults. Type Ctrl-? to list all.
var hotkeys = {
'a' : '===Adjective===\n{{fi-adj||empi|in}}\n',
'b' : '===Adverb===\n{{fi-adv|}}\n',
'd' : '====Declension====\n{{fi-decl-|}}\n',
'e' : '===Etymology===\n',
'g' : '',
'h' : '',
'i' : '',
'j' : '',
'k' : '',
'm' : '{{compound|lang=fi|}}',
'n' : '===Noun===\n{{fi-noun}}\n',
'o' : '====Conjugation====\n{{fi-conj-|}}\n',
'p' : '{{prefix|lang=fi|}}',
'q' : '',
's' : '{{suffix|lang=fi|}}',
't' : '====Translations====\n{{trans-top|}}\n{{trans-mid}}\n{{trans-bottom}}\n',
'u' : '',
'w' : '===Verb===\n{{fi-verb|cat=}}\n',
'y' : ''
};
function hotkey(e) {
if (e && e.altKey && hotkeys[String.fromCharCode( e.charCode )])
{
var newtxt = hotkeys[String.fromCharCode( e.charCode )];
var before = this.value.slice( 0, this.selectionStart );
var after = this.value.slice( this.selectionEnd );
var scroll = this.scrollTop;
if (newtxt == "MENU") { // type Ctrl-? for a list
var menu = "";
for (var key in hotkeys) {
var name = key.toUpperCase().replace(",", "<").replace(".", ">");
var value = hotkeys[key].replace(/\n/g, "•").slice(0,40);
if (value && value != newtxt)
menu += "\u200E" + name + " \t" + value + "\n";
}
alert( menu );
return false;
}
// hack to not override Ctrl-F, Ctrl-T, etc. in main text area
//
if (newtxt.search(/\[\[WP:|\bfix/i) >= 0 && this.id == "wpTextbox1") {
return true;
}
if (newtxt.search(/^\[*\w./) >= 0 && this.id != "wpTextbox1") {
if (before.search(/[^\s;,]$/) >= 0) before += "; ";
if (after.search(/^[^\s;,]/) >= 0) newtxt += "; ";
}
this.value = before + newtxt + after;
this.selectionStart = this.selectionEnd = before.length + newtxt.length;
this.scrollTop = scroll; // don't lose our position
return false;
}
return true;
}
$( function()
{
var defaultAlt = {
"," : "←", // Ctrl < left arrow
"." : "→", // Ctrl > right arrow
"-" : "–", // Ctrl - en dash
"=" : "—", // Ctrl = em dash
"7" : "&" + "nbsp;", // Ctrl & non-breaking space
"l" : "link rename",
"r" : "reverted [[WP:VAND|vandalism]]",
"s" : "[[WP:STYLE]]",
"/" : "MENU" // special function
};
var fields = { wpSummary:0, wpTextbox1:0, wpReason:0, wpUploadDescription:0 };
if (wgAction != "view" || wgCanonicalSpecialPageName)
{
if (typeof(hotkeys) == 'undefined') hotkeys = {};
for (var key in defaultAlt) {
if (hotkeys[key] == null)
hotkeys[key] = defaultAlt[key];
}
for (var field in fields) {
var f = document.getElementById(field);
if (f) f.onkeypress = hotkey;
}
}
});