127

In windows there is possibility to type from keyboard special signs by holding alt key and typing a few numbers, that depends on with sign you want to use. Does it work with linux in the same way?

5
  • in windows, this does only work for ascii-codes, right? how to do so for unicode-characters?
    – FranBran
    Dec 10, 2015 at 12:55
  • 2
    frabra, not all applications support unicode input such way. But rather often starting number with zero helps, i. e. type Alt + 08212 for M-dash, instead of Alt + 8212.
    – Smylic
    Sep 28, 2016 at 16:50
  • 2
    @FranBran you need to enable hex numpad and then you can input any Unicode characters
    – phuclv
    Jun 9, 2018 at 3:53
  • @Smylic that won't work for most applications because the decimal Alt-code will be modulo 256. You have to use hex numpad
    – phuclv
    Jun 9, 2018 at 3:54
  • Does this answer your question? How do you type Unicode characters using hexadecimal codes? (While most of the answers are about Windows, a couple are about Linux.) Apr 8, 2020 at 5:43

7 Answers 7

149

You can use Ctrl + Shift + u followed by the code in hex. (You only need to hold down Ctrl and Shift while typing the code)

9
  • 3
    john, do you know what supplies this functionality? i haven't heard of it before. where does it work, on the console? Ubuntu's defaults in GNOME? thx. Oct 23, 2009 at 13:37
  • 1
    found a similar source (minus the u, just hold down Ctrl+Shift) for "works in GNOME", and a method for VIM that uses the u but not the Shift. Oct 23, 2009 at 13:58
  • 9
    Thx, works for me. In Ubuntu's terminal (under X), I'm able to type Ctrl+Shift+U, let up all 3, and then type 66 followed by Space and I end up with "f" which is the correct character for 66 in UTF-8. It didn't work from tty1 (control-alt-F1 - non-graphical terminal) though. Mar 22, 2013 at 23:23
  • 4
    Any solution to KDE?
    – Jack
    May 22, 2013 at 1:11
  • 5
    I use Compose (mapped as Right-Ctrl), which should work in all DEs since it is provided by X. Compose " A => ä, Compose g p i => "π", etc Jun 11, 2015 at 18:12
82

X uses something called the compose key. By pressing Compose, some key, some key… in sequence, you can input characters. I have my compose key set to Menu; to type a © (copyright symbol), I would use Menu, o, c.

A full list of X compose key combinations can be found online (200 KiB), or locally in /usr/share/X11/locale/en_US.UTF-8/Compose.

In Gnome, the compose key can be set by going to Preferences → Keyboard → Layouts tab → Layout Options → Compose key position.

6
  • 23
    How does the "memorize unicode code points" answer have twice as many upvotes as the compose key? Insanity. Aug 22, 2013 at 19:10
  • 3
    Perfect. Without GNOME, the compose key can be set through setxkbmap. For example, $ setxkbmap -option 'compose:menu' will set the "menu" key (between Alt Gr and right Ctrl on my keyboard) as the compose key. Aug 19, 2014 at 9:37
  • @mehaase Because, on my laptop, there is no available key for me to map as Compose. So I'll take an imperfect answer over the elegant one.
    – Cliff
    Aug 11, 2015 at 21:47
  • Cliff, what strange laptop is that? I have a tiny laptop which has a "menu" key (which virtuallinux uses as Compose key, as do I). It doesn't have a free unused key? No "Windows" key you don't need in Linux anyway? Weird. Apr 1, 2018 at 16:42
  • 2
    How the heck do I do this one? <dead_greek> <W> Aug 6, 2021 at 3:56
39

Inputting Unicode characters in Linux varies. The UTF-8 and Unicode FAQ has a section containing different input methods:

  • Ctrl+Shift+U [unicode in hex] is defined in ISO 14755 and implemented by GTK2+, and works in GNOME-Terminal and other applications.
  • Ctrl+V u [unicode in hex] works in VIM.
  • Alt+[unicode in decimal using numpad digits] works at the console providing your environment is properly configured to expect UTF-8 (via LOCALE or LANG environment variables). (unicode_start manpage).

Other methods you could use:

  • Cut-n-paste characters from a small input file containing the characters you want.
  • Use xmodmap to remap keys in X (see the FAQ link above for examples).
6
  • (I removed the UTF8 tag you added to the question, as that is actually an encoding, which is not used when typing a character.)
    – Arjan
    Oct 23, 2009 at 14:33
  • 2
    +1 for including VIM. I was curious how to do this in Intellij with VIM keybindings.
    – new123456
    Feb 18, 2012 at 3:35
  • I can confirm that alt-numpad works for me in ubuntu 12.04's tty1 console (control-alt-F1) with $LANG=en_US.utf8 The codes are decimal, not hex though, so instead of 66 (hex) for "f", I hold Alt, type 102, let Alt up and out pops "f". Mar 22, 2013 at 23:34
  • Sad world we live in when people have all but forgotten about the beauty of Compose. Apr 1, 2018 at 16:42
  • So, none of these seem to work in Cinnamon :-(
    – einpoklum
    Apr 25, 2022 at 18:24
8

The Linux console also supports compose keys (The compose key is often Alt + AltGr or PrintScrn) - see How to define a Compose Key in terminal on the Unix and Linux Stack Exchange for details.

8

Alternative way: Use Ctrl + Shift + u followed by the code in hex and Enter.

Unlike the accepted answer tells, do not hold down Ctrl and Shift while typing the code. Otherwise it may not work because it may conflict with some shortcut key of the application you are using, e.g. Ctrl + Shift + c in your terminal emulator. That may be a bug though.

This way works at least with xfce4-terminal, gnome-terminal, lxterminal, libreoffice, mousepad, chromium-browser and firefox.

3
  • Upvoted. Though I found that this works on Xubuntu in the Terminal Emulator, but not in editors -- nevertheless, one can always type it in the terminal using this method, then copy-paste. Acceptable if you don't use extra-special characters all the time. Aug 26, 2020 at 11:55
  • On most systems I need to hold ctrl+shift like in the accepted answer, but there are some on which your answer is right. Maybe it depends on the X input method? I think you should merge your answers into one, especially when you find out when to use which answer.
    – allo
    Feb 8, 2021 at 9:29
  • Doesn't work for me in Cinnamon. After pressing Ctrl+Shift+u I get an underlined u, that's all.
    – einpoklum
    Apr 25, 2022 at 18:25
1

There's a better method for both Linux and Windows than using alt-key codes that doesn't require you to remember any codes. It's described in detail here.

The gist is that you use AutoHotKey (Windows) or AutoKey (Linux). Both run in the background and accept arbitrary strings as trigger to run a command, which in this case is to send a special character to the clipboard and then paste it to whatever program is currently being used.

The example given has /delta as the trigger (including the forward slash). After typing those six characters, they are deleted and replaced with a δ.

0

If you are a US key user and need to type special characters infrequently, I recommend switching your keyboard layout to the "us(altgr-intl)" variation-- that's XKB notation. Your keyboard will work normally unless you hold the right Alt key, also known "AltGr", then you will mostly be able to access the extra characters shown in blue here: US International Keyboard Layout

I say "mostly" because that's a screenshot of the main US International layout. I found the details of the "altgr-intl" variation defined in this file on Arch Linux: /usr/share/X11/xkb/symbols/us: Here are the differences defined there:

// five dead keys moved into level3:

  ┊key <TLDE> { [    grave, asciitilde,  dead_grave,   dead_tilde      ] };
  ┊key <AC11> { [apostrophe,quotedbl,    dead_acute,   dead_diaeresis  ] };

// diversions from the MS Intl keyboard:

  ┊key <AE01> { [        1, exclam,      onesuperior,  exclamdown      ] };
  ┊key <AD04> { [        r, R,           ediaeresis,   Ediaeresis      ] };
  ┊key <AC07> { [        j, J,           idiaeresis,   Idiaeresis      ] };
  ┊key <AB02> { [        x, X,           oe,           OE              ] };
  ┊key <AB04> { [        v, V,           registered,   registered      ] };

// onequarter etc (not in iso8859-15) moved to get three unshifted deadkeys:

  ┊key <AE06> { [        6, asciicircum, dead_circumflex, onequarter    ] };
  ┊key <AE07> { [        7, ampersand,   dead_horn,       onehalf       ] };
  ┊key <AE08> { [        8, asterisk,    dead_ogonek,     threequarters ] };

This alternate layout doesn't have the additional "dead keys" that the main International layout does.

The four columns in each array are Regular, Shifted, AltGr, AltGr Shifted.

So for example to type ¡ I press "<Shift-AltGr-1>".

You can search for an image of the US International layout until you remember the locations of the symbols you need.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .