For web browsers, I just wrote a user script to address this for my own evil purposes, at least in Firefox with the Greasemonkey add-on and in Chrome with the Tampermonkey add-on.
GitHub page | Direct install | License
Unknown whether the script works in other browsers with Tampermonkey, but my guess is not fully. I might hack compatibility for other browsers if someone pays me enough.
With the script installed in your browser, Alt+number row combinations should work like Alt+NumPad would on a full-size keyboard. Additionally, Alt+x will translate the hexadecimal value preceding the text caret into a Unicode value, similar to MS Office.
Extended characters begin with a zero:
£ works with Alt+0163
° works with Alt+0176
² works with Alt+0178
For values between 32 - 255 without a leading zero, glyphs are retrieved using an OEM codepage table (with generous but unconsenting help from the SheetJS project's codepage abstractions). The following examples are made with codepage=437 (en-US) defined in the user script:
Ω works with Alt+234 (no leading zero)
∞ works with Alt+236 (no leading zero)
£ works with Alt+156 (no leading zero)
You can also type a hex value then hit Alt+x to perform the conversion. It works like MS Word, but with looser interpretation of the hex notation. My goal is that if you forget the proper way to activate an Alt+x sequence, just try something and it'll probably work as intended.
✓ results from typing 2713 then hitting Alt+x
✓ also results from typing 0x2713 then hitting Alt+x
✓ also results from typing \u2713 then hitting Alt+x
✓ also results from typing U+2713 then hitting Alt+x
✓ also results from typing 2713, highlighting it, then hitting Alt+x