Last active
January 27, 2020 18:09
-
-
Save loganzartman/aeb45329ab747ae5934590a680e60d4b to your computer and use it in GitHub Desktop.
adds dead_greek-like bindings for compose key
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python3 | |
""" | |
usage: | |
chmod +x compose_dead_greek.py | |
./compose_dead_greek.py | |
""" | |
import os.path | |
# based on https://askubuntu.com/a/877344 | |
marker = "COMPOSE_DEAD_GREEK" | |
config = """ | |
# COMPOSE_DEAD_GREEK | |
# GREEK CAPITAL LETTERS | |
<Multi_key> <G> <A> : "Α" U0391 # GREEK CAPITAL LETTER ALPHA | |
<Multi_key> <G> <B> : "Β" U0392 # GREEK CAPITAL LETTER BETA | |
<Multi_key> <G> <G> : "Γ" U0393 # GREEK CAPITAL LETTER GAMMA | |
<Multi_key> <G> <D> : "Δ" U0394 # GREEK CAPITAL LETTER DELTA | |
<Multi_key> <G> <E> : "Ε" U0395 # GREEK CAPITAL LETTER EPSILON | |
<Multi_key> <G> <Z> : "Ζ" U0396 # GREEK CAPITAL LETTER ZETA | |
<Multi_key> <G> <H> : "Η" U0397 # GREEK CAPITAL LETTER ETA | |
<Multi_key> <G> <I> : "Ι" U0399 # GREEK CAPITAL LETTER IOTA | |
<Multi_key> <G> <K> : "Κ" U039A # GREEK CAPITAL LETTER KAPPA | |
<Multi_key> <G> <L> : "Λ" U039B # GREEK CAPITAL LETTER LAMDA | |
<Multi_key> <G> <M> : "Μ" U039C # GREEK CAPITAL LETTER MU | |
<Multi_key> <G> <N> : "Ν" U039D # GREEK CAPITAL LETTER NU | |
<Multi_key> <G> <P> : "Π" U03A0 # GREEK CAPITAL LETTER PI | |
<Multi_key> <G> <R> : "Ρ" U03A1 # GREEK CAPITAL LETTER RHO | |
<Multi_key> <G> <S> : "Σ" U03A3 # GREEK CAPITAL LETTER SIGMA | |
<Multi_key> <G> <T> : "Τ" U03A4 # GREEK CAPITAL LETTER TAU | |
<Multi_key> <G> <U> : "Υ" U03A5 # GREEK CAPITAL LETTER UPSILON | |
<Multi_key> <G> <F> : "Φ" U03A6 # GREEK CAPITAL LETTER PHI | |
<Multi_key> <G> <X> : "Χ" U03A7 # GREEK CAPITAL LETTER CHI | |
<Multi_key> <G> <O> : "Ω" U03A9 # GREEK CAPITAL LETTER OMEGA | |
# DOUBLES (additional stroke <Q>) | |
<Multi_key> <G> <Q> <T> : "Θ" U0398 # GREEK CAPITAL LETTER THETA | |
<Multi_key> <G> <Q> <O> : "Ο" U039F # GREEK CAPITAL LETTER OMICRON | |
<Multi_key> <G> <Q> <X> : "Ξ" U039E # GREEK CAPITAL LETTER XI | |
<Multi_key> <G> <Q> <P> : "Ψ" U03A8 # GREEK CAPITAL LETTER PSI | |
# greek small letters | |
<Multi_key> <g> <a> : "α" U03B1 # GREEK SMALL LETTER ALPHA | |
<Multi_key> <g> <b> : "β" U03B2 # GREEK SMALL LETTER BETA | |
<Multi_key> <g> <g> : "γ" U03B3 # GREEK SMALL LETTER GAMMA | |
<Multi_key> <g> <d> : "δ" U03B4 # GREEK SMALL LETTER DELTA | |
<Multi_key> <g> <e> : "ε" U03B5 # GREEK SMALL LETTER EPSILON | |
<Multi_key> <g> <z> : "ζ" U03B6 # GREEK SMALL LETTER ZETA | |
<Multi_key> <g> <h> : "η" U03B7 # GREEK SMALL LETTER ETA | |
<Multi_key> <g> <i> : "ι" U03B9 # GREEK SMALL LETTER IOTA | |
<Multi_key> <g> <k> : "κ" U03BA # GREEK SMALL LETTER KAPPA | |
<Multi_key> <g> <l> : "λ" U03BB # GREEK SMALL LETTER LAMDA | |
<Multi_key> <g> <m> : "μ" U03BC # GREEK SMALL LETTER MU | |
<Multi_key> <g> <n> : "ν" U03BD # GREEK SMALL LETTER NU | |
<Multi_key> <g> <p> : "π" U03C0 # GREEK SMALL LETTER PI | |
<Multi_key> <g> <r> : "ρ" U03C1 # GREEK SMALL LETTER RHO | |
<Multi_key> <g> <s> : "σ" U03C3 # GREEK SMALL LETTER SIGMA | |
<Multi_key> <g> <t> : "τ" U03C4 # GREEK SMALL LETTER TAU | |
<Multi_key> <g> <u> : "υ" U03C5 # GREEK SMALL LETTER UPSILON | |
<Multi_key> <g> <f> : "φ" U03C6 # GREEK SMALL LETTER PHI | |
<Multi_key> <g> <x> : "χ" U03C7 # GREEK SMALL LETTER CHI | |
<Multi_key> <g> <o> : "ω" U03C9 # GREEK SMALL LETTER OMEGA | |
# doubles (additional stroke <q>) | |
<Multi_key> <g> <q> <t> : "θ" U03B8 # GREEK SMALL LETTER THETA | |
<Multi_key> <g> <q> <o> : "ο" U03BF # GREEK SMALL LETTER OMICRON | |
<Multi_key> <g> <q> <p> : "ψ" U03C8 # GREEK SMALL LETTER PSI | |
<Multi_key> <g> <q> <s> : "ς" U03C2 # GREEK SMALL LETTER FINAL SIGMA | |
<Multi_key> <g> <q> <x> : "ξ" U03BE # GREEK SMALL LETTER XI | |
""" | |
def inject(path): | |
path = os.path.expanduser(path) | |
if os.path.exists(path): | |
with open(path, "r") as f: | |
for line in f.readlines(): | |
if marker in line: | |
print("XCompose file was not updated (already contained marker.)") | |
return | |
with open(path, "a+") as f: | |
f.write(config) | |
print("XCompose file updated. Restart your X session.") | |
if __name__ == "__main__": | |
inject("~/.XCompose") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment