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.
sga@lemmings.world 1 week ago
thank you, but what was the most amazing thing for me is a 5 year old post on lemmy