By default, no layout on my Macbook Air allows me to print backtick (`) and tilde (~) symbols. Instead, I get backslash, pipe or whatever, depending from the layout.

I changed the behavior of the key that I want to use to print tilde using the following commands:

xev
<press tilde button>
keycode <keycode from xev output> = grave asciitilde >~/.Xmodmap
xmodmap ~/.xmodmaprc 

(instructions are based on these https://stackoverflow.com/questions/17757232/switch-tab-and-backtick-keys-ubuntu-linux)

But unfortunately, after I switch the layout, I get the default behavior again.

How to make these changes permanent?


Solution 1:

The solution that worked for Timofey did not work for me for some reason. However, a solution which did work was to put the line

echo 0 > /sys/module/hid_apple/parameters/iso_layout

into /etc/rc.local.

This suggestion comes from here:

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1245081

via

https://stdio.sangwhan.com/backtick-tilde-problem-macbook-air/

Solution 2:

Okay, I solved the problem.

First off, xmodmaprc doesn't work in Ubuntu 14.04. The solution is to edit xkb (X KeyBoard extension) config files.

Find the file /usr/share/X11/xkb/symbols/pc, backup it, then open and comment out the line:

key <LSGT> {    [ less, greater, bar, brokenbar ] };

And on the next line, add the following:

key <LSGT> { [ grave, asciitilde, grave, asciitilde ] };

If you need to change configuration for another locale, check the folder /usr/share/X11/xkb/symbols/ and find the file corresponding to the locale you want to change.

To apply the changes, you have to remove all xkb cache files:

rm -rf /var/lib/xkb/*

Solution 3:

Another solution which works as an unpriviledged user is:

setxkbmap -option apple:badmap

As a priviledged user this can also be used to fix the issue in the X config of the keyboard device with something like:

# /etc/X11/xorg.conf.d/90-custom-kbd.conf
Section "InputClass"
    Identifier "keyboard defaults"
    MatchIsKeyboard "on"

    Option "XKbOptions" "apple:badmap"
EndSection

Solution 4:

On Ubuntu 16.04 with a Mac keyboard you should be able to get a tilde symbol by pressing Right Alt + ] key.