洛谷 - 讨论区编辑器快捷键

为洛谷讨论区的编辑器添加一些快捷键

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         洛谷 - 讨论区编辑器快捷键
// @namespace    http://tampermonkey.net/
// @version      2
// @description  为洛谷讨论区的编辑器添加一些快捷键
// @author       Henry-ZHR
// @match        https://www.luogu.com.cn/discuss/*
// @grant        none
// @require      https://cdn.jsdelivr.net/npm/jquery@3/dist/jquery.min.js
// @license      WTFPL; http://www.wtfpl.net/txt/copying/
// ==/UserScript==

(function() {
  "use strict";
  $.noConflict();
  var submitOnKeydown = function(e) {
    if (e.ctrlKey && (e.keyCode == 10 || e.keyCode == 13)) {
      if (document.location.href.startsWith("https://www.luogu.com.cn/discuss/lists")) {
        // 发帖
        document.getElementById("submitpost").click();
      }
      else {
        // 回复
        document.getElementById("submit-reply").click();
      }
    }
  };
  jQuery("textarea").keydown(function(e) {
    submitOnKeydown(e);

    // 粗体 Ctrl+B
    if (e.ctrlKey && e.keyCode == 66) {
      event.preventDefault();
      jQuery("ul.mp-editor-menu a[title=\"粗体\"]")[0].click();
    }

    // 删除线 Ctrl+Shift+X
    if (e.ctrlKey && e.shiftKey && e.keyCode == 88) {
      event.preventDefault();
      jQuery("ul.mp-editor-menu a[title=\"删除线\"]")[0].click();
    }

    // 斜体 Ctrl+I
    if (e.ctrlKey && e.keyCode == 73) {
      event.preventDefault();
      jQuery("ul.mp-editor-menu a[title=\"斜体\"]")[0].click();
    }

    // 插入链接 Ctrl+K
    if (e.ctrlKey && e.keyCode == 75) {
      event.preventDefault();
      jQuery("ul.mp-editor-menu a[title=\"插入链接\"]")[0].click();
    }

    // 从 Telegram Desktop 抄的
  });
  jQuery("input[name=\"captcha\"]").keydown(submitOnKeydown);
})();