As an intermediate alternative between a hardware keyboard and a graphical symbol picker, I use an .XCompose file with contents that look like this:

    # GREEK
    <Multi_key> <g> <A>    : "Α"   U0391    # GREEK CAPITAL LETTER ALPHA
    <Multi_key> <g> <a>    : "α"   U03B1    # GREEK SMALL LETTER ALPHA
    <Multi_key> <g> <B>    : "Β"   U0392    # GREEK CAPITAL LETTER BETA
    <Multi_key> <g> <b>    : "β"   U03B2    # GREEK SMALL LETTER BETA
    <Multi_key> <g> <D>    : "Δ"   U0394    # GREEK CAPITAL LETTER DELTA
    <Multi_key> <g> <d>    : "δ"   U03B4    # GREEK SMALL LETTER DELTA
    <Multi_key> <g> <E>    : "Ε"   U0395    # GREEK CAPITAL LETTER EPSILON
    <Multi_key> <g> <e>    : "ε"   U03B5    # GREEK SMALL LETTER EPSILON

    ...

    # Math Symbols
    <Multi_key> <i> <n>    : "∈"   U2208 # IN
    <Multi_key> <f> <a>    : "∀"   U2200 # FOR ALL
    <Multi_key> <t> <e>    : "∃"   U2203 # THERE EXISTS
    <Multi_key> <a> <n> <d>    : "∧"   U2227 # AND
    <Multi_key> <o> <r>    : "∨"   U2228 # OR
    <Multi_key> <less> <parenleft>  : "⟨" U27E8     # MATHEMATICAL LEFT ANGLE BRACKET
    <Multi_key> <greater> <parenright>: "⟩" U27E9   # MATHEMATICAL RIGHT ANGLE BRACKET
    <Multi_key> <d> <d>    : "∂" U8706 # DEL
    <Multi_key> <n> <b>    : "∇" U8711 # NABLA
I've used this for perhaps the last 10 years now and I don't think I could go back to working on a machine without configurable compose key functionality at this point.

This. Using a Compose key [0] covers a vast range of input use cases and is eminently customizable. For Windows there is WinCompose [1]. For macOS there is [2].

[0] https://en.wikipedia.org/wiki/Compose_key

[1] https://github.com/SamHocevar/wincompose

[2] https://github.com/Granitosaurus/macos-compose

Compose functionality is absolutely awesome. I don't understand why it's not more widespread. I use it for all sorts of stuff, from emojis, to symbols, to diacretics. It's great!