4

I've upgraded to Ubuntu 19.04 recently to do some testing, but I quickly had to realize that my pipe character (|) on my laptop keyboard does not get recognized correctly as such. Instead a single-quote (') is inserted. I'm on a GS65 notebook that houses a steelseries keyboard which has some rather wanky key-layout to begin with. The layout I'm using is German. (picture for reference: https://www.notebookcheck.com/fileadmin/Notebooks/MSI/GS65_8RF-019DE_Stealth_Thin/gs65_15.jpg)

I tried the usual dpkg-reconfigure keyboard-layout + "Gerneric w/ 105 keys" + restart, but that didn't solve my issue. Note all other keys do work fine (including special German characters ä, ö, ü, ß). It's only this one key that tries to mess with me.

The issue only occurs on the internal keyboard. Using a USB keyboard everything works fine. Aside from that the issue persists both on tty and graphical interface.

Interestingly that means that my single-quote is mapped twice. One being above the ENTER key, and the other one wrongly assigned to "<, >, |" next to ALT-GR. This holds true for other keyboard layouts such as English US aswell.

Did I perhaps select the wrong keyboard-layout? If so, what would be the correct option?

Btw. the issue only occured after upgrading from 18.04 LTS to 19.04.

2 Answers2

4

A workaround:

If you define a compose key, you can type the | character (Vertical Line) by pressing:

Compose followed by V followed by L

1

Found this in the Arch Wiki related to the notebook in question. It works for me on my German keyboard. Perhaps it can also be applied to other devices.

As of writing this answer Ubuntu 19.04 uses the buggy systemd v240. Until the package is upgraded on the official repository, here's a workaround from the wiki I've linked:

For a UK keyboard it is the backslash/pipe key and you can correct the scancode to keycode mapping with # setkeycodes 56 86

Note: I found that setkeycodes 56 86 must be entered before the x11 session is created. The wiki recommends putting this command in a script file and invoking it via systemd on boot.