Comment on YSK you can use custom keyboard symbols(keys), so you can easily enter symbols like αβγδ, or swap : -> ; and ; -> :

Ordoviz@lemmy.ml ⁨1⁩ ⁨week⁩ ago

You can also put this in ~/.config/xkb/symbols/us-custom (create the parent directories if necessary) and set the environment variable XKB_DEFAULT_LAYOUT=us-custom. This works in most Wayland compositors, including river and niri. For Hyprland, you can add this to your config file:

input {
	kb_layout = us-custom
}

If you use GNOME, run

gsettings set org.gnome.desktop.input-sources mru-sources "[('xkb', 'us-custom')]"
gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'us-custom')]"

and restart GNOME.


This is my keyboard layout (I explained some bits of it here):

default partial alphanumeric_keys
xkb_symbols "basic" {
include "us(de_se_fi)" // Umlauts (ä, ö, ü) and €

include "level5(rctrl_switch)"

key.type[Group1] = "EIGHT_LEVEL";

// Number row
key <TLDE> {[ grave,      asciitilde,  dead_grave,           dead_tilde                                       ]};
key <AE01> {[ 1,          exclam,      onesuperior,          U2081                                            ]}; // x₁
key <AE02> {[ 2,          at,          twosuperior,          U2082                                            ]}; // x₂
key <AE03> {[ 3,          numbersign,  threesuperior,        U2083                                            ]}; // x₃
key <AE06> {[ 6,          asciicircum, dead_circumflex,      dead_caron                                       ]};
key <AE08> {[ 8,          asterisk,    enfilledcircbullet,   U22C5,               infinity                    ]}; // dot operator
key <AE10> {[ 0,          parenright,  NoSymbol,             NoSymbol                                         ]};
key <AE11> {[ minus,      underscore,  endash,               emdash,              U207B                       ]}; // x⁻
key <AE12> {[ equal,      plus,        notequal,             approxeq                                         ]};

// Top row
key <AD01> {[ q,          Q,           NoSymbol,             U211A,               NoSymbol,      NoSymbol     ]}; // ℚ
key <AD02> {[ w,          W,           NoSymbol,             NoSymbol,            Greek_omega,   Greek_OMEGA  ]};
key <AD03> {[ e,          E,           NoSymbol,             NoSymbol,            Greek_epsilon, U2203        ]}; // ∃
key <AD04> {[ r,          R,           NoSymbol,             U211D,               Greek_rho,     U03F1        ]}; // ℝ ϱ
key <AD05> {[ t,          T,           U03D1,                Greek_tau,           Greek_theta,   Greek_THETA  ]}; // ϑ
key <AD08> {[ i,          I,           U21d2,                U21d4,               Greek_iota,    integral     ]}; // ⇒ ⇔
key <AD09> {[ o,          O,           NoSymbol,             NoSymbol,            Greek_omega,   Greek_OMEGA  ]};
key <AD10> {[ p,          P,           section,              paragraph,           Greek_pi,      Greek_PI     ]};

// Home row
key <AC01> {[ a,          A,           NoSymbol,             NoSymbol,            Greek_alpha,   U2200        ]}; // ∀
key <AC02> {[ s,          S,           NoSymbol,             NoSymbol,            Greek_sigma,   Greek_SIGMA  ]};
key <AC03> {[ d,          D,           NoSymbol,             NoSymbol,            Greek_delta,   Greek_DELTA  ]};
key <AC04> {[ f,          F,           NoSymbol,             NoSymbol,            Greek_phi,     Greek_PHI    ]};
key <AC05> {[ g,          G,           degree,               NoSymbol,            Greek_gamma,   Greek_GAMMA  ]};
key <AC06> {[ h,          H,           U2190,                NoSymbol,            Greek_eta,     U2225        ]}; // ← ∥
key <AC07> {[ j,          J,           U2193,                NoSymbol,            NoSymbol,      NoSymbol     ]}; // ↓
key <AC08> {[ k,          K,           U2191,                NoSymbol,            Greek_kappa,   U03F0        ]}; // ↑ ϰ
key <AC09> {[ l,          L,           U2192,                NoSymbol,            Greek_lambda,  Greek_LAMBDA ]}; // →
key <AC10> {[ semicolon,  colon,       dead_diaeresis,       NoSymbol,            NoSymbol,      NoSymbol     ]};
key <AC11> {[ apostrophe, quotedbl,    rightsinglequotemark, NoSymbol,            NoSymbol,      NoSymbol     ]};
key <AC12> {[ backslash,  bar,         U2500,                U2502,               NoSymbol,      NoSymbol     ]}; // box drawing

// Bottom row
key <AB01> {[ z,          Z,           NoSymbol,             U2124,               Greek_zeta,    U2220        ]}; // ℤ ∠
key <AB02> {[ x,          X,           multiply,             NoSymbol,            Greek_xi,      Greek_XI     ]};
key <AB03> {[ c,          C,           NoSymbol,             U2102,               Greek_chi,     copyright    ]}; // ℂ
key <AB04> {[ v,          V,           doublelowquotemark,   singlelowquotemark,  Greek_psi,     Greek_PSI    ]};
key <AB05> {[ b,          B,           leftdoublequotemark,  leftsinglequotemark, Greek_beta,    NoSymbol     ]};
key <AB06> {[ n,          N,           rightdoublequotemark, rightsinglequotemark,Greek_nu,      U2115        ]}; // ℕ
key <AB07> {[ m,          M,           U2212,                plusminus,           Greek_mu,      NoSymbol     ]}; // minus
key <AB08> {[ comma,      less,        dead_cedilla,         NoSymbol,            U27e8,         NoSymbol     ]}; // ⟨
key <AB09> {[ period,     greater,     ellipsis,             dead_abovedot,       U27e9,         NoSymbol     ]}; // ⟩
key <AB10> {[ slash,      question,    division,             questiondown,        NoSymbol,      NoSymbol     ]};
};

GNOME Settings shows a visual preview of the first four layers: Image

See also this writeup by Leon Plickat.

source
Sort:hotnewtop