From 967be4451ab64d9220bae2ffef5a3037dc96f3f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 23 Apr 2023 23:21:38 +0200 Subject: [PATCH] Reworked keybinding for special character input Related to issue #275 --- assets/js/register_events.js | 232 +++++++++++++++++++++++++++++------ docs/usage/keybindings.md | 119 ++++++++++++++++++ 2 files changed, 315 insertions(+), 36 deletions(-) create mode 100644 docs/usage/keybindings.md diff --git a/assets/js/register_events.js b/assets/js/register_events.js index 9fcbd6cc..06f48ec1 100644 --- a/assets/js/register_events.js +++ b/assets/js/register_events.js @@ -72,63 +72,223 @@ class RegisterEventHelper { this.registerLoadHandler(() => { //@ts-ignore $("input[type=text], input[type=search]").unbind("keydown").keydown(function (event) { - let greek = event.altKey; + let use_special_char = event.altKey; let greek_char = ""; - if (greek){ + if (use_special_char){ + //Use the key property to determine the greek letter (as it is independent of the keyboard layout) switch(event.key) { - case "w": //Omega - greek_char = '\u2126'; - break; - case "u": - case "m": //Micro - greek_char = "\u00B5"; - break; - case "p": //Phi - greek_char = "\u03C6"; - break; - case "a": //Alpha + //Greek letters + case "a": //Alpha (lowercase) greek_char = "\u03B1"; break; - case "b": //Beta + case "A": //Alpha (uppercase) + greek_char = "\u0391"; + break; + case "b": //Beta (lowercase) greek_char = "\u03B2"; break; - case "c": //Gamma + case "B": //Beta (uppercase) + greek_char = "\u0392"; + break; + case "g": //Gamma (lowercase) greek_char = "\u03B3"; break; - case "d": //Delta + case "G": //Gamma (uppercase) + greek_char = "\u0393"; + break; + case "d": //Delta (lowercase) greek_char = "\u03B4"; break; - case "l": //Pound - greek_char = "\u00A3"; + case "D": //Delta (uppercase) + greek_char = "\u0394"; break; - case "y": //Yen - greek_char = "\u00A5"; + case "e": //Epsilon (lowercase) + greek_char = "\u03B5"; break; - case "o": //Yen - greek_char = "\u00A4"; + case "E": //Epsilon (uppercase) + greek_char = "\u0395"; break; - case "1": //Sum symbol - greek_char = "\u2211"; + case "z": //Zeta (lowercase) + greek_char = "\u03B6"; break; - case "2": //Integral - greek_char = "\u222B"; + case "Z": //Zeta (uppercase) + greek_char = "\u0396"; break; - case "3": //Less-than or equal - greek_char = "\u2264"; + case "h": //Eta (lowercase) + greek_char = "\u03B7"; break; - case "4": //Greater than or equal - greek_char = "\u2265"; + case "H": //Eta (uppercase) + greek_char = "\u0397"; break; - case "5": //PI - greek_char = "\u03c0"; + case "q": //Theta (lowercase) + greek_char = "\u03B8"; break; - case "q": //Copyright - greek_char = "\u00A9"; + case "Q": //Theta (uppercase) + greek_char = "\u0398"; break; - case "e": //Euro - greek_char = "\u20AC"; + case "i": //Iota (lowercase) + greek_char = "\u03B9"; break; + case "I": //Iota (uppercase) + greek_char = "\u0399"; + break; + case "k": //Kappa (lowercase) + greek_char = "\u03BA"; + break; + case "K": //Kappa (uppercase) + greek_char = "\u039A"; + break; + case "l": //Lambda (lowercase) + greek_char = "\u03BB"; + break; + case "L": //Lambda (uppercase) + greek_char = "\u039B"; + break; + case "m": //Mu (lowercase) + greek_char = "\u03BC"; + break; + case "M": //Mu (uppercase) + greek_char = "\u039C"; + break; + case "n": //Nu (lowercase) + greek_char = "\u03BD"; + break; + case "N": //Nu (uppercase) + greek_char = "\u039D"; + break; + case "x": //Xi (lowercase) + greek_char = "\u03BE"; + break; + case "X": //Xi (uppercase) + greek_char = "\u039E"; + break; + case "o": //Omicron (lowercase) + greek_char = "\u03BF"; + break; + case "O": //Omicron (uppercase) + greek_char = "\u039F"; + break; + case "p": //Pi (lowercase) + greek_char = "\u03C0"; + break; + case "P": //Pi (uppercase) + greek_char = "\u03A0"; + break; + case "r": //Rho (lowercase) + greek_char = "\u03C1"; + break; + case "R": //Rho (uppercase) + greek_char = "\u03A1"; + break; + case "s": //Sigma (lowercase) + greek_char = "\u03C3"; + break; + case "S": //Sigma (uppercase) + greek_char = "\u03A3"; + break; + case "t": //Tau (lowercase) + greek_char = "\u03C4"; + break; + case "T": //Tau (uppercase) + greek_char = "\u03A4"; + break; + case "u": //Upsilon (lowercase) + greek_char = "\u03C5"; + break; + case "U": //Upsilon (uppercase) + greek_char = "\u03A5"; + break; + case "f": //Phi (lowercase) + greek_char = "\u03C6"; + break; + case "F": //Phi (uppercase) + greek_char = "\u03A6"; + break; + case "c": //Chi (lowercase) + greek_char = "\u03C7"; + break; + case "C": //Chi (uppercase) + greek_char = "\u03A7"; + break; + case "y": //Psi (lowercase) + greek_char = "\u03C8"; + break; + case "Y": //Psi (uppercase) + greek_char = "\u03A8"; + break; + case "w": //Omega (lowercase) + greek_char = "\u03C9"; + break; + case "W": //Omega (uppercase) + greek_char = "\u03A9"; + break; + } + + //Use keycodes for special characters as the shift char on the number keys are layout dependent + switch (event.keyCode) { + case 49: //1 key + //Product symbol on shift, sum on no shift + greek_char = event.shiftKey ? "\u220F" : "\u2211"; + break; + case 50: //2 key + //Integral on no shift, partial derivative on shift + greek_char = event.shiftKey ? "\u2202" : "\u222B"; + break; + case 51: //3 key + //Less than or equal on no shift, greater than or equal on shift + greek_char = event.shiftKey ? "\u2265" : "\u2264"; + break; + case 52: //4 key + //Empty set on shift, infinity on no shift + greek_char = event.shiftKey ? "\u2205" : "\u221E"; + break; + case 53: //5 key + //Not equal on shift, approx equal on no shift + greek_char = event.shiftKey ? "\u2260" : "\u2248"; + break; + case 54: //6 key + //Element of on no shift, not element of on shift + greek_char = event.shiftKey ? "\u2209" : "\u2208"; + break; + case 55: //7 key + //And on shift, or on no shift + greek_char = event.shiftKey ? "\u2227" : "\u2228"; + break; + case 56: //8 key + //Proportional to on shift, angle on no shift + greek_char = event.shiftKey ? "\u221D" : "\u2220"; + break; + case 57: //9 key + //Cube root on shift, square root on no shift + greek_char = event.shiftKey ? "\u221B" : "\u221A"; + break; + case 48: //0 key + //Minus-Plus on shift, plus-minus on no shift + greek_char = event.shiftKey ? "\u2213" : "\u00B1"; + break; + + //Special characters + case 219: //hyphen (or ß on german layout) + //Copyright on no shift, TM on shift + greek_char = event.shiftKey ? "\u2122" : "\u00A9"; + break; + case 191: //forward slash (or # on german layout) + //Generic currency on no shift, paragraph on shift + greek_char = event.shiftKey ? "\u00B6" : "\u00A4"; + break; + + //Currency symbols + case 192: //: or (ö on german layout) + //Euro on no shift, pound on shift + greek_char = event.shiftKey ? "\u00A3" : "\u20AC"; + break; + case 221: //; or (ä on german layout) + //Yen on no shift, dollar on shift + greek_char = event.shiftKey ? "\u0024" : "\u00A5"; + break; + + } if(greek_char=="") return; diff --git a/docs/usage/keybindings.md b/docs/usage/keybindings.md new file mode 100644 index 00000000..f3224b89 --- /dev/null +++ b/docs/usage/keybindings.md @@ -0,0 +1,119 @@ +--- +title: Keybindings +layout: default +parent: Usage +--- + +# Keybindings + +This page lists all the keybindings of Part-DB. Currently, there are only the special character keybindings. + +## Special characters +Using the keybindings below (Alt + key) you can insert special characters into the text fields of Part-DB. This works on all text and search fields in Part-DB. + +### Greek letters + +| Key | Character | +|---------------------|---------------------| +| **Alt + a** | α (Alpha) | +| **Alt + Shift + A** | Α (Alpha uppercase) | +| **Alt + b** | β (Beta) | +| **Alt + Shift + B** | Β (Beta uppercase) | +| **Alt + g** | γ (Gamma) | +| **Alt + Shift + G** | Γ (Gamma uppercase) | +| **Alt + d** | δ (Delta) | +| **Alt + Shift + D** | Δ (Delta uppercase) | +| **Alt + e** | ε (Epsilon) | +| **Alt + Shift + E** | Ε (Epsilon uppercase) | +| **Alt + z** | ζ (Zeta) | +| **Alt + Shift + Z** | Ζ (Zeta uppercase) | +| **Alt + h** | η (Eta) | +| **Alt + Shift + H** | Η (Eta uppercase) | +| **Alt + q** | θ (Theta) | +| **Alt + Shift + Q** | Θ (Theta uppercase) | +| **Alt + i** | ι (Iota) | +| **Alt + Shift + I** | Ι (Iota uppercase) | +| **Alt + k** | κ (Kappa) | +| **Alt + Shift + K** | Κ (Kappa uppercase) | +| **Alt + l** | λ (Lambda) | +| **Alt + Shift + L** | Λ (Lambda uppercase) | +| **Alt + m** | μ (Mu) | +| **Alt + Shift + M** | Μ (Mu uppercase) | +| **Alt + n** | ν (Nu) | +| **Alt + Shift + N** | Ν (Nu uppercase) | +| **Alt + x** | ξ (Xi) | +| **Alt + Shift + x** | Ξ (Xi uppercase) | +| **Alt + o** | ο (Omicron) | +| **Alt + Shift + O** | Ο (Omicron uppercase) | +| **Alt + p** | π (Pi) | +| **Alt + Shift + P** | Π (Pi uppercase) | +| **Alt + r** | ρ (Rho) | +| **Alt + Shift + R** | Ρ (Rho uppercase) | +| **Alt + s** | σ (Sigma) | +| **Alt + Shift + S** | Σ (Sigma uppercase) | +| **Alt + t** | τ (Tau) | +| **Alt + Shift + T** | Τ (Tau uppercase) | +| **Alt + u** | υ (Upsilon) | +| **Alt + Shift + U** | Υ (Upsilon uppercase) | +| **Alt + f** | φ (Phi) | +| **Alt + Shift + F** | Φ (Phi uppercase) | +| **Alt + y** | ψ (Psi) | +| **Alt + Shift + Y** | Ψ (Psi uppercase) | +| **Alt + c** | χ (Chi) | +| **Alt + Shift + C** | Χ (Chi uppercase) | +| **Alt + w** | ω (Omega) | +| **Alt + Shift + W** | Ω (Omega uppercase) | + +### Mathematical symbols + +| Key | Character | +|----------------------|-------------------------------------------| +| **Alt + 1** | ∑ (Sum symbol) | +| **Alt + Shift + 1** | ∏ (Product symbol) | +| **Alt + 2** | ∫ (Integral symbol) | +| **Alt + Shift + 2** | ∂ (Partial derivation) | +| **Alt + 3** | ≤ (Less or equal symbol) | +| **Alt + Shift + 3** | ≥ (Greater or equal symbol) | +| **Alt + 4** | ∞ (Infinity symbol) | +| **Alt + Shift + 4** | ∅ (Empty set symbol) | +| **Alt + 5** | ≈ (Approximatley) | +| **Alt + Shift + 5** | ≠ (Not equal symbol) | +| **Alt + 6** | ∈ (Element of) | +| **Alt + Shift + 6** | ∉ (Not element of) | +| **Alt + 7** | ∨ (Logical or) | +| **Alt + Shift + 7** | ∧ (Logical and) | +| **Alt + 8** | ∠ (Angle symbol) | +| **Alt + Shift + 8** | ∝ (Proportional to) | +| **Alt + 9** | √ (Square root) | +| **Alt + Shift + 9** | ∛ (Cube root) | +| **Alt + 0** | ± (Plus minus) | +| **Alt + Shift + 0** | ∓ (Minus plus) | + +### Currency symbols + +Please not the following keybindings are bound to a specific keycode. The key character is not the same on all keyboards. +It is given here for a US keyboard layout. + +For a German keyboard layout, replace ; with ö, and ' with ä. + +| Key | Character | +|---------------------------------|---------------------------| +| **Alt + ;** (code 192) | € (Euro currency symbol) | +| **Alt + Shift + ;** (code 192) | £ (Pound currency symbol) | +| **Alt + '** (code 222) | ¥ (Yen currency symbol) | +| **Alt + Shift + '** (code 222) | $ (Dollar currency symbol) | + + +### Others + +Please not the following keybindings are bound to a specific keycode. The key character is not the same on all keyboards. +It is given here for a US keyboard layout. + +For a German keyboard layout, replace `[` with `0`, and `]` with `´`. + +| Key | Character | +|--------------------------------|--------------------| +| **Alt + [** (code 219) | © (Copyright char) | +| **Alt + Shift + [** (code 219) | (Registered char) | +| **Alt + ]** (code 221) | ™ (Trademark char) | +| **Alt + Shift + ]** (code 221) | (Degree char) |