39

I prefer to use US international with dead keys keyboard layout in order to get Latin diacritics for characters like é, è, à, etc in Libreoffice in Linux Mint.

On this layout characters like ´, `, ^, " are dead keys (clicked once do nothing) that can be pressed before other letters in order to get these signs.

' with a gives á
` with a gives à
" with a gives ä

etc, but

' with c gives ć

Can I get ç in this layout in Linux?


In Windows I do not have 'US international with dead keys' but only 'US international' which seems identical, only there dead-key ' with c gives ç (in both MSOffice and LibreOffice), which I think is the expected behavior.


I had imagined this might be a all-around system-level problem in Linux. But this keyboard layout (mentioned in a comment by user BramMooij under this question) can produce in Linux the cedilla under C (Ç) with AltGr-c.

  • 1
    Can't test specifically for US keyboard, but for me on International Eng simply alt/c gives ç - no dead key required – Tetsujin May 12 '16 at 09:20
  • @Tetsujin - do you have the other diacritics in that layout, all the other French letters? Take a look at my other question please: http://superuser.com/q/1075998/162573 –  May 12 '16 at 09:23
  • @Tetsujin - I'm afraid this is OS and application specific. I will update the question and give all details (about Linux). In Windows with MSOffice 2013 things are different. –  May 12 '16 at 09:30
  • That was the conclusion I was coming to too - your dead keys are totally different to mine. Mine are e,u,i,n and ` for ´ ¨ ^ `and ~ – Tetsujin May 12 '16 at 09:31
  • @Tetsujin - this is because of the different keyboard layouts. –  May 12 '16 at 09:32
  • Potentially , and c might work. – Aganju May 12 '16 at 10:25
  • @Aganju - `,` is not a dead key in *US-International with dead keys* –  May 12 '16 at 11:09
  • @Aganju - I want to give you credit for your comments that made me look deeper into this matter, and finally found it. I'll post as answer what I found. –  May 12 '16 at 14:25
  • This also works in Windows – katriel Dec 06 '21 at 18:22

6 Answers6

38

The key combination for ç in US international with dead keys layout was there all along, but unlike the other Latin diacritics it does not involve a dead key:

AltGr+,=ç

AltGr+Shift+,=Ç

enter image description here

34

It's because the cedilla module isn't loaded by default when the locale is set to en, so you have to change the configuration files for gtk to add them:

1. Edit configuration files:

sudo vim /usr/lib/x86_64-linux-gnu/gtk-3.0/3.0.0/immodules.cache

sudo vim /usr/lib/x86_64-linux-gnu/gtk-2.0/2.10.0/immodules.cache

On both, find the lines starting with "cedilla" "Cedilla" and add :en to the line. Something like this:

"cedilla" "Cedilla" "gtk30" "/usr/share/locale" "az:ca:co:fr:gv:oc:pt:sq:tr:wa:en"

2. Change the Compose file:

sudo sed -i /usr/share/X11/locale/en_US.UTF-8/Compose -e 's/ć/ç/g' -e 's/Ć/Ç/g'

3. Instruct the system to load the cedilla module:

Add those lines to /etc/environment:

GTK_IM_MODULE=cedilla
QT_IM_MODULE=cedilla

Reboot and you are done.

ThoriumBR
  • 882
  • 7
  • 10
  • 1
    Thank you so much! Also, I cross posted your answer on AskUbuntu: https://askubuntu.com/questions/30655/what-keyboard-layout-allows-me-to-type-%c3%a7/1113491#1113491 LMK if you want to post it yourself so I can remove my answer :)! – Jhuliano Moreno Jan 28 '19 at 10:22
  • After some updates on the OS, this workaround stops working. Are there any permanent ways that aren't affected by updates? – Luciano Aug 09 '19 at 20:25
  • There's no workaround that I know. As the changed files are part of the OS, any update will overwrite the files. You can create a `bash` script to alter the files again, so when you update, you can run the script again and change the files again. – ThoriumBR Aug 09 '19 at 20:35
  • How can I do that without root access, affecting only my user? I can't access root or run sudo commands :/ – Polyana Fontes May 08 '20 at 14:17
  • I've been using **only step 3** for this for a long time now and it always worked, probably since Ubuntu 18.04 (now I'm on Mint 21, based on Ubuntu 22.04). So I suggest you try step 3 alone and if it doesn't work, then you go for the other steps. Cheers! – marcelocra Oct 30 '22 at 13:01
  • Turns out it worked for **almost** everything without step 1 and 2. But then it didn't. – marcelocra Jan 21 '23 at 00:11
  • Since I've installed Ubuntu 23.04 this seems to work only for GTK2 and GTK3 apps, doesn't work for any GTK4.0 app. Anyone had the same issue? – euDennis May 12 '23 at 00:55
8

If you like me don't have a AltGr button in your keyboard, try the following:

Right Alt + ,

Gabriel Ziegler
  • 193
  • 1
  • 6
0

You can use a combination of uim as input manager with a XCompose file to reproduce the Microsoft Windows behavior for English international keyboards.

I've wrote some instructions for several distros (and even a Ubuntu package): https://github.com/raelgc/win_us_intl/

0

I have created a simple bash script following @ThoriumBR answer. This way, whenever there's an update to your system and you'll lose that config, you can just run the script again.

The script is idempotent, so feel free to run as many time as you want, the result won't change.

#!/usr/bin/env bash

# Setting vars up
COMPOSE_FILE='/usr/share/X11/locale/en_US.UTF-8/Compose'
GTK2_FILE='/usr/lib/x86_64-linux-gnu/gtk-2.0/2.10.0/immodules.cache'
GTK3_FILE='/usr/lib/x86_64-linux-gnu/gtk-3.0/3.0.0/immodules.cache'
ENV_FILE='/etc/environment'

# Backing up files
sudo cp ${COMPOSE_FILE} ${COMPOSE_FILE}.bak
sudo cp ${GTK2_FILE} ${GTK2_FILE}.bak
sudo cp ${GTK3_FILE} ${GTK3_FILE}.bak

# Fixing cedilla in Compose
sudo sed --in-place -e 's/ć/ç/g' ${COMPOSE_FILE}
sudo sed --in-place -e 's/Ć/Ç/g' ${COMPOSE_FILE}

# Fixing cedilla in GTK files
GTK_FILE_SEARCH_FOR='^"cedilla".*:en'
GTK_FILE_SED_EXP='s/^\(\"cedilla\".*:wa\)/\1:en/g'

grep -q ${GTK_FILE_SEARCH_FOR} ${GTK2_FILE}
[ $? -eq 1 ] && sudo sed --in-place -e ${GTK_FILE_SED_EXP} ${GTK2_FILE}
grep -q ${GTK_FILE_SEARCH_FOR} ${GTK3_FILE}
[ $? -eq 1 ] && sudo sed --in-place -e ${GTK_FILE_SED_EXP} ${GTK3_FILE}

# Fixing cedilla in environment file
ENV_FILE_GTK_LINE='GTK_IM_MODULE=cedilla'
ENV_FILE_QT_LINE='QT_IM_MODULE=cedilla'

grep -q ${ENV_FILE_GTK_LINE} ${ENV_FILE}
[ $? -eq 1 ] && echo ${ENV_FILE_GTK_LINE} | sudo tee -a ${ENV_FILE} > /dev/null
grep -q ${ENV_FILE_QT_LINE} ${ENV_FILE}
[ $? -eq 1 ] && echo ${ENV_FILE_QT_LINE} | sudo tee -a ${ENV_FILE} > /dev/null

Then you can save it to a file such as fix-cedilla.sh and run it with bash fix-cedilla.sh. Or you can mark that file as executable with chmod +x fix-cedilla.sh and run it with ./fix-cedilla.sh.

You can/should also add it to your dotfiles repo (example of mine) so next time you (re)install your OS it's handy in a known place ;-)

Luiz
  • 1
  • 2
0

Just open a terminal and execute the following to add the intended behaviour to '+c and '+C

~/.XCompose

echo '<dead_acute> <c>     : "ç"' >>~/.XCompose
echo '<dead_acute> <C>     : "Ç"' >>~/.XCompose

Reboot or alternatively restart GNome with ALT+F2 then type r+ENTER.